@jbrowse/bandage-core 9.10.0 → 10.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (74) hide show
  1. package/dist/bubbles/popBubble.js +3 -2
  2. package/dist/bubbles/superbubbles.js +4 -3
  3. package/dist/chunks/{chunk-Q6UIUY6X.js → chunk-33T67FPZ.js} +1 -1
  4. package/dist/chunks/{chunk-TOVOJNT7.js → chunk-3APK25GI.js} +1 -1
  5. package/dist/chunks/{chunk-A6PSWTLX.js → chunk-4QTNXTGW.js} +1 -1
  6. package/dist/chunks/{chunk-5GZEPPEW.js → chunk-BEWLQADP.js} +1 -1
  7. package/dist/chunks/{chunk-2VTM3DHG.js → chunk-CDPYXHVR.js} +1 -1
  8. package/dist/chunks/{chunk-K5NYTPLC.js → chunk-DCJC32QW.js} +1 -1
  9. package/dist/chunks/{chunk-IZI7KIVX.js → chunk-E5UEYZWK.js} +1 -1
  10. package/dist/chunks/{chunk-IGJCTPFB.js → chunk-EMUUNWRU.js} +52 -43
  11. package/dist/chunks/{chunk-PIN7ZMTZ.js → chunk-EU6FBTQF.js} +4 -4
  12. package/dist/chunks/{chunk-LZWSZRUY.js → chunk-FG762CCP.js} +3 -8
  13. package/dist/chunks/{chunk-73RSLGZT.js → chunk-FLFBYSJO.js} +1 -1
  14. package/dist/chunks/{chunk-FUUJ76KD.js → chunk-ICXMWYOA.js} +5 -5
  15. package/dist/chunks/{chunk-CXKZYLYS.js → chunk-IM4SJUPO.js} +12 -22
  16. package/dist/chunks/{chunk-6PYZYBBF.js → chunk-KAN2WTG5.js} +1 -1
  17. package/dist/chunks/{chunk-BDWQQK33.js → chunk-KJYSOHVN.js} +1 -1
  18. package/dist/chunks/{chunk-4IYP43W6.js → chunk-NP356MC2.js} +1 -1
  19. package/dist/chunks/{chunk-TFAFIRZB.js → chunk-OEPCRURR.js} +1 -1
  20. package/dist/chunks/{chunk-PT37VS5B.js → chunk-OOLNLCIO.js} +1 -1
  21. package/dist/chunks/{chunk-OA7RIMZ2.js → chunk-PSMKPSO4.js} +89 -22
  22. package/dist/chunks/{chunk-NGODVSCA.js → chunk-Q6IOQP4J.js} +8 -8
  23. package/dist/chunks/{chunk-LTUWJKHD.js → chunk-Q7LYHGGQ.js} +114 -6
  24. package/dist/chunks/{chunk-MVMP6AGI.js → chunk-QIVPRZ4H.js} +12 -7
  25. package/dist/chunks/{chunk-J7YKQ5YW.js → chunk-QXAB2FLJ.js} +1 -1
  26. package/dist/chunks/chunk-RAEABQNW.js +227 -0
  27. package/dist/chunks/{chunk-XZ2BLAA6.js → chunk-REE4GUDM.js} +1 -1
  28. package/dist/chunks/{chunk-2FLBFVMO.js → chunk-RJXPPYA7.js} +13 -13
  29. package/dist/chunks/{chunk-KYY5363X.js → chunk-VOWI544A.js} +1 -1
  30. package/dist/chunks/{chunk-FJZ2TB46.js → chunk-VZNKA3K2.js} +2 -2
  31. package/dist/chunks/{chunk-HRAU4VTB.js → chunk-W4GZCVUK.js} +6 -6
  32. package/dist/chunks/{chunk-DMH4NL2M.js → chunk-WI7ZHJ27.js} +2 -2
  33. package/dist/cli/figure.js +24 -23
  34. package/dist/cli/fold.js +6 -5
  35. package/dist/figure.js +19 -18
  36. package/dist/figureData.js +20 -19
  37. package/dist/figureSettings.js +7 -6
  38. package/dist/gbzCut.js +3 -2
  39. package/dist/gbzWindow.js +6 -1
  40. package/dist/gfa/gfaConverter.js +3 -2
  41. package/dist/gfa/graphTables.js +2 -1
  42. package/dist/index.js +57 -47
  43. package/dist/layout/forceCache.js +7 -6
  44. package/dist/layout/trimToWindow.js +17 -23
  45. package/dist/layout/tubeMapLayout.js +4 -3
  46. package/dist/layout/walkRowDraw.js +6 -5
  47. package/dist/layout/walkRowLayout.js +4 -3
  48. package/dist/layout/walkRows.js +3 -2
  49. package/dist/layout/walkStrip.js +7 -6
  50. package/dist/layoutModes.js +8 -7
  51. package/dist/pathAnchoring.js +2 -1
  52. package/dist/pathColors.js +3 -2
  53. package/dist/pathVisits.js +8 -0
  54. package/dist/pipeline.js +6 -5
  55. package/dist/referenceRampCss.js +5 -4
  56. package/dist/referenceStrip.js +5 -4
  57. package/dist/renderer/GeometryBuilder.js +4 -3
  58. package/dist/tubeMap/bundle.js +5 -4
  59. package/dist/tubeMap/coarsen.js +15 -13
  60. package/dist/tubeMap/draw.js +4 -3
  61. package/dist/tubeMap/nodeColors.js +5 -4
  62. package/dist/types/gbzWindow.d.ts +15 -1
  63. package/dist/types/gfa/gfaConverter.d.ts +1 -1
  64. package/dist/types/index.d.ts +2 -1
  65. package/dist/types/layout/deletionRoutes.d.ts +1 -1
  66. package/dist/types/pathAnchoring.d.ts +3 -2
  67. package/dist/types/pathVisits.d.ts +64 -0
  68. package/dist/types/types.d.ts +2 -1
  69. package/dist/types/version.d.ts +1 -1
  70. package/dist/version.js +1 -1
  71. package/dist/viewport.js +7 -6
  72. package/dist/walkEncoding.js +5 -4
  73. package/dist/walkHighlight.js +6 -5
  74. package/package.json +1 -1
