@genome-spy/app 0.88.1 → 0.90.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 (65) hide show
  1. package/dist/{agentApi-BIpg3JKh.js → agentApi-Z65dw-sD.js} +5976 -6711
  2. package/dist/agentApi.es.js +3580 -4470
  3. package/dist/agentShared.es.js +742 -683
  4. package/dist/{canvas2d-BVQ7-2eJ.js → canvas2d-DiPQvNtZ.js} +122 -109
  5. package/dist/{canvas2d-D7SZK3xv.js → canvas2d-t_N10CeW.js} +114 -101
  6. package/dist/{canvasSizeHelper-7h_8rOcx.js → canvasSizeHelper-foL2YvGL.js} +15 -8
  7. package/dist/{clipOptions-DTMcB_9z.js → clipOptions-B5PibDq3.js} +1610 -1342
  8. package/dist/{clipOptions-BWHr3aTa.js → clipOptions-Cba4I0AO.js} +1872 -1644
  9. package/dist/{componentStyles-FsNmIb22.js → componentStyles-DGtQXvwc.js} +17 -15
  10. package/dist/{debug-CVpoEOWx.js → debug-CVAlrcZt.js} +2 -2
  11. package/dist/{debug-DYAMZZKl.js → debug-DP4WzTNo.js} +2 -2
  12. package/dist/dialog.es.js +4 -3
  13. package/dist/esm-BiqrFjMh.js +443 -0
  14. package/dist/{esm-lwYrRdbg.js → esm-Bv7Frz7C.js} +142 -79
  15. package/dist/{esm-VvpZ9hsq.js → esm-C3A-AuRi.js} +1 -1
  16. package/dist/esm-CvpR1OcU.js +322 -0
  17. package/dist/esm-DFHFX1sH.js +1526 -0
  18. package/dist/esm-Dndm-NaA.js +1193 -0
  19. package/dist/{esm-CcDLRSvC.js → esm-DtNElqRr.js} +64 -63
  20. package/dist/esm-L53qjcYH.js +1155 -0
  21. package/dist/esm-VFJeyk9i.js +249 -0
  22. package/dist/{esm-BdLYkz-m.js → esm-_xCtpDwm.js} +1 -1
  23. package/dist/index.es.js +4203 -3910
  24. package/dist/index.js +971 -482
  25. package/dist/{indexer-CXjZDo2Q.js → indexer-DbFTKGlm.js} +1 -1
  26. package/dist/{indexer-DAH_ruVn.js → indexer-En7gpvLN.js} +1 -1
  27. package/dist/{lit-ByuJ0FJ4.js → lit-CoXp9NFX.js} +12 -10
  28. package/dist/order-BkYCnwD7.js +1062 -0
  29. package/dist/order-R043xTpC.js +1062 -0
  30. package/dist/{parquetRead-Cs2xRrvz.js → parquetRead-0hFIa3Cc.js} +532 -350
  31. package/dist/rasterExport-C_FcNBkC.js +52 -0
  32. package/dist/rasterExport-Z7gs5346.js +52 -0
  33. package/dist/rasterization-_-9JmSas.js +63 -0
  34. package/dist/rectangle-DE98gIxF.js +108 -0
  35. package/dist/{renderCanvas2D-DxturTEW.js → renderCanvas2D-DK1c9TFK.js} +68 -67
  36. package/dist/{renderCanvas2D-DtcJjqpB.js → renderCanvas2D-IM-A9DYG.js} +57 -56
  37. package/dist/schema.json +599 -116
  38. package/dist/{src-DjOlFqSn.js → src-DJtvThVC.js} +3 -5
  39. package/dist/style.css +1 -1
  40. package/dist/{svg-SDJMzL--.js → svg-DW3tfUmm.js} +339 -326
  41. package/dist/{svg-CyrLfa9e.js → svg-PabUdcDi.js} +365 -352
  42. package/dist/{svgRasterizer-f7DJ3UO0.js → svgRasterizer-B6YtWLJs.js} +6 -5
  43. package/dist/{svgRasterizer-mWK7HTkx.js → svgRasterizer-BEVDyyS3.js} +6 -5
  44. package/dist/{vega-scale-DLKCwWRs.js → vega-scale-Byaw1K8O.js} +823 -780
  45. package/dist/{vega-scale-CypF85iS.js → vega-scale-Ctz_wa3z.js} +963 -923
  46. package/dist/{viewIdentityRegistry-Dl-vMN9I.js → viewIdentityRegistry-BW415b3o.js} +1 -1
  47. package/dist/{viewIdentityRegistry-DIDo44XQ.js → viewIdentityRegistry-_F0E7nkA.js} +1 -1
  48. package/dist/{viewSelectors-CymbZyE6.js → viewSelectors-DYz-PhTO.js} +407 -340
  49. package/dist/{viewSelectors-DNiDip5e.js → viewSelectors-KtD-QSN0.js} +349 -282
  50. package/dist/{viewUtils-BrJLIj2o.js → viewUtils-BZGPseMx.js} +2052 -1871
  51. package/dist/{webgl-tZfZ8y3q.js → webgl-BKSGqHaz.js} +2144 -784
  52. package/dist/{webgl-CTJt7jQd.js → webgl-tdKf9SlZ.js} +2386 -1026
  53. package/package.json +5 -5
  54. package/dist/esm-80V4xF_D.js +0 -1098
  55. package/dist/esm-BA6yMcc-.js +0 -1222
  56. package/dist/esm-BdT7qUL-.js +0 -157
  57. package/dist/esm-CfYZhLHN.js +0 -1367
  58. package/dist/esm-D-iG_TIX.js +0 -441
  59. package/dist/esm-JAiZmFIS.js +0 -128
  60. package/dist/order-C5CzA37O.js +0 -918
  61. package/dist/order-DvY7KNcu.js +0 -918
  62. package/dist/rasterExport-BgZ98e6U.js +0 -44
  63. package/dist/rasterExport-DEr8fOLm.js +0 -44
  64. package/dist/rasterization-CFogVB3B.js +0 -50
  65. package/dist/rectangle-DKnrAmKs.js +0 -142
