mirage-engine 0.3.12 → 0.3.13

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.
@@ -1,31 +1,31 @@
1
- var _e = Object.defineProperty, Fe = Object.defineProperties;
1
+ var Oe = Object.defineProperty, _e = Object.defineProperties;
2
2
  var Ne = Object.getOwnPropertyDescriptors;
3
3
  var we = Object.getOwnPropertySymbols;
4
4
  var ze = Object.prototype.hasOwnProperty, Xe = Object.prototype.propertyIsEnumerable;
5
- var me = (s, e, t) => e in s ? _e(s, e, { enumerable: !0, configurable: !0, writable: !0, value: t }) : s[e] = t, J = (s, e) => {
5
+ var me = (s, e, t) => e in s ? Oe(s, e, { enumerable: !0, configurable: !0, writable: !0, value: t }) : s[e] = t, j = (s, e) => {
6
6
  for (var t in e || (e = {}))
7
7
  ze.call(e, t) && me(s, t, e[t]);
8
8
  if (we)
9
9
  for (var t of we(e))
10
10
  Xe.call(e, t) && me(s, t, e[t]);
11
11
  return s;
12
- }, xe = (s, e) => Fe(s, Ne(e));
12
+ }, xe = (s, e) => _e(s, Ne(e));
13
13
  var u = (s, e, t) => (me(s, typeof e != "symbol" ? e + "" : e, t), t);
14
14
  var Ee = (s, e, t) => new Promise((r, i) => {
15
- var l = (a) => {
15
+ var l = (o) => {
16
16
  try {
17
- o(t.next(a));
17
+ a(t.next(o));
18
18
  } catch (c) {
19
19
  i(c);
20
20
  }
21
- }, n = (a) => {
21
+ }, n = (o) => {
22
22
  try {
23
- o(t.throw(a));
23
+ a(t.throw(o));
24
24
  } catch (c) {
25
25
  i(c);
26
26
  }
27
- }, o = (a) => a.done ? r(a.value) : Promise.resolve(a.value).then(l, n);
28
- o((t = t.apply(s, e)).next());
27
+ }, a = (o) => o.done ? r(o.value) : Promise.resolve(o.value).then(l, n);
28
+ a((t = t.apply(s, e)).next());
29
29
  });
30
30
  import * as y from "three";
