@jbrowse/plugin-linear-genome-view 1.7.9 → 2.0.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/BaseLinearDisplay.d.ts +1 -5
- package/dist/BaseLinearDisplay/components/BaseLinearDisplay.js +118 -226
- package/dist/BaseLinearDisplay/components/BaseLinearDisplay.js.map +1 -0
- package/dist/BaseLinearDisplay/components/Block.js +53 -74
- package/dist/BaseLinearDisplay/components/Block.js.map +1 -0
- package/dist/BaseLinearDisplay/components/LinearBlocks.d.ts +11 -1
- package/dist/BaseLinearDisplay/components/LinearBlocks.js +64 -103
- package/dist/BaseLinearDisplay/components/LinearBlocks.js.map +1 -0
- package/dist/BaseLinearDisplay/components/ServerSideRenderedBlockContent.js +145 -175
- package/dist/BaseLinearDisplay/components/ServerSideRenderedBlockContent.js.map +1 -0
- package/dist/BaseLinearDisplay/components/Tooltip.d.ts +8 -0
- package/dist/BaseLinearDisplay/components/Tooltip.js +118 -0
- package/dist/BaseLinearDisplay/components/Tooltip.js.map +1 -0
- package/dist/BaseLinearDisplay/index.js +13 -40
- package/dist/BaseLinearDisplay/index.js.map +1 -0
- package/dist/BaseLinearDisplay/models/BaseLinearDisplayModel.d.ts +20 -15
- package/dist/BaseLinearDisplay/models/BaseLinearDisplayModel.js +605 -683
- package/dist/BaseLinearDisplay/models/BaseLinearDisplayModel.js.map +1 -0
- package/dist/BaseLinearDisplay/models/baseLinearDisplayConfigSchema.js +15 -22
- package/dist/BaseLinearDisplay/models/baseLinearDisplayConfigSchema.js.map +1 -0
- package/dist/BaseLinearDisplay/models/serverSideRenderedBlock.d.ts +7 -8
- package/dist/BaseLinearDisplay/models/serverSideRenderedBlock.js +266 -312
- package/dist/BaseLinearDisplay/models/serverSideRenderedBlock.js.map +1 -0
- package/dist/LinearBareDisplay/configSchema.js +11 -17
- package/dist/LinearBareDisplay/configSchema.js.map +1 -0
- package/dist/LinearBareDisplay/index.js +7 -20
- package/dist/LinearBareDisplay/index.js.map +1 -0
- package/dist/LinearBareDisplay/model.d.ts +16 -14
- package/dist/LinearBareDisplay/model.js +36 -42
- package/dist/LinearBareDisplay/model.js.map +1 -0
- package/dist/LinearBasicDisplay/components/SetMaxHeight.d.ts +1 -1
- package/dist/LinearBasicDisplay/components/SetMaxHeight.js +76 -85
- package/dist/LinearBasicDisplay/components/SetMaxHeight.js.map +1 -0
- package/dist/LinearBasicDisplay/configSchema.js +15 -23
- package/dist/LinearBasicDisplay/configSchema.js.map +1 -0
- package/dist/LinearBasicDisplay/index.js +10 -22
- package/dist/LinearBasicDisplay/index.js.map +1 -0
- package/dist/LinearBasicDisplay/model.d.ts +20 -15
- package/dist/LinearBasicDisplay/model.js +180 -159
- package/dist/LinearBasicDisplay/model.js.map +1 -0
- package/dist/LinearGenomeView/components/CenterLine.d.ts +2 -8
- package/dist/LinearGenomeView/components/CenterLine.js +60 -74
- package/dist/LinearGenomeView/components/CenterLine.js.map +1 -0
- package/dist/LinearGenomeView/components/ExportSvgDialog.js +141 -141
- package/dist/LinearGenomeView/components/ExportSvgDialog.js.map +1 -0
- package/dist/LinearGenomeView/components/Header.js +70 -123
- package/dist/LinearGenomeView/components/Header.js.map +1 -0
- package/dist/LinearGenomeView/components/HelpDialog.d.ts +0 -1
- package/dist/LinearGenomeView/components/HelpDialog.js +62 -45
- package/dist/LinearGenomeView/components/HelpDialog.js.map +1 -0
- package/dist/LinearGenomeView/components/ImportForm.js +223 -320
- package/dist/LinearGenomeView/components/ImportForm.js.map +1 -0
- package/dist/LinearGenomeView/components/LinearGenomeView.js +64 -120
- package/dist/LinearGenomeView/components/LinearGenomeView.js.map +1 -0
- package/dist/LinearGenomeView/components/LinearGenomeViewSvg.js +198 -337
- package/dist/LinearGenomeView/components/LinearGenomeViewSvg.js.map +1 -0
- package/dist/LinearGenomeView/components/MiniControls.js +64 -78
- package/dist/LinearGenomeView/components/MiniControls.js.map +1 -0
- package/dist/LinearGenomeView/components/OverviewRubberBand.js +226 -293
- package/dist/LinearGenomeView/components/OverviewRubberBand.js.map +1 -0
- package/dist/LinearGenomeView/components/OverviewScaleBar.d.ts +24 -8
- package/dist/LinearGenomeView/components/OverviewScaleBar.js +277 -365
- package/dist/LinearGenomeView/components/OverviewScaleBar.js.map +1 -0
- package/dist/LinearGenomeView/components/RefNameAutocomplete.d.ts +1 -1
- package/dist/LinearGenomeView/components/RefNameAutocomplete.js +237 -324
- package/dist/LinearGenomeView/components/RefNameAutocomplete.js.map +1 -0
- package/dist/LinearGenomeView/components/RubberBand.js +229 -296
- package/dist/LinearGenomeView/components/RubberBand.js.map +1 -0
- package/dist/LinearGenomeView/components/Ruler.js +45 -90
- package/dist/LinearGenomeView/components/Ruler.js.map +1 -0
- package/dist/LinearGenomeView/components/ScaleBar.d.ts +8 -399
- package/dist/LinearGenomeView/components/ScaleBar.js +121 -167
- package/dist/LinearGenomeView/components/ScaleBar.js.map +1 -0
- package/dist/LinearGenomeView/components/SearchBox.js +158 -205
- package/dist/LinearGenomeView/components/SearchBox.js.map +1 -0
- package/dist/LinearGenomeView/components/SearchResultsDialog.d.ts +0 -1
- package/dist/LinearGenomeView/components/SearchResultsDialog.js +105 -150
- package/dist/LinearGenomeView/components/SearchResultsDialog.js.map +1 -0
- package/dist/LinearGenomeView/components/SequenceDialog.js +219 -272
- package/dist/LinearGenomeView/components/SequenceDialog.js.map +1 -0
- package/dist/LinearGenomeView/components/TrackContainer.js +116 -156
- package/dist/LinearGenomeView/components/TrackContainer.js.map +1 -0
- package/dist/LinearGenomeView/components/TrackLabel.d.ts +6 -42
- package/dist/LinearGenomeView/components/TrackLabel.js +115 -150
- package/dist/LinearGenomeView/components/TrackLabel.js.map +1 -0
- package/dist/LinearGenomeView/components/TracksContainer.d.ts +1 -1
- package/dist/LinearGenomeView/components/TracksContainer.js +172 -199
- package/dist/LinearGenomeView/components/TracksContainer.js.map +1 -0
- package/dist/LinearGenomeView/components/VerticalGuides.d.ts +2 -3
- package/dist/LinearGenomeView/components/VerticalGuides.js +66 -104
- package/dist/LinearGenomeView/components/VerticalGuides.js.map +1 -0
- package/dist/LinearGenomeView/components/ZoomControls.js +72 -87
- package/dist/LinearGenomeView/components/ZoomControls.js.map +1 -0
- package/dist/LinearGenomeView/components/util.d.ts +12 -0
- package/dist/LinearGenomeView/components/util.js +95 -13
- package/dist/LinearGenomeView/components/util.js.map +1 -0
- package/dist/LinearGenomeView/index.d.ts +6 -11
- package/dist/LinearGenomeView/index.js +1163 -1387
- package/dist/LinearGenomeView/index.js.map +1 -0
- package/dist/LinearGenomeView/util.js +76 -83
- package/dist/LinearGenomeView/util.js.map +1 -0
- package/dist/index.d.ts +101 -51
- package/dist/index.js +225 -284
- package/dist/index.js.map +1 -0
- package/esm/BaseLinearDisplay/components/BaseLinearDisplay.d.ts +9 -0
- package/esm/BaseLinearDisplay/components/BaseLinearDisplay.js +68 -0
- package/esm/BaseLinearDisplay/components/BaseLinearDisplay.js.map +1 -0
- package/esm/BaseLinearDisplay/components/Block.d.ts +15 -0
- package/esm/BaseLinearDisplay/components/Block.js +46 -0
- package/esm/BaseLinearDisplay/components/Block.js.map +1 -0
- package/esm/BaseLinearDisplay/components/LinearBlocks.d.ts +22 -0
- package/esm/BaseLinearDisplay/components/LinearBlocks.js +62 -0
- package/esm/BaseLinearDisplay/components/LinearBlocks.js.map +1 -0
- package/esm/BaseLinearDisplay/components/ServerSideRenderedBlockContent.d.ts +4 -0
- package/esm/BaseLinearDisplay/components/ServerSideRenderedBlockContent.js +113 -0
- package/esm/BaseLinearDisplay/components/ServerSideRenderedBlockContent.js.map +1 -0
- package/esm/BaseLinearDisplay/components/Tooltip.d.ts +8 -0
- package/esm/BaseLinearDisplay/components/Tooltip.js +64 -0
- package/esm/BaseLinearDisplay/components/Tooltip.js.map +1 -0
- package/esm/BaseLinearDisplay/index.d.ts +5 -0
- package/esm/BaseLinearDisplay/index.js +4 -0
- package/esm/BaseLinearDisplay/index.js.map +1 -0
- package/esm/BaseLinearDisplay/models/BaseLinearDisplayModel.d.ts +232 -0
- package/esm/BaseLinearDisplay/models/BaseLinearDisplayModel.js +541 -0
- package/esm/BaseLinearDisplay/models/BaseLinearDisplayModel.js.map +1 -0
- package/esm/BaseLinearDisplay/models/baseLinearDisplayConfigSchema.d.ts +1 -0
- package/esm/BaseLinearDisplay/models/baseLinearDisplayConfigSchema.js +14 -0
- package/esm/BaseLinearDisplay/models/baseLinearDisplayConfigSchema.js.map +1 -0
- package/esm/BaseLinearDisplay/models/serverSideRenderedBlock.d.ts +96 -0
- package/esm/BaseLinearDisplay/models/serverSideRenderedBlock.js +225 -0
- package/esm/BaseLinearDisplay/models/serverSideRenderedBlock.js.map +1 -0
- package/esm/LinearBareDisplay/configSchema.d.ts +2 -0
- package/esm/LinearBareDisplay/configSchema.js +9 -0
- package/esm/LinearBareDisplay/configSchema.js.map +1 -0
- package/esm/LinearBareDisplay/index.d.ts +2 -0
- package/esm/LinearBareDisplay/index.js +3 -0
- package/esm/LinearBareDisplay/index.js.map +1 -0
- package/esm/LinearBareDisplay/model.d.ts +194 -0
- package/esm/LinearBareDisplay/model.js +28 -0
- package/esm/LinearBareDisplay/model.js.map +1 -0
- package/esm/LinearBasicDisplay/components/SetMaxHeight.d.ts +10 -0
- package/esm/LinearBasicDisplay/components/SetMaxHeight.js +40 -0
- package/esm/LinearBasicDisplay/components/SetMaxHeight.js.map +1 -0
- package/esm/LinearBasicDisplay/configSchema.d.ts +2 -0
- package/esm/LinearBasicDisplay/configSchema.js +14 -0
- package/esm/LinearBasicDisplay/configSchema.js.map +1 -0
- package/esm/LinearBasicDisplay/index.d.ts +2 -0
- package/esm/LinearBasicDisplay/index.js +3 -0
- package/esm/LinearBasicDisplay/index.js.map +1 -0
- package/esm/LinearBasicDisplay/model.d.ts +218 -0
- package/esm/LinearBasicDisplay/model.js +127 -0
- package/esm/LinearBasicDisplay/model.js.map +1 -0
- package/esm/LinearGenomeView/components/CenterLine.d.ts +8 -0
- package/esm/LinearGenomeView/components/CenterLine.js +40 -0
- package/esm/LinearGenomeView/components/CenterLine.js.map +1 -0
- package/esm/LinearGenomeView/components/ExportSvgDialog.d.ts +6 -0
- package/esm/LinearGenomeView/components/ExportSvgDialog.js +52 -0
- package/esm/LinearGenomeView/components/ExportSvgDialog.js.map +1 -0
- package/esm/LinearGenomeView/components/Header.d.ts +7 -0
- package/esm/LinearGenomeView/components/Header.js +81 -0
- package/esm/LinearGenomeView/components/Header.js.map +1 -0
- package/esm/LinearGenomeView/components/HelpDialog.d.ts +4 -0
- package/esm/LinearGenomeView/components/HelpDialog.js +58 -0
- package/esm/LinearGenomeView/components/HelpDialog.js.map +1 -0
- package/esm/LinearGenomeView/components/ImportForm.d.ts +7 -0
- package/esm/LinearGenomeView/components/ImportForm.js +141 -0
- package/esm/LinearGenomeView/components/ImportForm.js.map +1 -0
- package/esm/LinearGenomeView/components/LinearGenomeView.d.ts +7 -0
- package/esm/LinearGenomeView/components/LinearGenomeView.js +67 -0
- package/esm/LinearGenomeView/components/LinearGenomeView.js.map +1 -0
- package/esm/LinearGenomeView/components/LinearGenomeViewSvg.d.ts +4 -0
- package/esm/LinearGenomeView/components/LinearGenomeViewSvg.js +132 -0
- package/esm/LinearGenomeView/components/LinearGenomeViewSvg.js.map +1 -0
- package/esm/LinearGenomeView/components/MiniControls.d.ts +6 -0
- package/esm/LinearGenomeView/components/MiniControls.js +25 -0
- package/esm/LinearGenomeView/components/MiniControls.js.map +1 -0
- package/esm/LinearGenomeView/components/OverviewRubberBand.d.ts +22 -0
- package/esm/LinearGenomeView/components/OverviewRubberBand.js +194 -0
- package/esm/LinearGenomeView/components/OverviewRubberBand.js.map +1 -0
- package/esm/LinearGenomeView/components/OverviewScaleBar.d.ts +148 -0
- package/esm/LinearGenomeView/components/OverviewScaleBar.js +287 -0
- package/esm/LinearGenomeView/components/OverviewScaleBar.js.map +1 -0
- package/esm/LinearGenomeView/components/RefNameAutocomplete.d.ts +22 -0
- package/esm/LinearGenomeView/components/RefNameAutocomplete.js +136 -0
- package/esm/LinearGenomeView/components/RefNameAutocomplete.js.map +1 -0
- package/esm/LinearGenomeView/components/RubberBand.d.ts +9 -0
- package/esm/LinearGenomeView/components/RubberBand.js +198 -0
- package/esm/LinearGenomeView/components/RubberBand.js.map +1 -0
- package/esm/LinearGenomeView/components/Ruler.d.ts +27 -0
- package/esm/LinearGenomeView/components/Ruler.js +50 -0
- package/esm/LinearGenomeView/components/Ruler.js.map +1 -0
- package/esm/LinearGenomeView/components/ScaleBar.d.ts +10 -0
- package/esm/LinearGenomeView/components/ScaleBar.js +112 -0
- package/esm/LinearGenomeView/components/ScaleBar.js.map +1 -0
- package/esm/LinearGenomeView/components/SearchBox.d.ts +8 -0
- package/esm/LinearGenomeView/components/SearchBox.js +94 -0
- package/esm/LinearGenomeView/components/SearchBox.js.map +1 -0
- package/esm/LinearGenomeView/components/SearchResultsDialog.d.ts +7 -0
- package/esm/LinearGenomeView/components/SearchResultsDialog.js +107 -0
- package/esm/LinearGenomeView/components/SearchResultsDialog.js.map +1 -0
- package/esm/LinearGenomeView/components/SequenceDialog.d.ts +8 -0
- package/esm/LinearGenomeView/components/SequenceDialog.js +147 -0
- package/esm/LinearGenomeView/components/SequenceDialog.js.map +1 -0
- package/esm/LinearGenomeView/components/TrackContainer.d.ts +9 -0
- package/esm/LinearGenomeView/components/TrackContainer.js +109 -0
- package/esm/LinearGenomeView/components/TrackContainer.js.map +1 -0
- package/esm/LinearGenomeView/components/TrackLabel.d.ts +8 -0
- package/esm/LinearGenomeView/components/TrackLabel.js +89 -0
- package/esm/LinearGenomeView/components/TrackLabel.js.map +1 -0
- package/esm/LinearGenomeView/components/TracksContainer.d.ts +10 -0
- package/esm/LinearGenomeView/components/TracksContainer.js +142 -0
- package/esm/LinearGenomeView/components/TracksContainer.js.map +1 -0
- package/esm/LinearGenomeView/components/VerticalGuides.d.ts +8 -0
- package/esm/LinearGenomeView/components/VerticalGuides.js +71 -0
- package/esm/LinearGenomeView/components/VerticalGuides.js.map +1 -0
- package/esm/LinearGenomeView/components/ZoomControls.d.ts +7 -0
- package/esm/LinearGenomeView/components/ZoomControls.js +32 -0
- package/esm/LinearGenomeView/components/ZoomControls.js.map +1 -0
- package/esm/LinearGenomeView/components/util.d.ts +14 -0
- package/esm/LinearGenomeView/components/util.js +17 -0
- package/esm/LinearGenomeView/components/util.js.map +1 -0
- package/esm/LinearGenomeView/index.d.ts +288 -0
- package/esm/LinearGenomeView/index.js +1124 -0
- package/esm/LinearGenomeView/index.js.map +1 -0
- package/esm/LinearGenomeView/util.d.ts +14 -0
- package/esm/LinearGenomeView/util.js +62 -0
- package/esm/LinearGenomeView/util.js.map +1 -0
- package/esm/index.d.ts +615 -0
- package/esm/index.js +127 -0
- package/esm/index.js.map +1 -0
- package/package.json +21 -13
- package/src/BaseLinearDisplay/components/BaseLinearDisplay.tsx +6 -90
- package/src/BaseLinearDisplay/components/Block.tsx +5 -5
- package/src/BaseLinearDisplay/components/LinearBlocks.tsx +4 -4
- package/src/BaseLinearDisplay/components/ServerSideRenderedBlockContent.tsx +7 -8
- package/src/BaseLinearDisplay/components/Tooltip.tsx +107 -0
- package/src/BaseLinearDisplay/models/BaseLinearDisplayModel.tsx +16 -8
- package/src/BaseLinearDisplay/models/serverSideRenderedBlock.ts +1 -1
- package/src/LinearBasicDisplay/components/SetMaxHeight.tsx +10 -7
- package/src/LinearBasicDisplay/model.ts +21 -15
- package/src/LinearGenomeView/components/CenterLine.tsx +6 -11
- package/src/LinearGenomeView/components/ExportSvgDialog.tsx +5 -5
- package/src/LinearGenomeView/components/Header.tsx +12 -16
- package/src/LinearGenomeView/components/HelpDialog.tsx +10 -9
- package/src/LinearGenomeView/components/ImportForm.tsx +24 -37
- package/src/LinearGenomeView/components/LinearGenomeView.test.js +18 -8
- package/src/LinearGenomeView/components/LinearGenomeView.tsx +20 -13
- package/src/LinearGenomeView/components/MiniControls.tsx +29 -40
- package/src/LinearGenomeView/components/OverviewRubberBand.tsx +6 -10
- package/src/LinearGenomeView/components/OverviewScaleBar.tsx +103 -93
- package/src/LinearGenomeView/components/RefNameAutocomplete.tsx +13 -44
- package/src/LinearGenomeView/components/RubberBand.tsx +12 -17
- package/src/LinearGenomeView/components/Ruler.tsx +5 -11
- package/src/LinearGenomeView/components/ScaleBar.tsx +27 -34
- package/src/LinearGenomeView/components/SearchBox.tsx +22 -32
- package/src/LinearGenomeView/components/SearchResultsDialog.tsx +7 -7
- package/src/LinearGenomeView/components/SequenceDialog.tsx +9 -9
- package/src/LinearGenomeView/components/TrackContainer.tsx +12 -12
- package/src/LinearGenomeView/components/TrackLabel.tsx +37 -50
- package/src/LinearGenomeView/components/TracksContainer.tsx +8 -13
- package/src/LinearGenomeView/components/VerticalGuides.tsx +9 -11
- package/src/LinearGenomeView/components/ZoomControls.tsx +12 -13
- package/src/LinearGenomeView/components/__snapshots__/LinearGenomeView.test.js.snap +504 -568
- package/src/LinearGenomeView/components/util.ts +43 -0
- package/src/LinearGenomeView/index.test.ts +21 -5
- package/src/LinearGenomeView/index.tsx +101 -88
- package/src/index.ts +36 -31
- package/dist/LinearBareDisplay/index.test.js +0 -33
- package/dist/LinearGenomeView/components/LinearGenomeView.test.js +0 -234
- package/dist/LinearGenomeView/components/ScaleBar.test.js +0 -180
- package/dist/LinearGenomeView/index.test.js +0 -1170
- package/dist/LinearGenomeView/util.test.js +0 -78
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TrackLabel.js","sourceRoot":"","sources":["../../../src/LinearGenomeView/components/TrackLabel.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { Instance } from 'mobx-state-tree';
|
|
3
|
+
import { LinearGenomeViewStateModel } from '..';
|
|
4
|
+
declare type LGV = Instance<LinearGenomeViewStateModel>;
|
|
5
|
+
declare function TracksContainer({ children, model, }: {
|
|
6
|
+
children: React.ReactNode;
|
|
7
|
+
model: LGV;
|
|
8
|
+
}): JSX.Element;
|
|
9
|
+
declare const _default: typeof TracksContainer;
|
|
10
|
+
export default _default;
|
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
import React, { useEffect, useRef, useState } from 'react';
|
|
2
|
+
import { makeStyles } from 'tss-react/mui';
|
|
3
|
+
import { observer } from 'mobx-react';
|
|
4
|
+
import normalizeWheel from 'normalize-wheel';
|
|
5
|
+
import { SCALE_BAR_HEIGHT } from '..';
|
|
6
|
+
import RubberBand from './RubberBand';
|
|
7
|
+
import ScaleBar from './ScaleBar';
|
|
8
|
+
import VerticalGuides from './VerticalGuides';
|
|
9
|
+
import CenterLine from './CenterLine';
|
|
10
|
+
const useStyles = makeStyles()({
|
|
11
|
+
tracksContainer: {
|
|
12
|
+
position: 'relative',
|
|
13
|
+
overflow: 'hidden',
|
|
14
|
+
},
|
|
15
|
+
spacer: {
|
|
16
|
+
position: 'relative',
|
|
17
|
+
height: 3,
|
|
18
|
+
},
|
|
19
|
+
});
|
|
20
|
+
function TracksContainer({ children, model, }) {
|
|
21
|
+
const { classes } = useStyles();
|
|
22
|
+
// refs are to store these variables to avoid repeated rerenders associated
|
|
23
|
+
// with useState/setState
|
|
24
|
+
const delta = useRef(0);
|
|
25
|
+
const scheduled = useRef(false);
|
|
26
|
+
const timeout = useRef();
|
|
27
|
+
const ref = useRef(null);
|
|
28
|
+
const prevX = useRef(0);
|
|
29
|
+
const [mouseDragging, setMouseDragging] = useState(false);
|
|
30
|
+
useEffect(() => {
|
|
31
|
+
let cleanup = () => { };
|
|
32
|
+
function globalMouseMove(event) {
|
|
33
|
+
event.preventDefault();
|
|
34
|
+
const currX = event.clientX;
|
|
35
|
+
const distance = currX - prevX.current;
|
|
36
|
+
if (distance) {
|
|
37
|
+
// use rAF to make it so multiple event handlers aren't fired per-frame
|
|
38
|
+
// see https://calendar.perfplanet.com/2013/the-runtime-performance-checklist/
|
|
39
|
+
if (!scheduled.current) {
|
|
40
|
+
scheduled.current = true;
|
|
41
|
+
window.requestAnimationFrame(() => {
|
|
42
|
+
model.horizontalScroll(-distance);
|
|
43
|
+
scheduled.current = false;
|
|
44
|
+
prevX.current = event.clientX;
|
|
45
|
+
});
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
function globalMouseUp() {
|
|
50
|
+
prevX.current = 0;
|
|
51
|
+
if (mouseDragging) {
|
|
52
|
+
setMouseDragging(false);
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
if (mouseDragging) {
|
|
56
|
+
window.addEventListener('mousemove', globalMouseMove, true);
|
|
57
|
+
window.addEventListener('mouseup', globalMouseUp, true);
|
|
58
|
+
cleanup = () => {
|
|
59
|
+
window.removeEventListener('mousemove', globalMouseMove, true);
|
|
60
|
+
window.removeEventListener('mouseup', globalMouseUp, true);
|
|
61
|
+
};
|
|
62
|
+
}
|
|
63
|
+
return cleanup;
|
|
64
|
+
}, [model, mouseDragging, prevX]);
|
|
65
|
+
function mouseDown(event) {
|
|
66
|
+
// check if clicking a draggable element or a resize handle
|
|
67
|
+
const target = event.target;
|
|
68
|
+
if (target.draggable || target.dataset.resizer) {
|
|
69
|
+
return;
|
|
70
|
+
}
|
|
71
|
+
// otherwise do click and drag scroll
|
|
72
|
+
if (event.button === 0) {
|
|
73
|
+
prevX.current = event.clientX;
|
|
74
|
+
setMouseDragging(true);
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
// this local mouseup is used in addition to the global because sometimes
|
|
78
|
+
// the global add/remove are not called in time, resulting in issue #533
|
|
79
|
+
function mouseUp(event) {
|
|
80
|
+
event.preventDefault();
|
|
81
|
+
setMouseDragging(false);
|
|
82
|
+
}
|
|
83
|
+
function mouseLeave(event) {
|
|
84
|
+
event.preventDefault();
|
|
85
|
+
}
|
|
86
|
+
useEffect(() => {
|
|
87
|
+
const curr = ref.current;
|
|
88
|
+
// if ctrl is held down, zoom in with y-scroll
|
|
89
|
+
// else scroll horizontally with x-scroll
|
|
90
|
+
function onWheel(origEvent) {
|
|
91
|
+
const event = normalizeWheel(origEvent);
|
|
92
|
+
if (origEvent.ctrlKey === true) {
|
|
93
|
+
origEvent.preventDefault();
|
|
94
|
+
delta.current += event.pixelY / 500;
|
|
95
|
+
model.setScaleFactor(delta.current < 0 ? 1 - delta.current : 1 / (1 + delta.current));
|
|
96
|
+
if (timeout.current) {
|
|
97
|
+
clearTimeout(timeout.current);
|
|
98
|
+
}
|
|
99
|
+
timeout.current = setTimeout(() => {
|
|
100
|
+
model.setScaleFactor(1);
|
|
101
|
+
model.zoomTo(delta.current > 0
|
|
102
|
+
? model.bpPerPx * (1 + delta.current)
|
|
103
|
+
: model.bpPerPx / (1 - delta.current));
|
|
104
|
+
delta.current = 0;
|
|
105
|
+
}, 300);
|
|
106
|
+
}
|
|
107
|
+
else {
|
|
108
|
+
// this is needed to stop the event from triggering "back button
|
|
109
|
+
// action" on MacOSX etc. but is a heuristic to avoid preventing the
|
|
110
|
+
// inner-track scroll behavior
|
|
111
|
+
if (Math.abs(event.pixelX) > Math.abs(2 * event.pixelY)) {
|
|
112
|
+
origEvent.preventDefault();
|
|
113
|
+
}
|
|
114
|
+
delta.current += event.pixelX;
|
|
115
|
+
if (!scheduled.current) {
|
|
116
|
+
// use rAF to make it so multiple event handlers aren't fired per-frame
|
|
117
|
+
// see https://calendar.perfplanet.com/2013/the-runtime-performance-checklist/
|
|
118
|
+
scheduled.current = true;
|
|
119
|
+
window.requestAnimationFrame(() => {
|
|
120
|
+
model.horizontalScroll(delta.current);
|
|
121
|
+
delta.current = 0;
|
|
122
|
+
scheduled.current = false;
|
|
123
|
+
});
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
if (curr) {
|
|
128
|
+
curr.addEventListener('wheel', onWheel);
|
|
129
|
+
return () => {
|
|
130
|
+
curr.removeEventListener('wheel', onWheel);
|
|
131
|
+
};
|
|
132
|
+
}
|
|
133
|
+
return () => { };
|
|
134
|
+
}, [model]);
|
|
135
|
+
return (React.createElement("div", { ref: ref, "data-testid": "trackContainer", className: classes.tracksContainer, onMouseDown: mouseDown, onMouseUp: mouseUp, onMouseLeave: mouseLeave },
|
|
136
|
+
React.createElement(VerticalGuides, { model: model }),
|
|
137
|
+
model.showCenterLine ? React.createElement(CenterLine, { model: model }) : null,
|
|
138
|
+
React.createElement(RubberBand, { model: model, ControlComponent: React.createElement(ScaleBar, { model: model, style: { height: SCALE_BAR_HEIGHT, boxSizing: 'border-box' } }) }),
|
|
139
|
+
children));
|
|
140
|
+
}
|
|
141
|
+
export default observer(TracksContainer);
|
|
142
|
+
//# sourceMappingURL=TracksContainer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TracksContainer.js","sourceRoot":"","sources":["../../../src/LinearGenomeView/components/TracksContainer.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
import { LinearGenomeViewModel } from '..';
|
|
3
|
+
declare type LGV = LinearGenomeViewModel;
|
|
4
|
+
declare function VerticalGuides({ model }: {
|
|
5
|
+
model: LGV;
|
|
6
|
+
}): JSX.Element;
|
|
7
|
+
declare const _default: typeof VerticalGuides;
|
|
8
|
+
export default _default;
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { ContentBlock, ElidedBlock, InterRegionPaddingBlock, } from '@jbrowse/core/util/blockTypes';
|
|
3
|
+
import { makeStyles } from 'tss-react/mui';
|
|
4
|
+
import { observer } from 'mobx-react';
|
|
5
|
+
import { ContentBlock as ContentBlockComponent, ElidedBlock as ElidedBlockComponent, InterRegionPaddingBlock as InterRegionPaddingBlockComponent, } from '../../BaseLinearDisplay/components/Block';
|
|
6
|
+
import { makeTicks } from '../util';
|
|
7
|
+
const useStyles = makeStyles()(theme => ({
|
|
8
|
+
verticalGuidesZoomContainer: {
|
|
9
|
+
position: 'absolute',
|
|
10
|
+
height: '100%',
|
|
11
|
+
width: '100%',
|
|
12
|
+
zIndex: 1,
|
|
13
|
+
pointerEvents: 'none',
|
|
14
|
+
},
|
|
15
|
+
verticalGuidesContainer: {
|
|
16
|
+
position: 'absolute',
|
|
17
|
+
height: '100%',
|
|
18
|
+
zIndex: 1,
|
|
19
|
+
pointerEvents: 'none',
|
|
20
|
+
display: 'flex',
|
|
21
|
+
},
|
|
22
|
+
tick: {
|
|
23
|
+
position: 'absolute',
|
|
24
|
+
height: '100%',
|
|
25
|
+
width: 1,
|
|
26
|
+
},
|
|
27
|
+
majorTick: {
|
|
28
|
+
background: theme.palette.text.secondary,
|
|
29
|
+
},
|
|
30
|
+
minorTick: {
|
|
31
|
+
background: theme.palette.divider,
|
|
32
|
+
},
|
|
33
|
+
}));
|
|
34
|
+
const RenderedVerticalGuides = observer(({ model }) => {
|
|
35
|
+
const { classes, cx } = useStyles();
|
|
36
|
+
return (React.createElement(React.Fragment, null, model.staticBlocks.map((block, index) => {
|
|
37
|
+
if (block instanceof ContentBlock) {
|
|
38
|
+
const ticks = makeTicks(block.start, block.end, model.bpPerPx);
|
|
39
|
+
return (React.createElement(ContentBlockComponent, { key: `${block.key}-${index}`, block: block }, ticks.map(tick => {
|
|
40
|
+
const x = (block.reversed
|
|
41
|
+
? block.end - tick.base
|
|
42
|
+
: tick.base - block.start) / model.bpPerPx;
|
|
43
|
+
return (React.createElement("div", { key: tick.base, className: cx(classes.tick, tick.type === 'major' || tick.type === 'labeledMajor'
|
|
44
|
+
? classes.majorTick
|
|
45
|
+
: classes.minorTick), style: { left: x } }));
|
|
46
|
+
})));
|
|
47
|
+
}
|
|
48
|
+
if (block instanceof ElidedBlock) {
|
|
49
|
+
return React.createElement(ElidedBlockComponent, { key: block.key, width: block.widthPx });
|
|
50
|
+
}
|
|
51
|
+
if (block instanceof InterRegionPaddingBlock) {
|
|
52
|
+
return (React.createElement(InterRegionPaddingBlockComponent, { key: block.key, width: block.widthPx, boundary: block.variant === 'boundary' }));
|
|
53
|
+
}
|
|
54
|
+
return null;
|
|
55
|
+
})));
|
|
56
|
+
});
|
|
57
|
+
function VerticalGuides({ model }) {
|
|
58
|
+
const { classes } = useStyles();
|
|
59
|
+
// find the block that needs pinning to the left side for context
|
|
60
|
+
const offsetLeft = model.staticBlocks.offsetPx - model.offsetPx;
|
|
61
|
+
return (React.createElement("div", { className: classes.verticalGuidesZoomContainer, style: {
|
|
62
|
+
transform: model.scaleFactor !== 1 ? `scaleX(${model.scaleFactor})` : undefined,
|
|
63
|
+
} },
|
|
64
|
+
React.createElement("div", { className: classes.verticalGuidesContainer, style: {
|
|
65
|
+
left: offsetLeft,
|
|
66
|
+
width: model.staticBlocks.totalWidthPx,
|
|
67
|
+
} },
|
|
68
|
+
React.createElement(RenderedVerticalGuides, { model: model }))));
|
|
69
|
+
}
|
|
70
|
+
export default observer(VerticalGuides);
|
|
71
|
+
//# sourceMappingURL=VerticalGuides.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"VerticalGuides.js","sourceRoot":"","sources":["../../../src/LinearGenomeView/components/VerticalGuides.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import React, { useState, useEffect } from 'react';
|
|
2
|
+
import { observer } from 'mobx-react';
|
|
3
|
+
import { Slider, IconButton } from '@mui/material';
|
|
4
|
+
import { makeStyles } from 'tss-react/mui';
|
|
5
|
+
import ZoomIn from '@mui/icons-material/ZoomIn';
|
|
6
|
+
import ZoomOut from '@mui/icons-material/ZoomOut';
|
|
7
|
+
const useStyles = makeStyles()({
|
|
8
|
+
container: {
|
|
9
|
+
display: 'flex',
|
|
10
|
+
flexDirection: 'row',
|
|
11
|
+
alignItems: 'center',
|
|
12
|
+
},
|
|
13
|
+
slider: {
|
|
14
|
+
width: 70,
|
|
15
|
+
},
|
|
16
|
+
});
|
|
17
|
+
function ZoomControls({ model }) {
|
|
18
|
+
const { classes } = useStyles();
|
|
19
|
+
const { maxBpPerPx, minBpPerPx, bpPerPx, scaleFactor } = model;
|
|
20
|
+
const [value, setValue] = useState(-Math.log2(bpPerPx) * 100);
|
|
21
|
+
useEffect(() => {
|
|
22
|
+
setValue(-Math.log2(bpPerPx) * 100);
|
|
23
|
+
}, [setValue, bpPerPx]);
|
|
24
|
+
return (React.createElement("div", { className: classes.container },
|
|
25
|
+
React.createElement(IconButton, { "data-testid": "zoom_out", onClick: () => model.zoom(bpPerPx * 2), disabled: bpPerPx >= maxBpPerPx - 0.0001 || scaleFactor !== 1, color: "secondary", size: "large" },
|
|
26
|
+
React.createElement(ZoomOut, null)),
|
|
27
|
+
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 }),
|
|
28
|
+
React.createElement(IconButton, { "data-testid": "zoom_in", onClick: () => model.zoom(model.bpPerPx / 2), disabled: bpPerPx <= minBpPerPx + 0.0001 || scaleFactor !== 1, color: "secondary", size: "large" },
|
|
29
|
+
React.createElement(ZoomIn, null))));
|
|
30
|
+
}
|
|
31
|
+
export default observer(ZoomControls);
|
|
32
|
+
//# sourceMappingURL=ZoomControls.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ZoomControls.js","sourceRoot":"","sources":["../../../src/LinearGenomeView/components/ZoomControls.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAClD,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AACrC,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;AAClD,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;AAC1C,OAAO,MAAM,MAAM,4BAA4B,CAAA;AAC/C,OAAO,OAAO,MAAM,6BAA6B,CAAA;AAGjD,MAAM,SAAS,GAAG,UAAU,EAAE,CAAC;IAC7B,SAAS,EAAE;QACT,OAAO,EAAE,MAAM;QACf,aAAa,EAAE,KAAK;QACpB,UAAU,EAAE,QAAQ;KACrB;IACD,MAAM,EAAE;QACN,KAAK,EAAE,EAAE;KACV;CACF,CAAC,CAAA;AAEF,SAAS,YAAY,CAAC,EAAE,KAAK,EAAoC;IAC/D,MAAM,EAAE,OAAO,EAAE,GAAG,SAAS,EAAE,CAAA;IAC/B,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,OAAO,EAAE,WAAW,EAAE,GAAG,KAAK,CAAA;IAC9D,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,GAAG,CAAC,CAAA;IAC7D,SAAS,CAAC,GAAG,EAAE;QACb,QAAQ,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,GAAG,CAAC,CAAA;IACrC,CAAC,EAAE,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAA;IAEvB,OAAO,CACL,6BAAK,SAAS,EAAE,OAAO,CAAC,SAAS;QAC/B,oBAAC,UAAU,mBACG,UAAU,EACtB,OAAO,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC,EACtC,QAAQ,EAAE,OAAO,IAAI,UAAU,GAAG,MAAM,IAAI,WAAW,KAAK,CAAC,EAC7D,KAAK,EAAC,WAAW,EACjB,IAAI,EAAC,OAAO;YAEZ,oBAAC,OAAO,OAAG,CACA;QAEb,oBAAC,MAAM,IACL,IAAI,EAAC,OAAO,EACZ,SAAS,EAAE,OAAO,CAAC,MAAM,EACzB,KAAK,EAAE,KAAK,EACZ,GAAG,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,GAAG,EACjC,GAAG,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,GAAG,EACjC,QAAQ,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC,QAAQ,CAAC,GAAa,CAAC,EAC7C,iBAAiB,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,GAAG,GAAG,CAAC,CAAC,EAC1D,QAAQ,EAAE,WAAW,KAAK,CAAC,GAC3B;QACF,oBAAC,UAAU,mBACG,SAAS,EACrB,OAAO,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,CAAC,CAAC,EAC5C,QAAQ,EAAE,OAAO,IAAI,UAAU,GAAG,MAAM,IAAI,WAAW,KAAK,CAAC,EAC7D,KAAK,EAAC,WAAW,EACjB,IAAI,EAAC,OAAO;YAEZ,oBAAC,MAAM,OAAG,CACC,CACT,CACP,CAAA;AACH,CAAC;AAED,eAAe,QAAQ,CAAC,YAAY,CAAC,CAAA"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { Assembly } from '@jbrowse/core/assemblyManager/assembly';
|
|
2
|
+
import { SearchType } from '@jbrowse/core/data_adapters/BaseAdapter';
|
|
3
|
+
import BaseResult from '@jbrowse/core/TextSearch/BaseResults';
|
|
4
|
+
import { SearchScope } from '@jbrowse/core/TextSearch/TextSearchManager';
|
|
5
|
+
import { TextSearchManager } from '@jbrowse/core/util';
|
|
6
|
+
export declare function dedupe(results: BaseResult[] | undefined, cb: (result: BaseResult) => string): BaseResult[];
|
|
7
|
+
export declare function fetchResults({ queryString, searchType, searchScope, rankSearchResults, textSearchManager, assembly, }: {
|
|
8
|
+
queryString: string;
|
|
9
|
+
searchScope: SearchScope;
|
|
10
|
+
rankSearchResults: (results: BaseResult[]) => BaseResult[];
|
|
11
|
+
searchType?: SearchType;
|
|
12
|
+
textSearchManager?: TextSearchManager;
|
|
13
|
+
assembly?: Assembly;
|
|
14
|
+
}): Promise<BaseResult[]>;
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import BaseResult from '@jbrowse/core/TextSearch/BaseResults';
|
|
2
|
+
export function dedupe(results = [], cb) {
|
|
3
|
+
return results.filter((elt, idx, self) => idx === self.findIndex(t => cb(t) === cb(elt)));
|
|
4
|
+
}
|
|
5
|
+
export async function fetchResults({ queryString, searchType, searchScope, rankSearchResults, textSearchManager, assembly, }) {
|
|
6
|
+
var _a;
|
|
7
|
+
if (!textSearchManager) {
|
|
8
|
+
console.warn('No text search manager');
|
|
9
|
+
}
|
|
10
|
+
const textSearchResults = await (textSearchManager === null || textSearchManager === void 0 ? void 0 : textSearchManager.search({
|
|
11
|
+
queryString,
|
|
12
|
+
searchType,
|
|
13
|
+
}, searchScope, rankSearchResults));
|
|
14
|
+
const refNameResults = (_a = assembly === null || assembly === void 0 ? void 0 : assembly.allRefNames) === null || _a === void 0 ? void 0 : _a.filter(ref => ref.toLowerCase().startsWith(queryString.toLowerCase())).slice(0, 10).map(r => new BaseResult({ label: r }));
|
|
15
|
+
return dedupe([...(refNameResults || []), ...(textSearchResults || [])], elt => elt.getId());
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=util.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"util.js","sourceRoot":"","sources":["../../../src/LinearGenomeView/components/util.ts"],"names":[],"mappings":"AAEA,OAAO,UAAU,MAAM,sCAAsC,CAAA;AAI7D,MAAM,UAAU,MAAM,CACpB,UAAwB,EAAE,EAC1B,EAAkC;IAElC,OAAO,OAAO,CAAC,MAAM,CACnB,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,CAAC,GAAG,KAAK,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,CAAC,CACnE,CAAA;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,EACjC,WAAW,EACX,UAAU,EACV,WAAW,EACX,iBAAiB,EACjB,iBAAiB,EACjB,QAAQ,GAQT;;IACC,IAAI,CAAC,iBAAiB,EAAE;QACtB,OAAO,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAA;KACvC;IAED,MAAM,iBAAiB,GAAG,MAAM,CAAA,iBAAiB,aAAjB,iBAAiB,uBAAjB,iBAAiB,CAAE,MAAM,CACvD;QACE,WAAW;QACX,UAAU;KACX,EACD,WAAW,EACX,iBAAiB,CAClB,CAAA,CAAA;IAED,MAAM,cAAc,GAAG,MAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,WAAW,0CACxC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC,WAAW,EAAE,CAAC,EACtE,KAAK,CAAC,CAAC,EAAE,EAAE,EACX,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,UAAU,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,CAAA;IAEzC,OAAO,MAAM,CACX,CAAC,GAAG,CAAC,cAAc,IAAI,EAAE,CAAC,EAAE,GAAG,CAAC,iBAAiB,IAAI,EAAE,CAAC,CAAC,EACzD,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,EAAE,CACnB,CAAA;AACH,CAAC"}
|
|
@@ -0,0 +1,288 @@
|
|
|
1
|
+
import { Region } from '@jbrowse/core/util/types';
|
|
2
|
+
import { MenuItem } from '@jbrowse/core/ui';
|
|
3
|
+
import BaseResult from '@jbrowse/core/TextSearch/BaseResults';
|
|
4
|
+
import { BlockSet, BaseBlock } from '@jbrowse/core/util/blockTypes';
|
|
5
|
+
import { Instance } from 'mobx-state-tree';
|
|
6
|
+
import PluginManager from '@jbrowse/core/PluginManager';
|
|
7
|
+
import { renderToSvg } from './components/LinearGenomeViewSvg';
|
|
8
|
+
import RefNameAutocomplete from './components/RefNameAutocomplete';
|
|
9
|
+
import SearchBox from './components/SearchBox';
|
|
10
|
+
export interface BpOffset {
|
|
11
|
+
refName?: string;
|
|
12
|
+
index: number;
|
|
13
|
+
offset: number;
|
|
14
|
+
start?: number;
|
|
15
|
+
end?: number;
|
|
16
|
+
coord?: number;
|
|
17
|
+
reversed?: boolean;
|
|
18
|
+
assemblyName?: string;
|
|
19
|
+
oob?: boolean;
|
|
20
|
+
}
|
|
21
|
+
export interface ExportSvgOptions {
|
|
22
|
+
rasterizeLayers?: boolean;
|
|
23
|
+
filename?: string;
|
|
24
|
+
}
|
|
25
|
+
export interface NavLocation {
|
|
26
|
+
refName: string;
|
|
27
|
+
start?: number;
|
|
28
|
+
end?: number;
|
|
29
|
+
assemblyName?: string;
|
|
30
|
+
}
|
|
31
|
+
export declare const HEADER_BAR_HEIGHT = 48;
|
|
32
|
+
export declare const HEADER_OVERVIEW_HEIGHT = 20;
|
|
33
|
+
export declare const SCALE_BAR_HEIGHT = 17;
|
|
34
|
+
export declare const RESIZE_HANDLE_HEIGHT = 3;
|
|
35
|
+
export declare const INTER_REGION_PADDING_WIDTH = 2;
|
|
36
|
+
export declare const SPACING = 7;
|
|
37
|
+
export declare const WIDGET_HEIGHT = 32;
|
|
38
|
+
export declare function stateModelFactory(pluginManager: PluginManager): import("mobx-state-tree").IModelType<{
|
|
39
|
+
id: import("mobx-state-tree").IOptionalIType<import("mobx-state-tree").ISimpleType<string>, [undefined]>;
|
|
40
|
+
displayName: import("mobx-state-tree").IMaybe<import("mobx-state-tree").ISimpleType<string>>;
|
|
41
|
+
} & {
|
|
42
|
+
id: import("mobx-state-tree").IOptionalIType<import("mobx-state-tree").ISimpleType<string>, [undefined]>;
|
|
43
|
+
type: import("mobx-state-tree").ISimpleType<"LinearGenomeView">;
|
|
44
|
+
offsetPx: import("mobx-state-tree").IType<number | undefined, number, number>;
|
|
45
|
+
bpPerPx: import("mobx-state-tree").IType<number | undefined, number, number>;
|
|
46
|
+
displayedRegions: import("mobx-state-tree").IArrayType<import("mobx-state-tree").IModelType<{
|
|
47
|
+
refName: import("mobx-state-tree").ISimpleType<string>;
|
|
48
|
+
start: import("mobx-state-tree").ISimpleType<number>;
|
|
49
|
+
end: import("mobx-state-tree").ISimpleType<number>;
|
|
50
|
+
reversed: import("mobx-state-tree").IOptionalIType<import("mobx-state-tree").ISimpleType<boolean>, [undefined]>;
|
|
51
|
+
} & {
|
|
52
|
+
assemblyName: import("mobx-state-tree").ISimpleType<string>;
|
|
53
|
+
}, {
|
|
54
|
+
setRefName(newRefName: string): void;
|
|
55
|
+
}, import("mobx-state-tree")._NotCustomized, import("mobx-state-tree")._NotCustomized>>;
|
|
56
|
+
tracks: import("mobx-state-tree").IArrayType<import("mobx-state-tree").IAnyType>;
|
|
57
|
+
hideHeader: import("mobx-state-tree").IType<boolean | undefined, boolean, boolean>;
|
|
58
|
+
hideHeaderOverview: import("mobx-state-tree").IType<boolean | undefined, boolean, boolean>;
|
|
59
|
+
hideNoTracksActive: import("mobx-state-tree").IType<boolean | undefined, boolean, boolean>;
|
|
60
|
+
trackSelectorType: import("mobx-state-tree").IOptionalIType<import("mobx-state-tree").ISimpleType<"hierarchical">, [undefined]>;
|
|
61
|
+
trackLabels: import("mobx-state-tree").IOptionalIType<import("mobx-state-tree").ISimpleType<string>, [undefined]>;
|
|
62
|
+
showCenterLine: import("mobx-state-tree").IOptionalIType<import("mobx-state-tree").ISimpleType<boolean>, [undefined]>;
|
|
63
|
+
showCytobandsSetting: import("mobx-state-tree").IOptionalIType<import("mobx-state-tree").ISimpleType<boolean>, [undefined]>;
|
|
64
|
+
}, {
|
|
65
|
+
width: number;
|
|
66
|
+
} & {
|
|
67
|
+
menuItems(): MenuItem[];
|
|
68
|
+
} & {
|
|
69
|
+
setDisplayName(name: string): void;
|
|
70
|
+
setWidth(newWidth: number): void;
|
|
71
|
+
} & {
|
|
72
|
+
volatileWidth: number | undefined;
|
|
73
|
+
minimumBlockWidth: number;
|
|
74
|
+
draggingTrackId: string | undefined;
|
|
75
|
+
volatileError: Error | undefined;
|
|
76
|
+
afterDisplayedRegionsSetCallbacks: Function[];
|
|
77
|
+
scaleFactor: number;
|
|
78
|
+
trackRefs: {
|
|
79
|
+
[key: string]: any;
|
|
80
|
+
};
|
|
81
|
+
coarseDynamicBlocks: BaseBlock[];
|
|
82
|
+
coarseTotalBp: number;
|
|
83
|
+
leftOffset: BpOffset | undefined;
|
|
84
|
+
rightOffset: BpOffset | undefined;
|
|
85
|
+
searchResults: BaseResult[] | undefined;
|
|
86
|
+
searchQuery: string | undefined;
|
|
87
|
+
seqDialogDisplayed: boolean;
|
|
88
|
+
} & {
|
|
89
|
+
readonly width: number;
|
|
90
|
+
readonly interRegionPaddingWidth: number;
|
|
91
|
+
readonly assemblyNames: string[];
|
|
92
|
+
} & {
|
|
93
|
+
readonly assemblyErrors: string;
|
|
94
|
+
readonly assembliesInitialized: boolean;
|
|
95
|
+
readonly initialized: boolean;
|
|
96
|
+
readonly hasDisplayedRegions: boolean;
|
|
97
|
+
readonly isSearchDialogDisplayed: boolean;
|
|
98
|
+
readonly scaleBarHeight: number;
|
|
99
|
+
readonly headerHeight: number;
|
|
100
|
+
readonly trackHeights: any;
|
|
101
|
+
readonly trackHeightsWithResizeHandles: any;
|
|
102
|
+
readonly height: any;
|
|
103
|
+
readonly totalBp: number;
|
|
104
|
+
readonly maxBpPerPx: number;
|
|
105
|
+
readonly minBpPerPx: number;
|
|
106
|
+
readonly error: string | Error;
|
|
107
|
+
readonly maxOffset: number;
|
|
108
|
+
readonly minOffset: number;
|
|
109
|
+
readonly displayedRegionsTotalPx: number;
|
|
110
|
+
renderProps(): any;
|
|
111
|
+
searchScope(assemblyName: string): {
|
|
112
|
+
assemblyName: string;
|
|
113
|
+
includeAggregateIndexes: boolean;
|
|
114
|
+
tracks: import("mobx-state-tree").IMSTArray<import("mobx-state-tree").IAnyType> & import("mobx-state-tree").IStateTreeNode<import("mobx-state-tree").IArrayType<import("mobx-state-tree").IAnyType>>;
|
|
115
|
+
};
|
|
116
|
+
bpToPx({ refName, coord, regionNumber, }: {
|
|
117
|
+
refName: string;
|
|
118
|
+
coord: number;
|
|
119
|
+
regionNumber?: number | undefined;
|
|
120
|
+
}): {
|
|
121
|
+
index: number;
|
|
122
|
+
offsetPx: number;
|
|
123
|
+
} | undefined;
|
|
124
|
+
/**
|
|
125
|
+
*
|
|
126
|
+
* @param px - px in the view area, return value is the displayed regions
|
|
127
|
+
* @returns BpOffset of the displayed region that it lands in
|
|
128
|
+
*/
|
|
129
|
+
pxToBp(px: number): {
|
|
130
|
+
oob: boolean;
|
|
131
|
+
coord: number;
|
|
132
|
+
offset: number;
|
|
133
|
+
index: number;
|
|
134
|
+
start: number;
|
|
135
|
+
end: number;
|
|
136
|
+
reversed: boolean;
|
|
137
|
+
refName: string;
|
|
138
|
+
assemblyName: string;
|
|
139
|
+
};
|
|
140
|
+
getTrack(id: string): any;
|
|
141
|
+
rankSearchResults(results: BaseResult[]): BaseResult[];
|
|
142
|
+
rewriteOnClicks(trackType: string, viewMenuActions: MenuItem[]): void;
|
|
143
|
+
readonly trackTypeActions: Map<string, MenuItem[]>;
|
|
144
|
+
readonly centerLineInfo: {
|
|
145
|
+
oob: boolean;
|
|
146
|
+
coord: number;
|
|
147
|
+
offset: number;
|
|
148
|
+
index: number;
|
|
149
|
+
start: number;
|
|
150
|
+
end: number;
|
|
151
|
+
reversed: boolean;
|
|
152
|
+
refName: string;
|
|
153
|
+
assemblyName: string;
|
|
154
|
+
} | undefined;
|
|
155
|
+
} & {
|
|
156
|
+
setShowCytobands(flag: boolean): void;
|
|
157
|
+
setWidth(newWidth: number): void;
|
|
158
|
+
setError(error: Error | undefined): void;
|
|
159
|
+
toggleHeader(): void;
|
|
160
|
+
toggleHeaderOverview(): void;
|
|
161
|
+
toggleNoTracksActive(): void;
|
|
162
|
+
scrollTo(offsetPx: number): number;
|
|
163
|
+
zoomTo(bpPerPx: number): number;
|
|
164
|
+
setOffsets(left: undefined | BpOffset, right: undefined | BpOffset): void;
|
|
165
|
+
setSearchResults(results: BaseResult[] | undefined, query: string | undefined): void;
|
|
166
|
+
setSequenceDialogOpen(open: boolean): void;
|
|
167
|
+
setNewView(bpPerPx: number, offsetPx: number): void;
|
|
168
|
+
horizontallyFlip(): void;
|
|
169
|
+
showTrack(trackId: string, initialSnapshot?: {}, displayInitialSnapshot?: {}): any;
|
|
170
|
+
hideTrack(trackId: string): number;
|
|
171
|
+
} & {
|
|
172
|
+
moveTrack(movingId: string, targetId: string): void;
|
|
173
|
+
closeView(): void;
|
|
174
|
+
toggleTrack(trackId: string): void;
|
|
175
|
+
setTrackLabels(setting: 'overlapping' | 'offset' | 'hidden'): void;
|
|
176
|
+
toggleCenterLine(): void;
|
|
177
|
+
setDisplayedRegions(regions: Region[]): void;
|
|
178
|
+
activateTrackSelector(): import("@jbrowse/core/util").Widget;
|
|
179
|
+
navToLocString(locString: string, optAssemblyName?: string): void;
|
|
180
|
+
/**
|
|
181
|
+
* Navigate to a location based on its refName and optionally start, end,
|
|
182
|
+
* and assemblyName. Can handle if there are multiple displayedRegions
|
|
183
|
+
* from same refName. Only navigates to a location if it is entirely
|
|
184
|
+
* within a displayedRegion. Navigates to the first matching location
|
|
185
|
+
* encountered.
|
|
186
|
+
*
|
|
187
|
+
* Throws an error if navigation was unsuccessful
|
|
188
|
+
*
|
|
189
|
+
* @param location - a proposed location to navigate to
|
|
190
|
+
*/
|
|
191
|
+
navTo(query: NavLocation): void;
|
|
192
|
+
navToMultiple(locations: NavLocation[]): void;
|
|
193
|
+
/**
|
|
194
|
+
* Navigate to a location based on user clicking and dragging on the
|
|
195
|
+
* overview scale bar to select a region to zoom into.
|
|
196
|
+
* Can handle if there are multiple displayedRegions from same refName.
|
|
197
|
+
* Only navigates to a location if it is entirely within a displayedRegion.
|
|
198
|
+
*
|
|
199
|
+
* @param leftPx- `object as {start, end, index, offset}`, offset = start of user drag
|
|
200
|
+
* @param rightPx- `object as {start, end, index, offset}`, offset = end of user drag
|
|
201
|
+
*/
|
|
202
|
+
zoomToDisplayedRegions(leftPx: BpOffset, rightPx: BpOffset): void;
|
|
203
|
+
/**
|
|
204
|
+
* Helper method for the fetchSequence.
|
|
205
|
+
* Retrieves the corresponding regions that were selected by the rubberband
|
|
206
|
+
*
|
|
207
|
+
* @param leftOffset - `object as {start, end, index, offset}`, offset = start of user drag
|
|
208
|
+
* @param rightOffset - `object as {start, end, index, offset}`, offset = end of user drag
|
|
209
|
+
* @returns array of Region[]
|
|
210
|
+
*/
|
|
211
|
+
getSelectedRegions(leftOffset: BpOffset | undefined, rightOffset: BpOffset | undefined): {
|
|
212
|
+
start: number;
|
|
213
|
+
end: number;
|
|
214
|
+
regionNumber?: number | undefined;
|
|
215
|
+
reversed?: boolean | undefined;
|
|
216
|
+
refName: string;
|
|
217
|
+
assemblyName: string;
|
|
218
|
+
key: string;
|
|
219
|
+
offsetPx: number;
|
|
220
|
+
widthPx: number;
|
|
221
|
+
variant?: string | undefined;
|
|
222
|
+
isLeftEndOfDisplayedRegion?: boolean | undefined;
|
|
223
|
+
}[];
|
|
224
|
+
afterDisplayedRegionsSet(cb: Function): void;
|
|
225
|
+
/**
|
|
226
|
+
* offset is the base-pair-offset in the displayed region, index is the index of the
|
|
227
|
+
* displayed region in the linear genome view
|
|
228
|
+
*
|
|
229
|
+
* @param start - object as `{start, end, offset, index}`
|
|
230
|
+
* @param end - object as `{start, end, offset, index}`
|
|
231
|
+
*/
|
|
232
|
+
moveTo(start: BpOffset, end: BpOffset): void;
|
|
233
|
+
horizontalScroll(distance: number): number;
|
|
234
|
+
/**
|
|
235
|
+
* scrolls the view to center on the given bp. if that is not in any
|
|
236
|
+
* of the displayed regions, does nothing
|
|
237
|
+
* @param bp - basepair at which you want to center the view
|
|
238
|
+
* @param refName - refName of the displayedRegion you are centering at
|
|
239
|
+
* @param regionIndex - index of the displayedRegion
|
|
240
|
+
*/
|
|
241
|
+
centerAt(bp: number, refName: string, regionIndex: number): void;
|
|
242
|
+
center(): void;
|
|
243
|
+
showAllRegions(): void;
|
|
244
|
+
showAllRegionsInAssembly(assemblyName?: string): void;
|
|
245
|
+
setDraggingTrackId(idx?: string): void;
|
|
246
|
+
setScaleFactor(factor: number): void;
|
|
247
|
+
} & {
|
|
248
|
+
slide: (viewWidths: number) => void;
|
|
249
|
+
} & {
|
|
250
|
+
zoom: (targetBpPerPx: number) => void;
|
|
251
|
+
} & {
|
|
252
|
+
readonly canShowCytobands: boolean;
|
|
253
|
+
readonly showCytobands: boolean;
|
|
254
|
+
readonly anyCytobandsExist: boolean;
|
|
255
|
+
readonly cytobandOffset: number;
|
|
256
|
+
} & {
|
|
257
|
+
menuItems(): MenuItem[];
|
|
258
|
+
} & {
|
|
259
|
+
readonly staticBlocks: BlockSet;
|
|
260
|
+
readonly dynamicBlocks: BlockSet;
|
|
261
|
+
readonly roundedDynamicBlocks: {
|
|
262
|
+
start: number;
|
|
263
|
+
end: number;
|
|
264
|
+
regionNumber?: number | undefined;
|
|
265
|
+
reversed?: boolean | undefined;
|
|
266
|
+
refName: string;
|
|
267
|
+
assemblyName: string;
|
|
268
|
+
key: string;
|
|
269
|
+
offsetPx: number;
|
|
270
|
+
widthPx: number;
|
|
271
|
+
variant?: string | undefined;
|
|
272
|
+
isLeftEndOfDisplayedRegion?: boolean | undefined;
|
|
273
|
+
}[];
|
|
274
|
+
readonly visibleLocStrings: string;
|
|
275
|
+
readonly coarseVisibleLocStrings: string;
|
|
276
|
+
} & {
|
|
277
|
+
clearView(): void;
|
|
278
|
+
setCoarseDynamicBlocks(blocks: BlockSet): void;
|
|
279
|
+
afterAttach(): void;
|
|
280
|
+
} & {
|
|
281
|
+
exportSvg(opts?: ExportSvgOptions): Promise<void>;
|
|
282
|
+
} & {
|
|
283
|
+
rubberBandMenuItems(): MenuItem[];
|
|
284
|
+
}, import("mobx-state-tree")._NotCustomized, import("mobx-state-tree")._NotCustomized>;
|
|
285
|
+
export { renderToSvg, RefNameAutocomplete, SearchBox };
|
|
286
|
+
export declare type LinearGenomeViewStateModel = ReturnType<typeof stateModelFactory>;
|
|
287
|
+
export declare type LinearGenomeViewModel = Instance<LinearGenomeViewStateModel>;
|
|
288
|
+
export { default as ReactComponent } from './components/LinearGenomeView';
|