@genome-spy/app 0.86.0 → 0.87.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 (36) hide show
  1. package/dist/{agentApi-DgopQbMV.js → agentApi-BZ1JCo1N.js} +6994 -6499
  2. package/dist/agentApi.es.js +3057 -3225
  3. package/dist/agentShared.es.js +7 -7
  4. package/dist/{canvas2d-8uxuN_vx.js → canvas2d-B_PnIof-.js} +108 -107
  5. package/dist/{canvas2d-BtQC7Xr8.js → canvas2d-Cafq5v-N.js} +128 -127
  6. package/dist/{clipOptions-taFzEljc.js → clipOptions-D6eh9T-_.js} +1508 -1166
  7. package/dist/{clipOptions-BQfNhxgP.js → clipOptions-H68pJyEZ.js} +1496 -1114
  8. package/dist/{debug-D_VtWQ6l.js → debug-BGzgZmyk.js} +2 -2
  9. package/dist/{debug-Bzc3SoRg.js → debug-UYKZLNh4.js} +2 -2
  10. package/dist/index.es.js +96 -106
  11. package/dist/index.js +399 -392
  12. package/dist/{indexer-qy_dq5l5.js → indexer-Di57GyxX.js} +1 -1
  13. package/dist/{indexer-qiFctgR3.js → indexer-o6Hpg4nN.js} +1 -1
  14. package/dist/nativeText-D9SoxpaD.js +934 -0
  15. package/dist/nativeText-DAjvkrzc.js +934 -0
  16. package/dist/{rasterExport-B8pVoOsj.js → rasterExport-DzldLv6E.js} +1 -1
  17. package/dist/{rasterExport-C4r4xjQT.js → rasterExport-IAbJwi8F.js} +1 -1
  18. package/dist/{renderCanvas2D-BQrRWp2Z.js → renderCanvas2D-BJ93Ptqj.js} +102 -96
  19. package/dist/{renderCanvas2D-CHVNfIUz.js → renderCanvas2D-yJ1IrDcX.js} +103 -97
  20. package/dist/schema.json +10169 -2852
  21. package/dist/{svg-C-Sw6E6G.js → svg-BRpl2Xub.js} +338 -384
  22. package/dist/{svg-CKHwwKRt.js → svg-DJuqHIyc.js} +353 -399
  23. package/dist/{svgRasterizer-BgD72AmG.js → svgRasterizer-CGZQ5njV.js} +1 -1
  24. package/dist/{svgRasterizer-BgSNqI3L.js → svgRasterizer-PAoqLn1j.js} +1 -1
  25. package/dist/{vega-scale-D46-iCaL.js → vega-scale-BGC53c22.js} +887 -1184
  26. package/dist/{vega-scale-CK0_al6O.js → vega-scale-DdW2NzQ3.js} +898 -1195
  27. package/dist/{viewIdentityRegistry-CDtVktJD.js → viewIdentityRegistry-D4p067HU.js} +1 -1
  28. package/dist/{viewIdentityRegistry-B-VGlez1.js → viewIdentityRegistry-Dc2hXYsO.js} +1 -1
  29. package/dist/{viewSelectors-CKfxF_LM.js → viewSelectors-DNXnGwEW.js} +519 -321
  30. package/dist/{viewSelectors-D_imtq5Z.js → viewSelectors-DYYlOt91.js} +584 -386
  31. package/dist/{viewUtils-nCJ7AoaI.js → viewUtils-EdhZTPrJ.js} +2930 -2264
  32. package/dist/{webgl-BaA3jSa2.js → webgl-C53DwzVT.js} +427 -428
  33. package/dist/{webgl-FP-4EsBL.js → webgl-CdgNFlJk.js} +639 -640
  34. package/package.json +5 -5
  35. package/dist/nativeText-DFV5XIx8.js +0 -860
  36. package/dist/nativeText-vT3AWE14.js +0 -860
@@ -1,10 +1,10 @@
1
- import { Ct as e, Et as t, Gt as n, Jt as r, O as i, Ot as a, St as o, Tt as s, Xt as c, Yt as l, nn as u, nt as d, o as f, rt as p, t as m, u as ee, y as h } from "./clipOptions-BQfNhxgP.js";
1
+ import { Ct as e, Et as t, O as n, St as r, Tt as i, an as a, kt as o, nn as s, nt as c, o as l, on as u, pn as d, rt as f, sn as p, t as m, u as ee, y as h } from "./clipOptions-D6eh9T-_.js";
2
2
  import { a as g, n as te, r as ne, t as _ } from "./viewError-BiR9VCgL.js";
3
- import { U as re, it as ie, m as ae, y as v } from "./vega-scale-CK0_al6O.js";
3
+ import { U as re, m as ie, rt as ae, y as v } from "./vega-scale-DdW2NzQ3.js";
4
4
  //#region ../core/src/view/layout/flexLayout.js
