@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/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-BFrpf7T9.js";
3
- import { $t as on, A as sn, F as cn, Gt as ln, I as un, Ir as dn, J as fn, Jt as pn, Ln as mn, Lt as hn, Mt as gn, N as _n, Nn as vn, Nr as yn, Pt as bn, Qt as xn, Rt as Sn, S as Cn, St as wn, U as Tn, Ur as En, Ut as Dn, V as On, Vr as kn, Wt as An, Xt as jn, Yt as Mn, Zt as Nn, _ as Pn, a as Fn, c as In, cn as Ln, d as Rn, f as zn, fr as Bn, g as Vn, gt as Hn, ht as Un, jt as Wn, k as Gn, l as Kn, mt as qn, n as Jn, nn as Yn, o as Xn, qr as Zn, qt as Qn, r as $n, s as er, sn as tr, tn as nr, ur as rr, v as ir, vn as ar, wn as or, xt as sr, y as cr } from "./viewIdentityRegistry-Dbxu22Sy.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-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 = kn(e, t, n);
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 = En(u, d, n), f[0] <= u && (s = kn(u, d, n)), f[f.length - 1] >= d) if (e >= d && t === ge) {
39
- let e = kn(u, d, n);
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[Zn(f, o, 0, p)].push(r[i]);
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 = wn();
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 = wn().domain(this.domain).range([0, 100]));
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 = tr(n, 0, 1), this.dispatchEvent(new ol(e, t, +this.#n.invert(n * 100).toPrecision(3)));
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
- Un(n) ? xl(e, t) : qn(n) || Hn(n) ? Cl(e, t) : e.type === "identifier" ? bl(e, t) : G("Not implemented (yet).");
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 = yn(".4"), Il = {
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: dn(500)
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 = tr(e, 0, 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 Wn({
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 Wn({
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 Wn({
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 On(a, 0, 0, 0)) : e;
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) => Bn(e), s = e.map((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
- fn(s.map((e) => c(e.samples)), t, { spacing: r }).forEach((e, t) => {
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
- fn(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 * Ln(15, 22, n);
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 = Bn(n);
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 ? Un(i) : !1;
9278
- return !t || !n ? () => void 0 : a ? (e, r) => t.facetBatches.get(rr(e))?.find((e) => r == n(e)) : !a && r ? (e, i) => t.facetBatches.get(rr(e))?.find((e) => i >= n(e) && i < r(e)) : (e, r) => t.facetBatches.get(rr(e))?.find((e) => r == n(e));
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(rr(e));
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
- cr(e, (e) => {
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 = Pn(e, t);
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 (cr(e, (e) => {
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 cr(e, (e) => {
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 Fn(e)) r.selector.param === t && (n += 1);
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 In(e);
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 && ar(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;
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 = sr(e);
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 ? Un(t) : !1;
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 = Dn(t.select);
11521
- xn(n) && n.toggle && i.push(e);
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 = $n(n.getEncoding());
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) => vn(e)(r));
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 = er(n, s);
11537
+ let s = i[0], c = tr(n, s);
11538
11538
  try {
11539
- Vn(e, c);
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 = Rn(t.payload.selector);
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 = Rn(n.selector), i;
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 : Rn(n);
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 On(0, this.getRightReserve(e), 0, this.getLeftReserve(e));
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 (qn(i.type) && !Un(i.type)) {
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"), zn(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([
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 On(0, 0, 0, e)), r = this.#O();
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() : On.zero();
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 Tn(t, e.height);
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 + tr(-e, 0, i.locSize.size - m) : 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 = fn([this.#D(), { grow: 1 }], t.width), a = (e) => t.modify({
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 = Dn(n.select);
12190
- if (!jn(r) || !r.encodings?.includes("x")) continue;
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 && pn(i)) return {
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 = er(l.view, l.paramName);
12214
- Vn(this, e), p = {
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 mn {
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), zn(this.groupBackground, { skipSubtree: !0 }));
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), zn(this.groupBackgroundStroke, { skipSubtree: !0 })), this.summaryViews = r;
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 On(0, e("right"), 0, e("left"));
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, Cn;
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.82.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.82.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.82.0",
12972
- "@genome-spy/inspector": "^0.82.0"
12971
+ "@genome-spy/app-agent": "^0.83.1",
12972
+ "@genome-spy/inspector": "^0.83.1"
12973
12973
  },
12974
- gitHead: "d2e9bd71140f0d27dbe2e2112f323157e626f026"
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
- cr(e, (e) => {
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) => Sn(e) && e.bind), mv = (e, t) => {
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", _n(e.getAttribute("href"), t.baseUrl));
19522
- for (let e of r.querySelectorAll("img[src]")) e.setAttribute("src", _n(e.getAttribute("src"), t.baseUrl));
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 ? rr(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 gn(), a = Array(r).fill(0);
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 mn {
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 (or(e)) this.xAccessor = vn(e.field);
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(Bn(e)));
20359
+ let t = [...j(e.rootGroup)].filter((e) => S(Wn(e)));
20360
20360
  for (let [e, n] of t.entries()) {
20361
- let t = Bn(n);
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 = $n(e.getEncoding());
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 = Fn(this.#e), this.#i.clear(), this.#u.clear();
21063
+ this.#r = Ln(this.#e), this.#i.clear(), this.#u.clear();
21064
21064
  for (let e of this.#r) {
21065
- let t = Rn(e.selector);
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 = Rn(e.selector);
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 || hn(e.param) && this.#Z(e.param, n) && this.#C(e, t)) return;
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 (!hn(e.param) || !this.#Z(e.param, t)) return !1;
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 (Rn(o) !== n) return !1;
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 || !hn(e)) return !0;
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 hn(e) ? !0 : Sn(e) && !!e.bind;
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 bn(e.param, e.view.paramRuntime);
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 = $n(e.view.getEncoding());
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 (hn(n)) {
21185
- let r = Dn(n.select);
21186
- if (xn(r)) {
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 = Qn(t, r);
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 (jn(r)) {
21205
- if (!Mn(t)) {
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 (Sn(n)) return {
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 = Rn(t.selector);
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 Sn(e.param) && Object.is(e.view.paramRuntime.getTargetValue(e.selector.param), t);
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 Sn(e.param) ? e.view.paramRuntime.getTargetValue(t) : e.view.paramRuntime.getValue(t);
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 (hn(n)) {
21251
- let i = Dn(n.select);
21252
- if (xn(i)) {
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 = nr(s, t, a, (e, t) => o.findDatumByKey(e, t));
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 (jn(i)) {
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 = An(i.encodings);
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 Sn(n) ? r.type === "value" ? r.value : this.#j(e, "cannot be restored because the bookmark stored a different value type.") : this.#k(e);
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
- }), ln(a);
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 = Pn(this.#e, t.view);
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 = Pn(this.#e, e.view);
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 = vn(e), s = vn(a);
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
- hn(n) && xn(Dn(n.select)) && (this.#N(e, "persist") || this.#u.add(t));
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 = Dn(e.select);
21409
- return xn(n) ? on(t) ? !t.datum : !Nn(t) || t.data.size === 0 : jn(n) ? !pn(t) : !1;
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(Vn, t, o), d = u ? u.view : void 0, f = d ? kS(d, t) : null, p = DS(e, d, o, c, l, t);
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(Pn, t, e.view) : null;
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(Pn, t, n.view);
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 = [...ir(e)];
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
- cr(e, (e) => {
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 = In(e);
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
- cr(e, (e) => {
21631
- let i = In(e), a = ZS(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
- cr(e, (e) => {
21660
- let t = Xn(e), i = t ? t.name : void 0;
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 = In(e);
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 cr(e, (e) => {
21680
- if (Ue(e) && (e.explicitName || $t(e))) return t = !0, Cn;
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-BFrpf7T9.js").then((e) => e.t).then((e) => e.createAgentApi(this)), this.#e;
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-zKHyqg6H.js");
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 = rr(this.genomeSpy.spec.description ?? []);
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, Cn;
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(cn(e.baseUrl, t.url));
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 (r = document.querySelector(e), !r) throw Error(`No such element: ${e}`);
22114
- } else if (e instanceof HTMLElement) r = e;
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 i, a, s = [];
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: o = [], ...l } = {
22120
+ let { plugins: r = [], ...i } = {
22121
22121
  powerPreference: "high-performance",
22122
22122
  ...n
22123
22123
  };
22124
- a = new sC(r, e, l), i = a.genomeSpy, s = await hC(a, o), mC(i, l), await a.launch();
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
- r.innerText = e.toString(), console.error(e);
22126
+ a.innerText = e.toString(), console.error(e);
22127
22127
  }
22128
22128
  return {
22129
- views: o(i),
22130
- datasets: _t(i),
22131
- debug: a.debug,
22129
+ views: o(s, i),
22130
+ datasets: _t(s, i),
22131
+ debug: l.debug,
22132
22132
  finalize() {
22133
- let e = s;
22134
- s = [];
22133
+ r = !1;
22134
+ let e = u;
22135
+ u = [];
22135
22136
  for (let t = e.length - 1; t >= 0; --t) e[t]();
22136
- for (a?.finalize(), i?.destroy(), i = void 0; r.firstChild;) r.firstChild.remove();
22137
+ for (l?.finalize(), s?.destroy(), s = void 0; a.firstChild;) a.firstChild.remove();
22137
22138
  },
22138
22139
  addEventListener(e, t) {
22139
- i.addEventListener(e, t);
22140
+ s.addEventListener(e, t);
22140
22141
  },
22141
22142
  removeEventListener(e, t) {
22142
- i.removeEventListener(e, t);
22143
+ s.removeEventListener(e, t);
22143
22144
  },
22144
22145
  getScaleResolutionByName(e) {
22145
- return i.getNamedScaleResolutions().get(e);
22146
+ return s.getNamedScaleResolutions().get(e);
22146
22147
  },
22147
- getParam: i.getParam.bind(i),
22148
- awaitVisibleLazyData: i.awaitVisibleLazyData.bind(i),
22149
- getRenderedBounds: i.getRenderedBounds.bind(i),
22150
- updateNamedData: i.updateNamedData.bind(i),
22151
- getLogicalCanvasSize: i.getLogicalCanvasSize.bind(i),
22152
- exportCanvas: i.exportCanvas.bind(i)
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) {