@@ -4,12 +4,16 @@ import {
4
4
  import {
5
5
  wellKnownSample
6
6
  } from "./chunk-RAKOB6IV.js";
7
+ import {
8
+ gfaTables
9
+ } from "./chunk-G45YY72K.js";
7
10
  import {
8
11
  panSNMatchesPrefix,
9
12
  panSNSample
10
13
  } from "./chunk-BPLIXMH7.js";
11
14
 
12
15
  // src/gbzWindow.ts
16
+ import { isReverse, nodeId } from "@gmod/gbz-base";
13
17
  var NoReferenceSampleError = class extends Error {
14
18
  constructor(anchor, referenceSamples) {
15
19
  super(
@@ -82,13 +86,12 @@ var GBZ_CUT_DEFAULTS = {
82
86
  snarls: "contained",
83
87
  limit: 1e5
84
88
  };
85
- async function cutWindowGFA(db, query, start, end, opts) {
86
- if (!query) {
87
- return "";
88
- }
89
- const subgraphs = await db.getSubgraphs({ ...opts, path: query, start, end, haplotypes: "all" }).catch((error) => {
89
+ async function windowCuts(db, query, start, end, opts) {
90
+ return db.getSubgraphs({ ...opts, path: query, start, end, haplotypes: "all" }).catch((error) => {
90
91
  throw nodeLimitError(error, opts.limit, end - start) ?? error;
91
92
  });
93
+ }
94
+ async function joinedGFA(db, subgraphs) {
92
95
  const paths = await db.paths();
93
96
  return joinCuts(
94
97
  await Promise.all(subgraphs.map((subgraph) => subgraph.toGFA())),
@@ -97,6 +100,109 @@ async function cutWindowGFA(db, query, start, end, opts) {
97
100
  )
98
101
  );
99
102
  }
103
+ async function cutWindowGFA(db, query, start, end, opts) {
104
+ return query ? joinedGFA(db, await windowCuts(db, query, start, end, opts)) : "";
105
+ }
106
+ async function cutWindowTables(db, query, start, end, opts) {
107
+ if (!query) {
108
+ return "";
109
+ }
110
+ const subgraphs = await windowCuts(db, query, start, end, opts);
111
+ if (subgraphs.length === 1) {
112
+ return compactTables(subgraphs[0].toCompactSubgraph());
113
+ }
114
+ const text = await joinedGFA(db, subgraphs);
115
+ return text && gfaTables(text) || text;
116
+ }
117
+ function segmentIndex(ids, names) {
118
+ let low = Infinity;
119
+ let high = -Infinity;
120
+ for (const id of ids) {
121
+ low = Math.min(low, id);
122
+ high = Math.max(high, id);
123
+ }
124
+ const span = high - low + 1;
125
+ const table = ids.length > 0 && span <= 16 * ids.length ? new Int32Array(span).fill(-1) : void 0;
126
+ const extra = /* @__PURE__ */ new Map();
127
+ ids.forEach((id, i) => {
128
+ if (table) {
129
+ table[id - low] = i;
130
+ } else {
131
+ extra.set(id, i);
132
+ }
133
+ });
134
+ return (handle) => {
135
+ const id = nodeId(handle);
136
+ const tabled = table !== void 0 && id >= low && id <= high;
137
+ const i = tabled ? table[id - low] : extra.get(id) ?? -1;
138
+ if (i >= 0) {
139
+ return i;
140
+ }
141
+ if (tabled) {
142
+ table[id - low] = names.length;
143
+ } else {
144
+ extra.set(id, names.length);
145
+ }
146
+ names.push(String(id));
147
+ return names.length - 1;
148
+ };
149
+ }
150
+ var WALK_NAME = /^(.*)\[(\d+)-(\d+)\]$/;
151
+ function compactTables(cut) {
152
+ const names = Array.from(cut.nodeIds, String);
153
+ const indexOf = segmentIndex(cut.nodeIds, names);
154
+ const declared = cut.nodeIds.length;
155
+ const linkCount = cut.edges.length / 2;
156
+ const from = new Int32Array(linkCount);
157
+ const to = new Int32Array(linkCount);
158
+ const strands = new Uint8Array(linkCount);
159
+ for (let k = 0; k < linkCount; k++) {
160
+ const a = cut.edges[2 * k];
161
+ const b = cut.edges[2 * k + 1];
162
+ from[k] = indexOf(a);
163
+ to[k] = indexOf(b);
164
+ strands[k] = (isReverse(a) ? 1 : 0) | (isReverse(b) ? 2 : 0);
165
+ }
166
+ const walks = cut.paths.filter((path) => path.steps.length > 0);
167
+ const offsets = new Int32Array(walks.length + 1);
168
+ walks.forEach((walk, p) => {
169
+ offsets[p + 1] = offsets[p] + walk.steps.length;
170
+ });
171
+ const steps = new Int32Array(offsets[walks.length]);
172
+ const reversed = new Uint8Array(steps.length);
173
+ const starts = new Float64Array(walks.length);
174
+ const ends = new Float64Array(walks.length);
175
+ const walkNames = walks.map((walk, p) => {
176
+ const named = WALK_NAME.exec(walk.name);
177
+ starts[p] = named ? +named[2] : 0;
178
+ ends[p] = named ? +named[3] : -1;
179
+ let at = offsets[p];
180
+ for (const handle of walk.steps) {
181
+ steps[at] = indexOf(handle);
182
+ reversed[at++] = isReverse(handle) ? 1 : 0;
183
+ }
184
+ return named ? named[1] : walk.name;
185
+ });
186
+ return {
187
+ nodes: {
188
+ names,
189
+ lengths: Int32Array.from(cut.nodeSequences, (s) => s.length),
190
+ refs: new Int32Array(declared).fill(-1),
191
+ starts: new Float64Array(declared),
192
+ ranks: new Int32Array(declared),
193
+ refNames: []
194
+ },
195
+ links: { from, to, strands },
196
+ walks: {
197
+ names: walkNames,
198
+ starts,
199
+ ends,
200
+ offsets,
201
+ steps,
202
+ reversed
203
+ }
204
+ };
205
+ }
100
206
 
101
207
  export {
102
208
  NoReferenceSampleError,
@@ -108,5 +214,7 @@ export {
108
214
  referencePathQuery,
109
215
  nodeLimitError,
110
216
  GBZ_CUT_DEFAULTS,
111
- cutWindowGFA
217
+ cutWindowGFA,
218
+ cutWindowTables,
219
+ compactTables
112
220
  };
@@ -1,10 +1,10 @@
1
1
  import {
2
2
  encodedColor,
3
3
  resolveEncoding
4
- } from "./chunk-KYY5363X.js";
4
+ } from "./chunk-VOWI544A.js";
5
5
  import {
6
6
  pathOrigin
7
- } from "./chunk-IGJCTPFB.js";
7
+ } from "./chunk-EMUUNWRU.js";
8
8
  import {
9
9
  panSNContig
10
10
  } from "./chunk-BPLIXMH7.js";
@@ -90,14 +90,19 @@ function reversedNodes(graph, walk) {
90
90
  if (!referencePath || walk.reference) {
91
91
  return { reversed, bp };
92
92
  }
93
- const walkPath = pathOrigin(walk.name).name;
93
+ const visits = graph.pathVisits;
94
+ if (!visits) {
95
+ return { reversed, bp };
96
+ }
97
+ const own = visits.pathIndex(pathOrigin(walk.name).name);
98
+ const theirs = visits.pathIndex(referencePath);
94
99
  const byId = new Map(graph.nodes.map((n) => [n.id, n]));
95
100
  for (const id of walk.progress.keys()) {
96
101
  const node = byId.get(id);
97
- const visits = node ? graph.pathVisits?.get(node.name) : void 0;
98
- const own = visits?.find((v) => v.path === walkPath)?.strand;
99
- const theirs = visits?.find((v) => v.path === referencePath)?.strand;
100
- if (own && theirs && own !== theirs) {
102
+ const slot = node ? visits.slot(node.name) : -1;
103
+ const a = slot < 0 ? -1 : visits.firstBy(slot, own);
104
+ const b = slot < 0 ? -1 : visits.firstBy(slot, theirs);
105
+ if (a >= 0 && b >= 0 && visits.reversed[a] !== visits.reversed[b]) {
101
106
  reversed.add(id);
102
107
  bp += node.length;
103
108
  }
@@ -4,7 +4,7 @@ import {
4
4
  import {
5
5
  pathOrigin,
6
6
  surveyPaths
7
- } from "./chunk-IGJCTPFB.js";
7
+ } from "./chunk-EMUUNWRU.js";
8
8
 
9
9
  // src/gfa/gfaConverter.ts
10
10
  function surveySegments(gfaGraph) {
@@ -0,0 +1,227 @@
1
+ // src/pathVisits.ts
2
+ var PathVisits = class {
3
+ constructor(columns) {
4
+ this.segments = columns.segments;
5
+ this.offsets = columns.offsets;
6
+ this.path = columns.path;
7
+ this.start = columns.start;
8
+ this.reversed = columns.reversed;
9
+ this.paths = columns.paths;
10
+ this.samples = columns.samples;
11
+ this.slots = new Map(this.segments.map((s, i) => [s, i]));
12
+ }
13
+ static from(entries) {
14
+ const builder = new PathVisitsBuilder();
15
+ for (const [segment, visits] of entries) {
16
+ builder.declare(segment);
17
+ for (const v of visits) {
18
+ builder.add(segment, v.path, v.sample, v.start, v.strand === "-");
19
+ }
20
+ }
21
+ return builder.build();
22
+ }
23
+ get size() {
24
+ return this.segments.length;
25
+ }
26
+ // the segment's index into `segments` and `offsets`, -1 when unvisited
27
+ slot(segment) {
28
+ return this.slots.get(segment) ?? -1;
29
+ }
30
+ pathIndex(path) {
31
+ return this.paths.indexOf(path);
32
+ }
33
+ // the first of `slot`'s visits by path `p`, -1 for none
34
+ firstBy(slot, p) {
35
+ for (let i = this.offsets[slot]; i < this.offsets[slot + 1]; i++) {
36
+ if (this.path[i] === p) {
37
+ return i;
38
+ }
39
+ }
40
+ return -1;
41
+ }
42
+ // Paths' steps replayed in walk order against their visits: the k-th call
43
+ // for one path and segment answers that path's k-th visit there, -1 past
44
+ // its last. A walk in pieces lists its pieces in path order, so replaying
45
+ // the pieces in order reads each step's own visit.
46
+ replay() {
47
+ const cursor = /* @__PURE__ */ new Map();
48
+ return (slot, p) => {
49
+ if (slot < 0 || p < 0) {
50
+ return -1;
51
+ }
52
+ const key = slot * this.paths.length + p;
53
+ const end = this.offsets[slot + 1];
54
+ let at = cursor.get(key) ?? this.offsets[slot];
55
+ while (at < end && this.path[at] !== p) {
56
+ at++;
57
+ }
58
+ cursor.set(key, at + 1);
59
+ return at < end ? at : -1;
60
+ };
61
+ }
62
+ // the visits of paths `keepPath` accepts, at segments `keepSegment` does
63
+ filter(keepPath, keepSegment = () => true) {
64
+ const kept = this.paths.map(keepPath);
65
+ const builder = new PathVisitsBuilder();
66
+ this.segments.forEach((segment, s) => {
67
+ if (!keepSegment(segment)) {
68
+ return;
69
+ }
70
+ const slot = builder.declare(segment);
71
+ for (let i = this.offsets[s]; i < this.offsets[s + 1]; i++) {
72
+ const p = this.path[i];
73
+ if (kept[p]) {
74
+ builder.addAt(
75
+ slot,
76
+ builder.pathOf(this.paths[p], this.samples[p]),
77
+ this.start[i],
78
+ this.reversed[i] === 1
79
+ );
80
+ }
81
+ }
82
+ });
83
+ return builder.build();
84
+ }
85
+ strand(i) {
86
+ return this.reversed[i] ? "-" : "+";
87
+ }
88
+ visit(i) {
89
+ const p = this.path[i];
90
+ return {
91
+ path: this.paths[p],
92
+ sample: this.samples[p],
93
+ start: this.start[i],
94
+ strand: this.strand(i)
95
+ };
96
+ }
97
+ visitsAt(slot) {
98
+ const out = [];
99
+ for (let i = this.offsets[slot]; i < this.offsets[slot + 1]; i++) {
100
+ out.push(this.visit(i));
101
+ }
102
+ return out;
103
+ }
104
+ get(segment) {
105
+ const slot = this.slot(segment);
106
+ return slot < 0 ? void 0 : this.visitsAt(slot);
107
+ }
108
+ has(segment) {
109
+ return this.slots.has(segment);
110
+ }
111
+ keys() {
112
+ return this.segments[Symbol.iterator]();
113
+ }
114
+ *values() {
115
+ for (let s = 0; s < this.segments.length; s++) {
116
+ yield this.visitsAt(s);
117
+ }
118
+ }
119
+ *entries() {
120
+ for (let s = 0; s < this.segments.length; s++) {
121
+ yield [this.segments[s], this.visitsAt(s)];
122
+ }
123
+ }
124
+ [Symbol.iterator]() {
125
+ return this.entries();
126
+ }
127
+ };
128
+ var Column = class {
129
+ constructor(data) {
130
+ this.data = data;
131
+ this.length = 0;
132
+ }
133
+ push(value) {
134
+ if (this.length === this.data.length) {
135
+ const grown = new this.data.constructor(
136
+ this.data.length * 2
137
+ );
138
+ grown.set(this.data);
139
+ this.data = grown;
140
+ }
141
+ this.data[this.length++] = value;
142
+ }
143
+ };
144
+ var PathVisitsBuilder = class {
145
+ constructor() {
146
+ this.segments = [];
147
+ this.slots = /* @__PURE__ */ new Map();
148
+ this.paths = [];
149
+ this.samples = [];
150
+ this.pathIndex = /* @__PURE__ */ new Map();
151
+ this.slot = new Column(new Int32Array(1024));
152
+ this.path = new Column(new Int32Array(1024));
153
+ this.start = new Column(new Float64Array(1024));
154
+ this.reversed = new Column(new Uint8Array(1024));
155
+ }
156
+ // a segment's place in iteration order, though it has no visits yet
157
+ declare(segment) {
158
+ let s = this.slots.get(segment);
159
+ if (s === void 0) {
160
+ s = this.segments.length;
161
+ this.slots.set(segment, s);
162
+ this.segments.push(segment);
163
+ }
164
+ return s;
165
+ }
166
+ // a path's index, so a caller adding many of its visits names it once
167
+ pathOf(path, sample) {
168
+ let p = this.pathIndex.get(path);
169
+ if (p === void 0) {
170
+ p = this.paths.length;
171
+ this.pathIndex.set(path, p);
172
+ this.paths.push(path);
173
+ this.samples.push(sample);
174
+ }
175
+ return p;
176
+ }
177
+ add(segment, path, sample, start, reversed) {
178
+ this.addAt(
179
+ this.declare(segment),
180
+ this.pathOf(path, sample),
181
+ start,
182
+ reversed
183
+ );
184
+ }
185
+ addAt(slot, path, start, reversed) {
186
+ this.slot.push(slot);
187
+ this.path.push(path);
188
+ this.start.push(start);
189
+ this.reversed.push(reversed ? 1 : 0);
190
+ }
191
+ build() {
192
+ const n = this.slot.length;
193
+ const segments = this.segments.length;
194
+ const offsets = new Int32Array(segments + 1);
195
+ const slot = this.slot.data;
196
+ for (let i = 0; i < n; i++) {
197
+ offsets[slot[i] + 1]++;
198
+ }
199
+ for (let s = 0; s < segments; s++) {
200
+ offsets[s + 1] += offsets[s];
201
+ }
202
+ const fill = offsets.slice(0, segments);
203
+ const path = new Int32Array(n);
204
+ const start = new Float64Array(n);
205
+ const reversed = new Uint8Array(n);
206
+ for (let i = 0; i < n; i++) {
207
+ const at = fill[slot[i]]++;
208
+ path[at] = this.path.data[i];
209
+ start[at] = this.start.data[i];
210
+ reversed[at] = this.reversed.data[i];
211
+ }
212
+ return new PathVisits({
213
+ segments: this.segments,
214
+ offsets,
215
+ path,
216
+ start,
217
+ reversed,
218
+ paths: this.paths,
219
+ samples: this.samples
220
+ });
221
+ }
222
+ };
223
+
224
+ export {
225
+ PathVisits,
226
+ PathVisitsBuilder
227
+ };
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  pathOrigin
3
- } from "./chunk-IGJCTPFB.js";
3
+ } from "./chunk-EMUUNWRU.js";
4
4
  import {
5
5
  isGenericSample
6
6
  } from "./chunk-BPLIXMH7.js";
@@ -5,23 +5,23 @@ import {
5
5
  stripGeneGaps,
6
6
  walkStripFrame,
7
7
  walkStripLabelsTree
8
- } from "./chunk-DMH4NL2M.js";
8
+ } from "./chunk-WI7ZHJ27.js";
9
9
  import {
10
10
  walkRowsKey,
11
11
  walkRowsKeyTree,
12
12
  walkRowsTree
13
- } from "./chunk-FJZ2TB46.js";
13
+ } from "./chunk-VZNKA3K2.js";
14
14
  import {
15
15
  Canvas2DRenderer
16
16
  } from "./chunk-WBCOREDZ.js";
17
- import {
18
- genePins
19
- } from "./chunk-BUBZ32IC.js";
20
17
  import {
21
18
  EXON_COLOR,
22
19
  exonOutlineTree,
23
20
  exonStretches
24
21
  } from "./chunk-3S3YVOJ7.js";
22
+ import {
23
+ genePins
24
+ } from "./chunk-BUBZ32IC.js";
25
25
  import {
26
26
  geneLabelCandidates
27
27
  } from "./chunk-DRG4236Y.js";
@@ -36,17 +36,17 @@ import {
36
36
  } from "./chunk-LOCJN3BZ.js";
37
37
  import {
38
38
  version
39
- } from "./chunk-2VTM3DHG.js";
39
+ } from "./chunk-CDPYXHVR.js";
40
40
  import {
41
41
  axisScaleOf
42
- } from "./chunk-PT37VS5B.js";
42
+ } from "./chunk-OOLNLCIO.js";
43
43
  import {
44
44
  facetLifts,
45
45
  walkLift
46
- } from "./chunk-MVMP6AGI.js";
46
+ } from "./chunk-QIVPRZ4H.js";
47
47
  import {
48
48
  encodingStops
49
- } from "./chunk-KYY5363X.js";
49
+ } from "./chunk-VOWI544A.js";
50
50
  import {
51
51
  rangeText,
52
52
  walkKey
@@ -54,15 +54,15 @@ import {
54
54
  import {
55
55
  buildGeometry,
56
56
  computeReferenceRamp
57
- } from "./chunk-4IYP43W6.js";
57
+ } from "./chunk-NP356MC2.js";
58
58
  import {
59
59
  walkRowLabels,
60
60
  walkRowsExtent
61
- } from "./chunk-TOVOJNT7.js";
61
+ } from "./chunk-3APK25GI.js";
62
62
  import {
63
63
  pathLegend,
64
64
  walkLabelsOf
65
- } from "./chunk-XZ2BLAA6.js";
65
+ } from "./chunk-REE4GUDM.js";
66
66
  import {
67
67
  nodeInk
68
68
  } from "./chunk-PBENCR5L.js";
@@ -70,7 +70,7 @@ import {
70
70
  FIT_PADDING,
71
71
  drawingBounds,
72
72
  fitTransform
73
- } from "./chunk-HRAU4VTB.js";
73
+ } from "./chunk-W4GZCVUK.js";
74
74
  import {
75
75
  referenceLabel
76
76
  } from "./chunk-RAKOB6IV.js";
