UNPKG

@intuitionrobotics/thunderstorm

Version:
40 lines 1.8 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.MenuAndButton = void 0; const React = require("react"); const BaseComponent_1 = require("../../core/BaseComponent"); const MenuModule_1 = require("./MenuModule"); const ts_common_1 = require("@intuitionrobotics/ts-common"); class MenuAndButton extends BaseComponent_1.BaseComponent { constructor() { super(...arguments); this.ref = React.createRef(); this.state = { isOpen: false, over: false }; this.__onMenuHide = (id) => { if (this.props.id !== id) return; this.setState({ isOpen: false }); }; this.__onMenuDisplay = (menu) => { if (this.props.id !== menu.id) return; this.setState({ isOpen: true }); }; this.open = () => { if (!this.ref.current) throw new ts_common_1.BadImplementationException("Could not find image reference"); new MenuModule_1.MenuBuilder(this.props.adapter, this.props.resolvePosition ? this.props.resolvePosition(this.ref.current) : (0, MenuModule_1.resolveRealPosition)(this.ref.current), this.props.css && this.props.css) .setId(this.props.id) .show(); }; } render() { return React.createElement("div", { className: 'clickable', onClick: this.open, style: { position: "relative" } }, React.createElement("div", { ref: this.ref, onMouseOver: e => this.setState({ over: true }), onMouseOut: e => this.setState({ over: false }) }, this.state.isOpen || this.state.over ? this.props.iconClosed : this.props.iconOpen)); } } exports.MenuAndButton = MenuAndButton; //# sourceMappingURL=MenuAndButton.js.map