import * as algorithms from '@antv/algorithm'; import EventEmitter3 from 'eventemitter3'; import { InterpreterFrom } from 'xstate'; import { Viewport } from '../extensions'; import { GraphStoreContext, createGraphStore } from '../store'; import { EVENT_NAME, EdgeData, ElementIdentifier, EventInfo, GraphCoreOptions, GraphEvent, GraphEventType, GraphHooks, GraphOptions, LayoutConfig, NodeData } from '../types'; import type { Renderer } from '../types/renderer'; import { Edge } from './edge'; import { Node } from './node'; import type { Plugin } from './plugin'; import { Stack } from './stack'; export declare type GraphOptionsHasDefaultValue = Pick, 'elementsSelectable' | 'animate' | 'animateOptions'> & { animateOptions: { duration: number; }; }; export declare class Graph extends EventEmitter3 { /** * 图算法 */ static Algorithms: typeof algorithms; /** * 状态机 */ service: InterpreterFrom>; /** * 是否已销毁,在异步任务中可以避免被调用 */ destroyed: boolean; /** * 插件集 */ plugins: Map; /** * 事件 */ events: GraphOptions['events']; /** * 视口 */ viewport: Viewport; /** * 栈 */ stack: Stack; /** * 节点拖拽插件 */ dragNodeExtension: Plugin; /** * 渲染器协议 * * 为了兼容不同的渲染器,提供了一个接口,用于渲染器协议。 * 在处理和渲染层相关的逻辑时,可以通过渲染器协议来获取DOM。 * 例如计算包围盒。 */ renderer: Renderer; constructor(options: GraphOptions, layoutContext: Pick); /** * 图类型 */ get graphType(): "normal" | "tree"; /** * 原始数据 */ get data(): import("../types").NormalGraphData | import("../types").TreeNodeData; /** * 节点列表 */ get nodes(): N[]; /** * 边列表 */ get edges(): E[]; /** * 节点集合 */ get nodeMap(): { [key: string]: Node; }; /** * 边集合 */ get edgeMap(): { [key: string]: Edge; }; /** * 节点位置 */ get positions(): Record; /** * 画布宽度 */ get width(): number; /** * 画布高度 */ get height(): number; /** * 偏移量 */ get transform(): [number, number, number]; /** * 布局配置 */ get layoutConfig(): LayoutConfig; /** * 动画开关 */ get animate(): boolean; /** * 动画配置 */ get animateOptions(): Required<{ duration?: number | undefined; }>; /** * 默认节点配置 */ get defaultNode(): import("../types").NodeConfig | undefined; /** * 默认边配置 */ get defaultEdge(): import("../types").EdgeConfig | undefined; /** * 是否在布局中 */ get isInLayout(): boolean; /** * 获取布局类型 */ get layoutType(): "force" | "gForce" | "gForce-gpu" | "grid" | "random" | "radial" | "circular" | "concentric" | "dagre" | "fruchterman" | "fruchterman-gpu" | "mds" | "forceAtlas2" | import("../types").TreeGraphLayoutType; /** * 挂载渲染器 * * @param renderer */ mountRenderer(renderer: Renderer): void; /** * 装载插件 */ usePlugin: (plugin: Plugin) => void; /** * 更新画布位置 */ updateTransform: (transform: [number, number, number]) => void; /** * 更新画布大小 */ changeSize: (width?: number | undefined, height?: number | undefined, emitEvent?: boolean) => void; /** * 启用动画 */ enableAnimate: () => void; /** * 禁用动画 */ disableAnimate: () => void; /** * 变更动画配置 * * @param animateOptions */ changeAnimateOptions: (animateOptions: GraphCoreOptions['animateOptions']) => void; /** * 变更最小缩放比例 * * @param minZoom */ changeMinZoom: (minZoom: number) => void; /** * 变更最大缩放比例 * * @param maxZoom */ changeMaxZoom: (maxZoom: number) => void; /** * 变更画布最大移动范围 * * @param translateExtent */ changeTranslateExtent: (translateExtent: [[number, number], [number, number]]) => void; /** * 启用自适应 */ enableFitView: () => void; /** * 禁用自适应 */ disableFitView: () => void; /** * 变更自适应间距比例 * * @param fitViewPadding */ updateFitViewPadding: (fitViewPadding: [number, number]) => void; /** * 启用自动居中 */ enableFitCenter: () => void; /** * 禁用自动居中 */ disableFitCenter: () => void; /** * 启用缩放 */ enableZoom: () => void; /** * 禁用自动居中 */ disableZoom: () => void; /** * 启用节点拖拽 */ enableNodeDraggable: () => void; /** * 禁用节点拖拽 */ disableNodeDraggable: () => void; /** * 启用元素选中 */ enableElementSelectable: () => void; /** * 禁用元素选中 */ disableElementSelectable: () => void; /** * 以当前配置执行布局 */ layout: () => void; /** * 更新布局 */ updateLayout: (layoutConfig: LayoutConfig) => void; /** * 派发事件 */ emit: (name: EVENT_NAME, { type, composeEventName, ...rest }?: EventInfo) => boolean; /** * 派发元素事件 * * @param name 基础事件,例如 drag, click * @param event */ emitElementEvent: (name: EVENT_NAME, event: Event) => void; /** * 检测事件元素 */ detectElementEvent: (event: Event, eventName: EVENT_NAME) => { type: GraphEventType; item: N; name: EVENT_NAME; originalEvent: Event; } | { type: GraphEventType; item: E; name: EVENT_NAME; originalEvent: Event; } | { type: GraphEventType; name: EVENT_NAME; originalEvent: Event; item?: undefined; } | { name: EVENT_NAME; originalEvent: Event; type?: undefined; item?: undefined; } | undefined; /** * 获取当前的缩放比例 */ getZoom: () => number; /** * 缩放到指定比例,并以指定位置为中心 */ zoomTo: (zoom: number, center: { x: number; y: number; }, actionOptions?: Required | undefined) => void; /** * 放大 */ zoomIn: (params_0?: Required | undefined) => void; /** * 缩小 */ zoomOut: (params_0?: Required | undefined) => void; /** * 根据配置居中或自适应 */ fitViewport: (actionOptions?: import("../extensions").ActionOptions | undefined) => void; /** * 自适应 */ fitView(...params: Parameters): void; /** * 居中 不缩放 */ fitCenter: (actionOptions?: import("../extensions").ActionOptions | undefined) => void; /** * 聚焦节点 * @param params */ focusNode: (nodeId?: string | undefined, actionOptions?: Required | undefined) => void; /** * 切换全屏 * @param params */ toggleFullScreen: () => void; /** * 导出图片 * @param type * @param name */ exportImage: (type: 'png' | 'svg' | 'jpeg', name?: string, padding?: number) => Promise; /** * 获取图中所有节点的实例 */ getNodes: () => N[]; /** * 获取图中所有边的实例 */ getEdges: () => E[]; /** * 根据具体规则查找单个节点 * * @param predicate */ findNodeBy: (predicate: (node: Node) => boolean) => N_1 | undefined; /** * 获取节点 */ findNodeById: (id: Node['id']) => N_1 | undefined; /** * 获取边 */ findEdgeById: (id: Edge['id']) => E_1 | undefined; /** * 导出数据 */ exportData: () => { nodes: N[]; edges: E[]; }; /** * 更新配置 */ updateConfigure: (configure: Partial) => void; /** * 销毁实例 */ destroy(): void; /** * 更新节点 */ updateNode(nodeOrNodeId: ElementIdentifier | Node, nodeData: NodeData): void; /** * 更新边 */ updateEdge(edgeOrEdgeId: ElementIdentifier | Edge, edgeData: EdgeData): void; /** * 设置节点集合状态 * * @param state * @param ids * @param enable */ setNodesState: (state: string, ids?: string[] | undefined, enable?: boolean | undefined) => void; /** * 设置边集合状态 * * @param state * @param ids * @param enable */ setEdgesState: (state: string, ids?: string[] | undefined, enable?: boolean | undefined) => void; /** * 清除所有节点指定状态 * * @param states */ clearNodesStates: (states?: string | string[] | undefined, ids?: string[] | undefined) => void; /** * 清除所有边指定状态 * * @param states */ clearEdgesStates: (states?: string | string[] | undefined, ids?: string[] | undefined) => void; /** * 挂载事件 */ protected applyGraphHooks: (hooks: GraphHooks) => void; /** * 获取默认配置 */ protected getDefaultOptions: () => GraphOptionsHasDefaultValue; /** * 获取合并后的配置 * * @param options */ protected getComputedOptions: (options: GraphOptions) => GraphOptions & Pick, "animate" | "animateOptions" | "elementsSelectable"> & { animateOptions: { duration: number; }; }; /** * 初始化插件 * */ protected initPlugin: (plugins?: GraphOptions['plugins'], builtin?: GraphOptions['plugins']) => void; /** * 初始化事件 */ protected initEvents: () => void; /** * 配置单击事件 * */ protected setupEvents: () => void; /** * 生成内置 Event * @protected * @param payload */ protected makeEvent: (payload: Omit) => GraphEvent; } //# sourceMappingURL=graph.d.ts.map