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 }