@jbrowse/plugin-linear-genome-view
Version:
JBrowse 2 linear genome view
89 lines (88 loc) • 3.68 kB
JavaScript
import { jsx as _jsx } from "react/jsx-runtime";
import CascadingMenuButton from '@jbrowse/core/ui/CascadingMenuButton';
import { getContainingView, getSession } from '@jbrowse/core/util';
import AddIcon from '@mui/icons-material/Add';
import KeyboardArrowDownIcon from '@mui/icons-material/KeyboardArrowDown';
import KeyboardArrowUpIcon from '@mui/icons-material/KeyboardArrowUp';
import KeyboardDoubleArrowDownIcon from '@mui/icons-material/KeyboardDoubleArrowDown';
import KeyboardDoubleArrowUpIcon from '@mui/icons-material/KeyboardDoubleArrowUp';
import MinimizeIcon from '@mui/icons-material/Minimize';
import MoreVertIcon from '@mui/icons-material/MoreVert';
import PushPinIcon from '@mui/icons-material/PushPin';
import { observer } from 'mobx-react';
const TrackLabelMenu = observer(function ({ track, }) {
var _a;
const view = getContainingView(track);
const session = 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: PushPinIcon,
onClick: () => {
track.setPinned(!pinned);
},
},
]),
{
label: 'Track order',
type: 'subMenu',
priority: 2000,
subMenu: [
{
label: minimized ? 'Restore track' : 'Minimize track',
icon: minimized ? AddIcon : MinimizeIcon,
onClick: () => {
track.setMinimized(!minimized);
},
},
...(view.tracks.length > 2
? [
{
label: 'Move track to top',
icon: KeyboardDoubleArrowUpIcon,
onClick: () => {
view.moveTrackToTop(track.id);
},
},
]
: []),
{
label: 'Move track up',
icon: KeyboardArrowUpIcon,
onClick: () => {
view.moveTrackUp(track.id);
},
},
{
label: 'Move track down',
icon: KeyboardArrowDownIcon,
onClick: () => {
view.moveTrackDown(track.id);
},
},
...(view.tracks.length > 2
? [
{
label: 'Move track to bottom',
icon: KeyboardDoubleArrowDownIcon,
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 (_jsx(CascadingMenuButton, { menuItems: items, "data-testid": "track_menu_icon", children: _jsx(MoreVertIcon, { fontSize: "small" }) }));
});
export default TrackLabelMenu;