UNPKG

@antv/x6

Version:

JavaScript diagramming library that uses SVG and HTML for rendering

88 lines (87 loc) 3.44 kB
import type { Dom, KeyValue } from '../../common'; import type { Graph } from '../../graph'; import type { Cell } from '../../model'; import type { ViewEvents } from '../../types'; import type { EdgeViewEventArgs } from '../edge/type'; import type { FlagManagerActions } from '../flag'; import type { NodeViewEventArgs } from '../node/type'; import type { CellView } from '.'; export * from './type'; export interface CellViewOptions { graph: Graph; priority: number; isSvgElement: boolean; rootSelector: string; bootstrap: FlagManagerActions; actions: KeyValue<FlagManagerActions>; events?: ViewEvents | null; documentEvents?: ViewEvents | null; } type Interactable = boolean | ((this: Graph, cellView: CellView) => boolean); interface InteractionMap { edgeMovable?: Interactable; edgeLabelMovable?: Interactable; arrowheadMovable?: Interactable; vertexMovable?: Interactable; vertexAddable?: Interactable; vertexDeletable?: Interactable; useEdgeTools?: Interactable; nodeMovable?: Interactable; magnetConnectable?: Interactable; stopDelegateOnDragging?: Interactable; toolsAddable?: Interactable; } export type CellViewInteractionNames = keyof InteractionMap; export type CellViewInteracting = boolean | InteractionMap | ((this: Graph, cellView: CellView) => InteractionMap | boolean); export interface CellViewHighlightOptions { highlighter?: string | { name: string; args: KeyValue; }; type?: 'embedding' | 'nodeAvailable' | 'magnetAvailable' | 'magnetAdsorbed'; partial?: boolean; } export interface CellViewPositionEventArgs { x: number; y: number; } export interface CellViewMouseDeltaEventArgs { delta: number; } export interface CellViewMouseEventArgs<E> { e: E; view: CellView; cell: Cell; } export interface CellViewMousePositionEventArgs<E> extends CellViewMouseEventArgs<E>, CellViewPositionEventArgs { } export interface CellViewEventArgs extends NodeViewEventArgs, EdgeViewEventArgs { 'cell:click': CellViewMousePositionEventArgs<Dom.ClickEvent>; 'cell:dblclick': CellViewMousePositionEventArgs<Dom.DoubleClickEvent>; 'cell:contextmenu': CellViewMousePositionEventArgs<Dom.ContextMenuEvent>; 'cell:mousedown': CellViewMousePositionEventArgs<Dom.MouseDownEvent>; 'cell:mousemove': CellViewMousePositionEventArgs<Dom.MouseMoveEvent>; 'cell:mouseup': CellViewMousePositionEventArgs<Dom.MouseUpEvent>; 'cell:mouseover': CellViewMouseEventArgs<Dom.MouseOverEvent>; 'cell:mouseout': CellViewMouseEventArgs<Dom.MouseOutEvent>; 'cell:mouseenter': CellViewMouseEventArgs<Dom.MouseEnterEvent>; 'cell:mouseleave': CellViewMouseEventArgs<Dom.MouseLeaveEvent>; 'cell:mousewheel': CellViewMousePositionEventArgs<Dom.EventObject> & CellViewMouseDeltaEventArgs; 'cell:customevent': CellViewMousePositionEventArgs<Dom.MouseDownEvent> & { name: string; }; 'cell:highlight': { magnet: Element; view: CellView; cell: Cell; options: CellViewHighlightOptions; }; 'cell:unhighlight': CellViewEventArgs['cell:highlight']; 'view:render': { view: CellView; }; } type CellViewClass = typeof CellView; export interface CellViewDefinition extends CellViewClass { new <Entity extends Cell = Cell, Options extends CellViewOptions = CellViewOptions>(cell: Entity, options: Partial<Options>): CellView; }