History class
Undo/redo stacks for a Document, implemented with inverted deltas.
Every local change is inverted against the document state it applied to and pushed on the undo stack; undoing composes that inverse back into the document (as ChangeSource.history, so it does not re-enter the stacks) and pushes the counter-inverse on the redo stack. Remote changes do not clear the stacks — they transform every stacked delta so history stays valid against the new document state, which is what makes undo safe under collaborative editing.
The now clock is injectable so merge-interval coalescing is testable
without real waiting.
Constructors
- History({HistoryOptions options = const HistoryOptions(), DateTime now()?})
- Creates an empty history.
Properties
- hashCode → int
-
The hash code for this object.
no setterinherited
- hasRedo → bool
-
Whether a redo would apply a change.
no setter
- hasUndo → bool
-
Whether an undo would apply a change.
no setter
- options → HistoryOptions
-
The stack size and coalescing configuration.
final
- runtimeType → Type
-
A representation of the runtime type of the object.
no setterinherited
Methods
-
clear(
) → void - Discards both stacks.
-
handleChange(
DocumentChange change) → void - Routes a document change into the history: local changes are recorded, remote changes transform the stacks, history-sourced changes (produced by undo/redo themselves) are ignored.
-
noSuchMethod(
Invocation invocation) → dynamic -
Invoked when a nonexistent method or property is accessed.
inherited
-
record(
Delta change, Delta before) → void -
Records a local
changeapplied to the document statebefore, clearing the redo stack. -
redo(
Document document) → Delta? -
Applies the top redo entry to
documentand returns the change that was composed, ornullwhen the redo stack is empty. -
toString(
) → String -
A string representation of this object.
inherited
-
transform(
Delta change) → void -
Rebases both stacks over a remote
changeusing operational transformation, dropping entries that transform to nothing. -
undo(
Document document) → Delta? -
Applies the top undo entry to
documentand returns the change that was composed, ornullwhen the undo stack is empty.
Operators
-
operator ==(
Object other) → bool -
The equality operator.
inherited