@genome-spy/app 0.56.0 → 0.56.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
@@ -162,7 +162,7 @@ function Ee(e) {
162
162
  function T4(e) {
163
163
  return Object.prototype.toString.call(e) === "[object RegExp]";
164
164
  }
165
- function le(e) {
165
+ function he(e) {
166
166
  return typeof e == "string";
167
167
  }
168
168
  function L2(e, t) {
@@ -173,7 +173,7 @@ function gl(e) {
173
173
  return e && tn(e) - e[0] || 0;
174
174
  }
175
175
  function cu(e) {
176
- return st(e) ? "[" + e.map(cu) + "]" : at(e) || le(e) ? (
176
+ return st(e) ? "[" + e.map(cu) + "]" : at(e) || he(e) ? (
177
177
  // Output valid JSON and JS source strings.
178
178
  // See http://timelessrepo.com/json-isnt-a-javascript-subset
179
179
  JSON.stringify(e).replace("\u2028", "\\u2028").replace("\u2029", "\\u2029")
@@ -947,7 +947,7 @@ function xS(e) {
947
947
  }
948
948
  }
949
949
  b && !y && (B = t(B, 1 / 0));
950
- var ue = L.length + B.length + W.length, de = ue < g ? new Array(g - ue + 1).join(h) : "";
950
+ var le = L.length + B.length + W.length, de = le < g ? new Array(g - le + 1).join(h) : "";
951
951
  switch (b && y && (B = t(de + B, de.length ? g - W.length : 1 / 0), de = ""), d) {
952
952
  case "<":
953
953
  B = L + B + W + de;
@@ -956,7 +956,7 @@ function xS(e) {
956
956
  B = L + de + B + W;
957
957
  break;
958
958
  case "^":
959
- B = de.slice(0, ue = de.length >> 1) + L + B + W + de.slice(ue);
959
+ B = de.slice(0, le = de.length >> 1) + L + B + W + de.slice(le);
960
960
  break;
961
961
  default:
962
962
  B = de + L + B + W;
@@ -1237,7 +1237,7 @@ function ls(e, t, n) {
1237
1237
  function X2(e) {
1238
1238
  var t = e.dateTime, n = e.date, r = e.time, i = e.periods, o = e.days, s = e.shortDays, a = e.months, c = e.shortMonths, l = us(i), f = fs(i), u = us(o), h = fs(o), d = us(s), p = fs(s), m = us(a), y = fs(a), g = us(c), b = fs(c), v = {
1239
1239
  a: ee,
1240
- A: ue,
1240
+ A: le,
1241
1241
  b: de,
1242
1242
  B: E,
1243
1243
  c: null,
@@ -1272,7 +1272,7 @@ function X2(e) {
1272
1272
  a: k,
1273
1273
  A: $e,
1274
1274
  b: xe,
1275
- B: fe,
1275
+ B: ue,
1276
1276
  c: null,
1277
1277
  d: Bm,
1278
1278
  e: Bm,
@@ -1338,27 +1338,27 @@ function X2(e) {
1338
1338
  v.x = x(n, v), v.X = x(r, v), v.c = x(t, v), A.x = x(n, A), A.X = x(r, A), A.c = x(t, A);
1339
1339
  function x(N, K) {
1340
1340
  return function(J) {
1341
- var F = [], _e = -1, he = 0, ct = N.length, lt, Tn, Dc;
1341
+ var F = [], _e = -1, fe = 0, ct = N.length, lt, Tn, Dc;
1342
1342
  for (J instanceof Date || (J = /* @__PURE__ */ new Date(+J)); ++_e < ct; )
1343
- N.charCodeAt(_e) === 37 && (F.push(N.slice(he, _e)), (Tn = Em[lt = N.charAt(++_e)]) != null ? lt = N.charAt(++_e) : Tn = lt === "e" ? " " : "0", (Dc = K[lt]) && (lt = Dc(J, Tn)), F.push(lt), he = _e + 1);
1344
- return F.push(N.slice(he, _e)), F.join("");
1343
+ N.charCodeAt(_e) === 37 && (F.push(N.slice(fe, _e)), (Tn = Em[lt = N.charAt(++_e)]) != null ? lt = N.charAt(++_e) : Tn = lt === "e" ? " " : "0", (Dc = K[lt]) && (lt = Dc(J, Tn)), F.push(lt), fe = _e + 1);
1344
+ return F.push(N.slice(fe, _e)), F.join("");
1345
1345
  };
1346
1346
  }
1347
1347
  function C(N, K) {
1348
1348
  return function(J) {
1349
- var F = ls(1900, void 0, 1), _e = D(F, N, J += "", 0), he, ct;
1349
+ var F = ls(1900, void 0, 1), _e = D(F, N, J += "", 0), fe, ct;
1350
1350
  if (_e != J.length) return null;
1351
1351
  if ("Q" in F) return new Date(F.Q);
1352
1352
  if ("s" in F) return new Date(F.s * 1e3 + ("L" in F ? F.L : 0));
1353
1353
  if (K && !("Z" in F) && (F.Z = 0), "p" in F && (F.H = F.H % 12 + F.p * 12), F.m === void 0 && (F.m = "q" in F ? F.q : 0), "V" in F) {
1354
1354
  if (F.V < 1 || F.V > 53) return null;
1355
- "w" in F || (F.w = 1), "Z" in F ? (he = yf(ls(F.y, 0, 1)), ct = he.getUTCDay(), he = ct > 4 || ct === 0 ? wl.ceil(he) : wl(he), he = Ai.offset(he, (F.V - 1) * 7), F.y = he.getUTCFullYear(), F.m = he.getUTCMonth(), F.d = he.getUTCDate() + (F.w + 6) % 7) : (he = gf(ls(F.y, 0, 1)), ct = he.getDay(), he = ct > 4 || ct === 0 ? Al.ceil(he) : Al(he), he = mr.offset(he, (F.V - 1) * 7), F.y = he.getFullYear(), F.m = he.getMonth(), F.d = he.getDate() + (F.w + 6) % 7);
1355
+ "w" in F || (F.w = 1), "Z" in F ? (fe = yf(ls(F.y, 0, 1)), ct = fe.getUTCDay(), fe = ct > 4 || ct === 0 ? wl.ceil(fe) : wl(fe), fe = Ai.offset(fe, (F.V - 1) * 7), F.y = fe.getUTCFullYear(), F.m = fe.getUTCMonth(), F.d = fe.getUTCDate() + (F.w + 6) % 7) : (fe = gf(ls(F.y, 0, 1)), ct = fe.getDay(), fe = ct > 4 || ct === 0 ? Al.ceil(fe) : Al(fe), fe = mr.offset(fe, (F.V - 1) * 7), F.y = fe.getFullYear(), F.m = fe.getMonth(), F.d = fe.getDate() + (F.w + 6) % 7);
1356
1356
  } else ("W" in F || "U" in F) && ("w" in F || (F.w = "u" in F ? F.u % 7 : "W" in F ? 1 : 0), ct = "Z" in F ? yf(ls(F.y, 0, 1)).getUTCDay() : gf(ls(F.y, 0, 1)).getDay(), F.m = 0, F.d = "W" in F ? (F.w + 6) % 7 + F.W * 7 - (ct + 5) % 7 : F.w + F.U * 7 - (ct + 6) % 7);
1357
1357
  return "Z" in F ? (F.H += F.Z / 100 | 0, F.M += F.Z % 100, yf(F)) : gf(F);
1358
1358
  };
1359
1359
  }
1360
1360
  function D(N, K, J, F) {
1361
- for (var _e = 0, he = K.length, ct = J.length, lt, Tn; _e < he; ) {
1361
+ for (var _e = 0, fe = K.length, ct = J.length, lt, Tn; _e < fe; ) {
1362
1362
  if (F >= ct) return -1;
1363
1363
  if (lt = K.charCodeAt(_e++), lt === 37) {
1364
1364
  if (lt = K.charAt(_e++), Tn = w[lt in Em ? K.charAt(_e++) : lt], !Tn || (F = Tn(N, J, F)) < 0) return -1;
@@ -1399,7 +1399,7 @@ function X2(e) {
1399
1399
  function ee(N) {
1400
1400
  return s[N.getDay()];
1401
1401
  }
1402
- function ue(N) {
1402
+ function le(N) {
1403
1403
  return o[N.getDay()];
1404
1404
  }
1405
1405
  function de(N) {
@@ -1423,7 +1423,7 @@ function X2(e) {
1423
1423
  function xe(N) {
1424
1424
  return c[N.getUTCMonth()];
1425
1425
  }
1426
- function fe(N) {
1426
+ function ue(N) {
1427
1427
  return a[N.getUTCMonth()];
1428
1428
  }
1429
1429
  function Ve(N) {
@@ -1715,8 +1715,8 @@ function Om(e, t, n) {
1715
1715
  function ny(e) {
1716
1716
  const t = Mc(e.format), n = Mc(e.utcFormat);
1717
1717
  return {
1718
- timeFormat: (r) => le(r) ? t(r) : Om(t, US, r),
1719
- utcFormat: (r) => le(r) ? n(r) : Om(n, HS, r),
1718
+ timeFormat: (r) => he(r) ? t(r) : Om(t, US, r),
1719
+ utcFormat: (r) => he(r) ? n(r) : Om(n, HS, r),
1720
1720
  timeParse: Mc(e.parse),
1721
1721
  utcParse: Mc(e.utcParse)
1722
1722
  };
@@ -6534,7 +6534,7 @@ function ZT(e) {
6534
6534
  const t = e.allowed ? yl(e.allowed) : {}, n = e.forbidden ? yl(e.forbidden) : {}, r = e.constants || XT, i = (e.functions || Ex)(u), o = e.globalvar, s = e.fieldvar, a = kt(o) ? o : (p) => `${o}["${p}"]`;
6535
6535
  let c = {}, l = {}, f = 0;
6536
6536
  function u(p) {
6537
- if (le(p)) return p;
6537
+ if (he(p)) return p;
6538
6538
  const m = h[p.type];
6539
6539
  return m == null && Se("Unsupported type: " + p.type), m(p);
6540
6540
  }
@@ -6909,11 +6909,12 @@ function Mx(e) {
6909
6909
  function c0(e) {
6910
6910
  return e.type === "multi";
6911
6911
  }
6912
- function l0(e) {
6913
- return e != null && typeof e != "string" && "type" in e && e.type === "point";
6914
- }
6915
6912
  function Bx(e) {
6916
- return l0(e) ? e.toggle ?? e.on === "click" : !1;
6913
+ const t = typeof e == "string" ? { type: e } : e;
6914
+ return l0(t) && (t.on ?? (t.on = "click"), t.on === "click" && (t.toggle = !0)), t;
6915
+ }
6916
+ function l0(e) {
6917
+ return e && e.type == "point";
6917
6918
  }
6918
6919
  const Fx = {
6919
6920
  clamp: qn,
@@ -6925,7 +6926,7 @@ const Fx = {
6925
6926
  isNumber: Ee,
6926
6927
  isObject: at,
6927
6928
  isRegExp: T4,
6928
- isString: le,
6929
+ isString: he,
6929
6930
  isValid(e) {
6930
6931
  return e != null && e === e;
6931
6932
  },
@@ -7032,9 +7033,9 @@ class o7 {
7032
7033
  } else
7033
7034
  r = this.allocateSetter(n, null);
7034
7035
  if ("select" in t) {
7035
- const i = t.select;
7036
+ const i = Bx(t.select);
7036
7037
  l0(i) && r(
7037
- Bx(i) ? Dx() : Tx(null)
7038
+ i.toggle ? Dx() : Tx(null)
7038
7039
  );
7039
7040
  }
7040
7041
  return S(this, po).set(n, t), r;
@@ -7164,7 +7165,7 @@ class o7 {
7164
7165
  for (const t of S(this, po).values())
7165
7166
  if (s7(t)) {
7166
7167
  const n = t.select;
7167
- if (le(n)) {
7168
+ if (he(n)) {
7168
7169
  if (n == "point")
7169
7170
  return !0;
7170
7171
  } else if (n.type == "point")
@@ -7175,7 +7176,7 @@ class o7 {
7175
7176
  }
7176
7177
  cr = new WeakMap(), hi = new WeakMap(), ho = new WeakMap(), po = new WeakMap(), Da = new WeakMap();
7177
7178
  function ut(e) {
7178
- return typeof e == "object" && e != null && "expr" in e && le(e.expr);
7179
+ return typeof e == "object" && e != null && "expr" in e && he(e.expr);
7179
7180
  }
7180
7181
  function Ct(e) {
7181
7182
  if (ut(e))
@@ -7500,7 +7501,7 @@ function S7(e, t, n) {
7500
7501
  let r;
7501
7502
  if (Vu(e))
7502
7503
  r = ci(Nx(e)(n));
7503
- else if (le(n))
7504
+ else if (he(n))
7504
7505
  if (Sr(e))
7505
7506
  r = D7(n);
7506
7507
  else
@@ -8467,7 +8468,7 @@ class j7 extends vc {
8467
8468
  const h = [0, 0];
8468
8469
  this.updateTextureCoord(h), this.prepareXIndexer(n, r, i);
8469
8470
  for (let d = r; d < i; d++) {
8470
- const p = n[d], m = this.numberFormat(f(p)), y = le(m) ? m : m === null ? "" : "" + m;
8471
+ const p = n[d], m = this.numberFormat(f(p)), y = he(m) ? m : m === null ? "" : "" + m;
8471
8472
  if (y.length == 0) continue;
8472
8473
  this.variableBuilder.updateFromDatum(p);
8473
8474
  const g = s ? y.length : this.metrics.measureWidth(y);
@@ -8922,8 +8923,8 @@ function fa(e) {
8922
8923
  return e[rl] || Kx(e), e[rl];
8923
8924
  }
8924
8925
  function K7(e, t, n, r) {
8925
- const i = le(e) ? e : e.name, o = !le(e) && e.extent || [0, 1];
8926
- if (n === void 0 && !le(e) && (n = e.count), i) {
8926
+ const i = he(e) ? e : e.name, o = !he(e) && e.extent || [0, 1];
8927
+ if (n === void 0 && !he(e) && (n = e.count), i) {
8927
8928
  const s = n0(i);
8928
8929
  if (kt(s)) {
8929
8930
  const a = Zx(s, {
@@ -8951,8 +8952,8 @@ function K7(e, t, n, r) {
8951
8952
  function Z7(e, t = "rgb", n, r) {
8952
8953
  const i = Lu(
8953
8954
  e,
8954
- le(t) ? t : t.type,
8955
- le(t) ? void 0 : t.gamma
8955
+ he(t) ? t : t.type,
8956
+ he(t) ? void 0 : t.gamma
8956
8957
  ), o = Zx(i);
8957
8958
  return is(
8958
8959
  n,
@@ -9173,7 +9174,7 @@ class J7 {
9173
9174
  r
9174
9175
  );
9175
9176
  else {
9176
- let f = le(a.scheme) ? void 0 : a.scheme.count;
9177
+ let f = he(a.scheme) ? void 0 : a.scheme.count;
9177
9178
  f = i(f, s), l = K7(
9178
9179
  a.scheme,
9179
9180
  this.gl,
@@ -9309,7 +9310,7 @@ function _g(...e) {
9309
9310
  return new Proxy({}, t);
9310
9311
  }
9311
9312
  function nD(e) {
9312
- return le(e) || Ee(e) || $a(e);
9313
+ return he(e) || Ee(e) || $a(e);
9313
9314
  }
9314
9315
  class Ei extends Error {
9315
9316
  /**
@@ -9684,16 +9685,16 @@ uniform highp usampler2D ${U};`
9684
9685
  rangeUniformName: $
9685
9686
  } = k7(w, R, C);
9686
9687
  c.push(L), u.push(W), u.push(_), _ && S(this, ln).push(() => {
9687
- const ee = this.createMarkUniformSetter($), ue = () => ee(Qx(R, w));
9688
- B.addEventListener("range", ue), ue();
9688
+ const ee = this.createMarkUniformSetter($), le = () => ee(Qx(R, w));
9689
+ B.addEventListener("range", le), le();
9689
9690
  }), W && S(this, ln).push(() => {
9690
- const ee = this.createMarkUniformSetter(q), ue = () => {
9691
+ const ee = this.createMarkUniformSetter(q), le = () => {
9691
9692
  const de = Qn(R.type) ? [0, R.domain().length] : R.domain();
9692
9693
  ee(
9693
9694
  jx(R.type) ? P7(de) : de
9694
9695
  );
9695
9696
  };
9696
- B.addEventListener("domain", ue), ue();
9697
+ B.addEventListener("domain", le), le();
9697
9698
  });
9698
9699
  }
9699
9700
  c.push(T7(w, D));
@@ -12001,7 +12002,7 @@ class TD extends Ac {
12001
12002
  let o = 0;
12002
12003
  const s = "format" in r.text ? Ue(r.text.format) : (l) => l;
12003
12004
  for (const l of n) {
12004
- const f = s(i(l)), u = le(f) ? f : f === null ? "" : "" + f;
12005
+ const f = s(i(l)), u = he(f) ? f : f === null ? "" : "" + f;
12005
12006
  o += u && u.length || 0;
12006
12007
  }
12007
12008
  const a = new j7({
@@ -12365,7 +12366,7 @@ function _D(e) {
12365
12366
  }
12366
12367
  function jD(e) {
12367
12368
  const t = e.type;
12368
- return ze(t) && t !== ax && t !== cx && (e.scheme || e.range && e.range.length && e.range.every(le));
12369
+ return ze(t) && t !== ax && t !== cx && (e.scheme || e.range && e.range.length && e.range.every(he));
12369
12370
  }
12370
12371
  function WD(e, t, n) {
12371
12372
  if (!e.domain)
@@ -13616,7 +13617,7 @@ class CI {
13616
13617
  }), i = new Set(
13617
13618
  r.map(
13618
13619
  (o) => Nf(o.explicitTitle, o.implicitTitle)
13619
- ).filter(le)
13620
+ ).filter(he)
13620
13621
  );
13621
13622
  return i.size ? [...i].join(", ") : null;
13622
13623
  }
@@ -14329,7 +14330,7 @@ class Sv {
14329
14330
  getTitleText() {
14330
14331
  const t = this.spec.title;
14331
14332
  if (t)
14332
- return le(t) ? t : ut(t.text) ? this.paramMediator.evaluateAndGet(t.text.expr) : t.text;
14333
+ return he(t) ? t : ut(t.text) ? this.paramMediator.evaluateAndGet(t.text.expr) : t.text;
14333
14334
  }
14334
14335
  /**
14335
14336
  * @param {any} key string
@@ -14670,46 +14671,41 @@ La = new WeakMap(), ru = new WeakSet(), Ev = function() {
14670
14671
  for (const [n, r] of this.paramMediator.paramConfigs) {
14671
14672
  if (!("select" in r))
14672
14673
  continue;
14673
- const i = r.select;
14674
+ const i = Bx(r.select);
14674
14675
  if (l0(i)) {
14675
- let s = -1;
14676
+ let s = 0;
14676
14677
  const a = this.paramMediator.getSetter(n), c = () => {
14677
14678
  var u;
14678
14679
  const f = this.context.getCurrentHover();
14679
14680
  return ((u = f == null ? void 0 : f.mark) == null ? void 0 : u.unitView) === this ? f.datum : null;
14680
- }, l = !le(i) && "on" in i ? i.on : "click";
14681
- this.addInteractionEventListener(
14682
- ["mouseover", "pointerover"].includes(l) ? "mousemove" : "click",
14683
- (f, u) => {
14684
- const h = (
14685
- /** @type {MouseEvent} */
14686
- u.uiEvent
14687
- ), d = c(), p = d ? d[Ut] : -1;
14688
- if (Bx(i))
14689
- if (h.shiftKey) {
14690
- if (d) {
14691
- const y = this.paramMediator.getValue(n);
14692
- a(
14693
- e7(
14694
- y,
14695
- {
14696
- toggle: [d]
14697
- }
14698
- )
14699
- );
14700
- }
14701
- } else
14702
- a(
14703
- Dx(
14704
- d ? [d] : null
14705
- )
14681
+ }, l = (f, u) => {
14682
+ const h = (
14683
+ /** @type {MouseEvent} */
14684
+ u.uiEvent
14685
+ ), d = c(), p = d ? d[Ut] : 0;
14686
+ let m;
14687
+ if (i.toggle)
14688
+ if (h.shiftKey) {
14689
+ if (d) {
14690
+ const g = this.paramMediator.getValue(n);
14691
+ m = e7(
14692
+ g,
14693
+ {
14694
+ toggle: [d]
14695
+ }
14706
14696
  );
14707
- else if (p != s) {
14708
- s = p;
14709
- const m = Tx(d);
14710
- a(m);
14711
- }
14712
- }
14697
+ }
14698
+ } else
14699
+ m = Dx(
14700
+ d ? [d] : null
14701
+ );
14702
+ else
14703
+ p != s && (s = p, m = Tx(d));
14704
+ m !== void 0 && a(m);
14705
+ };
14706
+ this.addInteractionEventListener(
14707
+ ["mouseover", "pointerover"].includes(i.on) ? "mousemove" : "click",
14708
+ l
14713
14709
  );
14714
14710
  }
14715
14711
  }
@@ -16799,7 +16795,7 @@ class aM extends Fe {
16799
16795
  const n = new RegExp(t.regex), r = typeof t.as == "string" ? [t.as] : t.as, i = oe(t.field);
16800
16796
  this.handle = (o) => {
16801
16797
  const s = i(o);
16802
- if (le(s)) {
16798
+ if (he(s)) {
16803
16799
  const a = s.match(n);
16804
16800
  if (a) {
16805
16801
  if (a.length - 1 != r.length)
@@ -19256,7 +19252,7 @@ class sB {
19256
19252
  * @returns {FontEntry}
19257
19253
  */
19258
19254
  getFont(t, n = "normal", r = "regular") {
19259
- if (le(r) && (r = oB[
19255
+ if (he(r) && (r = oB[
19260
19256
  /** @type {keyof WEIGHTS} */
19261
19257
  r.toLowerCase()
19262
19258
  ], !r))
@@ -19507,7 +19503,7 @@ function mB(e) {
19507
19503
  }
19508
19504
  const gB = Ue(".4~r"), yB = Ue(".4~e");
19509
19505
  function v0(e) {
19510
- return e == null ? T` <span class="na">NA</span> ` : le(e) ? e.substring(0, 30) : Number.isInteger(e) ? "" + e : Ee(e) ? Math.abs(e) > Math.pow(10, 8) || Math.abs(e) < Math.pow(10, -8) ? yB(e) : gB(e) : $a(e) ? e ? "True" : "False" : st(e) ? T`${e.map((t, n) => [
19506
+ return e == null ? T` <span class="na">NA</span> ` : he(e) ? e.substring(0, 30) : Number.isInteger(e) ? "" + e : Ee(e) ? Math.abs(e) > Math.pow(10, 8) || Math.abs(e) < Math.pow(10, -8) ? yB(e) : gB(e) : $a(e) ? e ? "True" : "False" : st(e) ? T`${e.map((t, n) => [
19511
19507
  v0(t),
19512
19508
  n < e.length - 1 ? ", " : Q
19513
19509
  ])}` : "?" + typeof e + " " + e;
@@ -20385,7 +20381,7 @@ const o1 = {
20385
20381
  function RB(e) {
20386
20382
  if (!e)
20387
20383
  return;
20388
- const t = le(e) ? { text: e } : e;
20384
+ const t = he(e) ? { text: e } : e;
20389
20385
  if (!t.text || t.orient == "none")
20390
20386
  return;
20391
20387
  const n = {
@@ -20748,13 +20744,13 @@ class NB extends Vn {
20748
20744
  background: m,
20749
20745
  backgroundStroke: y,
20750
20746
  title: g
20751
- } = u, [b, v] = c.getCellCoords(f), A = s[M(this, te, pd).call(this, "column", b)], w = a[M(this, te, pd).call(this, "row", v)], x = h.getViewportSize(), C = h.getSize(), D = h.getOverhang(), R = A.location - D.left, U = w.location - D.top, B = (xe, fe) => (xe[fe].grow ? (fe == "width" ? A : w).size : xe[fe].px) + D[fe], L = B(x, "width"), W = B(x, "height"), q = B(C, "width"), _ = B(C, "height"), $ = u.scrollbars.horizontal, ee = u.scrollbars.vertical, ue = $ ? () => l($.viewportOffset) : () => 0, de = ee ? () => l(ee.viewportOffset) : () => 0, E = new Jt(
20747
+ } = u, [b, v] = c.getCellCoords(f), A = s[M(this, te, pd).call(this, "column", b)], w = a[M(this, te, pd).call(this, "row", v)], x = h.getViewportSize(), C = h.getSize(), D = h.getOverhang(), R = A.location - D.left, U = w.location - D.top, B = (xe, ue) => (xe[ue].grow ? (ue == "width" ? A : w).size : xe[ue].px) + D[ue], L = B(x, "width"), W = B(x, "height"), q = B(C, "width"), _ = B(C, "height"), $ = u.scrollbars.horizontal, ee = u.scrollbars.vertical, le = $ ? () => l($.viewportOffset) : () => 0, de = ee ? () => l(ee.viewportOffset) : () => 0, E = new Jt(
20752
20748
  () => r.x + R,
20753
20749
  () => r.y + U,
20754
20750
  () => L,
20755
20751
  () => W
20756
20752
  ), Ze = h.isScrollable(), Ge = Ze ? new Jt(
20757
- () => r.x + R - ue(),
20753
+ () => r.x + R - le(),
20758
20754
  () => r.y + U - de(),
20759
20755
  () => q,
20760
20756
  () => _
@@ -20775,7 +20771,7 @@ class NB extends Vn {
20775
20771
  ...i,
20776
20772
  clipRect: void 0
20777
20773
  });
20778
- for (const [xe, fe] of Object.entries(d)) {
20774
+ for (const [xe, ue] of Object.entries(d)) {
20779
20775
  const Ve = xe == "left" || xe == "right" ? "vertical" : "horizontal", dt = u.scrollbars[Ve], N = dt ? E.modify(
20780
20776
  Ve == "vertical" ? {
20781
20777
  y: () => Ge.y,
@@ -20787,7 +20783,7 @@ class NB extends Vn {
20787
20783
  ) : E, K = md(
20788
20784
  N,
20789
20785
  xe,
20790
- fe
20786
+ ue
20791
20787
  );
20792
20788
  let J = i.clipRect;
20793
20789
  dt && (J = K.intersect(J).intersect(
@@ -20801,7 +20797,7 @@ class NB extends Vn {
20801
20797
  height: 2e5
20802
20798
  }
20803
20799
  ) : void 0
20804
- )), fe.render(n, K, {
20800
+ )), ue.render(n, K, {
20805
20801
  ...i,
20806
20802
  clipRect: J
20807
20803
  });
@@ -21568,7 +21564,7 @@ function VB(e, t) {
21568
21564
  }
21569
21565
  }
21570
21566
  function Gl(e) {
21571
- return "mark" in e && (le(e.mark) || at(e.mark));
21567
+ return "mark" in e && (he(e.mark) || at(e.mark));
21572
21568
  }
21573
21569
  function Vl(e) {
21574
21570
  return "layer" in e && at(e.layer);
@@ -28288,7 +28284,7 @@ const iL = function(e) {
28288
28284
  switch (d) {
28289
28285
  case "bestFit": {
28290
28286
  var B;
28291
- const _ = (B = D.map(($) => [$.placement, $.overflows.filter((ee) => ee > 0).reduce((ee, ue) => ee + ue, 0)]).sort(($, ee) => $[1] - ee[1])[0]) == null ? void 0 : B[0];
28287
+ const _ = (B = D.map(($) => [$.placement, $.overflows.filter((ee) => ee > 0).reduce((ee, le) => ee + le, 0)]).sort(($, ee) => $[1] - ee[1])[0]) == null ? void 0 : B[0];
28292
28288
  _ && (q = _);
28293
28289
  break;
28294
28290
  }
@@ -29506,7 +29502,7 @@ iu = new WeakSet(), e3 = function() {
29506
29502
  const i = this.sampleView.compositeAttributeInfoSource.getAttributeInfo(
29507
29503
  r.attribute
29508
29504
  ).title;
29509
- return i ? le(i) ? i : (ke(i, n), n.textContent.replace(/\s+/g, " ").trim()) : "unknown";
29505
+ return i ? he(i) ? i : (ke(i, n), n.textContent.replace(/\s+/g, " ").trim()) : "unknown";
29510
29506
  }
29511
29507
  );
29512
29508
  };
@@ -31053,7 +31049,7 @@ function h3(e) {
31053
31049
  const hz = "@genome-spy/app", dz = "GenomeSpy-based visualization tool for multiple patient samples", pz = {
31054
31050
  name: "Kari Lavikka",
31055
31051
  email: "kari.lavikka@helsinki.fi"
31056
- }, mz = [], gz = "MIT", yz = "0.56.0", bz = "dist/index.js", xz = "module", vz = [
31052
+ }, mz = [], gz = "MIT", yz = "0.56.1", bz = "dist/index.js", xz = "module", vz = [
31057
31053
  "dist/"
31058
31054
  ], Az = {
31059
31055
  type: "git",
@@ -31069,7 +31065,7 @@ const hz = "@genome-spy/app", dz = "GenomeSpy-based visualization tool for multi
31069
31065
  "@fortawesome/fontawesome-free": "^6.4.2",
31070
31066
  "@fortawesome/fontawesome-svg-core": "^6.4.2",
31071
31067
  "@fortawesome/free-solid-svg-icons": "^6.4.2",
31072
- "@genome-spy/core": "^0.56.0",
31068
+ "@genome-spy/core": "^0.56.1",
31073
31069
  "@reduxjs/toolkit": "^1.8.4",
31074
31070
  idb: "^7.1.1",
31075
31071
  lit: "^3.1.2",
@@ -31078,7 +31074,7 @@ const hz = "@genome-spy/app", dz = "GenomeSpy-based visualization tool for multi
31078
31074
  micromark: "^4.0.0",
31079
31075
  "redux-batched-actions": "^0.5.0",
31080
31076
  "redux-undo": "^1.0.1"
31081
- }, Cz = "3b83e28aecd08d1362bb373929823dc69cf9b705", f2 = {
31077
+ }, Cz = "453d25739c7996fc60fe5fa125784c8532b40e4f", f2 = {
31082
31078
  name: hz,
31083
31079
  description: dz,
31084
31080
  author: pz,
@@ -31636,7 +31632,7 @@ function qz(e) {
31636
31632
  codeIndented: Ge,
31637
31633
  codeText: Z3,
31638
31634
  content: U3,
31639
- definition: he,
31635
+ definition: fe,
31640
31636
  definitionDestinationString: lt,
31641
31637
  definitionLabelString: y,
31642
31638
  definitionTitleString: y,
@@ -31690,12 +31686,12 @@ function qz(e) {
31690
31686
  htmlTextData: ss,
31691
31687
  image: _e,
31692
31688
  label: Ve,
31693
- labelText: fe,
31689
+ labelText: ue,
31694
31690
  lineEnding: Y3,
31695
31691
  link: _e,
31696
31692
  listOrdered: L,
31697
31693
  listUnordered: W,
31698
- paragraph: ue,
31694
+ paragraph: le,
31699
31695
  reference: C,
31700
31696
  referenceString: dt,
31701
31697
  resource: C,
@@ -31837,7 +31833,7 @@ function qz(e) {
31837
31833
  function ee() {
31838
31834
  s[s.length - 1] || (w(), b("<p>")), p("slurpAllLineEndings");
31839
31835
  }
31840
- function ue() {
31836
+ function le() {
31841
31837
  s[s.length - 1] ? p("slurpAllLineEndings", !0) : b("</p>");
31842
31838
  }
31843
31839
  function de() {
@@ -31866,7 +31862,7 @@ function qz(e) {
31866
31862
  function xe() {
31867
31863
  o.push({});
31868
31864
  }
31869
- function fe(O) {
31865
+ function ue(O) {
31870
31866
  o[o.length - 1].labelId = this.sliceSerialize(O);
31871
31867
  }
31872
31868
  function Ve() {
@@ -31907,7 +31903,7 @@ function qz(e) {
31907
31903
  ) + '"'
31908
31904
  ), b(Wt.title ? ' title="' + Wt.title + '"' : ""), j.image ? b(" />") : (b(">"), v(j.label), b("</a>")), o.pop();
31909
31905
  }
31910
- function he() {
31906
+ function fe() {
31911
31907
  y(), o.push({});
31912
31908
  }
31913
31909
  function ct(O) {
@@ -33211,14 +33207,14 @@ function HN(e, t, n) {
33211
33207
  return k === 45 ? (e.consume(k), E) : L(k);
33212
33208
  }
33213
33209
  function ee(k) {
33214
- return k === 47 ? (e.consume(k), s = "", ue) : L(k);
33210
+ return k === 47 ? (e.consume(k), s = "", le) : L(k);
33215
33211
  }
33216
- function ue(k) {
33212
+ function le(k) {
33217
33213
  if (k === 62) {
33218
33214
  const $e = s.toLowerCase();
33219
33215
  return C2.includes($e) ? (e.consume(k), Ze) : L(k);
33220
33216
  }
33221
- return fn(k) && s.length < 8 ? (e.consume(k), s += String.fromCharCode(k), ue) : L(k);
33217
+ return fn(k) && s.length < 8 ? (e.consume(k), s += String.fromCharCode(k), le) : L(k);
33222
33218
  }
33223
33219
  function de(k) {
33224
33220
  return k === 93 ? (e.consume(k), E) : L(k);
@@ -33337,9 +33333,9 @@ function jN(e, t, n) {
33337
33333
  return E === 62 ? (e.consume(E), e.exit("htmlTextData"), e.exit("htmlText"), t) : n(E);
33338
33334
  }
33339
33335
  function ee(E) {
33340
- return e.exit("htmlTextData"), e.enter("lineEnding"), e.consume(E), e.exit("lineEnding"), ue;
33336
+ return e.exit("htmlTextData"), e.enter("lineEnding"), e.consume(E), e.exit("lineEnding"), le;
33341
33337
  }
33342
- function ue(E) {
33338
+ function le(E) {
33343
33339
  return ie(E) ? me(e, de, "linePrefix", r.parser.constructs.disable.null.includes("codeIndented") ? void 0 : 4)(E) : de(E);
33344
33340
  }
33345
33341
  function de(E) {
@@ -33888,15 +33884,15 @@ function AU(e, t, n) {
33888
33884
  function C(B, L) {
33889
33885
  return W;
33890
33886
  function W(q, _, $) {
33891
- let ee, ue, de, E;
33887
+ let ee, le, de, E;
33892
33888
  return Array.isArray(q) ? Ge(q) : "tokenize" in q ? (
33893
33889
  // @ts-expect-error Looks like a construct.
33894
33890
  Ge([q])
33895
33891
  ) : Ze(q);
33896
- function Ze(fe) {
33892
+ function Ze(ue) {
33897
33893
  return Ve;
33898
33894
  function Ve(dt) {
33899
- const N = dt !== null && fe[dt], K = dt !== null && fe.null, J = [
33895
+ const N = dt !== null && ue[dt], K = dt !== null && ue.null, J = [
33900
33896
  // To do: add more extension tests.
33901
33897
  /* c8 ignore next 2 */
33902
33898
  ...Array.isArray(N) ? N : N ? [N] : [],
@@ -33905,13 +33901,13 @@ function AU(e, t, n) {
33905
33901
  return Ge(J)(dt);
33906
33902
  }
33907
33903
  }
33908
- function Ge(fe) {
33909
- return ee = fe, ue = 0, fe.length === 0 ? $ : k(fe[ue]);
33904
+ function Ge(ue) {
33905
+ return ee = ue, le = 0, ue.length === 0 ? $ : k(ue[le]);
33910
33906
  }
33911
- function k(fe) {
33907
+ function k(ue) {
33912
33908
  return Ve;
33913
33909
  function Ve(dt) {
33914
- return E = R(), de = fe, fe.partial || (l.currentConstruct = fe), fe.name && l.parser.constructs.disable.null.includes(fe.name) ? xe() : fe.tokenize.call(
33910
+ return E = R(), de = ue, ue.partial || (l.currentConstruct = ue), ue.name && l.parser.constructs.disable.null.includes(ue.name) ? xe() : ue.tokenize.call(
33915
33911
  // If we do have fields, create an object w/ `context` as its
33916
33912
  // prototype.
33917
33913
  // This allows a “live binding”, which is needed for `interrupt`.
@@ -33922,11 +33918,11 @@ function AU(e, t, n) {
33922
33918
  )(dt);
33923
33919
  }
33924
33920
  }
33925
- function $e(fe) {
33921
+ function $e(ue) {
33926
33922
  return B(de, E), _;
33927
33923
  }
33928
- function xe(fe) {
33929
- return E.restore(), ++ue < ee.length ? k(ee[ue]) : $;
33924
+ function xe(ue) {
33925
+ return E.restore(), ++le < ee.length ? k(ee[le]) : $;
33930
33926
  }
33931
33927
  }
33932
33928
  }
@@ -35064,7 +35060,7 @@ class XU {
35064
35060
  addReducer(t, n) {
35065
35061
  this._reducers[t] = n;
35066
35062
  const r = (o) => Object.keys(this._reducers).some(
35067
- (s) => le(s) && o.type.startsWith(s)
35063
+ (s) => he(s) && o.type.startsWith(s)
35068
35064
  ), i = (o, s) => r(s) ? s : o ?? null;
35069
35065
  this._reducer = YO(
35070
35066
  U0({
@@ -35634,7 +35630,7 @@ function sH(e) {
35634
35630
  }
35635
35631
  async function gH(e, t, n = {}) {
35636
35632
  let r;
35637
- if (le(e)) {
35633
+ if (he(e)) {
35638
35634
  if (r = document.querySelector(e), !r)
35639
35635
  throw new Error(`No such element: ${e}`);
35640
35636
  } else if (e instanceof HTMLElement)