node.d.ts 7.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187
  1. import { Point, Rectangle } from '@antv/x6-geometry';
  2. import { NumberExt, Size, KeyValue } from '@antv/x6-common';
  3. import { DeepPartial, Omit } from 'utility-types';
  4. import { Registry } from '../registry/registry';
  5. import { Markup } from '../view/markup';
  6. import { Cell } from './cell';
  7. import { Edge } from './edge';
  8. import { Store } from './store';
  9. import { PortManager } from './port';
  10. import { Animation } from './animation';
  11. export declare class Node<Properties extends Node.Properties = Node.Properties> extends Cell<Properties> {
  12. protected static defaults: Node.Defaults;
  13. protected readonly store: Store<Node.Properties>;
  14. protected port: PortManager;
  15. protected get [Symbol.toStringTag](): string;
  16. constructor(metadata?: Node.Metadata);
  17. protected preprocess(metadata: Node.Metadata, ignoreIdCheck?: boolean): Properties;
  18. isNode(): this is Node;
  19. size(): Size;
  20. size(size: Size, options?: Node.ResizeOptions): this;
  21. size(width: number, height: number, options?: Node.ResizeOptions): this;
  22. getSize(): {
  23. width: number;
  24. height: number;
  25. };
  26. setSize(size: Size, options?: Node.ResizeOptions): this;
  27. setSize(width: number, height: number, options?: Node.ResizeOptions): this;
  28. resize(width: number, height: number, options?: Node.ResizeOptions): this;
  29. scale(sx: number, sy: number, origin?: Point.PointLike | null, options?: Node.SetOptions): this;
  30. position(x: number, y: number, options?: Node.SetPositionOptions): this;
  31. position(options?: Node.GetPositionOptions): Point.PointLike;
  32. getPosition(options?: Node.GetPositionOptions): Point.PointLike;
  33. setPosition(p: Point | Point.PointLike, options?: Node.SetPositionOptions): this;
  34. setPosition(x: number, y: number, options?: Node.SetPositionOptions): this;
  35. translate(tx?: number, ty?: number, options?: Node.TranslateOptions): this;
  36. angle(): number;
  37. angle(val: number, options?: Node.RotateOptions): this;
  38. getAngle(): number;
  39. rotate(angle: number, options?: Node.RotateOptions): this;
  40. getBBox(options?: {
  41. deep?: boolean;
  42. }): Rectangle;
  43. getConnectionPoint(edge: Edge, type: Edge.TerminalType): Point;
  44. /**
  45. * Sets cell's size and position based on the children bbox and given padding.
  46. */
  47. fit(options?: Node.FitEmbedsOptions): this;
  48. get portContainerMarkup(): Markup;
  49. set portContainerMarkup(markup: Markup);
  50. getDefaultPortContainerMarkup(): Markup;
  51. getPortContainerMarkup(): Markup;
  52. setPortContainerMarkup(markup?: Markup, options?: Node.SetOptions): this;
  53. get portMarkup(): Markup;
  54. set portMarkup(markup: Markup);
  55. getDefaultPortMarkup(): Markup;
  56. getPortMarkup(): Markup;
  57. setPortMarkup(markup?: Markup, options?: Node.SetOptions): this;
  58. get portLabelMarkup(): Markup;
  59. set portLabelMarkup(markup: Markup);
  60. getDefaultPortLabelMarkup(): Markup;
  61. getPortLabelMarkup(): Markup;
  62. setPortLabelMarkup(markup?: Markup, options?: Node.SetOptions): this;
  63. get ports(): PortManager.Metadata;
  64. getPorts(): PortManager.PortMetadata[];
  65. getPortsByGroup(groupName: string): PortManager.PortMetadata[];
  66. getPort(portId: string): PortManager.PortMetadata | undefined;
  67. getPortAt(index: number): PortManager.PortMetadata;
  68. hasPorts(): boolean;
  69. hasPort(portId: string): boolean;
  70. getPortIndex(port: PortManager.PortMetadata | string): number;
  71. getPortsPosition(groupName: string): KeyValue<{
  72. position: Point.PointLike;
  73. angle: number;
  74. }>;
  75. getPortProp(portId: string): PortManager.PortMetadata;
  76. getPortProp<T>(portId: string, path: string | string[]): T;
  77. setPortProp(portId: string, path: string | string[], value: any, options?: Node.SetOptions): this;
  78. setPortProp(portId: string, value: DeepPartial<PortManager.PortMetadata>, options?: Node.SetOptions): this;
  79. removePortProp(portId: string, options?: Node.SetOptions): this;
  80. removePortProp(portId: string, path: string | string[], options?: Node.SetOptions): this;
  81. portProp(portId: string): PortManager.PortMetadata;
  82. portProp<T>(portId: string, path: string | string[]): T;
  83. portProp(portId: string, path: string | string[], value: any, options?: Node.SetOptions): this;
  84. portProp(portId: string, value: DeepPartial<PortManager.PortMetadata>, options?: Node.SetOptions): this;
  85. protected prefixPortPath(portId: string, path?: string | string[]): string | string[];
  86. addPort(port: PortManager.PortMetadata, options?: Node.SetOptions): this;
  87. addPorts(ports: PortManager.PortMetadata[], options?: Node.SetOptions): this;
  88. insertPort(index: number, port: PortManager.PortMetadata, options?: Node.SetOptions): this;
  89. removePort(port: PortManager.PortMetadata | string, options?: Node.SetOptions): this;
  90. removePortAt(index: number, options?: Node.SetOptions): this;
  91. removePorts(options?: Node.SetOptions): this;
  92. removePorts(portsForRemoval: (PortManager.PortMetadata | string)[], options?: Node.SetOptions): this;
  93. getParsedPorts(): PortManager.Port[];
  94. getParsedGroups(): {
  95. [name: string]: PortManager.Group;
  96. };
  97. getPortsLayoutByGroup(groupName: string | undefined, bbox: Rectangle): PortManager.LayoutResult[];
  98. protected initPorts(): void;
  99. protected processRemovedPort(): void;
  100. protected validatePorts(): string[];
  101. protected generatePortId(): string;
  102. protected updatePortData(): void;
  103. }
  104. export declare namespace Node {
  105. interface Common extends Cell.Common {
  106. size?: {
  107. width: number;
  108. height: number;
  109. };
  110. position?: {
  111. x: number;
  112. y: number;
  113. };
  114. angle?: number;
  115. ports?: Partial<PortManager.Metadata> | PortManager.PortMetadata[];
  116. portContainerMarkup?: Markup;
  117. portMarkup?: Markup;
  118. portLabelMarkup?: Markup;
  119. defaultPortMarkup?: Markup;
  120. defaultPortLabelMarkup?: Markup;
  121. defaultPortContainerMarkup?: Markup;
  122. }
  123. interface Boundary {
  124. x?: number;
  125. y?: number;
  126. width?: number;
  127. height?: number;
  128. }
  129. export interface Defaults extends Common, Cell.Defaults {
  130. }
  131. export interface Metadata extends Common, Cell.Metadata, Boundary {
  132. }
  133. export interface Properties extends Common, Omit<Cell.Metadata, 'tools'>, Cell.Properties {
  134. }
  135. export interface Config extends Defaults, Boundary, Cell.Config<Metadata, Node> {
  136. }
  137. export {};
  138. }
  139. export declare namespace Node {
  140. interface SetOptions extends Cell.SetOptions {
  141. }
  142. interface GetPositionOptions {
  143. relative?: boolean;
  144. }
  145. interface SetPositionOptions extends SetOptions {
  146. deep?: boolean;
  147. relative?: boolean;
  148. }
  149. interface TranslateOptions extends Cell.TranslateOptions {
  150. transition?: boolean | Animation.StartOptions<Point.PointLike>;
  151. restrict?: Rectangle.RectangleLike | null;
  152. exclude?: Cell[];
  153. }
  154. interface RotateOptions extends SetOptions {
  155. absolute?: boolean;
  156. center?: Point.PointLike | null;
  157. }
  158. type ResizeDirection = 'left' | 'top' | 'right' | 'bottom' | 'top-left' | 'top-right' | 'bottom-left' | 'bottom-right';
  159. interface ResizeOptions extends SetOptions {
  160. absolute?: boolean;
  161. direction?: ResizeDirection;
  162. }
  163. interface FitEmbedsOptions extends SetOptions {
  164. deep?: boolean;
  165. padding?: NumberExt.SideOptions;
  166. }
  167. }
  168. export declare namespace Node {
  169. const toStringTag: string;
  170. function isNode(instance: any): instance is Node;
  171. }
  172. export declare namespace Node {
  173. }
  174. export declare namespace Node {
  175. const registry: Registry<Definition, never, Config & {
  176. inherit?: string | Definition | undefined;
  177. }>;
  178. }
  179. export declare namespace Node {
  180. type NodeClass = typeof Node;
  181. export interface Definition extends NodeClass {
  182. new <T extends Properties = Properties>(metadata: T): Node;
  183. }
  184. export function define(config: Config): typeof Node;
  185. export function create(options: Metadata): Node<Properties>;
  186. export {};
  187. }