/** * @fileoverview Dagre布局插件 - 提供自动化图形布局功能 * * 本插件基于dagre.js实现LogicFlow的自动化布局功能,支持多种布局方向 * 可自动计算节点位置和连线路径,实现整洁的图形展示 */ import LogicFlow, { BaseNodeModel, BaseEdgeModel } from '@logicflow/core'; import { GraphLabel } from 'dagre'; type BaseNodeData = { x: number; y: number; width: number; height: number; }; /** * Dagre布局配置选项接口 * @interface DagreOption * @extends GraphLabel - 继承dagre原生配置 */ export interface DagreOption extends GraphLabel { /** * 是否是默认锚点 * true: 会根据布局方向自动计算边的路径点 */ isDefaultAnchor?: boolean; } /** * Dagre插件接口定义 */ export interface DagrePlugin { /** * 执行布局计算 * @param option - 布局配置选项 */ layout(option: DagreOption): void; } /** * Dagre布局类 - LogicFlow自动布局插件 * 基于dagre.js提供图的自动布局能力 */ export declare class Dagre { /** 插件名称,用于在LogicFlow中注册 */ static pluginName: string; /** LogicFlow实例引用 */ lf: LogicFlow; /** 当前布局配置 */ option: DagreOption; /** * 插件初始化方法,由LogicFlow自动调用 * @param lf - LogicFlow实例 */ render(lf: LogicFlow): void; /** * 执行布局算法,重新排列图中的节点和边 * @param option - 布局配置选项 */ layout(option?: DagreOption): void; /** * 使用 Dagre 布局 * @param nodes - 节点数据 * @param edges - 边数据 */ applyDagreLayout(nodes: BaseNodeModel[], edges: BaseEdgeModel[]): void; convertLayoutDataToLf(nodes: BaseNodeModel[], edges: BaseEdgeModel[], layoutData: { node: (id: string) => BaseNodeData; }): { nodes: LogicFlow.NodeConfig[]; edges: LogicFlow.EdgeConfig[]; }; } export {};