Files
Ular Kimsanov 4c893b969b feat(studio): canvas chrome components (unwired) (#2208)
* feat(studio): clip drag engine — preview and commit (unwired)

What: the NLE clip-drag engine core: timelineClipDragPreview (zone-aware
preview placement; keeps the legacy resolveDragPreviewPlacement export until
the timeline swap), timelineClipDragCommit (drop → move/insert commit,
stacking-synced) and timelineElementsMove (batched ripple/insert move with
GSAP position shifting), with test suites.

Why: the drag-drop brain, reviewable as functions before any component
mounts it.

How: new files plus one authored intermediate (preview file = final content
+ legacy export the old engine still imports); consumes the collision/
snapping/zones/stacking modules and the coexistence layer.

Test plan: bunx vitest run on both test suites; tsc --noEmit; fallow audit
clean.

* feat(studio): timeline interaction hooks and lanes component (unwired)

What: the timeline-side wiring layer, unwired: TimelineLanes (the lane
renderer driving drag/resize/marquee), timelineMarquee (+tests),
useTimelineStackingSync, useTimelineGeometry, useTimelineEditPinning,
useTimelineEditingDrops.

Why: everything between the pure drag math and <Timeline> itself; the
timeline-glue swap PR then only rewires Timeline/TimelineCanvas onto these.

How: new files, tsc-clean against the coexistence layer. Unwired components
carry TEMP(studio-dnd) entry registrations, removed at the app-shell swap.

Test plan: bunx vitest run timelineMarquee.test.ts; tsc --noEmit; fallow
audit clean.

* feat(studio): canvas chrome components (unwired)

What: the canvas-side NLE chrome, unwired: DomEditSelectionChrome (rotated
selection chrome + corner handles), domEditResizeLocal (+tests, local-space
resize math), useDomEditNudge (arrow-key nudge hook), PreviewOverlays (the
canvas overlay stack for the NLE shell).

Why: the visible canvas editing layer, reviewable before the overlay swap
rewires DomEditOverlay onto it.

How: new files compiled against the coexistence layer; TEMP(studio-dnd)
entry registrations for the unwired components, removed at the app-shell
swap.

Test plan: bunx vitest run domEditResizeLocal.test.ts; tsc --noEmit; fallow
audit clean.
2026-07-12 00:23:47 -04:00
..
2026-07-11 17:15:24 -07:00
2026-07-11 17:15:24 -07:00
2026-07-11 17:15:24 -07:00
2026-07-11 17:15:24 -07:00
2026-07-11 17:15:24 -07:00
2026-07-11 17:15:24 -07:00
2026-07-11 17:15:24 -07:00
2026-07-11 17:15:24 -07:00
2026-07-11 17:15:24 -07:00
2026-07-11 17:15:24 -07:00
2026-07-11 17:15:24 -07:00