@@ -2,7 +2,7 @@ import {
2
2
  REFERENCE_RAMP_ALT_COLOR,
3
3
  REFERENCE_RAMP_MAX_HUE,
4
4
  hslToRgb
5
- } from "./chunk-4IYP43W6.js";
5
+ } from "./chunk-NP356MC2.js";
6
6
  import {
7
7
  packAbgr
8
8
  } from "./chunk-G2FD7S3C.js";
@@ -3,13 +3,13 @@ import {
3
3
  RAMP_GRADIENT_STOPS,
4
4
  rampHueCss,
5
5
  rampStops
6
- } from "./chunk-K5NYTPLC.js";
6
+ } from "./chunk-DCJC32QW.js";
7
7
  import {
8
8
  el
9
9
  } from "./chunk-NNODIW4U.js";
10
10
  import {
11
11
  REFERENCE_RAMP_ALT_CSS
12
- } from "./chunk-4IYP43W6.js";
12
+ } from "./chunk-NP356MC2.js";
13
13
  import {
14
14
  LABEL_CHAR_PX
15
15
  } from "./chunk-AB35TJST.js";
@@ -9,13 +9,10 @@ import {
9
9
  } from "./chunk-PUG7LXDF.js";
10
10
  import {
11
11
  convertGFAToGraph
12
- } from "./chunk-J7YKQ5YW.js";
13
- import {
14
- gfaTables
15
- } from "./chunk-G45YY72K.js";
12
+ } from "./chunk-QXAB2FLJ.js";
16
13
  import {
17
14
  graphFromTables
18
- } from "./chunk-OA7RIMZ2.js";
15
+ } from "./chunk-PSMKPSO4.js";
19
16
  import {
20
17
  parseGFA
21
18
  } from "./chunk-CDLPYR5O.js";
