From cbd1b8212370c67b34a70dccd21bd82de72fead2 Mon Sep 17 00:00:00 2001 From: Maze Winther Date: Tue, 7 Apr 2026 04:41:27 +0200 Subject: refactor: structured track layout per scene --- apps/web/src/lib/scenes.ts | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) (limited to 'apps/web/src/lib/scenes.ts') diff --git a/apps/web/src/lib/scenes.ts b/apps/web/src/lib/scenes.ts index 1b5b293c..91285275 100644 --- a/apps/web/src/lib/scenes.ts +++ b/apps/web/src/lib/scenes.ts @@ -1,7 +1,7 @@ import type { TScene } from "@/lib/timeline"; import { generateUUID } from "@/utils/id"; import { calculateTotalDuration } from "@/lib/timeline"; -import { ensureMainTrack } from "@/lib/timeline/placement"; +import { MAIN_TRACK_NAME } from "@/lib/timeline/placement/main-track"; export function getMainScene({ scenes }: { scenes: TScene[] }): TScene | null { return scenes.find((scene) => scene.isMain) || null; @@ -23,12 +23,22 @@ export function buildDefaultScene({ name: string; isMain: boolean; }): TScene { - const tracks = ensureMainTrack({ tracks: [] }); return { id: generateUUID(), name, isMain, - tracks, + tracks: { + overlay: [], + main: { + id: generateUUID(), + name: MAIN_TRACK_NAME, + type: "video", + elements: [], + muted: false, + hidden: false, + }, + audio: [], + }, bookmarks: [], createdAt: new Date(), updatedAt: new Date(), @@ -81,7 +91,7 @@ export function getProjectDurationFromScenes({ scenes: TScene[]; }): number { const mainScene = getMainScene({ scenes }) ?? scenes[0] ?? null; - if (!mainScene?.tracks || !Array.isArray(mainScene.tracks)) { + if (!mainScene?.tracks) { return 0; } -- cgit v1.3.1