UNPKG

@jbrowse/plugin-wiggle

Version:

JBrowse 2 wiggle adapters, tracks, etc.

60 lines (59 loc) 2.28 kB
import { lazy } from 'react'; import { readConfObject } from '@jbrowse/core/configuration'; import { getSession, isSessionWithAddTracks } from '@jbrowse/core/util'; const ConfirmDialog = lazy(() => import('./ConfirmDialog')); function makeTrack({ model, arg, }) { const tracks = model.selection; const trackIds = tracks.map(c => readConfObject(c, 'name')); const subadapters = tracks .map(c => readConfObject(c, 'adapter')) .map((c, idx) => ({ ...c, source: trackIds[idx] })); const now = +Date.now(); const trackId = `multitrack-${now}-sessionTrack`; const session = getSession(model); if (isSessionWithAddTracks(session)) { session.addTrackConf({ type: 'MultiQuantitativeTrack', trackId, name: arg.name, assemblyNames: [ ...new Set(tracks.flatMap(c => readConfObject(c, 'assemblyNames'))), ], adapter: { type: 'MultiWiggleAdapter', subadapters, }, }); model.view.showTrack(trackId); } } export default function CreateMultiWiggleExtensionF(pm) { pm.addToExtensionPoint('TrackSelector-multiTrackMenuItems', (items, props) => { const { session } = props; return [ ...items, ...(isSessionWithAddTracks(session) ? [ { label: 'Create multi-wiggle track', onClick: (model) => { const tracks = model.selection; getSession(model).queueDialog(handleClose => [ ConfirmDialog, { tracks, onClose: (arg, arg1) => { if (arg && arg1) { makeTrack({ model, arg: arg1 }); } handleClose(); }, }, ]); }, }, ] : []), ]; }); }