Timeline plugin: timeline view - #240
Conversation
Replaces the timeline view and layer row placeholders with the d3-driven implementation: a time scale with top and bottom axes, one dashed row per visible layer with its time-range bars, and a draggable scrubber that previews while dragging and commits on release. Scroll zooms and pans the scale, and the view hands a reset-zoom callback back to the adapter. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01AgqjkZhQvfoBgdJtt9SSKS
- Drive the scrubber with Pointer Events and pointer capture, so mouse, touch and pen share one path and a drag keeps tracking after the pointer leaves the SVG. Adds touch-action: none so the gesture isn't taken for a scroll. - Expose the scrubber as a slider: tabIndex, role, aria-value*, arrow-key stepping by the current granularity, and Home/End for the range ends. - Ignore clicks that land on the scrubber handle, so grabbing it no longer commits a seek, and clear the drag flag on pointer up so a drag released outside the SVG doesn't swallow the next click. - Restore pointer events on the layer range rects so their tooltips display.
|
Review pass over the stack (#239–#243). Five issues in this PR, pushed as
Worth noting what held up under scrutiny: the d3 machinery is solid. Degenerate domains and a zero-width container don't produce NaN (d3-scale's
|
Replaces the timeline view and layer row placeholders with the d3 implementation: top and bottom time axes, a dashed row per visible layer with its time-range bars, and a draggable scrubber that previews while dragging and commits on release. Scroll zooms and pans; the view hands a reset-zoom callback back to the adapter.
Stack — merge in order, starting from the base:
development