diff options
| author | Maze Winther <mazewinther@gmail.com> | 2026-03-31 15:53:23 +0200 |
|---|---|---|
| committer | Maze Winther <mazewinther@gmail.com> | 2026-03-31 15:53:23 +0200 |
| commit | d23be079cce6108482fc3e85401cccf949087174 (patch) | |
| tree | 7d5acd324f9274b3b823bc67154349b8693e3412 /apps/web/src/lib/timeline/placement/track-factory.ts | |
| parent | dcf54c1250431f5a4a2848f7c07781ef5eebacaf (diff) | |
| parent | 70a6d58b8432e455ab1443d45bc23dd70b363bea (diff) | |
| download | opencut-d23be079cce6108482fc3e85401cccf949087174.tar.gz | |
Merge branch 'feature/track-placement'
Diffstat (limited to 'apps/web/src/lib/timeline/placement/track-factory.ts')
| -rw-r--r-- | apps/web/src/lib/timeline/placement/track-factory.ts | 61 |
1 files changed, 61 insertions, 0 deletions
diff --git a/apps/web/src/lib/timeline/placement/track-factory.ts b/apps/web/src/lib/timeline/placement/track-factory.ts new file mode 100644 index 00000000..e77a8a96 --- /dev/null +++ b/apps/web/src/lib/timeline/placement/track-factory.ts @@ -0,0 +1,61 @@ +import { TRACK_CONFIG } from "@/constants/timeline-constants"; +import type { TrackType, TimelineTrack } from "@/lib/timeline"; + +export function buildEmptyTrack({ + id, + type, + name, +}: { + id: string; + type: TrackType; + name?: string; +}): TimelineTrack { + const trackName = name ?? TRACK_CONFIG[type].defaultName; + + switch (type) { + case "video": + return { + id, + name: trackName, + type: "video", + elements: [], + hidden: false, + muted: false, + isMain: false, + }; + case "text": + return { + id, + name: trackName, + type: "text", + elements: [], + hidden: false, + }; + case "graphic": + return { + id, + name: trackName, + type: "graphic", + elements: [], + hidden: false, + }; + case "audio": + return { + id, + name: trackName, + type: "audio", + elements: [], + muted: false, + }; + case "effect": + return { + id, + name: trackName, + type: "effect", + elements: [], + hidden: false, + }; + default: + throw new Error(`Unsupported track type: ${type}`); + } +} |
