@liquidcars/atlas 0.1.40 → 0.1.41
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/liquidcars-atlas.js +404 -329
- package/dist/liquidcars-atlas.js.map +1 -1
- package/package.json +1 -1
- package/src/liquidcars-atlas.js +89 -1
package/dist/liquidcars-atlas.js
CHANGED
|
@@ -42,31 +42,31 @@ function M(e, t) {
|
|
|
42
42
|
function N(e, t, n, r, i) {
|
|
43
43
|
return r + (e - t) * (i - r) / (n - t);
|
|
44
44
|
}
|
|
45
|
-
function
|
|
45
|
+
function ee(e, t, n) {
|
|
46
46
|
return e === t ? 0 : (n - e) / (t - e);
|
|
47
47
|
}
|
|
48
|
-
function
|
|
48
|
+
function P(e, t, n) {
|
|
49
49
|
return (1 - n) * e + n * t;
|
|
50
50
|
}
|
|
51
|
-
function
|
|
52
|
-
return
|
|
51
|
+
function F(e, t, n, r) {
|
|
52
|
+
return P(e, t, 1 - Math.exp(-n * r));
|
|
53
53
|
}
|
|
54
|
-
function
|
|
54
|
+
function te(e, t = 1) {
|
|
55
55
|
return t - Math.abs(M(e, t * 2) - t);
|
|
56
56
|
}
|
|
57
|
-
function
|
|
57
|
+
function ne(e, t, n) {
|
|
58
58
|
return e <= t ? 0 : e >= n ? 1 : (e = (e - t) / (n - t), e * e * (3 - 2 * e));
|
|
59
59
|
}
|
|
60
|
-
function
|
|
60
|
+
function I(e, t, n) {
|
|
61
61
|
return e <= t ? 0 : e >= n ? 1 : (e = (e - t) / (n - t), e * e * e * (e * (e * 6 - 15) + 10));
|
|
62
62
|
}
|
|
63
|
-
function
|
|
63
|
+
function re(e, t) {
|
|
64
64
|
return e + Math.floor(Math.random() * (t - e + 1));
|
|
65
65
|
}
|
|
66
|
-
function
|
|
66
|
+
function ie(e, t) {
|
|
67
67
|
return e + Math.random() * (t - e);
|
|
68
68
|
}
|
|
69
|
-
function
|
|
69
|
+
function L(e) {
|
|
70
70
|
return e * (.5 - Math.random());
|
|
71
71
|
}
|
|
72
72
|
function R(e) {
|
|
@@ -113,7 +113,7 @@ function le(e, t, n, r, i) {
|
|
|
113
113
|
default: console.warn("THREE.MathUtils: .setQuaternionFromProperEuler() encountered an unknown order: " + i);
|
|
114
114
|
}
|
|
115
115
|
}
|
|
116
|
-
function
|
|
116
|
+
function ue(e, t) {
|
|
117
117
|
switch (t.constructor) {
|
|
118
118
|
case Float32Array: return e;
|
|
119
119
|
case Uint32Array: return e / 4294967295;
|
|
@@ -125,7 +125,7 @@ function B(e, t) {
|
|
|
125
125
|
default: throw Error("Invalid component type.");
|
|
126
126
|
}
|
|
127
127
|
}
|
|
128
|
-
function
|
|
128
|
+
function B(e, t) {
|
|
129
129
|
switch (t.constructor) {
|
|
130
130
|
case Float32Array: return e;
|
|
131
131
|
case Uint32Array: return Math.round(e * 4294967295);
|
|
@@ -144,15 +144,15 @@ var de = {
|
|
|
144
144
|
clamp: j,
|
|
145
145
|
euclideanModulo: M,
|
|
146
146
|
mapLinear: N,
|
|
147
|
-
inverseLerp:
|
|
148
|
-
lerp:
|
|
149
|
-
damp:
|
|
150
|
-
pingpong:
|
|
151
|
-
smoothstep:
|
|
152
|
-
smootherstep:
|
|
153
|
-
randInt:
|
|
154
|
-
randFloat:
|
|
155
|
-
randFloatSpread:
|
|
147
|
+
inverseLerp: ee,
|
|
148
|
+
lerp: P,
|
|
149
|
+
damp: F,
|
|
150
|
+
pingpong: te,
|
|
151
|
+
smoothstep: ne,
|
|
152
|
+
smootherstep: I,
|
|
153
|
+
randInt: re,
|
|
154
|
+
randFloat: ie,
|
|
155
|
+
randFloatSpread: L,
|
|
156
156
|
seededRandom: R,
|
|
157
157
|
degToRad: z,
|
|
158
158
|
radToDeg: ae,
|
|
@@ -160,8 +160,8 @@ var de = {
|
|
|
160
160
|
ceilPowerOfTwo: se,
|
|
161
161
|
floorPowerOfTwo: ce,
|
|
162
162
|
setQuaternionFromProperEuler: le,
|
|
163
|
-
normalize:
|
|
164
|
-
denormalize:
|
|
163
|
+
normalize: B,
|
|
164
|
+
denormalize: ue
|
|
165
165
|
}, V = class e {
|
|
166
166
|
constructor(t = 0, n = 0) {
|
|
167
167
|
e.prototype.isVector2 = !0, this.x = t, this.y = n;
|
|
@@ -1975,8 +1975,8 @@ var Xe = /*@__PURE__*/ new Fe(), Ze = /*@__PURE__*/ new U(), Qe = /*@__PURE__*/
|
|
|
1975
1975
|
return this.multiplyMatrices(e, this);
|
|
1976
1976
|
}
|
|
1977
1977
|
multiplyMatrices(e, t) {
|
|
1978
|
-
let n = e.elements, r = t.elements, i = this.elements, a = n[0], o = n[4], s = n[8], c = n[12], l = n[1], u = n[5], d = n[9], f = n[13], p = n[2], m = n[6], h = n[10], g = n[14], _ = n[3], v = n[7], y = n[11], b = n[15], x = r[0], S = r[4], C = r[8], w = r[12], T = r[1], E = r[5], D = r[9], O = r[13], k = r[2], A = r[6], j = r[10], M = r[14], N = r[3],
|
|
1979
|
-
return i[0] = a * x + o * T + s * k + c * N, i[4] = a * S + o * E + s * A + c *
|
|
1978
|
+
let n = e.elements, r = t.elements, i = this.elements, a = n[0], o = n[4], s = n[8], c = n[12], l = n[1], u = n[5], d = n[9], f = n[13], p = n[2], m = n[6], h = n[10], g = n[14], _ = n[3], v = n[7], y = n[11], b = n[15], x = r[0], S = r[4], C = r[8], w = r[12], T = r[1], E = r[5], D = r[9], O = r[13], k = r[2], A = r[6], j = r[10], M = r[14], N = r[3], ee = r[7], P = r[11], F = r[15];
|
|
1979
|
+
return i[0] = a * x + o * T + s * k + c * N, i[4] = a * S + o * E + s * A + c * ee, i[8] = a * C + o * D + s * j + c * P, i[12] = a * w + o * O + s * M + c * F, i[1] = l * x + u * T + d * k + f * N, i[5] = l * S + u * E + d * A + f * ee, i[9] = l * C + u * D + d * j + f * P, i[13] = l * w + u * O + d * M + f * F, i[2] = p * x + m * T + h * k + g * N, i[6] = p * S + m * E + h * A + g * ee, i[10] = p * C + m * D + h * j + g * P, i[14] = p * w + m * O + h * M + g * F, i[3] = _ * x + v * T + y * k + b * N, i[7] = _ * S + v * E + y * A + b * ee, i[11] = _ * C + v * D + y * j + b * P, i[15] = _ * w + v * O + y * M + b * F, this;
|
|
1980
1980
|
}
|
|
1981
1981
|
multiplyScalar(e) {
|
|
1982
1982
|
let t = this.elements;
|
|
@@ -2854,7 +2854,7 @@ var X = class {
|
|
|
2854
2854
|
}
|
|
2855
2855
|
lerpHSL(e, t) {
|
|
2856
2856
|
this.getHSL(Zt), e.getHSL(Qt);
|
|
2857
|
-
let n =
|
|
2857
|
+
let n = P(Zt.h, Qt.h, t), r = P(Zt.s, Qt.s, t), i = P(Zt.l, Qt.l, t);
|
|
2858
2858
|
return this.setHSL(n, r, i), this;
|
|
2859
2859
|
}
|
|
2860
2860
|
setFromVector3(e) {
|
|
@@ -3020,47 +3020,47 @@ var tn = 0, nn = class extends T {
|
|
|
3020
3020
|
}
|
|
3021
3021
|
getComponent(e, t) {
|
|
3022
3022
|
let n = this.array[e * this.itemSize + t];
|
|
3023
|
-
return this.normalized && (n =
|
|
3023
|
+
return this.normalized && (n = ue(n, this.array)), n;
|
|
3024
3024
|
}
|
|
3025
3025
|
setComponent(e, t, n) {
|
|
3026
|
-
return this.normalized && (n =
|
|
3026
|
+
return this.normalized && (n = B(n, this.array)), this.array[e * this.itemSize + t] = n, this;
|
|
3027
3027
|
}
|
|
3028
3028
|
getX(e) {
|
|
3029
3029
|
let t = this.array[e * this.itemSize];
|
|
3030
|
-
return this.normalized && (t =
|
|
3030
|
+
return this.normalized && (t = ue(t, this.array)), t;
|
|
3031
3031
|
}
|
|
3032
3032
|
setX(e, t) {
|
|
3033
|
-
return this.normalized && (t =
|
|
3033
|
+
return this.normalized && (t = B(t, this.array)), this.array[e * this.itemSize] = t, this;
|
|
3034
3034
|
}
|
|
3035
3035
|
getY(e) {
|
|
3036
3036
|
let t = this.array[e * this.itemSize + 1];
|
|
3037
|
-
return this.normalized && (t =
|
|
3037
|
+
return this.normalized && (t = ue(t, this.array)), t;
|
|
3038
3038
|
}
|
|
3039
3039
|
setY(e, t) {
|
|
3040
|
-
return this.normalized && (t =
|
|
3040
|
+
return this.normalized && (t = B(t, this.array)), this.array[e * this.itemSize + 1] = t, this;
|
|
3041
3041
|
}
|
|
3042
3042
|
getZ(e) {
|
|
3043
3043
|
let t = this.array[e * this.itemSize + 2];
|
|
3044
|
-
return this.normalized && (t =
|
|
3044
|
+
return this.normalized && (t = ue(t, this.array)), t;
|
|
3045
3045
|
}
|
|
3046
3046
|
setZ(e, t) {
|
|
3047
|
-
return this.normalized && (t =
|
|
3047
|
+
return this.normalized && (t = B(t, this.array)), this.array[e * this.itemSize + 2] = t, this;
|
|
3048
3048
|
}
|
|
3049
3049
|
getW(e) {
|
|
3050
3050
|
let t = this.array[e * this.itemSize + 3];
|
|
3051
|
-
return this.normalized && (t =
|
|
3051
|
+
return this.normalized && (t = ue(t, this.array)), t;
|
|
3052
3052
|
}
|
|
3053
3053
|
setW(e, t) {
|
|
3054
|
-
return this.normalized && (t =
|
|
3054
|
+
return this.normalized && (t = B(t, this.array)), this.array[e * this.itemSize + 3] = t, this;
|
|
3055
3055
|
}
|
|
3056
3056
|
setXY(e, t, n) {
|
|
3057
|
-
return e *= this.itemSize, this.normalized && (t =
|
|
3057
|
+
return e *= this.itemSize, this.normalized && (t = B(t, this.array), n = B(n, this.array)), this.array[e + 0] = t, this.array[e + 1] = n, this;
|
|
3058
3058
|
}
|
|
3059
3059
|
setXYZ(e, t, n, r) {
|
|
3060
|
-
return e *= this.itemSize, this.normalized && (t =
|
|
3060
|
+
return e *= this.itemSize, this.normalized && (t = B(t, this.array), n = B(n, this.array), r = B(r, this.array)), this.array[e + 0] = t, this.array[e + 1] = n, this.array[e + 2] = r, this;
|
|
3061
3061
|
}
|
|
3062
3062
|
setXYZW(e, t, n, r, i) {
|
|
3063
|
-
return e *= this.itemSize, this.normalized && (t =
|
|
3063
|
+
return e *= this.itemSize, this.normalized && (t = B(t, this.array), n = B(n, this.array), r = B(r, this.array), i = B(i, this.array)), this.array[e + 0] = t, this.array[e + 1] = n, this.array[e + 2] = r, this.array[e + 3] = i, this;
|
|
3064
3064
|
}
|
|
3065
3065
|
onUpload(e) {
|
|
3066
3066
|
return this.onUploadCallback = e, this;
|
|
@@ -5386,22 +5386,22 @@ var Ji = class e extends vn {
|
|
|
5386
5386
|
}
|
|
5387
5387
|
let j = [];
|
|
5388
5388
|
for (let e = 0, t = D.length, n = t - 1, r = e + 1; e < t; e++, n++, r++) n === t && (n = 0), r === t && (r = 0), j[e] = A(D[e], D[n], D[r]);
|
|
5389
|
-
let M = [], N,
|
|
5389
|
+
let M = [], N, ee = j.concat();
|
|
5390
5390
|
for (let e = 0, t = E; e < t; e++) {
|
|
5391
5391
|
let t = w[e];
|
|
5392
5392
|
N = [];
|
|
5393
5393
|
for (let e = 0, n = t.length, r = n - 1, i = e + 1; e < n; e++, r++, i++) r === n && (r = 0), i === n && (i = 0), N[e] = A(t[e], t[r], t[i]);
|
|
5394
|
-
M.push(N),
|
|
5394
|
+
M.push(N), ee = ee.concat(N);
|
|
5395
5395
|
}
|
|
5396
|
-
let
|
|
5397
|
-
if (p === 0)
|
|
5396
|
+
let P;
|
|
5397
|
+
if (p === 0) P = Gi.triangulateShape(D, w);
|
|
5398
5398
|
else {
|
|
5399
5399
|
let e = [], t = [];
|
|
5400
5400
|
for (let n = 0; n < p; n++) {
|
|
5401
5401
|
let r = n / p, i = u * Math.cos(r * Math.PI / 2), a = d * Math.sin(r * Math.PI / 2) + f;
|
|
5402
5402
|
for (let t = 0, n = D.length; t < n; t++) {
|
|
5403
5403
|
let n = O(D[t], j[t], a);
|
|
5404
|
-
|
|
5404
|
+
ie(n.x, n.y, -i), r === 0 && e.push(n);
|
|
5405
5405
|
}
|
|
5406
5406
|
for (let e = 0, n = E; e < n; e++) {
|
|
5407
5407
|
let n = w[e];
|
|
@@ -5409,73 +5409,73 @@ var Ji = class e extends vn {
|
|
|
5409
5409
|
let o = [];
|
|
5410
5410
|
for (let e = 0, t = n.length; e < t; e++) {
|
|
5411
5411
|
let t = O(n[e], N[e], a);
|
|
5412
|
-
|
|
5412
|
+
ie(t.x, t.y, -i), r === 0 && o.push(t);
|
|
5413
5413
|
}
|
|
5414
5414
|
r === 0 && t.push(o);
|
|
5415
5415
|
}
|
|
5416
5416
|
}
|
|
5417
|
-
|
|
5417
|
+
P = Gi.triangulateShape(e, t);
|
|
5418
5418
|
}
|
|
5419
|
-
let
|
|
5419
|
+
let F = P.length, te = d + f;
|
|
5420
5420
|
for (let e = 0; e < k; e++) {
|
|
5421
|
-
let t = l ? O(C[e],
|
|
5422
|
-
_ ? (b.copy(v.normals[0]).multiplyScalar(t.x), y.copy(v.binormals[0]).multiplyScalar(t.y), x.copy(g[0]).add(b).add(y),
|
|
5421
|
+
let t = l ? O(C[e], ee[e], te) : C[e];
|
|
5422
|
+
_ ? (b.copy(v.normals[0]).multiplyScalar(t.x), y.copy(v.binormals[0]).multiplyScalar(t.y), x.copy(g[0]).add(b).add(y), ie(x.x, x.y, x.z)) : ie(t.x, t.y, 0);
|
|
5423
5423
|
}
|
|
5424
5424
|
for (let e = 1; e <= s; e++) for (let t = 0; t < k; t++) {
|
|
5425
|
-
let n = l ? O(C[t],
|
|
5426
|
-
_ ? (b.copy(v.normals[e]).multiplyScalar(n.x), y.copy(v.binormals[e]).multiplyScalar(n.y), x.copy(g[e]).add(b).add(y),
|
|
5425
|
+
let n = l ? O(C[t], ee[t], te) : C[t];
|
|
5426
|
+
_ ? (b.copy(v.normals[e]).multiplyScalar(n.x), y.copy(v.binormals[e]).multiplyScalar(n.y), x.copy(g[e]).add(b).add(y), ie(x.x, x.y, x.z)) : ie(n.x, n.y, c / s * e);
|
|
5427
5427
|
}
|
|
5428
5428
|
for (let e = p - 1; e >= 0; e--) {
|
|
5429
5429
|
let t = e / p, n = u * Math.cos(t * Math.PI / 2), r = d * Math.sin(t * Math.PI / 2) + f;
|
|
5430
5430
|
for (let e = 0, t = D.length; e < t; e++) {
|
|
5431
5431
|
let t = O(D[e], j[e], r);
|
|
5432
|
-
|
|
5432
|
+
ie(t.x, t.y, c + n);
|
|
5433
5433
|
}
|
|
5434
5434
|
for (let e = 0, t = w.length; e < t; e++) {
|
|
5435
5435
|
let t = w[e];
|
|
5436
5436
|
N = M[e];
|
|
5437
5437
|
for (let e = 0, i = t.length; e < i; e++) {
|
|
5438
5438
|
let i = O(t[e], N[e], r);
|
|
5439
|
-
_ ?
|
|
5439
|
+
_ ? ie(i.x, i.y + g[s - 1].y, g[s - 1].x + n) : ie(i.x, i.y, c + n);
|
|
5440
5440
|
}
|
|
5441
5441
|
}
|
|
5442
5442
|
}
|
|
5443
|
-
|
|
5444
|
-
function
|
|
5443
|
+
ne(), I();
|
|
5444
|
+
function ne() {
|
|
5445
5445
|
let e = r.length / 3;
|
|
5446
5446
|
if (l) {
|
|
5447
5447
|
let e = 0, t = k * e;
|
|
5448
|
-
for (let e = 0; e <
|
|
5449
|
-
let n =
|
|
5450
|
-
|
|
5448
|
+
for (let e = 0; e < F; e++) {
|
|
5449
|
+
let n = P[e];
|
|
5450
|
+
L(n[2] + t, n[1] + t, n[0] + t);
|
|
5451
5451
|
}
|
|
5452
5452
|
e = s + p * 2, t = k * e;
|
|
5453
|
-
for (let e = 0; e <
|
|
5454
|
-
let n =
|
|
5455
|
-
|
|
5453
|
+
for (let e = 0; e < F; e++) {
|
|
5454
|
+
let n = P[e];
|
|
5455
|
+
L(n[0] + t, n[1] + t, n[2] + t);
|
|
5456
5456
|
}
|
|
5457
5457
|
} else {
|
|
5458
|
-
for (let e = 0; e <
|
|
5459
|
-
let t =
|
|
5460
|
-
|
|
5458
|
+
for (let e = 0; e < F; e++) {
|
|
5459
|
+
let t = P[e];
|
|
5460
|
+
L(t[2], t[1], t[0]);
|
|
5461
5461
|
}
|
|
5462
|
-
for (let e = 0; e <
|
|
5463
|
-
let t =
|
|
5464
|
-
|
|
5462
|
+
for (let e = 0; e < F; e++) {
|
|
5463
|
+
let t = P[e];
|
|
5464
|
+
L(t[0] + k * s, t[1] + k * s, t[2] + k * s);
|
|
5465
5465
|
}
|
|
5466
5466
|
}
|
|
5467
5467
|
n.addGroup(e, r.length / 3 - e, 0);
|
|
5468
5468
|
}
|
|
5469
|
-
function
|
|
5469
|
+
function I() {
|
|
5470
5470
|
let e = r.length / 3, t = 0;
|
|
5471
|
-
|
|
5471
|
+
re(D, t), t += D.length;
|
|
5472
5472
|
for (let e = 0, n = w.length; e < n; e++) {
|
|
5473
5473
|
let n = w[e];
|
|
5474
|
-
|
|
5474
|
+
re(n, t), t += n.length;
|
|
5475
5475
|
}
|
|
5476
5476
|
n.addGroup(e, r.length / 3 - e, 1);
|
|
5477
5477
|
}
|
|
5478
|
-
function
|
|
5478
|
+
function re(e, t) {
|
|
5479
5479
|
let n = e.length;
|
|
5480
5480
|
for (; --n >= 0;) {
|
|
5481
5481
|
let r = n, i = n - 1;
|
|
@@ -5486,10 +5486,10 @@ var Ji = class e extends vn {
|
|
|
5486
5486
|
}
|
|
5487
5487
|
}
|
|
5488
5488
|
}
|
|
5489
|
-
function
|
|
5489
|
+
function ie(e, t, n) {
|
|
5490
5490
|
a.push(e), a.push(t), a.push(n);
|
|
5491
5491
|
}
|
|
5492
|
-
function
|
|
5492
|
+
function L(e, t, i) {
|
|
5493
5493
|
z(e), z(t), z(i);
|
|
5494
5494
|
let a = r.length / 3, o = h.generateTopUV(n, r, a - 3, a - 2, a - 1);
|
|
5495
5495
|
ae(o[0]), ae(o[1]), ae(o[2]);
|
|
@@ -9329,7 +9329,7 @@ function wc(e, t, n, r, i, a, o) {
|
|
|
9329
9329
|
let e = Qa[w];
|
|
9330
9330
|
O = e.vertexShader, k = e.fragmentShader;
|
|
9331
9331
|
} else O = a.vertexShader, k = a.fragmentShader, c.update(a), A = c.getVertexShaderID(a), j = c.getFragmentShaderID(a);
|
|
9332
|
-
let M = e.getRenderTarget(), N = e.state.buffers.depth.getReversed(),
|
|
9332
|
+
let M = e.getRenderTarget(), N = e.state.buffers.depth.getReversed(), ee = _.isInstancedMesh === !0, P = _.isBatchedMesh === !0, F = !!a.map, te = !!a.matcap, ne = !!S, I = !!a.aoMap, re = !!a.lightMap, ie = !!a.bumpMap, L = !!a.normalMap, R = !!a.displacementMap, z = !!a.emissiveMap, ae = !!a.metalnessMap, oe = !!a.roughnessMap, se = a.anisotropy > 0, ce = a.clearcoat > 0, le = a.dispersion > 0, ue = a.iridescence > 0, B = a.sheen > 0, de = a.transmission > 0, V = se && !!a.anisotropyMap, H = ce && !!a.clearcoatMap, U = ce && !!a.clearcoatNormalMap, fe = ce && !!a.clearcoatRoughnessMap, W = ue && !!a.iridescenceMap, G = ue && !!a.iridescenceThicknessMap, K = B && !!a.sheenColorMap, pe = B && !!a.sheenRoughnessMap, q = !!a.specularMap, me = !!a.specularColorMap, J = !!a.specularIntensityMap, he = de && !!a.transmissionMap, ge = de && !!a.thicknessMap, _e = !!a.gradientMap, ve = !!a.alphaMap, ye = a.alphaTest > 0, be = !!a.alphaHash, xe = !!a.extensions, Se = 0;
|
|
9333
9333
|
a.toneMapped && (M === null || M.isXRRenderTarget === !0) && (Se = e.toneMapping);
|
|
9334
9334
|
let Ce = {
|
|
9335
9335
|
shaderID: w,
|
|
@@ -9343,27 +9343,27 @@ function wc(e, t, n, r, i, a, o) {
|
|
|
9343
9343
|
isRawShaderMaterial: a.isRawShaderMaterial === !0,
|
|
9344
9344
|
glslVersion: a.glslVersion,
|
|
9345
9345
|
precision: p,
|
|
9346
|
-
batching:
|
|
9347
|
-
batchingColor:
|
|
9348
|
-
instancing:
|
|
9349
|
-
instancingColor:
|
|
9350
|
-
instancingMorph:
|
|
9346
|
+
batching: P,
|
|
9347
|
+
batchingColor: P && _._colorsTexture !== null,
|
|
9348
|
+
instancing: ee,
|
|
9349
|
+
instancingColor: ee && _.instanceColor !== null,
|
|
9350
|
+
instancingMorph: ee && _.morphTexture !== null,
|
|
9351
9351
|
supportsVertexTextures: f,
|
|
9352
9352
|
outputColorSpace: M === null ? e.outputColorSpace : M.isXRRenderTarget === !0 ? M.texture.colorSpace : b,
|
|
9353
9353
|
alphaToCoverage: !!a.alphaToCoverage,
|
|
9354
|
-
map:
|
|
9355
|
-
matcap:
|
|
9356
|
-
envMap:
|
|
9357
|
-
envMapMode:
|
|
9354
|
+
map: F,
|
|
9355
|
+
matcap: te,
|
|
9356
|
+
envMap: ne,
|
|
9357
|
+
envMapMode: ne && S.mapping,
|
|
9358
9358
|
envMapCubeUVHeight: C,
|
|
9359
|
-
aoMap:
|
|
9360
|
-
lightMap:
|
|
9361
|
-
bumpMap:
|
|
9362
|
-
normalMap:
|
|
9359
|
+
aoMap: I,
|
|
9360
|
+
lightMap: re,
|
|
9361
|
+
bumpMap: ie,
|
|
9362
|
+
normalMap: L,
|
|
9363
9363
|
displacementMap: f && R,
|
|
9364
9364
|
emissiveMap: z,
|
|
9365
|
-
normalMapObjectSpace:
|
|
9366
|
-
normalMapTangentSpace:
|
|
9365
|
+
normalMapObjectSpace: L && a.normalMapType === 1,
|
|
9366
|
+
normalMapTangentSpace: L && a.normalMapType === 0,
|
|
9367
9367
|
metalnessMap: ae,
|
|
9368
9368
|
roughnessMap: oe,
|
|
9369
9369
|
anisotropy: se,
|
|
@@ -9373,10 +9373,10 @@ function wc(e, t, n, r, i, a, o) {
|
|
|
9373
9373
|
clearcoatNormalMap: U,
|
|
9374
9374
|
clearcoatRoughnessMap: fe,
|
|
9375
9375
|
dispersion: le,
|
|
9376
|
-
iridescence:
|
|
9376
|
+
iridescence: ue,
|
|
9377
9377
|
iridescenceMap: W,
|
|
9378
9378
|
iridescenceThicknessMap: G,
|
|
9379
|
-
sheen:
|
|
9379
|
+
sheen: B,
|
|
9380
9380
|
sheenColorMap: K,
|
|
9381
9381
|
sheenRoughnessMap: pe,
|
|
9382
9382
|
specularMap: q,
|
|
@@ -9391,11 +9391,11 @@ function wc(e, t, n, r, i, a, o) {
|
|
|
9391
9391
|
alphaTest: ye,
|
|
9392
9392
|
alphaHash: be,
|
|
9393
9393
|
combine: a.combine,
|
|
9394
|
-
mapUv:
|
|
9395
|
-
aoMapUv:
|
|
9396
|
-
lightMapUv:
|
|
9397
|
-
bumpMapUv:
|
|
9398
|
-
normalMapUv:
|
|
9394
|
+
mapUv: F && h(a.map.channel),
|
|
9395
|
+
aoMapUv: I && h(a.aoMap.channel),
|
|
9396
|
+
lightMapUv: re && h(a.lightMap.channel),
|
|
9397
|
+
bumpMapUv: ie && h(a.bumpMap.channel),
|
|
9398
|
+
normalMapUv: L && h(a.normalMap.channel),
|
|
9399
9399
|
displacementMapUv: R && h(a.displacementMap.channel),
|
|
9400
9400
|
emissiveMapUv: z && h(a.emissiveMap.channel),
|
|
9401
9401
|
metalnessMapUv: ae && h(a.metalnessMap.channel),
|
|
@@ -9414,10 +9414,10 @@ function wc(e, t, n, r, i, a, o) {
|
|
|
9414
9414
|
transmissionMapUv: he && h(a.transmissionMap.channel),
|
|
9415
9415
|
thicknessMapUv: ge && h(a.thicknessMap.channel),
|
|
9416
9416
|
alphaMapUv: ve && h(a.alphaMap.channel),
|
|
9417
|
-
vertexTangents: !!y.attributes.tangent && (
|
|
9417
|
+
vertexTangents: !!y.attributes.tangent && (L || se),
|
|
9418
9418
|
vertexColors: a.vertexColors,
|
|
9419
9419
|
vertexAlphas: a.vertexColors === !0 && !!y.attributes.color && y.attributes.color.itemSize === 4,
|
|
9420
|
-
pointsUvs: _.isPoints === !0 && !!y.attributes.uv && (
|
|
9420
|
+
pointsUvs: _.isPoints === !0 && !!y.attributes.uv && (F || ve),
|
|
9421
9421
|
fog: !!v,
|
|
9422
9422
|
useFog: a.fog === !0,
|
|
9423
9423
|
fogExp2: !!v && v.isFogExp2,
|
|
@@ -9448,7 +9448,7 @@ function wc(e, t, n, r, i, a, o) {
|
|
|
9448
9448
|
shadowMapEnabled: e.shadowMap.enabled && u.length > 0,
|
|
9449
9449
|
shadowMapType: e.shadowMap.type,
|
|
9450
9450
|
toneMapping: Se,
|
|
9451
|
-
decodeVideoTexture:
|
|
9451
|
+
decodeVideoTexture: F && a.map.isVideoTexture === !0 && Y.getTransfer(a.map.colorSpace) === "srgb",
|
|
9452
9452
|
decodeVideoTextureEmissive: z && a.emissiveMap.isVideoTexture === !0 && Y.getTransfer(a.emissiveMap.colorSpace) === "srgb",
|
|
9453
9453
|
premultipliedAlpha: a.premultipliedAlpha,
|
|
9454
9454
|
doubleSided: a.side === 2,
|
|
@@ -9457,7 +9457,7 @@ function wc(e, t, n, r, i, a, o) {
|
|
|
9457
9457
|
depthPacking: a.depthPacking || 0,
|
|
9458
9458
|
index0AttributeName: a.index0AttributeName,
|
|
9459
9459
|
extensionClipCullDistance: xe && a.extensions.clipCullDistance === !0 && r.has("WEBGL_clip_cull_distance"),
|
|
9460
|
-
extensionMultiDraw: (xe && a.extensions.multiDraw === !0 ||
|
|
9460
|
+
extensionMultiDraw: (xe && a.extensions.multiDraw === !0 || P) && r.has("WEBGL_multi_draw"),
|
|
9461
9461
|
rendererExtensionParallelShaderCompile: r.has("KHR_parallel_shader_compile"),
|
|
9462
9462
|
customProgramCacheKey: a.customProgramCacheKey()
|
|
9463
9463
|
};
|
|
@@ -10091,17 +10091,17 @@ function Vc(e, t) {
|
|
|
10091
10091
|
}
|
|
10092
10092
|
};
|
|
10093
10093
|
}
|
|
10094
|
-
let a = new n(), o = new r(), s = new i(), c = /* @__PURE__ */ new WeakMap(), l = /* @__PURE__ */ new WeakMap(), u = {}, d = {}, f = /* @__PURE__ */ new WeakMap(), p = [], m = null, h = !1, g = null, _ = null, v = null, y = null, b = null, x = null, S = null, C = new X(0, 0, 0), w = 0, T = !1, E = null, D = null, O = null, k = null, A = null, j = e.getParameter(e.MAX_COMBINED_TEXTURE_IMAGE_UNITS), M = !1, N = 0,
|
|
10095
|
-
|
|
10096
|
-
let
|
|
10097
|
-
function
|
|
10094
|
+
let a = new n(), o = new r(), s = new i(), c = /* @__PURE__ */ new WeakMap(), l = /* @__PURE__ */ new WeakMap(), u = {}, d = {}, f = /* @__PURE__ */ new WeakMap(), p = [], m = null, h = !1, g = null, _ = null, v = null, y = null, b = null, x = null, S = null, C = new X(0, 0, 0), w = 0, T = !1, E = null, D = null, O = null, k = null, A = null, j = e.getParameter(e.MAX_COMBINED_TEXTURE_IMAGE_UNITS), M = !1, N = 0, ee = e.getParameter(e.VERSION);
|
|
10095
|
+
ee.indexOf("WebGL") === -1 ? ee.indexOf("OpenGL ES") !== -1 && (N = parseFloat(/^OpenGL ES (\d)/.exec(ee)[1]), M = N >= 2) : (N = parseFloat(/^WebGL (\d)/.exec(ee)[1]), M = N >= 1);
|
|
10096
|
+
let P = null, F = {}, te = e.getParameter(e.SCISSOR_BOX), ne = e.getParameter(e.VIEWPORT), I = new Ae().fromArray(te), re = new Ae().fromArray(ne);
|
|
10097
|
+
function ie(t, n, r, i) {
|
|
10098
10098
|
let a = /* @__PURE__ */ new Uint8Array(4), o = e.createTexture();
|
|
10099
10099
|
e.bindTexture(t, o), e.texParameteri(t, e.TEXTURE_MIN_FILTER, e.NEAREST), e.texParameteri(t, e.TEXTURE_MAG_FILTER, e.NEAREST);
|
|
10100
10100
|
for (let o = 0; o < r; o++) t === e.TEXTURE_3D || t === e.TEXTURE_2D_ARRAY ? e.texImage3D(n, 0, e.RGBA, 1, 1, i, 0, e.RGBA, e.UNSIGNED_BYTE, a) : e.texImage2D(n + o, 0, e.RGBA, 1, 1, 0, e.RGBA, e.UNSIGNED_BYTE, a);
|
|
10101
10101
|
return o;
|
|
10102
10102
|
}
|
|
10103
|
-
let
|
|
10104
|
-
|
|
10103
|
+
let L = {};
|
|
10104
|
+
L[e.TEXTURE_2D] = ie(e.TEXTURE_2D, e.TEXTURE_2D, 1), L[e.TEXTURE_CUBE_MAP] = ie(e.TEXTURE_CUBE_MAP, e.TEXTURE_CUBE_MAP_POSITIVE_X, 6), L[e.TEXTURE_2D_ARRAY] = ie(e.TEXTURE_2D_ARRAY, e.TEXTURE_2D_ARRAY, 1, 1), L[e.TEXTURE_3D] = ie(e.TEXTURE_3D, e.TEXTURE_3D, 1, 1), a.setClear(0, 0, 0, 1), o.setClear(1), s.setClear(0), R(e.DEPTH_TEST), o.setFunc(3), de(!1), V(1), R(e.CULL_FACE), ue(0);
|
|
10105
10105
|
function R(t) {
|
|
10106
10106
|
u[t] !== !0 && (e.enable(t), u[t] = !0);
|
|
10107
10107
|
}
|
|
@@ -10149,7 +10149,7 @@ function Vc(e, t) {
|
|
|
10149
10149
|
213: e.CONSTANT_ALPHA,
|
|
10150
10150
|
214: e.ONE_MINUS_CONSTANT_ALPHA
|
|
10151
10151
|
};
|
|
10152
|
-
function
|
|
10152
|
+
function ue(t, n, r, i, a, o, s, c, l, u) {
|
|
10153
10153
|
if (t === 0) {
|
|
10154
10154
|
h === !0 && (z(e.BLEND), h = !1);
|
|
10155
10155
|
return;
|
|
@@ -10192,10 +10192,10 @@ function Vc(e, t) {
|
|
|
10192
10192
|
}
|
|
10193
10193
|
a ||= n, o ||= r, s ||= i, (n !== _ || a !== b) && (e.blendEquationSeparate(ce[n], ce[a]), _ = n, b = a), (r !== v || i !== y || o !== x || s !== S) && (e.blendFuncSeparate(le[r], le[i], le[o], le[s]), v = r, y = i, x = o, S = s), (c.equals(C) === !1 || l !== w) && (e.blendColor(c.r, c.g, c.b, l), C.copy(c), w = l), g = t, T = !1;
|
|
10194
10194
|
}
|
|
10195
|
-
function
|
|
10195
|
+
function B(t, n) {
|
|
10196
10196
|
t.side === 2 ? z(e.CULL_FACE) : R(e.CULL_FACE);
|
|
10197
10197
|
let r = t.side === 1;
|
|
10198
|
-
n && (r = !r), de(r), t.blending === 1 && t.transparent === !1 ?
|
|
10198
|
+
n && (r = !r), de(r), t.blending === 1 && t.transparent === !1 ? ue(0) : ue(t.blending, t.blendEquation, t.blendSrc, t.blendDst, t.blendEquationAlpha, t.blendSrcAlpha, t.blendDstAlpha, t.blendColor, t.blendAlpha, t.premultipliedAlpha), o.setFunc(t.depthFunc), o.setTest(t.depthTest), o.setMask(t.depthWrite), a.setMask(t.colorWrite);
|
|
10199
10199
|
let i = t.stencilWrite;
|
|
10200
10200
|
s.setTest(i), i && (s.setMask(t.stencilWriteMask), s.setFunc(t.stencilFunc, t.stencilRef, t.stencilFuncMask), s.setOp(t.stencilFail, t.stencilZFail, t.stencilZPass)), U(t.polygonOffset, t.polygonOffsetFactor, t.polygonOffsetUnits), t.alphaToCoverage === !0 ? R(e.SAMPLE_ALPHA_TO_COVERAGE) : z(e.SAMPLE_ALPHA_TO_COVERAGE);
|
|
10201
10201
|
}
|
|
@@ -10215,18 +10215,18 @@ function Vc(e, t) {
|
|
|
10215
10215
|
t ? R(e.SCISSOR_TEST) : z(e.SCISSOR_TEST);
|
|
10216
10216
|
}
|
|
10217
10217
|
function W(t) {
|
|
10218
|
-
t === void 0 && (t = e.TEXTURE0 + j - 1),
|
|
10218
|
+
t === void 0 && (t = e.TEXTURE0 + j - 1), P !== t && (e.activeTexture(t), P = t);
|
|
10219
10219
|
}
|
|
10220
10220
|
function G(t, n, r) {
|
|
10221
|
-
r === void 0 && (r =
|
|
10222
|
-
let i =
|
|
10221
|
+
r === void 0 && (r = P === null ? e.TEXTURE0 + j - 1 : P);
|
|
10222
|
+
let i = F[r];
|
|
10223
10223
|
i === void 0 && (i = {
|
|
10224
10224
|
type: void 0,
|
|
10225
10225
|
texture: void 0
|
|
10226
|
-
},
|
|
10226
|
+
}, F[r] = i), (i.type !== t || i.texture !== n) && (P !== r && (e.activeTexture(r), P = r), e.bindTexture(t, n || L[t]), i.type = t, i.texture = n);
|
|
10227
10227
|
}
|
|
10228
10228
|
function K() {
|
|
10229
|
-
let t =
|
|
10229
|
+
let t = F[P];
|
|
10230
10230
|
t !== void 0 && t.type !== void 0 && (e.bindTexture(t.type, null), t.type = void 0, t.texture = void 0);
|
|
10231
10231
|
}
|
|
10232
10232
|
function pe() {
|
|
@@ -10300,10 +10300,10 @@ function Vc(e, t) {
|
|
|
10300
10300
|
}
|
|
10301
10301
|
}
|
|
10302
10302
|
function be(t) {
|
|
10303
|
-
|
|
10303
|
+
I.equals(t) === !1 && (e.scissor(t.x, t.y, t.z, t.w), I.copy(t));
|
|
10304
10304
|
}
|
|
10305
10305
|
function xe(t) {
|
|
10306
|
-
|
|
10306
|
+
re.equals(t) === !1 && (e.viewport(t.x, t.y, t.z, t.w), re.copy(t));
|
|
10307
10307
|
}
|
|
10308
10308
|
function Se(t, n) {
|
|
10309
10309
|
let r = l.get(n);
|
|
@@ -10316,7 +10316,7 @@ function Vc(e, t) {
|
|
|
10316
10316
|
c.get(n) !== r && (e.uniformBlockBinding(n, r, t.__bindingPointIndex), c.set(n, r));
|
|
10317
10317
|
}
|
|
10318
10318
|
function we() {
|
|
10319
|
-
e.disable(e.BLEND), e.disable(e.CULL_FACE), e.disable(e.DEPTH_TEST), e.disable(e.POLYGON_OFFSET_FILL), e.disable(e.SCISSOR_TEST), e.disable(e.STENCIL_TEST), e.disable(e.SAMPLE_ALPHA_TO_COVERAGE), e.blendEquation(e.FUNC_ADD), e.blendFunc(e.ONE, e.ZERO), e.blendFuncSeparate(e.ONE, e.ZERO, e.ONE, e.ZERO), e.blendColor(0, 0, 0, 0), e.colorMask(!0, !0, !0, !0), e.clearColor(0, 0, 0, 0), e.depthMask(!0), e.depthFunc(e.LESS), o.setReversed(!1), e.clearDepth(1), e.stencilMask(4294967295), e.stencilFunc(e.ALWAYS, 0, 4294967295), e.stencilOp(e.KEEP, e.KEEP, e.KEEP), e.clearStencil(0), e.cullFace(e.BACK), e.frontFace(e.CCW), e.polygonOffset(0, 0), e.activeTexture(e.TEXTURE0), e.bindFramebuffer(e.FRAMEBUFFER, null), e.bindFramebuffer(e.DRAW_FRAMEBUFFER, null), e.bindFramebuffer(e.READ_FRAMEBUFFER, null), e.useProgram(null), e.lineWidth(1), e.scissor(0, 0, e.canvas.width, e.canvas.height), e.viewport(0, 0, e.canvas.width, e.canvas.height), u = {},
|
|
10319
|
+
e.disable(e.BLEND), e.disable(e.CULL_FACE), e.disable(e.DEPTH_TEST), e.disable(e.POLYGON_OFFSET_FILL), e.disable(e.SCISSOR_TEST), e.disable(e.STENCIL_TEST), e.disable(e.SAMPLE_ALPHA_TO_COVERAGE), e.blendEquation(e.FUNC_ADD), e.blendFunc(e.ONE, e.ZERO), e.blendFuncSeparate(e.ONE, e.ZERO, e.ONE, e.ZERO), e.blendColor(0, 0, 0, 0), e.colorMask(!0, !0, !0, !0), e.clearColor(0, 0, 0, 0), e.depthMask(!0), e.depthFunc(e.LESS), o.setReversed(!1), e.clearDepth(1), e.stencilMask(4294967295), e.stencilFunc(e.ALWAYS, 0, 4294967295), e.stencilOp(e.KEEP, e.KEEP, e.KEEP), e.clearStencil(0), e.cullFace(e.BACK), e.frontFace(e.CCW), e.polygonOffset(0, 0), e.activeTexture(e.TEXTURE0), e.bindFramebuffer(e.FRAMEBUFFER, null), e.bindFramebuffer(e.DRAW_FRAMEBUFFER, null), e.bindFramebuffer(e.READ_FRAMEBUFFER, null), e.useProgram(null), e.lineWidth(1), e.scissor(0, 0, e.canvas.width, e.canvas.height), e.viewport(0, 0, e.canvas.width, e.canvas.height), u = {}, P = null, F = {}, d = {}, f = /* @__PURE__ */ new WeakMap(), p = [], m = null, h = !1, g = null, _ = null, v = null, y = null, b = null, x = null, S = null, C = new X(0, 0, 0), w = 0, T = !1, E = null, D = null, O = null, k = null, A = null, I.set(0, 0, e.canvas.width, e.canvas.height), re.set(0, 0, e.canvas.width, e.canvas.height), a.reset(), o.reset(), s.reset();
|
|
10320
10320
|
}
|
|
10321
10321
|
return {
|
|
10322
10322
|
buffers: {
|
|
@@ -10329,8 +10329,8 @@ function Vc(e, t) {
|
|
|
10329
10329
|
bindFramebuffer: ae,
|
|
10330
10330
|
drawBuffers: oe,
|
|
10331
10331
|
useProgram: se,
|
|
10332
|
-
setBlending:
|
|
10333
|
-
setMaterial:
|
|
10332
|
+
setBlending: ue,
|
|
10333
|
+
setMaterial: B,
|
|
10334
10334
|
setFlipSided: de,
|
|
10335
10335
|
setCullFace: V,
|
|
10336
10336
|
setLineWidth: H,
|
|
@@ -10411,7 +10411,7 @@ function Hc(o, s, c, l, u, d, p) {
|
|
|
10411
10411
|
}
|
|
10412
10412
|
function j(e) {
|
|
10413
10413
|
let t = e.target;
|
|
10414
|
-
t.removeEventListener("dispose", j),
|
|
10414
|
+
t.removeEventListener("dispose", j), ee(t);
|
|
10415
10415
|
}
|
|
10416
10416
|
function M(e) {
|
|
10417
10417
|
let t = l.get(e);
|
|
@@ -10429,7 +10429,7 @@ function Hc(o, s, c, l, u, d, p) {
|
|
|
10429
10429
|
let n = e.source, r = y.get(n);
|
|
10430
10430
|
delete r[t.__cacheKey], p.memory.textures--;
|
|
10431
10431
|
}
|
|
10432
|
-
function
|
|
10432
|
+
function ee(e) {
|
|
10433
10433
|
let t = l.get(e);
|
|
10434
10434
|
if (e.depthTexture && (e.depthTexture.dispose(), l.remove(e.depthTexture)), e.isWebGLCubeRenderTarget) for (let e = 0; e < 6; e++) {
|
|
10435
10435
|
if (Array.isArray(t.__webglFramebuffer[e])) for (let n = 0; n < t.__webglFramebuffer[e].length; n++) o.deleteFramebuffer(t.__webglFramebuffer[e][n]);
|
|
@@ -10449,51 +10449,51 @@ function Hc(o, s, c, l, u, d, p) {
|
|
|
10449
10449
|
}
|
|
10450
10450
|
l.remove(e);
|
|
10451
10451
|
}
|
|
10452
|
-
let
|
|
10453
|
-
function
|
|
10454
|
-
|
|
10452
|
+
let P = 0;
|
|
10453
|
+
function F() {
|
|
10454
|
+
P = 0;
|
|
10455
10455
|
}
|
|
10456
|
-
function
|
|
10457
|
-
let e =
|
|
10458
|
-
return e >= u.maxTextures && console.warn("THREE.WebGLTextures: Trying to use " + e + " texture units while this GPU supports only " + u.maxTextures),
|
|
10456
|
+
function te() {
|
|
10457
|
+
let e = P;
|
|
10458
|
+
return e >= u.maxTextures && console.warn("THREE.WebGLTextures: Trying to use " + e + " texture units while this GPU supports only " + u.maxTextures), P += 1, e;
|
|
10459
10459
|
}
|
|
10460
|
-
function
|
|
10460
|
+
function ne(e) {
|
|
10461
10461
|
let t = [];
|
|
10462
10462
|
return t.push(e.wrapS), t.push(e.wrapT), t.push(e.wrapR || 0), t.push(e.magFilter), t.push(e.minFilter), t.push(e.anisotropy), t.push(e.internalFormat), t.push(e.format), t.push(e.type), t.push(e.generateMipmaps), t.push(e.premultiplyAlpha), t.push(e.flipY), t.push(e.unpackAlignment), t.push(e.colorSpace), t.join();
|
|
10463
10463
|
}
|
|
10464
|
-
function
|
|
10464
|
+
function I(e, t) {
|
|
10465
10465
|
let n = l.get(e);
|
|
10466
10466
|
if (e.isVideoTexture && _e(e), e.isRenderTargetTexture === !1 && e.isExternalTexture !== !0 && e.version > 0 && n.__version !== e.version) {
|
|
10467
10467
|
let r = e.image;
|
|
10468
10468
|
if (r === null) console.warn("THREE.WebGLRenderer: Texture marked for update but no image data found.");
|
|
10469
10469
|
else if (r.complete === !1) console.warn("THREE.WebGLRenderer: Texture marked for update but image is incomplete");
|
|
10470
10470
|
else {
|
|
10471
|
-
|
|
10471
|
+
ue(n, e, t);
|
|
10472
10472
|
return;
|
|
10473
10473
|
}
|
|
10474
10474
|
} else e.isExternalTexture && (n.__webglTexture = e.sourceTexture ? e.sourceTexture : null);
|
|
10475
10475
|
c.bindTexture(o.TEXTURE_2D, n.__webglTexture, o.TEXTURE0 + t);
|
|
10476
10476
|
}
|
|
10477
|
-
function
|
|
10477
|
+
function re(e, t) {
|
|
10478
10478
|
let n = l.get(e);
|
|
10479
10479
|
if (e.isRenderTargetTexture === !1 && e.version > 0 && n.__version !== e.version) {
|
|
10480
|
-
|
|
10480
|
+
ue(n, e, t);
|
|
10481
10481
|
return;
|
|
10482
10482
|
}
|
|
10483
10483
|
c.bindTexture(o.TEXTURE_2D_ARRAY, n.__webglTexture, o.TEXTURE0 + t);
|
|
10484
10484
|
}
|
|
10485
|
-
function
|
|
10485
|
+
function ie(e, t) {
|
|
10486
10486
|
let n = l.get(e);
|
|
10487
10487
|
if (e.isRenderTargetTexture === !1 && e.version > 0 && n.__version !== e.version) {
|
|
10488
|
-
|
|
10488
|
+
ue(n, e, t);
|
|
10489
10489
|
return;
|
|
10490
10490
|
}
|
|
10491
10491
|
c.bindTexture(o.TEXTURE_3D, n.__webglTexture, o.TEXTURE0 + t);
|
|
10492
10492
|
}
|
|
10493
|
-
function
|
|
10493
|
+
function L(e, t) {
|
|
10494
10494
|
let n = l.get(e);
|
|
10495
10495
|
if (e.version > 0 && n.__version !== e.version) {
|
|
10496
|
-
|
|
10496
|
+
B(n, e, t);
|
|
10497
10497
|
return;
|
|
10498
10498
|
}
|
|
10499
10499
|
c.bindTexture(o.TEXTURE_CUBE_MAP, n.__webglTexture, o.TEXTURE0 + t);
|
|
@@ -10533,7 +10533,7 @@ function Hc(o, s, c, l, u, d, p) {
|
|
|
10533
10533
|
e.__webglInit === void 0 && (e.__webglInit = !0, t.addEventListener("dispose", A));
|
|
10534
10534
|
let r = t.source, i = y.get(r);
|
|
10535
10535
|
i === void 0 && (i = {}, y.set(r, i));
|
|
10536
|
-
let a =
|
|
10536
|
+
let a = ne(t);
|
|
10537
10537
|
if (a !== e.__cacheKey) {
|
|
10538
10538
|
i[a] === void 0 && (i[a] = {
|
|
10539
10539
|
texture: o.createTexture(),
|
|
@@ -10567,7 +10567,7 @@ function Hc(o, s, c, l, u, d, p) {
|
|
|
10567
10567
|
e.clearUpdateRanges(), o.pixelStorei(o.UNPACK_ROW_LENGTH, s), o.pixelStorei(o.UNPACK_SKIP_PIXELS, l), o.pixelStorei(o.UNPACK_SKIP_ROWS, u);
|
|
10568
10568
|
}
|
|
10569
10569
|
}
|
|
10570
|
-
function
|
|
10570
|
+
function ue(e, t, n) {
|
|
10571
10571
|
let r = o.TEXTURE_2D;
|
|
10572
10572
|
(t.isDataArrayTexture || t.isCompressedArrayTexture) && (r = o.TEXTURE_2D_ARRAY), t.isData3DTexture && (r = o.TEXTURE_3D);
|
|
10573
10573
|
let i = se(e, t), a = t.source;
|
|
@@ -10652,7 +10652,7 @@ function Hc(o, s, c, l, u, d, p) {
|
|
|
10652
10652
|
}
|
|
10653
10653
|
e.__version = t.version;
|
|
10654
10654
|
}
|
|
10655
|
-
function
|
|
10655
|
+
function B(e, t, n) {
|
|
10656
10656
|
if (t.image.length !== 6) return;
|
|
10657
10657
|
let r = se(e, t), i = t.source;
|
|
10658
10658
|
c.bindTexture(o.TEXTURE_CUBE_MAP, e.__webglTexture, o.TEXTURE0 + n);
|
|
@@ -10724,7 +10724,7 @@ function Hc(o, s, c, l, u, d, p) {
|
|
|
10724
10724
|
if (t && t.isWebGLCubeRenderTarget) throw Error("Depth Texture with cube render targets is not supported");
|
|
10725
10725
|
if (c.bindFramebuffer(o.FRAMEBUFFER, e), !(t.depthTexture && t.depthTexture.isDepthTexture)) throw Error("renderTarget.depthTexture must be an instance of THREE.DepthTexture");
|
|
10726
10726
|
let n = l.get(t.depthTexture);
|
|
10727
|
-
n.__renderTarget = t, (!n.__webglTexture || t.depthTexture.image.width !== t.width || t.depthTexture.image.height !== t.height) && (t.depthTexture.image.width = t.width, t.depthTexture.image.height = t.height, t.depthTexture.needsUpdate = !0),
|
|
10727
|
+
n.__renderTarget = t, (!n.__webglTexture || t.depthTexture.image.width !== t.width || t.depthTexture.image.height !== t.height) && (t.depthTexture.image.width = t.width, t.depthTexture.image.height = t.height, t.depthTexture.needsUpdate = !0), I(t.depthTexture, 0);
|
|
10728
10728
|
let r = n.__webglTexture, i = he(t);
|
|
10729
10729
|
if (t.depthTexture.format === 1026) ge(t) ? m.framebufferTexture2DMultisampleEXT(o.FRAMEBUFFER, o.DEPTH_ATTACHMENT, o.TEXTURE_2D, r, 0, i) : o.framebufferTexture2D(o.FRAMEBUFFER, o.DEPTH_ATTACHMENT, o.TEXTURE_2D, r, 0);
|
|
10730
10730
|
else if (t.depthTexture.format === 1027) ge(t) ? m.framebufferTexture2DMultisampleEXT(o.FRAMEBUFFER, o.DEPTH_STENCIL_ATTACHMENT, o.TEXTURE_2D, r, 0, i) : o.framebufferTexture2D(o.FRAMEBUFFER, o.DEPTH_STENCIL_ATTACHMENT, o.TEXTURE_2D, r, 0);
|
|
@@ -10873,7 +10873,7 @@ function Hc(o, s, c, l, u, d, p) {
|
|
|
10873
10873
|
function ye(e) {
|
|
10874
10874
|
return typeof HTMLImageElement < "u" && e instanceof HTMLImageElement ? (g.width = e.naturalWidth || e.width, g.height = e.naturalHeight || e.height) : typeof VideoFrame < "u" && e instanceof VideoFrame ? (g.width = e.displayWidth, g.height = e.displayHeight) : (g.width = e.width, g.height = e.height), g;
|
|
10875
10875
|
}
|
|
10876
|
-
this.allocateTextureUnit =
|
|
10876
|
+
this.allocateTextureUnit = te, this.resetTextureUnits = F, this.setTexture2D = I, this.setTexture2DArray = re, this.setTexture3D = ie, this.setTextureCube = L, this.rebindTextures = W, this.setupRenderTarget = G, this.updateRenderTargetMipmap = K, this.updateMultisampleRenderTarget = J, this.setupDepthRenderbuffer = fe, this.setupFrameBufferTexture = de, this.useMultisampledRTT = ge;
|
|
10877
10877
|
}
|
|
10878
10878
|
function Uc(e, t) {
|
|
10879
10879
|
function n(n, r = "") {
|
|
@@ -11004,7 +11004,7 @@ var Wc = "\nvoid main() {\n\n gl_Position = vec4( position, 1.0 );\n\n}", Gc = "
|
|
|
11004
11004
|
A.viewport = new Ae();
|
|
11005
11005
|
let j = new Kn();
|
|
11006
11006
|
j.viewport = new Ae();
|
|
11007
|
-
let M = [A, j], N = new Aa(),
|
|
11007
|
+
let M = [A, j], N = new Aa(), ee = null, P = null;
|
|
11008
11008
|
this.cameraAutoUpdate = !0, this.enabled = !1, this.isPresenting = !1, this.getController = function(e) {
|
|
11009
11009
|
let t = T[e];
|
|
11010
11010
|
return t === void 0 && (t = new er(), T[e] = t), t.getTargetRaySpace();
|
|
@@ -11015,7 +11015,7 @@ var Wc = "\nvoid main() {\n\n gl_Position = vec4( position, 1.0 );\n\n}", Gc = "
|
|
|
11015
11015
|
let t = T[e];
|
|
11016
11016
|
return t === void 0 && (t = new er(), T[e] = t), t.getHandSpace();
|
|
11017
11017
|
};
|
|
11018
|
-
function
|
|
11018
|
+
function F(e) {
|
|
11019
11019
|
let t = E.indexOf(e.inputSource);
|
|
11020
11020
|
if (t === -1) return;
|
|
11021
11021
|
let n = T[t];
|
|
@@ -11024,13 +11024,13 @@ var Wc = "\nvoid main() {\n\n gl_Position = vec4( position, 1.0 );\n\n}", Gc = "
|
|
|
11024
11024
|
data: e.inputSource
|
|
11025
11025
|
}));
|
|
11026
11026
|
}
|
|
11027
|
-
function
|
|
11028
|
-
r.removeEventListener("select",
|
|
11027
|
+
function te() {
|
|
11028
|
+
r.removeEventListener("select", F), r.removeEventListener("selectstart", F), r.removeEventListener("selectend", F), r.removeEventListener("squeeze", F), r.removeEventListener("squeezestart", F), r.removeEventListener("squeezeend", F), r.removeEventListener("end", te), r.removeEventListener("inputsourceschange", ne);
|
|
11029
11029
|
for (let e = 0; e < T.length; e++) {
|
|
11030
11030
|
let t = E[e];
|
|
11031
11031
|
t !== null && (E[e] = null, T[e].disconnect(t));
|
|
11032
11032
|
}
|
|
11033
|
-
|
|
11033
|
+
ee = null, P = null, b.reset();
|
|
11034
11034
|
for (let e in x) delete x[e];
|
|
11035
11035
|
e.setRenderTarget(C), _ = null, g = null, h = null, r = null, w = null, oe.stop(), n.isPresenting = !1, e.setPixelRatio(O), e.setSize(D.width, D.height, !1), n.dispatchEvent({ type: "sessionend" });
|
|
11036
11036
|
}
|
|
@@ -11052,7 +11052,7 @@ var Wc = "\nvoid main() {\n\n gl_Position = vec4( position, 1.0 );\n\n}", Gc = "
|
|
|
11052
11052
|
return r;
|
|
11053
11053
|
}, this.setSession = async function(m) {
|
|
11054
11054
|
if (r = m, r !== null) {
|
|
11055
|
-
if (C = e.getRenderTarget(), r.addEventListener("select",
|
|
11055
|
+
if (C = e.getRenderTarget(), r.addEventListener("select", F), r.addEventListener("selectstart", F), r.addEventListener("selectend", F), r.addEventListener("squeeze", F), r.addEventListener("squeezestart", F), r.addEventListener("squeezeend", F), r.addEventListener("end", te), r.addEventListener("inputsourceschange", ne), S.xrCompatible !== !0 && await t.makeXRCompatible(), O = e.getPixelRatio(), e.getSize(D), y && "createProjectionLayer" in XRWebGLBinding.prototype) {
|
|
11056
11056
|
let n = null, a = null, c = null;
|
|
11057
11057
|
S.depth && (c = S.stencil ? t.DEPTH24_STENCIL8 : t.DEPTH_COMPONENT24, n = S.stencil ? f : d, a = S.stencil ? 1020 : s);
|
|
11058
11058
|
let l = {
|
|
@@ -11094,7 +11094,7 @@ var Wc = "\nvoid main() {\n\n gl_Position = vec4( position, 1.0 );\n\n}", Gc = "
|
|
|
11094
11094
|
}, this.getDepthTexture = function() {
|
|
11095
11095
|
return b.getDepthTexture();
|
|
11096
11096
|
};
|
|
11097
|
-
function
|
|
11097
|
+
function ne(e) {
|
|
11098
11098
|
for (let t = 0; t < e.removed.length; t++) {
|
|
11099
11099
|
let n = e.removed[t], r = E.indexOf(n);
|
|
11100
11100
|
r >= 0 && (E[r] = null, T[r].disconnect(n));
|
|
@@ -11115,30 +11115,30 @@ var Wc = "\nvoid main() {\n\n gl_Position = vec4( position, 1.0 );\n\n}", Gc = "
|
|
|
11115
11115
|
i && i.connect(n);
|
|
11116
11116
|
}
|
|
11117
11117
|
}
|
|
11118
|
-
let
|
|
11119
|
-
function
|
|
11120
|
-
|
|
11121
|
-
let r =
|
|
11118
|
+
let I = new U(), re = new U();
|
|
11119
|
+
function ie(e, t, n) {
|
|
11120
|
+
I.setFromMatrixPosition(t.matrixWorld), re.setFromMatrixPosition(n.matrixWorld);
|
|
11121
|
+
let r = I.distanceTo(re), i = t.projectionMatrix.elements, a = n.projectionMatrix.elements, o = i[14] / (i[10] - 1), s = i[14] / (i[10] + 1), c = (i[9] + 1) / i[5], l = (i[9] - 1) / i[5], u = (i[8] - 1) / i[0], d = (a[8] + 1) / a[0], f = o * u, p = o * d, m = r / (-u + d), h = m * -u;
|
|
11122
11122
|
if (t.matrixWorld.decompose(e.position, e.quaternion, e.scale), e.translateX(h), e.translateZ(m), e.matrixWorld.compose(e.position, e.quaternion, e.scale), e.matrixWorldInverse.copy(e.matrixWorld).invert(), i[10] === -1) e.projectionMatrix.copy(t.projectionMatrix), e.projectionMatrixInverse.copy(t.projectionMatrixInverse);
|
|
11123
11123
|
else {
|
|
11124
11124
|
let t = o + m, n = s + m, i = f - h, a = p + (r - h), u = c * s / n * t, d = l * s / n * t;
|
|
11125
11125
|
e.projectionMatrix.makePerspective(i, a, u, d, t, n), e.projectionMatrixInverse.copy(e.projectionMatrix).invert();
|
|
11126
11126
|
}
|
|
11127
11127
|
}
|
|
11128
|
-
function
|
|
11128
|
+
function L(e, t) {
|
|
11129
11129
|
t === null ? e.matrixWorld.copy(e.matrix) : e.matrixWorld.multiplyMatrices(t.matrixWorld, e.matrix), e.matrixWorldInverse.copy(e.matrixWorld).invert();
|
|
11130
11130
|
}
|
|
11131
11131
|
this.updateCamera = function(e) {
|
|
11132
11132
|
if (r === null) return;
|
|
11133
11133
|
let t = e.near, n = e.far;
|
|
11134
|
-
b.texture !== null && (b.depthNear > 0 && (t = b.depthNear), b.depthFar > 0 && (n = b.depthFar)), N.near = j.near = A.near = t, N.far = j.far = A.far = n, (
|
|
11134
|
+
b.texture !== null && (b.depthNear > 0 && (t = b.depthNear), b.depthFar > 0 && (n = b.depthFar)), N.near = j.near = A.near = t, N.far = j.far = A.far = n, (ee !== N.near || P !== N.far) && (r.updateRenderState({
|
|
11135
11135
|
depthNear: N.near,
|
|
11136
11136
|
depthFar: N.far
|
|
11137
|
-
}),
|
|
11137
|
+
}), ee = N.near, P = N.far), N.layers.mask = e.layers.mask | 6, A.layers.mask = N.layers.mask & 3, j.layers.mask = N.layers.mask & 5;
|
|
11138
11138
|
let i = e.parent, a = N.cameras;
|
|
11139
|
-
|
|
11140
|
-
for (let e = 0; e < a.length; e++)
|
|
11141
|
-
a.length === 2 ?
|
|
11139
|
+
L(N, i);
|
|
11140
|
+
for (let e = 0; e < a.length; e++) L(a[e], i);
|
|
11141
|
+
a.length === 2 ? ie(N, A, j) : N.projectionMatrix.copy(A.projectionMatrix), R(e, N, i);
|
|
11142
11142
|
};
|
|
11143
11143
|
function R(e, t, n) {
|
|
11144
11144
|
n === null ? e.matrix.copy(t.matrixWorld) : (e.matrix.copy(n.matrixWorld), e.matrix.invert(), e.matrix.multiply(t.matrixWorld)), e.matrix.decompose(e.position, e.quaternion, e.scale), e.updateMatrixWorld(!0), e.projectionMatrix.copy(t.projectionMatrix), e.projectionMatrixInverse.copy(t.projectionMatrixInverse), e.isPerspectiveCamera && (e.fov = k * 2 * Math.atan(1 / e.projectionMatrix.elements[5]), e.zoom = 1);
|
|
@@ -11366,7 +11366,7 @@ var Qc = class {
|
|
|
11366
11366
|
}, this.autoClear = !0, this.autoClearColor = !0, this.autoClearDepth = !0, this.autoClearStencil = !0, this.sortObjects = !0, this.clippingPlanes = [], this.localClippingEnabled = !1, this.toneMapping = 0, this.toneMappingExposure = 1, this.transmissionResolutionScale = 1;
|
|
11367
11367
|
let T = this, E = !1;
|
|
11368
11368
|
this._outputColorSpace = y;
|
|
11369
|
-
let D = 0, O = 0, k = null, A = -1, j = null, M = new Ae(), N = new Ae(),
|
|
11369
|
+
let D = 0, O = 0, k = null, A = -1, j = null, M = new Ae(), N = new Ae(), ee = null, P = new X(0), F = 0, te = t.width, ne = t.height, I = 1, re = null, ie = null, L = new Ae(0, 0, te, ne), R = new Ae(0, 0, te, ne), z = !1, ae = new lr(), oe = !1, se = !1, ce = new ct(), le = new U(), ue = new Ae(), B = {
|
|
11370
11370
|
background: null,
|
|
11371
11371
|
fog: null,
|
|
11372
11372
|
environment: null,
|
|
@@ -11374,7 +11374,7 @@ var Qc = class {
|
|
|
11374
11374
|
isScene: !0
|
|
11375
11375
|
}, de = !1;
|
|
11376
11376
|
function V() {
|
|
11377
|
-
return k === null ?
|
|
11377
|
+
return k === null ? I : 1;
|
|
11378
11378
|
}
|
|
11379
11379
|
let H = n;
|
|
11380
11380
|
function fe(e, n) {
|
|
@@ -11415,39 +11415,39 @@ var Qc = class {
|
|
|
11415
11415
|
let e = W.get("WEBGL_lose_context");
|
|
11416
11416
|
e && e.restoreContext();
|
|
11417
11417
|
}, this.getPixelRatio = function() {
|
|
11418
|
-
return
|
|
11418
|
+
return I;
|
|
11419
11419
|
}, this.setPixelRatio = function(e) {
|
|
11420
|
-
e !== void 0 && (
|
|
11420
|
+
e !== void 0 && (I = e, this.setSize(te, ne, !1));
|
|
11421
11421
|
}, this.getSize = function(e) {
|
|
11422
|
-
return e.set(
|
|
11422
|
+
return e.set(te, ne);
|
|
11423
11423
|
}, this.setSize = function(e, n, r = !0) {
|
|
11424
11424
|
if (Re.isPresenting) {
|
|
11425
11425
|
console.warn("THREE.WebGLRenderer: Can't change size while VR device is presenting.");
|
|
11426
11426
|
return;
|
|
11427
11427
|
}
|
|
11428
|
-
|
|
11428
|
+
te = e, ne = n, t.width = Math.floor(e * I), t.height = Math.floor(n * I), r === !0 && (t.style.width = e + "px", t.style.height = n + "px"), this.setViewport(0, 0, e, n);
|
|
11429
11429
|
}, this.getDrawingBufferSize = function(e) {
|
|
11430
|
-
return e.set(
|
|
11430
|
+
return e.set(te * I, ne * I).floor();
|
|
11431
11431
|
}, this.setDrawingBufferSize = function(e, n, r) {
|
|
11432
|
-
|
|
11432
|
+
te = e, ne = n, I = r, t.width = Math.floor(e * r), t.height = Math.floor(n * r), this.setViewport(0, 0, e, n);
|
|
11433
11433
|
}, this.getCurrentViewport = function(e) {
|
|
11434
11434
|
return e.copy(M);
|
|
11435
11435
|
}, this.getViewport = function(e) {
|
|
11436
|
-
return e.copy(
|
|
11436
|
+
return e.copy(L);
|
|
11437
11437
|
}, this.setViewport = function(e, t, n, r) {
|
|
11438
|
-
e.isVector4 ?
|
|
11438
|
+
e.isVector4 ? L.set(e.x, e.y, e.z, e.w) : L.set(e, t, n, r), K.viewport(M.copy(L).multiplyScalar(I).round());
|
|
11439
11439
|
}, this.getScissor = function(e) {
|
|
11440
11440
|
return e.copy(R);
|
|
11441
11441
|
}, this.setScissor = function(e, t, n, r) {
|
|
11442
|
-
e.isVector4 ? R.set(e.x, e.y, e.z, e.w) : R.set(e, t, n, r), K.scissor(N.copy(R).multiplyScalar(
|
|
11442
|
+
e.isVector4 ? R.set(e.x, e.y, e.z, e.w) : R.set(e, t, n, r), K.scissor(N.copy(R).multiplyScalar(I).round());
|
|
11443
11443
|
}, this.getScissorTest = function() {
|
|
11444
11444
|
return z;
|
|
11445
11445
|
}, this.setScissorTest = function(e) {
|
|
11446
11446
|
K.setScissorTest(z = e);
|
|
11447
11447
|
}, this.setOpaqueSort = function(e) {
|
|
11448
|
-
ne = e;
|
|
11449
|
-
}, this.setTransparentSort = function(e) {
|
|
11450
11448
|
re = e;
|
|
11449
|
+
}, this.setTransparentSort = function(e) {
|
|
11450
|
+
ie = e;
|
|
11451
11451
|
}, this.getClearColor = function(e) {
|
|
11452
11452
|
return e.copy(Oe.getClearColor());
|
|
11453
11453
|
}, this.setClearColor = function() {
|
|
@@ -11504,7 +11504,7 @@ var Qc = class {
|
|
|
11504
11504
|
}), e.isShaderMaterial && Se.releaseShaderCache(e));
|
|
11505
11505
|
}
|
|
11506
11506
|
this.renderBufferDirect = function(e, t, n, r, i, a) {
|
|
11507
|
-
t === null && (t =
|
|
11507
|
+
t === null && (t = B);
|
|
11508
11508
|
let o = i.isMesh && i.matrixWorld.determinant() < 0, s = at(e, t, n, r, i);
|
|
11509
11509
|
K.setMaterial(r, o);
|
|
11510
11510
|
let c = n.index, l = 1;
|
|
@@ -11595,7 +11595,7 @@ var Qc = class {
|
|
|
11595
11595
|
let e = T.xr.getDepthSensingMesh();
|
|
11596
11596
|
e !== null && Ze(e, t, -Infinity, T.sortObjects);
|
|
11597
11597
|
}
|
|
11598
|
-
Ze(e, t, 0, T.sortObjects), v.finish(), T.sortObjects === !0 && v.sort(
|
|
11598
|
+
Ze(e, t, 0, T.sortObjects), v.finish(), T.sortObjects === !0 && v.sort(re, ie), de = Re.enabled === !1 || Re.isPresenting === !1 || Re.hasDepthSensing() === !1, de && Oe.addToRenderList(v, e), this.info.render.frame++, oe === !0 && Ee.beginShadows();
|
|
11599
11599
|
let n = x.state.shadowsArray;
|
|
11600
11600
|
De.render(n, e, t), oe === !0 && Ee.endShadows(), this.info.autoReset === !0 && this.info.reset();
|
|
11601
11601
|
let r = v.opaque, i = v.transmissive;
|
|
@@ -11621,19 +11621,19 @@ var Qc = class {
|
|
|
11621
11621
|
else if (e.isLight) x.pushLight(e), e.castShadow && x.pushShadow(e);
|
|
11622
11622
|
else if (e.isSprite) {
|
|
11623
11623
|
if (!e.frustumCulled || ae.intersectsSprite(e)) {
|
|
11624
|
-
r &&
|
|
11624
|
+
r && ue.setFromMatrixPosition(e.matrixWorld).applyMatrix4(ce);
|
|
11625
11625
|
let t = xe.update(e), i = e.material;
|
|
11626
|
-
i.visible && v.push(e, t, i, n,
|
|
11626
|
+
i.visible && v.push(e, t, i, n, ue.z, null);
|
|
11627
11627
|
}
|
|
11628
11628
|
} else if ((e.isMesh || e.isLine || e.isPoints) && (!e.frustumCulled || ae.intersectsObject(e))) {
|
|
11629
11629
|
let t = xe.update(e), i = e.material;
|
|
11630
|
-
if (r && (e.boundingSphere === void 0 ? (t.boundingSphere === null && t.computeBoundingSphere(),
|
|
11630
|
+
if (r && (e.boundingSphere === void 0 ? (t.boundingSphere === null && t.computeBoundingSphere(), ue.copy(t.boundingSphere.center)) : (e.boundingSphere === null && e.computeBoundingSphere(), ue.copy(e.boundingSphere.center)), ue.applyMatrix4(e.matrixWorld).applyMatrix4(ce)), Array.isArray(i)) {
|
|
11631
11631
|
let r = t.groups;
|
|
11632
11632
|
for (let a = 0, o = r.length; a < o; a++) {
|
|
11633
11633
|
let o = r[a], s = i[o.materialIndex];
|
|
11634
|
-
s && s.visible && v.push(e, t, s, n,
|
|
11634
|
+
s && s.visible && v.push(e, t, s, n, ue.z, o);
|
|
11635
11635
|
}
|
|
11636
|
-
} else i.visible && v.push(e, t, i, n,
|
|
11636
|
+
} else i.visible && v.push(e, t, i, n, ue.z, null);
|
|
11637
11637
|
}
|
|
11638
11638
|
}
|
|
11639
11639
|
let i = e.children;
|
|
@@ -11658,7 +11658,7 @@ var Qc = class {
|
|
|
11658
11658
|
let s = x.state.transmissionRenderTarget[r.id], c = r.viewport || M;
|
|
11659
11659
|
s.setSize(c.z * T.transmissionResolutionScale, c.w * T.transmissionResolutionScale);
|
|
11660
11660
|
let u = T.getRenderTarget(), d = T.getActiveCubeFace(), f = T.getActiveMipmapLevel();
|
|
11661
|
-
T.setRenderTarget(s), T.getClearColor(
|
|
11661
|
+
T.setRenderTarget(s), T.getClearColor(P), F = T.getClearAlpha(), F < 1 && T.setClearColor(16777215, .5), T.clear(), de && Oe.render(n);
|
|
11662
11662
|
let p = T.toneMapping;
|
|
11663
11663
|
T.toneMapping = 0;
|
|
11664
11664
|
let m = r.viewport;
|
|
@@ -11673,7 +11673,7 @@ var Qc = class {
|
|
|
11673
11673
|
}
|
|
11674
11674
|
e === !0 && (J.updateMultisampleRenderTarget(s), J.updateRenderTargetMipmap(s));
|
|
11675
11675
|
}
|
|
11676
|
-
T.setRenderTarget(u, d, f), T.setClearColor(
|
|
11676
|
+
T.setRenderTarget(u, d, f), T.setClearColor(P, F), m !== void 0 && (r.viewport = m), T.toneMapping = p;
|
|
11677
11677
|
}
|
|
11678
11678
|
function et(e, t, n) {
|
|
11679
11679
|
let r = t.isScene === !0 ? t.overrideMaterial : null;
|
|
@@ -11686,7 +11686,7 @@ var Qc = class {
|
|
|
11686
11686
|
e.onBeforeRender(T, t, n, r, i, a), e.modelViewMatrix.multiplyMatrices(n.matrixWorldInverse, e.matrixWorld), e.normalMatrix.getNormalMatrix(e.modelViewMatrix), i.onBeforeRender(T, t, n, r, e, a), i.transparent === !0 && i.side === 2 && i.forceSinglePass === !1 ? (i.side = 1, i.needsUpdate = !0, T.renderBufferDirect(n, t, r, i, e, a), i.side = 0, i.needsUpdate = !0, T.renderBufferDirect(n, t, r, i, e, a), i.side = 2) : T.renderBufferDirect(n, t, r, i, e, a), e.onAfterRender(T, t, n, r, i, a);
|
|
11687
11687
|
}
|
|
11688
11688
|
function nt(e, t, n) {
|
|
11689
|
-
t.isScene !== !0 && (t =
|
|
11689
|
+
t.isScene !== !0 && (t = B);
|
|
11690
11690
|
let r = q.get(e), i = x.state.lights, a = x.state.shadowsArray, o = i.state.version, s = Se.getParameters(e, i.state, a, t, n), c = Se.getProgramCacheKey(s), l = r.programs;
|
|
11691
11691
|
r.environment = e.isMeshStandardMaterial ? t.environment : null, r.fog = t.fog, r.envMap = (e.isMeshStandardMaterial ? ve : _e).get(e.envMap || r.environment), r.envMapRotation = r.environment !== null && e.envMap === null ? t.environmentRotation : e.envMapRotation, l === void 0 && (e.addEventListener("dispose", He), l = /* @__PURE__ */ new Map(), r.programs = l);
|
|
11692
11692
|
let u = l.get(c);
|
|
@@ -11708,7 +11708,7 @@ var Qc = class {
|
|
|
11708
11708
|
n.outputColorSpace = t.outputColorSpace, n.batching = t.batching, n.batchingColor = t.batchingColor, n.instancing = t.instancing, n.instancingColor = t.instancingColor, n.instancingMorph = t.instancingMorph, n.skinning = t.skinning, n.morphTargets = t.morphTargets, n.morphNormals = t.morphNormals, n.morphColors = t.morphColors, n.morphTargetsCount = t.morphTargetsCount, n.numClippingPlanes = t.numClippingPlanes, n.numIntersection = t.numClipIntersection, n.vertexAlphas = t.vertexAlphas, n.vertexTangents = t.vertexTangents, n.toneMapping = t.toneMapping;
|
|
11709
11709
|
}
|
|
11710
11710
|
function at(e, t, n, r, i) {
|
|
11711
|
-
t.isScene !== !0 && (t =
|
|
11711
|
+
t.isScene !== !0 && (t = B), J.resetTextureUnits();
|
|
11712
11712
|
let a = t.fog, o = r.isMeshStandardMaterial ? t.environment : null, s = k === null ? T.outputColorSpace : k.isXRRenderTarget === !0 ? k.texture.colorSpace : b, c = (r.isMeshStandardMaterial ? ve : _e).get(r.envMap || o), l = r.vertexColors === !0 && !!n.attributes.color && n.attributes.color.itemSize === 4, u = !!n.attributes.tangent && (!!r.normalMap || r.anisotropy > 0), d = !!n.morphAttributes.position, f = !!n.morphAttributes.normal, p = !!n.morphAttributes.color, m = 0;
|
|
11713
11713
|
r.toneMapped && (k === null || k.isXRRenderTarget === !0) && (m = T.toneMapping);
|
|
11714
11714
|
let h = n.morphAttributes.position || n.morphAttributes.normal || n.morphAttributes.color, g = h === void 0 ? 0 : h.length, _ = q.get(r), v = x.state.lights;
|
|
@@ -11733,7 +11733,7 @@ var Qc = class {
|
|
|
11733
11733
|
}
|
|
11734
11734
|
i.isBatchedMesh && (D.setOptional(H, i, "batchingTexture"), D.setValue(H, "batchingTexture", i._matricesTexture, J), D.setOptional(H, i, "batchingIdTexture"), D.setValue(H, "batchingIdTexture", i._indirectTexture, J), D.setOptional(H, i, "batchingColorTexture"), i._colorsTexture !== null && D.setValue(H, "batchingColorTexture", i._colorsTexture, J));
|
|
11735
11735
|
let M = n.morphAttributes;
|
|
11736
|
-
if ((M.position !== void 0 || M.normal !== void 0 || M.color !== void 0) && ke.update(i, n, S), (w || _.receiveShadow !== i.receiveShadow) && (_.receiveShadow = i.receiveShadow, D.setValue(H, "receiveShadow", i.receiveShadow)), r.isMeshGouraudMaterial && r.envMap !== null && (O.envMap.value = c, O.flipEnvMap.value = c.isCubeTexture && c.isRenderTargetTexture === !1 ? -1 : 1), r.isMeshStandardMaterial && r.envMap === null && t.environment !== null && (O.envMapIntensity.value = t.environmentIntensity), w && (D.setValue(H, "toneMappingExposure", T.toneMappingExposure), _.needsLights && ot(O, E), a && r.fog === !0 && Ce.refreshFogUniforms(O, a), Ce.refreshMaterialUniforms(O, r,
|
|
11736
|
+
if ((M.position !== void 0 || M.normal !== void 0 || M.color !== void 0) && ke.update(i, n, S), (w || _.receiveShadow !== i.receiveShadow) && (_.receiveShadow = i.receiveShadow, D.setValue(H, "receiveShadow", i.receiveShadow)), r.isMeshGouraudMaterial && r.envMap !== null && (O.envMap.value = c, O.flipEnvMap.value = c.isCubeTexture && c.isRenderTargetTexture === !1 ? -1 : 1), r.isMeshStandardMaterial && r.envMap === null && t.environment !== null && (O.envMapIntensity.value = t.environmentIntensity), w && (D.setValue(H, "toneMappingExposure", T.toneMappingExposure), _.needsLights && ot(O, E), a && r.fog === !0 && Ce.refreshFogUniforms(O, a), Ce.refreshMaterialUniforms(O, r, I, ne, x.state.transmissionRenderTarget[e.id]), Us.upload(H, rt(_), O, J)), r.isShaderMaterial && r.uniformsNeedUpdate === !0 && (Us.upload(H, rt(_), O, J), r.uniformsNeedUpdate = !1), r.isSpriteMaterial && D.setValue(H, "center", i.center), D.setValue(H, "modelViewMatrix", i.modelViewMatrix), D.setValue(H, "normalMatrix", i.normalMatrix), D.setValue(H, "modelMatrix", i.matrixWorld), r.isShaderMaterial || r.isRawShaderMaterial) {
|
|
11737
11737
|
let e = r.uniformsGroups;
|
|
11738
11738
|
for (let t = 0, n = e.length; t < n; t++) {
|
|
11739
11739
|
let n = e[t];
|
|
@@ -11780,9 +11780,9 @@ var Qc = class {
|
|
|
11780
11780
|
let c = e.texture;
|
|
11781
11781
|
(c.isData3DTexture || c.isDataArrayTexture || c.isCompressedArrayTexture) && (o = !0);
|
|
11782
11782
|
let l = q.get(e).__webglFramebuffer;
|
|
11783
|
-
e.isWebGLCubeRenderTarget ? (i = Array.isArray(l[t]) ? l[t][n] : l[t], a = !0) : i = e.samples > 0 && J.useMultisampledRTT(e) === !1 ? q.get(e).__webglMultisampledFramebuffer : Array.isArray(l) ? l[n] : l, M.copy(e.viewport), N.copy(e.scissor),
|
|
11784
|
-
} else M.copy(
|
|
11785
|
-
if (n !== 0 && (i = lt), K.bindFramebuffer(H.FRAMEBUFFER, i) && r && K.drawBuffers(e, i), K.viewport(M), K.scissor(N), K.setScissorTest(
|
|
11783
|
+
e.isWebGLCubeRenderTarget ? (i = Array.isArray(l[t]) ? l[t][n] : l[t], a = !0) : i = e.samples > 0 && J.useMultisampledRTT(e) === !1 ? q.get(e).__webglMultisampledFramebuffer : Array.isArray(l) ? l[n] : l, M.copy(e.viewport), N.copy(e.scissor), ee = e.scissorTest;
|
|
11784
|
+
} else M.copy(L).multiplyScalar(I).floor(), N.copy(R).multiplyScalar(I).floor(), ee = z;
|
|
11785
|
+
if (n !== 0 && (i = lt), K.bindFramebuffer(H.FRAMEBUFFER, i) && r && K.drawBuffers(e, i), K.viewport(M), K.scissor(N), K.setScissorTest(ee), a) {
|
|
11786
11786
|
let r = q.get(e.texture);
|
|
11787
11787
|
H.framebufferTexture2D(H.FRAMEBUFFER, H.COLOR_ATTACHMENT0, H.TEXTURE_CUBE_MAP_POSITIVE_X + t, r.__webglTexture, n);
|
|
11788
11788
|
} else if (o) {
|
|
@@ -11890,7 +11890,7 @@ var Qc = class {
|
|
|
11890
11890
|
}
|
|
11891
11891
|
}, $c = {
|
|
11892
11892
|
name: "@liquidcars/atlas",
|
|
11893
|
-
version: "0.1.
|
|
11893
|
+
version: "0.1.41",
|
|
11894
11894
|
description: "Reusable 3D conceptual atlas Web Component for LiquidCars-style models",
|
|
11895
11895
|
type: "module",
|
|
11896
11896
|
scripts: {
|
|
@@ -11968,6 +11968,40 @@ function dl(e, t, n) {
|
|
|
11968
11968
|
};
|
|
11969
11969
|
}
|
|
11970
11970
|
function fl(e, t) {
|
|
11971
|
+
if (!e.showcase || typeof e.showcase != "object") return null;
|
|
11972
|
+
let n = ol(e.showcase), r = Array.isArray(n.groups) ? n.groups : [], i = /* @__PURE__ */ new Set(), a = /* @__PURE__ */ new Set(), o = r.map((e, n) => {
|
|
11973
|
+
let r = e && typeof e == "object" ? e : {}, o = String(r.id || `group-${n + 1}`).trim();
|
|
11974
|
+
if (!o || i.has(o)) throw TypeError(`Geometry pack '${t}' showcase contains a duplicate or empty group id.`);
|
|
11975
|
+
i.add(o);
|
|
11976
|
+
let s = Array.isArray(r.items) ? r.items : Array.isArray(r.children) ? r.children : [];
|
|
11977
|
+
return {
|
|
11978
|
+
...r,
|
|
11979
|
+
id: o,
|
|
11980
|
+
name: String(r.name || r.title || o),
|
|
11981
|
+
items: s.map((e, n) => {
|
|
11982
|
+
let r = e && typeof e == "object" ? e : {}, i = String(r.geometry || r.kind || "").trim();
|
|
11983
|
+
if (!i) throw TypeError(`Geometry pack '${t}' showcase item ${n + 1} in '${o}' requires a geometry.`);
|
|
11984
|
+
let s = String(r.id || `${o}-${n + 1}`).trim();
|
|
11985
|
+
if (!s || a.has(s)) throw TypeError(`Geometry pack '${t}' showcase contains a duplicate or empty item id.`);
|
|
11986
|
+
return a.add(s), {
|
|
11987
|
+
...r,
|
|
11988
|
+
id: s,
|
|
11989
|
+
geometry: i.includes(".") ? i : `${t}.${i}`,
|
|
11990
|
+
geometryOptions: ol(r.geometryOptions || r.options || r.parameters || {}),
|
|
11991
|
+
geometryPalette: ol(r.geometryPalette || r.palette || {})
|
|
11992
|
+
};
|
|
11993
|
+
})
|
|
11994
|
+
};
|
|
11995
|
+
});
|
|
11996
|
+
return {
|
|
11997
|
+
...n,
|
|
11998
|
+
title: String(n.title || e.name || t),
|
|
11999
|
+
description: String(n.description || ""),
|
|
12000
|
+
groups: o,
|
|
12001
|
+
relations: ol(Array.isArray(n.relations) ? n.relations : [])
|
|
12002
|
+
};
|
|
12003
|
+
}
|
|
12004
|
+
function pl(e, t) {
|
|
11971
12005
|
let n = (Array.isArray(e.sources) ? e.sources : []).map(ul), r = new Set(n.map((e) => e.id)), i = (Array.isArray(e.resources) ? e.resources : []).map((e, t) => dl(e, t, r));
|
|
11972
12006
|
if (new Set(i.map((e) => e.id)).size !== i.length) throw TypeError(`Geometry pack '${t}' contains duplicate resource ids.`);
|
|
11973
12007
|
return {
|
|
@@ -11982,12 +12016,13 @@ function fl(e, t) {
|
|
|
11982
12016
|
license: ll(e.license),
|
|
11983
12017
|
attribution: String(e.attribution || ""),
|
|
11984
12018
|
collections: ol(Array.isArray(e.collections) ? e.collections : []),
|
|
12019
|
+
showcase: fl(e, t),
|
|
11985
12020
|
sources: n,
|
|
11986
12021
|
resources: i,
|
|
11987
12022
|
geometries: []
|
|
11988
12023
|
};
|
|
11989
12024
|
}
|
|
11990
|
-
function
|
|
12025
|
+
function ml(e) {
|
|
11991
12026
|
let { create: t, resourceMap: n, ...r } = e;
|
|
11992
12027
|
return {
|
|
11993
12028
|
...ol(r),
|
|
@@ -11997,15 +12032,15 @@ function pl(e) {
|
|
|
11997
12032
|
anchors: ol(e.anchors)
|
|
11998
12033
|
};
|
|
11999
12034
|
}
|
|
12000
|
-
function
|
|
12035
|
+
function hl(e) {
|
|
12001
12036
|
return ol(e);
|
|
12002
12037
|
}
|
|
12003
|
-
function
|
|
12038
|
+
function gl(e) {
|
|
12004
12039
|
if (!e || typeof e != "object") throw TypeError("A geometry pack must be an object.");
|
|
12005
12040
|
let t = String(e.namespace || "").trim();
|
|
12006
12041
|
if (!/^[a-z][a-z0-9-]*(?:\.[a-z][a-z0-9-]*)*$/i.test(t)) throw TypeError("A geometry pack requires a valid dot-separated namespace.");
|
|
12007
12042
|
if (!Array.isArray(e.geometries) || !e.geometries.length) throw TypeError("A geometry pack requires at least one geometry.");
|
|
12008
|
-
let n =
|
|
12043
|
+
let n = pl(e, t), r = Object.freeze(Object.fromEntries(n.resources.map((e) => [e.id, Object.freeze(ol(e))]))), i = [];
|
|
12009
12044
|
for (let a of e.geometries) {
|
|
12010
12045
|
if (!a || typeof a != "object" || !a.id) throw TypeError(`Geometry pack '${t}' contains an invalid geometry.`);
|
|
12011
12046
|
let o = String(a.id).includes(".") ? String(a.id).split(".").pop() : String(a.id), s = String(a.id).includes(".") ? String(a.id) : `${t}.${o}`;
|
|
@@ -12037,7 +12072,7 @@ function hl(e) {
|
|
|
12037
12072
|
resourceMap: r
|
|
12038
12073
|
});
|
|
12039
12074
|
}
|
|
12040
|
-
|
|
12075
|
+
_l(t);
|
|
12041
12076
|
let a = [];
|
|
12042
12077
|
for (let e of i) {
|
|
12043
12078
|
rl.set(e.id, e), il.set(e.id, e.id);
|
|
@@ -12045,33 +12080,33 @@ function hl(e) {
|
|
|
12045
12080
|
a.push(e.id);
|
|
12046
12081
|
}
|
|
12047
12082
|
n.geometries = [...a], al.set(t, n);
|
|
12048
|
-
let o =
|
|
12083
|
+
let o = hl(n);
|
|
12049
12084
|
return typeof globalThis.dispatchEvent == "function" && typeof CustomEvent == "function" && globalThis.dispatchEvent(new CustomEvent("lc-geometry-registry-change", { detail: {
|
|
12050
12085
|
namespace: t,
|
|
12051
12086
|
geometries: a,
|
|
12052
12087
|
pack: o
|
|
12053
12088
|
} })), o;
|
|
12054
12089
|
}
|
|
12055
|
-
function
|
|
12090
|
+
function _l(e) {
|
|
12056
12091
|
let t = [];
|
|
12057
12092
|
for (let [n, r] of rl) r.namespace === e && (rl.delete(n), t.push(n));
|
|
12058
12093
|
for (let [e, n] of il) t.includes(n) && il.delete(e);
|
|
12059
12094
|
return al.delete(e), t;
|
|
12060
12095
|
}
|
|
12061
|
-
function _l() {
|
|
12062
|
-
return [...rl.values()].map(pl);
|
|
12063
|
-
}
|
|
12064
12096
|
function vl() {
|
|
12065
|
-
return [...
|
|
12097
|
+
return [...rl.values()].map(ml);
|
|
12098
|
+
}
|
|
12099
|
+
function yl() {
|
|
12100
|
+
return [...al.values()].map(hl);
|
|
12066
12101
|
}
|
|
12067
|
-
function
|
|
12102
|
+
function bl(e) {
|
|
12068
12103
|
let t = il.get(e) || e;
|
|
12069
12104
|
return rl.get(t) || null;
|
|
12070
12105
|
}
|
|
12071
|
-
function
|
|
12106
|
+
function xl(e) {
|
|
12072
12107
|
return e === "container" || e === "shell";
|
|
12073
12108
|
}
|
|
12074
|
-
function
|
|
12109
|
+
function Sl(e = {}) {
|
|
12075
12110
|
let t = e && typeof e == "object" ? e : {}, n = Number(t.opacity);
|
|
12076
12111
|
return {
|
|
12077
12112
|
mode: t.mode === "connected" ? "connected" : "all",
|
|
@@ -12080,20 +12115,20 @@ function xl(e = {}) {
|
|
|
12080
12115
|
opacity: Number.isFinite(n) ? Math.max(.02, Math.min(.8, n)) : .12
|
|
12081
12116
|
};
|
|
12082
12117
|
}
|
|
12083
|
-
function
|
|
12118
|
+
function Cl(e) {
|
|
12084
12119
|
return [
|
|
12085
12120
|
"preserve",
|
|
12086
12121
|
"center",
|
|
12087
12122
|
"fit"
|
|
12088
12123
|
].includes(e) ? e : "preserve";
|
|
12089
12124
|
}
|
|
12090
|
-
function
|
|
12125
|
+
function wl(e) {
|
|
12091
12126
|
return e === "model" ? "model" : "camera";
|
|
12092
12127
|
}
|
|
12093
|
-
function
|
|
12128
|
+
function Tl(e, t) {
|
|
12094
12129
|
e && e.transparent !== t && (e.transparent = t, e.needsUpdate = !0);
|
|
12095
12130
|
}
|
|
12096
|
-
|
|
12131
|
+
gl({
|
|
12097
12132
|
namespace: "geo",
|
|
12098
12133
|
name: "Geometric primitives",
|
|
12099
12134
|
version: "1",
|
|
@@ -12150,7 +12185,7 @@ hl({
|
|
|
12150
12185
|
} } : {}
|
|
12151
12186
|
}))
|
|
12152
12187
|
});
|
|
12153
|
-
var
|
|
12188
|
+
var El = {
|
|
12154
12189
|
background: {
|
|
12155
12190
|
color: "#0a111a",
|
|
12156
12191
|
glow: "#1c2b39",
|
|
@@ -12195,17 +12230,17 @@ var Tl = {
|
|
|
12195
12230
|
hint: !0
|
|
12196
12231
|
}
|
|
12197
12232
|
};
|
|
12198
|
-
function
|
|
12233
|
+
function Dl(e, t) {
|
|
12199
12234
|
let n = { ...e };
|
|
12200
12235
|
if (!t || typeof t != "object") return n;
|
|
12201
|
-
for (let [r, i] of Object.entries(t)) n[r] = i && typeof i == "object" && !Array.isArray(i) ?
|
|
12236
|
+
for (let [r, i] of Object.entries(t)) n[r] = i && typeof i == "object" && !Array.isArray(i) ? Dl(e?.[r] || {}, i) : i;
|
|
12202
12237
|
return n;
|
|
12203
12238
|
}
|
|
12204
|
-
function
|
|
12239
|
+
function Ol(e) {
|
|
12205
12240
|
let t = e && typeof e == "object" ? { ...e } : {};
|
|
12206
|
-
return typeof e == "string" ? t.background = { color: e } : typeof t.background == "string" && (t.background = { color: t.background }), El
|
|
12241
|
+
return typeof e == "string" ? t.background = { color: e } : typeof t.background == "string" && (t.background = { color: t.background }), Dl(El, t);
|
|
12207
12242
|
}
|
|
12208
|
-
function
|
|
12243
|
+
function kl(e) {
|
|
12209
12244
|
if (!e || typeof e != "object") return "directed";
|
|
12210
12245
|
let t = String(e.mode || e.visual || e.render || e.type || e.direction || "").trim().toLowerCase().replace(/[_\s]+/g, "-");
|
|
12211
12246
|
return e.bidirectional === !0 || [
|
|
@@ -12220,7 +12255,7 @@ function Ol(e) {
|
|
|
12220
12255
|
"failed"
|
|
12221
12256
|
].includes(t) ? "broken" : "directed";
|
|
12222
12257
|
}
|
|
12223
|
-
var
|
|
12258
|
+
var Al = [":host{display:block;position:relative;height:var(--lc-height,680px);min-height:420px;color:var(--lc-panel-title,#e9f0f5);font:14px Inter,system-ui,-apple-system,sans-serif;background:var(--lc-bg,#0a111a);border:1px solid #294252;border-radius:12px;overflow:hidden;contain:content}", "*{box-sizing:border-box}.atlas{display:grid;grid-template-columns:minmax(0,1fr) 300px;height:100%}.atlas[data-panel=hidden]{grid-template-columns:1fr}.viewport{position:relative;min-width:0;overflow:hidden;background:radial-gradient(ellipse at 50% 45%,var(--lc-bg-glow,#1c2b39),var(--lc-bg-fade,#0a111a) 82%)}canvas{display:block;width:100%;height:100%;cursor:grab;touch-action:none}.toolbar{position:absolute;z-index:10;bottom:28px;left:50%;transform:translateX(-50%);display:flex;gap:3px;padding:6px;background:var(--lc-toolbar-bg,#15232fe8);border:1px solid var(--lc-toolbar-border,#3a5062);border-radius:8px;white-space:nowrap}.toolbar[data-hidden=true],.toolbar[hidden],.panel[data-hidden=true],.panel[hidden],.crumbs[data-hidden=true],.crumbs[hidden],.hint[data-hidden=true],.hint[hidden]{display:none!important}.toolbar button{height:30px;padding:0 9px;border:0;border-radius:5px;background:none;color:var(--lc-toolbar-text,#dbe7ec);cursor:pointer}.toolbar button:hover,.toolbar button.active{background:var(--lc-toolbar-active,#1f3d4b);color:var(--lc-toolbar-active-text,#c5f2e9)}.toolbar i{display:block;width:1px;margin:2px 3px;background:#38515f}.hint{position:absolute;z-index:9;top:8px;bottom:auto;left:0;right:0;text-align:center;padding:2px 8px;font-size:11px;line-height:16px;color:var(--lc-hint,#8da6b8);pointer-events:none}.panel{overflow:auto;padding:24px 20px;background:var(--lc-panel-bg,linear-gradient(140deg,#182633,#0e1925 65%));border-left:1px solid var(--lc-panel-border,#2a3a48)}.panel h2{font-size:26px;line-height:1.12;font-weight:470;margin:12px 0;color:var(--lc-panel-title,#e9f0f5)}.panel h3{font-size:11px;letter-spacing:1.4px;color:#91aabd;margin:24px 0 10px}.panel p{font-size:14px;line-height:1.55;color:var(--lc-panel-text,#b5c6d2)}.panel .eyebrow{font-size:11px;letter-spacing:1.7px;color:#6ad7c0}.panel .sub{font-size:13px;color:#8fa8bd;margin-bottom:16px}.panel .external-link{display:inline-flex;align-items:center;gap:6px;margin:2px 0 12px;color:#6ad7c0;font-size:13px;font-weight:600;text-decoration:none}.panel .external-link:hover{text-decoration:underline}.panel button{display:block;width:100%;padding:10px 0;text-align:left;background:none;border:0;border-bottom:1px solid var(--lc-panel-border,#2a3a48);color:#d9e7eb;cursor:pointer}.panel button:hover{color:#6ad7c0}.panel .relation{padding:10px 0;border-bottom:1px solid var(--lc-panel-border,#2a3a48)}.panel .relation strong{display:block;font-weight:550}.panel .relation small{display:block;color:#86a6b9;font-size:12px;margin-top:4px}.panel .back{color:#9db7c8;font-size:13px}.panel .crumbs{display:flex;flex-wrap:wrap;gap:5px;align-items:center;margin:0 0 12px}.panel .crumbs button{display:inline;width:auto;padding:3px 7px;border:0;border-radius:4px;background:var(--lc-crumb-bg,#142733);color:var(--lc-crumb-text,#91b6c7);font-size:12px}.panel .crumbs button.current{background:var(--lc-crumb-active,#1c4a4d);color:var(--lc-crumb-active-text,#c5f2e9)}.panel .note{border-top:1px solid var(--lc-panel-border,#2a3a48);padding-top:16px;margin-top:22px;font-size:12px;color:#7692a6}.error{position:absolute;inset:20%;padding:18px;background:#172b3b;border:1px solid #7896a9;line-height:1.5;z-index:4}@media(max-width:900px){.toolbar{gap:0}.toolbar button{padding:0 6px;font-size:12px}}@media(max-width:760px){:host{height:680px}.atlas{grid-template-columns:1fr;grid-template-rows:minmax(420px,1fr) auto}.panel{max-height:250px;border-left:0;border-top:1px solid var(--lc-panel-border,#2a3a48);padding:18px}.toolbar{bottom:24px}.hint{top:8px;bottom:auto;display:block}}"].join(""), jl = ".toolbar{max-width:calc(100% - 16px);overflow:visible}.toolbar-group{display:flex;align-items:center;gap:2px}.toolbar-group+.toolbar-group{padding-left:6px;border-left:1px solid #38515f}.toolbar .toolbar-icon{display:grid;width:30px;padding:0;place-items:center}.toolbar-icon svg,.toolbar-menu>summary svg{width:16px;height:16px;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}.toolbar-menu{position:relative}.toolbar-menu>summary{display:flex;align-items:center;height:30px;padding:0 8px;gap:6px;border-radius:5px;color:var(--lc-toolbar-text,#dbe7ec);cursor:pointer;list-style:none;user-select:none}.toolbar-menu>summary::-webkit-details-marker{display:none}.toolbar-menu>summary:hover,.toolbar-menu[open]>summary{background:var(--lc-toolbar-active,#1f3d4b);color:var(--lc-toolbar-active-text,#c5f2e9)}.toolbar-menu-status{max-width:92px;overflow:hidden;font-size:11px;text-overflow:ellipsis;white-space:nowrap}.toolbar-menu-chevron{width:10px;height:10px!important;transition:transform .16s ease}.toolbar-menu[open] .toolbar-menu-chevron{transform:rotate(180deg)}.toolbar-popover{position:absolute;right:0;bottom:calc(100% + 8px);display:grid;min-width:218px;padding:6px;border:1px solid var(--lc-toolbar-border,#3a5062);border-radius:9px;background:var(--lc-toolbar-bg,#15232ff7);box-shadow:0 14px 36px #0009}.toolbar-popover-title{padding:7px 9px 5px;color:var(--lc-hint,#8da6b8);font-size:9px;font-weight:700;letter-spacing:.1em;text-transform:uppercase}.toolbar .toolbar-option{display:grid;grid-template-columns:minmax(0,1fr) 18px;align-items:center;width:100%;height:auto;min-height:34px;padding:7px 9px;text-align:left}.toolbar-option span:first-child{overflow:hidden;text-overflow:ellipsis}.toolbar-option-check{color:var(--lc-toolbar-active-text,#c5f2e9);font-weight:700;text-align:center;visibility:hidden}.toolbar-option.active .toolbar-option-check{visibility:visible}.toolbar-option-separator{height:1px;margin:5px 7px;background:#38515f}.toolbar button[disabled]{opacity:.42;cursor:not-allowed}@media(max-width:620px){.toolbar-menu-status{display:none}.toolbar-menu>summary{width:30px;padding:0;justify-content:center}.toolbar-menu-chevron{display:none}.toolbar-group+.toolbar-group{padding-left:3px}.toolbar-popover{right:-4px}}", Ml = [
|
|
12224
12259
|
".viewport>.atlas-print-snapshot{display:none!important}",
|
|
12225
12260
|
"@media print{",
|
|
12226
12261
|
":host{-webkit-print-color-adjust:exact;print-color-adjust:exact;break-inside:avoid;page-break-inside:avoid}",
|
|
@@ -12229,17 +12264,17 @@ var kl = [":host{display:block;position:relative;height:var(--lc-height,680px);m
|
|
|
12229
12264
|
":host([data-lc-print-ready]) .viewport>canvas:not(.atlas-print-snapshot){display:none!important}",
|
|
12230
12265
|
":host([data-lc-print-ready]) .viewport>.atlas-print-snapshot{display:block!important;width:100%;height:100%}",
|
|
12231
12266
|
"}"
|
|
12232
|
-
].join(""),
|
|
12233
|
-
minus:
|
|
12234
|
-
plus:
|
|
12235
|
-
fit:
|
|
12236
|
-
front:
|
|
12237
|
-
view:
|
|
12238
|
-
relations:
|
|
12239
|
-
focus:
|
|
12240
|
-
chevron:
|
|
12241
|
-
},
|
|
12242
|
-
function
|
|
12267
|
+
].join(""), Nl = (e, t = "0 0 24 24") => `<svg viewBox="${t}" aria-hidden="true">${e}</svg>`, Pl = {
|
|
12268
|
+
minus: Nl("<path d=\"M6 12h12\"/>"),
|
|
12269
|
+
plus: Nl("<path d=\"M12 6v12M6 12h12\"/>"),
|
|
12270
|
+
fit: Nl("<path d=\"M9 4H4v5M15 4h5v5M20 15v5h-5M4 15v5h5\"/><circle cx=\"12\" cy=\"12\" r=\"2.5\"/>"),
|
|
12271
|
+
front: Nl("<rect x=\"4\" y=\"5\" width=\"16\" height=\"14\" rx=\"1.5\"/><path d=\"M8 16h8\"/>"),
|
|
12272
|
+
view: Nl("<path d=\"M2.5 12s3.5-5 9.5-5 9.5 5 9.5 5-3.5 5-9.5 5-9.5-5-9.5-5Z\"/><circle cx=\"12\" cy=\"12\" r=\"2.5\"/>"),
|
|
12273
|
+
relations: Nl("<circle cx=\"5\" cy=\"6\" r=\"2\"/><circle cx=\"19\" cy=\"7\" r=\"2\"/><circle cx=\"12\" cy=\"18\" r=\"2\"/><path d=\"m6.8 6.3 10.2.5M6.2 7.7l4.6 8.6m6.8-7.5-4.4 7.5\"/>"),
|
|
12274
|
+
focus: Nl("<circle cx=\"12\" cy=\"12\" r=\"7\"/><circle cx=\"12\" cy=\"12\" r=\"2.5\"/><path d=\"M12 2v3M12 19v3M2 12h3M19 12h3\"/>"),
|
|
12275
|
+
chevron: Nl("<path d=\"m8 10 4 4 4-4\"/>")
|
|
12276
|
+
}, Fl = (e, t, n = !1) => `<button class="toolbar-option${n ? " active" : ""}" data-action="${e}" aria-pressed="${n}"><span>${t}</span><span class="toolbar-option-check" aria-hidden="true">✓</span></button>`, Il = (e, t, n, r, i) => `<details class="toolbar-menu" data-toolbar-menu="${e}"><summary aria-label="${n}" title="${n}">${t}<span class="toolbar-menu-status" data-toolbar-status="${e}">${r}</span>${Pl.chevron}</summary><div class="toolbar-popover" role="menu"><div class="toolbar-popover-title">${n}</div>${i}</div></details>`, Ll = `<div class="atlas"><section class="viewport"><canvas tabindex="0" aria-label="Modelo 3D interactivo"></canvas><div class="toolbar" role="toolbar" aria-label="Controles de la vista"><div class="toolbar-group" data-toolbar-group="camera"><button class="toolbar-icon" data-action="minus" aria-label="Alejar" title="Alejar">${Pl.minus}</button><button class="toolbar-icon" data-action="plus" aria-label="Acercar" title="Acercar">${Pl.plus}</button><button class="toolbar-icon" data-action="fit" aria-label="Encuadrar todo el modelo" title="Encuadrar todo el modelo">${Pl.fit}</button><button class="toolbar-icon" data-action="front" aria-label="Vista frontal" title="Vista frontal">${Pl.front}</button></div><div class="toolbar-group" data-toolbar-group="view">${Il("view", Pl.view, "Vista", "Vista", Fl("labels", "Etiquetas", !0) + Fl("panel", "Información", !0) + Fl("item-facing", "Caras a cámara", !0) + "<div class=\"toolbar-option-separator\"></div>" + Fl("open-all", "Abrir todos") + Fl("close-all", "Cerrar todos"))}</div><div class="toolbar-group" data-toolbar-group="relations">${Il("relations", Pl.relations, "Relaciones", "Selección", Fl("relations-all", "Todas") + Fl("relations-selected", "Selección", !0) + Fl("relations-none", "Ocultar"))}</div><div class="toolbar-group" data-toolbar-group="focus">${Il("focus", Pl.focus, "Foco", "Todo", Fl("focus-all", "Todo", !0) + Fl("focus-dim", "Conectados") + Fl("focus-hide", "Aislar") + "<div class=\"toolbar-option-separator\"></div>" + Fl("focus-selection", "Enfocar selección") + Fl("focus-layout", "Reorganizar visibles"))}</div></div><div class="hint">Gira: arrastra · Pan: botón derecho / ⇧+arrastra / 2 dedos · Zoom: rueda o pellizco · Selecciona: clic · Enfoca: doble clic</div></section><aside class="panel" aria-live="polite"></aside></div>`;
|
|
12277
|
+
function Rl(e) {
|
|
12243
12278
|
return String(e ?? "").replace(/[&<>"']/g, (e) => ({
|
|
12244
12279
|
"&": "&",
|
|
12245
12280
|
"<": "<",
|
|
@@ -12248,17 +12283,17 @@ function Ll(e) {
|
|
|
12248
12283
|
"'": "'"
|
|
12249
12284
|
})[e]);
|
|
12250
12285
|
}
|
|
12251
|
-
function
|
|
12286
|
+
function zl(e) {
|
|
12252
12287
|
let t = String(e ?? "").trim();
|
|
12253
12288
|
if (!t) return "";
|
|
12254
12289
|
try {
|
|
12255
12290
|
let e = new URL(t, globalThis.location?.href);
|
|
12256
|
-
return ["http:", "https:"].includes(e.protocol) ? "<a class=\"external-link\" href=\"" +
|
|
12291
|
+
return ["http:", "https:"].includes(e.protocol) ? "<a class=\"external-link\" href=\"" + Rl(e.href) + "\" target=\"_blank\" rel=\"noopener noreferrer\">Open documentation ↗</a>" : "";
|
|
12257
12292
|
} catch {
|
|
12258
12293
|
return "";
|
|
12259
12294
|
}
|
|
12260
12295
|
}
|
|
12261
|
-
function
|
|
12296
|
+
function Bl(e) {
|
|
12262
12297
|
let t = e && typeof e == "object" ? e : {}, n = Array.isArray(t.entities) ? t.entities.map((e) => ({
|
|
12263
12298
|
...e,
|
|
12264
12299
|
p: Array.isArray(e.p) ? e.p : [
|
|
@@ -12275,14 +12310,14 @@ function zl(e) {
|
|
|
12275
12310
|
from: e[0],
|
|
12276
12311
|
to: e[1],
|
|
12277
12312
|
label: e[2] || "",
|
|
12278
|
-
mode:
|
|
12313
|
+
mode: kl({ mode: e[3] }),
|
|
12279
12314
|
index: t
|
|
12280
12315
|
} : {
|
|
12281
12316
|
...e,
|
|
12282
12317
|
from: e.from,
|
|
12283
12318
|
to: e.to,
|
|
12284
12319
|
label: e.label || "",
|
|
12285
|
-
mode:
|
|
12320
|
+
mode: kl(e),
|
|
12286
12321
|
index: t
|
|
12287
12322
|
}) : [];
|
|
12288
12323
|
return {
|
|
@@ -12291,12 +12326,12 @@ function zl(e) {
|
|
|
12291
12326
|
...el,
|
|
12292
12327
|
...t.palette || {}
|
|
12293
12328
|
},
|
|
12294
|
-
theme:
|
|
12329
|
+
theme: Ol(t.theme || t.styles),
|
|
12295
12330
|
entities: n,
|
|
12296
12331
|
relations: r
|
|
12297
12332
|
};
|
|
12298
12333
|
}
|
|
12299
|
-
function
|
|
12334
|
+
function Vl(e, t, n = [
|
|
12300
12335
|
1,
|
|
12301
12336
|
1,
|
|
12302
12337
|
1
|
|
@@ -12315,7 +12350,7 @@ function Bl(e, t, n = [
|
|
|
12315
12350
|
});
|
|
12316
12351
|
return s.center(), s;
|
|
12317
12352
|
}
|
|
12318
|
-
function
|
|
12353
|
+
function Hl(e, t, n) {
|
|
12319
12354
|
let r = new ui();
|
|
12320
12355
|
for (let t = 0; t < e; t++) {
|
|
12321
12356
|
let n = Math.PI / 2 + t * Math.PI * 2 / e, i = new V(Math.cos(n) * .5, Math.sin(n) * .5);
|
|
@@ -12332,7 +12367,7 @@ function Vl(e, t, n) {
|
|
|
12332
12367
|
});
|
|
12333
12368
|
return i.rotateX(Math.PI / 2), i.center(), i;
|
|
12334
12369
|
}
|
|
12335
|
-
function
|
|
12370
|
+
function Ul(e, t, n, r) {
|
|
12336
12371
|
let i = Math.min(.22, Math.max(0, Number(n) || 0));
|
|
12337
12372
|
if (!i) return new Er(t, e, 1, 32);
|
|
12338
12373
|
let a = [new V(0, -.5)];
|
|
@@ -12349,7 +12384,7 @@ function Hl(e, t, n, r) {
|
|
|
12349
12384
|
}
|
|
12350
12385
|
return a.push(new V(0, .5)), new Qi(a, 32);
|
|
12351
12386
|
}
|
|
12352
|
-
function
|
|
12387
|
+
function Wl(e, t) {
|
|
12353
12388
|
if (!t) return e;
|
|
12354
12389
|
let n = Math.min(.72, Math.max(0, Number(t) * 3)), r = e.attributes.position;
|
|
12355
12390
|
for (let e = 0; e < r.count; e++) {
|
|
@@ -12358,36 +12393,36 @@ function Ul(e, t) {
|
|
|
12358
12393
|
}
|
|
12359
12394
|
return r.needsUpdate = !0, e.computeVertexNormals(), e;
|
|
12360
12395
|
}
|
|
12361
|
-
function
|
|
12396
|
+
function Gl(e, t = 0, n = 4, r = [
|
|
12362
12397
|
1,
|
|
12363
12398
|
1,
|
|
12364
12399
|
1
|
|
12365
12400
|
]) {
|
|
12366
12401
|
let i = Number(t) || 0, a = Math.max(2, Math.round(Number(n) || 4));
|
|
12367
12402
|
switch (e) {
|
|
12368
|
-
case "cylinder": return i ?
|
|
12369
|
-
case "cone": return i ?
|
|
12403
|
+
case "cylinder": return i ? Ul(.5, .5, i, a) : new Er(.5, .5, 1, 32);
|
|
12404
|
+
case "cone": return i ? Ul(0, .5, i, a) : new Dr(.5, 1, 32);
|
|
12370
12405
|
case "frustum-cone":
|
|
12371
|
-
case "truncated-cone": return i ?
|
|
12406
|
+
case "truncated-cone": return i ? Ul(.28, .5, i, a) : new Er(.28, .5, 1, 32);
|
|
12372
12407
|
case "frustum-pyramid":
|
|
12373
12408
|
case "truncated-pyramid": return new Er(.28, .5, 1, 4);
|
|
12374
12409
|
case "frustum-triangle": return new Er(.28, .5, 1, 3);
|
|
12375
|
-
case "prism": return i ?
|
|
12376
|
-
case "pyramid-square": return i ?
|
|
12377
|
-
case "pyramid-triangle": return i ?
|
|
12410
|
+
case "prism": return i ? Hl(6, i, a) : new Er(.5, .5, 1, 6);
|
|
12411
|
+
case "pyramid-square": return i ? Wl(new Dr(.5, 1, 4), i) : new Dr(.5, 1, 4);
|
|
12412
|
+
case "pyramid-triangle": return i ? Wl(new Dr(.5, 1, 3), i) : new Dr(.5, 1, 3);
|
|
12378
12413
|
case "sphere": return new ta(.5, 24, 16);
|
|
12379
|
-
case "octahedron": return
|
|
12380
|
-
case "dodecahedron": return
|
|
12381
|
-
case "icosahedron": return
|
|
12382
|
-
default: return i ?
|
|
12414
|
+
case "octahedron": return Wl(new $i(.5), i);
|
|
12415
|
+
case "dodecahedron": return Wl(new kr(.5), i);
|
|
12416
|
+
case "icosahedron": return Wl(new Zi(.5), i);
|
|
12417
|
+
default: return i ? Vl(i, a, r) : new Nn(1, 1, 1);
|
|
12383
12418
|
}
|
|
12384
12419
|
}
|
|
12385
|
-
function
|
|
12420
|
+
function Kl(e) {
|
|
12386
12421
|
e.computeBoundingBox();
|
|
12387
12422
|
let t = e.boundingBox?.getSize(new U());
|
|
12388
12423
|
return !t || !t.x || !t.y || !t.z ? e : (e.scale(1 / t.x, 1 / t.y, 1 / t.z), e.computeBoundingBox(), e);
|
|
12389
12424
|
}
|
|
12390
|
-
function
|
|
12425
|
+
function ql(e, t) {
|
|
12391
12426
|
let n = e.geometryOptions || e.geometry_options || e.parameters || {}, r = {};
|
|
12392
12427
|
for (let [e, n] of Object.entries(t?.parameters || {})) n && Object.hasOwn(n, "default") && (r[e] = n.default);
|
|
12393
12428
|
return {
|
|
@@ -12395,10 +12430,10 @@ function Kl(e, t) {
|
|
|
12395
12430
|
...n && typeof n == "object" ? n : {}
|
|
12396
12431
|
};
|
|
12397
12432
|
}
|
|
12398
|
-
function
|
|
12433
|
+
function Jl(e, t, n) {
|
|
12399
12434
|
return typeof e != "string" || !e ? n : t[e] || e;
|
|
12400
12435
|
}
|
|
12401
|
-
function
|
|
12436
|
+
function Yl(e, t = "#ffffff", n = "transparent") {
|
|
12402
12437
|
let r = document.createElement("canvas");
|
|
12403
12438
|
r.width = 256, r.height = 256;
|
|
12404
12439
|
let i = r.getContext("2d");
|
|
@@ -12406,8 +12441,8 @@ function Jl(e, t = "#ffffff", n = "transparent") {
|
|
|
12406
12441
|
let a = new Cr(r);
|
|
12407
12442
|
return a.colorSpace = y, a;
|
|
12408
12443
|
}
|
|
12409
|
-
var
|
|
12410
|
-
function
|
|
12444
|
+
var Xl = /^[AaCcHhLlMmQqSsTtVvZz]$/, Zl = /[-+]?(?:\d*\.\d+|\d+\.?)(?:[eE][-+]?\d+)?|[AaCcHhLlMmQqSsTtVvZz]/g;
|
|
12445
|
+
function Ql(e, t, n, r, i, a, o, s, c) {
|
|
12411
12446
|
let l = Math.abs(Number(n)), u = Math.abs(Number(r));
|
|
12412
12447
|
if (!l || !u || e === s && t === c) return [[s, c]];
|
|
12413
12448
|
let d = Number(i || 0) * Math.PI / 180, f = Math.cos(d), p = Math.sin(d), m = (e - s) / 2, h = (t - c) / 2, g = f * m + p * h, _ = -p * m + f * h, v = Math.sqrt(Math.max(1, g * g / (l * l) + _ * _ / (u * u)));
|
|
@@ -12423,12 +12458,12 @@ function Zl(e, t, n, r, i, a, o, s, c) {
|
|
|
12423
12458
|
return [w + f * l * r - p * u * i, T + p * l * r + f * u * i];
|
|
12424
12459
|
});
|
|
12425
12460
|
}
|
|
12426
|
-
function
|
|
12427
|
-
let t = String(e || "").match(
|
|
12461
|
+
function $l(e) {
|
|
12462
|
+
let t = String(e || "").match(Zl) || [], n = new qa(), r = 0, i = "", a = "", o = 0, s = 0, c = 0, l = 0, u = 0, d = 0, f = 0, p = 0, m = () => r < t.length && !Xl.test(t[r]), h = () => Number(t[r++]), g = () => {
|
|
12428
12463
|
let e = t[r];
|
|
12429
12464
|
return /^[01].+/.test(e) ? (t[r] = e.slice(1), e[0] === "1") : h() !== 0;
|
|
12430
12465
|
}, _ = (e, t, n) => [n ? o + e : e, n ? s + t : t];
|
|
12431
|
-
for (; r < t.length && (
|
|
12466
|
+
for (; r < t.length && (Xl.test(t[r]) && (i = t[r++]), i);) {
|
|
12432
12467
|
let e = i.toLowerCase(), t = i === e;
|
|
12433
12468
|
if (e === "z") {
|
|
12434
12469
|
n.currentPath?.closePath(), o = c, s = l, a = i, i = "";
|
|
@@ -12468,7 +12503,7 @@ function Ql(e) {
|
|
|
12468
12503
|
}
|
|
12469
12504
|
else if (e === "a") for (; m();) {
|
|
12470
12505
|
let e = h(), r = h(), c = h(), l = g(), u = g(), [d, f] = _(h(), h(), t);
|
|
12471
|
-
for (let [t, i] of
|
|
12506
|
+
for (let [t, i] of Ql(o, s, e, r, c, l, u, d, f)) n.lineTo(t, -i);
|
|
12472
12507
|
o = d, s = f, a = i;
|
|
12473
12508
|
}
|
|
12474
12509
|
else break;
|
|
@@ -12476,12 +12511,12 @@ function Ql(e) {
|
|
|
12476
12511
|
}
|
|
12477
12512
|
return n;
|
|
12478
12513
|
}
|
|
12479
|
-
function
|
|
12514
|
+
function eu(e, t = {}) {
|
|
12480
12515
|
let n = String(e || "").match(/<path\b[^>]*>/gi) || [], r = [];
|
|
12481
12516
|
for (let e of n) {
|
|
12482
12517
|
let t = e.match(/\bd\s*=\s*(["'])([\s\S]*?)\1/i);
|
|
12483
12518
|
if (!t) continue;
|
|
12484
|
-
let n =
|
|
12519
|
+
let n = $l(t[2]);
|
|
12485
12520
|
r.push(...n.toShapes(!0, !1));
|
|
12486
12521
|
}
|
|
12487
12522
|
if (!r.length) return new Nn(1, 1, .12);
|
|
@@ -12496,11 +12531,11 @@ function $l(e, t = {}) {
|
|
|
12496
12531
|
});
|
|
12497
12532
|
return a.center(), a;
|
|
12498
12533
|
}
|
|
12499
|
-
function
|
|
12500
|
-
return e.shape === "plane" ? new ea(1, 1) : e.shape === "svg-extrude" ?
|
|
12534
|
+
function tu(e) {
|
|
12535
|
+
return e.shape === "plane" ? new ea(1, 1) : e.shape === "svg-extrude" ? eu(e.svg, e) : Gl(e.shape || e.geometry || "box", e.radius, e.segments, e.size);
|
|
12501
12536
|
}
|
|
12502
|
-
function
|
|
12503
|
-
let a =
|
|
12537
|
+
function nu(e, t, n, r, i) {
|
|
12538
|
+
let a = ql(t, e), o = {
|
|
12504
12539
|
...n,
|
|
12505
12540
|
...e.palette || {},
|
|
12506
12541
|
...t.geometryPalette || t.geometry_palette || {}
|
|
@@ -12515,11 +12550,11 @@ function tu(e, t, n, r, i) {
|
|
|
12515
12550
|
if (!c.length) throw Error(`Geometry '${e.id}' did not produce any parts.`);
|
|
12516
12551
|
let l = new Qn(), u = [], d = [];
|
|
12517
12552
|
for (let a of c) {
|
|
12518
|
-
let s =
|
|
12519
|
-
|
|
12520
|
-
let c = a.color || "component", f =
|
|
12553
|
+
let s = tu(a);
|
|
12554
|
+
Kl(s);
|
|
12555
|
+
let c = a.color || "component", f = Jl(c, o, n.component || el.component), p = a.emissive || "#000000", m = new ia({
|
|
12521
12556
|
color: f,
|
|
12522
|
-
emissive:
|
|
12557
|
+
emissive: Jl(p, o, "#000000"),
|
|
12523
12558
|
emissiveIntensity: Number.isFinite(Number(a.emissiveIntensity)) ? Math.max(0, Number(a.emissiveIntensity)) : 0,
|
|
12524
12559
|
roughness: Number.isFinite(Number(a.roughness)) ? Number(a.roughness) : .72,
|
|
12525
12560
|
metalness: Number.isFinite(Number(a.metalness)) ? Number(a.metalness) : .06,
|
|
@@ -12590,7 +12625,7 @@ function tu(e, t, n, r, i) {
|
|
|
12590
12625
|
n.src = _;
|
|
12591
12626
|
}
|
|
12592
12627
|
})(), m.map.colorSpace = y, m.needsUpdate = !0;
|
|
12593
|
-
} else g != null && g !== "" && (m.map =
|
|
12628
|
+
} else g != null && g !== "" && (m.map = Yl(g, Jl(a.iconColor || "#ffffff", o, "#ffffff"), Jl(a.iconBackground || "transparent", o, "transparent")), m.transparent = !0, m.needsUpdate = !0);
|
|
12594
12629
|
if (h = new An(s, m), h.position.fromArray(Array.isArray(a.position) ? a.position : [
|
|
12595
12630
|
0,
|
|
12596
12631
|
0,
|
|
@@ -12627,7 +12662,46 @@ function tu(e, t, n, r, i) {
|
|
|
12627
12662
|
descriptor: s
|
|
12628
12663
|
};
|
|
12629
12664
|
}
|
|
12630
|
-
|
|
12665
|
+
var ru = Object.freeze([
|
|
12666
|
+
"auto",
|
|
12667
|
+
"top",
|
|
12668
|
+
"bottom",
|
|
12669
|
+
"left",
|
|
12670
|
+
"right"
|
|
12671
|
+
]);
|
|
12672
|
+
function iu(e) {
|
|
12673
|
+
let t = String(e || "auto").trim().toLowerCase();
|
|
12674
|
+
return ru.includes(t) ? t : "auto";
|
|
12675
|
+
}
|
|
12676
|
+
function au(e, t, n, r, i = .025) {
|
|
12677
|
+
let a = iu(e);
|
|
12678
|
+
if (a === "auto") return null;
|
|
12679
|
+
let o = Math.max(0, Number(t?.x) || 0), s = Math.max(0, Number(t?.y) || 0);
|
|
12680
|
+
Math.max(0, Number(n) || 0);
|
|
12681
|
+
let c = Math.max(0, Number(r) || 0), l = Math.max(0, Number(i) || 0);
|
|
12682
|
+
return a === "top" ? {
|
|
12683
|
+
x: 0,
|
|
12684
|
+
y: s / 2 + l + c / 2,
|
|
12685
|
+
frontRotation: 0,
|
|
12686
|
+
backRotation: 0
|
|
12687
|
+
} : a === "bottom" ? {
|
|
12688
|
+
x: 0,
|
|
12689
|
+
y: -s / 2 - l - c / 2,
|
|
12690
|
+
frontRotation: 0,
|
|
12691
|
+
backRotation: 0
|
|
12692
|
+
} : a === "left" ? {
|
|
12693
|
+
x: -o / 2 - l - c / 2,
|
|
12694
|
+
y: 0,
|
|
12695
|
+
frontRotation: Math.PI / 2,
|
|
12696
|
+
backRotation: -Math.PI / 2
|
|
12697
|
+
} : {
|
|
12698
|
+
x: o / 2 + l + c / 2,
|
|
12699
|
+
y: 0,
|
|
12700
|
+
frontRotation: -Math.PI / 2,
|
|
12701
|
+
backRotation: Math.PI / 2
|
|
12702
|
+
};
|
|
12703
|
+
}
|
|
12704
|
+
function ou(e, t, n, r = "", i = !0) {
|
|
12631
12705
|
let a = document.createElement("canvas"), o = a.getContext("2d"), s = n.x * .88, c = Math.min(.82, n.y * .64);
|
|
12632
12706
|
a.width = Math.ceil(s * 320), a.height = Math.ceil(c * 320), o.imageSmoothingEnabled = !0, o.imageSmoothingQuality = "high", o.clearRect(0, 0, a.width, a.height);
|
|
12633
12707
|
let l = a.height * .62;
|
|
@@ -12664,7 +12738,7 @@ function nu(e, t, n, r = "", i = !0) {
|
|
|
12664
12738
|
let C = new An(b, v);
|
|
12665
12739
|
C.rotation.y = Math.PI, C.position.set(0, n.y / 2 - .09 - c / 2, -n.z / 2 - .012);
|
|
12666
12740
|
let w = new An(b, v.clone());
|
|
12667
|
-
w.rotation.x = -Math.PI / 2, w.position.set(0, n.y / 2 + .012, 0), w.visible =
|
|
12741
|
+
w.rotation.x = -Math.PI / 2, w.position.set(0, n.y / 2 + .012, 0), w.visible = xl(r), x.add(S, C, w);
|
|
12668
12742
|
for (let e of [
|
|
12669
12743
|
S,
|
|
12670
12744
|
C,
|
|
@@ -12672,7 +12746,7 @@ function nu(e, t, n, r = "", i = !0) {
|
|
|
12672
12746
|
]) e.renderOrder = 20, e.frustumCulled = !1, e.material.depthTest = !0, e.material.depthWrite = !1, e.material.transparent = !0;
|
|
12673
12747
|
return x.renderOrder = 20, x.frustumCulled = !1, x.userData.front = S, x.userData.back = C, x.userData.top = w, x.userData.height = c, x.userData.width = s, x.userData.textOffsetX = h, x.userData.textOffsetY = g, x.userData.nodeLabel = !0, x;
|
|
12674
12748
|
}
|
|
12675
|
-
function
|
|
12749
|
+
function su(e, t, n, r = globalThis.document) {
|
|
12676
12750
|
if (!e || !t || !n || !r?.createElement) return null;
|
|
12677
12751
|
try {
|
|
12678
12752
|
e.render(t, n);
|
|
@@ -12694,7 +12768,7 @@ function ru(e, t, n, r = globalThis.document) {
|
|
|
12694
12768
|
return null;
|
|
12695
12769
|
}
|
|
12696
12770
|
}
|
|
12697
|
-
var
|
|
12771
|
+
var cu = class extends HTMLElement {
|
|
12698
12772
|
static version = $c;
|
|
12699
12773
|
static get observedAttributes() {
|
|
12700
12774
|
return [
|
|
@@ -12712,23 +12786,23 @@ var iu = class extends HTMLElement {
|
|
|
12712
12786
|
];
|
|
12713
12787
|
}
|
|
12714
12788
|
static registerGeometryPack(e) {
|
|
12715
|
-
return
|
|
12789
|
+
return gl(e);
|
|
12716
12790
|
}
|
|
12717
12791
|
static unregisterGeometryPack(e) {
|
|
12718
|
-
return
|
|
12792
|
+
return _l(e);
|
|
12719
12793
|
}
|
|
12720
12794
|
static getGeometryCatalog() {
|
|
12721
|
-
return
|
|
12795
|
+
return vl();
|
|
12722
12796
|
}
|
|
12723
12797
|
static getGeometryPackCatalog() {
|
|
12724
|
-
return
|
|
12798
|
+
return yl();
|
|
12725
12799
|
}
|
|
12726
12800
|
constructor() {
|
|
12727
|
-
super(), this.attachShadow({ mode: "open" }), this.shadowRoot.innerHTML = "<style>" +
|
|
12801
|
+
super(), this.attachShadow({ mode: "open" }), this.shadowRoot.innerHTML = "<style>" + Al + jl + Ml + "</style>" + Ll, this.canvas = this.shadowRoot.querySelector("canvas"), this.panel = this.shadowRoot.querySelector(".panel"), this.scene = new tr(), this.camera = new Kn(30, 1, .1, 2e3), this.cameraPosition = new U(), this.cameraTarget = new U(), this.raycaster = new Wa(), this.pointer = new V(), this.nodes = /* @__PURE__ */ new Map(), this.open = /* @__PURE__ */ new Set(), this._initialOpenContainers = /* @__PURE__ */ new Set(), this.selected = null, this.selectedRelationIndex = null, this.modelData = null, this._loading = !1, this._pendingSelection = null, this._theme = Ol(), this.relationMode = this.getAttribute("relation-mode") || "selected", this.focusFilter = Sl({
|
|
12728
12802
|
mode: this.getAttribute("focus-mode"),
|
|
12729
12803
|
effect: this.getAttribute("focus-effect"),
|
|
12730
12804
|
layout: this.getAttribute("focus-layout")
|
|
12731
|
-
}), this.selectionMode = ["internal", "event"].includes(this.getAttribute("selection-mode")) ? this.getAttribute("selection-mode") : "internal", this.selectionNavigation =
|
|
12805
|
+
}), this.selectionMode = ["internal", "event"].includes(this.getAttribute("selection-mode")) ? this.getAttribute("selection-mode") : "internal", this.selectionNavigation = Cl(this.getAttribute("selection-navigation")), this.itemFacing = wl(this.getAttribute("item-facing")), this.showShellLabels = this.getAttribute("shell-labels") !== "false", this.yaw = .37, this.pitch = .22, this.zoom = 1, this.targetZoom = 1, this.focus = new U(), this.targetFocus = new U(), this.drag = null, this.pointers = /* @__PURE__ */ new Map(), this.relationGroup = new Qn(), this.scene.add(this.relationGroup), this.relations = [], this.animationFrame = 0, this.ready = !1, this._toolbarVisible = this.getAttribute("toolbar") !== "off", this._panelVisible = this.getAttribute("panel") !== "off", this.toolbar = this.shadowRoot.querySelector(".toolbar"), this._printState = null, this._beforePrintListener = () => this.prepareForPrint(), this._afterPrintListener = () => this.restoreAfterPrint(), this._printMedia = globalThis.matchMedia?.("print") || null, this._printMediaListener = (e) => e.matches ? this.prepareForPrint() : this.restoreAfterPrint(), this._geometryRegistryListener = () => {
|
|
12732
12806
|
this.ready && this.modelData && this._build();
|
|
12733
12807
|
}, this._bindControls(), this._syncFocusToolbar(), this._syncRelationToolbar(), this._syncLabelsToolbar(), this._syncPanelToolbar(), this._syncItemFacingToolbar(), this.resizeObserver = new ResizeObserver(() => this.resize()), this.resizeObserver.observe(this.canvas);
|
|
12734
12808
|
}
|
|
@@ -12740,7 +12814,7 @@ var iu = class extends HTMLElement {
|
|
|
12740
12814
|
}
|
|
12741
12815
|
attributeChangedCallback(e, t, n) {
|
|
12742
12816
|
if (t !== n) {
|
|
12743
|
-
if (e === "height" && this.style.setProperty("--lc-height", n || "680px"), e === "relation-mode" && this.ready && this.setRelationMode(n || "selected"), e === "selection-mode" && this.setSelectionMode(n || "internal"), e === "selection-navigation" && this.setSelectionNavigation(n), e === "item-facing" &&
|
|
12817
|
+
if (e === "height" && this.style.setProperty("--lc-height", n || "680px"), e === "relation-mode" && this.ready && this.setRelationMode(n || "selected"), e === "selection-mode" && this.setSelectionMode(n || "internal"), e === "selection-navigation" && this.setSelectionNavigation(n), e === "item-facing" && wl(n) !== this.itemFacing && this.setItemFacing(n, { source: "attribute" }), e === "focus-mode" && n !== this.focusFilter.mode && this.setFocusFilter({ mode: n }), e === "focus-effect" && n !== this.focusFilter.effect && this.setFocusFilter({ effect: n }), e === "focus-layout" && n !== this.focusFilter.layout && this.setFocusFilter({ layout: n }), e === "shell-labels" && this.ready) {
|
|
12744
12818
|
let e = n !== "false";
|
|
12745
12819
|
e !== this.showShellLabels && (this.showShellLabels = e, this._build({
|
|
12746
12820
|
preserveSelection: this.selected?.id,
|
|
@@ -12783,7 +12857,7 @@ var iu = class extends HTMLElement {
|
|
|
12783
12857
|
this.setPalette(e);
|
|
12784
12858
|
}
|
|
12785
12859
|
captureFrame() {
|
|
12786
|
-
return
|
|
12860
|
+
return su(this.renderer, this.scene, this.camera, this.ownerDocument);
|
|
12787
12861
|
}
|
|
12788
12862
|
prepareForPrint() {
|
|
12789
12863
|
if (this._printState) return this;
|
|
@@ -12888,13 +12962,13 @@ var iu = class extends HTMLElement {
|
|
|
12888
12962
|
if (!e.size) return null;
|
|
12889
12963
|
for (let t of [...e]) {
|
|
12890
12964
|
let n = this.nodes.get(t);
|
|
12891
|
-
n &&
|
|
12965
|
+
n && xl(n.type) && this._descendantIds(t, e);
|
|
12892
12966
|
}
|
|
12893
12967
|
let t = new Set(e);
|
|
12894
12968
|
for (let n of this.relations) (t.has(n.from) || t.has(n.to)) && (e.add(n.from), e.add(n.to));
|
|
12895
12969
|
for (let t of [...e]) {
|
|
12896
12970
|
let n = this.nodes.get(t);
|
|
12897
|
-
n &&
|
|
12971
|
+
n && xl(n.type) && this._descendantIds(t, e);
|
|
12898
12972
|
}
|
|
12899
12973
|
for (let t of [...e]) {
|
|
12900
12974
|
let n = this.nodes.get(t)?.parent ? this.nodes.get(this.nodes.get(t).parent) : null;
|
|
@@ -12971,7 +13045,7 @@ var iu = class extends HTMLElement {
|
|
|
12971
13045
|
});
|
|
12972
13046
|
}
|
|
12973
13047
|
setFocusFilter(e = {}, t = {}) {
|
|
12974
|
-
let n =
|
|
13048
|
+
let n = Sl({
|
|
12975
13049
|
...this.focusFilter,
|
|
12976
13050
|
...e || {}
|
|
12977
13051
|
}), r = JSON.stringify(n) !== JSON.stringify(this.focusFilter);
|
|
@@ -12989,7 +13063,7 @@ var iu = class extends HTMLElement {
|
|
|
12989
13063
|
"none"
|
|
12990
13064
|
].includes(e.relationMode) && e.relationMode !== this.relationMode && this.setRelationMode(e.relationMode), Object.hasOwn(e, "selectionMode") && e.selectionMode !== this.selectionMode && this.setSelectionMode(e.selectionMode);
|
|
12991
13065
|
let t = e.navigation?.onSelect ?? e.selectionNavigation;
|
|
12992
|
-
return t != null && t !== this.selectionNavigation && this.setSelectionNavigation(t), Object.hasOwn(e, "toolbar") && e.toolbar !== !1 !== this.toolbarVisible && this.setToolbarVisible(e.toolbar !== !1), Object.hasOwn(e, "shellLabels") && e.shellLabels !== !1 !== this.showShellLabels && this.setShellLabels(e.shellLabels !== !1), Object.hasOwn(e, "itemFacing") &&
|
|
13066
|
+
return t != null && t !== this.selectionNavigation && this.setSelectionNavigation(t), Object.hasOwn(e, "toolbar") && e.toolbar !== !1 !== this.toolbarVisible && this.setToolbarVisible(e.toolbar !== !1), Object.hasOwn(e, "shellLabels") && e.shellLabels !== !1 !== this.showShellLabels && this.setShellLabels(e.shellLabels !== !1), Object.hasOwn(e, "itemFacing") && wl(e.itemFacing) !== this.itemFacing && this.setItemFacing(e.itemFacing, {
|
|
12993
13067
|
emit: !1,
|
|
12994
13068
|
source: "model"
|
|
12995
13069
|
}), e.focus && this.setFocusFilter(e.focus, { emit: !1 }), this;
|
|
@@ -13002,10 +13076,10 @@ var iu = class extends HTMLElement {
|
|
|
13002
13076
|
}));
|
|
13003
13077
|
}
|
|
13004
13078
|
_containerEntityIds() {
|
|
13005
|
-
return (this.modelData?.entities || []).filter((e) =>
|
|
13079
|
+
return (this.modelData?.entities || []).filter((e) => xl(e.type)).map((e) => e.id);
|
|
13006
13080
|
}
|
|
13007
13081
|
_declaredOpenContainerIds() {
|
|
13008
|
-
return (this.modelData?.entities || []).filter((e) =>
|
|
13082
|
+
return (this.modelData?.entities || []).filter((e) => xl(e.type) && e.open === !0).map((e) => e.id);
|
|
13009
13083
|
}
|
|
13010
13084
|
_emitContainerStateChange(e, t = {}) {
|
|
13011
13085
|
if (!e?.changed || t.emit === !1) return;
|
|
@@ -13063,7 +13137,7 @@ var iu = class extends HTMLElement {
|
|
|
13063
13137
|
}
|
|
13064
13138
|
_commitModelChange(e, t = {}, n = {}) {
|
|
13065
13139
|
let r = n.preserveSelection === !1 ? null : this.selected?.id, i = n.preserveSelection === !1 ? null : this._publicRelation(this.selectedRelationIndex), a = i?.id ?? i?.index ?? null;
|
|
13066
|
-
this.modelData =
|
|
13140
|
+
this.modelData = Bl(this.modelData);
|
|
13067
13141
|
let o = this._syncInitialContainerState({
|
|
13068
13142
|
refresh: !1,
|
|
13069
13143
|
emit: !1,
|
|
@@ -13080,7 +13154,7 @@ var iu = class extends HTMLElement {
|
|
|
13080
13154
|
}
|
|
13081
13155
|
updateModel(e = {}, t = {}) {
|
|
13082
13156
|
if (!e || typeof e != "object" || Array.isArray(e)) throw TypeError("El parche del modelo debe ser un objeto.");
|
|
13083
|
-
let n = this.modelData ||
|
|
13157
|
+
let n = this.modelData || Bl({}), r = JSON.stringify(n.render?.camera || null), i = {
|
|
13084
13158
|
...n,
|
|
13085
13159
|
...e,
|
|
13086
13160
|
palette: e.palette ? {
|
|
@@ -13091,11 +13165,11 @@ var iu = class extends HTMLElement {
|
|
|
13091
13165
|
entities: Array.isArray(e.entities) ? e.entities : n.entities,
|
|
13092
13166
|
relations: Array.isArray(e.relations) ? e.relations : n.relations
|
|
13093
13167
|
};
|
|
13094
|
-
return this.modelData =
|
|
13168
|
+
return this.modelData = Bl(i), this.theme = this.modelData.theme, this._commitModelChange("model-update", { patch: e }, t), this._applyModelRenderOptions(), JSON.stringify(this.modelData.render?.camera || null) !== r && this.modelData.render?.camera && this.setCameraView(this.modelData.render.camera, { animate: t.animateCamera !== !1 }), this;
|
|
13095
13169
|
}
|
|
13096
13170
|
addEntity(e, t = {}) {
|
|
13097
13171
|
if (!e || typeof e != "object" || !e.id) throw TypeError("La entidad debe incluir un id.");
|
|
13098
|
-
if (this.modelData ||=
|
|
13172
|
+
if (this.modelData ||= Bl({}), this.modelData.entities.some((t) => t.id === e.id)) throw Error(`Ya existe una entidad con id "${e.id}".`);
|
|
13099
13173
|
if (e.parent && !this.modelData.entities.some((t) => t.id === e.parent)) throw Error(`No existe el contenedor padre "${e.parent}".`);
|
|
13100
13174
|
return this.modelData.entities = [...this.modelData.entities, { ...e }], this._commitModelChange("entity-add", { entity: this._publicEntity(e.id) }, t);
|
|
13101
13175
|
}
|
|
@@ -13175,7 +13249,7 @@ var iu = class extends HTMLElement {
|
|
|
13175
13249
|
return this.targetZoom = Math.max(tl, this.targetZoom / 1.18), this.invalidate(), this;
|
|
13176
13250
|
}
|
|
13177
13251
|
setSelectionNavigation(e) {
|
|
13178
|
-
let t =
|
|
13252
|
+
let t = Cl(e);
|
|
13179
13253
|
return this.selectionNavigation = t, this.getAttribute("selection-navigation") !== t && this.setAttribute("selection-navigation", t), this;
|
|
13180
13254
|
}
|
|
13181
13255
|
focusSelection(e = {}) {
|
|
@@ -13188,7 +13262,7 @@ var iu = class extends HTMLElement {
|
|
|
13188
13262
|
return t ? (this.targetFocus.copy(t), this.targetZoom = n, e.animate === !1 && (this.focus.copy(this.targetFocus), this.zoom = this.targetZoom), this.invalidate(), this) : this;
|
|
13189
13263
|
}
|
|
13190
13264
|
_applySelectionNavigation(e = this.selectionNavigation) {
|
|
13191
|
-
let t =
|
|
13265
|
+
let t = Cl(e);
|
|
13192
13266
|
if (t === "preserve") return this;
|
|
13193
13267
|
let n = this.targetZoom;
|
|
13194
13268
|
return this.focusSelection(), t === "center" && (this.targetZoom = n), this;
|
|
@@ -13260,7 +13334,7 @@ var iu = class extends HTMLElement {
|
|
|
13260
13334
|
return this.setShellLabels(!this.showShellLabels);
|
|
13261
13335
|
}
|
|
13262
13336
|
setItemFacing(e = "camera", t = {}) {
|
|
13263
|
-
let n =
|
|
13337
|
+
let n = wl(e), r = n !== this.itemFacing;
|
|
13264
13338
|
return this.itemFacing = n, this.getAttribute("item-facing") !== n && this.setAttribute("item-facing", n), this._syncItemFacingToolbar(), this._applyItemFacing(), this.invalidate(), r && t.emit !== !1 && this._emit("lc-item-facing-change", {
|
|
13265
13339
|
mode: n,
|
|
13266
13340
|
source: t.source || "api"
|
|
@@ -13270,7 +13344,7 @@ var iu = class extends HTMLElement {
|
|
|
13270
13344
|
return this.setItemFacing(this.itemFacing === "camera" ? "model" : "camera", e);
|
|
13271
13345
|
}
|
|
13272
13346
|
_applyItemFacing() {
|
|
13273
|
-
if (this.camera) for (let e of this.nodes.values()) e.group && !
|
|
13347
|
+
if (this.camera) for (let e of this.nodes.values()) e.group && !xl(e.type) && (this.itemFacing === "camera" ? e.group.quaternion.copy(this.camera.quaternion) : e.group.quaternion.identity());
|
|
13274
13348
|
}
|
|
13275
13349
|
isContainerOpen(e) {
|
|
13276
13350
|
return this._containerEntityIds().includes(e) && this.open.has(e);
|
|
@@ -13285,14 +13359,14 @@ var iu = class extends HTMLElement {
|
|
|
13285
13359
|
setContainerOpen(e, t = !0, n = {}) {
|
|
13286
13360
|
let r = this.modelData?.entities?.find((t) => t.id === e);
|
|
13287
13361
|
if (!r) throw Error(`No existe una entidad con id "${e}".`);
|
|
13288
|
-
if (!
|
|
13362
|
+
if (!xl(r.type)) throw TypeError(`La entidad "${e}" no es un contenedor.`);
|
|
13289
13363
|
let i = new Set(this.open);
|
|
13290
13364
|
if (t) i.add(e);
|
|
13291
13365
|
else if (i.delete(e), n.closeDescendants !== !1) for (let t of this.modelData.entities) {
|
|
13292
13366
|
let n = t.parent, r = /* @__PURE__ */ new Set();
|
|
13293
13367
|
for (; n && !r.has(n);) {
|
|
13294
13368
|
if (r.add(n), n === e) {
|
|
13295
|
-
|
|
13369
|
+
xl(t.type) && i.delete(t.id);
|
|
13296
13370
|
break;
|
|
13297
13371
|
}
|
|
13298
13372
|
n = this.modelData.entities.find((e) => e.id === n)?.parent || null;
|
|
@@ -13329,13 +13403,13 @@ var iu = class extends HTMLElement {
|
|
|
13329
13403
|
this.setTheme(e);
|
|
13330
13404
|
}
|
|
13331
13405
|
get theme() {
|
|
13332
|
-
return this._theme ||
|
|
13406
|
+
return this._theme || Ol();
|
|
13333
13407
|
}
|
|
13334
13408
|
set theme(e) {
|
|
13335
|
-
this._theme =
|
|
13409
|
+
this._theme = Ol(e), this.shadowRoot && this._applyTheme();
|
|
13336
13410
|
}
|
|
13337
13411
|
setTheme(e = {}) {
|
|
13338
|
-
return this.theme =
|
|
13412
|
+
return this.theme = Dl(this.theme, e), this.modelData && (this.modelData.theme = this.theme), this._applyLighting(), this.invalidate(), this;
|
|
13339
13413
|
}
|
|
13340
13414
|
_applyTheme() {
|
|
13341
13415
|
let e = this.theme, t = this.style;
|
|
@@ -13366,7 +13440,7 @@ var iu = class extends HTMLElement {
|
|
|
13366
13440
|
this._loading = !0, this._pendingSelection = null;
|
|
13367
13441
|
try {
|
|
13368
13442
|
let t = typeof e == "string" ? await fetch(e).then((e) => e.json()) : e;
|
|
13369
|
-
this.modelData =
|
|
13443
|
+
this.modelData = Bl(t), this.selected = null, this.selectedRelationIndex = null, this.open.clear(), this._initialOpenContainers.clear(), this._pendingPalette &&= (this.modelData.palette = {
|
|
13370
13444
|
...this.modelData.palette,
|
|
13371
13445
|
...this._pendingPalette
|
|
13372
13446
|
}, null), this.theme = this.modelData.theme, this._applyTheme(), this._syncInitialContainerState({
|
|
@@ -13397,9 +13471,9 @@ var iu = class extends HTMLElement {
|
|
|
13397
13471
|
}
|
|
13398
13472
|
_applyLighting() {
|
|
13399
13473
|
if (!this.ambientLight || !this.directionalLight) return;
|
|
13400
|
-
let e = this.theme?.lighting ||
|
|
13474
|
+
let e = this.theme?.lighting || El.lighting;
|
|
13401
13475
|
this.ambientLight.color.set(e.ambientSky), this.ambientLight.groundColor.set(e.ambientGround), this.ambientLight.intensity = Number(e.ambient) || 0, this.directionalLight.color.set(e.directionalColor), this.directionalLight.intensity = Number(e.directional) || 0;
|
|
13402
|
-
let t = Array.isArray(e.directionalPosition) ? e.directionalPosition :
|
|
13476
|
+
let t = Array.isArray(e.directionalPosition) ? e.directionalPosition : El.lighting.directionalPosition;
|
|
13403
13477
|
this.directionalLight.position.fromArray(t);
|
|
13404
13478
|
}
|
|
13405
13479
|
_worldPosition(e, t = /* @__PURE__ */ new Set()) {
|
|
@@ -13436,7 +13510,7 @@ var iu = class extends HTMLElement {
|
|
|
13436
13510
|
...e.geometryPalette || {},
|
|
13437
13511
|
...e.geometryPaletteOverrides || {}
|
|
13438
13512
|
};
|
|
13439
|
-
n.material.color.set(
|
|
13513
|
+
n.material.color.set(Jl(n.value, r, t)), n.material.emissive && n.emissiveValue && n.material.emissive.set(Jl(n.emissiveValue, r, "#000000"));
|
|
13440
13514
|
}
|
|
13441
13515
|
}
|
|
13442
13516
|
}
|
|
@@ -13449,19 +13523,19 @@ var iu = class extends HTMLElement {
|
|
|
13449
13523
|
for (let e of this.modelData.entities) {
|
|
13450
13524
|
let t = this.nodes.get(e.id);
|
|
13451
13525
|
t.group = new Qn(), t.group.position.copy(this._worldPosition(t));
|
|
13452
|
-
let n = e.geometry || "box", r =
|
|
13526
|
+
let n = e.geometry || "box", r = bl(n), i = !r && n.includes("."), a = i ? "#ed8f98" : this.modelData.palette[e.c] || e.c || this.modelData.palette.component;
|
|
13453
13527
|
i && this.dispatchEvent(new CustomEvent("lc-warning", { detail: {
|
|
13454
13528
|
code: "GEOMETRY_NOT_REGISTERED",
|
|
13455
13529
|
geometry: n,
|
|
13456
13530
|
entityId: e.id
|
|
13457
13531
|
} }));
|
|
13458
|
-
let o = r?.primitive || n, s = r && !r.primitive && !
|
|
13532
|
+
let o = r?.primitive || n, s = r && !r.primitive && !xl(e.type);
|
|
13459
13533
|
if (t.geometryDefinition = r || null, t.geometryMissing = i, t.geometryPalette = r?.palette || {}, t.geometryPaletteOverrides = e.geometryPalette || e.geometry_palette || {}, t.ports = {
|
|
13460
13534
|
...r?.anchors || {},
|
|
13461
13535
|
...e.ports || {}
|
|
13462
13536
|
}, s) {
|
|
13463
13537
|
try {
|
|
13464
|
-
let n =
|
|
13538
|
+
let n = nu(r, e, this.modelData.palette, () => this.invalidate(), (e) => this.dispatchEvent(new CustomEvent("lc-warning", { detail: e })));
|
|
13465
13539
|
n.root.scale.multiply(new U().fromArray(e.s)), t.appearanceMaterials = [], n.root.traverse((e) => {
|
|
13466
13540
|
if (!(e.isMesh || e.isLine || e.isLineSegments || e.isSprite)) return;
|
|
13467
13541
|
e.userData.node = t;
|
|
@@ -13482,7 +13556,7 @@ var iu = class extends HTMLElement {
|
|
|
13482
13556
|
entityId: e.id,
|
|
13483
13557
|
error: r
|
|
13484
13558
|
} }));
|
|
13485
|
-
let i = Gl(
|
|
13559
|
+
let i = Kl(Gl("box"));
|
|
13486
13560
|
t.material = new ia({
|
|
13487
13561
|
color: "#ed8f98",
|
|
13488
13562
|
roughness: .72,
|
|
@@ -13491,13 +13565,13 @@ var iu = class extends HTMLElement {
|
|
|
13491
13565
|
}
|
|
13492
13566
|
t.labelSize = new U().fromArray(e.s);
|
|
13493
13567
|
} else {
|
|
13494
|
-
let n = o === "box" && Number(e.radius) > 0, r =
|
|
13495
|
-
n ||
|
|
13568
|
+
let n = o === "box" && Number(e.radius) > 0, r = Gl(o, e.radius, e.segments, e.s);
|
|
13569
|
+
n || Kl(r), t.material = new ia({
|
|
13496
13570
|
color: a,
|
|
13497
13571
|
roughness: .72,
|
|
13498
13572
|
metalness: .06,
|
|
13499
13573
|
transparent: !0,
|
|
13500
|
-
opacity:
|
|
13574
|
+
opacity: xl(e.type) ? .96 : 1
|
|
13501
13575
|
}), t.mesh = new An(r, t.material), t.mesh.scale.fromArray(n ? [
|
|
13502
13576
|
1,
|
|
13503
13577
|
1,
|
|
@@ -13512,7 +13586,7 @@ var iu = class extends HTMLElement {
|
|
|
13512
13586
|
1
|
|
13513
13587
|
] : e.s), t.group.add(t.edge);
|
|
13514
13588
|
}
|
|
13515
|
-
t.label =
|
|
13589
|
+
t.label = ou(e.name, a, t.labelSize, e.type, this.showShellLabels), t.labelAnchor = iu(e.style?.label?.anchor ?? e.labelAnchor ?? e.label_anchor), t.label.userData.node = t, t.label.traverse((e) => {
|
|
13516
13590
|
e.userData.node = t;
|
|
13517
13591
|
}), t.group.add(t.label), this.scene.add(t.group);
|
|
13518
13592
|
}
|
|
@@ -13559,7 +13633,7 @@ var iu = class extends HTMLElement {
|
|
|
13559
13633
|
if (!o && this.focusFilter.effect === "hide") continue;
|
|
13560
13634
|
let s = o ? 1 : this.focusFilter.opacity, c = this._endpoint(i, a, !0, e), l = this._endpoint(a, i, !1, e), u = l.clone().sub(c);
|
|
13561
13635
|
if (u.lengthSq() < .01) continue;
|
|
13562
|
-
let d =
|
|
13636
|
+
let d = kl(e), f = r === this.selectedRelationIndex, p = (e, t = .055, n = .88) => {
|
|
13563
13637
|
let r = new rn({
|
|
13564
13638
|
color: e,
|
|
13565
13639
|
transparent: !0,
|
|
@@ -13609,8 +13683,8 @@ var iu = class extends HTMLElement {
|
|
|
13609
13683
|
if (!this.modelData) return;
|
|
13610
13684
|
let e = this.selectedRelationIndex === null ? null : this.relations[this.selectedRelationIndex];
|
|
13611
13685
|
if (e) {
|
|
13612
|
-
let t =
|
|
13613
|
-
this.panel.innerHTML = "<button class=\"back\" data-action=\"overview\">← Vista de conjunto</button><button data-action=\"focus-selection\">◎ Enfocar selección</button><div class=\"eyebrow\">RELACIÓN</div><h2>" +
|
|
13686
|
+
let t = kl(e), n = e.text ? "<p>" + Rl(e.text) + "</p>" : "", r = zl(e.url);
|
|
13687
|
+
this.panel.innerHTML = "<button class=\"back\" data-action=\"overview\">← Vista de conjunto</button><button data-action=\"focus-selection\">◎ Enfocar selección</button><div class=\"eyebrow\">RELACIÓN</div><h2>" + Rl(e.label || `${e.from} → ${e.to}`) + "</h2><div class=\"sub\">" + Rl(e.from) + " → " + Rl(e.to) + "</div>" + n + r + "<h3>MODO</h3><p>" + Rl(t) + "</p>", this.panel.querySelector("[data-action=\"overview\"]")?.addEventListener("click", () => this.reset()), this.panel.querySelector("[data-action=\"focus-selection\"]")?.addEventListener("click", () => this.focusSelection()), this._applyTheme();
|
|
13614
13688
|
return;
|
|
13615
13689
|
}
|
|
13616
13690
|
let t = this.selected;
|
|
@@ -13620,11 +13694,11 @@ var iu = class extends HTMLElement {
|
|
|
13620
13694
|
}
|
|
13621
13695
|
let n = this.relations.filter((e) => e.from === t.id || e.to === t.id), r = this.modelData.entities.filter((e) => e.parent === t.id), i = [], a = /* @__PURE__ */ new Set(), o = t;
|
|
13622
13696
|
for (; o && !a.has(o.id);) a.add(o.id), i.unshift(o), o = o.parent ? this.nodes.get(o.parent) : null;
|
|
13623
|
-
let s = "<nav class=\"crumbs\" aria-label=\"Ruta del modelo\"><button data-action=\"overview\">Modelo</button>" + i.map((e, t) => "<span>/</span><button data-action=\"path\" data-id=\"" +
|
|
13624
|
-
let n = this.relations.indexOf(e), r = e.text ? "<small>" +
|
|
13625
|
-
return "<button class=\"relation\" data-action=\"relation\" data-relation-index=\"" + n + "\"><strong>" +
|
|
13697
|
+
let s = "<nav class=\"crumbs\" aria-label=\"Ruta del modelo\"><button data-action=\"overview\">Modelo</button>" + i.map((e, t) => "<span>/</span><button data-action=\"path\" data-id=\"" + Rl(e.id) + "\" class=\"" + (t === i.length - 1 ? "current" : "") + "\">" + Rl(e.name) + "</button>").join("") + "</nav>", c = n.map((e) => {
|
|
13698
|
+
let n = this.relations.indexOf(e), r = e.text ? "<small>" + Rl(e.text) + "</small>" : "";
|
|
13699
|
+
return "<button class=\"relation\" data-action=\"relation\" data-relation-index=\"" + n + "\"><strong>" + Rl(e.label || (e.from === t.id ? e.to : e.from)) + "</strong><small>" + Rl(e.from) + " → " + Rl(e.to) + "</small>" + r + "</button>";
|
|
13626
13700
|
}).join("");
|
|
13627
|
-
this.panel.innerHTML = "<button class=\"back\" data-action=\"overview\">← Vista de conjunto</button>" + s + "<button data-action=\"focus-selection\">◎ Enfocar selección</button><div class=\"eyebrow\">" +
|
|
13701
|
+
this.panel.innerHTML = "<button class=\"back\" data-action=\"overview\">← Vista de conjunto</button>" + s + "<button data-action=\"focus-selection\">◎ Enfocar selección</button><div class=\"eyebrow\">" + Rl(xl(t.type) ? "CONTENEDOR" : t.type === "actor" ? "ACTOR EXTERNO" : "COMPONENTE") + "</div><h2>" + Rl(t.name) + "</h2><div class=\"sub\">" + Rl(t.sub || "") + "</div><p>" + Rl(t.text || "") + "</p>" + zl(t.url) + (xl(t.type) ? "<button data-action=\"toggle-shell\">" + (this.open.has(t.id) ? "Cerrar bloque" : "Abrir bloque") + "</button>" : "") + (r.length ? "<h3>CONTIENE</h3><p>" + r.length + " pieza(s) interna(s).</p>" : "") + "<h3>RELACIONES</h3>" + (c || "<p>No hay relaciones directas.</p>"), this.panel.querySelectorAll("[data-action=\"overview\"]").forEach((e) => e.addEventListener("click", () => this.reset())), this.panel.querySelectorAll("[data-action=\"path\"]").forEach((e) => e.addEventListener("click", () => this.select(e.dataset.id))), this.panel.querySelectorAll("[data-action=\"relation\"]").forEach((e) => e.addEventListener("click", () => this.selectRelation(Number(e.dataset.relationIndex), { source: "panel" }))), this.panel.querySelector("[data-action=\"focus-selection\"]")?.addEventListener("click", () => this.focusSelection()), this.panel.querySelector("[data-action=\"toggle-shell\"]")?.addEventListener("click", () => {
|
|
13628
13702
|
this.toggleContainer(t.id, { source: "panel" });
|
|
13629
13703
|
}), this._applyTheme();
|
|
13630
13704
|
}
|
|
@@ -13633,7 +13707,7 @@ var iu = class extends HTMLElement {
|
|
|
13633
13707
|
if (!n) return this;
|
|
13634
13708
|
let r = new Set(this.open), i = n.parent ? this.nodes.get(n.parent) : null;
|
|
13635
13709
|
for (; i;) r.add(i.id), i = i.parent ? this.nodes.get(i.parent) : null;
|
|
13636
|
-
return this.selected = n, this.selectedRelationIndex = null,
|
|
13710
|
+
return this.selected = n, this.selectedRelationIndex = null, xl(n.type) && r.add(n.id), this._replaceOpenContainers(r, {
|
|
13637
13711
|
refresh: !1,
|
|
13638
13712
|
source: t.source || "api"
|
|
13639
13713
|
}), this._applySelectionNavigation(t.navigation), this._renderPanel(), this._rebuildRelations(), this._syncFocusToolbar(), this.invalidate(), t.focusEvent !== !1 && this._emitFocusChange(t.source || "api"), t.emit !== !1 && this._emit("lc-select", {
|
|
@@ -13697,25 +13771,26 @@ var iu = class extends HTMLElement {
|
|
|
13697
13771
|
for (let e of this.nodes.values()) {
|
|
13698
13772
|
let t = this._focusAlpha(e, i), n = this._isVisible(e) && t > 0;
|
|
13699
13773
|
e.group.visible = n;
|
|
13700
|
-
let r =
|
|
13701
|
-
if (e.mesh.renderOrder = r ? 10 - !!e.parent : 0, e.material)
|
|
13774
|
+
let r = xl(e.type) && this.open.has(e.id), a = (r ? .12 : 1) * t;
|
|
13775
|
+
if (e.mesh.renderOrder = r ? 10 - !!e.parent : 0, e.material) Tl(e.material, !0), e.material.opacity = a, e.material.depthWrite = !r, e.material.emissive?.set(e === this.selected ? e.material.color : 0), e.material.emissiveIntensity = e === this.selected ? .15 : 0;
|
|
13702
13776
|
else {
|
|
13703
|
-
for (let n of e.appearanceMaterials || []) Object.hasOwn(n.userData, "atlasBaseOpacity") || (n.userData.atlasBaseOpacity = n.opacity ?? 1), Object.hasOwn(n.userData, "atlasBaseTransparent") || (n.userData.atlasBaseTransparent = n.transparent), Object.hasOwn(n.userData, "atlasBaseDepthWrite") || (n.userData.atlasBaseDepthWrite = n.depthWrite),
|
|
13777
|
+
for (let n of e.appearanceMaterials || []) Object.hasOwn(n.userData, "atlasBaseOpacity") || (n.userData.atlasBaseOpacity = n.opacity ?? 1), Object.hasOwn(n.userData, "atlasBaseTransparent") || (n.userData.atlasBaseTransparent = n.transparent), Object.hasOwn(n.userData, "atlasBaseDepthWrite") || (n.userData.atlasBaseDepthWrite = n.depthWrite), Tl(n, n.userData.atlasBaseTransparent || t < 1), n.depthWrite = n.userData.atlasBaseDepthWrite, n.opacity = n.userData.atlasBaseOpacity * t, n.emissive?.set(e === this.selected ? n.color : 0), n.emissiveIntensity = e === this.selected ? .15 : 0;
|
|
13704
13778
|
e._appearanceSelected = e === this.selected;
|
|
13705
13779
|
}
|
|
13706
13780
|
e.edge?.material && (e.edge.material.opacity = (e === this.selected ? 1 : .65) * t);
|
|
13707
|
-
let o =
|
|
13781
|
+
let o = xl(e.type) && r, s = o, c = e.label.userData.front, l = e.label.userData.back, u = e.label.userData.top, d = e.label.userData.height, f = e.label.userData.width, p = e.label.userData.textOffsetX || 0;
|
|
13708
13782
|
e.label.userData.textOffsetY;
|
|
13709
|
-
let m = e.labelSize || new U().fromArray(e.s);
|
|
13783
|
+
let m = e.labelSize || new U().fromArray(e.s), h = au(e.labelAnchor, m, f, d);
|
|
13710
13784
|
e.label.visible = n;
|
|
13711
|
-
let
|
|
13712
|
-
if (
|
|
13713
|
-
|
|
13785
|
+
let g = this._worldPosition(e), _ = this.itemFacing === "camera" && !xl(e.type) || this.camera.position.z >= g.z, v = this.camera.position.y > g.y + .25;
|
|
13786
|
+
if (h) c.visible = _, l.visible = !_, u.visible = !1, c.scale.setScalar(1), l.scale.setScalar(1), c.position.set(h.x, h.y, m.z / 2 + .025), l.position.set(h.x, h.y, -m.z / 2 - .025), c.rotation.z = h.frontRotation, l.rotation.z = h.backRotation, c.material.color.set(15923964), l.material.color.set(15923964), c.material.opacity = t, l.material.opacity = t;
|
|
13787
|
+
else if (xl(e.type)) {
|
|
13788
|
+
c.rotation.z = 0, l.rotation.z = 0, c.visible = _ && (!o || s), l.visible = !_ && (!o || s), u.visible = s && v;
|
|
13714
13789
|
let e = s ? .52 : 1;
|
|
13715
13790
|
c.scale.setScalar(e), c.position.x = s ? -m.x / 2 + .18 + f * e / 2 - p * e : 0;
|
|
13716
13791
|
let n = .18;
|
|
13717
13792
|
c.position.y = s ? m.y / 2 - n - d * e / 2 : m.y / 2 - .09 - d / 2, c.position.z = s ? m.z / 2 + .025 : m.z / 2 + .012, l.position.y = s ? m.y / 2 - n - d * e / 2 : m.y / 2 - .09 - d / 2, l.position.z = s ? -m.z / 2 - .025 : -m.z / 2 - .012, c.material.color.set(s ? 10793147 : 15923964), c.material.opacity = (s ? .82 : 1) * t, l.material.color.set(s ? 10793147 : 15923964), l.material.opacity = (s ? .82 : 1) * t, u.scale.setScalar(s ? .55 : 1), u.position.x = s ? -m.x / 2 + .12 + f * .55 / 2 - p * .55 : 0, u.position.z = s ? -m.z / 2 + .12 + d * .55 / 2 : 0, u.material.color.set(s ? 10793147 : 15923964), u.material.opacity = (s ? .82 : 1) * t;
|
|
13718
|
-
} else c.visible =
|
|
13793
|
+
} else c.rotation.z = 0, l.rotation.z = 0, c.visible = _ && !r, l.visible = !_ && !r, u.visible = !1, c.scale.setScalar(1), c.position.x = 0, c.position.y = m.y / 2 - .09 - d / 2, c.position.z = m.z / 2 + .012, l.position.x = 0, l.position.y = m.y / 2 - .09 - d / 2, l.position.z = -m.z / 2 - .012, c.material.color.set(15923964), c.material.opacity = t, l.material.opacity = t;
|
|
13719
13794
|
}
|
|
13720
13795
|
for (let t of this.relationGroup.children) {
|
|
13721
13796
|
if (!t.userData.start) continue;
|
|
@@ -13728,7 +13803,7 @@ var iu = class extends HTMLElement {
|
|
|
13728
13803
|
let t = this.canvas.getBoundingClientRect();
|
|
13729
13804
|
this.pointer.set((e.clientX - t.left) / t.width * 2 - 1, -(e.clientY - t.top) / t.height * 2 + 1), this.raycaster.setFromCamera(this.pointer, this.camera);
|
|
13730
13805
|
let n = [];
|
|
13731
|
-
for (let e of this.nodes.values()) e.group.visible && (
|
|
13806
|
+
for (let e of this.nodes.values()) e.group.visible && (xl(e.type) && this.open.has(e.id) || n.push(e.pickMesh || e.mesh), e.label?.visible && n.push(...e.label.children.filter((e) => e.visible)));
|
|
13732
13807
|
let r = this.raycaster.intersectObjects(n, !0)[0] || null, i = this.relationMode === "none" ? [] : this.relationGroup.children.filter((e) => e.userData?.relationPick), a = this.raycaster.intersectObjects(i, !1)[0] || null;
|
|
13733
13808
|
if (r && (!a || r.distance <= a.distance + .12)) {
|
|
13734
13809
|
let e = r.object;
|
|
@@ -13877,11 +13952,11 @@ var iu = class extends HTMLElement {
|
|
|
13877
13952
|
}
|
|
13878
13953
|
_showError(e) {
|
|
13879
13954
|
let t = this.shadowRoot.querySelector(".viewport"), n = t.querySelector(".error");
|
|
13880
|
-
n ? n.textContent = e : t.insertAdjacentHTML("beforeend", "<div class=\"error\" role=\"alert\">" +
|
|
13955
|
+
n ? n.textContent = e : t.insertAdjacentHTML("beforeend", "<div class=\"error\" role=\"alert\">" + Rl(e) + "</div>");
|
|
13881
13956
|
}
|
|
13882
13957
|
};
|
|
13883
|
-
customElements.get("liquidcars-atlas") || customElements.define("liquidcars-atlas",
|
|
13958
|
+
customElements.get("liquidcars-atlas") || customElements.define("liquidcars-atlas", cu);
|
|
13884
13959
|
//#endregion
|
|
13885
|
-
export { $c as ATLAS_VERSION,
|
|
13960
|
+
export { $c as ATLAS_VERSION, cu as LiquidCarsAtlas, su as captureRendererFrame, eu as createSvgExtrudeGeometry, vl as getGeometryCatalog, yl as getGeometryPackCatalog, au as labelPlacementForAnchor, iu as normalizeLabelAnchor, Bl as normalizeModel, gl as registerGeometryPack, _l as unregisterGeometryPack };
|
|
13886
13961
|
|
|
13887
13962
|
//# sourceMappingURL=liquidcars-atlas.js.map
|