Skip to main content

Class: UndoStore

Store model instance for undo/redo actions. Do not manipulate directly, other than creating it.

Events are stored as frozen data, since they never change once recorded.

Extends​

Constructors​

Constructor​

new UndoStore(data): UndoStore;

Parameters​

ParameterType
dataModelPropsToTransformedCreationData<{ redoEvents: TypedOptionalModelProp<ArrayType<ModelType<Frozen<UndoEvent>>[]>>; undoEvents: TypedOptionalModelProp<ArrayType<ModelType<Frozen<UndoEvent>>[]>>; }>

Returns​

UndoStore

Inherited from​

Model(
{
// TODO: add proper type checking to undo store
undoEvents: tProp(typesArray(typesFrozen(typesUnchecked<UndoEvent>())), () => []),
redoEvents: tProp(typesArray(typesFrozen(typesUnchecked<UndoEvent>())), () => []),
},
{
fromSnapshotProcessor(sn: {
undoEvents?: ReadonlyArray<UndoEvent | FrozenData<UndoEvent>>
redoEvents?: ReadonlyArray<UndoEvent | FrozenData<UndoEvent>>
}) {
return {
...sn,
undoEvents: toFrozenEventSnapshots(sn.undoEvents),
redoEvents: toFrozenEventSnapshots(sn.redoEvents),
}
},
}
).constructor

Properties​

[fromSnapshotOverrideTypeSymbol]​

[fromSnapshotOverrideTypeSymbol]: object;

redoEvents?​

optional redoEvents?: readonly (
| UndoEvent
| FrozenData<UndoEvent>)[];

undoEvents?​

optional undoEvents?: readonly (
| UndoEvent
| FrozenData<UndoEvent>)[];

Inherited from​

Model(
{
// TODO: add proper type checking to undo store
undoEvents: tProp(typesArray(typesFrozen(typesUnchecked<UndoEvent>())), () => []),
redoEvents: tProp(typesArray(typesFrozen(typesUnchecked<UndoEvent>())), () => []),
},
{
fromSnapshotProcessor(sn: {
undoEvents?: ReadonlyArray<UndoEvent | FrozenData<UndoEvent>>
redoEvents?: ReadonlyArray<UndoEvent | FrozenData<UndoEvent>>
}) {
return {
...sn,
undoEvents: toFrozenEventSnapshots(sn.undoEvents),
redoEvents: toFrozenEventSnapshots(sn.redoEvents),
}
},
}
).[fromSnapshotOverrideTypeSymbol]

[modelIdPropertyNameSymbol]​

[modelIdPropertyNameSymbol]: never;

Inherited from​

Model(
{
// TODO: add proper type checking to undo store
undoEvents: tProp(typesArray(typesFrozen(typesUnchecked<UndoEvent>())), () => []),
redoEvents: tProp(typesArray(typesFrozen(typesUnchecked<UndoEvent>())), () => []),
},
{
fromSnapshotProcessor(sn: {
undoEvents?: ReadonlyArray<UndoEvent | FrozenData<UndoEvent>>
redoEvents?: ReadonlyArray<UndoEvent | FrozenData<UndoEvent>>
}) {
return {
...sn,
undoEvents: toFrozenEventSnapshots(sn.undoEvents),
redoEvents: toFrozenEventSnapshots(sn.redoEvents),
}
},
}
).[modelIdPropertyNameSymbol]

[propsTypeSymbol]​

[propsTypeSymbol]: object;

redoEvents​

redoEvents: TypedOptionalModelProp<ArrayType<ModelType<Frozen<UndoEvent>>[]>>;

undoEvents​

undoEvents: TypedOptionalModelProp<ArrayType<ModelType<Frozen<UndoEvent>>[]>>;

Inherited from​

Model(
{
// TODO: add proper type checking to undo store
undoEvents: tProp(typesArray(typesFrozen(typesUnchecked<UndoEvent>())), () => []),
redoEvents: tProp(typesArray(typesFrozen(typesUnchecked<UndoEvent>())), () => []),
},
{
fromSnapshotProcessor(sn: {
undoEvents?: ReadonlyArray<UndoEvent | FrozenData<UndoEvent>>
redoEvents?: ReadonlyArray<UndoEvent | FrozenData<UndoEvent>>
}) {
return {
...sn,
undoEvents: toFrozenEventSnapshots(sn.undoEvents),
redoEvents: toFrozenEventSnapshots(sn.redoEvents),
}
},
}
).[propsTypeSymbol]

