UNPKG

@logicflow/extension

Version:
61 lines (60 loc) 1.89 kB
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;