summaryrefslogtreecommitdiff
path: root/apps/web/src/lib/timeline/placement
diff options
context:
space:
mode:
authorMaze Winther <mazewinther@gmail.com>2026-04-15 05:43:29 +0200
committerMaze Winther <mazewinther@gmail.com>2026-04-15 05:43:29 +0200
commitac43a5a73fa905cdac905bc956763b6093d6738e (patch)
tree8d9ff8c3a9ae55bac8860215bec69cc5b6094a1c /apps/web/src/lib/timeline/placement
parent6312fc5b078689bc82c52fda9b7f92ee0a21d311 (diff)
downloadopencut-ac43a5a73fa905cdac905bc956763b6093d6738e.tar.gz
feat: move/resize multiple elements
Diffstat (limited to 'apps/web/src/lib/timeline/placement')
-rw-r--r--apps/web/src/lib/timeline/placement/__tests__/resolve.test.ts7
-rw-r--r--apps/web/src/lib/timeline/placement/overlap.ts8
2 files changed, 12 insertions, 3 deletions
diff --git a/apps/web/src/lib/timeline/placement/__tests__/resolve.test.ts b/apps/web/src/lib/timeline/placement/__tests__/resolve.test.ts
index 4d39f5d8..7cadb9b7 100644
--- a/apps/web/src/lib/timeline/placement/__tests__/resolve.test.ts
+++ b/apps/web/src/lib/timeline/placement/__tests__/resolve.test.ts
@@ -329,7 +329,12 @@ describe("resolveTrackPlacement", () => {
id: "graphic-1",
type: "graphic",
elements: [
- buildElement({ id: "a", type: "graphic", startTime: 0, duration: 5 }),
+ buildElement({
+ id: "a",
+ type: "graphic",
+ startTime: 0,
+ duration: 5,
+ }),
],
}),
],
diff --git a/apps/web/src/lib/timeline/placement/overlap.ts b/apps/web/src/lib/timeline/placement/overlap.ts
index e5f95fa9..5e37c052 100644
--- a/apps/web/src/lib/timeline/placement/overlap.ts
+++ b/apps/web/src/lib/timeline/placement/overlap.ts
@@ -1,6 +1,10 @@
-import type { TimelineElement, TimelineTrack } from "@/lib/timeline";
+import type { TimelineElement } from "@/lib/timeline";
import type { PlacementTimeSpan } from "./types";
+interface TrackWithElements {
+ elements: TimelineElement[];
+}
+
function wouldElementOverlap({
elements,
startTime,
@@ -26,7 +30,7 @@ export function canPlaceTimeSpansOnTrack({
track,
timeSpans,
}: {
- track: TimelineTrack;
+ track: TrackWithElements;
timeSpans: PlacementTimeSpan[];
}): boolean {
return timeSpans.every(({ startTime, duration, excludeElementId }) => {