31
31
  const Ae = {
@@ -34,7 +34,7 @@ const Ae = {
34
34
  INCLUDE_SELF: "include-self",
35
35
  EXCLUDE_SELF: "exclude-self",
36
36
  END: "end"
37
- }, K = {
37
+ }, q = {
38
38
  NAME: "data-mirage-dom",
39
39
  KEY: "mirageDom",
40
40
  VALUES: {
@@ -54,16 +54,16 @@ const Ae = {
54
54
  CAPTURE_8: "8",
55
55
  CAPTURE_9: "9",
56
56
  CAPTURE_10: "10"
57
- }, _ = {
57
+ }, O = {
58
58
  NAME: "data-mirage-travel",
59
59
  KEY: "mirageTravel",
60
60
  VALUES: Ce,
61
61
  MAX_LAYERS: Object.keys(Ce).length - 1
62
- }, W = {
62
+ }, V = {
63
63
  NAME: "data-mirage-filter",
64
64
  KEY: "mirageFilter",
65
65
  VALUES: Ae
66
- }, $ = {
66
+ }, P = {
67
67
  NAME: "data-mirage-select",
68
68
  KEY: "mirageSelect",
69
69
  VALUES: Ae
@@ -76,7 +76,7 @@ const Ae = {
76
76
  VALUES: {
77
77
  FRONT: "front"
78
78
  }
79
- }, de = 0, Q = 1, ce = 2, Ye = 4, ue = 8, ve = 16;
79
+ }, de = 0, K = 1, ce = 2, Ye = 4, ue = 8, ve = 16;
80
80
  function We(s) {
81
81
  const e = s.match(/rgba?\((\d+),\s*(\d+),\s*(\d+)/);
82
82
  return e ? {
@@ -120,7 +120,7 @@ class De {
120
120
  u(this, "onScrollChange", /* @__PURE__ */ new Set());
121
121
  u(this, "onRender", /* @__PURE__ */ new Set());
122
122
  u(this, "onTransitionFinished", (e) => {
123
- this.target.contains(e.target) && this.mutationTimer === null && (this.cssTimer && clearTimeout(this.cssTimer), this.pendingStyles.size == 0 && (this.pendingMask |= Q | ce, this.cssTimer = window.setTimeout(() => {
123
+ this.target.contains(e.target) && this.mutationTimer === null && (this.cssTimer && clearTimeout(this.cssTimer), this.pendingStyles.size == 0 && (this.pendingMask |= K | ce, this.cssTimer = window.setTimeout(() => {
124
124
  this.isDomDirty = !0, this.cssTimer = null;
125
125
  }, 50)));
126
126
  });
@@ -139,7 +139,7 @@ class De {
139
139
  this.onBeforeRender.forEach((r) => r()), this.isDomDirty && (this.isDomDirty = !1, this.onLayoutChange.forEach((r) => r(this.pendingMask, this.pendingDeletions)), this.pendingDeletions.clear(), this.pendingMask = de);
140
140
  const e = window.scrollX, t = window.scrollY;
141
141
  (e !== this.lastScrollX || t !== this.lastScrollY) && (this.onScrollChange.forEach((r) => r(e, t)), this.lastScrollX = e, this.lastScrollY = t, this.scrollTimer && clearTimeout(this.scrollTimer), this.scrollTimer = window.setTimeout(() => {
142
- this.pendingMask |= Q, this.isDomDirty = !0, this.scrollTimer = null;
142
+ this.pendingMask |= K, this.isDomDirty = !0, this.scrollTimer = null;
143
143
  }, 150)), this.pendingStyles.size > 0 && (this.onStyleChange.forEach((r) => r(this.pendingStyles)), this.pendingStyles.clear()), this.onRender.forEach((r) => r()), requestAnimationFrame(this.renderLoop);
144
144
  });
145
145
  var i, l;
@@ -151,23 +151,23 @@ class De {
151
151
  onStart: r.onStart,
152
152
  onEnd: r.onEnd
153
153
  }, this.observer = new MutationObserver((n) => {
154
- let o = de;
155
- for (const a of n)
156
- if (a.type === "childList")
157
- o |= ue, a.removedNodes.length > 0 && a.removedNodes.forEach((c) => {
154
+ let a = de;
155
+ for (const o of n)
156
+ if (o.type === "childList")
157
+ a |= ue, o.removedNodes.length > 0 && o.removedNodes.forEach((c) => {
158
158
  c instanceof HTMLElement && this.pendingDeletions.add(c);
159
159
  });
160
- else if (a.type === "attributes")
161
- if (a.attributeName === "style") {
162
- o |= Q | ce;
163
- const c = a.target, d = He(c.style);
160
+ else if (o.type === "attributes")
161
+ if (o.attributeName === "style") {
162
+ a |= K | ce;
163
+ const c = o.target, d = He(c.style);
164
164
  this.pendingStyles.set(c, d);
165
165
  } else
166
- a.attributeName === "class" ? o |= Q | ce : a.attributeName && a.attributeName.startsWith("data-") && (o |= Q | ce, a.attributeName.startsWith("data-mirage") && (o |= ue));
166
+ o.attributeName === "class" ? a |= K | ce : o.attributeName && o.attributeName.startsWith("data-") && (a |= K | ce, o.attributeName.startsWith("data-mirage") && (a |= ue));
167
167
  else
168
- a.type === "characterData" && (o |= ve | Q);
169
- if (o !== de) {
170
- if (this.pendingMask |= o, o & ue) {
168
+ o.type === "characterData" && (a |= ve | K);
169
+ if (a !== de) {
170
+ if (this.pendingMask |= a, a & ue) {
171
171
  this.clearTimers(), this.isDomDirty = !0;
172
172
  return;
173
173
  }
@@ -192,12 +192,12 @@ class De {
192
192
  this.mutationTimer && (clearTimeout(this.mutationTimer), this.mutationTimer = null), this.cssTimer && (clearTimeout(this.cssTimer), this.cssTimer = null), this.scrollTimer && (clearTimeout(this.scrollTimer), this.scrollTimer = null);
193
193
  }
194
194
  }
195
- const P = 1, te = 2, U = {
195
+ const W = 1, te = 2, B = {
196
196
  BASE: 0,
197
197
  SELECTED: 1,
198
198
  getCaptureLayer: (s) => 31 - s,
199
199
  HIDDEN: 31
200
- }, Te = Object.values(W.VALUES);
200
+ }, Te = Object.values(V.VALUES);
201
201
  class ke {
202
202
  /**
203
203
  * Calculates or retrieves the exact alphabetic baseline (in pixels) for the given font.
@@ -238,28 +238,28 @@ class Pe extends y.MeshBasicMaterial {
238
238
  const i = t.split(`
239
239
  `), l = [];
240
240
  return i.forEach((n) => {
241
- const o = n.match(/[^\s\-]+\-?|\-|\s+/g) || [];
242
- if (o.length === 0) {
241
+ const a = n.match(/[^\s\-]+\-?|\-|\s+/g) || [];
242
+ if (a.length === 0) {
243
243
  l.push("");
244
244
  return;
245
245
  }
246
- let a = o[0];
247
- for (let c = 1; c < o.length; c++) {
248
- const d = o[c];
249
- this.ctx.measureText(a + d).width <= r + 2 ? a += d : (a && l.push(a), a = d.trimStart());
246
+ let o = a[0];
247
+ for (let c = 1; c < a.length; c++) {
248
+ const d = a[c];
249
+ this.ctx.measureText(o + d).width <= r + 2 ? o += d : (o && l.push(o), o = d.trimStart());
250
250
  }
251
- a && l.push(a);
251
+ o && l.push(o);
252
252
  }), l;
253
253
  }
254
254
  updateText(t, r, i, l, n) {
255
255
  n !== void 0 && (this.qualityFactor = n);
256
- const a = (window.devicePixelRatio || 1) * this.qualityFactor, c = i * a, d = l * a;
257
- this.canvas.width !== c || this.canvas.height !== d ? (this.canvas.width = c, this.canvas.height = d) : this.ctx.clearRect(0, 0, this.canvas.width, this.canvas.height), this.ctx.setTransform(a, 0, 0, a, 0, 0), this.ctx.font = r.font, this.ctx.fillStyle = r.color, this.ctx.textBaseline = "alphabetic", this.ctx.globalAlpha = 1;
258
- const h = this.wrapText(t, i), f = r.lineHeight, v = ke.getBaseline(r.font);
259
- h.forEach((g, m) => {
260
- const b = m * f + v;
256
+ const o = (window.devicePixelRatio || 1) * this.qualityFactor, c = i * o, d = l * o;
257
+ this.canvas.width !== c || this.canvas.height !== d ? (this.canvas.width = c, this.canvas.height = d) : this.ctx.clearRect(0, 0, this.canvas.width, this.canvas.height), this.ctx.setTransform(o, 0, 0, o, 0, 0), this.ctx.font = r.font, this.ctx.fillStyle = r.color, this.ctx.textBaseline = "alphabetic", this.ctx.globalAlpha = 1;
258
+ const h = this.wrapText(t, i), g = r.lineHeight, v = ke.getBaseline(r.font);
259
+ h.forEach((p, m) => {
260
+ const w = m * g + v;
261
261
  let L = 0;
262
- r.textAlign === "center" ? L = i / 2 : r.textAlign === "right" && (L = i), this.ctx.textAlign = r.textAlign, this.ctx.fillText(g, L, b);
262
+ r.textAlign === "center" ? L = i / 2 : r.textAlign === "right" && (L = i), this.ctx.textAlign = r.textAlign, this.ctx.fillText(p, L, w);
263
263
  }), this.map && (this.map.needsUpdate = !0);
264
264
  }
265
265
  dispose() {
@@ -313,42 +313,42 @@ function $e(s) {
313
313
  if (n.startsWith("to "))
314
314
  n === "to top" ? i = 0 : n === "to right" ? i = Math.PI / 2 : n === "to bottom" ? i = Math.PI : n === "to left" ? i = Math.PI * 1.5 : n === "to top right" || n === "to right top" ? i = Math.PI / 4 : n === "to bottom right" || n === "to right bottom" ? i = Math.PI * 0.75 : n === "to bottom left" || n === "to left bottom" ? i = Math.PI * 1.25 : (n === "to top left" || n === "to left top") && (i = Math.PI * 1.75), l = 1;
315
315
  else if (n.endsWith("deg") || n.endsWith("rad") || n.endsWith("turn")) {
316
- const a = parseFloat(n);
317
- n.endsWith("deg") ? i = a * (Math.PI / 180) : n.endsWith("rad") ? i = a : n.endsWith("turn") && (i = a * Math.PI * 2), l = 1;
316
+ const o = parseFloat(n);
317
+ n.endsWith("deg") ? i = o * (Math.PI / 180) : n.endsWith("rad") ? i = o : n.endsWith("turn") && (i = o * Math.PI * 2), l = 1;
318
318
  }
319
- const o = [];
320
- for (let a = l; a < r.length && !(o.length >= 8); a++) {
321
- const c = r[a].trim(), d = c.lastIndexOf(" ");
322
- let h = c, f = null;
319
+ const a = [];
320
+ for (let o = l; o < r.length && !(a.length >= 8); o++) {
321
+ const c = r[o].trim(), d = c.lastIndexOf(" ");
322
+ let h = c, g = null;
323
323
  if (d !== -1 && !c.endsWith(")")) {
324
- const g = c.substring(d + 1);
325
- (g.endsWith("%") || g.endsWith("px") || !isNaN(parseFloat(g))) && (h = c.substring(0, d).trim(), f = g);
324
+ const p = c.substring(d + 1);
325
+ (p.endsWith("%") || p.endsWith("px") || !isNaN(parseFloat(p))) && (h = c.substring(0, d).trim(), g = p);
326
326
  }
327
327
  const v = le(h);
328
- o.push({
328
+ a.push({
329
329
  color: v.color,
330
330
  alpha: v.alpha,
331
- rawStop: f,
331
+ rawStop: g,
332
332
  stop: 0
333
333
  });
334
334
  }
335
- if (o.length > 0) {
336
- for (let c = 0; c < o.length; c++)
337
- o[c].rawStop !== null && (o[c].stop = parseFloat(o[c].rawStop) / 100);
338
- o[0].rawStop === null && (o[0].stop = 0), o.length > 1 && o[o.length - 1].rawStop === null && (o[o.length - 1].stop = 1);
339
- let a = 0;
340
- for (let c = 1; c < o.length; c++)
341
- if (o[c].rawStop !== null || c === o.length - 1) {
342
- const d = c - a;
335
+ if (a.length > 0) {
336
+ for (let c = 0; c < a.length; c++)
337
+ a[c].rawStop !== null && (a[c].stop = parseFloat(a[c].rawStop) / 100);
338
+ a[0].rawStop === null && (a[0].stop = 0), a.length > 1 && a[a.length - 1].rawStop === null && (a[a.length - 1].stop = 1);
339
+ let o = 0;
340
+ for (let c = 1; c < a.length; c++)
341
+ if (a[c].rawStop !== null || c === a.length - 1) {
342
+ const d = c - o;
343
343
  if (d > 1) {
344
- const h = o[a].stop, v = (o[c].stop - h) / d;
345
- for (let g = 1; g < d; g++)
346
- o[a + g].stop = h + v * g;
344
+ const h = a[o].stop, v = (a[c].stop - h) / d;
345
+ for (let p = 1; p < d; p++)
346
+ a[o + p].stop = h + v * p;
347
347
  }
348
- a = c;
348
+ o = c;
349
349
  }
350
350
  }
351
- return { angle: i, stops: o };
351
+ return { angle: i, stops: a };
352
352
  }
353
353
  const qe = `varying vec2 vUv;
354
354
  varying vec4 vScreenPos;
@@ -512,30 +512,30 @@ baseColor = blendSrcOver(baseColor, texColor);`, Re = {
512
512
  baseColorChunk: Qe
513
513
  };
514
514
  function Ze(s, e, t, r = null, i) {
515
- var x;
515
+ var E;
516
516
  const l = r !== null || !!s.imageSrc;
517
517
  let n = "";
518
- const o = {};
518
+ const a = {};
519
519
  if (i != null && i.uniforms)
520
- for (const [C, w] of Object.entries(i.uniforms))
521
- typeof w == "number" ? (n += `uniform float ${C};
522
- `, o[C] = { value: w }) : Array.isArray(w) ? w.length === 2 ? (n += `uniform vec2 ${C};
523
- `, o[C] = { value: new y.Vector2(...w) }) : w.length === 3 ? (n += `uniform vec3 ${C};
524
- `, o[C] = { value: new y.Vector3(...w) }) : w.length === 4 && (n += `uniform vec4 ${C};
525
- `, o[C] = { value: new y.Vector4(...w) }) : (n += `uniform float ${C};
526
- `, o[C] = { value: w });
527
- const a = i !== void 0, c = (l || a ? Le.declChunk : "") + `
520
+ for (const [S, x] of Object.entries(i.uniforms))
521
+ typeof x == "number" ? (n += `uniform float ${S};
522
+ `, a[S] = { value: x }) : Array.isArray(x) ? x.length === 2 ? (n += `uniform vec2 ${S};
523
+ `, a[S] = { value: new y.Vector2(...x) }) : x.length === 3 ? (n += `uniform vec3 ${S};
524
+ `, a[S] = { value: new y.Vector3(...x) }) : x.length === 4 && (n += `uniform vec4 ${S};
525
+ `, a[S] = { value: new y.Vector4(...x) }) : (n += `uniform float ${S};
526
+ `, a[S] = { value: x });
527
+ const o = i !== void 0, c = (l || o ? Le.declChunk : "") + `
528
528
  ` + n, d = `vec2 screenUv = (vScreenPos.xy / vScreenPos.w) * 0.5 + 0.5;
529
529
  `, h = s.isTraveler ? `vec2 resultUv = screenUv;
530
530
  ` : `vec2 resultUv = vUv * uTextureRepeat + uTextureOffset;
531
- `, f = l || a ? d + h + ((i == null ? void 0 : i.uvModifier) || "") : "", v = l || a ? Le.baseColorChunk : "", g = (i == null ? void 0 : i.colorModifier) || "", m = Re.fragmentShader.replace("#INJECT_DECLARATIONS", c).replace("#INJECT_UV_MODIFIER", f).replace("#INJECT_BASE_COLOR", v).replace("#INJECT_COLOR_MODIFIER", g), b = le(s.backgroundColor), L = le(s.borderColor), M = {
531
+ `, g = l || o ? d + h + ((i == null ? void 0 : i.uvModifier) || "") : "", v = l || o ? Le.baseColorChunk : "", p = (i == null ? void 0 : i.colorModifier) || "", m = Re.fragmentShader.replace("#INJECT_DECLARATIONS", c).replace("#INJECT_UV_MODIFIER", g).replace("#INJECT_BASE_COLOR", v).replace("#INJECT_COLOR_MODIFIER", p), w = le(s.backgroundColor), L = le(s.borderColor), M = {
532
532
  uSize: { value: new y.Vector2(e, t) },
533
533
  uBgColor: {
534
534
  value: new y.Vector4(
535
- b.color.r,
536
- b.color.g,
537
- b.color.b,
538
- b.alpha
535
+ w.color.r,
536
+ w.color.g,
537
+ w.color.b,
538
+ w.alpha
539
539
  )
540
540
  },
541
541
  uBorderColor: {
@@ -548,7 +548,7 @@ function Ze(s, e, t, r = null, i) {
548
548
  },
549
549
  uBorderRadius: { value: new y.Vector4(0, 0, 0, 0) },
550
550
  uBorderWidth: { value: re(s.borderWidth) },
551
- uOpacity: { value: (x = s.opacity) != null ? x : 1 },
551
+ uOpacity: { value: (E = s.opacity) != null ? E : 1 },
552
552
  uTexture: { value: null },
553
553
  uTextureRepeat: { value: new y.Vector2(1, 1) },
554
554
  uTextureOffset: { value: new y.Vector2(0, 0) },
@@ -560,15 +560,15 @@ function Ze(s, e, t, r = null, i) {
560
560
  uGradientStops: { value: new Float32Array(8) }
561
561
  };
562
562
  Ie(M.uBorderRadius.value, s.borderRadius, Math.min(e, t)), l && (M.uTexture.value = r);
563
- const S = new y.ShaderMaterial({
564
- uniforms: J(J({}, M), o),
563
+ const T = new y.ShaderMaterial({
564
+ uniforms: j(j({}, M), a),
565
565
  vertexShader: Re.vertexShader,
566
566
  fragmentShader: m,
567
567
  transparent: !0,
568
568
  side: y.FrontSide
569
569
  // for better performance
570
570
  });
571
- return s.backgroundImage && ye(S, { backgroundImage: s.backgroundImage }), S;
571
+ return s.backgroundImage && ye(T, { backgroundImage: s.backgroundImage }), T;
572
572
  }
573
573
  function et(s, e, t, r, i) {
574
574
  const l = re(e.borderWidth);
@@ -645,15 +645,15 @@ function ye(s, e) {
645
645
  e.opacity !== void 0 && (s.uniforms.uOpacity.value = e.opacity), e.bgOpacity !== void 0 && (s.uniforms.uBgColor.value.w = e.bgOpacity), e.borderOpacity !== void 0 && (s.uniforms.uBorderColor.value.w = e.borderOpacity), s.uniforms.uTexture && e.texture !== void 0 && (s.uniforms.uTexture.value = e.texture);
646
646
  const t = e.texture !== void 0 ? e.texture : (r = s.uniforms.uTexture) == null ? void 0 : r.value;
647
647
  if (t && (t.image instanceof ImageBitmap || t.image instanceof HTMLImageElement || t.image instanceof HTMLCanvasElement)) {
648
- const n = t.image.naturalWidth || t.image.videoWidth || t.image.width, o = t.image.naturalHeight || t.image.videoHeight || t.image.height, a = (i = e.width) != null ? i : s.uniforms.uSize.value.x, c = (l = e.height) != null ? l : s.uniforms.uSize.value.y;
649
- if (n && o && a && c) {
650
- const d = n / o, h = a / c;
648
+ const n = t.image.naturalWidth || t.image.videoWidth || t.image.width, a = t.image.naturalHeight || t.image.videoHeight || t.image.height, o = (i = e.width) != null ? i : s.uniforms.uSize.value.x, c = (l = e.height) != null ? l : s.uniforms.uSize.value.y;
649
+ if (n && a && o && c) {
650
+ const d = n / a, h = o / c;
651
651
  if (d > h) {
652
- const f = h / d;
653
- s.uniforms.uTextureRepeat.value.set(f, 1), s.uniforms.uTextureOffset.value.set((1 - f) / 2, 0);
652
+ const g = h / d;
653
+ s.uniforms.uTextureRepeat.value.set(g, 1), s.uniforms.uTextureOffset.value.set((1 - g) / 2, 0);
654
654
  } else {
655
- const f = d / h;
656
- s.uniforms.uTextureRepeat.value.set(1, f), s.uniforms.uTextureOffset.value.set(0, (1 - f) / 2);
655
+ const g = d / h;
656
+ s.uniforms.uTextureRepeat.value.set(1, g), s.uniforms.uTextureOffset.value.set(0, (1 - g) / 2);
657
657
  }
658
658
  }
659
659
  } else
@@ -662,17 +662,17 @@ function ye(s, e) {
662
662
  const n = $e(e.backgroundImage);
663
663
  if (n) {
664
664
  s.uniforms.uGradientCount.value = n.stops.length, s.uniforms.uGradientAngle.value = n.angle;
665
- for (let o = 0; o < 8; o++)
666
- if (o < n.stops.length) {
667
- const a = n.stops[o];
668
- s.uniforms.uGradientColors.value[o].set(
669
- a.color.r,
670
- a.color.g,
671
- a.color.b,
672
- a.alpha
673
- ), s.uniforms.uGradientStops.value[o] = a.stop;
665
+ for (let a = 0; a < 8; a++)
666
+ if (a < n.stops.length) {
667
+ const o = n.stops[a];
668
+ s.uniforms.uGradientColors.value[a].set(
669
+ o.color.r,
670
+ o.color.g,
671
+ o.color.b,
672
+ o.alpha
673
+ ), s.uniforms.uGradientStops.value[a] = o.stop;
674
674
  } else
675
- s.uniforms.uGradientColors.value[o].set(0, 0, 0, 0), s.uniforms.uGradientStops.value[o] = 1;
675
+ s.uniforms.uGradientColors.value[a].set(0, 0, 0, 0), s.uniforms.uGradientStops.value[a] = 1;
676
676
  } else
677
677
  s.uniforms.uGradientCount.value = 0;
678
678
  }
@@ -680,7 +680,7 @@ function ye(s, e) {
680
680
  n !== "width" && n !== "height" && n !== "borderRadius" && n !== "borderWidth" && n !== "backgroundColor" && n !== "borderColor" && n !== "opacity" && n !== "bgOpacity" && n !== "borderOpacity" && n !== "texture" && n !== "backgroundImage" && s.uniforms[n] !== void 0 && (s.uniforms[n].value !== void 0 && s.uniforms[n].value !== null && typeof s.uniforms[n].value.set == "function" ? Array.isArray(e[n]) ? s.uniforms[n].value.set(...e[n]) : e[n] !== void 0 && (e[n].copy ? s.uniforms[n].value.copy(e[n]) : s.uniforms[n].value = e[n]) : s.uniforms[n].value = e[n]);
681
681
  }
682
682
  function Ie(s, e, t = 0) {
683
- var a, c, d, h;
683
+ var o, c, d, h;
684
684
  if (e == null) {
685
685
  s.set(0, 0, 0, 0);
686
686
  return;
@@ -693,17 +693,17 @@ function Ie(s, e, t = 0) {
693
693
  s.set(e[0], e[1], e[2], e[3]);
694
694
  return;
695
695
  }
696
- const r = e.split("/")[0].trim().split(/\s+/), i = re(r[0], t), l = re((a = r[1]) != null ? a : r[0], t), n = re((c = r[2]) != null ? c : r[0], t), o = re((h = (d = r[3]) != null ? d : r[1]) != null ? h : r[0], t);
697
- s.set(i, l, n, o);
696
+ const r = e.split("/")[0].trim().split(/\s+/), i = re(r[0], t), l = re((o = r[1]) != null ? o : r[0], t), n = re((c = r[2]) != null ? c : r[0], t), a = re((h = (d = r[3]) != null ? d : r[1]) != null ? h : r[0], t);
697
+ s.set(i, l, n, a);
698
698
  }
699
- const H = {
700
- create(s, e, t, r, i, l = 2, n = null, o) {
699
+ const Y = {
700
+ create(s, e, t, r, i, l = 2, n = null, a) {
701
701
  return s === "BOX" ? Ze(
702
702
  e,
703
703
  r,
704
704
  i,
705
705
  n,
706
- o
706
+ a
707
707
  ) : s === "TEXT" ? new Pe(
708
708
  t || "",
709
709
  e,
@@ -712,13 +712,13 @@ const H = {
712
712
  l
713
713
  ) : new y.MeshBasicMaterial({ visible: !1 });
714
714
  },
715
- update(s, e, t, r, i, l, n = 2, o) {
715
+ update(s, e, t, r, i, l, n = 2, a) {
716
716
  e === "BOX" ? et(
717
717
  s,
718
718
  t,
719
719
  i,
720
720
  l,
721
- o
721
+ a
722
722
  ) : e === "TEXT" && s.updateText(
723
723
  r || "",
724
724
  t,
@@ -767,8 +767,8 @@ class tt {
767
767
  let r;
768
768
  if (t.startsWith("data:image/svg+xml"))
769
769
  r = yield new Promise((l, n) => {
770
- const o = new Image();
771
- o.onload = () => l(o), o.onerror = n, o.src = t;
770
+ const a = new Image();
771
+ a.onload = () => l(a), a.onerror = n, a.src = t;
772
772
  });
773
773
  else {
774
774
  const n = yield (yield fetch(t)).blob();
@@ -818,16 +818,16 @@ class rt {
818
818
  u(this, "registry");
819
819
  u(this, "targetRect");
820
820
  u(this, "travelersByLayer", Array.from(
821
- { length: _.MAX_LAYERS },
821
+ { length: O.MAX_LAYERS },
822
822
  () => /* @__PURE__ */ new Set()
823
823
  ));
824
824
  u(this, "textureManager");
825
825
  // private meshMap: Map<HTMLElement, THREE.Mesh> = new Map();
826
826
  u(this, "fixedMeshes", /* @__PURE__ */ new Set());
827
- var o, a, c, d, h;
828
- this.target = e, this.mountContainer = r, this.registry = i, this.mode = (o = t.mode) != null ? o : "overlay", this.canvasSize = (a = t.canvasSize) != null ? a : "viewport", this.clipArea = (c = t.travelerClipArea) != null ? c : 1, this.targetLayer = (d = t.layer) != null ? d : "base", this.textureManager = new tt((f, v) => {
829
- const g = this.registry.get(f);
830
- g && g.material instanceof y.ShaderMaterial && H.forceUpdateUniforms(g.material, { texture: v });
827
+ var a, o, c, d, h;
828
+ this.target = e, this.mountContainer = r, this.registry = i, this.mode = (a = t.mode) != null ? a : "overlay", this.canvasSize = (o = t.canvasSize) != null ? o : "viewport", this.clipArea = (c = t.travelerClipArea) != null ? c : 1, this.targetLayer = (d = t.layer) != null ? d : "base", this.textureManager = new tt((g, v) => {
829
+ const p = this.registry.get(g);
830
+ p && p.material instanceof y.ShaderMaterial && Y.forceUpdateUniforms(p.material, { texture: v });
831
831
  }, this.isViewport), this.canvas = document.createElement("canvas"), this.scene = new y.Scene(), this.targetRect = this.target.getBoundingClientRect();
832
832
  const l = this.isViewport ? window.innerWidth + this.overscan * 2 : this.targetRect.width, n = this.isViewport ? window.innerHeight + this.overscan * 2 : this.targetRect.height;
833
833
  this.camera = new y.OrthographicCamera(
@@ -849,10 +849,10 @@ class rt {
849
849
  return this.mode === "overlay" && this.canvasSize === "viewport";
850
850
  }
851
851
  getSceneLayer() {
852
- return typeof this.targetLayer == "number" ? this.targetLayer : this.targetLayer === "selected" ? U.SELECTED : U.BASE;
852
+ return typeof this.targetLayer == "number" ? this.targetLayer : this.targetLayer === "selected" ? B.SELECTED : B.BASE;
853
853
  }
854
854
  createRenderTarget() {
855
- for (let e = 0; e < _.MAX_LAYERS; e++) {
855
+ for (let e = 0; e < O.MAX_LAYERS; e++) {
856
856
  const t = this.isViewport ? window.innerWidth + this.overscan * 2 : this.targetRect.width, r = this.isViewport ? window.innerHeight + this.overscan * 2 : this.targetRect.height;
857
857
  this.renderTargets.push(
858
858
  new y.WebGLRenderTarget(
@@ -899,12 +899,12 @@ class rt {
899
899
  updateUniforms(e, t) {
900
900
  const r = this.registry.get(e);
901
901
  r && (r.traverse((i) => {
902
- i.isMesh && i.material && H.forceUpdateUniforms(
902
+ i.isMesh && i.material && Y.forceUpdateUniforms(
903
903
  i.material,
904
904
  t
905
905
  );
906
906
  }), r.userData.nativeMesh && r.userData.nativeMesh.traverse((i) => {
907
- i.isMesh && i.material && H.forceUpdateUniforms(
907
+ i.isMesh && i.material && Y.forceUpdateUniforms(
908
908
  i.material,
909
909
  t
910
910
  );
@@ -920,17 +920,17 @@ class rt {
920
920
  this.camera.left = e / -2, this.camera.right = e / 2, this.camera.top = t / 2, this.camera.bottom = t / -2, this.camera.updateProjectionMatrix();
921
921
  }
922
922
  syncScene(e, t) {
923
- const r = this.target.getBoundingClientRect(), i = this.isViewport ? window.innerWidth + this.overscan * 2 : r.width, l = this.isViewport ? window.innerHeight + this.overscan * 2 : r.height, n = this.isViewport ? this.canvas.clientWidth : this.targetRect.width, o = this.isViewport ? this.canvas.clientHeight : this.targetRect.height, a = Math.abs(i - n) > 0.1 || Math.abs(l - o) > 0.1, c = this.mode === "overlay" && (Math.abs(r.top - this.targetRect.top) > 0.1 || Math.abs(r.left - this.targetRect.left) > 0.1);
924
- a ? (this.targetRect = r, this.setSize(i, l), this.updateCanvasLayout()) : c ? (this.targetRect = r, this.updateCanvasLayout()) : this.targetRect = r, this.renderOrder = 0, this.reconcileNode(e), t.size > 0 && t.forEach((d) => {
923
+ const r = this.target.getBoundingClientRect(), i = this.isViewport ? window.innerWidth + this.overscan * 2 : r.width, l = this.isViewport ? window.innerHeight + this.overscan * 2 : r.height, n = this.isViewport ? this.canvas.clientWidth : this.targetRect.width, a = this.isViewport ? this.canvas.clientHeight : this.targetRect.height, o = Math.abs(i - n) > 0.1 || Math.abs(l - a) > 0.1, c = this.mode === "overlay" && (Math.abs(r.top - this.targetRect.top) > 0.1 || Math.abs(r.left - this.targetRect.left) > 0.1);
924
+ o ? (this.targetRect = r, this.setSize(i, l), this.updateCanvasLayout()) : c ? (this.targetRect = r, this.updateCanvasLayout()) : this.targetRect = r, this.renderOrder = 0, this.reconcileNode(e), t.size > 0 && t.forEach((d) => {
925
925
  const h = this.registry.get(d);
926
926
  if (h) {
927
927
  this.scene.remove(h);
928
- for (const f of this.travelersByLayer)
929
- f.delete(h);
928
+ for (const g of this.travelersByLayer)
929
+ g.delete(h);
930
930
  this.fixedMeshes.delete(h), h.geometry.dispose(), h.userData.nativeMesh && (this.scene.remove(h.userData.nativeMesh), Array.isArray(h.userData.nativeMesh.material) ? h.userData.nativeMesh.material.forEach(
931
- (f) => f.dispose()
932
- ) : h.userData.nativeMesh.material.dispose(), h.userData.nativeMesh.geometry.dispose()), h.traverse((f) => {
933
- f instanceof y.Mesh && (f.geometry && f.geometry.dispose(), f.material && (Array.isArray(f.material) ? f.material.forEach((v) => v.dispose()) : f.material.dispose()));
931
+ (g) => g.dispose()
932
+ ) : h.userData.nativeMesh.material.dispose(), h.userData.nativeMesh.geometry.dispose()), h.traverse((g) => {
933
+ g instanceof y.Mesh && (g.geometry && g.geometry.dispose(), g.material && (Array.isArray(g.material) ? g.material.forEach((v) => v.dispose()) : g.material.dispose()));
934
934
  }), this.registry.remove(d), this.textureManager.unregister(d);
935
935
  }
936
936
  });
@@ -944,20 +944,20 @@ class rt {
944
944
  let t = this.registry.get(e.element);
945
945
  const r = JSON.stringify(e.shaderHooks || null);
946
946
  if (t && t.userData.shaderHash !== r && (this.scene.remove(t), t.geometry.dispose(), t.material instanceof y.Material && t.material.dispose(), this.registry.remove(e.element), t = void 0), !t) {
947
- const n = new y.PlaneGeometry(1, 1), o = e.isTraveler ? (i = this.renderTargets[e.captureLayer - 2]) == null ? void 0 : i.texture : this.textureManager.get(e.element), a = H.create(
947
+ const n = new y.PlaneGeometry(1, 1), a = e.isTraveler ? (i = this.renderTargets[e.captureLayer - 2]) == null ? void 0 : i.texture : this.textureManager.get(e.element), o = Y.create(
948
948
  "BOX",
949
949
  e.styles,
950
950
  "",
951
951
  e.rect.width,
952
952
  e.rect.height,
953
953
  this.qualityFactor,
954
- o,
954
+ a,
955
955
  e.shaderHooks
956
956
  );
957
- t = new y.Mesh(n, a), e.type === "TEXT" && (t.name = "BG_MESH"), this.scene.add(t), this.registry.register(e.element, t), t.userData.baseMaterial = a, t.userData.domElement = e.element, t.userData.shaderHash = r;
957
+ t = new y.Mesh(n, o), e.type === "TEXT" && (t.name = "BG_MESH"), this.scene.add(t), this.registry.register(e.element, t), t.userData.baseMaterial = o, t.userData.domElement = e.element, t.userData.shaderHash = r;
958
958
  }
959
959
  if ((l = e.nativeStyles) != null && l.transform ? t.userData.nativeTransform = e.nativeStyles.transform : t.userData.nativeTransform = void 0, this.updateMeshProperties(t, e), this.updateMeshLayers(t, e), e.isTraveler)
960
- for (let n = 0; n < _.MAX_LAYERS; n++)
960
+ for (let n = 0; n < O.MAX_LAYERS; n++)
961
961
  n === e.captureLayer - 2 ? this.travelersByLayer[n].add(t) : this.travelersByLayer[n].delete(t);
962
962
  else
963
963
  for (const n of this.travelersByLayer)
@@ -976,31 +976,31 @@ class rt {
976
976
  var c;
977
977
  const i = t.textLines || [
978
978
  { text: t.textContent || "", rect: t.rect }
979
- ], l = r ? t.nativeStyles : t.textStyles, n = JSON.stringify(l) + t.textContent + i.map((d) => d.text).join("|"), o = (c = e.userData) == null ? void 0 : c.textChildStyleHash;
980
- if (t.dirtyMask & ve || n !== o) {
979
+ ], l = r ? t.nativeStyles : t.textStyles, n = JSON.stringify(l) + t.textContent + i.map((d) => d.text).join("|"), a = (c = e.userData) == null ? void 0 : c.textChildStyleHash;
980
+ if (t.dirtyMask & ve || n !== a) {
981
981
  e.children.filter(
982
- (g) => g.name.startsWith("TEXT_CHILD")
983
- ).forEach((g) => {
984
- var b;
985
- const m = g;
986
- (b = m.material.map) == null || b.dispose(), m.geometry.dispose(), e.remove(m);
982
+ (p) => p.name.startsWith("TEXT_CHILD")
983
+ ).forEach((p) => {
984
+ var w;
985
+ const m = p;
986
+ (w = m.material.map) == null || w.dispose(), m.geometry.dispose(), e.remove(m);
987
987
  });
988
- const h = t.rect, f = h.x + h.width / 2, v = h.y + h.height / 2;
989
- i.forEach((g, m) => {
990
- const b = H.create(
988
+ const h = t.rect, g = h.x + h.width / 2, v = h.y + h.height / 2;
989
+ i.forEach((p, m) => {
990
+ const w = Y.create(
991
991
  "TEXT",
992
992
  l,
993
- g.text,
994
- g.rect.width,
995
- g.rect.height,
993
+ p.text,
994
+ p.rect.width,
995
+ p.rect.height,
996
996
  this.qualityFactor
997
- ), L = new y.PlaneGeometry(1, 1), M = new y.Mesh(L, b);
997
+ ), L = new y.PlaneGeometry(1, 1), M = new y.Mesh(L, w);
998
998
  M.name = `TEXT_CHILD_${m}`;
999
- const S = t.rect.width === 0 ? 1 : g.rect.width / t.rect.width, x = t.rect.height === 0 ? 1 : g.rect.height / t.rect.height;
1000
- M.scale.set(S, x, 1);
1001
- const C = g.rect.x + g.rect.width / 2, w = g.rect.y + g.rect.height / 2, T = C - f, A = -(w - v);
999
+ const T = t.rect.width === 0 ? 1 : p.rect.width / t.rect.width, E = t.rect.height === 0 ? 1 : p.rect.height / t.rect.height;
1000
+ M.scale.set(T, E, 1);
1001
+ const S = p.rect.x + p.rect.width / 2, x = p.rect.y + p.rect.height / 2, R = S - g, A = -(x - v);
1002
1002
  M.position.set(
1003
- t.rect.width === 0 ? 0 : T / t.rect.width,
1003
+ t.rect.width === 0 ? 0 : R / t.rect.width,
1004
1004
  t.rect.height === 0 ? 0 : A / t.rect.height,
1005
1005
  5e-3
1006
1006
  ), e.add(M);
@@ -1011,52 +1011,52 @@ class rt {
1011
1011
  return;
1012
1012
  const h = d;
1013
1013
  if (r && t.nativeLayer !== void 0)
1014
- h.layers.set(U.HIDDEN), t.visibility & P && h.layers.enable(U.getCaptureLayer(t.nativeLayer));
1014
+ h.layers.set(B.HIDDEN), t.visibility & W && h.layers.enable(B.getCaptureLayer(t.nativeLayer));
1015
1015
  else {
1016
- const f = t.visibility & P ? U.BASE : U.HIDDEN;
1017
- if (h.layers.set(f), t.visibility & te && h.layers.enable(U.SELECTED), t.visibility & P)
1016
+ const g = t.visibility & W ? B.BASE : B.HIDDEN;
1017
+ if (h.layers.set(g), t.visibility & te && h.layers.enable(B.SELECTED), t.visibility & W)
1018
1018
  if (!r && t.nativeLayer !== void 0 && t.nativeStyles !== void 0)
1019
- for (let v = t.captureLayer; v <= _.MAX_LAYERS + 1; v++)
1020
- v !== t.nativeLayer && h.layers.enable(U.getCaptureLayer(v));
1019
+ for (let v = t.captureLayer; v <= O.MAX_LAYERS + 1; v++)
1020
+ v !== t.nativeLayer && h.layers.enable(B.getCaptureLayer(v));
1021
1021
  else
1022
- for (let v = t.captureLayer; v <= _.MAX_LAYERS + 1; v++)
1023
- h.layers.enable(U.getCaptureLayer(v));
1022
+ for (let v = t.captureLayer; v <= O.MAX_LAYERS + 1; v++)
1023
+ h.layers.enable(B.getCaptureLayer(v));
1024
1024
  }
1025
1025
  });
1026
1026
  }
1027
1027
  updateMeshProperties(e, t) {
1028
- var S, x, C;
1029
- const { rect: r, styles: i } = t, l = this.renderer.getPixelRatio(), n = this.renderer.domElement.width / l, o = this.renderer.domElement.height / l;
1028
+ var T, E, S;
1029
+ const { rect: r, styles: i } = t, l = this.renderer.getPixelRatio(), n = this.renderer.domElement.width / l, a = this.renderer.domElement.height / l;
1030
1030
  e.material = e.userData.baseMaterial, e.scale.set(r.width, r.height, 1), e.userData.domRect = {
1031
1031
  x: r.x,
1032
1032
  y: r.y,
1033
1033
  width: r.width,
1034
1034
  height: r.height
1035
1035
  };
1036
- const a = 1e-3;
1036
+ const o = 1e-3;
1037
1037
  this.renderOrder++;
1038
1038
  const c = this.targetRect.left + window.scrollX, d = this.targetRect.top + window.scrollY;
1039
- let h, f;
1039
+ let h, g;
1040
1040
  if (this.isViewport)
1041
- h = r.x - window.innerWidth / 2 + r.width / 2, f = -r.y + window.innerHeight / 2 - r.height / 2;
1041
+ h = r.x - window.innerWidth / 2 + r.width / 2, g = -r.y + window.innerHeight / 2 - r.height / 2;
1042
1042
  else {
1043
- const w = r.x - c, T = r.y - d;
1044
- h = w - n / 2 + r.width / 2, f = -T + o / 2 - r.height / 2;
1043
+ const x = r.x - c, R = r.y - d;
1044
+ h = x - n / 2 + r.width / 2, g = -R + a / 2 - r.height / 2;
1045
1045
  }
1046
1046
  e.position.set(
1047
1047
  h,
1048
- f,
1049
- i.zIndex + this.renderOrder * a
1048
+ g,
1049
+ i.zIndex + this.renderOrder * o
1050
1050
  );
1051
- const v = r.x, g = r.y;
1052
- e.userData.basePosition = { x: h, y: f }, e.userData.originalBasePosition = { x: h, y: f }, e.userData.baseSize = { width: r.width, height: r.height }, e.userData.baseDOM = { x: v, y: g }, e.userData.isFixed = t.isFixed, e.userData.initialScroll = { x: window.scrollX, y: window.scrollY };
1053
- const m = t.element.nodeType === Node.TEXT_NODE ? t.element.parentElement : t.element, b = window.getComputedStyle(m);
1051
+ const v = r.x, p = r.y;
1052
+ e.userData.basePosition = { x: h, y: g }, e.userData.originalBasePosition = { x: h, y: g }, e.userData.baseSize = { width: r.width, height: r.height }, e.userData.baseDOM = { x: v, y: p }, e.userData.isFixed = t.isFixed, e.userData.initialScroll = { x: window.scrollX, y: window.scrollY };
1053
+ const m = t.element.nodeType === Node.TEXT_NODE ? t.element.parentElement : t.element, w = window.getComputedStyle(m);
1054
1054
  let L = 0, M = 0;
1055
- if (b.transform && b.transform !== "none") {
1056
- const w = new DOMMatrix(b.transform);
1057
- L = w.m41, M = w.m42;
1055
+ if (w.transform && w.transform !== "none") {
1056
+ const x = new DOMMatrix(w.transform);
1057
+ L = x.m41, M = x.m42;
1058
1058
  }
1059
- if (e.userData.baseTransform = { x: L, y: M }, delete e.userData.originRatioX, delete e.userData.originRatioY, H.update(
1059
+ if (e.userData.baseTransform = { x: L, y: M }, delete e.userData.originRatioX, delete e.userData.originRatioY, Y.update(
1060
1060
  e.userData.baseMaterial,
1061
1061
  "BOX",
1062
1062
  i,
@@ -1064,109 +1064,119 @@ class rt {
1064
1064
  r.width,
1065
1065
  r.height,
1066
1066
  this.qualityFactor,
1067
- t.isTraveler ? (S = this.renderTargets[t.captureLayer - 2]) == null ? void 0 : S.texture : this.textureManager.get(t.element)
1067
+ t.isTraveler ? (T = this.renderTargets[t.captureLayer - 2]) == null ? void 0 : T.texture : this.textureManager.get(t.element)
1068
1068
  ), t.nativeStyles && t.nativeRect) {
1069
1069
  if (!e.userData.nativeMesh) {
1070
- const X = H.create(
1070
+ const _ = Y.create(
1071
1071
  "BOX",
1072
1072
  t.nativeStyles,
1073
1073
  "",
1074
1074
  t.nativeRect.width,
1075
1075
  t.nativeRect.height,
1076
1076
  this.qualityFactor,
1077
- t.isTraveler ? (x = this.renderTargets[t.captureLayer - 2]) == null ? void 0 : x.texture : this.textureManager.get(t.element),
1077
+ t.isTraveler ? (E = this.renderTargets[t.captureLayer - 2]) == null ? void 0 : E.texture : this.textureManager.get(t.element),
1078
1078
  t.shaderHooks
1079
- ), N = new y.Mesh(e.geometry, X);
1079
+ ), N = new y.Mesh(e.geometry, _);
1080
1080
  t.type === "TEXT" && (N.name = "BG_MESH"), this.scene.add(N), e.userData.nativeMesh = N;
1081
1081
  }
1082
- const w = e.userData.nativeMesh;
1083
- let T, A;
1082
+ const x = e.userData.nativeMesh;
1083
+ let R, A;
1084
1084
  if (this.isViewport)
1085
- T = t.nativeRect.x - window.innerWidth / 2 + t.nativeRect.width / 2, A = -t.nativeRect.y + window.innerHeight / 2 - t.nativeRect.height / 2;
1085
+ R = t.nativeRect.x - window.innerWidth / 2 + t.nativeRect.width / 2, A = -t.nativeRect.y + window.innerHeight / 2 - t.nativeRect.height / 2;
1086
1086
  else {
1087
- const X = t.nativeRect.x - c, N = t.nativeRect.y - d;
1088
- T = X - n / 2 + t.nativeRect.width / 2, A = -N + o / 2 - t.nativeRect.height / 2;
1087
+ const _ = t.nativeRect.x - c, N = t.nativeRect.y - d;
1088
+ R = _ - n / 2 + t.nativeRect.width / 2, A = -N + a / 2 - t.nativeRect.height / 2;
1089
1089
  }
1090
- let I = t.nativeRect.width, q = t.nativeRect.height, ie = T, se = A;
1090
+ let U = t.nativeRect.width, G = t.nativeRect.height, ie = R, se = A;
1091
1091
  if (t.nativeStyles.transform) {
1092
- const X = t.nativeStyles.transform, N = X.match(/scale\(([\d.]+%?)\)/);
1092
+ const _ = t.nativeStyles.transform, N = _.match(/scale\(([\d.]+%?)\)/);
1093
1093
  if (N) {
1094
- let B = parseFloat(N[1]);
1095
- N[1].includes("%") && (B /= 100), I *= B, q *= B;
1094
+ let f = parseFloat(N[1]);
1095
+ N[1].includes("%") && (f /= 100), U *= f, G *= f;
1096
+ }
1097
+ const J = _.match(/scaleX\(([\d.]+%?)\)/);
1098
+ if (J) {
1099
+ let f = parseFloat(J[1]);
1100
+ J[1].includes("%") && (f /= 100), U *= f;
1096
1101
  }
1097
- const Z = X.match(/translate\(([^,]+),\s*([^)]+)\)/);
1102
+ const Q = _.match(/scaleY\(([\d.]+%?)\)/);
1103
+ if (Q) {
1104
+ let f = parseFloat(Q[1]);
1105
+ Q[1].includes("%") && (f /= 100), G *= f;
1106
+ }
1107
+ const Z = _.match(/translate\(([^,]+),\s*([^)]+)\)/);
1098
1108
  if (Z) {
1099
- const B = Z[1].trim(), F = Z[2].trim();
1100
- let p = parseFloat(B);
1101
- B.includes("%") && (p = p / 100 * t.nativeRect.width);
1102
- let R = parseFloat(F);
1103
- F.includes("%") && (R = R / 100 * t.nativeRect.height), ie += p, se -= R;
1109
+ const f = Z[1].trim(), b = Z[2].trim();
1110
+ let k = parseFloat(f);
1111
+ f.includes("%") && (k = k / 100 * t.nativeRect.width);
1112
+ let F = parseFloat(b);
1113
+ b.includes("%") && (F = F / 100 * t.nativeRect.height), ie += k, se -= F;
1104
1114
  }
1105
- const ne = X.match(/translateX\(([^)]+)\)/);
1115
+ const ne = _.match(/translateX\(([^)]+)\)/);
1106
1116
  if (ne) {
1107
- const B = ne[1].trim();
1108
- let F = parseFloat(B);
1109
- B.includes("%") && (F = F / 100 * t.nativeRect.width), ie += F;
1117
+ const f = ne[1].trim();
1118
+ let b = parseFloat(f);
1119
+ f.includes("%") && (b = b / 100 * t.nativeRect.width), ie += b;
1110
1120
  }
1111
- const oe = X.match(/translateY\(([^)]+)\)/);
1112
- if (oe) {
1113
- const B = oe[1].trim();
1114
- let F = parseFloat(B);
1115
- B.includes("%") && (F = F / 100 * t.nativeRect.height), se -= F;
1121
+ const ae = _.match(/translateY\(([^)]+)\)/);
1122
+ if (ae) {
1123
+ const f = ae[1].trim();
1124
+ let b = parseFloat(f);
1125
+ f.includes("%") && (b = b / 100 * t.nativeRect.height), se -= b;
1116
1126
  }
1117
1127
  }
1118
- w.scale.set(I, q, 1), w.position.set(
1128
+ x.scale.set(U, G, 1), x.position.set(
1119
1129
  ie,
1120
1130
  se,
1121
- t.nativeStyles.zIndex + this.renderOrder * a
1122
- ), H.update(
1123
- w.material,
1131
+ t.nativeStyles.zIndex + this.renderOrder * o
1132
+ ), Y.update(
1133
+ x.material,
1124
1134
  "BOX",
1125
1135
  t.nativeStyles,
1126
1136
  "",
1127
1137
  t.nativeRect.width,
1128
1138
  t.nativeRect.height,
1129
1139
  this.qualityFactor,
1130
- t.isTraveler ? (C = this.renderTargets[t.captureLayer - 2]) == null ? void 0 : C.texture : this.textureManager.get(t.element)
1140
+ t.isTraveler ? (S = this.renderTargets[t.captureLayer - 2]) == null ? void 0 : S.texture : this.textureManager.get(t.element)
1131
1141
  );
1132
1142
  } else
1133
1143
  e.userData.nativeMesh && (this.scene.remove(e.userData.nativeMesh), e.userData.nativeMesh.material instanceof y.Material && e.userData.nativeMesh.material.dispose(), delete e.userData.nativeMesh);
1134
1144
  }
1135
1145
  updateMeshLayers(e, t) {
1136
- const r = t.visibility & P ? U.BASE : U.HIDDEN;
1137
- if (e.layers.set(r), t.visibility & te && e.layers.enable(U.SELECTED), e.userData.nativeMesh && t.nativeLayer !== void 0) {
1146
+ const r = t.visibility & W ? B.BASE : B.HIDDEN;
1147
+ if (e.layers.set(r), t.visibility & te && e.layers.enable(B.SELECTED), e.userData.nativeMesh && t.nativeLayer !== void 0) {
1138
1148
  const i = e.userData.nativeMesh;
1139
- if (i.layers.set(U.HIDDEN), t.visibility & P) {
1140
- i.layers.enable(U.getCaptureLayer(t.nativeLayer));
1141
- for (let l = t.captureLayer; l <= _.MAX_LAYERS + 1; l++)
1142
- l !== t.nativeLayer && e.layers.enable(U.getCaptureLayer(l));
1149
+ if (i.layers.set(B.HIDDEN), t.visibility & W) {
1150
+ i.layers.enable(B.getCaptureLayer(t.nativeLayer));
1151
+ for (let l = t.captureLayer; l <= O.MAX_LAYERS + 1; l++)
1152
+ l !== t.nativeLayer && e.layers.enable(B.getCaptureLayer(l));
1143
1153
  }
1144
- } else if (t.visibility & P)
1145
- for (let i = t.captureLayer; i <= _.MAX_LAYERS + 1; i++)
1146
- e.layers.enable(U.getCaptureLayer(i));
1154
+ } else if (t.visibility & W)
1155
+ for (let i = t.captureLayer; i <= O.MAX_LAYERS + 1; i++)
1156
+ e.layers.enable(B.getCaptureLayer(i));
1147
1157
  }
1148
1158
  captureRenderTarget(e, t, r) {
1149
1159
  if (e.size === 0 || !r)
1150
1160
  return;
1151
1161
  const i = new y.Color(), l = this.renderer.getClearAlpha();
1152
1162
  this.renderer.getClearColor(i), this.renderer.setClearColor(0, 0), this.renderer.setRenderTarget(r), this.renderer.clear(), this.renderer.autoClear = !1, this.renderer.setScissorTest(!0), this.camera.layers.set(t);
1153
- const n = new y.Vector3(), o = this.isViewport ? window.innerWidth + this.overscan * 2 : this.targetRect.width, a = this.isViewport ? window.innerHeight + this.overscan * 2 : this.targetRect.height, c = this.renderer.getPixelRatio();
1163
+ const n = new y.Vector3(), a = this.isViewport ? window.innerWidth + this.overscan * 2 : this.targetRect.width, o = this.isViewport ? window.innerHeight + this.overscan * 2 : this.targetRect.height, c = this.renderer.getPixelRatio();
1154
1164
  for (const d of e) {
1155
1165
  n.setFromMatrixPosition(d.matrixWorld), n.project(this.camera);
1156
- const h = (n.x + 1) / 2 * o, f = (n.y + 1) / 2 * a;
1157
- let v = 0, g = 1;
1158
- typeof this.clipArea == "number" ? g = this.clipArea : this.clipArea.endsWith("%") ? g = parseFloat(this.clipArea) / 100 : this.clipArea.endsWith("px") && (v = parseFloat(this.clipArea));
1159
- const m = d.scale.x * g + 0.5, b = d.scale.y * g + 0.5, L = h - m / 2, M = f - b / 2, S = (L * this.qualityFactor - v) / c, x = (M * this.qualityFactor - v) / c, C = (m * this.qualityFactor + v * 2) / c, w = (b * this.qualityFactor + v * 2) / c;
1160
- this.renderer.setScissor(S, x, C, w), this.renderer.render(this.scene, this.camera);
1166
+ const h = (n.x + 1) / 2 * a, g = (n.y + 1) / 2 * o;
1167
+ let v = 0, p = 1;
1168
+ typeof this.clipArea == "number" ? p = this.clipArea : this.clipArea.endsWith("%") ? p = parseFloat(this.clipArea) / 100 : this.clipArea.endsWith("px") && (v = parseFloat(this.clipArea));
1169
+ const m = d.scale.x * p + 0.5, w = d.scale.y * p + 0.5, L = h - m / 2, M = g - w / 2, T = (L * this.qualityFactor - v) / c, E = (M * this.qualityFactor - v) / c, S = (m * this.qualityFactor + v * 2) / c, x = (w * this.qualityFactor + v * 2) / c;
1170
+ this.renderer.setScissor(T, E, S, x), this.renderer.render(this.scene, this.camera);
1161
1171
  }
1162
1172
  this.renderer.setScissorTest(!1), this.renderer.autoClear = !0, this.renderer.setRenderTarget(null), this.camera.layers.set(this.getSceneLayer()), this.renderer.setClearColor(i, l);
1163
1173
  }
1164
1174
  render() {
1165
- for (let e = 0; e < _.MAX_LAYERS; e++) {
1175
+ for (let e = 0; e < O.MAX_LAYERS; e++) {
1166
1176
  const t = e + 1;
1167
1177
  this.captureRenderTarget(
1168
1178
  this.travelersByLayer[e],
1169
- U.getCaptureLayer(t),
1179
+ B.getCaptureLayer(t),
1170
1180
  this.renderTargets[e]
1171
1181
  );
1172
1182
  }
@@ -1175,67 +1185,67 @@ class rt {
1175
1185
  syncMeshesByDOM() {
1176
1186
  const e = this.targetRect.left + window.scrollX, t = this.targetRect.top + window.scrollY, r = this.renderer.getPixelRatio(), i = this.renderer.domElement.width / r, l = this.renderer.domElement.height / r;
1177
1187
  this.scene.children.forEach((n) => {
1178
- const o = n;
1179
- if (!o.userData || !o.userData.domElement)
1188
+ const a = n;
1189
+ if (!a.userData || !a.userData.domElement)
1180
1190
  return;
1181
- const a = o.userData.domElement;
1182
- if (!a.isConnected)
1191
+ const o = a.userData.domElement;
1192
+ if (!o.isConnected)
1183
1193
  return;
1184
1194
  let c;
1185
- if (a.nodeType === Node.TEXT_NODE) {
1195
+ if (o.nodeType === Node.TEXT_NODE) {
1186
1196
  const h = document.createRange();
1187
- h.selectNode(a), c = h.getBoundingClientRect();
1197
+ h.selectNode(o), c = h.getBoundingClientRect();
1188
1198
  } else
1189
- c = a.getBoundingClientRect();
1190
- const d = o.userData.domRect;
1199
+ c = o.getBoundingClientRect();
1200
+ const d = a.userData.domRect;
1191
1201
  if (!d || Math.abs(c.x - d.x) > 0.5 || Math.abs(c.y - d.y) > 0.5 || Math.abs(c.width - d.width) > 0.5 || Math.abs(c.height - d.height) > 0.5) {
1192
- o.userData.domRect = {
1202
+ a.userData.domRect = {
1193
1203
  x: c.x,
1194
1204
  y: c.y,
1195
1205
  width: c.width,
1196
1206
  height: c.height
1197
1207
  };
1198
- let h, f;
1208
+ let h, g;
1199
1209
  if (this.isViewport)
1200
- h = c.x - window.innerWidth / 2 + c.width / 2, f = -c.y + window.innerHeight / 2 - c.height / 2;
1210
+ h = c.x - window.innerWidth / 2 + c.width / 2, g = -c.y + window.innerHeight / 2 - c.height / 2;
1201
1211
  else {
1202
- const v = c.x - e, g = c.y - t;
1203
- h = v - i / 2 + c.width / 2, f = -g + l / 2 - c.height / 2;
1212
+ const v = c.x - e, p = c.y - t;
1213
+ h = v - i / 2 + c.width / 2, g = -p + l / 2 - c.height / 2;
1204
1214
  }
1205
- if (o.position.setX(h), o.position.setY(f), o.scale.set(c.width, c.height, 1), o.updateMatrixWorld(), o.material instanceof y.ShaderMaterial && H.forceUpdateUniforms(o.material, {
1215
+ if (a.position.setX(h), a.position.setY(g), a.scale.set(c.width, c.height, 1), a.updateMatrixWorld(), a.material instanceof y.ShaderMaterial && Y.forceUpdateUniforms(a.material, {
1206
1216
  width: c.width,
1207
1217
  height: c.height
1208
- }), o.userData.nativeMesh) {
1209
- const v = o.userData.nativeMesh;
1210
- let g = c.width, m = c.height, b = h, L = f;
1211
- if (o.userData.nativeTransform) {
1212
- const M = o.userData.nativeTransform, S = M.match(/scale\(([\d.]+%?)\)/);
1213
- if (S) {
1214
- let T = parseFloat(S[1]);
1215
- S[1].includes("%") && (T /= 100), g *= T, m *= T;
1218
+ }), a.userData.nativeMesh) {
1219
+ const v = a.userData.nativeMesh;
1220
+ let p = c.width, m = c.height, w = h, L = g;
1221
+ if (a.userData.nativeTransform) {
1222
+ const M = a.userData.nativeTransform, T = M.match(/scale\(([\d.]+%?)\)/);
1223
+ if (T) {
1224
+ let R = parseFloat(T[1]);
1225
+ T[1].includes("%") && (R /= 100), p *= R, m *= R;
1216
1226
  }
1217
- const x = M.match(/translate\(([^,]+),\s*([^)]+)\)/);
1218
- if (x) {
1219
- const T = x[1].trim(), A = x[2].trim();
1220
- let I = parseFloat(T);
1221
- T.includes("%") && (I = I / 100 * c.width);
1222
- let q = parseFloat(A);
1223
- A.includes("%") && (q = q / 100 * c.height), b += I, L -= q;
1227
+ const E = M.match(/translate\(([^,]+),\s*([^)]+)\)/);
1228
+ if (E) {
1229
+ const R = E[1].trim(), A = E[2].trim();
1230
+ let U = parseFloat(R);
1231
+ R.includes("%") && (U = U / 100 * c.width);
1232
+ let G = parseFloat(A);
1233
+ A.includes("%") && (G = G / 100 * c.height), w += U, L -= G;
1224
1234
  }
1225
- const C = M.match(/translateX\(([^)]+)\)/);
1226
- if (C) {
1227
- const T = C[1].trim();
1228
- let A = parseFloat(T);
1229
- T.includes("%") && (A = A / 100 * c.width), b += A;
1235
+ const S = M.match(/translateX\(([^)]+)\)/);
1236
+ if (S) {
1237
+ const R = S[1].trim();
1238
+ let A = parseFloat(R);
1239
+ R.includes("%") && (A = A / 100 * c.width), w += A;
1230
1240
  }
1231
- const w = M.match(/translateY\(([^)]+)\)/);
1232
- if (w) {
1233
- const T = w[1].trim();
1234
- let A = parseFloat(T);
1235
- T.includes("%") && (A = A / 100 * c.height), L -= A;
1241
+ const x = M.match(/translateY\(([^)]+)\)/);
1242
+ if (x) {
1243
+ const R = x[1].trim();
1244
+ let A = parseFloat(R);
1245
+ R.includes("%") && (A = A / 100 * c.height), L -= A;
1236
1246
  }
1237
1247
  }
1238
- v.position.setX(b), v.position.setY(L), v.scale.set(g, m, 1), v.updateMatrixWorld();
1248
+ v.position.setX(w), v.position.setY(L), v.scale.set(p, m, 1), v.updateMatrixWorld();
1239
1249
  }
1240
1250
  }
1241
1251
  });
@@ -1246,14 +1256,14 @@ function it(s) {
1246
1256
  let r = "", i = null, l = -1;
1247
1257
  const n = (c, d) => {
1248
1258
  for (let h = 0; h < c.length; h++) {
1249
- const f = c[h], v = document.createRange();
1259
+ const g = c[h], v = document.createRange();
1250
1260
  v.setStart(s, d + h), v.setEnd(s, d + h + 1);
1251
- const g = v.getBoundingClientRect();
1252
- if (g.width === 0 && g.height === 0) {
1253
- r += f;
1261
+ const p = v.getBoundingClientRect();
1262
+ if (p.width === 0 && p.height === 0) {
1263
+ r += g;
1254
1264
  continue;
1255
1265
  }
1256
- l === -1 || Math.abs(g.top - l) > g.height / 2 ? (r && i && t.push({
1266
+ l === -1 || Math.abs(p.top - l) > p.height / 2 ? (r && i && t.push({
1257
1267
  text: r,
1258
1268
  rect: {
1259
1269
  left: i.left,
@@ -1261,31 +1271,31 @@ function it(s) {
1261
1271
  width: i.right - i.left,
1262
1272
  height: i.bottom - i.top
1263
1273
  }
1264
- }), r = f, i = {
1265
- left: g.left,
1266
- top: g.top,
1267
- right: g.right,
1268
- bottom: g.bottom
1269
- }, l = g.top) : (r += f, i && (i.left = Math.min(i.left, g.left), i.top = Math.min(i.top, g.top), i.right = Math.max(i.right, g.right), i.bottom = Math.max(
1274
+ }), r = g, i = {
1275
+ left: p.left,
1276
+ top: p.top,
1277
+ right: p.right,
1278
+ bottom: p.bottom
1279
+ }, l = p.top) : (r += g, i && (i.left = Math.min(i.left, p.left), i.top = Math.min(i.top, p.top), i.right = Math.max(i.right, p.right), i.bottom = Math.max(
1270
1280
  i.bottom,
1271
- g.bottom
1281
+ p.bottom
1272
1282
  )));
1273
1283
  }
1274
- }, o = e.match(/[^\s\-]+\-?|\-|\s+/g) || [];
1275
- let a = 0;
1276
- for (const c of o) {
1284
+ }, a = e.match(/[^\s\-]+\-?|\-|\s+/g) || [];
1285
+ let o = 0;
1286
+ for (const c of a) {
1277
1287
  const d = document.createRange();
1278
- d.setStart(s, a), d.setEnd(s, a + c.length);
1288
+ d.setStart(s, o), d.setEnd(s, o + c.length);
1279
1289
  const h = d.getClientRects();
1280
1290
  if (h.length > 1)
1281
- n(c, a);
1291
+ n(c, o);
1282
1292
  else {
1283
- const f = h.length === 1 ? h[0] : d.getBoundingClientRect();
1284
- if (f.width === 0 && f.height === 0) {
1285
- r += c, a += c.length;
1293
+ const g = h.length === 1 ? h[0] : d.getBoundingClientRect();
1294
+ if (g.width === 0 && g.height === 0) {
1295
+ r += c, o += c.length;
1286
1296
  continue;
1287
1297
  }
1288
- l === -1 || Math.abs(f.top - l) > f.height / 2 ? (r && i && t.push({
1298
+ l === -1 || Math.abs(g.top - l) > g.height / 2 ? (r && i && t.push({
1289
1299
  text: r,
1290
1300
  rect: {
1291
1301
  left: i.left,
@@ -1294,16 +1304,16 @@ function it(s) {
1294
1304
  height: i.bottom - i.top
1295
1305
  }
1296
1306
  }), r = c, i = {
1297
- left: f.left,
1298
- top: f.top,
1299
- right: f.right,
1300
- bottom: f.bottom
1301
- }, l = f.top) : (r += c, i && (i.left = Math.min(i.left, f.left), i.top = Math.min(i.top, f.top), i.right = Math.max(i.right, f.right), i.bottom = Math.max(
1307
+ left: g.left,
1308
+ top: g.top,
1309
+ right: g.right,
1310
+ bottom: g.bottom
1311
+ }, l = g.top) : (r += c, i && (i.left = Math.min(i.left, g.left), i.top = Math.min(i.top, g.top), i.right = Math.max(i.right, g.right), i.bottom = Math.max(
1302
1312
  i.bottom,
1303
- f.bottom
1313
+ g.bottom
1304
1314
  )));
1305
1315
  }
1306
- a += c.length;
1316
+ o += c.length;
1307
1317
  }
1308
1318
  return r && i && t.push({
1309
1319
  text: r,
@@ -1333,73 +1343,73 @@ function Me(s) {
1333
1343
  letterSpacing: r
1334
1344
  };
1335
1345
  }
1336
- function Ue(s, e = Q | ce | Ye | ve | ue, t, r = 1, i = 0, l = 2, n, o) {
1337
- var N, Z, ne, oe, B, F;
1346
+ function Ue(s, e = K | ce | Ye | ve | ue, t, r = 1, i = 0, l = 2, n, a) {
1347
+ var N, J, Q, Z, ne, ae;
1338
1348
  if (s.nodeType === Node.TEXT_NODE) {
1339
- const p = s;
1340
- if (!p.textContent || !p.textContent.trim())
1349
+ const f = s;
1350
+ if (!f.textContent || !f.textContent.trim())
1341
1351
  return null;
1342
- const R = p.textContent.replace(/\s+/g, " ");
1343
- if (R.length === 0)
1352
+ const b = f.textContent.replace(/\s+/g, " ");
1353
+ if (b.length === 0)
1344
1354
  return null;
1345
- const O = it(p);
1346
- if (O.length === 0)
1355
+ const k = it(f);
1356
+ if (k.length === 0)
1347
1357
  return null;
1348
- const V = p.parentElement, k = V ? window.getComputedStyle(V) : null;
1349
- if (!k)
1358
+ const F = f.parentElement, I = F ? window.getComputedStyle(F) : null;
1359
+ if (!I)
1350
1360
  return null;
1351
- const G = Math.min(...O.map((E) => E.rect.left)), z = Math.min(...O.map((E) => E.rect.top)), j = Math.max(...O.map((E) => E.rect.left + E.rect.width)), D = Math.max(...O.map((E) => E.rect.top + E.rect.height));
1361
+ const H = Math.min(...k.map((C) => C.rect.left)), z = Math.min(...k.map((C) => C.rect.top)), $ = Math.max(...k.map((C) => C.rect.left + C.rect.width)), D = Math.max(...k.map((C) => C.rect.top + C.rect.height));
1352
1362
  return {
1353
1363
  id: Math.random().toString(36).substring(2, 9),
1354
1364
  type: "TEXT",
1355
- element: p,
1365
+ element: f,
1356
1366
  rect: {
1357
- x: G + window.scrollX,
1367
+ x: H + window.scrollX,
1358
1368
  y: z + window.scrollY,
1359
- width: j - G,
1369
+ width: $ - H,
1360
1370
  height: D - z
1361
1371
  },
1362
1372
  styles: {
1363
1373
  backgroundColor: "transparent",
1364
1374
  backgroundImage: "",
1365
- opacity: V && V.dataset[K.KEY] === K.VALUES.HIDE ? 1 : parseFloat(k.opacity),
1366
- zIndex: (isNaN(parseInt(k.zIndex)) ? 0 : parseInt(k.zIndex)) + i,
1375
+ opacity: F && F.dataset[q.KEY] === q.VALUES.HIDE ? 1 : parseFloat(I.opacity),
1376
+ zIndex: (isNaN(parseInt(I.zIndex)) ? 0 : parseInt(I.zIndex)) + i,
1367
1377
  borderRadius: "0px",
1368
1378
  borderColor: "transparent",
1369
1379
  borderWidth: "0px",
1370
1380
  isTraveler: !1
1371
1381
  },
1372
- textContent: R,
1373
- textLines: O.map((E) => ({
1374
- text: E.text.trim(),
1382
+ textContent: b,
1383
+ textLines: k.map((C) => ({
1384
+ text: C.text.trim(),
1375
1385
  rect: {
1376
- x: E.rect.left + window.scrollX,
1377
- y: E.rect.top + window.scrollY,
1378
- width: E.rect.width,
1379
- height: E.rect.height
1386
+ x: C.rect.left + window.scrollX,
1387
+ y: C.rect.top + window.scrollY,
1388
+ width: C.rect.width,
1389
+ height: C.rect.height
1380
1390
  }
1381
1391
  })),
1382
- textStyles: Me(k),
1392
+ textStyles: Me(I),
1383
1393
  dirtyMask: e,
1384
1394
  visibility: t,
1385
1395
  isTraveler: !1,
1386
1396
  captureLayer: r,
1387
- isFixed: k.position === "fixed",
1397
+ isFixed: I.position === "fixed",
1388
1398
  nativeLayer: n,
1389
- nativeStyles: o ? J(J({
1399
+ nativeStyles: a ? j(j({
1390
1400
  backgroundColor: "transparent",
1391
1401
  backgroundImage: "",
1392
- opacity: V && V.dataset[K.KEY] === K.VALUES.HIDE ? 1 : parseFloat(k.opacity),
1393
- zIndex: (isNaN(parseInt(k.zIndex)) ? 0 : parseInt(k.zIndex)) + i,
1402
+ opacity: F && F.dataset[q.KEY] === q.VALUES.HIDE ? 1 : parseFloat(I.opacity),
1403
+ zIndex: (isNaN(parseInt(I.zIndex)) ? 0 : parseInt(I.zIndex)) + i,
1394
1404
  borderRadius: "0px",
1395
1405
  borderColor: "transparent",
1396
1406
  borderWidth: "0px",
1397
1407
  isTraveler: !1
1398
- }, Me(k)), o) : void 0,
1399
- nativeRect: o ? {
1400
- x: G + window.scrollX,
1408
+ }, Me(I)), a) : void 0,
1409
+ nativeRect: a ? {
1410
+ x: H + window.scrollX,
1401
1411
  y: z + window.scrollY,
1402
- width: j - G,
1412
+ width: $ - H,
1403
1413
  height: D - z
1404
1414
  } : void 0,
1405
1415
  children: []
@@ -1407,213 +1417,213 @@ function Ue(s, e = Q | ce | Ye | ve | ue, t, r = 1, i = 0, l = 2, n, o) {
1407
1417
  }
1408
1418
  if (s.nodeType !== Node.ELEMENT_NODE)
1409
1419
  return null;
1410
- const a = s, c = a.dataset[W.KEY];
1420
+ const o = s, c = o.dataset[V.KEY];
1411
1421
  let d = t, h = t;
1412
1422
  if (c) {
1413
- const p = new Set(c.split(/\s+/));
1414
- for (const R of p)
1415
- if (!Te.includes(R))
1423
+ const f = new Set(c.split(/\s+/));
1424
+ for (const b of f)
1425
+ if (!Te.includes(b))
1416
1426
  throw new Error(
1417
- `[MirageEngine] Invalid filter token: '${R}'. Expected one of: 'include-tree', 'exclude-tree', 'include-self', 'exclude-self', 'end'.`
1427
+ `[MirageEngine] Invalid filter token: '${b}'. Expected one of: 'include-tree', 'exclude-tree', 'include-self', 'exclude-self', 'end'.`
1418
1428
  );
1419
- if (p.has(W.VALUES.END))
1429
+ if (f.has(V.VALUES.END))
1420
1430
  return null;
1421
- if (p.has(W.VALUES.INCLUDE_TREE) && p.has(W.VALUES.EXCLUDE_TREE))
1431
+ if (f.has(V.VALUES.INCLUDE_TREE) && f.has(V.VALUES.EXCLUDE_TREE))
1422
1432
  throw new Error(
1423
1433
  "[MirageEngine] Conflicting filters: 'include-tree' and 'exclude-tree' cannot be used together on the same element."
1424
1434
  );
1425
- if (p.has(W.VALUES.INCLUDE_SELF) && p.has(W.VALUES.EXCLUDE_SELF))
1435
+ if (f.has(V.VALUES.INCLUDE_SELF) && f.has(V.VALUES.EXCLUDE_SELF))
1426
1436
  throw new Error(
1427
1437
  "[MirageEngine] Conflicting filters: 'include-self' and 'exclude-self' cannot be used together on the same element."
1428
1438
  );
1429
- p.has(W.VALUES.INCLUDE_TREE) ? d = d | P : p.has(W.VALUES.EXCLUDE_TREE) && (d = d & ~P), h = d, p.has(W.VALUES.INCLUDE_SELF) ? h = h | P : p.has(W.VALUES.EXCLUDE_SELF) && (h = h & ~P);
1439
+ f.has(V.VALUES.INCLUDE_TREE) ? d = d | W : f.has(V.VALUES.EXCLUDE_TREE) && (d = d & ~W), h = d, f.has(V.VALUES.INCLUDE_SELF) ? h = h | W : f.has(V.VALUES.EXCLUDE_SELF) && (h = h & ~W);
1430
1440
  }
1431
- const f = a.dataset[$.KEY];
1432
- if (f) {
1433
- const p = new Set(f.split(/\s+/));
1434
- for (const R of p)
1435
- if (!Te.includes(R))
1441
+ const g = o.dataset[P.KEY];
1442
+ if (g) {
1443
+ const f = new Set(g.split(/\s+/));
1444
+ for (const b of f)
1445
+ if (!Te.includes(b))
1436
1446
  throw new Error(
1437
- `[MirageEngine] Invalid select token: '${R}'. Expected one of: 'include-tree', 'exclude-tree', 'include-self', 'exclude-self', 'end'.`
1447
+ `[MirageEngine] Invalid select token: '${b}'. Expected one of: 'include-tree', 'exclude-tree', 'include-self', 'exclude-self', 'end'.`
1438
1448
  );
1439
- if (p.has($.VALUES.END))
1449
+ if (f.has(P.VALUES.END))
1440
1450
  return null;
1441
- if (p.has($.VALUES.INCLUDE_TREE) && p.has($.VALUES.EXCLUDE_TREE))
1451
+ if (f.has(P.VALUES.INCLUDE_TREE) && f.has(P.VALUES.EXCLUDE_TREE))
1442
1452
  throw new Error(
1443
1453
  "[MirageEngine] Conflicting selects: 'include-tree' and 'exclude-tree' cannot be used together on the same element."
1444
1454
  );
1445
- if (p.has($.VALUES.INCLUDE_SELF) && p.has($.VALUES.EXCLUDE_SELF))
1455
+ if (f.has(P.VALUES.INCLUDE_SELF) && f.has(P.VALUES.EXCLUDE_SELF))
1446
1456
  throw new Error(
1447
1457
  "[MirageEngine] Conflicting selects: 'include-self' and 'exclude-self' cannot be used together on the same element."
1448
1458
  );
1449
- p.has($.VALUES.INCLUDE_TREE) ? d = d | te : p.has($.VALUES.EXCLUDE_TREE) && (d = d & ~te), h = d, p.has($.VALUES.INCLUDE_SELF) ? h = h | te : p.has($.VALUES.EXCLUDE_SELF) && (h = h & ~te);
1459
+ f.has(P.VALUES.INCLUDE_TREE) ? d = d | te : f.has(P.VALUES.EXCLUDE_TREE) && (d = d & ~te), h = d, f.has(P.VALUES.INCLUDE_SELF) ? h = h | te : f.has(P.VALUES.EXCLUDE_SELF) && (h = h & ~te);
1450
1460
  }
1451
- const v = a.dataset[_.KEY];
1452
- let g = !1, m = o ? J({}, o) : {}, b = n;
1461
+ const v = o.dataset[O.KEY];
1462
+ let p = !1, m = a ? j({}, a) : {}, w = n;
1453
1463
  if (v) {
1454
- let p = 1;
1455
- const R = v.indexOf("{"), O = v.lastIndexOf("}");
1456
- let V = v;
1457
- if (R !== -1 && O !== -1 && O > R) {
1458
- V = v.substring(0, R).trim();
1459
- const D = v.substring(R, O + 1);
1464
+ let f = 1;
1465
+ const b = v.indexOf("{"), k = v.lastIndexOf("}");
1466
+ let F = v;
1467
+ if (b !== -1 && k !== -1 && k > b) {
1468
+ F = v.substring(0, b).trim();
1469
+ const D = v.substring(b, k + 1);
1460
1470
  try {
1461
1471
  m = new Function("return " + D)();
1462
- } catch (E) {
1472
+ } catch (C) {
1463
1473
  console.warn(
1464
1474
  `[MirageEngine] Failed to parse travel styles JSON: ${D}`
1465
1475
  );
1466
1476
  }
1467
1477
  }
1468
- const k = V.split(/\s+/);
1469
- let G = !1;
1470
- const z = k.indexOf(_.VALUES.TRAVELER);
1478
+ const I = F.split(/\s+/);
1479
+ let H = !1;
1480
+ const z = I.indexOf(O.VALUES.TRAVELER);
1471
1481
  if (z !== -1) {
1472
- g = !0, G = !0;
1473
- const D = k[z + 1];
1482
+ p = !0, H = !0;
1483
+ const D = I[z + 1];
1474
1484
  if (D && !isNaN(parseInt(D, 10)))
1475
- p = parseInt(D, 10);
1485
+ f = parseInt(D, 10);
1476
1486
  else {
1477
- const E = k.find((ee) => !isNaN(parseInt(ee, 10)));
1478
- E && (p = parseInt(E, 10));
1487
+ const C = I.find((ee) => !isNaN(parseInt(ee, 10)));
1488
+ C && (f = parseInt(C, 10));
1479
1489
  }
1480
1490
  }
1481
- const j = k.indexOf(_.VALUES.NATIVE);
1482
- if (j !== -1) {
1483
- const D = k[j + 1];
1491
+ const $ = I.indexOf(O.VALUES.NATIVE);
1492
+ if ($ !== -1) {
1493
+ const D = I[$ + 1];
1484
1494
  if (D && !isNaN(parseInt(D, 10)))
1485
- b = parseInt(D, 10);
1486
- else if (!g) {
1487
- const E = k.find((ee) => !isNaN(parseInt(ee, 10)));
1488
- E && (b = parseInt(E, 10));
1495
+ w = parseInt(D, 10);
1496
+ else if (!p) {
1497
+ const C = I.find((ee) => !isNaN(parseInt(ee, 10)));
1498
+ C && (w = parseInt(C, 10));
1489
1499
  }
1490
1500
  }
1491
- if (G) {
1492
- const D = p + 1;
1501
+ if (H) {
1502
+ const D = f + 1;
1493
1503
  if (D < r)
1494
1504
  throw new Error(
1495
- `[MirageEngine] Traveler layer (${p}) cannot be smaller than inherited capture layer (${r - 1}).`
1505
+ `[MirageEngine] Traveler layer (${f}) cannot be smaller than inherited capture layer (${r - 1}).`
1496
1506
  );
1497
- r = Math.min(D, _.MAX_LAYERS + 1);
1507
+ r = Math.min(D, O.MAX_LAYERS + 1);
1498
1508
  }
1499
1509
  }
1500
- const L = a.dataset[Ve.KEY];
1510
+ const L = o.dataset[Ve.KEY];
1501
1511
  let M;
1502
1512
  L && (M = JSON.parse(L));
1503
- const S = a.getBoundingClientRect(), x = window.getComputedStyle(a);
1504
- if (S.width === 0 || S.height === 0 || x.display === "none")
1513
+ const T = o.getBoundingClientRect(), E = window.getComputedStyle(o);
1514
+ if (T.width === 0 || T.height === 0 || E.display === "none")
1505
1515
  return null;
1506
- let C = a.getAttribute("data-mid");
1507
- C || (C = Math.random().toString(36).substring(2, 11), a.setAttribute("data-mid", C));
1508
- const w = parseInt(x.zIndex), T = (isNaN(w) ? 0 : w) + i;
1516
+ let S = o.getAttribute("data-mid");
1517
+ S || (S = Math.random().toString(36).substring(2, 11), o.setAttribute("data-mid", S));
1518
+ const x = parseInt(E.zIndex), R = (isNaN(x) ? 0 : x) + i;
1509
1519
  let A;
1510
- if (a.tagName === "IMG")
1511
- A = a.src;
1512
- else if (a.tagName.toLowerCase() === "svg") {
1513
- const p = a.cloneNode(!0), R = m == null ? void 0 : m.color, O = m == null ? void 0 : m.fill, V = m == null ? void 0 : m.stroke, k = m == null ? void 0 : m.opacity, G = (E, ee) => {
1514
- const Y = window.getComputedStyle(E), ae = ee, Be = Y.fill === Y.color, Oe = Y.stroke === Y.color, fe = O || (Be ? R : void 0) || Y.fill;
1515
- fe && fe !== "none" && (ae.style.fill = fe);
1516
- const ge = V || (Oe ? R : void 0) || Y.stroke;
1517
- ge && ge !== "none" && (ae.style.stroke = ge), Y.strokeWidth && Y.strokeWidth !== "0px" && (ae.style.strokeWidth = Y.strokeWidth);
1518
- const be = R || Y.color;
1519
- be && (ae.style.color = be);
1520
- const pe = k || Y.opacity;
1521
- pe && pe !== "1" && (ae.style.opacity = pe);
1522
- for (let he = 0; he < E.children.length; he++)
1523
- G(E.children[he], ee.children[he]);
1520
+ if (o.tagName === "IMG")
1521
+ A = o.src;
1522
+ else if (o.tagName.toLowerCase() === "svg") {
1523
+ const f = o.cloneNode(!0), b = m == null ? void 0 : m.color, k = m == null ? void 0 : m.fill, F = m == null ? void 0 : m.stroke, I = m == null ? void 0 : m.opacity, H = (C, ee) => {
1524
+ const X = window.getComputedStyle(C), oe = ee, Be = X.fill === X.color, Fe = X.stroke === X.color, fe = k || (Be ? b : void 0) || X.fill;
1525
+ fe && fe !== "none" && (oe.style.fill = fe);
1526
+ const ge = F || (Fe ? b : void 0) || X.stroke;
1527
+ ge && ge !== "none" && (oe.style.stroke = ge), X.strokeWidth && X.strokeWidth !== "0px" && (oe.style.strokeWidth = X.strokeWidth);
1528
+ const be = b || X.color;
1529
+ be && (oe.style.color = be);
1530
+ const pe = I || X.opacity;
1531
+ pe && pe !== "1" && (oe.style.opacity = pe);
1532
+ for (let he = 0; he < C.children.length; he++)
1533
+ H(C.children[he], ee.children[he]);
1524
1534
  };
1525
- G(a, p);
1526
- const z = a.getBoundingClientRect(), j = window.devicePixelRatio * l;
1527
- p.hasAttribute("viewBox") || p.setAttribute("viewBox", `0 0 ${z.width} ${z.height}`), p.setAttribute("width", (z.width * j).toString()), p.setAttribute("height", (z.height * j).toString());
1528
- let D = new XMLSerializer().serializeToString(p);
1535
+ H(o, f);
1536
+ const z = o.getBoundingClientRect(), $ = window.devicePixelRatio * l;
1537
+ f.hasAttribute("viewBox") || f.setAttribute("viewBox", `0 0 ${z.width} ${z.height}`), f.setAttribute("width", (z.width * $).toString()), f.setAttribute("height", (z.height * $).toString());
1538
+ let D = new XMLSerializer().serializeToString(f);
1529
1539
  D.includes("xmlns=") || (D = D.replace(
1530
1540
  "<svg",
1531
1541
  '<svg xmlns="http://www.w3.org/2000/svg"'
1532
1542
  )), A = `data:image/svg+xml;utf8,${encodeURIComponent(D)}`;
1533
- } else if (x.backgroundImage && x.backgroundImage !== "none") {
1534
- const p = x.backgroundImage.match(/url\(['"]?(.*?)['"]?\)/);
1535
- p && (A = p[1]);
1536
- }
1537
- const I = {
1538
- backgroundColor: x.backgroundColor,
1539
- backgroundImage: x.backgroundImage,
1540
- opacity: a.dataset[K.KEY] === K.VALUES.HIDE ? 1 : parseFloat(x.opacity),
1541
- zIndex: T,
1542
- borderRadius: x.borderRadius,
1543
- borderColor: x.borderColor,
1544
- borderWidth: x.borderWidth,
1543
+ } else if (E.backgroundImage && E.backgroundImage !== "none") {
1544
+ const f = E.backgroundImage.match(/url\(['"]?(.*?)['"]?\)/);
1545
+ f && (A = f[1]);
1546
+ }
1547
+ const U = {
1548
+ backgroundColor: E.backgroundColor,
1549
+ backgroundImage: E.backgroundImage,
1550
+ opacity: o.dataset[q.KEY] === q.VALUES.HIDE ? 1 : parseFloat(E.opacity),
1551
+ zIndex: R,
1552
+ borderRadius: E.borderRadius,
1553
+ borderColor: E.borderColor,
1554
+ borderWidth: E.borderWidth,
1545
1555
  imageSrc: A,
1546
- isTraveler: g
1547
- }, q = I;
1556
+ isTraveler: p
1557
+ }, G = U;
1548
1558
  let ie, se;
1549
- const X = [];
1550
- return a.tagName.toLowerCase() !== "svg" && Array.from(a.childNodes).forEach((p) => {
1551
- const R = p.nodeType === Node.TEXT_NODE ? h : d, O = Ue(
1552
- p,
1559
+ const _ = [];
1560
+ return o.tagName.toLowerCase() !== "svg" && Array.from(o.childNodes).forEach((f) => {
1561
+ const b = f.nodeType === Node.TEXT_NODE ? h : d, k = Ue(
1562
+ f,
1553
1563
  e,
1554
- R,
1564
+ b,
1555
1565
  r,
1556
- T,
1566
+ R,
1557
1567
  l,
1558
- p.nodeType === Node.TEXT_NODE ? b : void 0,
1559
- p.nodeType === Node.TEXT_NODE && Object.keys(m).length > 0 ? m : void 0
1568
+ f.nodeType === Node.TEXT_NODE ? w : void 0,
1569
+ f.nodeType === Node.TEXT_NODE && Object.keys(m).length > 0 ? m : void 0
1560
1570
  );
1561
- O && X.push(O);
1571
+ k && _.push(k);
1562
1572
  }), {
1563
- id: C,
1573
+ id: S,
1564
1574
  type: "BOX",
1565
- element: a,
1575
+ element: o,
1566
1576
  rect: {
1567
- x: S.left + window.scrollX,
1568
- y: S.top + window.scrollY,
1569
- width: S.width,
1570
- height: S.height
1577
+ x: T.left + window.scrollX,
1578
+ y: T.top + window.scrollY,
1579
+ width: T.width,
1580
+ height: T.height
1571
1581
  },
1572
- styles: q,
1582
+ styles: G,
1573
1583
  textContent: ie,
1574
1584
  textStyles: se,
1575
1585
  dirtyMask: e,
1576
1586
  visibility: h,
1577
- isTraveler: g,
1587
+ isTraveler: p,
1578
1588
  captureLayer: r,
1579
- nativeLayer: b,
1580
- nativeStyles: b !== void 0 ? xe(J({}, I), {
1581
- backgroundColor: (N = m.backgroundColor) != null ? N : I.backgroundColor,
1582
- backgroundImage: (Z = m.backgroundImage) != null ? Z : I.backgroundImage,
1583
- opacity: (ne = m.opacity) != null ? ne : I.opacity,
1584
- zIndex: m.zIndex !== void 0 ? m.zIndex + T : I.zIndex,
1585
- borderRadius: (oe = m.borderRadius) != null ? oe : I.borderRadius,
1586
- borderColor: (B = m.borderColor) != null ? B : I.borderColor,
1587
- borderWidth: (F = m.borderWidth) != null ? F : I.borderWidth,
1588
- isTraveler: I.isTraveler,
1589
+ nativeLayer: w,
1590
+ nativeStyles: w !== void 0 ? xe(j({}, U), {
1591
+ backgroundColor: (N = m.backgroundColor) != null ? N : U.backgroundColor,
1592
+ backgroundImage: (J = m.backgroundImage) != null ? J : U.backgroundImage,
1593
+ opacity: (Q = m.opacity) != null ? Q : U.opacity,
1594
+ zIndex: m.zIndex !== void 0 ? m.zIndex + R : U.zIndex,
1595
+ borderRadius: (Z = m.borderRadius) != null ? Z : U.borderRadius,
1596
+ borderColor: (ne = m.borderColor) != null ? ne : U.borderColor,
1597
+ borderWidth: (ae = m.borderWidth) != null ? ae : U.borderWidth,
1598
+ isTraveler: U.isTraveler,
1589
1599
  transform: m.transform
1590
1600
  }) : void 0,
1591
- nativeRect: b !== void 0 ? {
1592
- x: m.x !== void 0 ? parseFloat(m.x) : S.left + window.scrollX,
1593
- y: m.y !== void 0 ? parseFloat(m.y) : S.top + window.scrollY,
1594
- width: m.width !== void 0 ? parseFloat(m.width) : S.width,
1595
- height: m.height !== void 0 ? parseFloat(m.height) : S.height
1601
+ nativeRect: w !== void 0 ? {
1602
+ x: m.x !== void 0 ? parseFloat(m.x) : T.left + window.scrollX,
1603
+ y: m.y !== void 0 ? parseFloat(m.y) : T.top + window.scrollY,
1604
+ width: m.width !== void 0 ? parseFloat(m.width) : T.width,
1605
+ height: m.height !== void 0 ? parseFloat(m.height) : T.height
1596
1606
  } : void 0,
1597
- isFixed: x.position === "fixed",
1598
- children: X,
1607
+ isFixed: E.position === "fixed",
1608
+ children: _,
1599
1609
  shaderHooks: M
1600
1610
  };
1601
1611
  }
1602
1612
  function st(s, e) {
1603
1613
  e.size !== 0 && e.forEach((t, r) => {
1604
- var l, n, o, a;
1614
+ var l, n, a, o;
1605
1615
  const i = s.get(r);
1606
- !i || !i.userData.basePosition || (H.forceUpdateUniforms(i.material, {
1616
+ !i || !i.userData.basePosition || (Y.forceUpdateUniforms(i.material, {
1607
1617
  backgroundColor: t.backgroundColor,
1608
1618
  backgroundImage: t.backgroundImage,
1609
1619
  opacity: t.opacity,
1610
1620
  borderRadius: (n = t.borderRadius) != null ? n : (l = i.userData.baseStyles) == null ? void 0 : l.borderRadius
1611
1621
  // width and height are no longer updated here, they are updated in syncMeshesByDOM
1612
- }), i.userData.nativeMesh && H.forceUpdateUniforms(i.userData.nativeMesh.material, {
1622
+ }), i.userData.nativeMesh && Y.forceUpdateUniforms(i.userData.nativeMesh.material, {
1613
1623
  backgroundColor: t.backgroundColor,
1614
1624
  backgroundImage: t.backgroundImage,
1615
1625
  opacity: t.opacity,
1616
- borderRadius: (a = t.borderRadius) != null ? a : (o = i.userData.baseStyles) == null ? void 0 : o.borderRadius
1626
+ borderRadius: (o = t.borderRadius) != null ? o : (a = i.userData.baseStyles) == null ? void 0 : a.borderRadius
1617
1627
  }));
1618
1628
  });
1619
1629
  }
@@ -1627,16 +1637,16 @@ class nt {
1627
1637
  this.target = e, this.renderer = t, this.registry = r, this.tracker = new De(e, {
1628
1638
  resizeDebounce: i.resizeDebounce
1629
1639
  }), this.tracker.onLayoutChange.add((l, n) => {
1630
- document.querySelector(`[${_.NAME}~='${_.VALUES.TRAVELER}']`) !== null && !this.isTravelEnabled && (this.isTravelEnabled = !0, this.renderer.createRenderTarget());
1631
- const a = Ue(
1640
+ document.querySelector(`[${O.NAME}~='${O.VALUES.TRAVELER}']`) !== null && !this.isTravelEnabled && (this.isTravelEnabled = !0, this.renderer.createRenderTarget());
1641
+ const o = Ue(
1632
1642
  this.target,
1633
1643
  l,
1634
- P,
1644
+ W,
1635
1645
  1,
1636
1646
  0,
1637
1647
  this.renderer.qualityFactor
1638
1648
  );
1639
- a && this.renderer.syncScene(a, n);
1649
+ o && this.renderer.syncScene(o, n);
1640
1650
  }), this.tracker.onStyleChange.add((l) => {
1641
1651
  st(this.registry, l);
1642
1652
  }), this.tracker.onRender.add(() => {
@@ -1650,7 +1660,7 @@ class nt {
1650
1660
  this.tracker.stop();
1651
1661
  }
1652
1662
  }
1653
- class ot {
1663
+ class at {
1654
1664
  constructor() {
1655
1665
  u(this, "store");
1656
1666
  this.store = /* @__PURE__ */ new WeakMap();
@@ -1675,20 +1685,20 @@ class ot {
1675
1685
  this.store.delete(e);
1676
1686
  }
1677
1687
  }
1678
- class at {
1688
+ class ot {
1679
1689
  constructor(e, t) {
1680
1690
  u(this, "renderer");
1681
1691
  u(this, "syncer");
1682
1692
  u(this, "target");
1683
1693
  u(this, "registry");
1684
1694
  var i, l, n;
1685
- if (this.target = e, this.registry = new ot(), !document.getElementById("mirage-engine-styles")) {
1686
- const o = document.createElement("style");
1687
- o.id = "mirage-engine-styles", o.textContent = `
1688
- [${K.NAME}="${K.VALUES.HIDE}"] {
1695
+ if (this.target = e, this.registry = new at(), !document.getElementById("mirage-engine-styles")) {
1696
+ const a = document.createElement("style");
1697
+ a.id = "mirage-engine-styles", a.textContent = `
1698
+ [${q.NAME}="${q.VALUES.HIDE}"] {
1689
1699
  opacity: 0 !important;
1690
1700
  }
1691
- `, document.head.appendChild(o);
1701
+ `, document.head.appendChild(a);
1692
1702
  }
1693
1703
  let r;
1694
1704
  if (t.mode === "duplicate" ? r = (l = (i = t.container) != null ? i : this.target.parentElement) != null ? l : void 0 : r = (n = this.target.parentElement) != null ? n : void 0, !r)
@@ -1818,7 +1828,7 @@ class ht {
1818
1828
  u(this, "_sandwich");
1819
1829
  if (!e)
1820
1830
  throw new Error("[Mirage] Target element is required.");
1821
- if (this._engine = new at(e, t), t.sandwich !== !1) {
1831
+ if (this._engine = new ot(e, t), t.sandwich !== !1) {
1822
1832
  const r = typeof t.sandwich == "object" ? t.sandwich : {};
1823
1833
  this._sandwich = new ct({
1824
1834
  frontSelector: r.frontSelector || `[${Se.NAME}='${Se.VALUES.FRONT}']`