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?.selection !== 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?.selection !== undefined) { latestSelectionResult = result; } } return latestSelectionResult; } }