@antv/x6
Version:
JavaScript diagramming library that uses SVG and HTML for rendering
115 lines (104 loc) • 2.71 kB
text/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 }
}