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; 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; view: CellView; cell: Cell; } export interface CellViewMousePositionEventArgs extends CellViewMouseEventArgs, CellViewPositionEventArgs { } export interface CellViewEventArgs extends NodeViewEventArgs, EdgeViewEventArgs { 'cell:click': CellViewMousePositionEventArgs; 'cell:dblclick': CellViewMousePositionEventArgs; 'cell:contextmenu': CellViewMousePositionEventArgs; 'cell:mousedown': CellViewMousePositionEventArgs; 'cell:mousemove': CellViewMousePositionEventArgs; 'cell:mouseup': CellViewMousePositionEventArgs; 'cell:mouseover': CellViewMouseEventArgs; 'cell:mouseout': CellViewMouseEventArgs; 'cell:mouseenter': CellViewMouseEventArgs; 'cell:mouseleave': CellViewMouseEventArgs; 'cell:mousewheel': CellViewMousePositionEventArgs & CellViewMouseDeltaEventArgs; 'cell:customevent': CellViewMousePositionEventArgs & { 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 (cell: Entity, options: Partial): CellView; }