UNPKG

@jbrowse/plugin-linear-genome-view

Version:

JBrowse 2 linear genome view

94 lines (93 loc) 4.21 kB
"use strict"; 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 CascadingMenuButton_1 = __importDefault(require("@jbrowse/core/ui/CascadingMenuButton")); const util_1 = require("@jbrowse/core/util"); const Add_1 = __importDefault(require("@mui/icons-material/Add")); const KeyboardArrowDown_1 = __importDefault(require("@mui/icons-material/KeyboardArrowDown")); const KeyboardArrowUp_1 = __importDefault(require("@mui/icons-material/KeyboardArrowUp")); const KeyboardDoubleArrowDown_1 = __importDefault(require("@mui/icons-material/KeyboardDoubleArrowDown")); const KeyboardDoubleArrowUp_1 = __importDefault(require("@mui/icons-material/KeyboardDoubleArrowUp")); const Minimize_1 = __importDefault(require("@mui/icons-material/Minimize")); const MoreVert_1 = __importDefault(require("@mui/icons-material/MoreVert")); const PushPin_1 = __importDefault(require("@mui/icons-material/PushPin")); const mobx_react_1 = require("mobx-react"); const TrackLabelMenu = (0, mobx_react_1.observer)(function ({ track, }) { var _a; const view = (0, util_1.getContainingView)(track); const session = (0, util_1.getSession)(track); const trackConf = track.configuration; const minimized = track.minimized; const pinned = track.pinned; const { isTopLevelView } = view; const items = [ ...(!isTopLevelView ? [] : [ { label: pinned ? 'Unpin track' : 'Pin track', icon: PushPin_1.default, onClick: () => { track.setPinned(!pinned); }, }, ]), { label: 'Track order', type: 'subMenu', priority: 2000, subMenu: [ { label: minimized ? 'Restore track' : 'Minimize track', icon: minimized ? Add_1.default : Minimize_1.default, onClick: () => { track.setMinimized(!minimized); }, }, ...(view.tracks.length > 2 ? [ { label: 'Move track to top', icon: KeyboardDoubleArrowUp_1.default, onClick: () => { view.moveTrackToTop(track.id); }, }, ] : []), { label: 'Move track up', icon: KeyboardArrowUp_1.default, onClick: () => { view.moveTrackUp(track.id); }, }, { label: 'Move track down', icon: KeyboardArrowDown_1.default, onClick: () => { view.moveTrackDown(track.id); }, }, ...(view.tracks.length > 2 ? [ { label: 'Move track to bottom', icon: KeyboardDoubleArrowDown_1.default, onClick: () => { view.moveTrackToBottom(track.id); }, }, ] : []), ], }, ...(((_a = session.getTrackActionMenuItems) === null || _a === void 0 ? void 0 : _a.call(session, trackConf)) || []), ...track.trackMenuItems(), ].sort((a, b) => ((b === null || b === void 0 ? void 0 : b.priority) || 0) - ((a === null || a === void 0 ? void 0 : a.priority) || 0)); return ((0, jsx_runtime_1.jsx)(CascadingMenuButton_1.default, { menuItems: items, "data-testid": "track_menu_icon", children: (0, jsx_runtime_1.jsx)(MoreVert_1.default, { fontSize: "small" }) })); }); exports.default = TrackLabelMenu;