@@ -26,7 +23,10 @@ import {
26
23
  } from "./chunk-JVLURPFW.js";
27
24
  import {
28
25
  anchorGraph
29
- } from "./chunk-IGJCTPFB.js";
26
+ } from "./chunk-EMUUNWRU.js";
27
+ import {
28
+ gfaTables
29
+ } from "./chunk-G45YY72K.js";
30
30
  import {
31
31
  mergeRuns,
32
32
  splitRuns
@@ -2,13 +2,13 @@ import {
2
2
  alongRow,
3
3
  boxesGenes,
4
4
  rowPitch
5
- } from "./chunk-FJZ2TB46.js";
5
+ } from "./chunk-VZNKA3K2.js";
6
6
  import {
7
7
  el
8
8
  } from "./chunk-NNODIW4U.js";
9
9
  import {
10
10
  pathOrigin
11
- } from "./chunk-IGJCTPFB.js";
11
+ } from "./chunk-EMUUNWRU.js";
12
12
  import {
13
13
  LABEL_CHAR_PX
14
14
  } from "./chunk-AB35TJST.js";
@@ -6,18 +6,18 @@ import {
6
6
  } from "../chunks/chunk-BXEPA4KS.js";
7
7
  import {
8
8
  figureSvg
9
- } from "../chunks/chunk-2FLBFVMO.js";
9
+ } from "../chunks/chunk-RJXPPYA7.js";
10
10
  import "../chunks/chunk-47DYCZOK.js";
