Skip to content

Менеджер истории

Класс для управления историей изменений в редакторе.

Методы HistoryManager

ФункцияСигнатураОписание
scheduleSavescheduleSave(): voidПланирует сохранение состояния с задержкой.
savesave(): voidНемедленно сохраняет текущее состояние редактора.
undoundo(): booleanОтменяет последнее действие. Возвращает true, если отмена прошла успешно.
redoredo(): booleanПовторяет последнее отменённое действие. Возвращает true, если повтор прошёл успешно.
canUndocanUndo(): booleanПроверяет, доступна ли отмена действия.
canRedocanRedo(): booleanПроверяет, доступно ли повторение действия.
clearclear(): voidОчищает всю историю.
setSaveIntervalsetSaveInterval(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;
}

dev@priveted.com | priveted.com