@zxh19890103/wik
Version:
The world-class JavaScript library for building large-scale digital warehouse both on 2D and 3D.
52 lines (51 loc) • 1.68 kB
TypeScript
import { ContextMenuItem } from './d';
export interface OnMouseOverOut<S = any> {
onHover(data?: any): S;
onUnHover(state?: S, data?: any): void;
}
export interface OnSelect<S = any> {
onSelect(data?: any): S;
onUnSelect(state?: S, data?: any): void;
}
export interface OnHighlight<S = any> {
onHighlight(data?: any): S;
onUnHighlight(state?: S, data?: any): void;
}
export interface OnClick {
onClick(e?: unknown): void;
}
export interface OnDblClick {
onDblClick(e?: unknown): void;
}
export interface OnDrag {
onDragEnd(coord?: unknown): void;
onDragStart(): void;
onDragging(coord?: unknown): void;
}
export interface OnContextMenu<Key extends string = string> {
onContextMenu(evt?: unknown): ContextMenuItem[];
onContextMenuClick(key: Key): void | Promise<any>;
}
/**
* - S1 is the state shape of OnSelect,
* - S2 is the state shape of OnMouseOverOut
* - S3 is the state shape of OnHighlight
*/
export interface OnInteractive<S1 = any, S2 = any, S3 = any> extends OnSelect<S1>, OnMouseOverOut<S2>, OnHighlight<S3>, OnClick, OnDblClick, OnDrag, OnContextMenu {
}
export interface Interactive extends Partial<OnInteractive> {
uiStateChangeLogs: any[];
/**
* If it is in state of being selected.
*/
isSelected: boolean;
/**
* If it is in state of being highlight.
*/
isHighlight: boolean;
/**
* if it is in state of being mouse over.
*/
isHover: boolean;
}
export type OnInteractName = 'onClick' | 'onDblClick' | 'onHover' | 'onUnHover' | 'onSelect' | 'onUnSelect' | 'onDragEnd' | 'onDragStart' | 'onDragging' | 'onHighlight' | 'onUnHighlight' | 'onContextMenu';