diff options
| author | Maze Winther <mazewinther@gmail.com> | 2026-04-20 11:31:17 +0200 |
|---|---|---|
| committer | Maze Winther <mazewinther@gmail.com> | 2026-04-20 11:31:17 +0200 |
| commit | 3e89d2998588f8e35c524e523ba2ee853f0f6475 (patch) | |
| tree | 57221f96c1259b3b07e3ddf8c1adefc502b9d8eb /apps/web/src/subtitles/insert.ts | |
| parent | 729d10592f4e802f91c555c309ff3ba4b119f843 (diff) | |
| download | opencut-3e89d2998588f8e35c524e523ba2ee853f0f6475.tar.gz | |
refactor: restructure files to their domains, new preview overlay system, and dep graph
Diffstat (limited to 'apps/web/src/subtitles/insert.ts')
| -rw-r--r-- | apps/web/src/subtitles/insert.ts | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/apps/web/src/subtitles/insert.ts b/apps/web/src/subtitles/insert.ts new file mode 100644 index 00000000..50d6c40b --- /dev/null +++ b/apps/web/src/subtitles/insert.ts @@ -0,0 +1,40 @@ +import type { EditorCore } from "@/core"; +import { + AddTrackCommand, + BatchCommand, + InsertElementCommand, +} from "@/commands"; +import { buildSubtitleTextElement } from "./build-subtitle-text-element"; +import type { SubtitleCue } from "./types"; + +export function insertCaptionChunksAsTextTrack({ + editor, + captions, +}: { + editor: EditorCore; + captions: SubtitleCue[]; +}): string | null { + if (captions.length === 0) { + return null; + } + + const addTrackCommand = new AddTrackCommand("text", 0); + const trackId = addTrackCommand.getTrackId(); + const canvasSize = editor.project.getActive().settings.canvasSize; + const insertCommands = captions.map( + (caption, index) => + new InsertElementCommand({ + placement: { mode: "explicit", trackId }, + element: buildSubtitleTextElement({ + index, + caption, + canvasSize, + }), + }), + ); + editor.command.execute({ + command: new BatchCommand([addTrackCommand, ...insertCommands]), + }); + + return trackId; +} |
