jbrowse-plugin-mafviewer 1.4.3 → 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.
Files changed (73) hide show
  1. package/README.md +1 -1
  2. package/dist/LinearMafDisplay/components/InsertionSequenceDialog/InsertionSequenceDialog.d.ts +14 -0
  3. package/dist/LinearMafDisplay/components/InsertionSequenceDialog/InsertionSequenceDialog.js +69 -0
  4. package/dist/LinearMafDisplay/components/InsertionSequenceDialog/InsertionSequenceDialog.js.map +1 -0
  5. package/dist/LinearMafDisplay/components/LinearMafDisplayComponent.js +4 -4
  6. package/dist/LinearMafDisplay/components/LinearMafDisplayComponent.js.map +1 -1
  7. package/dist/LinearMafDisplay/components/Sidebar/ColorLegend.js +2 -2
  8. package/dist/LinearMafDisplay/components/Sidebar/ColorLegend.js.map +1 -1
  9. package/dist/LinearMafDisplay/components/Sidebar/RectBg.d.ts +1 -1
  10. package/dist/LinearMafDisplay/components/Sidebar/RectBg.js +2 -3
  11. package/dist/LinearMafDisplay/components/Sidebar/RectBg.js.map +1 -1
  12. package/dist/LinearMafDisplay/components/Sidebar/SvgWrapper.js +81 -11
  13. package/dist/LinearMafDisplay/components/Sidebar/SvgWrapper.js.map +1 -1
  14. package/dist/LinearMafDisplay/components/Sidebar/Tree.js +30 -9
  15. package/dist/LinearMafDisplay/components/Sidebar/Tree.js.map +1 -1
  16. package/dist/LinearMafDisplay/components/Sidebar/YScaleBars.d.ts +0 -1
  17. package/dist/LinearMafDisplay/components/Sidebar/YScaleBars.js.map +1 -1
  18. package/dist/LinearMafDisplay/renderSvg.js +1 -1
  19. package/dist/LinearMafDisplay/renderSvg.js.map +1 -1
  20. package/dist/LinearMafDisplay/stateModel.d.ts +69 -3
  21. package/dist/LinearMafDisplay/stateModel.js +96 -1
  22. package/dist/LinearMafDisplay/stateModel.js.map +1 -1
  23. package/dist/LinearMafDisplay/util.d.ts +1 -0
  24. package/dist/LinearMafDisplay/util.js +3 -2
  25. package/dist/LinearMafDisplay/util.js.map +1 -1
  26. package/dist/LinearMafRenderer/LinearMafRenderer.d.ts +4 -7
  27. package/dist/LinearMafRenderer/LinearMafRenderer.js.map +1 -1
  28. package/dist/LinearMafRenderer/components/LinearMafRendering.js +27 -9
  29. package/dist/LinearMafRenderer/components/LinearMafRendering.js.map +1 -1
  30. package/dist/LinearMafRenderer/makeImageData.js +6 -7
  31. package/dist/LinearMafRenderer/makeImageData.js.map +1 -1
  32. package/dist/LinearMafRenderer/rendering/features.d.ts +0 -1
  33. package/dist/LinearMafRenderer/rendering/features.js +1 -14
  34. package/dist/LinearMafRenderer/rendering/features.js.map +1 -1
  35. package/dist/LinearMafRenderer/rendering/insertions.js +8 -6
  36. package/dist/LinearMafRenderer/rendering/insertions.js.map +1 -1
  37. package/dist/LinearMafRenderer/rendering/matches.d.ts +1 -1
  38. package/dist/LinearMafRenderer/rendering/matches.js +3 -15
  39. package/dist/LinearMafRenderer/rendering/matches.js.map +1 -1
  40. package/dist/LinearMafRenderer/rendering/spatialIndex.js +8 -2
  41. package/dist/LinearMafRenderer/rendering/spatialIndex.js.map +1 -1
  42. package/dist/LinearMafRenderer/rendering/text.js +1 -3
  43. package/dist/LinearMafRenderer/rendering/text.js.map +1 -1
  44. package/dist/LinearMafRenderer/rendering/types.d.ts +5 -4
  45. package/dist/jbrowse-plugin-mafviewer.umd.production.min.js +7 -7
  46. package/dist/jbrowse-plugin-mafviewer.umd.production.min.js.map +4 -4
  47. package/dist/util/fastaUtils.js +23 -50
  48. package/dist/util/fastaUtils.js.map +1 -1
  49. package/package.json +7 -7
  50. package/src/LinearMafDisplay/components/InsertionSequenceDialog/InsertionSequenceDialog.tsx +105 -0
  51. package/src/LinearMafDisplay/components/LinearMafDisplayComponent.tsx +4 -4
  52. package/src/LinearMafDisplay/components/Sidebar/ColorLegend.tsx +2 -6
  53. package/src/LinearMafDisplay/components/Sidebar/RectBg.tsx +8 -3
  54. package/src/LinearMafDisplay/components/Sidebar/SvgWrapper.tsx +117 -15
  55. package/src/LinearMafDisplay/components/Sidebar/Tree.tsx +53 -8
  56. package/src/LinearMafDisplay/components/Sidebar/YScaleBars.tsx +0 -1
  57. package/src/LinearMafDisplay/renderSvg.tsx +1 -1
  58. package/src/LinearMafDisplay/stateModel.ts +109 -1
  59. package/src/LinearMafDisplay/util.ts +4 -2
  60. package/src/LinearMafRenderer/LinearMafRenderer.ts +2 -4
  61. package/src/LinearMafRenderer/components/LinearMafRendering.tsx +49 -29
  62. package/src/LinearMafRenderer/makeImageData.ts +5 -14
  63. package/src/LinearMafRenderer/rendering/features.ts +2 -36
  64. package/src/LinearMafRenderer/rendering/insertions.ts +11 -6
  65. package/src/LinearMafRenderer/rendering/matches.ts +2 -27
  66. package/src/LinearMafRenderer/rendering/spatialIndex.ts +9 -2
  67. package/src/LinearMafRenderer/rendering/text.ts +1 -2
  68. package/src/LinearMafRenderer/rendering/types.ts +7 -4
  69. package/src/util/fastaUtils.ts +28 -54
  70. package/dist/LinearMafRenderer/components/util.d.ts +0 -1
  71. package/dist/LinearMafRenderer/components/util.js +0 -13
  72. package/dist/LinearMafRenderer/components/util.js.map +0 -1
  73. package/src/LinearMafRenderer/components/util.ts +0 -13
