Files
image-studio/commands/history.ts
2026-07-03 17:30:31 +02:00

43 lines
1.1 KiB
TypeScript

import type { Command } from "./command";
import { commandIds } from "./ids";
export const historyUndoCommand: Command = {
id: commandIds.historyUndo,
name: "Undo",
execute({ state }) {
const previous = state.history.past.at(-1);
if (!previous) return state;
return {
...state,
document: previous.document,
editor: previous.editor,
history: {
past: state.history.past.slice(0, -1),
future: [{ document: state.document, editor: state.editor }, ...state.history.future],
},
};
},
};
export const historyRedoCommand: Command = {
id: commandIds.historyRedo,
name: "Redo",
execute({ state }) {
const next = state.history.future[0];
if (!next) return state;
return {
...state,
document: next.document,
editor: next.editor,
history: {
past: [...state.history.past, { document: state.document, editor: state.editor }],
future: state.history.future.slice(1),
},
};
},
};
export const historyCommands = [historyUndoCommand, historyRedoCommand] satisfies Command<unknown>[];