feat: implement TimeScale component with proper zoom calculation

- Add TimeScale component with canvas-based rendering
- Use 5 pixels per second base scale (duration * zoom * 5)
- Implement viewport-based rendering for performance
- Add scroll synchronization with waveforms
- Add 240px padding for alignment with track controls and master area
- Apply custom scrollbar styling
- Update all waveform width calculations to match timeline

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
2025-11-20 10:12:13 +01:00
parent 119c8c2942
commit 477a444c78
5 changed files with 446 additions and 27 deletions

View File

@@ -773,8 +773,8 @@ export function Track({
className="relative h-full"
style={{
minWidth:
track.audioBuffer && zoom > 1
? `${duration * zoom * 100}px`
track.audioBuffer && zoom >= 1
? `${duration * zoom * 5}px`
: "100%",
}}
>