@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.
@@ -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 P(e, t, n) {
45
+ function ee(e, t, n) {
46
46
  return e === t ? 0 : (n - e) / (t - e);
47
47
  }
48
- function F(e, t, n) {
48
+ function P(e, t, n) {
49
49
  return (1 - n) * e + n * t;
50
50
  }
51
- function I(e, t, n, r) {
52
- return F(e, t, 1 - Math.exp(-n * r));
51
+ function F(e, t, n, r) {
52
+ return P(e, t, 1 - Math.exp(-n * r));
53
53
  }
54
- function ee(e, t = 1) {
54
+ function te(e, t = 1) {
55
55
  return t - Math.abs(M(e, t * 2) - t);
56
56
  }
57
- function te(e, t, n) {
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 L(e, t, n) {
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 ne(e, t) {
63
+ function re(e, t) {
64
64
  return e + Math.floor(Math.random() * (t - e + 1));
65
65
  }
66
- function re(e, t) {
66
+ function ie(e, t) {
67
67
  return e + Math.random() * (t - e);
68
68
  }
69
- function ie(e) {
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 B(e, t) {
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 ue(e, t) {
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: P,
148
- lerp: F,
149
- damp: I,
150
- pingpong: ee,
151
- smoothstep: te,
152
- smootherstep: L,
153
- randInt: ne,
154
- randFloat: re,
155
- randFloatSpread: ie,
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: ue,
164
- denormalize: B
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], P = r[7], F = r[11], I = r[15];
1979
- return i[0] = a * x + o * T + s * k + c * N, i[4] = a * S + o * E + s * A + c * P, i[8] = a * C + o * D + s * j + c * F, i[12] = a * w + o * O + s * M + c * I, i[1] = l * x + u * T + d * k + f * N, i[5] = l * S + u * E + d * A + f * P, i[9] = l * C + u * D + d * j + f * F, i[13] = l * w + u * O + d * M + f * I, i[2] = p * x + m * T + h * k + g * N, i[6] = p * S + m * E + h * A + g * P, i[10] = p * C + m * D + h * j + g * F, i[14] = p * w + m * O + h * M + g * I, i[3] = _ * x + v * T + y * k + b * N, i[7] = _ * S + v * E + y * A + b * P, i[11] = _ * C + v * D + y * j + b * F, i[15] = _ * w + v * O + y * M + b * I, this;
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 = F(Zt.h, Qt.h, t), r = F(Zt.s, Qt.s, t), i = F(Zt.l, Qt.l, t);
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 = B(n, this.array)), n;
3023
+ return this.normalized && (n = ue(n, this.array)), n;
3024
3024
  }
3025
3025
  setComponent(e, t, n) {
3026
- return this.normalized && (n = ue(n, this.array)), this.array[e * this.itemSize + t] = n, this;
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 = B(t, this.array)), t;
3030
+ return this.normalized && (t = ue(t, this.array)), t;
3031
3031
  }
3032
3032
  setX(e, t) {
3033
- return this.normalized && (t = ue(t, this.array)), this.array[e * this.itemSize] = t, this;
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 = B(t, this.array)), t;
3037
+ return this.normalized && (t = ue(t, this.array)), t;
3038
3038
  }
3039
3039
  setY(e, t) {
3040
- return this.normalized && (t = ue(t, this.array)), this.array[e * this.itemSize + 1] = t, this;
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 = B(t, this.array)), t;
3044
+ return this.normalized && (t = ue(t, this.array)), t;
3045
3045
  }
3046
3046
  setZ(e, t) {
3047
- return this.normalized && (t = ue(t, this.array)), this.array[e * this.itemSize + 2] = t, this;
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 = B(t, this.array)), t;
3051
+ return this.normalized && (t = ue(t, this.array)), t;
3052
3052
  }
3053
3053
  setW(e, t) {
3054
- return this.normalized && (t = ue(t, this.array)), this.array[e * this.itemSize + 3] = t, this;
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 = ue(t, this.array), n = ue(n, this.array)), this.array[e + 0] = t, this.array[e + 1] = n, this;
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 = ue(t, this.array), n = ue(n, this.array), r = ue(r, this.array)), this.array[e + 0] = t, this.array[e + 1] = n, this.array[e + 2] = r, this;
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 = ue(t, this.array), n = ue(n, this.array), r = ue(r, this.array), i = ue(i, this.array)), this.array[e + 0] = t, this.array[e + 1] = n, this.array[e + 2] = r, this.array[e + 3] = i, this;
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, P = j.concat();
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), P = P.concat(N);
5394
+ M.push(N), ee = ee.concat(N);
5395
5395
  }