@@ -6,49 +6,46 @@ function e(e) {
6
6
  }
7
7
  return -1;
8
8
  }
9
- function t(t, n, r, i) {
10
- let a = n.length, o = 0;
9
+ function t(t, n, r, i, a = 0, o = n.length) {
10
+ let s = o, c = a;
11
11
  if (t === "GT") {
12
12
  for (let e = 0; e < r; e++) {
13
- let t = o;
14
- for (; o < a && n.charCodeAt(o) !== 9;) o++;
15
- i(n, t, o, e), o++;
13
+ let t = c;
14
+ for (; c < s && n.charCodeAt(c) !== 9;) c++;
15
+ i(n, t, c, e), c++;
16
16
  }
17
17
  return;
18
18
  }
19
- let s = e(t);
20
- if (s !== -1) {
21
- if (s === 0) {
19
+ let l = e(t);
20
+ if (l !== -1) {
21
+ if (l === 0) {
22
22
  for (let e = 0; e < r; e++) {
23
- let t = o;
24
- for (; o < a && n.charCodeAt(o) !== 58 && n.charCodeAt(o) !== 9;) o++;
25
- for (i(n, t, o, e); o < a && n.charCodeAt(o) !== 9;) o++;
26
- o++;
23
+ let t = c;
24
+ for (; c < s && n.charCodeAt(c) !== 58 && n.charCodeAt(c) !== 9;) c++;
25
+ i(n, t, c, e);
26
+ let r = n.indexOf(" ", c);
27
+ c = (r === -1 || r > s ? s : r) + 1;
27
28
  }
28
29
  return;
29
30
  }
30
31
  for (let e = 0; e < r; e++) {
31
- let t = o, r = o;
32
- for (; r < a && n.charCodeAt(r) !== 9;) r++;
33
- let c = 0, l = t;
34
- for (let a = t; a <= r; a++) if (a === r || n.charCodeAt(a) === 58) {
35
- if (c === s) {
36
- i(n, l, a, e);
37
- break;
38
- }
39
- c++, l = a + 1;
32
+ let t = 0, r = c, a = -1, o = -1;
33
+ for (; c < s;) {
34
+ let e = n.charCodeAt(c);
35
+ if (e === 9) break;
36
+ e === 58 && a === -1 && (t === l ? (a = r, o = c) : (t++, r = c + 1)), c++;
40
37
  }
41
- o = r + 1;
38
+ a === -1 && (a = t === l ? r : c, o = c), i(n, a, o, e), c++;
42
39
  }
43
40
  }
44
41
  }
45
42
  //#endregion
46
43
  //#region ../../node_modules/@gmod/vcf/esm/parseGenotypesOnly.js
47
- function n(e, n, r) {
48
- let i = Object.create(null);
49
- return t(e, n, r.length, (e, t, n, a) => {
50
- i[r[a] ?? ""] = e.slice(t, n);
51
- }), i;
44
+ function n(e, n, r, i = 0, a = n.length) {
45
+ let o = Object.create(null);
46
+ return t(e, n, r.length, (e, t, n, i) => {
47
+ o[r[i] ?? ""] = e.slice(t, n);
48
+ }, i, a), o;
52
49
  }
53
50
  //#endregion
54
51
  //#region ../../node_modules/@gmod/vcf/esm/parseInfo.js
@@ -79,9 +76,61 @@ function i(e, t) {
79
76
  }
80
77
  return n;
81
78
  }
79
+ function a(e, t) {
80
+ let n = new Int32Array(t.length).fill(-1), r = 0, i = 0, a = e.length;
81
+ for (let o = 0; o <= a; o++) if (o === a || e.charCodeAt(o) === 58) {
82
+ let a = o - i;
83
+ for (let o = 0; o < t.length; o++) {
84
+ let s = t[o];
85
+ if (n[o] === -1 && s.length === a) {
86
+ let t = !0;
87
+ for (let n = 0; n < a; n++) if (e.charCodeAt(i + n) !== s.charCodeAt(n)) {
88
+ t = !1;
89
+ break;
90
+ }
91
+ t && (n[o] = r);
92
+ }
93
+ }
94
+ r++, i = o + 1;
95
+ }
96
+ return n;
97
+ }
98
+ function o(e, t, n, r, i, o = 0, s = t.length) {
99
+ let c = r.length;
100
+ if (c === 0) return;
101
+ let l = a(e, r), u = -1;
102
+ for (let e = 0; e < c; e++) l[e] > u && (u = l[e]);
103
+ if (u === -1) return;
104
+ let d = new Int32Array(c * 2), f = s, p = o;
105
+ for (let e = 0; e < n; e++) {
106
+ d.fill(-1);
107
+ let n = 0, r = p, a = !1;
108
+ for (; p < f;) {
109
+ let e = t.charCodeAt(p);
110
+ if (e === 9) break;
111
+ if (e === 58) {
112
+ for (let e = 0; e < c; e++) l[e] === n && (d[e * 2] = r, d[e * 2 + 1] = p);
113
+ if (n++, r = p + 1, n > u) {
114
+ a = !0;
115
+ let e = t.indexOf(" ", p);
116
+ p = e === -1 || e > f ? f : e;
117
+ break;
118
+ }
119
+ }
120
+ p++;
121
+ }
122
+ if (!a) for (let e = 0; e < c; e++) l[e] === n && (d[e * 2] = r, d[e * 2 + 1] = p);
123
+ i(t, d, e), p++;
124
+ }
125
+ }
82
126
  //#endregion
83
127
  //#region ../../node_modules/@gmod/vcf/esm/Variant.js
84
- var a = class {
128
+ var s = class {
129
+ formatMeta;
130
+ line;
131
+ restStart;
132
+ restEnd;
133
+ sampleNames;
85
134
  CHROM;
86
135
  POS;
87
136
  ID;
@@ -91,15 +140,22 @@ var a = class {
91
140
  FILTER;
92
141
  INFO;
93
142
  FORMAT;
94
- formatMeta;
95
- rest;
96
- sampleNames;
97
143
  constructor(e, t, n, r, a) {
98
- let o = e.length, s = 0, c = 0;
144
+ let o = e.length;
145
+ for (; o > 0;) {
146
+ let t = e.charCodeAt(o - 1);
147
+ if (t !== 10 && t !== 13) break;
148
+ --o;
149
+ }
150
+ let s = 0, c = 0;
99
151
  for (; s < o && c < 9;) e.charCodeAt(s) === 9 && (c += 1), s += 1;
100
- let l = c === 9 ? s - 1 : s, u = e.slice(0, l).split(" "), d = e.slice(l + 1), [f, p, m, h, g, _, v] = u, y = v === "." ? void 0 : v?.split(";");
152
+ let l = c === 9 ? s - 1 : s, u = e.slice(0, l).split(" "), [d, f, p, m, h, g, _] = u;
101
153
  if (a && !u[7]) throw Error("no INFO field specified, must contain at least a '.' (turn off strict mode to allow)");
102
- this.CHROM = f, this.POS = p === void 0 ? 0 : +p, this.ID = m === "." ? void 0 : m?.split(";"), this.REF = h, this.ALT = g === "." ? void 0 : g?.split(","), this.QUAL = _ === void 0 || _ === "." ? void 0 : +_, this.FILTER = y?.length === 1 && y[0] === "PASS" ? "PASS" : y, this.INFO = u[7] === void 0 || u[7] === "." ? {} : i(u[7], t), this.FORMAT = u[8], this.formatMeta = n, this.rest = d, this.sampleNames = r;
154
+ let v = _ === "." ? void 0 : _?.split(";");
155
+ this.CHROM = d, this.POS = f === void 0 ? 0 : +f, this.ID = p === "." ? void 0 : p?.split(";"), this.REF = m, this.ALT = h === "." ? void 0 : h?.split(","), this.QUAL = g === void 0 || g === "." ? void 0 : +g, this.FILTER = v?.length === 1 && v[0] === "PASS" ? "PASS" : v, this.INFO = u[7] === void 0 || u[7] === "." ? {} : i(u[7], t), this.FORMAT = u[8], this.formatMeta = n, this.line = e, this.restStart = Math.min(l + 1, o), this.restEnd = o, this.sampleNames = r;
156
+ }
157
+ get rest() {
158
+ return this.line.slice(this.restStart, this.restEnd);
103
159
  }
104
160
  SAMPLES() {
105
161
  let e = {}, t = this.FORMAT;
@@ -110,16 +166,17 @@ var a = class {
110
166
  }), a = r.length, o = this.sampleNames.length;
111
167
  for (let t = 0; t < o; t++) {
112
168
  let o = this.sampleNames[t] ?? "", s = {}, c = n[t] ?? "", l = c.length, u = 0, d = 0;
113
- for (let e = 0; e <= l; e++) if (e === l || c[e] === ":") {
114
- let t = r[d] ?? "", n = c.slice(u, e);
169
+ for (let e = 0; e <= l; e++) if (e === l || c.charCodeAt(e) === 58) {
170
+ let t = r[d] ?? "", n = c.slice(u, e), o = i[d];
115
171
  if (n === "" || n === ".") s[t] = void 0;
172
+ else if (!n.includes(",")) s[t] = [o ? +n : n];
116
173
  else {
117
- let e = n.split(","), r = e.length, a = i[d], o = [];
174
+ let e = n.split(","), r = e.length, i = [];
118
175
  for (let t = 0; t < r; t++) {
119
176
  let n = e[t] ?? "";
120
- o.push(n === "." ? void 0 : a ? +n : n);
177
+ i.push(n === "." ? void 0 : o ? +n : n);
121
178
  }
122
- s[t] = o;
179
+ s[t] = i;
123
180
  }
124
181
  if (u = e + 1, d += 1, d >= a) break;
125
182
  }
@@ -129,10 +186,13 @@ var a = class {
129
186
  return e;
130
187
  }
131
188
  GENOTYPES() {
132
- return n(this.FORMAT ?? "", this.rest, this.sampleNames);
189
+ return n(this.FORMAT ?? "", this.line, this.sampleNames, this.restStart, this.restEnd);
133
190
  }
134
191
  processGenotypes(e) {
135
- t(this.FORMAT ?? "", this.rest, this.sampleNames.length, e);
192
+ t(this.FORMAT ?? "", this.line, this.sampleNames.length, e, this.restStart, this.restEnd);
193
+ }
194
+ processFormatFields(e, t) {
195
+ o(this.FORMAT ?? "", this.line, this.sampleNames.length, e, t, this.restStart, this.restEnd);
136
196
  }
137
197
  toJSON() {
138
198
  return {
@@ -150,37 +210,37 @@ var a = class {
150
210
  };
151
211
  //#endregion
152
212
  //#region ../../node_modules/@gmod/vcf/esm/parseMetaString.js
153
- function o(e) {
154
- let t = [], n = [], r = !1, i = !1, a = e.length;
213
+ function c(e) {
214
+ let t = [], n = !1, r = !1, i = 0, a = e.length;
155
215
  for (let o = 0; o < a; o++) {
156
- let a = e[o] ?? "";
157
- a === "\"" ? (r = !r, n.push(a)) : a === "[" ? (i = !0, n.push(a)) : a === "]" ? (i = !1, n.push(a)) : a === "," && !r && !i ? (t.push(n.join("").trim()), n.length = 0) : n.push(a);
216
+ let a = e[o];
217
+ a === "\"" ? n = !n : a === "[" ? r = !0 : a === "]" ? r = !1 : a === "," && !n && !r && (t.push(e.slice(i, o).trim()), i = o + 1);
158
218
  }
159
- return n.length > 0 && t.push(n.join("").trim()), t;
219
+ return i < a && t.push(e.slice(i).trim()), t;
160
220
  }
161
- function s(e, t) {
221
+ function l(e, t) {
162
222
  let n = e.indexOf(t);
163
- return [e.slice(0, n), e.slice(n + 1)];
223
+ return n === -1 ? [e, ""] : [e.slice(0, n), e.slice(n + 1)];
164
224
  }
165
- function c(e) {
166
- let t = l(e), n = t.ID;
225
+ function u(e) {
226
+ let t = d(e), n = t.ID;
167
227
  if (delete t.ID, "Number" in t) {
168
228
  let e = Number(t.Number);
169
229
  Number.isNaN(e) || (t.Number = e);
170
230
  }
171
231
  return [n, t];
172
232
  }
173
- function l(e) {
174
- let t = o(e.slice(1, -1)), n = {};
233
+ function d(e) {
234
+ let t = c(e.slice(1, -1)), n = {};
175
235
  for (let e of t) {
176
- let [t, r] = s(e, "=");
177
- r && r.startsWith("[") && r.endsWith("]") ? n[t] = r.slice(1, -1).split(",").map((e) => e.trim()) : r && r.startsWith("\"") && r.endsWith("\"") ? n[t] = r.slice(1, -1) : n[t] = r;
236
+ let [t, r] = l(e, "=");
237
+ n[t] = r && r.startsWith("[") && r.endsWith("]") ? r.slice(1, -1).split(",").map((e) => e.trim()) : r && r.startsWith("\"") && r.endsWith("\"") ? r.slice(1, -1) : r;
178
238
  }
179
239
  return n;
180
240
  }
181
241
  //#endregion
182
242
  //#region ../../node_modules/@gmod/vcf/esm/vcfReserved.js
183
- var u = {
243
+ var f = {
184
244
  InfoFields: {
185
245
  AA: {
186
246
  Number: 1,
@@ -489,7 +549,20 @@ var u = {
489
549
  "*": { Description: "Represents any possible alternative allele at this location" }
490
550
  },
491
551
  FilterTypes: { PASS: { Description: "Passed all filters" } }
492
- }, d = class {
552
+ }, p = [
553
+ "#CHROM",
554
+ "POS",
555
+ "ID",
556
+ "REF",
557
+ "ALT",
558
+ "QUAL",
559
+ "FILTER",
560
+ "INFO"
561
+ ];
562
+ function m(e) {
563
+ return typeof e == "object" && !!e;
564
+ }
565
+ var h = class {
493
566
  metadata;
494
567
  strict;
495
568
  samples;
@@ -498,30 +571,20 @@ var u = {
498
571
  let n = e.split(/[\r\n]+/).filter(Boolean);
499
572
  if (!n.length) throw Error("no non-empty header lines specified");
500
573
  this.strict = t, this.metadata = {
501
- INFO: { ...u.InfoFields },
502
- FORMAT: { ...u.GenotypeFields },
503
- ALT: { ...u.AltTypes },
504
- FILTER: { ...u.FilterTypes }
574
+ INFO: { ...f.InfoFields },
575
+ FORMAT: { ...f.GenotypeFields },
576
+ ALT: { ...f.AltTypes },
577
+ FILTER: { ...f.FilterTypes }
505
578
  };
506
579
  let r;
507
- for (let e = 0; e < n.length; e++) {
508
- let t = n[e] ?? "";
509
- if (t.startsWith("#")) t.startsWith("##") ? this.parseMetadata(t) : r = t;
510
- else throw Error(`Bad line in header:\n${t}`);
580
+ for (let e of n) {
581
+ if (!e.startsWith("#")) throw Error(`Bad line in header:\n${e}`);
582
+ e.startsWith("##") ? this.parseMetadata(e) : r = e;
511
583
  }
512
584
  if (!r) throw Error("No format line found in header");
513
- let i = r.trim().split(" "), a = i.slice(0, 8), o = [
514
- "#CHROM",
515
- "POS",
516
- "ID",
517
- "REF",
518
- "ALT",
519
- "QUAL",
520
- "FILTER",
521
- "INFO"
522
- ];
585
+ let i = r.trim().split(" ");
523
586
  if (i.length < 8) throw Error(`VCF header missing columns:\n${r}`);
524
- if (a.length !== o.length || !a.every((e, t) => e === o[t])) throw Error(`VCF column headers not correct:\n${r}`);
587
+ if (p.some((e, t) => i[t] !== e)) throw Error(`VCF column headers not correct:\n${r}`);
525
588
  this.samples = i.slice(9);
526
589
  }
527
590
  parseMetadata(e) {
@@ -529,18 +592,18 @@ var u = {
529
592
  if (!t) throw Error(`Line is not a valid metadata line: ${e}`);
530
593
  let n = t[1] ?? "", r = t[2];
531
594
  if (r?.startsWith("<")) {
532
- let e = this.metadata[n], t = e && typeof e == "object" ? e : {}, [i, a] = c(r);
595
+ let e = this.metadata[n], t = e && typeof e == "object" ? e : {}, [i, a] = u(r);
533
596
  typeof i == "string" ? (t[i] = a, this.metadata[n] = t) : this.metadata[n] = a;
534
597
  } else this.metadata[n] = r;
535
598
  }
536
599
  getMetadata(...e) {
537
600
  let t = this.metadata;
538
- for (let n of e) if (typeof t != "object" || !t || (t = t[n], t === void 0)) return;
601
+ for (let n of e) t = m(t) ? t[n] : void 0;
539
602
  return t;
540
603
  }
541
604
  parseLine(e) {
542
- return new a(e, this.metadata.INFO, this.metadata.FORMAT, this.samples, this.strict);
605
+ return new s(e, this.metadata.INFO, this.metadata.FORMAT, this.samples, this.strict);
543
606
  }
544
607
  };
545
608
  //#endregion
546
- export { d as default };
609
+ export { h as default };
@@ -76,7 +76,7 @@ var e = function(e, t, n, r, i) {
76
76
  *[(r = /* @__PURE__ */ new WeakMap(), i = /* @__PURE__ */ new WeakMap(), a = /* @__PURE__ */ new WeakMap(), o = /* @__PURE__ */ new WeakMap(), s = /* @__PURE__ */ new WeakMap(), c = /* @__PURE__ */ new WeakMap(), n = /* @__PURE__ */ new WeakSet(), l = function(e) {
77
77
  if (typeof t(this, c, "f") == "function") for (let [n, r] of e) t(this, c, "f").call(this, n, r.value);
78
78
  }, u = function(e, n) {
79
- return typeof n.expiry == "number" && n.expiry <= Date.now() ? (typeof t(this, c, "f") == "function" && t(this, c, "f").call(this, e, n.value), this.delete(e)) : !1;
79
+ return typeof n.expiry == "number" && n.expiry <= Date.now() && (typeof t(this, c, "f") == "function" && t(this, c, "f").call(this, e, n.value), this.delete(e));
80
80
  }, d = function(e, r) {
81
81
  if (!t(this, n, "m", u).call(this, e, r)) return r.value;
82
82
  }, f = function(e, r) {