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
BaseModel<{redoEvents:TypedOptionalModelProp<ArrayType<ModelType<Frozen<UndoEvent>>[]>>;undoEvents:TypedOptionalModelProp<ArrayType<ModelType<Frozen<UndoEvent>>[]>>; }, {redoEvents?: readonly ( |UndoEvent|FrozenData<UndoEvent>)[];undoEvents?: readonly ( |UndoEvent|FrozenData<UndoEvent>)[]; },never,never,this> &Omit<{redoEvents:Frozen<UndoEvent>[];undoEvents:Frozen<UndoEvent>[]; },BaseModelKeys> &object
Constructors
Constructor
new UndoStore(data): UndoStore;
Parameters
| Parameter | Type |
|---|---|
data | ModelPropsToTransformedCreationData<{ 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
| Parameter | Type |
|---|---|
newId | ModelIdPropertyType<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
| Parameter | Type |
|---|---|
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