@genome-spy/app 0.82.0 → 0.83.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{agentApi-BFrpf7T9.js → agentApi-AxdD95yY.js} +5534 -5209
- package/dist/agentApi.es.js +2032 -1804
- package/dist/agentShared.es.js +2 -2
- package/dist/{debug-Dqiowucf.js → debug-CI7POTMx.js} +2 -2
- package/dist/{debug-zKHyqg6H.js → debug-DJKug_38.js} +1 -1
- package/dist/index.es.js +152 -151
- package/dist/index.js +449 -405
- package/dist/{metadataChannels-bEgfFn6O.js → metadataChannels-fGQOmJj0.js} +585 -525
- package/dist/schema.json +1498 -81
- package/dist/{viewIdentityRegistry-BWGefhZp.js → viewIdentityRegistry-CcQdL0Z8.js} +1 -1
- package/dist/{viewIdentityRegistry-Dbxu22Sy.js → viewIdentityRegistry-EH5-Noyz.js} +2843 -2783
- package/dist/{viewUtils-DCmz7Bvt.js → viewUtils-Cybv1tu-.js} +2444 -2347
- package/package.json +5 -5
package/dist/index.es.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { n as e, t } from "./rolldown-runtime-DF993M8W.js";
|
|
2
|
-
import { $ as n, $t as r, A as i, An as a, At as o, B as s, Bn as c, Bt as l, C as u, Cn as d, Ct as f, D as p, Dn as m, Dt as h, E as g, En as _, Et as v, F as y, Fn as b, Ft as x, G as S, Gt as C, H as w, Hn as T, Ht as E, I as D, In as O, It as k, J as A, Jt as ee, K as j, Kt as M, L as te, Ln as N, Lt as P, M as ne, Mn as F, Mt as re, N as ie, Nn as ae, Nt as oe, O as se, On as ce, Ot as le, P as ue, Pn as de, Pt as fe, Q as pe, Qt as me, R as he, Rn as ge, Rt as _e, S as ve, Sn as ye, St as be, T as xe, Tn as Se, Tt as Ce, U as we, Ut as Te, V as Ee, Vn as De, Vt as Oe, W as ke, Wt as Ae, X as je, Xt as Me, Y as Ne, Yt as Pe, Z as Fe, Zt as Ie, _ as Le, _n as Re, _t as ze, a as Be, an as Ve, at as He, b as Ue, bn as We, bt as Ge, c as Ke, cn as qe, ct as Je, d as Ye, dn as Xe, dt as Ze, en as Qe, et as $e, f as et, fn as tt, ft as nt, g as rt, gn as it, gt as at, h as ot, hn as st, ht as ct, i as lt, in as ut, it as dt, j as ft, jn as pt, jt as mt, k as ht, kn as gt, kt as _t, l as vt, ln as yt, lt as bt, m as xt, mt as St, n as Ct, nn as wt, nt as Tt, o as Et, on as Dt, ot as Ot, p as kt, pt as At, q as jt, qt as Mt, r as Nt, rn as Pt, rt as Ft, s as It, sn as Lt, st as Rt, tn as zt, tt as Bt, u as Vt, un as Ht, ut as Ut, v as Wt, vn as Gt, vt as Kt, w as qt, wn as Jt, wt as Yt, x as Xt, xn as Zt, xt as Qt, y as $t, yn as en, yt as tn, z as nn, zn as rn, zt as an } from "./agentApi-
|
|
3
|
-
import { $t as on, A as sn,
|
|
2
|
+
import { $ as n, $t as r, A as i, An as a, At as o, B as s, Bn as c, Bt as l, C as u, Cn as d, Ct as f, D as p, Dn as m, Dt as h, E as g, En as _, Et as v, F as y, Fn as b, Ft as x, G as S, Gt as C, H as w, Hn as T, Ht as E, I as D, In as O, It as k, J as A, Jt as ee, K as j, Kt as M, L as te, Ln as N, Lt as P, M as ne, Mn as F, Mt as re, N as ie, Nn as ae, Nt as oe, O as se, On as ce, Ot as le, P as ue, Pn as de, Pt as fe, Q as pe, Qt as me, R as he, Rn as ge, Rt as _e, S as ve, Sn as ye, St as be, T as xe, Tn as Se, Tt as Ce, U as we, Ut as Te, V as Ee, Vn as De, Vt as Oe, W as ke, Wt as Ae, X as je, Xt as Me, Y as Ne, Yt as Pe, Z as Fe, Zt as Ie, _ as Le, _n as Re, _t as ze, a as Be, an as Ve, at as He, b as Ue, bn as We, bt as Ge, c as Ke, cn as qe, ct as Je, d as Ye, dn as Xe, dt as Ze, en as Qe, et as $e, f as et, fn as tt, ft as nt, g as rt, gn as it, gt as at, h as ot, hn as st, ht as ct, i as lt, in as ut, it as dt, j as ft, jn as pt, jt as mt, k as ht, kn as gt, kt as _t, l as vt, ln as yt, lt as bt, m as xt, mt as St, n as Ct, nn as wt, nt as Tt, o as Et, on as Dt, ot as Ot, p as kt, pt as At, q as jt, qt as Mt, r as Nt, rn as Pt, rt as Ft, s as It, sn as Lt, st as Rt, tn as zt, tt as Bt, u as Vt, un as Ht, ut as Ut, v as Wt, vn as Gt, vt as Kt, w as qt, wn as Jt, wt as Yt, x as Xt, xn as Zt, xt as Qt, y as $t, yn as en, yt as tn, z as nn, zn as rn, zt as an } from "./agentApi-AxdD95yY.js";
|
|
3
|
+
import { $t as on, A as sn, Br as cn, Dt as ln, F as un, Gr as dn, Gt as fn, I as pn, J as mn, Jt as hn, Ln as gn, Lr as _n, Lt as vn, N as yn, Ot as bn, Pt as xn, Qt as Sn, Rt as Cn, S as wn, St as Tn, Tn as En, U as Dn, Ut as On, V as kn, Vn as An, Wt as jn, Xt as Mn, Yt as Nn, Zr as Pn, Zt as Fn, _ as In, a as Ln, bt as Rn, c as zn, cn as Bn, d as Vn, f as Hn, g as Un, gr as Wn, k as Gn, l as Kn, mr as qn, n as Jn, nn as Yn, nt as Xn, o as Zn, qr as Qn, qt as $n, r as er, s as tr, sn as nr, tn as rr, tt as ir, v as ar, xt as or, y as sr, yn as cr } from "./viewIdentityRegistry-EH5-Noyz.js";
|
|
4
4
|
//#region ../../node_modules/d3-array/src/array.js
|
|
5
5
|
var lr = Array.prototype, ur = lr.slice;
|
|
6
6
|
lr.map;
|
|
@@ -14,7 +14,7 @@ function dr(e) {
|
|
|
14
14
|
function fr(e, t, n) {
|
|
15
15
|
let r;
|
|
16
16
|
for (;;) {
|
|
17
|
-
let i =
|
|
17
|
+
let i = dn(e, t, n);
|
|
18
18
|
if (i === r || i === 0 || !isFinite(i)) return [e, t];
|
|
19
19
|
i > 0 ? (e = Math.floor(e / i) * i, t = Math.ceil(t / i) * i) : i < 0 && (e = Math.ceil(e * i) / i, t = Math.floor(t * i) / i), r = i;
|
|
20
20
|
}
|
|
@@ -35,8 +35,8 @@ function mr() {
|
|
|
35
35
|
var l = t(c), u = l[0], d = l[1], f = n(c, u, d);
|
|
36
36
|
if (!Array.isArray(f)) {
|
|
37
37
|
let e = d, n = +f;
|
|
38
|
-
if (t === ge && ([u, d] = fr(u, d, n)), f =
|
|
39
|
-
let e =
|
|
38
|
+
if (t === ge && ([u, d] = fr(u, d, n)), f = Qn(u, d, n), f[0] <= u && (s = dn(u, d, n)), f[f.length - 1] >= d) if (e >= d && t === ge) {
|
|
39
|
+
let e = dn(u, d, n);
|
|
40
40
|
isFinite(e) && (e > 0 ? d = (Math.floor(d / e) + 1) * e : e < 0 && (d = (Math.ceil(d * -e) + 1) / -e));
|
|
41
41
|
} else f.pop();
|
|
42
42
|
}
|
|
@@ -53,7 +53,7 @@ function mr() {
|
|
|
53
53
|
g[Math.min(p, e + (f[e] <= o))].push(r[i]);
|
|
54
54
|
}
|
|
55
55
|
}
|
|
56
|
-
} else for (i = 0; i < a; ++i) (o = c[i]) != null && u <= o && o <= d && g[
|
|
56
|
+
} else for (i = 0; i < a; ++i) (o = c[i]) != null && u <= o && o <= d && g[Pn(f, o, 0, p)].push(r[i]);
|
|
57
57
|
return g;
|
|
58
58
|
}
|
|
59
59
|
return r.value = function(t) {
|
|
@@ -3784,10 +3784,10 @@ var il = F`
|
|
|
3784
3784
|
#n;
|
|
3785
3785
|
#r = 0;
|
|
3786
3786
|
constructor() {
|
|
3787
|
-
super(), this.values = [], this.thresholds = [], this.operators = [], this.colors = ul, this.showThresholdNumbers = !1, this.binCount = 40, this.#e = mr().thresholds(this.binCount), this.#t = this.#e([]), this.#n =
|
|
3787
|
+
super(), this.values = [], this.thresholds = [], this.operators = [], this.colors = ul, this.showThresholdNumbers = !1, this.binCount = 40, this.#e = mr().thresholds(this.binCount), this.#t = this.#e([]), this.#n = bn();
|
|
3788
3788
|
}
|
|
3789
3789
|
willUpdate(e) {
|
|
3790
|
-
e.has("binCount") && (this.#e = mr().thresholds(this.binCount)), (e.has("values") || e.has("binCount")) && (this.#t = this.#e(this.values), this.#n =
|
|
3790
|
+
e.has("binCount") && (this.#e = mr().thresholds(this.binCount)), (e.has("values") || e.has("binCount")) && (this.#t = this.#e(this.values), this.#n = bn().domain(this.domain).range([0, 100]));
|
|
3791
3791
|
}
|
|
3792
3792
|
get domain() {
|
|
3793
3793
|
return [this.#t.at(0).x0, this.#t.at(-1).x1];
|
|
@@ -3806,7 +3806,7 @@ var il = F`
|
|
|
3806
3806
|
});
|
|
3807
3807
|
}
|
|
3808
3808
|
#o(e, t, n) {
|
|
3809
|
-
n =
|
|
3809
|
+
n = nr(n, 0, 1), this.dispatchEvent(new ol(e, t, +this.#n.invert(n * 100).toPrecision(3)));
|
|
3810
3810
|
}
|
|
3811
3811
|
#s() {
|
|
3812
3812
|
let e = this.#t, t = this.#n, n = 90 / e.map((e) => e.length).reduce((e, t) => Math.max(e, t), 0), r = [], i = this.thresholds.length == 1 && this.operators[0] == "eq", a = [
|
|
@@ -4138,7 +4138,7 @@ var vl = class extends U {
|
|
|
4138
4138
|
customElements.define("gs-quantitative-attribute-filter-dialog", vl);
|
|
4139
4139
|
function yl(e, t) {
|
|
4140
4140
|
let n = e.scale?.type;
|
|
4141
|
-
|
|
4141
|
+
or(n) ? xl(e, t) : Rn(n) || Tn(n) ? Cl(e, t) : e.type === "identifier" ? bl(e, t) : G("Not implemented (yet).");
|
|
4142
4142
|
}
|
|
4143
4143
|
function bl(e, t) {
|
|
4144
4144
|
Sl(t.getSamples().map((e) => e.id), e, t);
|
|
@@ -4655,7 +4655,7 @@ function Pl(e) {
|
|
|
4655
4655
|
}
|
|
4656
4656
|
//#endregion
|
|
4657
4657
|
//#region src/sampleView/state/actionInfo.js
|
|
4658
|
-
var Fl =
|
|
4658
|
+
var Fl = _n(".4"), Il = {
|
|
4659
4659
|
lt: "<",
|
|
4660
4660
|
lte: "≤",
|
|
4661
4661
|
eq: "=",
|
|
@@ -8726,7 +8726,7 @@ var im = { step: 24 }, am = class extends Mt {
|
|
|
8726
8726
|
type: "nominal",
|
|
8727
8727
|
scale: {
|
|
8728
8728
|
type: "ordinal",
|
|
8729
|
-
domain:
|
|
8729
|
+
domain: cn(500)
|
|
8730
8730
|
},
|
|
8731
8731
|
axis: null
|
|
8732
8732
|
},
|
|
@@ -8949,7 +8949,7 @@ var pm = class {
|
|
|
8949
8949
|
}
|
|
8950
8950
|
setScrollOffset(e) {
|
|
8951
8951
|
let t = Math.max(0, this.#n - this.#c.getHeight());
|
|
8952
|
-
this.#t =
|
|
8952
|
+
this.#t = nr(e, 0, t);
|
|
8953
8953
|
}
|
|
8954
8954
|
getScrollableHeight() {
|
|
8955
8955
|
return this.#n;
|
|
@@ -8997,7 +8997,7 @@ var pm = class {
|
|
|
8997
8997
|
let n = this.getSummaryAt(t);
|
|
8998
8998
|
n && (e = this.#s.summaries[n.index].locSize.location - (n.location.locSize.location - t));
|
|
8999
8999
|
}
|
|
9000
|
-
if (e ? this.#t = e - t : this.#t = (this.#n - i) / 2, this.#n > i) return
|
|
9000
|
+
if (e ? this.#t = e - t : this.#t = (this.#n - i) / 2, this.#n > i) return ir({
|
|
9001
9001
|
...a,
|
|
9002
9002
|
to: 1,
|
|
9003
9003
|
duration: 500,
|
|
@@ -9005,7 +9005,7 @@ var pm = class {
|
|
|
9005
9005
|
});
|
|
9006
9006
|
{
|
|
9007
9007
|
let e = (e) => (1 - (e * 2 - 1) ** 2) * .5;
|
|
9008
|
-
return
|
|
9008
|
+
return ir({
|
|
9009
9009
|
...a,
|
|
9010
9010
|
from: 0,
|
|
9011
9011
|
to: 1,
|
|
@@ -9013,7 +9013,7 @@ var pm = class {
|
|
|
9013
9013
|
easingFunction: e
|
|
9014
9014
|
});
|
|
9015
9015
|
}
|
|
9016
|
-
} else return
|
|
9016
|
+
} else return ir({
|
|
9017
9017
|
...a,
|
|
9018
9018
|
to: 0,
|
|
9019
9019
|
duration: 400,
|
|
@@ -9028,7 +9028,7 @@ var pm = class {
|
|
|
9028
9028
|
if (!t) return [];
|
|
9029
9029
|
let n = t.groups, r = n.map((e) => e.key.depth).reduce((e, t) => Math.max(e, t), 0), i = n.filter((e) => e.key.depth == r), a = this.#c.getSummaryHeight();
|
|
9030
9030
|
e = e.flatten();
|
|
9031
|
-
let o = this.#c.isStickySummaries() && a > 0 ? e.shrink(new
|
|
9031
|
+
let o = this.#c.isStickySummaries() && a > 0 ? e.shrink(new kn(a, 0, 0, 0)) : e;
|
|
9032
9032
|
return [...i.values()].map((t) => ({
|
|
9033
9033
|
coords: e.modify({
|
|
9034
9034
|
y: () => {
|
|
@@ -9170,7 +9170,7 @@ function xm(e, t, n, r, i) {
|
|
|
9170
9170
|
}
|
|
9171
9171
|
function Sm(e, { viewHeight: t = 0, sampleHeight: n = 0, groupSpacing: r = 5, sampleSpacingFactor: i = _m, summaryHeight: a = 0 }) {
|
|
9172
9172
|
if (!t && !n) throw Error("viewHeight or sampleHeight must be provided!");
|
|
9173
|
-
let o = (e) =>
|
|
9173
|
+
let o = (e) => Wn(e), s = e.map((e) => ({
|
|
9174
9174
|
path: e,
|
|
9175
9175
|
sampleGroup: o(e),
|
|
9176
9176
|
samples: o(e).samples
|
|
@@ -9181,7 +9181,7 @@ function Sm(e, { viewHeight: t = 0, sampleHeight: n = 0, groupSpacing: r = 5, sa
|
|
|
9181
9181
|
px: a,
|
|
9182
9182
|
grow: e.length
|
|
9183
9183
|
}), l = [];
|
|
9184
|
-
|
|
9184
|
+
mn(s.map((e) => c(e.samples)), t, { spacing: r }).forEach((e, t) => {
|
|
9185
9185
|
l.push({
|
|
9186
9186
|
key: s[t].path,
|
|
9187
9187
|
locSize: e
|
|
@@ -9190,8 +9190,8 @@ function Sm(e, { viewHeight: t = 0, sampleHeight: n = 0, groupSpacing: r = 5, sa
|
|
|
9190
9190
|
let u = [];
|
|
9191
9191
|
for (let [e, t] of s.entries()) {
|
|
9192
9192
|
let n = { grow: 1 }, r = t.samples;
|
|
9193
|
-
|
|
9194
|
-
let { size: n, location: a } = e, o = n * i * .5 *
|
|
9193
|
+
mn(r.map((e) => n), Math.max(0, l[e].locSize.size - a), { offset: l[e].locSize.location + a }).forEach((e, t) => {
|
|
9194
|
+
let { size: n, location: a } = e, o = n * i * .5 * Bn(15, 22, n);
|
|
9195
9195
|
e.location = a + o, e.size = n - 2 * o, u.push({
|
|
9196
9196
|
key: r[t],
|
|
9197
9197
|
locSize: e
|
|
@@ -9201,7 +9201,7 @@ function Sm(e, { viewHeight: t = 0, sampleHeight: n = 0, groupSpacing: r = 5, sa
|
|
|
9201
9201
|
function* d() {
|
|
9202
9202
|
let e = [];
|
|
9203
9203
|
for (let t of l) {
|
|
9204
|
-
let n = t.key, r =
|
|
9204
|
+
let n = t.key, r = Wn(n);
|
|
9205
9205
|
for (; e.length <= n.length && e.length && n[e.length - 1] != e[e.length - 1].group;) yield e.pop();
|
|
9206
9206
|
for (let n = 0; n < e.length; n++) {
|
|
9207
9207
|
let r = e[n];
|
|
@@ -9274,8 +9274,8 @@ function km(e) {
|
|
|
9274
9274
|
//#endregion
|
|
9275
9275
|
//#region src/sampleView/datumLookup.js
|
|
9276
9276
|
function Am(e, t = e.getCollector()) {
|
|
9277
|
-
let n = e.getDataAccessor("x"), r = e.getDataAccessor("x2"), i = e.getScaleResolution("x")?.getScale()?.type, a = i ?
|
|
9278
|
-
return !t || !n ? () => void 0 : a ? (e, r) => t.facetBatches.get(
|
|
9277
|
+
let n = e.getDataAccessor("x"), r = e.getDataAccessor("x2"), i = e.getScaleResolution("x")?.getScale()?.type, a = i ? or(i) : !1;
|
|
9278
|
+
return !t || !n ? () => void 0 : a ? (e, r) => t.facetBatches.get(qn(e))?.find((e) => r == n(e)) : !a && r ? (e, i) => t.facetBatches.get(qn(e))?.find((e) => i >= n(e) && i < r(e)) : (e, r) => t.facetBatches.get(qn(e))?.find((e) => r == n(e));
|
|
9279
9279
|
}
|
|
9280
9280
|
//#endregion
|
|
9281
9281
|
//#region src/utils/predicates/featureFilter.js
|
|
@@ -9373,7 +9373,7 @@ function Rm(e, t) {
|
|
|
9373
9373
|
i != null && (n.push(i), _ && r.push(t));
|
|
9374
9374
|
};
|
|
9375
9375
|
return (e) => {
|
|
9376
|
-
let [t, n] = h(), r = a.facetBatches.get(
|
|
9376
|
+
let [t, n] = h(), r = a.facetBatches.get(qn(e));
|
|
9377
9377
|
if (!r?.length) return g === "count" || g === "itemCount" ? 0 : void 0;
|
|
9378
9378
|
let i = [], l = [], d = 0;
|
|
9379
9379
|
switch (u(r, o, c, s, t, n, (e, t) => {
|
|
@@ -9418,7 +9418,7 @@ function Hm(e) {
|
|
|
9418
9418
|
}
|
|
9419
9419
|
function Um(e) {
|
|
9420
9420
|
let t = /* @__PURE__ */ new Map();
|
|
9421
|
-
|
|
9421
|
+
sr(e, (e) => {
|
|
9422
9422
|
let n = Hm(e);
|
|
9423
9423
|
n && t.set(n, (t.get(n) ?? 0) + 1);
|
|
9424
9424
|
});
|
|
@@ -9430,13 +9430,13 @@ function Wm(e) {
|
|
|
9430
9430
|
return typeof e == "string" ? e : JSON.stringify(e);
|
|
9431
9431
|
}
|
|
9432
9432
|
function Gm(e, t) {
|
|
9433
|
-
let n =
|
|
9433
|
+
let n = In(e, t);
|
|
9434
9434
|
if (!n) throw Error("Cannot resolve view selector: " + Wm(t));
|
|
9435
9435
|
return n;
|
|
9436
9436
|
}
|
|
9437
9437
|
function Km(e, t) {
|
|
9438
9438
|
let n = [];
|
|
9439
|
-
if (
|
|
9439
|
+
if (sr(e, (e) => {
|
|
9440
9440
|
e.explicitName === t && n.push(e);
|
|
9441
9441
|
}), n.length === 1) return n[0];
|
|
9442
9442
|
throw n.length === 0 ? Error("Cannot find view: " + t) : Error("Multiple views named \"" + t + "\" found. Name imports or use a selector object.");
|
|
@@ -9456,19 +9456,19 @@ function Ym(e, t) {
|
|
|
9456
9456
|
let n = t.explicitName;
|
|
9457
9457
|
if (typeof n != "string" || n.length === 0) return !1;
|
|
9458
9458
|
let r = 0;
|
|
9459
|
-
return
|
|
9459
|
+
return sr(e, (e) => {
|
|
9460
9460
|
e.explicitName === n && (r += 1);
|
|
9461
9461
|
}), r > 1;
|
|
9462
9462
|
}
|
|
9463
9463
|
function Xm(e, t) {
|
|
9464
9464
|
if (!e || typeof e.visit != "function") return !1;
|
|
9465
9465
|
let n = 0;
|
|
9466
|
-
for (let r of
|
|
9466
|
+
for (let r of Ln(e)) r.selector.param === t && (n += 1);
|
|
9467
9467
|
return n > 1;
|
|
9468
9468
|
}
|
|
9469
9469
|
function Zm(e) {
|
|
9470
9470
|
try {
|
|
9471
|
-
return
|
|
9471
|
+
return zn(e);
|
|
9472
9472
|
} catch {
|
|
9473
9473
|
return [];
|
|
9474
9474
|
}
|
|
@@ -9489,7 +9489,7 @@ function Qm(e, t) {
|
|
|
9489
9489
|
}, f = Object.entries(r.getEncoding()).find(([e, t]) => "field" in t && t.field == n.field), p = f?.[0], m = f?.[1];
|
|
9490
9490
|
if (!m && !("aggregation" in n)) throw Error(`Cannot resolve field '${n.field}' in view '${r.name}'`);
|
|
9491
9491
|
if (!m && "aggregation" in n && n.aggregation.op !== "count" && n.aggregation.op !== "itemCount") throw Error(`Aggregation '${n.aggregation.op}' requires a field definition for '${n.field}' in view '${r.name}'`);
|
|
9492
|
-
let h = p &&
|
|
9492
|
+
let h = p && cr(p) ? r.getScaleResolution(p).getScale() : void 0, g = m && "scale" in m && m.scale && typeof m.scale == "object" ? m.scale : void 0, _ = m && "type" in m ? m.type : void 0, y = "aggregation" in n ? "quantitative" : _, b, x;
|
|
9493
9493
|
if ("ensureViewAttributeAvailability" in e) {
|
|
9494
9494
|
let t = e;
|
|
9495
9495
|
b = (e) => t.ensureViewAttributeAvailability(n, e), x = (e) => t.awaitViewAttributeProcessed(n, e);
|
|
@@ -9731,7 +9731,7 @@ var xh = /* @__PURE__ */ "blues.greens.greys.oranges.purples.reds.blueGreen.blue
|
|
|
9731
9731
|
function Sh(e) {
|
|
9732
9732
|
let t = document.createElement("canvas");
|
|
9733
9733
|
t.width = 120, t.height = 14;
|
|
9734
|
-
let n = t.getContext("2d"), r =
|
|
9734
|
+
let n = t.getContext("2d"), r = ln(e);
|
|
9735
9735
|
if (!r) throw Error(`Unknown scheme name: ${e}`);
|
|
9736
9736
|
if (typeof r == "function") {
|
|
9737
9737
|
let e = r, i = t.width / 20;
|
|
@@ -11401,7 +11401,7 @@ function rg(e, t) {
|
|
|
11401
11401
|
function ig(e) {
|
|
11402
11402
|
if (e.view.getEncoding()?.x2) return !0;
|
|
11403
11403
|
let t = e.view.getScaleResolution("x")?.getScale()?.type;
|
|
11404
|
-
return t ?
|
|
11404
|
+
return t ? or(t) : !1;
|
|
11405
11405
|
}
|
|
11406
11406
|
function ag(e) {
|
|
11407
11407
|
return e === "quantitative" ? Yh : qh;
|
|
@@ -11517,8 +11517,8 @@ function _g(e, t) {
|
|
|
11517
11517
|
let n = t.mark.unitView, r = t.datum, i = [];
|
|
11518
11518
|
for (let [e, t] of n.paramRuntime.paramConfigs) {
|
|
11519
11519
|
if (!("select" in t) || t.persist === !1) continue;
|
|
11520
|
-
let n =
|
|
11521
|
-
|
|
11520
|
+
let n = On(t.select);
|
|
11521
|
+
Sn(n) && n.toggle && i.push(e);
|
|
11522
11522
|
}
|
|
11523
11523
|
if (i.length === 0) return { status: "unavailable" };
|
|
11524
11524
|
if (i.length > 1) return {
|
|
@@ -11527,16 +11527,16 @@ function _g(e, t) {
|
|
|
11527
11527
|
};
|
|
11528
11528
|
let a;
|
|
11529
11529
|
try {
|
|
11530
|
-
a =
|
|
11530
|
+
a = er(n.getEncoding());
|
|
11531
11531
|
} catch {
|
|
11532
11532
|
return { status: "unavailable" };
|
|
11533
11533
|
}
|
|
11534
11534
|
if (!a || a.length === 0) return { status: "unavailable" };
|
|
11535
|
-
let o = a.map((e) =>
|
|
11535
|
+
let o = a.map((e) => gn(e)(r));
|
|
11536
11536
|
if (o.some((e) => e == null)) return { status: "unavailable" };
|
|
11537
|
-
let s = i[0], c =
|
|
11537
|
+
let s = i[0], c = tr(n, s);
|
|
11538
11538
|
try {
|
|
11539
|
-
|
|
11539
|
+
Un(e, c);
|
|
11540
11540
|
} catch {
|
|
11541
11541
|
return { status: "unavailable" };
|
|
11542
11542
|
}
|
|
@@ -11653,11 +11653,11 @@ var Eg = Yt({
|
|
|
11653
11653
|
initialState: { entries: {} },
|
|
11654
11654
|
reducers: {
|
|
11655
11655
|
paramChange: (e, t) => {
|
|
11656
|
-
let n =
|
|
11656
|
+
let n = Vn(t.payload.selector);
|
|
11657
11657
|
e.entries[n] = t.payload;
|
|
11658
11658
|
},
|
|
11659
11659
|
expandPointSelection: (e, t) => {
|
|
11660
|
-
let n = t.payload, r =
|
|
11660
|
+
let n = t.payload, r = Vn(n.selector), i;
|
|
11661
11661
|
if ("rule" in n && n.rule) i = { rule: n.rule };
|
|
11662
11662
|
else if ("predicate" in n && n.predicate) i = { predicate: n.predicate };
|
|
11663
11663
|
else throw Error("expandPointSelection requires either 'rule' or 'predicate'.");
|
|
@@ -11677,7 +11677,7 @@ var Eg = Yt({
|
|
|
11677
11677
|
function Dg(e) {
|
|
11678
11678
|
if (Eg.actions.expandPointSelection.match(e) || !Eg.actions.paramChange.match(e)) return null;
|
|
11679
11679
|
let t = e.payload, n = t?.selector;
|
|
11680
|
-
return !n || !Array.isArray(n.scope) || !n.param || t?.value?.type === "pointExpand" ? null :
|
|
11680
|
+
return !n || !Array.isArray(n.scope) || !n.param || t?.value?.type === "pointExpand" ? null : Vn(n);
|
|
11681
11681
|
}
|
|
11682
11682
|
//#endregion
|
|
11683
11683
|
//#region src/state/selectionExpansionMenu.js
|
|
@@ -11742,7 +11742,7 @@ var jg = 60, Mg = "all", Ng = 1e-6, Pg = class {
|
|
|
11742
11742
|
return this.#r("right", e);
|
|
11743
11743
|
}
|
|
11744
11744
|
getHorizontalReserve(e) {
|
|
11745
|
-
return new
|
|
11745
|
+
return new kn(0, this.getRightReserve(e), 0, this.getLeftReserve(e));
|
|
11746
11746
|
}
|
|
11747
11747
|
hasHorizontalReserveChanged(e, t) {
|
|
11748
11748
|
return this.getLeftReserve(e) !== this.getLeftReserve(t) || this.getRightReserve(e) !== this.getRightReserve(t);
|
|
@@ -11889,7 +11889,7 @@ var jg = 60, Mg = "all", Ng = 1e-6, Pg = class {
|
|
|
11889
11889
|
if (!r) throw Error(`No x scale resolution found for view: ${n.name}`);
|
|
11890
11890
|
this.#b(n);
|
|
11891
11891
|
let i = r.getScale();
|
|
11892
|
-
if (
|
|
11892
|
+
if (Rn(i.type) && !or(i.type)) {
|
|
11893
11893
|
let t = this.#x(e);
|
|
11894
11894
|
await this.#S(n, t);
|
|
11895
11895
|
}
|
|
@@ -11973,7 +11973,7 @@ var jg = 60, Mg = "all", Ng = 1e-6, Pg = class {
|
|
|
11973
11973
|
hconcat: [],
|
|
11974
11974
|
spacing: 8,
|
|
11975
11975
|
padding: { right: 8 }
|
|
11976
|
-
}, this, this, "sample-sidebar"),
|
|
11976
|
+
}, this, this, "sample-sidebar"), Hn(this.#n, { skipSubtree: !0 }), this.sampleGroupView = new am(this, this.#n), this.sampleLabelView = new ch(this, this.#n), this.metadataView = new Kp(this, this.#n), this.#n.setChildren([
|
|
11977
11977
|
this.sampleGroupView,
|
|
11978
11978
|
this.sampleLabelView,
|
|
11979
11979
|
this.metadataView
|
|
@@ -11988,7 +11988,7 @@ var jg = 60, Mg = "all", Ng = 1e-6, Pg = class {
|
|
|
11988
11988
|
}, r(this), Ie(this), me(this), await this.#t.syncGuideViews(), await this.#W(), r(this), Ie(this), me(this), await this.#t.summaryViews.syncGuideViews(), await this.sampleGroupView.initializeChildren(), await this.metadataView.initializeChildren(), this.#t.view.addInteractionListener("contextmenu", this.#V.bind(this));
|
|
11989
11989
|
}
|
|
11990
11990
|
getOverhang() {
|
|
11991
|
-
let e = this.#D().px ?? 0, t = this.locationManager.getLocations(), n = this.#t.sampleChromeLayout.getHorizontalReserve(t).add(new
|
|
11991
|
+
let e = this.#D().px ?? 0, t = this.locationManager.getLocations(), n = this.#t.sampleChromeLayout.getHorizontalReserve(t).add(new kn(0, 0, 0, e)), r = this.#O();
|
|
11992
11992
|
return n.add(r.sampleOverhang.getHorizontal()).add(r.sharedVerticalOverhang);
|
|
11993
11993
|
}
|
|
11994
11994
|
prepareLayoutSize(e, t) {
|
|
@@ -12001,7 +12001,7 @@ var jg = 60, Mg = "all", Ng = 1e-6, Pg = class {
|
|
|
12001
12001
|
return this.#n.isConfiguredVisible() ? this.#n.getSize().addPadding(this.#n.getPadding()).width : { px: 0 };
|
|
12002
12002
|
}
|
|
12003
12003
|
#O() {
|
|
12004
|
-
let e = this.#t.getOverhangWithoutYAxes(), t = this.#n.isConfiguredVisible() ? this.#n.getOverhang().getVertical() :
|
|
12004
|
+
let e = this.#t.getOverhangWithoutYAxes(), t = this.#n.isConfiguredVisible() ? this.#n.getOverhang().getVertical() : kn.zero();
|
|
12005
12005
|
return {
|
|
12006
12006
|
sampleOverhang: e,
|
|
12007
12007
|
sidebarVerticalOverhang: t,
|
|
@@ -12011,7 +12011,7 @@ var jg = 60, Mg = "all", Ng = 1e-6, Pg = class {
|
|
|
12011
12011
|
getSize() {
|
|
12012
12012
|
return this._cache("size/size2", () => {
|
|
12013
12013
|
let e = super.getSize(), t = ((e) => e.getSize().addPadding(e.getOverhang()).addPadding(e.getPadding()))(this.#t.view).width;
|
|
12014
|
-
return new
|
|
12014
|
+
return new Dn(t, e.height);
|
|
12015
12015
|
});
|
|
12016
12016
|
}
|
|
12017
12017
|
*[Symbol.iterator]() {
|
|
@@ -12104,7 +12104,7 @@ var jg = 60, Mg = "all", Ng = 1e-6, Pg = class {
|
|
|
12104
12104
|
let a = t.modify({
|
|
12105
12105
|
y: () => {
|
|
12106
12106
|
let e = i.locSize.location, n = t.y + e;
|
|
12107
|
-
return this.#i ? n +
|
|
12107
|
+
return this.#i ? n + nr(-e, 0, i.locSize.size - m) : n;
|
|
12108
12108
|
},
|
|
12109
12109
|
height: m
|
|
12110
12110
|
}).expand(p);
|
|
@@ -12121,7 +12121,7 @@ var jg = 60, Mg = "all", Ng = 1e-6, Pg = class {
|
|
|
12121
12121
|
this.layoutParent || (t = t.shrink(this.getPadding()));
|
|
12122
12122
|
let r = this.#O();
|
|
12123
12123
|
t = t.shrink(r.sampleOverhang.getHorizontal().add(r.sharedVerticalOverhang)), e.pushView(this, t);
|
|
12124
|
-
let i =
|
|
12124
|
+
let i = mn([this.#D(), { grow: 1 }], t.width), a = (e) => t.modify({
|
|
12125
12125
|
x: e.location + t.x,
|
|
12126
12126
|
width: e.size
|
|
12127
12127
|
});
|
|
@@ -12186,10 +12186,10 @@ var jg = 60, Mg = "all", Ng = 1e-6, Pg = class {
|
|
|
12186
12186
|
let e = this.#t.view.getLayoutAncestors();
|
|
12187
12187
|
for (let t of e) for (let [e, n] of t.paramRuntime.paramConfigs) {
|
|
12188
12188
|
if (!("select" in n)) continue;
|
|
12189
|
-
let r =
|
|
12190
|
-
if (!
|
|
12189
|
+
let r = On(n.select);
|
|
12190
|
+
if (!Mn(r) || !r.encodings?.includes("x")) continue;
|
|
12191
12191
|
let i = t.paramRuntime.getValue(e);
|
|
12192
|
-
if (i &&
|
|
12192
|
+
if (i && hn(i)) return {
|
|
12193
12193
|
selection: i,
|
|
12194
12194
|
view: t,
|
|
12195
12195
|
paramName: e,
|
|
@@ -12210,8 +12210,8 @@ var jg = 60, Mg = "all", Ng = 1e-6, Pg = class {
|
|
|
12210
12210
|
#V(e) {
|
|
12211
12211
|
let t = e.uiEvent, n = this.getLayoutAncestors().at(-1), r = this.childCoords.normalizePoint(e.point.x, e.point.y).x, i = this.findSampleForMouseEvent(e), o = this.#t.view, s = o.getScaleResolution("x"), c = s.invertToComplex(r), l = this.#z(), { selectionInterval: u, selectionIntervalComplex: d, selectionIntervalLabel: f } = dg(l, l ? this.#B(l.view, e) : void 0), p;
|
|
12212
12212
|
if (l && l.bookmarkable) try {
|
|
12213
|
-
let e =
|
|
12214
|
-
|
|
12213
|
+
let e = tr(l.view, l.paramName);
|
|
12214
|
+
Un(this, e), p = {
|
|
12215
12215
|
type: "selection",
|
|
12216
12216
|
selector: e
|
|
12217
12217
|
};
|
|
@@ -12344,7 +12344,7 @@ var jg = 60, Mg = "all", Ng = 1e-6, Pg = class {
|
|
|
12344
12344
|
dispose() {
|
|
12345
12345
|
super.dispose(), this.intentExecutor.removeActionAugmenter(this.#u);
|
|
12346
12346
|
}
|
|
12347
|
-
}, Lg = class extends
|
|
12347
|
+
}, Lg = class extends An {
|
|
12348
12348
|
#e;
|
|
12349
12349
|
#t;
|
|
12350
12350
|
#n = 0;
|
|
@@ -12370,9 +12370,9 @@ var jg = 60, Mg = "all", Ng = 1e-6, Pg = class {
|
|
|
12370
12370
|
getPeekState: () => t.locationManager.getPeekState()
|
|
12371
12371
|
});
|
|
12372
12372
|
let a = an(i);
|
|
12373
|
-
a && (this.groupBackground = new Xe(a, t.context, t, e, "sample-group-background-" + n),
|
|
12373
|
+
a && (this.groupBackground = new Xe(a, t.context, t, e, "sample-group-background-" + n), Hn(this.groupBackground, { skipSubtree: !0 }));
|
|
12374
12374
|
let o = l(i);
|
|
12375
|
-
o && (this.groupBackgroundStroke = new Xe(o, t.context, t, e, "sample-group-background-stroke-" + n),
|
|
12375
|
+
o && (this.groupBackgroundStroke = new Xe(o, t.context, t, e, "sample-group-background-stroke-" + n), Hn(this.groupBackgroundStroke, { skipSubtree: !0 })), this.summaryViews = r;
|
|
12376
12376
|
}
|
|
12377
12377
|
allowDuplicateAxes() {
|
|
12378
12378
|
return !0;
|
|
@@ -12384,7 +12384,7 @@ var jg = 60, Mg = "all", Ng = 1e-6, Pg = class {
|
|
|
12384
12384
|
return e === "y" ? "anchor" : super.getAxisLabelClipPolicy(e, t);
|
|
12385
12385
|
}
|
|
12386
12386
|
getOverhangWithoutYAxes() {
|
|
12387
|
-
let e = (e) => C(this.axes[e]), t = new
|
|
12387
|
+
let e = (e) => C(this.axes[e]), t = new kn(0, e("right"), 0, e("left"));
|
|
12388
12388
|
return this.getOverhang().subtract(t);
|
|
12389
12389
|
}
|
|
12390
12390
|
*getChildren() {
|
|
@@ -12882,7 +12882,7 @@ function M_(e) {
|
|
|
12882
12882
|
return e.visit((e) => {
|
|
12883
12883
|
for (let n of ["x", "y"]) {
|
|
12884
12884
|
let r = e.resolutions.scale[n];
|
|
12885
|
-
if (r && r.type == "locus" && r.isZoomable()) return t = r,
|
|
12885
|
+
if (r && r.type == "locus" && r.isZoomable()) return t = r, wn;
|
|
12886
12886
|
}
|
|
12887
12887
|
}), t;
|
|
12888
12888
|
}
|
|
@@ -12896,7 +12896,7 @@ var N_ = {
|
|
|
12896
12896
|
contributors: [],
|
|
12897
12897
|
license: "MIT",
|
|
12898
12898
|
homepage: "https://genomespy.app/",
|
|
12899
|
-
version: "0.
|
|
12899
|
+
version: "0.83.1",
|
|
12900
12900
|
main: "dist/index.js",
|
|
12901
12901
|
module: "dist/index.es.js",
|
|
12902
12902
|
type: "module",
|
|
@@ -12955,7 +12955,7 @@ var N_ = {
|
|
|
12955
12955
|
"@fortawesome/fontawesome-free": "^6.4.2",
|
|
12956
12956
|
"@fortawesome/fontawesome-svg-core": "^6.4.2",
|
|
12957
12957
|
"@fortawesome/free-solid-svg-icons": "^6.4.2",
|
|
12958
|
-
"@genome-spy/core": "^0.
|
|
12958
|
+
"@genome-spy/core": "^0.83.1",
|
|
12959
12959
|
"@reduxjs/toolkit": "^2.11.0",
|
|
12960
12960
|
"d3-color": "^3.1.0",
|
|
12961
12961
|
idb: "^7.1.1",
|
|
@@ -12968,10 +12968,10 @@ var N_ = {
|
|
|
12968
12968
|
zarrita: "^0.6.1"
|
|
12969
12969
|
},
|
|
12970
12970
|
devDependencies: {
|
|
12971
|
-
"@genome-spy/app-agent": "^0.
|
|
12972
|
-
"@genome-spy/inspector": "^0.
|
|
12971
|
+
"@genome-spy/app-agent": "^0.83.1",
|
|
12972
|
+
"@genome-spy/inspector": "^0.83.1"
|
|
12973
12973
|
},
|
|
12974
|
-
gitHead: "
|
|
12974
|
+
gitHead: "f880c82effa9550b5e979b5982770dd909d91b59"
|
|
12975
12975
|
};
|
|
12976
12976
|
//#endregion
|
|
12977
12977
|
//#region src/utils/version.js
|
|
@@ -14768,7 +14768,7 @@ var dv = class {
|
|
|
14768
14768
|
let e = this.#e.genomeSpy.viewRoot;
|
|
14769
14769
|
if (!e) return;
|
|
14770
14770
|
let t = [];
|
|
14771
|
-
|
|
14771
|
+
sr(e, (e) => {
|
|
14772
14772
|
t.push(e);
|
|
14773
14773
|
});
|
|
14774
14774
|
let n = t.filter(hv).map((t) => [...t.getDataAncestors()].filter((t) => t === e || hv(t)).reverse());
|
|
@@ -14867,7 +14867,7 @@ var dv = class {
|
|
|
14867
14867
|
if (e) q_(e);
|
|
14868
14868
|
else throw Error("Cannot upload metadata without SampleView");
|
|
14869
14869
|
}
|
|
14870
|
-
}, pv = (e) => [...e.paramRuntime.paramConfigs.values()].some((e) =>
|
|
14870
|
+
}, pv = (e) => [...e.paramRuntime.paramConfigs.values()].some((e) => Cn(e) && e.bind), mv = (e, t) => {
|
|
14871
14871
|
let n = [];
|
|
14872
14872
|
return t && n.push({
|
|
14873
14873
|
label: "Parameters",
|
|
@@ -19518,8 +19518,8 @@ function mx(e, t, n) {
|
|
|
19518
19518
|
function hx(e, t = {}) {
|
|
19519
19519
|
let n = mx(e), r = new DOMParser().parseFromString(`<!DOCTYPE html><html><body><div>${n}</div></body></html>`, "text/html");
|
|
19520
19520
|
r.normalize(), gx(r.body);
|
|
19521
|
-
for (let e of r.querySelectorAll("a[href]")) e.setAttribute("target", "blank"), e.setAttribute("rel", "noopener noreferrer"), e.setAttribute("href",
|
|
19522
|
-
for (let e of r.querySelectorAll("img[src]")) e.setAttribute("src",
|
|
19521
|
+
for (let e of r.querySelectorAll("a[href]")) e.setAttribute("target", "blank"), e.setAttribute("rel", "noopener noreferrer"), e.setAttribute("href", yn(e.getAttribute("href"), t.baseUrl));
|
|
19522
|
+
for (let e of r.querySelectorAll("img[src]")) e.setAttribute("src", yn(e.getAttribute("src"), t.baseUrl));
|
|
19523
19523
|
let i = r.body.removeChild(r.querySelector("body > div"));
|
|
19524
19524
|
return i.className = "markdown", i;
|
|
19525
19525
|
}
|
|
@@ -20118,7 +20118,7 @@ var Mx = class extends _ {
|
|
|
20118
20118
|
`), t.push(a`<genome-spy-view-visibility></genome-spy-view-visibility>`), this.app.isEmbedded() || t.push(a`
|
|
20119
20119
|
<genome-spy-bookmark-button></genome-spy-bookmark-button>
|
|
20120
20120
|
`);
|
|
20121
|
-
let n = this.app.rootSpec.description ?
|
|
20121
|
+
let n = this.app.rootSpec.description ? qn(this.app.rootSpec.description) : [];
|
|
20122
20122
|
return n.length > 1 && t.push(a`
|
|
20123
20123
|
<button
|
|
20124
20124
|
class="tool-btn"
|
|
@@ -20301,7 +20301,7 @@ var Px = class {
|
|
|
20301
20301
|
//#endregion
|
|
20302
20302
|
//#region ../core/src/utils/kWayMerge.js
|
|
20303
20303
|
function Fx(e, t, n = (e) => +e) {
|
|
20304
|
-
let r = e.length, i = new
|
|
20304
|
+
let r = e.length, i = new Xn(), a = Array(r).fill(0);
|
|
20305
20305
|
for (let [t, r] of e.entries()) r.length && i.push(t, n(r[0]));
|
|
20306
20306
|
let o;
|
|
20307
20307
|
for (; (o = i.pop()) !== void 0;) {
|
|
@@ -20314,7 +20314,7 @@ function Fx(e, t, n = (e) => +e) {
|
|
|
20314
20314
|
}
|
|
20315
20315
|
//#endregion
|
|
20316
20316
|
//#region src/sampleView/mergeFacets.js
|
|
20317
|
-
var Ix = "sampleCount", Lx = class extends
|
|
20317
|
+
var Ix = "sampleCount", Lx = class extends An {
|
|
20318
20318
|
#e = !0;
|
|
20319
20319
|
#t;
|
|
20320
20320
|
constructor(e, t) {
|
|
@@ -20341,7 +20341,7 @@ var Ix = "sampleCount", Lx = class extends mn {
|
|
|
20341
20341
|
initialize() {
|
|
20342
20342
|
this.#t = this.paramRuntime.allocateSetter(Ix, 0, !0);
|
|
20343
20343
|
let e = this.view.getEncoding().x;
|
|
20344
|
-
if (
|
|
20344
|
+
if (En(e)) this.xAccessor = gn(e.field);
|
|
20345
20345
|
else throw Error("Sample summarization requires a FieldDef. This is not a FieldDef: " + JSON.stringify(e));
|
|
20346
20346
|
}
|
|
20347
20347
|
handle(e) {}
|
|
@@ -20356,9 +20356,9 @@ var Ix = "sampleCount", Lx = class extends mn {
|
|
|
20356
20356
|
this.#n && this.#i(this.provenance.getPresentState()[w]), super.complete();
|
|
20357
20357
|
}
|
|
20358
20358
|
#i(e) {
|
|
20359
|
-
let t = [...j(e.rootGroup)].filter((e) => S(
|
|
20359
|
+
let t = [...j(e.rootGroup)].filter((e) => S(Wn(e)));
|
|
20360
20360
|
for (let [e, n] of t.entries()) {
|
|
20361
|
-
let t =
|
|
20361
|
+
let t = Wn(n);
|
|
20362
20362
|
if (S(t)) {
|
|
20363
20363
|
this.beginBatch({
|
|
20364
20364
|
type: "facet",
|
|
@@ -20991,7 +20991,7 @@ function yS(e, t) {
|
|
|
20991
20991
|
if (!Array.isArray(t.keyTuple) || t.keyTuple.length === 0) return { reason: "invalidOriginKeyTuple" };
|
|
20992
20992
|
let r;
|
|
20993
20993
|
try {
|
|
20994
|
-
r =
|
|
20994
|
+
r = er(e.getEncoding());
|
|
20995
20995
|
} catch {
|
|
20996
20996
|
return { reason: "missingEncodingKey" };
|
|
20997
20997
|
}
|
|
@@ -21060,9 +21060,9 @@ var SS = 150, CS = class {
|
|
|
21060
21060
|
this.#o.length = 0, this.#O();
|
|
21061
21061
|
}
|
|
21062
21062
|
#g() {
|
|
21063
|
-
this.#r =
|
|
21063
|
+
this.#r = Ln(this.#e), this.#i.clear(), this.#u.clear();
|
|
21064
21064
|
for (let e of this.#r) {
|
|
21065
|
-
let t =
|
|
21065
|
+
let t = Vn(e.selector);
|
|
21066
21066
|
this.#i.set(t, e), this.#X(e, t);
|
|
21067
21067
|
}
|
|
21068
21068
|
}
|
|
@@ -21085,10 +21085,10 @@ var SS = 150, CS = class {
|
|
|
21085
21085
|
}
|
|
21086
21086
|
#b(e) {
|
|
21087
21087
|
if (this.#a) return;
|
|
21088
|
-
let t =
|
|
21088
|
+
let t = Vn(e.selector);
|
|
21089
21089
|
if (this.#u.has(t)) return;
|
|
21090
21090
|
let n = this.#L(e);
|
|
21091
|
-
if (n === void 0 ||
|
|
21091
|
+
if (n === void 0 || vn(e.param) && this.#Z(e.param, n) && this.#C(e, t)) return;
|
|
21092
21092
|
let r = this.#P(e, n);
|
|
21093
21093
|
if (r) {
|
|
21094
21094
|
if (this.#x(e, n, t)) {
|
|
@@ -21103,18 +21103,18 @@ var SS = 150, CS = class {
|
|
|
21103
21103
|
}
|
|
21104
21104
|
}
|
|
21105
21105
|
#x(e, t, n) {
|
|
21106
|
-
if (!
|
|
21106
|
+
if (!vn(e.param) || !this.#Z(e.param, t)) return !1;
|
|
21107
21107
|
let { past: r, present: i } = this.#t.getState().provenance;
|
|
21108
21108
|
if (r.length === 0) return !1;
|
|
21109
21109
|
let a = i.lastAction;
|
|
21110
21110
|
if (!a || !Eg.actions.paramChange.match(a)) return !1;
|
|
21111
21111
|
let o = a.payload.selector;
|
|
21112
|
-
if (
|
|
21112
|
+
if (Vn(o) !== n) return !1;
|
|
21113
21113
|
let s = r[r.length - 1].paramProvenance.entries[n];
|
|
21114
21114
|
return !s || this.#S(e.param, s.value);
|
|
21115
21115
|
}
|
|
21116
21116
|
#S(e, t) {
|
|
21117
|
-
if (!t || !
|
|
21117
|
+
if (!t || !vn(e)) return !0;
|
|
21118
21118
|
if (t.type === "point") return t.keys.length === 0;
|
|
21119
21119
|
if (t.type === "pointExpand") return !1;
|
|
21120
21120
|
if (t.type === "interval") {
|
|
@@ -21129,7 +21129,7 @@ var SS = 150, CS = class {
|
|
|
21129
21129
|
return !n || this.#S(e.param, n.value);
|
|
21130
21130
|
}
|
|
21131
21131
|
#w(e) {
|
|
21132
|
-
return
|
|
21132
|
+
return vn(e) ? !0 : Cn(e) && !!e.bind;
|
|
21133
21133
|
}
|
|
21134
21134
|
#T(e, t) {
|
|
21135
21135
|
let n = Eg.actions.paramChange({
|
|
@@ -21153,7 +21153,7 @@ var SS = 150, CS = class {
|
|
|
21153
21153
|
this.#m.clear();
|
|
21154
21154
|
}
|
|
21155
21155
|
#k(e) {
|
|
21156
|
-
return
|
|
21156
|
+
return xn(e.param, e.view.paramRuntime);
|
|
21157
21157
|
}
|
|
21158
21158
|
#A(e, t) {
|
|
21159
21159
|
return this.#K(e.param, t), this.#k(e);
|
|
@@ -21168,7 +21168,7 @@ var SS = 150, CS = class {
|
|
|
21168
21168
|
#N(e, t) {
|
|
21169
21169
|
let n;
|
|
21170
21170
|
try {
|
|
21171
|
-
n =
|
|
21171
|
+
n = er(e.view.getEncoding());
|
|
21172
21172
|
} catch (n) {
|
|
21173
21173
|
t === "persist" ? this.#q(e.param, `will not be saved because encoding.key is invalid: ${n}`) : this.#K(e.param, `cannot be restored because encoding.key is invalid: ${n}`);
|
|
21174
21174
|
return;
|
|
@@ -21181,12 +21181,12 @@ var SS = 150, CS = class {
|
|
|
21181
21181
|
}
|
|
21182
21182
|
#P(e, t) {
|
|
21183
21183
|
let n = e.param;
|
|
21184
|
-
if (
|
|
21185
|
-
let r =
|
|
21186
|
-
if (
|
|
21184
|
+
if (vn(n)) {
|
|
21185
|
+
let r = On(n.select);
|
|
21186
|
+
if (Sn(r)) {
|
|
21187
21187
|
let r = this.#N(e, "persist");
|
|
21188
21188
|
if (!r) return;
|
|
21189
|
-
let i =
|
|
21189
|
+
let i = $n(t, r);
|
|
21190
21190
|
if (!i) return;
|
|
21191
21191
|
let a = this.#M(e.view);
|
|
21192
21192
|
if (a && a.completed) try {
|
|
@@ -21201,8 +21201,8 @@ var SS = 150, CS = class {
|
|
|
21201
21201
|
keys: i
|
|
21202
21202
|
};
|
|
21203
21203
|
}
|
|
21204
|
-
if (
|
|
21205
|
-
if (!
|
|
21204
|
+
if (Mn(r)) {
|
|
21205
|
+
if (!Nn(t)) {
|
|
21206
21206
|
this.#q(n, "has no value yet and will not be saved.");
|
|
21207
21207
|
return;
|
|
21208
21208
|
}
|
|
@@ -21210,7 +21210,7 @@ var SS = 150, CS = class {
|
|
|
21210
21210
|
}
|
|
21211
21211
|
throw Error(`Unsupported selection config for parameter "${n.name}".`);
|
|
21212
21212
|
}
|
|
21213
|
-
if (
|
|
21213
|
+
if (Cn(n)) return {
|
|
21214
21214
|
type: "value",
|
|
21215
21215
|
value: t
|
|
21216
21216
|
};
|
|
@@ -21221,7 +21221,7 @@ var SS = 150, CS = class {
|
|
|
21221
21221
|
this.#e.paramRuntime.runInTransaction(() => {
|
|
21222
21222
|
let t = new Set(this.#i.keys()), n = new Set(Object.keys(e));
|
|
21223
21223
|
for (let t of this.#r) {
|
|
21224
|
-
let r =
|
|
21224
|
+
let r = Vn(t.selector);
|
|
21225
21225
|
if (n.delete(r), this.#u.has(r)) continue;
|
|
21226
21226
|
let i = e[r], a = i ? this.#R(t, i) : this.#k(t);
|
|
21227
21227
|
this.#I(t, a) || t.view.paramRuntime.setValue(t.selector.param, a, { animate: !1 });
|
|
@@ -21236,20 +21236,20 @@ var SS = 150, CS = class {
|
|
|
21236
21236
|
}
|
|
21237
21237
|
}
|
|
21238
21238
|
#I(e, t) {
|
|
21239
|
-
return
|
|
21239
|
+
return Cn(e.param) && Object.is(e.view.paramRuntime.getTargetValue(e.selector.param), t);
|
|
21240
21240
|
}
|
|
21241
21241
|
#L(e) {
|
|
21242
21242
|
let t = e.selector.param;
|
|
21243
|
-
return
|
|
21243
|
+
return Cn(e.param) ? e.view.paramRuntime.getTargetValue(t) : e.view.paramRuntime.getValue(t);
|
|
21244
21244
|
}
|
|
21245
21245
|
async whenApplied(e) {
|
|
21246
21246
|
return await Promise.resolve(), await this.#h, this.#e.paramRuntime.whenPropagated(e);
|
|
21247
21247
|
}
|
|
21248
21248
|
#R(e, t) {
|
|
21249
21249
|
let n = e.param, r = t.value;
|
|
21250
|
-
if (
|
|
21251
|
-
let i =
|
|
21252
|
-
if (
|
|
21250
|
+
if (vn(n)) {
|
|
21251
|
+
let i = On(n.select);
|
|
21252
|
+
if (Sn(i)) {
|
|
21253
21253
|
if (r.type === "pointExpand") return this.#z(e, r, i);
|
|
21254
21254
|
if (r.type !== "point") return this.#A(e, "cannot be restored because the bookmark stored a different selection type.");
|
|
21255
21255
|
let t = this.#N(e, "restore");
|
|
@@ -21261,22 +21261,22 @@ var SS = 150, CS = class {
|
|
|
21261
21261
|
if (!o.completed) return this.#V(o), this.#k(e);
|
|
21262
21262
|
let s = i.toggle ? "multi" : "single", c;
|
|
21263
21263
|
try {
|
|
21264
|
-
c =
|
|
21264
|
+
c = rr(s, t, a, (e, t) => o.findDatumByKey(e, t));
|
|
21265
21265
|
} catch (r) {
|
|
21266
21266
|
return String(r).includes("Duplicate key detected") ? this.#K(n, `cannot be restored because encoding.key fields [${t.join(", ")}] are not unique in the current data.`) : this.#K(n, `cannot be restored due to an error: ${r}`), this.#k(e);
|
|
21267
21267
|
}
|
|
21268
21268
|
return c.unresolved.length && this.#K(n, "has some points that could not be resolved. Ensure encoding.key is unique and present in the data."), c.selection;
|
|
21269
21269
|
}
|
|
21270
|
-
if (
|
|
21270
|
+
if (Mn(i)) {
|
|
21271
21271
|
if (r.type !== "interval") return this.#A(e, "cannot be restored because the bookmark stored a different selection type.");
|
|
21272
|
-
let n =
|
|
21272
|
+
let n = jn(i.encodings);
|
|
21273
21273
|
this.#H(e.view, n, r.intervals);
|
|
21274
21274
|
let a = this.#U(t.origin);
|
|
21275
21275
|
return a && this.#H(e.view, n, a), n;
|
|
21276
21276
|
}
|
|
21277
21277
|
return this.#k(e);
|
|
21278
21278
|
}
|
|
21279
|
-
return
|
|
21279
|
+
return Cn(n) ? r.type === "value" ? r.value : this.#j(e, "cannot be restored because the bookmark stored a different value type.") : this.#k(e);
|
|
21280
21280
|
}
|
|
21281
21281
|
#z(e, t, n) {
|
|
21282
21282
|
if (!n.toggle) return this.#K(e.param, "cannot apply expansion because the target selection is not multi-point."), this.#k(e);
|
|
@@ -21293,13 +21293,13 @@ var SS = 150, CS = class {
|
|
|
21293
21293
|
let n = mS(e), a = [];
|
|
21294
21294
|
return r.visitData((e) => {
|
|
21295
21295
|
n(e) && a.push(e);
|
|
21296
|
-
}),
|
|
21296
|
+
}), fn(a);
|
|
21297
21297
|
} catch (t) {
|
|
21298
21298
|
return this.#K(e.param, `cannot apply expansion due to an error: ${t}`), this.#k(e);
|
|
21299
21299
|
}
|
|
21300
21300
|
}
|
|
21301
21301
|
#B(e) {
|
|
21302
|
-
let t = e.origin, n =
|
|
21302
|
+
let t = e.origin, n = In(this.#e, t.view);
|
|
21303
21303
|
if (!n) {
|
|
21304
21304
|
this.#J("the expansion origin view is missing in the current import scope.");
|
|
21305
21305
|
return;
|
|
@@ -21352,7 +21352,7 @@ var SS = 150, CS = class {
|
|
|
21352
21352
|
}
|
|
21353
21353
|
#U(e) {
|
|
21354
21354
|
if (!e || e.type !== "datum" || !e.intervalSources) return;
|
|
21355
|
-
let t =
|
|
21355
|
+
let t = In(this.#e, e.view);
|
|
21356
21356
|
if (!t) {
|
|
21357
21357
|
this.#J("the source view is missing. Using stored coordinates instead.");
|
|
21358
21358
|
return;
|
|
@@ -21377,7 +21377,7 @@ var SS = 150, CS = class {
|
|
|
21377
21377
|
for (let [t, n] of Object.entries(e.intervalSources)) {
|
|
21378
21378
|
let e = n.start, a = n.end ?? n.start;
|
|
21379
21379
|
if (!e || !a) continue;
|
|
21380
|
-
let o =
|
|
21380
|
+
let o = gn(e), s = gn(a);
|
|
21381
21381
|
i[t] = [o(r), s(r)];
|
|
21382
21382
|
}
|
|
21383
21383
|
return i;
|
|
@@ -21402,11 +21402,11 @@ var SS = 150, CS = class {
|
|
|
21402
21402
|
}
|
|
21403
21403
|
#X(e, t) {
|
|
21404
21404
|
let n = e.param;
|
|
21405
|
-
|
|
21405
|
+
vn(n) && Sn(On(n.select)) && (this.#N(e, "persist") || this.#u.add(t));
|
|
21406
21406
|
}
|
|
21407
21407
|
#Z(e, t) {
|
|
21408
|
-
let n =
|
|
21409
|
-
return
|
|
21408
|
+
let n = On(e.select);
|
|
21409
|
+
return Sn(n) ? on(t) ? !t.datum : !Fn(t) || t.data.size === 0 : Mn(n) ? !hn(t) : !1;
|
|
21410
21410
|
}
|
|
21411
21411
|
#Q(e) {
|
|
21412
21412
|
this.#l.has(e) || (this.#l.add(e), this.#s.add(e), !this.#d && (this.#d = !0, queueMicrotask(() => {
|
|
@@ -21464,7 +21464,7 @@ function ES(e, t) {
|
|
|
21464
21464
|
partitionBy: i.partitionBy,
|
|
21465
21465
|
origin: i.origin,
|
|
21466
21466
|
...s
|
|
21467
|
-
} : i.value, l = i.origin, u = IS(
|
|
21467
|
+
} : i.value, l = i.origin, u = IS(Un, t, o), d = u ? u.view : void 0, f = d ? kS(d, t) : null, p = DS(e, d, o, c, l, t);
|
|
21468
21468
|
return {
|
|
21469
21469
|
title: f ? a`${p} in ${f}` : p,
|
|
21470
21470
|
icon: FS(c)
|
|
@@ -21499,7 +21499,7 @@ function DS(e, t, n, r, i, o) {
|
|
|
21499
21499
|
}
|
|
21500
21500
|
function OS(e, t) {
|
|
21501
21501
|
if (!e || e.type !== "datum") return a``;
|
|
21502
|
-
let n = t ? IS(
|
|
21502
|
+
let n = t ? IS(In, t, e.view) : null;
|
|
21503
21503
|
return n ? a` from ${kS(n, t)}` : a``;
|
|
21504
21504
|
}
|
|
21505
21505
|
function kS(e, t) {
|
|
@@ -21588,7 +21588,7 @@ function US(e, t, n, r) {
|
|
|
21588
21588
|
let i = TS.get(e);
|
|
21589
21589
|
if (i?.has(r)) return i.get(r);
|
|
21590
21590
|
if (!t) return;
|
|
21591
|
-
let a = IS(
|
|
21591
|
+
let a = IS(In, t, n.view);
|
|
21592
21592
|
if (!a) return;
|
|
21593
21593
|
let o = yS(a, n);
|
|
21594
21594
|
if (o.reason !== "ok") return;
|
|
@@ -21610,14 +21610,14 @@ function GS(e) {
|
|
|
21610
21610
|
//#endregion
|
|
21611
21611
|
//#region src/viewSelectorConstraints.js
|
|
21612
21612
|
function KS(e) {
|
|
21613
|
-
let t = [...
|
|
21613
|
+
let t = [...ar(e)];
|
|
21614
21614
|
return qS(e, t), JS(e, t), YS(e, t), t;
|
|
21615
21615
|
}
|
|
21616
21616
|
function qS(e, t) {
|
|
21617
|
-
|
|
21617
|
+
sr(e, (e) => {
|
|
21618
21618
|
let n = Wt(e);
|
|
21619
21619
|
if (!(!n || typeof n != "object") && (typeof n.group != "string" || n.group.length === 0)) {
|
|
21620
|
-
let n =
|
|
21620
|
+
let n = zn(e);
|
|
21621
21621
|
t.push({
|
|
21622
21622
|
message: "Configurable visibility group must be a non-empty string in " + QS(n) + " for " + e.getPathString() + ".",
|
|
21623
21623
|
scope: n
|
|
@@ -21627,8 +21627,8 @@ function qS(e, t) {
|
|
|
21627
21627
|
}
|
|
21628
21628
|
function JS(e, t) {
|
|
21629
21629
|
let n = /* @__PURE__ */ new Map(), r = /* @__PURE__ */ new Map();
|
|
21630
|
-
|
|
21631
|
-
let i =
|
|
21630
|
+
sr(e, (e) => {
|
|
21631
|
+
let i = zn(e), a = ZS(i);
|
|
21632
21632
|
if (n.has(a) || (n.set(a, i), r.set(a, /* @__PURE__ */ new Map())), !Ue(e)) return;
|
|
21633
21633
|
let o = e.explicitName;
|
|
21634
21634
|
if (!o) {
|
|
@@ -21656,10 +21656,10 @@ function JS(e, t) {
|
|
|
21656
21656
|
}
|
|
21657
21657
|
function YS(e, t) {
|
|
21658
21658
|
let n = /* @__PURE__ */ new Map(), r = /* @__PURE__ */ new Map();
|
|
21659
|
-
|
|
21660
|
-
let t =
|
|
21659
|
+
sr(e, (e) => {
|
|
21660
|
+
let t = Zn(e), i = t ? t.name : void 0;
|
|
21661
21661
|
if (typeof i != "string" || !i.length || !XS(e)) return;
|
|
21662
|
-
let a =
|
|
21662
|
+
let a = zn(e);
|
|
21663
21663
|
if (!a.length) return;
|
|
21664
21664
|
let o = a.slice(0, a.length - 1), s = ZS(o);
|
|
21665
21665
|
n.has(s) || (n.set(s, o), r.set(s, /* @__PURE__ */ new Map()));
|
|
@@ -21676,8 +21676,8 @@ function YS(e, t) {
|
|
|
21676
21676
|
}
|
|
21677
21677
|
function XS(e) {
|
|
21678
21678
|
let t = !1;
|
|
21679
|
-
return
|
|
21680
|
-
if (Ue(e) && (e.explicitName || $t(e))) return t = !0,
|
|
21679
|
+
return sr(e, (e) => {
|
|
21680
|
+
if (Ue(e) && (e.explicitName || $t(e))) return t = !0, wn;
|
|
21681
21681
|
}), t;
|
|
21682
21682
|
}
|
|
21683
21683
|
function ZS(e) {
|
|
@@ -21836,10 +21836,10 @@ var sC = class {
|
|
|
21836
21836
|
}, this.genomeSpy.viewFactory.addViewType(Om, ((e, t, n, r, i) => new Ig(e, t, n, r, i, this.provenance, this.intentExecutor, Sx(this)))), this.#o();
|
|
21837
21837
|
}
|
|
21838
21838
|
getAgentApi() {
|
|
21839
|
-
return this.#e ||= import("./agentApi-
|
|
21839
|
+
return this.#e ||= import("./agentApi-AxdD95yY.js").then((e) => e.t).then((e) => e.createAgentApi(this)), this.#e;
|
|
21840
21840
|
}
|
|
21841
21841
|
async getDebugModules() {
|
|
21842
|
-
return import("./debug-
|
|
21842
|
+
return import("./debug-DJKug_38.js");
|
|
21843
21843
|
}
|
|
21844
21844
|
#r() {
|
|
21845
21845
|
this.store = Wx(), this.intentExecutor = new Bx(this.store), this.provenance = new Px(this.store), this.intentPipeline = new Gx({
|
|
@@ -21962,7 +21962,7 @@ var sC = class {
|
|
|
21962
21962
|
this.#c(this.store.subscribe(n));
|
|
21963
21963
|
for (let [, e] of this.genomeSpy.getNamedScaleResolutions()) e.isZoomable() && (e.addEventListener("domain", n), this.#c(() => e.removeEventListener("domain", n)));
|
|
21964
21964
|
}
|
|
21965
|
-
let r =
|
|
21965
|
+
let r = qn(this.genomeSpy.spec.description ?? []);
|
|
21966
21966
|
this.isFullPage() && r.length > 0 && (document.title = "GenomeSpy - " + r), this.store.dispatch(Vx.actions.setInitialized());
|
|
21967
21967
|
}
|
|
21968
21968
|
async #l(e) {
|
|
@@ -22063,13 +22063,13 @@ var sC = class {
|
|
|
22063
22063
|
if (!this.genomeSpy?.viewRoot) return;
|
|
22064
22064
|
let e;
|
|
22065
22065
|
return this.genomeSpy.viewRoot.visit((t) => {
|
|
22066
|
-
if (t instanceof Ig) return e = t,
|
|
22066
|
+
if (t instanceof Ig) return e = t, wn;
|
|
22067
22067
|
}), e;
|
|
22068
22068
|
}
|
|
22069
22069
|
};
|
|
22070
22070
|
function cC(e) {
|
|
22071
22071
|
let t = e.bookmarks?.remote;
|
|
22072
|
-
if (t) return un(
|
|
22072
|
+
if (t) return pn(un(e.baseUrl, t.url));
|
|
22073
22073
|
}
|
|
22074
22074
|
function lC(e) {
|
|
22075
22075
|
let t = document.querySelector("head"), n = document.createElement("link");
|
|
@@ -22108,48 +22108,49 @@ function fC(e) {
|
|
|
22108
22108
|
//#endregion
|
|
22109
22109
|
//#region src/index.js
|
|
22110
22110
|
async function pC(e, t, n = {}) {
|
|
22111
|
-
let r;
|
|
22111
|
+
let r = !0, i = () => r, a;
|
|
22112
22112
|
if (De(e)) {
|
|
22113
|
-
if (
|
|
22114
|
-
} else if (e instanceof HTMLElement)
|
|
22113
|
+
if (a = document.querySelector(e), !a) throw Error(`No such element: ${e}`);
|
|
22114
|
+
} else if (e instanceof HTMLElement) a = e;
|
|
22115
22115
|
else throw Error(`Invalid element: ${e}`);
|
|
22116
|
-
let
|
|
22116
|
+
let s, l, u = [];
|
|
22117
22117
|
try {
|
|
22118
22118
|
let e = c(t) ? t : await le(t);
|
|
22119
22119
|
e.baseUrl ??= "", e.padding ??= 10;
|
|
22120
|
-
let { plugins:
|
|
22120
|
+
let { plugins: r = [], ...i } = {
|
|
22121
22121
|
powerPreference: "high-performance",
|
|
22122
22122
|
...n
|
|
22123
22123
|
};
|
|
22124
|
-
|
|
22124
|
+
l = new sC(a, e, i), s = l.genomeSpy, u = await hC(l, r), mC(s, i), await l.launch();
|
|
22125
22125
|
} catch (e) {
|
|
22126
|
-
|
|
22126
|
+
a.innerText = e.toString(), console.error(e);
|
|
22127
22127
|
}
|
|
22128
22128
|
return {
|
|
22129
|
-
views: o(i),
|
|
22130
|
-
datasets: _t(i),
|
|
22131
|
-
debug:
|
|
22129
|
+
views: o(s, i),
|
|
22130
|
+
datasets: _t(s, i),
|
|
22131
|
+
debug: l.debug,
|
|
22132
22132
|
finalize() {
|
|
22133
|
-
|
|
22134
|
-
|
|
22133
|
+
r = !1;
|
|
22134
|
+
let e = u;
|
|
22135
|
+
u = [];
|
|
22135
22136
|
for (let t = e.length - 1; t >= 0; --t) e[t]();
|
|
22136
|
-
for (
|
|
22137
|
+
for (l?.finalize(), s?.destroy(), s = void 0; a.firstChild;) a.firstChild.remove();
|
|
22137
22138
|
},
|
|
22138
22139
|
addEventListener(e, t) {
|
|
22139
|
-
|
|
22140
|
+
s.addEventListener(e, t);
|
|
22140
22141
|
},
|
|
22141
22142
|
removeEventListener(e, t) {
|
|
22142
|
-
|
|
22143
|
+
s.removeEventListener(e, t);
|
|
22143
22144
|
},
|
|
22144
22145
|
getScaleResolutionByName(e) {
|
|
22145
|
-
return
|
|
22146
|
+
return s.getNamedScaleResolutions().get(e);
|
|
22146
22147
|
},
|
|
22147
|
-
getParam:
|
|
22148
|
-
awaitVisibleLazyData:
|
|
22149
|
-
getRenderedBounds:
|
|
22150
|
-
updateNamedData:
|
|
22151
|
-
getLogicalCanvasSize:
|
|
22152
|
-
exportCanvas:
|
|
22148
|
+
getParam: s.getParam.bind(s),
|
|
22149
|
+
awaitVisibleLazyData: s.awaitVisibleLazyData.bind(s),
|
|
22150
|
+
getRenderedBounds: s.getRenderedBounds.bind(s),
|
|
22151
|
+
updateNamedData: s.updateNamedData.bind(s),
|
|
22152
|
+
getLogicalCanvasSize: s.getLogicalCanvasSize.bind(s),
|
|
22153
|
+
exportCanvas: s.exportCanvas.bind(s)
|
|
22153
22154
|
};
|
|
22154
22155
|
}
|
|
22155
22156
|
function mC(e, t) {
|