@logicflow/layout
Version:
LogicFlow layout
74 lines (73 loc) • 2.23 kB
TypeScript
/**
* @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;
}