UNPKG

@intuitionrobotics/thunderstorm

Version:
60 lines 1.78 kB
import { generateHex, Module } from "@intuitionrobotics/ts-common"; import {} from "./PopupMenu.js"; import { ThunderDispatcher } from "../../core/thunder-dispatcher.js"; import { Adapter, } from "../../components/adapter/Adapter.js"; import {} from "../../components/adapter/BaseRenderer.js"; import {} from "react"; export const resolveRealPosition = (button) => { const pos = button.getBoundingClientRect(); return { top: pos.top + button.offsetHeight, left: pos.left }; }; export class MenuModule_Class extends Module { constructor() { super("MenuModule"); } showMenu = new ThunderDispatcher("__onMenuDisplay"); hideMenu = new ThunderDispatcher("__onMenuHide"); show = (model) => { this.showMenu.dispatchUI(model); }; hide = (id) => this.hideMenu.dispatchUI(id); } export const MenuModule = new MenuModule_Class(); export class MenuBuilder { adapter; position; cssContainer; id = generateHex(8); onNodeClicked; onNodeDoubleClicked; constructor(menu, position, cssContainer) { this.adapter = menu; this.position = position; this.cssContainer = cssContainer; } show() { const model = { id: this.id, adapter: this.adapter, pos: this.position, onNodeClicked: this.onNodeClicked, onNodeDoubleClicked: this.onNodeDoubleClicked, css: this.cssContainer }; MenuModule.show(model); } ; setId(id) { this.id = id; return this; } setOnClick(func) { this.onNodeClicked = func; return this; } setOnDoubleClick(func) { this.onNodeDoubleClicked = func; return this; } } //# sourceMappingURL=MenuModule.js.map