Refactor sequence step handling to use clips

This commit is contained in:
2026-04-15 00:18:24 +02:00
parent 10e0c52fee
commit f13188bf32
4 changed files with 39 additions and 32 deletions

View File

@@ -1,14 +1,15 @@
import { createOpaqueId } from "../core/ids";
import {
cloneSequenceStep,
cloneSequenceClip,
type SequenceClip,
type SequenceStep
} from "./project-sequence-steps";
export interface ProjectSequence {
id: string;
title: string;
steps: SequenceStep[];
clips: SequenceClip[];
}
export interface ProjectSequenceLibrary {
@@ -33,13 +34,14 @@ export function createEmptyProjectSequenceLibrary(): ProjectSequenceLibrary {
export function createProjectSequence(
overrides: Partial<Pick<ProjectSequence, "id" | "title">> & {
clips?: SequenceClip[];
steps?: SequenceStep[];
} = {}
): ProjectSequence {
return {
id: overrides.id ?? createOpaqueId("sequence"),
title: normalizeProjectSequenceTitle(overrides.title ?? "Sequence"),
steps: overrides.steps?.map(cloneSequenceStep) ?? []
clips: (overrides.clips ?? overrides.steps)?.map(cloneSequenceClip) ?? []
};
}
@@ -49,7 +51,7 @@ export function cloneProjectSequence(
return {
id: sequence.id,
title: sequence.title,
steps: sequence.steps.map(cloneSequenceStep)
clips: sequence.clips.map(cloneSequenceClip)
};
}
@@ -73,19 +75,19 @@ export function areProjectSequencesEqual(
if (
left.id !== right.id ||
left.title !== right.title ||
left.steps.length !== right.steps.length
left.clips.length !== right.clips.length
) {
return false;
}
return left.steps.every((step, index) => {
const rightStep = right.steps[index];
return left.clips.every((clip, index) => {
const rightClip = right.clips[index];
if (rightStep === undefined) {
if (rightClip === undefined) {
return false;
}
return JSON.stringify(step) === JSON.stringify(rightStep);
return JSON.stringify(clip) === JSON.stringify(rightClip);
});
}