@genome-spy/app 0.88.1 → 0.89.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (43) hide show
  1. package/dist/{agentApi-BIpg3JKh.js → agentApi-BUcXm-JC.js} +5544 -6449
  2. package/dist/agentApi.es.js +3328 -4255
  3. package/dist/agentShared.es.js +9 -9
  4. package/dist/{canvas2d-BVQ7-2eJ.js → canvas2d-CGuVGvQk.js} +117 -106
  5. package/dist/{canvas2d-D7SZK3xv.js → canvas2d-DgF0kstG.js} +99 -88
  6. package/dist/{canvasSizeHelper-7h_8rOcx.js → canvasSizeHelper-foL2YvGL.js} +15 -8
  7. package/dist/{clipOptions-DTMcB_9z.js → clipOptions-8BPf0WMZ.js} +1013 -755
  8. package/dist/{clipOptions-BWHr3aTa.js → clipOptions-DBJX_W31.js} +1033 -775
  9. package/dist/{debug-CVpoEOWx.js → debug-BEWbYuZD.js} +2 -2
  10. package/dist/{debug-DYAMZZKl.js → debug-DQj_7mFm.js} +2 -2
  11. package/dist/index.es.js +65 -65
  12. package/dist/index.js +406 -362
  13. package/dist/{indexer-DAH_ruVn.js → indexer-Cdt_U05k.js} +1 -1
  14. package/dist/{indexer-CXjZDo2Q.js → indexer-D8Bgkkb8.js} +1 -1
  15. package/dist/order-BPOzLe80.js +1056 -0
  16. package/dist/order-DIxlclRN.js +1056 -0
  17. package/dist/rasterExport-Bl6w9t3J.js +51 -0
  18. package/dist/rasterExport-DRvNAH-r.js +51 -0
  19. package/dist/rasterization-D0tOoKu_.js +62 -0
  20. package/dist/rectangle-DE98gIxF.js +108 -0
  21. package/dist/{renderCanvas2D-DxturTEW.js → renderCanvas2D-Ct95auF3.js} +60 -59
  22. package/dist/{renderCanvas2D-DtcJjqpB.js → renderCanvas2D-LdEYFnRo.js} +71 -70
  23. package/dist/schema.json +588 -116
  24. package/dist/{svg-CyrLfa9e.js → svg-Ag36-h_I.js} +394 -382
  25. package/dist/{svg-SDJMzL--.js → svg-pkTPD4bv.js} +368 -356
  26. package/dist/{svgRasterizer-f7DJ3UO0.js → svgRasterizer-CksK4QTB.js} +6 -5
  27. package/dist/{svgRasterizer-mWK7HTkx.js → svgRasterizer-DrtJ9nLk.js} +6 -5
  28. package/dist/{vega-scale-CypF85iS.js → vega-scale-BJaDSHBJ.js} +891 -959
  29. package/dist/{vega-scale-DLKCwWRs.js → vega-scale-BWBFykuI.js} +692 -760
  30. package/dist/{viewIdentityRegistry-DIDo44XQ.js → viewIdentityRegistry-B-snqI3y.js} +1 -1
  31. package/dist/{viewIdentityRegistry-Dl-vMN9I.js → viewIdentityRegistry-BvCJajXG.js} +1 -1
  32. package/dist/{viewSelectors-CymbZyE6.js → viewSelectors-BlvzvG-z.js} +445 -380
  33. package/dist/{viewSelectors-DNiDip5e.js → viewSelectors-C5q3qBiR.js} +364 -299
  34. package/dist/{viewUtils-BrJLIj2o.js → viewUtils-C3vBtSvE.js} +1714 -1689
  35. package/dist/{webgl-tZfZ8y3q.js → webgl-CZX2pe5v.js} +2319 -972
  36. package/dist/{webgl-CTJt7jQd.js → webgl-CexXSw_I.js} +2371 -1024
  37. package/package.json +5 -5
  38. package/dist/order-C5CzA37O.js +0 -918
  39. package/dist/order-DvY7KNcu.js +0 -918
  40. package/dist/rasterExport-BgZ98e6U.js +0 -44
  41. package/dist/rasterExport-DEr8fOLm.js +0 -44
  42. package/dist/rasterization-CFogVB3B.js +0 -50
  43. package/dist/rectangle-DKnrAmKs.js +0 -142
@@ -1,12 +1,12 @@
1
- import { At as e, Dt as t, Ot as n, Pt as r, b as i, ct as a, dn as o, fn as s, jt as c, k as l, o as u, sn as d, st as f, t as p, u as m, un as h, vn as ee } from "./clipOptions-DTMcB_9z.js";
2
- import { a as g, n as te, r as ne, t as _ } from "./viewError-BiR9VCgL.js";
3
- import { U as re, m as ie, rt as ae, y as v } from "./vega-scale-DLKCwWRs.js";
4
- import { t as oe } from "./warning-CpIIpk8e.js";
1
+ import { Dn as e, Ft as t, It as n, Mt as r, Nt as i, V as a, b as o, bn as s, ft as c, gn as l, k as u, o as d, pt as f, t as p, u as m, un as ee, xn as te, yn as h, zt as g } from "./clipOptions-8BPf0WMZ.js";
2
+ import { a as _, n as ne, r as re, t as v } from "./viewError-BiR9VCgL.js";
3
+ import { U as ie, m as y, y as b } from "./vega-scale-BWBFykuI.js";
4
+ import { t as ae } from "./warning-CpIIpk8e.js";
5
5
  //#region ../core/src/view/layout/flexLayout.js
