@logicflow/extension
Version:
LogicFlow Extensions
98 lines (97 loc) • 2.53 kB
TypeScript
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 };