@intuitionrobotics/thunderstorm
Version:
57 lines • 1.93 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.MenuBuilder = exports.MenuModule = exports.MenuModule_Class = exports.resolveRealPosition = void 0;
const ts_common_1 = require("@intuitionrobotics/ts-common");
const thunder_dispatcher_1 = require("../../core/thunder-dispatcher");
const resolveRealPosition = (button) => {
const pos = button.getBoundingClientRect();
return { top: pos.top + button.offsetHeight, left: pos.left };
};
exports.resolveRealPosition = resolveRealPosition;
class MenuModule_Class extends ts_common_1.Module {
constructor() {
super("MenuModule");
this.showMenu = new thunder_dispatcher_1.ThunderDispatcher("__onMenuDisplay");
this.hideMenu = new thunder_dispatcher_1.ThunderDispatcher("__onMenuHide");
this.show = (model) => {
this.showMenu.dispatchUI(model);
};
this.hide = (id) => this.hideMenu.dispatchUI(id);
}
}
exports.MenuModule_Class = MenuModule_Class;
exports.MenuModule = new MenuModule_Class();
class MenuBuilder {
constructor(menu, position, cssContainer) {
this.id = (0, ts_common_1.generateHex)(8);
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
};
exports.MenuModule.show(model);
}
;
setId(id) {
this.id = id;
return this;
}
setOnClick(func) {
this.onNodeClicked = func;
return this;
}
setOnDoubleClick(func) {
this.onNodeDoubleClicked = func;
return this;
}
}
exports.MenuBuilder = MenuBuilder;
//# sourceMappingURL=MenuModule.js.map