Files
hyperframes/packages
Miguel Ángelandukimsanov 345f715c3f fix(studio): timeline snapping (#2269)
* feat(studio): timeline collision and placement model

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).

* feat(studio): timeline magnetic snapping

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.

---------

Co-authored-by: ukimsanov <ular.kimsanov@heygen.com>
2026-07-11 22:39:54 -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