UNPKG

@logicflow/extension

Version:
98 lines (97 loc) 2.53 kB
import LogicFlow from '@logicflow/core'; type SetType = 'add' | 'reset'; export type MenuItem = { text?: string; className?: string; icon?: boolean | string; disabled?: boolean; callback: (element: any) => void; }; export type MenuConfig = { nodeMenu?: MenuItem[] | false; edgeMenu?: MenuItem[] | false; graphMenu?: MenuItem[] | false; selectionMenu?: MenuItem[] | false; }; export type MenuType = 'nodeMenu' | 'edgeMenu' | 'graphMenu' | 'selectionMenu'; declare class Menu { lf: LogicFlow; private __container?; private __menuDOM?; private menuTypeMap?; private __currentData; private __isSilentMode; private __editConfigChangeHandler?; static pluginName: string; constructor({ lf }: { lf: any; }); /** * 初始化设置默认内置菜单栏 */ private init; private showMenu; /** * 通用的菜单配置处理方法 */ private processMenuConfig; /** * 创建图片元素 */ private createImageElement; /** * 检查是否为图片文件路径 */ private isImageFile; /** * 处理图标逻辑 */ private processIcon; /** * 获取 Menu DOM * @param list 菜单项 * @return 菜单项 DOM */ private __getMenuDom; /** * 更新菜单项DOM元素的禁用状态 * @param text 菜单项文本 * @param disabled 是否禁用 */ private updateMenuItemDOMStatus; /** * 设置静默模式监听器 * 当 isSilentMode 变化时,动态更新菜单的显隐状态 */ private setupSilentModeListener; /** * 更新菜单显隐状态 */ private updateMenuVisibility; /** * 检查菜单是否正在显示并重新渲染 */ private refreshCurrentMenu; /** * 设置指定类型元素的菜单 */ setMenuByType({ type, menu }: { type: string; menu: MenuItem[]; }): void; getMenuConfig(menuKey: MenuType): MenuItem[]; resetMenuConfigByType(menuKey: MenuType): void; resetAllMenuConfig(): void; setMenuConfig(config: MenuConfig): void; addMenuConfig(config: MenuConfig): void; /** * @deprecated * 复写添加 */ changeMenuItem(type: SetType, config: MenuConfig): void; changeMenuItemDisableStatus(menuKey: MenuType, text: string, disabled: boolean): void; render(lf: LogicFlow, container: HTMLElement): void; destroy(): void; } export default Menu; export { Menu };