@@ -10,6 +10,7 @@ import { addDisposer, isAlive, types } from 'mobx-state-tree';
10
10
  import { maxLength, setBrLength } from './util';
11
11
  import { normalize } from '../util';
12
12
  const SetRowHeightDialog = lazy(() => import('./components/SetRowHeightDialog/SetRowHeightDialog'));
13
+ const InsertionSequenceDialog = lazy(() => import('./components/InsertionSequenceDialog/InsertionSequenceDialog'));
13
14
  /**
14
15
  * #stateModel LinearMafDisplay
15
16
  * extends LinearBasicDisplay
@@ -55,6 +56,10 @@ export default function stateModelFactory(configSchema, pluginManager) {
55
56
  * #property
56
57
  */
57
58
  showAsUpperCase: true,
59
+ /**
60
+ * #property
61
+ */
62
+ showSidebar: true,
58
63
  }))
59
64
  .volatile(() => ({
60
65
  /**
@@ -73,6 +78,14 @@ export default function stateModelFactory(configSchema, pluginManager) {
73
78
  * #volatile
74
79
  */
75
80
  volatileTree: undefined,
81
+ /**
82
+ * #volatile
83
+ */
84
+ highlightedRowNames: undefined,
85
+ /**
86
+ * #volatile
87
+ */
88
+ hoveredTreeNode: undefined,
76
89
  }))
77
90
  .actions(self => ({
78
91
  /**
@@ -122,6 +135,38 @@ export default function stateModelFactory(configSchema, pluginManager) {
122
135
  setShowAsUpperCase(arg) {
123
136
  self.showAsUpperCase = arg;
124
137
  },
138
+ /**
139
+ * #action
140
+ */
141
+ setTreeAreaWidth(width) {
142
+ self.treeAreaWidth = width;
143
+ },
144
+ /**
145
+ * #action
146
+ */
147
+ setShowSidebar(arg) {
148
+ self.showSidebar = arg;
149
+ },
150
+ /**
151
+ * #action
152
+ */
153
+ setHighlightedRowNames(names, nodePosition) {
154
+ self.highlightedRowNames = names;
155
+ self.hoveredTreeNode = nodePosition;
156
+ },
157
+ /**
158
+ * #action
159
+ */
160
+ showInsertionSequenceDialog(insertionData) {
161
+ getSession(self).queueDialog(handleClose => [
162
+ InsertionSequenceDialog,
163
+ {
164
+ model: self,
165
+ onClose: handleClose,
166
+ insertionData,
167
+ },
168
+ ]);
169
+ },
125
170
  }))
126
171
  .views(self => ({
127
172
  /**
@@ -164,10 +209,16 @@ export default function stateModelFactory(configSchema, pluginManager) {
164
209
  const r = self.root;
165
210
  if (r) {
166
211
  const width = self.treeAreaWidth;
212
+ // Use totalHeight - rowHeight so leaves are centered in rows
213
+ // (first leaf at rowHeight/2, last at totalHeight - rowHeight/2)
167
214
  const clust = cluster()
168
- .size([this.totalHeight, width])
215
+ .size([this.totalHeight - self.rowHeight, width])
169
216
  .separation(() => 1);
170
217
  clust(r);
218
+ // Offset all nodes by rowHeight/2 to center in rows
219
+ for (const node of r.descendants()) {
220
+ node.x = node.x + self.rowHeight / 2;
221
+ }
171
222
  setBrLength(r, (r.data.length = 0), width / maxLength(r));
172
223
  return r;
173
224
  }
@@ -205,6 +256,36 @@ export default function stateModelFactory(configSchema, pluginManager) {
205
256
  get leaves() {
206
257
  return self.root?.leaves();
207
258
  },
259
+ /**
260
+ * #getter
261
+ */
262
+ get leafMap() {
263
+ return new Map(this.leaves?.map(leaf => [leaf.data.name, leaf]));
264
+ },
265
+ /**
266
+ * #getter
267
+ * Precomputed map from hierarchy node to its descendant leaf names
268
+ */
269
+ get nodeDescendantNames() {
270
+ const map = new Map();
271
+ function computeDescendants(node) {
272
+ if (!node.children || node.children.length === 0) {
273
+ const names = [node.data.name];
274
+ map.set(node, names);
275
+ return names;
276
+ }
277
+ const names = [];
278
+ for (const child of node.children) {
279
+ names.push(...computeDescendants(child));
280
+ }
281
+ map.set(node, names);
282
+ return names;
283
+ }
284
+ if (this.hierarchy) {
285
+ computeDescendants(this.hierarchy);
286
+ }
287
+ return map;
288
+ },
208
289
  /**
209
290
  * #getter
210
291
  */
@@ -305,6 +386,14 @@ export default function stateModelFactory(configSchema, pluginManager) {
305
386
  self.setMismatchRendering(!self.mismatchRendering);
306
387
  },
307
388
  },
389
+ {
390
+ label: 'Show sidebar',
391
+ type: 'checkbox',
392
+ checked: self.showSidebar,
393
+ onClick: () => {
394
+ self.setShowSidebar(!self.showSidebar);
395
+ },
396
+ },
308
397
  ];
309
398
  },
310
399
  };
@@ -331,6 +420,12 @@ export default function stateModelFactory(configSchema, pluginManager) {
331
420
  ?.map(s => measureText(s.label, this.svgFontSize))
332
421
  .map(width => (this.canDisplayLabel ? width : minWidth)) || [], 0);
333
422
  },
423
+ /**
424
+ * #getter
425
+ */
426
+ get sidebarWidth() {
427
+ return self.showSidebar ? this.labelWidth + 5 + self.treeWidth : 0;
428
+ },
334
429
  }))
