@jbrowse/plugin-linear-genome-view
Version:
JBrowse 2 linear genome view
27 lines (26 loc) • 1.6 kB
JavaScript
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
import { getSession } from '@jbrowse/core/util';
import { getTrackName } from '@jbrowse/core/util/tracks';
import SVGRegionSeparators from './SVGRegionSeparators';
import SVGTrackLabel from './SVGTrackLabel';
export default function SVGTracks({ displayResults, model, textHeight, fontSize, trackLabels = 'offset', trackLabelOffset = 0, }) {
const session = getSession(model);
const textOffset = trackLabels === 'offset' ? textHeight : 0;
return (_jsx(_Fragment, { children: displayResults.reduce(({ prevOffset, reactElements }, { track, result }) => {
const conf = track.configuration;
const trackName = getTrackName(conf, session);
const display = track.displays[0];
const x = Math.max(-model.offsetPx, 0);
const currOffset = prevOffset + display.height + textOffset;
return {
prevOffset: currOffset,
reactElements: [
...reactElements,
_jsxs("g", { transform: `translate(0 ${prevOffset})`, children: [_jsxs("g", { transform: `translate(${trackLabelOffset} ${textOffset})`, children: [_jsx(SVGRegionSeparators, { model: model, height: display.height }), result] }), _jsx(SVGTrackLabel, { trackName: trackName, fontSize: fontSize, trackLabels: trackLabels, trackLabelOffset: trackLabelOffset, x: x })] }, conf.trackId),
],
};
}, {
prevOffset: 0,
reactElements: [],
}).reactElements }));
}