@jbrowse/plugin-linear-genome-view 2.6.2 → 2.7.0
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/BaseLinearDisplay/components/LinearBlocks.d.ts +4 -14
- package/dist/BaseLinearDisplay/components/LinearBlocks.js +4 -5
- package/dist/BaseLinearDisplay/components/Tooltip.js +1 -1
- package/dist/BaseLinearDisplay/models/util.d.ts +2 -6
- package/dist/LinearBasicDisplay/components/SetMaxHeight.d.ts +4 -5
- package/dist/LinearBasicDisplay/components/SetMaxHeight.js +3 -3
- package/dist/LinearBasicDisplay/model.d.ts +3 -1
- package/dist/LinearGenomeView/components/CenterLine.d.ts +3 -4
- package/dist/LinearGenomeView/components/CenterLine.js +3 -3
- package/dist/LinearGenomeView/components/Cytobands.d.ts +6 -2
- package/dist/LinearGenomeView/components/Cytobands.js +37 -38
- package/dist/LinearGenomeView/components/GetSequenceDialog.d.ts +3 -4
- package/dist/LinearGenomeView/components/GetSequenceDialog.js +3 -3
- package/dist/LinearGenomeView/components/Gridlines.d.ts +3 -4
- package/dist/LinearGenomeView/components/Gridlines.js +21 -18
- package/dist/LinearGenomeView/components/ImportForm.d.ts +2 -2
- package/dist/LinearGenomeView/components/ImportForm.js +2 -1
- package/dist/LinearGenomeView/components/LinearGenomeView.js +19 -1
- package/dist/LinearGenomeView/components/MiniControls.js +13 -5
- package/dist/LinearGenomeView/components/OverviewRubberband.d.ts +2 -2
- package/dist/LinearGenomeView/components/OverviewRubberband.js +2 -1
- package/dist/LinearGenomeView/components/OverviewScalebar.d.ts +2 -2
- package/dist/LinearGenomeView/components/OverviewScalebar.js +41 -13
- package/dist/LinearGenomeView/components/RefNameAutocomplete/index.d.ts +2 -2
- package/dist/LinearGenomeView/components/RefNameAutocomplete/index.js +2 -1
- package/dist/LinearGenomeView/components/RefNameAutocomplete/util.d.ts +1 -3
- package/dist/LinearGenomeView/components/Rubberband.d.ts +4 -5
- package/dist/LinearGenomeView/components/Rubberband.js +3 -3
- package/dist/LinearGenomeView/components/Scalebar.d.ts +2 -2
- package/dist/LinearGenomeView/components/Scalebar.js +29 -24
- package/dist/LinearGenomeView/components/SearchBox.d.ts +4 -5
- package/dist/LinearGenomeView/components/SearchBox.js +3 -3
- package/dist/LinearGenomeView/components/SequenceSearchDialog.d.ts +4 -5
- package/dist/LinearGenomeView/components/SequenceSearchDialog.js +20 -18
- package/dist/LinearGenomeView/components/TrackContainer.d.ts +2 -2
- package/dist/LinearGenomeView/components/TrackContainer.js +2 -1
- package/dist/LinearGenomeView/components/TrackLabel.d.ts +2 -2
- package/dist/LinearGenomeView/components/TrackLabel.js +3 -3
- package/dist/LinearGenomeView/components/TrackRenderingContainer.d.ts +2 -2
- package/dist/LinearGenomeView/components/TrackRenderingContainer.js +5 -2
- package/dist/LinearGenomeView/components/TracksContainer.d.ts +2 -2
- package/dist/LinearGenomeView/components/TracksContainer.js +2 -1
- package/dist/LinearGenomeView/components/VerticalGuide.d.ts +3 -4
- package/dist/LinearGenomeView/components/VerticalGuide.js +3 -3
- package/dist/LinearGenomeView/components/ZoomControls.d.ts +3 -4
- package/dist/LinearGenomeView/components/ZoomControls.js +3 -3
- package/dist/LinearGenomeView/components/util.d.ts +1 -1
- package/dist/LinearGenomeView/model.d.ts +6 -6
- package/dist/LinearGenomeView/model.js +33 -0
- package/dist/LinearGenomeView/svgcomponents/SVGBackground.js +2 -1
- package/dist/LinearGenomeView/svgcomponents/SVGHeader.js +5 -6
- package/dist/LinearGenomeView/svgcomponents/SVGLinearGenomeView.js +1 -0
- package/dist/LinearGenomeView/svgcomponents/SVGRuler.js +5 -3
- package/dist/LinearGenomeView/svgcomponents/SVGScalebar.js +7 -4
- package/dist/index.d.ts +37 -37
- package/esm/BaseLinearDisplay/components/LinearBlocks.d.ts +4 -14
- package/esm/BaseLinearDisplay/components/LinearBlocks.js +4 -4
- package/esm/BaseLinearDisplay/components/Tooltip.js +1 -1
- package/esm/BaseLinearDisplay/models/util.d.ts +2 -6
- package/esm/LinearBasicDisplay/components/SetMaxHeight.d.ts +4 -5
- package/esm/LinearBasicDisplay/components/SetMaxHeight.js +3 -3
- package/esm/LinearBasicDisplay/model.d.ts +3 -1
- package/esm/LinearGenomeView/components/CenterLine.d.ts +3 -4
- package/esm/LinearGenomeView/components/CenterLine.js +3 -3
- package/esm/LinearGenomeView/components/Cytobands.d.ts +6 -2
- package/esm/LinearGenomeView/components/Cytobands.js +37 -38
- package/esm/LinearGenomeView/components/GetSequenceDialog.d.ts +3 -4
- package/esm/LinearGenomeView/components/GetSequenceDialog.js +3 -3
- package/esm/LinearGenomeView/components/Gridlines.d.ts +3 -4
- package/esm/LinearGenomeView/components/Gridlines.js +21 -18
- package/esm/LinearGenomeView/components/ImportForm.d.ts +2 -2
- package/esm/LinearGenomeView/components/ImportForm.js +2 -1
- package/esm/LinearGenomeView/components/LinearGenomeView.js +20 -2
- package/esm/LinearGenomeView/components/MiniControls.js +13 -5
- package/esm/LinearGenomeView/components/OverviewRubberband.d.ts +2 -2
- package/esm/LinearGenomeView/components/OverviewRubberband.js +2 -1
- package/esm/LinearGenomeView/components/OverviewScalebar.d.ts +2 -2
- package/esm/LinearGenomeView/components/OverviewScalebar.js +18 -13
- package/esm/LinearGenomeView/components/RefNameAutocomplete/index.d.ts +2 -2
- package/esm/LinearGenomeView/components/RefNameAutocomplete/index.js +2 -1
- package/esm/LinearGenomeView/components/RefNameAutocomplete/util.d.ts +1 -3
- package/esm/LinearGenomeView/components/Rubberband.d.ts +4 -5
- package/esm/LinearGenomeView/components/Rubberband.js +3 -3
- package/esm/LinearGenomeView/components/Scalebar.d.ts +2 -2
- package/esm/LinearGenomeView/components/Scalebar.js +29 -24
- package/esm/LinearGenomeView/components/SearchBox.d.ts +4 -5
- package/esm/LinearGenomeView/components/SearchBox.js +3 -3
- package/esm/LinearGenomeView/components/SequenceSearchDialog.d.ts +4 -5
- package/esm/LinearGenomeView/components/SequenceSearchDialog.js +21 -19
- package/esm/LinearGenomeView/components/TrackContainer.d.ts +2 -2
- package/esm/LinearGenomeView/components/TrackContainer.js +2 -1
- package/esm/LinearGenomeView/components/TrackLabel.d.ts +2 -2
- package/esm/LinearGenomeView/components/TrackLabel.js +3 -3
- package/esm/LinearGenomeView/components/TrackRenderingContainer.d.ts +2 -2
- package/esm/LinearGenomeView/components/TrackRenderingContainer.js +6 -3
- package/esm/LinearGenomeView/components/TracksContainer.d.ts +2 -2
- package/esm/LinearGenomeView/components/TracksContainer.js +2 -1
- package/esm/LinearGenomeView/components/VerticalGuide.d.ts +3 -4
- package/esm/LinearGenomeView/components/VerticalGuide.js +3 -3
- package/esm/LinearGenomeView/components/ZoomControls.d.ts +3 -4
- package/esm/LinearGenomeView/components/ZoomControls.js +3 -3
- package/esm/LinearGenomeView/components/util.d.ts +1 -1
- package/esm/LinearGenomeView/model.d.ts +6 -6
- package/esm/LinearGenomeView/model.js +33 -0
- package/esm/LinearGenomeView/svgcomponents/SVGBackground.js +2 -1
- package/esm/LinearGenomeView/svgcomponents/SVGHeader.js +6 -7
- package/esm/LinearGenomeView/svgcomponents/SVGLinearGenomeView.js +1 -0
- package/esm/LinearGenomeView/svgcomponents/SVGRuler.js +6 -4
- package/esm/LinearGenomeView/svgcomponents/SVGScalebar.js +8 -5
- package/esm/index.d.ts +37 -37
- package/package.json +4 -4
|
@@ -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
|
|
@@ -21,7 +22,7 @@ const useStyles = makeStyles()({
|
|
|
21
22
|
zIndex: 2,
|
|
22
23
|
},
|
|
23
24
|
});
|
|
24
|
-
|
|
25
|
+
const TrackRenderingContainer = observer(function ({ model, track, onDragEnter, }) {
|
|
25
26
|
const { classes } = useStyles();
|
|
26
27
|
const display = track.displays[0];
|
|
27
28
|
const { height, RenderingComponent, DisplayBlurb } = display;
|
|
@@ -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,
|
|
@@ -46,3 +48,4 @@ export default observer(function TrackRenderingContainer({ model, track, onDragE
|
|
|
46
48
|
} },
|
|
47
49
|
React.createElement(DisplayBlurb, { model: display }))) : null)) : null));
|
|
48
50
|
});
|
|
51
|
+
export default TrackRenderingContainer;
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import { LinearGenomeViewModel } from '..';
|
|
3
3
|
type LGV = LinearGenomeViewModel;
|
|
4
|
-
declare const
|
|
4
|
+
declare const TracksContainer: ({ children, model, }: {
|
|
5
5
|
children: React.ReactNode;
|
|
6
6
|
model: LGV;
|
|
7
7
|
}) => React.JSX.Element;
|
|
8
|
-
export default
|
|
8
|
+
export default TracksContainer;
|
|
@@ -19,7 +19,7 @@ const useStyles = makeStyles()({
|
|
|
19
19
|
overflow: 'hidden',
|
|
20
20
|
},
|
|
21
21
|
});
|
|
22
|
-
|
|
22
|
+
const TracksContainer = observer(function TracksContainer({ children, model, }) {
|
|
23
23
|
const { classes } = useStyles();
|
|
24
24
|
const { pluginManager } = getEnv(model);
|
|
25
25
|
const { mouseDown: mouseDown1, mouseUp } = useSideScroll(model);
|
|
@@ -42,3 +42,4 @@ export default observer(function TracksContainer({ children, model, }) {
|
|
|
42
42
|
additional,
|
|
43
43
|
children));
|
|
44
44
|
});
|
|
45
|
+
export default TracksContainer;
|
|
@@ -1,9 +1,8 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import { LinearGenomeViewModel } from '..';
|
|
3
3
|
type LGV = LinearGenomeViewModel;
|
|
4
|
-
declare
|
|
4
|
+
declare const VerticalGuide: ({ model, coordX, }: {
|
|
5
5
|
model: LGV;
|
|
6
6
|
coordX: number;
|
|
7
|
-
})
|
|
8
|
-
|
|
9
|
-
export default _default;
|
|
7
|
+
}) => React.JSX.Element;
|
|
8
|
+
export default VerticalGuide;
|
|
@@ -12,12 +12,12 @@ const useStyles = makeStyles()({
|
|
|
12
12
|
zIndex: 10,
|
|
13
13
|
},
|
|
14
14
|
});
|
|
15
|
-
function VerticalGuide({ model, coordX }) {
|
|
15
|
+
const VerticalGuide = observer(function VerticalGuide({ model, coordX, }) {
|
|
16
16
|
const { classes } = useStyles();
|
|
17
17
|
return (React.createElement(Tooltip, { open: true, placement: "top", title: stringify(model.pxToBp(coordX)), arrow: true },
|
|
18
18
|
React.createElement("div", { className: classes.guide, style: {
|
|
19
19
|
left: coordX,
|
|
20
20
|
background: 'red',
|
|
21
21
|
} })));
|
|
22
|
-
}
|
|
23
|
-
export default
|
|
22
|
+
});
|
|
23
|
+
export default VerticalGuide;
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import { LinearGenomeViewModel } from '..';
|
|
3
|
-
declare
|
|
3
|
+
declare const ZoomControls: ({ model, }: {
|
|
4
4
|
model: LinearGenomeViewModel;
|
|
5
|
-
})
|
|
6
|
-
|
|
7
|
-
export default _default;
|
|
5
|
+
}) => React.JSX.Element;
|
|
6
|
+
export default ZoomControls;
|
|
@@ -15,7 +15,7 @@ const useStyles = makeStyles()(theme => ({
|
|
|
15
15
|
color: theme.palette.text.secondary,
|
|
16
16
|
},
|
|
17
17
|
}));
|
|
18
|
-
|
|
18
|
+
const ZoomControls = observer(function ({ model, }) {
|
|
19
19
|
const { classes } = useStyles();
|
|
20
20
|
const { maxBpPerPx, minBpPerPx, bpPerPx, scaleFactor } = model;
|
|
21
21
|
const [value, setValue] = useState(-Math.log2(bpPerPx) * 100);
|
|
@@ -28,5 +28,5 @@ function ZoomControls({ model }) {
|
|
|
28
28
|
React.createElement(Slider, { size: "small", className: classes.slider, value: value, min: -Math.log2(maxBpPerPx) * 100, max: -Math.log2(minBpPerPx) * 100, onChange: (_, val) => setValue(val), onChangeCommitted: () => model.zoomTo(2 ** (-value / 100)), disabled: scaleFactor !== 1 }),
|
|
29
29
|
React.createElement(IconButton, { "data-testid": "zoom_in", onClick: () => model.zoom(model.bpPerPx / 2), disabled: bpPerPx <= minBpPerPx + 0.0001 || scaleFactor !== 1, size: "large" },
|
|
30
30
|
React.createElement(ZoomIn, null))));
|
|
31
|
-
}
|
|
32
|
-
export default
|
|
31
|
+
});
|
|
32
|
+
export default ZoomControls;
|
|
@@ -87,12 +87,10 @@ export declare function stateModelFactory(pluginManager: PluginManager): import(
|
|
|
87
87
|
volatileWidth: number | undefined;
|
|
88
88
|
minimumBlockWidth: number;
|
|
89
89
|
draggingTrackId: string | undefined;
|
|
90
|
-
volatileError:
|
|
90
|
+
volatileError: unknown;
|
|
91
91
|
afterDisplayedRegionsSetCallbacks: Function[];
|
|
92
92
|
scaleFactor: number;
|
|
93
|
-
trackRefs:
|
|
94
|
-
[key: string]: HTMLDivElement;
|
|
95
|
-
};
|
|
93
|
+
trackRefs: Record<string, HTMLDivElement>;
|
|
96
94
|
coarseDynamicBlocks: BaseBlock[];
|
|
97
95
|
coarseTotalBp: number;
|
|
98
96
|
leftOffset: BpOffset | undefined;
|
|
@@ -170,7 +168,7 @@ export declare function stateModelFactory(pluginManager: PluginManager): import(
|
|
|
170
168
|
/**
|
|
171
169
|
* #getter
|
|
172
170
|
*/
|
|
173
|
-
readonly error:
|
|
171
|
+
readonly error: {};
|
|
174
172
|
/**
|
|
175
173
|
* #getter
|
|
176
174
|
*/
|
|
@@ -224,7 +222,7 @@ export declare function stateModelFactory(pluginManager: PluginManager): import(
|
|
|
224
222
|
/**
|
|
225
223
|
* #action
|
|
226
224
|
*/
|
|
227
|
-
setError(error:
|
|
225
|
+
setError(error: unknown): void;
|
|
228
226
|
/**
|
|
229
227
|
* #action
|
|
230
228
|
*/
|
|
@@ -545,6 +543,8 @@ export declare function stateModelFactory(pluginManager: PluginManager): import(
|
|
|
545
543
|
end: number;
|
|
546
544
|
reversed: boolean;
|
|
547
545
|
} | undefined;
|
|
546
|
+
} & {
|
|
547
|
+
afterCreate(): void;
|
|
548
548
|
}, import("mobx-state-tree")._NotCustomized, import("mobx-state-tree")._NotCustomized>;
|
|
549
549
|
export type LinearGenomeViewStateModel = ReturnType<typeof stateModelFactory>;
|
|
550
550
|
export type LinearGenomeViewModel = Instance<LinearGenomeViewStateModel>;
|
|
@@ -1227,6 +1227,39 @@ export function stateModelFactory(pluginManager) {
|
|
|
1227
1227
|
? this.pxToBp(self.width / 2)
|
|
1228
1228
|
: undefined;
|
|
1229
1229
|
},
|
|
1230
|
+
}))
|
|
1231
|
+
.actions(self => ({
|
|
1232
|
+
afterCreate() {
|
|
1233
|
+
function handler(e) {
|
|
1234
|
+
const session = getSession(self);
|
|
1235
|
+
if (session.focusedViewId === self.id && (e.ctrlKey || e.metaKey)) {
|
|
1236
|
+
if (e.code === 'ArrowLeft') {
|
|
1237
|
+
e.preventDefault();
|
|
1238
|
+
// pan left
|
|
1239
|
+
self.slide(-0.9);
|
|
1240
|
+
}
|
|
1241
|
+
if (e.code === 'ArrowRight') {
|
|
1242
|
+
e.preventDefault();
|
|
1243
|
+
// pan right
|
|
1244
|
+
self.slide(0.9);
|
|
1245
|
+
}
|
|
1246
|
+
if (e.code === 'ArrowUp' && self.scaleFactor === 1) {
|
|
1247
|
+
e.preventDefault();
|
|
1248
|
+
// zoom in
|
|
1249
|
+
self.zoom(self.bpPerPx / 2);
|
|
1250
|
+
}
|
|
1251
|
+
if (e.code === 'ArrowDown' && self.scaleFactor === 1) {
|
|
1252
|
+
e.preventDefault();
|
|
1253
|
+
// zoom out
|
|
1254
|
+
self.zoom(self.bpPerPx * 2);
|
|
1255
|
+
}
|
|
1256
|
+
}
|
|
1257
|
+
}
|
|
1258
|
+
document.addEventListener('keydown', handler);
|
|
1259
|
+
addDisposer(self, () => {
|
|
1260
|
+
document.removeEventListener('keydown', handler);
|
|
1261
|
+
});
|
|
1262
|
+
},
|
|
1230
1263
|
}));
|
|
1231
1264
|
}
|
|
1232
1265
|
export { default as ReactComponent, default as LinearGenomeView, } from './components/LinearGenomeView';
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import { useTheme } from '@mui/material';
|
|
3
|
+
import { stripAlpha } from '@jbrowse/core/util';
|
|
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: stripAlpha(theme.palette.background.default) }));
|
|
6
7
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
import { getSession } from '@jbrowse/core/util';
|
|
2
|
+
import { getSession, stripAlpha } from '@jbrowse/core/util';
|
|
3
3
|
import Base1DView from '@jbrowse/core/util/Base1DViewModel';
|
|
4
4
|
import { useTheme } from '@mui/material';
|
|
5
5
|
// locals
|
|
@@ -14,6 +14,7 @@ export default function SVGHeader({ model, fontSize, cytobandHeight, rulerHeight
|
|
|
14
14
|
const assemblyName = assemblyNames.length > 1 ? '' : assemblyNames[0];
|
|
15
15
|
const assembly = assemblyManager.get(assemblyName);
|
|
16
16
|
const theme = useTheme();
|
|
17
|
+
const c = stripAlpha(theme.palette.text.primary);
|
|
17
18
|
const overview = Base1DView.create({
|
|
18
19
|
displayedRegions: JSON.parse(JSON.stringify(displayedRegions)),
|
|
19
20
|
interRegionPaddingWidth: 0,
|
|
@@ -26,9 +27,7 @@ export default function SVGHeader({ model, fontSize, cytobandHeight, rulerHeight
|
|
|
26
27
|
overview.setVolatileWidth(width);
|
|
27
28
|
overview.showAllRegions();
|
|
28
29
|
const block = overview.dynamicBlocks.contentBlocks[0];
|
|
29
|
-
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
30
30
|
const first = visibleRegions.at(0);
|
|
31
|
-
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
32
31
|
const last = visibleRegions.at(-1);
|
|
33
32
|
const firstOverviewPx = overview.bpToPx({
|
|
34
33
|
...first,
|
|
@@ -38,16 +37,16 @@ export default function SVGHeader({ model, fontSize, cytobandHeight, rulerHeight
|
|
|
38
37
|
...last,
|
|
39
38
|
coord: last.reversed ? last.start : last.end,
|
|
40
39
|
}) || 0;
|
|
41
|
-
const
|
|
40
|
+
const y = +showCytobands * cytobandHeight;
|
|
42
41
|
return (React.createElement("g", { id: "header" },
|
|
43
|
-
React.createElement("text", { x: 0, y:
|
|
42
|
+
React.createElement("text", { x: 0, y: 0, dominantBaseline: "hanging", fontSize: fontSize, fill: c }, assemblyName),
|
|
44
43
|
showCytobands ? (React.createElement("g", { transform: `translate(0 ${rulerHeight})` },
|
|
45
44
|
React.createElement(Cytobands, { overview: overview, assembly: assembly, block: block }),
|
|
46
45
|
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
46
|
React.createElement("g", { transform: `translate(0,${HEADER_OVERVIEW_HEIGHT})` },
|
|
48
47
|
React.createElement(Polygon, { overview: overview, model: model, useOffset: false })))) : null,
|
|
49
|
-
React.createElement("g", { transform: `translate(0 ${fontSize +
|
|
48
|
+
React.createElement("g", { transform: `translate(0 ${fontSize + y})` },
|
|
50
49
|
React.createElement(SVGScalebar, { model: model, fontSize: fontSize })),
|
|
51
|
-
React.createElement("g", { transform: `translate(0 ${rulerHeight +
|
|
50
|
+
React.createElement("g", { transform: `translate(0 ${rulerHeight + y})` },
|
|
52
51
|
React.createElement(SVGRuler, { model: model, fontSize: fontSize }))));
|
|
53
52
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
import { getTickDisplayStr } from '@jbrowse/core/util';
|
|
2
|
+
import { getTickDisplayStr, stripAlpha } from '@jbrowse/core/util';
|
|
3
3
|
import { useTheme } from '@mui/material';
|
|
4
4
|
// locals
|
|
5
5
|
import { makeTicks } from '../util';
|
|
@@ -7,17 +7,18 @@ import SVGRegionSeparators from './SVGRegionSeparators';
|
|
|
7
7
|
function Ruler({ start, end, bpPerPx, reversed = false, major = true, minor = true, hideText = false, }) {
|
|
8
8
|
const ticks = makeTicks(start, end, bpPerPx, major, minor);
|
|
9
9
|
const theme = useTheme();
|
|
10
|
+
const c = stripAlpha(theme.palette.text.secondary);
|
|
10
11
|
return (React.createElement(React.Fragment, null,
|
|
11
12
|
ticks.map(tick => {
|
|
12
13
|
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:
|
|
14
|
+
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
15
|
}),
|
|
15
16
|
!hideText
|
|
16
17
|
? ticks
|
|
17
18
|
.filter(tick => tick.type === 'major')
|
|
18
19
|
.map(tick => {
|
|
19
20
|
const x = (reversed ? end - tick.base : tick.base - start) / bpPerPx;
|
|
20
|
-
return (React.createElement("text", { x: x - 3, y: 7 + 11,
|
|
21
|
+
return (React.createElement("text", { key: `label-${tick.base}`, x: x - 3, y: 7 + 11, fontSize: 11, fill: c }, getTickDisplayStr(tick.base + 1, bpPerPx)));
|
|
21
22
|
})
|
|
22
23
|
: null));
|
|
23
24
|
}
|
|
@@ -25,6 +26,7 @@ export default function SVGRuler({ model, fontSize, }) {
|
|
|
25
26
|
const { dynamicBlocks: { contentBlocks }, offsetPx: viewOffsetPx, bpPerPx, } = model;
|
|
26
27
|
const renderRuler = contentBlocks.length < 5;
|
|
27
28
|
const theme = useTheme();
|
|
29
|
+
const c = stripAlpha(theme.palette.text.primary);
|
|
28
30
|
return (React.createElement(React.Fragment, null,
|
|
29
31
|
React.createElement(SVGRegionSeparators, { model: model, height: 30 }),
|
|
30
32
|
contentBlocks.map(block => {
|
|
@@ -37,7 +39,7 @@ export default function SVGRuler({ model, fontSize, }) {
|
|
|
37
39
|
React.createElement("rect", { x: 0, y: 0, width: widthPx, height: 100 }))),
|
|
38
40
|
React.createElement("g", { transform: `translate(${offset} 0)` },
|
|
39
41
|
React.createElement("g", { clipPath: `url(#${clipid})` },
|
|
40
|
-
React.createElement("text", { x: 4, y: fontSize, fontSize: fontSize, fill:
|
|
42
|
+
React.createElement("text", { x: 4, y: fontSize, fontSize: fontSize, fill: c }, refName),
|
|
41
43
|
React.createElement("g", { transform: "translate(0 20)" },
|
|
42
44
|
React.createElement(Ruler, { hideText: !renderRuler, start: start, end: end, bpPerPx: bpPerPx, reversed: reversed }))))));
|
|
43
45
|
})));
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
import { getBpDisplayStr } from '@jbrowse/core/util';
|
|
2
|
+
import { getBpDisplayStr, stripAlpha } from '@jbrowse/core/util';
|
|
3
3
|
import { useTheme } from '@mui/material';
|
|
4
4
|
export default function SVGScalebar({ model, fontSize, }) {
|
|
5
5
|
const { offsetPx, dynamicBlocks: { totalWidthPxWithoutBorders: totalWidthPx, totalBp }, } = model;
|
|
@@ -7,9 +7,12 @@ export default function SVGScalebar({ model, fontSize, }) {
|
|
|
7
7
|
const displayBp = getBpDisplayStr(totalBp);
|
|
8
8
|
const x0 = Math.max(-offsetPx, 0);
|
|
9
9
|
const x1 = x0 + totalWidthPx;
|
|
10
|
+
const c = stripAlpha(theme.palette.text.secondary);
|
|
11
|
+
const x = x0 + (x1 - x0) / 2;
|
|
12
|
+
const y = fontSize;
|
|
10
13
|
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:
|
|
14
|
+
React.createElement("line", { x1: x0, x2: x1, y1: 10, y2: 10, stroke: c }),
|
|
15
|
+
React.createElement("line", { x1: x0, x2: x0, y1: 5, y2: 15, stroke: c }),
|
|
16
|
+
React.createElement("line", { x1: x1, x2: x1, y1: 5, y2: 15, stroke: c }),
|
|
17
|
+
React.createElement("text", { x: x, y: y, textAnchor: "middle", dominantBaseline: "hanging", fontSize: fontSize, fill: c }, displayBp)));
|
|
15
18
|
}
|
package/esm/index.d.ts
CHANGED
|
@@ -910,12 +910,10 @@ export default class LinearGenomeViewPlugin extends Plugin {
|
|
|
910
910
|
volatileWidth: number | undefined;
|
|
911
911
|
minimumBlockWidth: number;
|
|
912
912
|
draggingTrackId: string | undefined;
|
|
913
|
-
volatileError:
|
|
913
|
+
volatileError: unknown;
|
|
914
914
|
afterDisplayedRegionsSetCallbacks: Function[];
|
|
915
915
|
scaleFactor: number;
|
|
916
|
-
trackRefs:
|
|
917
|
-
[key: string]: HTMLDivElement;
|
|
918
|
-
};
|
|
916
|
+
trackRefs: Record<string, HTMLDivElement>;
|
|
919
917
|
coarseDynamicBlocks: import("@jbrowse/core/util/blockTypes").BaseBlock[];
|
|
920
918
|
coarseTotalBp: number;
|
|
921
919
|
leftOffset: import("./LinearGenomeView").BpOffset | undefined;
|
|
@@ -939,7 +937,7 @@ export default class LinearGenomeViewPlugin extends Plugin {
|
|
|
939
937
|
readonly totalBp: number;
|
|
940
938
|
readonly maxBpPerPx: number;
|
|
941
939
|
readonly minBpPerPx: number;
|
|
942
|
-
readonly error:
|
|
940
|
+
readonly error: {};
|
|
943
941
|
readonly maxOffset: number;
|
|
944
942
|
readonly minOffset: number;
|
|
945
943
|
readonly displayedRegionsTotalPx: number;
|
|
@@ -956,7 +954,7 @@ export default class LinearGenomeViewPlugin extends Plugin {
|
|
|
956
954
|
} & {
|
|
957
955
|
setShowCytobands(flag: boolean): void;
|
|
958
956
|
setWidth(newWidth: number): void;
|
|
959
|
-
setError(error:
|
|
957
|
+
setError(error: unknown): void;
|
|
960
958
|
toggleHeader(): void;
|
|
961
959
|
toggleHeaderOverview(): void;
|
|
962
960
|
toggleNoTracksActive(): void;
|
|
@@ -1058,6 +1056,8 @@ export default class LinearGenomeViewPlugin extends Plugin {
|
|
|
1058
1056
|
end: number;
|
|
1059
1057
|
reversed: boolean;
|
|
1060
1058
|
} | undefined;
|
|
1059
|
+
} & {
|
|
1060
|
+
afterCreate(): void;
|
|
1061
1061
|
} & import("mobx-state-tree").IStateTreeNode<import("mobx-state-tree").IModelType<{
|
|
1062
1062
|
id: import("mobx-state-tree").IOptionalIType<import("mobx-state-tree").ISimpleType<string>, [undefined]>;
|
|
1063
1063
|
displayName: import("mobx-state-tree").IMaybe<import("mobx-state-tree").ISimpleType<string>>;
|
|
@@ -1098,12 +1098,10 @@ export default class LinearGenomeViewPlugin extends Plugin {
|
|
|
1098
1098
|
volatileWidth: number | undefined;
|
|
1099
1099
|
minimumBlockWidth: number;
|
|
1100
1100
|
draggingTrackId: string | undefined;
|
|
1101
|
-
volatileError:
|
|
1101
|
+
volatileError: unknown;
|
|
1102
1102
|
afterDisplayedRegionsSetCallbacks: Function[];
|
|
1103
1103
|
scaleFactor: number;
|
|
1104
|
-
trackRefs:
|
|
1105
|
-
[key: string]: HTMLDivElement;
|
|
1106
|
-
};
|
|
1104
|
+
trackRefs: Record<string, HTMLDivElement>;
|
|
1107
1105
|
coarseDynamicBlocks: import("@jbrowse/core/util/blockTypes").BaseBlock[];
|
|
1108
1106
|
coarseTotalBp: number;
|
|
1109
1107
|
leftOffset: import("./LinearGenomeView").BpOffset | undefined;
|
|
@@ -1127,7 +1125,7 @@ export default class LinearGenomeViewPlugin extends Plugin {
|
|
|
1127
1125
|
readonly totalBp: number;
|
|
1128
1126
|
readonly maxBpPerPx: number;
|
|
1129
1127
|
readonly minBpPerPx: number;
|
|
1130
|
-
readonly error:
|
|
1128
|
+
readonly error: {};
|
|
1131
1129
|
readonly maxOffset: number;
|
|
1132
1130
|
readonly minOffset: number;
|
|
1133
1131
|
readonly displayedRegionsTotalPx: number;
|
|
@@ -1144,7 +1142,7 @@ export default class LinearGenomeViewPlugin extends Plugin {
|
|
|
1144
1142
|
} & {
|
|
1145
1143
|
setShowCytobands(flag: boolean): void;
|
|
1146
1144
|
setWidth(newWidth: number): void;
|
|
1147
|
-
setError(error:
|
|
1145
|
+
setError(error: unknown): void;
|
|
1148
1146
|
toggleHeader(): void;
|
|
1149
1147
|
toggleHeaderOverview(): void;
|
|
1150
1148
|
toggleNoTracksActive(): void;
|
|
@@ -1246,9 +1244,11 @@ export default class LinearGenomeViewPlugin extends Plugin {
|
|
|
1246
1244
|
end: number;
|
|
1247
1245
|
reversed: boolean;
|
|
1248
1246
|
} | undefined;
|
|
1247
|
+
} & {
|
|
1248
|
+
afterCreate(): void;
|
|
1249
1249
|
}, import("mobx-state-tree")._NotCustomized, import("mobx-state-tree")._NotCustomized>>;
|
|
1250
1250
|
}) => import("react").JSX.Element;
|
|
1251
|
-
ZoomControls: ({ model }: {
|
|
1251
|
+
ZoomControls: ({ model, }: {
|
|
1252
1252
|
model: {
|
|
1253
1253
|
id: string;
|
|
1254
1254
|
displayName: string | undefined;
|
|
@@ -1296,12 +1296,10 @@ export default class LinearGenomeViewPlugin extends Plugin {
|
|
|
1296
1296
|
volatileWidth: number | undefined;
|
|
1297
1297
|
minimumBlockWidth: number;
|
|
1298
1298
|
draggingTrackId: string | undefined;
|
|
1299
|
-
volatileError:
|
|
1299
|
+
volatileError: unknown;
|
|
1300
1300
|
afterDisplayedRegionsSetCallbacks: Function[];
|
|
1301
1301
|
scaleFactor: number;
|
|
1302
|
-
trackRefs:
|
|
1303
|
-
[key: string]: HTMLDivElement;
|
|
1304
|
-
};
|
|
1302
|
+
trackRefs: Record<string, HTMLDivElement>;
|
|
1305
1303
|
coarseDynamicBlocks: import("@jbrowse/core/util/blockTypes").BaseBlock[];
|
|
1306
1304
|
coarseTotalBp: number;
|
|
1307
1305
|
leftOffset: import("./LinearGenomeView").BpOffset | undefined;
|
|
@@ -1325,7 +1323,7 @@ export default class LinearGenomeViewPlugin extends Plugin {
|
|
|
1325
1323
|
readonly totalBp: number;
|
|
1326
1324
|
readonly maxBpPerPx: number;
|
|
1327
1325
|
readonly minBpPerPx: number;
|
|
1328
|
-
readonly error:
|
|
1326
|
+
readonly error: {};
|
|
1329
1327
|
readonly maxOffset: number;
|
|
1330
1328
|
readonly minOffset: number;
|
|
1331
1329
|
readonly displayedRegionsTotalPx: number;
|
|
@@ -1342,7 +1340,7 @@ export default class LinearGenomeViewPlugin extends Plugin {
|
|
|
1342
1340
|
} & {
|
|
1343
1341
|
setShowCytobands(flag: boolean): void;
|
|
1344
1342
|
setWidth(newWidth: number): void;
|
|
1345
|
-
setError(error:
|
|
1343
|
+
setError(error: unknown): void;
|
|
1346
1344
|
toggleHeader(): void;
|
|
1347
1345
|
toggleHeaderOverview(): void;
|
|
1348
1346
|
toggleNoTracksActive(): void;
|
|
@@ -1444,6 +1442,8 @@ export default class LinearGenomeViewPlugin extends Plugin {
|
|
|
1444
1442
|
end: number;
|
|
1445
1443
|
reversed: boolean;
|
|
1446
1444
|
} | undefined;
|
|
1445
|
+
} & {
|
|
1446
|
+
afterCreate(): void;
|
|
1447
1447
|
} & import("mobx-state-tree").IStateTreeNode<import("mobx-state-tree").IModelType<{
|
|
1448
1448
|
id: import("mobx-state-tree").IOptionalIType<import("mobx-state-tree").ISimpleType<string>, [undefined]>;
|
|
1449
1449
|
displayName: import("mobx-state-tree").IMaybe<import("mobx-state-tree").ISimpleType<string>>;
|
|
@@ -1484,12 +1484,10 @@ export default class LinearGenomeViewPlugin extends Plugin {
|
|
|
1484
1484
|
volatileWidth: number | undefined;
|
|
1485
1485
|
minimumBlockWidth: number;
|
|
1486
1486
|
draggingTrackId: string | undefined;
|
|
1487
|
-
volatileError:
|
|
1487
|
+
volatileError: unknown;
|
|
1488
1488
|
afterDisplayedRegionsSetCallbacks: Function[];
|
|
1489
1489
|
scaleFactor: number;
|
|
1490
|
-
trackRefs:
|
|
1491
|
-
[key: string]: HTMLDivElement;
|
|
1492
|
-
};
|
|
1490
|
+
trackRefs: Record<string, HTMLDivElement>;
|
|
1493
1491
|
coarseDynamicBlocks: import("@jbrowse/core/util/blockTypes").BaseBlock[];
|
|
1494
1492
|
coarseTotalBp: number;
|
|
1495
1493
|
leftOffset: import("./LinearGenomeView").BpOffset | undefined;
|
|
@@ -1513,7 +1511,7 @@ export default class LinearGenomeViewPlugin extends Plugin {
|
|
|
1513
1511
|
readonly totalBp: number;
|
|
1514
1512
|
readonly maxBpPerPx: number;
|
|
1515
1513
|
readonly minBpPerPx: number;
|
|
1516
|
-
readonly error:
|
|
1514
|
+
readonly error: {};
|
|
1517
1515
|
readonly maxOffset: number;
|
|
1518
1516
|
readonly minOffset: number;
|
|
1519
1517
|
readonly displayedRegionsTotalPx: number;
|
|
@@ -1530,7 +1528,7 @@ export default class LinearGenomeViewPlugin extends Plugin {
|
|
|
1530
1528
|
} & {
|
|
1531
1529
|
setShowCytobands(flag: boolean): void;
|
|
1532
1530
|
setWidth(newWidth: number): void;
|
|
1533
|
-
setError(error:
|
|
1531
|
+
setError(error: unknown): void;
|
|
1534
1532
|
toggleHeader(): void;
|
|
1535
1533
|
toggleHeaderOverview(): void;
|
|
1536
1534
|
toggleNoTracksActive(): void;
|
|
@@ -1632,6 +1630,8 @@ export default class LinearGenomeViewPlugin extends Plugin {
|
|
|
1632
1630
|
end: number;
|
|
1633
1631
|
reversed: boolean;
|
|
1634
1632
|
} | undefined;
|
|
1633
|
+
} & {
|
|
1634
|
+
afterCreate(): void;
|
|
1635
1635
|
}, import("mobx-state-tree")._NotCustomized, import("mobx-state-tree")._NotCustomized>>;
|
|
1636
1636
|
}) => import("react").JSX.Element;
|
|
1637
1637
|
LinearGenomeView: ({ model }: {
|
|
@@ -1682,12 +1682,10 @@ export default class LinearGenomeViewPlugin extends Plugin {
|
|
|
1682
1682
|
volatileWidth: number | undefined;
|
|
1683
1683
|
minimumBlockWidth: number;
|
|
1684
1684
|
draggingTrackId: string | undefined;
|
|
1685
|
-
volatileError:
|
|
1685
|
+
volatileError: unknown;
|
|
1686
1686
|
afterDisplayedRegionsSetCallbacks: Function[];
|
|
1687
1687
|
scaleFactor: number;
|
|
1688
|
-
trackRefs:
|
|
1689
|
-
[key: string]: HTMLDivElement;
|
|
1690
|
-
};
|
|
1688
|
+
trackRefs: Record<string, HTMLDivElement>;
|
|
1691
1689
|
coarseDynamicBlocks: import("@jbrowse/core/util/blockTypes").BaseBlock[];
|
|
1692
1690
|
coarseTotalBp: number;
|
|
1693
1691
|
leftOffset: import("./LinearGenomeView").BpOffset | undefined;
|
|
@@ -1711,7 +1709,7 @@ export default class LinearGenomeViewPlugin extends Plugin {
|
|
|
1711
1709
|
readonly totalBp: number;
|
|
1712
1710
|
readonly maxBpPerPx: number;
|
|
1713
1711
|
readonly minBpPerPx: number;
|
|
1714
|
-
readonly error:
|
|
1712
|
+
readonly error: {};
|
|
1715
1713
|
readonly maxOffset: number;
|
|
1716
1714
|
readonly minOffset: number;
|
|
1717
1715
|
readonly displayedRegionsTotalPx: number;
|
|
@@ -1728,7 +1726,7 @@ export default class LinearGenomeViewPlugin extends Plugin {
|
|
|
1728
1726
|
} & {
|
|
1729
1727
|
setShowCytobands(flag: boolean): void;
|
|
1730
1728
|
setWidth(newWidth: number): void;
|
|
1731
|
-
setError(error:
|
|
1729
|
+
setError(error: unknown): void;
|
|
1732
1730
|
toggleHeader(): void;
|
|
1733
1731
|
toggleHeaderOverview(): void;
|
|
1734
1732
|
toggleNoTracksActive(): void;
|
|
@@ -1830,6 +1828,8 @@ export default class LinearGenomeViewPlugin extends Plugin {
|
|
|
1830
1828
|
end: number;
|
|
1831
1829
|
reversed: boolean;
|
|
1832
1830
|
} | undefined;
|
|
1831
|
+
} & {
|
|
1832
|
+
afterCreate(): void;
|
|
1833
1833
|
} & import("mobx-state-tree").IStateTreeNode<import("mobx-state-tree").IModelType<{
|
|
1834
1834
|
id: import("mobx-state-tree").IOptionalIType<import("mobx-state-tree").ISimpleType<string>, [undefined]>;
|
|
1835
1835
|
displayName: import("mobx-state-tree").IMaybe<import("mobx-state-tree").ISimpleType<string>>;
|
|
@@ -1870,12 +1870,10 @@ export default class LinearGenomeViewPlugin extends Plugin {
|
|
|
1870
1870
|
volatileWidth: number | undefined;
|
|
1871
1871
|
minimumBlockWidth: number;
|
|
1872
1872
|
draggingTrackId: string | undefined;
|
|
1873
|
-
volatileError:
|
|
1873
|
+
volatileError: unknown;
|
|
1874
1874
|
afterDisplayedRegionsSetCallbacks: Function[];
|
|
1875
1875
|
scaleFactor: number;
|
|
1876
|
-
trackRefs:
|
|
1877
|
-
[key: string]: HTMLDivElement;
|
|
1878
|
-
};
|
|
1876
|
+
trackRefs: Record<string, HTMLDivElement>;
|
|
1879
1877
|
coarseDynamicBlocks: import("@jbrowse/core/util/blockTypes").BaseBlock[];
|
|
1880
1878
|
coarseTotalBp: number;
|
|
1881
1879
|
leftOffset: import("./LinearGenomeView").BpOffset | undefined;
|
|
@@ -1899,7 +1897,7 @@ export default class LinearGenomeViewPlugin extends Plugin {
|
|
|
1899
1897
|
readonly totalBp: number;
|
|
1900
1898
|
readonly maxBpPerPx: number;
|
|
1901
1899
|
readonly minBpPerPx: number;
|
|
1902
|
-
readonly error:
|
|
1900
|
+
readonly error: {};
|
|
1903
1901
|
readonly maxOffset: number;
|
|
1904
1902
|
readonly minOffset: number;
|
|
1905
1903
|
readonly displayedRegionsTotalPx: number;
|
|
@@ -1916,7 +1914,7 @@ export default class LinearGenomeViewPlugin extends Plugin {
|
|
|
1916
1914
|
} & {
|
|
1917
1915
|
setShowCytobands(flag: boolean): void;
|
|
1918
1916
|
setWidth(newWidth: number): void;
|
|
1919
|
-
setError(error:
|
|
1917
|
+
setError(error: unknown): void;
|
|
1920
1918
|
toggleHeader(): void;
|
|
1921
1919
|
toggleHeaderOverview(): void;
|
|
1922
1920
|
toggleNoTracksActive(): void;
|
|
@@ -2018,6 +2016,8 @@ export default class LinearGenomeViewPlugin extends Plugin {
|
|
|
2018
2016
|
end: number;
|
|
2019
2017
|
reversed: boolean;
|
|
2020
2018
|
} | undefined;
|
|
2019
|
+
} & {
|
|
2020
|
+
afterCreate(): void;
|
|
2021
2021
|
}, import("mobx-state-tree")._NotCustomized, import("mobx-state-tree")._NotCustomized>>;
|
|
2022
2022
|
}) => import("react").JSX.Element;
|
|
2023
2023
|
};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@jbrowse/plugin-linear-genome-view",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.7.0",
|
|
4
4
|
"description": "JBrowse 2 linear genome view",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"jbrowse",
|
|
@@ -43,7 +43,7 @@
|
|
|
43
43
|
"@types/file-saver": "^2.0.1",
|
|
44
44
|
"@types/normalize-wheel": "^1.0.0",
|
|
45
45
|
"clone": "^2.1.2",
|
|
46
|
-
"clsx": "^
|
|
46
|
+
"clsx": "^2.0.0",
|
|
47
47
|
"copy-to-clipboard": "^3.3.1",
|
|
48
48
|
"file-saver": "^2.0.0",
|
|
49
49
|
"material-ui-popup-state": "^5.0.0",
|
|
@@ -55,7 +55,7 @@
|
|
|
55
55
|
"@jbrowse/core": "^2.0.0",
|
|
56
56
|
"@mui/material": "^5.0.0",
|
|
57
57
|
"mobx": "^6.0.0",
|
|
58
|
-
"mobx-react": "^
|
|
58
|
+
"mobx-react": "^9.0.0",
|
|
59
59
|
"mobx-state-tree": "^5.0.0",
|
|
60
60
|
"react": ">=16.8.0",
|
|
61
61
|
"react-dom": ">=16.8.0",
|
|
@@ -65,5 +65,5 @@
|
|
|
65
65
|
"access": "public"
|
|
66
66
|
},
|
|
67
67
|
"module": "esm/index.js",
|
|
68
|
-
"gitHead": "
|
|
68
|
+
"gitHead": "dbe7fb1af01fc89f833d2744635eb44a17365b41"
|
|
69
69
|
}
|