@jbrowse/plugin-linear-genome-view
Version:
JBrowse 2 linear genome view
94 lines (93 loc) • 4.21 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 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;