For the complete documentation index, see llms.txt. This page is also available as Markdown.

HistoryEditor

The HistoryEditor interface is added to the Editor when it is instantiated using the withHistory method.

const [editor] = useState(() => withReact(withHistory(createEditor())))

This adds properties to editor that enables undo and redo in Slate.

There are also static methods for working with the Editor's undo/redo history.

export interface HistoryEditor extends BaseEditor {
  history: History
  undo: () => void
  redo: () => void
  writeHistory: (stack: 'undos' | 'redos', batch: any) => void
}

Static methods

Undo and Redo

HistoryEditor.redo(editor: HistoryEditor): void

Redo to the next saved state.

HistoryEditor.undo(editor: HistoryEditor): void

Undo to the previous saved state.

Merging and Saving

HistoryEditor.withMerging(editor: HistoryEditor, fn: () => void): void

Apply a series of changes inside a synchronous fn, These operations will be merged into the previous history.

HistoryEditor.withNewBatch(editor: HistoryEditor, fn: () => void): void

Apply a series of changes inside a synchronous fn, ensuring that the first operation starts a new batch in the history. Subsequent operations will be merged as usual.

HistoryEditor.withoutMerging(editor: HistoryEditor, fn: () => void): void

Apply a series of changes inside a synchronous fn, without merging any of the new operations into previous save point in the history.

HistoryEditor.withoutSaving(editor: HistoryEditor, fn: () => void): void

Apply a series of changes inside a synchronous fn, without saving any of their operations into the history.

Check methods

HistoryEditor.isHistoryEditor(value: any): value is HistoryEditor

Check if a value is a HistoryEditor (i.e. it has the HistoryEditor interface).

HistoryEditor.isMerging(editor: HistoryEditor): boolean | undefined

Get the merge flag's current value.

HistoryEditor.isSaving(editor: HistoryEditor): boolean | undefined

Get the saving flag's current value.

Instance methods

undo(): void

Undo the last batch of operations

redo(): void

Redo the last undone batch of operations

writeHistory(stack: 'undos'| 'redos', batch: any) => void

Push a batch of operations as either undos or redos onto editor.undos or editor.redos

Last updated