Skip to content

feat(studio): multi-clip drag preview math#2271

Open
ukimsanov wants to merge 3 commits into
mainfrom
recovery/pr06-multidrag-preview
Open

feat(studio): multi-clip drag preview math#2271
ukimsanov wants to merge 3 commits into
mainfrom
recovery/pr06-multidrag-preview

Conversation

@ukimsanov

Copy link
Copy Markdown
Collaborator

Recovery of #2197: GitHub shows it merged, but the merge landed in the studio-dnd/pr05-timeline-snapping branch (its mid-stack base at merge time), not main — main verifiably lacks this module (tree diff: 2 files, +233). Identical head SHA/content to the reviewed #2197; companion to the #2269/#2270 recoveries.

What: new pure module timelineCollision — zone-aware drop placement
(clampTrackToZone, resolveZoneDropPlacement, resolveInsertRow,
resolvePlacement, lane/overlap predicates) with its full test suite.

Why: the no-overlap core of the NLE clip-drag engine; plain functions, no
DOM, no React, no store writes.

How: new files only; type-only imports from the existing playerStore.
First runtime consumer arrives with the drag-engine PRs.

Test plan: bunx vitest run timelineCollision.test.ts; tsc --noEmit; fallow
audit clean (all exports test-consumed).
What: new pure module timelineSnapping — snap-target collection and
pixel-threshold time snapping (collectTimelineSnapTargets, snapTimelineTime,
snapMoveToTargets) with tests.

Why: the magnet math for clip drags/trims, reviewable standalone.

How: new files only; type-only playerStore imports; consumers land with the
drag engine.

Test plan: bunx vitest run timelineSnapping.test.ts; tsc --noEmit; fallow
audit clean.
What: new pure module timelineMultiDragPreview — group-drag passenger
offsets and clamped group deltas (isMultiDragActive, multiDragDeltaSeconds,
multiDragPassengerOffsetPx, clampGroupMoveDelta) with tests.

Why: the group-drag math, standalone and DOM-free.

How: new files only; consumed later by TimelineLanes.

Test plan: bunx vitest run timelineMultiDragPreview.test.ts; tsc --noEmit;
fallow audit clean.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant