cell.d.ts 9.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207
  1. import { Rectangle } from '@antv/x6-geometry';
  2. import { Dom, Nilable, KeyValue } from '@antv/x6-common';
  3. import { Registry } from '../registry/registry';
  4. import { View } from './view';
  5. import { Cache } from './cache';
  6. import { Markup } from './markup';
  7. import { ToolsView } from './tool';
  8. import { AttrManager } from './attr';
  9. import { FlagManager } from './flag';
  10. import { Attr } from '../registry/attr';
  11. import { Cell } from '../model/cell';
  12. import { Edge } from '../model/edge';
  13. import { Model } from '../model/model';
  14. import { EdgeView } from './edge';
  15. import { NodeView } from './node';
  16. import { Graph } from '../graph';
  17. export declare class CellView<Entity extends Cell = Cell, Options extends CellView.Options = CellView.Options> extends View<CellView.EventArgs> {
  18. protected static defaults: Partial<CellView.Options>;
  19. static getDefaults(): Partial<CellView.Options>;
  20. static config<T extends CellView.Options = CellView.Options>(options: Partial<T>): void;
  21. static getOptions<T extends CellView.Options = CellView.Options>(options: Partial<T>): T;
  22. graph: Graph;
  23. cell: Entity;
  24. protected selectors: Markup.Selectors;
  25. protected readonly options: Options;
  26. protected readonly flag: FlagManager;
  27. protected readonly attr: AttrManager;
  28. protected readonly cache: Cache;
  29. protected get [Symbol.toStringTag](): string;
  30. constructor(cell: Entity, options?: Partial<Options>);
  31. protected init(): void;
  32. protected onRemove(): void;
  33. get priority(): number;
  34. protected get rootSelector(): string;
  35. protected getConstructor<T extends CellView.Definition>(): T;
  36. protected ensureOptions(options: Partial<Options>): Options;
  37. protected getContainerTagName(): string;
  38. protected getContainerStyle(): Nilable<Record<string, string | number>> | void;
  39. protected getContainerAttrs(): Nilable<Attr.SimpleAttrs>;
  40. protected getContainerClassName(): Nilable<string | string[]>;
  41. protected ensureContainer(): SVGElement | HTMLElement;
  42. protected setContainer(container: Element): this;
  43. isNodeView(): this is NodeView;
  44. isEdgeView(): this is EdgeView;
  45. render(): this;
  46. confirmUpdate(flag: number, options?: any): number;
  47. getBootstrapFlag(): number;
  48. getFlag(actions: FlagManager.Actions): number;
  49. hasAction(flag: number, actions: FlagManager.Actions): number;
  50. removeAction(flag: number, actions: FlagManager.Actions): number;
  51. handleAction(flag: number, action: FlagManager.Action, handle: () => void, additionalRemovedActions?: FlagManager.Actions | null): number;
  52. protected setup(): void;
  53. protected onCellChanged({ options }: Cell.EventArgs['changed']): void;
  54. protected onAttrsChange(options: Cell.MutateOptions): void;
  55. parseJSONMarkup(markup: Markup.JSONMarkup | Markup.JSONMarkup[], rootElem?: Element): Markup.ParseResult;
  56. can(feature: CellView.InteractionNames): boolean;
  57. cleanCache(): this;
  58. getCache(elem: Element): Cache.Item;
  59. getDataOfElement(elem: Element): import("@antv/x6-common").JSONObject;
  60. getMatrixOfElement(elem: Element): DOMMatrix;
  61. getShapeOfElement(elem: SVGElement): import("@antv/x6-geometry").Path | Rectangle | import("@antv/x6-geometry").Line | import("@antv/x6-geometry").Polyline | import("@antv/x6-geometry").Ellipse;
  62. getBoundingRectOfElement(elem: Element): Rectangle;
  63. getBBoxOfElement(elem: Element): Rectangle;
  64. getUnrotatedBBoxOfElement(elem: SVGElement): Rectangle;
  65. getBBox(options?: {
  66. useCellGeometry?: boolean;
  67. }): Rectangle;
  68. getRootTranslatedMatrix(): DOMMatrix;
  69. getRootRotatedMatrix(): DOMMatrix;
  70. findMagnet(elem?: Element): Element | null;
  71. updateAttrs(rootNode: Element, attrs: Attr.CellAttrs, options?: Partial<AttrManager.UpdateOptions>): void;
  72. isEdgeElement(magnet?: Element | null): boolean;
  73. protected prepareHighlight(elem?: Element | null, options?: CellView.HighlightOptions): Element;
  74. highlight(elem?: Element | null, options?: CellView.HighlightOptions): this;
  75. unhighlight(elem?: Element | null, options?: CellView.HighlightOptions): this;
  76. notifyUnhighlight(magnet: Element, options: CellView.HighlightOptions): void;
  77. getEdgeTerminal(magnet: Element, x: number, y: number, edge: Edge, type: Edge.TerminalType): Edge.TerminalCellData;
  78. getMagnetFromEdgeTerminal(terminal: Edge.TerminalData): any;
  79. protected tools: ToolsView | null;
  80. hasTools(name?: string): boolean;
  81. addTools(options: ToolsView.Options | null): this;
  82. addTools(tools: ToolsView | null): this;
  83. updateTools(options?: ToolsView.UpdateOptions): this;
  84. removeTools(): this;
  85. hideTools(): this;
  86. showTools(): this;
  87. protected renderTools(): this;
  88. notify<Key extends keyof CellView.EventArgs>(name: Key, args: CellView.EventArgs[Key]): this;
  89. notify(name: Exclude<string, keyof CellView.EventArgs>, args: any): this;
  90. protected getEventArgs<E>(e: E): CellView.MouseEventArgs<E>;
  91. protected getEventArgs<E>(e: E, x: number, y: number): CellView.MousePositionEventArgs<E>;
  92. onClick(e: Dom.ClickEvent, x: number, y: number): void;
  93. onDblClick(e: Dom.DoubleClickEvent, x: number, y: number): void;
  94. onContextMenu(e: Dom.ContextMenuEvent, x: number, y: number): void;
  95. protected cachedModelForMouseEvent: Model | null;
  96. onMouseDown(e: Dom.MouseDownEvent, x: number, y: number): void;
  97. onMouseUp(e: Dom.MouseUpEvent, x: number, y: number): void;
  98. onMouseMove(e: Dom.MouseMoveEvent, x: number, y: number): void;
  99. onMouseOver(e: Dom.MouseOverEvent): void;
  100. onMouseOut(e: Dom.MouseOutEvent): void;
  101. onMouseEnter(e: Dom.MouseEnterEvent): void;
  102. onMouseLeave(e: Dom.MouseLeaveEvent): void;
  103. onMouseWheel(e: Dom.EventObject, x: number, y: number, delta: number): void;
  104. onCustomEvent(e: Dom.MouseDownEvent, name: string, x: number, y: number): void;
  105. onMagnetMouseDown(e: Dom.MouseDownEvent, magnet: Element, x: number, y: number): void;
  106. onMagnetDblClick(e: Dom.DoubleClickEvent, magnet: Element, x: number, y: number): void;
  107. onMagnetContextMenu(e: Dom.ContextMenuEvent, magnet: Element, x: number, y: number): void;
  108. onLabelMouseDown(e: Dom.MouseDownEvent, x: number, y: number): void;
  109. checkMouseleave(e: Dom.EventObject): void;
  110. dispose(): void;
  111. }
  112. export declare namespace CellView {
  113. export interface Options {
  114. graph: Graph;
  115. priority: number;
  116. isSvgElement: boolean;
  117. rootSelector: string;
  118. bootstrap: FlagManager.Actions;
  119. actions: KeyValue<FlagManager.Actions>;
  120. events?: View.Events | null;
  121. documentEvents?: View.Events | null;
  122. }
  123. type Interactable = boolean | ((this: Graph, cellView: CellView) => boolean);
  124. interface InteractionMap {
  125. edgeMovable?: Interactable;
  126. edgeLabelMovable?: Interactable;
  127. arrowheadMovable?: Interactable;
  128. vertexMovable?: Interactable;
  129. vertexAddable?: Interactable;
  130. vertexDeletable?: Interactable;
  131. useEdgeTools?: Interactable;
  132. nodeMovable?: Interactable;
  133. magnetConnectable?: Interactable;
  134. stopDelegateOnDragging?: Interactable;
  135. toolsAddable?: Interactable;
  136. }
  137. export type InteractionNames = keyof InteractionMap;
  138. export type Interacting = boolean | InteractionMap | ((this: Graph, cellView: CellView) => InteractionMap | boolean);
  139. export interface HighlightOptions {
  140. highlighter?: string | {
  141. name: string;
  142. args: KeyValue;
  143. };
  144. type?: 'embedding' | 'nodeAvailable' | 'magnetAvailable' | 'magnetAdsorbed';
  145. partial?: boolean;
  146. }
  147. export {};
  148. }
  149. export declare namespace CellView {
  150. interface PositionEventArgs {
  151. x: number;
  152. y: number;
  153. }
  154. interface MouseDeltaEventArgs {
  155. delta: number;
  156. }
  157. interface MouseEventArgs<E> {
  158. e: E;
  159. view: CellView;
  160. cell: Cell;
  161. }
  162. interface MousePositionEventArgs<E> extends MouseEventArgs<E>, PositionEventArgs {
  163. }
  164. interface EventArgs extends NodeView.EventArgs, EdgeView.EventArgs {
  165. 'cell:click': MousePositionEventArgs<Dom.ClickEvent>;
  166. 'cell:dblclick': MousePositionEventArgs<Dom.DoubleClickEvent>;
  167. 'cell:contextmenu': MousePositionEventArgs<Dom.ContextMenuEvent>;
  168. 'cell:mousedown': MousePositionEventArgs<Dom.MouseDownEvent>;
  169. 'cell:mousemove': MousePositionEventArgs<Dom.MouseMoveEvent>;
  170. 'cell:mouseup': MousePositionEventArgs<Dom.MouseUpEvent>;
  171. 'cell:mouseover': MouseEventArgs<Dom.MouseOverEvent>;
  172. 'cell:mouseout': MouseEventArgs<Dom.MouseOutEvent>;
  173. 'cell:mouseenter': MouseEventArgs<Dom.MouseEnterEvent>;
  174. 'cell:mouseleave': MouseEventArgs<Dom.MouseLeaveEvent>;
  175. 'cell:mousewheel': MousePositionEventArgs<Dom.EventObject> & MouseDeltaEventArgs;
  176. 'cell:customevent': MousePositionEventArgs<Dom.MouseDownEvent> & {
  177. name: string;
  178. };
  179. 'cell:highlight': {
  180. magnet: Element;
  181. view: CellView;
  182. cell: Cell;
  183. options: CellView.HighlightOptions;
  184. };
  185. 'cell:unhighlight': EventArgs['cell:highlight'];
  186. }
  187. }
  188. export declare namespace CellView {
  189. const Flag: typeof FlagManager;
  190. const Attr: typeof AttrManager;
  191. }
  192. export declare namespace CellView {
  193. const toStringTag: string;
  194. function isCellView(instance: any): instance is CellView;
  195. }
  196. export declare namespace CellView {
  197. function priority(value: number): (ctor: Definition) => void;
  198. function bootstrap(actions: FlagManager.Actions): (ctor: Definition) => void;
  199. }
  200. export declare namespace CellView {
  201. type CellViewClass = typeof CellView;
  202. export interface Definition extends CellViewClass {
  203. new <Entity extends Cell = Cell, Options extends CellView.Options = CellView.Options>(cell: Entity, options: Partial<Options>): CellView;
  204. }
  205. export const registry: Registry<Definition, KeyValue<Definition>, never>;
  206. export {};
  207. }