History API: отмена, повтор и транзакции
Управление функциональностью отмены/повтора для операций редактора.
Как получить экземпляр редактора
Методы ниже вызываются на редакторе, созданном через new Blok(). Они доступны после того, как разрешится editor.isReady.
// You already hold the instance returned by the constructor.
const editor = new Blok({ holder: 'editor' });
await editor.isReady;
// Call any API method on it.
editor.caret.setToLastBlock('end');Методы
history.undo()
voidUndo the last operation.
Когда использовать
Программный Ctrl/Cmd+Z. Ничего не делает, когда отменять нечего — проверяйте canUndo() для своих кнопок.
// Undo last change
editor.history.undo();
// Undo multiple times
for (let i = 0; i < 3; i++) {
editor.history.undo();
}history.redo()
voidRedo the last undone operation.
Когда использовать
Программный Ctrl/Cmd+Shift+Z. Проверяйте canRedo() в своём UI, чтобы кнопка корректно отключалась.
// Redo last undone change
editor.history.redo();
// Redo multiple times
for (let i = 0; i < 3; i++) {
editor.history.redo();
}history.canUndo()
booleanCheck if undo is available (there are operations to undo).
Когда использовать
Используйте для включения/отключения своей кнопки отмены; в паре с undo().
if (editor.history.canUndo()) {
editor.history.undo();
} else {
console.log('Nothing to undo');
}history.canRedo()
booleanCheck if redo is available (there are undone operations to redo).
Когда использовать
Используйте для включения/отключения своей кнопки повтора; в паре с redo().
if (editor.history.canRedo()) {
editor.history.redo();
} else {
console.log('Nothing to redo');
}history.clear()
voidClear all history. Removes all undo/redo entries.
Когда использовать
Сбрасывает весь стек отмены — вызывайте после загрузки нового контента, чтобы нельзя было отменить до предыдущего документа.
// Clear history when loading new content
editor.blocks.render(newData);
editor.history.clear();