@zeainc/zea-ux
Version:
72 lines • 2.93 kB
TypeScript
import { EventEmitter } from '@zeainc/zea-engine';
/**
* Kind of an abstract class, that represents the mandatory structure of a change classes that are used in the [`UndoRedoManager`]().
*
* @note If you don't extend this class, ensure to implement all methods specified in here.
* @extends {EventEmitter}
*/
declare class Change extends EventEmitter {
name: string;
secondaryChanges: Change[];
suppressPrimaryChange: boolean;
closed: boolean;
/**
* Every class that extends from `Change` must contain a global `name` attribute.
* It is used by the `UndoRedoManager` factory to re-construct the class of the specific implementation of the `Change` class.
*
* @param name - The name value.
*/
constructor(name?: string);
addSecondaryChange(secondaryChange: Change): number;
setPrimaryChange(primaryChange: Change): void;
/**
* Called by the `UndoRedoManager` in the `undo` method, and contains the code you wanna run when the undo action is triggered,
* of course it depends on what you're doing.
*
* @note This method needs to be implemented, otherwise it will throw an Error.
*/
undo(): void;
/**
* Called by the `UndoRedoManager` in the `redo` method, and is the same as the `undo` method, contains the specific code you wanna run.
*
* @note This method needs to be implemented, otherwise it will throw an Error.
*/
redo(): void;
/**
* Use this method to update the state of your `Change` class.
*
* @note This method needs to be implemented, otherwise it will throw an Error.
*
* @param updateData - The updateData param.
*/
update(updateData: Record<any, any>): void;
/**
* Serializes the `Change` instance as a JSON object, allowing persistence/replication
*
* @note This method needs to be implemented, otherwise it will return an empty object.
*
* @param context - The appData param.
*/
toJSON(context: Record<any, any>): Record<any, any>;
/**
* The counterpart of the `toJSON` method, restoring `Change` instance's state with the specified JSON object.
* Each `Change` class must implement the logic for reconstructing itself.
* Very often used to restore from persisted/replicated JSON.
*
* @note This method needs to be implemented, otherwise it will do nothing.
*
* @param j - The j param.
* @param context - The context param.
*/
fromJSON(j: Record<any, any>, context: Record<any, any>): void;
/**
* Method destined to clean up things that would need to be cleaned manually.
* It is executed when flushing the undo/redo stacks or adding a new change to the undo stack,
* so it is require in any class that represents a change.
*
*/
destroy(): void;
}
export default Change;
export { Change };
//# sourceMappingURL=Change.d.ts.map