diff options
Diffstat (limited to 'apps/web/src/core/managers/commands.ts')
| -rw-r--r-- | apps/web/src/core/managers/commands.ts | 98 |
1 files changed, 49 insertions, 49 deletions
diff --git a/apps/web/src/core/managers/commands.ts b/apps/web/src/core/managers/commands.ts index 46ee643a..d4d4c35c 100644 --- a/apps/web/src/core/managers/commands.ts +++ b/apps/web/src/core/managers/commands.ts @@ -1,49 +1,49 @@ -import type { Command } from "@/lib/commands"; - -export class CommandManager { - private history: Command[] = []; - private redoStack: Command[] = []; - - execute({ command }: { command: Command }): Command { - command.execute(); - this.history.push(command); - this.redoStack = []; - return command; - } - - push({ command }: { command: Command }): void { - this.history.push(command); - this.redoStack = []; - } - - undo(): void { - if (this.history.length === 0) return; - const command = this.history.pop(); - command?.undo(); - if (command) { - this.redoStack.push(command); - } - } - - redo(): void { - if (this.redoStack.length === 0) return; - const command = this.redoStack.pop(); - command?.redo(); - if (command) { - this.history.push(command); - } - } - - canUndo(): boolean { - return this.history.length > 0; - } - - canRedo(): boolean { - return this.redoStack.length > 0; - } - - clear(): void { - this.history = []; - this.redoStack = []; - } -} +import type { Command } from "@/lib/commands";
+
+export class CommandManager {
+ private history: Command[] = [];
+ private redoStack: Command[] = [];
+
+ execute({ command }: { command: Command }): Command {
+ command.execute();
+ this.history.push(command);
+ this.redoStack = [];
+ return command;
+ }
+
+ push({ command }: { command: Command }): void {
+ this.history.push(command);
+ this.redoStack = [];
+ }
+
+ undo(): void {
+ if (this.history.length === 0) return;
+ const command = this.history.pop();
+ command?.undo();
+ if (command) {
+ this.redoStack.push(command);
+ }
+ }
+
+ redo(): void {
+ if (this.redoStack.length === 0) return;
+ const command = this.redoStack.pop();
+ command?.redo();
+ if (command) {
+ this.history.push(command);
+ }
+ }
+
+ canUndo(): boolean {
+ return this.history.length > 0;
+ }
+
+ canRedo(): boolean {
+ return this.redoStack.length > 0;
+ }
+
+ clear(): void {
+ this.history = [];
+ this.redoStack = [];
+ }
+}
|
