/// import { Container, Graphics, Point, Rectangle, Text } from 'pixi.js'; import { IGraphicScene } from '../app'; import { OutOfBound } from '../utils'; import { MenuCompletionItemStyle, MenuCompletionOptions, MenuCompletionStyleOptions, MenuGroupOptions, MenuItemOptions, MenuOptions } from './Menu'; export declare class ContextMenuPlugin { app: IGraphicScene; contextMenuMap: Map; constructor(app: IGraphicScene); registerMenu(menu: ContextMenu): void; /** * 获取视口屏幕宽度 */ get screenWidth(): number; /** * 获取视口屏幕高度 */ get screenHeight(): number; /** * 打开菜单 * @param menu * @param global */ open(menu: ContextMenu, global: Point): void; /** * 关闭菜单 * @param menu */ close(menu: ContextMenu): void; /** * 关闭所有菜单 */ closeAll(): void; /** * 越界检查 * @param menu * @param global * @returns */ oob(menu: ContextMenu, global: Point): OutOfBound; } /** * 上下文菜单,多级嵌套 */ export declare class ContextMenu extends Container { _plugin?: ContextMenuPlugin; parentMenuItem?: ContextMenuItem; openedSubMenu?: ContextMenu; menuOptions: MenuCompletionOptions; opened: boolean; bg: Graphics; title?: Text; groups: MenuGroup[]; private padding; _active: boolean; timeoutCloseHandle?: NodeJS.Timeout; constructor(menuOptions: MenuOptions, parentMenuItem?: ContextMenuItem); static init(options: MenuOptions): ContextMenu; get style(): MenuCompletionStyleOptions; /** * 父级菜单 */ get parentMenu(): ContextMenu | undefined; /** * 最顶级菜单 */ get rootMenu(): ContextMenu; /** * 是否存在激活的菜单项 * @returns */ hasActiveItem(): boolean; get active(): boolean; set active(v: boolean); onActiveChanged(): void; setOptions(menuOptions: MenuOptions): void; /** * 初始化 */ init(): void; initGroups(): void; initTitle(): void; private calculateBorderInfo; updateBg(): void; update(): void; get menuName(): string; get plugin(): ContextMenuPlugin; set plugin(v: ContextMenuPlugin); /** * 显示菜单 */ open(global: Point): void; /** * 关闭菜单 */ close(): void; /** * 打开子菜单 * @param subMenu * @param global */ private openSub; } declare class MenuGroup extends Container { private gutter; config: MenuGroupOptions; menu: ContextMenu; items: ContextMenuItem[]; constructor(menu: ContextMenu, config: MenuGroupOptions); private init; hasActiveItem(): boolean; get maxItemNameWidth(): number; get maxShortcutWidth(): number; get totalGutter(): number; get totalHeight(): number; update(): void; updateItemBox(maxItemWidth: number): void; } /** * 菜单项 */ declare class ContextMenuItem extends Container { menu: ContextMenu; config: MenuItemOptions; /** * 名称文本 */ nameText: Text; /** * 快捷键文本 */ shortcutKeyText?: Text; private gutter; arrowText?: Text; box: Graphics; subMenu?: ContextMenu; _active: boolean; constructor(menu: ContextMenu, config: MenuItemOptions); registerEventHandler(): void; get active(): boolean; set active(v: boolean); onActiveChanged(): void; get textWidth(): number; get nameGraphic(): Text; get totalHeight(): number; get nameBounds(): Rectangle; get shortcutKeyBounds(): Rectangle; get style(): MenuCompletionItemStyle; private checkPadding; private toWholePadding; get paddingTop(): number; get paddingBottom(): number; get paddingLeft(): number; get paddingRight(): number; get hoverColor(): string; get fontSize(): number; get fontColor(): string; initShortcutKeyText(): Text | undefined; initSubMenu(): void; updateBackground(width: number, height: number): void; updateBox(width: number, height: number): void; update(): void; } export {};