import type { Dom } from '../../common'; import type { PointLike, RectangleLike } from '../../geometry'; import type { Graph } from '../../graph'; import type { Node } from '../../model/node'; import type { CellViewHighlightOptions, CellViewMouseDeltaEventArgs, CellViewOptions, CellViewPositionEventArgs } from '../cell/type'; import type { EdgeView } from '../edge'; import type { MarkupSelectors } from '../markup'; import type { NodeView } from '.'; export interface NodeViewOptions extends CellViewOptions { } export interface NodeViewPortCache { portElement: Element; portSelectors?: MarkupSelectors | null; portLabelElement?: Element; portLabelSelectors?: MarkupSelectors | null; portContentElement?: Element; portContentSelectors?: MarkupSelectors | null; } export interface NodeViewMagnetEventArgs { magnet: Element; } export interface NodeViewMouseEventArgs { e: E; node: Node; cell: Node; view: NodeView; port?: string; } export interface NodeViewPositionEventArgs extends NodeViewMouseEventArgs, CellViewPositionEventArgs { } export interface NodeViewTranslateEventArgs extends NodeViewPositionEventArgs { } export interface NodeViewResizeEventArgs extends NodeViewPositionEventArgs { } export interface NodeViewRotateEventArgs extends NodeViewPositionEventArgs { } export interface NodeViewEventArgs { 'node:click': NodeViewPositionEventArgs; 'node:dblclick': NodeViewPositionEventArgs; 'node:contextmenu': NodeViewPositionEventArgs; 'node:mousedown': NodeViewPositionEventArgs; 'node:mousemove': NodeViewPositionEventArgs; 'node:mouseup': NodeViewPositionEventArgs; 'node:mouseover': NodeViewMouseEventArgs; 'node:mouseout': NodeViewMouseEventArgs; 'node:mouseenter': NodeViewMouseEventArgs; 'node:mouseleave': NodeViewMouseEventArgs; 'node:mousewheel': NodeViewPositionEventArgs & CellViewMouseDeltaEventArgs; 'node:port:click': NodeViewPositionEventArgs; 'node:port:dblclick': NodeViewPositionEventArgs; 'node:port:contextmenu': NodeViewPositionEventArgs; 'node:port:mousedown': NodeViewPositionEventArgs; 'node:port:mousemove': NodeViewPositionEventArgs; 'node:port:mouseup': NodeViewPositionEventArgs; 'node:port:mouseover': NodeViewMouseEventArgs; 'node:port:mouseout': NodeViewMouseEventArgs; 'node:port:mouseenter': NodeViewMouseEventArgs; 'node:port:mouseleave': NodeViewMouseEventArgs; 'node:customevent': NodeViewPositionEventArgs & { name: string; }; 'node:unhandled:mousedown': NodeViewPositionEventArgs; 'node:highlight': { magnet: Element; view: NodeView; node: Node; cell: Node; options: CellViewHighlightOptions; }; 'node:unhighlight': NodeViewEventArgs['node:highlight']; 'node:magnet:click': NodeViewPositionEventArgs & NodeViewMagnetEventArgs; 'node:magnet:dblclick': NodeViewPositionEventArgs & NodeViewMagnetEventArgs; 'node:magnet:contextmenu': NodeViewPositionEventArgs & NodeViewMagnetEventArgs; 'node:move': NodeViewPositionEventArgs; 'node:moving': NodeViewPositionEventArgs; 'node:moved': NodeViewPositionEventArgs; 'node:embed': NodeViewPositionEventArgs & { currentParent: Node | null; }; 'node:embedding': NodeViewPositionEventArgs & { currentParent: Node | null; candidateParent: Node | null; }; 'node:embedded': NodeViewPositionEventArgs & { currentParent: Node | null; previousParent: Node | null; }; } export type EventDataMousemove = EventDataMoving | EventDataMagnet; export interface EventDataMagnet { action: 'magnet'; targetMagnet: Element; edgeView?: EdgeView; } export interface EventDataMoving { action: 'move'; targetView: NodeView; } export interface EventDataMovingTargetNode { moving: boolean; offset: PointLike; restrict?: RectangleLike | null; embedding?: boolean; candidateEmbedView?: NodeView | null; cell?: Node; graph?: Graph; }