5
5
  function oe(e, t, { spacing: n, devicePixelRatio: r, offset: i, reverse: a } = {}) {
6
6
  n ||= 0, i ||= 0;
7
- let o = he(e, t, n), s = 0, c = 0;
7
+ let o = me(e, t, n), s = 0, c = 0;
8
8
  for (let t = 0; t < e.length; t++) s += o[t], x(e[t]) || c++;
9
9
  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) => {
10
10
  let t = d;
@@ -37,13 +37,13 @@ function oe(e, t, { spacing: n, devicePixelRatio: r, offset: i, reverse: a } = {
37
37
  }
38
38
  function se(e, { spacing: t } = { spacing: 0 }) {
39
39
  let n = 0;
40
- for (let r of e) n += w(r) + (x(r) ? 0 : t);
40
+ for (let r of e) n += E(r) + (x(r) ? 0 : t);
41
41
  return Math.max(0, n - t);
42
42
  }
43
43
  function ce(e, t, { spacing: n = 0 } = {}) {
44
44
  let r = [], i = [], a = 0, o = 0;
45
45
  for (let [s, c] of e.entries()) {
46
- let e = w(c), l = !x(c), u = o && l ? n : 0;
46
+ let e = E(c), l = !x(c), u = o && l ? n : 0;
47
47
  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;
48
48
  }
49
49
  return i.length && r.push(i), r;
@@ -51,11 +51,11 @@ function ce(e, t, { spacing: n = 0 } = {}) {
51
51
  function le(e) {
52
52
  let t = 0, n = 0, r = 0, i, a = !0;
53
53
  for (let o of e) {
54
- t = Math.max(t, o.px ?? 0), n = Math.max(n, o.grow ?? 0), r = Math.max(r, w(o));
55
- let e = T(o);
54
+ t = Math.max(t, o.px ?? 0), n = Math.max(n, o.grow ?? 0), r = Math.max(r, E(o));
55
+ let e = D(o);
56
56
  e === void 0 ? a = !1 : i = i === void 0 ? e : Math.max(i, e);
57
57
  }
58
- return D({
58
+ return O({
59
59
  px: t,
60
60
  grow: n,
61
61
  minPx: r,
@@ -70,11 +70,11 @@ function ue(e) {
70
70
  maxPx: 0
71
71
  }, n = !0;
72
72
  for (let r of e) {
73
- t.px += S(r.px), t.grow += S(r.grow), t.minPx += w(r);
74
- let e = T(r);
73
+ t.px += S(r.px), t.grow += S(r.grow), t.minPx += E(r);
74
+ let e = D(r);
75
75
  e === void 0 ? n = !1 : t.maxPx += e;
76
76
  }
77
- return n || delete t.maxPx, D(t);
77
+ return n || delete t.maxPx, O(t);
78
78
  }
79
79
  var y = class e {
80
80
  constructor(e, t) {
@@ -87,7 +87,7 @@ var y = class e {
87
87
  return this.#e(-e.width, -e.height);
88
88
  }
89
89
  #e(t, n) {
90
- return new e(ve(this.width, t), ve(this.height, n));
90
+ return new e(_e(this.width, t), _e(this.height, n));
91
91
  }
92
92
  isGrowing() {
93
93
  return !!(this.width.grow || this.height.grow);
@@ -106,12 +106,12 @@ function S(e) {
106
106
  return e || 0;
107
107
  }
108
108
  function pe(e) {
109
- return e && (r(e.px) || r(e.grow) || r(e.minPx) || r(e.maxPx));
109
+ return e && (a(e.px) || a(e.grow) || a(e.minPx) || a(e.maxPx));
110
110
  }
111
- function me(e) {
112
- if (q(e)) throw Error("parseSizeDef does not accept step-based sizes.");
113
- if (pe(e)) return _e(e), D(e);
114
- if (r(e)) return {
111
+ function C(e) {
112
+ if (J(e)) throw Error("parseSizeDef does not accept step-based sizes.");
113
+ if (pe(e)) return w(e), O(e);
114
+ if (a(e)) return {
115
115
  px: e,
116
116
  grow: 0
117
117
  };
@@ -121,28 +121,28 @@ function me(e) {
121
121
  };
122
122
  throw Error(`Invalid sizeDef: ${e}`);
123
123
  }
124
- function he(e, t, n) {
124
+ function me(e, t, n) {
125
125
  let r = !1;
126
- for (let t of e) _e(t), r ||= E(t);
127
- if (!r) return ge(e, t, n);
126
+ for (let t of e) w(t), r ||= ge(t);
127
+ if (!r) return he(e, t, n);
128
128
  let i = Array(e.length).fill(0), a = [];
129
129
  for (let t = 0; t < e.length; t++) x(e[t]) || a.push(t);
130
130
  let o = Math.max(0, a.length - 1) * n, s = Math.max(0, t - o), c = /* @__PURE__ */ new Set();
131
131
  for (let t of a) {
132
132
  let n = e[t];
133
- S(n.grow) || (i[t] = C(S(n.px), n), c.add(t));
133
+ S(n.grow) || (i[t] = T(S(n.px), n), c.add(t));
134
134
  }
135
135
  for (;;) {
136
136
  let t = 0, n = 0, r = 0;
137
137
  for (let o of a) c.has(o) ? r += i[o] : (t += S(e[o].px), n += S(e[o].grow));
138
138
  if (!n) {
139
- for (let t of a) c.has(t) || (i[t] = C(S(e[t].px), e[t]), c.add(t));
139
+ for (let t of a) c.has(t) || (i[t] = T(S(e[t].px), e[t]), c.add(t));
140
140
  break;
141
141
  }
142
142
  let o = Math.max(0, s - r - t), l = 0, u = [], d = [];
143
143
  for (let t of a) {
144
144
  if (c.has(t)) continue;
145
- let r = e[t], a = S(r.px) + S(r.grow) / n * o, s = C(a, r);
145
+ let r = e[t], a = S(r.px) + S(r.grow) / n * o, s = T(a, r);
146
146
  i[t] = s;
147
147
  let f = s - a;
148
148
  l += f, f > 0 ? u.push(t) : f < 0 && d.push(t);
@@ -154,7 +154,7 @@ function he(e, t, n) {
154
154
  }
155
155
  return i;
156
156
  }
157
- function ge(e, t, n) {
157
+ function he(e, t, n) {
158
158
  let r = 0, i = 0;
159
159
  for (let t of e) r += S(t.px) + (x(t) ? 0 : n), i += S(t.grow);
160
160
  r -= n;
@@ -165,36 +165,36 @@ function ge(e, t, n) {
165
165
  }
166
166
  return o;
167
167
  }
168
- function _e(e) {
168
+ function w(e) {
169
169
  if (e.minPx !== void 0 && e.maxPx !== void 0 && e.minPx > e.maxPx) throw Error("SizeDef minPx cannot be greater than maxPx.");
170
170
  }
171
- function C(e, t) {
171
+ function T(e, t) {
172
172
  return Math.min(Math.max(e, t.minPx ?? 0), t.maxPx ?? Infinity);
173
173
  }
174
- function w(e) {
175
- return C(S(e.px), e);
174
+ function E(e) {
175
+ return T(S(e.px), e);
176
176
  }
177
- function T(e) {
178
- return e.maxPx ?? (S(e.grow) ? void 0 : w(e));
177
+ function D(e) {
178
+ return e.maxPx ?? (S(e.grow) ? void 0 : E(e));
179
179
  }
180
- function E(e) {
180
+ function ge(e) {
181
181
  return e.minPx !== void 0 || e.maxPx !== void 0;
182
182
  }
183
- function ve(e, t) {
184
- return D({
183
+ function _e(e, t) {
184
+ return O({
185
185
  px: (e.px ?? 0) + t,
186
186
  grow: e.grow,
187
187
  minPx: e.minPx === void 0 ? void 0 : Math.max(0, e.minPx + t),
188
188
  maxPx: e.maxPx === void 0 ? void 0 : Math.max(0, e.maxPx + t)
189
189
  });
190
190
  }
191
- function D(e) {
192
- let t = {}, n = e.px !== void 0, r = e.grow !== void 0, i = E(e);
191
+ function O(e) {
192
+ let t = {}, n = e.px !== void 0, r = e.grow !== void 0, i = ge(e);
193
193
  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 > S(e.px) && (t.minPx = e.minPx), e.maxPx !== void 0 && (S(t.grow) || e.maxPx < S(e.px)) && (t.maxPx = e.maxPx), t;
194
194
  }
195
195
  //#endregion
196
196
  //#region ../core/src/view/layout/padding.js
197
- var O = class e {
197
+ var k = class e {
198
198
  constructor(e, t, n, r) {
199
199
  this.top = e || 0, this.right = t || 0, this.bottom = n || 0, this.left = r || 0;
200
200
  }
@@ -229,35 +229,35 @@ var O = class e {
229
229
  return this.top + this.bottom;
230
230
  }
231
231
  static createFromConfig(e) {
232
- return typeof e == "number" ? this.createUniformPadding(e) : e ? this.createFromRecord(e) : k;
232
+ return typeof e == "number" ? this.createUniformPadding(e) : e ? this.createFromRecord(e) : A;
233
233
  }
234
234
  static createFromRecord(t) {
235
235
  return new e(t.top, t.right, t.bottom, t.left);
236
236
  }
237
237
  static zero() {
238
- return k;
238
+ return A;
239
239
  }
240
240
  static createUniformPadding(t) {
241
241
  return new e(t, t, t, t);
242
242
  }
243
243
  };
244
- function ye(e, t) {
245
- return t ? new O(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;
244
+ function ve(e, t) {
245
+ 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;
246
246
  }
247
- var k = O.createUniformPadding(0);
248
- Object.freeze(k);
247
+ var A = k.createUniformPadding(0);
248
+ Object.freeze(A);
249
249
  //#endregion
250
250
  //#region ../core/src/utils/url.js
251
- var be = /^([A-Za-z]+:)?\/\//;
252
- function A(e, t) {
253
- if (t && be.test(t)) return t;
251
+ var ye = /^([A-Za-z]+:)?\/\//;
252
+ function j(e, t) {
253
+ if (t && ye.test(t)) return t;
254
254
  let n = typeof e == "function" ? e() : e;
255
255
  if (!n) return t;
256
256
  if (!t) return n;
257
257
  if (/[#?]/.test(n)) throw Error(`Cannot append to a url with query or hash. Append: ${t}, base: ${n}`);
258
- return Se(n) + t;
258
+ return M(n) + t;
259
259
  }
260
- function xe(e, t, n = Ce()) {
260
+ function be(e, t, n = xe()) {
261
261
  let r = typeof e == "function" ? e() : e;
262
262
  if (!t) return r;
263
263
  try {
@@ -266,19 +266,19 @@ function xe(e, t, n = Ce()) {
266
266
  return new URL(t, e).href;
267
267
  } else if (n) return new URL(t, n).href;
268
268
  } catch {}
269
- return A(r, t);
269
+ return j(r, t);
270
270
  }
271
- function Se(e) {
271
+ function M(e) {
272
272
  let t = e.replace(/[^/]*$/, "");
273
273
  return t === "" ? void 0 : t.endsWith("://") ? e + "/" : t;
274
274
  }
275
- function Ce() {
275
+ function xe() {
276
276
  if (typeof document < "u" && document.baseURI) return document.baseURI;
277
277
  if (typeof window < "u" && window.location?.href) return window.location.href;
278
278
  }
279
279
  //#endregion
280
280
  //#region ../../node_modules/flatqueue/index.js
281
- var j = class {
281
+ var N = class {
282
282
  constructor(e = Infinity, t = Float64Array, n = Uint32Array) {
283
283
  let r = e !== Infinity;
284
284
  this.ids = r ? new n(e) : [], this.values = r ? new t(e) : [], this.capacity = e, this.length = 0;
@@ -319,13 +319,11 @@ var j = class {
319
319
  shrink() {
320
320
  Array.isArray(this.ids) && (this.ids.length = this.length), Array.isArray(this.values) && (this.values.length = this.length);
321
321
  }
322
- }, M = Symbol("runtimeNode"), N = 1e6;
323
- function we(e) {
324
- return e ? (t, n) => {
325
- e.addDisposer(t, n);
326
- } : () => void 0;
322
+ }, P = Symbol("runtimeNode"), Se = 1e6;
323
+ function Ce(e) {
324
+ return e ? (t, n) => e.addDisposer(t, n) : () => () => void 0;
327
325
  }
328
- function Te(e, t) {
326
+ function we(e, t) {
329
327
  let n = {
330
328
  id: e.id,
331
329
  name: e.name,
@@ -339,7 +337,7 @@ function Te(e, t) {
339
337
  };
340
338
  }
341
339
  };
342
- return Object.defineProperty(n, M, {
340
+ return Object.defineProperty(n, P, {
343
341
  enumerable: !1,
344
342
  configurable: !1,
345
343
  writable: !1,
@@ -348,31 +346,37 @@ function Te(e, t) {
348
346
  t(e);
349
347
  } }) : n;
350
348
  }
351
- function Ee(e) {
352
- let t = e[M];
349
+ function Te(e) {
350
+ let t = e[P];
353
351
  if (!t) throw Error("ParamRef is not bound to this graph runtime. Expected runtime-created ref.");
354
352
  return t;
355
353
  }
356
- function De(e) {
357
- return typeof e.rank == "number" ? e.rank : Ee(e).rank;
354
+ function Ee(e) {
355
+ return typeof e.rank == "number" ? e.rank : Te(e).rank;
358
356
  }
359
- function Oe(e) {
357
+ function De(e) {
360
358
  for (let t of e) t();
361
359
  }
362
- var ke = class {
360
+ var Oe = class {
363
361
  #e = 1;
364
362
  #t = 1;
365
363
  #n = 0;
366
- #r = !1;
364
+ #r = 0;
367
365
  #i = !1;
368
- #a = /* @__PURE__ */ new Set();
369
- #o = /* @__PURE__ */ new Set();
370
- #s = new j();
371
- #c = new j();
372
- #l = /* @__PURE__ */ new Set();
373
- #u;
366
+ #a = !1;
367
+ #o = !1;
368
+ #s = 0;
369
+ #c = !1;
370
+ #l = /* @__PURE__ */ new Map();
371
+ #u = /* @__PURE__ */ new Map();
372
+ #d = /* @__PURE__ */ new Set();
373
+ #f = /* @__PURE__ */ new Set();
374
+ #p = new N();
375
+ #m = new N();
376
+ #h = /* @__PURE__ */ new Set();
377
+ #g;
374
378
  constructor(e = {}) {
375
- this.#u = we(e.lifecycleRegistry);
379
+ this.#g = Ce(e.lifecycleRegistry);
376
380
  }
377
381
  createWritable(e, t, n, r, i = {}) {
378
382
  let a = "n" + this.#e++, o = i.notify ?? !0, s = {
@@ -388,121 +392,219 @@ var ke = class {
388
392
  s.listeners.delete(e);
389
393
  };
390
394
  }
391
- };
392
- return this.#u(e, () => {
393
- s.disposed = !0, s.listeners.clear();
394
- }), Te(s, (e) => {
395
+ }, c = (e) => {
395
396
  if (s.disposed) throw Error("Cannot set disposed parameter \"" + t + "\" (" + a + ").");
396
- e !== s.value && (s.value = e, o && Oe(s.listeners));
397
- });
397
+ e !== s.value && (s.value = e, o && this.#v(s.listeners));
398
+ }, l = () => {
399
+ s.disposed = !0, s.listeners.clear(), u();
400
+ }, u = this.#g(e, l);
401
+ return Object.assign(we(s, c), { dispose: l });
398
402
  }
399
- computed(e, t, n, r) {
400
- let i = n.reduce((e, t) => Math.max(e, De(t)), 0), a = {
403
+ computed(e, t, n, r, i = {}) {
404
+ return this.#_(e, t, n, r, i);
405
+ }
406
+ operation(e, t, n, r, i, a = {}) {
407
+ return this.#_(e, t, n, r, a, i);
408
+ }
409
+ #_(e, t, n, r, i, a) {
410
+ let o = this.#b(() => s.dependencies), s = {
401
411
  id: "n" + this.#e++,
402
412
  name: t,
403
413
  kind: "derived",
404
- rank: i + 1,
414
+ get rank() {
415
+ return o();
416
+ },
417
+ dependencies: n,
405
418
  value: r(),
406
419
  disposed: !1,
407
420
  listeners: /* @__PURE__ */ new Set(),
408
421
  fn: r,
422
+ apply: a,
423
+ equals: i.equals ?? ((e, t) => e === t),
409
424
  subscribe(e) {
410
- return a.listeners.add(e), () => {
411
- a.listeners.delete(e);
425
+ return s.listeners.add(e), () => {
426
+ s.listeners.delete(e);
412
427
  };
413
428
  }
414
- }, o = n.map((e) => e.subscribe(() => {
415
- a.disposed || (this.#d(a), e.propagation === "sync" && this.flushNow());
416
- }));
417
- return this.#u(e, () => {
418
- a.disposed || (a.disposed = !0, o.forEach((e) => e()), a.listeners.clear(), this.#a.delete(a));
419
- }), Te(a);
429
+ };
430
+ a?.(s.value);
431
+ let c = () => s.dependencies.map((e) => e.subscribe(() => {
432
+ s.disposed || (this.#x(s), e.propagation === "sync" && this.flushNow());
433
+ })), l = c(), u = () => {
434
+ s.disposed || (s.disposed = !0, d(), l.forEach((e) => e()), s.listeners.clear(), this.#d.delete(s));
435
+ }, d = this.#g(e, u);
436
+ return Object.assign(we(s), {
437
+ dispose: u,
438
+ rebind: (e, n) => {
439
+ if (s.disposed) throw Error("Cannot rebind disposed operation: " + t);
440
+ let r = /* @__PURE__ */ new Set(), i = (e) => {
441
+ let n = e[P];
442
+ if (n === s) throw Error("Reactive dependency cycle: " + t);
443
+ if (!r.has(n)) {
444
+ r.add(n);
445
+ for (let e of n?.dependencies ?? []) i(e);
446
+ }
447
+ };
448
+ e.forEach(i), l.forEach((e) => e()), s.dependencies = e, s.fn = n, this.#n++, l = c(), this.#x(s), this.#p.clear();
449
+ for (let e of this.#d) this.#p.push(e, this.#C(e.rank));
450
+ this.#m.clear();
451
+ for (let e of this.#f) this.#m.push(e, this.#C(e.rank));
452
+ }
453
+ });
420
454
  }
421
455
  effect(e, t, n) {
422
- let r = t.reduce((e, t) => Math.max(e, De(t)), 0), i = {
456
+ let r = this.#b(() => t), i = {
423
457
  id: "n" + this.#e++,
424
- rank: r + 1,
458
+ get rank() {
459
+ return r();
460
+ },
425
461
  disposed: !1,
426
462
  fn: n
427
- }, a = () => {
428
- i.disposed || this.#f(i);
429
- }, o = t.map((e) => e.subscribe(a)), s = () => {
430
- i.disposed || (i.disposed = !0, o.forEach((e) => e()), this.#o.delete(i));
431
- };
432
- return this.#u(e, s), s;
463
+ }, a = t.map((e) => e.subscribe(() => {
464
+ i.disposed || (this.#S(i), e.propagation === "sync" && this.flushNow());
465
+ })), o = () => {
466
+ i.disposed || (i.disposed = !0, s(), a.forEach((e) => e()), this.#f.delete(i));
467
+ }, s = this.#g(e, o);
468
+ return o;
433
469
  }
434
470
  runInTransaction(e) {
435
- this.#n += 1;
471
+ this.#r += 1;
436
472
  try {
437
473
  return e();
438
474
  } finally {
439
- --this.#n, this.#n === 0 && this.#m();
475
+ --this.#r, this.#r === 0 && (this.#i ? (this.#i = !1, this.flushNow()) : this.#w());
440
476
  }
441
477
  }
442
- flushNow() {
443
- if (!(this.#n > 0 || this.#i)) {
444
- this.#r = !1, this.#i = !0;
445
- try {
446
- let e = !0;
447
- for (; e;) {
448
- for (e = !1; this.#s.length > 0;) {
449
- e = !0;
450
- let t = this.#s.pop();
451
- if (this.#a.delete(t), t.disposed) continue;
452
- let n = t.value, r = t.fn();
453
- r !== n && (t.value = r, Oe(t.listeners));
478
+ flushNow({ afterTransaction: e = !1 } = {}) {
479
+ if (e && this.#r > 0 && (this.#i = !0), this.#s > 0) {
480
+ this.#c = !0;
481
+ return;
482
+ }
483
+ if (this.#r > 0 || this.#o) return;
484
+ this.#a = !1, this.#o = !0;
485
+ let t;
486
+ try {
487
+ for (; this.#p.length || this.#l.size || this.#m.length;) {
488
+ for (; this.#p.length;) {
489
+ let e = this.#p.pop();
490
+ if (this.#d.delete(e), e.disposed) continue;
491
+ this.#y(e, e.name);
492
+ let t, n;
493
+ try {
494
+ t = e.fn(), n = !e.equals(t, e.value), n && e.apply?.(t);
495
+ } catch (t) {
496
+ throw this.#x(e), t;
454
497
  }
455
- for (; this.#c.length > 0;) {
456
- e = !0;
457
- let t = this.#c.pop();
458
- this.#o.delete(t), !t.disposed && t.fn();
498
+ n && (e.value = t, this.#v(e.listeners));
499
+ }
500
+ if (this.#l.size) {
501
+ let e = Infinity, n;
502
+ for (let [t, { rank: r }] of this.#l) r < e && (n = t, e = r);
503
+ let r = /* @__PURE__ */ new Set();
504
+ for (;;) {
505
+ if (r.has(n)) throw Error("Cyclic streaming publication dependencies");
506
+ r.add(n);
507
+ let e;
508
+ for (let t of this.#l.get(n).prerequisites?.() ?? []) if (this.#l.has(t)) {
509
+ e = t;
510
+ break;
511
+ }
512
+ if (!e) break;
513
+ n = e;
459
514
  }
515
+ t = this.#l.get(n).onError, this.#l.delete(n), this.#y(n, "streaming update"), n(), t = void 0;
516
+ } else if (this.#m.length) {
517
+ let e = this.#m.pop();
518
+ this.#f.delete(e), e.disposed || (this.#y(e, "effect " + e.id), e.fn());
460
519
  }
461
- } finally {
462
- this.#i = !1, this.#g();
463
520
  }
521
+ } catch (e) {
522
+ let n = Array.from(this.#l.values());
523
+ this.#l.clear(), t?.(e);
524
+ for (let t of n) t.onError?.(e);
525
+ for (let t of this.#h) t.reject(e);
526
+ throw this.#h.clear(), e;
527
+ } finally {
528
+ this.#u.clear(), this.#o = !1, this.#E();
529
+ }
530
+ }
531
+ requestUpdate(e, t = 0, n, r) {
532
+ this.#l.set(e, {
533
+ rank: t,
534
+ onError: n,
535
+ prerequisites: r
536
+ }), this.#w();
537
+ }
538
+ cancelUpdate(e) {
539
+ this.#l.delete(e);
540
+ }
541
+ #v(e) {
542
+ this.#s++;
543
+ try {
544
+ De(e);
545
+ } finally {
546
+ this.#s--, !this.#s && this.#c && (this.#c = !1, this.flushNow());
464
547
  }
465
548
  }
549
+ #y(e, t) {
550
+ let n = (this.#u.get(e) ?? 0) + 1;
551
+ if (n > 100) throw Error("Reactive propagation did not settle: " + t);
552
+ this.#u.set(e, n);
553
+ }
466
554
  whenPropagated(e = {}) {
467
- if (this.#h()) return Promise.resolve();
555
+ if (this.#T()) return Promise.resolve();
468
556
  let { signal: t, timeoutMs: n } = e;
469
557
  return t?.aborted ? Promise.reject(/* @__PURE__ */ Error("whenPropagated aborted")) : new Promise((e, r) => {
470
- let i = {
471
- resolve: e,
472
- reject: r
473
- };
474
- t && (i.abortHandler = () => {
475
- this.#l.delete(i), r(/* @__PURE__ */ Error("whenPropagated aborted"));
476
- }, t.addEventListener("abort", i.abortHandler, { once: !0 })), n != null && (i.timeoutId = setTimeout(() => {
477
- this.#l.delete(i), i.abortHandler && t?.removeEventListener("abort", i.abortHandler), r(/* @__PURE__ */ Error("whenPropagated timeout after " + n + " ms"));
478
- }, n)), this.#l.add(i);
558
+ let i, a = () => {
559
+ this.#h.delete(o), t?.removeEventListener("abort", s), i !== void 0 && clearTimeout(i);
560
+ }, o = {
561
+ resolve: () => {
562
+ a(), e();
563
+ },
564
+ reject: (e) => {
565
+ a(), r(e);
566
+ }
567
+ }, s = () => o.reject(/* @__PURE__ */ Error("whenPropagated aborted"));
568
+ t?.addEventListener("abort", s, { once: !0 }), n != null && (i = setTimeout(() => o.reject(/* @__PURE__ */ Error("whenPropagated timeout after " + n + " ms")), n)), this.#h.add(o);
479
569
  });
480
570
  }
481
- #d(e) {
482
- this.#a.has(e) || (this.#a.add(e), this.#s.push(e, this.#p(e.rank)), this.#m());
571
+ #b(e) {
572
+ let t = -1, n = 0;
573
+ return () => (t !== this.#n && (n = 1 + e().reduce((e, t) => Math.max(e, Ee(t)), 0), t = this.#n), n);
574
+ }
575
+ #x(e) {
576
+ if (this.#d.has(e)) {
577
+ this.#w();
578
+ return;
579
+ }
580
+ this.#d.add(e), this.#p.push(e, this.#C(e.rank)), this.#w();
483
581
  }
484
- #f(e) {
485
- this.#o.has(e) || (this.#o.add(e), this.#c.push(e, this.#p(e.rank)), this.#m());
582
+ #S(e) {
583
+ if (this.#f.has(e)) {
584
+ this.#w();
585
+ return;
586
+ }
587
+ this.#f.add(e), this.#m.push(e, this.#C(e.rank)), this.#w();
486
588
  }
487
- #p(e) {
488
- let t = this.#t % N;
489
- return this.#t += 1, e * N + t;
589
+ #C(e) {
590
+ let t = this.#t % Se;
591
+ return this.#t += 1, e * Se + t;
490
592
  }
491
- #m() {
492
- this.#n > 0 || this.#r || this.#i || (this.#r = !0, queueMicrotask(() => {
493
- this.flushNow();
593
+ #w() {
594
+ this.#r > 0 || this.#a || this.#o || (this.#a = !0, queueMicrotask(() => {
595
+ this.#a && this.flushNow();
494
596
  }));
495
597
  }
496
- #h() {
497
- return this.#n === 0 && !this.#r && !this.#i && this.#s.length === 0 && this.#c.length === 0 && this.#a.size === 0 && this.#o.size === 0;
598
+ #T() {
599
+ return this.#r === 0 && !this.#a && !this.#o && this.#p.length === 0 && this.#m.length === 0 && this.#d.size === 0 && this.#f.size === 0 && this.#l.size === 0;
498
600
  }
499
- #g() {
500
- if (this.#h()) {
501
- for (let e of this.#l) e.timeoutId && clearTimeout(e.timeoutId), e.resolve();
502
- this.#l.clear();
601
+ #E() {
602
+ if (this.#T()) {
603
+ for (let e of this.#h) e.resolve();
604
+ this.#h.clear();
503
605
  }
504
606
  }
505
- }, Ae = class {
607
+ }, ke = class {
506
608
  #e = 1;
507
609
  #t = /* @__PURE__ */ new Map();
508
610
  createOwner(e, t) {
@@ -512,7 +614,9 @@ var ke = class {
512
614
  addDisposer(e, t) {
513
615
  let n = this.#t.get(e);
514
616
  if (!n) throw Error("Unknown owner: " + e);
515
- n.add(t);
617
+ return n.add(t), () => {
618
+ n.delete(t);
619
+ };
516
620
  }
517
621
  disposeOwner(e) {
518
622
  let t = this.#t.get(e);
@@ -521,13 +625,14 @@ var ke = class {
521
625
  t.clear(), this.#t.delete(e);
522
626
  }
523
627
  }
524
- }, je = class {
628
+ }, Ae = class {
525
629
  #e = 1;
526
630
  #t = /* @__PURE__ */ new Map();
527
631
  createRootScope(e) {
528
632
  let t = "scope:" + this.#e++;
529
633
  return this.#t.set(t, {
530
634
  params: /* @__PURE__ */ new Map(),
635
+ initializers: /* @__PURE__ */ new Map(),
531
636
  ownerId: e
532
637
  }), t;
533
638
  }
@@ -537,6 +642,7 @@ var ke = class {
537
642
  return this.#t.set(n, {
538
643
  parentScope: t,
539
644
  params: /* @__PURE__ */ new Map(),
645
+ initializers: /* @__PURE__ */ new Map(),
540
646
  ownerId: e
541
647
  }), n;
542
648
  }
@@ -548,36 +654,57 @@ var ke = class {
548
654
  clearScope(e) {
549
655
  let t = this.#t.get(e);
550
656
  if (!t) throw Error("Unknown scope: " + e);
551
- t.params.clear();
657
+ t.params.clear(), t.initializers.clear();
658
+ }
659
+ registerInitializer(e, t, n) {
660
+ o(t);
661
+ let r = this.#t.get(e);
662
+ if (!r) throw Error("Unknown scope: " + e);
663
+ if (r.params.has(t) || r.initializers.has(t)) throw Error(`Parameter "${t}" already exists in scope ${e}`);
664
+ r.initializers.set(t, {
665
+ initialize: n,
666
+ initializing: !1
667
+ });
552
668
  }
553
669
  register(e, t, n) {
554
- a(t);
670
+ o(t);
555
671
  let r = this.#t.get(e);
556
672
  if (!r) throw Error("Unknown scope: " + e);
557
- if (r.params.has(t)) throw Error("Parameter \"" + t + "\" already exists in scope " + e);
673
+ if (r.params.has(t) || r.initializers.get(t)?.initializing === !1) throw Error("Parameter \"" + t + "\" already exists in scope " + e);
558
674
  return r.params.set(t, n), n;
559
675
  }
560
676
  resolve(e, t) {
561
- a(t);
677
+ o(t);
562
678
  let n = e;
563
679
  for (; n;) {
564
680
  let e = this.#t.get(n);
565
681
  if (!e) throw Error("Unknown scope: " + n);
566
- let r = e.params.get(t);
567
- if (r) return r;
682
+ let r = e.initializers.get(t);
683
+ if (r) {
684
+ if (r.initializing) throw Error(`Parameter dependency cycle while initializing "${t}" in ${n}.`);
685
+ r.initializing = !0;
686
+ try {
687
+ if (r.initialize(), !e.params.has(t)) throw Error(`Initializer did not register parameter "${t}".`);
688
+ e.initializers.delete(t);
689
+ } finally {
690
+ r.initializing = !1;
691
+ }
692
+ }
693
+ let i = e.params.get(t);
694
+ if (i) return i;
568
695
  n = e.parentScope;
569
696
  }
570
697
  }
571
698
  };
572
699
  //#endregion
573
700
  //#region ../core/src/paramRuntime/expressionCompiler.js
574
- function Me(e, t = {}, n = {}) {
575
- return p(e, t, n);
701
+ function je(e, t = {}, n = {}) {
702
+ return f(e, t, n);
576
703
  }
577
704
  //#endregion
578
705
  //#region ../core/src/paramRuntime/expressionRef.js
579
- function Ne(e, t, n = {}) {
580
- let r = {}, i = Me(e, r, n), a = /* @__PURE__ */ new Map();
706
+ function F(e, t, n = {}) {
707
+ let r = {}, i = je(e, r, n), a = /* @__PURE__ */ new Map();
581
708
  for (let n of i.globals) {
582
709
  if (a.has(n)) continue;
583
710
  let i = t(n);
@@ -601,17 +728,17 @@ function Ne(e, t, n = {}) {
601
728
  }, i.invalidate = () => {
602
729
  for (let e of o) e();
603
730
  o.clear();
604
- }, i.identifier = () => i.code + "|" + Array.from(a.values()).map((e) => e.id).concat((i.scaleDependencies ?? []).map((e) => e.id)).join(","), {
731
+ }, 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 ?? []), {
605
732
  expression: i,
606
- dependencies: Array.from(a.values()).concat(i.scaleDependencies ?? [])
733
+ dependencies: i.dependencies
607
734
  };
608
735
  }
609
736
  //#endregion
610
737
  //#region ../core/src/paramRuntime/paramRuntime.js
611
- var Pe = class {
612
- #e = new Ae();
613
- #t = new ke({ lifecycleRegistry: this.#e });
614
- #n = new je();
738
+ var Me = class {
739
+ #e = new ke();
740
+ #t = new Oe({ lifecycleRegistry: this.#e });
741
+ #n = new Ae();
615
742
  createScope(e) {
616
743
  let t = this.#e.createOwner("scope", e ?? "root");
617
744
  return e ? this.#n.createChildScope(t, e) : this.#n.createRootScope(t);
@@ -624,6 +751,9 @@ var Pe = class {
624
751
  let n = this.#n.getOwnerId(e);
625
752
  this.#e.addDisposer(n, t);
626
753
  }
754
+ registerInitializer(e, t, n) {
755
+ this.#n.registerInitializer(e, t, n);
756
+ }
627
757
  registerBase(e, t, n, r) {
628
758
  let i = this.#n.getOwnerId(e), a = this.#t.createWritable(i, t, "base", n, r);
629
759
  return this.#n.register(e, t, a);
@@ -633,30 +763,48 @@ var Pe = class {
633
763
  return this.#n.register(e, t, a);
634
764
  }
635
765
  registerDerived(e, t, n, r) {
636
- let { expression: i, dependencies: a } = Ne(n, (t) => this.resolve(e, t), r), o = this.#n.getOwnerId(e), s = this.#t.computed(o, t, a, () => i(null));
766
+ let { expression: i, dependencies: a } = F(n, (t) => this.resolve(r?.expressionScope ?? e, t), r), o = this.#n.getOwnerId(e), s = this.#t.computed(o, t, a, () => i(null));
637
767
  return this.#n.register(e, t, s);
638
768
  }
639
769
  createExpression(e, t, n) {
640
- let { expression: r } = Ne(t, (t) => this.resolve(e, t), n);
770
+ let { expression: r } = F(t, (t) => this.resolve(e, t), n);
641
771
  return r;
642
772
  }
643
773
  resolve(e, t) {
644
774
  return this.#n.resolve(e, t);
645
775
  }
776
+ signal(e, t, n) {
777
+ return this.#t.createWritable(this.#n.getOwnerId(e), t, "base", n);
778
+ }
779
+ computed(e, t, n, r, i) {
780
+ return this.#t.computed(this.#n.getOwnerId(e), t, n, r, i);
781
+ }
782
+ operation(e, t, n, r, i, a) {
783
+ return this.#t.operation(this.#n.getOwnerId(e), t, n, r, i, a);
784
+ }
785
+ effect(e, t, n) {
786
+ return this.#t.effect(this.#n.getOwnerId(e), t, n);
787
+ }
788
+ requestUpdate(e, t = 0, n, r) {
789
+ this.#t.requestUpdate(e, t, n, r);
790
+ }
791
+ cancelUpdate(e) {
792
+ this.#t.cancelUpdate(e);
793
+ }
646
794
  runInTransaction(e) {
647
795
  return this.#t.runInTransaction(e);
648
796
  }
649
- flushNow() {
650
- this.#t.flushNow();
797
+ flushNow(e) {
798
+ this.#t.flushNow(e);
651
799
  }
652
800
  whenPropagated(e) {
653
801
  return this.#t.whenPropagated(e);
654
802
  }
655
- }, Fe = (e) => new Promise((t) => setTimeout(t, e));
656
- function Ie() {
803
+ }, Ne = (e) => new Promise((t) => setTimeout(t, e));
804
+ function Pe() {
657
805
  return { canceled: !1 };
658
806
  }
659
- function Le(e) {
807
+ function Fe(e) {
660
808
  let t = e.requestAnimationFrame || window.requestAnimationFrame, n = e.signal, r = e.cancelToken, i = () => new Promise((i, a) => {
661
809
  if (r?.canceled) return i();
662
810
  if (n?.aborted) return a("aborted");
@@ -669,11 +817,11 @@ function Le(e) {
669
817
  };
670
818
  t(m);
671
819
  });
672
- return e.delay ? r?.canceled ? Promise.resolve() : n?.aborted ? Promise.reject("aborted") : Fe(e.delay).then(i) : i();
820
+ return e.delay ? r?.canceled ? Promise.resolve() : n?.aborted ? Promise.reject("aborted") : Ne(e.delay).then(i) : i();
673
821
  }
674
822
  //#endregion
675
823
  //#region ../core/src/utils/animator.js
676
- var Re = class {
824
+ var Ie = class {
677
825
  constructor(e) {
678
826
  this._renderCallback = e, this._renderRequested = !1, this._finalized = !1, this._warn = !1, this._animationFrameRequest = void 0, this.transitions = [], this.transitionsEnabled = !0;
679
827
  }
@@ -699,13 +847,13 @@ var Re = class {
699
847
  this._finalized = !0, this._renderRequested = !1, this.transitions = [], this._animationFrameRequest !== void 0 && (window.cancelAnimationFrame(this._animationFrameRequest), this._animationFrameRequest = void 0);
700
848
  }
701
849
  transition(e) {
702
- return Le({
850
+ return Fe({
703
851
  requestAnimationFrame: (e) => this.requestTransition(e),
704
852
  ...e
705
853
  });
706
854
  }
707
855
  };
708
- function ze(e, t, n, r, i) {
856
+ function Le(e, t, n, r, i) {
709
857
  let a = 0, o = !0, s = !1, c = structuredClone(i), l = c;
710
858
  function u(e, t, n, r) {
711
859
  return t + (e - t) * 2 ** (-n / r);
@@ -724,7 +872,7 @@ function ze(e, t, n, r, i) {
724
872
  s || (s = !0, e.requestTransition(d));
725
873
  }
726
874
  function p(n) {
727
- l = n, e.transitionsEnabled === !1 ? (c = l, o = !0, s = !1, e.cancelTransition(d), t(c)) : o && (o = !1, a = Be(), d(a));
875
+ l = n, e.transitionsEnabled === !1 ? (c = l, o = !0, s = !1, e.cancelTransition(d), t(c)) : o && (o = !1, a = Re(), d(a));
728
876
  }
729
877
  return p.stop = () => {
730
878
  o = !0, s = !1, e.cancelTransition(d);
@@ -732,13 +880,13 @@ function ze(e, t, n, r, i) {
732
880
  l = e, c = e, p.stop(), t(c);
733
881
  }, p;
734
882
  }
735
- function Be() {
883
+ function Re() {
736
884
  let e = globalThis.document?.timeline?.currentTime;
737
885
  return typeof e == "number" ? e : performance.now();
738
886
  }
739
887
  //#endregion
740
888
  //#region ../core/src/paramRuntime/viewParamRuntime.js
741
- var P = class {
889
+ var ze = class {
742
890
  #e;
743
891
  #t;
744
892
  #n = /* @__PURE__ */ new Map();
@@ -753,25 +901,49 @@ var P = class {
753
901
  constructor(e, t, n, r = {}) {
754
902
  this.#o = e ?? (() => void 0), this.#s = t ?? (() => void 0), this.#c = n, this.#l = r.snapTransitionedUpdates ?? !1;
755
903
  let i = this.#o();
756
- i ? (this.#e = i.#e, this.#t = this.#e.createScope(i.#t)) : (this.#e = new Pe(), this.#t = this.#e.createScope());
904
+ i ? (this.#e = i.#e, this.#t = this.#e.createScope(i.#t)) : (this.#e = new Me(), this.#t = this.#e.createScope());
905
+ }
906
+ registerParam(e, t = {}) {
907
+ let n = e.name;
908
+ if (o(n), this.#i.has(n)) throw Error("Parameter \"" + n + "\" already registered in this scope.");
909
+ if (Ve(e), t.defer) {
910
+ if (!("expr" in e)) throw Error("Only expression parameters can be deferred.");
911
+ return this.#e.registerInitializer(this.#t, n, () => {
912
+ this.#d(e);
913
+ }), this.#i.set(n, e), () => {
914
+ throw Error("Cannot set derived parameter \"" + n + "\".");
915
+ };
916
+ }
917
+ return this.#d(e);
918
+ }
919
+ registerScopedExpression(e, t, n) {
920
+ if (this.#e !== n.#e) throw Error("Scoped expressions must share a parameter runtime.");
921
+ if (this.#i.has(e)) throw Error("Parameter \"" + e + "\" already registered in this scope.");
922
+ this.#e.registerInitializer(this.#t, e, () => {
923
+ let r = this.#e.registerDerived(this.#t, e, t, {
924
+ expressionScope: n.#t,
925
+ resolveScaleResolution: n.#s
926
+ });
927
+ this.#r.set(e, r);
928
+ }), this.#i.set(e, {
929
+ name: e,
930
+ expr: t
931
+ });
757
932
  }
758
- registerParam(e) {
759
- let t = e.name;
760
- if (a(t), this.#i.has(t)) throw Error("Parameter \"" + t + "\" already registered in this scope.");
761
- He(e);
762
- let n, r;
933
+ #d(e) {
934
+ let t = e.name, n, i;
763
935
  if (e.push == "outer") {
764
- let i = this.findRuntimeForParam(t);
765
- if (!i) throw Error(`Parameter "${t}" not found in outer scope!`);
766
- let a = i.paramConfigs.get(t);
767
- if (!a) throw Error(`Outer parameter "${t}" exists as a value but has no registered config.`);
768
- if ("expr" in a || "select" in a || "ruler" in a) throw Error(`The outer parameter "${t}" must not have expr, select, or ruler properties!`);
936
+ let a = this.findRuntimeForParam(t);
937
+ if (!a) throw Error(`Parameter "${t}" not found in outer scope!`);
938
+ let o = a.paramConfigs.get(t);
939
+ if (!o) throw Error(`Outer parameter "${t}" exists as a value but has no registered config.`);
940
+ if ("expr" in o || "select" in o || "ruler" in o) throw Error(`The outer parameter "${t}" must not have expr, select, or ruler properties!`);
769
941
  n = (e) => {
770
- i.setValue(t, e);
771
- }, this.#n.set(t, n), "ruler" in e && (r = o(e, this), n(r));
772
- } else if ("value" in e) r = o(e, this), n = "transition" in e ? this.#f(t, r, e.transition) : this.#d(t, r);
942
+ a.setValue(t, e);
943
+ }, this.#n.set(t, n), "ruler" in e && (i = r(e, this), n(i));
944
+ } else if ("value" in e) i = r(e, this), n = "transition" in e ? this.#p(t, i, e.transition) : this.#f(t, i);
773
945
  else if ("expr" in e) {
774
- if ("transition" in e) this.#p(t, e.expr, e.transition);
946
+ if ("transition" in e) this.#m(t, e.expr, e.transition);
775
947
  else {
776
948
  let n = this.#e.registerDerived(this.#t, t, e.expr, { resolveScaleResolution: this.#s });
777
949
  this.#r.set(t, n);
@@ -779,20 +951,20 @@ var P = class {
779
951
  n = () => {
780
952
  throw Error("Cannot set derived parameter \"" + t + "\".");
781
953
  };
782
- } else r = o(e, this), n = this.#d(t, r);
954
+ } else i = r(e, this), n = this.#f(t, i);
783
955
  if ("select" in e) {
784
- if (r ??= o(e, this), !this.#n.has(t)) {
785
- let e = this.#e.registerSelection(this.#t, t, r);
956
+ if (i ??= r(e, this), !this.#n.has(t)) {
957
+ let e = this.#e.registerSelection(this.#t, t, i);
786
958
  this.#r.set(t, e), this.#n.set(t, (t) => {
787
959
  e.set(t), this.#e.flushNow();
788
960
  }), n = this.#n.get(t);
789
961
  }
790
- n(r);
962
+ n(i);
791
963
  }
792
964
  return this.#i.set(t, e), n;
793
965
  }
794
966
  allocateSetter(e, t, n = !1) {
795
- if (a(e), this.#n.has(e)) throw Error("Setter already allocated for parameter: " + e);
967
+ if (o(e), this.#n.has(e)) throw Error("Setter already allocated for parameter: " + e);
796
968
  let r = this.#e.registerBase(this.#t, e, t, { notify: !n });
797
969
  this.#r.set(e, r);
798
970
  let i = (e) => {
@@ -801,22 +973,22 @@ var P = class {
801
973
  return this.#n.set(e, i), i;
802
974
  }
803
975
  setValue(e, t, n) {
804
- a(e);
976
+ o(e);
805
977
  let r = this.#n.get(e);
806
978
  if (!r) throw Error("Writable parameter not found in this scope: " + e);
807
979
  r(t, n);
808
980
  }
809
981
  getValue(e) {
810
- return this.#r.get(e)?.get();
982
+ return !this.#r.has(e) && this.hasLocalParam(e) && this.#e.resolve(this.#t, e), this.#r.get(e)?.get();
811
983
  }
812
984
  getTargetValue(e) {
813
- return a(e), this.#a.get(e)?.target ?? this.getValue(e);
985
+ return o(e), this.#a.get(e)?.target ?? this.getValue(e);
814
986
  }
815
987
  subscribe(e, t) {
816
- a(e);
988
+ o(e);
817
989
  let n = this.findRuntimeForParam(e);
818
990
  if (!n) throw Error("Parameter not found: " + e);
819
- let r = n.#r.get(e);
991
+ let r = n.#e.resolve(n.#t, e);
820
992
  if (!r) throw Error("Parameter found without local reference: " + e);
821
993
  return r.subscribe(t);
822
994
  }
@@ -830,13 +1002,19 @@ var P = class {
830
1002
  return this.#i;
831
1003
  }
832
1004
  hasLocalParam(e) {
833
- return a(e), this.#r.has(e);
1005
+ o(e);
1006
+ let t = this.#i.get(e);
1007
+ return this.#r.has(e) || t !== void 0 && "expr" in t;
1008
+ }
1009
+ isPendingParam(e) {
1010
+ let t = this.findRuntimeForParam(e);
1011
+ return t !== void 0 && !t.#r.has(e);
834
1012
  }
835
1013
  hasConfiguredParamInScopeChain(e) {
836
- return a(e), this.#i.has(e) ? !0 : this.#o()?.hasConfiguredParamInScopeChain(e) ?? !1;
1014
+ return o(e), this.#i.has(e) ? !0 : this.#o()?.hasConfiguredParamInScopeChain(e) ?? !1;
837
1015
  }
838
1016
  findRuntimeForParam(e) {
839
- return this.#r.has(e) ? this : this.#o()?.findRuntimeForParam(e);
1017
+ return this.hasLocalParam(e) ? this : this.#o()?.findRuntimeForParam(e);
840
1018
  }
841
1019
  getDebugState() {
842
1020
  let e = [];
@@ -844,7 +1022,7 @@ var P = class {
844
1022
  let r = this.#i.get(t);
845
1023
  e.push({
846
1024
  name: t,
847
- kind: Ve(r),
1025
+ kind: Be(r),
848
1026
  value: n.get(),
849
1027
  writable: this.#n.has(t),
850
1028
  configured: !!r,
@@ -865,7 +1043,28 @@ var P = class {
865
1043
  let r = this.createExpression(e), i = r.subscribe(t);
866
1044
  return (n.scopeOwned ?? !0) && this.#e.addScopeDisposer(this.#t, i), n.registerDisposer?.(i), r;
867
1045
  }
868
- #d(e, t) {
1046
+ signal(e, t) {
1047
+ return this.#e.signal(this.#t, e, t);
1048
+ }
1049
+ computed(e, t, n, r) {
1050
+ return this.#e.computed(this.#t, e, t, n, r);
1051
+ }
1052
+ operation(e, t, n, r, i) {
1053
+ return this.#e.operation(this.#t, e, t, n, r, i);
1054
+ }
1055
+ effect(e, t) {
1056
+ return this.#e.effect(this.#t, e, t);
1057
+ }
1058
+ get updateScheduler() {
1059
+ return this.#e;
1060
+ }
1061
+ requestUpdate(e, t = 0, n, r) {
1062
+ this.#e.requestUpdate(e, t, n, r);
1063
+ }
1064
+ cancelUpdate(e) {
1065
+ this.#e.cancelUpdate(e);
1066
+ }
1067
+ #f(e, t) {
869
1068
  let n = this.#e.registerBase(this.#t, e, t);
870
1069
  this.#r.set(e, n);
871
1070
  let r = (e) => {
@@ -873,24 +1072,24 @@ var P = class {
873
1072
  };
874
1073
  return this.#n.set(e, r), r;
875
1074
  }
876
- #f(e, t, n) {
877
- let r = this.#m(e, t, n), i = (t, n) => {
878
- this.#h(e, r, t, n);
1075
+ #p(e, t, n) {
1076
+ let r = this.#h(e, t, n), i = (t, n) => {
1077
+ this.#g(e, r, t, n);
879
1078
  };
880
1079
  return this.#n.set(e, i), i;
881
1080
  }
882
- #p(e, t, n) {
883
- let r = this.createExpression(t), i = this.#m(e, r(null), n), a = r.subscribe(() => {
884
- this.#h(e, i, r(null), { animate: !this.#l });
1081
+ #m(e, t, n) {
1082
+ let r = this.createExpression(t), i = this.#h(e, r(null), n), a = r.subscribe(() => {
1083
+ this.#g(e, i, r(null), { animate: !this.#l });
885
1084
  });
886
1085
  this.#e.addScopeDisposer(this.#t, a);
887
1086
  }
888
- #m(e, t, n) {
889
- let r = F(e, t), i = this.#e.registerBase(this.#t, e, r);
1087
+ #h(e, t, n) {
1088
+ let r = He(e, t), i = this.#e.registerBase(this.#t, e, r);
890
1089
  this.#r.set(e, i);
891
1090
  let a = this.#c;
892
1091
  if (!a) throw Error(`The parameter "${e}" uses transition but no animator is available.`);
893
- let o = ze(a, ({ value: e }) => {
1092
+ let o = Le(a, ({ value: e }) => {
894
1093
  i.set(e), this.#e.flushNow();
895
1094
  }, n.halfLife ?? 80, n.epsilon ?? .01, { value: i.get() }), s = {
896
1095
  target: i.get(),
@@ -901,8 +1100,8 @@ var P = class {
901
1100
  };
902
1101
  return this.#a.set(e, s), this.#e.addScopeDisposer(this.#t, s.dispose), s;
903
1102
  }
904
- #h(e, t, n, r = {}) {
905
- let i = F(e, n);
1103
+ #g(e, t, n, r = {}) {
1104
+ let i = He(e, n);
906
1105
  t.target = i, r.animate === !1 ? t.smoother.snap({ value: i }) : t.smoother({ value: i });
907
1106
  }
908
1107
  evaluateAndGet(e) {
@@ -911,8 +1110,8 @@ var P = class {
911
1110
  runInTransaction(e) {
912
1111
  return this.#e.runInTransaction(e);
913
1112
  }
914
- flushNow() {
915
- this.#e.flushNow();
1113
+ flushNow(e) {
1114
+ this.#e.flushNow(e);
916
1115
  }
917
1116
  whenPropagated(e) {
918
1117
  return this.#e.whenPropagated(e);
@@ -924,19 +1123,19 @@ var P = class {
924
1123
  this.#u || (this.#u = !0, this.#e.disposeScope(this.#t), this.#n.clear(), this.#r.clear(), this.#i.clear(), this.#a.clear());
925
1124
  }
926
1125
  hasPointSelections() {
927
- for (let e of this.#i.values()) if (s(e)) {
1126
+ for (let e of this.#i.values()) if (i(e)) {
928
1127
  let t = e.select;
929
- if (c(t)) {
1128
+ if (p(t)) {
930
1129
  if (t == "point") return !0;
931
1130
  } else if (t.type == "point") return !0;
932
1131
  }
933
1132
  return !1;
934
1133
  }
935
1134
  };
936
- function Ve(e) {
1135
+ function Be(e) {
937
1136
  return e ? e.push === "outer" ? "push" : "select" in e ? "selection" : "ruler" in e ? "ruler" : "expr" in e ? "derived" : "base" : "auto";
938
1137
  }
939
- function He(e) {
1138
+ function Ve(e) {
940
1139
  let t = e.name;
941
1140
  if ("value" in e && "expr" in e) throw Error(`The parameter "${t}" must not have both value and expr properties!`);
942
1141
  if ("expr" in e && "bind" in e) throw Error(`The parameter "${t}" must not have both expr and bind properties!`);
@@ -949,7 +1148,7 @@ function He(e) {
949
1148
  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.`);
950
1149
  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.`);
951
1150
  }
952
- function F(e, t) {
1151
+ function He(e, t) {
953
1152
  if (typeof t != "number" || !Number.isFinite(t)) throw Error(`Transitioned parameter "${e}" must have a finite numeric value.`);
954
1153
  return t;
955
1154
  }
@@ -966,7 +1165,7 @@ function We(e) {
966
1165
  //#endregion
967
1166
  //#region ../core/src/config/mergeConfig.js
968
1167
  function I(e) {
969
- return l(e) && !Array.isArray(e);
1168
+ return u(e) && !Array.isArray(e);
970
1169
  }
971
1170
  function Ge(e) {
972
1171
  let t = {};
@@ -1021,7 +1220,7 @@ function Ye(e) {
1021
1220
  }
1022
1221
  //#endregion
1023
1222
  //#region ../core/src/data/namedDataScope.js
1024
- var Xe = class {
1223
+ var W = class {
1025
1224
  name;
1026
1225
  owner;
1027
1226
  getDefaultData;
@@ -1059,13 +1258,13 @@ var Xe = class {
1059
1258
  dispose() {
1060
1259
  this.#e = void 0, this.#t = !1, this.#n++, this.#r = !0;
1061
1260
  }
1062
- }, Ze = class {
1261
+ }, Xe = class {
1063
1262
  view;
1064
1263
  #e = /* @__PURE__ */ new Map();
1065
1264
  #t = /* @__PURE__ */ new Map();
1066
1265
  constructor(e) {
1067
1266
  this.view = e;
1068
- for (let [t, n] of Object.entries(e.spec.datasets ?? {})) this.#e.set(t, new Xe(t, e, () => n));
1267
+ for (let [t, n] of Object.entries(e.spec.datasets ?? {})) this.#e.set(t, new W(t, e, () => n));
1069
1268
  }
1070
1269
  getLocalBinding(e) {
1071
1270
  return this.#e.get(e);
@@ -1079,7 +1278,7 @@ var Xe = class {
1079
1278
  let n = this.view.dataParent?.namedDataScope;
1080
1279
  if (n) return n.resolve(e);
1081
1280
  let r = this.#t.get(e);
1082
- return r || (r = new Xe(e, void 0, () => this.view.context.getNamedDataFromProvider(e)), this.#t.set(e, r)), r;
1281
+ return r || (r = new W(e, void 0, () => this.view.context.getNamedDataFromProvider(e)), this.#t.set(e, r)), r;
1083
1282
  }
1084
1283
  dispose() {
1085
1284
  for (let e of this.#e.values()) e.dispose();
@@ -1087,7 +1286,7 @@ var Xe = class {
1087
1286
  for (let e of this.#t.values()) e.dispose();
1088
1287
  this.#t.clear();
1089
1288
  }
1090
- }, W = "VISIT_SKIP", G = "VISIT_STOP", K = (e) => e, Qe = class {
1289
+ }, G = "VISIT_SKIP", K = "VISIT_STOP", q = (e) => e, Ze = class {
1091
1290
  spec;
1092
1291
  namedDataScope;
1093
1292
  #e;
@@ -1102,16 +1301,16 @@ var Xe = class {
1102
1301
  #l = void 0;
1103
1302
  #u = !1;
1104
1303
  #d = [];
1105
- opacityFunction = K;
1304
+ opacityFunction = q;
1106
1305
  #f = [];
1107
1306
  #p = "none";
1108
1307
  #m = /* @__PURE__ */ new Map();
1109
- facetCoords = new ie([], JSON.stringify);
1308
+ facetCoords = new ae([], JSON.stringify);
1110
1309
  constructor(e, t, n, r, i, a = {}) {
1111
1310
  if (!e) throw Error("View spec must be defined!");
1112
- 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.");
1311
+ if (this.context = t, this.layoutParent = n, this.dataParent = r, this.#t = i, this.spec = e, this.namedDataScope = new Xe(this), r && e.theme !== void 0) throw Error("\"theme\" is only supported at the root specification. Use \"config\" and \"style\" for subtree customization.");
1113
1312
  let o = r ? r.getConfigScopes() : [t.getBaseConfig()], s = e.config;
1114
- if (this.#e = [...o, s].filter((e) => !!e), this.resolutions = {
1313
+ this.#e = [...o, s].filter((e) => !!e), this.resolutions = {
1115
1314
  scale: {},
1116
1315
  axis: {},
1117
1316
  legend: {}
@@ -1122,18 +1321,17 @@ var Xe = class {
1122
1321
  }, this.flowHandle = void 0, this.needsAxes = {
1123
1322
  x: !1,
1124
1323
  y: !1
1125
- }, this.paramRuntime = new P(() => this.dataParent?.paramRuntime, (e) => this.getScaleResolution(e), t.animator, { snapTransitionedUpdates: !0 }), e.params) {
1126
- let t = /* @__PURE__ */ new Set();
1127
- for (let n of e.params) {
1128
- if ("expr" in n) {
1129
- let { usesScaleHelper: e, globals: r } = d(n.expr), i = r.some((e) => t.has(e));
1130
- if (e || i) {
1131
- t.add(n.name), this.#d.push(n);
1132
- continue;
1133
- }
1324
+ }, this.paramRuntime = new ze(() => this.dataParent?.paramRuntime, (e) => this.getScaleResolution(e), t.animator, { snapTransitionedUpdates: !0 });
1325
+ let l = [...e.params ?? [], ...Ye(e) ?? []];
1326
+ for (let e of l) {
1327
+ if ("expr" in e) {
1328
+ let { usesScaleHelper: t, globals: n } = c(e.expr), r = n.some((e) => this.paramRuntime.isPendingParam(e));
1329
+ if (t || r) {
1330
+ this.paramRuntime.registerParam(e, { defer: !0 }), this.#d.push(e.name);
1331
+ continue;
1134
1332
  }
1135
- this.paramRuntime.registerParam(n);
1136
1333
  }
1334
+ this.paramRuntime.registerParam(e);
1137
1335
  }
1138
1336
  this.options.layoutSizeParams !== "inherit" && (this.#a = this.#h("width"), this.#o = this.#h("height"));
1139
1337
  }
@@ -1176,10 +1374,10 @@ var Xe = class {
1176
1374
  return this.facetCoords.values().next().value;
1177
1375
  }
1178
1376
  getPadding() {
1179
- return this._cache("size/padding", () => O.createFromConfig(this.spec.padding));
1377
+ return this._cache("size/padding", () => k.createFromConfig(this.spec.padding));
1180
1378
  }
1181
1379
  getOverhang() {
1182
- return O.zero();
1380
+ return k.zero();
1183
1381
  }
1184
1382
  isScrollable() {
1185
1383
  return this.spec.viewportWidth != null || this.spec.viewportHeight != null;
@@ -1194,7 +1392,7 @@ var Xe = class {
1194
1392
  return new y(this.#g("viewportWidth") ?? e.width, this.#g("viewportHeight") ?? e.height);
1195
1393
  }
1196
1394
  #g(e) {
1197
- let { value: t, implicit: n } = this.#_(e), r = this.resolveSizeValue(e, t), i = q(r), a = e == "viewportWidth" || e == "viewportHeight";
1395
+ let { value: t, implicit: n } = this.#_(e), r = this.resolveSizeValue(e, t), i = J(r), a = e == "viewportWidth" || e == "viewportHeight";
1198
1396
  if (i) {
1199
1397
  if (a) throw new _(`Cannot use step-based size with "${e}"!`, this);
1200
1398
  let t = this.#x(e, r), i = this.getScaleResolution(e == "width" ? "x" : "y")?.getScale();
@@ -1206,11 +1404,11 @@ var Xe = class {
1206
1404
  n = ee(e) - e[0];
1207
1405
  } else throw new _(`Cannot use step-based size with "${i.type}" scale!`, this);
1208
1406
  let a = i;
1209
- n = ae(n, a.paddingInner(), a.paddingOuter());
1407
+ n = ie(n, a.paddingInner(), a.paddingOuter());
1210
1408
  let o = e == "width" ? "xOffset" : "yOffset", s = this.getScaleResolution(o)?.getScale(), c = r.for ?? (s && v(s.type) ? "offset" : "position"), l = t;
1211
1409
  if (c == "offset") {
1212
1410
  if (!s || !v(s.type)) throw new _(`Cannot use ${e}.step.for = "offset" without a discrete ${o} scale!`, this);
1213
- let t = s, n = ae(s.domain().length, t.paddingInner(), t.paddingOuter());
1411
+ let t = s, n = ie(s.domain().length, t.paddingInner(), t.paddingOuter());
1214
1412
  l *= n / (1 - a.paddingInner());
1215
1413
  }
1216
1414
  return {
@@ -1222,7 +1420,7 @@ var Xe = class {
1222
1420
  grow: 0
1223
1421
  };
1224
1422
  else throw new _(`Cannot use step-based size with "${e}"!`, this);
1225
- } else return (r && me(r)) ?? (a ? void 0 : {
1423
+ } else return (r && C(r)) ?? (a ? void 0 : {
1226
1424
  px: 0,
1227
1425
  grow: 1
1228
1426
  });
@@ -1247,7 +1445,7 @@ var Xe = class {
1247
1445
  resolveSizeValue(t, n) {
1248
1446
  if (!e(n)) return n;
1249
1447
  let r = this.#C(t)();
1250
- if (rt(r) || r === "container") return r;
1448
+ if (nt(r) || r === "container") return r;
1251
1449
  throw new _(`"${t}" ExprRef must resolve to a finite number or "container"!`, this);
1252
1450
  }
1253
1451
  registerSizeInvalidation() {
@@ -1255,7 +1453,7 @@ var Xe = class {
1255
1453
  }
1256
1454
  #y(e, t) {
1257
1455
  let { value: n, implicit: r } = this.#_(e);
1258
- if (!q(n)) return;
1456
+ if (!J(n)) return;
1259
1457
  let i = this.getScaleResolution(t);
1260
1458
  if (!i) {
1261
1459
  if (r) return;
@@ -1274,11 +1472,11 @@ var Xe = class {
1274
1472
  }
1275
1473
  #b(t) {
1276
1474
  let { value: n } = this.#_(t);
1277
- e(n) ? this.#S(t, n.expr) : q(n) && e(n.step) && this.#S(t + ".step", n.step.expr);
1475
+ e(n) ? this.#S(t, n.expr) : J(n) && e(n.step) && this.#S(t + ".step", n.step.expr);
1278
1476
  }
1279
1477
  #x(t, n) {
1280
1478
  let r = e(n.step) ? this.#C(t + ".step")() : n.step;
1281
- if (rt(r)) return r;
1479
+ if (nt(r)) return r;
1282
1480
  throw new _(`"${t}.step" ExprRef must resolve to a finite number!`, this);
1283
1481
  }
1284
1482
  #S(e, t) {
@@ -1324,7 +1522,7 @@ var Xe = class {
1324
1522
  return this.opacityFunction(1);
1325
1523
  }
1326
1524
  hasLocalOpacity() {
1327
- return this.opacityFunction !== K;
1525
+ return this.opacityFunction !== q;
1328
1526
  }
1329
1527
  getPathString() {
1330
1528
  return this.getLayoutAncestors().map((e) => e.name).reverse().join("/");
@@ -1400,17 +1598,17 @@ var Xe = class {
1400
1598
  }, this.visit(e);
1401
1599
  }
1402
1600
  configurePostScaleParams() {
1403
- let e = [...this.#d, ...Ye(this.spec) ?? []];
1601
+ let e = this.#d;
1404
1602
  if (e.length && !this.#u) {
1405
1603
  this.#u = !0, this.#l = !1;
1406
- for (let t of e) this.paramRuntime.registerParam(t);
1604
+ for (let t of e) this.paramRuntime.getValue(t);
1407
1605
  this.registerDisposer(this._addBroadcastHandler("subtreeDataReady", () => {
1408
1606
  this.#l = !0, this.#T();
1409
1607
  }));
1410
1608
  }
1411
1609
  }
1412
1610
  configureViewOpacity() {
1413
- (!this.opacityFunction || this.opacityFunction === K) && (this.opacityFunction = et(this));
1611
+ (!this.opacityFunction || this.opacityFunction === q) && (this.opacityFunction = $e(this));
1414
1612
  }
1415
1613
  finalizeParamRuntimeInitialization() {
1416
1614
  this.#l === void 0 ? this.paramRuntime.finalizeInitialization() : this.#T();
@@ -1422,8 +1620,8 @@ var Xe = class {
1422
1620
  return this.#s;
1423
1621
  }
1424
1622
  arrange(e, t, n = {}) {
1425
- if (n.firstFacet && this.facetCoords.clear(), this.facetCoords.set(n.facetId, m(t, f(n))), this.#a || this.#o) {
1426
- let e = this.getOverhang(), n = this.layoutParent ? O.zero() : this.getPadding();
1623
+ if (n.firstFacet && this.facetCoords.clear(), this.facetCoords.set(n.facetId, m(t, l(n))), this.#a || this.#o) {
1624
+ let e = this.getOverhang(), n = this.layoutParent ? k.zero() : this.getPadding();
1427
1625
  this.#a?.(t.width - e.width - n.width), this.#o?.(t.height - e.height - n.height);
1428
1626
  }
1429
1627
  this.#c = !0, this.#T();
@@ -1444,7 +1642,7 @@ var Xe = class {
1444
1642
  }
1445
1643
  getFacetFields(e) {
1446
1644
  let t = this.getEncoding().sample;
1447
- return i(t) ? [t.field] : this.options.inheritEncoding ? this.layoutParent?.getFacetFields(this) : [];
1645
+ return n(t) ? [t.field] : this.options.inheritEncoding ? this.layoutParent?.getFacetFields(this) : [];
1448
1646
  }
1449
1647
  usesSampleFacetRendering() {
1450
1648
  return this.layoutParent?.usesSampleFacetRendering() ?? !1;
@@ -1477,14 +1675,14 @@ var Xe = class {
1477
1675
  return "independent";
1478
1676
  }
1479
1677
  getBaseUrl() {
1480
- return A(() => this.dataParent?.getBaseUrl(), We(this.spec.baseUrl));
1678
+ return j(() => this.dataParent?.getBaseUrl(), We(this.spec.baseUrl));
1481
1679
  }
1482
1680
  isPickingSupported() {
1483
1681
  return !0;
1484
1682
  }
1485
1683
  getTitleText() {
1486
1684
  let t = this.spec.title;
1487
- if (t) return c(t) ? t : e(t.text) ? this.paramRuntime.evaluateAndGet(t.text.expr) : t.text;
1685
+ if (t) return p(t) ? t : e(t.text) ? this.paramRuntime.evaluateAndGet(t.text.expr) : t.text;
1488
1686
  }
1489
1687
  _cache(e, t) {
1490
1688
  return te(this, e, t);
@@ -1508,14 +1706,14 @@ var Xe = class {
1508
1706
  }
1509
1707
  propagateInteraction(e) {}
1510
1708
  };
1511
- function $e(e) {
1709
+ function Qe(e) {
1512
1710
  return "unitsPerPixel" in e;
1513
1711
  }
1514
- function et(t) {
1515
- let i = "opacity" in t.spec ? t.spec.opacity : void 0;
1516
- if (i !== void 0) {
1517
- if (r(i)) return (e) => e * i;
1518
- if ($e(i)) {
1712
+ function $e(t) {
1713
+ let n = "opacity" in t.spec ? t.spec.opacity : void 0;
1714
+ if (n !== void 0) {
1715
+ if (a(n)) return (e) => e * n;
1716
+ if (Qe(n)) {
1519
1717
  let r = (e) => {
1520
1718
  let n = t.getScaleResolution(e), r = n?.getScale();
1521
1719
  if ([
@@ -1526,13 +1724,13 @@ function et(t) {
1526
1724
  scale: r,
1527
1725
  scaleResolution: n
1528
1726
  };
1529
- }, a = nt(i.values, "opacity.values", t);
1530
- if (!n(i.unitsPerPixel)) throw new _("\"opacity.unitsPerPixel\" must be an array.", t);
1531
- let o = () => 1, s = [], c = () => {
1532
- let e = tt(nt(s.map((e) => e()), "opacity.unitsPerPixel", t), a, t), n = re().domain(e.unitsPerPixel).range(e.values).clamp(!0);
1533
- o = (e) => n(e);
1727
+ }, i = tt(n.values, "opacity.values", t);
1728
+ if (!s(n.unitsPerPixel)) throw new _("\"opacity.unitsPerPixel\" must be an array.", t);
1729
+ let a = () => 1, o = [], c = () => {
1730
+ let e = et(tt(o.map((e) => e()), "opacity.unitsPerPixel", t), i, t), n = re().domain(e.unitsPerPixel).range(e.values).clamp(!0);
1731
+ a = (e) => n(e);
1534
1732
  };
1535
- s = i.unitsPerPixel.map((n) => {
1733
+ o = n.unitsPerPixel.map((n) => {
1536
1734
  if (e(n)) {
1537
1735
  let e = t.paramRuntime.watchExpression(n.expr, () => {
1538
1736
  c(), t.context.animator.requestRender();
@@ -1542,28 +1740,28 @@ function et(t) {
1542
1740
  }), c();
1543
1741
  let l = (e) => {
1544
1742
  let t = e.scaleResolution.getAxisLength() || 1e3;
1545
- return u(e.scale.domain()) / t;
1546
- }, d;
1547
- if (i.channel === "auto") {
1743
+ return d(e.scale.domain()) / t;
1744
+ }, u;
1745
+ if (n.channel === "auto") {
1548
1746
  let e = r("x"), n = r("y");
1549
- if (e && n) d = () => (l(e) + l(n)) / 2;
1550
- else if (e) d = () => l(e);
1551
- else if (n) d = () => l(n);
1747
+ if (e && n) u = () => (l(e) + l(n)) / 2;
1748
+ else if (e) u = () => l(e);
1749
+ else if (n) u = () => l(n);
1552
1750
  else throw new _("Cannot find a resolved quantitative x or y scale for dynamic opacity!", t);
1553
1751
  } else {
1554
- let e = i.channel ? r(i.channel) : r("x") ?? r("y");
1752
+ let e = n.channel ? r(n.channel) : r("x") ?? r("y");
1555
1753
  if (!e) throw new _("Cannot find a resolved quantitative scale for dynamic opacity!", t);
1556
- d = () => l(e);
1754
+ u = () => l(e);
1557
1755
  }
1558
- return (e) => o(d()) * e;
1559
- } else if (e(i)) {
1560
- let e = t.paramRuntime.watchExpression(i.expr, () => t.context.animator.requestRender());
1756
+ return (e) => a(u()) * e;
1757
+ } else if (e(n)) {
1758
+ let e = t.paramRuntime.watchExpression(n.expr, () => t.context.animator.requestRender());
1561
1759
  return (t) => e(null) * t;
1562
1760
  }
1563
1761
  }
1564
- return K;
1762
+ return q;
1565
1763
  }
1566
- function tt(e, t, n) {
1764
+ function et(e, t, n) {
1567
1765
  if (!e.length) throw new _("\"opacity.unitsPerPixel\" must contain at least one stop.", n);
1568
1766
  if (e.length !== t.length) throw new _("\"opacity.unitsPerPixel\" and \"opacity.values\" must have the same length.", n);
1569
1767
  e.forEach((e, t) => {
@@ -1581,34 +1779,34 @@ function tt(e, t, n) {
1581
1779
  values: a
1582
1780
  };
1583
1781
  }
1584
- function nt(e, t, i) {
1585
- if (!n(e)) throw new _("\"" + t + "\" must evaluate to an array.", i);
1586
- return e.map((e, n) => {
1587
- if (!r(e) || !Number.isFinite(e)) throw new _("Invalid " + t + " value at index " + n + ". Expected a finite number.", i);
1782
+ function tt(e, t, n) {
1783
+ if (!s(e)) throw new _("\"" + t + "\" must evaluate to an array.", n);
1784
+ return e.map((e, r) => {
1785
+ if (!a(e) || !Number.isFinite(e)) throw new _("Invalid " + t + " value at index " + r + ". Expected a finite number.", n);
1588
1786
  return e;
1589
1787
  });
1590
1788
  }
1591
- var q = (e) => !!e && typeof e == "object" && "step" in e;
1592
- function rt(e) {
1789
+ var J = (e) => !!e && typeof e == "object" && "step" in e;
1790
+ function nt(e) {
1593
1791
  return typeof e == "number" && Number.isFinite(e);
1594
1792
  }
1595
- var J = /* @__PURE__ */ new WeakMap(), Y = /* @__PURE__ */ new WeakMap();
1596
- function it(e, t) {
1597
- X(e, t, "Import");
1793
+ var Y = /* @__PURE__ */ new WeakMap(), X = /* @__PURE__ */ new WeakMap();
1794
+ function rt(e, t) {
1795
+ at(e, t, "Import");
1598
1796
  }
1599
- function at(e, t) {
1600
- X(e, t, "View");
1797
+ function it(e, t) {
1798
+ at(e, t, "View");
1601
1799
  }
1602
- function X(e, t, n) {
1800
+ function at(e, t, n) {
1603
1801
  if (t !== null && typeof t != "string") throw Error(n + " scope name must be a string or null.");
1604
- J.set(e, { name: t });
1802
+ Y.set(e, { name: t });
1605
1803
  }
1606
1804
  function ot(e) {
1607
- return J.get(e);
1805
+ return Y.get(e);
1608
1806
  }
1609
1807
  function st(e, t = {}) {
1610
1808
  let n = t.skipSubtree ?? !1 ? "excludeSubtree" : "exclude";
1611
- Y.set(e, n);
1809
+ X.set(e, n);
1612
1810
  }
1613
1811
  function ct(e, t = {}) {
1614
1812
  Ke(e, t.skipSubtree ?? !1 ? "excludeSubtree" : "exclude");
@@ -1619,7 +1817,7 @@ function lt(e) {
1619
1817
  function Z(e) {
1620
1818
  let t = e.getDataAncestors(), n = [];
1621
1819
  for (let e = t.length - 1; e >= 0; --e) {
1622
- let r = J.get(t[e]);
1820
+ let r = Y.get(t[e]);
1623
1821
  r && typeof r.name == "string" && n.push(r.name);
1624
1822
  }
1625
1823
  return n;
@@ -1648,14 +1846,14 @@ function ft(e) {
1648
1846
  function pt(e, t) {
1649
1847
  e.visit((e) => {
1650
1848
  let n = qe(e);
1651
- if (n === "excludeSubtree") return W;
1849
+ if (n === "excludeSubtree") return G;
1652
1850
  if (n !== "exclude") return t(e);
1653
1851
  });
1654
1852
  }
1655
1853
  function mt(e, t) {
1656
1854
  e.visit((e) => {
1657
- let n = Y.get(e);
1658
- if (n === "excludeSubtree") return W;
1855
+ let n = X.get(e);
1856
+ if (n === "excludeSubtree") return G;
1659
1857
  if (n !== "exclude") return t(e);
1660
1858
  });
1661
1859
  }
@@ -1680,8 +1878,8 @@ function gt(e, t) {
1680
1878
  }
1681
1879
  function _t(e, t) {
1682
1880
  e.visit((e) => {
1683
- let n = Y.get(e);
1684
- if (n === "excludeSubtree") return W;
1881
+ let n = X.get(e);
1882
+ if (n === "excludeSubtree") return G;
1685
1883
  if (n !== "exclude") for (let [n, r] of e.paramRuntime.paramConfigs) Q(r) && t({
1686
1884
  view: e,
1687
1885
  param: r,
@@ -1710,12 +1908,12 @@ function xt(e) {
1710
1908
  if (typeof e.view != "string" || !e.view.length) throw Error("View selector view must be a non-empty string.");
1711
1909
  }
1712
1910
  function Q(e) {
1713
- return e.persist === !1 ? !1 : s(e) ? !0 : t(e) ? !!e.bind : !1;
1911
+ return e.persist === !1 ? !1 : i(e) ? !0 : t(e) ? !!e.bind : !1;
1714
1912
  }
1715
1913
  function St(e) {
1716
1914
  let t = /* @__PURE__ */ new Set([e]);
1717
1915
  return e.visit((e) => {
1718
- let n = J.get(e);
1916
+ let n = Y.get(e);
1719
1917
  n && typeof n.name == "string" && t.add(e);
1720
1918
  }), Array.from(t);
1721
1919
  }
@@ -1750,7 +1948,7 @@ function Et(e, t, n) {
1750
1948
  if (i.length <= 1) return;
1751
1949
  let a = /* @__PURE__ */ new Map();
1752
1950
  for (let e of i) {
1753
- let t = J.get(e), n = t ? t.name : void 0;
1951
+ let t = Y.get(e), n = t ? t.name : void 0;
1754
1952
  typeof n != "string" || !n.length || a.set(n, (a.get(n) ?? 0) + 1);
1755
1953
  }
1756
1954
  for (let [e, r] of a) r > 1 && n.push({
@@ -1762,17 +1960,17 @@ function Dt(e, t) {
1762
1960
  let n = [];
1763
1961
  return $(e, t, (e) => {
1764
1962
  if (Z(e).length !== t.length + 1) return;
1765
- let r = J.get(e);
1963
+ let r = Y.get(e);
1766
1964
  !r || typeof r.name != "string" || n.push(e);
1767
1965
  }, { includeNamedImportRoots: !0 }), n;
1768
1966
  }
1769
1967
  function Ot(e) {
1770
1968
  let t = !1;
1771
1969
  return e.visit((e) => {
1772
- let n = Y.get(e);
1773
- if (n === "excludeSubtree") return W;
1970
+ let n = X.get(e);
1971
+ if (n === "excludeSubtree") return G;
1774
1972
  if (n !== "exclude") {
1775
- for (let n of e.paramRuntime.paramConfigs.values()) if (Q(n)) return t = !0, G;
1973
+ for (let n of e.paramRuntime.paramConfigs.values()) if (Q(n)) return t = !0, K;
1776
1974
  }
1777
1975
  }), t;
1778
1976
  }
@@ -1782,9 +1980,9 @@ function kt(e, t) {
1782
1980
  if (typeof i != "string" || !i.length) throw Error("Scope names must be non-empty strings.");
1783
1981
  let t, a = !1;
1784
1982
  if ($(e, r, (e) => {
1785
- let n = J.get(e);
1983
+ let n = Y.get(e);
1786
1984
  if (!(!n || n.name !== i) && Z(e).length === r.length + 1) {
1787
- if (t) return a = !0, G;
1985
+ if (t) return a = !0, K;
1788
1986
  t = e;
1789
1987
  }
1790
1988
  }, { includeNamedImportRoots: !0 }), a) throw Error("Multiple import instances named \"" + i + "\" in scope.");
@@ -1796,8 +1994,8 @@ function kt(e, t) {
1796
1994
  function $(e, t, n, r = {}) {
1797
1995
  let i = r.includeNamedImportRoots ?? !1;
1798
1996
  e.visit((e) => {
1799
- let r = J.get(e), a = Y.get(e);
1800
- if (a === "excludeSubtree") return W;
1997
+ let r = Y.get(e), a = X.get(e);
1998
+ if (a === "excludeSubtree") return G;
1801
1999
  if (a !== "exclude" && At(e, t, r, i)) return n(e);
1802
2000
  });
1803
2001
  }
@@ -1814,4 +2012,4 @@ function Mt(e, t) {
1814
2012
  return !0;
1815
2013
  }
1816
2014
  //#endregion
1817
- export { Se as A, oe as B, Ue as C, Ie as D, ze as E, b as F, ue as H, le as I, se as L, O as M, ye as N, j as O, y as P, T as R, z as S, Re as T, ce as U, me as V, G as _, lt as a, V as b, st as c, gt as d, ht as f, W as g, pt as h, ut as i, xe as j, A as k, it as l, mt as m, ot as n, ft as o, yt as p, Z as r, ct as s, vt as t, at as u, Qe as v, P as w, H as x, Je as y, w as z };
2015
+ export { M as A, oe as B, Ue as C, Pe as D, Le as E, b as F, ue as H, le as I, se as L, k as M, ve as N, N as O, y as P, D as R, z as S, Ie as T, ce as U, C as V, K as _, lt as a, V as b, st as c, gt as d, ht as f, G as g, pt as h, ut as i, be as j, j as k, rt as l, mt as m, ot as n, ft as o, yt as p, Z as r, ct as s, vt as t, it as u, Ze as v, ze as w, H as x, Je as y, E as z };