From 744419469da403be57d30b5b19f6b43246caa57d Mon Sep 17 00:00:00 2001 From: Maze Winther Date: Mon, 23 Feb 2026 07:09:26 +0100 Subject: feat: basic ripple editing --- apps/web/src/lib/timeline/index.ts | 1 + apps/web/src/lib/timeline/ripple-utils.ts | 17 +++++++++++++++++ 2 files changed, 18 insertions(+) create mode 100644 apps/web/src/lib/timeline/ripple-utils.ts (limited to 'apps/web/src/lib/timeline') diff --git a/apps/web/src/lib/timeline/index.ts b/apps/web/src/lib/timeline/index.ts index f3ace94f..b5e74a45 100644 --- a/apps/web/src/lib/timeline/index.ts +++ b/apps/web/src/lib/timeline/index.ts @@ -4,6 +4,7 @@ export * from "./track-utils"; export * from "./element-utils"; export * from "./zoom-utils"; export * from "./ruler-utils"; +export * from "./ripple-utils"; export function calculateTotalDuration({ tracks, diff --git a/apps/web/src/lib/timeline/ripple-utils.ts b/apps/web/src/lib/timeline/ripple-utils.ts new file mode 100644 index 00000000..5f37bf29 --- /dev/null +++ b/apps/web/src/lib/timeline/ripple-utils.ts @@ -0,0 +1,17 @@ +import type { TimelineElement } from "@/types/timeline"; + +export function rippleShiftElements({ + elements, + afterTime, + shiftAmount, +}: { + elements: TimelineElement[]; + afterTime: number; + shiftAmount: number; +}): TimelineElement[] { + return elements.map((element) => + element.startTime >= afterTime + ? { ...element, startTime: element.startTime - shiftAmount } + : element, + ); +} -- cgit v1.3.1