335
430
  .actions(self => ({
336
431
  afterCreate() {
@@ -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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"}
@@ -2,6 +2,7 @@ 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;
@@ -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, sampleId, pos, chr } = hoveredInfo;
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
- contentLines.push(`Alt ${sampleId}: ${chr}:${pos.toLocaleString('en-US')} (${baseDisplay}${lengthSuffix})`);
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/>');
@@ -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;AAkB9B;;;;;;;GAOG;AACH,MAAM,UAAU,sBAAsB,CACpC,WAAoC,EACpC,EAA+B,EAC/B,EAAmB;IAEnB,MAAM,YAAY,GAAa,EAAE,CAAA;IAEjC,IAAI,EAAE,EAAE,CAAC;QACP,uBAAuB;QACvB,YAAY,CAAC,IAAI,CACf,UAAU,EAAE,CAAC,OAAO,IAAI,QAAQ,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,EAC5C,QAAQ,EAAE,CAAC,OAAO,IAAI,QAAQ,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,EAC1C,WAAW,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,CAC5D,CAAA;IACH,CAAC;SAAM,CAAC;QACN,uBAAuB;QACvB,YAAY,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,OAAO,IAAI,QAAQ,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAA;QAE7D,IAAI,WAAW,EAAE,CAAC;YAChB,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,WAAW,CAAA;YAChD,MAAM,MAAM,GAAG,EAAE,CAAA;YACjB,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAA;YACvB,MAAM,YAAY,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,EAAE,CAAA;YAC/C,MAAM,WAAW,GACf,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,CAAA;YAE7D,YAAY,CAAC,IAAI,CACf,OAAO,QAAQ,KAAK,GAAG,IAAI,GAAG,CAAC,cAAc,CAAC,OAAO,CAAC,KAAK,WAAW,GAAG,YAAY,GAAG,CACzF,CAAA;QACH,CAAC;IACH,CAAC;IAED,OAAO,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;AAC1D,CAAC;AAED,6EAA6E;AAC7E,MAAM,UAAU,SAAS,CAAC,CAA6B;IACrD,OAAO,CACL,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAC1E,CAAA;AACH,CAAC;AAED,6EAA6E;AAC7E,MAAM,UAAU,WAAW,CACzB,CAA6B,EAC7B,EAAU,EACV,CAAS;IAET,mBAAmB;IACnB,CAAC,CAAC,GAAG,GAAG,CAAC,EAAE,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAA;IAEnD,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAC;QACf,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;YACrB,WAAW,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAA;QACvB,CAAC,CAAC,CAAA;IACJ,CAAC;AACH,CAAC"}
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;AAmB9B;;;;;;;GAOG;AACH,MAAM,UAAU,sBAAsB,CACpC,WAAoC,EACpC,EAA+B,EAC/B,EAAmB;IAEnB,MAAM,YAAY,GAAa,EAAE,CAAA;IAEjC,IAAI,EAAE,EAAE,CAAC;QACP,uBAAuB;QACvB,YAAY,CAAC,IAAI,CACf,UAAU,EAAE,CAAC,OAAO,IAAI,QAAQ,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,EAC5C,QAAQ,EAAE,CAAC,OAAO,IAAI,QAAQ,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,EAC1C,WAAW,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,CAC5D,CAAA;IACH,CAAC;SAAM,CAAC;QACN,uBAAuB;QACvB,YAAY,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,OAAO,IAAI,QAAQ,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAA;QAE7D,IAAI,WAAW,EAAE,CAAC;YAChB,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,GAAG,EAAE,GAAG,EAAE,WAAW,EAAE,GAAG,WAAW,CAAA;YAChE,MAAM,MAAM,GAAG,EAAE,CAAA;YACjB,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAA;YACvB,MAAM,YAAY,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,EAAE,CAAA;YAC/C,MAAM,WAAW,GACf,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,CAAA;YAC7D,MAAM,cAAc,GAAG,WAAW,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,CAAA;YAEtD,YAAY,CAAC,IAAI,CACf,OAAO,WAAW,KAAK,GAAG,IAAI,GAAG,CAAC,cAAc,CAAC,OAAO,CAAC,KAAK,WAAW,GAAG,YAAY,GAAG,cAAc,GAAG,CAC7G,CAAA;QACH,CAAC;IACH,CAAC;IAED,OAAO,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;AAC1D,CAAC;AAED,6EAA6E;AAC7E,MAAM,UAAU,SAAS,CAAC,CAA6B;IACrD,OAAO,CACL,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAC1E,CAAA;AACH,CAAC;AAED,6EAA6E;AAC7E,MAAM,UAAU,WAAW,CACzB,CAA6B,EAC7B,EAAU,EACV,CAAS;IAET,mBAAmB;IACnB,CAAC,CAAC,GAAG,GAAG,CAAC,EAAE,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAA;IAEnD,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAC;QACf,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;YACrB,WAAW,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAA;QACvB,CAAC,CAAC,CAAA;IACJ,CAAC;AACH,CAAC"}
@@ -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
- interface Sample {
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,7 +24,7 @@ export default class LinearMafRenderer extends FeatureRendererType {
27
24
  width: number;
28
25
  height: number;
29
26
  containsNoTransferables: boolean;
30
- samples: import("./rendering").Sample[];
27
+ samples: Sample[];
31
28
  flatbush: ArrayBufferLike;
32
29
  items: import("./rendering").RenderedBase[];
33
30
  canvasRecordedData: Record<string, unknown>;
@@ -38,7 +35,7 @@ export default class LinearMafRenderer extends FeatureRendererType {
38
35
  width: number;
39
36
  height: number;
40
37
  containsNoTransferables: boolean;
41
- samples: import("./rendering").Sample[];
38
+ samples: Sample[];
42
39
  flatbush: ArrayBufferLike;
43
40
  items: import("./rendering").RenderedBase[];
44
41
  imageData: any;
@@ -49,7 +46,7 @@ export default class LinearMafRenderer extends FeatureRendererType {
49
46
  width: number;
50
47
  height: number;
51
48
  containsNoTransferables: boolean;
52
- samples: import("./rendering").Sample[];
49
+ samples: Sample[];
53
50
  flatbush: ArrayBufferLike;
54
51
  items: import("./rendering").RenderedBase[];
55
52
  reactElement: React.ReactElement;
@@ -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;AAgB/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,sEAAsE;YACtE,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
+ {"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,sEAAsE;YACtE,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,13 @@
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 rbush2 = useMemo(() => Flatbush.from(flatbush), [flatbush]);
9
- function getFeatureUnderMouse(eventClientX, eventClientY) {
8
+ const flatbush2 = useMemo(() => Flatbush.from(flatbush), [flatbush]);
9
+ const [isOverLargeInsertion, setIsOverLargeInsertion] = useState(false);
10
+ const getFeatureUnderMouse = useCallback((eventClientX, eventClientY) => {
10
11
  let offsetX = 0;
11
12
  let offsetY = 0;
12
13
  if (ref.current) {
@@ -14,28 +15,45 @@ const LinearMafRendering = observer(function (props) {
14
15
  offsetX = eventClientX - r.left;
15
16
  offsetY = eventClientY - r.top;
16
17
  }
17
- const x = rbush2.search(offsetX, offsetY, offsetX + 1, offsetY + 1);
18
+ const x = flatbush2.search(offsetX, offsetY, offsetX + 1, offsetY + 1);
18
19
  if (x.length) {
19
20
  const elt = x.find(idx => items[idx]?.isInsertion);
20
21
  const r = elt !== undefined ? items[elt] : items[x[0]];
21
22
  const s = samples[r.sampleId];
22
23
  return {
23
24
  ...r,
24
- sampleId: s?.label || s?.id || 'unknown',
25
+ sampleId: s?.id ?? 'unknown',
26
+ sampleLabel: s?.label || s?.id || 'unknown',
25
27
  };
26
28
  }
27
29
  else {
28
30
  return undefined;
29
31
  }
30
- }
31
- return (React.createElement("div", { ref: ref, onMouseMove: e => displayModel.setHoveredInfo?.(getFeatureUnderMouse(e.clientX, e.clientY)), onMouseLeave: () => {
32
- displayModel.setHoveredInfo?.(undefined);
33
- }, onMouseOut: () => {
32
+ }, [flatbush2, items, samples]);
33
+ return (React.createElement("div", { ref: ref, onClick: e => {
34
+ const feature = getFeatureUnderMouse(e.clientX, e.clientY);
35
+ if (feature?.isLargeInsertion) {
36
+ displayModel.showInsertionSequenceDialog?.({
37
+ sequence: feature.base,
38
+ sampleLabel: feature.sampleLabel,
39
+ chr: feature.chr,
40
+ pos: feature.pos,
41
+ });
42
+ }
43
+ }, onMouseMove: e => {
44
+ const feature = getFeatureUnderMouse(e.clientX, e.clientY);
45
+ displayModel.setHoveredInfo?.(feature);
46
+ displayModel.setHighlightedRowNames?.(feature?.sampleId ? [feature.sampleId] : undefined);
47
+ setIsOverLargeInsertion(!!feature?.isLargeInsertion);
48
+ }, onMouseLeave: () => {
34
49
  displayModel.setHoveredInfo?.(undefined);
50
+ displayModel.setHighlightedRowNames?.(undefined);
51
+ setIsOverLargeInsertion(false);
35
52
  }, style: {
36
53
  overflow: 'visible',
37
54
  position: 'relative',
38
55
  height,
56
+ cursor: isOverLargeInsertion ? 'pointer' : 'default',
39
57
  } },
40
58
  React.createElement(PrerenderedCanvas, { ...props, style: {
41
59
  position: 'absolute',
@@ -1 +1 @@
1
- {"version":3,"file":"LinearMafRendering.js","sourceRoot":"","sources":["../../../src/LinearMafRenderer/components/LinearMafRendering.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,OAAO,CAAA;AAE9C,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAA;AACpD,OAAO,QAAQ,MAAM,UAAU,CAAA;AAC/B,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AAOrC,MAAM,kBAAkB,GAAG,QAAQ,CAAC,UAAU,KAO7C;IACC,MAAM,EAAE,KAAK,EAAE,YAAY,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,KAAK,CAAA;IAChE,MAAM,GAAG,GAAG,MAAM,CAAiB,IAAI,CAAC,CAAA;IACxC,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAA;IAEjE,SAAS,oBAAoB,CAAC,YAAoB,EAAE,YAAoB;QACtE,IAAI,OAAO,GAAG,CAAC,CAAA;QACf,IAAI,OAAO,GAAG,CAAC,CAAA;QACf,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC;YAChB,MAAM,CAAC,GAAG,GAAG,CAAC,OAAO,CAAC,qBAAqB,EAAE,CAAA;YAC7C,OAAO,GAAG,YAAY,GAAG,CAAC,CAAC,IAAI,CAAA;YAC/B,OAAO,GAAG,YAAY,GAAG,CAAC,CAAC,GAAG,CAAA;QAChC,CAAC;QAED,MAAM,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,GAAG,CAAC,EAAE,OAAO,GAAG,CAAC,CAAC,CAAA;QACnE,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC;YACb,MAAM,GAAG,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,WAAW,CAAC,CAAA;YAClD,MAAM,CAAC,GAAG,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAE,CAAE,CAAA;YACzD,MAAM,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAA;YAC7B,OAAO;gBACL,GAAG,CAAC;gBACJ,QAAQ,EAAE,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,EAAE,IAAI,SAAS;aACzC,CAAA;QACH,CAAC;aAAM,CAAC;YACN,OAAO,SAAS,CAAA;QAClB,CAAC;IACH,CAAC;IACD,OAAO,CACL,6BACE,GAAG,EAAE,GAAG,EACR,WAAW,EAAE,CAAC,CAAC,EAAE,CACf,YAAY,CAAC,cAAc,EAAE,CAC3B,oBAAoB,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,CAC3C,EAEH,YAAY,EAAE,GAAG,EAAE;YACjB,YAAY,CAAC,cAAc,EAAE,CAAC,SAAS,CAAC,CAAA;QAC1C,CAAC,EACD,UAAU,EAAE,GAAG,EAAE;YACf,YAAY,CAAC,cAAc,EAAE,CAAC,SAAS,CAAC,CAAA;QAC1C,CAAC,EACD,KAAK,EAAE;YACL,QAAQ,EAAE,SAAS;YACnB,QAAQ,EAAE,UAAU;YACpB,MAAM;SACP;QAED,oBAAC,iBAAiB,OACZ,KAAK,EACT,KAAK,EAAE;gBACL,QAAQ,EAAE,UAAU;gBACpB,IAAI,EAAE,CAAC;aACR,GACD,CACE,CACP,CAAA;AACH,CAAC,CAAC,CAAA;AAEF,eAAe,kBAAkB,CAAA"}
1
+ {"version":3,"file":"LinearMafRendering.js","sourceRoot":"","sources":["../../../src/LinearMafRenderer/components/LinearMafRendering.tsx"],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  import { createJBrowseTheme } from '@jbrowse/core/ui';
2
2
  import Flatbush from 'flatbush';
3
- import { FONT_CONFIG, processFeatureAlignment, processFeatureInsertions, } from './rendering';
4
- import { getColorBaseMap, getContrastBaseMap } from './util';
3
+ import { FONT_CONFIG, processFeatureAlignment, } from './rendering';
4
+ import { getCharWidthHeight, getColorBaseMap, getContrastBaseMap } from './util';
5
5
  export function makeImageData({ ctx, renderArgs, }) {
6
6
  const { regions, bpPerPx, rowHeight, showAllLetters, theme: configTheme, mismatchRendering, samples, rowProportion, features, showAsUpperCase, } = renderArgs;
7
7
  const region = regions[0];
@@ -14,10 +14,12 @@ export function makeImageData({ ctx, renderArgs, }) {
14
14
  const scale = 1 / bpPerPx;
15
15
  const hp2 = h / 2;
16
16
  const offset = (rowHeight - h) / 2;
17
+ const { charWidth, charHeight } = getCharWidthHeight();
17
18
  ctx.font = FONT_CONFIG;
18
19
  const renderingContext = {
19
20
  ctx,
20
21
  scale,
22
+ bpPerPx,
21
23
  canvasWidth,
22
24
  rowHeight,
23
25
  h,
@@ -28,18 +30,15 @@ export function makeImageData({ ctx, renderArgs, }) {
28
30
  showAllLetters,
29
31
  mismatchRendering,
30
32
  showAsUpperCase,
33
+ charWidth,
34
+ charHeight,
31
35
  spatialIndex: [],
32
36
  spatialIndexCoords: [],
33
37
  lastInsertedX: -Infinity, // Start with -Infinity so first item is always inserted
34
38
  };
35
- // First pass: render alignments (gaps, matches, mismatches, text)
36
39
  for (const feature of features.values()) {
37
40
  processFeatureAlignment(feature, region, bpPerPx, sampleToRowMap, renderingContext);
38
41
  }
39
- // Second pass: render insertions on top
40
- for (const feature of features.values()) {
41
- processFeatureInsertions(feature, region, bpPerPx, sampleToRowMap, renderingContext);
42
- }
43
42
  const flatbush = new Flatbush(renderingContext.spatialIndex.length || 1);
44
43
  if (renderingContext.spatialIndex.length === 0) {
45
44
  flatbush.add(0, 0, 1, 1);
@@ -1 +1 @@
1
- {"version":3,"file":"makeImageData.js","sourceRoot":"","sources":["../../src/LinearMafRenderer/makeImageData.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAA;AAErD,OAAO,QAAQ,MAAM,UAAU,CAAA;AAE/B,OAAO,EACL,WAAW,EAGX,uBAAuB,EACvB,wBAAwB,GACzB,MAAM,aAAa,CAAA;AACpB,OAAO,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,QAAQ,CAAA;AAa5D,MAAM,UAAU,aAAa,CAAC,EAC5B,GAAG,EACH,UAAU,GAIX;IACC,MAAM,EACJ,OAAO,EACP,OAAO,EACP,SAAS,EACT,cAAc,EACd,KAAK,EAAE,WAAW,EAClB,iBAAiB,EACjB,OAAO,EACP,aAAa,EACb,QAAQ,EACR,eAAe,GAChB,GAAG,UAAU,CAAA;IAEd,MAAM,MAAM,GAAG,OAAO,CAAC,CAAC,CAAE,CAAA;IAC1B,MAAM,WAAW,GAAG,CAAC,MAAM,CAAC,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,OAAO,CAAA;IACzD,MAAM,CAAC,GAAG,SAAS,GAAG,aAAa,CAAA;IACnC,MAAM,KAAK,GAAG,kBAAkB,CAAC,WAAW,CAAC,CAAA;IAC7C,MAAM,YAAY,GAAG,eAAe,CAAC,KAAK,CAAC,CAAA;IAC3C,MAAM,eAAe,GAAG,kBAAkB,CAAC,KAAK,CAAC,CAAA;IACjD,MAAM,cAAc,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAA;IAChE,MAAM,KAAK,GAAG,CAAC,GAAG,OAAO,CAAA;IACzB,MAAM,GAAG,GAAG,CAAC,GAAG,CAAC,CAAA;IACjB,MAAM,MAAM,GAAG,CAAC,SAAS,GAAG,CAAC,CAAC,GAAG,CAAC,CAAA;IAElC,GAAG,CAAC,IAAI,GAAG,WAAW,CAAA;IAEtB,MAAM,gBAAgB,GAAqB;QACzC,GAAG;QACH,KAAK;QACL,WAAW;QACX,SAAS;QACT,CAAC;QACD,GAAG;QACH,MAAM;QACN,YAAY;QACZ,eAAe;QACf,cAAc;QACd,iBAAiB;QACjB,eAAe;QACf,YAAY,EAAE,EAAE;QAChB,kBAAkB,EAAE,EAAE;QACtB,aAAa,EAAE,CAAC,QAAQ,EAAE,wDAAwD;KACnF,CAAA;IAED,kEAAkE;IAClE,KAAK,MAAM,OAAO,IAAI,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC;QACxC,uBAAuB,CACrB,OAAO,EACP,MAAM,EACN,OAAO,EACP,cAAc,EACd,gBAAgB,CACjB,CAAA;IACH,CAAC;IAED,wCAAwC;IACxC,KAAK,MAAM,OAAO,IAAI,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC;QACxC,wBAAwB,CACtB,OAAO,EACP,MAAM,EACN,OAAO,EACP,cAAc,EACd,gBAAgB,CACjB,CAAA;IACH,CAAC;IACD,MAAM,QAAQ,GAAG,IAAI,QAAQ,CAAC,gBAAgB,CAAC,YAAY,CAAC,MAAM,IAAI,CAAC,CAAC,CAAA;IACxE,IAAI,gBAAgB,CAAC,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC/C,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAA;IAC1B,CAAC;SAAM,CAAC;QACN,KACE,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,gBAAgB,CAAC,kBAAkB,CAAC,MAAM,EACzD,CAAC,GAAG,CAAC,EACL,CAAC,IAAI,CAAC,EACN,CAAC;YACD,QAAQ,CAAC,GAAG,CACV,gBAAgB,CAAC,kBAAkB,CAAC,CAAC,CAAE,EACvC,gBAAgB,CAAC,kBAAkB,CAAC,CAAC,GAAG,CAAC,CAAE,EAC3C,gBAAgB,CAAC,kBAAkB,CAAC,CAAC,GAAG,CAAC,CAAC,EAC1C,gBAAgB,CAAC,kBAAkB,CAAC,CAAC,GAAG,CAAC,CAAC,CAC3C,CAAA;QACH,CAAC;IACH,CAAC;IACD,QAAQ,CAAC,MAAM,EAAE,CAAA;IACjB,OAAO;QACL,QAAQ,EAAE,QAAQ,CAAC,IAAI;QACvB,KAAK,EAAE,gBAAgB,CAAC,YAAY;QACpC,OAAO;KACR,CAAA;AACH,CAAC"}
1
+ {"version":3,"file":"makeImageData.js","sourceRoot":"","sources":["../../src/LinearMafRenderer/makeImageData.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,3 @@
1
1
  import { Feature } from '@jbrowse/core/util';
2
2
  import type { GenomicRegion, RenderingContext } from './types';
3
3
  export declare function processFeatureAlignment(feature: Feature, region: GenomicRegion, bpPerPx: number, sampleToRowMap: Map<string, number>, renderingContext: RenderingContext): void;
4
- export declare function processFeatureInsertions(feature: Feature, region: GenomicRegion, bpPerPx: number, sampleToRowMap: Map<string, number>, renderingContext: RenderingContext): void;
@@ -17,22 +17,9 @@ export function processFeatureAlignment(feature, region, bpPerPx, sampleToRowMap
17
17
  const alignment = originalAlignment.toLowerCase();
18
18
  const rowTop = renderingContext.offset + renderingContext.rowHeight * row;
19
19
  renderGaps(renderingContext, alignment, referenceSeq, leftPx, rowTop);
20
- renderMatches(renderingContext, alignment, referenceSeq, leftPx, rowTop, row, alignmentData.start, alignmentData.chr);
20
+ renderMatches(renderingContext, alignment, referenceSeq, leftPx, rowTop);
21
21
  renderMismatches(renderingContext, alignment, referenceSeq, leftPx, rowTop, row, alignmentData.start, alignmentData.chr);
22
22
  renderText(renderingContext, alignment, originalAlignment, referenceSeq, leftPx, rowTop);
23
- }
24
- }
25
- export function processFeatureInsertions(feature, region, bpPerPx, sampleToRowMap, renderingContext) {
26
- const [leftPx] = featureSpanPx(feature, region, bpPerPx);
27
- const alignments = feature.get('alignments');
28
- const referenceSeq = feature.get('seq').toLowerCase();
29
- for (const [sampleId, alignmentData] of Object.entries(alignments)) {
30
- const row = sampleToRowMap.get(sampleId);
31
- if (row === undefined) {
32
- continue;
33
- }
34
- const alignment = alignmentData.seq.toLowerCase();
35
- const rowTop = renderingContext.offset + renderingContext.rowHeight * row;
36
23
  renderInsertions(renderingContext, alignment, referenceSeq, leftPx, rowTop, bpPerPx, row, alignmentData.start, alignmentData.chr);
37
24
  }
38
25
  }
@@ -1 +1 @@
1
- {"version":3,"file":"features.js","sourceRoot":"","sources":["../../../src/LinearMafRenderer/rendering/features.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"features.js","sourceRoot":"","sources":["../../../src/LinearMafRenderer/rendering/features.ts"],"names":[],"mappings":"AAAA,OAAO,EAAW,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAE3D,OAAO,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAA;AACnC,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAA;AAC/C,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAA;AACzC,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAA;AAC/C,OAAO,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAA;AAInC,MAAM,UAAU,uBAAuB,CACrC,OAAgB,EAChB,MAAqB,EACrB,OAAe,EACf,cAAmC,EACnC,gBAAkC;IAElC,MAAM,CAAC,MAAM,CAAC,GAAG,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,CAAA;IACxD,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,YAAY,CAG1C,CAAA;IACD,MAAM,YAAY,GAAI,OAAO,CAAC,GAAG,CAAC,KAAK,CAAY,CAAC,WAAW,EAAE,CAAA;IAEjE,KAAK,MAAM,CAAC,QAAQ,EAAE,aAAa,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC;QACnE,MAAM,GAAG,GAAG,cAAc,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;QACxC,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;YACtB,SAAQ;QACV,CAAC;QAED,MAAM,iBAAiB,GAAG,aAAa,CAAC,GAAG,CAAA;QAC3C,MAAM,SAAS,GAAG,iBAAiB,CAAC,WAAW,EAAE,CAAA;QACjD,MAAM,MAAM,GAAG,gBAAgB,CAAC,MAAM,GAAG,gBAAgB,CAAC,SAAS,GAAG,GAAG,CAAA;QAEzE,UAAU,CAAC,gBAAgB,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,CAAC,CAAA;QACrE,aAAa,CAAC,gBAAgB,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,CAAC,CAAA;QACxE,gBAAgB,CACd,gBAAgB,EAChB,SAAS,EACT,YAAY,EACZ,MAAM,EACN,MAAM,EACN,GAAG,EACH,aAAa,CAAC,KAAK,EACnB,aAAa,CAAC,GAAG,CAClB,CAAA;QACD,UAAU,CACR,gBAAgB,EAChB,SAAS,EACT,iBAAiB,EACjB,YAAY,EACZ,MAAM,EACN,MAAM,CACP,CAAA;QACD,gBAAgB,CACd,gBAAgB,EAChB,SAAS,EACT,YAAY,EACZ,MAAM,EACN,MAAM,EACN,OAAO,EACP,GAAG,EACH,aAAa,CAAC,KAAK,EACnB,aAAa,CAAC,GAAG,CAClB,CAAA;IACH,CAAC;AACH,CAAC"}
@@ -1,10 +1,9 @@
1
1
  import { measureText } from '@jbrowse/core/util';
2
- import { fillRect, getCharWidthHeight } from '../util';
2
+ import { fillRect } from '../util';
3
3
  import { addToSpatialIndex, shouldAddToSpatialIndex } from './spatialIndex';
4
4
  import { CHAR_SIZE_WIDTH, HIGH_BP_PER_PX_THRESHOLD, HIGH_ZOOM_THRESHOLD, INSERTION_BORDER_HEIGHT, INSERTION_BORDER_WIDTH, INSERTION_LINE_WIDTH, INSERTION_PADDING, LARGE_INSERTION_THRESHOLD, MIN_ROW_HEIGHT_FOR_BORDERS, } from './types';
5
5
  export function renderInsertions(context, alignment, seq, leftPx, rowTop, bpPerPx, sampleId, alignmentStart, chr) {
6
- const { ctx, scale, h, canvasWidth, rowHeight } = context;
7
- const { charHeight } = getCharWidthHeight();
6
+ const { ctx, scale, h, canvasWidth, rowHeight, charHeight } = context;
8
7
  for (let i = 0, genomicOffset = 0, seqLength = alignment.length; i < seqLength; i++) {
9
8
  let insertionSequence = '';
10
9
  while (seq[i] === '-') {
@@ -50,18 +49,20 @@ export function renderInsertions(context, alignment, seq, leftPx, rowTop, bpPerP
50
49
  actualXPos = xPos;
51
50
  actualWidth = INSERTION_LINE_WIDTH;
52
51
  fillRect(ctx, actualXPos, rowTop, actualWidth, h, canvasWidth, 'purple');
52
+ // Always use a wider hit box for spatial index, even if visual is 1px
53
+ const hitBoxPadding = 2;
54
+ actualXPos = xPos - hitBoxPadding;
55
+ actualWidth = INSERTION_LINE_WIDTH + 2 * hitBoxPadding;
53
56
  if (bpPerPx < HIGH_ZOOM_THRESHOLD &&
54
57
  rowHeight > MIN_ROW_HEIGHT_FOR_BORDERS) {
55
58
  // Add horizontal borders for visibility at high zoom
56
- // Note: borders extend the effective clickable area
57
- actualXPos = xPos - INSERTION_BORDER_WIDTH;
58
- actualWidth = INSERTION_BORDER_HEIGHT;
59
59
  fillRect(ctx, xPos - INSERTION_BORDER_WIDTH, rowTop, INSERTION_BORDER_HEIGHT, INSERTION_LINE_WIDTH, canvasWidth);
60
60
  fillRect(ctx, xPos - INSERTION_BORDER_WIDTH, rowTop + h - INSERTION_LINE_WIDTH, INSERTION_BORDER_HEIGHT, INSERTION_LINE_WIDTH, canvasWidth);
61
61
  }
62
62
  }
63
63
  // Add insertion to spatial index with actual rendered dimensions
64
64
  // Insertions always bypass distance filter
65
+ const isLargeInsertion = insertionSequence.length > LARGE_INSERTION_THRESHOLD;
65
66
  if (shouldAddToSpatialIndex(actualXPos, context, true)) {
66
67
  addToSpatialIndex(context, actualXPos, rowTop, actualXPos + actualWidth, rowTop + context.h, {
67
68
  pos: genomicOffset + alignmentStart,
@@ -69,6 +70,7 @@ export function renderInsertions(context, alignment, seq, leftPx, rowTop, bpPerP
69
70
  base: insertionSequence,
70
71
  sampleId,
71
72
  isInsertion: true,
73
+ isLargeInsertion,
72
74
  });
73
75
  }
74
76
  }
@@ -1 +1 @@
1
- {"version":3,"file":"insertions.js","sourceRoot":"","sources":["../../../src/LinearMafRenderer/rendering/insertions.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"insertions.js","sourceRoot":"","sources":["../../../src/LinearMafRenderer/rendering/insertions.ts"],"names":[],"mappings":"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"}
@@ -1,2 +1,2 @@
1
1
  import type { RenderingContext } from './types';
2
- export declare function renderMatches(context: RenderingContext, alignment: string, seq: string, leftPx: number, rowTop: number, sampleId: number, alignmentStart: number, chr: string): void;
2
+ export declare function renderMatches(context: RenderingContext, alignment: string, seq: string, leftPx: number, rowTop: number): void;
@@ -1,7 +1,6 @@
1
1
  import { fillRect } from '../util';
2
- import { addToSpatialIndex, shouldAddToSpatialIndex } from './spatialIndex';
3
2
  import { GAP_STROKE_OFFSET } from './types';
4
- export function renderMatches(context, alignment, seq, leftPx, rowTop, sampleId, alignmentStart, chr) {
3
+ export function renderMatches(context, alignment, seq, leftPx, rowTop) {
5
4
  if (context.showAllLetters) {
6
5
  return;
7
6
  }
@@ -12,20 +11,9 @@ export function renderMatches(context, alignment, seq, leftPx, rowTop, sampleId,
12
11
  if (seq[i] !== '-') {
13
12
  // Only process non-gap positions in reference
14
13
  const currentChar = alignment[i];
15
- const xPos = leftPx + scale * genomicOffset;
16
- if (seq[i] === currentChar &&
17
- currentChar !== '-' &&
18
- currentChar !== ' ') {
14
+ if (seq[i] === currentChar && currentChar !== ' ') {
15
+ const xPos = leftPx + scale * genomicOffset;
19
16
  fillRect(ctx, xPos, rowTop, scale + GAP_STROKE_OFFSET, h, canvasWidth);
20
- // Add to spatial index if distance filter allows
21
- if (shouldAddToSpatialIndex(xPos, context)) {
22
- addToSpatialIndex(context, xPos, rowTop, xPos + context.scale + GAP_STROKE_OFFSET, rowTop + context.h, {
23
- pos: genomicOffset + alignmentStart,
24
- chr,
25
- base: currentChar || '',
26
- sampleId,
27
- });
28
- }
29
17
  }
30
18
  genomicOffset++;
31
19
  }
@@ -1 +1 @@
1
- {"version":3,"file":"matches.js","sourceRoot":"","sources":["../../../src/LinearMafRenderer/rendering/matches.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAA;AAClC,OAAO,EAAE,iBAAiB,EAAE,uBAAuB,EAAE,MAAM,gBAAgB,CAAA;AAC3E,OAAO,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAA;AAI3C,MAAM,UAAU,aAAa,CAC3B,OAAyB,EACzB,SAAiB,EACjB,GAAW,EACX,MAAc,EACd,MAAc,EACd,QAAgB,EAChB,cAAsB,EACtB,GAAW;IAEX,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC;QAC3B,OAAM;IACR,CAAC;IAED,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,EAAE,WAAW,EAAE,GAAG,OAAO,CAAA;IAC9C,GAAG,CAAC,SAAS,GAAG,WAAW,CAAA;IAE3B,sDAAsD;IACtD,KACE,IAAI,CAAC,GAAG,CAAC,EAAE,aAAa,GAAG,CAAC,EAAE,SAAS,GAAG,SAAS,CAAC,MAAM,EAC1D,CAAC,GAAG,SAAS,EACb,CAAC,EAAE,EACH,CAAC;QACD,IAAI,GAAG,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC;YACnB,8CAA8C;YAC9C,MAAM,WAAW,GAAG,SAAS,CAAC,CAAC,CAAC,CAAA;YAChC,MAAM,IAAI,GAAG,MAAM,GAAG,KAAK,GAAG,aAAa,CAAA;YAC3C,IACE,GAAG,CAAC,CAAC,CAAC,KAAK,WAAW;gBACtB,WAAW,KAAK,GAAG;gBACnB,WAAW,KAAK,GAAG,EACnB,CAAC;gBACD,QAAQ,CAAC,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,GAAG,iBAAiB,EAAE,CAAC,EAAE,WAAW,CAAC,CAAA;gBAEtE,iDAAiD;gBACjD,IAAI,uBAAuB,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE,CAAC;oBAC3C,iBAAiB,CACf,OAAO,EACP,IAAI,EACJ,MAAM,EACN,IAAI,GAAG,OAAO,CAAC,KAAK,GAAG,iBAAiB,EACxC,MAAM,GAAG,OAAO,CAAC,CAAC,EAClB;wBACE,GAAG,EAAE,aAAa,GAAG,cAAc;wBACnC,GAAG;wBACH,IAAI,EAAE,WAAW,IAAI,EAAE;wBACvB,QAAQ;qBACT,CACF,CAAA;gBACH,CAAC;YACH,CAAC;YACD,aAAa,EAAE,CAAA;QACjB,CAAC;IACH,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"matches.js","sourceRoot":"","sources":["../../../src/LinearMafRenderer/rendering/matches.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAA;AAClC,OAAO,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAA;AAI3C,MAAM,UAAU,aAAa,CAC3B,OAAyB,EACzB,SAAiB,EACjB,GAAW,EACX,MAAc,EACd,MAAc;IAEd,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC;QAC3B,OAAM;IACR,CAAC;IAED,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,EAAE,WAAW,EAAE,GAAG,OAAO,CAAA;IAC9C,GAAG,CAAC,SAAS,GAAG,WAAW,CAAA;IAE3B,sDAAsD;IACtD,KACE,IAAI,CAAC,GAAG,CAAC,EAAE,aAAa,GAAG,CAAC,EAAE,SAAS,GAAG,SAAS,CAAC,MAAM,EAC1D,CAAC,GAAG,SAAS,EACb,CAAC,EAAE,EACH,CAAC;QACD,IAAI,GAAG,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC;YACnB,8CAA8C;YAC9C,MAAM,WAAW,GAAG,SAAS,CAAC,CAAC,CAAC,CAAA;YAChC,IAAI,GAAG,CAAC,CAAC,CAAC,KAAK,WAAW,IAAI,WAAW,KAAK,GAAG,EAAE,CAAC;gBAClD,MAAM,IAAI,GAAG,MAAM,GAAG,KAAK,GAAG,aAAa,CAAA;gBAC3C,QAAQ,CAAC,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,GAAG,iBAAiB,EAAE,CAAC,EAAE,WAAW,CAAC,CAAA;YACxE,CAAC;YACD,aAAa,EAAE,CAAA;QACjB,CAAC;IACH,CAAC;AACH,CAAC"}
@@ -8,8 +8,14 @@ export function createRenderedBaseCoords(xPos, rowTop, context) {
8
8
  };
9
9
  }
10
10
  export function shouldAddToSpatialIndex(xPos, context, bypassDistanceFilter = false) {
11
- return (bypassDistanceFilter ||
12
- Math.abs(xPos - context.lastInsertedX) > MIN_X_DISTANCE);
11
+ if (bypassDistanceFilter) {
12
+ return true;
13
+ }
14
+ // Zoom-aware distance threshold: scale threshold based on zoom level
15
+ // At high zoom (small bpPerPx), use smaller threshold for more precision
16
+ // At low zoom (large bpPerPx), use larger threshold to reduce index size
17
+ return (Math.abs(xPos - context.lastInsertedX) >
18
+ MIN_X_DISTANCE * Math.max(1, context.bpPerPx));
13
19
  }
14
20
  export function addToSpatialIndex(context, minX, minY, maxX, maxY, renderedBase) {
15
21
  context.spatialIndex.push(renderedBase);
@@ -1 +1 @@
1
- {"version":3,"file":"spatialIndex.js","sourceRoot":"","sources":["../../../src/LinearMafRenderer/rendering/spatialIndex.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;AAI3D,MAAM,UAAU,wBAAwB,CACtC,IAAY,EACZ,MAAc,EACd,OAAyB;IAEzB,OAAO;QACL,IAAI,EAAE,IAAI;QACV,IAAI,EAAE,MAAM;QACZ,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,KAAK,GAAG,iBAAiB;QAC9C,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC;KACzB,CAAA;AACH,CAAC;AAED,MAAM,UAAU,uBAAuB,CACrC,IAAY,EACZ,OAAyB,EACzB,oBAAoB,GAAG,KAAK;IAE5B,OAAO,CACL,oBAAoB;QACpB,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG,OAAO,CAAC,aAAa,CAAC,GAAG,cAAc,CACxD,CAAA;AACH,CAAC;AAED,MAAM,UAAU,iBAAiB,CAC/B,OAAyB,EACzB,IAAY,EACZ,IAAY,EACZ,IAAY,EACZ,IAAY,EACZ,YAA0B;IAE1B,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,YAAY,CAAC,CAAA;IACvC,OAAO,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAA;IACvD,OAAO,CAAC,aAAa,GAAG,IAAI,CAAA;AAC9B,CAAC"}
1
+ {"version":3,"file":"spatialIndex.js","sourceRoot":"","sources":["../../../src/LinearMafRenderer/rendering/spatialIndex.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;AAI3D,MAAM,UAAU,wBAAwB,CACtC,IAAY,EACZ,MAAc,EACd,OAAyB;IAEzB,OAAO;QACL,IAAI,EAAE,IAAI;QACV,IAAI,EAAE,MAAM;QACZ,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,KAAK,GAAG,iBAAiB;QAC9C,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC;KACzB,CAAA;AACH,CAAC;AAED,MAAM,UAAU,uBAAuB,CACrC,IAAY,EACZ,OAAyB,EACzB,oBAAoB,GAAG,KAAK;IAE5B,IAAI,oBAAoB,EAAE,CAAC;QACzB,OAAO,IAAI,CAAA;IACb,CAAC;IAED,qEAAqE;IACrE,yEAAyE;IACzE,yEAAyE;IACzE,OAAO,CACL,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG,OAAO,CAAC,aAAa,CAAC;QACtC,cAAc,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,OAAO,CAAC,CAC9C,CAAA;AACH,CAAC;AAED,MAAM,UAAU,iBAAiB,CAC/B,OAAyB,EACzB,IAAY,EACZ,IAAY,EACZ,IAAY,EACZ,IAAY,EACZ,YAA0B;IAE1B,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,YAAY,CAAC,CAAA;IACvC,OAAO,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAA;IACvD,OAAO,CAAC,aAAa,GAAG,IAAI,CAAA;AAC9B,CAAC"}