tangram-weather 0.2.1__py3-none-any.whl → 0.4.0__py3-none-any.whl
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.
- tangram_weather/dist-frontend/index.js +397 -417
- tangram_weather/dist-frontend/index.js.map +1 -1
- tangram_weather/package.json +3 -3
- {tangram_weather-0.2.1.dist-info → tangram_weather-0.4.0.dist-info}/METADATA +3 -2
- {tangram_weather-0.2.1.dist-info → tangram_weather-0.4.0.dist-info}/RECORD +7 -7
- {tangram_weather-0.2.1.dist-info → tangram_weather-0.4.0.dist-info}/WHEEL +0 -0
- {tangram_weather-0.2.1.dist-info → tangram_weather-0.4.0.dist-info}/entry_points.txt +0 -0
|
@@ -9,10 +9,10 @@ var er, Ds;
|
|
|
9
9
|
function Yi() {
|
|
10
10
|
return Ds || (Ds = 1, er = (a, e = 0, t = 1) => a < e ? e : a > t ? t : a), er;
|
|
11
11
|
}
|
|
12
|
-
var tr,
|
|
12
|
+
var tr, Os;
|
|
13
13
|
function Bl() {
|
|
14
|
-
if (
|
|
15
|
-
|
|
14
|
+
if (Os) return tr;
|
|
15
|
+
Os = 1;
|
|
16
16
|
const a = Yi();
|
|
17
17
|
return tr = (e) => {
|
|
18
18
|
e._clipped = !1, e._unclipped = e.slice(0);
|
|
@@ -21,10 +21,10 @@ function Bl() {
|
|
|
21
21
|
return e;
|
|
22
22
|
}, tr;
|
|
23
23
|
}
|
|
24
|
-
var nr,
|
|
24
|
+
var nr, Ps;
|
|
25
25
|
function os() {
|
|
26
|
-
if (
|
|
27
|
-
|
|
26
|
+
if (Ps) return nr;
|
|
27
|
+
Ps = 1;
|
|
28
28
|
const a = {};
|
|
29
29
|
for (let e of ["Boolean", "Number", "String", "Function", "Array", "Date", "RegExp", "Undefined", "Null"])
|
|
30
30
|
a[`[object ${e}]`] = e.toLowerCase();
|
|
@@ -169,7 +169,7 @@ function to() {
|
|
|
169
169
|
}, hr;
|
|
170
170
|
}
|
|
171
171
|
var dr, Zs;
|
|
172
|
-
function
|
|
172
|
+
function Ol() {
|
|
173
173
|
if (Zs) return dr;
|
|
174
174
|
Zs = 1;
|
|
175
175
|
const a = to(), e = rt(), t = /^rgb\(\s*(-?\d+),\s*(-?\d+)\s*,\s*(-?\d+)\s*\)$/, n = /^rgba\(\s*(-?\d+),\s*(-?\d+)\s*,\s*(-?\d+)\s*,\s*([01]|[01]?\.\d+)\)$/, r = /^rgb\(\s*(-?\d+(?:\.\d+)?)%,\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*\)$/, s = /^rgba\(\s*(-?\d+(?:\.\d+)?)%,\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*,\s*([01]|[01]?\.\d+)\)$/, o = /^hsl\(\s*(-?\d+(?:\.\d+)?),\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*\)$/, i = /^hsla\(\s*(-?\d+(?:\.\d+)?),\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*,\s*([01]|[01]?\.\d+)\)$/, { round: l } = Math, u = (c) => {
|
|
@@ -220,10 +220,10 @@ function Pl() {
|
|
|
220
220
|
return u.test = (c) => t.test(c) || n.test(c) || r.test(c) || s.test(c) || o.test(c) || i.test(c), dr = u, dr;
|
|
221
221
|
}
|
|
222
222
|
var js;
|
|
223
|
-
function
|
|
223
|
+
function Pl() {
|
|
224
224
|
if (js) return qs;
|
|
225
225
|
js = 1;
|
|
226
|
-
const a = ft(), e = De(), t = rt(), { type: n } = be(), r = Dl(), s =
|
|
226
|
+
const a = ft(), e = De(), t = rt(), { type: n } = be(), r = Dl(), s = Ol();
|
|
227
227
|
return e.prototype.css = function(o) {
|
|
228
228
|
return r(this._rgb, o);
|
|
229
229
|
}, a.css = (...o) => new e(...o, "css"), t.format.css = s, t.autodetect.push({
|
|
@@ -234,7 +234,7 @@ function Ol() {
|
|
|
234
234
|
}
|
|
235
235
|
}), qs;
|
|
236
236
|
}
|
|
237
|
-
|
|
237
|
+
Pl();
|
|
238
238
|
var $s = {}, pr, Xs;
|
|
239
239
|
function no() {
|
|
240
240
|
if (Xs) return pr;
|
|
@@ -664,8 +664,8 @@ function $l() {
|
|
|
664
664
|
for (let q = 0; q < S.length; q++)
|
|
665
665
|
u.push(q / (S.length - 1));
|
|
666
666
|
}
|
|
667
|
-
return
|
|
668
|
-
},
|
|
667
|
+
return U(), h = S;
|
|
668
|
+
}, O = function(S) {
|
|
669
669
|
if (f != null) {
|
|
670
670
|
const q = f.length - 1;
|
|
671
671
|
let Y = 0;
|
|
@@ -675,12 +675,12 @@ function $l() {
|
|
|
675
675
|
}
|
|
676
676
|
return 0;
|
|
677
677
|
};
|
|
678
|
-
let M = (S) => S,
|
|
678
|
+
let M = (S) => S, H = (S) => S;
|
|
679
679
|
const z = function(S, q) {
|
|
680
680
|
let Y, j;
|
|
681
681
|
if (q == null && (q = !1), isNaN(S) || S === null)
|
|
682
682
|
return o;
|
|
683
|
-
q ? j = S : f && f.length > 2 ? j =
|
|
683
|
+
q ? j = S : f && f.length > 2 ? j = O(S) / (f.length - 2) : I !== v ? j = (S - v) / (I - v) : j = 1, j = H(j), q || (j = M(j)), E !== 1 && (j = t(j, E)), j = c[0] + j * (1 - c[0] - c[1]), j = Math.min(1, Math.max(0, j));
|
|
684
684
|
const se = Math.floor(j * 1e4);
|
|
685
685
|
if (L && T[se])
|
|
686
686
|
Y = T[se];
|
|
@@ -706,7 +706,7 @@ function $l() {
|
|
|
706
706
|
}
|
|
707
707
|
return Y;
|
|
708
708
|
};
|
|
709
|
-
var
|
|
709
|
+
var U = () => T = {};
|
|
710
710
|
C(r);
|
|
711
711
|
const G = function(S) {
|
|
712
712
|
const q = a(z(S));
|
|
@@ -736,7 +736,7 @@ function $l() {
|
|
|
736
736
|
u.push(Y / (q - 1));
|
|
737
737
|
if (S.length > 2) {
|
|
738
738
|
const Y = S.map((se, ne) => ne / (S.length - 1)), j = S.map((se) => (se - v) / (I - v));
|
|
739
|
-
j.every((se, ne) => Y[ne] === se) || (
|
|
739
|
+
j.every((se, ne) => Y[ne] === se) || (H = (se) => {
|
|
740
740
|
if (se <= 0 || se >= 1) return se;
|
|
741
741
|
let ne = 0;
|
|
742
742
|
for (; se >= j[ne + 1]; ) ne++;
|
|
@@ -747,7 +747,7 @@ function $l() {
|
|
|
747
747
|
}
|
|
748
748
|
return l = [v, I], G;
|
|
749
749
|
}, G.mode = function(S) {
|
|
750
|
-
return arguments.length ? (s = S,
|
|
750
|
+
return arguments.length ? (s = S, U(), G) : s;
|
|
751
751
|
}, G.range = function(S, q) {
|
|
752
752
|
return C(S), G;
|
|
753
753
|
}, G.out = function(S) {
|
|
@@ -755,14 +755,14 @@ function $l() {
|
|
|
755
755
|
}, G.spread = function(S) {
|
|
756
756
|
return arguments.length ? (i = S, G) : i;
|
|
757
757
|
}, G.correctLightness = function(S) {
|
|
758
|
-
return S == null && (S = !0), y = S,
|
|
758
|
+
return S == null && (S = !0), y = S, U(), y ? M = function(q) {
|
|
759
759
|
const Y = z(0, !0).lab()[0], j = z(1, !0).lab()[0], se = Y > j;
|
|
760
760
|
let ne = z(q, !0).lab()[0];
|
|
761
761
|
const ye = Y + (j - Y) * q;
|
|
762
|
-
let Ge = ne - ye, le = 0,
|
|
762
|
+
let Ge = ne - ye, le = 0, Pe = 1, ht = 20;
|
|
763
763
|
for (; Math.abs(Ge) > 0.01 && ht-- > 0; )
|
|
764
764
|
(function() {
|
|
765
|
-
return se && (Ge *= -1), Ge < 0 ? (le = q, q += (
|
|
765
|
+
return se && (Ge *= -1), Ge < 0 ? (le = q, q += (Pe - q) * 0.5) : (Pe = q, q += (le - q) * 0.5), ne = z(q, !0).lab()[0], Ge = ne - ye;
|
|
766
766
|
})();
|
|
767
767
|
return q;
|
|
768
768
|
} : M = (q) => q, G;
|
|
@@ -936,7 +936,7 @@ function dc(a, e, t, n = co) {
|
|
|
936
936
|
const r = e / n, s = Fe(t), o = Fe(a[1]), i = Fe(a[0]), l = Math.sin(o) * Math.cos(r) + Math.cos(o) * Math.sin(r) * Math.cos(s), u = Math.asin(l), c = Math.sin(s) * Math.sin(r) * Math.cos(o), f = Math.cos(r) - Math.sin(o) * l, h = i + Math.atan2(c, f), p = zr(u);
|
|
937
937
|
return [zr(h), p];
|
|
938
938
|
}
|
|
939
|
-
const uo = Symbol("Comlink.proxy"), pc = Symbol("Comlink.endpoint"), mc = Symbol("Comlink.releaseProxy"), kr = Symbol("Comlink.finalizer"), dn = Symbol("Comlink.thrown"), fo = (a) => typeof a == "object" && a !== null || typeof a == "function", gc = {
|
|
939
|
+
const uo = /* @__PURE__ */ Symbol("Comlink.proxy"), pc = /* @__PURE__ */ Symbol("Comlink.endpoint"), mc = /* @__PURE__ */ Symbol("Comlink.releaseProxy"), kr = /* @__PURE__ */ Symbol("Comlink.finalizer"), dn = /* @__PURE__ */ Symbol("Comlink.thrown"), fo = (a) => typeof a == "object" && a !== null || typeof a == "function", gc = {
|
|
940
940
|
canHandle: (a) => fo(a) && a[uo],
|
|
941
941
|
serialize(a) {
|
|
942
942
|
const { port1: e, port2: t } = new MessageChannel();
|
|
@@ -1405,9 +1405,9 @@ function Sc(a = 4, e = !1) {
|
|
|
1405
1405
|
const T = f.length;
|
|
1406
1406
|
i = new h(T * 4);
|
|
1407
1407
|
for (let L = 0; L < T; L += 3) {
|
|
1408
|
-
const E = f[L + 0], C = f[L + 1],
|
|
1409
|
-
let
|
|
1410
|
-
i[
|
|
1408
|
+
const E = f[L + 0], C = f[L + 1], O = f[L + 2], M = c(E, C), H = c(C, O), z = c(O, E);
|
|
1409
|
+
let U = L * 4;
|
|
1410
|
+
i[U++] = E, i[U++] = M, i[U++] = z, i[U++] = C, i[U++] = H, i[U++] = M, i[U++] = O, i[U++] = z, i[U++] = H, i[U++] = M, i[U++] = H, i[U++] = z;
|
|
1411
1411
|
}
|
|
1412
1412
|
f = i;
|
|
1413
1413
|
}
|
|
@@ -1429,9 +1429,9 @@ function Sc(a = 4, e = !1) {
|
|
|
1429
1429
|
}
|
|
1430
1430
|
for (let y = 0; y < i.length; y += 3) {
|
|
1431
1431
|
const T = i[y + 0], L = i[y + 1], E = i[y + 2];
|
|
1432
|
-
let C = p[2 * T],
|
|
1433
|
-
const
|
|
1434
|
-
|
|
1432
|
+
let C = p[2 * T], O = p[2 * L], M = p[2 * E];
|
|
1433
|
+
const H = p[2 * T + 1], z = p[2 * L + 1], U = p[2 * E + 1];
|
|
1434
|
+
O - C >= 0.5 && H !== 1 && (O -= 1), M - O > 0.5 && (M -= 1), (C > 0.5 && C - M > 0.5 || C === 1 && U === 0) && (C -= 1), O > 0.5 && O - C > 0.5 && (O -= 1), H === 0 || H === 1 ? (C = (O + M) / 2, H === O ? p[2 * T] = C : i[y + 0] = I(T, C, H, !1)) : z === 0 || z === 1 ? (O = (C + M) / 2, z === C ? p[2 * L] = O : i[y + 1] = I(L, O, z, !1)) : (U === 0 || U === 1) && (M = (C + O) / 2, U === C ? p[2 * E] = M : i[y + 2] = I(E, M, U, !1)), C !== p[2 * T] && H !== 0 && H !== 1 && (i[y + 0] = I(T, C, H, !0)), O !== p[2 * L] && z !== 0 && z !== 1 && (i[y + 1] = I(L, O, z, !0)), M !== p[2 * E] && U !== 0 && U !== 1 && (i[y + 2] = I(E, M, U, !0));
|
|
1435
1435
|
}
|
|
1436
1436
|
return { vertices: o, triangles: i, uv: p };
|
|
1437
1437
|
}
|
|
@@ -1623,7 +1623,7 @@ function Dc(a, e, t, n = 1 / 0, r = 1 / 0, s) {
|
|
|
1623
1623
|
let o = 1;
|
|
1624
1624
|
const i = [];
|
|
1625
1625
|
n === void 0 && (n = 1 / 0), r !== void 0 && (o = lt(r / Qc));
|
|
1626
|
-
const l = new Lc([],
|
|
1626
|
+
const l = new Lc([], Oc);
|
|
1627
1627
|
let u = {
|
|
1628
1628
|
left: 0,
|
|
1629
1629
|
// left index in the kd-tree array
|
|
@@ -1687,13 +1687,13 @@ function _a(a, e, t, n) {
|
|
|
1687
1687
|
const r = n.minLng, s = n.maxLng, o = n.minLat, i = n.maxLat;
|
|
1688
1688
|
if (a >= r && a <= s)
|
|
1689
1689
|
return e < o ? lt((e - o) * Re) : e > i ? lt((e - i) * Re) : 0;
|
|
1690
|
-
const l = Math.min(lt((a - r) * Re), lt((a - s) * Re)), u =
|
|
1690
|
+
const l = Math.min(lt((a - r) * Re), lt((a - s) * Re)), u = Pc(e, l);
|
|
1691
1691
|
return u > o && u < i ? pn(l, t, e, u) : Math.min(
|
|
1692
1692
|
pn(l, t, e, o),
|
|
1693
1693
|
pn(l, t, e, i)
|
|
1694
1694
|
);
|
|
1695
1695
|
}
|
|
1696
|
-
function
|
|
1696
|
+
function Oc(a, e) {
|
|
1697
1697
|
return a.dist - e.dist;
|
|
1698
1698
|
}
|
|
1699
1699
|
function lt(a) {
|
|
@@ -1707,7 +1707,7 @@ function Ca(a, e, t, n, r) {
|
|
|
1707
1707
|
const s = lt((a - t) * Re);
|
|
1708
1708
|
return pn(s, r, e, n);
|
|
1709
1709
|
}
|
|
1710
|
-
function
|
|
1710
|
+
function Pc(a, e) {
|
|
1711
1711
|
const t = 1 - 2 * e;
|
|
1712
1712
|
return t <= 0 ? a > 0 ? 90 : -90 : Math.atan(Math.tan(a * Re) / t) / Re;
|
|
1713
1713
|
}
|
|
@@ -2135,13 +2135,13 @@ class Te extends Ce {
|
|
|
2135
2135
|
}
|
|
2136
2136
|
/** The usage with which this buffer was created */
|
|
2137
2137
|
usage;
|
|
2138
|
-
/** For index buffers, whether indices are 16 or 32 bit */
|
|
2138
|
+
/** For index buffers, whether indices are 8, 16 or 32 bit. Note: uint8 indices are automatically converted to uint16 for WebGPU compatibility */
|
|
2139
2139
|
indexType;
|
|
2140
2140
|
/** "Time" of last update, can be used to check if redraw is needed */
|
|
2141
2141
|
updateTimestamp;
|
|
2142
2142
|
constructor(e, t) {
|
|
2143
2143
|
const n = { ...t };
|
|
2144
|
-
(t.usage || 0) & Te.INDEX && !t.indexType && (t.data instanceof Uint32Array ? n.indexType = "uint32" : t.data instanceof Uint16Array && (n.indexType = "
|
|
2144
|
+
(t.usage || 0) & Te.INDEX && !t.indexType && (t.data instanceof Uint32Array ? n.indexType = "uint32" : t.data instanceof Uint16Array ? n.indexType = "uint16" : t.data instanceof Uint8Array && (n.indexType = "uint8")), delete n.data, super(e, n, Te.defaultProps), this.usage = n.usage || 0, this.indexType = n.indexType, this.updateTimestamp = e.incrementTimestamp();
|
|
2145
2145
|
}
|
|
2146
2146
|
/**
|
|
2147
2147
|
* Create a copy of this Buffer with new byteLength, with same props but of the specified size.
|
|
@@ -3134,11 +3134,11 @@ const Mu = (
|
|
|
3134
3134
|
vertex: Mu,
|
|
3135
3135
|
fragment: Qu
|
|
3136
3136
|
}, Qa = /void\s+main\s*\([^)]*\)\s*\{\n?/, Da = /}\n?[^{}]*$/, Qr = [], mn = "__LUMA_INJECT_DECLARATIONS__";
|
|
3137
|
-
function
|
|
3137
|
+
function Ou(a) {
|
|
3138
3138
|
const e = { vertex: {}, fragment: {} };
|
|
3139
3139
|
for (const t in a) {
|
|
3140
3140
|
let n = a[t];
|
|
3141
|
-
const r =
|
|
3141
|
+
const r = Pu(t);
|
|
3142
3142
|
typeof n == "string" && (n = {
|
|
3143
3143
|
order: 0,
|
|
3144
3144
|
injection: n
|
|
@@ -3146,7 +3146,7 @@ function Pu(a) {
|
|
|
3146
3146
|
}
|
|
3147
3147
|
return e;
|
|
3148
3148
|
}
|
|
3149
|
-
function
|
|
3149
|
+
function Pu(a) {
|
|
3150
3150
|
const e = a.slice(0, 2);
|
|
3151
3151
|
switch (e) {
|
|
3152
3152
|
case "vs":
|
|
@@ -3211,7 +3211,7 @@ function Nu(a) {
|
|
|
3211
3211
|
// defines = {},
|
|
3212
3212
|
inject: n = {}
|
|
3213
3213
|
} = a, r = {
|
|
3214
|
-
normalizedInjections:
|
|
3214
|
+
normalizedInjections: Ou(n),
|
|
3215
3215
|
parsedDeprecations: Uu(t)
|
|
3216
3216
|
};
|
|
3217
3217
|
e && (r.propValidators = Su(e)), a.instance = r;
|
|
@@ -3228,13 +3228,7 @@ function ko(a, e, t) {
|
|
|
3228
3228
|
}
|
|
3229
3229
|
function Uu(a) {
|
|
3230
3230
|
return a.forEach((e) => {
|
|
3231
|
-
|
|
3232
|
-
case "function":
|
|
3233
|
-
e.regex = new RegExp(`\\b${e.old}\\(`);
|
|
3234
|
-
break;
|
|
3235
|
-
default:
|
|
3236
|
-
e.regex = new RegExp(`${e.type} ${e.old};`);
|
|
3237
|
-
}
|
|
3231
|
+
e.type === "function" ? e.regex = new RegExp(`\\b${e.old}\\(`) : e.regex = new RegExp(`${e.type} ${e.old};`);
|
|
3238
3232
|
}), a;
|
|
3239
3233
|
}
|
|
3240
3234
|
function gs(a) {
|
|
@@ -3311,9 +3305,9 @@ function Fu(a, e) {
|
|
|
3311
3305
|
throw new Error("luma.gl v9 only supports GLSL 3.00 shader sources");
|
|
3312
3306
|
switch (e) {
|
|
3313
3307
|
case "vertex":
|
|
3314
|
-
return a =
|
|
3308
|
+
return a = Oa(a, Ru), a;
|
|
3315
3309
|
case "fragment":
|
|
3316
|
-
return a =
|
|
3310
|
+
return a = Oa(a, Wu), a;
|
|
3317
3311
|
default:
|
|
3318
3312
|
throw new Error(e);
|
|
3319
3313
|
}
|
|
@@ -3336,7 +3330,7 @@ const Bo = [
|
|
|
3336
3330
|
// `varying` keyword replaced with `in`
|
|
3337
3331
|
[$r("varying"), "in $1"]
|
|
3338
3332
|
];
|
|
3339
|
-
function
|
|
3333
|
+
function Oa(a, e) {
|
|
3340
3334
|
for (const [t, n] of e)
|
|
3341
3335
|
a = a.replace(t, n);
|
|
3342
3336
|
return a;
|
|
@@ -3425,13 +3419,13 @@ function Hu(a) {
|
|
|
3425
3419
|
function Zu(a) {
|
|
3426
3420
|
const { vs: e, fs: t } = a, n = gs(a.modules || []);
|
|
3427
3421
|
return {
|
|
3428
|
-
vs:
|
|
3422
|
+
vs: Pa(a.platformInfo, {
|
|
3429
3423
|
...a,
|
|
3430
3424
|
source: e,
|
|
3431
3425
|
stage: "vertex",
|
|
3432
3426
|
modules: n
|
|
3433
3427
|
}),
|
|
3434
|
-
fs:
|
|
3428
|
+
fs: Pa(a.platformInfo, {
|
|
3435
3429
|
...a,
|
|
3436
3430
|
// @ts-expect-error
|
|
3437
3431
|
source: t,
|
|
@@ -3473,15 +3467,15 @@ function ju(a, e) {
|
|
|
3473
3467
|
for (const L in T) {
|
|
3474
3468
|
const E = /^(v|f)s:#([\w-]+)$/.exec(L);
|
|
3475
3469
|
if (E) {
|
|
3476
|
-
const
|
|
3477
|
-
|
|
3470
|
+
const O = E[2] === "decl" ? h : p;
|
|
3471
|
+
O[L] = O[L] || [], O[L].push(T[L]);
|
|
3478
3472
|
} else
|
|
3479
3473
|
f[L] = f[L] || [], f[L].push(T[L]);
|
|
3480
3474
|
}
|
|
3481
3475
|
}
|
|
3482
3476
|
return u += Mo, u = Ln(u, n, h), u += So(c[n], f), u += l, u = Ln(u, n, p), u;
|
|
3483
3477
|
}
|
|
3484
|
-
function
|
|
3478
|
+
function Pa(a, e) {
|
|
3485
3479
|
const { source: t, stage: n, language: r = "glsl", modules: s, defines: o = {}, hookFunctions: i = [], inject: l = {}, prologue: u = !0, log: c } = e;
|
|
3486
3480
|
ms(typeof t == "string", "shader source must be a string");
|
|
3487
3481
|
const f = r === "glsl" ? qu(t).version : -1, h = a.shaderLanguageVersion, p = f === 100 ? "#version 100" : "#version 300 es", I = t.split(`
|
|
@@ -3511,30 +3505,30 @@ ${$u(y)}
|
|
|
3511
3505
|
`;
|
|
3512
3506
|
break;
|
|
3513
3507
|
}
|
|
3514
|
-
const L = Lo(i), E = {}, C = {},
|
|
3508
|
+
const L = Lo(i), E = {}, C = {}, O = {};
|
|
3515
3509
|
for (const M in l) {
|
|
3516
|
-
const
|
|
3510
|
+
const H = typeof l[M] == "string" ? { injection: l[M], order: 0 } : l[M], z = /^(v|f)s:(#)?([\w-]+)$/.exec(M);
|
|
3517
3511
|
if (z) {
|
|
3518
|
-
const
|
|
3519
|
-
|
|
3512
|
+
const U = z[2], G = z[3];
|
|
3513
|
+
U ? G === "decl" ? C[M] = [H] : O[M] = [H] : E[M] = [H];
|
|
3520
3514
|
} else
|
|
3521
|
-
|
|
3515
|
+
O[M] = [H];
|
|
3522
3516
|
}
|
|
3523
3517
|
for (const M of s) {
|
|
3524
3518
|
c && ko(M, I, c);
|
|
3525
|
-
const
|
|
3526
|
-
T +=
|
|
3519
|
+
const H = Do(M, n);
|
|
3520
|
+
T += H;
|
|
3527
3521
|
const z = M.instance?.normalizedInjections[n] || {};
|
|
3528
|
-
for (const
|
|
3529
|
-
const G = /^(v|f)s:#([\w-]+)$/.exec(
|
|
3522
|
+
for (const U in z) {
|
|
3523
|
+
const G = /^(v|f)s:#([\w-]+)$/.exec(U);
|
|
3530
3524
|
if (G) {
|
|
3531
|
-
const q = G[2] === "decl" ? C :
|
|
3532
|
-
q[
|
|
3525
|
+
const q = G[2] === "decl" ? C : O;
|
|
3526
|
+
q[U] = q[U] || [], q[U].push(z[U]);
|
|
3533
3527
|
} else
|
|
3534
|
-
E[
|
|
3528
|
+
E[U] = E[U] || [], E[U].push(z[U]);
|
|
3535
3529
|
}
|
|
3536
3530
|
}
|
|
3537
|
-
return T += "// ----- MAIN SHADER SOURCE -------------------------", T += Mo, T = Ln(T, n, C), T += So(L[n], E), T += I, T = Ln(T, n,
|
|
3531
|
+
return T += "// ----- MAIN SHADER SOURCE -------------------------", T += Mo, T = Ln(T, n, C), T += So(L[n], E), T += I, T = Ln(T, n, O), r === "glsl" && f !== h && (T = Fu(T, n)), T.trim();
|
|
3538
3532
|
}
|
|
3539
3533
|
function Qo(a) {
|
|
3540
3534
|
return function(t) {
|
|
@@ -3904,9 +3898,9 @@ function hf(a) {
|
|
|
3904
3898
|
var e = (32768 & a) >> 15, t = (31744 & a) >> 10, n = 1023 & a;
|
|
3905
3899
|
return t == 0 ? (e ? -1 : 1) * Math.pow(2, -14) * (n / Math.pow(2, 10)) : t == 31 ? n ? NaN : 1 / 0 * (e ? -1 : 1) : (e ? -1 : 1) * Math.pow(2, t - 15) * (1 + n / Math.pow(2, 10));
|
|
3906
3900
|
}
|
|
3907
|
-
const
|
|
3901
|
+
const Oo = new Float32Array(1), df = new Int32Array(Oo.buffer), ve = new Uint16Array(1);
|
|
3908
3902
|
function pf(a) {
|
|
3909
|
-
|
|
3903
|
+
Oo[0] = a;
|
|
3910
3904
|
const e = df[0], t = e >> 31 & 1;
|
|
3911
3905
|
let n = e >> 23 & 255, r = 8388607 & e;
|
|
3912
3906
|
if (n === 255) return ve[0] = t << 15 | 31744 | (r !== 0 ? 512 : 0), ve[0];
|
|
@@ -3919,10 +3913,10 @@ function pf(a) {
|
|
|
3919
3913
|
}
|
|
3920
3914
|
return n = n - 127 + 15, n >= 31 ? (ve[0] = t << 15 | 31744, ve[0]) : n <= 0 ? n < -10 ? (ve[0] = t << 15, ve[0]) : (r = (8388608 | r) >> 1 - n, ve[0] = t << 15 | r >> 13, ve[0]) : (r >>= 13, ve[0] = t << 15 | n << 10 | r, ve[0]);
|
|
3921
3915
|
}
|
|
3922
|
-
const As = new Uint32Array(1),
|
|
3916
|
+
const As = new Uint32Array(1), Po = new Float32Array(As.buffer, 0, 1);
|
|
3923
3917
|
function Va(a) {
|
|
3924
3918
|
const e = 112 + (a >> 6 & 31) << 23 | (63 & a) << 17;
|
|
3925
|
-
return As[0] = e,
|
|
3919
|
+
return As[0] = e, Po[0];
|
|
3926
3920
|
}
|
|
3927
3921
|
function mf(a, e, t, n, r, s, o, i, l) {
|
|
3928
3922
|
const u = n * (o >>= r) * (s >>= r) + t * o + e * i;
|
|
@@ -4042,7 +4036,7 @@ function mf(a, e, t, n, r, s, o, i, l) {
|
|
|
4042
4036
|
const c = new Uint32Array(a.buffer, u, 1)[0], f = (4192256 & c) >> 11, h = (4290772992 & c) >> 22;
|
|
4043
4037
|
return [Va(2047 & c), Va(f), (function(p) {
|
|
4044
4038
|
const v = 112 + (p >> 5 & 31) << 23 | (31 & p) << 18;
|
|
4045
|
-
return As[0] = v,
|
|
4039
|
+
return As[0] = v, Po[0];
|
|
4046
4040
|
})(h), 1];
|
|
4047
4041
|
}
|
|
4048
4042
|
}
|
|
@@ -4267,7 +4261,7 @@ class gn extends ce {
|
|
|
4267
4261
|
e(this), (t = this.value) === null || t === void 0 || t.search(e);
|
|
4268
4262
|
}
|
|
4269
4263
|
}
|
|
4270
|
-
var vt,
|
|
4264
|
+
var vt, Pt, w, g;
|
|
4271
4265
|
((a) => {
|
|
4272
4266
|
a.increment = "++", a.decrement = "--";
|
|
4273
4267
|
})(vt || (vt = {})), ((a) => {
|
|
@@ -4290,13 +4284,13 @@ let Fo = class extends ce {
|
|
|
4290
4284
|
};
|
|
4291
4285
|
((a) => {
|
|
4292
4286
|
a.assign = "=", a.addAssign = "+=", a.subtractAssin = "-=", a.multiplyAssign = "*=", a.divideAssign = "/=", a.moduloAssign = "%=", a.andAssign = "&=", a.orAssign = "|=", a.xorAssign = "^=", a.shiftLeftAssign = "<<=", a.shiftRightAssign = ">>=";
|
|
4293
|
-
})(
|
|
4287
|
+
})(Pt || (Pt = {})), ((a) => {
|
|
4294
4288
|
a.parse = function(e) {
|
|
4295
4289
|
const t = e;
|
|
4296
4290
|
if (t == "parse") throw new Error("Invalid value for AssignOperator");
|
|
4297
4291
|
return t;
|
|
4298
4292
|
};
|
|
4299
|
-
})(
|
|
4293
|
+
})(Pt || (Pt = {}));
|
|
4300
4294
|
class Ro extends ce {
|
|
4301
4295
|
constructor(e, t, n) {
|
|
4302
4296
|
super(), this.operator = e, this.variable = t, this.value = n;
|
|
@@ -4520,11 +4514,11 @@ let An = class extends k {
|
|
|
4520
4514
|
get astNodeType() {
|
|
4521
4515
|
return "sampler";
|
|
4522
4516
|
}
|
|
4523
|
-
},
|
|
4517
|
+
}, Oe = class extends Le {
|
|
4524
4518
|
constructor() {
|
|
4525
4519
|
super(), this.postfix = null;
|
|
4526
4520
|
}
|
|
4527
|
-
}, ut = class extends
|
|
4521
|
+
}, ut = class extends Oe {
|
|
4528
4522
|
constructor(e) {
|
|
4529
4523
|
super(), this.value = e;
|
|
4530
4524
|
}
|
|
@@ -4537,7 +4531,7 @@ let An = class extends k {
|
|
|
4537
4531
|
constEvaluateString() {
|
|
4538
4532
|
return this.value;
|
|
4539
4533
|
}
|
|
4540
|
-
}, Ve = class extends
|
|
4534
|
+
}, Ve = class extends Oe {
|
|
4541
4535
|
constructor(e, t) {
|
|
4542
4536
|
super(), this.type = e, this.args = t;
|
|
4543
4537
|
}
|
|
@@ -4550,7 +4544,7 @@ let An = class extends k {
|
|
|
4550
4544
|
constEvaluate(e, t) {
|
|
4551
4545
|
return t && (t[0] = this.type), e.evalExpression(this, e.context);
|
|
4552
4546
|
}
|
|
4553
|
-
}, xs = class extends
|
|
4547
|
+
}, xs = class extends Oe {
|
|
4554
4548
|
constructor(e, t) {
|
|
4555
4549
|
super(), this.cachedReturnValue = null, this.name = e, this.args = t;
|
|
4556
4550
|
}
|
|
@@ -4570,7 +4564,7 @@ let An = class extends k {
|
|
|
4570
4564
|
for (const t of this.args) t.search(e);
|
|
4571
4565
|
e(this);
|
|
4572
4566
|
}
|
|
4573
|
-
}, ke = class extends
|
|
4567
|
+
}, ke = class extends Oe {
|
|
4574
4568
|
constructor(e) {
|
|
4575
4569
|
super(), this.name = e;
|
|
4576
4570
|
}
|
|
@@ -4583,7 +4577,7 @@ let An = class extends k {
|
|
|
4583
4577
|
constEvaluate(e, t) {
|
|
4584
4578
|
return e.evalExpression(this, e.context);
|
|
4585
4579
|
}
|
|
4586
|
-
}, jo = class extends
|
|
4580
|
+
}, jo = class extends Oe {
|
|
4587
4581
|
constructor(e, t) {
|
|
4588
4582
|
super(), this.name = e, this.initializer = t;
|
|
4589
4583
|
}
|
|
@@ -4600,7 +4594,7 @@ let An = class extends k {
|
|
|
4600
4594
|
search(e) {
|
|
4601
4595
|
this.initializer.search(e);
|
|
4602
4596
|
}
|
|
4603
|
-
}, me = class extends
|
|
4597
|
+
}, me = class extends Oe {
|
|
4604
4598
|
constructor(e, t) {
|
|
4605
4599
|
super(), this.value = e, this.type = t;
|
|
4606
4600
|
}
|
|
@@ -4614,15 +4608,15 @@ let An = class extends k {
|
|
|
4614
4608
|
return this.value instanceof b;
|
|
4615
4609
|
}
|
|
4616
4610
|
get isVector() {
|
|
4617
|
-
return this.value instanceof m || this.value instanceof
|
|
4611
|
+
return this.value instanceof m || this.value instanceof Z;
|
|
4618
4612
|
}
|
|
4619
4613
|
get scalarValue() {
|
|
4620
4614
|
return this.value instanceof b ? this.value.value : (console.error("Value is not scalar."), 0);
|
|
4621
4615
|
}
|
|
4622
4616
|
get vectorValue() {
|
|
4623
|
-
return this.value instanceof m || this.value instanceof
|
|
4617
|
+
return this.value instanceof m || this.value instanceof Z ? this.value.data : (console.error("Value is not a vector or matrix."), new Float32Array(0));
|
|
4624
4618
|
}
|
|
4625
|
-
}, $o = class extends
|
|
4619
|
+
}, $o = class extends Oe {
|
|
4626
4620
|
constructor(e, t) {
|
|
4627
4621
|
super(), this.type = e, this.value = t;
|
|
4628
4622
|
}
|
|
@@ -4632,14 +4626,14 @@ let An = class extends k {
|
|
|
4632
4626
|
search(e) {
|
|
4633
4627
|
this.value.search(e);
|
|
4634
4628
|
}
|
|
4635
|
-
}, _t = class extends
|
|
4629
|
+
}, _t = class extends Oe {
|
|
4636
4630
|
constructor(e) {
|
|
4637
4631
|
super(), this.index = e;
|
|
4638
4632
|
}
|
|
4639
4633
|
search(e) {
|
|
4640
4634
|
this.index.search(e);
|
|
4641
4635
|
}
|
|
4642
|
-
}, Xo = class extends
|
|
4636
|
+
}, Xo = class extends Oe {
|
|
4643
4637
|
constructor() {
|
|
4644
4638
|
super();
|
|
4645
4639
|
}
|
|
@@ -4679,7 +4673,7 @@ let An = class extends k {
|
|
|
4679
4673
|
search(e) {
|
|
4680
4674
|
e(this), this.searchBlock(this.body, e);
|
|
4681
4675
|
}
|
|
4682
|
-
}, yn = class extends
|
|
4676
|
+
}, yn = class extends Oe {
|
|
4683
4677
|
constructor() {
|
|
4684
4678
|
super();
|
|
4685
4679
|
}
|
|
@@ -4907,15 +4901,15 @@ let m = class Vt extends qe {
|
|
|
4907
4901
|
return e;
|
|
4908
4902
|
}
|
|
4909
4903
|
};
|
|
4910
|
-
class
|
|
4904
|
+
class Z extends qe {
|
|
4911
4905
|
constructor(e, t, n = null) {
|
|
4912
4906
|
super(t, n), e instanceof Float32Array ? this.data = e : this.data = new Float32Array(e);
|
|
4913
4907
|
}
|
|
4914
4908
|
clone() {
|
|
4915
|
-
return new
|
|
4909
|
+
return new Z(new Float32Array(this.data), this.typeInfo, null);
|
|
4916
4910
|
}
|
|
4917
4911
|
setDataValue(e, t, n, r) {
|
|
4918
|
-
n instanceof ut ? console.error("TODO: Set matrix postfix") : t instanceof
|
|
4912
|
+
n instanceof ut ? console.error("TODO: Set matrix postfix") : t instanceof Z ? this.data = t.data : console.error("SetDataValue: Invalid value", t);
|
|
4919
4913
|
}
|
|
4920
4914
|
getSubData(e, t, n) {
|
|
4921
4915
|
if (t === null) return this;
|
|
@@ -5066,39 +5060,39 @@ let Ae = class bn extends qe {
|
|
|
5066
5060
|
}
|
|
5067
5061
|
if (o === "mat2x2f" || o === "mat2x2h") {
|
|
5068
5062
|
const i = new Float32Array(this.buffer, r, 4);
|
|
5069
|
-
return void (t instanceof
|
|
5063
|
+
return void (t instanceof Z ? (i[0] = t.data[0], i[1] = t.data[1], i[2] = t.data[2], i[3] = t.data[3]) : (i[0] = t[0], i[1] = t[1], i[2] = t[2], i[3] = t[3]));
|
|
5070
5064
|
}
|
|
5071
5065
|
if (o === "mat2x3f" || o === "mat2x3h") {
|
|
5072
5066
|
const i = new Float32Array(this.buffer, r, 6);
|
|
5073
|
-
return void (t instanceof
|
|
5067
|
+
return void (t instanceof Z ? (i[0] = t.data[0], i[1] = t.data[1], i[2] = t.data[2], i[3] = t.data[3], i[4] = t.data[4], i[5] = t.data[5]) : (i[0] = t[0], i[1] = t[1], i[2] = t[2], i[3] = t[3], i[4] = t[4], i[5] = t[5]));
|
|
5074
5068
|
}
|
|
5075
5069
|
if (o === "mat2x4f" || o === "mat2x4h") {
|
|
5076
5070
|
const i = new Float32Array(this.buffer, r, 8);
|
|
5077
|
-
return void (t instanceof
|
|
5071
|
+
return void (t instanceof Z ? (i[0] = t.data[0], i[1] = t.data[1], i[2] = t.data[2], i[3] = t.data[3], i[4] = t.data[4], i[5] = t.data[5], i[6] = t.data[6], i[7] = t.data[7]) : (i[0] = t[0], i[1] = t[1], i[2] = t[2], i[3] = t[3], i[4] = t[4], i[5] = t[5], i[6] = t[6], i[7] = t[7]));
|
|
5078
5072
|
}
|
|
5079
5073
|
if (o === "mat3x2f" || o === "mat3x2h") {
|
|
5080
5074
|
const i = new Float32Array(this.buffer, r, 6);
|
|
5081
|
-
return void (t instanceof
|
|
5075
|
+
return void (t instanceof Z ? (i[0] = t.data[0], i[1] = t.data[1], i[2] = t.data[2], i[3] = t.data[3], i[4] = t.data[4], i[5] = t.data[5]) : (i[0] = t[0], i[1] = t[1], i[2] = t[2], i[3] = t[3], i[4] = t[4], i[5] = t[5]));
|
|
5082
5076
|
}
|
|
5083
5077
|
if (o === "mat3x3f" || o === "mat3x3h") {
|
|
5084
5078
|
const i = new Float32Array(this.buffer, r, 9);
|
|
5085
|
-
return void (t instanceof
|
|
5079
|
+
return void (t instanceof Z ? (i[0] = t.data[0], i[1] = t.data[1], i[2] = t.data[2], i[3] = t.data[3], i[4] = t.data[4], i[5] = t.data[5], i[6] = t.data[6], i[7] = t.data[7], i[8] = t.data[8]) : (i[0] = t[0], i[1] = t[1], i[2] = t[2], i[3] = t[3], i[4] = t[4], i[5] = t[5], i[6] = t[6], i[7] = t[7], i[8] = t[8]));
|
|
5086
5080
|
}
|
|
5087
5081
|
if (o === "mat3x4f" || o === "mat3x4h") {
|
|
5088
5082
|
const i = new Float32Array(this.buffer, r, 12);
|
|
5089
|
-
return void (t instanceof
|
|
5083
|
+
return void (t instanceof Z ? (i[0] = t.data[0], i[1] = t.data[1], i[2] = t.data[2], i[3] = t.data[3], i[4] = t.data[4], i[5] = t.data[5], i[6] = t.data[6], i[7] = t.data[7], i[8] = t.data[8], i[9] = t.data[9], i[10] = t.data[10], i[11] = t.data[11]) : (i[0] = t[0], i[1] = t[1], i[2] = t[2], i[3] = t[3], i[4] = t[4], i[5] = t[5], i[6] = t[6], i[7] = t[7], i[8] = t[8], i[9] = t[9], i[10] = t[10], i[11] = t[11]));
|
|
5090
5084
|
}
|
|
5091
5085
|
if (o === "mat4x2f" || o === "mat4x2h") {
|
|
5092
5086
|
const i = new Float32Array(this.buffer, r, 8);
|
|
5093
|
-
return void (t instanceof
|
|
5087
|
+
return void (t instanceof Z ? (i[0] = t.data[0], i[1] = t.data[1], i[2] = t.data[2], i[3] = t.data[3], i[4] = t.data[4], i[5] = t.data[5], i[6] = t.data[6], i[7] = t.data[7]) : (i[0] = t[0], i[1] = t[1], i[2] = t[2], i[3] = t[3], i[4] = t[4], i[5] = t[5], i[6] = t[6], i[7] = t[7]));
|
|
5094
5088
|
}
|
|
5095
5089
|
if (o === "mat4x3f" || o === "mat4x3h") {
|
|
5096
5090
|
const i = new Float32Array(this.buffer, r, 12);
|
|
5097
|
-
return void (t instanceof
|
|
5091
|
+
return void (t instanceof Z ? (i[0] = t.data[0], i[1] = t.data[1], i[2] = t.data[2], i[3] = t.data[3], i[4] = t.data[4], i[5] = t.data[5], i[6] = t.data[6], i[7] = t.data[7], i[8] = t.data[8], i[9] = t.data[9], i[10] = t.data[10], i[11] = t.data[11]) : (i[0] = t[0], i[1] = t[1], i[2] = t[2], i[3] = t[3], i[4] = t[4], i[5] = t[5], i[6] = t[6], i[7] = t[7], i[8] = t[8], i[9] = t[9], i[10] = t[10], i[11] = t[11]));
|
|
5098
5092
|
}
|
|
5099
5093
|
if (o === "mat4x4f" || o === "mat4x4h") {
|
|
5100
5094
|
const i = new Float32Array(this.buffer, r, 16);
|
|
5101
|
-
return void (t instanceof
|
|
5095
|
+
return void (t instanceof Z ? (i[0] = t.data[0], i[1] = t.data[1], i[2] = t.data[2], i[3] = t.data[3], i[4] = t.data[4], i[5] = t.data[5], i[6] = t.data[6], i[7] = t.data[7], i[8] = t.data[8], i[9] = t.data[9], i[10] = t.data[10], i[11] = t.data[11], i[12] = t.data[12], i[13] = t.data[13], i[14] = t.data[14], i[15] = t.data[15]) : (i[0] = t[0], i[1] = t[1], i[2] = t[2], i[3] = t[3], i[4] = t[4], i[5] = t[5], i[6] = t[6], i[7] = t[7], i[8] = t[8], i[9] = t[9], i[10] = t[10], i[11] = t[11], i[12] = t[12], i[13] = t[13], i[14] = t[14], i[15] = t[15]));
|
|
5102
5096
|
}
|
|
5103
5097
|
if (t instanceof bn) {
|
|
5104
5098
|
if (n === t.typeInfo)
|
|
@@ -5116,7 +5110,7 @@ let Ae = class bn extends qe {
|
|
|
5116
5110
|
let i = this.offset, l = this.typeInfo;
|
|
5117
5111
|
for (; t; ) {
|
|
5118
5112
|
if (t instanceof _t) {
|
|
5119
|
-
const c = t.index, f = c instanceof
|
|
5113
|
+
const c = t.index, f = c instanceof Oe ? e.evalExpression(c, n) : c;
|
|
5120
5114
|
let h = 0;
|
|
5121
5115
|
if (f instanceof b ? h = f.value : typeof f == "number" ? h = f : console.error("GetDataValue: Invalid index type", c), l instanceof et) i += h * l.stride, l = l.format;
|
|
5122
5116
|
else {
|
|
@@ -5508,18 +5502,18 @@ let qa = class {
|
|
|
5508
5502
|
this._tokens.push(new qa(e, t, this._line, this._start, this._current));
|
|
5509
5503
|
}
|
|
5510
5504
|
};
|
|
5511
|
-
function
|
|
5505
|
+
function D(a) {
|
|
5512
5506
|
return Array.isArray(a) || a?.buffer instanceof ArrayBuffer;
|
|
5513
5507
|
}
|
|
5514
|
-
const
|
|
5508
|
+
const On = new Float32Array(1), If = new Uint32Array(On.buffer), _f = new Uint32Array(On.buffer), Pn = new Int32Array(1), Cf = new Float32Array(Pn.buffer), Ef = new Uint32Array(Pn.buffer), Nn = new Uint32Array(1), kf = new Float32Array(Nn.buffer), Tf = new Int32Array(Nn.buffer);
|
|
5515
5509
|
function Ga(a, e, t) {
|
|
5516
5510
|
if (e === t) return a;
|
|
5517
5511
|
if (e === "f32") {
|
|
5518
|
-
if (t === "i32" || t === "x32") return
|
|
5519
|
-
if (t === "u32") return
|
|
5512
|
+
if (t === "i32" || t === "x32") return On[0] = a, If[0];
|
|
5513
|
+
if (t === "u32") return On[0] = a, _f[0];
|
|
5520
5514
|
} else if (e === "i32" || e === "x32") {
|
|
5521
|
-
if (t === "f32") return
|
|
5522
|
-
if (t === "u32") return
|
|
5515
|
+
if (t === "f32") return Pn[0] = a, Cf[0];
|
|
5516
|
+
if (t === "u32") return Pn[0] = a, Ef[0];
|
|
5523
5517
|
} else if (e === "u32") {
|
|
5524
5518
|
if (t === "f32") return Nn[0] = a, kf[0];
|
|
5525
5519
|
if (t === "i32" || t === "x32") return Nn[0] = a, Tf[0];
|
|
@@ -5584,7 +5578,7 @@ let Bf = class {
|
|
|
5584
5578
|
for (const t of this._functions.values()) t.node.search((n) => {
|
|
5585
5579
|
var r, s, o;
|
|
5586
5580
|
if (n instanceof tl) {
|
|
5587
|
-
if (n.value) if (
|
|
5581
|
+
if (n.value) if (D(n.value)) for (const i of n.value) for (const l of this.overrides) i === l.name && ((r = t.info) === null || r === void 0 || r.overrides.push(l));
|
|
5588
5582
|
else for (const i of this.overrides) n.value === i.name && ((s = t.info) === null || s === void 0 || s.overrides.push(i));
|
|
5589
5583
|
} else if (n instanceof ke) for (const i of this.overrides) n.name === i.name && ((o = t.info) === null || o === void 0 || o.overrides.push(i));
|
|
5590
5584
|
});
|
|
@@ -6091,7 +6085,7 @@ let ws = 0, Sf = class sl {
|
|
|
6091
6085
|
}
|
|
6092
6086
|
Determinant(e, t) {
|
|
6093
6087
|
const n = this.exec.evalExpression(e.args[0], t);
|
|
6094
|
-
if (n instanceof
|
|
6088
|
+
if (n instanceof Z) {
|
|
6095
6089
|
const r = n.data, s = n.typeInfo.getTypeName(), o = s.endsWith("h") ? this.getTypeInfo("f16") : this.getTypeInfo("f32");
|
|
6096
6090
|
if (s === "mat2x2" || s === "mat2x2f" || s === "mat2x2h") return new b(r[0] * r[3] - r[1] * r[2], o);
|
|
6097
6091
|
if (s === "mat2x3" || s === "mat2x3f" || s === "mat2x3h") return new b(r[0] * (r[4] * r[8] - r[5] * r[7]) - r[1] * (r[3] * r[8] - r[5] * r[6]) + r[2] * (r[3] * r[7] - r[4] * r[6]), o);
|
|
@@ -6378,43 +6372,43 @@ let ws = 0, Sf = class sl {
|
|
|
6378
6372
|
}
|
|
6379
6373
|
Transpose(e, t) {
|
|
6380
6374
|
const n = this.exec.evalExpression(e.args[0], t);
|
|
6381
|
-
if (!(n instanceof
|
|
6375
|
+
if (!(n instanceof Z)) return console.error(`Transpose() expects a matrix argument. Line ${e.line}`), null;
|
|
6382
6376
|
const r = this._getTransposeType(n.typeInfo);
|
|
6383
6377
|
if (n.typeInfo.name === "mat2x2" || n.typeInfo.name === "mat2x2f" || n.typeInfo.name === "mat2x2h") {
|
|
6384
6378
|
const s = n.data;
|
|
6385
|
-
return new
|
|
6379
|
+
return new Z([s[0], s[2], s[1], s[3]], r);
|
|
6386
6380
|
}
|
|
6387
6381
|
if (n.typeInfo.name === "mat2x3" || n.typeInfo.name === "mat2x3f" || n.typeInfo.name === "mat2x3h") {
|
|
6388
6382
|
const s = n.data;
|
|
6389
|
-
return new
|
|
6383
|
+
return new Z([s[0], s[3], s[6], s[1], s[4], s[7]], r);
|
|
6390
6384
|
}
|
|
6391
6385
|
if (n.typeInfo.name === "mat2x4" || n.typeInfo.name === "mat2x4f" || n.typeInfo.name === "mat2x4h") {
|
|
6392
6386
|
const s = n.data;
|
|
6393
|
-
return new
|
|
6387
|
+
return new Z([s[0], s[4], s[8], s[12], s[1], s[5], s[9], s[13]], r);
|
|
6394
6388
|
}
|
|
6395
6389
|
if (n.typeInfo.name === "mat3x2" || n.typeInfo.name === "mat3x2f" || n.typeInfo.name === "mat3x2h") {
|
|
6396
6390
|
const s = n.data;
|
|
6397
|
-
return new
|
|
6391
|
+
return new Z([s[0], s[3], s[1], s[4], s[2], s[5]], r);
|
|
6398
6392
|
}
|
|
6399
6393
|
if (n.typeInfo.name === "mat3x3" || n.typeInfo.name === "mat3x3f" || n.typeInfo.name === "mat3x3h") {
|
|
6400
6394
|
const s = n.data;
|
|
6401
|
-
return new
|
|
6395
|
+
return new Z([s[0], s[3], s[6], s[1], s[4], s[7], s[2], s[5], s[8]], r);
|
|
6402
6396
|
}
|
|
6403
6397
|
if (n.typeInfo.name === "mat3x4" || n.typeInfo.name === "mat3x4f" || n.typeInfo.name === "mat3x4h") {
|
|
6404
6398
|
const s = n.data;
|
|
6405
|
-
return new
|
|
6399
|
+
return new Z([s[0], s[4], s[8], s[12], s[1], s[5], s[9], s[13], s[2], s[6], s[10], s[14]], r);
|
|
6406
6400
|
}
|
|
6407
6401
|
if (n.typeInfo.name === "mat4x2" || n.typeInfo.name === "mat4x2f" || n.typeInfo.name === "mat4x2h") {
|
|
6408
6402
|
const s = n.data;
|
|
6409
|
-
return new
|
|
6403
|
+
return new Z([s[0], s[4], s[1], s[5], s[2], s[6]], r);
|
|
6410
6404
|
}
|
|
6411
6405
|
if (n.typeInfo.name === "mat4x3" || n.typeInfo.name === "mat4x3f" || n.typeInfo.name === "mat4x3h") {
|
|
6412
6406
|
const s = n.data;
|
|
6413
|
-
return new
|
|
6407
|
+
return new Z([s[0], s[4], s[8], s[1], s[5], s[9], s[2], s[6], s[10]], r);
|
|
6414
6408
|
}
|
|
6415
6409
|
if (n.typeInfo.name === "mat4x4" || n.typeInfo.name === "mat4x4f" || n.typeInfo.name === "mat4x4h") {
|
|
6416
6410
|
const s = n.data;
|
|
6417
|
-
return new
|
|
6411
|
+
return new Z([s[0], s[4], s[8], s[12], s[1], s[5], s[9], s[13], s[2], s[6], s[10], s[14], s[3], s[7], s[11], s[15]], r);
|
|
6418
6412
|
}
|
|
6419
6413
|
return console.error(`Invalid matrix type ${n.typeInfo.name}`), null;
|
|
6420
6414
|
}
|
|
@@ -6761,7 +6755,7 @@ let ws = 0, Sf = class sl {
|
|
|
6761
6755
|
return console.error("TODO: quadSwapY"), null;
|
|
6762
6756
|
}
|
|
6763
6757
|
};
|
|
6764
|
-
const
|
|
6758
|
+
const Or = { vec2: 2, vec2f: 2, vec2i: 2, vec2u: 2, vec2b: 2, vec2h: 2, vec3: 3, vec3f: 3, vec3i: 3, vec3u: 3, vec3b: 3, vec3h: 3, vec4: 4, vec4f: 4, vec4i: 4, vec4u: 4, vec4b: 4, vec4h: 4 }, we = { mat2x2: [2, 2, 4], mat2x2f: [2, 2, 4], mat2x2h: [2, 2, 4], mat2x3: [2, 3, 6], mat2x3f: [2, 3, 6], mat2x3h: [2, 3, 6], mat2x4: [2, 4, 8], mat2x4f: [2, 4, 8], mat2x4h: [2, 4, 8], mat3x2: [3, 2, 6], mat3x2f: [3, 2, 6], mat3x2h: [3, 2, 6], mat3x3: [3, 3, 9], mat3x3f: [3, 3, 9], mat3x3h: [3, 3, 9], mat3x4: [3, 4, 12], mat3x4f: [3, 4, 12], mat3x4h: [3, 4, 12], mat4x2: [4, 2, 8], mat4x2f: [4, 2, 8], mat4x2h: [4, 2, 8], mat4x3: [4, 3, 12], mat4x3f: [4, 3, 12], mat4x3h: [4, 3, 12], mat4x4: [4, 4, 16], mat4x4f: [4, 4, 16], mat4x4h: [4, 4, 16] };
|
|
6765
6759
|
let vn = class Be extends Qf {
|
|
6766
6760
|
constructor(e, t) {
|
|
6767
6761
|
var n;
|
|
@@ -6772,7 +6766,7 @@ let vn = class Be extends Qf {
|
|
|
6772
6766
|
const r = (n = (t = this.context.getVariable(e)) === null || t === void 0 ? void 0 : t.value) !== null && n !== void 0 ? n : null;
|
|
6773
6767
|
if (r === null) return null;
|
|
6774
6768
|
if (r instanceof b) return r.value;
|
|
6775
|
-
if (r instanceof m || r instanceof
|
|
6769
|
+
if (r instanceof m || r instanceof Z) return Array.from(r.data);
|
|
6776
6770
|
if (r instanceof Ae && r.typeInfo instanceof et) {
|
|
6777
6771
|
if (r.typeInfo.format.name === "u32") return Array.from(new Uint32Array(r.buffer, r.offset, r.typeInfo.count));
|
|
6778
6772
|
if (r.typeInfo.format.name === "i32") return Array.from(new Int32Array(r.buffer, r.offset, r.typeInfo.count));
|
|
@@ -6807,13 +6801,13 @@ let vn = class Be extends Qf {
|
|
|
6807
6801
|
for (const C of T.attributes) C.name === "binding" ? L = C.value : C.name === "group" && (E = C.value);
|
|
6808
6802
|
if (p == L && h == E) {
|
|
6809
6803
|
let C = !1;
|
|
6810
|
-
for (const
|
|
6804
|
+
for (const O of f.resources) if (O.name === I.name && O.group === parseInt(h) && O.binding === parseInt(p)) {
|
|
6811
6805
|
C = !0;
|
|
6812
6806
|
break;
|
|
6813
6807
|
}
|
|
6814
6808
|
if (C) if (v.texture !== void 0 && v.descriptor !== void 0) {
|
|
6815
|
-
const
|
|
6816
|
-
I.value =
|
|
6809
|
+
const O = new at(v.texture, this.getTypeInfo(T.type), v.descriptor, (y = v.texture.view) !== null && y !== void 0 ? y : null);
|
|
6810
|
+
I.value = O;
|
|
6817
6811
|
} else v.uniform !== void 0 ? I.value = new Ae(v.uniform, this.getTypeInfo(T.type)) : I.value = new Ae(v, this.getTypeInfo(T.type));
|
|
6818
6812
|
}
|
|
6819
6813
|
}
|
|
@@ -6965,14 +6959,14 @@ let vn = class Be extends Qf {
|
|
|
6965
6959
|
if (e.variable instanceof pe) {
|
|
6966
6960
|
const l = this._getVariableData(e.variable, t), u = this.evalExpression(e.value, t), c = e.operator;
|
|
6967
6961
|
if (c === "=") {
|
|
6968
|
-
if (l instanceof b || l instanceof m || l instanceof
|
|
6969
|
-
if (u instanceof b || u instanceof m || u instanceof
|
|
6962
|
+
if (l instanceof b || l instanceof m || l instanceof Z) {
|
|
6963
|
+
if (u instanceof b || u instanceof m || u instanceof Z && l.data.length === u.data.length) return void l.data.set(u.data);
|
|
6970
6964
|
console.error(`Invalid assignment. Line ${e.line}`);
|
|
6971
6965
|
} else if (l instanceof Ae && u instanceof Ae && l.buffer.byteLength - l.offset >= u.buffer.byteLength - u.offset) return void (l.buffer.byteLength % 4 == 0 ? new Uint32Array(l.buffer, l.offset, l.typeInfo.size / 4).set(new Uint32Array(u.buffer, u.offset, u.typeInfo.size / 4)) : new Uint8Array(l.buffer, l.offset, l.typeInfo.size).set(new Uint8Array(u.buffer, u.offset, u.typeInfo.size)));
|
|
6972
6966
|
return console.error(`Invalid assignment. Line ${e.line}`), null;
|
|
6973
6967
|
}
|
|
6974
|
-
if (c === "+=") return l instanceof b || l instanceof m || l instanceof
|
|
6975
|
-
if (c === "-=") return (l instanceof b || l instanceof m || l instanceof
|
|
6968
|
+
if (c === "+=") return l instanceof b || l instanceof m || l instanceof Z ? u instanceof b || u instanceof m || u instanceof Z ? void l.data.set(u.data.map((f, h) => l.data[h] + f)) : void console.error(`Invalid assignment . Line ${e.line}`) : void console.error(`Invalid assignment. Line ${e.line}`);
|
|
6969
|
+
if (c === "-=") return (l instanceof b || l instanceof m || l instanceof Z) && (u instanceof b || u instanceof m || u instanceof Z) ? void l.data.set(u.data.map((f, h) => l.data[h] - f)) : void console.error(`Invalid assignment. Line ${e.line}`);
|
|
6976
6970
|
}
|
|
6977
6971
|
if (e.variable instanceof pe) {
|
|
6978
6972
|
if (e.variable.operator === "*") {
|
|
@@ -7038,14 +7032,14 @@ let vn = class Be extends Qf {
|
|
|
7038
7032
|
}
|
|
7039
7033
|
if (n instanceof Ae) n.setDataValue(this, o, s, t);
|
|
7040
7034
|
else if (s) {
|
|
7041
|
-
if (!(n instanceof m || n instanceof
|
|
7035
|
+
if (!(n instanceof m || n instanceof Z)) return void console.error(`Variable ${r} is not a vector or matrix. Line ${e.line}`);
|
|
7042
7036
|
if (s instanceof _t) {
|
|
7043
7037
|
const l = this.evalExpression(s.index, t).value;
|
|
7044
7038
|
if (n instanceof m) {
|
|
7045
7039
|
if (!(o instanceof b)) return void console.error(`Invalid assignment to ${r}. Line ${e.line}`);
|
|
7046
7040
|
n.data[l] = o.value;
|
|
7047
7041
|
} else {
|
|
7048
|
-
if (!(n instanceof
|
|
7042
|
+
if (!(n instanceof Z)) return void console.error(`Invalid assignment to ${r}. Line ${e.line}`);
|
|
7049
7043
|
{
|
|
7050
7044
|
const u = this.evalExpression(s.index, t).value;
|
|
7051
7045
|
if (u < 0) return void console.error(`Invalid assignment to ${r}. Line ${e.line}`);
|
|
@@ -7120,7 +7114,7 @@ let vn = class Be extends Qf {
|
|
|
7120
7114
|
}
|
|
7121
7115
|
}
|
|
7122
7116
|
}
|
|
7123
|
-
} else n instanceof b && o instanceof b ? n.value = o.value : n instanceof m && o instanceof m || n instanceof
|
|
7117
|
+
} else n instanceof b && o instanceof b ? n.value = o.value : n instanceof m && o instanceof m || n instanceof Z && o instanceof Z ? n.data.set(o.data) : console.error(`Invalid assignment to ${r}. Line ${e.line}`);
|
|
7124
7118
|
}
|
|
7125
7119
|
_function(e, t) {
|
|
7126
7120
|
const n = new Lf(e);
|
|
@@ -7361,7 +7355,7 @@ let vn = class Be extends Qf {
|
|
|
7361
7355
|
const r = n instanceof b ? n.value : n instanceof m ? Array.from(n.data) : null;
|
|
7362
7356
|
switch (e.operator) {
|
|
7363
7357
|
case "+": {
|
|
7364
|
-
if (
|
|
7358
|
+
if (D(r)) {
|
|
7365
7359
|
const i = r.map((l, u) => +l);
|
|
7366
7360
|
return new m(i, n.typeInfo);
|
|
7367
7361
|
}
|
|
@@ -7369,7 +7363,7 @@ let vn = class Be extends Qf {
|
|
|
7369
7363
|
return new b(+s, o);
|
|
7370
7364
|
}
|
|
7371
7365
|
case "-": {
|
|
7372
|
-
if (
|
|
7366
|
+
if (D(r)) {
|
|
7373
7367
|
const i = r.map((l, u) => -l);
|
|
7374
7368
|
return new m(i, n.typeInfo);
|
|
7375
7369
|
}
|
|
@@ -7377,7 +7371,7 @@ let vn = class Be extends Qf {
|
|
|
7377
7371
|
return new b(-s, o);
|
|
7378
7372
|
}
|
|
7379
7373
|
case "!": {
|
|
7380
|
-
if (
|
|
7374
|
+
if (D(r)) {
|
|
7381
7375
|
const i = r.map((l, u) => l ? 0 : 1);
|
|
7382
7376
|
return new m(i, n.typeInfo);
|
|
7383
7377
|
}
|
|
@@ -7385,7 +7379,7 @@ let vn = class Be extends Qf {
|
|
|
7385
7379
|
return new b(s ? 0 : 1, o);
|
|
7386
7380
|
}
|
|
7387
7381
|
case "~": {
|
|
7388
|
-
if (
|
|
7382
|
+
if (D(r)) {
|
|
7389
7383
|
const i = r.map((l, u) => ~l);
|
|
7390
7384
|
return new m(i, n.typeInfo);
|
|
7391
7385
|
}
|
|
@@ -7396,20 +7390,20 @@ let vn = class Be extends Qf {
|
|
|
7396
7390
|
return console.error(`Invalid unary operator ${e.operator}. Line ${e.line}`), null;
|
|
7397
7391
|
}
|
|
7398
7392
|
_evalBinaryOp(e, t) {
|
|
7399
|
-
const n = this.evalExpression(e.left, t), r = this.evalExpression(e.right, t), s = n instanceof b ? n.value : n instanceof m || n instanceof
|
|
7393
|
+
const n = this.evalExpression(e.left, t), r = this.evalExpression(e.right, t), s = n instanceof b ? n.value : n instanceof m || n instanceof Z ? Array.from(n.data) : null, o = r instanceof b ? r.value : r instanceof m || r instanceof Z ? Array.from(r.data) : null;
|
|
7400
7394
|
switch (e.operator) {
|
|
7401
7395
|
case "+": {
|
|
7402
|
-
if (
|
|
7396
|
+
if (D(s) && D(o)) {
|
|
7403
7397
|
const c = s, f = o;
|
|
7404
7398
|
if (c.length !== f.length) return console.error(`Vector length mismatch. Line ${e.line}.`), null;
|
|
7405
7399
|
const h = c.map((p, v) => p + f[v]);
|
|
7406
7400
|
return new m(h, n.typeInfo);
|
|
7407
7401
|
}
|
|
7408
|
-
if (
|
|
7402
|
+
if (D(s)) {
|
|
7409
7403
|
const c = o, f = s.map((h, p) => h + c);
|
|
7410
7404
|
return new m(f, n.typeInfo);
|
|
7411
7405
|
}
|
|
7412
|
-
if (
|
|
7406
|
+
if (D(o)) {
|
|
7413
7407
|
const c = s, f = o.map((h, p) => c + h);
|
|
7414
7408
|
return new m(f, r.typeInfo);
|
|
7415
7409
|
}
|
|
@@ -7417,17 +7411,17 @@ let vn = class Be extends Qf {
|
|
|
7417
7411
|
return new b(i + l, u);
|
|
7418
7412
|
}
|
|
7419
7413
|
case "-": {
|
|
7420
|
-
if (
|
|
7414
|
+
if (D(s) && D(o)) {
|
|
7421
7415
|
const c = s, f = o;
|
|
7422
7416
|
if (c.length !== f.length) return console.error(`Vector length mismatch. Line ${e.line}.`), null;
|
|
7423
7417
|
const h = c.map((p, v) => p - f[v]);
|
|
7424
7418
|
return new m(h, n.typeInfo);
|
|
7425
7419
|
}
|
|
7426
|
-
if (
|
|
7420
|
+
if (D(s)) {
|
|
7427
7421
|
const c = o, f = s.map((h, p) => h - c);
|
|
7428
7422
|
return new m(f, n.typeInfo);
|
|
7429
7423
|
}
|
|
7430
|
-
if (
|
|
7424
|
+
if (D(o)) {
|
|
7431
7425
|
const c = s, f = o.map((h, p) => c - h);
|
|
7432
7426
|
return new m(f, r.typeInfo);
|
|
7433
7427
|
}
|
|
@@ -7435,50 +7429,50 @@ let vn = class Be extends Qf {
|
|
|
7435
7429
|
return new b(i - l, u);
|
|
7436
7430
|
}
|
|
7437
7431
|
case "*": {
|
|
7438
|
-
if (
|
|
7432
|
+
if (D(s) && D(o)) {
|
|
7439
7433
|
const c = s, f = o;
|
|
7440
|
-
if (n instanceof
|
|
7434
|
+
if (n instanceof Z && r instanceof Z) {
|
|
7441
7435
|
const h = (function(y, T, L, E) {
|
|
7442
7436
|
if (we[T.name] === void 0 || we[E.name] === void 0) return null;
|
|
7443
|
-
const C = we[T.name][0],
|
|
7437
|
+
const C = we[T.name][0], O = we[T.name][1], M = we[E.name][0];
|
|
7444
7438
|
if (C !== we[E.name][1]) return null;
|
|
7445
|
-
const
|
|
7446
|
-
for (let z = 0; z <
|
|
7439
|
+
const H = new Array(M * O);
|
|
7440
|
+
for (let z = 0; z < O; z++) for (let U = 0; U < M; U++) {
|
|
7447
7441
|
let G = 0;
|
|
7448
|
-
for (let S = 0; S < C; S++) G += y[S *
|
|
7449
|
-
|
|
7442
|
+
for (let S = 0; S < C; S++) G += y[S * O + z] * L[U * C + S];
|
|
7443
|
+
H[z * M + U] = G;
|
|
7450
7444
|
}
|
|
7451
|
-
return
|
|
7445
|
+
return H;
|
|
7452
7446
|
})(c, n.typeInfo, f, r.typeInfo);
|
|
7453
7447
|
if (h === null) return console.error(`Matrix multiplication failed. Line ${e.line}.`), null;
|
|
7454
7448
|
const p = we[r.typeInfo.name][0], v = we[n.typeInfo.name][1], I = this.getTypeInfo(`mat${p}x${v}f`);
|
|
7455
|
-
return new
|
|
7449
|
+
return new Z(h, I);
|
|
7456
7450
|
}
|
|
7457
|
-
if (n instanceof
|
|
7451
|
+
if (n instanceof Z && r instanceof m) {
|
|
7458
7452
|
const h = (function(p, v, I, y) {
|
|
7459
|
-
if (we[v.name] === void 0 ||
|
|
7453
|
+
if (we[v.name] === void 0 || Or[y.name] === void 0) return null;
|
|
7460
7454
|
const T = we[v.name][0], L = we[v.name][1];
|
|
7461
7455
|
if (T !== I.length) return null;
|
|
7462
7456
|
const E = new Array(L);
|
|
7463
7457
|
for (let C = 0; C < L; C++) {
|
|
7464
|
-
let
|
|
7465
|
-
for (let M = 0; M < T; M++)
|
|
7466
|
-
E[C] =
|
|
7458
|
+
let O = 0;
|
|
7459
|
+
for (let M = 0; M < T; M++) O += p[M * L + C] * I[M];
|
|
7460
|
+
E[C] = O;
|
|
7467
7461
|
}
|
|
7468
7462
|
return E;
|
|
7469
7463
|
})(c, n.typeInfo, f, r.typeInfo);
|
|
7470
7464
|
return h === null ? (console.error(`Matrix vector multiplication failed. Line ${e.line}.`), null) : new m(h, r.typeInfo);
|
|
7471
7465
|
}
|
|
7472
|
-
if (n instanceof m && r instanceof
|
|
7466
|
+
if (n instanceof m && r instanceof Z) {
|
|
7473
7467
|
const h = (function(p, v, I, y) {
|
|
7474
|
-
if (
|
|
7468
|
+
if (Or[v.name] === void 0 || we[y.name] === void 0) return null;
|
|
7475
7469
|
const T = we[y.name][0], L = we[y.name][1];
|
|
7476
7470
|
if (L !== p.length) return null;
|
|
7477
7471
|
const E = [];
|
|
7478
7472
|
for (let C = 0; C < T; C++) {
|
|
7479
|
-
let
|
|
7480
|
-
for (let M = 0; M < L; M++)
|
|
7481
|
-
E[C] =
|
|
7473
|
+
let O = 0;
|
|
7474
|
+
for (let M = 0; M < L; M++) O += p[M] * I[M * T + C];
|
|
7475
|
+
E[C] = O;
|
|
7482
7476
|
}
|
|
7483
7477
|
return E;
|
|
7484
7478
|
})(c, n.typeInfo, f, r.typeInfo);
|
|
@@ -7490,29 +7484,29 @@ let vn = class Be extends Qf {
|
|
|
7490
7484
|
return new m(h, n.typeInfo);
|
|
7491
7485
|
}
|
|
7492
7486
|
}
|
|
7493
|
-
if (
|
|
7487
|
+
if (D(s)) {
|
|
7494
7488
|
const c = o, f = s.map((h, p) => h * c);
|
|
7495
|
-
return n instanceof
|
|
7489
|
+
return n instanceof Z ? new Z(f, n.typeInfo) : new m(f, n.typeInfo);
|
|
7496
7490
|
}
|
|
7497
|
-
if (
|
|
7491
|
+
if (D(o)) {
|
|
7498
7492
|
const c = s, f = o.map((h, p) => c * h);
|
|
7499
|
-
return r instanceof
|
|
7493
|
+
return r instanceof Z ? new Z(f, r.typeInfo) : new m(f, r.typeInfo);
|
|
7500
7494
|
}
|
|
7501
7495
|
const i = s, l = o, u = this._maxFormatTypeInfo([n.typeInfo, r.typeInfo]);
|
|
7502
7496
|
return new b(i * l, u);
|
|
7503
7497
|
}
|
|
7504
7498
|
case "%": {
|
|
7505
|
-
if (
|
|
7499
|
+
if (D(s) && D(o)) {
|
|
7506
7500
|
const c = s, f = o;
|
|
7507
7501
|
if (c.length !== f.length) return console.error(`Vector length mismatch. Line ${e.line}.`), null;
|
|
7508
7502
|
const h = c.map((p, v) => p % f[v]);
|
|
7509
7503
|
return new m(h, n.typeInfo);
|
|
7510
7504
|
}
|
|
7511
|
-
if (
|
|
7505
|
+
if (D(s)) {
|
|
7512
7506
|
const c = o, f = s.map((h, p) => h % c);
|
|
7513
7507
|
return new m(f, n.typeInfo);
|
|
7514
7508
|
}
|
|
7515
|
-
if (
|
|
7509
|
+
if (D(o)) {
|
|
7516
7510
|
const c = s, f = o.map((h, p) => c % h);
|
|
7517
7511
|
return new m(f, r.typeInfo);
|
|
7518
7512
|
}
|
|
@@ -7520,17 +7514,17 @@ let vn = class Be extends Qf {
|
|
|
7520
7514
|
return new b(i % l, u);
|
|
7521
7515
|
}
|
|
7522
7516
|
case "/": {
|
|
7523
|
-
if (
|
|
7517
|
+
if (D(s) && D(o)) {
|
|
7524
7518
|
const c = s, f = o;
|
|
7525
7519
|
if (c.length !== f.length) return console.error(`Vector length mismatch. Line ${e.line}.`), null;
|
|
7526
7520
|
const h = c.map((p, v) => p / f[v]);
|
|
7527
7521
|
return new m(h, n.typeInfo);
|
|
7528
7522
|
}
|
|
7529
|
-
if (
|
|
7523
|
+
if (D(s)) {
|
|
7530
7524
|
const c = o, f = s.map((h, p) => h / c);
|
|
7531
7525
|
return new m(f, n.typeInfo);
|
|
7532
7526
|
}
|
|
7533
|
-
if (
|
|
7527
|
+
if (D(o)) {
|
|
7534
7528
|
const c = s, f = o.map((h, p) => c / h);
|
|
7535
7529
|
return new m(f, r.typeInfo);
|
|
7536
7530
|
}
|
|
@@ -7538,17 +7532,17 @@ let vn = class Be extends Qf {
|
|
|
7538
7532
|
return new b(i / l, u);
|
|
7539
7533
|
}
|
|
7540
7534
|
case "&": {
|
|
7541
|
-
if (
|
|
7535
|
+
if (D(s) && D(o)) {
|
|
7542
7536
|
const c = s, f = o;
|
|
7543
7537
|
if (c.length !== f.length) return console.error(`Vector length mismatch. Line ${e.line}.`), null;
|
|
7544
7538
|
const h = c.map((p, v) => p & f[v]);
|
|
7545
7539
|
return new m(h, n.typeInfo);
|
|
7546
7540
|
}
|
|
7547
|
-
if (
|
|
7541
|
+
if (D(s)) {
|
|
7548
7542
|
const c = o, f = s.map((h, p) => h & c);
|
|
7549
7543
|
return new m(f, n.typeInfo);
|
|
7550
7544
|
}
|
|
7551
|
-
if (
|
|
7545
|
+
if (D(o)) {
|
|
7552
7546
|
const c = s, f = o.map((h, p) => c & h);
|
|
7553
7547
|
return new m(f, r.typeInfo);
|
|
7554
7548
|
}
|
|
@@ -7556,17 +7550,17 @@ let vn = class Be extends Qf {
|
|
|
7556
7550
|
return new b(i & l, u);
|
|
7557
7551
|
}
|
|
7558
7552
|
case "|": {
|
|
7559
|
-
if (
|
|
7553
|
+
if (D(s) && D(o)) {
|
|
7560
7554
|
const c = s, f = o;
|
|
7561
7555
|
if (c.length !== f.length) return console.error(`Vector length mismatch. Line ${e.line}.`), null;
|
|
7562
7556
|
const h = c.map((p, v) => p | f[v]);
|
|
7563
7557
|
return new m(h, n.typeInfo);
|
|
7564
7558
|
}
|
|
7565
|
-
if (
|
|
7559
|
+
if (D(s)) {
|
|
7566
7560
|
const c = o, f = s.map((h, p) => h | c);
|
|
7567
7561
|
return new m(f, n.typeInfo);
|
|
7568
7562
|
}
|
|
7569
|
-
if (
|
|
7563
|
+
if (D(o)) {
|
|
7570
7564
|
const c = s, f = o.map((h, p) => c | h);
|
|
7571
7565
|
return new m(f, r.typeInfo);
|
|
7572
7566
|
}
|
|
@@ -7574,17 +7568,17 @@ let vn = class Be extends Qf {
|
|
|
7574
7568
|
return new b(i | l, u);
|
|
7575
7569
|
}
|
|
7576
7570
|
case "^": {
|
|
7577
|
-
if (
|
|
7571
|
+
if (D(s) && D(o)) {
|
|
7578
7572
|
const c = s, f = o;
|
|
7579
7573
|
if (c.length !== f.length) return console.error(`Vector length mismatch. Line ${e.line}.`), null;
|
|
7580
7574
|
const h = c.map((p, v) => p ^ f[v]);
|
|
7581
7575
|
return new m(h, n.typeInfo);
|
|
7582
7576
|
}
|
|
7583
|
-
if (
|
|
7577
|
+
if (D(s)) {
|
|
7584
7578
|
const c = o, f = s.map((h, p) => h ^ c);
|
|
7585
7579
|
return new m(f, n.typeInfo);
|
|
7586
7580
|
}
|
|
7587
|
-
if (
|
|
7581
|
+
if (D(o)) {
|
|
7588
7582
|
const c = s, f = o.map((h, p) => c ^ h);
|
|
7589
7583
|
return new m(f, r.typeInfo);
|
|
7590
7584
|
}
|
|
@@ -7592,17 +7586,17 @@ let vn = class Be extends Qf {
|
|
|
7592
7586
|
return new b(i ^ l, u);
|
|
7593
7587
|
}
|
|
7594
7588
|
case "<<": {
|
|
7595
|
-
if (
|
|
7589
|
+
if (D(s) && D(o)) {
|
|
7596
7590
|
const c = s, f = o;
|
|
7597
7591
|
if (c.length !== f.length) return console.error(`Vector length mismatch. Line ${e.line}.`), null;
|
|
7598
7592
|
const h = c.map((p, v) => p << f[v]);
|
|
7599
7593
|
return new m(h, n.typeInfo);
|
|
7600
7594
|
}
|
|
7601
|
-
if (
|
|
7595
|
+
if (D(s)) {
|
|
7602
7596
|
const c = o, f = s.map((h, p) => h << c);
|
|
7603
7597
|
return new m(f, n.typeInfo);
|
|
7604
7598
|
}
|
|
7605
|
-
if (
|
|
7599
|
+
if (D(o)) {
|
|
7606
7600
|
const c = s, f = o.map((h, p) => c << h);
|
|
7607
7601
|
return new m(f, r.typeInfo);
|
|
7608
7602
|
}
|
|
@@ -7610,17 +7604,17 @@ let vn = class Be extends Qf {
|
|
|
7610
7604
|
return new b(i << l, u);
|
|
7611
7605
|
}
|
|
7612
7606
|
case ">>": {
|
|
7613
|
-
if (
|
|
7607
|
+
if (D(s) && D(o)) {
|
|
7614
7608
|
const c = s, f = o;
|
|
7615
7609
|
if (c.length !== f.length) return console.error(`Vector length mismatch. Line ${e.line}.`), null;
|
|
7616
7610
|
const h = c.map((p, v) => p >> f[v]);
|
|
7617
7611
|
return new m(h, n.typeInfo);
|
|
7618
7612
|
}
|
|
7619
|
-
if (
|
|
7613
|
+
if (D(s)) {
|
|
7620
7614
|
const c = o, f = s.map((h, p) => h >> c);
|
|
7621
7615
|
return new m(f, n.typeInfo);
|
|
7622
7616
|
}
|
|
7623
|
-
if (
|
|
7617
|
+
if (D(o)) {
|
|
7624
7618
|
const c = s, f = o.map((h, p) => c >> h);
|
|
7625
7619
|
return new m(f, r.typeInfo);
|
|
7626
7620
|
}
|
|
@@ -7628,129 +7622,129 @@ let vn = class Be extends Qf {
|
|
|
7628
7622
|
return new b(i >> l, u);
|
|
7629
7623
|
}
|
|
7630
7624
|
case ">":
|
|
7631
|
-
if (
|
|
7625
|
+
if (D(s) && D(o)) {
|
|
7632
7626
|
const i = s, l = o;
|
|
7633
7627
|
if (i.length !== l.length) return console.error(`Vector length mismatch. Line ${e.line}.`), null;
|
|
7634
7628
|
const u = i.map((c, f) => c > l[f] ? 1 : 0);
|
|
7635
7629
|
return new m(u, n.typeInfo);
|
|
7636
7630
|
}
|
|
7637
|
-
if (
|
|
7631
|
+
if (D(s)) {
|
|
7638
7632
|
const i = o, l = s.map((u, c) => u > i ? 1 : 0);
|
|
7639
7633
|
return new m(l, n.typeInfo);
|
|
7640
7634
|
}
|
|
7641
|
-
if (
|
|
7635
|
+
if (D(o)) {
|
|
7642
7636
|
const i = s, l = o.map((u, c) => i > u ? 1 : 0);
|
|
7643
7637
|
return new m(l, r.typeInfo);
|
|
7644
7638
|
}
|
|
7645
7639
|
return new b(s > o ? 1 : 0, this.getTypeInfo("bool"));
|
|
7646
7640
|
case "<":
|
|
7647
|
-
if (
|
|
7641
|
+
if (D(s) && D(o)) {
|
|
7648
7642
|
const i = s, l = o;
|
|
7649
7643
|
if (i.length !== l.length) return console.error(`Vector length mismatch. Line ${e.line}.`), null;
|
|
7650
7644
|
const u = i.map((c, f) => c < l[f] ? 1 : 0);
|
|
7651
7645
|
return new m(u, n.typeInfo);
|
|
7652
7646
|
}
|
|
7653
|
-
if (
|
|
7647
|
+
if (D(s)) {
|
|
7654
7648
|
const i = o, l = s.map((u, c) => u < i ? 1 : 0);
|
|
7655
7649
|
return new m(l, n.typeInfo);
|
|
7656
7650
|
}
|
|
7657
|
-
if (
|
|
7651
|
+
if (D(o)) {
|
|
7658
7652
|
const i = s, l = o.map((u, c) => i < u ? 1 : 0);
|
|
7659
7653
|
return new m(l, r.typeInfo);
|
|
7660
7654
|
}
|
|
7661
7655
|
return new b(s < o ? 1 : 0, this.getTypeInfo("bool"));
|
|
7662
7656
|
case "==":
|
|
7663
|
-
if (
|
|
7657
|
+
if (D(s) && D(o)) {
|
|
7664
7658
|
const i = s, l = o;
|
|
7665
7659
|
if (i.length !== l.length) return console.error(`Vector length mismatch. Line ${e.line}.`), null;
|
|
7666
7660
|
const u = i.map((c, f) => c === l[f] ? 1 : 0);
|
|
7667
7661
|
return new m(u, n.typeInfo);
|
|
7668
7662
|
}
|
|
7669
|
-
if (
|
|
7663
|
+
if (D(s)) {
|
|
7670
7664
|
const i = o, l = s.map((u, c) => u == i ? 1 : 0);
|
|
7671
7665
|
return new m(l, n.typeInfo);
|
|
7672
7666
|
}
|
|
7673
|
-
if (
|
|
7667
|
+
if (D(o)) {
|
|
7674
7668
|
const i = s, l = o.map((u, c) => i == u ? 1 : 0);
|
|
7675
7669
|
return new m(l, r.typeInfo);
|
|
7676
7670
|
}
|
|
7677
7671
|
return new b(s === o ? 1 : 0, this.getTypeInfo("bool"));
|
|
7678
7672
|
case "!=":
|
|
7679
|
-
if (
|
|
7673
|
+
if (D(s) && D(o)) {
|
|
7680
7674
|
const i = s, l = o;
|
|
7681
7675
|
if (i.length !== l.length) return console.error(`Vector length mismatch. Line ${e.line}.`), null;
|
|
7682
7676
|
const u = i.map((c, f) => c !== l[f] ? 1 : 0);
|
|
7683
7677
|
return new m(u, n.typeInfo);
|
|
7684
7678
|
}
|
|
7685
|
-
if (
|
|
7679
|
+
if (D(s)) {
|
|
7686
7680
|
const i = o, l = s.map((u, c) => u !== i ? 1 : 0);
|
|
7687
7681
|
return new m(l, n.typeInfo);
|
|
7688
7682
|
}
|
|
7689
|
-
if (
|
|
7683
|
+
if (D(o)) {
|
|
7690
7684
|
const i = s, l = o.map((u, c) => i !== u ? 1 : 0);
|
|
7691
7685
|
return new m(l, r.typeInfo);
|
|
7692
7686
|
}
|
|
7693
7687
|
return new b(s !== o ? 1 : 0, this.getTypeInfo("bool"));
|
|
7694
7688
|
case ">=":
|
|
7695
|
-
if (
|
|
7689
|
+
if (D(s) && D(o)) {
|
|
7696
7690
|
const i = s, l = o;
|
|
7697
7691
|
if (i.length !== l.length) return console.error(`Vector length mismatch. Line ${e.line}.`), null;
|
|
7698
7692
|
const u = i.map((c, f) => c >= l[f] ? 1 : 0);
|
|
7699
7693
|
return new m(u, n.typeInfo);
|
|
7700
7694
|
}
|
|
7701
|
-
if (
|
|
7695
|
+
if (D(s)) {
|
|
7702
7696
|
const i = o, l = s.map((u, c) => u >= i ? 1 : 0);
|
|
7703
7697
|
return new m(l, n.typeInfo);
|
|
7704
7698
|
}
|
|
7705
|
-
if (
|
|
7699
|
+
if (D(o)) {
|
|
7706
7700
|
const i = s, l = o.map((u, c) => i >= u ? 1 : 0);
|
|
7707
7701
|
return new m(l, r.typeInfo);
|
|
7708
7702
|
}
|
|
7709
7703
|
return new b(s >= o ? 1 : 0, this.getTypeInfo("bool"));
|
|
7710
7704
|
case "<=":
|
|
7711
|
-
if (
|
|
7705
|
+
if (D(s) && D(o)) {
|
|
7712
7706
|
const i = s, l = o;
|
|
7713
7707
|
if (i.length !== l.length) return console.error(`Vector length mismatch. Line ${e.line}.`), null;
|
|
7714
7708
|
const u = i.map((c, f) => c <= l[f] ? 1 : 0);
|
|
7715
7709
|
return new m(u, n.typeInfo);
|
|
7716
7710
|
}
|
|
7717
|
-
if (
|
|
7711
|
+
if (D(s)) {
|
|
7718
7712
|
const i = o, l = s.map((u, c) => u <= i ? 1 : 0);
|
|
7719
7713
|
return new m(l, n.typeInfo);
|
|
7720
7714
|
}
|
|
7721
|
-
if (
|
|
7715
|
+
if (D(o)) {
|
|
7722
7716
|
const i = s, l = o.map((u, c) => i <= u ? 1 : 0);
|
|
7723
7717
|
return new m(l, r.typeInfo);
|
|
7724
7718
|
}
|
|
7725
7719
|
return new b(s <= o ? 1 : 0, this.getTypeInfo("bool"));
|
|
7726
7720
|
case "&&":
|
|
7727
|
-
if (
|
|
7721
|
+
if (D(s) && D(o)) {
|
|
7728
7722
|
const i = s, l = o;
|
|
7729
7723
|
if (i.length !== l.length) return console.error(`Vector length mismatch. Line ${e.line}.`), null;
|
|
7730
7724
|
const u = i.map((c, f) => c && l[f] ? 1 : 0);
|
|
7731
7725
|
return new m(u, n.typeInfo);
|
|
7732
7726
|
}
|
|
7733
|
-
if (
|
|
7727
|
+
if (D(s)) {
|
|
7734
7728
|
const i = o, l = s.map((u, c) => u && i ? 1 : 0);
|
|
7735
7729
|
return new m(l, n.typeInfo);
|
|
7736
7730
|
}
|
|
7737
|
-
if (
|
|
7731
|
+
if (D(o)) {
|
|
7738
7732
|
const i = s, l = o.map((u, c) => i && u ? 1 : 0);
|
|
7739
7733
|
return new m(l, r.typeInfo);
|
|
7740
7734
|
}
|
|
7741
7735
|
return new b(s && o ? 1 : 0, this.getTypeInfo("bool"));
|
|
7742
7736
|
case "||":
|
|
7743
|
-
if (
|
|
7737
|
+
if (D(s) && D(o)) {
|
|
7744
7738
|
const i = s, l = o;
|
|
7745
7739
|
if (i.length !== l.length) return console.error(`Vector length mismatch. Line ${e.line}.`), null;
|
|
7746
7740
|
const u = i.map((c, f) => c || l[f] ? 1 : 0);
|
|
7747
7741
|
return new m(u, n.typeInfo);
|
|
7748
7742
|
}
|
|
7749
|
-
if (
|
|
7743
|
+
if (D(s)) {
|
|
7750
7744
|
const i = o, l = s.map((u, c) => u || i ? 1 : 0);
|
|
7751
7745
|
return new m(l, n.typeInfo);
|
|
7752
7746
|
}
|
|
7753
|
-
if (
|
|
7747
|
+
if (D(o)) {
|
|
7754
7748
|
const i = s, l = o.map((u, c) => i || u ? 1 : 0);
|
|
7755
7749
|
return new m(l, r.typeInfo);
|
|
7756
7750
|
}
|
|
@@ -8081,7 +8075,7 @@ let vn = class Be extends Qf {
|
|
|
8081
8075
|
return n.typeInfo = this.getTypeInfo(e.type), n.getSubData(this, e.postfix, t).clone();
|
|
8082
8076
|
}
|
|
8083
8077
|
_callConstructorVec(e, t) {
|
|
8084
|
-
const n = this.getTypeInfo(e.type), r = e.type.getTypeName(), s =
|
|
8078
|
+
const n = this.getTypeInfo(e.type), r = e.type.getTypeName(), s = Or[r];
|
|
8085
8079
|
if (s === void 0) return console.error(`Invalid vec constructor ${r}. Line ${e.line}`), null;
|
|
8086
8080
|
const o = [];
|
|
8087
8081
|
if (e instanceof me) if (e.isVector) {
|
|
@@ -8118,23 +8112,23 @@ let vn = class Be extends Qf {
|
|
|
8118
8112
|
} else o.push(e.scalarValue);
|
|
8119
8113
|
else if (e.args) for (const i of e.args) {
|
|
8120
8114
|
const l = this.evalExpression(i, t);
|
|
8121
|
-
l instanceof m ? o.push(...l.data) : l instanceof b ? o.push(l.value) : l instanceof
|
|
8115
|
+
l instanceof m ? o.push(...l.data) : l instanceof b ? o.push(l.value) : l instanceof Z && o.push(...l.data);
|
|
8122
8116
|
}
|
|
8123
8117
|
if (n instanceof ct && n.format === null && (n.format = this.getTypeInfo("f32")), o.length === 0) {
|
|
8124
8118
|
const i = new Array(s[2]).fill(0);
|
|
8125
|
-
return new
|
|
8119
|
+
return new Z(i, n).getSubData(this, e.postfix, t);
|
|
8126
8120
|
}
|
|
8127
|
-
return o.length !== s[2] ? (console.error(`Invalid matrix constructor. Line ${e.line}`), null) : new
|
|
8121
|
+
return o.length !== s[2] ? (console.error(`Invalid matrix constructor. Line ${e.line}`), null) : new Z(o, n).getSubData(this, e.postfix, t);
|
|
8128
8122
|
}
|
|
8129
8123
|
};
|
|
8130
8124
|
vn._breakObj = new qe(new Se("BREAK", null), null), vn._continueObj = new qe(new Se("CONTINUE", null), null), vn._priority = /* @__PURE__ */ new Map([["f32", 0], ["f16", 1], ["u32", 2], ["i32", 3], ["x32", 3]]);
|
|
8131
|
-
let
|
|
8125
|
+
let Of = class {
|
|
8132
8126
|
constructor() {
|
|
8133
8127
|
this.constants = /* @__PURE__ */ new Map(), this.aliases = /* @__PURE__ */ new Map(), this.structs = /* @__PURE__ */ new Map();
|
|
8134
8128
|
}
|
|
8135
|
-
},
|
|
8129
|
+
}, Pf = class {
|
|
8136
8130
|
constructor() {
|
|
8137
|
-
this._tokens = [], this._current = 0, this._currentLine = 1, this._deferArrayCountEval = [], this._currentLoop = [], this._context = new
|
|
8131
|
+
this._tokens = [], this._current = 0, this._currentLine = 1, this._deferArrayCountEval = [], this._currentLoop = [], this._context = new Of(), this._exec = new vn(), this._forwardTypeCount = 0;
|
|
8138
8132
|
}
|
|
8139
8133
|
parse(e) {
|
|
8140
8134
|
this._initialize(e), this._deferArrayCountEval.length = 0;
|
|
@@ -8411,7 +8405,7 @@ let Pf = class {
|
|
|
8411
8405
|
let n = this._match(d.tokens.underscore);
|
|
8412
8406
|
if (n || (e = this._unary_expression()), !n && e == null) return null;
|
|
8413
8407
|
const r = this._consume(d.assignment_operators, "Expected assignment operator."), s = this._short_circuit_or_expression();
|
|
8414
|
-
return this._updateNode(new Ro(
|
|
8408
|
+
return this._updateNode(new Ro(Pt.parse(r.lexeme), e, s), t);
|
|
8415
8409
|
}
|
|
8416
8410
|
_func_call_statement() {
|
|
8417
8411
|
if (!this._check(d.tokens.ident)) return null;
|
|
@@ -8978,7 +8972,7 @@ let Pf = class {
|
|
|
8978
8972
|
super(), e && this.update(e);
|
|
8979
8973
|
}
|
|
8980
8974
|
update(e) {
|
|
8981
|
-
const t = new
|
|
8975
|
+
const t = new Pf().parse(e);
|
|
8982
8976
|
this.updateAST(t);
|
|
8983
8977
|
}
|
|
8984
8978
|
};
|
|
@@ -9047,10 +9041,10 @@ function Vf(a) {
|
|
|
9047
9041
|
throw typeof e == "object" && e?.message && (t += `: ${e.message} `), typeof e == "object" && e?.token && (t += e.token.line || ""), new Error(t, { cause: e });
|
|
9048
9042
|
}
|
|
9049
9043
|
}
|
|
9050
|
-
const
|
|
9044
|
+
const Pr = {};
|
|
9051
9045
|
function Xn(a = "id") {
|
|
9052
|
-
|
|
9053
|
-
const e =
|
|
9046
|
+
Pr[a] = Pr[a] || 1;
|
|
9047
|
+
const e = Pr[a]++;
|
|
9054
9048
|
return `${a}-${e}`;
|
|
9055
9049
|
}
|
|
9056
9050
|
class za {
|
|
@@ -9213,13 +9207,11 @@ class Is {
|
|
|
9213
9207
|
/** Calculate a hash based on all the inputs for a render pipeline */
|
|
9214
9208
|
_hashRenderPipeline(e) {
|
|
9215
9209
|
const t = e.vs ? this._getHash(e.vs.source) : 0, n = e.fs ? this._getHash(e.fs.source) : 0, r = "-", s = this._getHash(JSON.stringify(e.bufferLayout)), { type: o } = this.device;
|
|
9216
|
-
|
|
9217
|
-
|
|
9218
|
-
|
|
9219
|
-
|
|
9220
|
-
|
|
9221
|
-
const i = this._getHash(JSON.stringify(e.parameters));
|
|
9222
|
-
return `${o}/R/${t}/${n}V${r}T${e.topology}P${i}BL${s}`;
|
|
9210
|
+
if (o === "webgl")
|
|
9211
|
+
return `${o}/R/${t}/${n}V${r}BL${s}`;
|
|
9212
|
+
{
|
|
9213
|
+
const i = this._getHash(JSON.stringify(e.parameters));
|
|
9214
|
+
return `${o}/R/${t}/${n}V${r}T${e.topology}P${i}BL${s}`;
|
|
9223
9215
|
}
|
|
9224
9216
|
}
|
|
9225
9217
|
_getHash(e) {
|
|
@@ -10380,36 +10372,36 @@ function ts(a, e) {
|
|
|
10380
10372
|
function tt(a) {
|
|
10381
10373
|
return a[2] - a[0] == 360;
|
|
10382
10374
|
}
|
|
10383
|
-
function
|
|
10375
|
+
function Ot(a, e) {
|
|
10384
10376
|
return { type: "Feature", geometry: { type: "Point", coordinates: a }, properties: e };
|
|
10385
10377
|
}
|
|
10386
10378
|
function vh(a, e, t) {
|
|
10387
10379
|
const { image: n, image2: r, imageSmoothing: s, imageInterpolation: o, imageWeight: i, imageType: l, imageUnscale: u, imageMinValue: c, imageMaxValue: f } = a, { width: h, height: p } = n, v = (function(L, E, C) {
|
|
10388
|
-
const
|
|
10380
|
+
const O = [C[0], C[3]], M = (C[2] - C[0]) / L, H = (C[3] - C[1]) / E;
|
|
10389
10381
|
return (z) => {
|
|
10390
|
-
const [
|
|
10391
|
-
return [(
|
|
10382
|
+
const [U, G] = z;
|
|
10383
|
+
return [(U - O[0]) / M, (O[1] - G) / H];
|
|
10392
10384
|
};
|
|
10393
10385
|
})(h, p, e), I = mh(h, p, s), y = tt(e);
|
|
10394
10386
|
return { type: "FeatureCollection", features: t.map(((L) => {
|
|
10395
|
-
if (!(function(z,
|
|
10396
|
-
return z[0] >=
|
|
10397
|
-
})(L, e)) return
|
|
10398
|
-
const E = v(L), C = E[0] / h,
|
|
10399
|
-
if (!hh(M, u)) return
|
|
10400
|
-
const
|
|
10401
|
-
if (typeof c == "number" && !isNaN(c) &&
|
|
10387
|
+
if (!(function(z, U) {
|
|
10388
|
+
return z[0] >= U[0] && z[0] <= U[2] && z[1] >= U[1] && z[1] <= U[3];
|
|
10389
|
+
})(L, e)) return Ot(L, { value: NaN });
|
|
10390
|
+
const E = v(L), C = E[0] / h, O = E[1] / p, M = ph(n, r, I, o, i, y, C, O);
|
|
10391
|
+
if (!hh(M, u)) return Ot(L, { value: NaN });
|
|
10392
|
+
const H = dh(M, l, u);
|
|
10393
|
+
if (typeof c == "number" && !isNaN(c) && H < c || typeof f == "number" && !isNaN(f) && H > f) return Ot(L, { value: NaN });
|
|
10402
10394
|
if (l === xe.VECTOR) {
|
|
10403
|
-
const z = (function(
|
|
10395
|
+
const z = (function(U, G, S) {
|
|
10404
10396
|
if (G === xe.VECTOR) {
|
|
10405
|
-
const q = ul(
|
|
10397
|
+
const q = ul(U, G, S);
|
|
10406
10398
|
return (360 - (Math.atan2(q[1], q[0]) / Math.PI * 180 + 180) - 270) % 360;
|
|
10407
10399
|
}
|
|
10408
10400
|
return NaN;
|
|
10409
10401
|
})(M, l, u);
|
|
10410
|
-
return
|
|
10402
|
+
return Ot(L, { value: H, direction: z });
|
|
10411
10403
|
}
|
|
10412
|
-
return
|
|
10404
|
+
return Ot(L, { value: H });
|
|
10413
10405
|
})) };
|
|
10414
10406
|
}
|
|
10415
10407
|
const xh = /* @__PURE__ */ new WeakMap(), wh = /* @__PURE__ */ new WeakMap();
|
|
@@ -10535,10 +10527,10 @@ vec4 AG(sampler2D AH,vec2 AI,vec2 AJ,vec2 AK){vec2 uv=(AJ+AK+0.5)/AI;return text
|
|
|
10535
10527
|
super.updateState(e), t !== e.oldProps.palette && this._updatePalette();
|
|
10536
10528
|
}
|
|
10537
10529
|
draw(e) {
|
|
10538
|
-
const { device: t, viewport: n } = this.context, { model: r } = this.state, { imageTexture: s, imageTexture2: o, imageSmoothing: i, imageInterpolation: l, imageWeight: u, imageType: c, imageUnscale: f, imageMinValue: h, imageMaxValue: p, bounds: v, _imageCoordinateSystem: I, transparentColor: y, minZoom: T, maxZoom: L, borderEnabled: E, borderWidth: C, borderColor:
|
|
10530
|
+
const { device: t, viewport: n } = this.context, { model: r } = this.state, { imageTexture: s, imageTexture2: o, imageSmoothing: i, imageInterpolation: l, imageWeight: u, imageType: c, imageUnscale: f, imageMinValue: h, imageMaxValue: p, bounds: v, _imageCoordinateSystem: I, transparentColor: y, minZoom: T, maxZoom: L, borderEnabled: E, borderWidth: C, borderColor: O, gridEnabled: M, gridSize: H, gridColor: z } = he(this.props, Rt), { paletteTexture: U, paletteBounds: G } = this.state;
|
|
10539
10531
|
if (!s) return;
|
|
10540
10532
|
const S = We(n);
|
|
10541
|
-
r && Bt(n, T, L) && (r.shaderInputs.setProps({ [Et.name]: { viewportGlobe: S, bounds: v, _imageCoordinateSystem: I, transparentColor: y }, [kt.name]: { imageTexture: s ?? Ie(t), imageTexture2: o ?? Ie(t), imageSmoothing: i, imageInterpolation: l, imageWeight: u, imageType: c, imageUnscale: f, imageMinValue: h, imageMaxValue: p, borderEnabled: E, borderWidth: C, borderColor:
|
|
10533
|
+
r && Bt(n, T, L) && (r.shaderInputs.setProps({ [Et.name]: { viewportGlobe: S, bounds: v, _imageCoordinateSystem: I, transparentColor: y }, [kt.name]: { imageTexture: s ?? Ie(t), imageTexture2: o ?? Ie(t), imageSmoothing: i, imageInterpolation: l, imageWeight: u, imageType: c, imageUnscale: f, imageMinValue: h, imageMaxValue: p, borderEnabled: E, borderWidth: C, borderColor: O, gridEnabled: M, gridSize: H, gridColor: z }, [Tt.name]: { paletteTexture: U ?? Ie(t), paletteBounds: G } }), this.props.image = s, super.draw(e), this.props.image = null);
|
|
10542
10534
|
}
|
|
10543
10535
|
_updatePalette() {
|
|
10544
10536
|
const { device: e } = this.context, { palette: t } = he(this.props, Rt);
|
|
@@ -10597,10 +10589,10 @@ vec4 AG(sampler2D AH,vec2 AI,vec2 AJ,vec2 AK){vec2 uv=(AJ+AK+0.5)/AI;return text
|
|
|
10597
10589
|
super.updateState(e), t !== e.oldProps.palette && this._updatePalette();
|
|
10598
10590
|
}
|
|
10599
10591
|
draw(e) {
|
|
10600
|
-
const { device: t, viewport: n } = this.context, { model: r } = this.state, { imageTexture: s, imageTexture2: o, imageSmoothing: i, imageInterpolation: l, imageWeight: u, imageType: c, imageUnscale: f, imageMinValue: h, imageMaxValue: p, bounds: v, _imageCoordinateSystem: I, transparentColor: y, minZoom: T, maxZoom: L, color: E, interval: C, majorInterval:
|
|
10592
|
+
const { device: t, viewport: n } = this.context, { model: r } = this.state, { imageTexture: s, imageTexture2: o, imageSmoothing: i, imageInterpolation: l, imageWeight: u, imageType: c, imageUnscale: f, imageMinValue: h, imageMaxValue: p, bounds: v, _imageCoordinateSystem: I, transparentColor: y, minZoom: T, maxZoom: L, color: E, interval: C, majorInterval: O, width: M } = he(this.props, ns), { paletteTexture: H, paletteBounds: z } = this.state;
|
|
10601
10593
|
if (!s) return;
|
|
10602
|
-
const
|
|
10603
|
-
r && Bt(n, T, L) && (r.shaderInputs.setProps({ [Et.name]: { viewportGlobe:
|
|
10594
|
+
const U = We(n);
|
|
10595
|
+
r && Bt(n, T, L) && (r.shaderInputs.setProps({ [Et.name]: { viewportGlobe: U, bounds: v, _imageCoordinateSystem: I, transparentColor: y }, [kt.name]: { imageTexture: s ?? Ie(t), imageTexture2: o ?? Ie(t), imageSmoothing: i, imageInterpolation: l, imageWeight: u, imageType: c, imageUnscale: f, imageMinValue: h, imageMaxValue: p }, [Tt.name]: { paletteTexture: H ?? Ie(t), paletteBounds: z, paletteColor: E }, [Ti.name]: { interval: C, majorInterval: O, width: M } }), this.props.image = s, super.draw(e), this.props.image = null);
|
|
10604
10596
|
}
|
|
10605
10597
|
_updatePalette() {
|
|
10606
10598
|
const { device: e } = this.context, { palette: t } = he(this.props, ns);
|
|
@@ -10632,36 +10624,36 @@ function Qh(a = 20) {
|
|
|
10632
10624
|
return new Array(a).fill(void 0).map((() => Mh.charAt(Math.floor(62 * Math.random())))).join("");
|
|
10633
10625
|
}
|
|
10634
10626
|
const Dh = kc((Si = function() {
|
|
10635
|
-
const a = Symbol("Comlink.proxy"), e = Symbol("Comlink.endpoint"), t = Symbol("Comlink.releaseProxy"), n = Symbol("Comlink.finalizer"), r = Symbol("Comlink.thrown"), s = (_) => typeof _ == "object" && _ !== null || typeof _ == "function", o = { canHandle: (_) => s(_) && _[a], serialize(_) {
|
|
10636
|
-
const { port1:
|
|
10637
|
-
return l(_,
|
|
10638
|
-
}, deserialize: (_) => (_.start(), (function(
|
|
10639
|
-
const
|
|
10640
|
-
return
|
|
10641
|
-
const { data: R } =
|
|
10627
|
+
const a = /* @__PURE__ */ Symbol("Comlink.proxy"), e = /* @__PURE__ */ Symbol("Comlink.endpoint"), t = /* @__PURE__ */ Symbol("Comlink.releaseProxy"), n = /* @__PURE__ */ Symbol("Comlink.finalizer"), r = /* @__PURE__ */ Symbol("Comlink.thrown"), s = (_) => typeof _ == "object" && _ !== null || typeof _ == "function", o = { canHandle: (_) => s(_) && _[a], serialize(_) {
|
|
10628
|
+
const { port1: Q, port2: F } = new MessageChannel();
|
|
10629
|
+
return l(_, Q), [F, [F]];
|
|
10630
|
+
}, deserialize: (_) => (_.start(), (function(Q, F) {
|
|
10631
|
+
const P = /* @__PURE__ */ new Map();
|
|
10632
|
+
return Q.addEventListener("message", (function(N) {
|
|
10633
|
+
const { data: R } = N;
|
|
10642
10634
|
if (!R || !R.id) return;
|
|
10643
|
-
const W =
|
|
10635
|
+
const W = P.get(R.id);
|
|
10644
10636
|
if (W) try {
|
|
10645
10637
|
W(R);
|
|
10646
10638
|
} finally {
|
|
10647
|
-
|
|
10639
|
+
P.delete(R.id);
|
|
10648
10640
|
}
|
|
10649
|
-
})), v(
|
|
10641
|
+
})), v(Q, P, [], F);
|
|
10650
10642
|
})(_)) }, i = /* @__PURE__ */ new Map([["proxy", o], ["throw", { canHandle: (_) => s(_) && r in _, serialize({ value: _ }) {
|
|
10651
|
-
let
|
|
10652
|
-
return
|
|
10643
|
+
let Q;
|
|
10644
|
+
return Q = _ instanceof Error ? { isError: !0, value: { message: _.message, name: _.name, stack: _.stack } } : { isError: !1, value: _ }, [Q, []];
|
|
10653
10645
|
}, deserialize(_) {
|
|
10654
10646
|
throw _.isError ? Object.assign(new Error(_.value.message), _.value) : _.value;
|
|
10655
10647
|
} }]]);
|
|
10656
|
-
function l(_,
|
|
10657
|
-
|
|
10658
|
-
if (!
|
|
10648
|
+
function l(_, Q = globalThis, F = ["*"]) {
|
|
10649
|
+
Q.addEventListener("message", (function P(N) {
|
|
10650
|
+
if (!N || !N.data) return;
|
|
10659
10651
|
if (!(function(ee, J) {
|
|
10660
10652
|
for (const B of ee)
|
|
10661
10653
|
if (J === B || B === "*" || B instanceof RegExp && B.test(J)) return !0;
|
|
10662
10654
|
return !1;
|
|
10663
|
-
})(F,
|
|
10664
|
-
const { id: R, type: W, path: re } = Object.assign({ path: [] },
|
|
10655
|
+
})(F, N.origin)) return void console.warn(`Invalid origin '${N.origin}' for comlink proxy`);
|
|
10656
|
+
const { id: R, type: W, path: re } = Object.assign({ path: [] }, N.data), K = (N.data.argumentList || []).map(E);
|
|
10665
10657
|
let $;
|
|
10666
10658
|
try {
|
|
10667
10659
|
const ee = re.slice(0, -1).reduce(((B, V) => B[V]), _), J = re.reduce(((B, V) => B[V]), _);
|
|
@@ -10670,7 +10662,7 @@ const Dh = kc((Si = function() {
|
|
|
10670
10662
|
$ = J;
|
|
10671
10663
|
break;
|
|
10672
10664
|
case "SET":
|
|
10673
|
-
ee[re.slice(-1)[0]] = E(
|
|
10665
|
+
ee[re.slice(-1)[0]] = E(N.data.value), $ = !0;
|
|
10674
10666
|
break;
|
|
10675
10667
|
case "APPLY":
|
|
10676
10668
|
$ = J.apply(ee, K);
|
|
@@ -10697,16 +10689,16 @@ const Dh = kc((Si = function() {
|
|
|
10697
10689
|
}
|
|
10698
10690
|
Promise.resolve($).catch(((ee) => ({ value: ee, [r]: 0 }))).then(((ee) => {
|
|
10699
10691
|
const [J, B] = L(ee);
|
|
10700
|
-
|
|
10692
|
+
Q.postMessage(Object.assign(Object.assign({}, J), { id: R }), B), W === "RELEASE" && (Q.removeEventListener("message", P), u(Q), n in _ && typeof _[n] == "function" && _[n]());
|
|
10701
10693
|
})).catch(((ee) => {
|
|
10702
10694
|
const [J, B] = L({ value: new TypeError("Unserializable return value"), [r]: 0 });
|
|
10703
|
-
|
|
10695
|
+
Q.postMessage(Object.assign(Object.assign({}, J), { id: R }), B);
|
|
10704
10696
|
}));
|
|
10705
|
-
})),
|
|
10697
|
+
})), Q.start && Q.start();
|
|
10706
10698
|
}
|
|
10707
10699
|
function u(_) {
|
|
10708
|
-
(function(
|
|
10709
|
-
return
|
|
10700
|
+
(function(Q) {
|
|
10701
|
+
return Q.constructor.name === "MessagePort";
|
|
10710
10702
|
})(_) && _.close();
|
|
10711
10703
|
}
|
|
10712
10704
|
function c(_) {
|
|
@@ -10718,39 +10710,39 @@ const Dh = kc((Si = function() {
|
|
|
10718
10710
|
}));
|
|
10719
10711
|
}
|
|
10720
10712
|
const h = /* @__PURE__ */ new WeakMap(), p = "FinalizationRegistry" in globalThis && new FinalizationRegistry(((_) => {
|
|
10721
|
-
const
|
|
10722
|
-
h.set(_,
|
|
10713
|
+
const Q = (h.get(_) || 0) - 1;
|
|
10714
|
+
h.set(_, Q), Q === 0 && f(_);
|
|
10723
10715
|
}));
|
|
10724
|
-
function v(_,
|
|
10716
|
+
function v(_, Q, F = [], P = function() {
|
|
10725
10717
|
}) {
|
|
10726
|
-
let
|
|
10727
|
-
const R = new Proxy(
|
|
10728
|
-
if (c(
|
|
10718
|
+
let N = !1;
|
|
10719
|
+
const R = new Proxy(P, { get(W, re) {
|
|
10720
|
+
if (c(N), re === t) return () => {
|
|
10729
10721
|
(function(K) {
|
|
10730
10722
|
p && p.unregister(K);
|
|
10731
|
-
})(R), f(_),
|
|
10723
|
+
})(R), f(_), Q.clear(), N = !0;
|
|
10732
10724
|
};
|
|
10733
10725
|
if (re === "then") {
|
|
10734
10726
|
if (F.length === 0) return { then: () => R };
|
|
10735
|
-
const K = C(_,
|
|
10727
|
+
const K = C(_, Q, { type: "GET", path: F.map((($) => $.toString())) }).then(E);
|
|
10736
10728
|
return K.then.bind(K);
|
|
10737
10729
|
}
|
|
10738
|
-
return v(_,
|
|
10730
|
+
return v(_, Q, [...F, re]);
|
|
10739
10731
|
}, set(W, re, K) {
|
|
10740
|
-
c(
|
|
10732
|
+
c(N);
|
|
10741
10733
|
const [$, ee] = L(K);
|
|
10742
|
-
return C(_,
|
|
10734
|
+
return C(_, Q, { type: "SET", path: [...F, re].map(((J) => J.toString())), value: $ }, ee).then(E);
|
|
10743
10735
|
}, apply(W, re, K) {
|
|
10744
|
-
c(
|
|
10736
|
+
c(N);
|
|
10745
10737
|
const $ = F[F.length - 1];
|
|
10746
|
-
if ($ === e) return C(_,
|
|
10747
|
-
if ($ === "bind") return v(_,
|
|
10738
|
+
if ($ === e) return C(_, Q, { type: "ENDPOINT" }).then(E);
|
|
10739
|
+
if ($ === "bind") return v(_, Q, F.slice(0, -1));
|
|
10748
10740
|
const [ee, J] = I(K);
|
|
10749
|
-
return C(_,
|
|
10741
|
+
return C(_, Q, { type: "APPLY", path: F.map(((B) => B.toString())), argumentList: ee }, J).then(E);
|
|
10750
10742
|
}, construct(W, re) {
|
|
10751
|
-
c(
|
|
10743
|
+
c(N);
|
|
10752
10744
|
const [K, $] = I(re);
|
|
10753
|
-
return C(_,
|
|
10745
|
+
return C(_, Q, { type: "CONSTRUCT", path: F.map(((ee) => ee.toString())), argumentList: K }, $).then(E);
|
|
10754
10746
|
} });
|
|
10755
10747
|
return (function(W, re) {
|
|
10756
10748
|
const K = (h.get(re) || 0) + 1;
|
|
@@ -10758,18 +10750,18 @@ const Dh = kc((Si = function() {
|
|
|
10758
10750
|
})(R, _), R;
|
|
10759
10751
|
}
|
|
10760
10752
|
function I(_) {
|
|
10761
|
-
const
|
|
10762
|
-
return [
|
|
10753
|
+
const Q = _.map(L);
|
|
10754
|
+
return [Q.map(((P) => P[0])), (F = Q.map(((P) => P[1])), Array.prototype.concat.apply([], F))];
|
|
10763
10755
|
var F;
|
|
10764
10756
|
}
|
|
10765
10757
|
const y = /* @__PURE__ */ new WeakMap();
|
|
10766
|
-
function T(_,
|
|
10767
|
-
return y.set(_,
|
|
10758
|
+
function T(_, Q) {
|
|
10759
|
+
return y.set(_, Q), _;
|
|
10768
10760
|
}
|
|
10769
10761
|
function L(_) {
|
|
10770
|
-
for (const [
|
|
10771
|
-
const [
|
|
10772
|
-
return [{ type: "HANDLER", name:
|
|
10762
|
+
for (const [Q, F] of i) if (F.canHandle(_)) {
|
|
10763
|
+
const [P, N] = F.serialize(_);
|
|
10764
|
+
return [{ type: "HANDLER", name: Q, value: P }, N];
|
|
10773
10765
|
}
|
|
10774
10766
|
return [{ type: "RAW", value: _ }, y.get(_) || []];
|
|
10775
10767
|
}
|
|
@@ -10781,93 +10773,93 @@ const Dh = kc((Si = function() {
|
|
|
10781
10773
|
return _.value;
|
|
10782
10774
|
}
|
|
10783
10775
|
}
|
|
10784
|
-
function C(_,
|
|
10785
|
-
return new Promise(((
|
|
10776
|
+
function C(_, Q, F, P) {
|
|
10777
|
+
return new Promise(((N) => {
|
|
10786
10778
|
const R = new Array(4).fill(0).map((() => Math.floor(Math.random() * Number.MAX_SAFE_INTEGER).toString(16))).join("-");
|
|
10787
|
-
|
|
10779
|
+
Q.set(R, N), _.start && _.start(), _.postMessage(Object.assign({ id: R }, F), P);
|
|
10788
10780
|
}));
|
|
10789
10781
|
}
|
|
10790
|
-
const
|
|
10782
|
+
const O = 6371e3;
|
|
10791
10783
|
function M(_) {
|
|
10792
10784
|
return _ / 180 * Math.PI;
|
|
10793
10785
|
}
|
|
10794
|
-
const
|
|
10795
|
-
function z(_,
|
|
10796
|
-
return (function(F,
|
|
10797
|
-
const R =
|
|
10786
|
+
const H = 6370972;
|
|
10787
|
+
function z(_, Q) {
|
|
10788
|
+
return (function(F, P, N = O) {
|
|
10789
|
+
const R = N, W = M(F[1]), re = M(F[0]), K = M(P[1]), $ = K - W, ee = M(P[0]) - re, J = Math.sin($ / 2) * Math.sin($ / 2) + Math.cos(W) * Math.cos(K) * Math.sin(ee / 2) * Math.sin(ee / 2);
|
|
10798
10790
|
return R * (2 * Math.atan2(Math.sqrt(J), Math.sqrt(1 - J)));
|
|
10799
|
-
})(_,
|
|
10791
|
+
})(_, Q, H);
|
|
10800
10792
|
}
|
|
10801
|
-
const
|
|
10793
|
+
const U = { NEAREST: "NEAREST", LINEAR: "LINEAR", CUBIC: "CUBIC" }, G = { VECTOR: "VECTOR" };
|
|
10802
10794
|
function S(_) {
|
|
10803
10795
|
return _ % 1;
|
|
10804
10796
|
}
|
|
10805
|
-
function q(_,
|
|
10806
|
-
return _.map(((F,
|
|
10797
|
+
function q(_, Q) {
|
|
10798
|
+
return _.map(((F, P) => _[P] + Q[P]));
|
|
10807
10799
|
}
|
|
10808
|
-
function Y(_,
|
|
10809
|
-
return _.map(((F,
|
|
10800
|
+
function Y(_, Q) {
|
|
10801
|
+
return _.map(((F, P) => _[P] * Q));
|
|
10810
10802
|
}
|
|
10811
|
-
function j(_,
|
|
10812
|
-
return _.map(((F,
|
|
10803
|
+
function j(_, Q) {
|
|
10804
|
+
return _.map(((F, P) => _[P] * Q[P])).reduce(((F, P) => F + P));
|
|
10813
10805
|
}
|
|
10814
|
-
function se(_,
|
|
10815
|
-
return _ ===
|
|
10806
|
+
function se(_, Q, F) {
|
|
10807
|
+
return _ === Q ? _ : _ * (1 - F) + Q * F;
|
|
10816
10808
|
}
|
|
10817
|
-
function ne(_,
|
|
10818
|
-
return _.map(((
|
|
10809
|
+
function ne(_, Q, F) {
|
|
10810
|
+
return _.map(((P, N) => se(_[N], Q[N], F)));
|
|
10819
10811
|
}
|
|
10820
|
-
function ye(_,
|
|
10821
|
-
return
|
|
10812
|
+
function ye(_, Q) {
|
|
10813
|
+
return Q ? _[3] >= 255 : !isNaN(_[0]);
|
|
10822
10814
|
}
|
|
10823
|
-
function Ge(_,
|
|
10824
|
-
if (
|
|
10825
|
-
const
|
|
10826
|
-
return R === G.VECTOR ? W ? [se(W[0], W[1],
|
|
10827
|
-
})(_,
|
|
10828
|
-
return Math.hypot(
|
|
10815
|
+
function Ge(_, Q, F) {
|
|
10816
|
+
if (Q === G.VECTOR) {
|
|
10817
|
+
const P = (function(N, R, W) {
|
|
10818
|
+
return R === G.VECTOR ? W ? [se(W[0], W[1], N[0] / 255), se(W[0], W[1], N[1] / 255)] : [N[0], N[1]] : [NaN, NaN];
|
|
10819
|
+
})(_, Q, F);
|
|
10820
|
+
return Math.hypot(P[0], P[1]);
|
|
10829
10821
|
}
|
|
10830
|
-
return (function(
|
|
10831
|
-
return
|
|
10832
|
-
})(_,
|
|
10822
|
+
return (function(P, N, R) {
|
|
10823
|
+
return N === G.VECTOR ? 0 : R ? se(R[0], R[1], P[0] / 255) : P[0];
|
|
10824
|
+
})(_, Q, F);
|
|
10833
10825
|
}
|
|
10834
|
-
function le(_,
|
|
10835
|
-
const { data: W, width: re, height: K } = _, $ = W.length / (re * K), ee = (F +
|
|
10826
|
+
function le(_, Q, F, P, N, R) {
|
|
10827
|
+
const { data: W, width: re, height: K } = _, $ = W.length / (re * K), ee = (F + N + 0.5) / Q[0], J = (P + R + 0.5) / Q[1], B = Math.max(0, Math.min(re - 1, Math.floor(ee * re))), V = Math.max(0, Math.min(K - 1, Math.floor(J * K)));
|
|
10836
10828
|
return new Array($).fill(void 0).map(((X, ue) => W[(B + V * re) * $ + ue]));
|
|
10837
10829
|
}
|
|
10838
|
-
const
|
|
10830
|
+
const Pe = [3, -6, 0, 4].map(((_) => _ / 6)), ht = [-1, 6, -12, 8].map(((_) => _ / 6));
|
|
10839
10831
|
function Kt(_) {
|
|
10840
10832
|
return [_ * _ * _, _ * _, _, 1];
|
|
10841
10833
|
}
|
|
10842
|
-
function St(_,
|
|
10843
|
-
const R = q(q(q(Y(_, j(ht, Kt(
|
|
10844
|
-
return R[3] = _[3] > 0 &&
|
|
10834
|
+
function St(_, Q, F, P, N) {
|
|
10835
|
+
const R = q(q(q(Y(_, j(ht, Kt(N + 1))), Y(Q, j(Pe, Kt(N)))), Y(F, j(Pe, Kt(1 - N)))), Y(P, j(ht, Kt(2 - N))));
|
|
10836
|
+
return R[3] = _[3] > 0 && Q[3] > 0 && F[3] > 0 && P[3] > 0 ? Math.max(Math.max(Math.max(_[3], Q[3]), F[3]), P[3]) : 0, R;
|
|
10845
10837
|
}
|
|
10846
|
-
function Kn(_,
|
|
10847
|
-
return F ===
|
|
10838
|
+
function Kn(_, Q, F, P, N) {
|
|
10839
|
+
return F === U.CUBIC ? (function(R, W, re, K) {
|
|
10848
10840
|
const $ = re * W[0] - 0.5, ee = K * W[1] - 0.5, J = Math.floor($), B = Math.floor(ee), V = S($), X = S(ee);
|
|
10849
10841
|
return St(St(le(R, W, J, B, -1, -1), le(R, W, J, B, 0, -1), le(R, W, J, B, 1, -1), le(R, W, J, B, 2, -1), V), St(le(R, W, J, B, -1, 0), le(R, W, J, B, 0, 0), le(R, W, J, B, 1, 0), le(R, W, J, B, 2, 0), V), St(le(R, W, J, B, -1, 1), le(R, W, J, B, 0, 1), le(R, W, J, B, 1, 1), le(R, W, J, B, 2, 1), V), St(le(R, W, J, B, -1, 2), le(R, W, J, B, 0, 2), le(R, W, J, B, 1, 2), le(R, W, J, B, 2, 2), V), X);
|
|
10850
|
-
})(_,
|
|
10842
|
+
})(_, Q, P, N) : F === U.LINEAR ? (function(R, W, re, K) {
|
|
10851
10843
|
const $ = re * W[0] - 0.5, ee = K * W[1] - 0.5, J = Math.floor($), B = Math.floor(ee), V = S($), X = S(ee);
|
|
10852
10844
|
return ne(ne(le(R, W, J, B, 0, 0), le(R, W, J, B, 1, 0), V), ne(le(R, W, J, B, 0, 1), le(R, W, J, B, 1, 1), V), X);
|
|
10853
|
-
})(_,
|
|
10845
|
+
})(_, Q, P, N) : (function(R, W, re, K) {
|
|
10854
10846
|
const $ = re * W[0] - 0.5, ee = K * W[1] - 0.5;
|
|
10855
10847
|
return le(R, W, Math.round($), Math.round(ee), 0, 0);
|
|
10856
|
-
})(_,
|
|
10848
|
+
})(_, Q, P, N);
|
|
10857
10849
|
}
|
|
10858
|
-
function ml(_,
|
|
10850
|
+
function ml(_, Q, F, P, N, R, W, re) {
|
|
10859
10851
|
const K = R ? W + 0.5 / F[0] : se(0 + 0.5 / F[0], 1 - 0.5 / F[0], W), $ = se(0 + 0.5 / F[1], 1 - 0.5 / F[1], re);
|
|
10860
|
-
return
|
|
10852
|
+
return Q && N > 0 ? ne(Kn(_, F, P, K, $), Kn(Q, F, P, K, $), N) : Kn(_, F, P, K, $);
|
|
10861
10853
|
}
|
|
10862
|
-
function gl(_,
|
|
10863
|
-
const { image: F, image2:
|
|
10854
|
+
function gl(_, Q) {
|
|
10855
|
+
const { image: F, image2: P, imageSmoothing: N, imageInterpolation: R, imageWeight: W, imageType: re, imageUnscale: K, imageMinValue: $, imageMaxValue: ee } = _, { width: J, height: B } = F, V = R !== U.NEAREST ? U.NEAREST : R, X = (function(oe, _e, Ne) {
|
|
10864
10856
|
const Je = 1 + Math.max(0, Ne);
|
|
10865
10857
|
return [oe / Je, _e / Je];
|
|
10866
|
-
})(J, B,
|
|
10858
|
+
})(J, B, N), ue = (function(oe) {
|
|
10867
10859
|
return oe[2] - oe[0] == 360;
|
|
10868
|
-
})(
|
|
10860
|
+
})(Q), fe = new Float32Array(J * B);
|
|
10869
10861
|
for (let oe = 0; oe < B; oe++) for (let _e = 0; _e < J; _e++) {
|
|
10870
|
-
const Ne = _e + oe * J, Je = ml(F,
|
|
10862
|
+
const Ne = _e + oe * J, Je = ml(F, P, X, V, W, ue, _e / J, oe / B);
|
|
10871
10863
|
if (!ye(Je, K)) {
|
|
10872
10864
|
fe[Ne] = NaN;
|
|
10873
10865
|
continue;
|
|
@@ -10877,16 +10869,16 @@ const Dh = kc((Si = function() {
|
|
|
10877
10869
|
}
|
|
10878
10870
|
return { data: fe, width: J, height: B };
|
|
10879
10871
|
}
|
|
10880
|
-
function Al(_,
|
|
10881
|
-
let { data:
|
|
10872
|
+
function Al(_, Q, F) {
|
|
10873
|
+
let { data: P, width: N, height: R } = _;
|
|
10882
10874
|
const W = 1e3 * F, re = (function(B, V, X) {
|
|
10883
10875
|
const ue = [X[0], X[3]], fe = (X[2] - X[0]) / B, oe = (X[3] - X[1]) / V;
|
|
10884
10876
|
return (_e) => {
|
|
10885
10877
|
const [Ne, Je] = _e;
|
|
10886
10878
|
return [ue[0] + Ne * fe, ue[1] - Je * oe];
|
|
10887
10879
|
};
|
|
10888
|
-
})(
|
|
10889
|
-
|
|
10880
|
+
})(N, R, Q);
|
|
10881
|
+
P = (function(B, V, X) {
|
|
10890
10882
|
const ue = new Float32Array(B.length);
|
|
10891
10883
|
for (let fe = 0; fe < X; fe++) for (let oe = 0; oe < V; oe++) {
|
|
10892
10884
|
const _e = oe + fe * V;
|
|
@@ -10896,15 +10888,15 @@ const Dh = kc((Si = function() {
|
|
|
10896
10888
|
} else ue[_e] = B[_e];
|
|
10897
10889
|
}
|
|
10898
10890
|
return ue;
|
|
10899
|
-
})(
|
|
10891
|
+
})(P, N, R);
|
|
10900
10892
|
let K = [], $ = [];
|
|
10901
|
-
for (let B = 1; B < R - 1; B++) for (let V = 1; V <
|
|
10902
|
-
const X =
|
|
10903
|
-
if (!isNaN(X) && X >=
|
|
10893
|
+
for (let B = 1; B < R - 1; B++) for (let V = 1; V < N - 1; V++) {
|
|
10894
|
+
const X = P[V + B * N];
|
|
10895
|
+
if (!isNaN(X) && X >= P[V + 1 + B * N] && X >= P[V + 1 + (B + 1) * N] && X >= P[V + (B + 1) * N] && X >= P[V - 1 + (B + 1) * N] && X > P[V - 1 + B * N] && X > P[V - 1 + (B - 1) * N] && X > P[V + (B - 1) * N] && X > P[V + 1 + (B - 1) * N]) {
|
|
10904
10896
|
const ue = re([V, B]);
|
|
10905
10897
|
K.push({ position: ue, value: X });
|
|
10906
10898
|
}
|
|
10907
|
-
if (!isNaN(X) && X <=
|
|
10899
|
+
if (!isNaN(X) && X <= P[V + 1 + B * N] && X <= P[V + 1 + (B + 1) * N] && X <= P[V + (B + 1) * N] && X <= P[V - 1 + (B + 1) * N] && X < P[V - 1 + B * N] && X < P[V - 1 + (B - 1) * N] && X < P[V + (B - 1) * N] && X < P[V + 1 + (B - 1) * N]) {
|
|
10908
10900
|
const ue = re([V, B]);
|
|
10909
10901
|
$.push({ position: ue, value: X });
|
|
10910
10902
|
}
|
|
@@ -10929,34 +10921,34 @@ const Dh = kc((Si = function() {
|
|
|
10929
10921
|
}
|
|
10930
10922
|
return $ = J.filter(((B) => !!B)), new Float32Array([K.length, ...K.map(((B) => [...B.position, B.value])).flat(), $.length, ...$.map(((B) => [...B.position, B.value])).flat()]);
|
|
10931
10923
|
}
|
|
10932
|
-
l({ getHighLowPointData(_,
|
|
10924
|
+
l({ getHighLowPointData(_, Q, F, P, N, R, W, re, K, $, ee, J, B, V, X) {
|
|
10933
10925
|
const ue = (function(fe, oe, _e) {
|
|
10934
10926
|
return Al(gl(fe, oe), oe, _e);
|
|
10935
|
-
})({ image: { data: _, width:
|
|
10927
|
+
})({ image: { data: _, width: Q, height: F }, image2: P ? { data: P, width: N, height: R } : null, imageSmoothing: W, imageInterpolation: re, imageWeight: K, imageType: $, imageUnscale: ee, imageMinValue: J, imageMaxValue: B }, V, X);
|
|
10936
10928
|
return T(ue, [ue.buffer]);
|
|
10937
10929
|
} });
|
|
10938
10930
|
}, Si.toString().replace(/^function.+?{/, "").slice(0, -1)));
|
|
10939
|
-
var Si,
|
|
10940
|
-
const rs = { LOW: "L", HIGH: "H" },
|
|
10931
|
+
var Si, Oh = Ec(Dh);
|
|
10932
|
+
const rs = { LOW: "L", HIGH: "H" }, Ph = go(Oh());
|
|
10941
10933
|
function Li(a, e) {
|
|
10942
10934
|
return { type: "Feature", geometry: { type: "Point", coordinates: a }, properties: e };
|
|
10943
10935
|
}
|
|
10944
10936
|
async function Nh(a, e, t) {
|
|
10945
10937
|
const { image: n, image2: r, imageSmoothing: s, imageInterpolation: o, imageWeight: i, imageType: l, imageUnscale: u, imageMinValue: c, imageMaxValue: f } = a, { data: h, width: p, height: v } = n, { data: I = null, width: y = null, height: T = null } = r || {}, L = h.slice(0), E = I ? I.slice(0) : null;
|
|
10946
|
-
return { type: "FeatureCollection", features: (function(
|
|
10938
|
+
return { type: "FeatureCollection", features: (function(O) {
|
|
10947
10939
|
let M = 0;
|
|
10948
|
-
const
|
|
10940
|
+
const H = [], z = O[M++];
|
|
10949
10941
|
for (let G = 0; G < z; G++) {
|
|
10950
|
-
const S = [
|
|
10951
|
-
|
|
10942
|
+
const S = [O[M++], O[M++]], q = O[M++];
|
|
10943
|
+
H.push(Li(S, { type: rs.HIGH, value: q }));
|
|
10952
10944
|
}
|
|
10953
|
-
const
|
|
10954
|
-
for (let G = 0; G <
|
|
10955
|
-
const S = [
|
|
10956
|
-
|
|
10945
|
+
const U = O[M++];
|
|
10946
|
+
for (let G = 0; G < U; G++) {
|
|
10947
|
+
const S = [O[M++], O[M++]], q = O[M++];
|
|
10948
|
+
H.push(Li(S, { type: rs.LOW, value: q }));
|
|
10957
10949
|
}
|
|
10958
|
-
return
|
|
10959
|
-
})(await
|
|
10950
|
+
return H;
|
|
10951
|
+
})(await Ph.getHighLowPointData(Zr(L, [L.buffer]), p, v, E ? Zr(E, [E.buffer]) : null, y, T, s, o, i, l, u, c, f, e, t)) };
|
|
10960
10952
|
}
|
|
10961
10953
|
const Mi = "high-low-label";
|
|
10962
10954
|
function Qi(a, e, t) {
|
|
@@ -10965,17 +10957,18 @@ function Qi(a, e, t) {
|
|
|
10965
10957
|
const Wt = { image: { type: "object", value: null }, image2: { type: "object", value: null }, imageSmoothing: { type: "number", value: 0 }, imageInterpolation: { type: "object", value: Ze.CUBIC }, imageWeight: { type: "number", value: 0 }, imageType: { type: "object", value: xe.SCALAR }, imageUnscale: { type: "array", value: null }, imageMinValue: { type: "object", value: null }, imageMaxValue: { type: "object", value: null }, bounds: { type: "array", value: [-180, -90, 180, 90], compare: !0 }, minZoom: { type: "object", value: null }, maxZoom: { type: "object", value: null }, radius: { type: "number", value: 0 }, unitFormat: { type: "object", value: null }, textFormatFunction: { type: "function", value: ll }, textFontFamily: { type: "object", value: Cs }, textSize: { type: "number", value: 12 }, textColor: { type: "color", value: Es }, textOutlineWidth: { type: "number", value: 1 }, textOutlineColor: { type: "color", value: ks }, palette: { type: "object", value: null } };
|
|
10966
10958
|
class Jn extends je {
|
|
10967
10959
|
renderLayers() {
|
|
10968
|
-
const { viewport: e } = this.context, { props: t,
|
|
10960
|
+
const { viewport: e } = this.context, { props: t, points: n, minValue: r, maxValue: s } = this.state;
|
|
10969
10961
|
if (!t || !n || typeof r != "number" || typeof s != "number") return [];
|
|
10970
10962
|
const { unitFormat: o, textFormatFunction: i, textFontFamily: l, textSize: u, textColor: c, textOutlineWidth: f, textOutlineColor: h } = he(t, Wt), { paletteScale: p } = this.state;
|
|
10971
10963
|
return [new In(this.getSubLayerProps({ id: "type", data: n, getPixelOffset: [0, -$a(e, 1.2 * u / 2)], getPosition: (v) => v.geometry.coordinates, getText: (v) => v.properties.type, getSize: 1.2 * u, getColor: (v) => p ? Wn(p(v.properties.value).rgba()) : c, getAngle: Ye(e, 0), outlineWidth: f, outlineColor: h, fontFamily: l, fontSettings: { sdf: !0 }, billboard: !1, extensions: [new Jr()], collisionEnabled: !0, collisionGroup: Mi, collisionTestProps: { sizeScale: 5 }, getCollisionPriority: (v) => Qi(v, r, s), parameters: { cullMode: "front", depthCompare: "always", ...this.props.parameters } })), new In(this.getSubLayerProps({ id: "value", data: n, getPixelOffset: [0, $a(e, 1.2 * u / 2)], getPosition: (v) => v.geometry.coordinates, getText: (v) => i(v.properties.value, o), getSize: u, getColor: (v) => p ? Wn(p(v.properties.value).rgba()) : c, getAngle: Ye(e, 0), outlineWidth: f, outlineColor: h, fontFamily: l, fontSettings: { sdf: !0 }, billboard: !1, extensions: [new Jr()], collisionEnabled: !0, collisionGroup: Mi, collisionTestProps: { sizeScale: 5 }, getCollisionPriority: (v) => Qi(v, r, s), parameters: { cullMode: "front", depthCompare: "always", ...this.props.parameters } }))];
|
|
10972
10964
|
}
|
|
10973
|
-
|
|
10974
|
-
|
|
10965
|
+
filterSubLayer(e) {
|
|
10966
|
+
const { viewport: t } = e, { minZoom: n, maxZoom: r } = he(this.props, Wt);
|
|
10967
|
+
return Bt(t, n, r);
|
|
10975
10968
|
}
|
|
10976
10969
|
updateState(e) {
|
|
10977
|
-
const { image: t, image2: n, imageSmoothing: r, imageInterpolation: s, imageWeight: o, imageType: i, imageUnscale: l, imageMinValue: u, imageMaxValue: c,
|
|
10978
|
-
super.updateState(e),
|
|
10970
|
+
const { image: t, image2: n, imageSmoothing: r, imageInterpolation: s, imageWeight: o, imageType: i, imageUnscale: l, imageMinValue: u, imageMaxValue: c, radius: f, unitFormat: h, textFormatFunction: p, textFontFamily: v, textSize: I, textColor: y, textOutlineWidth: T, textOutlineColor: L, palette: E, visible: C } = e.props;
|
|
10971
|
+
super.updateState(e), f && C ? (t === e.oldProps.image && n === e.oldProps.image2 && r === e.oldProps.imageSmoothing && s === e.oldProps.imageInterpolation && o === e.oldProps.imageWeight && i === e.oldProps.imageType && l === e.oldProps.imageUnscale && u === e.oldProps.imageMinValue && c === e.oldProps.imageMaxValue && f === e.oldProps.radius && C === e.oldProps.visible || this._updateFeatures(), E !== e.oldProps.palette && this._updatePalette(), h === e.oldProps.unitFormat && p === e.oldProps.textFormatFunction && v === e.oldProps.textFontFamily && I === e.oldProps.textSize && y === e.oldProps.textColor && T === e.oldProps.textOutlineWidth && L === e.oldProps.textOutlineColor || this._redrawVisibleFeatures(), this.setState({ props: e.props })) : this.setState({ points: void 0, minValue: void 0, maxValue: void 0 });
|
|
10979
10972
|
}
|
|
10980
10973
|
async _updateFeatures() {
|
|
10981
10974
|
const { image: e, image2: t, imageSmoothing: n, imageInterpolation: r, imageType: s, imageUnscale: o, imageMinValue: i, imageMaxValue: l, imageWeight: u, bounds: c, radius: f } = he(this.props, Wt);
|
|
@@ -10985,13 +10978,7 @@ class Jn extends je {
|
|
|
10985
10978
|
const p = { image: e, image2: t, imageSmoothing: n, imageInterpolation: r, imageWeight: u, imageType: s, imageUnscale: o, imageMinValue: i, imageMaxValue: l }, v = (await Nh(p, c, f)).features;
|
|
10986
10979
|
if (this.state.requestId !== h) return;
|
|
10987
10980
|
const I = v.map(((L) => L.properties.value)), y = Math.min(...I), T = Math.max(...I);
|
|
10988
|
-
this.setState({ points: v, minValue: y, maxValue: T })
|
|
10989
|
-
}
|
|
10990
|
-
_updateVisibleFeatures() {
|
|
10991
|
-
const { viewport: e } = this.context, { minZoom: t, maxZoom: n } = he(this.props, Wt), { points: r } = this.state;
|
|
10992
|
-
if (!r) return;
|
|
10993
|
-
let s;
|
|
10994
|
-
s = Bt(e, t, n) ? r : [], this.setState({ visiblePoints: s });
|
|
10981
|
+
this.setState({ points: v, minValue: y, maxValue: T });
|
|
10995
10982
|
}
|
|
10996
10983
|
_updatePalette() {
|
|
10997
10984
|
const { palette: e } = he(this.props, Wt);
|
|
@@ -11000,7 +10987,7 @@ class Jn extends je {
|
|
|
11000
10987
|
this.setState({ paletteScale: t }), this._redrawVisibleFeatures();
|
|
11001
10988
|
}
|
|
11002
10989
|
_redrawVisibleFeatures() {
|
|
11003
|
-
this.setState({
|
|
10990
|
+
this.setState({ points: Array.isArray(this.state.points) ? Array.from(this.state.points) : this.state.points });
|
|
11004
10991
|
}
|
|
11005
10992
|
}
|
|
11006
10993
|
Jn.layerName = "HighLowCompositeLayer", Jn.defaultProps = Wt;
|
|
@@ -11017,7 +11004,7 @@ class Di extends je {
|
|
|
11017
11004
|
}
|
|
11018
11005
|
}
|
|
11019
11006
|
Di.layerName = "HighLowLayer", Di.defaultProps = Uh;
|
|
11020
|
-
const Ee = { COLD: "COLD", WARM: "WARM", OCCLUDED: "OCCLUDED", STATIONARY: "STATIONARY" },
|
|
11007
|
+
const Ee = { COLD: "COLD", WARM: "WARM", OCCLUDED: "OCCLUDED", STATIONARY: "STATIONARY" }, Oi = { iconAtlas: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGoAAAAqCAYAAABbec77AAAFsmlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4KPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iWE1QIENvcmUgNS41LjAiPgogPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4KICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIgogICAgeG1sbnM6cGhvdG9zaG9wPSJodHRwOi8vbnMuYWRvYmUuY29tL3Bob3Rvc2hvcC8xLjAvIgogICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICAgeG1sbnM6ZXhpZj0iaHR0cDovL25zLmFkb2JlLmNvbS9leGlmLzEuMC8iCiAgICB4bWxuczp0aWZmPSJodHRwOi8vbnMuYWRvYmUuY29tL3RpZmYvMS4wLyIKICAgIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIgogICAgeG1sbnM6c3RFdnQ9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZUV2ZW50IyIKICAgeG1wOkNyZWF0ZURhdGU9IjIwMjMtMDMtMTBUMTQ6NDI6NTYrMDEwMCIKICAgeG1wOk1vZGlmeURhdGU9IjIwMjMtMDMtMjVUMDk6MDY6NTgrMDE6MDAiCiAgIHhtcDpNZXRhZGF0YURhdGU9IjIwMjMtMDMtMjVUMDk6MDY6NTgrMDE6MDAiCiAgIHBob3Rvc2hvcDpEYXRlQ3JlYXRlZD0iMjAyMy0wMy0xMFQxNDo0Mjo1NiswMTAwIgogICBwaG90b3Nob3A6Q29sb3JNb2RlPSIzIgogICBwaG90b3Nob3A6SUNDUHJvZmlsZT0ic1JHQiBJRUM2MTk2Ni0yLjEi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", iconMapping: { COLD: { x: 2, y: 2, width: 50, height: 38, anchorY: 35, mask: !0 }, WARM: { x: 54, y: 2, width: 50, height: 38, anchorY: 35, mask: !0 } } };
|
|
11021
11008
|
function Vh(a, e) {
|
|
11022
11009
|
for (let t = a.length - 1; t >= 0; t--) if (e.call(a, a[t], t, a)) return t;
|
|
11023
11010
|
return -1;
|
|
@@ -11025,7 +11012,7 @@ function Vh(a, e) {
|
|
|
11025
11012
|
const wn = { data: { type: "array", value: [] }, minZoom: { type: "object", value: null }, maxZoom: { type: "object", value: null }, getType: { type: "function", value: null }, getPath: { type: "function", value: null }, width: { type: "number", value: 2 }, coldColor: { type: "color", value: [0, 0, 255] }, warmColor: { type: "color", value: [255, 0, 0] }, occludedColor: { type: "color", value: [148, 0, 211] }, iconSize: { type: "number", value: 15 }, _debug: { type: "boolean", value: !1 } };
|
|
11026
11013
|
class zn extends je {
|
|
11027
11014
|
renderLayers() {
|
|
11028
|
-
const { viewport: e } = this.context, { props: t,
|
|
11015
|
+
const { viewport: e } = this.context, { props: t, frontLines: n, debugFrontPoints: r } = this.state;
|
|
11029
11016
|
if (!t || !n || !r) return [];
|
|
11030
11017
|
const { getType: s, getPath: o, width: i, coldColor: l, warmColor: u, occludedColor: c, iconSize: f, _debug: h } = he(t, wn);
|
|
11031
11018
|
if (!s || !o) return [];
|
|
@@ -11034,17 +11021,18 @@ class zn extends je {
|
|
|
11034
11021
|
const I = { [Ee.COLD]: l, [Ee.WARM]: u, [Ee.OCCLUDED]: c, [Ee.STATIONARY]: l };
|
|
11035
11022
|
return [new Qs(this.getSubLayerProps({ id: "path", data: n, getPath: (y) => [y.startPosition, ...y.icons.map(((T) => T.position)), y.endPosition], getColor: (y) => I[s(y.d)], getWidth: i, widthUnits: "pixels" })), new Qs(this.getSubLayerProps({ id: "path-stationary-warm", data: n.filter(((y) => s(y.d) === Ee.STATIONARY)), getPath: (y) => [y.startPosition, ...y.icons.map(((T) => T.position)), y.endPosition], getColor: u, getWidth: i, widthUnits: "pixels", extensions: [new Tl({ dash: !0, highPrecisionDash: !0 })], getDashArray: [45, 45] })), new Ki(this.getSubLayerProps({ id: "icon", data: n.flatMap(((y) => y.icons)), getPosition: (y) => y.position, getIcon: (y) => s(y.d) === Ee.OCCLUDED || s(y.d) === Ee.STATIONARY ? y.alternate ? Ee.COLD : Ee.WARM : s(y.d), getSize: f, getColor: (y) => s(y.d) === Ee.STATIONARY ? y.alternate ? I[Ee.COLD] : I[Ee.WARM] : I[s(y.d)], getAngle: (y) => s(y.d) === Ee.STATIONARY ? y.alternate ? Ye(e, y.direction) : Ye(e, y.direction + 180) : Ye(e, y.direction), iconAtlas: v, iconMapping: p.iconMapping, sizeBasis: "height", billboard: !1, extensions: [new Jr()], collisionEnabled: !0, collisionGroup: "front-icon", collisionTestProps: { sizeScale: 5 }, getCollisionPriority: (y) => y.priority })), ...h ? [new In(this.getSubLayerProps({ id: "text", data: r, getPosition: (y) => y.position, getText: (y) => `${y.index}`, getSize: 12, getColor: Es, getAngle: Ye(e, 0), outlineWidth: 1, outlineColor: ks, fontFamily: Cs, fontSettings: { sdf: !0 }, billboard: !1 }))] : []];
|
|
11036
11023
|
}
|
|
11037
|
-
|
|
11038
|
-
|
|
11024
|
+
filterSubLayer(e) {
|
|
11025
|
+
const { viewport: t } = e, { minZoom: n, maxZoom: r } = he(this.props, wn);
|
|
11026
|
+
return Bt(t, n, r);
|
|
11039
11027
|
}
|
|
11040
11028
|
updateState(e) {
|
|
11041
|
-
const { data: t, getType: n, getPath: r
|
|
11042
|
-
super.updateState(e), t && n && r ? (this.state.iconStyle || this._updateIconStyle(), t === e.oldProps.data && r === e.oldProps.getPath || this._updateFeatures(),
|
|
11029
|
+
const { data: t, getType: n, getPath: r } = e.props;
|
|
11030
|
+
super.updateState(e), t && n && r ? (this.state.iconStyle || this._updateIconStyle(), t === e.oldProps.data && r === e.oldProps.getPath || this._updateFeatures(), this.setState({ props: e.props })) : this.setState({ features: void 0, debugFeatures: void 0 });
|
|
11043
11031
|
}
|
|
11044
11032
|
async _updateIconStyle() {
|
|
11045
11033
|
const { device: e } = this.context;
|
|
11046
|
-
this.setState({ iconStyle:
|
|
11047
|
-
const t = nt(e, await cl(
|
|
11034
|
+
this.setState({ iconStyle: Oi });
|
|
11035
|
+
const t = nt(e, await cl(Oi.iconAtlas));
|
|
11048
11036
|
this.setState({ iconAtlasTexture: t });
|
|
11049
11037
|
}
|
|
11050
11038
|
_updateFeatures() {
|
|
@@ -11059,31 +11047,25 @@ class zn extends je {
|
|
|
11059
11047
|
if (h > 1 && I % 3 == 0) continue;
|
|
11060
11048
|
const y = I * p, T = Vh(u, ((G) => G <= y));
|
|
11061
11049
|
if (T === -1 || T === l.length - 1) throw new Error("Invalid state");
|
|
11062
|
-
const L = T + 1, E = l[T], C = l[L],
|
|
11063
|
-
c.push({ distance: y, position:
|
|
11050
|
+
const L = T + 1, E = l[T], C = l[L], O = u[T], M = hc(E, C), H = _h(E, y - O, M), z = 90 - M, U = 100 - h;
|
|
11051
|
+
c.push({ distance: y, position: H, direction: z, priority: U });
|
|
11064
11052
|
}
|
|
11065
11053
|
}
|
|
11066
11054
|
c = c.sort(((h, p) => h.distance - p.distance));
|
|
11067
11055
|
const f = c.map(((h, p) => ({ d: o, ...h, alternate: p % 2 == 0 })));
|
|
11068
11056
|
return { d: o, startPosition: i[0], endPosition: i[i.length - 1], icons: f };
|
|
11069
11057
|
})(s, t(s)))), r = e.flatMap(((s) => t(s).map(((o, i) => ({ d: s, position: o, index: i })))));
|
|
11070
|
-
this.setState({ frontLines: n, debugFrontPoints: r })
|
|
11071
|
-
}
|
|
11072
|
-
_updateVisibleFeatures() {
|
|
11073
|
-
const { viewport: e } = this.context, { minZoom: t, maxZoom: n } = he(this.props, wn), { frontLines: r, debugFrontPoints: s } = this.state;
|
|
11074
|
-
if (!r || !s) return;
|
|
11075
|
-
let o, i;
|
|
11076
|
-
Bt(e, t, n) ? (o = r, i = s) : (o = [], i = []), this.setState({ visibleFrontLines: o, visibleDebugFrontPoints: i });
|
|
11058
|
+
this.setState({ frontLines: n, debugFrontPoints: r });
|
|
11077
11059
|
}
|
|
11078
11060
|
}
|
|
11079
11061
|
zn.layerName = "FrontCompositeLayer", zn.defaultProps = wn;
|
|
11080
11062
|
const Fh = { ...zn.defaultProps };
|
|
11081
|
-
class
|
|
11063
|
+
class Pi extends je {
|
|
11082
11064
|
renderLayers() {
|
|
11083
11065
|
return [new zn(this.props, this.getSubLayerProps({ id: "composite" }))];
|
|
11084
11066
|
}
|
|
11085
11067
|
}
|
|
11086
|
-
|
|
11068
|
+
Pi.layerName = "FrontLayer", Pi.defaultProps = Fh;
|
|
11087
11069
|
const Rh = /* @__PURE__ */ new Map(), Wh = /* @__PURE__ */ new Map();
|
|
11088
11070
|
function qh(a, e = 0) {
|
|
11089
11071
|
let t;
|
|
@@ -11129,23 +11111,27 @@ function qh(a, e = 0) {
|
|
|
11129
11111
|
const ss = { VALUE: "VALUE", ARROW: "ARROW", WIND_BARB: "WIND_BARB" }, Ni = /* @__PURE__ */ new Map([[ss.ARROW, { iconAtlas: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGQAAABkCAYAAABw4pVUAAAFtGlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4KPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iWE1QIENvcmUgNS41LjAiPgogPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4KICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICAgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIgogICAgeG1sbnM6cGhvdG9zaG9wPSJodHRwOi8vbnMuYWRvYmUuY29tL3Bob3Rvc2hvcC8xLjAvIgogICAgeG1sbnM6ZXhpZj0iaHR0cDovL25zLmFkb2JlLmNvbS9leGlmLzEuMC8iCiAgICB4bWxuczp0aWZmPSJodHRwOi8vbnMuYWRvYmUuY29tL3RpZmYvMS4wLyIKICAgIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIgogICAgeG1sbnM6c3RFdnQ9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZUV2ZW50IyIKICAgeG1wOkNyZWF0ZURhdGU9IjIwMjMtMDMtMTBUMTQ6NDE6MjYrMDEwMCIKICAgeG1wOk1vZGlmeURhdGU9IjIwMjQtMDItMTFUMjM6Mzc6NTErMDE6MDAiCiAgIHhtcDpNZXRhZGF0YURhdGU9IjIwMjQtMDItMTFUMjM6Mzc6NTErMDE6MDAiCiAgIHBob3Rvc2hvcDpEYXRlQ3JlYXRlZD0iMjAyMy0wMy0xMFQxNDo0MToyNiswMTAwIgogICBwaG90b3Nob3A6Q29sb3JNb2RlPSIzIgogICBwaG90b3Nob3A6SUNDUHJvZmlsZT0ic1JHQiBJRUM2MTk2Ni0yLjEi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", iconMapping: { 0: { x: 0, y: 0, width: 100, height: 100, mask: !0 } } }], [ss.WIND_BARB, { iconAtlas: "data:image/png;base64,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YOCvs1WZAAECBAgQIECAAAECBAhsJmDg34zehQkQIECAAAECBAgQIECAQJ2Agb/OVmUCBAgQIECAAAECBAgQILCZgIF/M3oXJkCAAAECBAgQIECAAAECdQIG/jpblQkQIECAAAECBAgQIECAwGYCBv7N6F2YAAECBAgQIECAAAECBAjUCRj462xVJkCAAAECBAgQIECAAAECmwkY+Dejd2ECBAgQIECAAAECBAgQIFAnYOCvs1WZAAECBAgQIECAAAECBAhsJmDg34zehQkQIECAAAECBAgQIECAQJ2Agb/OVmUCBAgQIECAAAECBAgQILCZgIF/M3oXJkCAAAECBAgQIECAAAECdQIG/jpblQkQIECAAAECBAgQIECAwGYCBv7N6F2YAAECBAgQIECAAAECBAjUCRj462xVJkCAAAECBAgQIECAAAECmwkY+Dejd2ECBAgQIECAAAECBAgQIFAnYOCvs1WZAAECBAgQIECAAAECBAhsJmDg34zehQkQIECAAAECBAgQIECAQJ2Agb/OVmUCBAgQIECAAAECBAgQILCZgIF/M3oXJkCAAAECBAgQIECAAAECdQIG/jpblQkQIECAAAECBAgQIECAwGYCBv7N6F2YAAECBAgQIECAAAECBAjUCRj462xVJkCAAAECBAgQIECAAAECmwkY+Dejd2ECBAgQIECAAAECBAgQIFAnYOCvs1WZAAECBAgQIECAAAECBAhsJmDg34zehQkQIECAAAECBAgQIECAQJ2Agb/OVmUCBAgQIECAAAECBAgQILCZgIF/M3oXJkCAAAECBAgQIECAAAECdQIG/jpblQkQIECAAAECBAgQIECAwGYCBv7N6F2YAAECBAgQIECAAAECBAjUCRj462xVJkCAAAECBAgQIECAAAECmwkY+Dejd2ECBAgQIECAAAECBAgQIFAnYOCvs1WZAAECBAgQIECAAAECBAhsJmDg34zehQkQIECAAAECBAgQIECAQJ2Agb/OVmUCBAgQIECAAAECBAgQILCZgIF/M3oXJkCAAAECBAgQIECAAAECdQIG/jpblQkQIECAAAECBAgQIECAwGYCBv7N6F2YAAECBAgQIECAAAECBAjUCRj462xVJkCAAAECBAgQIECAAAECmwkY+Dejd2ECBAgQIECAAAECBAgQIFAnYOCvs1WZAAECBAgQIECAAAECBAhsJmDg34zehQkQIECAAAECBAgQIECAQJ2Agb/OVmUCBAgQIECAAAECBAgQILCZgIF/M3oXJkCAAAECBAgQIECAAAECdQIG/jpblQkQIECAAAECBAgQIECAwGYCBv7N6F2YAAECBAgQIECAAAECBAjUCRj462xVJkCAAAECBAgQIECAAAECmwkY+Dejd2ECBAgQIECAAAECBAgQIFAnYOCvs1WZAAECBAgQIECAAAECBAhsJmDg34zehQkQIECAAAECBAgQIECAQJ2Agb/OVmUCBAgQIECAAAECBAgQILCZgIF/M3oXJkCAAAECBAgQIECAAAECdQIG/jpblQkQIECAAAECBAgQIECAwGYCBv7N6F2YAAECBAgQIECAAAECBAjUCRj462xVJkCAAAECBAgQIECAAAECmwkY+Dejd2ECBAgQIECAAAECBAgQIFAnYOCvs1WZAAECBAgQIECAAAECBAhsJmDg34zehQkQIECAAAECBAgQIECAQJ2Agb/OVmUCBAgQIECAAAECBAgQILCZgIF/M3oXJkCAAAECBAgQIECAAAECdQIG/jpblQkQIECAAAECBAgQIECAwGYCBv7N6F2YAAECBAgQIECAAAECBAjUCRj462xVJkCAAAECBAgQIECAAAECmwkY+Dejd2ECBAgQIECAAAECBAgQIFAnYOCvs1WZAAECBAgQIECAAAECBAhsJmDg34zehQkQIECAAAECBAgQIECAQJ2Agb/OVmUCBAgQIECAAAECBAgQILCZgIF/M3oXJkCAAAECBAgQIECAAAECdQIG/jpblQkQIECAAAECBAgQIECAwGYCBv7N6F2YAAECBAgQIECAAAECBAjUCRj462xVJkCAAAECBAgQIECAAAECmwkY+Dejd2ECBAgQIECAAAECBAgQIFAnYODPs/2hiHgur9ziSk9GxMuLX+UFownI6Wgdb3O/ctpm30ZbtZyO1vE29yunbfZttFXLaWHHDfx5uFsFdRryn46It/O2olLHAnLacXM72pqcdtTMjrcipx03t6OtyWlHzex4K3Ja2FwDfx7u2kGdBvxp0Heqn9fDESrJ6Qhdbn+Pctp+D0fYgZyO0OX29yin7fdwhB3IaWGXDfx5uGsG1al+Xt9GqySno3W8zf3KaZt9G23Vcjpax9vcr5y22bfRVi2nhR038OfhrhFUp/p5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AQIECBBIEDDwJyAa+PMQVSoXODRInbqoU/3ylrjAAQEDv1gQIECAAAECBBIEDPwJiAb+PESVygXmDvxO9ctb4QInBAz84kGAAAECBAgQSBAw8CcgGvjzEFUqF5gz8DvVL2+DC5wRMPCLCAECBAgQIEAgQcDAn4Bo4M9DVKlc4NTA71S/nN8FZgoY+GdCeRoBAgQIECBA4JSAgT8vH96g5lmqVCdwbOB3ql9nrvJyAffT5WZeQYAAAQIECBD4gICBPy8U3qDmWapUJ3Aop69GxGN1l1SZwGIB99PFZF5AgAABAgQIEPiggIE/LxXeoOZZqlQnIKd1tirnCchpnqVKBAgQIECAwMACBv685nuDmmepUp2AnNbZqpwnIKd5lioRIECAAAECAwsY+POa7w1qnqVKdQJyWmercp6AnOZZqkSAAAECBAgMLGDgz2u+N6h5lirVCchpna3KeQJymmepEgECBAgQIDCwgIE/r/neoOZZqlQnIKd1tirnCchpnqVKBAgQIECAwMACBv685nuDmmepUp2AnNbZqpwnIKd5lioRIECAAAECAwsY+POa7w1qnqVKdQJyWmercp6AnOZZqkSAAAECBAgMLGDgz2u+N6h5lirVCchpna3KeQJymmepEgECBAgQIDCwgIE/r/neoOZZqlQnIKd1tirnCchpnqVKBAgQIECAwMACBv685nuDmmepUp2AnNbZqpwnIKd5lioRIECAAAECAwsY+POa7w1qnqVKdQJyWmercp6AnOZZqkSAAAECBAgMLGDgz2u+N6h5lirVCchpna3KeQJymmepEgECBAgQIDCwgIE/r/neoOZZqlQnIKd1tirnCchpnqVKBAgQIECAwMACBv685nuDmmepUp2AnNbZqpwnIKd5lioRIECAAAECAwsY+Aduvq0TIECAAAECBAgQIECAQL8CBv5+e2tnBAgQIECAAAECBAgQIDCwgIF/4ObbOgECBAgQIECAAAECBAj0K2Dg77e3dkaAAAECBAgQIECAAAECAwsY+Aduvq0TIECAAAECBAgQIECAQL8CBv5+e2tnBAgQIECAAAECBAgQIDCwgIF/4ObbOgECBAgQIECAAAECBAj0K2Dg77e3dkaAAAECBAgQIECAAAECAwsY+Aduvq0TIECAAAECBAgQIECAQL8CBv5+e2tnBAgQIECAAAECBAgQIDCwgIF/4ObbOgECBAgQIECAAAECBAj0K2Dg77e3dkaAAAECBAgQIECAAAECAwsY+Aduvq0TIECAAAECBAgQIECAQL8CBv5+e2tnBAgQIECAAAECBAgQIDCwgIF/4ObbOgECBAgQIECAAAECBAj0K2Dg77e3dkaAAAECBAgQIECAAAECAwsY+Aduvq0TIECAAAECBAgQIECAQL8CBv5+e2tnBAgQIECAAAECBAgQIDCwgIF/4ObbOgECBAgQIECAAAECBAj0K2Dg77e3dkaAAAECBAgQIECAAAECAwsY+Aduvq0TIECAAAECBAgQIECAQL8CBv5+e2tnBAgQIECAAAECBAgQIDCwgIF/4ObbOgECBAgQIECAAAECBAj0K2Dg77e3dkaAAAECBAgQIECAAAECAwsY+Aduvq0TIECAAAECBAgQIECAQL8CBv5+e2tnBAgQIECAAAECBAgQIPD/t1/HBAAAAAjC+re2hyyC8yIsIPjD55tOgAABAgQIECBAgAABAr8Cgv/3W8sIECBAgAABAgQIECBAICwg+MPnm06AAAECBAgQIECAAAECvwKC//dbywgQIECAAAECBAgQIEAgLCD4w+ebToAAAQIECBAgQIAAAQK/AoL/91vLCBAgQIAAAQIECBAgQCAsIPjD55tOgAABAgQIECBAgAABAr8Cgv/3W8sIECBAgAABAgQIECBAICwg+MPnm06AAAECBAgQIECAAAECvwKC//dbywgQIECAAAECBAgQIEAgLCD4w+ebToAAAQIECBAgQIAAAQK/AgOYR34g/YMI8gAAAABJRU5ErkJggg==", iconMapping: { 0: { x: 0, y: 0, width: 170, height: 170, anchorX: 85, anchorY: 133, mask: !0 }, 1: { x: 170, y: 0, width: 170, height: 170, anchorX: 85, anchorY: 133, mask: !0 }, 2: { x: 340, y: 0, width: 170, height: 170, anchorX: 85, anchorY: 133, mask: !0 }, 3: { x: 510, y: 0, width: 170, height: 170, anchorX: 85, anchorY: 133, mask: !0 }, 4: { x: 680, y: 0, width: 170, height: 170, anchorX: 85, anchorY: 133, mask: !0 }, 5: { x: 850, y: 0, width: 170, height: 170, anchorX: 85, anchorY: 133, mask: !0 }, 6: { x: 0, y: 170, width: 170, height: 170, anchorX: 85, anchorY: 133, mask: !0 }, 7: { x: 170, y: 170, width: 170, height: 170, anchorX: 85, anchorY: 133, mask: !0 }, 8: { x: 340, y: 170, width: 170, height: 170, anchorX: 85, anchorY: 133, mask: !0 }, 9: { x: 510, y: 170, width: 170, height: 170, anchorX: 85, anchorY: 133, mask: !0 }, 10: { x: 680, y: 170, width: 170, height: 170, anchorX: 85, anchorY: 133, mask: !0 }, 11: { x: 850, y: 170, width: 170, height: 170, anchorX: 85, anchorY: 133, mask: !0 }, 12: { x: 0, y: 340, width: 170, height: 170, anchorX: 85, anchorY: 133, mask: !0 }, 13: { x: 170, y: 340, width: 170, height: 170, anchorX: 85, anchorY: 133, mask: !0 }, 14: { x: 340, y: 340, width: 170, height: 170, anchorX: 85, anchorY: 133, mask: !0 }, 15: { x: 510, y: 340, width: 170, height: 170, anchorX: 85, anchorY: 133, mask: !0 }, 16: { x: 680, y: 340, width: 170, height: 170, anchorX: 85, anchorY: 133, mask: !0 }, 17: { x: 850, y: 340, width: 170, height: 170, anchorX: 85, anchorY: 133, mask: !0 }, 18: { x: 0, y: 510, width: 170, height: 170, anchorX: 85, anchorY: 133, mask: !0 }, 19: { x: 170, y: 510, width: 170, height: 170, anchorX: 85, anchorY: 133, mask: !0 }, 20: { x: 340, y: 510, width: 170, height: 170, anchorX: 85, anchorY: 133, mask: !0 } }, iconBounds: [0, 51.444] }]]), it = { image: { type: "object", value: null }, image2: { type: "object", value: null }, imageSmoothing: { type: "number", value: 0 }, imageInterpolation: { type: "object", value: Ze.CUBIC }, imageWeight: { type: "number", value: 0 }, imageType: { type: "object", value: xe.SCALAR }, imageUnscale: { type: "array", value: null }, imageMinValue: { type: "object", value: null }, imageMaxValue: { type: "object", value: null }, bounds: { type: "array", value: [-180, -90, 180, 90], compare: !0 }, minZoom: { type: "object", value: null }, maxZoom: { type: "object", value: null }, style: { type: "object", value: ss.VALUE }, density: { type: "number", value: 0 }, unitFormat: { type: "object", value: null }, textFormatFunction: { type: "function", value: ll }, textFontFamily: { type: "object", value: Cs }, textSize: { type: "number", value: 12 }, textColor: { type: "color", value: Es }, textOutlineWidth: { type: "number", value: 1 }, textOutlineColor: { type: "color", value: ks }, iconBounds: { type: "array", value: null }, iconSize: { type: "object", value: 40 }, iconColor: { type: "color", value: oh }, palette: { type: "object", value: null } };
|
|
11130
11112
|
class Hn extends je {
|
|
11131
11113
|
renderLayers() {
|
|
11132
|
-
const { viewport: e } = this.context, { props: t,
|
|
11114
|
+
const { viewport: e } = this.context, { props: t, points: n } = this.state;
|
|
11133
11115
|
if (!t || !n) return [];
|
|
11134
11116
|
const { style: r, unitFormat: s, textFormatFunction: o, textFontFamily: i, textSize: l, textColor: u, textOutlineWidth: c, textOutlineColor: f, iconSize: h, iconColor: p } = he(t, it), { paletteScale: v } = this.state;
|
|
11135
11117
|
if (Ni.has(r)) {
|
|
11136
11118
|
const { iconStyle: I, iconAtlasTexture: y } = this.state;
|
|
11137
11119
|
if (!I || !y) return [];
|
|
11138
|
-
const T = Object.keys(I.iconMapping).length, L = t.iconBounds ?? I.iconBounds ?? [0, 0], E = L[1] - L[0], C = (M) => (M - L[0]) / E,
|
|
11139
|
-
return [new Ki(this.getSubLayerProps({ id: "icon", data: n, getPosition: (M) => M.geometry.coordinates, getIcon: (M) => `${Math.min(Math.max(Math.floor(C(M.properties.value) * T), 0), T - 1)}`, getSize: (M) => Array.isArray(h) ? h[0] + C(M.properties.value) *
|
|
11120
|
+
const T = Object.keys(I.iconMapping).length, L = t.iconBounds ?? I.iconBounds ?? [0, 0], E = L[1] - L[0], C = (M) => (M - L[0]) / E, O = Array.isArray(h) ? h[1] - h[0] : 0;
|
|
11121
|
+
return [new Ki(this.getSubLayerProps({ id: "icon", data: n, getPosition: (M) => M.geometry.coordinates, getIcon: (M) => `${Math.min(Math.max(Math.floor(C(M.properties.value) * T), 0), T - 1)}`, getSize: (M) => Array.isArray(h) ? h[0] + C(M.properties.value) * O : h, getColor: (M) => v ? Wn(v(M.properties.value).rgba()) : p, getAngle: (M) => Ye(e, M.properties.direction ? 360 - M.properties.direction : 0), iconAtlas: y, iconMapping: I.iconMapping, sizeBasis: "height", billboard: !1, parameters: { cullMode: "front", depthCompare: "always", ...this.props.parameters } }))];
|
|
11140
11122
|
}
|
|
11141
11123
|
return [new In(this.getSubLayerProps({ id: "text", data: n, getPosition: (I) => I.geometry.coordinates, getText: (I) => o(I.properties.value, s), getSize: l, getColor: (I) => v ? Wn(v(I.properties.value).rgba()) : u, getAngle: Ye(e, 0), outlineWidth: c, outlineColor: f, fontFamily: i, fontSettings: { sdf: !0 }, billboard: !1, parameters: { cullMode: "front", depthCompare: "always", ...this.props.parameters } }))];
|
|
11142
11124
|
}
|
|
11125
|
+
filterSubLayer(e) {
|
|
11126
|
+
const { viewport: t } = e, { minZoom: n, maxZoom: r } = he(this.props, it);
|
|
11127
|
+
return Bt(t, n, r);
|
|
11128
|
+
}
|
|
11143
11129
|
shouldUpdateState(e) {
|
|
11144
11130
|
return super.shouldUpdateState(e) || e.changeFlags.viewportChanged;
|
|
11145
11131
|
}
|
|
11146
11132
|
updateState(e) {
|
|
11147
|
-
const { image: t, image2: n, imageSmoothing: r, imageInterpolation: s, imageWeight: o, imageType: i, imageUnscale: l, imageMinValue: u, imageMaxValue: c,
|
|
11148
|
-
super.updateState(e),
|
|
11133
|
+
const { image: t, image2: n, imageSmoothing: r, imageInterpolation: s, imageWeight: o, imageType: i, imageUnscale: l, imageMinValue: u, imageMaxValue: c, style: f, density: h, unitFormat: p, textFormatFunction: v, textFontFamily: I, textSize: y, textColor: T, textOutlineWidth: L, textOutlineColor: E, iconSize: C, iconColor: O, palette: M, visible: H } = e.props;
|
|
11134
|
+
super.updateState(e), H ? (this.state.iconStyle && f === e.oldProps.style || this._updateIconStyle(), (h !== e.oldProps.density || e.changeFlags.viewportChanged) && this._updatePositions(), t === e.oldProps.image && n === e.oldProps.image2 && r === e.oldProps.imageSmoothing && s === e.oldProps.imageInterpolation && o === e.oldProps.imageWeight && i === e.oldProps.imageType && l === e.oldProps.imageUnscale && u === e.oldProps.imageMinValue && c === e.oldProps.imageMaxValue && H === e.oldProps.visible || this._updateFeatures(), M !== e.oldProps.palette && this._updatePalette(), p === e.oldProps.unitFormat && v === e.oldProps.textFormatFunction && I === e.oldProps.textFontFamily && y === e.oldProps.textSize && T === e.oldProps.textColor && L === e.oldProps.textOutlineWidth && E === e.oldProps.textOutlineColor && C === e.oldProps.iconSize && O === e.oldProps.iconColor || this._redrawVisibleFeatures(), this.setState({ props: e.props })) : this.setState({ points: void 0 });
|
|
11149
11135
|
}
|
|
11150
11136
|
async _updateIconStyle() {
|
|
11151
11137
|
const { device: e } = this.context, { style: t } = he(this.props, it), n = Ni.get(t);
|
|
@@ -11162,13 +11148,7 @@ class Hn extends je {
|
|
|
11162
11148
|
const { image: e, image2: t, imageSmoothing: n, imageInterpolation: r, imageWeight: s, imageType: o, imageUnscale: i, imageMinValue: l, imageMaxValue: u, bounds: c } = he(this.props, it), { positions: f } = this.state;
|
|
11163
11149
|
if (!e || !f) return;
|
|
11164
11150
|
const h = vh({ image: e, image2: t, imageSmoothing: n, imageInterpolation: r, imageWeight: s, imageType: o, imageUnscale: i, imageMinValue: l, imageMaxValue: u }, c, f).features.filter(((p) => !isNaN(p.properties.value)));
|
|
11165
|
-
this.setState({ points: h })
|
|
11166
|
-
}
|
|
11167
|
-
_updateVisibleFeatures() {
|
|
11168
|
-
const { viewport: e } = this.context, { minZoom: t, maxZoom: n } = he(this.props, it), { points: r } = this.state;
|
|
11169
|
-
if (!r) return;
|
|
11170
|
-
let s;
|
|
11171
|
-
s = Bt(e, t, n) ? r : [], this.setState({ visiblePoints: s });
|
|
11151
|
+
this.setState({ points: h });
|
|
11172
11152
|
}
|
|
11173
11153
|
_updatePalette() {
|
|
11174
11154
|
const { palette: e } = he(this.props, it);
|
|
@@ -11177,7 +11157,7 @@ class Hn extends je {
|
|
|
11177
11157
|
this.setState({ paletteScale: t }), this._redrawVisibleFeatures();
|
|
11178
11158
|
}
|
|
11179
11159
|
_redrawVisibleFeatures() {
|
|
11180
|
-
this.setState({
|
|
11160
|
+
this.setState({ points: Array.isArray(this.state.points) ? Array.from(this.state.points) : this.state.points });
|
|
11181
11161
|
}
|
|
11182
11162
|
}
|
|
11183
11163
|
Hn.layerName = "GridCompositeLayer", Hn.defaultProps = it;
|
|
@@ -11246,16 +11226,16 @@ vec4 AG(sampler2D AH,vec2 AI,vec2 AJ,vec2 AK){vec2 uv=(AJ+AK+0.5)/AI;return text
|
|
|
11246
11226
|
_runTransformFeedback() {
|
|
11247
11227
|
const { initialized: e } = this.state;
|
|
11248
11228
|
if (!e) return;
|
|
11249
|
-
const { device: t, viewport: n, timeline: r } = this.context, { imageTexture: s, imageTexture2: o, imageSmoothing: i, imageInterpolation: l, imageWeight: u, imageType: c, imageUnscale: f, imageMinValue: h, imageMaxValue: p, bounds: v, color: I, numParticles: y, maxAge: T, speedFactor: L } = he(this.props, qt), { paletteTexture: E, paletteBounds: C, numAgedInstances:
|
|
11250
|
-
if (!(s && typeof
|
|
11229
|
+
const { device: t, viewport: n, timeline: r } = this.context, { imageTexture: s, imageTexture2: o, imageSmoothing: i, imageInterpolation: l, imageWeight: u, imageType: c, imageUnscale: f, imageMinValue: h, imageMaxValue: p, bounds: v, color: I, numParticles: y, maxAge: T, speedFactor: L } = he(this.props, qt), { paletteTexture: E, paletteBounds: C, numAgedInstances: O, sourcePositions: M, targetPositions: H, sourceColors: z, targetColors: U, transform: G, previousViewportZoom: S, previousTime: q } = this.state;
|
|
11230
|
+
if (!(s && typeof O == "number" && M && H && z && U && G)) return;
|
|
11251
11231
|
const Y = r.getTime();
|
|
11252
11232
|
if (typeof q == "number" && Y < q + 1e3 / 30) return;
|
|
11253
11233
|
const j = We(n), se = We(n) ? Ts(n) : void 0, ne = We(n) ? dl(n) : void 0, ye = hl(n) ? pl(n) : void 0, Ge = 2 ** (4 * (typeof S == "number" ? S - Zt(n) : 0)), le = L / 2 ** (Zt(n) + 7);
|
|
11254
11234
|
G.model.shaderInputs.setProps({ [Et.name]: { viewportGlobe: j, bounds: v, _imageCoordinateSystem: jn.LNGLAT }, [kt.name]: { imageTexture: s ?? Ie(t), imageTexture2: o ?? Ie(t), imageSmoothing: i, imageInterpolation: l, imageWeight: u, imageType: c, imageUnscale: f, imageMinValue: h, imageMaxValue: p }, [Tt.name]: { paletteTexture: E ?? Ie(t), paletteBounds: C, paletteColor: I }, [$i.name]: { viewportGlobe: j, viewportGlobeCenter: se, viewportGlobeRadius: ne, viewportBounds: ye, viewportZoomChangeFactor: Ge, numParticles: y, maxAge: T, speedFactor: le, time: Y, seed: Math.random() } }), G.run({ clearColor: !1, clearDepth: !1, clearStencil: !1, depthReadOnly: !0, stencilReadOnly: !0 });
|
|
11255
|
-
const
|
|
11256
|
-
|
|
11257
|
-
const ht =
|
|
11258
|
-
t.submit(ht),
|
|
11235
|
+
const Pe = t.createCommandEncoder();
|
|
11236
|
+
Pe.copyBufferToBuffer({ sourceBuffer: M, sourceOffset: 0, destinationBuffer: H, destinationOffset: 4 * y * 3, size: 4 * O * 3 }), Pe.copyBufferToBuffer({ sourceBuffer: z, sourceOffset: 0, destinationBuffer: U, destinationOffset: 4 * y * 4, size: 4 * O * 4 });
|
|
11237
|
+
const ht = Pe.finish();
|
|
11238
|
+
t.submit(ht), Pe.destroy(), this._swapTransformFeedback(), this.state.previousViewportZoom = Zt(n), this.state.previousTime = Y;
|
|
11259
11239
|
}
|
|
11260
11240
|
_swapTransformFeedback() {
|
|
11261
11241
|
const { sourcePositions: e, targetPositions: t, sourceColors: n, targetColors: r, transform: s } = this.state;
|