summaryrefslogtreecommitdiff
path: root/apps/web/src/lib/ripple/diff.ts
diff options
context:
space:
mode:
authorMaze Winther <mazewinther@gmail.com>2026-04-07 04:41:27 +0200
committerMaze Winther <mazewinther@gmail.com>2026-04-07 04:41:27 +0200
commitcbd1b8212370c67b34a70dccd21bd82de72fead2 (patch)
treed97cbee2aae22c22b59c59a50e9f8a6af0ae8ccf /apps/web/src/lib/ripple/diff.ts
parent4f7d401a974047d37673ee8e3840dceaaddc295c (diff)
downloadopencut-cbd1b8212370c67b34a70dccd21bd82de72fead2.tar.gz
refactor: structured track layout per scene
Diffstat (limited to 'apps/web/src/lib/ripple/diff.ts')
-rw-r--r--apps/web/src/lib/ripple/diff.ts23
1 files changed, 16 insertions, 7 deletions
diff --git a/apps/web/src/lib/ripple/diff.ts b/apps/web/src/lib/ripple/diff.ts
index 22b8d996..49238738 100644
--- a/apps/web/src/lib/ripple/diff.ts
+++ b/apps/web/src/lib/ripple/diff.ts
@@ -1,5 +1,4 @@
-
-import type { TimelineElement, TimelineTrack } from "@/lib/timeline/types";
+import type { SceneTracks, TimelineElement, TimelineTrack } from "@/lib/timeline/types";
import type { RippleAdjustment } from "./apply";
interface Interval {
@@ -15,15 +14,25 @@ export function computeRippleAdjustments({
beforeTracks,
afterTracks,
}: {
- beforeTracks: TimelineTrack[];
- afterTracks: TimelineTrack[];
+ beforeTracks: SceneTracks;
+ afterTracks: SceneTracks;
}): RippleAdjustment[] {
- const afterTracksById = new Map(afterTracks.map((track) => [track.id, track]));
+ const beforeTrackList = [
+ ...beforeTracks.overlay,
+ beforeTracks.main,
+ ...beforeTracks.audio,
+ ];
+ const afterTrackList = [
+ ...afterTracks.overlay,
+ afterTracks.main,
+ ...afterTracks.audio,
+ ];
+ const afterTracksById = new Map(afterTrackList.map((track) => [track.id, track]));
const allAfterElementIds = new Set(
- afterTracks.flatMap((track) => track.elements.map((element) => element.id)),
+ afterTrackList.flatMap((track) => track.elements.map((element) => element.id)),
);
- return beforeTracks.flatMap((beforeTrack): RippleAdjustment[] =>
+ return beforeTrackList.flatMap((beforeTrack): RippleAdjustment[] =>
computeTrackRippleAdjustments({
trackId: beforeTrack.id,
beforeElements: beforeTrack.elements,