@jbrowse/bandage-core 9.0.0 → 9.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (41) hide show
  1. package/dist/bubbles/bubbleHalos.js +9 -5
  2. package/dist/bubbles/bubbleLine.js +3 -1
  3. package/dist/bubbles/bubblesFromGraph.js +8 -4
  4. package/dist/bubbles/classifyBubble.js +2 -2
  5. package/dist/bubbles/superbubbles.js +21 -0
  6. package/dist/chunks/{chunk-ISEI2FH3.js → chunk-2AWUWGAD.js} +10 -4
  7. package/dist/chunks/{chunk-YOYLCLIG.js → chunk-2ZT7ZF7A.js} +6 -2
  8. package/dist/chunks/{chunk-TLQ7F2ZT.js → chunk-3TGUKQWQ.js} +4 -4
  9. package/dist/chunks/{chunk-LLP3FXPM.js → chunk-75HR3756.js} +24 -7
  10. package/dist/chunks/chunk-FUVI4WQP.js +273 -0
  11. package/dist/chunks/{chunk-MFKORG3F.js → chunk-FX4RDMDN.js} +5 -1
  12. package/dist/chunks/{chunk-4S47XRYA.js → chunk-GOZYKNQ2.js} +16 -11
  13. package/dist/chunks/{chunk-TL4B342F.js → chunk-MXDQGA7A.js} +1 -1
  14. package/dist/chunks/{chunk-SKKYLBRA.js → chunk-RRZMMYBG.js} +1 -1
  15. package/dist/chunks/{chunk-AMS3MAFP.js → chunk-UID3QBWH.js} +1 -1
  16. package/dist/chunks/{chunk-2WNBVB55.js → chunk-WBCOREDZ.js} +121 -74
  17. package/dist/chunks/{chunk-WOO7QYKB.js → chunk-XKWD2RY3.js} +8 -2
  18. package/dist/chunks/{chunk-6VBDMZBZ.js → chunk-XLCTQHBE.js} +1 -1
  19. package/dist/cli/figure.js +6 -6
  20. package/dist/figure.js +6 -6
  21. package/dist/figureSettings.js +3 -3
  22. package/dist/index.js +34 -24
  23. package/dist/layout/forceCache.js +3 -3
  24. package/dist/pipeline.js +2 -2
  25. package/dist/renderer/Canvas2DRenderer.js +1 -1
  26. package/dist/renderer/recordingCanvas.js +12 -1
  27. package/dist/tubeMap/connectors.js +3 -1
  28. package/dist/tubeMap/draw.js +3 -1
  29. package/dist/types/bubbles/bubbleHalos.d.ts +2 -0
  30. package/dist/types/bubbles/bubbleLine.d.ts +3 -0
  31. package/dist/types/bubbles/bubblesFromGraph.d.ts +12 -2
  32. package/dist/types/bubbles/superbubbles.d.ts +5 -0
  33. package/dist/types/index.d.ts +3 -2
  34. package/dist/types/renderer/Canvas2DRenderer.d.ts +6 -3
  35. package/dist/types/tubeMap/connectors.d.ts +1 -0
  36. package/dist/types/tubeMap/draw.d.ts +1 -0
  37. package/dist/types/version.d.ts +1 -1
  38. package/dist/version.js +1 -1
  39. package/dist/viewport.js +3 -3
  40. package/package.json +1 -1
  41. package/dist/chunks/{chunk-5OIVTEF7.js → chunk-OOXIMURX.js} +3 -3
@@ -68,45 +68,81 @@ var Canvas2DRenderer = class {
68
68
  }
69
69
  ctx.lineCap = "round";
70
70
  ctx.lineJoin = "round";
