feat: improve layout of SequencerCanvas and SequencerPage for better responsiveness and overflow handling

This commit is contained in:
JSC
2025-09-03 15:06:38 +02:00
parent 25eacbc85f
commit a0d5840166
2 changed files with 20 additions and 23 deletions

View File

@@ -127,12 +127,11 @@ function TrackRow({ track, duration, zoom, isPlaying, currentTime, draggedItem,
ref={setDropRef} ref={setDropRef}
id={`track-${track.id}`} id={`track-${track.id}`}
className={` className={`
w-full h-full border-b border-border/50 h-full border-b border-border/50
relative overflow-hidden relative overflow-hidden
${isOver ? 'bg-accent/30' : 'bg-muted/10'} ${isOver ? 'bg-accent/30' : 'bg-muted/10'}
transition-colors transition-colors
`} `}
style={{ minWidth: `${totalWidth}px` }}
> >
{/* Grid lines for time markers */} {/* Grid lines for time markers */}
<div className="absolute inset-0 pointer-events-none"> <div className="absolute inset-0 pointer-events-none">
@@ -274,26 +273,24 @@ export const SequencerCanvas = forwardRef<HTMLDivElement, SequencerCanvasProps>(
</div> </div>
{/* Tracks */} {/* Tracks */}
<div className="flex-1 overflow-hidden"> <div
<div ref={ref}
ref={ref} className="flex-1 min-h-0 min-w-0 overflow-auto"
className="w-full h-full overflow-auto" onScroll={handleTracksScroll}
onScroll={handleTracksScroll} >
> <div style={{ width: `${totalWidth}px`, minWidth: `${totalWidth}px` }}>
<div style={{ minWidth: `${totalWidth}px` }}> {tracks.map((track) => (
{tracks.map((track) => ( <TrackRow
<TrackRow key={track.id}
key={track.id} track={track}
track={track} duration={duration}
duration={duration} zoom={zoom}
zoom={zoom} isPlaying={isPlaying}
isPlaying={isPlaying} currentTime={currentTime}
currentTime={currentTime} draggedItem={draggedItem}
draggedItem={draggedItem} dragOverInfo={dragOverInfo}
dragOverInfo={dragOverInfo} />
/> ))}
))}
</div>
</div> </div>
</div> </div>
</div> </div>

View File

@@ -337,7 +337,7 @@ export function SequencerPage() {
</div> </div>
{/* Sequencer Canvas */} {/* Sequencer Canvas */}
<div className="flex-1"> <div className="flex-1 min-w-0 overflow-hidden">
<SequencerCanvas <SequencerCanvas
ref={sequencerCanvasRef} ref={sequencerCanvasRef}
tracks={state.tracks} tracks={state.tracks}