11
- import "../chunks/chunk-DMH4NL2M.js";
11
+ import "../chunks/chunk-WI7ZHJ27.js";
12
12
  import {
13
13
  genesOnRow,
14
14
  placeRowGenes
15
- } from "../chunks/chunk-FJZ2TB46.js";
15
+ } from "../chunks/chunk-VZNKA3K2.js";
16
16
  import "../chunks/chunk-WBCOREDZ.js";
17
17
  import "../chunks/chunk-4BYTEJGW.js";
18
- import "../chunks/chunk-BUBZ32IC.js";
19
18
  import "../chunks/chunk-3S3YVOJ7.js";
20
- import "../chunks/chunk-K5NYTPLC.js";
19
+ import "../chunks/chunk-BUBZ32IC.js";
20
+ import "../chunks/chunk-DCJC32QW.js";
21
21
  import "../chunks/chunk-DRG4236Y.js";
22
22
  import "../chunks/chunk-FP4H7SFT.js";
23
23
  import "../chunks/chunk-MLSWIMZO.js";
@@ -32,10 +32,10 @@ import "../chunks/chunk-LYJ4US66.js";
32
32
  import {
33
33
  LAYOUT_MODES,
34
34
  layoutModeByValue
35
- } from "../chunks/chunk-FUUJ76KD.js";
36
- import "../chunks/chunk-LOEA5IHZ.js";
37
- import "../chunks/chunk-CXKZYLYS.js";
35
+ } from "../chunks/chunk-ICXMWYOA.js";
36
+ import "../chunks/chunk-IM4SJUPO.js";
38
37
  import "../chunks/chunk-CWFNEKST.js";