71
- this.renderEdges(batch);
72
- this.renderNodes(batch);
73
- this.renderArrows(batch);
74
- }
75
- renderEdges(batch) {
76
- const t = this.transform;
77
- const ctx = this.ctx;
78
- const hl = this.highlightedEdge === null ? void 0 : batch.edgeCurveRuns.get(this.highlightedEdge);
71
+ const factor = this.highlightFactor;
72
+ const edgeRun = this.edgeRun(batch.edgeCurveRuns);
79
73
  for (const { color, items } of groupByPaint(batch.edgeCurves, (e, i) => ({
80
- color: inRun(hl, i) ? brightenAbgr(e.color, this.highlightFactor) : e.color,
74
+ color: inRun(edgeRun, i) ? brightenAbgr(e.color, factor) : e.color,
81
75
  weight: e.thickness,
82
- last: inRun(hl, i)
76
+ last: inRun(edgeRun, i)
83
77
  }))) {
84
- ctx.strokeStyle = abgrToCssRgba(color);
85
- ctx.lineWidth = items[0].thickness * 2 * t.dpr;
86
- ctx.beginPath();
87
- for (const e of items) {
88
- const first = e.curves[0];
89
- ctx.moveTo(
90
- first.x0 * t.scaleX + t.translateX,
91
- first.y0 * t.scaleY + t.translateY
92
- );
93
- for (const c of e.curves) {
94
- ctx.bezierCurveTo(
95
- c.cx0 * t.scaleX + t.translateX,
96
- c.cy0 * t.scaleY + t.translateY,
97
- c.cx1 * t.scaleX + t.translateX,
98
- c.cy1 * t.scaleY + t.translateY,
99
- c.x1 * t.scaleX + t.translateX,
100
- c.y1 * t.scaleY + t.translateY
101
- );
102
- }
103
- }
104
- ctx.stroke();
78
+ this.strokeCurves(items, color);
79
+ }
80
+ const lifted = this.liftedStrokes(batch);
81
+ for (const { color, items } of groupByPaint(batch.nodeStrokes, (s, i) => {
82
+ const f = lifted.get(i);
83
+ return {
84
+ color: f === void 0 ? s.color : brightenAbgr(s.color, f),
85
+ weight: s.thickness,
86
+ last: f !== void 0
87
+ };
88
+ })) {
89
+ this.strokeNodes(items, color);
90
+ }
91
+ const arrowRun = this.edgeRun(batch.arrowRuns);
92
+ for (const { color, items } of groupByPaint(batch.arrows, (a, i) => ({
93
+ color: inRun(arrowRun, i) ? brightenAbgr(a.color, factor) : a.color,
94
+ weight: 0,
95
+ last: inRun(arrowRun, i)
96
+ }))) {
97
+ this.fillArrows(items, color);
105
98
  }
106
99
  }