[toSnapshotOverrideTypeSymbol]​

[toSnapshotOverrideTypeSymbol]: never;

Inherited from​

Model(
{
// TODO: add proper type checking to undo store
undoEvents: tProp(typesArray(typesFrozen(typesUnchecked<UndoEvent>())), () => []),
redoEvents: tProp(typesArray(typesFrozen(typesUnchecked<UndoEvent>())), () => []),
},
{
fromSnapshotProcessor(sn: {
undoEvents?: ReadonlyArray<UndoEvent | FrozenData<UndoEvent>>
redoEvents?: ReadonlyArray<UndoEvent | FrozenData<UndoEvent>>
}) {
return {
...sn,
undoEvents: toFrozenEventSnapshots(sn.undoEvents),
redoEvents: toFrozenEventSnapshots(sn.redoEvents),
}
},
}
).[toSnapshotOverrideTypeSymbol]

$​

readonly $: object;

Data part of the model, which is observable and will be serialized in snapshots. Use it if one of the data properties matches one of the model properties/functions.

redoEvents​

redoEvents: Frozen<UndoEvent>[];

undoEvents​

undoEvents: Frozen<UndoEvent>[];

Inherited from​

Model(
{
// TODO: add proper type checking to undo store
undoEvents: tProp(typesArray(typesFrozen(typesUnchecked<UndoEvent>())), () => []),
redoEvents: tProp(typesArray(typesFrozen(typesUnchecked<UndoEvent>())), () => []),
},
{
fromSnapshotProcessor(sn: {
undoEvents?: ReadonlyArray<UndoEvent | FrozenData<UndoEvent>>
redoEvents?: ReadonlyArray<UndoEvent | FrozenData<UndoEvent>>
}) {
return {
...sn,
undoEvents: toFrozenEventSnapshots(sn.undoEvents),
redoEvents: toFrozenEventSnapshots(sn.redoEvents),
}
},
}
).$

$modelType​

readonly $modelType: string;

Model type name.

Inherited from​

Model(
{
// TODO: add proper type checking to undo store
undoEvents: tProp(typesArray(typesFrozen(typesUnchecked<UndoEvent>())), () => []),
redoEvents: tProp(typesArray(typesFrozen(typesUnchecked<UndoEvent>())), () => []),
},
{
fromSnapshotProcessor(sn: {
undoEvents?: ReadonlyArray<UndoEvent | FrozenData<UndoEvent>>
redoEvents?: ReadonlyArray<UndoEvent | FrozenData<UndoEvent>>
}) {
return {
...sn,
undoEvents: toFrozenEventSnapshots(sn.undoEvents),
redoEvents: toFrozenEventSnapshots(sn.redoEvents),
}
},
}
).$modelType

redoEvents​

redoEvents: Frozen<UndoEvent>[];

Inherited from​

Model(
{
// TODO: add proper type checking to undo store
undoEvents: tProp(typesArray(typesFrozen(typesUnchecked<UndoEvent>())), () => []),
redoEvents: tProp(typesArray(typesFrozen(typesUnchecked<UndoEvent>())), () => []),
},
{
fromSnapshotProcessor(sn: {
undoEvents?: ReadonlyArray<UndoEvent | FrozenData<UndoEvent>>
redoEvents?: ReadonlyArray<UndoEvent | FrozenData<UndoEvent>>
}) {
return {
...sn,
undoEvents: toFrozenEventSnapshots(sn.undoEvents),
redoEvents: toFrozenEventSnapshots(sn.redoEvents),
}
},
}
).redoEvents

undoEvents​

undoEvents: Frozen<UndoEvent>[];

Inherited from​

Model(
{
// TODO: add proper type checking to undo store
undoEvents: tProp(typesArray(typesFrozen(typesUnchecked<UndoEvent>())), () => []),
redoEvents: tProp(typesArray(typesFrozen(typesUnchecked<UndoEvent>())), () => []),
},
{
fromSnapshotProcessor(sn: {
undoEvents?: ReadonlyArray<UndoEvent | FrozenData<UndoEvent>>
redoEvents?: ReadonlyArray<UndoEvent | FrozenData<UndoEvent>>
}) {
return {
...sn,
undoEvents: toFrozenEventSnapshots(sn.undoEvents),
redoEvents: toFrozenEventSnapshots(sn.redoEvents),
}
},
}
).undoEvents

