@antv/x6
Version:
JavaScript diagramming library that uses SVG and HTML for rendering
95 lines (94 loc) • 2.85 kB
TypeScript
import type { KeyValue } from '../../common';
import type { CellProperties, ModelEventArgs } from '../../model';
import type { History } from '.';
import type { ValidatorEventArgs } from './validator';
export type HistoryModelEvents = keyof ModelEventArgs;
export interface HistoryCommonOptions {
enabled?: boolean;
ignoreAdd?: boolean;
ignoreRemove?: boolean;
ignoreChange?: boolean;
eventNames?: (keyof ModelEventArgs)[];
/**
* A function evaluated before any command is added. If the function
* returns `false`, the command does not get stored. This way you can
* control which commands do not get registered for undo/redo.
*/
beforeAddCommand?: <T extends HistoryModelEvents>(this: History, event: T, args: ModelEventArgs[T]) => any;
afterAddCommand?: <T extends HistoryModelEvents>(this: History, event: T, args: ModelEventArgs[T], cmd: HistoryCommand) => any;
executeCommand?: (this: History, cmd: HistoryCommand, revert: boolean, options: KeyValue) => any;
/**
* An array of options property names that passed in undo actions.
*/
revertOptionsList?: string[];
/**
* An array of options property names that passed in redo actions.
*/
applyOptionsList?: string[];
/**
* Determine whether to cancel an invalid command or not.
*/
cancelInvalid?: boolean;
}
export interface HistoryOptions extends Partial<HistoryCommonOptions> {
stackSize?: number;
}
interface Data {
id?: string;
}
export interface HistoryCreationData extends Data {
edge?: boolean;
node?: boolean;
props: CellProperties;
}
export interface HistoryChangingData extends Data {
key: string;
prev: KeyValue;
next: KeyValue;
}
export interface HistoryCommand {
batch: boolean;
modelChange?: boolean;
event?: HistoryModelEvents;
data: HistoryCreationData | HistoryChangingData;
options?: KeyValue;
}
export type HistoryCommands = HistoryCommand[] | HistoryCommand;
export interface HistoryArgs<T = never> {
cmds: HistoryCommand[] | T;
options: KeyValue;
}
export interface HistoryEventArgs extends ValidatorEventArgs {
/**
* Triggered when a command was undone.
*/
undo: HistoryArgs;
/**
* Triggered when a command were redone.
*/
redo: HistoryArgs;
/**
* Triggered when a command was canceled.
*/
cancel: HistoryArgs;
/**
* Triggered when command(s) were added to the stack.
*/
add: HistoryArgs;
/**
* Triggered when all commands were clean.
*/
clean: HistoryArgs<null>;
/**
* Triggered when any change was made to stacks.
*/
change: HistoryArgs<null>;
/**
* Triggered when a batch command received.
*/
batch: {
cmd: HistoryCommand;
options: KeyValue;
};
}
export {};