diff options
| author | Maze Winther <mazewinther@gmail.com> | 2026-02-23 07:09:26 +0100 |
|---|---|---|
| committer | Maze Winther <mazewinther@gmail.com> | 2026-02-23 07:09:26 +0100 |
| commit | 744419469da403be57d30b5b19f6b43246caa57d (patch) | |
| tree | d86b253652496157223261d54f51d6f7b6fd047c /apps/web/src/lib/timeline | |
| parent | 1762dc077dd512f6e8afff855b1ca6696338e0be (diff) | |
| download | opencut-744419469da403be57d30b5b19f6b43246caa57d.tar.gz | |
feat: basic ripple editing
Diffstat (limited to 'apps/web/src/lib/timeline')
| -rw-r--r-- | apps/web/src/lib/timeline/index.ts | 1 | ||||
| -rw-r--r-- | apps/web/src/lib/timeline/ripple-utils.ts | 17 |
2 files changed, 18 insertions, 0 deletions
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, + ); +} |
