@logicflow/extension
Version:
LogicFlow Extensions
61 lines (60 loc) • 1.89 kB
TypeScript
import LogicFlow, { TextMode } from '@logicflow/core';
import Position = LogicFlow.Position;
import Extension = LogicFlow.Extension;
export type ILabelOptions = {
isMultiple?: boolean;
maxCount?: number;
labelWidth?: number;
textOverflowMode?: 'ellipsis' | 'wrap' | 'clip' | 'nowrap' | 'default';
};
export declare class Label implements Extension {
static pluginName: string;
lf: LogicFlow;
options: ILabelOptions;
textOverflowMode: 'ellipsis' | 'wrap' | 'clip' | 'nowrap' | 'default';
isMultiple: boolean;
labelWidth?: number;
maxCount: number;
labelInitPositionMap: Map<string, Position>;
constructor({ lf, options }: {
lf: LogicFlow;
options: ILabelOptions;
});
/**
* 格式化元素的 Label 配置,后续初始化 Label 用统一的数据格式
* 主要是将 _label 类型 string | LabelConfig | LabelConfig[] 统一转换为 LabelConfig[]
* @param graphModel 当前图的 model
* @param element 当前元素 model
* @return LabelConfig[]
*/
private formatConfig;
/**
* 根据初始化的数据,格式化 Label 的数据格式后,统一更新到元素的 properties._label 中,保证后续的渲染以这个数据格式进行
* @param graphModel
*/
private setupLabels;
/**
* 给元素添加一个 label
* @param element
* @param position
*/
private addLabel;
/**
* 移除元素的某个 label
* @private
*/
private addEventListeners;
/**
* 重写元素的一些方法,以支持 Label 的拖拽、编辑等
* @param element
*/
private rewriteInnerMethods;
private rewriteShortcut;
/**
* 更新当前渲染使用的 Text or Label 模式
*/
updateTextMode(textMode: TextMode): void;
render(): void;
destroy(): void;
}
export default Label;