UNPKG

@jbrowse/plugin-linear-genome-view

Version:

JBrowse 2 linear genome view

49 lines (48 loc) 2.31 kB
import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime"; import { Suspense, useEffect, useRef } from 'react'; import { getConf } from '@jbrowse/core/configuration'; import { LoadingEllipses } from '@jbrowse/core/ui'; import { observer } from 'mobx-react'; import { makeStyles } from 'tss-react/mui'; const useStyles = makeStyles()({ renderingComponentContainer: { position: 'absolute', left: -1, height: '100%', width: '100%', }, trackRenderingContainer: { overflowY: 'auto', overflowX: 'hidden', whiteSpace: 'nowrap', position: 'relative', background: 'none', }, }); const TrackRenderingContainer = observer(function ({ model, track, onDragEnter, }) { const { classes } = useStyles(); const display = track.displays[0]; const { height, RenderingComponent, DisplayBlurb } = display; const { trackRefs, id, scaleFactor } = model; const trackId = getConf(track, 'trackId'); const ref = useRef(null); const minimized = track.minimized; useEffect(() => { if (ref.current) { trackRefs[trackId] = ref.current; } return () => { delete trackRefs[trackId]; }; }, [trackRefs, trackId]); return (_jsx("div", { className: classes.trackRenderingContainer, style: { height: minimized ? 20 : height, }, onScroll: evt => display.setScrollTop(evt.currentTarget.scrollTop), onDragEnter: onDragEnter, "data-testid": `trackRenderingContainer-${id}-${trackId}`, children: !minimized ? (_jsxs(_Fragment, { children: [_jsx("div", { ref: ref, className: classes.renderingComponentContainer, style: { transform: scaleFactor !== 1 ? `scaleX(${scaleFactor})` : undefined, }, children: _jsx(Suspense, { fallback: _jsx(LoadingEllipses, {}), children: _jsx(RenderingComponent, { model: display, onHorizontalScroll: model.horizontalScroll }) }) }), DisplayBlurb ? (_jsx("div", { style: { position: 'absolute', left: 0, top: display.height - 20, }, children: _jsx(DisplayBlurb, { model: display }) })) : null] })) : null })); }); export default TrackRenderingContainer;