@jbrowse/plugin-linear-genome-view
Version:
JBrowse 2 linear genome view
49 lines (48 loc) • 2.31 kB
JavaScript
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;