107
- renderNodes(batch) {
108
- const t = this.transform;
100
+ // Only what the highlights lift, over a transparent clear, for a hover layer
101
+ // stacked on a canvas that drew the batch without them: a pointer move then
102
+ // repaints one node or edge rather than the whole drawing
103
+ renderHighlights() {
109
104
  const ctx = this.ctx;
105
+ ctx.clearRect(0, 0, ctx.canvas.width, ctx.canvas.height);
106
+ const batch = this.batch;
107
+ if (!this.transform || !batch) {
108
+ return;
109
+ }
110
+ ctx.lineCap = "round";
111
+ ctx.lineJoin = "round";
112
+ const factor = this.highlightFactor;
113
+ const curves = runItems(batch.edgeCurves, this.edgeRun(batch.edgeCurveRuns));
114
+ for (const { color, items } of groupByPaint(curves, (e) => ({
115
+ color: brightenAbgr(e.color, factor),
116
+ weight: e.thickness,
117
+ last: false
118
+ }))) {
119
+ this.strokeCurves(items, color);
120
+ }
121
+ const lifted = [...this.liftedStrokes(batch)];
122
+ for (const { color, items } of groupByPaint(lifted, ([i, f]) => ({
123
+ color: brightenAbgr(batch.nodeStrokes[i].color, f),
124
+ weight: batch.nodeStrokes[i].thickness,
125
+ last: false
126
+ }))) {
127
+ this.strokeNodes(
128
+ items.map(([i]) => batch.nodeStrokes[i]),
129
+ color
130
+ );
131
+ }
132
+ const arrows = runItems(batch.arrows, this.edgeRun(batch.arrowRuns));
133
+ for (const { color, items } of groupByPaint(arrows, (a) => ({
134
+ color: brightenAbgr(a.color, factor),
135
+ weight: 0,
136
+ last: false
137
+ }))) {
138
+ this.fillArrows(items, color);
139
+ }
140
+ }
141
+ edgeRun(runs) {
142
+ return this.highlightedEdge === null ? void 0 : runs.get(this.highlightedEdge);
143
+ }
144
+ // stroke index -> brighten factor, for the nodes the model lifted
145
+ liftedStrokes(batch) {
110
146
  const lifted = /* @__PURE__ */ new Map();
111
147
  for (const [nodeId, factor] of this.nodeHighlights) {
112
148
  const run = batch.nodeStrokeRuns.get(nodeId);
@@ -116,55 +152,63 @@ var Canvas2DRenderer = class {
116
152
  }
117
153
  }
118
154
  }
119
- for (const { color, items } of groupByPaint(batch.nodeStrokes, (s, i) => {
120
- const factor = lifted.get(i);
121
- return {
122
- color: factor === void 0 ? s.color : brightenAbgr(s.color, factor),
123
- weight: s.thickness,
124
- last: factor !== void 0
125
- };
126
- })) {
127
- ctx.strokeStyle = abgrToCssRgba(color);
128
- ctx.lineWidth = items[0].thickness * 2 * t.dpr;
129
- ctx.beginPath();
130
- for (const s of items) {
131
- const p0 = s.points[0];
132
- ctx.moveTo(
133
- p0.x * t.scaleX + t.translateX,
134
- p0.y * t.scaleY + t.translateY
155
+ return lifted;
156
+ }
157
+ strokeCurves(items, color) {
158
+ const t = this.transform;
159
+ const ctx = this.ctx;
160
+ ctx.strokeStyle = abgrToCssRgba(color);
161
+ ctx.lineWidth = items[0].thickness * 2 * t.dpr;
162
+ ctx.beginPath();
163
+ for (const e of items) {
164
+ const first = e.curves[0];
165
+ ctx.moveTo(
166
+ first.x0 * t.scaleX + t.translateX,
167
+ first.y0 * t.scaleY + t.translateY
168
+ );
169
+ for (const c of e.curves) {
170
+ ctx.bezierCurveTo(
171
+ c.cx0 * t.scaleX + t.translateX,
172
+ c.cy0 * t.scaleY + t.translateY,
173
+ c.cx1 * t.scaleX + t.translateX,
174
+ c.cy1 * t.scaleY + t.translateY,
175
+ c.x1 * t.scaleX + t.translateX,
176
+ c.y1 * t.scaleY + t.translateY
135
177
  );
136
- for (let i = 1, l = s.points.length; i < l; i++) {
137
- const p = s.points[i];
138
- ctx.lineTo(
139
- p.x * t.scaleX + t.translateX,
140
- p.y * t.scaleY + t.translateY
141
- );
142
- }
143
178
  }
144
- ctx.stroke();
145
179
  }
180
+ ctx.stroke();
146
181
  }
147
- renderArrows(batch) {
182
+ strokeNodes(items, color) {
148
183
  const t = this.transform;
149
184
  const ctx = this.ctx;
150
- const hl = this.highlightedEdge === null ? void 0 : batch.arrowRuns.get(this.highlightedEdge);
151
- for (const { color, items } of groupByPaint(batch.arrows, (a, i) => ({
152
- color: inRun(hl, i) ? brightenAbgr(a.color, this.highlightFactor) : a.color,
153
- weight: 0,
154
- last: inRun(hl, i)
155
- }))) {
156
- ctx.fillStyle = abgrToCssRgba(color);
157
- ctx.beginPath();
158
- for (const a of items) {
159
- const [tip, left, notch, right] = arrowheadOutline(a, t);
160
- ctx.moveTo(tip.x, tip.y);
161
- ctx.lineTo(left.x, left.y);
162
- ctx.lineTo(notch.x, notch.y);
163
- ctx.lineTo(right.x, right.y);
164
- ctx.closePath();
185
+ ctx.strokeStyle = abgrToCssRgba(color);
186
+ ctx.lineWidth = items[0].thickness * 2 * t.dpr;
187
+ ctx.beginPath();
188
+ for (const s of items) {
189
+ const p0 = s.points[0];
190
+ ctx.moveTo(p0.x * t.scaleX + t.translateX, p0.y * t.scaleY + t.translateY);
191
+ for (let i = 1, l = s.points.length; i < l; i++) {
192
+ const p = s.points[i];
193
+ ctx.lineTo(p.x * t.scaleX + t.translateX, p.y * t.scaleY + t.translateY);
165
194
  }
166
- ctx.fill();
167
195
  }
196
+ ctx.stroke();
197
+ }
198
+ fillArrows(items, color) {
199
+ const t = this.transform;
200
+ const ctx = this.ctx;
201
+ ctx.fillStyle = abgrToCssRgba(color);
202
+ ctx.beginPath();
203
+ for (const a of items) {
204
+ const [tip, left, notch, right] = arrowheadOutline(a, t);
205
+ ctx.moveTo(tip.x, tip.y);
206
+ ctx.lineTo(left.x, left.y);
207
+ ctx.lineTo(notch.x, notch.y);
208
+ ctx.lineTo(right.x, right.y);
209
+ ctx.closePath();
210
+ }
211
+ ctx.fill();
168
212
  }
169
213
  dispose() {
170
214
  this.batch = null;
@@ -190,6 +234,9 @@ function arrowheadOutline(a, t) {
190
234
  { x: backX + uy * halfWidth, y: backY - ux * halfWidth }
191
235
  ];
192
236
  }
237
+ function runItems(items, run) {
238
+ return run ? items.slice(run.start, run.start + run.count) : [];
239
+ }
193
240
  function inRun(run, i) {
194
241
  return run !== void 0 && i >= run.start && i < run.start + run.count;
195
242
  }
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  SATURATED_PATH_COUNT
3
- } from "./chunk-MFKORG3F.js";
3
+ } from "./chunk-FX4RDMDN.js";
4
4
 
5
5
  // src/bubbles/classifyBubble.ts
6
6
  var REPEAT_GROWTH = 10;
@@ -59,6 +59,9 @@ function classifyShape(b, repeats) {
59
59
  if (inversion) {
60
60
  return { kind: "inversion", label: `${formatBp(longest)} inv` };
61
61
  }
62
+ if (b.offReference) {
63
+ return shortest === longest ? sameLength(shortest) : { kind: "complex", label: `${range}, ${routes(pathCount)}` };
64
+ }
62
65
  const repeat = longest !== shortest ? coveringRepeat(b, repeats) : void 0;
63
66
  if (repeat) {
64
67
  const name = repeat.name ? ` (${repeat.name})` : "";
@@ -69,7 +72,7 @@ function classifyShape(b, repeats) {
69
72
  }
70
73
  const alleles = pathCount > 2 ? `, ${pathCount} alleles` : "";
71
74
  if (shortest === longest && shortest === refSpan) {
72
- return refSpan <= 1 ? { kind: "snp", label: "SNP" } : { kind: "substitution", label: `${formatBp(refSpan)} sub` };
75
+ return sameLength(refSpan);
73
76
  }
74
77
  if (refSpan === 0 || shortest === refSpan) {
75
78
  return {
@@ -88,6 +91,9 @@ function classifyShape(b, repeats) {
88
91
  label: `${formatBp(refSpan)} ref \u2192 ${range}, ${pathCount} alleles`
89
92
  };
90
93
  }
94
+ function sameLength(bp) {
95
+ return bp <= 1 ? { kind: "snp", label: "SNP" } : { kind: "substitution", label: `${formatBp(bp)} sub` };
96
+ }
91
97
  var BUBBLE_KIND_COLORS = {
92
98
  snp: "#5b6b7a",
93
99
  substitution: "#5b6b7a",
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  ENGINE_DEFAULTS
3
- } from "./chunk-5OIVTEF7.js";
3
+ } from "./chunk-OOXIMURX.js";
4
4
 
5
5
  // src/figureSettings.ts
6
6
  var FIGURE_DEFAULTS = {
@@ -35,7 +35,7 @@ import "../chunks/chunk-LYJ4US66.js";
35
35
  import "../chunks/chunk-7XHHVYG7.js";
36
36
  import {
37
37
  figureSvg
38
- } from "../chunks/chunk-TLQ7F2ZT.js";
38
+ } from "../chunks/chunk-3TGUKQWQ.js";
39
39
  import "../chunks/chunk-LOCJN3BZ.js";
40
40
  import "../chunks/chunk-47DYCZOK.js";
41
41
  import "../chunks/chunk-WDTXW7T2.js";
@@ -43,7 +43,7 @@ import {
43
43
  genesOnRow,
44
44
  placeRowGenes
45
45
  } from "../chunks/chunk-MIW3HYPE.js";
46
- import "../chunks/chunk-2WNBVB55.js";
46
+ import "../chunks/chunk-WBCOREDZ.js";
47
47
  import "../chunks/chunk-4BYTEJGW.js";
48
48
  import "../chunks/chunk-3S3YVOJ7.js";
49
49
  import "../chunks/chunk-BUBZ32IC.js";
@@ -53,8 +53,8 @@ import "../chunks/chunk-2LQ5BWT7.js";
53
53
  import "../chunks/chunk-6ZNQJ5ZD.js";
54
54
  import "../chunks/chunk-HBEKUQO4.js";
55
55
  import "../chunks/chunk-G2FD7S3C.js";
56
- import "../chunks/chunk-AMS3MAFP.js";
57
- import "../chunks/chunk-TL4B342F.js";
56
+ import "../chunks/chunk-UID3QBWH.js";
57
+ import "../chunks/chunk-MXDQGA7A.js";
58
58
  import "../chunks/chunk-3C5UXR2U.js";
59
59
  import {
60
60
  filterSamples,
@@ -80,13 +80,13 @@ import {
80
80
  engineSettingsOf,
81
81
  forceLayout,
82
82
  loadGraph
83
- } from "../chunks/chunk-5OIVTEF7.js";
83
+ } from "../chunks/chunk-OOXIMURX.js";
84
84
  import "../chunks/chunk-PUG7LXDF.js";
85
85
  import "../chunks/chunk-IGVV37VI.js";
86
+ import "../chunks/chunk-OA7RIMZ2.js";
86
87
  import "../chunks/chunk-OCMBULGN.js";
87
88
  import "../chunks/chunk-QYBZZI5H.js";
88
89
  import "../chunks/chunk-CDLPYR5O.js";
89
- import "../chunks/chunk-OA7RIMZ2.js";
90
90
  import "../chunks/chunk-ES2N6V56.js";
91
91
  import "../chunks/chunk-ST2IBUAN.js";
92
92
  import "../chunks/chunk-BPLIXMH7.js";
package/dist/figure.js CHANGED
@@ -1,11 +1,11 @@
1
1
  import {
2
2
  figureSvg
3
- } from "./chunks/chunk-TLQ7F2ZT.js";
3
+ } from "./chunks/chunk-3TGUKQWQ.js";
4
4
  import "./chunks/chunk-LOCJN3BZ.js";
5
5
  import "./chunks/chunk-47DYCZOK.js";
6
6
  import "./chunks/chunk-WDTXW7T2.js";
7
7
  import "./chunks/chunk-MIW3HYPE.js";
8
- import "./chunks/chunk-2WNBVB55.js";
8
+ import "./chunks/chunk-WBCOREDZ.js";
9
9
  import "./chunks/chunk-4BYTEJGW.js";
10
10
  import "./chunks/chunk-3S3YVOJ7.js";
11
11
  import "./chunks/chunk-BUBZ32IC.js";
@@ -15,8 +15,8 @@ import "./chunks/chunk-2LQ5BWT7.js";
15
15
  import "./chunks/chunk-6ZNQJ5ZD.js";
16
16
  import "./chunks/chunk-HBEKUQO4.js";
17
17
  import "./chunks/chunk-G2FD7S3C.js";
18
- import "./chunks/chunk-AMS3MAFP.js";
19
- import "./chunks/chunk-TL4B342F.js";
18
+ import "./chunks/chunk-UID3QBWH.js";
19
+ import "./chunks/chunk-MXDQGA7A.js";
20
20
  import "./chunks/chunk-3C5UXR2U.js";
21
21
  import "./chunks/chunk-MAUEPAMG.js";
22
22
  import "./chunks/chunk-PBENCR5L.js";
@@ -31,13 +31,13 @@ import "./chunks/chunk-AB35TJST.js";
31
31
  import "./chunks/chunk-JKJWSY4V.js";
32
32
  import "./chunks/chunk-NNODIW4U.js";
33
33
  import "./chunks/chunk-XV4P5KEQ.js";
34
- import "./chunks/chunk-5OIVTEF7.js";
34
+ import "./chunks/chunk-OOXIMURX.js";
35
35
  import "./chunks/chunk-PUG7LXDF.js";
36
36
  import "./chunks/chunk-IGVV37VI.js";
37
+ import "./chunks/chunk-OA7RIMZ2.js";
37
38
  import "./chunks/chunk-OCMBULGN.js";
38
39
  import "./chunks/chunk-QYBZZI5H.js";
39
40
  import "./chunks/chunk-CDLPYR5O.js";
40
- import "./chunks/chunk-OA7RIMZ2.js";
41
41
  import "./chunks/chunk-ES2N6V56.js";
42
42
  import "./chunks/chunk-ST2IBUAN.js";
43
43
  import "./chunks/chunk-BPLIXMH7.js";
@@ -1,14 +1,14 @@
1
1
  import {
2
2
  FIGURE_DEFAULTS,
3
3
  figureSpecSettings
4
- } from "./chunks/chunk-6VBDMZBZ.js";
5
- import "./chunks/chunk-5OIVTEF7.js";
4
+ } from "./chunks/chunk-XLCTQHBE.js";
5
+ import "./chunks/chunk-OOXIMURX.js";
6
6
  import "./chunks/chunk-PUG7LXDF.js";
7
7
  import "./chunks/chunk-IGVV37VI.js";
8
+ import "./chunks/chunk-OA7RIMZ2.js";
8
9
  import "./chunks/chunk-OCMBULGN.js";
9
10
  import "./chunks/chunk-QYBZZI5H.js";
10
11
  import "./chunks/chunk-CDLPYR5O.js";
11
- import "./chunks/chunk-OA7RIMZ2.js";
12
12
  import "./chunks/chunk-ES2N6V56.js";
13
13
  import "./chunks/chunk-ST2IBUAN.js";
14
14
  import "./chunks/chunk-BPLIXMH7.js";
package/dist/index.js CHANGED
@@ -1,16 +1,27 @@
1
1
  import {
2
2
  wheelZoomFactor
3
3
  } from "./chunks/chunk-TDQLINVI.js";
4
+ import {
5
+ connectorAt,
6
+ drawLitConnector,
7
+ drawTubeMapConnectors,
8
+ tubeMapConnectors
9
+ } from "./chunks/chunk-2ZT7ZF7A.js";
4
10
  import {
5
11
  drawTubeMap,
12
+ drawTubeMapHighlight,
6
13
  tubeMapMismatchAt,
7
14
  tubeMapPicture,
8
15
  tubeMapTrackAt
9
- } from "./chunks/chunk-LLP3FXPM.js";
16
+ } from "./chunks/chunk-75HR3756.js";
10
17
  import {
11
18
  tubeMapFrame,
12
19
  tubeMapNodeAt
13
20
  } from "./chunks/chunk-VZQ4FKLR.js";
21
+ import {
22
+ referenceKnots,
23
+ warpX
24
+ } from "./chunks/chunk-KQFOCDFY.js";
14
25
  import {
15
26
  drawTubeMapGenes,
16
27
  tubeMapGenes
@@ -19,24 +30,19 @@ import "./chunks/chunk-XXT2JCAC.js";
19
30
  import {
20
31
  tubeMapNodeColors
21
32
  } from "./chunks/chunk-FFFQNQUI.js";
22
- import {
23
- referenceKnots,
24
- warpX
25
- } from "./chunks/chunk-KQFOCDFY.js";
26
33
  import {
27
34
  drawTubeMapRuler,
28
35
  referenceBoxes,
29
36
  rulerBoxes,
30
37
  tubeX
31
38
  } from "./chunks/chunk-BPRXQ2SS.js";
32
- import {
33
- connectorAt,
34
- drawTubeMapConnectors,
35
- tubeMapConnectors
36
- } from "./chunks/chunk-YOYLCLIG.js";
37
39
  import {
38
40
  createForceLayoutCache
39
- } from "./chunks/chunk-SKKYLBRA.js";
41
+ } from "./chunks/chunk-RRZMMYBG.js";
42
+ import {
43
+ graphBubbles,
44
+ superbubblesFromGraph
45
+ } from "./chunks/chunk-FUVI4WQP.js";
40
46
  import {
41
47
  bubbleSubgraph
42
48
  } from "./chunks/chunk-VHW7FDHU.js";
@@ -48,17 +54,17 @@ import {
48
54
  } from "./chunks/chunk-BXEPA4KS.js";
49
55
  import {
50
56
  bubbleHalos
51
- } from "./chunks/chunk-ISEI2FH3.js";
57
+ } from "./chunks/chunk-2AWUWGAD.js";
52
58
  import {
53
59
  bubblesFromGraph
54
- } from "./chunks/chunk-4S47XRYA.js";
60
+ } from "./chunks/chunk-GOZYKNQ2.js";
55
61
  import {
56
62
  BUBBLE_KIND_COLORS,
57
63
  BUBBLE_KIND_NAMES,
58
64
  bubbleSegmentIds,
59
65
  classifyBubble
60
- } from "./chunks/chunk-WOO7QYKB.js";
61
- import "./chunks/chunk-MFKORG3F.js";
66
+ } from "./chunks/chunk-XKWD2RY3.js";
67
+ import "./chunks/chunk-FX4RDMDN.js";
62
68
  import {
63
69
  REFERENCE_STRIP_ZONE_PX,
64
70
  drawReferenceStrip,
@@ -113,7 +119,7 @@ import {
113
119
  } from "./chunks/chunk-7XHHVYG7.js";
114
120
  import {
115
121
  figureSvg
116
- } from "./chunks/chunk-TLQ7F2ZT.js";
122
+ } from "./chunks/chunk-3TGUKQWQ.js";
117
123
  import {
118
124
  layoutGeometryInputs
119
125
  } from "./chunks/chunk-LOCJN3BZ.js";
