@intuitionrobotics/thunderstorm
Version:
60 lines • 1.78 kB
JavaScript
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