38
+ import "../chunks/chunk-LOEA5IHZ.js";
39
39
  import "../chunks/chunk-L3O7AWLI.js";
40
40
  import "../chunks/chunk-TZFWUT2C.js";
41
41
  import "../chunks/chunk-HNQPEMYE.js";
@@ -48,46 +48,47 @@ import {
48
48
  haplotypeIndexBeside,
49
49
  openGbz,
50
50
  parseRegion
51
- } from "../chunks/chunk-73RSLGZT.js";
52
- import "../chunks/chunk-LTUWJKHD.js";
51
+ } from "../chunks/chunk-FLFBYSJO.js";
52
+ import "../chunks/chunk-Q7LYHGGQ.js";
53
53
  import "../chunks/chunk-WSIFAZU7.js";
54
54
  import "../chunks/chunk-LOCJN3BZ.js";
55
- import "../chunks/chunk-2VTM3DHG.js";
56
- import "../chunks/chunk-PT37VS5B.js";
57
- import "../chunks/chunk-MVMP6AGI.js";
58
- import "../chunks/chunk-KYY5363X.js";
55
+ import "../chunks/chunk-CDPYXHVR.js";
56
+ import "../chunks/chunk-OOLNLCIO.js";
57
+ import "../chunks/chunk-QIVPRZ4H.js";
58
+ import "../chunks/chunk-VOWI544A.js";
59
59
  import "../chunks/chunk-2LQ5BWT7.js";
