UNPKG

@jbrowse/plugin-linear-genome-view

Version:

JBrowse 2 linear genome view

89 lines (88 loc) 3.68 kB
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;