jbrowse-plugin-mafviewer 1.4.3 → 1.4.6
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/BigMafAdapter/BigMafAdapter.js +4 -5
- package/dist/BigMafAdapter/BigMafAdapter.js.map +1 -1
- package/dist/BigMafAdapter/configSchema.d.ts +2 -2
- package/dist/LinearMafDisplay/components/LinearMafDisplayComponent.js +39 -109
- package/dist/LinearMafDisplay/components/LinearMafDisplayComponent.js.map +1 -1
- package/dist/LinearMafDisplay/components/MAFTooltip.d.ts +0 -3
- package/dist/LinearMafDisplay/components/MAFTooltip.js.map +1 -1
- package/dist/LinearMafDisplay/components/MsaHighlightOverlay.d.ts +9 -0
- package/dist/LinearMafDisplay/components/MsaHighlightOverlay.js +34 -0
- package/dist/LinearMafDisplay/components/MsaHighlightOverlay.js.map +1 -0
- 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/components/useDragSelection.d.ts +25 -0
- package/dist/LinearMafDisplay/components/useDragSelection.js +103 -0
- package/dist/LinearMafDisplay/components/useDragSelection.js.map +1 -0
- package/dist/LinearMafDisplay/configSchema.d.ts +3 -30
- package/dist/LinearMafDisplay/renderSvg.js +1 -1
- package/dist/LinearMafDisplay/renderSvg.js.map +1 -1
- package/dist/LinearMafDisplay/stateModel.d.ts +1090 -102
- package/dist/LinearMafDisplay/stateModel.js +156 -17
- package/dist/LinearMafDisplay/stateModel.js.map +1 -1
- package/dist/LinearMafDisplay/types.d.ts +2 -2
- package/dist/LinearMafDisplay/util.d.ts +6 -0
- package/dist/LinearMafDisplay/util.js +28 -6
- package/dist/LinearMafDisplay/util.js.map +1 -1
- package/dist/LinearMafRenderer/LinearMafRenderer.d.ts +43 -10
- package/dist/LinearMafRenderer/LinearMafRenderer.js +1 -1
- package/dist/LinearMafRenderer/LinearMafRenderer.js.map +1 -1
- package/dist/LinearMafRenderer/components/LinearMafRendering.d.ts +14 -5
- package/dist/LinearMafRenderer/components/LinearMafRendering.js +40 -20
- package/dist/LinearMafRenderer/components/LinearMafRendering.js.map +1 -1
- package/dist/LinearMafRenderer/configSchema.d.ts +1 -6
- package/dist/LinearMafRenderer/configSchema.js +1 -6
- package/dist/LinearMafRenderer/configSchema.js.map +1 -1
- package/dist/LinearMafRenderer/makeImageData.js +6 -7
- 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.d.ts +1 -1
- package/dist/LinearMafRenderer/rendering/insertions.js +10 -8
- 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/mismatches.d.ts +1 -1
- package/dist/LinearMafRenderer/rendering/mismatches.js +3 -3
- 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 +6 -5
- package/dist/MafAddTrackWorkflow/AddTrackWorkflow.js +1 -1
- package/dist/MafAddTrackWorkflow/AddTrackWorkflow.js.map +1 -1
- package/dist/MafAddTrackWorkflow/index.js +1 -1
- package/dist/MafAddTrackWorkflow/index.js.map +1 -1
- package/dist/MafGetSequences/MafGetSequences.d.ts +1 -0
- package/dist/MafGetSequences/MafGetSequences.js +2 -1
- package/dist/MafGetSequences/MafGetSequences.js.map +1 -1
- package/dist/MafSequenceWidget/LabelsCanvas.d.ts +8 -0
- package/dist/MafSequenceWidget/LabelsCanvas.js +37 -0
- package/dist/MafSequenceWidget/LabelsCanvas.js.map +1 -0
- package/dist/MafSequenceWidget/MafSequenceHoverHighlight.d.ts +6 -0
- package/dist/MafSequenceWidget/MafSequenceHoverHighlight.js +52 -0
- package/dist/MafSequenceWidget/MafSequenceHoverHighlight.js.map +1 -0
- package/dist/MafSequenceWidget/MafSequenceHoverHighlightExtension.d.ts +2 -0
- package/dist/MafSequenceWidget/MafSequenceHoverHighlightExtension.js +12 -0
- package/dist/MafSequenceWidget/MafSequenceHoverHighlightExtension.js.map +1 -0
- package/dist/MafSequenceWidget/MafSequenceWidget.d.ts +6 -0
- package/dist/MafSequenceWidget/MafSequenceWidget.js +189 -0
- package/dist/MafSequenceWidget/MafSequenceWidget.js.map +1 -0
- package/dist/MafSequenceWidget/SequenceCanvas.d.ts +12 -0
- package/dist/MafSequenceWidget/SequenceCanvas.js +86 -0
- package/dist/MafSequenceWidget/SequenceCanvas.js.map +1 -0
- package/dist/MafSequenceWidget/SequenceDisplay.d.ts +12 -0
- package/dist/MafSequenceWidget/SequenceDisplay.js +117 -0
- package/dist/MafSequenceWidget/SequenceDisplay.js.map +1 -0
- package/dist/MafSequenceWidget/SequenceTooltip.d.ts +11 -0
- package/dist/MafSequenceWidget/SequenceTooltip.js +39 -0
- package/dist/MafSequenceWidget/SequenceTooltip.js.map +1 -0
- package/dist/MafSequenceWidget/baseColors.d.ts +3 -0
- package/dist/MafSequenceWidget/baseColors.js +64 -0
- package/dist/MafSequenceWidget/baseColors.js.map +1 -0
- package/dist/MafSequenceWidget/colToGenomePos.d.ts +13 -0
- package/dist/MafSequenceWidget/colToGenomePos.js +32 -0
- package/dist/MafSequenceWidget/colToGenomePos.js.map +1 -0
- package/dist/MafSequenceWidget/colToGenomePos.test.d.ts +1 -0
- package/dist/MafSequenceWidget/colToGenomePos.test.js +136 -0
- package/dist/MafSequenceWidget/colToGenomePos.test.js.map +1 -0
- package/dist/MafSequenceWidget/configSchema.d.ts +1 -0
- package/dist/MafSequenceWidget/configSchema.js +3 -0
- package/dist/MafSequenceWidget/configSchema.js.map +1 -0
- package/dist/MafSequenceWidget/constants.d.ts +4 -0
- package/dist/MafSequenceWidget/constants.js +5 -0
- package/dist/MafSequenceWidget/constants.js.map +1 -0
- package/dist/MafSequenceWidget/index.d.ts +2 -0
- package/dist/MafSequenceWidget/index.js +16 -0
- package/dist/MafSequenceWidget/index.js.map +1 -0
- package/dist/MafSequenceWidget/stateModelFactory.d.ts +67 -0
- package/dist/MafSequenceWidget/stateModelFactory.js +21 -0
- package/dist/MafSequenceWidget/stateModelFactory.js.map +1 -0
- package/dist/MafTabixAdapter/MafTabixAdapter.js +4 -35
- package/dist/MafTabixAdapter/MafTabixAdapter.js.map +1 -1
- package/dist/MafTabixAdapter/configSchema.d.ts +4 -4
- package/dist/MafTrack/configSchema.d.ts +16 -11
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/jbrowse-plugin-mafviewer.umd.production.min.js +12 -24
- package/dist/jbrowse-plugin-mafviewer.umd.production.min.js.map +4 -4
- package/dist/util/clipboard.d.ts +2 -0
- package/dist/util/clipboard.js +28 -0
- package/dist/util/clipboard.js.map +1 -0
- package/dist/util/fastaUtils.d.ts +2 -1
- package/dist/util/fastaUtils.js +93 -50
- package/dist/util/fastaUtils.js.map +1 -1
- package/dist/util/fastaUtils.test.js +190 -0
- package/dist/util/fastaUtils.test.js.map +1 -1
- package/dist/util/parseAssemblyName.d.ts +32 -0
- package/dist/util/parseAssemblyName.js +87 -0
- package/dist/util/parseAssemblyName.js.map +1 -0
- package/dist/util/parseAssemblyName.test.d.ts +1 -0
- package/dist/util/parseAssemblyName.test.js +269 -0
- package/dist/util/parseAssemblyName.test.js.map +1 -0
- package/package.json +12 -12
- package/src/BigMafAdapter/BigMafAdapter.ts +5 -5
- package/src/LinearMafDisplay/components/LinearMafDisplayComponent.tsx +63 -145
- package/src/LinearMafDisplay/components/MAFTooltip.tsx +0 -3
- package/src/LinearMafDisplay/components/MsaHighlightOverlay.tsx +62 -0
- 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/components/useDragSelection.ts +159 -0
- package/src/LinearMafDisplay/renderSvg.tsx +1 -1
- package/src/LinearMafDisplay/stateModel.ts +215 -20
- package/src/LinearMafDisplay/types.ts +2 -2
- package/src/LinearMafDisplay/util.ts +35 -7
- package/src/LinearMafRenderer/LinearMafRenderer.ts +3 -5
- package/src/LinearMafRenderer/components/LinearMafRendering.tsx +67 -33
- package/src/LinearMafRenderer/configSchema.ts +1 -6
- package/src/LinearMafRenderer/makeImageData.ts +5 -14
- package/src/LinearMafRenderer/rendering/features.ts +2 -36
- package/src/LinearMafRenderer/rendering/insertions.ts +13 -8
- package/src/LinearMafRenderer/rendering/matches.ts +2 -27
- package/src/LinearMafRenderer/rendering/mismatches.ts +3 -3
- package/src/LinearMafRenderer/rendering/spatialIndex.ts +9 -2
- package/src/LinearMafRenderer/rendering/text.ts +1 -2
- package/src/LinearMafRenderer/rendering/types.ts +8 -5
- package/src/MafAddTrackWorkflow/AddTrackWorkflow.tsx +1 -1
- package/src/MafAddTrackWorkflow/index.ts +1 -1
- package/src/MafGetSequences/MafGetSequences.ts +10 -2
- package/src/MafSequenceWidget/LabelsCanvas.tsx +58 -0
- package/src/MafSequenceWidget/MafSequenceHoverHighlight.tsx +83 -0
- package/src/MafSequenceWidget/MafSequenceHoverHighlightExtension.tsx +24 -0
- package/src/MafSequenceWidget/MafSequenceWidget.tsx +294 -0
- package/src/MafSequenceWidget/SequenceCanvas.tsx +136 -0
- package/src/MafSequenceWidget/SequenceDisplay.tsx +188 -0
- package/src/MafSequenceWidget/SequenceTooltip.tsx +70 -0
- package/src/MafSequenceWidget/baseColors.ts +76 -0
- package/src/MafSequenceWidget/colToGenomePos.test.ts +166 -0
- package/src/MafSequenceWidget/colToGenomePos.ts +40 -0
- package/src/MafSequenceWidget/configSchema.ts +3 -0
- package/src/MafSequenceWidget/constants.ts +4 -0
- package/src/MafSequenceWidget/index.ts +24 -0
- package/src/MafSequenceWidget/stateModelFactory.ts +43 -0
- package/src/MafTabixAdapter/MafTabixAdapter.ts +12 -51
- package/src/index.ts +2 -0
- package/src/util/__snapshots__/fastaUtils.test.ts.snap +35 -0
- package/src/util/clipboard.ts +35 -0
- package/src/util/fastaUtils.test.ts +199 -0
- package/src/util/fastaUtils.ts +118 -51
- package/src/util/parseAssemblyName.test.ts +350 -0
- package/src/util/parseAssemblyName.ts +106 -0
- package/dist/LinearMafDisplay/components/GetSequenceDialog/GetSequenceDialog.d.ts +0 -11
- package/dist/LinearMafDisplay/components/GetSequenceDialog/GetSequenceDialog.js +0 -97
- package/dist/LinearMafDisplay/components/GetSequenceDialog/GetSequenceDialog.js.map +0 -1
- package/dist/LinearMafDisplay/components/util.d.ts +0 -1
- package/dist/LinearMafDisplay/components/util.js +0 -8
- package/dist/LinearMafDisplay/components/util.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/util/fetchSequences.d.ts +0 -18
- package/dist/util/fetchSequences.js +0 -39
- package/dist/util/fetchSequences.js.map +0 -1
- package/dist/util/useSequences.d.ts +0 -21
- package/dist/util/useSequences.js +0 -64
- package/dist/util/useSequences.js.map +0 -1
- package/src/LinearMafDisplay/components/GetSequenceDialog/GetSequenceDialog.tsx +0 -175
- package/src/LinearMafDisplay/components/util.ts +0 -7
- package/src/LinearMafRenderer/components/util.ts +0 -13
- package/src/util/fetchSequences.ts +0 -57
- package/src/util/useSequences.ts +0 -90
|
@@ -1,14 +1,22 @@
|
|
|
1
1
|
import { lazy } from 'react';
|
|
2
2
|
import { ConfigurationReference, getConf } from '@jbrowse/core/configuration';
|
|
3
|
-
import { getEnv, getSession, max, measureText } from '@jbrowse/core/util';
|
|
3
|
+
import { getContainingTrack, getContainingView, getEnv, getSession, max, measureText, } from '@jbrowse/core/util';
|
|
4
4
|
import { getRpcSessionId } from '@jbrowse/core/util/tracks';
|
|
5
|
+
import { addDisposer, isAlive, types } from '@jbrowse/mobx-state-tree';
|
|
5
6
|
import { ascending } from 'd3-array';
|
|
6
7
|
import { cluster, hierarchy } from 'd3-hierarchy';
|
|
7
8
|
import deepEqual from 'fast-deep-equal';
|
|
8
9
|
import { autorun } from 'mobx';
|
|
9
|
-
import {
|
|
10
|
-
import { maxLength, setBrLength } from './util';
|
|
10
|
+
import { computeNodeDescendantNames, maxLength, setBrLength } from './util';
|
|
11
11
|
import { normalize } from '../util';
|
|
12
|
+
const defaultRowHeight = 15;
|
|
13
|
+
const defaultRowProportion = 0.8;
|
|
14
|
+
const defaultShowAllLetters = false;
|
|
15
|
+
const defaultMismatchRendering = true;
|
|
16
|
+
const defaultShowBranchLen = false;
|
|
17
|
+
const defaultTreeAreaWidth = 80;
|
|
18
|
+
const defaultShowAsUpperCase = true;
|
|
19
|
+
const defaultShowSidebar = true;
|
|
12
20
|
const SetRowHeightDialog = lazy(() => import('./components/SetRowHeightDialog/SetRowHeightDialog'));
|
|
13
21
|
/**
|
|
14
22
|
* #stateModel LinearMafDisplay
|
|
@@ -30,31 +38,35 @@ export default function stateModelFactory(configSchema, pluginManager) {
|
|
|
30
38
|
/**
|
|
31
39
|
* #property
|
|
32
40
|
*/
|
|
33
|
-
rowHeight:
|
|
41
|
+
rowHeight: defaultRowHeight,
|
|
34
42
|
/**
|
|
35
43
|
* #property
|
|
36
44
|
*/
|
|
37
|
-
rowProportion:
|
|
45
|
+
rowProportion: defaultRowProportion,
|
|
38
46
|
/**
|
|
39
47
|
* #property
|
|
40
48
|
*/
|
|
41
|
-
showAllLetters:
|
|
49
|
+
showAllLetters: defaultShowAllLetters,
|
|
42
50
|
/**
|
|
43
51
|
* #property
|
|
44
52
|
*/
|
|
45
|
-
mismatchRendering:
|
|
53
|
+
mismatchRendering: defaultMismatchRendering,
|
|
46
54
|
/**
|
|
47
55
|
* #property
|
|
48
56
|
*/
|
|
49
|
-
showBranchLen:
|
|
57
|
+
showBranchLen: defaultShowBranchLen,
|
|
50
58
|
/**
|
|
51
59
|
* #property
|
|
52
60
|
*/
|
|
53
|
-
treeAreaWidth:
|
|
61
|
+
treeAreaWidth: defaultTreeAreaWidth,
|
|
54
62
|
/**
|
|
55
63
|
* #property
|
|
56
64
|
*/
|
|
57
|
-
showAsUpperCase:
|
|
65
|
+
showAsUpperCase: defaultShowAsUpperCase,
|
|
66
|
+
/**
|
|
67
|
+
* #property
|
|
68
|
+
*/
|
|
69
|
+
showSidebar: defaultShowSidebar,
|
|
58
70
|
}))
|
|
59
71
|
.volatile(() => ({
|
|
60
72
|
/**
|
|
@@ -73,6 +85,14 @@ export default function stateModelFactory(configSchema, pluginManager) {
|
|
|
73
85
|
* #volatile
|
|
74
86
|
*/
|
|
75
87
|
volatileTree: undefined,
|
|
88
|
+
/**
|
|
89
|
+
* #volatile
|
|
90
|
+
*/
|
|
91
|
+
highlightedRowNames: undefined,
|
|
92
|
+
/**
|
|
93
|
+
* #volatile
|
|
94
|
+
*/
|
|
95
|
+
hoveredTreeNode: undefined,
|
|
76
96
|
}))
|
|
77
97
|
.actions(self => ({
|
|
78
98
|
/**
|
|
@@ -108,7 +128,7 @@ export default function stateModelFactory(configSchema, pluginManager) {
|
|
|
108
128
|
/**
|
|
109
129
|
* #action
|
|
110
130
|
*/
|
|
111
|
-
setSamples({ samples, tree }) {
|
|
131
|
+
setSamples({ samples, tree, }) {
|
|
112
132
|
if (!deepEqual(samples, self.volatileSamples)) {
|
|
113
133
|
self.volatileSamples = samples;
|
|
114
134
|
}
|
|
@@ -122,6 +142,49 @@ export default function stateModelFactory(configSchema, pluginManager) {
|
|
|
122
142
|
setShowAsUpperCase(arg) {
|
|
123
143
|
self.showAsUpperCase = arg;
|
|
124
144
|
},
|
|
145
|
+
/**
|
|
146
|
+
* #action
|
|
147
|
+
*/
|
|
148
|
+
setTreeAreaWidth(width) {
|
|
149
|
+
self.treeAreaWidth = width;
|
|
150
|
+
},
|
|
151
|
+
/**
|
|
152
|
+
* #action
|
|
153
|
+
*/
|
|
154
|
+
setShowSidebar(arg) {
|
|
155
|
+
self.showSidebar = arg;
|
|
156
|
+
},
|
|
157
|
+
/**
|
|
158
|
+
* #action
|
|
159
|
+
*/
|
|
160
|
+
setHighlightedRowNames(names, nodePosition) {
|
|
161
|
+
self.highlightedRowNames = names;
|
|
162
|
+
self.hoveredTreeNode = nodePosition;
|
|
163
|
+
},
|
|
164
|
+
/**
|
|
165
|
+
* #action
|
|
166
|
+
*/
|
|
167
|
+
showInsertionSequenceDialog(insertionData) {
|
|
168
|
+
const { sequence, sampleLabel, chr, pos } = insertionData;
|
|
169
|
+
const session = getSession(self);
|
|
170
|
+
const featureWidget = session.addWidget('BaseFeatureWidget', 'baseFeature', {
|
|
171
|
+
featureData: {
|
|
172
|
+
uniqueId: `insertion-${chr}-${pos}-${sampleLabel}`,
|
|
173
|
+
type: 'insertion',
|
|
174
|
+
refName: chr,
|
|
175
|
+
start: pos,
|
|
176
|
+
end: pos + 1,
|
|
177
|
+
sample: sampleLabel,
|
|
178
|
+
insertionLength: sequence.length,
|
|
179
|
+
sequence: self.showAsUpperCase
|
|
180
|
+
? sequence.toUpperCase()
|
|
181
|
+
: sequence.toLowerCase(),
|
|
182
|
+
},
|
|
183
|
+
view: getContainingView(self),
|
|
184
|
+
track: getContainingTrack(self),
|
|
185
|
+
});
|
|
186
|
+
session.showWidget(featureWidget);
|
|
187
|
+
},
|
|
125
188
|
}))
|
|
126
189
|
.views(self => ({
|
|
127
190
|
/**
|
|
@@ -149,8 +212,7 @@ export default function stateModelFactory(configSchema, pluginManager) {
|
|
|
149
212
|
get root() {
|
|
150
213
|
return self.volatileTree
|
|
151
214
|
? hierarchy(self.volatileTree, d => d.children)
|
|
152
|
-
|
|
153
|
-
.sum(d => (d.children ? 0 : 1))
|
|
215
|
+
.sum(d => (d.children?.length ? 0 : 1))
|
|
154
216
|
.sort((a, b) => ascending(a.data.length || 1, b.data.length || 1))
|
|
155
217
|
: undefined;
|
|
156
218
|
},
|
|
@@ -164,11 +226,18 @@ export default function stateModelFactory(configSchema, pluginManager) {
|
|
|
164
226
|
const r = self.root;
|
|
165
227
|
if (r) {
|
|
166
228
|
const width = self.treeAreaWidth;
|
|
229
|
+
// Use totalHeight - rowHeight so leaves are centered in rows
|
|
230
|
+
// (first leaf at rowHeight/2, last at totalHeight - rowHeight/2)
|
|
167
231
|
const clust = cluster()
|
|
168
|
-
.size([this.totalHeight, width])
|
|
232
|
+
.size([this.totalHeight - self.rowHeight, width])
|
|
169
233
|
.separation(() => 1);
|
|
170
234
|
clust(r);
|
|
171
|
-
|
|
235
|
+
// Offset all nodes by rowHeight/2 to center in rows
|
|
236
|
+
for (const node of r.descendants()) {
|
|
237
|
+
node.x = node.x + self.rowHeight / 2;
|
|
238
|
+
}
|
|
239
|
+
r.data.length = 0;
|
|
240
|
+
setBrLength(r, 0, width / maxLength(r));
|
|
172
241
|
return r;
|
|
173
242
|
}
|
|
174
243
|
else {
|
|
@@ -205,6 +274,22 @@ export default function stateModelFactory(configSchema, pluginManager) {
|
|
|
205
274
|
get leaves() {
|
|
206
275
|
return self.root?.leaves();
|
|
207
276
|
},
|
|
277
|
+
/**
|
|
278
|
+
* #getter
|
|
279
|
+
*/
|
|
280
|
+
get leafMap() {
|
|
281
|
+
return new Map(this.leaves?.map(leaf => [leaf.data.name, leaf]));
|
|
282
|
+
},
|
|
283
|
+
/**
|
|
284
|
+
* #getter
|
|
285
|
+
* Precomputed map from hierarchy node to its descendant leaf names
|
|
286
|
+
*/
|
|
287
|
+
get nodeDescendantNames() {
|
|
288
|
+
if (this.hierarchy) {
|
|
289
|
+
return computeNodeDescendantNames(this.hierarchy);
|
|
290
|
+
}
|
|
291
|
+
return new Map();
|
|
292
|
+
},
|
|
208
293
|
/**
|
|
209
294
|
* #getter
|
|
210
295
|
*/
|
|
@@ -233,7 +318,7 @@ export default function stateModelFactory(configSchema, pluginManager) {
|
|
|
233
318
|
const s = superRenderProps();
|
|
234
319
|
return {
|
|
235
320
|
...s,
|
|
236
|
-
notReady: (!self.volatileSamples && !self.volatileTree) ||
|
|
321
|
+
notReady: (!self.volatileSamples && !self.volatileTree) || s.notReady,
|
|
237
322
|
config: rendererConfig,
|
|
238
323
|
samples,
|
|
239
324
|
rowHeight,
|
|
@@ -305,11 +390,41 @@ export default function stateModelFactory(configSchema, pluginManager) {
|
|
|
305
390
|
self.setMismatchRendering(!self.mismatchRendering);
|
|
306
391
|
},
|
|
307
392
|
},
|
|
393
|
+
{
|
|
394
|
+
label: 'Show sidebar',
|
|
395
|
+
type: 'checkbox',
|
|
396
|
+
checked: self.showSidebar,
|
|
397
|
+
onClick: () => {
|
|
398
|
+
self.setShowSidebar(!self.showSidebar);
|
|
399
|
+
},
|
|
400
|
+
},
|
|
308
401
|
];
|
|
309
402
|
},
|
|
310
403
|
};
|
|
311
404
|
})
|
|
312
405
|
.views(self => ({
|
|
406
|
+
/**
|
|
407
|
+
* #getter
|
|
408
|
+
* Get highlight regions from connected MSA views
|
|
409
|
+
*/
|
|
410
|
+
get msaHighlights() {
|
|
411
|
+
const session = getSession(self);
|
|
412
|
+
const view = getContainingView(self);
|
|
413
|
+
const highlights = [];
|
|
414
|
+
// Find MSA views that are connected to our parent view
|
|
415
|
+
for (const v of session.views) {
|
|
416
|
+
if (v.type === 'MsaView' &&
|
|
417
|
+
v.connectedViewId === view.id) {
|
|
418
|
+
const msaView = v;
|
|
419
|
+
if (msaView.connectedHighlights) {
|
|
420
|
+
for (const h of msaView.connectedHighlights) {
|
|
421
|
+
highlights.push(h);
|
|
422
|
+
}
|
|
423
|
+
}
|
|
424
|
+
}
|
|
425
|
+
}
|
|
426
|
+
return highlights;
|
|
427
|
+
},
|
|
313
428
|
/**
|
|
314
429
|
* #getter
|
|
315
430
|
*/
|
|
@@ -331,6 +446,12 @@ export default function stateModelFactory(configSchema, pluginManager) {
|
|
|
331
446
|
?.map(s => measureText(s.label, this.svgFontSize))
|
|
332
447
|
.map(width => (this.canDisplayLabel ? width : minWidth)) || [], 0);
|
|
333
448
|
},
|
|
449
|
+
/**
|
|
450
|
+
* #getter
|
|
451
|
+
*/
|
|
452
|
+
get sidebarWidth() {
|
|
453
|
+
return self.showSidebar ? this.labelWidth + 5 + self.treeWidth : 0;
|
|
454
|
+
},
|
|
334
455
|
}))
|
|
335
456
|
.actions(self => ({
|
|
336
457
|
afterCreate() {
|
|
@@ -343,7 +464,7 @@ export default function stateModelFactory(configSchema, pluginManager) {
|
|
|
343
464
|
adapterConfig: self.adapterConfig,
|
|
344
465
|
statusCallback: (message) => {
|
|
345
466
|
if (isAlive(self)) {
|
|
346
|
-
self.
|
|
467
|
+
self.setStatusMessage(message);
|
|
347
468
|
}
|
|
348
469
|
},
|
|
349
470
|
})));
|
|
@@ -367,6 +488,24 @@ export default function stateModelFactory(configSchema, pluginManager) {
|
|
|
367
488
|
return renderSvg(self, opts, superRenderSvg);
|
|
368
489
|
},
|
|
369
490
|
};
|
|
491
|
+
})
|
|
492
|
+
.postProcessSnapshot(snap => {
|
|
493
|
+
const { rowHeight, rowProportion, showAllLetters, mismatchRendering, showBranchLen, treeAreaWidth, showAsUpperCase, showSidebar, ...rest } = snap;
|
|
494
|
+
return {
|
|
495
|
+
...rest,
|
|
496
|
+
...(rowHeight !== defaultRowHeight ? { rowHeight } : {}),
|
|
497
|
+
...(rowProportion !== defaultRowProportion ? { rowProportion } : {}),
|
|
498
|
+
...(showAllLetters !== defaultShowAllLetters ? { showAllLetters } : {}),
|
|
499
|
+
...(mismatchRendering !== defaultMismatchRendering
|
|
500
|
+
? { mismatchRendering }
|
|
501
|
+
: {}),
|
|
502
|
+
...(showBranchLen !== defaultShowBranchLen ? { showBranchLen } : {}),
|
|
503
|
+
...(treeAreaWidth !== defaultTreeAreaWidth ? { treeAreaWidth } : {}),
|
|
504
|
+
...(showAsUpperCase !== defaultShowAsUpperCase
|
|
505
|
+
? { showAsUpperCase }
|
|
506
|
+
: {}),
|
|
507
|
+
...(showSidebar !== defaultShowSidebar ? { showSidebar } : {}),
|
|
508
|
+
};
|
|
370
509
|
});
|
|
371
510
|
}
|
|
372
511
|
//# sourceMappingURL=stateModel.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stateModel.js","sourceRoot":"","sources":["../../src/LinearMafDisplay/stateModel.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"stateModel.js","sourceRoot":"","sources":["../../src/LinearMafDisplay/stateModel.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
export interface NodeWithIds {
|
|
2
2
|
id: string;
|
|
3
3
|
name: string;
|
|
4
|
-
children
|
|
4
|
+
children?: NodeWithIds[];
|
|
5
5
|
length?: number;
|
|
6
6
|
noTree?: boolean;
|
|
7
7
|
}
|
|
8
8
|
export interface NodeWithIdsAndLength {
|
|
9
9
|
id: string;
|
|
10
10
|
name: string;
|
|
11
|
-
children
|
|
11
|
+
children?: NodeWithIdsAndLength[];
|
|
12
12
|
noTree?: boolean;
|
|
13
13
|
length: number;
|
|
14
14
|
}
|
|
@@ -2,9 +2,12 @@ import type { NodeWithIds } from './types';
|
|
|
2
2
|
import type { HierarchyNode } from 'd3-hierarchy';
|
|
3
3
|
export interface HoveredInfo {
|
|
4
4
|
sampleId: string;
|
|
5
|
+
sampleLabel: string;
|
|
5
6
|
pos: number;
|
|
6
7
|
base: string;
|
|
7
8
|
chr: string;
|
|
9
|
+
isInsertion?: boolean;
|
|
10
|
+
isLargeInsertion?: boolean;
|
|
8
11
|
[key: string]: unknown;
|
|
9
12
|
}
|
|
10
13
|
export interface GenomicPosition {
|
|
@@ -22,3 +25,6 @@ export interface GenomicPosition {
|
|
|
22
25
|
export declare function generateTooltipContent(hoveredInfo: HoveredInfo | undefined, p1: GenomicPosition | undefined, p2: GenomicPosition): string;
|
|
23
26
|
export declare function maxLength(d: HierarchyNode<NodeWithIds>): number;
|
|
24
27
|
export declare function setBrLength(d: HierarchyNode<NodeWithIds>, y0: number, k: number): void;
|
|
28
|
+
export declare function computeNodeDescendantNames<T extends {
|
|
29
|
+
name: string;
|
|
30
|
+
}>(root: HierarchyNode<T>): Map<HierarchyNode<T>, string[]>;
|
|
@@ -18,12 +18,13 @@ export function generateTooltipContent(hoveredInfo, p1, p2) {
|
|
|
18
18
|
// Single position mode
|
|
19
19
|
contentLines.push(`Ref: ${p2.refName}:${toLocale(p2.coord)}`);
|
|
20
20
|
if (hoveredInfo) {
|
|
21
|
-
const { base,
|
|
21
|
+
const { base, sampleLabel, pos, chr, isInsertion } = hoveredInfo;
|
|
22
22
|
const thresh = 20;
|
|
23
23
|
const len = base.length;
|
|
24
24
|
const lengthSuffix = len > 1 ? ` ${len}bp` : '';
|
|
25
25
|
const baseDisplay = base.length > thresh ? base.slice(0, thresh) + '...' : base;
|
|
26
|
-
|
|
26
|
+
const insertionLabel = isInsertion ? ' Insertion' : '';
|
|
27
|
+
contentLines.push(`Alt ${sampleLabel}: ${chr}:${pos.toLocaleString('en-US')} (${baseDisplay}${lengthSuffix}${insertionLabel})`);
|
|
27
28
|
}
|
|
28
29
|
}
|
|
29
30
|
return contentLines.filter(line => !!line).join('<br/>');
|
|
@@ -34,12 +35,33 @@ export function maxLength(d) {
|
|
|
34
35
|
}
|
|
35
36
|
// basically same as setRadius from https://observablehq.com/@d3/tree-of-life
|
|
36
37
|
export function setBrLength(d, y0, k) {
|
|
38
|
+
const newY0 = y0 + Math.max(d.data.length || 0, 0);
|
|
37
39
|
// @ts-expect-error
|
|
38
|
-
d.len =
|
|
40
|
+
d.len = newY0 * k;
|
|
39
41
|
if (d.children) {
|
|
40
|
-
d.children
|
|
41
|
-
setBrLength(
|
|
42
|
-
}
|
|
42
|
+
for (const child of d.children) {
|
|
43
|
+
setBrLength(child, newY0, k);
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
export function computeNodeDescendantNames(root) {
|
|
48
|
+
const map = new Map();
|
|
49
|
+
function visit(node) {
|
|
50
|
+
if (!node.children || node.children.length === 0) {
|
|
51
|
+
const names = [node.data.name];
|
|
52
|
+
map.set(node, names);
|
|
53
|
+
return names;
|
|
54
|
+
}
|
|
55
|
+
const names = [];
|
|
56
|
+
for (const child of node.children) {
|
|
57
|
+
for (const name of visit(child)) {
|
|
58
|
+
names.push(name);
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
map.set(node, names);
|
|
62
|
+
return names;
|
|
43
63
|
}
|
|
64
|
+
visit(root);
|
|
65
|
+
return map;
|
|
44
66
|
}
|
|
45
67
|
//# sourceMappingURL=util.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"util.js","sourceRoot":"","sources":["../../src/LinearMafDisplay/util.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAA;AAC9D,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAA;
|
|
1
|
+
{"version":3,"file":"util.js","sourceRoot":"","sources":["../../src/LinearMafDisplay/util.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,10 +1,7 @@
|
|
|
1
1
|
import { FeatureRendererType } from '@jbrowse/core/pluggableElementTypes';
|
|
2
2
|
import { RenderArgsDeserialized } from '@jbrowse/core/pluggableElementTypes/renderers/BoxRendererType';
|
|
3
3
|
import { Region } from '@jbrowse/core/util';
|
|
4
|
-
|
|
5
|
-
id: string;
|
|
6
|
-
color?: string;
|
|
7
|
-
}
|
|
4
|
+
import type { Sample } from '../LinearMafDisplay/types';
|
|
8
5
|
interface RenderArgs extends RenderArgsDeserialized {
|
|
9
6
|
samples: Sample[];
|
|
10
7
|
rowHeight: number;
|
|
@@ -27,9 +24,9 @@ export default class LinearMafRenderer extends FeatureRendererType {
|
|
|
27
24
|
width: number;
|
|
28
25
|
height: number;
|
|
29
26
|
containsNoTransferables: boolean;
|
|
30
|
-
samples: import("./rendering").Sample[];
|
|
31
27
|
flatbush: ArrayBufferLike;
|
|
32
28
|
items: import("./rendering").RenderedBase[];
|
|
29
|
+
samples: Sample[];
|
|
33
30
|
canvasRecordedData: Record<string, unknown>;
|
|
34
31
|
reactElement?: React.ReactElement;
|
|
35
32
|
html?: string;
|
|
@@ -38,10 +35,10 @@ export default class LinearMafRenderer extends FeatureRendererType {
|
|
|
38
35
|
width: number;
|
|
39
36
|
height: number;
|
|
40
37
|
containsNoTransferables: boolean;
|
|
41
|
-
samples: import("./rendering").Sample[];
|
|
42
38
|
flatbush: ArrayBufferLike;
|
|
43
39
|
items: import("./rendering").RenderedBase[];
|
|
44
|
-
|
|
40
|
+
samples: Sample[];
|
|
41
|
+
imageData: ImageBitmap;
|
|
45
42
|
reactElement?: React.ReactElement;
|
|
46
43
|
html?: string;
|
|
47
44
|
} | {
|
|
@@ -49,11 +46,47 @@ export default class LinearMafRenderer extends FeatureRendererType {
|
|
|
49
46
|
width: number;
|
|
50
47
|
height: number;
|
|
51
48
|
containsNoTransferables: boolean;
|
|
52
|
-
samples: import("./rendering").Sample[];
|
|
53
49
|
flatbush: ArrayBufferLike;
|
|
54
50
|
items: import("./rendering").RenderedBase[];
|
|
55
|
-
|
|
56
|
-
html
|
|
51
|
+
samples: Sample[];
|
|
52
|
+
html: string;
|
|
53
|
+
reactElement?: React.ReactElement;
|
|
54
|
+
} | {
|
|
55
|
+
features: Map<any, any>;
|
|
56
|
+
width: number;
|
|
57
|
+
height: number;
|
|
58
|
+
containsNoTransferables: boolean;
|
|
59
|
+
flatbush: ArrayBufferLike;
|
|
60
|
+
items: import("./rendering").RenderedBase[];
|
|
61
|
+
samples: Sample[];
|
|
62
|
+
canvasRecordedData: Record<string, unknown>;
|
|
63
|
+
__rpcResult: true;
|
|
64
|
+
value: unknown;
|
|
65
|
+
transferables: Transferable[];
|
|
66
|
+
} | {
|
|
67
|
+
features: Map<any, any>;
|
|
68
|
+
width: number;
|
|
69
|
+
height: number;
|
|
70
|
+
containsNoTransferables: boolean;
|
|
71
|
+
flatbush: ArrayBufferLike;
|
|
72
|
+
items: import("./rendering").RenderedBase[];
|
|
73
|
+
samples: Sample[];
|
|
74
|
+
imageData: ImageBitmap;
|
|
75
|
+
__rpcResult: true;
|
|
76
|
+
value: unknown;
|
|
77
|
+
transferables: Transferable[];
|
|
78
|
+
} | {
|
|
79
|
+
features: Map<any, any>;
|
|
80
|
+
width: number;
|
|
81
|
+
height: number;
|
|
82
|
+
containsNoTransferables: boolean;
|
|
83
|
+
flatbush: ArrayBufferLike;
|
|
84
|
+
items: import("./rendering").RenderedBase[];
|
|
85
|
+
samples: Sample[];
|
|
86
|
+
html: string;
|
|
87
|
+
__rpcResult: true;
|
|
88
|
+
value: unknown;
|
|
89
|
+
transferables: Transferable[];
|
|
57
90
|
}>;
|
|
58
91
|
}
|
|
59
92
|
export {};
|
|
@@ -6,7 +6,7 @@ export default class LinearMafRenderer extends FeatureRendererType {
|
|
|
6
6
|
const { start, end } = region;
|
|
7
7
|
const bpExpansion = 1;
|
|
8
8
|
return {
|
|
9
|
-
// xref https://github.com/mobxjs/mobx-state-tree/issues/1524 for Omit
|
|
9
|
+
// xref https://github.com/mobxjs/@jbrowse/mobx-state-tree/issues/1524 for Omit
|
|
10
10
|
...region,
|
|
11
11
|
start: Math.floor(Math.max(start - bpExpansion, 0)),
|
|
12
12
|
end: Math.ceil(end + bpExpansion),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LinearMafRenderer.js","sourceRoot":"","sources":["../../src/LinearMafRenderer/LinearMafRenderer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,qCAAqC,CAAA;AAEzE,OAAO,EAEL,sBAAsB,EACtB,YAAY,GACb,MAAM,oBAAoB,CAAA;AAE3B,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;
|
|
1
|
+
{"version":3,"file":"LinearMafRenderer.js","sourceRoot":"","sources":["../../src/LinearMafRenderer/LinearMafRenderer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,qCAAqC,CAAA;AAEzE,OAAO,EAEL,sBAAsB,EACtB,YAAY,GACb,MAAM,oBAAoB,CAAA;AAE3B,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAc/C,MAAM,CAAC,OAAO,OAAO,iBAAkB,SAAQ,mBAAmB;IAChE,iBAAiB,CAAC,MAAc;QAC9B,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,MAAM,CAAA;QAC7B,MAAM,WAAW,GAAG,CAAC,CAAA;QAErB,OAAO;YACL,+EAA+E;YAC/E,GAAI,MAAsC;YAC1C,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,GAAG,WAAW,EAAE,CAAC,CAAC,CAAC;YACnD,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,GAAG,WAAW,CAAC;SAClC,CAAA;IACH,CAAC;IACD,KAAK,CAAC,MAAM,CAAC,WAAuB;QAClC,MAAM,EACJ,cAAc,GAAG,GAAG,EAAE,GAAE,CAAC,EACzB,OAAO,EACP,OAAO,EACP,OAAO,EACP,SAAS,GACV,GAAG,WAAW,CAAA;QACf,MAAM,MAAM,GAAG,OAAO,CAAC,CAAC,CAAE,CAAA;QAC1B,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,GAAG,GAAG,CAAA;QAC/C,MAAM,KAAK,GAAG,CAAC,MAAM,CAAC,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,OAAO,CAAA;QACnD,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,CAAA;QACpD,MAAM,GAAG,GAAG,MAAM,YAAY,CAAC,qBAAqB,EAAE,cAAc,EAAE,GAAG,EAAE,CACzE,sBAAsB,CAAC,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,GAAG,CAAC,EAAE;YACvD,OAAO,aAAa,CAAC;gBACnB,GAAG;gBACH,UAAU,EAAE;oBACV,GAAG,WAAW;oBACd,QAAQ;iBACT;aACF,CAAC,CAAA;QACJ,CAAC,CAAC,CACH,CAAA;QACD,MAAM,OAAO,GAAG,MAAM,KAAK,CAAC,MAAM,CAAC;YACjC,GAAG,WAAW;YACd,GAAG,GAAG;YACN,KAAK;YACL,MAAM;SACP,CAAC,CAAA;QACF,OAAO;YACL,GAAG,OAAO;YACV,GAAG,GAAG;YACN,QAAQ,EAAE,IAAI,GAAG,EAAE;YACnB,KAAK;YACL,MAAM;YACN,uBAAuB,EAAE,IAAI;SAC9B,CAAA;IACH,CAAC;CACF"}
|
|
@@ -1,12 +1,21 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
import { Sample } from '../../LinearMafDisplay/types';
|
|
3
|
-
import { RenderedBase } from '../rendering';
|
|
4
|
-
|
|
2
|
+
import type { Sample } from '../../LinearMafDisplay/types';
|
|
3
|
+
import type { RenderedBase } from '../rendering';
|
|
4
|
+
interface DisplayModel {
|
|
5
|
+
setHoveredInfo?: (info: Record<string, unknown> | undefined) => void;
|
|
6
|
+
setHighlightedRowNames?: (names: string[] | undefined) => void;
|
|
7
|
+
showInsertionSequenceDialog?: (data: {
|
|
8
|
+
sequence: string;
|
|
9
|
+
sampleLabel: string;
|
|
10
|
+
chr: string;
|
|
11
|
+
pos: number;
|
|
12
|
+
}) => void;
|
|
13
|
+
}
|
|
5
14
|
declare const LinearMafRendering: (props: {
|
|
6
15
|
width: number;
|
|
7
16
|
height: number;
|
|
8
|
-
displayModel:
|
|
9
|
-
flatbush:
|
|
17
|
+
displayModel: DisplayModel;
|
|
18
|
+
flatbush: ArrayBuffer;
|
|
10
19
|
items: RenderedBase[];
|
|
11
20
|
samples: Sample[];
|
|
12
21
|
}) => React.JSX.Element;
|
|
@@ -1,41 +1,61 @@
|
|
|
1
|
-
import React, { useMemo, useRef } from 'react';
|
|
1
|
+
import React, { useCallback, useMemo, useRef, useState } from 'react';
|
|
2
2
|
import { PrerenderedCanvas } from '@jbrowse/core/ui';
|
|
3
3
|
import Flatbush from 'flatbush';
|
|
4
4
|
import { observer } from 'mobx-react';
|
|
5
5
|
const LinearMafRendering = observer(function (props) {
|
|
6
6
|
const { items, displayModel, height, samples, flatbush } = props;
|
|
7
7
|
const ref = useRef(null);
|
|
8
|
-
const
|
|
9
|
-
|
|
8
|
+
const flatbush2 = useMemo(() => Flatbush.from(flatbush), [flatbush]);
|
|
9
|
+
const [isOverInsertion, setIsOverInsertion] = useState(false);
|
|
10
|
+
const getFeatureUnderMouse = useCallback((eventClientX, eventClientY) => {
|
|
10
11
|
let offsetX = 0;
|
|
11
12
|
let offsetY = 0;
|
|
12
13
|
if (ref.current) {
|
|
13
|
-
const
|
|
14
|
-
offsetX = eventClientX -
|
|
15
|
-
offsetY = eventClientY -
|
|
14
|
+
const rect = ref.current.getBoundingClientRect();
|
|
15
|
+
offsetX = eventClientX - rect.left;
|
|
16
|
+
offsetY = eventClientY - rect.top;
|
|
16
17
|
}
|
|
17
|
-
const
|
|
18
|
-
if (
|
|
19
|
-
|
|
20
|
-
const r = elt !== undefined ? items[elt] : items[x[0]];
|
|
21
|
-
const s = samples[r.sampleId];
|
|
22
|
-
return {
|
|
23
|
-
...r,
|
|
24
|
-
sampleId: s?.label || s?.id || 'unknown',
|
|
25
|
-
};
|
|
18
|
+
const hits = flatbush2.search(offsetX, offsetY, offsetX + 1, offsetY + 1);
|
|
19
|
+
if (hits.length === 0) {
|
|
20
|
+
return undefined;
|
|
26
21
|
}
|
|
27
|
-
|
|
22
|
+
const insertionHit = hits.find(idx => items[idx]?.isInsertion);
|
|
23
|
+
const hitIdx = insertionHit ?? hits[0];
|
|
24
|
+
const item = hitIdx !== undefined ? items[hitIdx] : undefined;
|
|
25
|
+
if (!item) {
|
|
28
26
|
return undefined;
|
|
29
27
|
}
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
28
|
+
const sample = samples[item.rowIndex];
|
|
29
|
+
return {
|
|
30
|
+
...item,
|
|
31
|
+
sampleId: sample?.id ?? 'unknown',
|
|
32
|
+
sampleLabel: sample?.label || sample?.id || 'unknown',
|
|
33
|
+
};
|
|
34
|
+
}, [flatbush2, items, samples]);
|
|
35
|
+
return (React.createElement("div", { ref: ref, onClick: e => {
|
|
36
|
+
const feature = getFeatureUnderMouse(e.clientX, e.clientY);
|
|
37
|
+
if (feature?.isInsertion) {
|
|
38
|
+
displayModel.showInsertionSequenceDialog?.({
|
|
39
|
+
sequence: feature.base,
|
|
40
|
+
sampleLabel: feature.sampleLabel,
|
|
41
|
+
chr: feature.chr,
|
|
42
|
+
pos: feature.pos,
|
|
43
|
+
});
|
|
44
|
+
}
|
|
45
|
+
}, onMouseMove: e => {
|
|
46
|
+
const feature = getFeatureUnderMouse(e.clientX, e.clientY);
|
|
47
|
+
displayModel.setHoveredInfo?.(feature);
|
|
48
|
+
displayModel.setHighlightedRowNames?.(feature?.sampleId ? [feature.sampleId] : undefined);
|
|
49
|
+
setIsOverInsertion(!!feature?.isInsertion);
|
|
50
|
+
}, onMouseLeave: () => {
|
|
34
51
|
displayModel.setHoveredInfo?.(undefined);
|
|
52
|
+
displayModel.setHighlightedRowNames?.(undefined);
|
|
53
|
+
setIsOverInsertion(false);
|
|
35
54
|
}, style: {
|
|
36
55
|
overflow: 'visible',
|
|
37
56
|
position: 'relative',
|
|
38
57
|
height,
|
|
58
|
+
cursor: isOverInsertion ? 'pointer' : 'default',
|
|
39
59
|
} },
|
|
40
60
|
React.createElement(PrerenderedCanvas, { ...props, style: {
|
|
41
61
|
position: 'absolute',
|