123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255 |
- import { Dom, Nilable } from '@antv/x6-common';
- import { Rectangle } from '@antv/x6-geometry';
- import { Graph } from '../graph';
- import { GridManager } from './grid';
- import { BackgroundManager } from './background';
- import { PanningManager } from './panning';
- import { MouseWheel } from './mousewheel';
- import { Model, Cell, Node, Edge } from '../model';
- import { CellView, NodeView, EdgeView, Markup } from '../view';
- import { Router, Connector, NodeAnchor, EdgeAnchor, ConnectionPoint } from '../registry';
- import { HighlightManager } from './highlight';
- import { PortManager } from '../model/port';
- export declare namespace Options {
- interface Common {
- container: HTMLElement;
- model?: Model;
- x: number;
- y: number;
- width: number;
- height: number;
- autoResize?: boolean | Element | Document;
- background?: false | BackgroundManager.Options;
- scaling: {
- min?: number;
- max?: number;
- };
- moveThreshold: number;
- clickThreshold: number;
- magnetThreshold: number | 'onleave';
- preventDefaultDblClick: boolean;
- preventDefaultContextMenu: boolean | ((this: Graph, { view }: {
- view: CellView | null;
- }) => boolean);
- preventDefaultMouseDown: boolean;
- preventDefaultBlankAction: boolean;
- interacting: CellView.Interacting;
- async?: boolean;
- virtual?: boolean;
- guard: (e: Dom.EventObject, view?: CellView | null) => boolean;
- onPortRendered?: (args: OnPortRenderedArgs) => void;
- onEdgeLabelRendered?: (args: OnEdgeLabelRenderedArgs) => undefined | ((args: OnEdgeLabelRenderedArgs) => void);
- createCellView?: (this: Graph, cell: Cell) => typeof CellView | (new (...args: any[]) => CellView) | null | undefined;
- }
- export interface ManualBooleans {
- panning: boolean | Partial<PanningManager.Options>;
- mousewheel: boolean | Partial<MouseWheel.Options>;
- embedding: boolean | Partial<Embedding>;
- }
- export interface Manual extends Partial<Common>, Partial<ManualBooleans> {
- grid?: boolean | number | (Partial<GridManager.CommonOptions> & GridManager.DrawGridOptions);
- connecting?: Partial<Connecting>;
- translating?: Partial<Translating>;
- highlighting?: Partial<Highlighting>;
- }
- export interface Definition extends Common {
- grid: GridManager.Options;
- panning: PanningManager.Options;
- mousewheel: MouseWheel.Options;
- embedding: Embedding;
- connecting: Connecting;
- translating: Translating;
- highlighting: Highlighting;
- }
- export {};
- }
- export declare namespace Options {
- type OptionItem<T, S> = S | ((this: Graph, arg: T) => S);
- type NodeAnchorOptions = string | NodeAnchor.NativeItem | NodeAnchor.ManaualItem;
- type EdgeAnchorOptions = string | EdgeAnchor.NativeItem | EdgeAnchor.ManaualItem;
- type ConnectionPointOptions = string | ConnectionPoint.NativeItem | ConnectionPoint.ManaualItem;
- export interface Connecting {
- /**
- * Snap edge to the closest node/port in the given radius on dragging.
- */
- snap: boolean | {
- radius: number;
- anchor?: 'center' | 'bbox';
- };
- /**
- * Specify whether connect to point on the graph is allowed.
- */
- allowBlank: boolean | ((this: Graph, args: ValidateConnectionArgs) => boolean);
- /**
- * When set to `false`, edges can not be connected to the same node,
- * meaning the source and target of the edge can not be the same node.
- */
- allowLoop: boolean | ((this: Graph, args: ValidateConnectionArgs) => boolean);
- /**
- * Specify whether connect to node(not the port on the node) is allowed.
- */
- allowNode: boolean | ((this: Graph, args: ValidateConnectionArgs) => boolean);
- /**
- * Specify whether connect to edge is allowed.
- */
- allowEdge: boolean | ((this: Graph, args: ValidateConnectionArgs) => boolean);
- /**
- * Specify whether connect to port is allowed.
- */
- allowPort: boolean | ((this: Graph, args: ValidateConnectionArgs) => boolean);
- /**
- * Specify whether more than one edge connected to the same source and
- * target node is allowed.
- */
- allowMulti: boolean | 'withPort' | ((this: Graph, args: ValidateConnectionArgs) => boolean);
- /**
- * Highlights all the available magnets or nodes when a edge is
- * dragging(reconnecting). This gives a hint to the user to what
- * other nodes/ports this edge can be connected. What magnets/cells
- * are available is determined by the `validateConnection` function.
- */
- highlight: boolean;
- anchor: NodeAnchorOptions;
- sourceAnchor?: NodeAnchorOptions;
- targetAnchor?: NodeAnchorOptions;
- edgeAnchor: EdgeAnchorOptions;
- sourceEdgeAnchor?: EdgeAnchorOptions;
- targetEdgeAnchor?: EdgeAnchorOptions;
- connectionPoint: ConnectionPointOptions;
- sourceConnectionPoint?: ConnectionPointOptions;
- targetConnectionPoint?: ConnectionPointOptions;
- router: string | Router.NativeItem | Router.ManaualItem;
- connector: string | Connector.NativeItem | Connector.ManaualItem;
- createEdge?: (this: Graph, args: {
- sourceCell: Cell;
- sourceView: CellView;
- sourceMagnet: Element;
- }) => Nilable<Edge> | void;
- /**
- * Check whether to add a new edge to the graph when user clicks
- * on an a magnet.
- */
- validateMagnet?: (this: Graph, args: {
- cell: Cell;
- view: CellView;
- magnet: Element;
- e: Dom.MouseDownEvent | Dom.MouseEnterEvent;
- }) => boolean;
- /**
- * Custom validation on stop draggin the edge arrowhead(source/target).
- * If the function returns `false`, the edge is either removed(edges
- * which are created during the interaction) or reverted to the state
- * before the interaction.
- */
- validateEdge?: (this: Graph, args: {
- edge: Edge;
- type: Edge.TerminalType;
- previous: Edge.TerminalData;
- }) => boolean;
- /**
- * Check whether to allow or disallow the edge connection while an
- * arrowhead end (source/target) being changed.
- */
- validateConnection: (this: Graph, args: ValidateConnectionArgs) => boolean;
- }
- export interface ValidateConnectionArgs {
- type?: Edge.TerminalType | null;
- edge?: Edge | null;
- edgeView?: EdgeView | null;
- sourceCell?: Cell | null;
- targetCell?: Cell | null;
- sourceView?: CellView | null;
- targetView?: CellView | null;
- sourcePort?: string | null;
- targetPort?: string | null;
- sourceMagnet?: Element | null;
- targetMagnet?: Element | null;
- }
- export interface Translating {
- /**
- * Restrict the translation (movement) of nodes by a given bounding box.
- * If set to `true`, the user will not be able to move nodes outside the
- * boundary of the graph area.
- */
- restrict: boolean | OptionItem<CellView | null, Rectangle.RectangleLike | number | null>;
- }
- export interface Embedding {
- enabled?: boolean;
- /**
- * Determines the way how a cell finds a suitable parent when it's dragged
- * over the graph. The cell with the highest z-index (visually on the top)
- * will be chosen.
- */
- findParent?: 'bbox' | 'center' | 'topLeft' | 'topRight' | 'bottomLeft' | 'bottomRight' | ((this: Graph, args: {
- node: Node;
- view: NodeView;
- }) => Cell[]);
- /**
- * If enabled only the node on the very front is taken into account for the
- * embedding. If disabled the nodes under the dragged view are tested one by
- * one (from front to back) until a valid parent found.
- */
- frontOnly?: boolean;
- /**
- * Check whether to allow or disallow the node embedding while it's being
- * translated. By default, all nodes can be embedded into all other nodes.
- */
- validate: (this: Graph, args: {
- child: Node;
- parent: Node;
- childView: CellView;
- parentView: CellView;
- }) => boolean;
- }
- /**
- * Configure which highlighter to use (and with which options) for
- * each type of interaction.
- */
- export interface Highlighting {
- /**
- * The default highlighter to use (and options) when none is specified
- */
- default: HighlightManager.Options;
- /**
- * When a cell is dragged over another cell in embedding mode.
- */
- embedding?: HighlightManager.Options | null;
- /**
- * When showing all nodes to which a valid connection can be made.
- */
- nodeAvailable?: HighlightManager.Options | null;
- /**
- * When showing all magnets to which a valid connection can be made.
- */
- magnetAvailable?: HighlightManager.Options | null;
- /**
- * When a valid edge connection can be made to an node.
- */
- magnetAdsorbed?: HighlightManager.Options | null;
- }
- export {};
- }
- export declare namespace Options {
- function get(options: Partial<Manual>): Definition;
- }
- export declare namespace Options {
- interface OnPortRenderedArgs {
- node: Node;
- port: PortManager.Port;
- container: Element;
- selectors?: Markup.Selectors;
- labelContainer?: Element;
- labelSelectors?: Markup.Selectors | null;
- contentContainer: Element;
- contentSelectors?: Markup.Selectors;
- }
- interface OnEdgeLabelRenderedArgs {
- edge: Edge;
- label: Edge.Label;
- container: Element;
- selectors: Markup.Selectors;
- }
- }
- export declare namespace Options {
- const defaults: Partial<Definition>;
- }
|