UNPKG

@antv/x6

Version:

JavaScript diagramming library that uses SVG and HTML for rendering

108 lines (107 loc) 4.7 kB
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: E; node: Node; cell: Node; view: NodeView; port?: string; } export interface NodeViewPositionEventArgs<E> extends NodeViewMouseEventArgs<E>, CellViewPositionEventArgs { } export interface NodeViewTranslateEventArgs<E> extends NodeViewPositionEventArgs<E> { } export interface NodeViewResizeEventArgs<E> extends NodeViewPositionEventArgs<E> { } export interface NodeViewRotateEventArgs<E> extends NodeViewPositionEventArgs<E> { } export interface NodeViewEventArgs { 'node:click': NodeViewPositionEventArgs<Dom.ClickEvent>; 'node:dblclick': NodeViewPositionEventArgs<Dom.DoubleClickEvent>; 'node:contextmenu': NodeViewPositionEventArgs<Dom.ContextMenuEvent>; 'node:mousedown': NodeViewPositionEventArgs<Dom.MouseDownEvent>; 'node:mousemove': NodeViewPositionEventArgs<Dom.MouseMoveEvent>; 'node:mouseup': NodeViewPositionEventArgs<Dom.MouseUpEvent>; 'node:mouseover': NodeViewMouseEventArgs<Dom.MouseOverEvent>; 'node:mouseout': NodeViewMouseEventArgs<Dom.MouseOutEvent>; 'node:mouseenter': NodeViewMouseEventArgs<Dom.MouseEnterEvent>; 'node:mouseleave': NodeViewMouseEventArgs<Dom.MouseLeaveEvent>; 'node:mousewheel': NodeViewPositionEventArgs<Dom.EventObject> & CellViewMouseDeltaEventArgs; 'node:port:click': NodeViewPositionEventArgs<Dom.ClickEvent>; 'node:port:dblclick': NodeViewPositionEventArgs<Dom.DoubleClickEvent>; 'node:port:contextmenu': NodeViewPositionEventArgs<Dom.ContextMenuEvent>; 'node:port:mousedown': NodeViewPositionEventArgs<Dom.MouseDownEvent>; 'node:port:mousemove': NodeViewPositionEventArgs<Dom.MouseMoveEvent>; 'node:port:mouseup': NodeViewPositionEventArgs<Dom.MouseUpEvent>; 'node:port:mouseover': NodeViewMouseEventArgs<Dom.MouseOverEvent>; 'node:port:mouseout': NodeViewMouseEventArgs<Dom.MouseOutEvent>; 'node:port:mouseenter': NodeViewMouseEventArgs<Dom.MouseEnterEvent>; 'node:port:mouseleave': NodeViewMouseEventArgs<Dom.MouseLeaveEvent>; 'node:customevent': NodeViewPositionEventArgs<Dom.MouseDownEvent> & { name: string; }; 'node:unhandled:mousedown': NodeViewPositionEventArgs<Dom.MouseDownEvent>; 'node:highlight': { magnet: Element; view: NodeView; node: Node; cell: Node; options: CellViewHighlightOptions; }; 'node:unhighlight': NodeViewEventArgs['node:highlight']; 'node:magnet:click': NodeViewPositionEventArgs<Dom.MouseUpEvent> & NodeViewMagnetEventArgs; 'node:magnet:dblclick': NodeViewPositionEventArgs<Dom.DoubleClickEvent> & NodeViewMagnetEventArgs; 'node:magnet:contextmenu': NodeViewPositionEventArgs<Dom.ContextMenuEvent> & NodeViewMagnetEventArgs; 'node:move': NodeViewPositionEventArgs<Dom.MouseMoveEvent>; 'node:moving': NodeViewPositionEventArgs<Dom.MouseMoveEvent>; 'node:moved': NodeViewPositionEventArgs<Dom.MouseUpEvent>; 'node:embed': NodeViewPositionEventArgs<Dom.MouseMoveEvent> & { currentParent: Node | null; }; 'node:embedding': NodeViewPositionEventArgs<Dom.MouseMoveEvent> & { currentParent: Node | null; candidateParent: Node | null; }; 'node:embedded': NodeViewPositionEventArgs<Dom.MouseUpEvent> & { 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; }