@jbrowse/plugin-linear-genome-view 2.6.2 → 2.6.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/LinearGenomeView/components/TrackRenderingContainer.js +3 -1
- package/dist/LinearGenomeView/svgcomponents/SVGBackground.js +2 -1
- package/dist/LinearGenomeView/svgcomponents/SVGHeader.js +6 -4
- package/dist/LinearGenomeView/svgcomponents/SVGRuler.js +6 -3
- package/dist/LinearGenomeView/svgcomponents/SVGScalebar.js +8 -4
- package/esm/LinearGenomeView/components/TrackRenderingContainer.js +4 -2
- package/esm/LinearGenomeView/svgcomponents/SVGBackground.js +2 -1
- package/esm/LinearGenomeView/svgcomponents/SVGHeader.js +6 -4
- package/esm/LinearGenomeView/svgcomponents/SVGRuler.js +6 -3
- package/esm/LinearGenomeView/svgcomponents/SVGScalebar.js +8 -4
- package/package.json +3 -2
|
@@ -27,6 +27,7 @@ const react_1 = __importStar(require("react"));
|
|
|
27
27
|
const mui_1 = require("tss-react/mui");
|
|
28
28
|
const mobx_react_1 = require("mobx-react");
|
|
29
29
|
const configuration_1 = require("@jbrowse/core/configuration");
|
|
30
|
+
const ui_1 = require("@jbrowse/core/ui");
|
|
30
31
|
const useStyles = (0, mui_1.makeStyles)()({
|
|
31
32
|
// aligns with block boundaries. check for example the breakpoint split view
|
|
32
33
|
// demo to see if features align if wanting to change things
|
|
@@ -63,7 +64,8 @@ exports.default = (0, mobx_react_1.observer)(function TrackRenderingContainer({
|
|
|
63
64
|
}, [model.trackRefs, trackId]);
|
|
64
65
|
return (react_1.default.createElement("div", { className: classes.trackRenderingContainer, style: { height: minimized ? 20 : height }, onScroll: evt => display.setScrollTop(evt.currentTarget.scrollTop), onDragEnter: onDragEnter, "data-testid": `trackRenderingContainer-${model.id}-${trackId}` }, !minimized ? (react_1.default.createElement(react_1.default.Fragment, null,
|
|
65
66
|
react_1.default.createElement("div", { ref: ref, className: classes.renderingComponentContainer, style: { transform: `scaleX(${model.scaleFactor})` } },
|
|
66
|
-
react_1.default.createElement(
|
|
67
|
+
react_1.default.createElement(react_1.Suspense, { fallback: react_1.default.createElement(ui_1.LoadingEllipses, null) },
|
|
68
|
+
react_1.default.createElement(RenderingComponent, { model: display, onHorizontalScroll: model.horizontalScroll }))),
|
|
67
69
|
DisplayBlurb ? (react_1.default.createElement("div", { style: {
|
|
68
70
|
position: 'absolute',
|
|
69
71
|
left: 0,
|
|
@@ -5,8 +5,9 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
const react_1 = __importDefault(require("react"));
|
|
7
7
|
const material_1 = require("@mui/material");
|
|
8
|
+
const color_1 = __importDefault(require("color"));
|
|
8
9
|
function SVGBackground({ width, height, shift, }) {
|
|
9
10
|
const theme = (0, material_1.useTheme)();
|
|
10
|
-
return (react_1.default.createElement("rect", { width: width + shift * 2, height: height, fill: theme.palette.background.default }));
|
|
11
|
+
return (react_1.default.createElement("rect", { width: width + shift * 2, height: height, fill: (0, color_1.default)(theme.palette.background.default).hex() }));
|
|
11
12
|
}
|
|
12
13
|
exports.default = SVGBackground;
|
|
@@ -7,6 +7,7 @@ const react_1 = __importDefault(require("react"));
|
|
|
7
7
|
const util_1 = require("@jbrowse/core/util");
|
|
8
8
|
const Base1DViewModel_1 = __importDefault(require("@jbrowse/core/util/Base1DViewModel"));
|
|
9
9
|
const material_1 = require("@mui/material");
|
|
10
|
+
const color_1 = __importDefault(require("color"));
|
|
10
11
|
// locals
|
|
11
12
|
const __1 = require("..");
|
|
12
13
|
const Cytobands_1 = __importDefault(require("../components/Cytobands"));
|
|
@@ -19,6 +20,7 @@ function SVGHeader({ model, fontSize, cytobandHeight, rulerHeight, }) {
|
|
|
19
20
|
const assemblyName = assemblyNames.length > 1 ? '' : assemblyNames[0];
|
|
20
21
|
const assembly = assemblyManager.get(assemblyName);
|
|
21
22
|
const theme = (0, material_1.useTheme)();
|
|
23
|
+
const c = (0, color_1.default)(theme.palette.text.primary).hex();
|
|
22
24
|
const overview = Base1DViewModel_1.default.create({
|
|
23
25
|
displayedRegions: JSON.parse(JSON.stringify(displayedRegions)),
|
|
24
26
|
interRegionPaddingWidth: 0,
|
|
@@ -43,17 +45,17 @@ function SVGHeader({ model, fontSize, cytobandHeight, rulerHeight, }) {
|
|
|
43
45
|
...last,
|
|
44
46
|
coord: last.reversed ? last.start : last.end,
|
|
45
47
|
}) || 0;
|
|
46
|
-
const
|
|
48
|
+
const y = +showCytobands * cytobandHeight;
|
|
47
49
|
return (react_1.default.createElement("g", { id: "header" },
|
|
48
|
-
react_1.default.createElement("text", { x: 0, y:
|
|
50
|
+
react_1.default.createElement("text", { x: 0, y: 0, dominantBaseline: "hanging", fontSize: fontSize, fill: c }, assemblyName),
|
|
49
51
|
showCytobands ? (react_1.default.createElement("g", { transform: `translate(0 ${rulerHeight})` },
|
|
50
52
|
react_1.default.createElement(Cytobands_1.default, { overview: overview, assembly: assembly, block: block }),
|
|
51
53
|
react_1.default.createElement("rect", { stroke: "red", fill: "rgb(255,0,0,0.1)", width: Math.max(lastOverviewPx - firstOverviewPx, 0.5), height: __1.HEADER_OVERVIEW_HEIGHT - 1, x: firstOverviewPx, y: 0.5 }),
|
|
52
54
|
react_1.default.createElement("g", { transform: `translate(0,${__1.HEADER_OVERVIEW_HEIGHT})` },
|
|
53
55
|
react_1.default.createElement(OverviewScalebar_1.Polygon, { overview: overview, model: model, useOffset: false })))) : null,
|
|
54
|
-
react_1.default.createElement("g", { transform: `translate(0 ${fontSize +
|
|
56
|
+
react_1.default.createElement("g", { transform: `translate(0 ${fontSize + y})` },
|
|
55
57
|
react_1.default.createElement(SVGScalebar_1.default, { model: model, fontSize: fontSize })),
|
|
56
|
-
react_1.default.createElement("g", { transform: `translate(0 ${rulerHeight +
|
|
58
|
+
react_1.default.createElement("g", { transform: `translate(0 ${rulerHeight + y})` },
|
|
57
59
|
react_1.default.createElement(SVGRuler_1.default, { model: model, fontSize: fontSize }))));
|
|
58
60
|
}
|
|
59
61
|
exports.default = SVGHeader;
|
|
@@ -9,20 +9,22 @@ const material_1 = require("@mui/material");
|
|
|
9
9
|
// locals
|
|
10
10
|
const util_2 = require("../util");
|
|
11
11
|
const SVGRegionSeparators_1 = __importDefault(require("./SVGRegionSeparators"));
|
|
12
|
+
const color_1 = __importDefault(require("color"));
|
|
12
13
|
function Ruler({ start, end, bpPerPx, reversed = false, major = true, minor = true, hideText = false, }) {
|
|
13
14
|
const ticks = (0, util_2.makeTicks)(start, end, bpPerPx, major, minor);
|
|
14
15
|
const theme = (0, material_1.useTheme)();
|
|
16
|
+
const c = (0, color_1.default)(theme.palette.text.secondary).hex();
|
|
15
17
|
return (react_1.default.createElement(react_1.default.Fragment, null,
|
|
16
18
|
ticks.map(tick => {
|
|
17
19
|
const x = (reversed ? end - tick.base : tick.base - start) / bpPerPx;
|
|
18
|
-
return (react_1.default.createElement("line", { key: tick.base, x1: x, x2: x, y1: 0, y2: tick.type === 'major' ? 6 : 4, strokeWidth: 1, stroke:
|
|
20
|
+
return (react_1.default.createElement("line", { key: 'tick-' + tick.base, x1: x, x2: x, y1: 0, y2: tick.type === 'major' ? 6 : 4, strokeWidth: 1, stroke: c }));
|
|
19
21
|
}),
|
|
20
22
|
!hideText
|
|
21
23
|
? ticks
|
|
22
24
|
.filter(tick => tick.type === 'major')
|
|
23
25
|
.map(tick => {
|
|
24
26
|
const x = (reversed ? end - tick.base : tick.base - start) / bpPerPx;
|
|
25
|
-
return (react_1.default.createElement("text", { x: x - 3, y: 7 + 11,
|
|
27
|
+
return (react_1.default.createElement("text", { key: `label-${tick.base}`, x: x - 3, y: 7 + 11, fontSize: 11, fill: c }, (0, util_1.getTickDisplayStr)(tick.base + 1, bpPerPx)));
|
|
26
28
|
})
|
|
27
29
|
: null));
|
|
28
30
|
}
|
|
@@ -30,6 +32,7 @@ function SVGRuler({ model, fontSize, }) {
|
|
|
30
32
|
const { dynamicBlocks: { contentBlocks }, offsetPx: viewOffsetPx, bpPerPx, } = model;
|
|
31
33
|
const renderRuler = contentBlocks.length < 5;
|
|
32
34
|
const theme = (0, material_1.useTheme)();
|
|
35
|
+
const c = (0, color_1.default)(theme.palette.text.primary).hex();
|
|
33
36
|
return (react_1.default.createElement(react_1.default.Fragment, null,
|
|
34
37
|
react_1.default.createElement(SVGRegionSeparators_1.default, { model: model, height: 30 }),
|
|
35
38
|
contentBlocks.map(block => {
|
|
@@ -42,7 +45,7 @@ function SVGRuler({ model, fontSize, }) {
|
|
|
42
45
|
react_1.default.createElement("rect", { x: 0, y: 0, width: widthPx, height: 100 }))),
|
|
43
46
|
react_1.default.createElement("g", { transform: `translate(${offset} 0)` },
|
|
44
47
|
react_1.default.createElement("g", { clipPath: `url(#${clipid})` },
|
|
45
|
-
react_1.default.createElement("text", { x: 4, y: fontSize, fontSize: fontSize, fill:
|
|
48
|
+
react_1.default.createElement("text", { x: 4, y: fontSize, fontSize: fontSize, fill: c }, refName),
|
|
46
49
|
react_1.default.createElement("g", { transform: "translate(0 20)" },
|
|
47
50
|
react_1.default.createElement(Ruler, { hideText: !renderRuler, start: start, end: end, bpPerPx: bpPerPx, reversed: reversed }))))));
|
|
48
51
|
})));
|
|
@@ -6,16 +6,20 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
6
6
|
const react_1 = __importDefault(require("react"));
|
|
7
7
|
const util_1 = require("@jbrowse/core/util");
|
|
8
8
|
const material_1 = require("@mui/material");
|
|
9
|
+
const color_1 = __importDefault(require("color"));
|
|
9
10
|
function SVGScalebar({ model, fontSize, }) {
|
|
10
11
|
const { offsetPx, dynamicBlocks: { totalWidthPxWithoutBorders: totalWidthPx, totalBp }, } = model;
|
|
11
12
|
const theme = (0, material_1.useTheme)();
|
|
12
13
|
const displayBp = (0, util_1.getBpDisplayStr)(totalBp);
|
|
13
14
|
const x0 = Math.max(-offsetPx, 0);
|
|
14
15
|
const x1 = x0 + totalWidthPx;
|
|
16
|
+
const c = (0, color_1.default)(theme.palette.text.secondary).hex();
|
|
17
|
+
const x = x0 + (x1 - x0) / 2;
|
|
18
|
+
const y = fontSize;
|
|
15
19
|
return (react_1.default.createElement(react_1.default.Fragment, null,
|
|
16
|
-
react_1.default.createElement("line", { x1: x0, x2: x1, y1: 10, y2: 10, stroke:
|
|
17
|
-
react_1.default.createElement("line", { x1: x0, x2: x0, y1: 5, y2: 15, stroke:
|
|
18
|
-
react_1.default.createElement("line", { x1: x1, x2: x1, y1: 5, y2: 15, stroke:
|
|
19
|
-
react_1.default.createElement("text", { x:
|
|
20
|
+
react_1.default.createElement("line", { x1: x0, x2: x1, y1: 10, y2: 10, stroke: c }),
|
|
21
|
+
react_1.default.createElement("line", { x1: x0, x2: x0, y1: 5, y2: 15, stroke: c }),
|
|
22
|
+
react_1.default.createElement("line", { x1: x1, x2: x1, y1: 5, y2: 15, stroke: c }),
|
|
23
|
+
react_1.default.createElement("text", { x: x, y: y, textAnchor: "middle", dominantBaseline: "hanging", fontSize: fontSize, fill: c }, displayBp)));
|
|
20
24
|
}
|
|
21
25
|
exports.default = SVGScalebar;
|
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
import React, { useEffect, useRef } from 'react';
|
|
1
|
+
import React, { Suspense, useEffect, useRef } from 'react';
|
|
2
2
|
import { makeStyles } from 'tss-react/mui';
|
|
3
3
|
import { observer } from 'mobx-react';
|
|
4
4
|
import { getConf } from '@jbrowse/core/configuration';
|
|
5
|
+
import { LoadingEllipses } from '@jbrowse/core/ui';
|
|
5
6
|
const useStyles = makeStyles()({
|
|
6
7
|
// aligns with block boundaries. check for example the breakpoint split view
|
|
7
8
|
// demo to see if features align if wanting to change things
|
|
@@ -38,7 +39,8 @@ export default observer(function TrackRenderingContainer({ model, track, onDragE
|
|
|
38
39
|
}, [model.trackRefs, trackId]);
|
|
39
40
|
return (React.createElement("div", { className: classes.trackRenderingContainer, style: { height: minimized ? 20 : height }, onScroll: evt => display.setScrollTop(evt.currentTarget.scrollTop), onDragEnter: onDragEnter, "data-testid": `trackRenderingContainer-${model.id}-${trackId}` }, !minimized ? (React.createElement(React.Fragment, null,
|
|
40
41
|
React.createElement("div", { ref: ref, className: classes.renderingComponentContainer, style: { transform: `scaleX(${model.scaleFactor})` } },
|
|
41
|
-
React.createElement(
|
|
42
|
+
React.createElement(Suspense, { fallback: React.createElement(LoadingEllipses, null) },
|
|
43
|
+
React.createElement(RenderingComponent, { model: display, onHorizontalScroll: model.horizontalScroll }))),
|
|
42
44
|
DisplayBlurb ? (React.createElement("div", { style: {
|
|
43
45
|
position: 'absolute',
|
|
44
46
|
left: 0,
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import { useTheme } from '@mui/material';
|
|
3
|
+
import Color from 'color';
|
|
3
4
|
export default function SVGBackground({ width, height, shift, }) {
|
|
4
5
|
const theme = useTheme();
|
|
5
|
-
return (React.createElement("rect", { width: width + shift * 2, height: height, fill: theme.palette.background.default }));
|
|
6
|
+
return (React.createElement("rect", { width: width + shift * 2, height: height, fill: Color(theme.palette.background.default).hex() }));
|
|
6
7
|
}
|
|
@@ -2,6 +2,7 @@ import React from 'react';
|
|
|
2
2
|
import { getSession } from '@jbrowse/core/util';
|
|
3
3
|
import Base1DView from '@jbrowse/core/util/Base1DViewModel';
|
|
4
4
|
import { useTheme } from '@mui/material';
|
|
5
|
+
import Color from 'color';
|
|
5
6
|
// locals
|
|
6
7
|
import { HEADER_OVERVIEW_HEIGHT } from '..';
|
|
7
8
|
import Cytobands from '../components/Cytobands';
|
|
@@ -14,6 +15,7 @@ export default function SVGHeader({ model, fontSize, cytobandHeight, rulerHeight
|
|
|
14
15
|
const assemblyName = assemblyNames.length > 1 ? '' : assemblyNames[0];
|
|
15
16
|
const assembly = assemblyManager.get(assemblyName);
|
|
16
17
|
const theme = useTheme();
|
|
18
|
+
const c = Color(theme.palette.text.primary).hex();
|
|
17
19
|
const overview = Base1DView.create({
|
|
18
20
|
displayedRegions: JSON.parse(JSON.stringify(displayedRegions)),
|
|
19
21
|
interRegionPaddingWidth: 0,
|
|
@@ -38,16 +40,16 @@ export default function SVGHeader({ model, fontSize, cytobandHeight, rulerHeight
|
|
|
38
40
|
...last,
|
|
39
41
|
coord: last.reversed ? last.start : last.end,
|
|
40
42
|
}) || 0;
|
|
41
|
-
const
|
|
43
|
+
const y = +showCytobands * cytobandHeight;
|
|
42
44
|
return (React.createElement("g", { id: "header" },
|
|
43
|
-
React.createElement("text", { x: 0, y:
|
|
45
|
+
React.createElement("text", { x: 0, y: 0, dominantBaseline: "hanging", fontSize: fontSize, fill: c }, assemblyName),
|
|
44
46
|
showCytobands ? (React.createElement("g", { transform: `translate(0 ${rulerHeight})` },
|
|
45
47
|
React.createElement(Cytobands, { overview: overview, assembly: assembly, block: block }),
|
|
46
48
|
React.createElement("rect", { stroke: "red", fill: "rgb(255,0,0,0.1)", width: Math.max(lastOverviewPx - firstOverviewPx, 0.5), height: HEADER_OVERVIEW_HEIGHT - 1, x: firstOverviewPx, y: 0.5 }),
|
|
47
49
|
React.createElement("g", { transform: `translate(0,${HEADER_OVERVIEW_HEIGHT})` },
|
|
48
50
|
React.createElement(Polygon, { overview: overview, model: model, useOffset: false })))) : null,
|
|
49
|
-
React.createElement("g", { transform: `translate(0 ${fontSize +
|
|
51
|
+
React.createElement("g", { transform: `translate(0 ${fontSize + y})` },
|
|
50
52
|
React.createElement(SVGScalebar, { model: model, fontSize: fontSize })),
|
|
51
|
-
React.createElement("g", { transform: `translate(0 ${rulerHeight +
|
|
53
|
+
React.createElement("g", { transform: `translate(0 ${rulerHeight + y})` },
|
|
52
54
|
React.createElement(SVGRuler, { model: model, fontSize: fontSize }))));
|
|
53
55
|
}
|
|
@@ -4,20 +4,22 @@ import { useTheme } from '@mui/material';
|
|
|
4
4
|
// locals
|
|
5
5
|
import { makeTicks } from '../util';
|
|
6
6
|
import SVGRegionSeparators from './SVGRegionSeparators';
|
|
7
|
+
import Color from 'color';
|
|
7
8
|
function Ruler({ start, end, bpPerPx, reversed = false, major = true, minor = true, hideText = false, }) {
|
|
8
9
|
const ticks = makeTicks(start, end, bpPerPx, major, minor);
|
|
9
10
|
const theme = useTheme();
|
|
11
|
+
const c = Color(theme.palette.text.secondary).hex();
|
|
10
12
|
return (React.createElement(React.Fragment, null,
|
|
11
13
|
ticks.map(tick => {
|
|
12
14
|
const x = (reversed ? end - tick.base : tick.base - start) / bpPerPx;
|
|
13
|
-
return (React.createElement("line", { key: tick.base, x1: x, x2: x, y1: 0, y2: tick.type === 'major' ? 6 : 4, strokeWidth: 1, stroke:
|
|
15
|
+
return (React.createElement("line", { key: 'tick-' + tick.base, x1: x, x2: x, y1: 0, y2: tick.type === 'major' ? 6 : 4, strokeWidth: 1, stroke: c }));
|
|
14
16
|
}),
|
|
15
17
|
!hideText
|
|
16
18
|
? ticks
|
|
17
19
|
.filter(tick => tick.type === 'major')
|
|
18
20
|
.map(tick => {
|
|
19
21
|
const x = (reversed ? end - tick.base : tick.base - start) / bpPerPx;
|
|
20
|
-
return (React.createElement("text", { x: x - 3, y: 7 + 11,
|
|
22
|
+
return (React.createElement("text", { key: `label-${tick.base}`, x: x - 3, y: 7 + 11, fontSize: 11, fill: c }, getTickDisplayStr(tick.base + 1, bpPerPx)));
|
|
21
23
|
})
|
|
22
24
|
: null));
|
|
23
25
|
}
|
|
@@ -25,6 +27,7 @@ export default function SVGRuler({ model, fontSize, }) {
|
|
|
25
27
|
const { dynamicBlocks: { contentBlocks }, offsetPx: viewOffsetPx, bpPerPx, } = model;
|
|
26
28
|
const renderRuler = contentBlocks.length < 5;
|
|
27
29
|
const theme = useTheme();
|
|
30
|
+
const c = Color(theme.palette.text.primary).hex();
|
|
28
31
|
return (React.createElement(React.Fragment, null,
|
|
29
32
|
React.createElement(SVGRegionSeparators, { model: model, height: 30 }),
|
|
30
33
|
contentBlocks.map(block => {
|
|
@@ -37,7 +40,7 @@ export default function SVGRuler({ model, fontSize, }) {
|
|
|
37
40
|
React.createElement("rect", { x: 0, y: 0, width: widthPx, height: 100 }))),
|
|
38
41
|
React.createElement("g", { transform: `translate(${offset} 0)` },
|
|
39
42
|
React.createElement("g", { clipPath: `url(#${clipid})` },
|
|
40
|
-
React.createElement("text", { x: 4, y: fontSize, fontSize: fontSize, fill:
|
|
43
|
+
React.createElement("text", { x: 4, y: fontSize, fontSize: fontSize, fill: c }, refName),
|
|
41
44
|
React.createElement("g", { transform: "translate(0 20)" },
|
|
42
45
|
React.createElement(Ruler, { hideText: !renderRuler, start: start, end: end, bpPerPx: bpPerPx, reversed: reversed }))))));
|
|
43
46
|
})));
|
|
@@ -1,15 +1,19 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import { getBpDisplayStr } from '@jbrowse/core/util';
|
|
3
3
|
import { useTheme } from '@mui/material';
|
|
4
|
+
import Color from 'color';
|
|
4
5
|
export default function SVGScalebar({ model, fontSize, }) {
|
|
5
6
|
const { offsetPx, dynamicBlocks: { totalWidthPxWithoutBorders: totalWidthPx, totalBp }, } = model;
|
|
6
7
|
const theme = useTheme();
|
|
7
8
|
const displayBp = getBpDisplayStr(totalBp);
|
|
8
9
|
const x0 = Math.max(-offsetPx, 0);
|
|
9
10
|
const x1 = x0 + totalWidthPx;
|
|
11
|
+
const c = Color(theme.palette.text.secondary).hex();
|
|
12
|
+
const x = x0 + (x1 - x0) / 2;
|
|
13
|
+
const y = fontSize;
|
|
10
14
|
return (React.createElement(React.Fragment, null,
|
|
11
|
-
React.createElement("line", { x1: x0, x2: x1, y1: 10, y2: 10, stroke:
|
|
12
|
-
React.createElement("line", { x1: x0, x2: x0, y1: 5, y2: 15, stroke:
|
|
13
|
-
React.createElement("line", { x1: x1, x2: x1, y1: 5, y2: 15, stroke:
|
|
14
|
-
React.createElement("text", { x:
|
|
15
|
+
React.createElement("line", { x1: x0, x2: x1, y1: 10, y2: 10, stroke: c }),
|
|
16
|
+
React.createElement("line", { x1: x0, x2: x0, y1: 5, y2: 15, stroke: c }),
|
|
17
|
+
React.createElement("line", { x1: x1, x2: x1, y1: 5, y2: 15, stroke: c }),
|
|
18
|
+
React.createElement("text", { x: x, y: y, textAnchor: "middle", dominantBaseline: "hanging", fontSize: fontSize, fill: c }, displayBp)));
|
|
15
19
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@jbrowse/plugin-linear-genome-view",
|
|
3
|
-
"version": "2.6.
|
|
3
|
+
"version": "2.6.3",
|
|
4
4
|
"description": "JBrowse 2 linear genome view",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"jbrowse",
|
|
@@ -44,6 +44,7 @@
|
|
|
44
44
|
"@types/normalize-wheel": "^1.0.0",
|
|
45
45
|
"clone": "^2.1.2",
|
|
46
46
|
"clsx": "^1.0.4",
|
|
47
|
+
"color": "^3.1.3",
|
|
47
48
|
"copy-to-clipboard": "^3.3.1",
|
|
48
49
|
"file-saver": "^2.0.0",
|
|
49
50
|
"material-ui-popup-state": "^5.0.0",
|
|
@@ -65,5 +66,5 @@
|
|
|
65
66
|
"access": "public"
|
|
66
67
|
},
|
|
67
68
|
"module": "esm/index.js",
|
|
68
|
-
"gitHead": "
|
|
69
|
+
"gitHead": "ed402c87efb0904858d602c363bd1757d5742129"
|
|
69
70
|
}
|