60
- import "../chunks/chunk-4IYP43W6.js";
60
+ import "../chunks/chunk-NP356MC2.js";
61
61
  import "../chunks/chunk-G2FD7S3C.js";
62
62
  import "../chunks/chunk-WFB5TXRA.js";
63
- import "../chunks/chunk-TOVOJNT7.js";
63
+ import "../chunks/chunk-3APK25GI.js";
64
64
  import {
65
65
  filterSamples,
66
66
  walkRows
67
- } from "../chunks/chunk-6PYZYBBF.js";
68
- import "../chunks/chunk-XZ2BLAA6.js";
67
+ } from "../chunks/chunk-KAN2WTG5.js";
68
+ import "../chunks/chunk-REE4GUDM.js";
69
69
  import "../chunks/chunk-PBENCR5L.js";
70
70
  import {
71
71
  engineSettingsOf,
72
72
  forceLayout,
73
73
  loadGraph
74
- } from "../chunks/chunk-HRAU4VTB.js";
74
+ } from "../chunks/chunk-W4GZCVUK.js";
75
75
  import "../chunks/chunk-IGVV37VI.js";
76
76
  import "../chunks/chunk-OPPVSPEF.js";
77
77
  import "../chunks/chunk-PUG7LXDF.js";
78
- import "../chunks/chunk-J7YKQ5YW.js";
79
- import "../chunks/chunk-G45YY72K.js";
80
- import "../chunks/chunk-OA7RIMZ2.js";
78
+ import "../chunks/chunk-QXAB2FLJ.js";
81
79
  import "../chunks/chunk-QYBZZI5H.js";
80
+ import "../chunks/chunk-PSMKPSO4.js";
82
81
  import "../chunks/chunk-CDLPYR5O.js";
83
82
  import "../chunks/chunk-JVLURPFW.js";
84
- import "../chunks/chunk-IGJCTPFB.js";
83
+ import "../chunks/chunk-EMUUNWRU.js";
84
+ import "../chunks/chunk-RAEABQNW.js";
85
85
  import "../chunks/chunk-ES2N6V56.js";
86
86
  import {
87
87
  featuresOnBackbone,
88
88
  graphBackbone,
89
89
  refNameBinding
90
90
  } from "../chunks/chunk-RAKOB6IV.js";
91
+ import "../chunks/chunk-G45YY72K.js";
91
92
  import "../chunks/chunk-BPLIXMH7.js";
92
93
  import "../chunks/chunk-3ZZSX5HN.js";
93
94
  import "../chunks/chunk-AB35TJST.js";