@antv/x6
Version:
JavaScript diagramming library that uses SVG and HTML for rendering.
280 lines (279 loc) • 12.6 kB
TypeScript
import { Size, KeyValue } from '../types';
import { Point, Polyline } from '../geometry';
import { Registry, Attr, Router, Connector, EdgeAnchor, NodeAnchor, ConnectionPoint, ConnectionStrategy } from '../registry';
import { Markup } from '../view/markup';
import { Store } from './store';
import { Cell } from './cell';
import { Node } from './node';
export declare class Edge<Properties extends Edge.Properties = Edge.Properties> extends Cell<Properties> {
protected static defaults: Edge.Defaults;
protected readonly store: Store<Edge.Properties>;
protected get [Symbol.toStringTag](): string;
constructor(metadata?: Edge.Metadata);
protected preprocess(metadata: Edge.Metadata, ignoreIdCheck?: boolean): Properties;
protected setup(): void;
isEdge(): this is Edge;
disconnect(options?: Edge.SetOptions): this;
get source(): Edge.TerminalData;
set source(data: Edge.TerminalData);
getSource(): Edge.TerminalData;
getSourceCellId(): string;
getSourcePortId(): string | undefined;
setSource(node: Node, args?: Edge.SetCellTerminalArgs, options?: Edge.SetOptions): this;
setSource(edge: Edge, args?: Edge.SetEdgeTerminalArgs, options?: Edge.SetOptions): this;
setSource(point: Point | Point.PointLike, args?: Edge.SetTerminalCommonArgs, options?: Edge.SetOptions): this;
setSource(args: Edge.TerminalData, options?: Edge.SetOptions): this;
get target(): Edge.TerminalData;
set target(data: Edge.TerminalData);
getTarget(): Edge.TerminalData;
getTargetCellId(): string;
getTargetPortId(): string | undefined;
setTarget(edge: Node, args?: Edge.SetCellTerminalArgs, options?: Edge.SetOptions): this;
setTarget(edge: Edge, args?: Edge.SetEdgeTerminalArgs, options?: Edge.SetOptions): this;
setTarget(point: Point | Point.PointLike, args?: Edge.SetTerminalCommonArgs, options?: Edge.SetOptions): this;
setTarget(args: Edge.TerminalData, options?: Edge.SetOptions): this;
getTerminal(type: Edge.TerminalType): Edge.TerminalData;
setTerminal(type: Edge.TerminalType, terminal: Node | Edge | Point | Point.PointLike | Edge.TerminalData, args?: Edge.SetTerminalCommonArgs | Edge.SetOptions, options?: Edge.SetOptions): this;
getSourcePoint(): Point;
getTargetPoint(): Point;
protected getTerminalPoint(type: Edge.TerminalType): Point;
getSourceCell(): Cell<Cell.Properties> | null;
getTargetCell(): Cell<Cell.Properties> | null;
protected getTerminalCell(type: Edge.TerminalType): Cell<Cell.Properties> | null;
getSourceNode(): Node<Node.Properties> | null;
getTargetNode(): Node<Node.Properties> | null;
protected getTerminalNode(type: Edge.TerminalType): Node | null;
get router(): Edge.RouterData | undefined;
set router(data: Edge.RouterData | undefined);
getRouter(): Edge.RouterData;
setRouter(name: string, args?: KeyValue, options?: Edge.SetOptions): this;
setRouter(router: Edge.RouterData, options?: Edge.SetOptions): this;
removeRouter(options?: Edge.SetOptions): this;
get connector(): Edge.ConnectorData | undefined;
set connector(data: Edge.ConnectorData | undefined);
getConnector(): any;
setConnector(name: string, args?: KeyValue, options?: Edge.SetOptions): this;
setConnector(connector: Edge.ConnectorData, options?: Edge.SetOptions): this;
removeConnector(options?: Edge.SetOptions): Store<Edge.Properties>;
get strategy(): Edge.StrategyData | undefined;
set strategy(data: Edge.StrategyData | undefined);
getStrategy(): any;
setStrategy(name: string, args?: KeyValue, options?: Edge.SetOptions): this;
setStrategy(strategy: Edge.StrategyData, options?: Edge.SetOptions): this;
removeStrategy(options?: Edge.SetOptions): Store<Edge.Properties>;
getDefaultLabel(): Edge.Label;
get labels(): Edge.Label[];
set labels(labels: Edge.Label[]);
getLabels(): Edge.Label[];
setLabels(labels: Edge.Label | Edge.Label[] | string | string[], options?: Edge.SetOptions): this;
insertLabel(label: Edge.Label | string, index?: number, options?: Edge.SetOptions): this;
appendLabel(label: Edge.Label | string, options?: Edge.SetOptions): this;
getLabelAt(index: number): Edge.Label | null;
setLabelAt(index: number, label: Edge.Label | string, options?: Edge.SetOptions): this;
removeLabelAt(index: number, options?: Edge.SetOptions): Edge.Label | null;
protected parseLabel(label: string | Edge.Label): Edge.Label;
protected onLabelsChanged({ previous, current, }: Cell.ChangeArgs<Edge.Label[]>): void;
get vertexMarkup(): Markup;
set vertexMarkup(markup: Markup);
getDefaultVertexMarkup(): any;
getVertexMarkup(): any;
setVertexMarkup(markup?: Markup, options?: Edge.SetOptions): this;
get vertices(): Point.PointLike | Point.PointLike[];
set vertices(vertices: Point.PointLike | Point.PointLike[]);
getVertices(): any[];
setVertices(vertices: Point.PointLike | Point.PointLike[], options?: Edge.SetOptions): this;
insertVertex(vertice: Point.PointLike, index?: number, options?: Edge.SetOptions): this;
appendVertex(vertex: Point.PointLike, options?: Edge.SetOptions): this;
getVertexAt(index: number): any;
setVertexAt(index: number, vertice: Point.PointLike, options?: Edge.SetOptions): this;
removeVertexAt(index: number, options?: Edge.SetOptions): this;
protected onVertexsChanged({ previous, current, }: Cell.ChangeArgs<Point.PointLike[]>): void;
getDefaultMarkup(): any;
getMarkup(): any;
get toolMarkup(): Markup;
set toolMarkup(markup: Markup);
getDefaultToolMarkup(): any;
getToolMarkup(): any;
setToolMarkup(markup?: Markup, options?: Edge.SetOptions): this;
get doubleToolMarkup(): Markup | undefined;
set doubleToolMarkup(markup: Markup | undefined);
getDefaultDoubleToolMarkup(): any;
getDoubleToolMarkup(): any;
setDoubleToolMarkup(markup?: Markup, options?: Edge.SetOptions): this;
get arrowheadMarkup(): Markup;
set arrowheadMarkup(markup: Markup);
getDefaultArrowheadMarkup(): any;
getArrowheadMarkup(): any;
setArrowheadMarkup(markup?: Markup, options?: Edge.SetOptions): this;
/**
* Translate the edge vertices (and source and target if they are points)
* by `tx` pixels in the x-axis and `ty` pixels in the y-axis.
*/
translate(tx: number, ty: number, options?: Cell.TranslateOptions): this;
/**
* Scales the edge's points (vertices) relative to the given origin.
*/
scale(sx: number, sy: number, origin?: Point | Point.PointLike, options?: Edge.SetOptions): this;
protected applyToPoints(worker: (p: Point.PointLike) => Point.PointLike, options?: Edge.SetOptions): this;
getBBox(): import("../geometry").Rectangle;
getConnectionPoint(): Point;
getPolyline(): Polyline;
updateParent(options?: Edge.SetOptions): Cell<Cell.Properties> | null;
hasLoop(options?: {
deep?: boolean;
}): boolean;
getFragmentAncestor(): Cell | null;
isFragmentDescendantOf(cell: Cell): boolean;
}
export declare namespace Edge {
type RouterData = Router.NativeItem | Router.ManaualItem;
type ConnectorData = Connector.NativeItem | Connector.ManaualItem;
type StrategyData = ConnectionStrategy.NativeItem | ConnectionStrategy.ManaualItem;
}
export declare namespace Edge {
interface Common extends Cell.Common {
source?: TerminalData;
target?: TerminalData;
router?: RouterData;
connector?: ConnectorData;
strategy?: StrategyData;
labels?: Label[] | string[];
defaultLabel?: Label;
vertices?: (Point.PointLike | Point.PointData)[];
toolMarkup?: Markup;
doubleToolMarkup?: Markup;
vertexMarkup?: Markup;
arrowheadMarkup?: Markup;
defaultMarkup?: Markup;
defaultToolMarkup?: Markup;
defaultDoubleToolMarkup?: Markup;
defaultVertexMarkup?: Markup;
defaultArrowheadMarkup?: Markup;
}
interface TerminalOptions {
sourceCell?: Cell | string;
sourcePort?: string;
sourcePoint?: Point.PointLike | Point.PointData;
targetCell?: Cell | string;
targetPort?: string;
targetPoint?: Point.PointLike | Point.PointData;
source?: string | Cell | Point.PointLike | Point.PointData | TerminalPointData | TerminalCellLooseData;
target?: string | Cell | Point.PointLike | Point.PointData | TerminalPointData | TerminalCellLooseData;
}
export interface BaseOptions extends Common, Cell.Metadata {
}
export interface Metadata extends Omit<BaseOptions, TerminalType>, TerminalOptions {
}
export interface Defaults extends Common, Cell.Defaults {
}
export interface Properties extends Cell.Properties, Omit<BaseOptions, 'tools'> {
}
export interface Config extends Omit<Defaults, TerminalType>, TerminalOptions, Cell.Config<Metadata, Edge> {
}
export {};
}
export declare namespace Edge {
interface SetOptions extends Cell.SetOptions {
}
type TerminalType = 'source' | 'target';
interface SetTerminalCommonArgs {
selector?: string;
magnet?: string;
connectionPoint?: string | ConnectionPoint.NativeItem | ConnectionPoint.ManaualItem;
}
interface SetCellTerminalArgs extends SetTerminalCommonArgs {
port?: string;
priority?: boolean;
anchor?: string | NodeAnchor.NativeItem | NodeAnchor.ManaualItem;
}
interface SetEdgeTerminalArgs extends SetTerminalCommonArgs {
anchor?: string | EdgeAnchor.NativeItem | EdgeAnchor.ManaualItem;
}
interface TerminalPointData extends SetTerminalCommonArgs, Point.PointLike {
}
interface TerminalCellData extends SetCellTerminalArgs {
cell: string;
port?: string;
}
interface TerminalCellLooseData extends SetCellTerminalArgs {
cell: string | Cell;
port?: string;
}
type TerminalData = TerminalPointData | TerminalCellData;
function equalTerminals(a: TerminalData, b: TerminalData): boolean;
}
export declare namespace Edge {
interface Label extends KeyValue {
markup?: Markup;
attrs?: Attr.CellAttrs;
/**
* If the distance is in the `[0,1]` range (inclusive), then the position
* of the label is defined as a percentage of the total length of the edge
* (the normalized length). For example, passing the number `0.5` positions
* the label to the middle of the edge.
*
* If the distance is larger than `1` (exclusive), the label will be
* positioned distance pixels away from the beginning of the path along
* the edge.
*
* If the distance is a negative number, the label will be positioned
* distance pixels away from the end of the path along the edge.
*/
position?: LabelPosition;
size?: Size;
}
interface LabelPositionOptions {
/**
* Forces absolute coordinates for distance.
*/
absoluteDistance?: boolean;
/**
* Forces reverse absolute coordinates (if absoluteDistance = true)
*/
reverseDistance?: boolean;
/**
* Forces absolute coordinates for offset.
*/
absoluteOffset?: boolean;
/**
* Auto-adjusts the angle of the label to match path gradient at position.
*/
keepGradient?: boolean;
/**
* Whether rotates labels so they are never upside-down.
*/
ensureLegibility?: boolean;
}
interface LabelPositionObject {
distance: number;
offset?: number | {
x?: number;
y?: number;
};
angle?: number;
options?: LabelPositionOptions;
}
type LabelPosition = number | LabelPositionObject;
const defaultLabel: Label;
function parseStringLabel(text: string): Label;
}
export declare namespace Edge {
const toStringTag: string;
function isEdge(instance: any): instance is Edge;
}
export declare namespace Edge {
const registry: Registry<Definition, never, Config & {
inherit?: string | Definition | undefined;
}>;
}
export declare namespace Edge {
type EdgeClass = typeof Edge;
export interface Definition extends EdgeClass {
new <T extends Properties = Properties>(metadata: T): Edge;
}
export function define(config: Config): Definition;
export function create(options: Metadata): Edge<Properties>;
export {};
}
export declare namespace Edge {
}