Менеджер истории
Класс для управления историей изменений в редакторе.
Методы HistoryManager
| Функция | Сигнатура | Описание |
|---|---|---|
| scheduleSave | scheduleSave(): void | Планирует сохранение состояния с задержкой. |
| save | save(): void | Немедленно сохраняет текущее состояние редактора. |
| undo | undo(): boolean | Отменяет последнее действие. Возвращает true, если отмена прошла успешно. |
| redo | redo(): boolean | Повторяет последнее отменённое действие. Возвращает true, если повтор прошёл успешно. |
| canUndo | canUndo(): boolean | Проверяет, доступна ли отмена действия. |
| canRedo | canRedo(): boolean | Проверяет, доступно ли повторение действия. |
| clear | clear(): void | Очищает всю историю. |
| setSaveInterval | setSaveInterval(interval: number): void | Устанавливает интервал задержки для сохранения состояния (в миллисекундах). |
Пример использования HistoryManager
javascript
import Texditor from "texditor";
const editor = new Texditor({
handle: "my-editor"
});
// Немедленное сохранение состояния
editor.historyManager.save();
// Отмена последнего действия
if (editor.historyManager.canUndo()) {
editor.historyManager.undo();
}
// Повторение отменённого действия
if (editor.historyManager.canRedo()) {
editor.historyManager.redo();
}
// Планирование сохранения состояния
editor.historyManager.scheduleSave();
// Очистка истории
editor.historyManager.clear();Типы и интерфейсы HistoryManager
typescript
/**
* Интерфейс данных выделения для сохранения в истории.
* Описывает позицию курсора и выбранный блок в момент сохранения состояния.
* @property start - Начальная позиция выделения в тексте
* @property end - Конечная позиция выделения в тексте
* @property index - Индекс текущего блока
* @property itemIndex - Индекс элемента внутри блока (для редактируемых списков и т. д.)
*/
export interface HistoryStateSelectionData {
start: number;
end: number;
index: number;
itemIndex?: number;
}
/**
* Интерфейс состояния истории.
* Хранит полный снимок состояния редактора в определённый момент времени.
* @property content - Содержимое всех блоков редактора
* @property selection - Текущие данные выделения
* @property timestamp - Временная метка создания состояния (Unix timestamp)
*/
export interface HistoryState {
content: BlockSchema[];
selection: HistoryStateSelectionData;
timestamp: number;
}
/**
* Интерфейс менеджера истории.
*/
export interface HistoryManager {
scheduleSave(): void;
save(): void;
undo(): boolean;
redo(): boolean;
canUndo(): boolean;
canRedo(): boolean;
clear(): void;
setSaveInterval(interval: number): void;
}