jbrowse-plugin-mafviewer 1.4.2 → 1.4.5
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/README.md +1 -1
- package/dist/LinearMafDisplay/components/InsertionSequenceDialog/InsertionSequenceDialog.d.ts +14 -0
- package/dist/LinearMafDisplay/components/InsertionSequenceDialog/InsertionSequenceDialog.js +69 -0
- package/dist/LinearMafDisplay/components/InsertionSequenceDialog/InsertionSequenceDialog.js.map +1 -0
- package/dist/LinearMafDisplay/components/LinearMafDisplayComponent.js +4 -4
- package/dist/LinearMafDisplay/components/LinearMafDisplayComponent.js.map +1 -1
- package/dist/LinearMafDisplay/components/Sidebar/ColorLegend.js +2 -2
- package/dist/LinearMafDisplay/components/Sidebar/ColorLegend.js.map +1 -1
- package/dist/LinearMafDisplay/components/Sidebar/RectBg.d.ts +1 -1
- package/dist/LinearMafDisplay/components/Sidebar/RectBg.js +2 -3
- package/dist/LinearMafDisplay/components/Sidebar/RectBg.js.map +1 -1
- package/dist/LinearMafDisplay/components/Sidebar/SvgWrapper.js +81 -11
- package/dist/LinearMafDisplay/components/Sidebar/SvgWrapper.js.map +1 -1
- package/dist/LinearMafDisplay/components/Sidebar/Tree.js +30 -9
- package/dist/LinearMafDisplay/components/Sidebar/Tree.js.map +1 -1
- package/dist/LinearMafDisplay/components/Sidebar/YScaleBars.d.ts +0 -1
- package/dist/LinearMafDisplay/components/Sidebar/YScaleBars.js.map +1 -1
- package/dist/LinearMafDisplay/renderSvg.js +1 -1
- package/dist/LinearMafDisplay/renderSvg.js.map +1 -1
- package/dist/LinearMafDisplay/stateModel.d.ts +69 -3
- package/dist/LinearMafDisplay/stateModel.js +96 -1
- package/dist/LinearMafDisplay/stateModel.js.map +1 -1
- package/dist/LinearMafDisplay/util.d.ts +1 -0
- package/dist/LinearMafDisplay/util.js +3 -2
- package/dist/LinearMafDisplay/util.js.map +1 -1
- package/dist/LinearMafRenderer/LinearMafRenderer.d.ts +4 -7
- package/dist/LinearMafRenderer/LinearMafRenderer.js.map +1 -1
- package/dist/LinearMafRenderer/components/LinearMafRendering.d.ts +1 -1
- package/dist/LinearMafRenderer/components/LinearMafRendering.js +27 -9
- package/dist/LinearMafRenderer/components/LinearMafRendering.js.map +1 -1
- package/dist/LinearMafRenderer/makeImageData.js +13 -9
- package/dist/LinearMafRenderer/makeImageData.js.map +1 -1
- package/dist/LinearMafRenderer/rendering/features.d.ts +0 -1
- package/dist/LinearMafRenderer/rendering/features.js +1 -14
- package/dist/LinearMafRenderer/rendering/features.js.map +1 -1
- package/dist/LinearMafRenderer/rendering/insertions.js +8 -6
- package/dist/LinearMafRenderer/rendering/insertions.js.map +1 -1
- package/dist/LinearMafRenderer/rendering/matches.d.ts +1 -1
- package/dist/LinearMafRenderer/rendering/matches.js +3 -15
- package/dist/LinearMafRenderer/rendering/matches.js.map +1 -1
- package/dist/LinearMafRenderer/rendering/spatialIndex.js +8 -2
- package/dist/LinearMafRenderer/rendering/spatialIndex.js.map +1 -1
- package/dist/LinearMafRenderer/rendering/text.js +1 -3
- package/dist/LinearMafRenderer/rendering/text.js.map +1 -1
- package/dist/LinearMafRenderer/rendering/types.d.ts +5 -4
- package/dist/jbrowse-plugin-mafviewer.umd.production.min.js +7 -7
- package/dist/jbrowse-plugin-mafviewer.umd.production.min.js.map +4 -4
- package/dist/util/fastaUtils.js +23 -50
- package/dist/util/fastaUtils.js.map +1 -1
- package/package.json +9 -9
- package/src/LinearMafDisplay/components/InsertionSequenceDialog/InsertionSequenceDialog.tsx +105 -0
- package/src/LinearMafDisplay/components/LinearMafDisplayComponent.tsx +4 -4
- package/src/LinearMafDisplay/components/Sidebar/ColorLegend.tsx +2 -6
- package/src/LinearMafDisplay/components/Sidebar/RectBg.tsx +8 -3
- package/src/LinearMafDisplay/components/Sidebar/SvgWrapper.tsx +117 -15
- package/src/LinearMafDisplay/components/Sidebar/Tree.tsx +53 -8
- package/src/LinearMafDisplay/components/Sidebar/YScaleBars.tsx +0 -1
- package/src/LinearMafDisplay/renderSvg.tsx +1 -1
- package/src/LinearMafDisplay/stateModel.ts +109 -1
- package/src/LinearMafDisplay/util.ts +4 -2
- package/src/LinearMafRenderer/LinearMafRenderer.ts +2 -4
- package/src/LinearMafRenderer/components/LinearMafRendering.tsx +51 -30
- package/src/LinearMafRenderer/makeImageData.ts +21 -27
- package/src/LinearMafRenderer/rendering/features.ts +2 -36
- package/src/LinearMafRenderer/rendering/insertions.ts +11 -6
- package/src/LinearMafRenderer/rendering/matches.ts +2 -27
- package/src/LinearMafRenderer/rendering/spatialIndex.ts +9 -2
- package/src/LinearMafRenderer/rendering/text.ts +1 -2
- package/src/LinearMafRenderer/rendering/types.ts +7 -4
- package/src/util/fastaUtils.ts +28 -54
- package/dist/BgzipTaffyAdapter/BgzipTaffyAdapter.d.ts +0 -30
- package/dist/BgzipTaffyAdapter/BgzipTaffyAdapter.js +0 -253
- package/dist/BgzipTaffyAdapter/BgzipTaffyAdapter.js.map +0 -1
- package/dist/BgzipTaffyAdapter/configSchema.d.ts +0 -44
- package/dist/BgzipTaffyAdapter/configSchema.js +0 -53
- package/dist/BgzipTaffyAdapter/configSchema.js.map +0 -1
- package/dist/BgzipTaffyAdapter/index.d.ts +0 -2
- package/dist/BgzipTaffyAdapter/index.js +0 -11
- package/dist/BgzipTaffyAdapter/index.js.map +0 -1
- package/dist/BgzipTaffyAdapter/rowInstructions.d.ts +0 -35
- package/dist/BgzipTaffyAdapter/rowInstructions.js +0 -55
- package/dist/BgzipTaffyAdapter/rowInstructions.js.map +0 -1
- package/dist/BgzipTaffyAdapter/types.d.ts +0 -13
- package/dist/BgzipTaffyAdapter/types.js +0 -2
- package/dist/BgzipTaffyAdapter/types.js.map +0 -1
- package/dist/BgzipTaffyAdapter/util.d.ts +0 -1
- package/dist/BgzipTaffyAdapter/util.js +0 -22
- package/dist/BgzipTaffyAdapter/util.js.map +0 -1
- package/dist/BgzipTaffyAdapter/virtualOffset.d.ts +0 -8
- package/dist/BgzipTaffyAdapter/virtualOffset.js +0 -23
- package/dist/BgzipTaffyAdapter/virtualOffset.js.map +0 -1
- package/dist/LinearMafRenderer/components/ReactComponent.d.ts +0 -9
- package/dist/LinearMafRenderer/components/ReactComponent.js +0 -47
- package/dist/LinearMafRenderer/components/ReactComponent.js.map +0 -1
- package/dist/LinearMafRenderer/components/util.d.ts +0 -1
- package/dist/LinearMafRenderer/components/util.js +0 -13
- package/dist/LinearMafRenderer/components/util.js.map +0 -1
- package/dist/out.js +0 -32303
- package/dist/out.js.map +0 -7
- package/src/LinearMafRenderer/components/util.ts +0 -13
package/README.md
CHANGED
|
@@ -9,7 +9,7 @@ JBrowse 2
|
|
|
9
9
|
|
|
10
10
|
## Demo
|
|
11
11
|
|
|
12
|
-
https://jbrowse.org/code/jb2/main/?config=%2Fdemos%2Fmaf%2Fhg38%2Fdistconfig.json&session=share-
|
|
12
|
+
https://jbrowse.org/code/jb2/main/?config=%2Fdemos%2Fmaf%2Fhg38%2Fdistconfig.json&session=share-bJXbDiWcc9&password=87GhV
|
|
13
13
|
|
|
14
14
|
## GUI usage (e.g. in JBrowse Desktop)
|
|
15
15
|
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
declare const InsertionSequenceDialog: ({ onClose, model, insertionData, }: {
|
|
3
|
+
onClose: () => void;
|
|
4
|
+
model: {
|
|
5
|
+
showAsUpperCase: boolean;
|
|
6
|
+
};
|
|
7
|
+
insertionData: {
|
|
8
|
+
sequence: string;
|
|
9
|
+
sampleLabel: string;
|
|
10
|
+
chr: string;
|
|
11
|
+
pos: number;
|
|
12
|
+
};
|
|
13
|
+
}) => React.JSX.Element;
|
|
14
|
+
export default InsertionSequenceDialog;
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import React, { useState } from 'react';
|
|
2
|
+
import { Dialog } from '@jbrowse/core/ui';
|
|
3
|
+
import { Button, DialogActions, DialogContent, TextField } from '@mui/material';
|
|
4
|
+
import { observer } from 'mobx-react';
|
|
5
|
+
import { makeStyles } from 'tss-react/mui';
|
|
6
|
+
const useStyles = makeStyles()({
|
|
7
|
+
dialogContent: {
|
|
8
|
+
width: '60em',
|
|
9
|
+
},
|
|
10
|
+
textAreaInput: {
|
|
11
|
+
fontFamily: 'monospace',
|
|
12
|
+
whiteSpace: 'pre',
|
|
13
|
+
overflowX: 'auto',
|
|
14
|
+
},
|
|
15
|
+
});
|
|
16
|
+
const InsertionSequenceDialog = observer(function ({ onClose, model, insertionData, }) {
|
|
17
|
+
const { classes } = useStyles();
|
|
18
|
+
const [copied, setCopied] = useState(false);
|
|
19
|
+
const { sequence, sampleLabel, chr, pos } = insertionData;
|
|
20
|
+
const { showAsUpperCase } = model;
|
|
21
|
+
const displaySequence = showAsUpperCase
|
|
22
|
+
? sequence.toUpperCase()
|
|
23
|
+
: sequence.toLowerCase();
|
|
24
|
+
return (React.createElement(Dialog, { open: true, onClose: onClose, title: `Insertion Sequence (${sequence.length}bp)`, maxWidth: "lg" },
|
|
25
|
+
React.createElement(DialogContent, null,
|
|
26
|
+
React.createElement("div", { style: { marginBottom: 16 } },
|
|
27
|
+
React.createElement("strong", null, "Sample:"),
|
|
28
|
+
" ",
|
|
29
|
+
sampleLabel,
|
|
30
|
+
React.createElement("br", null),
|
|
31
|
+
React.createElement("strong", null, "Position:"),
|
|
32
|
+
" ",
|
|
33
|
+
chr,
|
|
34
|
+
":",
|
|
35
|
+
pos.toLocaleString('en-US'),
|
|
36
|
+
React.createElement("br", null),
|
|
37
|
+
React.createElement("strong", null, "Length:"),
|
|
38
|
+
" ",
|
|
39
|
+
sequence.length,
|
|
40
|
+
"bp"),
|
|
41
|
+
React.createElement(TextField, { variant: "outlined", multiline: true, minRows: 3, maxRows: 10, className: classes.dialogContent, fullWidth: true, value: displaySequence, slotProps: {
|
|
42
|
+
input: {
|
|
43
|
+
readOnly: true,
|
|
44
|
+
classes: {
|
|
45
|
+
input: classes.textAreaInput,
|
|
46
|
+
},
|
|
47
|
+
},
|
|
48
|
+
} })),
|
|
49
|
+
React.createElement(DialogActions, null,
|
|
50
|
+
React.createElement(Button, { variant: "contained", color: "primary", onClick: () => {
|
|
51
|
+
// eslint-disable-next-line @typescript-eslint/no-floating-promises
|
|
52
|
+
;
|
|
53
|
+
(async () => {
|
|
54
|
+
try {
|
|
55
|
+
await navigator.clipboard.writeText(displaySequence);
|
|
56
|
+
setCopied(true);
|
|
57
|
+
setTimeout(() => {
|
|
58
|
+
setCopied(false);
|
|
59
|
+
}, 1000);
|
|
60
|
+
}
|
|
61
|
+
catch (e) {
|
|
62
|
+
console.error(e);
|
|
63
|
+
}
|
|
64
|
+
})();
|
|
65
|
+
} }, copied ? 'Copied!' : 'Copy to Clipboard'),
|
|
66
|
+
React.createElement(Button, { color: "secondary", variant: "contained", onClick: onClose }, "Close"))));
|
|
67
|
+
});
|
|
68
|
+
export default InsertionSequenceDialog;
|
|
69
|
+
//# sourceMappingURL=InsertionSequenceDialog.js.map
|
package/dist/LinearMafDisplay/components/InsertionSequenceDialog/InsertionSequenceDialog.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"InsertionSequenceDialog.js","sourceRoot":"","sources":["../../../../src/LinearMafDisplay/components/InsertionSequenceDialog/InsertionSequenceDialog.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AAEvC,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAA;AACzC,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,eAAe,CAAA;AAC/E,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AACrC,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;AAE1C,MAAM,SAAS,GAAG,UAAU,EAAE,CAAC;IAC7B,aAAa,EAAE;QACb,KAAK,EAAE,MAAM;KACd;IACD,aAAa,EAAE;QACb,UAAU,EAAE,WAAW;QACvB,UAAU,EAAE,KAAK;QACjB,SAAS,EAAE,MAAM;KAClB;CACF,CAAC,CAAA;AAEF,MAAM,uBAAuB,GAAG,QAAQ,CAAC,UAAU,EACjD,OAAO,EACP,KAAK,EACL,aAAa,GAYd;IACC,MAAM,EAAE,OAAO,EAAE,GAAG,SAAS,EAAE,CAAA;IAC/B,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAA;IAC3C,MAAM,EAAE,QAAQ,EAAE,WAAW,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,aAAa,CAAA;IACzD,MAAM,EAAE,eAAe,EAAE,GAAG,KAAK,CAAA;IACjC,MAAM,eAAe,GAAG,eAAe;QACrC,CAAC,CAAC,QAAQ,CAAC,WAAW,EAAE;QACxB,CAAC,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAA;IAE1B,OAAO,CACL,oBAAC,MAAM,IACL,IAAI,QACJ,OAAO,EAAE,OAAO,EAChB,KAAK,EAAE,uBAAuB,QAAQ,CAAC,MAAM,KAAK,EAClD,QAAQ,EAAC,IAAI;QAEb,oBAAC,aAAa;YACZ,6BAAK,KAAK,EAAE,EAAE,YAAY,EAAE,EAAE,EAAE;gBAC9B,8CAAwB;;gBAAE,WAAW;gBACrC,+BAAM;gBACN,gDAA0B;;gBAAE,GAAG;;gBAAG,GAAG,CAAC,cAAc,CAAC,OAAO,CAAC;gBAC7D,+BAAM;gBACN,8CAAwB;;gBAAE,QAAQ,CAAC,MAAM;qBACrC;YACN,oBAAC,SAAS,IACR,OAAO,EAAC,UAAU,EAClB,SAAS,QACT,OAAO,EAAE,CAAC,EACV,OAAO,EAAE,EAAE,EACX,SAAS,EAAE,OAAO,CAAC,aAAa,EAChC,SAAS,QACT,KAAK,EAAE,eAAe,EACtB,SAAS,EAAE;oBACT,KAAK,EAAE;wBACL,QAAQ,EAAE,IAAI;wBACd,OAAO,EAAE;4BACP,KAAK,EAAE,OAAO,CAAC,aAAa;yBAC7B;qBACF;iBACF,GACD,CACY;QAChB,oBAAC,aAAa;YACZ,oBAAC,MAAM,IACL,OAAO,EAAC,WAAW,EACnB,KAAK,EAAC,SAAS,EACf,OAAO,EAAE,GAAG,EAAE;oBACZ,mEAAmE;oBACnE,CAAC;oBAAA,CAAC,KAAK,IAAI,EAAE;wBACX,IAAI,CAAC;4BACH,MAAM,SAAS,CAAC,SAAS,CAAC,SAAS,CAAC,eAAe,CAAC,CAAA;4BACpD,SAAS,CAAC,IAAI,CAAC,CAAA;4BACf,UAAU,CAAC,GAAG,EAAE;gCACd,SAAS,CAAC,KAAK,CAAC,CAAA;4BAClB,CAAC,EAAE,IAAI,CAAC,CAAA;wBACV,CAAC;wBAAC,OAAO,CAAC,EAAE,CAAC;4BACX,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;wBAClB,CAAC;oBACH,CAAC,CAAC,EAAE,CAAA;gBACN,CAAC,IAEA,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,mBAAmB,CAClC;YACT,oBAAC,MAAM,IAAC,KAAK,EAAC,WAAW,EAAC,OAAO,EAAC,WAAW,EAAC,OAAO,EAAE,OAAO,YAErD,CACK,CACT,CACV,CAAA;AACH,CAAC,CAAC,CAAA;AAEF,eAAe,uBAAuB,CAAA"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import React, { useEffect, useRef, useState } from 'react';
|
|
1
|
+
import React, { useCallback, useEffect, useRef, useState } from 'react';
|
|
2
2
|
import { Menu } from '@jbrowse/core/ui';
|
|
3
3
|
import { getContainingView, getEnv } from '@jbrowse/core/util';
|
|
4
4
|
import { useTheme } from '@mui/material';
|
|
@@ -71,11 +71,11 @@ const LinearMafDisplay = observer(function (props) {
|
|
|
71
71
|
setIsDragging(false);
|
|
72
72
|
};
|
|
73
73
|
// Function to clear the selection box
|
|
74
|
-
const clearSelectionBox = () => {
|
|
74
|
+
const clearSelectionBox = useCallback(() => {
|
|
75
75
|
setShowSelectionBox(false);
|
|
76
76
|
setDragStartX(undefined);
|
|
77
77
|
setDragEndX(undefined);
|
|
78
|
-
};
|
|
78
|
+
}, []);
|
|
79
79
|
// Add keydown event handler to clear selection box when Escape key is pressed
|
|
80
80
|
useEffect(() => {
|
|
81
81
|
const handleKeyDown = (event) => {
|
|
@@ -109,7 +109,7 @@ const LinearMafDisplay = observer(function (props) {
|
|
|
109
109
|
setIsDragging(false);
|
|
110
110
|
} },
|
|
111
111
|
React.createElement(BaseLinearDisplayComponent, { ...props }),
|
|
112
|
-
React.createElement(YScaleBars, { model: model }),
|
|
112
|
+
model.showSidebar ? React.createElement(YScaleBars, { model: model }) : null,
|
|
113
113
|
mouseY && mouseX && sources && !contextCoord && !showSequenceDialog ? (React.createElement("div", { style: { position: 'relative' } },
|
|
114
114
|
React.createElement(Crosshairs, { width: width, height: height, scrollTop: scrollTop, mouseX: mouseX, mouseY: mouseY }),
|
|
115
115
|
React.createElement(MAFTooltip, { model: model, mouseX: mouseX, mouseY: mouseY, origMouseX: dragStartX, rowHeight: rowHeight, sources: sources }))) : null,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LinearMafDisplayComponent.js","sourceRoot":"","sources":["../../../src/LinearMafDisplay/components/LinearMafDisplayComponent.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;
|
|
1
|
+
{"version":3,"file":"LinearMafDisplayComponent.js","sourceRoot":"","sources":["../../../src/LinearMafDisplay/components/LinearMafDisplayComponent.tsx"],"names":[],"mappings":"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"}
|
|
@@ -3,10 +3,10 @@ import { observer } from 'mobx-react';
|
|
|
3
3
|
import RectBg from './RectBg';
|
|
4
4
|
import Tree from './Tree';
|
|
5
5
|
const ColorLegend = observer(function ({ model, }) {
|
|
6
|
-
const { labelWidth, canDisplayLabel, totalHeight, treeWidth, samples = [], rowHeight, svgFontSize, } = model;
|
|
6
|
+
const { labelWidth, canDisplayLabel, totalHeight, treeWidth, sidebarWidth, samples = [], rowHeight, svgFontSize, } = model;
|
|
7
7
|
const boxHeight = Math.min(20, rowHeight);
|
|
8
8
|
return (React.createElement(React.Fragment, null,
|
|
9
|
-
React.createElement(RectBg, { y: 0, x: 0, width:
|
|
9
|
+
React.createElement(RectBg, { y: 0, x: 0, width: sidebarWidth, height: totalHeight }),
|
|
10
10
|
React.createElement(Tree, { model: model }),
|
|
11
11
|
React.createElement("g", { transform: `translate(${treeWidth + 5},0)` },
|
|
12
12
|
samples.map((sample, idx) => (React.createElement(RectBg, { key: `${sample.id}-${idx}`, y: idx * rowHeight, x: 0, width: labelWidth + 5, height: boxHeight, color: sample.color }))),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ColorLegend.js","sourceRoot":"","sources":["../../../../src/LinearMafDisplay/components/Sidebar/ColorLegend.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AAErC,OAAO,MAAM,MAAM,UAAU,CAAA;AAC7B,OAAO,IAAI,MAAM,QAAQ,CAAA;AAIzB,MAAM,WAAW,GAAG,QAAQ,CAAC,UAAU,EACrC,KAAK,GAGN;IACC,MAAM,EACJ,UAAU,EACV,eAAe,EACf,WAAW,EACX,SAAS,EACT,OAAO,GAAG,EAAE,EACZ,SAAS,EACT,WAAW,GACZ,GAAG,KAAK,CAAA;IACT,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,SAAS,CAAC,CAAA;IAEzC,OAAO,CACL;QACE,oBAAC,MAAM,
|
|
1
|
+
{"version":3,"file":"ColorLegend.js","sourceRoot":"","sources":["../../../../src/LinearMafDisplay/components/Sidebar/ColorLegend.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AAErC,OAAO,MAAM,MAAM,UAAU,CAAA;AAC7B,OAAO,IAAI,MAAM,QAAQ,CAAA;AAIzB,MAAM,WAAW,GAAG,QAAQ,CAAC,UAAU,EACrC,KAAK,GAGN;IACC,MAAM,EACJ,UAAU,EACV,eAAe,EACf,WAAW,EACX,SAAS,EACT,YAAY,EACZ,OAAO,GAAG,EAAE,EACZ,SAAS,EACT,WAAW,GACZ,GAAG,KAAK,CAAA;IACT,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,SAAS,CAAC,CAAA;IAEzC,OAAO,CACL;QACE,oBAAC,MAAM,IAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,YAAY,EAAE,MAAM,EAAE,WAAW,GAAI;QAChE,oBAAC,IAAI,IAAC,KAAK,EAAE,KAAK,GAAI;QACtB,2BAAG,SAAS,EAAE,aAAa,SAAS,GAAG,CAAC,KAAK;YAC1C,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,GAAG,EAAE,EAAE,CAAC,CAC5B,oBAAC,MAAM,IACL,GAAG,EAAE,GAAG,MAAM,CAAC,EAAE,IAAI,GAAG,EAAE,EAC1B,CAAC,EAAE,GAAG,GAAG,SAAS,EAClB,CAAC,EAAE,CAAC,EACJ,KAAK,EAAE,UAAU,GAAG,CAAC,EACrB,MAAM,EAAE,SAAS,EACjB,KAAK,EAAE,MAAM,CAAC,KAAK,GACnB,CACH,CAAC;YACD,eAAe;gBACd,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,GAAG,EAAE,EAAE,CAAC,CAC3B,8BACE,GAAG,EAAE,GAAG,MAAM,CAAC,EAAE,IAAI,GAAG,EAAE,EAC1B,gBAAgB,EAAC,QAAQ,EACzB,QAAQ,EAAE,WAAW,EACrB,CAAC,EAAE,CAAC,EACJ,CAAC,EAAE,GAAG,GAAG,SAAS,GAAG,SAAS,GAAG,CAAC,IAEjC,MAAM,CAAC,KAAK,CACR,CACR,CAAC;gBACJ,CAAC,CAAC,IAAI,CACN,CACH,CACJ,CAAA;AACH,CAAC,CAAC,CAAA;AAEF,eAAe,WAAW,CAAA"}
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
const RectBg = (
|
|
3
|
-
|
|
4
|
-
return React.createElement("rect", { ...props, fill: color });
|
|
2
|
+
const RectBg = ({ x, y, width, height, color = 'rgb(255,255,255,0.5)', }) => {
|
|
3
|
+
return React.createElement("rect", { x: x, y: y, width: width, height: height, fill: color });
|
|
5
4
|
};
|
|
6
5
|
export default RectBg;
|
|
7
6
|
//# sourceMappingURL=RectBg.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RectBg.js","sourceRoot":"","sources":["../../../../src/LinearMafDisplay/components/Sidebar/RectBg.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,MAAM,MAAM,GAAG,CAAC,
|
|
1
|
+
{"version":3,"file":"RectBg.js","sourceRoot":"","sources":["../../../../src/LinearMafDisplay/components/Sidebar/RectBg.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,MAAM,MAAM,GAAG,CAAC,EACd,CAAC,EACD,CAAC,EACD,KAAK,EACL,MAAM,EACN,KAAK,GAAG,sBAAsB,GAO/B,EAAE,EAAE;IACH,OAAO,8BAAM,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,GAAI,CAAA;AACxE,CAAC,CAAA;AAED,eAAe,MAAM,CAAA"}
|
|
@@ -1,22 +1,92 @@
|
|
|
1
|
-
import React from 'react';
|
|
1
|
+
import React, { useEffect, useRef } from 'react';
|
|
2
|
+
import { ResizeHandle } from '@jbrowse/core/ui';
|
|
2
3
|
import { getContainingView } from '@jbrowse/core/util';
|
|
4
|
+
import { autorun } from 'mobx';
|
|
3
5
|
import { observer } from 'mobx-react';
|
|
6
|
+
import { isAlive } from 'mobx-state-tree';
|
|
7
|
+
import { makeStyles } from 'tss-react/mui';
|
|
8
|
+
const useStyles = makeStyles()({
|
|
9
|
+
resizeHandle: {
|
|
10
|
+
position: 'absolute',
|
|
11
|
+
top: 0,
|
|
12
|
+
height: '100%',
|
|
13
|
+
width: 4,
|
|
14
|
+
zIndex: 1001,
|
|
15
|
+
background: 'transparent',
|
|
16
|
+
cursor: 'col-resize',
|
|
17
|
+
'&:hover': {
|
|
18
|
+
background: 'rgba(0,0,0,0.2)',
|
|
19
|
+
},
|
|
20
|
+
},
|
|
21
|
+
});
|
|
4
22
|
const SvgWrapper = observer(function ({ children, model, exportSVG, }) {
|
|
23
|
+
const { classes } = useStyles();
|
|
24
|
+
const mouseoverRef = useRef(null);
|
|
25
|
+
useEffect(() => {
|
|
26
|
+
const ctx = mouseoverRef.current?.getContext('2d');
|
|
27
|
+
return ctx
|
|
28
|
+
? autorun(() => {
|
|
29
|
+
if (isAlive(model)) {
|
|
30
|
+
const { totalHeight, leafMap, rowHeight, highlightedRowNames, hoveredTreeNode, } = model;
|
|
31
|
+
const { width: viewWidth } = getContainingView(model);
|
|
32
|
+
ctx.resetTransform();
|
|
33
|
+
ctx.clearRect(0, 0, viewWidth, totalHeight);
|
|
34
|
+
if (highlightedRowNames) {
|
|
35
|
+
ctx.fillStyle = 'rgba(255,165,0,0.2)';
|
|
36
|
+
const halfRowHeight = rowHeight / 2;
|
|
37
|
+
for (const name of highlightedRowNames) {
|
|
38
|
+
const leaf = leafMap.get(name);
|
|
39
|
+
if (leaf) {
|
|
40
|
+
ctx.fillRect(0, leaf.x - halfRowHeight, viewWidth, rowHeight);
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
// Draw orange dot at hovered tree node
|
|
44
|
+
if (hoveredTreeNode) {
|
|
45
|
+
ctx.fillStyle = 'rgba(255,165,0,0.8)';
|
|
46
|
+
ctx.beginPath();
|
|
47
|
+
ctx.arc(hoveredTreeNode.y, hoveredTreeNode.x, 4, 0, 2 * Math.PI);
|
|
48
|
+
ctx.fill();
|
|
49
|
+
ctx.strokeStyle = 'rgba(255,140,0,1)';
|
|
50
|
+
ctx.lineWidth = 1;
|
|
51
|
+
ctx.stroke();
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
})
|
|
56
|
+
: undefined;
|
|
57
|
+
}, [model]);
|
|
5
58
|
if (exportSVG) {
|
|
6
59
|
return React.createElement(React.Fragment, null, children);
|
|
7
60
|
}
|
|
8
61
|
else {
|
|
9
|
-
const { totalHeight } = model;
|
|
62
|
+
const { totalHeight, treeWidth, hierarchy } = model;
|
|
10
63
|
const { width } = getContainingView(model);
|
|
11
|
-
return (React.createElement(
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
64
|
+
return (React.createElement(React.Fragment, null,
|
|
65
|
+
React.createElement("svg", { style: {
|
|
66
|
+
position: 'absolute',
|
|
67
|
+
userSelect: 'none',
|
|
68
|
+
top: 0,
|
|
69
|
+
left: 0,
|
|
70
|
+
pointerEvents: 'none',
|
|
71
|
+
height: totalHeight,
|
|
72
|
+
width,
|
|
73
|
+
} }, children),
|
|
74
|
+
React.createElement("canvas", { ref: mouseoverRef, width: width, height: totalHeight, style: {
|
|
75
|
+
position: 'absolute',
|
|
76
|
+
top: 0,
|
|
77
|
+
left: 0,
|
|
78
|
+
width,
|
|
79
|
+
height: totalHeight,
|
|
80
|
+
zIndex: 1000,
|
|
81
|
+
pointerEvents: 'none',
|
|
82
|
+
} }),
|
|
83
|
+
hierarchy ? (React.createElement("div", { onMouseDown: e => {
|
|
84
|
+
e.stopPropagation();
|
|
85
|
+
} },
|
|
86
|
+
React.createElement(ResizeHandle, { onDrag: distance => {
|
|
87
|
+
model.setTreeAreaWidth(Math.max(20, model.treeAreaWidth + distance));
|
|
88
|
+
return undefined;
|
|
89
|
+
}, className: classes.resizeHandle, style: { left: treeWidth }, vertical: true }))) : null));
|
|
20
90
|
}
|
|
21
91
|
});
|
|
22
92
|
export default SvgWrapper;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SvgWrapper.js","sourceRoot":"","sources":["../../../../src/LinearMafDisplay/components/Sidebar/SvgWrapper.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;
|
|
1
|
+
{"version":3,"file":"SvgWrapper.js","sourceRoot":"","sources":["../../../../src/LinearMafDisplay/components/Sidebar/SvgWrapper.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,11 +1,33 @@
|
|
|
1
|
-
import React from 'react';
|
|
1
|
+
import React, { useCallback, useMemo } from 'react';
|
|
2
2
|
import { observer } from 'mobx-react';
|
|
3
|
+
const hitboxStyle = {
|
|
4
|
+
pointerEvents: 'all',
|
|
5
|
+
cursor: 'pointer',
|
|
6
|
+
strokeWidth: 8,
|
|
7
|
+
stroke: 'transparent',
|
|
8
|
+
};
|
|
3
9
|
const Tree = observer(function ({ model }) {
|
|
4
10
|
const {
|
|
5
|
-
//
|
|
6
|
-
// renderTreeCanvas
|
|
11
|
+
// rowHeight is needed for redrawing after zoom change
|
|
7
12
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
8
|
-
rowHeight: _rowHeight, hierarchy, showBranchLen, } = model;
|
|
13
|
+
rowHeight: _rowHeight, treeAreaWidth, hierarchy, showBranchLen, nodeDescendantNames, } = model;
|
|
14
|
+
const clearHighlight = useCallback(() => {
|
|
15
|
+
model.setHighlightedRowNames(undefined);
|
|
16
|
+
}, [model]);
|
|
17
|
+
const nodeHandlers = useMemo(() => {
|
|
18
|
+
const handlers = new Map();
|
|
19
|
+
if (hierarchy) {
|
|
20
|
+
for (const node of hierarchy.descendants()) {
|
|
21
|
+
handlers.set(node, () => {
|
|
22
|
+
model.setHighlightedRowNames(nodeDescendantNames.get(node), {
|
|
23
|
+
x: node.x,
|
|
24
|
+
y: node.y,
|
|
25
|
+
});
|
|
26
|
+
});
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
return handlers;
|
|
30
|
+
}, [model, hierarchy, nodeDescendantNames, treeAreaWidth]);
|
|
9
31
|
return (React.createElement(React.Fragment, null, hierarchy
|
|
10
32
|
? [...hierarchy.links()].map(link => {
|
|
11
33
|
const { source, target } = link;
|
|
@@ -15,12 +37,11 @@ const Tree = observer(function ({ model }) {
|
|
|
15
37
|
const tx = showBranchLen ? target.len : target.y;
|
|
16
38
|
// @ts-expect-error
|
|
17
39
|
const sx = showBranchLen ? source.len : source.y;
|
|
18
|
-
|
|
19
|
-
// an optimization that allows us to skip drawing most tree links
|
|
20
|
-
// outside the block
|
|
21
|
-
return (React.createElement(React.Fragment, { key: [sy, ty, tx, sx].join('-') },
|
|
40
|
+
return (React.createElement(React.Fragment, { key: `${treeAreaWidth}-${sy}-${ty}-${tx}-${sx}` },
|
|
22
41
|
React.createElement("line", { stroke: "black", x1: sx, y1: sy, x2: sx, y2: ty }),
|
|
23
|
-
React.createElement("line", { stroke: "black", x1: sx, y1: ty, x2: tx, y2: ty })
|
|
42
|
+
React.createElement("line", { stroke: "black", x1: sx, y1: ty, x2: tx, y2: ty }),
|
|
43
|
+
React.createElement("line", { x1: sx, y1: sy, x2: sx, y2: ty, style: hitboxStyle, onMouseEnter: nodeHandlers.get(source), onMouseLeave: clearHighlight }),
|
|
44
|
+
React.createElement("line", { x1: sx, y1: ty, x2: tx, y2: ty, style: hitboxStyle, onMouseEnter: nodeHandlers.get(target), onMouseLeave: clearHighlight })));
|
|
24
45
|
})
|
|
25
46
|
: null));
|
|
26
47
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Tree.js","sourceRoot":"","sources":["../../../../src/LinearMafDisplay/components/Sidebar/Tree.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;
|
|
1
|
+
{"version":3,"file":"Tree.js","sourceRoot":"","sources":["../../../../src/LinearMafDisplay/components/Sidebar/Tree.tsx"],"names":[],"mappings":"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"}
|
|
@@ -2,7 +2,6 @@ import React from 'react';
|
|
|
2
2
|
import type { LinearMafDisplayModel } from '../../stateModel';
|
|
3
3
|
export declare const YScaleBars: (props: {
|
|
4
4
|
model: LinearMafDisplayModel;
|
|
5
|
-
orientation?: string;
|
|
6
5
|
exportSVG?: boolean;
|
|
7
6
|
}) => React.JSX.Element;
|
|
8
7
|
export default YScaleBars;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"YScaleBars.js","sourceRoot":"","sources":["../../../../src/LinearMafDisplay/components/Sidebar/YScaleBars.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AAErC,OAAO,WAAW,MAAM,eAAe,CAAA;AACvC,OAAO,UAAU,MAAM,cAAc,CAAA;AAIrC,MAAM,CAAC,MAAM,UAAU,GAAG,QAAQ,CAAC,UAAU,
|
|
1
|
+
{"version":3,"file":"YScaleBars.js","sourceRoot":"","sources":["../../../../src/LinearMafDisplay/components/Sidebar/YScaleBars.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AAErC,OAAO,WAAW,MAAM,eAAe,CAAA;AACvC,OAAO,UAAU,MAAM,cAAc,CAAA;AAIrC,MAAM,CAAC,MAAM,UAAU,GAAG,QAAQ,CAAC,UAAU,KAG5C;IACC,MAAM,EAAE,KAAK,EAAE,GAAG,KAAK,CAAA;IACvB,OAAO,CACL,oBAAC,UAAU,OAAK,KAAK;QACnB,oBAAC,WAAW,IAAC,KAAK,EAAE,KAAK,GAAI,CAClB,CACd,CAAA;AACH,CAAC,CAAC,CAAA;AAEF,eAAe,UAAU,CAAA"}
|
|
@@ -12,6 +12,6 @@ export async function renderSvg(self, opts, superRenderSvg) {
|
|
|
12
12
|
React.createElement("g", { clipPath: `url(#${clipid})` },
|
|
13
13
|
React.createElement("g", { id: "snpcov" }, await superRenderSvg(opts)),
|
|
14
14
|
React.createElement("g", { transform: `translate(${Math.max(-offsetPx, 0)})` },
|
|
15
|
-
React.createElement(YScaleBars, { model: self,
|
|
15
|
+
React.createElement(YScaleBars, { model: self, exportSVG: true })))));
|
|
16
16
|
}
|
|
17
17
|
//# sourceMappingURL=renderSvg.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"renderSvg.js","sourceRoot":"","sources":["../../src/LinearMafDisplay/renderSvg.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAA;AAEtD,OAAO,UAAU,MAAM,iCAAiC,CAAA;AAQxD,MAAM,CAAC,KAAK,UAAU,SAAS,CAC7B,IAA2B,EAC3B,IAA6B,EAC7B,cAA2E;IAE3E,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,GAAG,IAAI,CAAA;IAC3B,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,iBAAiB,CAAC,IAAI,CAA0B,CAAA;IAC5E,MAAM,MAAM,GAAG,WAAW,EAAE,EAAE,CAAA;IAC9B,OAAO,CACL;QACE;YACE,kCAAU,EAAE,EAAE,MAAM;gBAClB,8BAAM,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,GAAI,CACzC,CACN;QACP,2BAAG,QAAQ,EAAE,QAAQ,MAAM,GAAG;YAC5B,2BAAG,EAAE,EAAC,QAAQ,IAAE,MAAM,cAAc,CAAC,IAAI,CAAC,CAAK;YAC/C,2BAAG,SAAS,EAAE,aAAa,IAAI,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,GAAG;gBAClD,oBAAC,UAAU,IAAC,KAAK,EAAE,IAAI,EAAE,
|
|
1
|
+
{"version":3,"file":"renderSvg.js","sourceRoot":"","sources":["../../src/LinearMafDisplay/renderSvg.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAA;AAEtD,OAAO,UAAU,MAAM,iCAAiC,CAAA;AAQxD,MAAM,CAAC,KAAK,UAAU,SAAS,CAC7B,IAA2B,EAC3B,IAA6B,EAC7B,cAA2E;IAE3E,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,GAAG,IAAI,CAAA;IAC3B,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,iBAAiB,CAAC,IAAI,CAA0B,CAAA;IAC5E,MAAM,MAAM,GAAG,WAAW,EAAE,EAAE,CAAA;IAC9B,OAAO,CACL;QACE;YACE,kCAAU,EAAE,EAAE,MAAM;gBAClB,8BAAM,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,GAAI,CACzC,CACN;QACP,2BAAG,QAAQ,EAAE,QAAQ,MAAM,GAAG;YAC5B,2BAAG,EAAE,EAAC,QAAQ,IAAE,MAAM,cAAc,CAAC,IAAI,CAAC,CAAK;YAC/C,2BAAG,SAAS,EAAE,aAAa,IAAI,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,GAAG;gBAClD,oBAAC,UAAU,IAAC,KAAK,EAAE,IAAI,EAAE,SAAS,SAAG,CACnC,CACF,CACH,CACJ,CAAA;AACH,CAAC"}
|
|
@@ -36,7 +36,9 @@ export default function stateModelFactory(configSchema: AnyConfigurationSchemaTy
|
|
|
36
36
|
maxHeightReached: boolean;
|
|
37
37
|
ReactComponent: ({ model, }: {
|
|
38
38
|
model: {
|
|
39
|
-
error
|
|
39
|
+
error? /**
|
|
40
|
+
* #property
|
|
41
|
+
*/: unknown;
|
|
40
42
|
reload: () => void;
|
|
41
43
|
message: React.ReactNode;
|
|
42
44
|
filled?: boolean;
|
|
@@ -94,6 +96,7 @@ export default function stateModelFactory(configSchema: AnyConfigurationSchemaTy
|
|
|
94
96
|
showBranchLen: import("mobx-state-tree").IType<boolean | undefined, boolean, boolean>;
|
|
95
97
|
treeAreaWidth: import("mobx-state-tree").IType<number | undefined, number, number>;
|
|
96
98
|
showAsUpperCase: import("mobx-state-tree").IType<boolean | undefined, boolean, boolean>;
|
|
99
|
+
showSidebar: import("mobx-state-tree").IType<boolean | undefined, boolean, boolean>;
|
|
97
100
|
}, {
|
|
98
101
|
rendererTypeName: string;
|
|
99
102
|
error: unknown;
|
|
@@ -187,6 +190,7 @@ export default function stateModelFactory(configSchema: AnyConfigurationSchemaTy
|
|
|
187
190
|
regionCannotBeRenderedText(_region: import("@jbrowse/core/util").Region): "" | "Force load to see features";
|
|
188
191
|
regionCannotBeRendered(_region: import("@jbrowse/core/util").Region): import("react/jsx-runtime").JSX.Element | null;
|
|
189
192
|
} & {
|
|
193
|
+
mouseoverExtraInformation: string | undefined;
|
|
190
194
|
featureIdUnderMouse: undefined | string;
|
|
191
195
|
contextMenuFeature: undefined | import("@jbrowse/core/util").Feature;
|
|
192
196
|
} & {
|
|
@@ -201,9 +205,22 @@ export default function stateModelFactory(configSchema: AnyConfigurationSchemaTy
|
|
|
201
205
|
} & {
|
|
202
206
|
readonly features: import("@jbrowse/core/util/compositeMap").default<string, import("@jbrowse/core/util").Feature>;
|
|
203
207
|
readonly featureUnderMouse: import("@jbrowse/core/util").Feature | undefined;
|
|
208
|
+
readonly layoutFeatures: import("@jbrowse/core/util/compositeMap").default<string, [number, number, number, number] | [number, number, number, number, {
|
|
209
|
+
label?: string;
|
|
210
|
+
description?: string;
|
|
211
|
+
refName: string;
|
|
212
|
+
}]>;
|
|
204
213
|
getFeatureOverlapping(blockKey: string, x: number, y: number): string | undefined;
|
|
205
|
-
getFeatureByID(blockKey: string, id: string): [number, number, number, number] |
|
|
206
|
-
|
|
214
|
+
getFeatureByID(blockKey: string, id: string): ([number, number, number, number] | [number, number, number, number, {
|
|
215
|
+
label?: string;
|
|
216
|
+
description?: string;
|
|
217
|
+
refName: string;
|
|
218
|
+
}]) | undefined;
|
|
219
|
+
searchFeatureByID(id: string): ([number, number, number, number] | [number, number, number, number, {
|
|
220
|
+
label?: string;
|
|
221
|
+
description?: string;
|
|
222
|
+
refName: string;
|
|
223
|
+
}]) | undefined;
|
|
207
224
|
} & {
|
|
208
225
|
addBlock(key: string, block: import("@jbrowse/core/util/blockTypes").BaseBlock): void;
|
|
209
226
|
deleteBlock(key: string): void;
|
|
@@ -212,6 +229,7 @@ export default function stateModelFactory(configSchema: AnyConfigurationSchemaTy
|
|
|
212
229
|
clearFeatureSelection(): void;
|
|
213
230
|
setFeatureIdUnderMouse(feature?: string): void;
|
|
214
231
|
setContextMenuFeature(feature?: import("@jbrowse/core/util").Feature): void;
|
|
232
|
+
setMouseoverExtraInformation(extra?: string): void;
|
|
215
233
|
} & {
|
|
216
234
|
reload(): Promise<void>;
|
|
217
235
|
} & {
|
|
@@ -238,6 +256,17 @@ export default function stateModelFactory(configSchema: AnyConfigurationSchemaTy
|
|
|
238
256
|
* #volatile
|
|
239
257
|
*/
|
|
240
258
|
volatileTree: any;
|
|
259
|
+
/**
|
|
260
|
+
* #volatile
|
|
261
|
+
*/
|
|
262
|
+
highlightedRowNames: string[] | undefined;
|
|
263
|
+
/**
|
|
264
|
+
* #volatile
|
|
265
|
+
*/
|
|
266
|
+
hoveredTreeNode: {
|
|
267
|
+
x: number;
|
|
268
|
+
y: number;
|
|
269
|
+
} | undefined;
|
|
241
270
|
} & {
|
|
242
271
|
/**
|
|
243
272
|
* #action
|
|
@@ -270,6 +299,30 @@ export default function stateModelFactory(configSchema: AnyConfigurationSchemaTy
|
|
|
270
299
|
* #action
|
|
271
300
|
*/
|
|
272
301
|
setShowAsUpperCase(arg: boolean): void;
|
|
302
|
+
/**
|
|
303
|
+
* #action
|
|
304
|
+
*/
|
|
305
|
+
setTreeAreaWidth(width: number): void;
|
|
306
|
+
/**
|
|
307
|
+
* #action
|
|
308
|
+
*/
|
|
309
|
+
setShowSidebar(arg: boolean): void;
|
|
310
|
+
/**
|
|
311
|
+
* #action
|
|
312
|
+
*/
|
|
313
|
+
setHighlightedRowNames(names?: string[], nodePosition?: {
|
|
314
|
+
x: number;
|
|
315
|
+
y: number;
|
|
316
|
+
}): void;
|
|
317
|
+
/**
|
|
318
|
+
* #action
|
|
319
|
+
*/
|
|
320
|
+
showInsertionSequenceDialog(insertionData: {
|
|
321
|
+
sequence: string;
|
|
322
|
+
sampleLabel: string;
|
|
323
|
+
chr: string;
|
|
324
|
+
pos: number;
|
|
325
|
+
}): void;
|
|
273
326
|
} & {
|
|
274
327
|
/**
|
|
275
328
|
* #getter
|
|
@@ -302,6 +355,15 @@ export default function stateModelFactory(configSchema: AnyConfigurationSchemaTy
|
|
|
302
355
|
* #getter
|
|
303
356
|
*/
|
|
304
357
|
readonly leaves: HierarchyNode<any>[] | undefined;
|
|
358
|
+
/**
|
|
359
|
+
* #getter
|
|
360
|
+
*/
|
|
361
|
+
readonly leafMap: Map<any, HierarchyNode<any>>;
|
|
362
|
+
/**
|
|
363
|
+
* #getter
|
|
364
|
+
* Precomputed map from hierarchy node to its descendant leaf names
|
|
365
|
+
*/
|
|
366
|
+
readonly nodeDescendantNames: Map<unknown, string[]>;
|
|
305
367
|
/**
|
|
306
368
|
* #getter
|
|
307
369
|
*/
|
|
@@ -347,6 +409,10 @@ export default function stateModelFactory(configSchema: AnyConfigurationSchemaTy
|
|
|
347
409
|
* #getter
|
|
348
410
|
*/
|
|
349
411
|
readonly labelWidth: number;
|
|
412
|
+
/**
|
|
413
|
+
* #getter
|
|
414
|
+
*/
|
|
415
|
+
readonly sidebarWidth: number;
|
|
350
416
|
} & {
|
|
351
417
|
afterCreate(): void;
|
|
352
418
|
} & {
|