Accessors​

$modelId​

Get Signature​

get $modelId(): ModelIdPropertyType<TProps, ModelIdPropertyName>;

Model internal id. Can be modified inside a model action. It will return undefined if there's no id prop set.

Returns​

ModelIdPropertyType<TProps, ModelIdPropertyName>

Set Signature​

set $modelId(newId): void;
Parameters​
ParameterType
newIdModelIdPropertyType<TProps, ModelIdPropertyName>
Returns​

void

Inherited from​

Model(
{
// TODO: add proper type checking to undo store
undoEvents: tProp(typesArray(typesFrozen(typesUnchecked<UndoEvent>())), () => []),
redoEvents: tProp(typesArray(typesFrozen(typesUnchecked<UndoEvent>())), () => []),
},
{
fromSnapshotProcessor(sn: {
undoEvents?: ReadonlyArray<UndoEvent | FrozenData<UndoEvent>>
redoEvents?: ReadonlyArray<UndoEvent | FrozenData<UndoEvent>>
}) {
return {
...sn,
undoEvents: toFrozenEventSnapshots(sn.undoEvents),
redoEvents: toFrozenEventSnapshots(sn.redoEvents),
}
},
}
).$modelId

Methods​

getRefId()​

getRefId(): string | undefined;

Can be overridden to offer a reference id to be used in reference resolution. By default it will use the idProp if available or return undefined otherwise.

Returns​

string | undefined

Inherited from​

Model(
{
// TODO: add proper type checking to undo store
undoEvents: tProp(typesArray(typesFrozen(typesUnchecked<UndoEvent>())), () => []),
redoEvents: tProp(typesArray(typesFrozen(typesUnchecked<UndoEvent>())), () => []),
},
{
fromSnapshotProcessor(sn: {
undoEvents?: ReadonlyArray<UndoEvent | FrozenData<UndoEvent>>
redoEvents?: ReadonlyArray<UndoEvent | FrozenData<UndoEvent>>
}) {
return {
...sn,
undoEvents: toFrozenEventSnapshots(sn.undoEvents),
redoEvents: toFrozenEventSnapshots(sn.redoEvents),
}
},
}
).getRefId

toString()​

toString(options?): string;

Parameters​

ParameterType
options?{ withData?: boolean; }
options.withData?boolean

Returns​

string

Inherited from​

Model(
{
// TODO: add proper type checking to undo store
undoEvents: tProp(typesArray(typesFrozen(typesUnchecked<UndoEvent>())), () => []),
redoEvents: tProp(typesArray(typesFrozen(typesUnchecked<UndoEvent>())), () => []),
},
{
fromSnapshotProcessor(sn: {
undoEvents?: ReadonlyArray<UndoEvent | FrozenData<UndoEvent>>
redoEvents?: ReadonlyArray<UndoEvent | FrozenData<UndoEvent>>
}) {
return {
...sn,
undoEvents: toFrozenEventSnapshots(sn.undoEvents),
redoEvents: toFrozenEventSnapshots(sn.redoEvents),
}
},
}
).toString

typeCheck()​

typeCheck(): TypeCheckError | null;

Performs a type check over the model instance. For this to work a data type has to be declared as part of the model properties.

Returns​

TypeCheckError | null

A TypeCheckError or null if there is no error.

Inherited from​

Model(
{
// TODO: add proper type checking to undo store
undoEvents: tProp(typesArray(typesFrozen(typesUnchecked<UndoEvent>())), () => []),
redoEvents: tProp(typesArray(typesFrozen(typesUnchecked<UndoEvent>())), () => []),
},
{
fromSnapshotProcessor(sn: {
undoEvents?: ReadonlyArray<UndoEvent | FrozenData<UndoEvent>>
redoEvents?: ReadonlyArray<UndoEvent | FrozenData<UndoEvent>>
}) {
return {
...sn,
undoEvents: toFrozenEventSnapshots(sn.undoEvents),
redoEvents: toFrozenEventSnapshots(sn.redoEvents),
}
},
}
).typeCheck