mirror of
https://github.com/OpenCut-app/OpenCut.git
synced 2026-07-13 21:52:53 +02:00
42 lines
1.0 KiB
TypeScript
42 lines
1.0 KiB
TypeScript
import { Command, type CommandResult } from "@/lib/commands/base-command";
|
|
import { EditorCore } from "@/core";
|
|
import type { TScene } from "@/lib/timeline";
|
|
import { buildDefaultScene } from "@/lib/scenes";
|
|
|
|
export class CreateSceneCommand extends Command {
|
|
private savedScenes: TScene[] | null = null;
|
|
private createdScene: TScene | null = null;
|
|
|
|
constructor(
|
|
private name: string,
|
|
private isMain: boolean = false,
|
|
) {
|
|
super();
|
|
}
|
|
|
|
execute(): CommandResult | undefined {
|
|
const editor = EditorCore.getInstance();
|
|
this.savedScenes = [...editor.scenes.getScenes()];
|
|
|
|
this.createdScene = buildDefaultScene({
|
|
name: this.name,
|
|
isMain: this.isMain,
|
|
});
|
|
|
|
const updatedScenes = [...this.savedScenes, this.createdScene];
|
|
editor.scenes.setScenes({ scenes: updatedScenes });
|
|
return undefined;
|
|
}
|
|
|
|
undo(): void {
|
|
if (this.savedScenes) {
|
|
const editor = EditorCore.getInstance();
|
|
editor.scenes.setScenes({ scenes: this.savedScenes });
|
|
}
|
|
}
|
|
|
|
getSceneId(): string {
|
|
return this.createdScene?.id ?? "";
|
|
}
|
|
}
|