6
- function se(e, t, { spacing: n, devicePixelRatio: r, offset: i, reverse: a } = {}) {
6
+ function oe(e, t, { spacing: n, devicePixelRatio: r, offset: i, reverse: a } = {}) {
7
7
  n ||= 0, i ||= 0;
8
8
  let o = he(e, t, n), s = 0, c = 0;
9
- for (let t = 0; t < e.length; t++) s += o[t], S(e[t]) || c++;
9
+ for (let t = 0; t < e.length; t++) s += o[t], C(e[t]) || c++;
10
10
  let l = s + Math.max(0, c - 1) * n, u = r === void 0 ? (e) => e : (e) => Math.round(e * r) / r, d = 0, f = [], p = (e) => {
11
11
  let t = d;
12
12
  if (!t) return;
@@ -18,13 +18,13 @@ function se(e, t, { spacing: n, devicePixelRatio: r, offset: i, reverse: a } = {
18
18
  });
19
19
  m += r, d = 0;
20
20
  }, m = a ? Math.max(t, l) : 0 + i;
21
- if (e.length == 1 && S(e[0])) return [{
21
+ if (e.length == 1 && C(e[0])) return [{
22
22
  location: m,
23
23
  size: 0
24
24
  }];
25
25
  for (let t = 0; t < e.length; t++) {
26
26
  let r = e[t];
27
- if (S(r)) d++;
27
+ if (C(r)) d++;
28
28
  else {
29
29
  p(f.length > 0);
30
30
  let e = o[t];
@@ -36,34 +36,34 @@ function se(e, t, { spacing: n, devicePixelRatio: r, offset: i, reverse: a } = {
36
36
  }
37
37
  return m += a ? n : -n, p(!1), f;
38
38
  }
39
- function ce(e, { spacing: t } = { spacing: 0 }) {
39
+ function se(e, { spacing: t } = { spacing: 0 }) {
40
40
  let n = 0;
41
- for (let r of e) n += T(r) + (S(r) ? 0 : t);
41
+ for (let r of e) n += E(r) + (C(r) ? 0 : t);
42
42
  return Math.max(0, n - t);
43
43
  }
44
- function le(e, t, { spacing: n = 0 } = {}) {
44
+ function ce(e, t, { spacing: n = 0 } = {}) {
45
45
  let r = [], i = [], a = 0, o = 0;
46
46
  for (let [s, c] of e.entries()) {
47
- let e = T(c), l = !S(c), u = o && l ? n : 0;
47
+ let e = E(c), l = !C(c), u = o && l ? n : 0;
48
48
  i.length && a + u + e > t && (r.push(i), i = [], a = 0, o = 0), i.push(s), a += (o && l ? n : 0) + e, o += +!!l;
49
49
  }
50
50
  return i.length && r.push(i), r;
51
51
  }
52
- function ue(e) {
52
+ function le(e) {
53
53
  let t = 0, n = 0, r = 0, i, a = !0;
54
54
  for (let o of e) {
55
- t = Math.max(t, o.px ?? 0), n = Math.max(n, o.grow ?? 0), r = Math.max(r, T(o));
56
- let e = E(o);
55
+ t = Math.max(t, o.px ?? 0), n = Math.max(n, o.grow ?? 0), r = Math.max(r, E(o));
56
+ let e = D(o);
57
57
  e === void 0 ? a = !1 : i = i === void 0 ? e : Math.max(i, e);
58
58
  }
59
- return O({
59
+ return A({
60
60
  px: t,
61
61
  grow: n,
62
62
  minPx: r,
63
63
  maxPx: a ? i : void 0
64
64
  });
65
65
  }
66
- function de(e) {
66
+ function ue(e) {
67
67
  let t = {
68
68
  px: 0,
69
69
  grow: 0,
@@ -71,13 +71,13 @@ function de(e) {
71
71
  maxPx: 0
72
72
  }, n = !0;
73
73
  for (let r of e) {
74
- t.px += C(r.px), t.grow += C(r.grow), t.minPx += T(r);
75
- let e = E(r);
74
+ t.px += w(r.px), t.grow += w(r.grow), t.minPx += E(r);
75
+ let e = D(r);
76
76
  e === void 0 ? n = !1 : t.maxPx += e;
77
77
  }
78
- return n || delete t.maxPx, O(t);
78
+ return n || delete t.maxPx, A(t);
79
79
  }
80
- var y = class e {
80
+ var x = class e {
81
81
  constructor(e, t) {
82
82
  this.width = e, this.height = t;
83
83
  }
@@ -88,22 +88,22 @@ var y = class e {
88
88
  return this.#e(-e.width, -e.height);
89
89
  }
90
90
  #e(t, n) {
91
- return new e(D(this.width, t), D(this.height, n));
91
+ return new e(k(this.width, t), k(this.height, n));
92
92
  }
93
93
  isGrowing() {
94
94
  return !!(this.width.grow || this.height.grow);
95
95
  }
96
- }, b = Object.freeze({
96
+ }, S = Object.freeze({
97
97
  px: 0,
98
98
  grow: 0
99
- }), x = new y(b, b);
100
- function S(e) {
99
+ }), de = new x(S, S);
100
+ function C(e) {
101
101
  return !e.px && !e.grow && !e.minPx;
102
102
  }
103
103
  function fe(e, t) {
104
104
  return !e || !t ? !1 : e.px === t.px && e.grow === t.grow && e.minPx === t.minPx && e.maxPx === t.maxPx;
105
105
  }
106
- function C(e) {
106
+ function w(e) {
107
107
  return e || 0;
108
108
  }
109
109
  function pe(e) {
@@ -111,7 +111,7 @@ function pe(e) {
111
111
  }
112
112
  function me(e) {
113
113
  if (J(e)) throw Error("parseSizeDef does not accept step-based sizes.");
114
- if (pe(e)) return _e(e), O(e);
114
+ if (pe(e)) return _e(e), A(e);
115
115
  if (h(e)) return {
116
116
  px: e,
117
117
  grow: 0
@@ -124,26 +124,26 @@ function me(e) {
124
124
  }
125
125
  function he(e, t, n) {
126
126
  let r = !1;
127
- for (let t of e) _e(t), r ||= ve(t);
127
+ for (let t of e) _e(t), r ||= O(t);
128
128
  if (!r) return ge(e, t, n);
129
129
  let i = Array(e.length).fill(0), a = [];
130
- for (let t = 0; t < e.length; t++) S(e[t]) || a.push(t);
130
+ for (let t = 0; t < e.length; t++) C(e[t]) || a.push(t);
131
131
  let o = Math.max(0, a.length - 1) * n, s = Math.max(0, t - o), c = /* @__PURE__ */ new Set();
132
132
  for (let t of a) {
133
133
  let n = e[t];
134
- C(n.grow) || (i[t] = w(C(n.px), n), c.add(t));
134
+ w(n.grow) || (i[t] = T(w(n.px), n), c.add(t));
135
135
  }
136
136
  for (;;) {
137
137
  let t = 0, n = 0, r = 0;
138
- for (let o of a) c.has(o) ? r += i[o] : (t += C(e[o].px), n += C(e[o].grow));
138
+ for (let o of a) c.has(o) ? r += i[o] : (t += w(e[o].px), n += w(e[o].grow));
139
139
  if (!n) {
140
- for (let t of a) c.has(t) || (i[t] = w(C(e[t].px), e[t]), c.add(t));
140
+ for (let t of a) c.has(t) || (i[t] = T(w(e[t].px), e[t]), c.add(t));
141
141
  break;
142
142
  }
143
143
  let o = Math.max(0, s - r - t), l = 0, u = [], d = [];
144
144
  for (let t of a) {
145
145
  if (c.has(t)) continue;
146
- let r = e[t], a = C(r.px) + C(r.grow) / n * o, s = w(a, r);
146
+ let r = e[t], a = w(r.px) + w(r.grow) / n * o, s = T(a, r);
147
147
  i[t] = s;
148
148
  let f = s - a;
149
149
  l += f, f > 0 ? u.push(t) : f < 0 && d.push(t);
@@ -157,45 +157,45 @@ function he(e, t, n) {
157
157
  }
158
158
  function ge(e, t, n) {
159
159
  let r = 0, i = 0;
160
- for (let t of e) r += C(t.px) + (S(t) ? 0 : n), i += C(t.grow);
160
+ for (let t of e) r += w(t.px) + (C(t) ? 0 : n), i += w(t.grow);
161
161
  r -= n;
162
162
  let a = Math.max(0, t - r), o = Array(e.length);
163
163
  for (let t = 0; t < e.length; t++) {
164
164
  let n = e[t];
165
- o[t] = S(n) ? 0 : C(n.px) + (i ? C(n.grow) / i * a : 0);
165
+ o[t] = C(n) ? 0 : w(n.px) + (i ? w(n.grow) / i * a : 0);
166
166
  }
167
167
  return o;
168
168
  }
169
169
  function _e(e) {
170
170
  if (e.minPx !== void 0 && e.maxPx !== void 0 && e.minPx > e.maxPx) throw Error("SizeDef minPx cannot be greater than maxPx.");
171
171
  }
172
- function w(e, t) {
172
+ function T(e, t) {
173
173
  return Math.min(Math.max(e, t.minPx ?? 0), t.maxPx ?? Infinity);
174
174
  }
175
- function T(e) {
176
- return w(C(e.px), e);
177
- }
178
175
  function E(e) {
179
- return e.maxPx ?? (C(e.grow) ? void 0 : T(e));
176
+ return T(w(e.px), e);
177
+ }
178
+ function D(e) {
179
+ return e.maxPx ?? (w(e.grow) ? void 0 : E(e));
180
180
  }
181
- function ve(e) {
181
+ function O(e) {
182
182
  return e.minPx !== void 0 || e.maxPx !== void 0;
183
183
  }
184
- function D(e, t) {
185
- return O({
184
+ function k(e, t) {
185
+ return A({
186
186
  px: (e.px ?? 0) + t,
187
187
  grow: e.grow,
188
188
  minPx: e.minPx === void 0 ? void 0 : Math.max(0, e.minPx + t),
189
189
  maxPx: e.maxPx === void 0 ? void 0 : Math.max(0, e.maxPx + t)
190
190
  });
191
191
  }
192
- function O(e) {
193
- let t = {}, n = e.px !== void 0, r = e.grow !== void 0, i = ve(e);
194
- return e.px ? t.px = e.px : e.px === 0 && (t.px = 0), e.grow ? t.grow = e.grow : e.grow === 0 ? t.grow = 0 : !n && !r && i && (t.grow = 1), e.minPx && e.minPx > C(e.px) && (t.minPx = e.minPx), e.maxPx !== void 0 && (C(t.grow) || e.maxPx < C(e.px)) && (t.maxPx = e.maxPx), t;
192
+ function A(e) {
193
+ let t = {}, n = e.px !== void 0, r = e.grow !== void 0, i = O(e);
194
+ return e.px ? t.px = e.px : e.px === 0 && (t.px = 0), e.grow ? t.grow = e.grow : e.grow === 0 ? t.grow = 0 : !n && !r && i && (t.grow = 1), e.minPx && e.minPx > w(e.px) && (t.minPx = e.minPx), e.maxPx !== void 0 && (w(t.grow) || e.maxPx < w(e.px)) && (t.maxPx = e.maxPx), t;
195
195
  }
196
196
  //#endregion
197
197
  //#region ../core/src/view/layout/padding.js
198
- var k = class e {
198
+ var j = class e {
199
199
  constructor(e, t, n, r) {
200
200
  this.top = e || 0, this.right = t || 0, this.bottom = n || 0, this.left = r || 0;
201
201
  }
@@ -230,35 +230,35 @@ var k = class e {
230
230
  return this.top + this.bottom;
231
231
  }
232
232
  static createFromConfig(e) {
233
- return typeof e == "number" ? this.createUniformPadding(e) : e ? this.createFromRecord(e) : A;
233
+ return typeof e == "number" ? this.createUniformPadding(e) : e ? this.createFromRecord(e) : M;
234
234
  }
235
235
  static createFromRecord(t) {
236
236
  return new e(t.top, t.right, t.bottom, t.left);
237
237
  }
238
238
  static zero() {
239
- return A;
239
+ return M;
240
240
  }
241
241
  static createUniformPadding(t) {
242
242
  return new e(t, t, t, t);
243
243
  }
244
244
  };
245
- function ye(e, t) {
246
- return t ? new k(t.top === !1 ? 0 : e.top, t.right === !1 ? 0 : e.right, t.bottom === !1 ? 0 : e.bottom, t.left === !1 ? 0 : e.left) : e;
245
+ function ve(e, t) {
246
+ return t ? new j(t.top === !1 ? 0 : e.top, t.right === !1 ? 0 : e.right, t.bottom === !1 ? 0 : e.bottom, t.left === !1 ? 0 : e.left) : e;
247
247
  }
248
- var A = k.createUniformPadding(0);
249
- Object.freeze(A);
248
+ var M = j.createUniformPadding(0);
249
+ Object.freeze(M);
250
250
  //#endregion
251
251
  //#region ../core/src/utils/url.js
252
- var be = /^([A-Za-z]+:)?\/\//;
253
- function j(e, t) {
254
- if (t && be.test(t)) return t;
252
+ var ye = /^([A-Za-z]+:)?\/\//;
253
+ function N(e, t) {
254
+ if (t && ye.test(t)) return t;
255
255
  let n = typeof e == "function" ? e() : e;
256
256
  if (!n) return t;
257
257
  if (!t) return n;
258
258
  if (/[#?]/.test(n)) throw Error(`Cannot append to a url with query or hash. Append: ${t}, base: ${n}`);
259
- return M(n) + t;
259
+ return P(n) + t;
260
260
  }
261
- function xe(e, t, n = Se()) {
261
+ function be(e, t, n = xe()) {
262
262
  let r = typeof e == "function" ? e() : e;
263
263
  if (!t) return r;
264
264
  try {
@@ -267,19 +267,19 @@ function xe(e, t, n = Se()) {
267
267
  return new URL(t, e).href;
268
268
  } else if (n) return new URL(t, n).href;
269
269
  } catch {}
270
- return j(r, t);
270
+ return N(r, t);
271
271
  }
272
- function M(e) {
272
+ function P(e) {
273
273
  let t = e.replace(/[^/]*$/, "");
274
274
  return t === "" ? void 0 : t.endsWith("://") ? e + "/" : t;
275
275
  }
276
- function Se() {
276
+ function xe() {
277
277
  if (typeof document < "u" && document.baseURI) return document.baseURI;
278
278
  if (typeof window < "u" && window.location?.href) return window.location.href;
279
279
  }
280
280
  //#endregion
281
281
  //#region ../../node_modules/flatqueue/index.js
282
- var N = class {
282
+ var F = class {
283
283
  constructor(e = Infinity, t = Float64Array, n = Uint32Array) {
284
284
  let r = e !== Infinity;
285
285
  this.ids = r ? new n(e) : [], this.values = r ? new t(e) : [], this.capacity = e, this.length = 0;
@@ -320,15 +320,16 @@ var N = class {
320
320
  shrink() {
321
321
  Array.isArray(this.ids) && (this.ids.length = this.length), Array.isArray(this.values) && (this.values.length = this.length);
322
322
  }
323
- }, P = Symbol("runtimeNode"), F = 1e6;
323
+ }, I = Symbol("runtimeNode"), Se = 1e6;
324
324
  function Ce(e) {
325
325
  return e ? (t, n) => e.addDisposer(t, n) : () => () => void 0;
326
326
  }
327
- function I(e, t) {
328
- let n = {
327
+ function we(e, t, n = !0) {
328
+ let r = {
329
329
  id: e.id,
330
330
  name: e.name,
331
331
  kind: e.kind,
332
+ batchStable: n,
332
333
  get() {
333
334
  return e.value;
334
335
  },
@@ -338,27 +339,27 @@ function I(e, t) {
338
339
  };
339
340
  }
340
341
  };
341
- return Object.defineProperty(n, P, {
342
+ return Object.defineProperty(r, I, {
342
343
  enumerable: !1,
343
344
  configurable: !1,
344
345
  writable: !1,
345
346
  value: e
346
- }), t ? Object.assign(n, { set(e) {
347
+ }), t ? Object.assign(r, { set(e) {
347
348
  t(e);
348
- } }) : n;
349
+ } }) : r;
349
350
  }
350
- function we(e) {
351
- let t = e[P];
351
+ function Te(e) {
352
+ let t = e[I];
352
353
  if (!t) throw Error("ParamRef is not bound to this graph runtime. Expected runtime-created ref.");
353
354
  return t;
354
355
  }
355
- function Te(e) {
356
- return typeof e.rank == "number" ? e.rank : we(e).rank;
357
- }
358
356
  function Ee(e) {
357
+ return typeof e.rank == "number" ? e.rank : Te(e).rank;
358
+ }
359
+ function De(e) {
359
360
  for (let t of e) t();
360
361
  }
361
- var De = class {
362
+ var Oe = class {
362
363
  #e = 1;
363
364
  #t = 1;
364
365
  #n = 0;
@@ -372,8 +373,8 @@ var De = class {
372
373
  #u = /* @__PURE__ */ new Map();
373
374
  #d = /* @__PURE__ */ new Set();
374
375
  #f = /* @__PURE__ */ new Set();
375
- #p = new N();
376
- #m = new N();
376
+ #p = new F();
377
+ #m = new F();
377
378
  #h = /* @__PURE__ */ new Set();
378
379
  #g;
379
380
  constructor(e = {}) {
@@ -399,7 +400,7 @@ var De = class {
399
400
  }, l = () => {
400
401
  s.disposed = !0, s.listeners.clear(), u();
401
402
  }, u = this.#g(e, l);
402
- return Object.assign(I(s, c), { dispose: l });
403
+ return Object.assign(we(s, c, o), { dispose: l });
403
404
  }
404
405
  computed(e, t, n, r, i = {}) {
405
406
  return this.#_(e, t, n, r, i);
@@ -434,12 +435,12 @@ var De = class {
434
435
  })), l = c(), u = () => {
435
436
  s.disposed || (s.disposed = !0, d(), l.forEach((e) => e()), s.listeners.clear(), this.#d.delete(s));
436
437
  }, d = this.#g(e, u);
437
- return Object.assign(I(s), {
438
+ return Object.assign(we(s), {
438
439
  dispose: u,
439
440
  rebind: (e, n) => {
440
441
  if (s.disposed) throw Error("Cannot rebind disposed operation: " + t);
441
442
  let r = /* @__PURE__ */ new Set(), i = (e) => {
442
- let n = e[P];
443
+ let n = e[I];
443
444
  if (n === s) throw Error("Reactive dependency cycle: " + t);
444
445
  if (!r.has(n)) {
445
446
  r.add(n);
@@ -542,7 +543,7 @@ var De = class {
542
543
  #v(e) {
543
544
  this.#s++;
544
545
  try {
545
- Ee(e);
546
+ De(e);
546
547
  } finally {
547
548
  this.#s--, !this.#s && this.#c && (this.#c = !1, this.flushNow());
548
549
  }
@@ -571,7 +572,7 @@ var De = class {
571
572
  }
572
573
  #b(e) {
573
574
  let t = -1, n = 0;
574
- return () => (t !== this.#n && (n = 1 + e().reduce((e, t) => Math.max(e, Te(t)), 0), t = this.#n), n);
575
+ return () => (t !== this.#n && (n = 1 + e().reduce((e, t) => Math.max(e, Ee(t)), 0), t = this.#n), n);
575
576
  }
576
577
  #x(e) {
577
578
  if (this.#d.has(e)) {
@@ -588,8 +589,8 @@ var De = class {
588
589
  this.#f.add(e), this.#m.push(e, this.#C(e.rank)), this.#w();
589
590
  }
590
591
  #C(e) {
591
- let t = this.#t % F;
592
- return this.#t += 1, e * F + t;
592
+ let t = this.#t % Se;
593
+ return this.#t += 1, e * Se + t;
593
594
  }
594
595
  #w() {
595
596
  this.#r > 0 || this.#a || this.#o || (this.#a = !0, queueMicrotask(() => {
@@ -605,7 +606,7 @@ var De = class {
605
606
  this.#h.clear();
606
607
  }
607
608
  }
608
- }, Oe = class {
609
+ }, ke = class {
609
610
  #e = 1;
610
611
  #t = /* @__PURE__ */ new Map();
611
612
  createOwner(e, t) {
@@ -626,7 +627,7 @@ var De = class {
626
627
  t.clear(), this.#t.delete(e);
627
628
  }
628
629
  }
629
- }, ke = class {
630
+ }, Ae = class {
630
631
  #e = 1;
631
632
  #t = /* @__PURE__ */ new Map();
632
633
  createRootScope(e) {
@@ -658,24 +659,24 @@ var De = class {
658
659
  t.params.clear(), t.initializers.clear();
659
660
  }
660
661
  registerInitializer(e, t, n) {
661
- r(t);
662
- let i = this.#t.get(e);
663
- if (!i) throw Error("Unknown scope: " + e);
664
- if (i.params.has(t) || i.initializers.has(t)) throw Error(`Parameter "${t}" already exists in scope ${e}`);
665
- i.initializers.set(t, {
662
+ g(t);
663
+ let r = this.#t.get(e);
664
+ if (!r) throw Error("Unknown scope: " + e);
665
+ if (r.params.has(t) || r.initializers.has(t)) throw Error(`Parameter "${t}" already exists in scope ${e}`);
666
+ r.initializers.set(t, {
666
667
  initialize: n,
667
668
  initializing: !1
668
669
  });
669
670
  }
670
671
  register(e, t, n) {
671
- r(t);
672
- let i = this.#t.get(e);
673
- if (!i) throw Error("Unknown scope: " + e);
674
- if (i.params.has(t) || i.initializers.get(t)?.initializing === !1) throw Error("Parameter \"" + t + "\" already exists in scope " + e);
675
- return i.params.set(t, n), n;
672
+ g(t);
673
+ let r = this.#t.get(e);
674
+ if (!r) throw Error("Unknown scope: " + e);
675
+ if (r.params.has(t) || r.initializers.get(t)?.initializing === !1) throw Error("Parameter \"" + t + "\" already exists in scope " + e);
676
+ return r.params.set(t, n), n;
676
677
  }
677
678
  resolve(e, t) {
678
- r(t);
679
+ g(t);
679
680
  let n = e;
680
681
  for (; n;) {
681
682
  let e = this.#t.get(n);
@@ -699,13 +700,13 @@ var De = class {
699
700
  };
700
701
  //#endregion
701
702
  //#region ../core/src/paramRuntime/expressionCompiler.js
702
- function Ae(e, t = {}, n = {}) {
703
- return a(e, t, n);
703
+ function je(e, t = {}, n = {}) {
704
+ return f(e, t, n);
704
705
  }
705
706
  //#endregion
706
707
  //#region ../core/src/paramRuntime/expressionRef.js
707
- function L(e, t, n = {}) {
708
- let r = {}, i = Ae(e, r, n), a = /* @__PURE__ */ new Map();
708
+ function Me(e, t, n = {}) {
709
+ let r = {}, i = je(e, r, n), a = /* @__PURE__ */ new Map();
709
710
  for (let n of i.globals) {
710
711
  if (a.has(n)) continue;
711
712
  let i = t(n);
@@ -729,6 +730,17 @@ function L(e, t, n = {}) {
729
730
  }, i.invalidate = () => {
730
731
  for (let e of o) e();
731
732
  o.clear();
733
+ }, i.createSnapshotEvaluator = () => {
734
+ let e = {};
735
+ for (let t of Object.keys(r)) a.has(t) || (e[t] = r[t]);
736
+ for (let [t, n] of a) n.batchStable || Object.defineProperty(e, t, {
737
+ enumerable: !0,
738
+ get: () => n.get()
739
+ });
740
+ let t = Object.assign(i.createEvaluator(e), { refresh() {
741
+ for (let [t, n] of a) n.batchStable && (e[t] = n.get());
742
+ } });
743
+ return t.refresh(), t;
732
744
  }, i.identifier = () => i.code + "|" + Array.from(a.values()).map((e) => e.id).concat((i.scaleDependencies ?? []).map((e) => e.id)).join(","), i.dependencies = Array.from(a.values()).concat(i.scaleDependencies ?? []), {
733
745
  expression: i,
734
746
  dependencies: i.dependencies
@@ -736,10 +748,10 @@ function L(e, t, n = {}) {
736
748
  }
737
749
  //#endregion
738
750
  //#region ../core/src/paramRuntime/paramRuntime.js
739
- var je = class {
740
- #e = new Oe();
741
- #t = new De({ lifecycleRegistry: this.#e });
742
- #n = new ke();
751
+ var Ne = class {
752
+ #e = new ke();
753
+ #t = new Oe({ lifecycleRegistry: this.#e });
754
+ #n = new Ae();
743
755
  createScope(e) {
744
756
  let t = this.#e.createOwner("scope", e ?? "root");
745
757
  return e ? this.#n.createChildScope(t, e) : this.#n.createRootScope(t);
@@ -764,11 +776,11 @@ var je = class {
764
776
  return this.#n.register(e, t, a);
765
777
  }
766
778
  registerDerived(e, t, n, r) {
767
- let { expression: i, dependencies: a } = L(n, (t) => this.resolve(r?.expressionScope ?? e, t), r), o = this.#n.getOwnerId(e), s = this.#t.computed(o, t, a, () => i(null));
779
+ let { expression: i, dependencies: a } = Me(n, (t) => this.resolve(r?.expressionScope ?? e, t), r), o = this.#n.getOwnerId(e), s = this.#t.computed(o, t, a, () => i(null));
768
780
  return this.#n.register(e, t, s);
769
781
  }
770
782
  createExpression(e, t, n) {
771
- let { expression: r } = L(t, (t) => this.resolve(e, t), n);
783
+ let { expression: r } = Me(t, (t) => this.resolve(e, t), n);
772
784
  return r;
773
785
  }
774
786
  resolve(e, t) {
@@ -801,11 +813,11 @@ var je = class {
801
813
  whenPropagated(e) {
802
814
  return this.#t.whenPropagated(e);
803
815
  }
804
- }, Me = (e) => new Promise((t) => setTimeout(t, e));
805
- function Ne() {
816
+ }, Pe = (e) => new Promise((t) => setTimeout(t, e));
817
+ function Fe() {
806
818
  return { canceled: !1 };
807
819
  }
808
- function Pe(e) {
820
+ function Ie(e) {
809
821
  let t = e.requestAnimationFrame || window.requestAnimationFrame, n = e.signal, r = e.cancelToken, i = () => new Promise((i, a) => {
810
822
  if (r?.canceled) return i();
811
823
  if (n?.aborted) return a("aborted");
@@ -818,11 +830,11 @@ function Pe(e) {
818
830
  };
819
831
  t(m);
820
832
  });
821
- return e.delay ? r?.canceled ? Promise.resolve() : n?.aborted ? Promise.reject("aborted") : Me(e.delay).then(i) : i();
833
+ return e.delay ? r?.canceled ? Promise.resolve() : n?.aborted ? Promise.reject("aborted") : Pe(e.delay).then(i) : i();
822
834
  }
823
835
  //#endregion
824
836
  //#region ../core/src/utils/animator.js
825
- var Fe = class {
837
+ var Le = class {
826
838
  constructor(e) {
827
839
  this._renderCallback = e, this._renderRequested = !1, this._finalized = !1, this._warn = !1, this._animationFrameRequest = void 0, this.transitions = [], this.transitionsEnabled = !0;
828
840
  }
@@ -848,13 +860,13 @@ var Fe = class {
848
860
  this._finalized = !0, this._renderRequested = !1, this.transitions = [], this._animationFrameRequest !== void 0 && (window.cancelAnimationFrame(this._animationFrameRequest), this._animationFrameRequest = void 0);
849
861
  }
850
862
  transition(e) {
851
- return Pe({
863
+ return Ie({
852
864
  requestAnimationFrame: (e) => this.requestTransition(e),
853
865
  ...e
854
866
  });
855
867
  }
856
868
  };
857
- function R(e, t, n, r, i) {
869
+ function Re(e, t, n, r, i) {
858
870
  let a = 0, o = !0, s = !1, c = structuredClone(i), l = c;
859
871
  function u(e, t, n, r) {
860
872
  return t + (e - t) * 2 ** (-n / r);
@@ -873,7 +885,7 @@ function R(e, t, n, r, i) {
873
885
  s || (s = !0, e.requestTransition(d));
874
886
  }
875
887
  function p(n) {
876
- l = n, e.transitionsEnabled === !1 ? (c = l, o = !0, s = !1, e.cancelTransition(d), t(c)) : o && (o = !1, a = Ie(), d(a));
888
+ l = n, e.transitionsEnabled === !1 ? (c = l, o = !0, s = !1, e.cancelTransition(d), t(c)) : o && (o = !1, a = ze(), d(a));
877
889
  }
878
890
  return p.stop = () => {
879
891
  o = !0, s = !1, e.cancelTransition(d);
@@ -881,13 +893,13 @@ function R(e, t, n, r, i) {
881
893
  l = e, c = e, p.stop(), t(c);
882
894
  }, p;
883
895
  }
884
- function Ie() {
896
+ function ze() {
885
897
  let e = globalThis.document?.timeline?.currentTime;
886
898
  return typeof e == "number" ? e : performance.now();
887
899
  }
888
900
  //#endregion
889
901
  //#region ../core/src/paramRuntime/viewParamRuntime.js
890
- var z = class {
902
+ var Be = class {
891
903
  #e;
892
904
  #t;
893
905
  #n = /* @__PURE__ */ new Map();
@@ -895,37 +907,69 @@ var z = class {
895
907
  #i = /* @__PURE__ */ new Map();
896
908
  #a = /* @__PURE__ */ new Set();
897
909
  #o = /* @__PURE__ */ new Map();
898
- #s = /* @__PURE__ */ new Map();
899
- #c;
900
- #l;
901
- #u;
910
+ #s;
911
+ #c = /* @__PURE__ */ new Map();
912
+ #l = /* @__PURE__ */ new Map();
913
+ #u = /* @__PURE__ */ new Map();
902
914
  #d;
903
- #f = !1;
915
+ #f;
916
+ #p;
917
+ #m;
918
+ #h = !1;
904
919
  constructor(e, t, n, r = {}) {
905
- this.#c = e ?? (() => void 0), this.#l = t ?? (() => void 0), this.#u = n, this.#d = r.snapTransitionedUpdates ?? !1;
906
- let i = this.#c();
907
- i ? (this.#e = i.#e, this.#t = this.#e.createScope(i.#t)) : (this.#e = new je(), this.#t = this.#e.createScope());
920
+ this.#d = e ?? (() => void 0), this.#f = t ?? (() => void 0), this.#p = n, this.#m = r.settleTemporalUpdatesImmediately ?? !1;
921
+ let i = this.#d();
922
+ i ? (this.#e = i.#e, this.#t = this.#e.createScope(i.#t)) : (this.#e = new Ne(), this.#t = this.#e.createScope());
923
+ }
924
+ setSelectionSource(e) {
925
+ this.#s = e;
926
+ }
927
+ findSelectionCapability(e) {
928
+ let t = this.findRuntimeForParam(e), n = t && t.#c.get(e);
929
+ if (!n?.size) return;
930
+ let r = Array.from(n, (t) => ({
931
+ type: t.kind,
932
+ components: t.components.map((e) => ({
933
+ component: e,
934
+ type: t.source?.getScaleResolution(e)?.type
935
+ })),
936
+ location: t.source?.name ?? e
937
+ })), i = r[0], a = JSON.stringify(i.components), o = r.find(({ components: e }) => JSON.stringify(e) !== a);
938
+ if (o) throw Error(`Conflicting selection declarations for "${e}" in "${i.location}" and "${o.location}".`);
939
+ return i;
908
940
  }
909
- get #p() {
910
- return { resolveScaleResolution: this.#l };
941
+ #g(e) {
942
+ if (!("select" in e)) return;
943
+ let t = a(e.select), n = t.type === "interval" ? "interval" : t.toggle ? "multi" : "single", r = t.type === "interval" ? Array.from(new Set(t.encodings)).sort() : [], i = e.push === "outer" ? this.findRuntimeForParam(e.name) : this, o = {
944
+ kind: n,
945
+ components: r,
946
+ source: this.#s
947
+ }, s = i.#c.get(e.name) ?? /* @__PURE__ */ new Set(), c = s.values().next().value;
948
+ if (c && (c.kind !== n || JSON.stringify(c.components) !== JSON.stringify(r))) throw Error(`Conflicting selection declarations for "${e.name}" in "${c.source?.name ?? e.name}" and "${this.#s?.name ?? e.name}".`);
949
+ s.add(o), i.#c.set(e.name, s), this.#e.addScopeDisposer(this.#t, () => {
950
+ s.delete(o);
951
+ });
952
+ }
953
+ get #_() {
954
+ return { resolveScaleResolution: this.#f };
911
955
  }
912
956
  registerParam(e, t = {}) {
913
957
  let n = e.name;
914
- if (r(n), this.#i.has(n) || this.#a.has(n)) throw Error("Parameter \"" + n + "\" already registered in this scope.");
915
- if (Re(e), t.defer) {
958
+ if (g(n), this.#i.has(n) || this.#a.has(n)) throw Error("Parameter \"" + n + "\" already registered in this scope.");
959
+ if (He(e), t.defer) {
916
960
  if (!("expr" in e)) throw Error("Only expression parameters can be deferred.");
917
961
  return this.#e.registerInitializer(this.#t, n, () => {
918
- this.#m(e);
962
+ this.#v(e);
919
963
  }), this.#i.set(n, e), () => {
920
964
  throw Error("Cannot set derived parameter \"" + n + "\".");
921
965
  };
922
966
  }
923
- return this.#m(e);
967
+ return this.#v(e);
924
968
  }
925
969
  registerLazyExpression(e, t, n) {
926
970
  this.#e.registerInitializer(this.#t, e, () => {
927
971
  n?.();
928
- let r = this.#e.registerDerived(this.#t, e, t, this.#p);
972
+ let r = this.#e.registerDerived(this.#t, e, t, this.#_);
929
973
  this.#r.set(e, r);
930
974
  }), this.#a.add(e);
931
975
  }
@@ -935,7 +979,7 @@ var z = class {
935
979
  this.#e.registerInitializer(this.#t, e, () => {
936
980
  let r = this.#e.registerDerived(this.#t, e, t, {
937
981
  expressionScope: n.#t,
938
- ...n.#p
982
+ ...n.#_
939
983
  });
940
984
  this.#r.set(e, r);
941
985
  }), this.#i.set(e, {
@@ -943,64 +987,65 @@ var z = class {
943
987
  expr: t
944
988
  });
945
989
  }
946
- #m(e) {
947
- let n = e.name, r, i;
990
+ #v(e) {
991
+ let t = e.name, n, i;
948
992
  if (e.push == "outer") {
949
- let a = this.findRuntimeForParam(n);
950
- if (!a) throw Error(`Parameter "${n}" not found in outer scope!`);
951
- let o = a.paramConfigs.get(n);
952
- if (!o) throw Error(`Outer parameter "${n}" exists as a value but has no registered config.`);
953
- if ("expr" in o || "select" in o || "ruler" in o) throw Error(`The outer parameter "${n}" must not have expr, select, or ruler properties!`);
954
- r = (e) => {
955
- a.setValue(n, e);
956
- }, this.#n.set(n, r), "ruler" in e && (i = t(e, this), r(i));
957
- } else if ("value" in e) i = t(e, this), r = "transition" in e ? this.#g(n, i, e.transition) : this.#h(n, i);
993
+ let a = this.findRuntimeForParam(t);
994
+ if (!a) throw Error(`Parameter "${t}" not found in outer scope!`);
995
+ let o = a.paramConfigs.get(t);
996
+ if (!o) throw Error(`Outer parameter "${t}" exists as a value but has no registered config.`);
997
+ if ("expr" in o || "select" in o || "ruler" in o) throw Error(`The outer parameter "${t}" must not have expr, select, or ruler properties!`);
998
+ n = (e) => {
999
+ a.setValue(t, e);
1000
+ }, this.#n.set(t, n), "ruler" in e && (i = r(e, this), n(i));
1001
+ } else if ("value" in e) i = r(e, this), n = "transition" in e ? this.#b(t, i, e.transition) : this.#y(t, i);
958
1002
  else if ("expr" in e) {
959
- if ("transition" in e) this.#_(n, e.expr, e.transition);
1003
+ if ("transition" in e) this.#x(t, e.expr, e.transition);
1004
+ else if ("debounce" in e) this.#S(t, e.expr, e.debounce);
960
1005
  else {
961
- let t = this.#e.registerDerived(this.#t, n, e.expr, this.#p);
962
- this.#r.set(n, t);
1006
+ let n = this.#e.registerDerived(this.#t, t, e.expr, this.#_);
1007
+ this.#r.set(t, n);
963
1008
  }
964
- r = () => {
965
- throw Error("Cannot set derived parameter \"" + n + "\".");
1009
+ n = () => {
1010
+ throw Error("Cannot set derived parameter \"" + t + "\".");
966
1011
  };
967
- } else i = t(e, this), r = this.#h(n, i);
1012
+ } else i = r(e, this), n = this.#y(t, i);
968
1013
  if ("select" in e) {
969
- if (i ??= t(e, this), !this.#n.has(n)) {
970
- let e = this.#e.registerSelection(this.#t, n, i);
971
- this.#r.set(n, e), this.#n.set(n, (t) => {
1014
+ if (i ??= r(e, this), !this.#n.has(t)) {
1015
+ let e = this.#e.registerSelection(this.#t, t, i);
1016
+ this.#r.set(t, e), this.#n.set(t, (t) => {
972
1017
  e.set(t), this.#e.flushNow();
973
- }), r = this.#n.get(n);
1018
+ }), n = this.#n.get(t);
974
1019
  }
975
- r(i);
1020
+ n(i);
976
1021
  }
977
- return this.#i.set(n, e), r;
1022
+ return this.#i.set(t, e), this.#g(e), n;
978
1023
  }
979
1024
  allocateSetter(e, t, n = !1) {
980
- if (r(e), this.#n.has(e)) throw Error("Setter already allocated for parameter: " + e);
981
- let i = this.#e.registerBase(this.#t, e, t, { notify: !n });
982
- this.#r.set(e, i);
983
- let a = (e) => {
984
- i.set(e), this.#e.flushNow();
1025
+ if (g(e), this.#n.has(e)) throw Error("Setter already allocated for parameter: " + e);
1026
+ let r = this.#e.registerBase(this.#t, e, t, { notify: !n });
1027
+ this.#r.set(e, r);
1028
+ let i = (e) => {
1029
+ r.set(e), this.#e.flushNow();
985
1030
  };
986
- return this.#n.set(e, a), a;
1031
+ return this.#n.set(e, i), i;
987
1032
  }
988
1033
  setValue(e, t, n) {
989
- r(e);
990
- let i = this.#n.get(e);
991
- if (!i) throw Error("Writable parameter not found in this scope: " + e);
992
- i(t, n);
1034
+ g(e);
1035
+ let r = this.#n.get(e);
1036
+ if (!r) throw Error("Writable parameter not found in this scope: " + e);
1037
+ r(t, n);
993
1038
  }
994
1039
  getValue(e) {
995
1040
  return !this.#r.has(e) && this.hasLocalParam(e) && this.#e.resolve(this.#t, e), this.#r.get(e)?.get();
996
1041
  }
997
1042
  getParamRef(e) {
998
- r(e);
1043
+ g(e);
999
1044
  let t = this.findRuntimeForParam(e);
1000
1045
  if (t) return t.#r.has(e) || t.#e.resolve(t.#t, e), t.#r.get(e);
1001
1046
  }
1002
1047
  getTargetValue(e) {
1003
- return r(e), this.#s.get(e)?.target ?? this.getValue(e);
1048
+ return g(e), this.#l.get(e)?.target ?? this.#u.get(e)?.target ?? this.getValue(e);
1004
1049
  }
1005
1050
  subscribe(e, t) {
1006
1051
  let n = this.getParamRef(e);
@@ -1017,7 +1062,7 @@ var z = class {
1017
1062
  return this.#i;
1018
1063
  }
1019
1064
  hasLocalParam(e) {
1020
- r(e);
1065
+ g(e);
1021
1066
  let t = this.#i.get(e);
1022
1067
  return this.#r.has(e) || this.#a.has(e) || t !== void 0 && "expr" in t;
1023
1068
  }
@@ -1026,17 +1071,17 @@ var z = class {
1026
1071
  return t !== void 0 && !t.#r.has(e);
1027
1072
  }
1028
1073
  hasConfiguredParamInScopeChain(e) {
1029
- return r(e), this.#i.has(e) ? !0 : this.#c()?.hasConfiguredParamInScopeChain(e) ?? !1;
1074
+ return g(e), this.#i.has(e) ? !0 : this.#d()?.hasConfiguredParamInScopeChain(e) ?? !1;
1030
1075
  }
1031
1076
  findRuntimeForParam(e) {
1032
- return this.hasLocalParam(e) ? this : this.#c()?.findRuntimeForParam(e);
1077
+ return this.hasLocalParam(e) ? this : this.#d()?.findRuntimeForParam(e);
1033
1078
  }
1034
1079
  findConfiguredParam(e) {
1035
1080
  let t = this.#i.get(e);
1036
1081
  return t ? {
1037
1082
  runtime: this,
1038
1083
  config: t
1039
- } : this.#c()?.findConfiguredParam(e);
1084
+ } : this.#d()?.findConfiguredParam(e);
1040
1085
  }
1041
1086
  registerSelectionController(e, t) {
1042
1087
  let n = this.#o.get(e);
@@ -1057,22 +1102,22 @@ var z = class {
1057
1102
  let r = this.#i.get(t);
1058
1103
  e.push({
1059
1104
  name: t,
1060
- kind: Le(r),
1105
+ kind: Ve(r),
1061
1106
  value: n.get(),
1062
1107
  writable: this.#n.has(t),
1063
1108
  configured: !!r,
1064
1109
  config: r ? structuredClone(r) : void 0,
1065
- target: this.#s.get(t)?.target
1110
+ target: this.#l.get(t)?.target ?? this.#u.get(t)?.target
1066
1111
  });
1067
1112
  }
1068
1113
  return {
1069
1114
  scopeId: this.#t,
1070
- disposed: this.#f,
1115
+ disposed: this.#h,
1071
1116
  params: e
1072
1117
  };
1073
1118
  }
1074
1119
  createExpression(e) {
1075
- return this.#e.createExpression(this.#t, e, this.#p);
1120
+ return this.#e.createExpression(this.#t, e, this.#_);
1076
1121
  }
1077
1122
  watchExpression(e, t, n = {}) {
1078
1123
  let r = this.createExpression(e), i = r.subscribe(t);
@@ -1099,7 +1144,7 @@ var z = class {
1099
1144
  cancelUpdate(e) {
1100
1145
  this.#e.cancelUpdate(e);
1101
1146
  }
1102
- #h(e, t) {
1147
+ #y(e, t) {
1103
1148
  let n = this.#e.registerBase(this.#t, e, t);
1104
1149
  this.#r.set(e, n);
1105
1150
  let r = (e) => {
@@ -1107,36 +1152,51 @@ var z = class {
1107
1152
  };
1108
1153
  return this.#n.set(e, r), r;
1109
1154
  }
1110
- #g(e, t, n) {
1111
- let r = this.#v(e, t, n), i = (t, n) => {
1112
- this.#y(e, r, t, n);
1155
+ #b(e, t, n) {
1156
+ let r = this.#C(e, t, n), i = (t, n) => {
1157
+ this.#w(e, r, t, n);
1113
1158
  };
1114
1159
  return this.#n.set(e, i), i;
1115
1160
  }
1116
- #_(e, t, n) {
1117
- let r = this.createExpression(t), i = this.#v(e, r(null), n), a = r.subscribe(() => {
1118
- this.#y(e, i, r(null), { animate: !this.#d });
1161
+ #x(e, t, n) {
1162
+ let r = this.createExpression(t), i = this.#C(e, r(null), n), a = r.subscribe(() => {
1163
+ this.#w(e, i, r(null), { animate: !this.#m });
1119
1164
  });
1120
1165
  this.#e.addScopeDisposer(this.#t, a);
1121
1166
  }
1122
- #v(e, t, n) {
1123
- let r = B(e, t), i = this.#e.registerBase(this.#t, e, r);
1167
+ #S(e, t, n) {
1168
+ let r = this.createExpression(t), i = r(null), a = this.#e.registerBase(this.#t, e, i);
1169
+ this.#r.set(e, a);
1170
+ let o = {
1171
+ target: i,
1172
+ timeout: void 0
1173
+ }, s = () => {
1174
+ o.timeout = void 0, a.set(o.target), this.#e.flushNow();
1175
+ }, c = r.subscribe(() => {
1176
+ o.target = r(null), clearTimeout(o.timeout), o.timeout = void 0, o.target !== a.get() && (this.#m ? s() : o.timeout = setTimeout(s, n));
1177
+ });
1178
+ this.#u.set(e, o), this.#e.addScopeDisposer(this.#t, () => {
1179
+ clearTimeout(o.timeout), c(), this.#u.delete(e);
1180
+ });
1181
+ }
1182
+ #C(e, t, n) {
1183
+ let r = Ue(e, t), i = this.#e.registerBase(this.#t, e, r);
1124
1184
  this.#r.set(e, i);
1125
- let a = this.#u;
1185
+ let a = this.#p;
1126
1186
  if (!a) throw Error(`The parameter "${e}" uses transition but no animator is available.`);
1127
- let o = R(a, ({ value: e }) => {
1187
+ let o = Re(a, ({ value: e }) => {
1128
1188
  i.set(e), this.#e.flushNow();
1129
1189
  }, n.halfLife ?? 80, n.epsilon ?? .01, { value: i.get() }), s = {
1130
1190
  target: i.get(),
1131
1191
  smoother: o,
1132
1192
  dispose: () => {
1133
- o.stop(), this.#s.delete(e);
1193
+ o.stop(), this.#l.delete(e);
1134
1194
  }
1135
1195
  };
1136
- return this.#s.set(e, s), this.#e.addScopeDisposer(this.#t, s.dispose), s;
1196
+ return this.#l.set(e, s), this.#e.addScopeDisposer(this.#t, s.dispose), s;
1137
1197
  }
1138
- #y(e, t, n, r = {}) {
1139
- let i = B(e, n);
1198
+ #w(e, t, n, r = {}) {
1199
+ let i = Ue(e, n);
1140
1200
  t.target = i, r.animate === !1 ? t.smoother.snap({ value: i }) : t.smoother({ value: i });
1141
1201
  }
1142
1202
  evaluateAndGet(e) {
@@ -1152,28 +1212,33 @@ var z = class {
1152
1212
  return this.#e.whenPropagated(e);
1153
1213
  }
1154
1214
  finalizeInitialization() {
1155
- this.#d = !1;
1215
+ this.#m = !1;
1156
1216
  }
1157
1217
  dispose() {
1158
- this.#f || (this.#f = !0, this.#e.disposeScope(this.#t), this.#n.clear(), this.#r.clear(), this.#i.clear(), this.#a.clear(), this.#o.clear(), this.#s.clear());
1218
+ this.#h || (this.#h = !0, this.#e.disposeScope(this.#t), this.#n.clear(), this.#r.clear(), this.#i.clear(), this.#a.clear(), this.#o.clear(), this.#l.clear(), this.#u.clear());
1159
1219
  }
1160
1220
  hasPointSelections() {
1161
- for (let t of this.#i.values()) if (e(t)) {
1162
- let e = t.select;
1163
- if (s(e)) {
1164
- if (e == "point") return !0;
1165
- } else if (e.type == "point") return !0;
1221
+ for (let e of this.#i.values()) if (t(e)) {
1222
+ let t = e.select;
1223
+ if (te(t)) {
1224
+ if (t == "point") return !0;
1225
+ } else if (t.type == "point") return !0;
1166
1226
  }
1167
1227
  return !1;
1168
1228
  }
1169
1229
  };
1170
- function Le(e) {
1230
+ function Ve(e) {
1171
1231
  return e ? e.push === "outer" ? "push" : "select" in e ? "selection" : "ruler" in e ? "ruler" : "expr" in e ? "derived" : "base" : "auto";
1172
1232
  }
1173
- function Re(e) {
1233
+ function He(e) {
1174
1234
  let t = e.name;
1175
1235
  if ("value" in e && "expr" in e) throw Error(`The parameter "${t}" must not have both value and expr properties!`);
1176
1236
  if ("expr" in e && "bind" in e) throw Error(`The parameter "${t}" must not have both expr and bind properties!`);
1237
+ if ("debounce" in e) {
1238
+ if (!("expr" in e) || e.push === "outer") throw Error(`The debounced parameter "${t}" must have an expr property and must not use push.`);
1239
+ if ("transition" in e) throw Error(`The parameter "${t}" must not use debounce and transition together.`);
1240
+ if (!Number.isFinite(e.debounce) || e.debounce < 0) throw Error(`The debounce for parameter "${t}" must be a non-negative finite number.`);
1241
+ }
1177
1242
  if (!("transition" in e)) return;
1178
1243
  if ("select" in e || "ruler" in e || e.push === "outer") throw Error(`The parameter "${t}" must not use transition with select, ruler, or push.`);
1179
1244
  if (!("value" in e || "expr" in e)) throw Error(`The transitioned parameter "${t}" must have a value or expr property.`);
@@ -1183,62 +1248,62 @@ function Re(e) {
1183
1248
  if (n.halfLife != null && (!Number.isFinite(n.halfLife) || n.halfLife <= 0)) throw Error(`The transition halfLife for parameter "${t}" must be a positive finite number.`);
1184
1249
  if (n.epsilon != null && (!Number.isFinite(n.epsilon) || n.epsilon < 0)) throw Error(`The transition epsilon for parameter "${t}" must be a non-negative finite number.`);
1185
1250
  }
1186
- function B(e, t) {
1251
+ function Ue(e, t) {
1187
1252
  if (typeof t != "number" || !Number.isFinite(t)) throw Error(`Transitioned parameter "${e}" must have a finite numeric value.`);
1188
1253
  return t;
1189
1254
  }
1190
1255
  //#endregion
1191
1256
  //#region ../core/src/utils/addBaseUrl.js
1192
- function ze(e, t) {
1257
+ function We(e, t) {
1193
1258
  return !t || /^(data:|([A-Za-z]+:)?\/\/)/.test(e) || e.startsWith("/") ? e : (t.endsWith("/") || (t += "/"), t + e);
1194
1259
  }
1195
- function Be(e) {
1260
+ function Ge(e) {
1196
1261
  if (!e) return e;
1197
1262
  if (/[?#]/.test(e)) throw Error(`Invalid base URL: ${e} - cannot contain query or hash.`);
1198
1263
  return e.endsWith("/") ? e : e + "/";
1199
1264
  }
1200
1265
  //#endregion
1201
1266
  //#region ../core/src/config/mergeConfig.js
1202
- function V(e) {
1203
- return o(e) && !Array.isArray(e);
1267
+ function L(e) {
1268
+ return s(e) && !Array.isArray(e);
1204
1269
  }
1205
- function Ve(e) {
1270
+ function Ke(e) {
1206
1271
  let t = {};
1207
- for (let [n, r] of Object.entries(e)) t[n] = H(r);
1272
+ for (let [n, r] of Object.entries(e)) t[n] = R(r);
1208
1273
  return t;
1209
1274
  }
1210
- function H(e) {
1211
- return Array.isArray(e) ? e.map(H) : V(e) ? Ve(e) : e;
1275
+ function R(e) {
1276
+ return Array.isArray(e) ? e.map(R) : L(e) ? Ke(e) : e;
1212
1277
  }
1213
- function U(e, t) {
1278
+ function z(e, t) {
1214
1279
  for (let [n, r] of Object.entries(t)) {
1215
1280
  if (r === void 0) continue;
1216
1281
  let t = e[n];
1217
- V(r) && V(t) ? U(t, r) : e[n] = H(r);
1282
+ L(r) && L(t) ? z(t, r) : e[n] = R(r);
1218
1283
  }
1219
1284
  return e;
1220
1285
  }
1221
- function He(e) {
1286
+ function B(e) {
1222
1287
  let t = {};
1223
- for (let n of e) n && U(t, n);
1288
+ for (let n of e) n && z(t, n);
1224
1289
  return t;
1225
1290
  }
1226
1291
  //#endregion
1227
1292
  //#region ../core/src/view/viewChrome.js
1228
- var W = /* @__PURE__ */ new WeakMap();
1229
- function Ue(e, t) {
1230
- W.set(e, t);
1293
+ var V = /* @__PURE__ */ new WeakMap();
1294
+ function qe(e, t) {
1295
+ V.set(e, t);
1231
1296
  }
1232
- function We(e) {
1233
- return W.get(e);
1297
+ function Je(e) {
1298
+ return V.get(e);
1234
1299
  }
1235
- function Ge(e) {
1236
- return W.has(e);
1300
+ function H(e) {
1301
+ return V.has(e);
1237
1302
  }
1238
- function Ke(e) {
1303
+ function U(e) {
1239
1304
  let t = e;
1240
1305
  for (; t;) {
1241
- let n = W.get(t);
1306
+ let n = V.get(t);
1242
1307
  if (n === "excludeSubtree" || t === e && n === "exclude") return !0;
1243
1308
  t = t.layoutParent;
1244
1309
  }
@@ -1246,16 +1311,16 @@ function Ke(e) {
1246
1311
  }
1247
1312
  //#endregion
1248
1313
  //#region ../core/src/view/postScaleParams.js
1249
- var qe = /* @__PURE__ */ new WeakMap();
1250
- function Je(e, t) {
1251
- qe.set(e, t);
1314
+ var W = /* @__PURE__ */ new WeakMap();
1315
+ function Ye(e, t) {
1316
+ W.set(e, t);
1252
1317
  }
1253
- function Ye(e) {
1254
- return qe.get(e);
1318
+ function Xe(e) {
1319
+ return W.get(e);
1255
1320
  }
1256
1321
  //#endregion
1257
1322
  //#region ../core/src/data/namedDataScope.js
1258
- var Xe = class {
1323
+ var Ze = class {
1259
1324
  name;
1260
1325
  owner;
1261
1326
  getDefaultData;
@@ -1293,13 +1358,13 @@ var Xe = class {
1293
1358
  dispose() {
1294
1359
  this.#e = void 0, this.#t = !1, this.#n++, this.#r = !0;
1295
1360
  }
1296
- }, Ze = class {
1361
+ }, Qe = class {
1297
1362
  view;
1298
1363
  #e = /* @__PURE__ */ new Map();
1299
1364
  #t = /* @__PURE__ */ new Map();
1300
1365
  constructor(e) {
1301
1366
  this.view = e;
1302
- for (let [t, n] of Object.entries(e.spec.datasets ?? {})) this.#e.set(t, new Xe(t, e, () => n));
1367
+ for (let [t, n] of Object.entries(e.spec.datasets ?? {})) this.#e.set(t, new Ze(t, e, () => n));
1303
1368
  }
1304
1369
  getLocalBinding(e) {
1305
1370
  return this.#e.get(e);
@@ -1313,7 +1378,7 @@ var Xe = class {
1313
1378
  let n = this.view.dataParent?.namedDataScope;
1314
1379
  if (n) return n.resolve(e);
1315
1380
  let r = this.#t.get(e);
1316
- return r || (r = new Xe(e, void 0, () => this.view.context.getNamedDataFromProvider(e)), this.#t.set(e, r)), r;
1381
+ return r || (r = new Ze(e, void 0, () => this.view.context.getNamedDataFromProvider(e)), this.#t.set(e, r)), r;
1317
1382
  }
1318
1383
  dispose() {
1319
1384
  for (let e of this.#e.values()) e.dispose();
@@ -1321,7 +1386,7 @@ var Xe = class {
1321
1386
  for (let e of this.#t.values()) e.dispose();
1322
1387
  this.#t.clear();
1323
1388
  }
1324
- }, G = "VISIT_SKIP", K = "VISIT_STOP", q = (e) => e, Qe = class {
1389
+ }, G = "VISIT_SKIP", K = "VISIT_STOP", q = (e) => e, $e = class {
1325
1390
  spec;
1326
1391
  namedDataScope;
1327
1392
  #e;
@@ -1340,27 +1405,27 @@ var Xe = class {
1340
1405
  #f = [];
1341
1406
  #p = "none";
1342
1407
  #m = /* @__PURE__ */ new Map();
1343
- facetCoords = new ae([], JSON.stringify);
1408
+ facetCoords = new ee([], JSON.stringify);
1344
1409
  constructor(e, t, n, r, i, a = {}) {
1345
1410
  if (!e) throw Error("View spec must be defined!");
1346
- if (this.context = t, this.layoutParent = n, this.dataParent = r, this.#t = i, this.spec = e, this.namedDataScope = new Ze(this), r && e.theme !== void 0) throw Error("\"theme\" is only supported at the root specification. Use \"config\" and \"style\" for subtree customization.");
1411
+ if (this.context = t, this.layoutParent = n, this.dataParent = r, this.#t = i, this.spec = e, this.namedDataScope = new Qe(this), r && e.theme !== void 0) throw Error("\"theme\" is only supported at the root specification. Use \"config\" and \"style\" for subtree customization.");
1347
1412
  let o = r ? r.getConfigScopes() : [t.getBaseConfig()], s = e.config;
1348
1413
  this.#e = [...o, s].filter((e) => !!e), this.resolutions = {
1349
1414
  scale: {},
1350
1415
  axis: {},
1351
1416
  legend: {}
1352
- }, ne(this), this.options = {
1417
+ }, re(this), this.options = {
1353
1418
  inheritEncoding: !1,
1354
1419
  layoutSizeParams: "own",
1355
1420
  ...a
1356
1421
  }, this.flowHandle = void 0, this.needsAxes = {
1357
1422
  x: !1,
1358
1423
  y: !1
1359
- }, this.paramRuntime = new z(() => this.dataParent?.paramRuntime, (e) => this.getScaleResolution(e), t.animator, { snapTransitionedUpdates: !0 }), "mark" in e && this.paramRuntime.registerLazyExpression("zoomLevel", "zoomLevel()", () => oe("The automatic zoomLevel parameter is deprecated. Use zoomLevel() or an explicit channel such as zoomLevel(\"x\") instead."));
1360
- let c = [...e.params ?? [], ...Ye(e) ?? []];
1361
- for (let e of c) {
1424
+ }, this.paramRuntime = new Be(() => this.dataParent?.paramRuntime, (e) => this.getScaleResolution(e), t.animator, { settleTemporalUpdatesImmediately: !0 }), this.paramRuntime.setSelectionSource(this), "mark" in e && this.paramRuntime.registerLazyExpression("zoomLevel", "zoomLevel()", () => ae("The automatic zoomLevel parameter is deprecated. Use zoomLevel() or an explicit channel such as zoomLevel(\"x\") instead."));
1425
+ let l = [...e.params ?? [], ...Xe(e) ?? []];
1426
+ for (let e of l) {
1362
1427
  if ("expr" in e) {
1363
- let { usesScaleHelper: t, globals: n } = f(e.expr), r = n.some((e) => this.paramRuntime.isPendingParam(e));
1428
+ let { usesScaleHelper: t, globals: n } = c(e.expr), r = n.some((e) => this.paramRuntime.isPendingParam(e));
1364
1429
  if (t || r) {
1365
1430
  this.paramRuntime.registerParam(e, { defer: !0 }), this.#d.push(e.name);
1366
1431
  continue;
@@ -1386,18 +1451,18 @@ var Xe = class {
1386
1451
  return this.#t;
1387
1452
  }
1388
1453
  getConfig() {
1389
- return He(this.#e);
1454
+ return B(this.#e);
1390
1455
  }
1391
1456
  getCursorSpec() {
1392
1457
  return this.spec.cursor;
1393
1458
  }
1394
1459
  getCursor() {
1395
1460
  let e = this.getCursorSpec();
1396
- return n(e) ? this.paramRuntime.evaluateAndGet(e.expr) : e;
1461
+ return i(e) ? this.paramRuntime.evaluateAndGet(e.expr) : e;
1397
1462
  }
1398
1463
  watchCursor(e, t) {
1399
- let r = this.getCursorSpec();
1400
- n(r) && this.paramRuntime.watchExpression(r.expr, e, {
1464
+ let n = this.getCursorSpec();
1465
+ i(n) && this.paramRuntime.watchExpression(n.expr, e, {
1401
1466
  scopeOwned: !1,
1402
1467
  registerDisposer: t
1403
1468
  });
@@ -1409,41 +1474,41 @@ var Xe = class {
1409
1474
  return this.facetCoords.values().next().value;
1410
1475
  }
1411
1476
  getPadding() {
1412
- return this._cache("size/padding", () => k.createFromConfig(this.spec.padding));
1477
+ return this._cache("size/padding", () => j.createFromConfig(this.spec.padding));
1413
1478
  }
1414
1479
  getOverhang() {
1415
- return k.zero();
1480
+ return j.zero();
1416
1481
  }
1417
1482
  isScrollable() {
1418
1483
  return this.spec.viewportWidth != null || this.spec.viewportHeight != null;
1419
1484
  }
1420
1485
  getSize() {
1421
- return this._cache("size/size", () => this.isConfiguredVisible() ? new y(this.#g("width"), this.#g("height")) : x);
1486
+ return this._cache("size/size", () => this.isConfiguredVisible() ? new x(this.#g("width"), this.#g("height")) : de);
1422
1487
  }
1423
1488
  getViewportSize() {
1424
1489
  if (!this.isScrollable()) return this.getSize();
1425
- if (!this.isConfiguredVisible()) return x;
1490
+ if (!this.isConfiguredVisible()) return de;
1426
1491
  let e = this.getSize();
1427
- return new y(this.#g("viewportWidth") ?? e.width, this.#g("viewportHeight") ?? e.height);
1492
+ return new x(this.#g("viewportWidth") ?? e.width, this.#g("viewportHeight") ?? e.height);
1428
1493
  }
1429
1494
  #g(e) {
1430
1495
  let { value: t, implicit: n } = this.#_(e), r = this.resolveSizeValue(e, t), i = J(r), a = e == "viewportWidth" || e == "viewportHeight";
1431
1496
  if (i) {
1432
- if (a) throw new _(`Cannot use step-based size with "${e}"!`, this);
1497
+ if (a) throw new v(`Cannot use step-based size with "${e}"!`, this);
1433
1498
  let t = this.#x(e, r), i = this.getScaleResolution(e == "width" ? "x" : "y")?.getScale();
1434
1499
  if (i) {
1435
1500
  let n;
1436
- if (v(i.type)) n = i.domain().length;
1501
+ if (b(i.type)) n = i.domain().length;
1437
1502
  else if (["locus", "index"].includes(i.type)) {
1438
1503
  let e = i.domain();
1439
1504
  n = m(e) - e[0];
1440
- } else throw new _(`Cannot use step-based size with "${i.type}" scale!`, this);
1505
+ } else throw new v(`Cannot use step-based size with "${i.type}" scale!`, this);
1441
1506
  let a = i;
1442
- n = ie(n, a.paddingInner(), a.paddingOuter());
1443
- let o = e == "width" ? "xOffset" : "yOffset", s = this.getScaleResolution(o)?.getScale(), c = r.for ?? (s && v(s.type) ? "offset" : "position"), l = t;
1507
+ n = y(n, a.paddingInner(), a.paddingOuter());
1508
+ let o = e == "width" ? "xOffset" : "yOffset", s = this.getScaleResolution(o)?.getScale(), c = r.for ?? (s && b(s.type) ? "offset" : "position"), l = t;
1444
1509
  if (c == "offset") {
1445
- if (!s || !v(s.type)) throw new _(`Cannot use ${e}.step.for = "offset" without a discrete ${o} scale!`, this);
1446
- let t = s, n = ie(s.domain().length, t.paddingInner(), t.paddingOuter());
1510
+ if (!s || !b(s.type)) throw new v(`Cannot use ${e}.step.for = "offset" without a discrete ${o} scale!`, this);
1511
+ let t = s, n = y(s.domain().length, t.paddingInner(), t.paddingOuter());
1447
1512
  l *= n / (1 - a.paddingInner());
1448
1513
  }
1449
1514
  return {
@@ -1454,7 +1519,7 @@ var Xe = class {
1454
1519
  px: t,
1455
1520
  grow: 0
1456
1521
  };
1457
- else throw new _(`Cannot use step-based size with "${e}"!`, this);
1522
+ else throw new v(`Cannot use step-based size with "${e}"!`, this);
1458
1523
  } else return (r && me(r)) ?? (a ? void 0 : {
1459
1524
  px: 0,
1460
1525
  grow: 1
@@ -1471,17 +1536,17 @@ var Xe = class {
1471
1536
  };
1472
1537
  }
1473
1538
  #v(e) {
1474
- if (Ke(this)) return;
1539
+ if (U(this)) return;
1475
1540
  let t = this.getConfig().view;
1476
1541
  if (!t) return;
1477
1542
  let n = e == "width" ? "x" : "y", r = this.getScaleResolution(n)?.getResolvedScaleType();
1478
- return r && !v(r) ? e == "width" ? t.continuousWidth : t.continuousHeight : (e == "width" ? t.discreteWidth : t.discreteHeight) ?? (t.step === void 0 ? void 0 : { step: t.step });
1543
+ return r && !b(r) ? e == "width" ? t.continuousWidth : t.continuousHeight : (e == "width" ? t.discreteWidth : t.discreteHeight) ?? (t.step === void 0 ? void 0 : { step: t.step });
1479
1544
  }
1480
1545
  resolveSizeValue(e, t) {
1481
- if (!n(t)) return t;
1482
- let r = this.#C(e)();
1483
- if (rt(r) || r === "container") return r;
1484
- throw new _(`"${e}" ExprRef must resolve to a finite number or "container"!`, this);
1546
+ if (!i(t)) return t;
1547
+ let n = this.#C(e)();
1548
+ if (it(n) || n === "container") return n;
1549
+ throw new v(`"${e}" ExprRef must resolve to a finite number or "container"!`, this);
1485
1550
  }
1486
1551
  registerSizeInvalidation() {
1487
1552
  this.#y("width", "x"), this.#y("height", "y"), this.#b("width"), this.#b("height"), this.#b("viewportWidth"), this.#b("viewportHeight");
@@ -1492,7 +1557,7 @@ var Xe = class {
1492
1557
  let i = this.getScaleResolution(t);
1493
1558
  if (!i) {
1494
1559
  if (r) return;
1495
- throw new _("Cannot use 'step' size without a scale!", this);
1560
+ throw new v("Cannot use 'step' size without a scale!", this);
1496
1561
  }
1497
1562
  let a = () => {
1498
1563
  let t = this.getSize()[e];
@@ -1502,17 +1567,17 @@ var Xe = class {
1502
1567
  };
1503
1568
  if (i.addEventListener("domain", a), this.registerDisposer(() => i.removeEventListener("domain", a)), n.for != "position") {
1504
1569
  let t = e == "width" ? "xOffset" : "yOffset", n = this.getScaleResolution(t);
1505
- n && v(n.getResolvedScaleType()) && (n.addEventListener("domain", a), this.registerDisposer(() => n.removeEventListener("domain", a)));
1570
+ n && b(n.getResolvedScaleType()) && (n.addEventListener("domain", a), this.registerDisposer(() => n.removeEventListener("domain", a)));
1506
1571
  }
1507
1572
  }
1508
1573
  #b(e) {
1509
1574
  let { value: t } = this.#_(e);
1510
- n(t) ? this.#S(e, t.expr) : J(t) && n(t.step) && this.#S(e + ".step", t.step.expr);
1575
+ i(t) ? this.#S(e, t.expr) : J(t) && i(t.step) && this.#S(e + ".step", t.step.expr);
1511
1576
  }
1512
1577
  #x(e, t) {
1513
- let r = n(t.step) ? this.#C(e + ".step")() : t.step;
1514
- if (rt(r)) return r;
1515
- throw new _(`"${e}.step" ExprRef must resolve to a finite number!`, this);
1578
+ let n = i(t.step) ? this.#C(e + ".step")() : t.step;
1579
+ if (it(n)) return n;
1580
+ throw new v(`"${e}.step" ExprRef must resolve to a finite number!`, this);
1516
1581
  }
1517
1582
  #S(e, t) {
1518
1583
  if (!this.#m.has(e)) {
@@ -1524,7 +1589,7 @@ var Xe = class {
1524
1589
  }
1525
1590
  #C(e) {
1526
1591
  let t = this.#m.get(e);
1527
- if (!t) throw new _(`"${e}" ExprRef was not registered before layout!`, this);
1592
+ if (!t) throw new v(`"${e}" ExprRef was not registered before layout!`, this);
1528
1593
  return t;
1529
1594
  }
1530
1595
  isConfiguredVisible() {
@@ -1643,7 +1708,7 @@ var Xe = class {
1643
1708
  }
1644
1709
  }
1645
1710
  configureViewOpacity() {
1646
- (!this.opacityFunction || this.opacityFunction === q) && (this.opacityFunction = et(this));
1711
+ (!this.opacityFunction || this.opacityFunction === q) && (this.opacityFunction = tt(this));
1647
1712
  }
1648
1713
  finalizeParamRuntimeInitialization() {
1649
1714
  this.#l === void 0 ? this.paramRuntime.finalizeInitialization() : this.#T();
@@ -1655,8 +1720,8 @@ var Xe = class {
1655
1720
  return this.#s;
1656
1721
  }
1657
1722
  arrange(e, t, n = {}) {
1658
- if (n.firstFacet && this.facetCoords.clear(), this.facetCoords.set(n.facetId, p(t, u(n))), this.#a || this.#o) {
1659
- let e = this.getOverhang(), n = this.layoutParent ? k.zero() : this.getPadding();
1723
+ if (n.firstFacet && this.facetCoords.clear(), this.facetCoords.set(n.facetId, p(t, d(n))), this.#a || this.#o) {
1724
+ let e = this.getOverhang(), n = this.layoutParent ? j.zero() : this.getPadding();
1660
1725
  this.#a?.(t.width - e.width - n.width), this.#o?.(t.height - e.height - n.height);
1661
1726
  }
1662
1727
  this.#c = !0, this.#T();
@@ -1677,7 +1742,7 @@ var Xe = class {
1677
1742
  }
1678
1743
  getFacetFields(e) {
1679
1744
  let t = this.getEncoding().sample;
1680
- return l(t) ? [t.field] : this.options.inheritEncoding ? this.layoutParent?.getFacetFields(this) : [];
1745
+ return u(t) ? [t.field] : this.options.inheritEncoding ? this.layoutParent?.getFacetFields(this) : [];
1681
1746
  }
1682
1747
  usesSampleFacetRendering() {
1683
1748
  return this.layoutParent?.usesSampleFacetRendering() ?? !1;
@@ -1689,15 +1754,15 @@ var Xe = class {
1689
1754
  };
1690
1755
  }
1691
1756
  getScaleResolution(e) {
1692
- let t = i(e);
1757
+ let t = o(e);
1693
1758
  return this.getDataAncestors().map((e) => e.resolutions.scale[t]).find((e) => e);
1694
1759
  }
1695
1760
  getAxisResolution(e) {
1696
- let t = i(e);
1761
+ let t = o(e);
1697
1762
  return this.getDataAncestors().map((e) => e.resolutions.axis[t]).find((e) => e);
1698
1763
  }
1699
1764
  getLegendResolution(e) {
1700
- let t = i(e);
1765
+ let t = o(e);
1701
1766
  return this.getDataAncestors().map((e) => e.resolutions.legend[t]).find((e) => e);
1702
1767
  }
1703
1768
  getConfiguredResolution(e, t) {
@@ -1710,47 +1775,47 @@ var Xe = class {
1710
1775
  return "independent";
1711
1776
  }
1712
1777
  getBaseUrl() {
1713
- return j(() => this.dataParent?.getBaseUrl(), Be(this.spec.baseUrl));
1778
+ return N(() => this.dataParent?.getBaseUrl(), Ge(this.spec.baseUrl));
1714
1779
  }
1715
1780
  isPickingSupported() {
1716
1781
  return !0;
1717
1782
  }
1718
1783
  getTitleText() {
1719
1784
  let e = this.spec.title;
1720
- if (e) return s(e) ? e : n(e.text) ? this.paramRuntime.evaluateAndGet(e.text.expr) : e.text;
1785
+ if (e) return te(e) ? e : i(e.text) ? this.paramRuntime.evaluateAndGet(e.text.expr) : e.text;
1721
1786
  }
1722
1787
  _cache(e, t) {
1723
- return te(this, e, t);
1788
+ return ne(this, e, t);
1724
1789
  }
1725
1790
  _invalidateCacheByPrefix(e, t = "self") {
1726
1791
  switch (t) {
1727
1792
  case "self":
1728
- g(this, e);
1793
+ _(this, e);
1729
1794
  break;
1730
1795
  case "ancestors":
1731
- for (let t of this.getLayoutAncestors()) g(t, e);
1796
+ for (let t of this.getLayoutAncestors()) _(t, e);
1732
1797
  break;
1733
1798
  case "progeny":
1734
- this.visit((t) => g(t, e));
1799
+ this.visit((t) => _(t, e));
1735
1800
  break;
1736
1801
  default:
1737
1802
  }
1738
1803
  }
1739
1804
  invalidateSizeCache() {
1740
- g(this, "size"), this._invalidateCacheByPrefix("size", "ancestors");
1805
+ _(this, "size"), this._invalidateCacheByPrefix("size", "ancestors");
1741
1806
  }
1742
1807
  propagateInteraction(e) {}
1743
1808
  };
1744
- function $e(e) {
1809
+ function et(e) {
1745
1810
  return "unitsPerPixel" in e;
1746
1811
  }
1747
- function et(e) {
1748
- let t = "opacity" in e.spec ? e.spec.opacity : void 0;
1749
- if (t !== void 0) {
1750
- if (h(t)) return (e) => e * t;
1751
- if ($e(t)) {
1752
- let r = (t) => {
1753
- let n = e.getScaleResolution(t), r = n?.getScale();
1812
+ function tt(t) {
1813
+ let n = "opacity" in t.spec ? t.spec.opacity : void 0;
1814
+ if (n !== void 0) {
1815
+ if (h(n)) return (e) => e * n;
1816
+ if (et(n)) {
1817
+ let r = (e) => {
1818
+ let n = t.getScaleResolution(e), r = n?.getScale();
1754
1819
  if ([
1755
1820
  "linear",
1756
1821
  "index",
@@ -1759,48 +1824,48 @@ function et(e) {
1759
1824
  scale: r,
1760
1825
  scaleResolution: n
1761
1826
  };
1762
- }, i = nt(t.values, "opacity.values", e);
1763
- if (!d(t.unitsPerPixel)) throw new _("\"opacity.unitsPerPixel\" must be an array.", e);
1764
- let a = () => 1, o = [], s = () => {
1765
- let t = tt(nt(o.map((e) => e()), "opacity.unitsPerPixel", e), i, e), n = re().domain(t.unitsPerPixel).range(t.values).clamp(!0);
1766
- a = (e) => n(e);
1827
+ }, a = rt(n.values, "opacity.values", t);
1828
+ if (!l(n.unitsPerPixel)) throw new v("\"opacity.unitsPerPixel\" must be an array.", t);
1829
+ let o = () => 1, s = [], c = () => {
1830
+ let e = nt(rt(s.map((e) => e()), "opacity.unitsPerPixel", t), a, t), n = ie().domain(e.unitsPerPixel).range(e.values).clamp(!0);
1831
+ o = (e) => n(e);
1767
1832
  };
1768
- o = t.unitsPerPixel.map((t) => {
1769
- if (n(t)) {
1770
- let n = e.paramRuntime.watchExpression(t.expr, () => {
1771
- s(), e.context.animator.requestRender();
1833
+ s = n.unitsPerPixel.map((e) => {
1834
+ if (i(e)) {
1835
+ let n = t.paramRuntime.watchExpression(e.expr, () => {
1836
+ c(), t.context.animator.requestRender();
1772
1837
  });
1773
1838
  return () => n(null);
1774
- } else return () => t;
1775
- }), s();
1776
- let c = (e) => {
1777
- let t = e.scaleResolution.getAxisLength() || 1e3;
1778
- return ee(e.scale.domain()) / t;
1779
- }, l;
1780
- if (t.channel === "auto") {
1781
- let t = r("x"), n = r("y");
1782
- if (t && n) l = () => (c(t) + c(n)) / 2;
1783
- else if (t) l = () => c(t);
1784
- else if (n) l = () => c(n);
1785
- else throw new _("Cannot find a resolved quantitative x or y scale for dynamic opacity!", e);
1839
+ } else return () => e;
1840
+ }), c();
1841
+ let u = (t) => {
1842
+ let n = t.scaleResolution.getAxisLength() || 1e3;
1843
+ return e(t.scale.domain()) / n;
1844
+ }, d;
1845
+ if (n.channel === "auto") {
1846
+ let e = r("x"), n = r("y");
1847
+ if (e && n) d = () => (u(e) + u(n)) / 2;
1848
+ else if (e) d = () => u(e);
1849
+ else if (n) d = () => u(n);
1850
+ else throw new v("Cannot find a resolved quantitative x or y scale for dynamic opacity!", t);
1786
1851
  } else {
1787
- let n = t.channel ? r(t.channel) : r("x") ?? r("y");
1788
- if (!n) throw new _("Cannot find a resolved quantitative scale for dynamic opacity!", e);
1789
- l = () => c(n);
1852
+ let e = n.channel ? r(n.channel) : r("x") ?? r("y");
1853
+ if (!e) throw new v("Cannot find a resolved quantitative scale for dynamic opacity!", t);
1854
+ d = () => u(e);
1790
1855
  }
1791
- return (e) => a(l()) * e;
1792
- } else if (n(t)) {
1793
- let n = e.paramRuntime.watchExpression(t.expr, () => e.context.animator.requestRender());
1794
- return (e) => n(null) * e;
1856
+ return (e) => o(d()) * e;
1857
+ } else if (i(n)) {
1858
+ let e = t.paramRuntime.watchExpression(n.expr, () => t.context.animator.requestRender());
1859
+ return (t) => e(null) * t;
1795
1860
  }
1796
1861
  }
1797
1862
  return q;
1798
1863
  }
1799
- function tt(e, t, n) {
1800
- if (!e.length) throw new _("\"opacity.unitsPerPixel\" must contain at least one stop.", n);
1801
- if (e.length !== t.length) throw new _("\"opacity.unitsPerPixel\" and \"opacity.values\" must have the same length.", n);
1864
+ function nt(e, t, n) {
1865
+ if (!e.length) throw new v("\"opacity.unitsPerPixel\" must contain at least one stop.", n);
1866
+ if (e.length !== t.length) throw new v("\"opacity.unitsPerPixel\" and \"opacity.values\" must have the same length.", n);
1802
1867
  e.forEach((e, t) => {
1803
- if (e <= 0) throw new _("Invalid opacity.unitsPerPixel value at index " + t + ". Stop values must be positive.", n);
1868
+ if (e <= 0) throw new v("Invalid opacity.unitsPerPixel value at index " + t + ". Stop values must be positive.", n);
1804
1869
  });
1805
1870
  let r = e.map((e, n) => ({
1806
1871
  stop: e,
@@ -1808,46 +1873,46 @@ function tt(e, t, n) {
1808
1873
  }));
1809
1874
  r.sort((e, t) => t.stop - e.stop);
1810
1875
  let i = r.map((e) => e.stop), a = r.map((e) => e.value);
1811
- for (let t = 1; t < e.length; t++) if (i[t - 1] <= i[t]) throw new _("\"opacity.unitsPerPixel\" must be strictly decreasing.", n);
1876
+ for (let t = 1; t < e.length; t++) if (i[t - 1] <= i[t]) throw new v("\"opacity.unitsPerPixel\" must be strictly decreasing.", n);
1812
1877
  return {
1813
1878
  unitsPerPixel: i,
1814
1879
  values: a
1815
1880
  };
1816
1881
  }
1817
- function nt(e, t, n) {
1818
- if (!d(e)) throw new _("\"" + t + "\" must evaluate to an array.", n);
1882
+ function rt(e, t, n) {
1883
+ if (!l(e)) throw new v("\"" + t + "\" must evaluate to an array.", n);
1819
1884
  return e.map((e, r) => {
1820
- if (!h(e) || !Number.isFinite(e)) throw new _("Invalid " + t + " value at index " + r + ". Expected a finite number.", n);
1885
+ if (!h(e) || !Number.isFinite(e)) throw new v("Invalid " + t + " value at index " + r + ". Expected a finite number.", n);
1821
1886
  return e;
1822
1887
  });
1823
1888
  }
1824
1889
  var J = (e) => !!e && typeof e == "object" && "step" in e;
1825
- function rt(e) {
1890
+ function it(e) {
1826
1891
  return typeof e == "number" && Number.isFinite(e);
1827
1892
  }
1828
1893
  var Y = /* @__PURE__ */ new WeakMap(), X = /* @__PURE__ */ new WeakMap();
1829
- function it(e, t) {
1830
- ot(e, t, "Import");
1831
- }
1832
1894
  function at(e, t) {
1833
- ot(e, t, "View");
1895
+ st(e, t, "Import");
1834
1896
  }
1835
- function ot(e, t, n) {
1897
+ function ot(e, t) {
1898
+ st(e, t, "View");
1899
+ }
1900
+ function st(e, t, n) {
1836
1901
  if (t !== null && typeof t != "string") throw Error(n + " scope name must be a string or null.");
1837
1902
  Y.set(e, { name: t });
1838
1903
  }
1839
- function st(e) {
1904
+ function ct(e) {
1840
1905
  return Y.get(e);
1841
1906
  }
1842
- function ct(e, t = {}) {
1907
+ function lt(e, t = {}) {
1843
1908
  let n = t.skipSubtree ?? !1 ? "excludeSubtree" : "exclude";
1844
1909
  X.set(e, n);
1845
1910
  }
1846
- function lt(e, t = {}) {
1847
- Ue(e, t.skipSubtree ?? !1 ? "excludeSubtree" : "exclude");
1911
+ function ut(e, t = {}) {
1912
+ qe(e, t.skipSubtree ?? !1 ? "excludeSubtree" : "exclude");
1848
1913
  }
1849
- function ut(e) {
1850
- return e.getLayoutAncestors().some(Ge);
1914
+ function dt(e) {
1915
+ return e.getLayoutAncestors().some(H);
1851
1916
  }
1852
1917
  function Z(e) {
1853
1918
  let t = e.getDataAncestors(), n = [];
@@ -1857,7 +1922,7 @@ function Z(e) {
1857
1922
  }
1858
1923
  return n;
1859
1924
  }
1860
- function dt(e) {
1925
+ function ft(e) {
1861
1926
  let t = e.explicitName;
1862
1927
  if (!t) throw Error("Cannot build a selector for a view without a name.");
1863
1928
  return {
@@ -1865,43 +1930,43 @@ function dt(e) {
1865
1930
  view: t
1866
1931
  };
1867
1932
  }
1868
- function ft(e, t) {
1933
+ function pt(e, t) {
1869
1934
  if (!t) throw Error("Cannot build a selector for a parameter without a name.");
1870
1935
  return {
1871
1936
  scope: Z(e),
1872
1937
  param: t
1873
1938
  };
1874
1939
  }
1875
- function pt(e) {
1876
- return xt(e), "p:" + JSON.stringify({
1940
+ function mt(e) {
1941
+ return St(e), "p:" + JSON.stringify({
1877
1942
  scope: e.scope,
1878
1943
  param: e.param
1879
1944
  });
1880
1945
  }
1881
- function mt(e, t) {
1946
+ function ht(e, t) {
1882
1947
  e.visit((e) => {
1883
- let n = We(e);
1948
+ let n = Je(e);
1884
1949
  if (n === "excludeSubtree") return G;
1885
1950
  if (n !== "exclude") return t(e);
1886
1951
  });
1887
1952
  }
1888
- function ht(e, t) {
1953
+ function gt(e, t) {
1889
1954
  e.visit((e) => {
1890
1955
  let n = X.get(e);
1891
1956
  if (n === "excludeSubtree") return G;
1892
1957
  if (n !== "exclude") return t(e);
1893
1958
  });
1894
1959
  }
1895
- function gt(e, t) {
1896
- if (St(t), !At(e, t.scope)) return;
1960
+ function _t(e, t) {
1961
+ if (Ct(t), !jt(e, t.scope)) return;
1897
1962
  let n = [];
1898
1963
  if ($(e, t.scope, (e) => {
1899
1964
  e.explicitName === t.view && n.push(e);
1900
1965
  }, { includeNamedImportRoots: !0 }), n.length === 1) return n[0];
1901
1966
  if (n.length !== 0) throw Error("View selector is ambiguous for view \"" + t.view + "\" in scope " + JSON.stringify(t.scope));
1902
1967
  }
1903
- function _t(e, t) {
1904
- if (xt(t), !At(e, t.scope)) return;
1968
+ function vt(e, t) {
1969
+ if (St(t), !jt(e, t.scope)) return;
1905
1970
  let n = [];
1906
1971
  if ($(e, t.scope, (e) => {
1907
1972
  for (let [r, i] of e.paramRuntime.paramConfigs) r === t.param && Q(i) && n.push({
@@ -1911,54 +1976,54 @@ function _t(e, t) {
1911
1976
  }), n.length === 1) return n[0];
1912
1977
  if (n.length !== 0) throw Error("Param selector is ambiguous for param \"" + t.param + "\" in scope " + JSON.stringify(t.scope));
1913
1978
  }
1914
- function vt(e, t) {
1979
+ function yt(e, t) {
1915
1980
  e.visit((e) => {
1916
1981
  let n = X.get(e);
1917
1982
  if (n === "excludeSubtree") return G;
1918
1983
  if (n !== "exclude") for (let [n, r] of e.paramRuntime.paramConfigs) Q(r) && t({
1919
1984
  view: e,
1920
1985
  param: r,
1921
- selector: ft(e, n)
1986
+ selector: pt(e, n)
1922
1987
  });
1923
1988
  });
1924
1989
  }
1925
- function yt(e) {
1990
+ function bt(e) {
1926
1991
  let t = [];
1927
- return vt(e, (e) => t.push(e)), t;
1992
+ return yt(e, (e) => t.push(e)), t;
1928
1993
  }
1929
- function bt(e) {
1994
+ function xt(e) {
1930
1995
  let t = [];
1931
- for (let n of Ct(e)) {
1932
- let r = wt(n);
1933
- Et(e, r, t), Dt(e, r, t);
1996
+ for (let n of wt(e)) {
1997
+ let r = Tt(n);
1998
+ Dt(e, r, t), Ot(e, r, t);
1934
1999
  }
1935
2000
  return t;
1936
2001
  }
1937
- function xt(e) {
2002
+ function St(e) {
1938
2003
  if (!e || !Array.isArray(e.scope)) throw Error("Param selector scope must be an array.");
1939
2004
  if (typeof e.param != "string" || !e.param.length) throw Error("Param selector param must be a non-empty string.");
1940
2005
  }
1941
- function St(e) {
2006
+ function Ct(e) {
1942
2007
  if (!e || !Array.isArray(e.scope)) throw Error("View selector scope must be an array.");
1943
2008
  if (typeof e.view != "string" || !e.view.length) throw Error("View selector view must be a non-empty string.");
1944
2009
  }
1945
- function Q(t) {
1946
- return t.persist === !1 ? !1 : e(t) ? !0 : c(t) ? !!t.bind : !1;
2010
+ function Q(e) {
2011
+ return e.persist === !1 ? !1 : t(e) ? !0 : n(e) ? !!e.bind : !1;
1947
2012
  }
1948
- function Ct(e) {
2013
+ function wt(e) {
1949
2014
  let t = /* @__PURE__ */ new Set([e]);
1950
2015
  return e.visit((e) => {
1951
2016
  let n = Y.get(e);
1952
2017
  n && typeof n.name == "string" && t.add(e);
1953
2018
  }), Array.from(t);
1954
2019
  }
1955
- function wt(e) {
2020
+ function Tt(e) {
1956
2021
  return Z(e);
1957
2022
  }
1958
- function Tt(e) {
2023
+ function Et(e) {
1959
2024
  return e.length ? "import scope [" + e.join(" / ") + "]" : "import scope (root)";
1960
2025
  }
1961
- function Et(e, t, n) {
2026
+ function Dt(e, t, n) {
1962
2027
  let r = /* @__PURE__ */ new Map();
1963
2028
  $(e, t, (e) => {
1964
2029
  for (let [t, n] of e.paramRuntime.paramConfigs) {
@@ -1971,15 +2036,15 @@ function Et(e, t, n) {
1971
2036
  if (i.length <= 1) continue;
1972
2037
  let r = i.map((e) => e.getPathString()).join(", ");
1973
2038
  n.push({
1974
- message: "Bookmarkable parameter \"" + e + "\" is not unique within " + Tt(t) + ". Found in: " + r + ".",
2039
+ message: "Bookmarkable parameter \"" + e + "\" is not unique within " + Et(t) + ". Found in: " + r + ".",
1975
2040
  scope: t
1976
2041
  });
1977
2042
  }
1978
2043
  }
1979
- function Dt(e, t, n) {
1980
- let r = Ot(e, t);
2044
+ function Ot(e, t, n) {
2045
+ let r = kt(e, t);
1981
2046
  if (!r.length) return;
1982
- let i = r.filter((e) => kt(e));
2047
+ let i = r.filter((e) => At(e));
1983
2048
  if (i.length <= 1) return;
1984
2049
  let a = /* @__PURE__ */ new Map();
1985
2050
  for (let e of i) {
@@ -1987,11 +2052,11 @@ function Dt(e, t, n) {
1987
2052
  typeof n != "string" || !n.length || a.set(n, (a.get(n) ?? 0) + 1);
1988
2053
  }
1989
2054
  for (let [e, r] of a) r > 1 && n.push({
1990
- message: "Import instance name \"" + e + "\" is used multiple times for addressable instances in " + Tt(t) + ".",
2055
+ message: "Import instance name \"" + e + "\" is used multiple times for addressable instances in " + Et(t) + ".",
1991
2056
  scope: t
1992
2057
  });
1993
2058
  }
1994
- function Ot(e, t) {
2059
+ function kt(e, t) {
1995
2060
  let n = [];
1996
2061
  return $(e, t, (e) => {
1997
2062
  if (Z(e).length !== t.length + 1) return;
@@ -1999,7 +2064,7 @@ function Ot(e, t) {
1999
2064
  !r || typeof r.name != "string" || n.push(e);
2000
2065
  }, { includeNamedImportRoots: !0 }), n;
2001
2066
  }
2002
- function kt(e) {
2067
+ function At(e) {
2003
2068
  let t = !1;
2004
2069
  return e.visit((e) => {
2005
2070
  let n = X.get(e);
@@ -2009,7 +2074,7 @@ function kt(e) {
2009
2074
  }
2010
2075
  }), t;
2011
2076
  }
2012
- function At(e, t) {
2077
+ function jt(e, t) {
2013
2078
  let n = e, r = [];
2014
2079
  for (let i of t) {
2015
2080
  if (typeof i != "string" || !i.length) throw Error("Scope names must be non-empty strings.");
@@ -2031,20 +2096,20 @@ function $(e, t, n, r = {}) {
2031
2096
  e.visit((e) => {
2032
2097
  let r = Y.get(e), a = X.get(e);
2033
2098
  if (a === "excludeSubtree") return G;
2034
- if (a !== "exclude" && jt(e, t, r, i)) return n(e);
2099
+ if (a !== "exclude" && Mt(e, t, r, i)) return n(e);
2035
2100
  });
2036
2101
  }
2037
- function jt(e, t, n, r) {
2102
+ function Mt(e, t, n, r) {
2038
2103
  let i = Z(e);
2039
- return Mt(i, t) ? !0 : !r || !n || typeof n.name != "string" || i.length !== t.length + 1 ? !1 : Nt(t, i);
2040
- }
2041
- function Mt(e, t) {
2042
- return e.length === t.length && Nt(e, t);
2104
+ return Nt(i, t) ? !0 : !r || !n || typeof n.name != "string" || i.length !== t.length + 1 ? !1 : Pt(t, i);
2043
2105
  }
2044
2106
  function Nt(e, t) {
2107
+ return e.length === t.length && Pt(e, t);
2108
+ }
2109
+ function Pt(e, t) {
2045
2110
  if (e.length > t.length) return !1;
2046
2111
  for (let n = 0; n < e.length; n++) if (e[n] !== t[n]) return !1;
2047
2112
  return !0;
2048
2113
  }
2049
2114
  //#endregion
2050
- export { M as A, se as B, ze as C, Ne as D, R as E, b as F, de as H, ue as I, ce as L, k as M, ye as N, N as O, y as P, E as R, He as S, Fe as T, le as U, me as V, K as _, ut as a, Ge as b, ct as c, _t as d, gt as f, G as g, mt as h, dt as i, xe as j, j as k, it as l, ht as m, st as n, pt as o, bt as p, Z as r, lt as s, yt as t, at as u, Qe as v, z as w, Ke as x, Je as y, T as z };
2115
+ export { P as A, oe as B, We as C, Fe as D, Re as E, S as F, ue as H, le as I, se as L, j as M, ve as N, F as O, x as P, D as R, B as S, Le as T, ce as U, me as V, K as _, dt as a, H as b, lt as c, vt as d, _t as f, G as g, ht as h, ft as i, be as j, N as k, at as l, gt as m, ct as n, mt as o, xt as p, Z as r, ut as s, bt as t, ot as u, $e as v, Be as w, U as x, Ye as y, E as z };