OpenCut/apps/web/src/lib/commands/batch-command.ts

40 lines
852 B
TypeScript

import { Command, type CommandResult } from "./base-command";
export class BatchCommand extends Command {
constructor(private commands: Command[]) {
super();
}
execute(): CommandResult | undefined {
let latestSelectionResult: CommandResult | undefined;
for (const command of this.commands) {
const result = command.execute();
if (result?.select !== undefined) {
latestSelectionResult = result;
}
}
return latestSelectionResult;
}
undo(): void {
for (const command of [...this.commands].reverse()) {
command.undo();
}
}
redo(): CommandResult | undefined {
let latestSelectionResult: CommandResult | undefined;
for (const command of this.commands) {
const result = command.redo();
if (result?.select !== undefined) {
latestSelectionResult = result;
}
}
return latestSelectionResult;
}
}