UNPKG

@antv/x6

Version:

JavaScript diagramming library that uses SVG and HTML for rendering

45 lines (44 loc) 1.74 kB
import type { KeyValue } from '../../common'; import type { Point } from '../../geometry'; import type { TerminalType } from '../../model'; import type { EdgeView, NodeView } from '../../view'; import { Registry } from '../registry'; import * as anchors from './main'; import type { PointLike } from '../../types'; export type NodeAnchorDefinition<T> = (this: EdgeView, /** * The NodeView to which we are connecting. */ nodeView: NodeView, /** * The SVGElement in our graph that contains the magnet * (element/subelement/port) to which we are connecting. */ magnet: SVGElement, /** * A reference to another component of the edge path that may be * necessary to find this anchor point. If we are calling this method * for a source anchor, it is the first vertex, or if there are no * vertices the target anchor. If we are calling this method for a target * anchor, it is the last vertex, or if there are no vertices the source * anchor... */ ref: Point | PointLike | SVGElement, args: T, type: TerminalType) => Point; type CommonDefinition = NodeAnchorDefinition<KeyValue>; export type NodeAnchorResolvedDefinition<T> = (this: EdgeView, view: NodeView, magnet: SVGElement, refPoint: Point, args: T) => Point; type Presets = typeof presets; type OptionsMap = { readonly [K in keyof Presets]-?: Parameters<Presets[K]>[3]; }; type NativeNames = keyof Presets; export interface NodeAnchorNativeItem<T extends NativeNames = NativeNames> { name: T; args?: OptionsMap[T]; } export interface NodeAnchorManualItem { name: Exclude<string, NativeNames>; args?: KeyValue; } declare const presets: typeof anchors; export declare const nodeAnchorRegistry: Registry<CommonDefinition, typeof anchors, never>; export {};