UNPKG

@logicflow/layout

Version:
74 lines (73 loc) 2.23 kB
/** * @fileoverview Dagre布局插件 - 提供自动化图形布局功能 * * 本插件基于dagre.js实现LogicFlow的自动化布局功能,支持多种布局方向 * 可自动计算节点位置和连线路径,实现整洁的图形展示 */ import LogicFlow, { BaseEdgeModel } from '@logicflow/core'; import { GraphLabel } from 'dagre'; import NodeConfig = LogicFlow.NodeConfig; import Point = LogicFlow.Point; /** * 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; /** * 计算字符串显示宽度(用于文本定位) * @param word - 要计算的文本 * @returns 估算的文本像素宽度 */ getBytesLength(word: string): number; /** * 优化折线路径点,移除冗余点 * @param points - 原始路径点数组 * @returns 优化后的路径点数组 */ pointFilter(points: Point[]): Point[]; /** * 计算边的折线路径点 * @param model - 边模型 * @param nodes - 节点数据数组 * @returns 计算后的路径点数组,如果无法计算则返回undefined */ calcPointsList(model: BaseEdgeModel, nodes: NodeConfig[]): Point[] | undefined; }