mirage-engine 0.3.20 → 0.3.21

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,17 +1,17 @@
1
- var Xe = Object.defineProperty, Ve = Object.defineProperties;
2
- var Ye = Object.getOwnPropertyDescriptors;
3
- var Ee = Object.getOwnPropertySymbols;
4
- var We = Object.prototype.hasOwnProperty, He = Object.prototype.propertyIsEnumerable;
5
- var ye = (s, e, t) => e in s ? Xe(s, e, { enumerable: !0, configurable: !0, writable: !0, value: t }) : s[e] = t, te = (s, e) => {
1
+ var We = Object.defineProperty, He = Object.defineProperties;
2
+ var Pe = Object.getOwnPropertyDescriptors;
3
+ var Re = Object.getOwnPropertySymbols;
4
+ var $e = Object.prototype.hasOwnProperty, Ge = Object.prototype.propertyIsEnumerable;
5
+ var xe = (s, e, t) => e in s ? We(s, e, { enumerable: !0, configurable: !0, writable: !0, value: t }) : s[e] = t, re = (s, e) => {
6
6
  for (var t in e || (e = {}))
7
- We.call(e, t) && ye(s, t, e[t]);
8
- if (Ee)
9
- for (var t of Ee(e))
10
- He.call(e, t) && ye(s, t, e[t]);
7
+ $e.call(e, t) && xe(s, t, e[t]);
8
+ if (Re)
9
+ for (var t of Re(e))
10
+ Ge.call(e, t) && xe(s, t, e[t]);
11
11
  return s;
12
- }, Ce = (s, e) => Ve(s, Ye(e));
13
- var u = (s, e, t) => (ye(s, typeof e != "symbol" ? e + "" : e, t), t);
14
- var Te = (s, e, t) => new Promise((i, r) => {
12
+ }, Le = (s, e) => He(s, Pe(e));
13
+ var u = (s, e, t) => (xe(s, typeof e != "symbol" ? e + "" : e, t), t);
14
+ var Me = (s, e, t) => new Promise((i, r) => {
15
15
  var c = (l) => {
16
16
  try {
17
17
  a(t.next(l));
@@ -27,21 +27,21 @@ var Te = (s, e, t) => new Promise((i, r) => {
27
27
  }, a = (l) => l.done ? i(l.value) : Promise.resolve(l.value).then(c, n);
28
28
  a((t = t.apply(s, e)).next());
29
29
  });
30
- import * as w from "three";
31
- const Ie = {
30
+ import * as y from "three";
31
+ const _e = {
32
32
  INCLUDE_TREE: "include-tree",
33
33
  EXCLUDE_TREE: "exclude-tree",
34
34
  INCLUDE_SELF: "include-self",
35
35
  EXCLUDE_SELF: "exclude-self",
36
36
  END: "end"
37
- }, ee = {
37
+ }, te = {
38
38
  NAME: "data-mirage-dom",
39
39
  KEY: "mirageDom",
40
40
  VALUES: {
41
41
  HIDE: "hide",
42
42
  SHOW: "show"
43
43
  }
44
- }, Re = {
44
+ }, De = {
45
45
  TRAVELER: "traveler",
46
46
  NATIVE: "native",
47
47
  CAPTURE_1: "1",
@@ -54,30 +54,30 @@ const Ie = {
54
54
  CAPTURE_8: "8",
55
55
  CAPTURE_9: "9",
56
56
  CAPTURE_10: "10"
57
- }, N = {
57
+ }, V = {
58
58
  NAME: "data-mirage-travel",
59
59
  KEY: "mirageTravel",
60
- VALUES: Re,
61
- MAX_LAYERS: Object.keys(Re).length - 1
62
- }, P = {
60
+ VALUES: De,
61
+ MAX_LAYERS: Object.keys(De).length - 1
62
+ }, G = {
63
63
  NAME: "data-mirage-filter",
64
64
  KEY: "mirageFilter",
65
- VALUES: Ie
66
- }, q = {
65
+ VALUES: _e
66
+ }, j = {
67
67
  NAME: "data-mirage-select",
68
68
  KEY: "mirageSelect",
69
- VALUES: Ie
70
- }, Pe = {
69
+ VALUES: _e
70
+ }, qe = {
71
71
  NAME: "data-mirage-shader",
72
72
  KEY: "mirageShader"
73
- }, Le = {
73
+ }, Ae = {
74
74
  NAME: "data-mirage-sandwich",
75
75
  KEY: "mirageSandwich",
76
76
  VALUES: {
77
77
  FRONT: "front"
78
78
  }
79
- }, ge = 0, re = 1, ue = 2, $e = 4, pe = 8, be = 16;
80
- function Ge(s) {
79
+ }, pe = 0, ie = 1, fe = 2, je = 4, me = 8, Se = 16;
80
+ function Ke(s) {
81
81
  const e = s.match(/rgba?\((\d+),\s*(\d+),\s*(\d+)(?:,\s*([\d.]+))?\)/);
82
82
  return e ? {
83
83
  r: parseInt(e[1]) / 255,
@@ -86,10 +86,10 @@ function Ge(s) {
86
86
  a: e[4] !== void 0 ? parseFloat(e[4]) : 1
87
87
  } : { r: 1, g: 1, b: 1, a: 1 };
88
88
  }
89
- function qe(s) {
89
+ function Je(s) {
90
90
  const e = {};
91
91
  if (s.opacity && (e.opacity = parseFloat(s.opacity)), s.backgroundColor) {
92
- const t = Ge(s.backgroundColor);
92
+ const t = Ke(s.backgroundColor);
93
93
  e.backgroundColor = [t.r, t.g, t.b, t.a];
94
94
  }
95
95
  if (s.backgroundImage ? e.backgroundImage = s.backgroundImage : s.background && (e.backgroundImage = s.background), s.boxShadow && (e.boxShadow = s.boxShadow), s.borderRadius && (e.borderRadius = parseFloat(s.borderRadius)), s.width && (e.width = parseFloat(s.width)), s.height && (e.height = parseFloat(s.height)), s.transform && s.transform !== "none") {
@@ -98,7 +98,7 @@ function qe(s) {
98
98
  }
99
99
  return e;
100
100
  }
101
- class Be {
101
+ class Fe {
102
102
  constructor(e, t) {
103
103
  u(this, "target");
104
104
  u(this, "observer");
@@ -106,7 +106,7 @@ class Be {
106
106
  u(this, "pendingStyles", /* @__PURE__ */ new Map());
107
107
  u(this, "isDomDirty", !1);
108
108
  u(this, "isRunning", !1);
109
- u(this, "pendingMask", ge);
109
+ u(this, "pendingMask", pe);
110
110
  u(this, "mutationTimer", null);
111
111
  u(this, "cssTimer", null);
112
112
  u(this, "resizeConfig");
@@ -121,7 +121,7 @@ class Be {
121
121
  u(this, "onScrollChange", /* @__PURE__ */ new Set());
122
122
  u(this, "onRender", /* @__PURE__ */ new Set());
123
123
  u(this, "onTransitionFinished", (e) => {
124
- this.target.contains(e.target) && this.mutationTimer === null && (this.cssTimer && clearTimeout(this.cssTimer), this.pendingStyles.size == 0 && (this.pendingMask |= re | ue, this.cssTimer = window.setTimeout(() => {
124
+ this.target.contains(e.target) && this.mutationTimer === null && (this.cssTimer && clearTimeout(this.cssTimer), this.pendingStyles.size == 0 && (this.pendingMask |= ie | fe, this.cssTimer = window.setTimeout(() => {
125
125
  this.isDomDirty = !0, this.cssTimer = null;
126
126
  }, 50)));
127
127
  });
@@ -137,10 +137,10 @@ class Be {
137
137
  u(this, "renderLoop", () => {
138
138
  if (!this.isRunning)
139
139
  return;
140
- this.onBeforeRender.forEach((i) => i()), this.isDomDirty && (this.isDomDirty = !1, this.onLayoutChange.forEach((i) => i(this.pendingMask, this.pendingDeletions)), this.pendingDeletions.clear(), this.pendingMask = ge);
140
+ this.onBeforeRender.forEach((i) => i()), this.isDomDirty && (this.isDomDirty = !1, this.onLayoutChange.forEach((i) => i(this.pendingMask, this.pendingDeletions)), this.pendingDeletions.clear(), this.pendingMask = pe);
141
141
  const e = window.scrollX, t = window.scrollY;
142
142
  (e !== this.lastScrollX || t !== this.lastScrollY) && (this.onScrollChange.forEach((i) => i(e, t)), this.lastScrollX = e, this.lastScrollY = t, this.scrollTimer && clearTimeout(this.scrollTimer), this.scrollTimer = window.setTimeout(() => {
143
- this.pendingMask |= re, this.isDomDirty = !0, this.scrollTimer = null;
143
+ this.pendingMask |= ie, this.isDomDirty = !0, this.scrollTimer = null;
144
144
  }, 150)), this.pendingStyles.size > 0 && (this.onStyleChange.forEach((i) => i(this.pendingStyles)), this.pendingStyles.clear()), this.onRender.forEach((i) => i()), requestAnimationFrame(this.renderLoop);
145
145
  });
146
146
  var r, c;
@@ -152,23 +152,23 @@ class Be {
152
152
  onStart: i.onStart,
153
153
  onEnd: i.onEnd
154
154
  }, this.observer = new MutationObserver((n) => {
155
- let a = ge;
155
+ let a = pe;
156
156
  for (const l of n)
157
157
  if (l.type === "childList")
158
- a |= pe, l.removedNodes.length > 0 && l.removedNodes.forEach((o) => {
158
+ a |= me, l.removedNodes.length > 0 && l.removedNodes.forEach((o) => {
159
159
  o instanceof HTMLElement && this.pendingDeletions.add(o);
160
160
  });
161
161
  else if (l.type === "attributes")
162
162
  if (l.attributeName === "style") {
163
- a |= re | ue;
164
- const o = l.target, f = qe(o.style);
163
+ a |= ie | fe;
164
+ const o = l.target, f = Je(o.style);
165
165
  this.pendingStyles.set(o, f);
166
166
  } else
167
- l.attributeName === "class" ? a |= re | ue : l.attributeName && l.attributeName.startsWith("data-") && (a |= re | ue, l.attributeName.startsWith("data-mirage") && (a |= pe));
167
+ l.attributeName === "class" ? a |= ie | fe : l.attributeName && l.attributeName.startsWith("data-") && (a |= ie | fe, l.attributeName.startsWith("data-mirage") && (a |= me));
168
168
  else
169
- l.type === "characterData" && (a |= be | re);
170
- if (a !== ge) {
171
- if (this.pendingMask |= a, a & pe) {
169
+ l.type === "characterData" && (a |= Se | ie);
170
+ if (a !== pe) {
171
+ if (this.pendingMask |= a, a & me) {
172
172
  this.clearTimers(), this.isDomDirty = !0;
173
173
  return;
174
174
  }
@@ -193,13 +193,13 @@ class Be {
193
193
  this.mutationTimer && (clearTimeout(this.mutationTimer), this.mutationTimer = null), this.cssTimer && (clearTimeout(this.cssTimer), this.cssTimer = null), this.scrollTimer && (clearTimeout(this.scrollTimer), this.scrollTimer = null);
194
194
  }
195
195
  }
196
- const $ = 1, ae = 2, O = {
196
+ const q = 1, ae = 2, F = {
197
197
  BASE: 0,
198
198
  SELECTED: 1,
199
199
  getCaptureLayer: (s) => 31 - s,
200
200
  HIDDEN: 31
201
- }, Me = Object.values(P.VALUES);
202
- class Ue {
201
+ }, ke = Object.values(G.VALUES);
202
+ class Oe {
203
203
  /**
204
204
  * Calculates or retrieves the exact alphabetic baseline (in pixels) for the given font.
205
205
  * @param font CSS font shorthand string (e.g., "400 16px Inter")
@@ -220,12 +220,12 @@ class Ue {
220
220
  return document.body.removeChild(t), c;
221
221
  }
222
222
  }
223
- u(Ue, "cache", /* @__PURE__ */ new Map());
224
- class je extends w.MeshBasicMaterial {
223
+ u(Oe, "cache", /* @__PURE__ */ new Map());
224
+ class Ze extends y.MeshBasicMaterial {
225
225
  constructor(t, i, r, c, n = 2) {
226
226
  super({
227
227
  transparent: !0,
228
- side: w.FrontSide,
228
+ side: y.FrontSide,
229
229
  color: 16777215
230
230
  });
231
231
  u(this, "canvas");
@@ -233,7 +233,7 @@ class je extends w.MeshBasicMaterial {
233
233
  u(this, "qualityFactor");
234
234
  if (this.canvas = document.createElement("canvas"), this.ctx = this.canvas.getContext("2d"), !this.ctx)
235
235
  throw new Error("[Mirage] Failed to create canvas context");
236
- this.qualityFactor = n, this.map = new w.CanvasTexture(this.canvas), this.map.colorSpace = w.LinearSRGBColorSpace, this.map.minFilter = w.LinearFilter, this.map.magFilter = w.LinearFilter, this.updateText(t, i, r, c);
236
+ this.qualityFactor = n, this.map = new y.CanvasTexture(this.canvas), this.map.colorSpace = y.LinearSRGBColorSpace, this.map.minFilter = y.LinearFilter, this.map.magFilter = y.LinearFilter, this.updateText(t, i, r, c);
237
237
  }
238
238
  wrapText(t, i) {
239
239
  const r = t.split(`
@@ -256,11 +256,11 @@ class je extends w.MeshBasicMaterial {
256
256
  n !== void 0 && (this.qualityFactor = n);
257
257
  const l = (window.devicePixelRatio || 1) * this.qualityFactor, o = r * l, f = c * l;
258
258
  this.canvas.width !== o || this.canvas.height !== f ? (this.canvas.width = o, this.canvas.height = f) : this.ctx.clearRect(0, 0, this.canvas.width, this.canvas.height), this.ctx.setTransform(l, 0, 0, l, 0, 0), this.ctx.font = i.font, this.ctx.fillStyle = i.color, this.ctx.textBaseline = "alphabetic", this.ctx.globalAlpha = 1;
259
- const h = this.wrapText(t, r), d = i.lineHeight, p = Ue.getBaseline(i.font);
260
- h.forEach((g, M) => {
261
- const m = M * d + p;
259
+ const h = this.wrapText(t, r), d = i.lineHeight, m = Oe.getBaseline(i.font);
260
+ h.forEach((p, R) => {
261
+ const v = R * d + m;
262
262
  let b = 0;
263
- i.textAlign === "center" ? b = r / 2 : i.textAlign === "right" && (b = r), this.ctx.textAlign = i.textAlign, this.ctx.fillText(g, b, m);
263
+ i.textAlign === "center" ? b = r / 2 : i.textAlign === "right" && (b = r), this.ctx.textAlign = i.textAlign, this.ctx.fillText(p, b, v);
264
264
  }), this.map && (this.map.needsUpdate = !0);
265
265
  }
266
266
  dispose() {
@@ -275,17 +275,17 @@ function le(s, e = 0) {
275
275
  }
276
276
  function ce(s) {
277
277
  if (!s || s === "transparent")
278
- return { color: new w.Color(16777215), alpha: 0 };
278
+ return { color: new y.Color(16777215), alpha: 0 };
279
279
  const e = s.match(
280
280
  /rgba?\((\d+),\s*(\d+),\s*(\d+)(?:,\s*([\d.]+))?\)/
281
281
  );
282
282
  if (e) {
283
283
  const t = parseInt(e[1], 10), i = parseInt(e[2], 10), r = parseInt(e[3], 10), c = e[4] !== void 0 ? parseFloat(e[4]) : 1;
284
- return { color: new w.Color(`rgb(${t}, ${i}, ${r})`), alpha: c };
284
+ return { color: new y.Color(`rgb(${t}, ${i}, ${r})`), alpha: c };
285
285
  }
286
- return { color: new w.Color(s), alpha: 1 };
286
+ return { color: new y.Color(s), alpha: 1 };
287
287
  }
288
- function Oe(s) {
288
+ function ze(s) {
289
289
  const e = [];
290
290
  let t = "", i = 0;
291
291
  for (let r = 0; r < s.length; r++) {
@@ -302,13 +302,13 @@ function Oe(s) {
302
302
  }
303
303
  return t && e.push(t.trim()), e;
304
304
  }
305
- function Ke(s) {
305
+ function Qe(s) {
306
306
  if (!s || typeof s != "string" || !s.includes("linear-gradient"))
307
307
  return null;
308
308
  const e = s.match(/linear-gradient\((.*)\)/);
309
309
  if (!e)
310
310
  return null;
311
- const t = e[1], i = Oe(t);
311
+ const t = e[1], i = ze(t);
312
312
  let r = Math.PI, c = 0;
313
313
  const n = i[0].trim();
314
314
  if (n.startsWith("to "))
@@ -322,13 +322,13 @@ function Ke(s) {
322
322
  const o = i[l].trim(), f = o.lastIndexOf(" ");
323
323
  let h = o, d = null;
324
324
  if (f !== -1 && !o.endsWith(")")) {
325
- const g = o.substring(f + 1);
326
- (g.endsWith("%") || g.endsWith("px") || !isNaN(parseFloat(g))) && (h = o.substring(0, f).trim(), d = g);
325
+ const p = o.substring(f + 1);
326
+ (p.endsWith("%") || p.endsWith("px") || !isNaN(parseFloat(p))) && (h = o.substring(0, f).trim(), d = p);
327
327
  }
328
- const p = ce(h);
328
+ const m = ce(h);
329
329
  a.push({
330
- color: p.color,
331
- alpha: p.alpha,
330
+ color: m.color,
331
+ alpha: m.alpha,
332
332
  rawStop: d,
333
333
  stop: 0
334
334
  });
@@ -342,38 +342,38 @@ function Ke(s) {
342
342
  if (a[o].rawStop !== null || o === a.length - 1) {
343
343
  const f = o - l;
344
344
  if (f > 1) {
345
- const h = a[l].stop, p = (a[o].stop - h) / f;
346
- for (let g = 1; g < f; g++)
347
- a[l + g].stop = h + p * g;
345
+ const h = a[l].stop, m = (a[o].stop - h) / f;
346
+ for (let p = 1; p < f; p++)
347
+ a[l + p].stop = h + m * p;
348
348
  }
349
349
  l = o;
350
350
  }
351
351
  }
352
352
  return { angle: r, stops: a };
353
353
  }
354
- function Je(s) {
354
+ function et(s) {
355
355
  if (!s || s === "none")
356
356
  return null;
357
- const e = Oe(s);
357
+ const e = ze(s);
358
358
  if (e.length === 0)
359
359
  return null;
360
360
  const t = e[0].trim(), i = /(rgba?\([^)]+\)|#[0-9a-fA-F]+|[a-zA-Z]+)/, r = t.match(i);
361
361
  let c = "transparent", n = t;
362
362
  if (r && r[1] !== "inset") {
363
- const p = r[1];
364
- (p.startsWith("rgb") || p.startsWith("#") || p === "black" || p === "white" || p === "transparent") && (c = p, n = t.replace(p, "").trim());
363
+ const m = r[1];
364
+ (m.startsWith("rgb") || m.startsWith("#") || m === "black" || m === "white" || m === "transparent") && (c = m, n = t.replace(m, "").trim());
365
365
  }
366
366
  n = n.replace("inset", "").trim();
367
- const a = n.split(/\s+/).map((p) => parseFloat(p) || 0), l = a[0] || 0, o = a[1] || 0, f = a[2] || 0, h = a[3] || 0, d = ce(c);
367
+ const a = n.split(/\s+/).map((m) => parseFloat(m) || 0), l = a[0] || 0, o = a[1] || 0, f = a[2] || 0, h = a[3] || 0, d = ce(c);
368
368
  return { offsetX: l, offsetY: o, blurRadius: f, spreadRadius: h, color: d.color, alpha: d.alpha };
369
369
  }
370
- const Ze = `varying vec2 vUv;
370
+ const tt = `varying vec2 vUv;
371
371
  varying vec4 vScreenPos;
372
372
  void main() {
373
373
  vUv = uv;
374
374
  gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);
375
375
  vScreenPos = gl_Position;
376
- }`, Qe = `varying vec2 vUv;
376
+ }`, rt = `varying vec2 vUv;
377
377
  uniform vec2 uSize;
378
378
  uniform vec2 uMeshSize;
379
379
  uniform vec4 uShadowColor;
@@ -532,90 +532,90 @@ void main() {
532
532
 
533
533
  // #include <colorspace_fragment>
534
534
  }
535
- `, et = `uniform sampler2D uTexture;
535
+ `, it = `uniform sampler2D uTexture;
536
536
  varying vec4 vScreenPos;
537
537
  uniform vec2 uTextureRepeat;
538
- uniform vec2 uTextureOffset;`, tt = `vec2 screenUv = (vScreenPos.xy / vScreenPos.w) * 0.5 + 0.5;
538
+ uniform vec2 uTextureOffset;`, st = `vec2 screenUv = (vScreenPos.xy / vScreenPos.w) * 0.5 + 0.5;
539
539
  vec2 resultUv = screenUv;
540
540
 
541
- `, rt = `vec4 texColor = texture2D(uTexture, resultUv);
542
- baseColor = blendSrcOver(baseColor, texColor);`, De = {
543
- vertexShader: Ze,
544
- fragmentShader: Qe
545
- }, Ae = {
546
- declChunk: et,
547
- uvChunk: tt,
548
- baseColorChunk: rt
541
+ `, nt = `vec4 texColor = texture2D(uTexture, resultUv);
542
+ baseColor = blendSrcOver(baseColor, texColor);`, Ie = {
543
+ vertexShader: tt,
544
+ fragmentShader: rt
545
+ }, Be = {
546
+ declChunk: it,
547
+ uvChunk: st,
548
+ baseColorChunk: nt
549
549
  };
550
- function it(s, e, t, i = null, r) {
550
+ function ot(s, e, t, i = null, r) {
551
551
  var C;
552
552
  const c = i !== null || !!s.imageSrc;
553
553
  let n = "";
554
554
  const a = {};
555
555
  if (r != null && r.uniforms)
556
- for (const [y, S] of Object.entries(r.uniforms))
557
- typeof S == "number" ? (n += `uniform float ${y};
558
- `, a[y] = { value: S }) : Array.isArray(S) ? S.length === 2 ? (n += `uniform vec2 ${y};
559
- `, a[y] = { value: new w.Vector2(...S) }) : S.length === 3 ? (n += `uniform vec3 ${y};
560
- `, a[y] = { value: new w.Vector3(...S) }) : S.length === 4 && (n += `uniform vec4 ${y};
561
- `, a[y] = { value: new w.Vector4(...S) }) : S && typeof S == "object" && S.type ? (n += `uniform ${S.type} ${y};
562
- `, a[y] = S) : (n += `uniform float ${y};
563
- `, a[y] = { value: S });
564
- const l = r !== void 0, o = (c || l ? Ae.declChunk : "") + `
556
+ for (const [w, x] of Object.entries(r.uniforms))
557
+ typeof x == "number" ? (n += `uniform float ${w};
558
+ `, a[w] = { value: x }) : Array.isArray(x) ? x.length === 2 ? (n += `uniform vec2 ${w};
559
+ `, a[w] = { value: new y.Vector2(...x) }) : x.length === 3 ? (n += `uniform vec3 ${w};
560
+ `, a[w] = { value: new y.Vector3(...x) }) : x.length === 4 && (n += `uniform vec4 ${w};
561
+ `, a[w] = { value: new y.Vector4(...x) }) : x && typeof x == "object" && x.type ? (n += `uniform ${x.type} ${w};
562
+ `, a[w] = x) : (n += `uniform float ${w};
563
+ `, a[w] = { value: x });
564
+ const l = r !== void 0, o = (c || l ? Be.declChunk : "") + `
565
565
  ` + n, f = `vec2 screenUv = (vScreenPos.xy / vScreenPos.w) * 0.5 + 0.5;
566
566
  `, h = s.isTraveler ? `vec2 resultUv = screenUv;
567
567
  ` : `vec2 localUv = (p / uSize) + 0.5;
568
568
  vec2 resultUv = localUv * uTextureRepeat + uTextureOffset;
569
- `, d = c || l ? f + h + ((r == null ? void 0 : r.uvModifier) || "") : "", p = c || l ? Ae.baseColorChunk : "", g = (r == null ? void 0 : r.colorModifier) || "", M = De.fragmentShader.replace("#INJECT_DECLARATIONS", o).replace("#INJECT_UV_MODIFIER", d).replace("#INJECT_BASE_COLOR", p).replace("#INJECT_COLOR_MODIFIER", g), m = ce(s.backgroundColor), b = ce(s.borderColor), E = {
570
- uSize: { value: new w.Vector2(e, t) },
571
- uMeshSize: { value: new w.Vector2(e, t) },
572
- uShadowColor: { value: new w.Vector4(0, 0, 0, 0) },
573
- uShadowOffset: { value: new w.Vector2(0, 0) },
569
+ `, d = c || l ? f + h + ((r == null ? void 0 : r.uvModifier) || "") : "", m = c || l ? Be.baseColorChunk : "", p = (r == null ? void 0 : r.colorModifier) || "", R = Ie.fragmentShader.replace("#INJECT_DECLARATIONS", o).replace("#INJECT_UV_MODIFIER", d).replace("#INJECT_BASE_COLOR", m).replace("#INJECT_COLOR_MODIFIER", p), v = ce(s.backgroundColor), b = ce(s.borderColor), E = {
570
+ uSize: { value: new y.Vector2(e, t) },
571
+ uMeshSize: { value: new y.Vector2(e, t) },
572
+ uShadowColor: { value: new y.Vector4(0, 0, 0, 0) },
573
+ uShadowOffset: { value: new y.Vector2(0, 0) },
574
574
  uShadowBlur: { value: 0 },
575
575
  uShadowSpread: { value: 0 },
576
576
  uBgColor: {
577
- value: new w.Vector4(
578
- m.color.r,
579
- m.color.g,
580
- m.color.b,
581
- m.alpha
577
+ value: new y.Vector4(
578
+ v.color.r,
579
+ v.color.g,
580
+ v.color.b,
581
+ v.alpha
582
582
  )
583
583
  },
584
584
  uBorderColor: {
585
- value: new w.Vector4(
585
+ value: new y.Vector4(
586
586
  b.color.r,
587
587
  b.color.g,
588
588
  b.color.b,
589
589
  b.alpha
590
590
  )
591
591
  },
592
- uBorderRadius: { value: new w.Vector4(0, 0, 0, 0) },
592
+ uBorderRadius: { value: new y.Vector4(0, 0, 0, 0) },
593
593
  uBorderWidth: { value: le(s.borderWidth) },
594
594
  uOpacity: { value: (C = s.opacity) != null ? C : 1 },
595
595
  uTexture: { value: null },
596
- uTextureRepeat: { value: new w.Vector2(1, 1) },
597
- uTextureOffset: { value: new w.Vector2(0, 0) },
596
+ uTextureRepeat: { value: new y.Vector2(1, 1) },
597
+ uTextureOffset: { value: new y.Vector2(0, 0) },
598
598
  uGradientCount: { value: 0 },
599
599
  uGradientAngle: { value: 0 },
600
600
  uGradientColors: {
601
- value: Array.from({ length: 8 }, () => new w.Vector4(0, 0, 0, 0))
601
+ value: Array.from({ length: 8 }, () => new y.Vector4(0, 0, 0, 0))
602
602
  },
603
603
  uGradientStops: { value: new Float32Array(8) }
604
604
  };
605
- _e(E.uBorderRadius.value, s.borderRadius, Math.min(e, t)), c && (E.uTexture.value = i);
606
- const A = new w.ShaderMaterial({
607
- uniforms: te(te({}, E), a),
608
- vertexShader: De.vertexShader,
609
- fragmentShader: M,
605
+ Ne(E.uBorderRadius.value, s.borderRadius, Math.min(e, t)), c && (E.uTexture.value = i);
606
+ const M = new y.ShaderMaterial({
607
+ uniforms: re(re({}, E), a),
608
+ vertexShader: Ie.vertexShader,
609
+ fragmentShader: R,
610
610
  transparent: !0,
611
- side: w.FrontSide
611
+ side: y.FrontSide
612
612
  // for better performance
613
613
  });
614
- return s.backgroundImage && xe(A, { backgroundImage: s.backgroundImage }), A;
614
+ return s.backgroundImage && Ee(M, { backgroundImage: s.backgroundImage }), M;
615
615
  }
616
- function st(s, e, t, i, r) {
616
+ function at(s, e, t, i, r) {
617
617
  const c = le(e.borderWidth);
618
- xe(s, {
618
+ Ee(s, {
619
619
  width: t,
620
620
  height: i,
621
621
  borderRadius: e.borderRadius,
@@ -628,10 +628,10 @@ function st(s, e, t, i, r) {
628
628
  boxShadow: e.boxShadow
629
629
  });
630
630
  }
631
- function xe(s, e) {
631
+ function Ee(s, e) {
632
632
  var i, r, c;
633
633
  if (e.boxShadow !== void 0) {
634
- const n = Je(e.boxShadow);
634
+ const n = et(e.boxShadow);
635
635
  n ? (s.uniforms.uShadowColor.value.set(n.color.r, n.color.g, n.color.b, n.alpha), s.uniforms.uShadowOffset.value.set(n.offsetX, n.offsetY), s.uniforms.uShadowBlur.value = n.blurRadius, s.uniforms.uShadowSpread.value = n.spreadRadius, s.userData.shadowPadding = n.blurRadius + n.spreadRadius + Math.max(Math.abs(n.offsetX), Math.abs(n.offsetY))) : (s.uniforms.uShadowColor.value.w = 0, s.userData.shadowPadding = 0);
636
636
  }
637
637
  if (e.width !== void 0 && e.height !== void 0 && s.uniforms.uSize.value.set(e.width, e.height), s.uniforms.uMeshSize) {
@@ -640,7 +640,7 @@ function xe(s, e) {
640
640
  }
641
641
  if (e.borderRadius !== void 0) {
642
642
  const n = e.width !== void 0 && e.height !== void 0 ? Math.min(e.width, e.height) : Math.min(s.uniforms.uSize.value.x, s.uniforms.uSize.value.y);
643
- _e(s.uniforms.uBorderRadius.value, e.borderRadius, n);
643
+ Ne(s.uniforms.uBorderRadius.value, e.borderRadius, n);
644
644
  }
645
645
  if (e.borderWidth !== void 0 && (s.uniforms.uBorderWidth.value = e.borderWidth), e.backgroundColor !== void 0)
646
646
  if (Array.isArray(e.backgroundColor)) {
@@ -711,7 +711,7 @@ function xe(s, e) {
711
711
  } else
712
712
  s.uniforms.uTextureRepeat && (s.uniforms.uTextureRepeat.value.set(1, 1), s.uniforms.uTextureOffset.value.set(0, 0));
713
713
  if (e.backgroundImage !== void 0) {
714
- const n = Ke(e.backgroundImage);
714
+ const n = Qe(e.backgroundImage);
715
715
  if (n) {
716
716
  s.uniforms.uGradientCount.value = n.stops.length, s.uniforms.uGradientAngle.value = n.angle;
717
717
  for (let a = 0; a < 8; a++)
@@ -731,7 +731,7 @@ function xe(s, e) {
731
731
  for (const n of Object.keys(e))
732
732
  n !== "width" && n !== "height" && n !== "borderRadius" && n !== "borderWidth" && n !== "backgroundColor" && n !== "borderColor" && n !== "opacity" && n !== "bgOpacity" && n !== "borderOpacity" && n !== "texture" && n !== "backgroundImage" && n !== "boxShadow" && 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]);
733
733
  }
734
- function _e(s, e, t = 0) {
734
+ function Ne(s, e, t = 0) {
735
735
  var l, o, f, h;
736
736
  if (e == null) {
737
737
  s.set(0, 0, 0, 0);
@@ -748,24 +748,24 @@ function _e(s, e, t = 0) {
748
748
  const i = e.split("/")[0].trim().split(/\s+/), r = le(i[0], t), c = le((l = i[1]) != null ? l : i[0], t), n = le((o = i[2]) != null ? o : i[0], t), a = le((h = (f = i[3]) != null ? f : i[1]) != null ? h : i[0], t);
749
749
  s.set(r, c, n, a);
750
750
  }
751
- const W = {
751
+ const P = {
752
752
  create(s, e, t, i, r, c = 2, n = null, a) {
753
- return s === "BOX" ? it(
753
+ return s === "BOX" ? ot(
754
754
  e,
755
755
  i,
756
756
  r,
757
757
  n,
758
758
  a
759
- ) : s === "TEXT" ? new je(
759
+ ) : s === "TEXT" ? new Ze(
760
760
  t || "",
761
761
  e,
762
762
  i,
763
763
  r,
764
764
  c
765
- ) : new w.MeshBasicMaterial({ visible: !1 });
765
+ ) : new y.MeshBasicMaterial({ visible: !1 });
766
766
  },
767
767
  update(s, e, t, i, r, c, n = 2, a) {
768
- e === "BOX" ? st(
768
+ e === "BOX" ? at(
769
769
  s,
770
770
  t,
771
771
  r,
@@ -780,10 +780,10 @@ const W = {
780
780
  );
781
781
  },
782
782
  forceUpdateUniforms(s, e) {
783
- xe(s, e);
783
+ Ee(s, e);
784
784
  }
785
785
  };
786
- class nt {
786
+ class lt {
787
787
  constructor(e, t = !0) {
788
788
  u(this, "observer");
789
789
  u(this, "textures", /* @__PURE__ */ new WeakMap());
@@ -809,7 +809,7 @@ class nt {
809
809
  e.nodeType === Node.ELEMENT_NODE && this.observer && this.observer.unobserve(e), this.disposeTexture(e), this.elementUrls.delete(e), this.loadStatus.delete(e);
810
810
  }
811
811
  loadTexture(e) {
812
- return Te(this, null, function* () {
812
+ return Me(this, null, function* () {
813
813
  if (this.loadStatus.get(e) || this.textures.has(e))
814
814
  return;
815
815
  const t = this.elementUrls.get(e);
@@ -830,8 +830,8 @@ class nt {
830
830
  "close" in i && i.close();
831
831
  return;
832
832
  }
833
- const r = new w.Texture(i);
834
- i instanceof HTMLImageElement || (r.flipY = !1), r.colorSpace = w.LinearSRGBColorSpace, r.needsUpdate = !0, this.textures.set(e, r), this.onUpdate(e, r);
833
+ const r = new y.Texture(i);
834
+ i instanceof HTMLImageElement || (r.flipY = !1), r.colorSpace = y.LinearSRGBColorSpace, r.needsUpdate = !0, this.textures.set(e, r), this.onUpdate(e, r);
835
835
  } catch (i) {
836
836
  console.warn("[MirageEngine] Failed to load texture:", t, i);
837
837
  } finally {
@@ -851,7 +851,7 @@ class nt {
851
851
  this.observer && this.observer.disconnect();
852
852
  }
853
853
  }
854
- class ot {
854
+ class ct {
855
855
  constructor(e, t, i, r) {
856
856
  u(this, "canvas");
857
857
  u(this, "scene");
@@ -870,50 +870,50 @@ class ot {
870
870
  u(this, "registry");
871
871
  u(this, "targetRect");
872
872
  u(this, "travelersByLayer", Array.from(
873
- { length: N.MAX_LAYERS },
873
+ { length: V.MAX_LAYERS },
874
874
  () => /* @__PURE__ */ new Set()
875
875
  ));
876
876
  u(this, "textureManager");
877
877
  // private meshMap: Map<HTMLElement, THREE.Mesh> = new Map();
878
878
  u(this, "fixedMeshes", /* @__PURE__ */ new Set());
879
879
  var a, l, o, f, h;
880
- this.target = e, this.mountContainer = i, this.registry = r, this.mode = (a = t.mode) != null ? a : "overlay", this.canvasSize = (l = t.canvasSize) != null ? l : "viewport", this.clipArea = (o = t.travelerClipArea) != null ? o : 1, this.targetLayer = (f = t.layer) != null ? f : "base", this.textureManager = new nt((d, p) => {
881
- const g = this.registry.get(d);
882
- g && g.material instanceof w.ShaderMaterial && W.forceUpdateUniforms(g.material, { texture: p });
883
- }, this.isViewport), this.canvas = document.createElement("canvas"), this.scene = new w.Scene(), this.targetRect = this.target.getBoundingClientRect();
880
+ this.target = e, this.mountContainer = i, this.registry = r, this.mode = (a = t.mode) != null ? a : "overlay", this.canvasSize = (l = t.canvasSize) != null ? l : "viewport", this.clipArea = (o = t.travelerClipArea) != null ? o : 1, this.targetLayer = (f = t.layer) != null ? f : "base", this.textureManager = new lt((d, m) => {
881
+ const p = this.registry.get(d);
882
+ p && p.material instanceof y.ShaderMaterial && P.forceUpdateUniforms(p.material, { texture: m });
883
+ }, this.isViewport), this.canvas = document.createElement("canvas"), this.scene = new y.Scene(), this.targetRect = this.target.getBoundingClientRect();
884
884
  const c = this.isViewport ? window.innerWidth + this.overscan * 2 : this.targetRect.width, n = this.isViewport ? window.innerHeight + this.overscan * 2 : this.targetRect.height;
885
- this.camera = new w.OrthographicCamera(
885
+ this.camera = new y.OrthographicCamera(
886
886
  c / -2,
887
887
  c / 2,
888
888
  n / 2,
889
889
  n / -2,
890
890
  1,
891
891
  1e3
892
- ), this.camera.position.z = 100, this.camera.layers.set(this.getSceneLayer()), this.renderer = new w.WebGLRenderer({
892
+ ), this.camera.position.z = 100, this.camera.layers.set(this.getSceneLayer()), this.renderer = new y.WebGLRenderer({
893
893
  canvas: this.canvas,
894
894
  alpha: !0,
895
895
  antialias: !0
896
896
  // [new]
897
897
  // premultipliedAlpha: true
898
- }), w.ColorManagement.enabled = !1, this.renderer.outputColorSpace = w.LinearSRGBColorSpace, this.renderer.setPixelRatio(window.devicePixelRatio), this.renderer.setSize(c, n), this.applyTextQuality((h = t.quality) != null ? h : "medium");
898
+ }), y.ColorManagement.enabled = !1, this.renderer.outputColorSpace = y.LinearSRGBColorSpace, this.renderer.setPixelRatio(window.devicePixelRatio), this.renderer.setSize(c, n), this.applyTextQuality((h = t.quality) != null ? h : "medium");
899
899
  }
900
900
  get isViewport() {
901
901
  return this.mode === "overlay" && this.canvasSize === "viewport";
902
902
  }
903
903
  getSceneLayer() {
904
- return typeof this.targetLayer == "number" ? this.targetLayer : this.targetLayer === "selected" ? O.SELECTED : O.BASE;
904
+ return typeof this.targetLayer == "number" ? this.targetLayer : this.targetLayer === "selected" ? F.SELECTED : F.BASE;
905
905
  }
906
906
  createRenderTarget() {
907
- for (let e = 0; e < N.MAX_LAYERS; e++) {
907
+ for (let e = 0; e < V.MAX_LAYERS; e++) {
908
908
  const t = this.isViewport ? window.innerWidth + this.overscan * 2 : this.targetRect.width, i = this.isViewport ? window.innerHeight + this.overscan * 2 : this.targetRect.height;
909
909
  this.renderTargets.push(
910
- new w.WebGLRenderTarget(
910
+ new y.WebGLRenderTarget(
911
911
  t * this.qualityFactor,
912
912
  i * this.qualityFactor,
913
913
  {
914
- minFilter: w.LinearFilter,
915
- magFilter: w.LinearFilter,
916
- format: w.RGBAFormat,
914
+ minFilter: y.LinearFilter,
915
+ magFilter: y.LinearFilter,
916
+ format: y.RGBAFormat,
917
917
  stencilBuffer: !1,
918
918
  depthBuffer: !0
919
919
  }
@@ -951,12 +951,12 @@ class ot {
951
951
  updateUniforms(e, t) {
952
952
  const i = this.registry.get(e);
953
953
  i && (i.traverse((r) => {
954
- r.isMesh && r.material && W.forceUpdateUniforms(
954
+ r.isMesh && r.material && P.forceUpdateUniforms(
955
955
  r.material,
956
956
  t
957
957
  );
958
958
  }), i.userData.nativeMesh && i.userData.nativeMesh.traverse((r) => {
959
- r.isMesh && r.material && W.forceUpdateUniforms(
959
+ r.isMesh && r.material && P.forceUpdateUniforms(
960
960
  r.material,
961
961
  t
962
962
  );
@@ -982,7 +982,7 @@ class ot {
982
982
  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(
983
983
  (d) => d.dispose()
984
984
  ) : h.userData.nativeMesh.material.dispose(), h.userData.nativeMesh.geometry.dispose()), h.traverse((d) => {
985
- d instanceof w.Mesh && (d.geometry && d.geometry.dispose(), d.material && (Array.isArray(d.material) ? d.material.forEach((p) => p.dispose()) : d.material.dispose()));
985
+ d instanceof y.Mesh && (d.geometry && d.geometry.dispose(), d.material && (Array.isArray(d.material) ? d.material.forEach((m) => m.dispose()) : d.material.dispose()));
986
986
  }), this.registry.remove(f), this.textureManager.unregister(f);
987
987
  }
988
988
  });
@@ -995,8 +995,8 @@ class ot {
995
995
  var r, c;
996
996
  let t = this.registry.get(e.element);
997
997
  const i = JSON.stringify(e.shaderHooks || null);
998
- if (t && t.userData.shaderHash !== i && (this.scene.remove(t), t.geometry.dispose(), t.material instanceof w.Material && t.material.dispose(), this.registry.remove(e.element), t = void 0), !t) {
999
- const n = new w.PlaneGeometry(1, 1), a = e.isTraveler ? (r = this.renderTargets[e.captureLayer - 2]) == null ? void 0 : r.texture : this.textureManager.get(e.element), l = W.create(
998
+ if (t && t.userData.shaderHash !== i && (this.scene.remove(t), t.geometry.dispose(), t.material instanceof y.Material && t.material.dispose(), this.registry.remove(e.element), t = void 0), !t) {
999
+ const n = new y.PlaneGeometry(1, 1), a = e.isTraveler ? (r = this.renderTargets[e.captureLayer - 2]) == null ? void 0 : r.texture : this.textureManager.get(e.element), l = P.create(
1000
1000
  "BOX",
1001
1001
  e.styles,
1002
1002
  "",
@@ -1006,10 +1006,10 @@ class ot {
1006
1006
  a,
1007
1007
  e.shaderHooks
1008
1008
  );
1009
- t = new w.Mesh(n, l), e.type === "TEXT" && (t.name = "BG_MESH"), this.scene.add(t), this.registry.register(e.element, t), t.userData.baseMaterial = l, t.userData.domElement = e.element, t.userData.shaderHash = i;
1009
+ t = new y.Mesh(n, l), e.type === "TEXT" && (t.name = "BG_MESH"), this.scene.add(t), this.registry.register(e.element, t), t.userData.baseMaterial = l, t.userData.domElement = e.element, t.userData.shaderHash = i;
1010
1010
  }
1011
1011
  if (t.userData.clipElements = e.clipElements, (c = e.nativeStyles) != null && c.transform ? t.userData.nativeTransform = e.nativeStyles.transform : t.userData.nativeTransform = void 0, this.updateMeshProperties(t, e), this.updateMeshLayers(t, e), e.isTraveler)
1012
- for (let n = 0; n < N.MAX_LAYERS; n++)
1012
+ for (let n = 0; n < V.MAX_LAYERS; n++)
1013
1013
  n === e.captureLayer - 2 ? this.travelersByLayer[n].add(t) : this.travelersByLayer[n].delete(t);
1014
1014
  else
1015
1015
  for (const n of this.travelersByLayer)
@@ -1029,31 +1029,31 @@ class ot {
1029
1029
  const r = t.textLines || [
1030
1030
  { text: t.textContent || "", rect: t.rect }
1031
1031
  ], c = i ? t.nativeStyles : t.textStyles, n = JSON.stringify(c) + t.textContent + r.map((f) => f.text).join("|"), a = (o = e.userData) == null ? void 0 : o.textChildStyleHash;
1032
- if (t.dirtyMask & be || n !== a) {
1032
+ if (t.dirtyMask & Se || n !== a) {
1033
1033
  e.children.filter(
1034
- (g) => g.name.startsWith("TEXT_CHILD")
1035
- ).forEach((g) => {
1036
- var m;
1037
- const M = g;
1038
- (m = M.material.map) == null || m.dispose(), M.geometry.dispose(), e.remove(M);
1034
+ (p) => p.name.startsWith("TEXT_CHILD")
1035
+ ).forEach((p) => {
1036
+ var v;
1037
+ const R = p;
1038
+ (v = R.material.map) == null || v.dispose(), R.geometry.dispose(), e.remove(R);
1039
1039
  });
1040
- const h = t.rect, d = h.x + h.width / 2, p = h.y + h.height / 2;
1041
- r.forEach((g, M) => {
1042
- const m = W.create(
1040
+ const h = t.rect, d = h.x + h.width / 2, m = h.y + h.height / 2;
1041
+ r.forEach((p, R) => {
1042
+ const v = P.create(
1043
1043
  "TEXT",
1044
1044
  c,
1045
- g.text,
1046
- g.rect.width,
1047
- g.rect.height,
1045
+ p.text,
1046
+ p.rect.width,
1047
+ p.rect.height,
1048
1048
  this.qualityFactor
1049
- ), b = new w.PlaneGeometry(1, 1), E = new w.Mesh(b, m);
1050
- E.name = `TEXT_CHILD_${M}`;
1051
- const A = t.rect.width === 0 ? 1 : g.rect.width / t.rect.width, C = t.rect.height === 0 ? 1 : g.rect.height / t.rect.height;
1052
- E.scale.set(A, C, 1);
1053
- const y = g.rect.x + g.rect.width / 2, S = g.rect.y + g.rect.height / 2, z = y - d, X = -(S - p);
1049
+ ), b = new y.PlaneGeometry(1, 1), E = new y.Mesh(b, v);
1050
+ E.name = `TEXT_CHILD_${R}`;
1051
+ const M = t.rect.width === 0 ? 1 : p.rect.width / t.rect.width, C = t.rect.height === 0 ? 1 : p.rect.height / t.rect.height;
1052
+ E.scale.set(M, C, 1);
1053
+ const w = p.rect.x + p.rect.width / 2, x = p.rect.y + p.rect.height / 2, z = w - d, Y = -(x - m);
1054
1054
  E.position.set(
1055
1055
  t.rect.width === 0 ? 0 : z / t.rect.width,
1056
- t.rect.height === 0 ? 0 : X / t.rect.height,
1056
+ t.rect.height === 0 ? 0 : Y / t.rect.height,
1057
1057
  5e-3
1058
1058
  ), e.add(E);
1059
1059
  }), e.userData.textChildStyleHash = n;
@@ -1063,21 +1063,21 @@ class ot {
1063
1063
  return;
1064
1064
  const h = f;
1065
1065
  if (i && t.nativeLayer !== void 0)
1066
- h.layers.set(O.HIDDEN), t.visibility & $ && h.layers.enable(O.getCaptureLayer(t.nativeLayer));
1066
+ h.layers.set(F.HIDDEN), t.visibility & q && h.layers.enable(F.getCaptureLayer(t.nativeLayer));
1067
1067
  else {
1068
- const d = t.visibility & $ ? O.BASE : O.HIDDEN;
1069
- if (h.layers.set(d), t.visibility & ae && h.layers.enable(O.SELECTED), t.visibility & $)
1068
+ const d = t.visibility & q ? F.BASE : F.HIDDEN;
1069
+ if (h.layers.set(d), t.visibility & ae && h.layers.enable(F.SELECTED), t.visibility & q)
1070
1070
  if (!i && t.nativeLayer !== void 0 && t.nativeStyles !== void 0)
1071
- for (let p = t.captureLayer; p <= N.MAX_LAYERS + 1; p++)
1072
- p !== t.nativeLayer && h.layers.enable(O.getCaptureLayer(p));
1071
+ for (let m = t.captureLayer; m <= V.MAX_LAYERS + 1; m++)
1072
+ m !== t.nativeLayer && h.layers.enable(F.getCaptureLayer(m));
1073
1073
  else
1074
- for (let p = t.captureLayer; p <= N.MAX_LAYERS + 1; p++)
1075
- h.layers.enable(O.getCaptureLayer(p));
1074
+ for (let m = t.captureLayer; m <= V.MAX_LAYERS + 1; m++)
1075
+ h.layers.enable(F.getCaptureLayer(m));
1076
1076
  }
1077
1077
  });
1078
1078
  }
1079
1079
  updateMeshProperties(e, t) {
1080
- var C, y, S, z, X;
1080
+ var C, w, x, z, Y;
1081
1081
  const { rect: i, styles: r } = t, c = this.renderer.getPixelRatio(), n = this.renderer.domElement.width / c, a = this.renderer.domElement.height / c;
1082
1082
  e.material = e.userData.baseMaterial;
1083
1083
  let l = ((C = e.material.userData) == null ? void 0 : C.shadowPadding) || 0;
@@ -1090,27 +1090,27 @@ class ot {
1090
1090
  const o = 1e-3;
1091
1091
  this.renderOrder++;
1092
1092
  const f = this.targetRect.left + window.scrollX, h = this.targetRect.top + window.scrollY;
1093
- let d, p;
1093
+ let d, m;
1094
1094
  if (this.isViewport)
1095
- d = i.x - window.innerWidth / 2 + i.width / 2, p = -i.y + window.innerHeight / 2 - i.height / 2;
1095
+ d = i.x - window.innerWidth / 2 + i.width / 2, m = -i.y + window.innerHeight / 2 - i.height / 2;
1096
1096
  else {
1097
- const B = i.x - f, k = i.y - h;
1098
- d = B - n / 2 + i.width / 2, p = -k + a / 2 - i.height / 2;
1097
+ const A = i.x - f, N = i.y - h;
1098
+ d = A - n / 2 + i.width / 2, m = -N + a / 2 - i.height / 2;
1099
1099
  }
1100
1100
  e.position.set(
1101
1101
  d,
1102
- p,
1102
+ m,
1103
1103
  r.zIndex + this.renderOrder * o
1104
1104
  );
1105
- const g = i.x, M = i.y;
1106
- e.userData.basePosition = { x: d, y: p }, e.userData.originalBasePosition = { x: d, y: p }, e.userData.baseSize = { width: i.width, height: i.height }, e.userData.baseDOM = { x: g, y: M }, e.userData.isFixed = t.isFixed, e.userData.initialScroll = { x: window.scrollX, y: window.scrollY };
1107
- const m = t.element.nodeType === Node.TEXT_NODE ? t.element.parentElement : t.element, b = window.getComputedStyle(m);
1108
- let E = 0, A = 0;
1105
+ const p = i.x, R = i.y;
1106
+ e.userData.basePosition = { x: d, y: m }, e.userData.originalBasePosition = { x: d, y: m }, e.userData.baseSize = { width: i.width, height: i.height }, e.userData.baseDOM = { x: p, y: R }, e.userData.isFixed = t.isFixed, e.userData.initialScroll = { x: window.scrollX, y: window.scrollY };
1107
+ const v = t.element.nodeType === Node.TEXT_NODE ? t.element.parentElement : t.element, b = window.getComputedStyle(v);
1108
+ let E = 0, M = 0;
1109
1109
  if (b.transform && b.transform !== "none") {
1110
- const B = new DOMMatrix(b.transform);
1111
- E = B.m41, A = B.m42;
1110
+ const A = new DOMMatrix(b.transform);
1111
+ E = A.m41, M = A.m42;
1112
1112
  }
1113
- if (e.userData.baseTransform = { x: E, y: A }, delete e.userData.originRatioX, delete e.userData.originRatioY, W.update(
1113
+ if (e.userData.baseTransform = { x: E, y: M }, delete e.userData.originRatioX, delete e.userData.originRatioY, P.update(
1114
1114
  e.userData.baseMaterial,
1115
1115
  "BOX",
1116
1116
  r,
@@ -1118,120 +1118,120 @@ class ot {
1118
1118
  i.width,
1119
1119
  i.height,
1120
1120
  this.qualityFactor,
1121
- t.isTraveler ? (y = this.renderTargets[t.captureLayer - 2]) == null ? void 0 : y.texture : this.textureManager.get(t.element)
1121
+ t.isTraveler ? (w = this.renderTargets[t.captureLayer - 2]) == null ? void 0 : w.texture : this.textureManager.get(t.element)
1122
1122
  ), t.nativeStyles && t.nativeRect) {
1123
1123
  if (!e.userData.nativeMesh) {
1124
- const U = W.create(
1124
+ const _ = P.create(
1125
1125
  "BOX",
1126
1126
  t.nativeStyles,
1127
1127
  "",
1128
1128
  t.nativeRect.width,
1129
1129
  t.nativeRect.height,
1130
1130
  this.qualityFactor,
1131
- t.isTraveler ? (S = this.renderTargets[t.captureLayer - 2]) == null ? void 0 : S.texture : this.textureManager.get(t.element),
1131
+ t.isTraveler ? (x = this.renderTargets[t.captureLayer - 2]) == null ? void 0 : x.texture : t.nativeStyles.imageSrc && t.nativeStyles.imageSrc !== t.styles.imageSrc ? new y.TextureLoader().load(t.nativeStyles.imageSrc) : this.textureManager.get(t.element),
1132
1132
  t.shaderHooks
1133
- ), V = new w.Mesh(e.geometry, U);
1134
- t.type === "TEXT" && (V.name = "BG_MESH"), this.scene.add(V), e.userData.nativeMesh = V;
1133
+ ), W = new y.Mesh(e.geometry, _);
1134
+ t.type === "TEXT" && (W.name = "BG_MESH"), this.scene.add(W), e.userData.nativeMesh = W;
1135
1135
  }
1136
- const B = e.userData.nativeMesh;
1137
- let k, j;
1136
+ const A = e.userData.nativeMesh;
1137
+ let N, B;
1138
1138
  if (this.isViewport)
1139
- k = t.nativeRect.x - window.innerWidth / 2 + t.nativeRect.width / 2, j = -t.nativeRect.y + window.innerHeight / 2 - t.nativeRect.height / 2;
1139
+ N = t.nativeRect.x - window.innerWidth / 2 + t.nativeRect.width / 2, B = -t.nativeRect.y + window.innerHeight / 2 - t.nativeRect.height / 2;
1140
1140
  else {
1141
- const U = t.nativeRect.x - f, V = t.nativeRect.y - h;
1142
- k = U - n / 2 + t.nativeRect.width / 2, j = -V + a / 2 - t.nativeRect.height / 2;
1141
+ const _ = t.nativeRect.x - f, W = t.nativeRect.y - h;
1142
+ N = _ - n / 2 + t.nativeRect.width / 2, B = -W + a / 2 - t.nativeRect.height / 2;
1143
1143
  }
1144
- let J = t.nativeRect.width, Z = t.nativeRect.height, L = k, _ = j;
1144
+ let K = t.nativeRect.width, J = t.nativeRect.height, L = N, U = B;
1145
1145
  if (t.nativeStyles.transform) {
1146
- const U = t.nativeStyles.transform, V = U.match(/scale\(([\d.]+%?)\)/);
1147
- if (V) {
1148
- let x = parseFloat(V[1]);
1149
- V[1].includes("%") && (x /= 100), J *= x, Z *= x;
1150
- }
1151
- const ie = U.match(/scaleX\(([\d.]+%?)\)/);
1152
- if (ie) {
1153
- let x = parseFloat(ie[1]);
1154
- ie[1].includes("%") && (x /= 100), J *= x;
1146
+ const _ = t.nativeStyles.transform, W = _.match(/scale\(([\d.]+%?)\)/);
1147
+ if (W) {
1148
+ let g = parseFloat(W[1]);
1149
+ W[1].includes("%") && (g /= 100), K *= g, J *= g;
1155
1150
  }
1156
- const se = U.match(/scaleY\(([\d.]+%?)\)/);
1151
+ const se = _.match(/scaleX\(([\d.]+%?)\)/);
1157
1152
  if (se) {
1158
- let x = parseFloat(se[1]);
1159
- se[1].includes("%") && (x /= 100), Z *= x;
1153
+ let g = parseFloat(se[1]);
1154
+ se[1].includes("%") && (g /= 100), K *= g;
1160
1155
  }
1161
- const ne = U.match(/translate\(([^,]+),\s*([^)]+)\)/);
1156
+ const ne = _.match(/scaleY\(([\d.]+%?)\)/);
1162
1157
  if (ne) {
1163
- const x = ne[1].trim(), T = ne[2].trim();
1164
- let F = parseFloat(x);
1165
- x.includes("%") && (F = F / 100 * t.nativeRect.width);
1166
- let D = parseFloat(T);
1167
- T.includes("%") && (D = D / 100 * t.nativeRect.height), L += F, _ -= D;
1158
+ let g = parseFloat(ne[1]);
1159
+ ne[1].includes("%") && (g /= 100), J *= g;
1160
+ }
1161
+ const oe = _.match(/translate\(([^,]+),\s*([^)]+)\)/);
1162
+ if (oe) {
1163
+ const g = oe[1].trim(), S = oe[2].trim();
1164
+ let k = parseFloat(g);
1165
+ g.includes("%") && (k = k / 100 * t.nativeRect.width);
1166
+ let O = parseFloat(S);
1167
+ S.includes("%") && (O = O / 100 * t.nativeRect.height), L += k, U -= O;
1168
1168
  }
1169
- const he = U.match(/translateX\(([^)]+)\)/);
1169
+ const he = _.match(/translateX\(([^)]+)\)/);
1170
1170
  if (he) {
1171
- const x = he[1].trim();
1172
- let T = parseFloat(x);
1173
- x.includes("%") && (T = T / 100 * t.nativeRect.width), L += T;
1171
+ const g = he[1].trim();
1172
+ let S = parseFloat(g);
1173
+ g.includes("%") && (S = S / 100 * t.nativeRect.width), L += S;
1174
1174
  }
1175
- const v = U.match(/translateY\(([^)]+)\)/);
1176
- if (v) {
1177
- const x = v[1].trim();
1178
- let T = parseFloat(x);
1179
- x.includes("%") && (T = T / 100 * t.nativeRect.height), _ -= T;
1175
+ const de = _.match(/translateY\(([^)]+)\)/);
1176
+ if (de) {
1177
+ const g = de[1].trim();
1178
+ let S = parseFloat(g);
1179
+ g.includes("%") && (S = S / 100 * t.nativeRect.height), U -= S;
1180
1180
  }
1181
1181
  }
1182
- let K = ((z = B.material.userData) == null ? void 0 : z.shadowPadding) || 0;
1183
- B.scale.set(J + K * 2, Z + K * 2, 1), B.position.set(
1182
+ let Z = ((z = A.material.userData) == null ? void 0 : z.shadowPadding) || 0;
1183
+ A.scale.set(K + Z * 2, J + Z * 2, 1), A.position.set(
1184
1184
  L,
1185
- _,
1185
+ U,
1186
1186
  t.nativeStyles.zIndex + this.renderOrder * o
1187
- ), W.update(
1188
- B.material,
1187
+ ), P.update(
1188
+ A.material,
1189
1189
  "BOX",
1190
1190
  t.nativeStyles,
1191
1191
  "",
1192
1192
  t.nativeRect.width,
1193
1193
  t.nativeRect.height,
1194
1194
  this.qualityFactor,
1195
- t.isTraveler ? (X = this.renderTargets[t.captureLayer - 2]) == null ? void 0 : X.texture : this.textureManager.get(t.element)
1195
+ t.isTraveler ? (Y = this.renderTargets[t.captureLayer - 2]) == null ? void 0 : Y.texture : A.material.uniforms.uTexture.value || this.textureManager.get(t.element)
1196
1196
  );
1197
1197
  } else
1198
- e.userData.nativeMesh && (this.scene.remove(e.userData.nativeMesh), e.userData.nativeMesh.material instanceof w.Material && e.userData.nativeMesh.material.dispose(), delete e.userData.nativeMesh);
1198
+ 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);
1199
1199
  }
1200
1200
  updateMeshLayers(e, t) {
1201
- const i = t.visibility & $ ? O.BASE : O.HIDDEN;
1202
- if (e.layers.set(i), t.visibility & ae && e.layers.enable(O.SELECTED), e.userData.nativeMesh && t.nativeLayer !== void 0) {
1201
+ const i = t.visibility & q ? F.BASE : F.HIDDEN;
1202
+ if (e.layers.set(i), t.visibility & ae && e.layers.enable(F.SELECTED), e.userData.nativeMesh && t.nativeLayer !== void 0) {
1203
1203
  const r = e.userData.nativeMesh;
1204
- if (r.layers.set(O.HIDDEN), t.visibility & $) {
1205
- r.layers.enable(O.getCaptureLayer(t.nativeLayer));
1206
- for (let c = t.captureLayer; c <= N.MAX_LAYERS + 1; c++)
1207
- c !== t.nativeLayer && e.layers.enable(O.getCaptureLayer(c));
1204
+ if (r.layers.set(F.HIDDEN), t.visibility & q) {
1205
+ r.layers.enable(F.getCaptureLayer(t.nativeLayer));
1206
+ for (let c = t.captureLayer; c <= V.MAX_LAYERS + 1; c++)
1207
+ c !== t.nativeLayer && e.layers.enable(F.getCaptureLayer(c));
1208
1208
  }
1209
- } else if (t.visibility & $)
1210
- for (let r = t.captureLayer; r <= N.MAX_LAYERS + 1; r++)
1211
- e.layers.enable(O.getCaptureLayer(r));
1209
+ } else if (t.visibility & q)
1210
+ for (let r = t.captureLayer; r <= V.MAX_LAYERS + 1; r++)
1211
+ e.layers.enable(F.getCaptureLayer(r));
1212
1212
  }
1213
1213
  captureRenderTarget(e, t, i) {
1214
1214
  if (e.size === 0 || !i)
1215
1215
  return;
1216
- const r = new w.Color(), c = this.renderer.getClearAlpha();
1216
+ const r = new y.Color(), c = this.renderer.getClearAlpha();
1217
1217
  this.renderer.getClearColor(r), this.renderer.setClearColor(0, 0), this.renderer.setRenderTarget(i), this.renderer.clear(), this.renderer.autoClear = !1, this.renderer.setScissorTest(!0), this.camera.layers.set(t);
1218
- const n = new w.Vector3(), a = this.isViewport ? window.innerWidth + this.overscan * 2 : this.targetRect.width, l = this.isViewport ? window.innerHeight + this.overscan * 2 : this.targetRect.height, o = this.renderer.getPixelRatio();
1218
+ const n = new y.Vector3(), a = this.isViewport ? window.innerWidth + this.overscan * 2 : this.targetRect.width, l = this.isViewport ? window.innerHeight + this.overscan * 2 : this.targetRect.height, o = this.renderer.getPixelRatio();
1219
1219
  for (const f of e) {
1220
1220
  n.setFromMatrixPosition(f.matrixWorld), n.project(this.camera);
1221
1221
  const h = (n.x + 1) / 2 * a, d = (n.y + 1) / 2 * l;
1222
- let p = 0, g = 1;
1223
- typeof this.clipArea == "number" ? g = this.clipArea : this.clipArea.endsWith("%") ? g = parseFloat(this.clipArea) / 100 : this.clipArea.endsWith("px") && (p = parseFloat(this.clipArea));
1224
- const M = f.scale.x * g + 0.5, m = f.scale.y * g + 0.5, b = h - M / 2, E = d - m / 2, A = (b * this.qualityFactor - p) / o, C = (E * this.qualityFactor - p) / o, y = (M * this.qualityFactor + p * 2) / o, S = (m * this.qualityFactor + p * 2) / o;
1225
- this.renderer.setScissor(A, C, y, S), this.renderer.render(this.scene, this.camera);
1222
+ let m = 0, p = 1;
1223
+ typeof this.clipArea == "number" ? p = this.clipArea : this.clipArea.endsWith("%") ? p = parseFloat(this.clipArea) / 100 : this.clipArea.endsWith("px") && (m = parseFloat(this.clipArea));
1224
+ const R = f.scale.x * p + 0.5, v = f.scale.y * p + 0.5, b = h - R / 2, E = d - v / 2, M = (b * this.qualityFactor - m) / o, C = (E * this.qualityFactor - m) / o, w = (R * this.qualityFactor + m * 2) / o, x = (v * this.qualityFactor + m * 2) / o;
1225
+ this.renderer.setScissor(M, C, w, x), this.renderer.render(this.scene, this.camera);
1226
1226
  }
1227
1227
  this.renderer.setScissorTest(!1), this.renderer.autoClear = !0, this.renderer.setRenderTarget(null), this.camera.layers.set(this.getSceneLayer()), this.renderer.setClearColor(r, c);
1228
1228
  }
1229
1229
  render() {
1230
- for (let l = 0; l < N.MAX_LAYERS; l++) {
1230
+ for (let l = 0; l < V.MAX_LAYERS; l++) {
1231
1231
  const o = l + 1;
1232
1232
  this.captureRenderTarget(
1233
1233
  this.travelersByLayer[l],
1234
- O.getCaptureLayer(o),
1234
+ F.getCaptureLayer(o),
1235
1235
  this.renderTargets[l]
1236
1236
  );
1237
1237
  }
@@ -1239,9 +1239,9 @@ class ot {
1239
1239
  if (o && o.width > 0 && o.height > 0) {
1240
1240
  const f = Math.floor((o.x - n) * t), h = Math.floor(
1241
1241
  (i - (o.y - c + o.height)) * t
1242
- ), d = Math.ceil(o.width * t), p = Math.ceil(o.height * t);
1242
+ ), d = Math.ceil(o.width * t), m = Math.ceil(o.height * t);
1243
1243
  l.onBeforeRender = () => {
1244
- e.enable(e.SCISSOR_TEST), e.scissor(f, h, d, p);
1244
+ e.enable(e.SCISSOR_TEST), e.scissor(f, h, d, m);
1245
1245
  }, l.onAfterRender = () => {
1246
1246
  e.disable(e.SCISSOR_TEST);
1247
1247
  }, l.__hasScissorHook = !0;
@@ -1270,8 +1270,8 @@ class ot {
1270
1270
  return;
1271
1271
  let o;
1272
1272
  if (l.nodeType === Node.TEXT_NODE) {
1273
- const p = document.createRange();
1274
- p.selectNode(l), o = p.getBoundingClientRect();
1273
+ const m = document.createRange();
1274
+ m.selectNode(l), o = m.getBoundingClientRect();
1275
1275
  } else
1276
1276
  o = l.getBoundingClientRect();
1277
1277
  const f = a.userData.domRect;
@@ -1282,96 +1282,96 @@ class ot {
1282
1282
  width: o.width,
1283
1283
  height: o.height
1284
1284
  };
1285
- const p = a.userData.clipElements;
1286
- if (p && p.length > 0) {
1287
- let b = -1 / 0, E = -1 / 0, A = 1 / 0, C = 1 / 0;
1288
- for (const y of p) {
1289
- const S = y.getBoundingClientRect();
1290
- b = Math.max(b, S.left), E = Math.max(E, S.top), A = Math.min(A, S.right), C = Math.min(C, S.bottom);
1285
+ const m = a.userData.clipElements;
1286
+ if (m && m.length > 0) {
1287
+ let b = -1 / 0, E = -1 / 0, M = 1 / 0, C = 1 / 0;
1288
+ for (const w of m) {
1289
+ const x = w.getBoundingClientRect();
1290
+ b = Math.max(b, x.left), E = Math.max(E, x.top), M = Math.min(M, x.right), C = Math.min(C, x.bottom);
1291
1291
  }
1292
1292
  a.userData.scissorRect = {
1293
1293
  x: b,
1294
1294
  y: E,
1295
- width: Math.max(0, A - b),
1295
+ width: Math.max(0, M - b),
1296
1296
  height: Math.max(0, C - E)
1297
1297
  };
1298
1298
  } else
1299
1299
  a.userData.scissorRect = void 0;
1300
- let g, M;
1300
+ let p, R;
1301
1301
  if (this.isViewport)
1302
- g = o.x - window.innerWidth / 2 + o.width / 2, M = -o.y + window.innerHeight / 2 - o.height / 2;
1302
+ p = o.x - window.innerWidth / 2 + o.width / 2, R = -o.y + window.innerHeight / 2 - o.height / 2;
1303
1303
  else {
1304
1304
  const b = o.x - e, E = o.y - t;
1305
- g = b - r / 2 + o.width / 2, M = -E + c / 2 - o.height / 2;
1305
+ p = b - r / 2 + o.width / 2, R = -E + c / 2 - o.height / 2;
1306
1306
  }
1307
- a.position.setX(g), a.position.setY(M);
1308
- let m = ((h = a.material.userData) == null ? void 0 : h.shadowPadding) || 0;
1309
- if (a.scale.set(o.width + m * 2, o.height + m * 2, 1), a.updateMatrixWorld(), a.material instanceof w.ShaderMaterial && W.forceUpdateUniforms(a.material, {
1307
+ a.position.setX(p), a.position.setY(R);
1308
+ let v = ((h = a.material.userData) == null ? void 0 : h.shadowPadding) || 0;
1309
+ if (a.scale.set(o.width + v * 2, o.height + v * 2, 1), a.updateMatrixWorld(), a.material instanceof y.ShaderMaterial && P.forceUpdateUniforms(a.material, {
1310
1310
  width: o.width,
1311
1311
  height: o.height
1312
1312
  }), a.userData.nativeMesh) {
1313
1313
  const b = a.userData.nativeMesh;
1314
- let E = o.width, A = o.height, C = g, y = M;
1314
+ let E = o.width, M = o.height, C = p, w = R;
1315
1315
  if (a.userData.nativeTransform) {
1316
- const z = a.userData.nativeTransform, X = z.match(/scale\(([\d.]+%?)\)/);
1317
- if (X) {
1318
- let L = parseFloat(X[1]);
1319
- X[1].includes("%") && (L /= 100), E *= L, A *= L;
1316
+ const z = a.userData.nativeTransform, Y = z.match(/scale\(([\d.]+%?)\)/);
1317
+ if (Y) {
1318
+ let L = parseFloat(Y[1]);
1319
+ Y[1].includes("%") && (L /= 100), E *= L, M *= L;
1320
1320
  }
1321
- const B = z.match(/scaleX\(([\d.]+%?)\)/);
1322
- if (B) {
1323
- let L = parseFloat(B[1]);
1324
- B[1].includes("%") && (L /= 100), E *= L;
1321
+ const A = z.match(/scaleX\(([\d.]+%?)\)/);
1322
+ if (A) {
1323
+ let L = parseFloat(A[1]);
1324
+ A[1].includes("%") && (L /= 100), E *= L;
1325
1325
  }
1326
- const k = z.match(/scaleY\(([\d.]+%?)\)/);
1327
- if (k) {
1328
- let L = parseFloat(k[1]);
1329
- k[1].includes("%") && (L /= 100), A *= L;
1326
+ const N = z.match(/scaleY\(([\d.]+%?)\)/);
1327
+ if (N) {
1328
+ let L = parseFloat(N[1]);
1329
+ N[1].includes("%") && (L /= 100), M *= L;
1330
1330
  }
1331
- const j = z.match(/translate\(([^,]+),\s*([^)]+)\)/);
1332
- if (j) {
1333
- const L = j[1].trim(), _ = j[2].trim();
1334
- let K = parseFloat(L);
1335
- L.includes("%") && (K = K / 100 * o.width);
1336
- let U = parseFloat(_);
1337
- _.includes("%") && (U = U / 100 * o.height), C += K, y -= U;
1331
+ const B = z.match(/translate\(([^,]+),\s*([^)]+)\)/);
1332
+ if (B) {
1333
+ const L = B[1].trim(), U = B[2].trim();
1334
+ let Z = parseFloat(L);
1335
+ L.includes("%") && (Z = Z / 100 * o.width);
1336
+ let _ = parseFloat(U);
1337
+ U.includes("%") && (_ = _ / 100 * o.height), C += Z, w -= _;
1338
1338
  }
1339
- const J = z.match(/translateX\(([^)]+)\)/);
1339
+ const K = z.match(/translateX\(([^)]+)\)/);
1340
+ if (K) {
1341
+ const L = K[1].trim();
1342
+ let U = parseFloat(L);
1343
+ L.includes("%") && (U = U / 100 * o.width), C += U;
1344
+ }
1345
+ const J = z.match(/translateY\(([^)]+)\)/);
1340
1346
  if (J) {
1341
1347
  const L = J[1].trim();
1342
- let _ = parseFloat(L);
1343
- L.includes("%") && (_ = _ / 100 * o.width), C += _;
1344
- }
1345
- const Z = z.match(/translateY\(([^)]+)\)/);
1346
- if (Z) {
1347
- const L = Z[1].trim();
1348
- let _ = parseFloat(L);
1349
- L.includes("%") && (_ = _ / 100 * o.height), y -= _;
1348
+ let U = parseFloat(L);
1349
+ L.includes("%") && (U = U / 100 * o.height), w -= U;
1350
1350
  }
1351
1351
  }
1352
- let S = ((d = b.material.userData) == null ? void 0 : d.shadowPadding) || 0;
1353
- b.position.setX(C), b.position.setY(y), b.scale.set(E + S * 2, A + S * 2, 1), b.updateMatrixWorld(), b.material instanceof w.ShaderMaterial && W.forceUpdateUniforms(b.material, {
1352
+ let x = ((d = b.material.userData) == null ? void 0 : d.shadowPadding) || 0;
1353
+ b.position.setX(C), b.position.setY(w), b.scale.set(E + x * 2, M + x * 2, 1), b.updateMatrixWorld(), b.material instanceof y.ShaderMaterial && P.forceUpdateUniforms(b.material, {
1354
1354
  width: E,
1355
- height: A
1355
+ height: M
1356
1356
  });
1357
1357
  }
1358
1358
  }
1359
1359
  });
1360
1360
  }
1361
1361
  }
1362
- function at(s) {
1362
+ function ht(s) {
1363
1363
  const e = s.textContent || "", t = [];
1364
1364
  let i = "", r = null, c = -1;
1365
1365
  const n = (o, f) => {
1366
1366
  for (let h = 0; h < o.length; h++) {
1367
- const d = o[h], p = document.createRange();
1368
- p.setStart(s, f + h), p.setEnd(s, f + h + 1);
1369
- const g = p.getBoundingClientRect();
1370
- if (g.width === 0 && g.height === 0) {
1367
+ const d = o[h], m = document.createRange();
1368
+ m.setStart(s, f + h), m.setEnd(s, f + h + 1);
1369
+ const p = m.getBoundingClientRect();
1370
+ if (p.width === 0 && p.height === 0) {
1371
1371
  i += d;
1372
1372
  continue;
1373
1373
  }
1374
- c === -1 || Math.abs(g.top - c) > g.height / 2 ? (i && r && t.push({
1374
+ c === -1 || Math.abs(p.top - c) > p.height / 2 ? (i && r && t.push({
1375
1375
  text: i,
1376
1376
  rect: {
1377
1377
  left: r.left,
@@ -1380,13 +1380,13 @@ function at(s) {
1380
1380
  height: r.bottom - r.top
1381
1381
  }
1382
1382
  }), i = d, r = {
1383
- left: g.left,
1384
- top: g.top,
1385
- right: g.right,
1386
- bottom: g.bottom
1387
- }, c = g.top) : (i += d, r && (r.left = Math.min(r.left, g.left), r.top = Math.min(r.top, g.top), r.right = Math.max(r.right, g.right), r.bottom = Math.max(
1383
+ left: p.left,
1384
+ top: p.top,
1385
+ right: p.right,
1386
+ bottom: p.bottom
1387
+ }, c = p.top) : (i += d, r && (r.left = Math.min(r.left, p.left), r.top = Math.min(r.top, p.top), r.right = Math.max(r.right, p.right), r.bottom = Math.max(
1388
1388
  r.bottom,
1389
- g.bottom
1389
+ p.bottom
1390
1390
  )));
1391
1391
  }
1392
1392
  }, a = e.match(/[^\s\-]+\-?|\-|\s+/g) || [];
@@ -1435,7 +1435,7 @@ function at(s) {
1435
1435
  (o) => o.text.trim().length > 0 && o.rect.width > 0 && o.rect.height > 0
1436
1436
  );
1437
1437
  }
1438
- function ke(s) {
1438
+ function Ue(s) {
1439
1439
  const e = parseFloat(s.fontSize);
1440
1440
  let t = parseFloat(s.lineHeight);
1441
1441
  isNaN(t) && (t = e * 1.2);
@@ -1451,74 +1451,74 @@ function ke(s) {
1451
1451
  letterSpacing: i
1452
1452
  };
1453
1453
  }
1454
- function Fe(s, e = re | ue | $e | be | pe, t, i = 1, r = 0, c = 2, n, a, l) {
1455
- var K, U, V, ie, se, ne, he;
1454
+ function Xe(s, e = ie | fe | je | Se | me, t, i = 1, r = 0, c = 2, n, a, l) {
1455
+ var _, W, se, ne, oe, he, de;
1456
1456
  if (s.nodeType === Node.TEXT_NODE) {
1457
- const v = s;
1458
- if (!v.textContent || !v.textContent.trim())
1457
+ const g = s;
1458
+ if (!g.textContent || !g.textContent.trim())
1459
1459
  return null;
1460
- const x = v.textContent.replace(/\s+/g, " ");
1461
- if (x.length === 0)
1460
+ const S = g.textContent.replace(/\s+/g, " ");
1461
+ if (S.length === 0)
1462
1462
  return null;
1463
- const T = at(v);
1464
- if (T.length === 0)
1463
+ const k = ht(g);
1464
+ if (k.length === 0)
1465
1465
  return null;
1466
- const F = v.parentElement, D = F ? window.getComputedStyle(F) : null;
1467
- if (!D)
1466
+ const O = g.parentElement, I = O ? window.getComputedStyle(O) : null;
1467
+ if (!I)
1468
1468
  return null;
1469
- const G = Math.min(...T.map((R) => R.rect.left)), Y = Math.min(...T.map((R) => R.rect.top)), Q = Math.max(...T.map((R) => R.rect.left + R.rect.width)), I = Math.max(...T.map((R) => R.rect.top + R.rect.height));
1469
+ const H = Math.min(...k.map((T) => T.rect.left)), X = Math.min(...k.map((T) => T.rect.top)), Q = Math.max(...k.map((T) => T.rect.left + T.rect.width)), D = Math.max(...k.map((T) => T.rect.top + T.rect.height));
1470
1470
  return {
1471
1471
  id: Math.random().toString(36).substring(2, 9),
1472
1472
  type: "TEXT",
1473
- element: v,
1473
+ element: g,
1474
1474
  rect: {
1475
- x: G + window.scrollX,
1476
- y: Y + window.scrollY,
1477
- width: Q - G,
1478
- height: I - Y
1475
+ x: H + window.scrollX,
1476
+ y: X + window.scrollY,
1477
+ width: Q - H,
1478
+ height: D - X
1479
1479
  },
1480
1480
  styles: {
1481
1481
  backgroundColor: "transparent",
1482
1482
  backgroundImage: "",
1483
- opacity: F && F.dataset[ee.KEY] === ee.VALUES.HIDE ? 1 : parseFloat(D.opacity),
1484
- zIndex: (isNaN(parseInt(D.zIndex)) ? 0 : parseInt(D.zIndex)) + r,
1483
+ opacity: O && O.dataset[te.KEY] === te.VALUES.HIDE ? 1 : parseFloat(I.opacity),
1484
+ zIndex: (isNaN(parseInt(I.zIndex)) ? 0 : parseInt(I.zIndex)) + r,
1485
1485
  borderRadius: "0px",
1486
1486
  borderColor: "transparent",
1487
1487
  borderWidth: "0px",
1488
1488
  isTraveler: !1
1489
1489
  },
1490
- textContent: x,
1491
- textLines: T.map((R) => ({
1492
- text: R.text.trim(),
1490
+ textContent: S,
1491
+ textLines: k.map((T) => ({
1492
+ text: T.text.trim(),
1493
1493
  rect: {
1494
- x: R.rect.left + window.scrollX,
1495
- y: R.rect.top + window.scrollY,
1496
- width: R.rect.width,
1497
- height: R.rect.height
1494
+ x: T.rect.left + window.scrollX,
1495
+ y: T.rect.top + window.scrollY,
1496
+ width: T.rect.width,
1497
+ height: T.rect.height
1498
1498
  }
1499
1499
  })),
1500
- textStyles: ke(D),
1500
+ textStyles: Ue(I),
1501
1501
  dirtyMask: e,
1502
1502
  visibility: t,
1503
1503
  isTraveler: !1,
1504
1504
  captureLayer: i,
1505
- isFixed: D.position === "fixed",
1505
+ isFixed: I.position === "fixed",
1506
1506
  nativeLayer: n,
1507
- nativeStyles: a ? te(te({
1507
+ nativeStyles: a ? re(re({
1508
1508
  backgroundColor: "transparent",
1509
1509
  backgroundImage: "",
1510
- opacity: F && F.dataset[ee.KEY] === ee.VALUES.HIDE ? 1 : parseFloat(D.opacity),
1511
- zIndex: (isNaN(parseInt(D.zIndex)) ? 0 : parseInt(D.zIndex)) + r,
1510
+ opacity: O && O.dataset[te.KEY] === te.VALUES.HIDE ? 1 : parseFloat(I.opacity),
1511
+ zIndex: (isNaN(parseInt(I.zIndex)) ? 0 : parseInt(I.zIndex)) + r,
1512
1512
  borderRadius: "0px",
1513
1513
  borderColor: "transparent",
1514
1514
  borderWidth: "0px",
1515
1515
  isTraveler: !1
1516
- }, ke(D)), a) : void 0,
1516
+ }, Ue(I)), a) : void 0,
1517
1517
  nativeRect: a ? {
1518
- x: G + window.scrollX,
1519
- y: Y + window.scrollY,
1520
- width: Q - G,
1521
- height: I - Y
1518
+ x: H + window.scrollX,
1519
+ y: X + window.scrollY,
1520
+ width: Q - H,
1521
+ height: D - X
1522
1522
  } : void 0,
1523
1523
  clipElements: l,
1524
1524
  children: []
@@ -1526,162 +1526,165 @@ function Fe(s, e = re | ue | $e | be | pe, t, i = 1, r = 0, c = 2, n, a, l) {
1526
1526
  }
1527
1527
  if (s.nodeType !== Node.ELEMENT_NODE)
1528
1528
  return null;
1529
- const o = s, f = o.dataset[P.KEY];
1529
+ const o = s, f = o.dataset[G.KEY];
1530
1530
  let h = t, d = t;
1531
1531
  if (f) {
1532
- const v = new Set(f.split(/\s+/));
1533
- for (const x of v)
1534
- if (!Me.includes(x))
1532
+ const g = new Set(f.split(/\s+/));
1533
+ for (const S of g)
1534
+ if (!ke.includes(S))
1535
1535
  throw new Error(
1536
- `[MirageEngine] Invalid filter token: '${x}'. Expected one of: 'include-tree', 'exclude-tree', 'include-self', 'exclude-self', 'end'.`
1536
+ `[MirageEngine] Invalid filter token: '${S}'. Expected one of: 'include-tree', 'exclude-tree', 'include-self', 'exclude-self', 'end'.`
1537
1537
  );
1538
- if (v.has(P.VALUES.END))
1538
+ if (g.has(G.VALUES.END))
1539
1539
  return null;
1540
- if (v.has(P.VALUES.INCLUDE_TREE) && v.has(P.VALUES.EXCLUDE_TREE))
1540
+ if (g.has(G.VALUES.INCLUDE_TREE) && g.has(G.VALUES.EXCLUDE_TREE))
1541
1541
  throw new Error(
1542
1542
  "[MirageEngine] Conflicting filters: 'include-tree' and 'exclude-tree' cannot be used together on the same element."
1543
1543
  );
1544
- if (v.has(P.VALUES.INCLUDE_SELF) && v.has(P.VALUES.EXCLUDE_SELF))
1544
+ if (g.has(G.VALUES.INCLUDE_SELF) && g.has(G.VALUES.EXCLUDE_SELF))
1545
1545
  throw new Error(
1546
1546
  "[MirageEngine] Conflicting filters: 'include-self' and 'exclude-self' cannot be used together on the same element."
1547
1547
  );
1548
- v.has(P.VALUES.INCLUDE_TREE) ? h = h | $ : v.has(P.VALUES.EXCLUDE_TREE) && (h = h & ~$), d = h, v.has(P.VALUES.INCLUDE_SELF) ? d = d | $ : v.has(P.VALUES.EXCLUDE_SELF) && (d = d & ~$);
1548
+ g.has(G.VALUES.INCLUDE_TREE) ? h = h | q : g.has(G.VALUES.EXCLUDE_TREE) && (h = h & ~q), d = h, g.has(G.VALUES.INCLUDE_SELF) ? d = d | q : g.has(G.VALUES.EXCLUDE_SELF) && (d = d & ~q);
1549
1549
  }
1550
- const p = o.dataset[q.KEY];
1551
- if (p) {
1552
- const v = new Set(p.split(/\s+/));
1553
- for (const x of v)
1554
- if (!Me.includes(x))
1550
+ const m = o.dataset[j.KEY];
1551
+ if (m) {
1552
+ const g = new Set(m.split(/\s+/));
1553
+ for (const S of g)
1554
+ if (!ke.includes(S))
1555
1555
  throw new Error(
1556
- `[MirageEngine] Invalid select token: '${x}'. Expected one of: 'include-tree', 'exclude-tree', 'include-self', 'exclude-self', 'end'.`
1556
+ `[MirageEngine] Invalid select token: '${S}'. Expected one of: 'include-tree', 'exclude-tree', 'include-self', 'exclude-self', 'end'.`
1557
1557
  );
1558
- if (v.has(q.VALUES.END))
1558
+ if (g.has(j.VALUES.END))
1559
1559
  return null;
1560
- if (v.has(q.VALUES.INCLUDE_TREE) && v.has(q.VALUES.EXCLUDE_TREE))
1560
+ if (g.has(j.VALUES.INCLUDE_TREE) && g.has(j.VALUES.EXCLUDE_TREE))
1561
1561
  throw new Error(
1562
1562
  "[MirageEngine] Conflicting selects: 'include-tree' and 'exclude-tree' cannot be used together on the same element."
1563
1563
  );
1564
- if (v.has(q.VALUES.INCLUDE_SELF) && v.has(q.VALUES.EXCLUDE_SELF))
1564
+ if (g.has(j.VALUES.INCLUDE_SELF) && g.has(j.VALUES.EXCLUDE_SELF))
1565
1565
  throw new Error(
1566
1566
  "[MirageEngine] Conflicting selects: 'include-self' and 'exclude-self' cannot be used together on the same element."
1567
1567
  );
1568
- v.has(q.VALUES.INCLUDE_TREE) ? h = h | ae : v.has(q.VALUES.EXCLUDE_TREE) && (h = h & ~ae), d = h, v.has(q.VALUES.INCLUDE_SELF) ? d = d | ae : v.has(q.VALUES.EXCLUDE_SELF) && (d = d & ~ae);
1569
- }
1570
- const g = o.dataset[N.KEY];
1571
- let M = !1, m = a ? te({}, a) : {}, b = n;
1572
- if (g) {
1573
- let v = 1;
1574
- const x = g.indexOf("{"), T = g.lastIndexOf("}");
1575
- let F = g;
1576
- if (x !== -1 && T !== -1 && T > x) {
1577
- F = g.substring(0, x).trim();
1578
- const I = g.substring(x, T + 1);
1568
+ g.has(j.VALUES.INCLUDE_TREE) ? h = h | ae : g.has(j.VALUES.EXCLUDE_TREE) && (h = h & ~ae), d = h, g.has(j.VALUES.INCLUDE_SELF) ? d = d | ae : g.has(j.VALUES.EXCLUDE_SELF) && (d = d & ~ae);
1569
+ }
1570
+ const p = o.dataset[V.KEY];
1571
+ let R = !1, v = a ? re({}, a) : {}, b = n;
1572
+ if (p) {
1573
+ let g = 1;
1574
+ const S = p.indexOf("{"), k = p.lastIndexOf("}");
1575
+ let O = p;
1576
+ if (S !== -1 && k !== -1 && k > S) {
1577
+ O = p.substring(0, S).trim();
1578
+ const D = p.substring(S, k + 1);
1579
1579
  try {
1580
- m = new Function("return " + I)();
1581
- } catch (R) {
1580
+ v = new Function("return " + D)();
1581
+ } catch (T) {
1582
1582
  console.warn(
1583
- `[MirageEngine] Failed to parse travel styles JSON: ${I}`
1583
+ `[MirageEngine] Failed to parse travel styles JSON: ${D}`
1584
1584
  );
1585
1585
  }
1586
1586
  }
1587
- const D = F.split(/\s+/);
1588
- let G = !1;
1589
- const Y = D.indexOf(N.VALUES.TRAVELER);
1590
- if (Y !== -1) {
1591
- M = !0, G = !0;
1592
- const I = D[Y + 1];
1593
- if (I && !isNaN(parseInt(I, 10)))
1594
- v = parseInt(I, 10);
1587
+ const I = O.split(/\s+/);
1588
+ let H = !1;
1589
+ const X = I.indexOf(V.VALUES.TRAVELER);
1590
+ if (X !== -1) {
1591
+ R = !0, H = !0;
1592
+ const D = I[X + 1];
1593
+ if (D && !isNaN(parseInt(D, 10)))
1594
+ g = parseInt(D, 10);
1595
1595
  else {
1596
- const R = D.find((oe) => !isNaN(parseInt(oe, 10)));
1597
- R && (v = parseInt(R, 10));
1596
+ const T = I.find((ee) => !isNaN(parseInt(ee, 10)));
1597
+ T && (g = parseInt(T, 10));
1598
1598
  }
1599
1599
  }
1600
- const Q = D.indexOf(N.VALUES.NATIVE);
1600
+ const Q = I.indexOf(V.VALUES.NATIVE);
1601
1601
  if (Q !== -1) {
1602
- const I = D[Q + 1];
1603
- if (I && !isNaN(parseInt(I, 10)))
1604
- b = parseInt(I, 10);
1605
- else if (!M) {
1606
- const R = D.find((oe) => !isNaN(parseInt(oe, 10)));
1607
- R && (b = parseInt(R, 10));
1602
+ const D = I[Q + 1];
1603
+ if (D && !isNaN(parseInt(D, 10)))
1604
+ b = parseInt(D, 10);
1605
+ else if (!R) {
1606
+ const T = I.find((ee) => !isNaN(parseInt(ee, 10)));
1607
+ T && (b = parseInt(T, 10));
1608
1608
  }
1609
1609
  }
1610
- if (G) {
1611
- const I = v + 1;
1612
- if (I < i)
1610
+ if (H) {
1611
+ const D = g + 1;
1612
+ if (D < i)
1613
1613
  throw new Error(
1614
- `[MirageEngine] Traveler layer (${v}) cannot be smaller than inherited capture layer (${i - 1}).`
1614
+ `[MirageEngine] Traveler layer (${g}) cannot be smaller than inherited capture layer (${i - 1}).`
1615
1615
  );
1616
- i = Math.min(I, N.MAX_LAYERS + 1);
1616
+ i = Math.min(D, V.MAX_LAYERS + 1);
1617
1617
  }
1618
1618
  }
1619
- const E = o.dataset[Pe.KEY];
1620
- let A;
1621
- E && (A = JSON.parse(E));
1622
- const C = o.getBoundingClientRect(), y = window.getComputedStyle(o);
1623
- if (C.width === 0 || C.height === 0 || y.display === "none")
1619
+ const E = o.dataset[qe.KEY];
1620
+ let M;
1621
+ E && (M = JSON.parse(E));
1622
+ const C = o.getBoundingClientRect(), w = window.getComputedStyle(o);
1623
+ if (C.width === 0 || C.height === 0 || w.display === "none")
1624
1624
  return null;
1625
- let S = o.getAttribute("data-mid");
1626
- S || (S = Math.random().toString(36).substring(2, 11), o.setAttribute("data-mid", S));
1627
- const z = parseInt(y.zIndex), X = (isNaN(z) ? 0 : z) + r;
1628
- let B;
1625
+ let x = o.getAttribute("data-mid");
1626
+ x || (x = Math.random().toString(36).substring(2, 11), o.setAttribute("data-mid", x));
1627
+ const z = parseInt(w.zIndex), Y = (isNaN(z) ? 0 : z) + r;
1628
+ let A, N;
1629
1629
  if (o.tagName === "IMG")
1630
- B = o.src;
1630
+ A = o.src;
1631
1631
  else if (o.tagName.toLowerCase() === "svg") {
1632
- const v = o.cloneNode(!0), x = m == null ? void 0 : m.color, T = m == null ? void 0 : m.fill, F = m == null ? void 0 : m.stroke, D = m == null ? void 0 : m.opacity, G = (R, oe) => {
1633
- const H = window.getComputedStyle(R), de = oe, ze = H.fill === H.color, Ne = H.stroke === H.color, me = T || (ze ? x : void 0) || H.fill;
1634
- me && me !== "none" && (de.style.fill = me);
1635
- const ve = F || (Ne ? x : void 0) || H.stroke;
1636
- ve && ve !== "none" && (de.style.stroke = ve), H.strokeWidth && H.strokeWidth !== "0px" && (de.style.strokeWidth = H.strokeWidth);
1637
- const Se = x || H.color;
1638
- Se && (de.style.color = Se);
1639
- const we = D || H.opacity;
1640
- we && we !== "1" && (de.style.opacity = we);
1641
- for (let fe = 0; fe < R.children.length; fe++)
1642
- G(R.children[fe], oe.children[fe]);
1632
+ const g = v == null ? void 0 : v.color, S = v == null ? void 0 : v.fill, k = v == null ? void 0 : v.stroke, O = v == null ? void 0 : v.opacity, I = (H) => {
1633
+ const X = o.cloneNode(!0), Q = (ve, Ce) => {
1634
+ const $ = window.getComputedStyle(ve), ue = Ce, Ve = $.fill === $.color, Ye = $.stroke === $.color, ye = (H ? S || (Ve ? g : void 0) : void 0) || $.fill;
1635
+ ye && ye !== "none" && (ue.style.fill = ye);
1636
+ const we = (H ? k || (Ye ? g : void 0) : void 0) || $.stroke;
1637
+ we && we !== "none" && (ue.style.stroke = we), $.strokeWidth && $.strokeWidth !== "0px" && (ue.style.strokeWidth = $.strokeWidth);
1638
+ const Te = (H ? g : void 0) || $.color;
1639
+ Te && (ue.style.color = Te);
1640
+ const be = (H ? O : void 0) || $.opacity;
1641
+ be && be !== "1" && (ue.style.opacity = be);
1642
+ for (let ge = 0; ge < ve.children.length; ge++)
1643
+ Q(ve.children[ge], Ce.children[ge]);
1644
+ };
1645
+ Q(o, X);
1646
+ const D = o.getBoundingClientRect(), T = window.devicePixelRatio * c;
1647
+ X.hasAttribute("viewBox") || X.setAttribute("viewBox", `0 0 ${D.width} ${D.height}`), X.setAttribute("width", (D.width * T).toString()), X.setAttribute("height", (D.height * T).toString());
1648
+ let ee = new XMLSerializer().serializeToString(X);
1649
+ return ee.includes("xmlns=") || (ee = ee.replace(
1650
+ "<svg",
1651
+ '<svg xmlns="http://www.w3.org/2000/svg"'
1652
+ )), `data:image/svg+xml;utf8,${encodeURIComponent(ee)}`;
1643
1653
  };
1644
- G(o, v);
1645
- const Y = o.getBoundingClientRect(), Q = window.devicePixelRatio * c;
1646
- v.hasAttribute("viewBox") || v.setAttribute("viewBox", `0 0 ${Y.width} ${Y.height}`), v.setAttribute("width", (Y.width * Q).toString()), v.setAttribute("height", (Y.height * Q).toString());
1647
- let I = new XMLSerializer().serializeToString(v);
1648
- I.includes("xmlns=") || (I = I.replace(
1649
- "<svg",
1650
- '<svg xmlns="http://www.w3.org/2000/svg"'
1651
- )), B = `data:image/svg+xml;utf8,${encodeURIComponent(I)}`;
1652
- } else if (y.backgroundImage && y.backgroundImage !== "none") {
1653
- const v = y.backgroundImage.match(/url\(['"]?(.*?)['"]?\)/);
1654
- v && (B = v[1]);
1655
- }
1656
- const k = {
1657
- backgroundColor: y.backgroundColor,
1658
- backgroundImage: y.backgroundImage,
1659
- opacity: o.dataset[ee.KEY] === ee.VALUES.HIDE ? 1 : parseFloat(y.opacity),
1660
- zIndex: X,
1661
- borderRadius: y.borderRadius,
1662
- borderColor: y.borderColor,
1663
- borderWidth: y.borderWidth,
1664
- boxShadow: y.boxShadow,
1665
- imageSrc: B,
1666
- isTraveler: M
1667
- }, j = k;
1668
- let J, Z;
1669
- const L = [], _ = y.overflow === "hidden" ? [...l || [], o] : l;
1670
- return o.tagName.toLowerCase() !== "svg" && Array.from(o.childNodes).forEach((v) => {
1671
- const x = v.nodeType === Node.TEXT_NODE ? d : h, T = Fe(
1672
- v,
1654
+ A = I(!1), b !== void 0 && (g || S || k || O) && (N = I(!0));
1655
+ } else if (w.backgroundImage && w.backgroundImage !== "none") {
1656
+ const g = w.backgroundImage.match(/url\(['"]?(.*?)['"]?\)/);
1657
+ g && (A = g[1]);
1658
+ }
1659
+ const B = {
1660
+ backgroundColor: w.backgroundColor,
1661
+ backgroundImage: w.backgroundImage,
1662
+ opacity: o.dataset[te.KEY] === te.VALUES.HIDE ? 1 : parseFloat(w.opacity),
1663
+ zIndex: Y,
1664
+ borderRadius: w.borderRadius,
1665
+ borderColor: w.borderColor,
1666
+ borderWidth: w.borderWidth,
1667
+ boxShadow: w.boxShadow,
1668
+ imageSrc: A,
1669
+ isTraveler: R
1670
+ }, K = B;
1671
+ let J, L;
1672
+ const U = [], Z = w.overflow === "hidden" ? [...l || [], o] : l;
1673
+ return o.tagName.toLowerCase() !== "svg" && Array.from(o.childNodes).forEach((g) => {
1674
+ const S = g.nodeType === Node.TEXT_NODE ? d : h, k = Xe(
1675
+ g,
1673
1676
  e,
1674
- x,
1677
+ S,
1675
1678
  i,
1676
- X,
1679
+ Y,
1677
1680
  c,
1678
- v.nodeType === Node.TEXT_NODE ? b : void 0,
1679
- v.nodeType === Node.TEXT_NODE && Object.keys(m).length > 0 ? m : void 0,
1680
- _
1681
+ g.nodeType === Node.TEXT_NODE ? b : void 0,
1682
+ g.nodeType === Node.TEXT_NODE && Object.keys(v).length > 0 ? v : void 0,
1683
+ Z
1681
1684
  );
1682
- T && L.push(T);
1685
+ k && U.push(k);
1683
1686
  }), {
1684
- id: S,
1687
+ id: x,
1685
1688
  type: "BOX",
1686
1689
  element: o,
1687
1690
  rect: {
@@ -1690,50 +1693,51 @@ function Fe(s, e = re | ue | $e | be | pe, t, i = 1, r = 0, c = 2, n, a, l) {
1690
1693
  width: C.width,
1691
1694
  height: C.height
1692
1695
  },
1693
- styles: j,
1696
+ styles: K,
1694
1697
  textContent: J,
1695
- textStyles: Z,
1698
+ textStyles: L,
1696
1699
  dirtyMask: e,
1697
1700
  visibility: d,
1698
- isTraveler: M,
1701
+ isTraveler: R,
1699
1702
  captureLayer: i,
1700
1703
  nativeLayer: b,
1701
- nativeStyles: b !== void 0 ? Ce(te({}, k), {
1702
- backgroundColor: (K = m.backgroundColor) != null ? K : k.backgroundColor,
1703
- backgroundImage: (U = m.backgroundImage) != null ? U : k.backgroundImage,
1704
- opacity: (V = m.opacity) != null ? V : k.opacity,
1705
- zIndex: m.zIndex !== void 0 ? m.zIndex + X : k.zIndex,
1706
- borderRadius: (ie = m.borderRadius) != null ? ie : k.borderRadius,
1707
- borderColor: (se = m.borderColor) != null ? se : k.borderColor,
1708
- borderWidth: (ne = m.borderWidth) != null ? ne : k.borderWidth,
1709
- boxShadow: (he = m.boxShadow) != null ? he : k.boxShadow,
1710
- isTraveler: k.isTraveler,
1711
- transform: m.transform
1704
+ nativeStyles: b !== void 0 ? Le(re({}, B), {
1705
+ backgroundColor: (_ = v.backgroundColor) != null ? _ : B.backgroundColor,
1706
+ backgroundImage: (W = v.backgroundImage) != null ? W : B.backgroundImage,
1707
+ opacity: (se = v.opacity) != null ? se : B.opacity,
1708
+ zIndex: v.zIndex !== void 0 ? v.zIndex + Y : B.zIndex,
1709
+ borderRadius: (ne = v.borderRadius) != null ? ne : B.borderRadius,
1710
+ borderColor: (oe = v.borderColor) != null ? oe : B.borderColor,
1711
+ borderWidth: (he = v.borderWidth) != null ? he : B.borderWidth,
1712
+ boxShadow: (de = v.boxShadow) != null ? de : B.boxShadow,
1713
+ isTraveler: B.isTraveler,
1714
+ transform: v.transform,
1715
+ imageSrc: N != null ? N : A
1712
1716
  }) : void 0,
1713
1717
  nativeRect: b !== void 0 ? {
1714
- x: m.x !== void 0 ? parseFloat(m.x) : C.left + window.scrollX,
1715
- y: m.y !== void 0 ? parseFloat(m.y) : C.top + window.scrollY,
1716
- width: m.width !== void 0 ? parseFloat(m.width) : C.width,
1717
- height: m.height !== void 0 ? parseFloat(m.height) : C.height
1718
+ x: v.x !== void 0 ? parseFloat(v.x) : C.left + window.scrollX,
1719
+ y: v.y !== void 0 ? parseFloat(v.y) : C.top + window.scrollY,
1720
+ width: v.width !== void 0 ? parseFloat(v.width) : C.width,
1721
+ height: v.height !== void 0 ? parseFloat(v.height) : C.height
1718
1722
  } : void 0,
1719
- isFixed: y.position === "fixed",
1723
+ isFixed: w.position === "fixed",
1720
1724
  clipElements: l,
1721
- children: L,
1722
- shaderHooks: A
1725
+ children: U,
1726
+ shaderHooks: M
1723
1727
  };
1724
1728
  }
1725
- function lt(s, e) {
1729
+ function dt(s, e) {
1726
1730
  e.size !== 0 && e.forEach((t, i) => {
1727
1731
  var c, n, a, l;
1728
1732
  const r = s.get(i);
1729
- !r || !r.userData.basePosition || (W.forceUpdateUniforms(r.material, {
1733
+ !r || !r.userData.basePosition || (P.forceUpdateUniforms(r.material, {
1730
1734
  backgroundColor: t.backgroundColor,
1731
1735
  backgroundImage: t.backgroundImage,
1732
1736
  boxShadow: t.boxShadow,
1733
1737
  opacity: t.opacity,
1734
1738
  borderRadius: (n = t.borderRadius) != null ? n : (c = r.userData.baseStyles) == null ? void 0 : c.borderRadius
1735
1739
  // width and height are no longer updated here, they are updated in syncMeshesByDOM
1736
- }), r.userData.nativeMesh && W.forceUpdateUniforms(r.userData.nativeMesh.material, {
1740
+ }), r.userData.nativeMesh && P.forceUpdateUniforms(r.userData.nativeMesh.material, {
1737
1741
  backgroundColor: t.backgroundColor,
1738
1742
  backgroundImage: t.backgroundImage,
1739
1743
  boxShadow: t.boxShadow,
@@ -1742,28 +1746,28 @@ function lt(s, e) {
1742
1746
  }));
1743
1747
  });
1744
1748
  }
1745
- class ct {
1749
+ class ut {
1746
1750
  constructor(e, t, i, r) {
1747
1751
  u(this, "target");
1748
1752
  u(this, "renderer");
1749
1753
  u(this, "registry");
1750
1754
  u(this, "isTravelEnabled", !1);
1751
1755
  u(this, "tracker");
1752
- this.target = e, this.renderer = t, this.registry = i, this.tracker = new Be(e, {
1756
+ this.target = e, this.renderer = t, this.registry = i, this.tracker = new Fe(e, {
1753
1757
  resizeDebounce: r.resizeDebounce
1754
1758
  }), this.tracker.onLayoutChange.add((c, n) => {
1755
- document.querySelector(`[${N.NAME}~='${N.VALUES.TRAVELER}']`) !== null && !this.isTravelEnabled && (this.isTravelEnabled = !0, this.renderer.createRenderTarget());
1756
- const l = Fe(
1759
+ document.querySelector(`[${V.NAME}~='${V.VALUES.TRAVELER}']`) !== null && !this.isTravelEnabled && (this.isTravelEnabled = !0, this.renderer.createRenderTarget());
1760
+ const l = Xe(
1757
1761
  this.target,
1758
1762
  c,
1759
- $,
1763
+ q,
1760
1764
  1,
1761
1765
  0,
1762
1766
  this.renderer.qualityFactor
1763
1767
  );
1764
1768
  l && this.renderer.syncScene(l, n);
1765
1769
  }), this.tracker.onStyleChange.add((c) => {
1766
- lt(this.registry, c);
1770
+ dt(this.registry, c);
1767
1771
  }), this.tracker.onRender.add(() => {
1768
1772
  this.renderer.syncMeshesByDOM(), this.renderer.render();
1769
1773
  });
@@ -1775,7 +1779,7 @@ class ct {
1775
1779
  this.tracker.stop();
1776
1780
  }
1777
1781
  }
1778
- class ht {
1782
+ class ft {
1779
1783
  constructor() {
1780
1784
  u(this, "store");
1781
1785
  this.store = /* @__PURE__ */ new WeakMap();
@@ -1800,17 +1804,17 @@ class ht {
1800
1804
  this.store.delete(e);
1801
1805
  }
1802
1806
  }
1803
- class dt {
1807
+ class gt {
1804
1808
  constructor(e, t) {
1805
1809
  u(this, "renderer");
1806
1810
  u(this, "syncer");
1807
1811
  u(this, "target");
1808
1812
  u(this, "registry");
1809
1813
  var r, c, n;
1810
- if (this.target = e, this.registry = new ht(), !document.getElementById("mirage-engine-styles")) {
1814
+ if (this.target = e, this.registry = new ft(), !document.getElementById("mirage-engine-styles")) {
1811
1815
  const a = document.createElement("style");
1812
1816
  a.id = "mirage-engine-styles", a.textContent = `
1813
- [${ee.NAME}="${ee.VALUES.HIDE}"] {
1817
+ [${te.NAME}="${te.VALUES.HIDE}"] {
1814
1818
  opacity: 0 !important;
1815
1819
  }
1816
1820
  `, document.head.appendChild(a);
@@ -1818,12 +1822,12 @@ class dt {
1818
1822
  let i;
1819
1823
  if (t.mode === "duplicate" ? i = (c = (r = t.container) != null ? r : this.target.parentElement) != null ? c : void 0 : i = (n = this.target.parentElement) != null ? n : void 0, !i)
1820
1824
  throw new Error("[Mirage] Cannot find a container (parent or option).");
1821
- this.renderer = new ot(
1825
+ this.renderer = new ct(
1822
1826
  this.target,
1823
1827
  t,
1824
1828
  i,
1825
1829
  this.registry
1826
- ), this.renderer.mount(), this.syncer = new ct(this.target, this.renderer, this.registry, t);
1830
+ ), this.renderer.mount(), this.syncer = new ut(this.target, this.renderer, this.registry, t);
1827
1831
  }
1828
1832
  start() {
1829
1833
  this.syncer.start();
@@ -1866,7 +1870,7 @@ class dt {
1866
1870
  r();
1867
1871
  }
1868
1872
  }
1869
- class ut {
1873
+ class pt {
1870
1874
  constructor(e = {}) {
1871
1875
  u(this, "frontSelector");
1872
1876
  u(this, "midLayerElement");
@@ -1875,7 +1879,7 @@ class ut {
1875
1879
  u(this, "midLayer", null);
1876
1880
  u(this, "frontLayer", null);
1877
1881
  u(this, "tracker", null);
1878
- this.frontSelector = e.frontSelector || ".front", this.midLayerElement = e.midLayerElement || null, this.items = [], this.isInitialized = !1, this.tracker = new Be(document.body, e.trackerConfig || { resizeDebounce: !0 });
1882
+ this.frontSelector = e.frontSelector || ".front", this.midLayerElement = e.midLayerElement || null, this.items = [], this.isInitialized = !1, this.tracker = new Fe(document.body, e.trackerConfig || { resizeDebounce: !0 });
1879
1883
  }
1880
1884
  init() {
1881
1885
  var e;
@@ -1937,16 +1941,16 @@ class ut {
1937
1941
  });
1938
1942
  }
1939
1943
  }
1940
- class gt {
1944
+ class vt {
1941
1945
  constructor(e, t) {
1942
1946
  u(this, "_engine");
1943
1947
  u(this, "_sandwich");
1944
1948
  if (!e)
1945
1949
  throw new Error("[Mirage] Target element is required.");
1946
- if (this._engine = new dt(e, t), t.sandwich !== !1) {
1950
+ if (this._engine = new gt(e, t), t.sandwich !== !1) {
1947
1951
  const i = typeof t.sandwich == "object" ? t.sandwich : {};
1948
- this._sandwich = new ut({
1949
- frontSelector: i.frontSelector || `[${Le.NAME}='${Le.VALUES.FRONT}']`
1952
+ this._sandwich = new pt({
1953
+ frontSelector: i.frontSelector || `[${Ae.NAME}='${Ae.VALUES.FRONT}']`
1950
1954
  }), this._sandwich.useTracker(this._engine.getTracker());
1951
1955
  }
1952
1956
  }
@@ -1973,5 +1977,5 @@ class gt {
1973
1977
  }
1974
1978
  }
1975
1979
  export {
1976
- gt as Mirage
1980
+ vt as Mirage
1977
1981
  };