@jbrowse/core
Version:
JBrowse 2 core libraries used by plugins
39 lines (38 loc) • 2.2 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const jsx_runtime_1 = require("react/jsx-runtime");
const react_1 = require("react");
const CascadingMenu_1 = __importDefault(require("@jbrowse/core/ui/CascadingMenu"));
const material_1 = require("@mui/material");
const hooks_1 = require("material-ui-popup-state/hooks");
const mobx_react_1 = require("mobx-react");
const CascadingMenuButton = (0, mobx_react_1.observer)(function CascadingMenuButton({ children, menuItems, closeAfterItemClick = true, stopPropagation, setOpen, onClick: onClickExtra, ...rest }) {
const popupState = (0, hooks_1.usePopupState)({
popupId: 'viewMenu',
variant: 'popover',
});
const { onClick, onTouchStart, ...rest2 } = (0, hooks_1.bindTrigger)(popupState);
const { isOpen } = popupState;
(0, react_1.useEffect)(() => {
setOpen === null || setOpen === void 0 ? void 0 : setOpen(isOpen);
}, [isOpen, setOpen]);
return ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)(material_1.IconButton, { onClick: event => {
if (stopPropagation) {
event.stopPropagation();
}
onClick(event);
onClickExtra === null || onClickExtra === void 0 ? void 0 : onClickExtra();
}, onTouchStart: event => {
if (stopPropagation) {
event.stopPropagation();
}
onTouchStart(event);
onClickExtra === null || onClickExtra === void 0 ? void 0 : onClickExtra();
}, ...rest2, ...rest, disabled: menuItems.length === 0, children: children }), (0, jsx_runtime_1.jsx)(CascadingMenu_1.default, { ...(0, hooks_1.bindPopover)(popupState), onMenuItemClick: (_, callback) => {
callback();
}, menuItems: menuItems, closeAfterItemClick: closeAfterItemClick, popupState: popupState })] }));
});
exports.default = CascadingMenuButton;