@@ -161,7 +167,7 @@ import {
161
167
  } from "./chunks/chunk-MIW3HYPE.js";
162
168
  import {
163
169
  Canvas2DRenderer
164
- } from "./chunks/chunk-2WNBVB55.js";
170
+ } from "./chunks/chunk-WBCOREDZ.js";
165
171
  import {
166
172
  getDpr
167
173
  } from "./chunks/chunk-4BYTEJGW.js";
@@ -205,7 +211,7 @@ import {
205
211
  import "./chunks/chunk-G2FD7S3C.js";
206
212
  import {
207
213
  version
208
- } from "./chunks/chunk-AMS3MAFP.js";
214
+ } from "./chunks/chunk-UID3QBWH.js";
209
215
  import {
210
216
  axisScaleOf,
211
217
  contains,
@@ -213,7 +219,7 @@ import {
213
219
  screenToLayout,
214
220
  viewportOf,
215
221
  zoomAbout
216
- } from "./chunks/chunk-TL4B342F.js";
222
+ } from "./chunks/chunk-MXDQGA7A.js";
217
223
  import {
218
224
  walkRowLabels,
219
225
  walkRowsExtent
@@ -284,7 +290,7 @@ import {
284
290
  import {
285
291
  FIGURE_DEFAULTS,
286
292
  figureSpecSettings
287
- } from "./chunks/chunk-6VBDMZBZ.js";
293
+ } from "./chunks/chunk-XLCTQHBE.js";
288
294
  import {
289
295
  ENGINE_DEFAULTS,
290
296
  FIT_PADDING,
@@ -297,16 +303,16 @@ import {
297
303
  forceLayout,
298
304
  layoutExtent,
299
305
  loadGraph
300
- } from "./chunks/chunk-5OIVTEF7.js";
306
+ } from "./chunks/chunk-OOXIMURX.js";
301
307
  import "./chunks/chunk-PUG7LXDF.js";
302
308
  import "./chunks/chunk-IGVV37VI.js";
303
- import "./chunks/chunk-OCMBULGN.js";
304
- import "./chunks/chunk-QYBZZI5H.js";
305
- import "./chunks/chunk-CDLPYR5O.js";
306
309
  import {
307
310
  graphFromTables,
308
311
  graphTablesGFA
309
312
  } from "./chunks/chunk-OA7RIMZ2.js";
313
+ import "./chunks/chunk-OCMBULGN.js";
314
+ import "./chunks/chunk-QYBZZI5H.js";
315
+ import "./chunks/chunk-CDLPYR5O.js";
310
316
  import "./chunks/chunk-ES2N6V56.js";
311
317
  import "./chunks/chunk-ST2IBUAN.js";
312
318
  import {
@@ -394,10 +400,12 @@ export {
394
400
  cutsWholeWalks,
395
401
  deletionDrawing,
396
402
  deletionEdges,
403
+ drawLitConnector,
397
404
  drawReferenceStrip,
398
405
  drawTubeMap,
399
406
  drawTubeMapConnectors,
400
407
  drawTubeMapGenes,
408
+ drawTubeMapHighlight,
401
409
  drawTubeMapRuler,
402
410
  drawingBounds,
403
411
  edgeHoverText,
@@ -430,6 +438,7 @@ export {
430
438
  genesOnRow,
431
439
  getDpr,
432
440
  graphBackbone,
441
+ graphBubbles,
433
442
  graphFromTables,
434
443
  graphTablesGFA,
435
444
  haplotypeWanted,
@@ -485,6 +494,7 @@ export {
485
494
  stripGeneGaps,
486
495
  stripMarks,
487
496
  stripRowAt,
497
+ superbubblesFromGraph,
488
498
  svgCanvas,
489
499
  tubeMapConnectors,
490
500
  tubeMapFrame,
@@ -1,13 +1,13 @@
1
1
  import {
2
2
  createForceLayoutCache
3
- } from "../chunks/chunk-SKKYLBRA.js";
4
- import "../chunks/chunk-5OIVTEF7.js";
3
+ } from "../chunks/chunk-RRZMMYBG.js";
4
+ import "../chunks/chunk-OOXIMURX.js";
5
5
  import "../chunks/chunk-PUG7LXDF.js";
6
6
  import "../chunks/chunk-IGVV37VI.js";
7
+ import "../chunks/chunk-OA7RIMZ2.js";
7
8
  import "../chunks/chunk-OCMBULGN.js";
8
9
  import "../chunks/chunk-QYBZZI5H.js";
9
10
  import "../chunks/chunk-CDLPYR5O.js";
10
- import "../chunks/chunk-OA7RIMZ2.js";
11
11
  import "../chunks/chunk-ES2N6V56.js";
12
12
  import "../chunks/chunk-ST2IBUAN.js";
13
13
  import "../chunks/chunk-BPLIXMH7.js";
package/dist/pipeline.js CHANGED
@@ -11,13 +11,13 @@ import {
11
11
  forceLayout,
12
12
  layoutExtent,
13
13
  loadGraph
14
- } from "./chunks/chunk-5OIVTEF7.js";
14
+ } from "./chunks/chunk-OOXIMURX.js";
15
15
  import "./chunks/chunk-PUG7LXDF.js";
16
16
  import "./chunks/chunk-IGVV37VI.js";
17
+ import "./chunks/chunk-OA7RIMZ2.js";
17
18
  import "./chunks/chunk-OCMBULGN.js";
18
19
  import "./chunks/chunk-QYBZZI5H.js";
19
20
  import "./chunks/chunk-CDLPYR5O.js";
20
- import "./chunks/chunk-OA7RIMZ2.js";
21
21
  import "./chunks/chunk-ES2N6V56.js";
22
22
  import "./chunks/chunk-ST2IBUAN.js";
23
23
  import "./chunks/chunk-BPLIXMH7.js";
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  Canvas2DRenderer,
3
3
  arrowheadOutline
4
- } from "../chunks/chunk-2WNBVB55.js";
4
+ } from "../chunks/chunk-WBCOREDZ.js";
5
5
  import "../chunks/chunk-4BYTEJGW.js";
6
6
  import "../chunks/chunk-G2FD7S3C.js";
7
7
  export {
@@ -4,6 +4,7 @@ function recordingCanvas() {
4
4
  const fills = [];
5
5
  const lineWidths = [];
6
6
  const points = [];
7
+ let clears = 0;
7
8
  const at = (x, y) => {
8
9
  points.push({ x, y });
9
10
  };
@@ -27,6 +28,9 @@ function recordingCanvas() {
27
28
  },
28
29
  fillRect: () => {
29
30
  },
31
+ clearRect: () => {
32
+ clears++;
33
+ },
30
34
  stroke: () => {
31
35
  strokes.push(ctx.strokeStyle);
32
36
  lineWidths.push(ctx.lineWidth);
@@ -37,7 +41,14 @@ function recordingCanvas() {
37
41
  };
38
42
  const canvas = document.createElement("canvas");
39
43
  canvas.getContext = () => ctx;
40
- return { canvas, strokes, fills, lineWidths, points };
44
+ return {
45
+ canvas,
46
+ strokes,
47
+ fills,
48
+ lineWidths,
49
+ points,
50
+ clears: () => clears
51
+ };
41
52
  }
42
53
  export {
43
54
  recordingCanvas
@@ -1,10 +1,12 @@
1
1
  import {
2
2
  connectorAt,
3
+ drawLitConnector,
3
4
  drawTubeMapConnectors,
4
5
  tubeMapConnectors
5
- } from "../chunks/chunk-YOYLCLIG.js";
6
+ } from "../chunks/chunk-2ZT7ZF7A.js";
6
7
  export {
7
8
  connectorAt,
9
+ drawLitConnector,
8
10
  drawTubeMapConnectors,
9
11
  tubeMapConnectors
10
12
  };
@@ -1,5 +1,6 @@
1
1
  import {
2
2
  drawTubeMap,
3
+ drawTubeMapHighlight,
3
4
  mismatchOnScreen,
4
5
  mismatchesLegible,
5
6
  parsePath,
@@ -7,12 +8,13 @@ import {
7
8
  tubeMapMismatchAt,
8
9
  tubeMapPicture,
9
10
  tubeMapTrackAt
10
- } from "../chunks/chunk-LLP3FXPM.js";
11
+ } from "../chunks/chunk-75HR3756.js";
11
12
  import "../chunks/chunk-XXT2JCAC.js";
12
13
  import "../chunks/chunk-CWFNEKST.js";
13
14
  import "../chunks/chunk-C44YRP5F.js";
14
15
  export {
15
16
  drawTubeMap,
17
+ drawTubeMapHighlight,
16
18
  mismatchOnScreen,
17
19
  mismatchesLegible,
18
20
  parsePath,
@@ -17,4 +17,6 @@ export interface RouteLabel {
17
17
  at: NodeSegment;
18
18
  text: string;
19
19
  }
20
+ export declare const WHOLE_FRACTION = 0.9;
21
+ export declare function coversGraph(members: number, nodes: number): boolean;
20
22
  export declare function bubbleHalos(graph: Graph, bubbles: MinigraphBubble[], positions: Record<string, NodeSegment[]>, walkLabel?: (name: string) => string, repeats?: readonly RepeatSpan[]): BubbleHalo[];