UNPKG

reactronic

Version:

Reactronic - Transactional Reactive State Management

35 lines (34 loc) 1.3 kB
import { SxObject } from "./Mvcc.js"; import { ObjectHandle, ObjectVersion, PatchSet } from "./Data.js"; export type Saver = (patch: PatchSet) => Promise<void>; export declare abstract class Journal extends SxObject { abstract capacity: number; abstract readonly edits: ReadonlyArray<PatchSet>; abstract readonly unsaved: PatchSet; abstract readonly canUndo: boolean; abstract readonly canRedo: boolean; abstract edited(patch: PatchSet): void; abstract saved(patch: PatchSet): void; abstract undo(count?: number): void; abstract redo(count?: number): void; static create(): Journal; } export declare class JournalImpl extends Journal { private _capacity; private _edits; private _unsaved; private _position; get capacity(): number; set capacity(value: number); get edits(): ReadonlyArray<PatchSet>; get unsaved(): PatchSet; get canUndo(): boolean; get canRedo(): boolean; edited(p: PatchSet): void; saved(patch: PatchSet): void; undo(count?: number): void; redo(count?: number): void; static buildPatch(hint: string, items: Map<ObjectHandle, ObjectVersion>): PatchSet; static applyPatch(patch: PatchSet, undoing: boolean): void; mergePatchToUnsaved(patch: PatchSet, undoing: boolean): void; }