node.d.ts 9.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203
  1. import { Dom } from '@antv/x6-common';
  2. import { Rectangle, Point } from '@antv/x6-geometry';
  3. import { Attr, PortLayout } from '../registry';
  4. import { Cell } from '../model/cell';
  5. import { Node } from '../model/node';
  6. import { Edge } from '../model/edge';
  7. import { PortManager } from '../model/port';
  8. import { CellView } from './cell';
  9. import { EdgeView } from './edge';
  10. import { Markup } from './markup';
  11. import { Graph } from '../graph';
  12. export declare class NodeView<Entity extends Node = Node, Options extends NodeView.Options = NodeView.Options> extends CellView<Entity, Options> {
  13. protected portsCache: {
  14. [id: string]: NodeView.PortCache;
  15. };
  16. protected get [Symbol.toStringTag](): string;
  17. protected getContainerClassName(): string;
  18. protected updateClassName(e: Dom.MouseEnterEvent): void;
  19. isNodeView(): this is NodeView;
  20. confirmUpdate(flag: number, options?: any): number;
  21. update(partialAttrs?: Attr.CellAttrs): void;
  22. protected renderMarkup(): void;
  23. protected renderJSONMarkup(markup: Markup.JSONMarkup | Markup.JSONMarkup[]): void;
  24. render(): this;
  25. resize(): void;
  26. translate(): void;
  27. rotate(): void;
  28. protected getTranslationString(): string;
  29. protected getRotationString(): string | undefined;
  30. protected updateTransform(): void;
  31. findPortElem(portId?: string, selector?: string): Element | null;
  32. protected cleanPortsCache(): void;
  33. protected removePorts(): void;
  34. protected renderPorts(): void;
  35. protected appendPorts(ports: PortManager.Port[], zIndex: number, refs: Element[]): void;
  36. protected getPortElement(port: PortManager.Port): Element;
  37. protected createPortElement(port: PortManager.Port): Element;
  38. protected updatePorts(): void;
  39. protected updatePortGroup(groupName?: string): void;
  40. protected applyPortTransform(element: Element, layout: PortLayout.Result, initialAngle?: number): void;
  41. protected getPortMarkup(port: PortManager.Port): Markup;
  42. protected getPortLabelMarkup(label: PortManager.Label): Markup;
  43. protected existPortLabel(port: PortManager.Port): Attr.ComplexAttrs | undefined;
  44. protected getEventArgs<E>(e: E): NodeView.MouseEventArgs<E>;
  45. protected getEventArgs<E>(e: E, x: number, y: number): NodeView.PositionEventArgs<E>;
  46. protected getPortEventArgs<E>(e: E, port: string, pos?: {
  47. x: number;
  48. y: number;
  49. }): NodeView.PositionEventArgs<E> | NodeView.MouseEventArgs<E>;
  50. notifyMouseDown(e: Dom.MouseDownEvent, x: number, y: number): void;
  51. notifyMouseMove(e: Dom.MouseMoveEvent, x: number, y: number): void;
  52. notifyMouseUp(e: Dom.MouseUpEvent, x: number, y: number): void;
  53. notifyPortEvent(name: string, e: Dom.EventObject, pos?: {
  54. x: number;
  55. y: number;
  56. }): void;
  57. onClick(e: Dom.ClickEvent, x: number, y: number): void;
  58. onDblClick(e: Dom.DoubleClickEvent, x: number, y: number): void;
  59. onContextMenu(e: Dom.ContextMenuEvent, x: number, y: number): void;
  60. onMouseDown(e: Dom.MouseDownEvent, x: number, y: number): void;
  61. onMouseMove(e: Dom.MouseMoveEvent, x: number, y: number): void;
  62. onMouseUp(e: Dom.MouseUpEvent, x: number, y: number): void;
  63. onMouseOver(e: Dom.MouseOverEvent): void;
  64. onMouseOut(e: Dom.MouseOutEvent): void;
  65. onMouseEnter(e: Dom.MouseEnterEvent): void;
  66. onMouseLeave(e: Dom.MouseLeaveEvent): void;
  67. onMouseWheel(e: Dom.EventObject, x: number, y: number, delta: number): void;
  68. onMagnetClick(e: Dom.MouseUpEvent, magnet: Element, x: number, y: number): void;
  69. onMagnetDblClick(e: Dom.DoubleClickEvent, magnet: Element, x: number, y: number): void;
  70. onMagnetContextMenu(e: Dom.ContextMenuEvent, magnet: Element, x: number, y: number): void;
  71. onMagnetMouseDown(e: Dom.MouseDownEvent, magnet: Element, x: number, y: number): void;
  72. onCustomEvent(e: Dom.MouseDownEvent, name: string, x: number, y: number): void;
  73. protected prepareEmbedding(e: Dom.MouseMoveEvent): void;
  74. processEmbedding(e: Dom.MouseMoveEvent, data: EventData.MovingTargetNode): void;
  75. clearEmbedding(data: EventData.MovingTargetNode): void;
  76. finalizeEmbedding(e: Dom.MouseUpEvent, data: EventData.MovingTargetNode): void;
  77. getDelegatedView(): NodeView<Node<Node.Properties>, NodeView.Options> | null;
  78. protected validateMagnet(cellView: CellView, magnet: Element, e: Dom.MouseDownEvent | Dom.MouseEnterEvent): boolean;
  79. protected startMagnetDragging(e: Dom.MouseDownEvent, x: number, y: number): void;
  80. protected startConnectting(e: Dom.MouseDownEvent, magnet: Element, x: number, y: number): void;
  81. protected getDefaultEdge(sourceView: CellView, sourceMagnet: Element): Edge<Edge.Properties>;
  82. protected createEdgeFromMagnet(magnet: Element, x: number, y: number): EdgeView<Edge<Edge.Properties>, EdgeView.Options>;
  83. protected dragMagnet(e: Dom.MouseMoveEvent, x: number, y: number): void;
  84. protected stopMagnetDragging(e: Dom.MouseUpEvent, x: number, y: number): void;
  85. protected notifyUnhandledMouseDown(e: Dom.MouseDownEvent, x: number, y: number): void;
  86. protected notifyNodeMove<Key extends keyof NodeView.EventArgs>(name: Key, e: Dom.MouseMoveEvent | Dom.MouseUpEvent, x: number, y: number, cell: Cell): void;
  87. protected getRestrictArea(view?: NodeView): Rectangle.RectangleLike | null;
  88. protected startNodeDragging(e: Dom.MouseDownEvent, x: number, y: number): void;
  89. protected dragNode(e: Dom.MouseMoveEvent, x: number, y: number): void;
  90. protected stopNodeDragging(e: Dom.MouseUpEvent, x: number, y: number): void;
  91. protected autoScrollGraph(x: number, y: number): void;
  92. }
  93. export declare namespace NodeView {
  94. interface Options extends CellView.Options {
  95. }
  96. interface PortCache {
  97. portElement: Element;
  98. portSelectors?: Markup.Selectors | null;
  99. portLabelElement?: Element;
  100. portLabelSelectors?: Markup.Selectors | null;
  101. portContentElement?: Element;
  102. portContentSelectors?: Markup.Selectors | null;
  103. }
  104. }
  105. export declare namespace NodeView {
  106. interface MagnetEventArgs {
  107. magnet: Element;
  108. }
  109. export interface MouseEventArgs<E> {
  110. e: E;
  111. node: Node;
  112. cell: Node;
  113. view: NodeView;
  114. port?: string;
  115. }
  116. export interface PositionEventArgs<E> extends MouseEventArgs<E>, CellView.PositionEventArgs {
  117. }
  118. export interface TranslateEventArgs<E> extends PositionEventArgs<E> {
  119. }
  120. export interface ResizeEventArgs<E> extends PositionEventArgs<E> {
  121. }
  122. export interface RotateEventArgs<E> extends PositionEventArgs<E> {
  123. }
  124. export interface EventArgs {
  125. 'node:click': PositionEventArgs<Dom.ClickEvent>;
  126. 'node:dblclick': PositionEventArgs<Dom.DoubleClickEvent>;
  127. 'node:contextmenu': PositionEventArgs<Dom.ContextMenuEvent>;
  128. 'node:mousedown': PositionEventArgs<Dom.MouseDownEvent>;
  129. 'node:mousemove': PositionEventArgs<Dom.MouseMoveEvent>;
  130. 'node:mouseup': PositionEventArgs<Dom.MouseUpEvent>;
  131. 'node:mouseover': MouseEventArgs<Dom.MouseOverEvent>;
  132. 'node:mouseout': MouseEventArgs<Dom.MouseOutEvent>;
  133. 'node:mouseenter': MouseEventArgs<Dom.MouseEnterEvent>;
  134. 'node:mouseleave': MouseEventArgs<Dom.MouseLeaveEvent>;
  135. 'node:mousewheel': PositionEventArgs<Dom.EventObject> & CellView.MouseDeltaEventArgs;
  136. 'node:port:click': PositionEventArgs<Dom.ClickEvent>;
  137. 'node:port:dblclick': PositionEventArgs<Dom.DoubleClickEvent>;
  138. 'node:port:contextmenu': PositionEventArgs<Dom.ContextMenuEvent>;
  139. 'node:port:mousedown': PositionEventArgs<Dom.MouseDownEvent>;
  140. 'node:port:mousemove': PositionEventArgs<Dom.MouseMoveEvent>;
  141. 'node:port:mouseup': PositionEventArgs<Dom.MouseUpEvent>;
  142. 'node:port:mouseover': MouseEventArgs<Dom.MouseOverEvent>;
  143. 'node:port:mouseout': MouseEventArgs<Dom.MouseOutEvent>;
  144. 'node:port:mouseenter': MouseEventArgs<Dom.MouseEnterEvent>;
  145. 'node:port:mouseleave': MouseEventArgs<Dom.MouseLeaveEvent>;
  146. 'node:customevent': PositionEventArgs<Dom.MouseDownEvent> & {
  147. name: string;
  148. };
  149. 'node:unhandled:mousedown': PositionEventArgs<Dom.MouseDownEvent>;
  150. 'node:highlight': {
  151. magnet: Element;
  152. view: NodeView;
  153. node: Node;
  154. cell: Node;
  155. options: CellView.HighlightOptions;
  156. };
  157. 'node:unhighlight': EventArgs['node:highlight'];
  158. 'node:magnet:click': PositionEventArgs<Dom.MouseUpEvent> & MagnetEventArgs;
  159. 'node:magnet:dblclick': PositionEventArgs<Dom.DoubleClickEvent> & MagnetEventArgs;
  160. 'node:magnet:contextmenu': PositionEventArgs<Dom.ContextMenuEvent> & MagnetEventArgs;
  161. 'node:move': TranslateEventArgs<Dom.MouseMoveEvent>;
  162. 'node:moving': TranslateEventArgs<Dom.MouseMoveEvent>;
  163. 'node:moved': TranslateEventArgs<Dom.MouseUpEvent>;
  164. 'node:embed': PositionEventArgs<Dom.MouseMoveEvent> & {
  165. currentParent: Node | null;
  166. };
  167. 'node:embedding': PositionEventArgs<Dom.MouseMoveEvent> & {
  168. currentParent: Node | null;
  169. candidateParent: Node | null;
  170. };
  171. 'node:embedded': PositionEventArgs<Dom.MouseUpEvent> & {
  172. currentParent: Node | null;
  173. previousParent: Node | null;
  174. };
  175. }
  176. export {};
  177. }
  178. export declare namespace NodeView {
  179. const toStringTag: string;
  180. function isNodeView(instance: any): instance is NodeView;
  181. }
  182. declare namespace EventData {
  183. type Mousemove = Moving | Magnet;
  184. interface Magnet {
  185. action: 'magnet';
  186. targetMagnet: Element;
  187. edgeView?: EdgeView;
  188. }
  189. interface Moving {
  190. action: 'move';
  191. targetView: NodeView;
  192. }
  193. interface MovingTargetNode {
  194. moving: boolean;
  195. offset: Point.PointLike;
  196. restrict?: Rectangle.RectangleLike | null;
  197. embedding?: boolean;
  198. candidateEmbedView?: NodeView | null;
  199. cell?: Node;
  200. graph?: Graph;
  201. }
  202. }
  203. export {};