summaryrefslogtreecommitdiff
path: root/apps/web/src/lib/commands/timeline/element/delete-elements.ts
diff options
context:
space:
mode:
Diffstat (limited to 'apps/web/src/lib/commands/timeline/element/delete-elements.ts')
-rw-r--r--apps/web/src/lib/commands/timeline/element/delete-elements.ts72
1 files changed, 0 insertions, 72 deletions
diff --git a/apps/web/src/lib/commands/timeline/element/delete-elements.ts b/apps/web/src/lib/commands/timeline/element/delete-elements.ts
deleted file mode 100644
index 0fc7948f..00000000
--- a/apps/web/src/lib/commands/timeline/element/delete-elements.ts
+++ /dev/null
@@ -1,72 +0,0 @@
-import { Command, type CommandResult } from "@/lib/commands/base-command";
-import type { SceneTracks } from "@/lib/timeline";
-import { EditorCore } from "@/core";
-import type { TimelineTrack } from "@/lib/timeline";
-
-function removeTrackElements<TTrack extends TimelineTrack>({
- track,
- elements,
-}: {
- track: TTrack;
- elements: { trackId: string; elementId: string }[];
-}): TTrack {
- const nextElements = track.elements.filter(
- (element) =>
- !elements.some(
- (target) =>
- target.trackId === track.id && target.elementId === element.id,
- ),
- );
-
- return { ...track, elements: nextElements } as TTrack;
-}
-
-export class DeleteElementsCommand extends Command {
- private savedState: SceneTracks | null = null;
- private readonly elements: { trackId: string; elementId: string }[];
-
- constructor({
- elements,
- }: {
- elements: { trackId: string; elementId: string }[];
- }) {
- super();
- this.elements = elements;
- }
-
- execute(): CommandResult | undefined {
- const editor = EditorCore.getInstance();
- this.savedState = editor.scenes.getActiveScene().tracks;
-
- const updatedTracks: SceneTracks = {
- overlay: this.savedState.overlay.map((track) =>
- removeTrackElements({ track, elements: this.elements }),
- ),
- main: removeTrackElements({
- track: this.savedState.main,
- elements: this.elements,
- }),
- audio: this.savedState.audio.map((track) =>
- removeTrackElements({ track, elements: this.elements }),
- ),
- };
-
- editor.timeline.updateTracks(updatedTracks);
-
- return {
- selection: {
- selectedElements: [],
- selectedKeyframes: [],
- keyframeSelectionAnchor: null,
- selectedMaskPoints: null,
- },
- };
- }
-
- undo(): void {
- if (this.savedState) {
- const editor = EditorCore.getInstance();
- editor.timeline.updateTracks(this.savedState);
- }
- }
-}