From 3e89d2998588f8e35c524e523ba2ee853f0f6475 Mon Sep 17 00:00:00 2001 From: Maze Winther Date: Mon, 20 Apr 2026 11:31:17 +0200 Subject: refactor: restructure files to their domains, new preview overlay system, and dep graph --- apps/web/src/subtitles/insert.ts | 40 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 apps/web/src/subtitles/insert.ts (limited to 'apps/web/src/subtitles/insert.ts') 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; +} -- cgit v1.3.1