5396
- let F;
5397
- if (p === 0) F = Gi.triangulateShape(D, w);
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
- re(n.x, n.y, -i), r === 0 && e.push(n);
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
- re(t.x, t.y, -i), r === 0 && o.push(t);
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
- F = Gi.triangulateShape(e, t);
5417
+ P = Gi.triangulateShape(e, t);
5418
5418
  }
5419
- let I = F.length, ee = d + f;
5419
+ let F = P.length, te = d + f;
5420
5420
  for (let e = 0; e < k; e++) {
5421
- let t = l ? O(C[e], P[e], ee) : 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), re(x.x, x.y, x.z)) : re(t.x, t.y, 0);
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], P[t], ee) : 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), re(x.x, x.y, x.z)) : re(n.x, n.y, c / s * e);
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
- re(t.x, t.y, c + n);
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
- _ ? re(i.x, i.y + g[s - 1].y, g[s - 1].x + n) : re(i.x, i.y, c + n);
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
- te(), L();
5444
- function te() {
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 < I; e++) {
5449
- let n = F[e];
5450
- ie(n[2] + t, n[1] + t, n[0] + t);
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 < I; e++) {
5454
- let n = F[e];
5455
- ie(n[0] + t, n[1] + t, n[2] + t);
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 < I; e++) {
5459
- let t = F[e];
5460
- ie(t[2], t[1], t[0]);
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 < I; e++) {
5463
- let t = F[e];
5464
- ie(t[0] + k * s, t[1] + k * s, t[2] + k * s);
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 L() {
5469
+ function I() {
5470
5470
  let e = r.length / 3, t = 0;
5471
- ne(D, t), t += D.length;
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
- ne(n, t), t += n.length;
5474
+ re(n, t), t += n.length;
5475
5475
  }
5476
5476
  n.addGroup(e, r.length / 3 - e, 1);
5477
5477
  }
5478
- function ne(e, t) {
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 re(e, t, n) {
5489
+ function ie(e, t, n) {
5490
5490
  a.push(e), a.push(t), a.push(n);
5491
5491
  }
5492
- function ie(e, t, i) {
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(), P = _.isInstancedMesh === !0, F = _.isBatchedMesh === !0, I = !!a.map, ee = !!a.matcap, te = !!S, L = !!a.aoMap, ne = !!a.lightMap, re = !!a.bumpMap, ie = !!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, B = a.iridescence > 0, ue = a.sheen > 0, de = a.transmission > 0, V = se && !!a.anisotropyMap, H = ce && !!a.clearcoatMap, U = ce && !!a.clearcoatNormalMap, fe = ce && !!a.clearcoatRoughnessMap, W = B && !!a.iridescenceMap, G = B && !!a.iridescenceThicknessMap, K = ue && !!a.sheenColorMap, pe = ue && !!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;
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: F,
9347
- batchingColor: F && _._colorsTexture !== null,
9348
- instancing: P,
9349
- instancingColor: P && _.instanceColor !== null,
9350
- instancingMorph: P && _.morphTexture !== null,
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: I,
9355
- matcap: ee,
9356
- envMap: te,
9357
- envMapMode: te && S.mapping,
9354
+ map: F,
9355
+ matcap: te,
9356
+ envMap: ne,
9357
+ envMapMode: ne && S.mapping,
9358
9358
  envMapCubeUVHeight: C,
9359
- aoMap: L,
9360
- lightMap: ne,
9361
- bumpMap: re,
9362
- normalMap: ie,
9359
+ aoMap: I,
9360
+ lightMap: re,
9361
+ bumpMap: ie,
9362
+ normalMap: L,
9363
9363
  displacementMap: f && R,
9364
9364
  emissiveMap: z,
9365
- normalMapObjectSpace: ie && a.normalMapType === 1,
9366
- normalMapTangentSpace: ie && a.normalMapType === 0,
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: B,
9376
+ iridescence: ue,
9377
9377
  iridescenceMap: W,
9378
9378
  iridescenceThicknessMap: G,
9379
- sheen: ue,
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: I && h(a.map.channel),
9395
- aoMapUv: L && h(a.aoMap.channel),
9396
- lightMapUv: ne && h(a.lightMap.channel),
9397
- bumpMapUv: re && h(a.bumpMap.channel),
9398
- normalMapUv: ie && h(a.normalMap.channel),
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 && (ie || se),
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 && (I || ve),
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: I && a.map.isVideoTexture === !0 && Y.getTransfer(a.map.colorSpace) === "srgb",
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 || F) && r.has("WEBGL_multi_draw"),
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, P = e.getParameter(e.VERSION);
10095
- P.indexOf("WebGL") === -1 ? P.indexOf("OpenGL ES") !== -1 && (N = parseFloat(/^OpenGL ES (\d)/.exec(P)[1]), M = N >= 2) : (N = parseFloat(/^WebGL (\d)/.exec(P)[1]), M = N >= 1);
10096
- let F = null, I = {}, ee = e.getParameter(e.SCISSOR_BOX), te = e.getParameter(e.VIEWPORT), L = new Ae().fromArray(ee), ne = new Ae().fromArray(te);
10097
- function re(t, n, r, i) {
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 ie = {};
10104
- ie[e.TEXTURE_2D] = re(e.TEXTURE_2D, e.TEXTURE_2D, 1), ie[e.TEXTURE_CUBE_MAP] = re(e.TEXTURE_CUBE_MAP, e.TEXTURE_CUBE_MAP_POSITIVE_X, 6), ie[e.TEXTURE_2D_ARRAY] = re(e.TEXTURE_2D_ARRAY, e.TEXTURE_2D_ARRAY, 1, 1), ie[e.TEXTURE_3D] = re(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), B(0);
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 B(t, n, r, i, a, o, s, c, l, u) {
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 ue(t, n) {
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 ? B(0) : B(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);
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), F !== t && (e.activeTexture(t), F = t);
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 = F === null ? e.TEXTURE0 + j - 1 : F);
10222
- let i = I[r];
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
- }, I[r] = i), (i.type !== t || i.texture !== n) && (F !== r && (e.activeTexture(r), F = r), e.bindTexture(t, n || ie[t]), i.type = t, i.texture = n);
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 = I[F];
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
- L.equals(t) === !1 && (e.scissor(t.x, t.y, t.z, t.w), L.copy(t));
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
- ne.equals(t) === !1 && (e.viewport(t.x, t.y, t.z, t.w), ne.copy(t));
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 = {}, F = null, I = {}, 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, L.set(0, 0, e.canvas.width, e.canvas.height), ne.set(0, 0, e.canvas.width, e.canvas.height), a.reset(), o.reset(), s.reset();
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: B,
10333
- setMaterial: ue,
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), P(t);
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 P(e) {
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 F = 0;
10453
- function I() {
10454
- F = 0;
10452
+ let P = 0;
10453
+ function F() {
10454
+ P = 0;
10455
10455
  }
10456
- function ee() {
10457
- let e = F;
10458
- return e >= u.maxTextures && console.warn("THREE.WebGLTextures: Trying to use " + e + " texture units while this GPU supports only " + u.maxTextures), F += 1, e;
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 te(e) {
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 L(e, t) {
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
- B(n, e, t);
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 ne(e, t) {
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
- B(n, e, t);
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 re(e, t) {
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
- B(n, e, t);
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 ie(e, t) {
10493
+ function L(e, t) {
10494
10494
  let n = l.get(e);
10495
10495
  if (e.version > 0 && n.__version !== e.version) {
10496
- ue(n, e, t);
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 = te(t);
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 B(e, t, n) {
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 ue(e, t, n) {
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), L(t.depthTexture, 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 = ee, this.resetTextureUnits = I, this.setTexture2D = L, this.setTexture2DArray = ne, this.setTexture3D = re, this.setTextureCube = ie, this.rebindTextures = W, this.setupRenderTarget = G, this.updateRenderTargetMipmap = K, this.updateMultisampleRenderTarget = J, this.setupDepthRenderbuffer = fe, this.setupFrameBufferTexture = de, this.useMultisampledRTT = ge;
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(), P = null, F = null;
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 I(e) {
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 ee() {
11028
- r.removeEventListener("select", I), r.removeEventListener("selectstart", I), r.removeEventListener("selectend", I), r.removeEventListener("squeeze", I), r.removeEventListener("squeezestart", I), r.removeEventListener("squeezeend", I), r.removeEventListener("end", ee), r.removeEventListener("inputsourceschange", te);
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
- P = null, F = null, b.reset();
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", I), r.addEventListener("selectstart", I), r.addEventListener("selectend", I), r.addEventListener("squeeze", I), r.addEventListener("squeezestart", I), r.addEventListener("squeezeend", I), r.addEventListener("end", ee), r.addEventListener("inputsourceschange", te), S.xrCompatible !== !0 && await t.makeXRCompatible(), O = e.getPixelRatio(), e.getSize(D), y && "createProjectionLayer" in XRWebGLBinding.prototype) {
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 te(e) {
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 L = new U(), ne = new U();
11119
- function re(e, t, n) {
11120
- L.setFromMatrixPosition(t.matrixWorld), ne.setFromMatrixPosition(n.matrixWorld);
11121
- let r = L.distanceTo(ne), 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;
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 ie(e, t) {
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, (P !== N.near || F !== N.far) && (r.updateRenderState({
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
- }), P = N.near, F = N.far), N.layers.mask = e.layers.mask | 6, A.layers.mask = N.layers.mask & 3, j.layers.mask = N.layers.mask & 5;
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
- ie(N, i);
11140
- for (let e = 0; e < a.length; e++) ie(a[e], i);
11141
- a.length === 2 ? re(N, A, j) : N.projectionMatrix.copy(A.projectionMatrix), R(e, N, i);
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(), P = null, F = new X(0), I = 0, ee = t.width, te = t.height, L = 1, ne = null, re = null, ie = new Ae(0, 0, ee, te), R = new Ae(0, 0, ee, te), z = !1, ae = new lr(), oe = !1, se = !1, ce = new ct(), le = new U(), B = new Ae(), ue = {
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 ? L : 1;
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 L;
11418
+ return I;
11419
11419
  }, this.setPixelRatio = function(e) {
11420
- e !== void 0 && (L = e, this.setSize(ee, te, !1));
11420
+ e !== void 0 && (I = e, this.setSize(te, ne, !1));
11421
11421
  }, this.getSize = function(e) {
11422
- return e.set(ee, te);
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
- ee = e, te = n, t.width = Math.floor(e * L), t.height = Math.floor(n * L), r === !0 && (t.style.width = e + "px", t.style.height = n + "px"), this.setViewport(0, 0, e, n);
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(ee * L, te * L).floor();
11430
+ return e.set(te * I, ne * I).floor();
11431
11431
  }, this.setDrawingBufferSize = function(e, n, r) {
11432
- ee = e, te = n, L = r, t.width = Math.floor(e * r), t.height = Math.floor(n * r), this.setViewport(0, 0, e, n);
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(ie);
11436
+ return e.copy(L);
11437
11437
  }, this.setViewport = function(e, t, n, r) {
11438
- e.isVector4 ? ie.set(e.x, e.y, e.z, e.w) : ie.set(e, t, n, r), K.viewport(M.copy(ie).multiplyScalar(L).round());
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(L).round());
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 = ue);
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(ne, re), de = Re.enabled === !1 || Re.isPresenting === !1 || Re.hasDepthSensing() === !1, de && Oe.addToRenderList(v, e), this.info.render.frame++, oe === !0 && Ee.beginShadows();
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 && B.setFromMatrixPosition(e.matrixWorld).applyMatrix4(ce);
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, B.z, null);
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(), B.copy(t.boundingSphere.center)) : (e.boundingSphere === null && e.computeBoundingSphere(), B.copy(e.boundingSphere.center)), B.applyMatrix4(e.matrixWorld).applyMatrix4(ce)), Array.isArray(i)) {
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, B.z, o);
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, B.z, null);
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(F), I = T.getClearAlpha(), I < 1 && T.setClearColor(16777215, .5), T.clear(), de && Oe.render(n);
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(F, I), m !== void 0 && (r.viewport = m), T.toneMapping = p;
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 = ue);
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 = ue), J.resetTextureUnits();
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, L, te, 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) {
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), P = e.scissorTest;
11784
- } else M.copy(ie).multiplyScalar(L).floor(), N.copy(R).multiplyScalar(L).floor(), P = 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(P), a) {
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.40",
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 pl(e) {
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 ml(e) {
12035
+ function hl(e) {
12001
12036
  return ol(e);
12002
12037
  }
12003
- function hl(e) {
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 = fl(e, t), r = Object.freeze(Object.fromEntries(n.resources.map((e) => [e.id, Object.freeze(ol(e))]))), i = [];
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
- gl(t);
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 = ml(n);
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 gl(e) {
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 [...al.values()].map(ml);
12097
+ return [...rl.values()].map(ml);
12098
+ }
12099
+ function yl() {
12100
+ return [...al.values()].map(hl);
12066
12101
  }
12067
- function yl(e) {
12102
+ function bl(e) {
12068
12103
  let t = il.get(e) || e;
12069
12104
  return rl.get(t) || null;
12070
12105
  }
12071
- function bl(e) {
12106
+ function xl(e) {
12072
12107
  return e === "container" || e === "shell";
12073
12108
  }
12074
- function xl(e = {}) {
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 Sl(e) {
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 Cl(e) {
12125
+ function wl(e) {
12091
12126
  return e === "model" ? "model" : "camera";
12092
12127
  }
12093
- function wl(e, t) {
12128
+ function Tl(e, t) {
12094
12129
  e && e.transparent !== t && (e.transparent = t, e.needsUpdate = !0);
12095
12130
  }
12096
- hl({
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 Tl = {
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 El(e, t) {
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) ? El(e?.[r] || {}, i) : 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 Dl(e) {
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(Tl, t);
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 Ol(e) {
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 kl = [":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(""), Al = ".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}}", jl = [
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(""), Ml = (e, t = "0 0 24 24") => `<svg viewBox="${t}" aria-hidden="true">${e}</svg>`, Nl = {
12233
- minus: Ml("<path d=\"M6 12h12\"/>"),
12234
- plus: Ml("<path d=\"M12 6v12M6 12h12\"/>"),
12235
- fit: Ml("<path d=\"M9 4H4v5M15 4h5v5M20 15v5h-5M4 15v5h5\"/><circle cx=\"12\" cy=\"12\" r=\"2.5\"/>"),
12236
- front: Ml("<rect x=\"4\" y=\"5\" width=\"16\" height=\"14\" rx=\"1.5\"/><path d=\"M8 16h8\"/>"),
12237
- view: Ml("<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\"/>"),
12238
- relations: Ml("<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\"/>"),
12239
- focus: Ml("<circle cx=\"12\" cy=\"12\" r=\"7\"/><circle cx=\"12\" cy=\"12\" r=\"2.5\"/><path d=\"M12 2v3M12 19v3M2 12h3M19 12h3\"/>"),
12240
- chevron: Ml("<path d=\"m8 10 4 4 4-4\"/>")
12241
- }, Pl = (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>`, Fl = (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>${Nl.chevron}</summary><div class="toolbar-popover" role="menu"><div class="toolbar-popover-title">${n}</div>${i}</div></details>`, Il = `<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">${Nl.minus}</button><button class="toolbar-icon" data-action="plus" aria-label="Acercar" title="Acercar">${Nl.plus}</button><button class="toolbar-icon" data-action="fit" aria-label="Encuadrar todo el modelo" title="Encuadrar todo el modelo">${Nl.fit}</button><button class="toolbar-icon" data-action="front" aria-label="Vista frontal" title="Vista frontal">${Nl.front}</button></div><div class="toolbar-group" data-toolbar-group="view">${Fl("view", Nl.view, "Vista", "Vista", Pl("labels", "Etiquetas", !0) + Pl("panel", "Información", !0) + Pl("item-facing", "Caras a cámara", !0) + "<div class=\"toolbar-option-separator\"></div>" + Pl("open-all", "Abrir todos") + Pl("close-all", "Cerrar todos"))}</div><div class="toolbar-group" data-toolbar-group="relations">${Fl("relations", Nl.relations, "Relaciones", "Selección", Pl("relations-all", "Todas") + Pl("relations-selected", "Selección", !0) + Pl("relations-none", "Ocultar"))}</div><div class="toolbar-group" data-toolbar-group="focus">${Fl("focus", Nl.focus, "Foco", "Todo", Pl("focus-all", "Todo", !0) + Pl("focus-dim", "Conectados") + Pl("focus-hide", "Aislar") + "<div class=\"toolbar-option-separator\"></div>" + Pl("focus-selection", "Enfocar selección") + Pl("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>`;
12242
- function Ll(e) {
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
  "&": "&amp;",
12245
12280
  "<": "&lt;",
@@ -12248,17 +12283,17 @@ function Ll(e) {
12248
12283
  "'": "&#39;"
12249
12284
  })[e]);
12250
12285
  }
12251
- function Rl(e) {
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=\"" + Ll(e.href) + "\" target=\"_blank\" rel=\"noopener noreferrer\">Open documentation ↗</a>" : "";
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 zl(e) {
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: Ol({ mode: e[3] }),
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: Ol(e),
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: Dl(t.theme || t.styles),
12329
+ theme: Ol(t.theme || t.styles),
12295
12330
  entities: n,
12296
12331
  relations: r
12297
12332
  };
12298
12333
  }
12299
- function Bl(e, t, n = [
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 Vl(e, t, n) {
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 Hl(e, t, n, r) {
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 Ul(e, t) {
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 Wl(e, t = 0, n = 4, r = [
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 ? Hl(.5, .5, i, a) : new Er(.5, .5, 1, 32);
12369
- case "cone": return i ? Hl(0, .5, i, a) : new Dr(.5, 1, 32);
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 ? Hl(.28, .5, i, a) : new Er(.28, .5, 1, 32);
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 ? Vl(6, i, a) : new Er(.5, .5, 1, 6);
12376
- case "pyramid-square": return i ? Ul(new Dr(.5, 1, 4), i) : new Dr(.5, 1, 4);
12377
- case "pyramid-triangle": return i ? Ul(new Dr(.5, 1, 3), i) : new Dr(.5, 1, 3);
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 Ul(new $i(.5), i);
12380
- case "dodecahedron": return Ul(new kr(.5), i);
12381
- case "icosahedron": return Ul(new Zi(.5), i);
12382
- default: return i ? Bl(i, a, r) : new Nn(1, 1, 1);
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 Gl(e) {
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 Kl(e, t) {
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 ql(e, t, n) {
12433
+ function Jl(e, t, n) {
12399
12434
  return typeof e != "string" || !e ? n : t[e] || e;
12400
12435
  }
12401
- function Jl(e, t = "#ffffff", n = "transparent") {
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 Yl = /^[AaCcHhLlMmQqSsTtVvZz]$/, Xl = /[-+]?(?:\d*\.\d+|\d+\.?)(?:[eE][-+]?\d+)?|[AaCcHhLlMmQqSsTtVvZz]/g;
12410
- function Zl(e, t, n, r, i, a, o, s, c) {
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 Ql(e) {
12427
- let t = String(e || "").match(Xl) || [], 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 && !Yl.test(t[r]), h = () => Number(t[r++]), g = () => {
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 && (Yl.test(t[r]) && (i = t[r++]), i);) {
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 Zl(o, s, e, r, c, l, u, d, f)) n.lineTo(t, -i);
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 $l(e, t = {}) {
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 = Ql(t[2]);
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 eu(e) {
12500
- return e.shape === "plane" ? new ea(1, 1) : e.shape === "svg-extrude" ? $l(e.svg, e) : Wl(e.shape || e.geometry || "box", e.radius, e.segments, e.size);
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 tu(e, t, n, r, i) {
12503
- let a = Kl(t, e), o = {
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 = eu(a);
12519
- Gl(s);
12520
- let c = a.color || "component", f = ql(c, o, n.component || el.component), p = a.emissive || "#000000", m = new ia({
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: ql(p, o, "#000000"),
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 = Jl(g, ql(a.iconColor || "#ffffff", o, "#ffffff"), ql(a.iconBackground || "transparent", o, "transparent")), m.transparent = !0, m.needsUpdate = !0);
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
- function nu(e, t, n, r = "", i = !0) {
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 = bl(r), x.add(S, C, w);
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 ru(e, t, n, r = globalThis.document) {
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 iu = class extends HTMLElement {
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 hl(e);
12789
+ return gl(e);
12716
12790
  }
12717
12791
  static unregisterGeometryPack(e) {
12718
- return gl(e);
12792
+ return _l(e);
12719
12793
  }
12720
12794
  static getGeometryCatalog() {
12721
- return _l();
12795
+ return vl();
12722
12796
  }
12723
12797
  static getGeometryPackCatalog() {
12724
- return vl();
12798
+ return yl();
12725
12799
  }
12726
12800
  constructor() {
12727
- super(), this.attachShadow({ mode: "open" }), this.shadowRoot.innerHTML = "<style>" + kl + Al + jl + "</style>" + Il, 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 = Dl(), this.relationMode = this.getAttribute("relation-mode") || "selected", this.focusFilter = xl({
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 = Sl(this.getAttribute("selection-navigation")), this.itemFacing = Cl(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 = () => {
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" && Cl(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) {
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 ru(this.renderer, this.scene, this.camera, this.ownerDocument);
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 && bl(n.type) && this._descendantIds(t, e);
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 && bl(n.type) && this._descendantIds(t, e);
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 = xl({
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") && Cl(e.itemFacing) !== this.itemFacing && this.setItemFacing(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) => bl(e.type)).map((e) => e.id);
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) => bl(e.type) && e.open === !0).map((e) => e.id);
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 = zl(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 || zl({}), r = JSON.stringify(n.render?.camera || null), i = {
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 = zl(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;
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 ||= zl({}), this.modelData.entities.some((t) => t.id === e.id)) throw Error(`Ya existe una entidad con id "${e.id}".`);
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 = Sl(e);
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 = Sl(e);
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 = Cl(e), r = n !== this.itemFacing;
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 && !bl(e.type) && (this.itemFacing === "camera" ? e.group.quaternion.copy(this.camera.quaternion) : e.group.quaternion.identity());
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 (!bl(r.type)) throw TypeError(`La entidad "${e}" no es un contenedor.`);
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
- bl(t.type) && i.delete(t.id);
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 || Dl();
13406
+ return this._theme || Ol();
13333
13407
  }
13334
13408
  set theme(e) {
13335
- this._theme = Dl(e), this.shadowRoot && this._applyTheme();
13409
+ this._theme = Ol(e), this.shadowRoot && this._applyTheme();
13336
13410
  }
13337
13411
  setTheme(e = {}) {
13338
- return this.theme = El(this.theme, e), this.modelData && (this.modelData.theme = this.theme), this._applyLighting(), this.invalidate(), this;
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 = zl(t), this.selected = null, this.selectedRelationIndex = null, this.open.clear(), this._initialOpenContainers.clear(), this._pendingPalette &&= (this.modelData.palette = {
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 || Tl.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 : Tl.lighting.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(ql(n.value, r, t)), n.material.emissive && n.emissiveValue && n.material.emissive.set(ql(n.emissiveValue, r, "#000000"));
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 = yl(n), i = !r && n.includes("."), a = i ? "#ed8f98" : this.modelData.palette[e.c] || e.c || this.modelData.palette.component;
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 && !bl(e.type);
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 = tu(r, e, this.modelData.palette, () => this.invalidate(), (e) => this.dispatchEvent(new CustomEvent("lc-warning", { detail: e })));
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(Wl("box"));
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 = Wl(o, e.radius, e.segments, e.s);
13495
- n || Gl(r), t.material = new ia({
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: bl(e.type) ? .96 : 1
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 = nu(e.name, a, t.labelSize, e.type, this.showShellLabels), t.label.userData.node = t, t.label.traverse((e) => {
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 = Ol(e), f = r === this.selectedRelationIndex, p = (e, t = .055, n = .88) => {
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 = Ol(e), n = e.text ? "<p>" + Ll(e.text) + "</p>" : "", r = Rl(e.url);
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>" + Ll(e.label || `${e.from} → ${e.to}`) + "</h2><div class=\"sub\">" + Ll(e.from) + " → " + Ll(e.to) + "</div>" + n + r + "<h3>MODO</h3><p>" + Ll(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();
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=\"" + Ll(e.id) + "\" class=\"" + (t === i.length - 1 ? "current" : "") + "\">" + Ll(e.name) + "</button>").join("") + "</nav>", c = n.map((e) => {
13624
- let n = this.relations.indexOf(e), r = e.text ? "<small>" + Ll(e.text) + "</small>" : "";
13625
- return "<button class=\"relation\" data-action=\"relation\" data-relation-index=\"" + n + "\"><strong>" + Ll(e.label || (e.from === t.id ? e.to : e.from)) + "</strong><small>" + Ll(e.from) + " → " + Ll(e.to) + "</small>" + r + "</button>";
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\">" + Ll(bl(t.type) ? "CONTENEDOR" : t.type === "actor" ? "ACTOR EXTERNO" : "COMPONENTE") + "</div><h2>" + Ll(t.name) + "</h2><div class=\"sub\">" + Ll(t.sub || "") + "</div><p>" + Ll(t.text || "") + "</p>" + Rl(t.url) + (bl(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", () => {
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, bl(n.type) && r.add(n.id), this._replaceOpenContainers(r, {
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 = bl(e.type) && this.open.has(e.id), a = (r ? .12 : 1) * t;
13701
- if (e.mesh.renderOrder = r ? 10 - !!e.parent : 0, e.material) wl(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;
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), wl(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;
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 = bl(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;
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 h = this._worldPosition(e), g = this.itemFacing === "camera" && !bl(e.type) || this.camera.position.z >= h.z, _ = this.camera.position.y > h.y + .25;
13712
- if (bl(e.type)) {
13713
- c.visible = g && (!o || s), l.visible = !g && (!o || s), u.visible = s && _;
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 = g && !r, l.visible = !g && !r, u.visible = !1, c.scale.setScalar(1), c.position.x = 0, c.position.y = m.y / 2 - .09 - d / 2, c.material.color.set(15923964), c.material.opacity = t, l.material.opacity = t;
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 && (bl(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)));
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\">" + Ll(e) + "</div>");
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", iu);
13958
+ customElements.get("liquidcars-atlas") || customElements.define("liquidcars-atlas", cu);
13884
13959
  //#endregion
13885
- export { $c as ATLAS_VERSION, iu as LiquidCarsAtlas, ru as captureRendererFrame, $l as createSvgExtrudeGeometry, _l as getGeometryCatalog, vl as getGeometryPackCatalog, zl as normalizeModel, hl as registerGeometryPack, gl as unregisterGeometryPack };
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