UNPKG

@antv/x6

Version:

JavaScript diagramming library that uses SVG and HTML for rendering.

217 lines (216 loc) 10.5 kB
/// <reference types="jquery" /> import { Nilable, KeyValue } from '../types'; import { Rectangle } from '../geometry'; import { Dom } from '../util'; import { Attr } from '../registry/attr'; import { Registry } from '../registry/registry'; import { Cell } from '../model/cell'; import { Edge } from '../model/edge'; import { Model } from '../model/model'; import { Graph } from '../graph/graph'; import { View } from './view'; import { Cache } from './cache'; import { Markup } from './markup'; import { EdgeView } from './edge'; import { NodeView } from './node'; import { ToolsView } from './tool'; import { AttrManager } from './attr'; import { FlagManager } from './flag'; export declare class CellView<Entity extends Cell = Cell, Options extends CellView.Options = CellView.Options> extends View<CellView.EventArgs> { protected static defaults: Partial<CellView.Options>; static getDefaults(): Partial<CellView.Options>; static config<T extends CellView.Options = CellView.Options>(options: Partial<T>): void; static getOptions<T extends CellView.Options = CellView.Options>(options: Partial<T>): T; graph: Graph; cell: Entity; protected selectors: Markup.Selectors; protected readonly options: Options; protected readonly flag: FlagManager; protected readonly attr: AttrManager; protected readonly cache: Cache; scalableNode: Element | null; rotatableNode: Element | null; protected get [Symbol.toStringTag](): string; constructor(cell: Entity, options?: Partial<Options>); protected init(): void; protected onRemove(): void; get priority(): number; protected get rootSelector(): string; protected getConstructor<T extends CellView.Definition>(): T; protected ensureOptions(options: Partial<Options>): Options; protected getContainerTagName(): string; protected getContainerStyle(): Nilable<JQuery.PlainObject<string | number>> | void; protected getContainerAttrs(): Nilable<Attr.SimpleAttrs>; protected getContainerClassName(): Nilable<string | string[]>; protected ensureContainer(): HTMLElement | SVGElement; protected setContainer(container: Element): this; isNodeView(): this is NodeView; isEdgeView(): this is EdgeView; render(): this; confirmUpdate(flag: number, options?: any): number; getBootstrapFlag(): number; getFlag(actions: FlagManager.Actions): number; hasAction(flag: number, actions: FlagManager.Actions): number; removeAction(flag: number, actions: FlagManager.Actions): number; handleAction(flag: number, action: FlagManager.Action, handle: () => void, additionalRemovedActions?: FlagManager.Actions | null): number; protected setup(): void; protected onAttrsChange(options: Cell.MutateOptions): void; parseJSONMarkup(markup: Markup.JSONMarkup | Markup.JSONMarkup[], rootElem?: Element): Markup.ParseResult; can(feature: CellView.InteractionNames): boolean; cleanCache(): this; getCache(elem: Element): Cache.Item; getDataOfElement(elem: Element): import("../util").JSONObject; getMatrixOfElement(elem: Element): DOMMatrix; getShapeOfElement(elem: SVGElement): import("../geometry").Polyline | Rectangle | import("../geometry").Line | import("../geometry").Path | import("../geometry").Ellipse; getScaleOfElement(node: Element, scalableNode?: SVGElement): { sx: number; sy: number; }; getBoundingRectOfElement(elem: Element): Rectangle; getBBoxOfElement(elem: Element): Rectangle; getUnrotatedBBoxOfElement(elem: SVGElement): Rectangle; getBBox(options?: { useCellGeometry?: boolean; }): Rectangle; getRootTranslatedMatrix(): DOMMatrix; getRootRotatedMatrix(): DOMMatrix; findMagnet(elem?: Element): Element | null; updateAttrs(rootNode: Element, attrs: Attr.CellAttrs, options?: Partial<AttrManager.UpdateOptions>): void; isEdgeElement(magnet?: Element | null): boolean; protected prepareHighlight(elem?: Element | null, options?: CellView.HighlightOptions): any; highlight(elem?: Element | null, options?: CellView.HighlightOptions): this; unhighlight(elem?: Element | null, options?: CellView.HighlightOptions): this; notifyUnhighlight(magnet: Element, options: CellView.HighlightOptions): void; getEdgeTerminal(magnet: Element, x: number, y: number, edge: Edge, type: Edge.TerminalType): Edge.TerminalCellData; protected customizeEdgeTerminal(terminal: Edge.TerminalCellData, magnet: Element, x: number, y: number, edge: Edge, type: Edge.TerminalType): Edge.TerminalCellData; getMagnetFromEdgeTerminal(terminal: Edge.TerminalData): any; animate(elem: SVGElement | string, options: Dom.AnimationOptions): () => any; animateTransform(elem: SVGElement | string, options: Dom.AnimationOptions): () => any; protected tools: ToolsView | null; hasTools(name?: string): boolean; addTools(options: ToolsView.Options | null): this; addTools(tools: ToolsView | null): this; updateTools(options?: ToolsView.UpdateOptions): this; removeTools(): this; hideTools(): this; showTools(): this; protected renderTools(): this; notify<Key extends keyof CellView.EventArgs>(name: Key, args: CellView.EventArgs[Key]): this; notify(name: Exclude<string, keyof CellView.EventArgs>, args: any): this; protected getEventArgs<E>(e: E): CellView.MouseEventArgs<E>; protected getEventArgs<E>(e: E, x: number, y: number): CellView.MousePositionEventArgs<E>; onClick(e: JQuery.ClickEvent, x: number, y: number): void; onDblClick(e: JQuery.DoubleClickEvent, x: number, y: number): void; onContextMenu(e: JQuery.ContextMenuEvent, x: number, y: number): void; protected cachedModelForMouseEvent: Model | null; onMouseDown(e: JQuery.MouseDownEvent, x: number, y: number): void; onMouseUp(e: JQuery.MouseUpEvent, x: number, y: number): void; onMouseMove(e: JQuery.MouseMoveEvent, x: number, y: number): void; onMouseOver(e: JQuery.MouseOverEvent): void; onMouseOut(e: JQuery.MouseOutEvent): void; onMouseEnter(e: JQuery.MouseEnterEvent): void; onMouseLeave(e: JQuery.MouseLeaveEvent): void; onMouseWheel(e: JQuery.TriggeredEvent, x: number, y: number, delta: number): void; onCustomEvent(e: JQuery.MouseDownEvent, name: string, x: number, y: number): void; onMagnetMouseDown(e: JQuery.MouseDownEvent, magnet: Element, x: number, y: number): void; onMagnetDblClick(e: JQuery.DoubleClickEvent, magnet: Element, x: number, y: number): void; onMagnetContextMenu(e: JQuery.ContextMenuEvent, magnet: Element, x: number, y: number): void; onLabelMouseDown(e: JQuery.MouseDownEvent, x: number, y: number): void; checkMouseleave(e: JQuery.TriggeredEvent): void; } export declare namespace CellView { export interface Options { graph: Graph; priority: number; isSvgElement: boolean; rootSelector: string; bootstrap: FlagManager.Actions; actions: KeyValue<FlagManager.Actions>; events?: View.Events | null; documentEvents?: View.Events | null; } type Interactable = boolean | ((this: Graph, cellView: CellView) => boolean); interface InteractionMap { edgeMovable?: Interactable; edgeLabelMovable?: Interactable; arrowheadMovable?: Interactable; vertexMovable?: Interactable; vertexAddable?: Interactable; vertexDeletable?: Interactable; useEdgeTools?: Interactable; nodeMovable?: Interactable; magnetConnectable?: Interactable; stopDelegateOnDragging?: Interactable; toolsAddable?: Interactable; } export type InteractionNames = keyof InteractionMap; export type Interacting = boolean | InteractionMap | ((this: Graph, cellView: CellView) => InteractionMap | boolean); export interface HighlightOptions { highlighter?: string | { name: string; args: KeyValue; }; type?: 'embedding' | 'nodeAvailable' | 'magnetAvailable' | 'magnetAdsorbed'; partial?: boolean; } export {}; } export declare namespace CellView { interface PositionEventArgs { x: number; y: number; } interface MouseDeltaEventArgs { delta: number; } interface MouseEventArgs<E> { e: E; view: CellView; cell: Cell; } interface MousePositionEventArgs<E> extends MouseEventArgs<E>, PositionEventArgs { } interface EventArgs extends NodeView.EventArgs, EdgeView.EventArgs { 'cell:click': MousePositionEventArgs<JQuery.ClickEvent>; 'cell:dblclick': MousePositionEventArgs<JQuery.DoubleClickEvent>; 'cell:contextmenu': MousePositionEventArgs<JQuery.ContextMenuEvent>; 'cell:mousedown': MousePositionEventArgs<JQuery.MouseDownEvent>; 'cell:mousemove': MousePositionEventArgs<JQuery.MouseMoveEvent>; 'cell:mouseup': MousePositionEventArgs<JQuery.MouseUpEvent>; 'cell:mouseover': MouseEventArgs<JQuery.MouseOverEvent>; 'cell:mouseout': MouseEventArgs<JQuery.MouseOutEvent>; 'cell:mouseenter': MouseEventArgs<JQuery.MouseEnterEvent>; 'cell:mouseleave': MouseEventArgs<JQuery.MouseLeaveEvent>; 'cell:mousewheel': MousePositionEventArgs<JQuery.TriggeredEvent> & MouseDeltaEventArgs; 'cell:customevent': MousePositionEventArgs<JQuery.MouseDownEvent> & { name: string; }; 'cell:highlight': { magnet: Element; view: CellView; cell: Cell; options: CellView.HighlightOptions; }; 'cell:unhighlight': EventArgs['cell:highlight']; } } export declare namespace CellView { const Flag: typeof FlagManager; const Attr: typeof AttrManager; } export declare namespace CellView { const toStringTag: string; function isCellView(instance: any): instance is CellView; } export declare namespace CellView { function priority(value: number): (ctor: Definition) => void; function bootstrap(actions: FlagManager.Actions): (ctor: Definition) => void; } export declare namespace CellView { type CellViewClass = typeof CellView; export interface Definition extends CellViewClass { new <Entity extends Cell = Cell, Options extends CellView.Options = CellView.Options>(cell: Entity, options: Partial<Options>): CellView; } export const registry: Registry<Definition, KeyValue<Definition>, never>; export {}; }