@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.
- package/dist/{agentApi-DgopQbMV.js → agentApi-BZ1JCo1N.js} +6994 -6499
- package/dist/agentApi.es.js +3057 -3225
- package/dist/agentShared.es.js +7 -7
- package/dist/{canvas2d-8uxuN_vx.js → canvas2d-B_PnIof-.js} +108 -107
- package/dist/{canvas2d-BtQC7Xr8.js → canvas2d-Cafq5v-N.js} +128 -127
- package/dist/{clipOptions-taFzEljc.js → clipOptions-D6eh9T-_.js} +1508 -1166
- package/dist/{clipOptions-BQfNhxgP.js → clipOptions-H68pJyEZ.js} +1496 -1114
- package/dist/{debug-D_VtWQ6l.js → debug-BGzgZmyk.js} +2 -2
- package/dist/{debug-Bzc3SoRg.js → debug-UYKZLNh4.js} +2 -2
- package/dist/index.es.js +96 -106
- package/dist/index.js +399 -392
- package/dist/{indexer-qy_dq5l5.js → indexer-Di57GyxX.js} +1 -1
- package/dist/{indexer-qiFctgR3.js → indexer-o6Hpg4nN.js} +1 -1
- package/dist/nativeText-D9SoxpaD.js +934 -0
- package/dist/nativeText-DAjvkrzc.js +934 -0
- package/dist/{rasterExport-B8pVoOsj.js → rasterExport-DzldLv6E.js} +1 -1
- package/dist/{rasterExport-C4r4xjQT.js → rasterExport-IAbJwi8F.js} +1 -1
- package/dist/{renderCanvas2D-BQrRWp2Z.js → renderCanvas2D-BJ93Ptqj.js} +102 -96
- package/dist/{renderCanvas2D-CHVNfIUz.js → renderCanvas2D-yJ1IrDcX.js} +103 -97
- package/dist/schema.json +10169 -2852
- package/dist/{svg-C-Sw6E6G.js → svg-BRpl2Xub.js} +338 -384
- package/dist/{svg-CKHwwKRt.js → svg-DJuqHIyc.js} +353 -399
- package/dist/{svgRasterizer-BgD72AmG.js → svgRasterizer-CGZQ5njV.js} +1 -1
- package/dist/{svgRasterizer-BgSNqI3L.js → svgRasterizer-PAoqLn1j.js} +1 -1
- package/dist/{vega-scale-D46-iCaL.js → vega-scale-BGC53c22.js} +887 -1184
- package/dist/{vega-scale-CK0_al6O.js → vega-scale-DdW2NzQ3.js} +898 -1195
- package/dist/{viewIdentityRegistry-CDtVktJD.js → viewIdentityRegistry-D4p067HU.js} +1 -1
- package/dist/{viewIdentityRegistry-B-VGlez1.js → viewIdentityRegistry-Dc2hXYsO.js} +1 -1
- package/dist/{viewSelectors-CKfxF_LM.js → viewSelectors-DNXnGwEW.js} +519 -321
- package/dist/{viewSelectors-D_imtq5Z.js → viewSelectors-DYYlOt91.js} +584 -386
- package/dist/{viewUtils-nCJ7AoaI.js → viewUtils-EdhZTPrJ.js} +2930 -2264
- package/dist/{webgl-BaA3jSa2.js → webgl-C53DwzVT.js} +427 -428
- package/dist/{webgl-FP-4EsBL.js → webgl-CdgNFlJk.js} +639 -640
- package/package.json +5 -5
- package/dist/nativeText-DFV5XIx8.js +0 -860
- package/dist/nativeText-vT3AWE14.js +0 -860
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import { Ct as e, Et as t,
|
|
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,
|
|
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 =
|
|
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 +=
|
|
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 =
|
|
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,
|
|
55
|
-
let e =
|
|
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
|
|
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 +=
|
|
74
|
-
let e =
|
|
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,
|
|
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(
|
|
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 && (
|
|
109
|
+
return e && (a(e.px) || a(e.grow) || a(e.minPx) || a(e.maxPx));
|
|
110
110
|
}
|
|
111
|
-
function
|
|
112
|
-
if (
|
|
113
|
-
if (pe(e)) return
|
|
114
|
-
if (
|
|
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
|
|
124
|
+
function me(e, t, n) {
|
|
125
125
|
let r = !1;
|
|
126
|
-
for (let t of e)
|
|
127
|
-
if (!r) return
|
|
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] =
|
|
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] =
|
|
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 =
|
|
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
|
|
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
|
|
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
|
|
171
|
+
function T(e, t) {
|
|
172
172
|
return Math.min(Math.max(e, t.minPx ?? 0), t.maxPx ?? Infinity);
|
|
173
173
|
}
|
|
174
|
-
function
|
|
175
|
-
return
|
|
174
|
+
function E(e) {
|
|
175
|
+
return T(S(e.px), e);
|
|
176
176
|
}
|
|
177
|
-
function
|
|
178
|
-
return e.maxPx ?? (S(e.grow) ? void 0 :
|
|
177
|
+
function D(e) {
|
|
178
|
+
return e.maxPx ?? (S(e.grow) ? void 0 : E(e));
|
|
179
179
|
}
|
|
180
|
-
function
|
|
180
|
+
function ge(e) {
|
|
181
181
|
return e.minPx !== void 0 || e.maxPx !== void 0;
|
|
182
182
|
}
|
|
183
|
-
function
|
|
184
|
-
return
|
|
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
|
|
192
|
-
let t = {}, n = e.px !== void 0, r = e.grow !== void 0, i =
|
|
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
|
|
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) :
|
|
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
|
|
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
|
|
245
|
-
return t ? new
|
|
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
|
|
248
|
-
Object.freeze(
|
|
247
|
+
var A = k.createUniformPadding(0);
|
|
248
|
+
Object.freeze(A);
|
|
249
249
|
//#endregion
|
|
250
250
|
//#region ../core/src/utils/url.js
|
|
251
|
-
var
|
|
252
|
-
function
|
|
253
|
-
if (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
|
|
258
|
+
return M(n) + t;
|
|
259
259
|
}
|
|
260
|
-
function
|
|
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
|
|
269
|
+
return j(r, t);
|
|
270
270
|
}
|
|
271
|
-
function
|
|
271
|
+
function M(e) {
|
|
272
272
|
let t = e.replace(/[^/]*$/, "");
|
|
273
273
|
return t === "" ? void 0 : t.endsWith("://") ? e + "/" : t;
|
|
274
274
|
}
|
|
275
|
-
function
|
|
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
|
|
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
|
-
},
|
|
323
|
-
function
|
|
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
|
|
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,
|
|
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
|
|
352
|
-
let t = e[
|
|
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
|
|
357
|
-
return typeof e.rank == "number" ? e.rank :
|
|
354
|
+
function Ee(e) {
|
|
355
|
+
return typeof e.rank == "number" ? e.rank : Te(e).rank;
|
|
358
356
|
}
|
|
359
|
-
function
|
|
357
|
+
function De(e) {
|
|
360
358
|
for (let t of e) t();
|
|
361
359
|
}
|
|
362
|
-
var
|
|
360
|
+
var Oe = class {
|
|
363
361
|
#e = 1;
|
|
364
362
|
#t = 1;
|
|
365
363
|
#n = 0;
|
|
366
|
-
#r =
|
|
364
|
+
#r = 0;
|
|
367
365
|
#i = !1;
|
|
368
|
-
#a =
|
|
369
|
-
#o =
|
|
370
|
-
#s =
|
|
371
|
-
#c =
|
|
372
|
-
#l = /* @__PURE__ */ new
|
|
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.#
|
|
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 &&
|
|
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
|
-
|
|
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
|
|
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
|
|
411
|
-
|
|
425
|
+
return s.listeners.add(e), () => {
|
|
426
|
+
s.listeners.delete(e);
|
|
412
427
|
};
|
|
413
428
|
}
|
|
414
|
-
}
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
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 =
|
|
456
|
+
let r = this.#b(() => t), i = {
|
|
423
457
|
id: "n" + this.#e++,
|
|
424
|
-
rank
|
|
458
|
+
get rank() {
|
|
459
|
+
return r();
|
|
460
|
+
},
|
|
425
461
|
disposed: !1,
|
|
426
462
|
fn: n
|
|
427
|
-
}, a = () => {
|
|
428
|
-
i.disposed || this.#
|
|
429
|
-
}
|
|
430
|
-
i.disposed || (i.disposed = !0,
|
|
431
|
-
};
|
|
432
|
-
return
|
|
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.#
|
|
471
|
+
this.#r += 1;
|
|
436
472
|
try {
|
|
437
473
|
return e();
|
|
438
474
|
} finally {
|
|
439
|
-
--this.#
|
|
475
|
+
--this.#r, this.#r === 0 && (this.#i ? (this.#i = !1, this.flushNow()) : this.#w());
|
|
440
476
|
}
|
|
441
477
|
}
|
|
442
|
-
flushNow() {
|
|
443
|
-
if (
|
|
444
|
-
this.#
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
|
|
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
|
-
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
|
|
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.#
|
|
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
|
-
|
|
472
|
-
|
|
473
|
-
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
|
|
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
|
-
#
|
|
482
|
-
|
|
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
|
-
#
|
|
485
|
-
|
|
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
|
-
#
|
|
488
|
-
let t = this.#t %
|
|
489
|
-
return this.#t += 1, e *
|
|
589
|
+
#C(e) {
|
|
590
|
+
let t = this.#t % Se;
|
|
591
|
+
return this.#t += 1, e * Se + t;
|
|
490
592
|
}
|
|
491
|
-
#
|
|
492
|
-
this.#
|
|
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
|
-
#
|
|
497
|
-
return this.#
|
|
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
|
-
#
|
|
500
|
-
if (this.#
|
|
501
|
-
for (let e of this.#
|
|
502
|
-
this.#
|
|
601
|
+
#E() {
|
|
602
|
+
if (this.#T()) {
|
|
603
|
+
for (let e of this.#h) e.resolve();
|
|
604
|
+
this.#h.clear();
|
|
503
605
|
}
|
|
504
606
|
}
|
|
505
|
-
},
|
|
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
|
-
},
|
|
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
|
-
|
|
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
|
-
|
|
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.
|
|
567
|
-
if (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
|
|
575
|
-
return
|
|
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
|
|
580
|
-
let r = {}, i =
|
|
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:
|
|
733
|
+
dependencies: i.dependencies
|
|
607
734
|
};
|
|
608
735
|
}
|
|
609
736
|
//#endregion
|
|
610
737
|
//#region ../core/src/paramRuntime/paramRuntime.js
|
|
611
|
-
var
|
|
612
|
-
#e = new
|
|
613
|
-
#t = new
|
|
614
|
-
#n = new
|
|
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 } =
|
|
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 } =
|
|
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
|
-
},
|
|
656
|
-
function
|
|
803
|
+
}, Ne = (e) => new Promise((t) => setTimeout(t, e));
|
|
804
|
+
function Pe() {
|
|
657
805
|
return { canceled: !1 };
|
|
658
806
|
}
|
|
659
|
-
function
|
|
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") :
|
|
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
|
|
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
|
|
850
|
+
return Fe({
|
|
703
851
|
requestAnimationFrame: (e) => this.requestTransition(e),
|
|
704
852
|
...e
|
|
705
853
|
});
|
|
706
854
|
}
|
|
707
855
|
};
|
|
708
|
-
function
|
|
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 =
|
|
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
|
|
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
|
|
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
|
|
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
|
-
|
|
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
|
|
765
|
-
if (!
|
|
766
|
-
let
|
|
767
|
-
if (!
|
|
768
|
-
if ("expr" in
|
|
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
|
-
|
|
771
|
-
}, this.#n.set(t, n), "ruler" in e && (
|
|
772
|
-
} else if ("value" in e)
|
|
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.#
|
|
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
|
|
954
|
+
} else i = r(e, this), n = this.#f(t, i);
|
|
783
955
|
if ("select" in e) {
|
|
784
|
-
if (
|
|
785
|
-
let e = this.#e.registerSelection(this.#t, t,
|
|
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(
|
|
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 (
|
|
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
|
-
|
|
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
|
|
985
|
+
return o(e), this.#a.get(e)?.target ?? this.getValue(e);
|
|
814
986
|
}
|
|
815
987
|
subscribe(e, t) {
|
|
816
|
-
|
|
988
|
+
o(e);
|
|
817
989
|
let n = this.findRuntimeForParam(e);
|
|
818
990
|
if (!n) throw Error("Parameter not found: " + e);
|
|
819
|
-
let r = n.#
|
|
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
|
-
|
|
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
|
|
1014
|
+
return o(e), this.#i.has(e) ? !0 : this.#o()?.hasConfiguredParamInScopeChain(e) ?? !1;
|
|
837
1015
|
}
|
|
838
1016
|
findRuntimeForParam(e) {
|
|
839
|
-
return this
|
|
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:
|
|
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
|
-
|
|
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
|
-
#
|
|
877
|
-
let r = this.#
|
|
878
|
-
this.#
|
|
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
|
-
#
|
|
883
|
-
let r = this.createExpression(t), i = this.#
|
|
884
|
-
this.#
|
|
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
|
-
#
|
|
889
|
-
let 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 =
|
|
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
|
-
#
|
|
905
|
-
let i =
|
|
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 (
|
|
1126
|
+
for (let e of this.#i.values()) if (i(e)) {
|
|
928
1127
|
let t = e.select;
|
|
929
|
-
if (
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
-
},
|
|
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
|
|
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
|
|
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
|
-
},
|
|
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 =
|
|
1304
|
+
opacityFunction = q;
|
|
1106
1305
|
#f = [];
|
|
1107
1306
|
#p = "none";
|
|
1108
1307
|
#m = /* @__PURE__ */ new Map();
|
|
1109
|
-
facetCoords = new
|
|
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
|
|
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
|
-
|
|
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
|
|
1126
|
-
|
|
1127
|
-
|
|
1128
|
-
|
|
1129
|
-
|
|
1130
|
-
|
|
1131
|
-
|
|
1132
|
-
|
|
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", () =>
|
|
1377
|
+
return this._cache("size/padding", () => k.createFromConfig(this.spec.padding));
|
|
1180
1378
|
}
|
|
1181
1379
|
getOverhang() {
|
|
1182
|
-
return
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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 &&
|
|
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 (
|
|
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 (!
|
|
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) :
|
|
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 (
|
|
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 !==
|
|
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 =
|
|
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.
|
|
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 ===
|
|
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,
|
|
1426
|
-
let e = this.getOverhang(), n = this.layoutParent ?
|
|
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
|
|
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
|
|
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
|
|
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
|
|
1709
|
+
function Qe(e) {
|
|
1512
1710
|
return "unitsPerPixel" in e;
|
|
1513
1711
|
}
|
|
1514
|
-
function
|
|
1515
|
-
let
|
|
1516
|
-
if (
|
|
1517
|
-
if (
|
|
1518
|
-
if (
|
|
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
|
-
},
|
|
1530
|
-
if (!n
|
|
1531
|
-
let
|
|
1532
|
-
let e = tt(
|
|
1533
|
-
|
|
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
|
-
|
|
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
|
|
1546
|
-
},
|
|
1547
|
-
if (
|
|
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)
|
|
1550
|
-
else if (e)
|
|
1551
|
-
else if (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 =
|
|
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
|
-
|
|
1754
|
+
u = () => l(e);
|
|
1557
1755
|
}
|
|
1558
|
-
return (e) =>
|
|
1559
|
-
} else if (e(
|
|
1560
|
-
let e = t.paramRuntime.watchExpression(
|
|
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
|
|
1762
|
+
return q;
|
|
1565
1763
|
}
|
|
1566
|
-
function
|
|
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
|
|
1585
|
-
if (!
|
|
1586
|
-
return e.map((e,
|
|
1587
|
-
if (!
|
|
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
|
|
1592
|
-
function
|
|
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
|
|
1596
|
-
function
|
|
1597
|
-
|
|
1793
|
+
var Y = /* @__PURE__ */ new WeakMap(), X = /* @__PURE__ */ new WeakMap();
|
|
1794
|
+
function rt(e, t) {
|
|
1795
|
+
at(e, t, "Import");
|
|
1598
1796
|
}
|
|
1599
|
-
function
|
|
1600
|
-
|
|
1797
|
+
function it(e, t) {
|
|
1798
|
+
at(e, t, "View");
|
|
1601
1799
|
}
|
|
1602
|
-
function
|
|
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
|
-
|
|
1802
|
+
Y.set(e, { name: t });
|
|
1605
1803
|
}
|
|
1606
1804
|
function ot(e) {
|
|
1607
|
-
return
|
|
1805
|
+
return Y.get(e);
|
|
1608
1806
|
}
|
|
1609
1807
|
function st(e, t = {}) {
|
|
1610
1808
|
let n = t.skipSubtree ?? !1 ? "excludeSubtree" : "exclude";
|
|
1611
|
-
|
|
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 =
|
|
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
|
|
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 =
|
|
1658
|
-
if (n === "excludeSubtree") return
|
|
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 =
|
|
1684
|
-
if (n === "excludeSubtree") return
|
|
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 :
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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 =
|
|
1773
|
-
if (n === "excludeSubtree") return
|
|
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,
|
|
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 =
|
|
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,
|
|
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 =
|
|
1800
|
-
if (a === "excludeSubtree") return
|
|
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 {
|
|
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 };
|