mirage-engine 0.3.8 → 0.3.9

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.
@@ -12,20 +12,20 @@ var ae = (s, e, t) => e in s ? _e(s, e, { enumerable: !0, configurable: !0, writ
12
12
  }, be = (s, e) => Fe(s, Ne(e));
13
13
  var u = (s, e, t) => (ae(s, typeof e != "symbol" ? e + "" : e, t), t);
14
14
  var we = (s, e, t) => new Promise((r, i) => {
15
- var o = (c) => {
15
+ var c = (a) => {
16
16
  try {
17
- a(t.next(c));
17
+ o(t.next(a));
18
18
  } catch (l) {
19
19
  i(l);
20
20
  }
21
- }, n = (c) => {
21
+ }, n = (a) => {
22
22
  try {
23
- a(t.throw(c));
23
+ o(t.throw(a));
24
24
  } catch (l) {
25
25
  i(l);
26
26
  }
27
- }, a = (c) => c.done ? r(c.value) : Promise.resolve(c.value).then(o, n);
28
- a((t = t.apply(s, e)).next());
27
+ }, o = (a) => a.done ? r(a.value) : Promise.resolve(a.value).then(c, n);
28
+ o((t = t.apply(s, e)).next());
29
29
  });
30
30
  import * as y from "three";
31
31
  const Le = {
@@ -54,12 +54,12 @@ const Le = {
54
54
  CAPTURE_8: "8",
55
55
  CAPTURE_9: "9",
56
56
  CAPTURE_10: "10"
57
- }, U = {
57
+ }, O = {
58
58
  NAME: "data-mirage-travel",
59
59
  KEY: "mirageTravel",
60
60
  VALUES: xe,
61
61
  MAX_LAYERS: Object.keys(xe).length - 1
62
- }, N = {
62
+ }, z = {
63
63
  NAME: "data-mirage-filter",
64
64
  KEY: "mirageFilter",
65
65
  VALUES: Le
@@ -142,32 +142,32 @@ class Me {
142
142
  this.pendingMask |= q, 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
- var i, o;
145
+ var i, c;
146
146
  this.target = e;
147
147
  const r = (i = t.resizeDebounce) != null ? i : !0;
148
148
  r === !1 ? this.resizeConfig = { enabled: !1, delay: 0 } : r === !0 ? this.resizeConfig = { enabled: !0, delay: 150 } : this.resizeConfig = {
149
149
  enabled: !0,
150
- delay: (o = r.delay) != null ? o : 150,
150
+ delay: (c = r.delay) != null ? c : 150,
151
151
  onStart: r.onStart,
152
152
  onEnd: r.onEnd
153
153
  }, this.observer = new MutationObserver((n) => {
154
- let a = re;
155
- for (const c of n)
156
- if (c.type === "childList")
157
- a |= ie, c.removedNodes.length > 0 && c.removedNodes.forEach((l) => {
154
+ let o = re;
155
+ for (const a of n)
156
+ if (a.type === "childList")
157
+ o |= ie, a.removedNodes.length > 0 && a.removedNodes.forEach((l) => {
158
158
  l instanceof HTMLElement && this.pendingDeletions.add(l);
159
159
  });
160
- else if (c.type === "attributes")
161
- if (c.attributeName === "style") {
162
- a |= q | Z;
163
- const l = c.target, d = He(l.style);
160
+ else if (a.type === "attributes")
161
+ if (a.attributeName === "style") {
162
+ o |= q | Z;
163
+ const l = a.target, d = He(l.style);
164
164
  this.pendingStyles.set(l, d);
165
165
  } else
166
- c.attributeName === "class" ? a |= q | Z : c.attributeName && c.attributeName.startsWith("data-") && (a |= q | Z, c.attributeName.startsWith("data-mirage") && (a |= ie));
166
+ a.attributeName === "class" ? o |= q | Z : a.attributeName && a.attributeName.startsWith("data-") && (o |= q | Z, a.attributeName.startsWith("data-mirage") && (o |= ie));
167
167
  else
168
- c.type === "characterData" && (a |= ce | q);
169
- if (a !== re) {
170
- if (this.pendingMask |= a, a & ie) {
168
+ a.type === "characterData" && (o |= ce | q);
169
+ if (o !== re) {
170
+ if (this.pendingMask |= o, o & ie) {
171
171
  this.clearTimers(), this.isDomDirty = !0;
172
172
  return;
173
173
  }
@@ -197,7 +197,7 @@ const W = 1, K = 2, D = {
197
197
  SELECTED: 1,
198
198
  getCaptureLayer: (s) => 31 - s,
199
199
  HIDDEN: 31
200
- }, Ce = Object.values(N.VALUES);
200
+ }, Ce = Object.values(z.VALUES);
201
201
  class Ae {
202
202
  /**
203
203
  * Calculates or retrieves the exact alphabetic baseline (in pixels) for the given font.
@@ -215,13 +215,13 @@ class Ae {
215
215
  return 0;
216
216
  const t = document.createElement("div"), r = document.createElement("span"), i = document.createElement("img");
217
217
  t.style.visibility = "hidden", t.style.position = "absolute", t.style.top = "0px", t.style.left = "0px", t.style.font = e, t.style.margin = "0", t.style.padding = "0", t.style.border = "none", r.style.margin = "0", r.style.padding = "0", r.style.border = "none", r.style.lineHeight = "normal", i.width = 1, i.height = 1, i.style.verticalAlign = "baseline", r.appendChild(document.createTextNode("Hidden Text")), t.appendChild(r), t.appendChild(i), document.body.appendChild(t);
218
- const o = i.offsetTop - r.offsetTop;
219
- return document.body.removeChild(t), o;
218
+ const c = i.offsetTop - r.offsetTop;
219
+ return document.body.removeChild(t), c;
220
220
  }
221
221
  }
222
222
  u(Ae, "cache", /* @__PURE__ */ new Map());
223
223
  class Pe extends y.MeshBasicMaterial {
224
- constructor(t, r, i, o, n = 2) {
224
+ constructor(t, r, i, c, n = 2) {
225
225
  super({
226
226
  transparent: !0,
227
227
  side: y.FrontSide,
@@ -232,34 +232,34 @@ class Pe extends y.MeshBasicMaterial {
232
232
  u(this, "qualityFactor");
233
233
  if (this.canvas = document.createElement("canvas"), this.ctx = this.canvas.getContext("2d"), !this.ctx)
234
234
  throw new Error("[Mirage] Failed to create canvas context");
235
- 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, r, i, o);
235
+ 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, r, i, c);
236
236
  }
237
237
  wrapText(t, r) {
238
238
  const i = t.split(`
239
- `), o = [];
239
+ `), c = [];
240
240
  return i.forEach((n) => {
241
- const a = n.match(/[^\s\-]+\-?|\-|\s+/g) || [];
242
- if (a.length === 0) {
243
- o.push("");
241
+ const o = n.match(/[^\s\-]+\-?|\-|\s+/g) || [];
242
+ if (o.length === 0) {
243
+ c.push("");
244
244
  return;
245
245
  }
246
- let c = a[0];
247
- for (let l = 1; l < a.length; l++) {
248
- const d = a[l];
249
- this.ctx.measureText(c + d).width <= r + 2 ? c += d : (c && o.push(c), c = d.trimStart());
246
+ let a = o[0];
247
+ for (let l = 1; l < o.length; l++) {
248
+ const d = o[l];
249
+ this.ctx.measureText(a + d).width <= r + 2 ? a += d : (a && c.push(a), a = d.trimStart());
250
250
  }
251
- c && o.push(c);
252
- }), o;
251
+ a && c.push(a);
252
+ }), c;
253
253
  }
254
- updateText(t, r, i, o, n) {
254
+ updateText(t, r, i, c, n) {
255
255
  n !== void 0 && (this.qualityFactor = n);
256
- const c = (window.devicePixelRatio || 1) * this.qualityFactor, l = i * c, d = o * c;
257
- this.canvas.width !== l || this.canvas.height !== d ? (this.canvas.width = l, this.canvas.height = d) : this.ctx.clearRect(0, 0, this.canvas.width, this.canvas.height), this.ctx.setTransform(c, 0, 0, c, 0, 0), this.ctx.font = r.font, this.ctx.fillStyle = r.color, this.ctx.textBaseline = "alphabetic", this.ctx.globalAlpha = 1;
256
+ const a = (window.devicePixelRatio || 1) * this.qualityFactor, l = i * a, d = c * a;
257
+ this.canvas.width !== l || this.canvas.height !== d ? (this.canvas.width = l, 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
258
  const h = this.wrapText(t, i), f = r.lineHeight, p = Ae.getBaseline(r.font);
259
- h.forEach((g, v) => {
260
- const x = v * f + p;
261
- let M = 0;
262
- r.textAlign === "center" ? M = i / 2 : r.textAlign === "right" && (M = i), this.ctx.textAlign = r.textAlign, this.ctx.fillText(g, M, x);
259
+ h.forEach((g, m) => {
260
+ const x = m * f + p;
261
+ let S = 0;
262
+ r.textAlign === "center" ? S = i / 2 : r.textAlign === "right" && (S = i), this.ctx.textAlign = r.textAlign, this.ctx.fillText(g, S, x);
263
263
  }), this.map && (this.map.needsUpdate = !0);
264
264
  }
265
265
  dispose() {
@@ -279,8 +279,8 @@ function ee(s) {
279
279
  /rgba?\((\d+),\s*(\d+),\s*(\d+)(?:,\s*([\d.]+))?\)/
280
280
  );
281
281
  if (e) {
282
- const t = parseInt(e[1], 10), r = parseInt(e[2], 10), i = parseInt(e[3], 10), o = e[4] !== void 0 ? parseFloat(e[4]) : 1;
283
- return { color: new y.Color(`rgb(${t}, ${r}, ${i})`), alpha: o };
282
+ const t = parseInt(e[1], 10), r = parseInt(e[2], 10), i = parseInt(e[3], 10), c = e[4] !== void 0 ? parseFloat(e[4]) : 1;
283
+ return { color: new y.Color(`rgb(${t}, ${r}, ${i})`), alpha: c };
284
284
  }
285
285
  return { color: new y.Color(s), alpha: 1 };
286
286
  }
@@ -288,16 +288,16 @@ function Ge(s) {
288
288
  const e = [];
289
289
  let t = "", r = 0;
290
290
  for (let i = 0; i < s.length; i++) {
291
- const o = s[i];
292
- if (o === "(")
291
+ const c = s[i];
292
+ if (c === "(")
293
293
  r++;
294
- else if (o === ")")
294
+ else if (c === ")")
295
295
  r--;
296
- else if (o === "," && r === 0) {
296
+ else if (c === "," && r === 0) {
297
297
  e.push(t.trim()), t = "";
298
298
  continue;
299
299
  }
300
- t += o;
300
+ t += c;
301
301
  }
302
302
  return t && e.push(t.trim()), e;
303
303
  }
@@ -308,47 +308,47 @@ function $e(s) {
308
308
  if (!e)
309
309
  return null;
310
310
  const t = e[1], r = Ge(t);
311
- let i = Math.PI, o = 0;
311
+ let i = Math.PI, c = 0;
312
312
  const n = r[0].trim();
313
313
  if (n.startsWith("to "))
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), o = 1;
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), c = 1;
315
315
  else if (n.endsWith("deg") || n.endsWith("rad") || n.endsWith("turn")) {
316
- const c = parseFloat(n);
317
- n.endsWith("deg") ? i = c * (Math.PI / 180) : n.endsWith("rad") ? i = c : n.endsWith("turn") && (i = c * Math.PI * 2), o = 1;
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), c = 1;
318
318
  }
319
- const a = [];
320
- for (let c = o; c < r.length && !(a.length >= 8); c++) {
321
- const l = r[c].trim(), d = l.lastIndexOf(" ");
319
+ const o = [];
320
+ for (let a = c; a < r.length && !(o.length >= 8); a++) {
321
+ const l = r[a].trim(), d = l.lastIndexOf(" ");
322
322
  let h = l, f = null;
323
323
  if (d !== -1 && !l.endsWith(")")) {
324
324
  const g = l.substring(d + 1);
325
325
  (g.endsWith("%") || g.endsWith("px") || !isNaN(parseFloat(g))) && (h = l.substring(0, d).trim(), f = g);
326
326
  }
327
327
  const p = ee(h);
328
- a.push({
328
+ o.push({
329
329
  color: p.color,
330
330
  alpha: p.alpha,
331
331
  rawStop: f,
332
332
  stop: 0
333
333
  });
334
334
  }
335
- if (a.length > 0) {
336
- for (let l = 0; l < a.length; l++)
337
- a[l].rawStop !== null && (a[l].stop = parseFloat(a[l].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 c = 0;
340
- for (let l = 1; l < a.length; l++)
341
- if (a[l].rawStop !== null || l === a.length - 1) {
342
- const d = l - c;
335
+ if (o.length > 0) {
336
+ for (let l = 0; l < o.length; l++)
337
+ o[l].rawStop !== null && (o[l].stop = parseFloat(o[l].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 l = 1; l < o.length; l++)
341
+ if (o[l].rawStop !== null || l === o.length - 1) {
342
+ const d = l - a;
343
343
  if (d > 1) {
344
- const h = a[c].stop, p = (a[l].stop - h) / d;
344
+ const h = o[a].stop, p = (o[l].stop - h) / d;
345
345
  for (let g = 1; g < d; g++)
346
- a[c + g].stop = h + p * g;
346
+ o[a + g].stop = h + p * g;
347
347
  }
348
- c = l;
348
+ a = l;
349
349
  }
350
350
  }
351
- return { angle: i, stops: a };
351
+ return { angle: i, stops: o };
352
352
  }
353
353
  const qe = `varying vec2 vUv;
354
354
  varying vec4 vScreenPos;
@@ -513,22 +513,22 @@ baseColor = blendSrcOver(baseColor, texColor);`, Te = {
513
513
  };
514
514
  function Ze(s, e, t, r = null, i) {
515
515
  var E;
516
- const o = r !== null || !!s.imageSrc;
516
+ const c = r !== null || !!s.imageSrc;
517
517
  let n = "";
518
- const a = {};
518
+ const o = {};
519
519
  if (i != null && i.uniforms)
520
- for (const [C, b] of Object.entries(i.uniforms))
521
- typeof b == "number" ? (n += `uniform float ${C};
522
- `, a[C] = { value: b }) : Array.isArray(b) ? b.length === 2 ? (n += `uniform vec2 ${C};
523
- `, a[C] = { value: new y.Vector2(...b) }) : b.length === 3 ? (n += `uniform vec3 ${C};
524
- `, a[C] = { value: new y.Vector3(...b) }) : b.length === 4 && (n += `uniform vec4 ${C};
525
- `, a[C] = { value: new y.Vector4(...b) }) : (n += `uniform float ${C};
526
- `, a[C] = { value: b });
527
- const c = i !== void 0, l = (o || c ? Se.declChunk : "") + `
520
+ for (const [b, w] of Object.entries(i.uniforms))
521
+ typeof w == "number" ? (n += `uniform float ${b};
522
+ `, o[b] = { value: w }) : Array.isArray(w) ? w.length === 2 ? (n += `uniform vec2 ${b};
523
+ `, o[b] = { value: new y.Vector2(...w) }) : w.length === 3 ? (n += `uniform vec3 ${b};
524
+ `, o[b] = { value: new y.Vector3(...w) }) : w.length === 4 && (n += `uniform vec4 ${b};
525
+ `, o[b] = { value: new y.Vector4(...w) }) : (n += `uniform float ${b};
526
+ `, o[b] = { value: w });
527
+ const a = i !== void 0, l = (c || a ? Se.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 = o || c ? d + h + ((i == null ? void 0 : i.uvModifier) || "") : "", p = o || c ? Se.baseColorChunk : "", g = (i == null ? void 0 : i.colorModifier) || "", v = Te.fragmentShader.replace("#INJECT_DECLARATIONS", l).replace("#INJECT_UV_MODIFIER", f).replace("#INJECT_BASE_COLOR", p).replace("#INJECT_COLOR_MODIFIER", g), x = ee(s.backgroundColor), M = ee(s.borderColor), A = {
531
+ `, f = c || a ? d + h + ((i == null ? void 0 : i.uvModifier) || "") : "", p = c || a ? Se.baseColorChunk : "", g = (i == null ? void 0 : i.colorModifier) || "", m = Te.fragmentShader.replace("#INJECT_DECLARATIONS", l).replace("#INJECT_UV_MODIFIER", f).replace("#INJECT_BASE_COLOR", p).replace("#INJECT_COLOR_MODIFIER", g), x = ee(s.backgroundColor), S = ee(s.borderColor), L = {
532
532
  uSize: { value: new y.Vector2(e, t) },
533
533
  uBgColor: {
534
534
  value: new y.Vector4(
@@ -540,10 +540,10 @@ function Ze(s, e, t, r = null, i) {
540
540
  },
541
541
  uBorderColor: {
542
542
  value: new y.Vector4(
543
- M.color.r,
544
- M.color.g,
545
- M.color.b,
546
- M.alpha
543
+ S.color.r,
544
+ S.color.g,
545
+ S.color.b,
546
+ S.alpha
547
547
  )
548
548
  },
549
549
  uBorderRadius: { value: new y.Vector4(0, 0, 0, 0) },
@@ -559,24 +559,24 @@ function Ze(s, e, t, r = null, i) {
559
559
  },
560
560
  uGradientStops: { value: new Float32Array(8) }
561
561
  };
562
- De(A.uBorderRadius.value, s.borderRadius, Math.min(e, t)), o && (A.uTexture.value = r);
563
- const S = new y.ShaderMaterial({
564
- uniforms: $($({}, A), a),
562
+ De(L.uBorderRadius.value, s.borderRadius, Math.min(e, t)), c && (L.uTexture.value = r);
563
+ const T = new y.ShaderMaterial({
564
+ uniforms: $($({}, L), o),
565
565
  vertexShader: Te.vertexShader,
566
- fragmentShader: v,
566
+ fragmentShader: m,
567
567
  transparent: !0,
568
568
  side: y.FrontSide
569
569
  // for better performance
570
570
  });
571
- return s.backgroundImage && le(S, { backgroundImage: s.backgroundImage }), S;
571
+ return s.backgroundImage && le(T, { backgroundImage: s.backgroundImage }), T;
572
572
  }
573
573
  function et(s, e, t, r, i) {
574
- const o = J(e.borderWidth);
574
+ const c = J(e.borderWidth);
575
575
  le(s, {
576
576
  width: t,
577
577
  height: r,
578
578
  borderRadius: e.borderRadius,
579
- borderWidth: o,
579
+ borderWidth: c,
580
580
  backgroundColor: e.backgroundColor,
581
581
  borderColor: e.borderColor,
582
582
  opacity: e.opacity,
@@ -585,7 +585,7 @@ function et(s, e, t, r, i) {
585
585
  });
586
586
  }
587
587
  function le(s, e) {
588
- var r, i, o;
588
+ var r, i, c;
589
589
  if (e.width !== void 0 && e.height !== void 0 && s.uniforms.uSize.value.set(e.width, e.height), e.borderRadius !== void 0) {
590
590
  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);
591
591
  De(s.uniforms.uBorderRadius.value, e.borderRadius, n);
@@ -645,9 +645,9 @@ function le(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, a = t.image.naturalHeight || t.image.videoHeight || t.image.height, c = (i = e.width) != null ? i : s.uniforms.uSize.value.x, l = (o = e.height) != null ? o : s.uniforms.uSize.value.y;
649
- if (n && a && c && l) {
650
- const d = n / a, h = c / l;
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, l = (c = e.height) != null ? c : s.uniforms.uSize.value.y;
649
+ if (n && o && a && l) {
650
+ const d = n / o, h = a / l;
651
651
  if (d > h) {
652
652
  const f = h / d;
653
653
  s.uniforms.uTextureRepeat.value.set(f, 1), s.uniforms.uTextureOffset.value.set((1 - f) / 2, 0);
@@ -662,17 +662,17 @@ function le(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 a = 0; a < 8; a++)
666
- if (a < n.stops.length) {
667
- const c = n.stops[a];
668
- s.uniforms.uGradientColors.value[a].set(
669
- c.color.r,
670
- c.color.g,
671
- c.color.b,
672
- c.alpha
673
- ), s.uniforms.uGradientStops.value[a] = c.stop;
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;
674
674
  } else
675
- s.uniforms.uGradientColors.value[a].set(0, 0, 0, 0), s.uniforms.uGradientStops.value[a] = 1;
675
+ s.uniforms.uGradientColors.value[o].set(0, 0, 0, 0), s.uniforms.uGradientStops.value[o] = 1;
676
676
  } else
677
677
  s.uniforms.uGradientCount.value = 0;
678
678
  }
@@ -680,7 +680,7 @@ function le(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 De(s, e, t = 0) {
683
- var c, l, d, h;
683
+ var a, l, d, h;
684
684
  if (e == null) {
685
685
  s.set(0, 0, 0, 0);
686
686
  return;
@@ -693,37 +693,37 @@ function De(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 = J(r[0], t), o = J((c = r[1]) != null ? c : r[0], t), n = J((l = r[2]) != null ? l : r[0], t), a = J((h = (d = r[3]) != null ? d : r[1]) != null ? h : r[0], t);
697
- s.set(i, o, n, a);
696
+ const r = e.split("/")[0].trim().split(/\s+/), i = J(r[0], t), c = J((a = r[1]) != null ? a : r[0], t), n = J((l = r[2]) != null ? l : r[0], t), o = J((h = (d = r[3]) != null ? d : r[1]) != null ? h : r[0], t);
697
+ s.set(i, c, n, o);
698
698
  }
699
- const z = {
700
- create(s, e, t, r, i, o = 2, n = null, a) {
699
+ const X = {
700
+ create(s, e, t, r, i, c = 2, n = null, o) {
701
701
  return s === "BOX" ? Ze(
702
702
  e,
703
703
  r,
704
704
  i,
705
705
  n,
706
- a
706
+ o
707
707
  ) : s === "TEXT" ? new Pe(
708
708
  t || "",
709
709
  e,
710
710
  r,
711
711
  i,
712
- o
712
+ c
713
713
  ) : new y.MeshBasicMaterial({ visible: !1 });
714
714
  },
715
- update(s, e, t, r, i, o, n = 2, a) {
715
+ update(s, e, t, r, i, c, n = 2, o) {
716
716
  e === "BOX" ? et(
717
717
  s,
718
718
  t,
719
719
  i,
720
- o,
721
- a
720
+ c,
721
+ o
722
722
  ) : e === "TEXT" && s.updateText(
723
723
  r || "",
724
724
  t,
725
725
  i,
726
- o,
726
+ c,
727
727
  n
728
728
  );
729
729
  },
@@ -741,8 +741,8 @@ class tt {
741
741
  this.onUpdate = e, t && (this.observer = new IntersectionObserver(
742
742
  (r) => {
743
743
  for (const i of r) {
744
- const o = i.target;
745
- i.isIntersecting ? this.loadTexture(o) : this.disposeTexture(o);
744
+ const c = i.target;
745
+ i.isIntersecting ? this.loadTexture(c) : this.disposeTexture(c);
746
746
  }
747
747
  },
748
748
  { rootMargin: "300px" }
@@ -766,9 +766,9 @@ class tt {
766
766
  try {
767
767
  let r;
768
768
  if (t.startsWith("data:image/svg+xml"))
769
- r = yield new Promise((o, n) => {
770
- const a = new Image();
771
- a.onload = () => o(a), a.onerror = n, a.src = t;
769
+ r = yield new Promise((c, n) => {
770
+ const o = new Image();
771
+ o.onload = () => c(o), o.onerror = n, o.src = t;
772
772
  });
773
773
  else {
774
774
  const n = yield (yield fetch(t)).blob();
@@ -818,21 +818,21 @@ class rt {
818
818
  u(this, "registry");
819
819
  u(this, "targetRect");
820
820
  u(this, "travelersByLayer", Array.from(
821
- { length: U.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 a, c, l, d, h;
828
- this.target = e, this.mountContainer = r, this.registry = i, this.mode = (a = t.mode) != null ? a : "overlay", this.canvasSize = (c = t.canvasSize) != null ? c : "viewport", this.clipArea = (l = t.travelerClipArea) != null ? l : 1, this.targetLayer = (d = t.layer) != null ? d : "base", this.textureManager = new tt((f, p) => {
827
+ var o, a, l, 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 = (l = t.travelerClipArea) != null ? l : 1, this.targetLayer = (d = t.layer) != null ? d : "base", this.textureManager = new tt((f, p) => {
829
829
  const g = this.registry.get(f);
830
- g && g.material instanceof y.ShaderMaterial && z.forceUpdateUniforms(g.material, { texture: p });
830
+ g && g.material instanceof y.ShaderMaterial && X.forceUpdateUniforms(g.material, { texture: p });
831
831
  }, this.isViewport), this.canvas = document.createElement("canvas"), this.scene = new y.Scene(), this.targetRect = this.target.getBoundingClientRect();
832
- const o = this.isViewport ? window.innerWidth + this.overscan * 2 : this.targetRect.width, n = this.isViewport ? window.innerHeight + this.overscan * 2 : this.targetRect.height;
832
+ const c = 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(
834
- o / -2,
835
- o / 2,
834
+ c / -2,
835
+ c / 2,
836
836
  n / 2,
837
837
  n / -2,
838
838
  1,
@@ -843,7 +843,7 @@ class rt {
843
843
  antialias: !0
844
844
  // [new]
845
845
  // premultipliedAlpha: true
846
- }), y.ColorManagement.enabled = !1, this.renderer.outputColorSpace = y.LinearSRGBColorSpace, this.renderer.setPixelRatio(window.devicePixelRatio), this.renderer.setSize(o, n), this.applyTextQuality((h = t.quality) != null ? h : "medium");
846
+ }), 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");
847
847
  }
848
848
  get isViewport() {
849
849
  return this.mode === "overlay" && this.canvasSize === "viewport";
@@ -852,7 +852,7 @@ class rt {
852
852
  return typeof this.targetLayer == "number" ? this.targetLayer : this.targetLayer === "selected" ? D.SELECTED : D.BASE;
853
853
  }
854
854
  createRenderTarget() {
855
- for (let e = 0; e < U.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 && z.forceUpdateUniforms(
902
+ i.isMesh && i.material && X.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 && z.forceUpdateUniforms(
907
+ i.isMesh && i.material && X.forceUpdateUniforms(
908
908
  i.material,
909
909
  t
910
910
  );
@@ -920,8 +920,8 @@ 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, o = 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, c = Math.abs(i - n) > 0.1 || Math.abs(o - a) > 0.1, l = this.mode === "overlay" && (Math.abs(r.top - this.targetRect.top) > 0.1 || Math.abs(r.left - this.targetRect.left) > 0.1);
924
- c ? (this.targetRect = r, this.setSize(i, o), this.updateCanvasLayout()) : l ? (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, c = 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(c - o) > 0.1, l = 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, c), this.updateCanvasLayout()) : l ? (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);
@@ -940,31 +940,31 @@ class rt {
940
940
  // => 이후 activeElements를 이용하여 mesh를 정리!!!+ map에서도 삭제
941
941
  // private reconcileNode(node: SceneNode, activeElements: Set<HTMLElement>) {
942
942
  reconcileNode(e) {
943
- var i;
943
+ var i, c;
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 o = new y.PlaneGeometry(1, 1), n = e.isTraveler ? (i = this.renderTargets[e.captureLayer - 2]) == null ? void 0 : i.texture : this.textureManager.get(e.element), a = z.create(
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 = X.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
- n,
954
+ o,
955
955
  e.shaderHooks
956
956
  );
957
- t = new y.Mesh(o, 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, 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;
958
958
  }
959
- if (this.updateMeshProperties(t, e), this.updateMeshLayers(t, e), e.isTraveler)
960
- for (let o = 0; o < U.MAX_LAYERS; o++)
961
- o === e.captureLayer - 2 ? this.travelersByLayer[o].add(t) : this.travelersByLayer[o].delete(t);
959
+ if ((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)
960
+ for (let n = 0; n < O.MAX_LAYERS; n++)
961
+ n === e.captureLayer - 2 ? this.travelersByLayer[n].add(t) : this.travelersByLayer[n].delete(t);
962
962
  else
963
- for (const o of this.travelersByLayer)
964
- o.delete(t);
963
+ for (const n of this.travelersByLayer)
964
+ n.delete(t);
965
965
  if (e.isFixed ? this.fixedMeshes.add(t) : this.fixedMeshes.delete(t), e.styles.imageSrc ? this.textureManager.register(e.element, e.styles.imageSrc) : this.textureManager.unregister(e.element), e.type === "BOX")
966
- for (const o of e.children)
967
- this.reconcileNode(o);
966
+ for (const n of e.children)
967
+ this.reconcileNode(n);
968
968
  else
969
969
  e.type === "TEXT" && (this.reconcileTextChild(t, e, !1), t.userData.nativeMesh && e.nativeStyles && this.reconcileTextChild(
970
970
  t.userData.nativeMesh,
@@ -976,34 +976,34 @@ class rt {
976
976
  var l;
977
977
  const i = t.textLines || [
978
978
  { text: t.textContent || "", rect: t.rect }
979
- ], o = r ? t.nativeStyles : t.textStyles, n = JSON.stringify(o) + t.textContent + i.map((d) => d.text).join("|"), a = (l = e.userData) == null ? void 0 : l.textChildStyleHash;
980
- if (t.dirtyMask & ce || n !== a) {
979
+ ], c = r ? t.nativeStyles : t.textStyles, n = JSON.stringify(c) + t.textContent + i.map((d) => d.text).join("|"), o = (l = e.userData) == null ? void 0 : l.textChildStyleHash;
980
+ if (t.dirtyMask & ce || n !== o) {
981
981
  e.children.filter(
982
982
  (g) => g.name.startsWith("TEXT_CHILD")
983
983
  ).forEach((g) => {
984
984
  var x;
985
- const v = g;
986
- (x = v.material.map) == null || x.dispose(), v.geometry.dispose(), e.remove(v);
985
+ const m = g;
986
+ (x = m.material.map) == null || x.dispose(), m.geometry.dispose(), e.remove(m);
987
987
  });
988
988
  const h = t.rect, f = h.x + h.width / 2, p = h.y + h.height / 2;
989
- i.forEach((g, v) => {
990
- const x = z.create(
989
+ i.forEach((g, m) => {
990
+ const x = X.create(
991
991
  "TEXT",
992
- o,
992
+ c,
993
993
  g.text,
994
994
  g.rect.width,
995
995
  g.rect.height,
996
996
  this.qualityFactor
997
- ), M = new y.PlaneGeometry(1, 1), A = new y.Mesh(M, x);
998
- A.name = `TEXT_CHILD_${v}`;
999
- const S = t.rect.width === 0 ? 1 : g.rect.width / t.rect.width, E = t.rect.height === 0 ? 1 : g.rect.height / t.rect.height;
1000
- A.scale.set(S, E, 1);
1001
- const C = g.rect.x + g.rect.width / 2, b = g.rect.y + g.rect.height / 2, O = C - f, X = -(b - p);
1002
- A.position.set(
1003
- t.rect.width === 0 ? 0 : O / t.rect.width,
1004
- t.rect.height === 0 ? 0 : X / t.rect.height,
997
+ ), S = new y.PlaneGeometry(1, 1), L = new y.Mesh(S, x);
998
+ L.name = `TEXT_CHILD_${m}`;
999
+ const T = t.rect.width === 0 ? 1 : g.rect.width / t.rect.width, E = t.rect.height === 0 ? 1 : g.rect.height / t.rect.height;
1000
+ L.scale.set(T, E, 1);
1001
+ const b = g.rect.x + g.rect.width / 2, w = g.rect.y + g.rect.height / 2, k = b - f, U = -(w - p);
1002
+ L.position.set(
1003
+ t.rect.width === 0 ? 0 : k / t.rect.width,
1004
+ t.rect.height === 0 ? 0 : U / t.rect.height,
1005
1005
  5e-3
1006
- ), e.add(A);
1006
+ ), e.add(L);
1007
1007
  }), e.userData.textChildStyleHash = n;
1008
1008
  }
1009
1009
  e.children.forEach((d) => {
@@ -1015,46 +1015,46 @@ class rt {
1015
1015
  for (let p = t.captureLayer; p < t.nativeLayer; p++)
1016
1016
  h.layers.enable(D.getCaptureLayer(p));
1017
1017
  else if (r && t.nativeLayer !== void 0)
1018
- for (let p = Math.max(t.captureLayer, t.nativeLayer); p <= U.MAX_LAYERS + 1; p++)
1018
+ for (let p = Math.max(t.captureLayer, t.nativeLayer); p <= O.MAX_LAYERS + 1; p++)
1019
1019
  h.layers.enable(D.getCaptureLayer(p));
1020
1020
  else
1021
- for (let p = t.captureLayer; p <= U.MAX_LAYERS + 1; p++)
1021
+ for (let p = t.captureLayer; p <= O.MAX_LAYERS + 1; p++)
1022
1022
  h.layers.enable(D.getCaptureLayer(p));
1023
1023
  });
1024
1024
  }
1025
1025
  updateMeshProperties(e, t) {
1026
- var S, E, C;
1027
- const { rect: r, styles: i } = t, o = this.renderer.getPixelRatio(), n = this.renderer.domElement.width / o, a = this.renderer.domElement.height / o;
1026
+ var T, E, b;
1027
+ const { rect: r, styles: i } = t, c = this.renderer.getPixelRatio(), n = this.renderer.domElement.width / c, o = this.renderer.domElement.height / c;
1028
1028
  e.material = e.userData.baseMaterial, e.scale.set(r.width, r.height, 1), e.userData.domRect = {
1029
1029
  x: r.x,
1030
1030
  y: r.y,
1031
1031
  width: r.width,
1032
1032
  height: r.height
1033
1033
  };
1034
- const c = 1e-3;
1034
+ const a = 1e-3;
1035
1035
  this.renderOrder++;
1036
1036
  const l = this.targetRect.left + window.scrollX, d = this.targetRect.top + window.scrollY;
1037
1037
  let h, f;
1038
1038
  if (this.isViewport)
1039
1039
  h = r.x - window.innerWidth / 2 + r.width / 2, f = -r.y + window.innerHeight / 2 - r.height / 2;
1040
1040
  else {
1041
- const b = r.x - l, O = r.y - d;
1042
- h = b - n / 2 + r.width / 2, f = -O + a / 2 - r.height / 2;
1041
+ const w = r.x - l, k = r.y - d;
1042
+ h = w - n / 2 + r.width / 2, f = -k + o / 2 - r.height / 2;
1043
1043
  }
1044
1044
  e.position.set(
1045
1045
  h,
1046
1046
  f,
1047
- i.zIndex + this.renderOrder * c
1047
+ i.zIndex + this.renderOrder * a
1048
1048
  );
1049
1049
  const p = r.x, g = r.y;
1050
1050
  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: p, y: g }, e.userData.isFixed = t.isFixed, e.userData.initialScroll = { x: window.scrollX, y: window.scrollY };
1051
- const v = t.element.nodeType === Node.TEXT_NODE ? t.element.parentElement : t.element, x = window.getComputedStyle(v);
1052
- let M = 0, A = 0;
1051
+ const m = t.element.nodeType === Node.TEXT_NODE ? t.element.parentElement : t.element, x = window.getComputedStyle(m);
1052
+ let S = 0, L = 0;
1053
1053
  if (x.transform && x.transform !== "none") {
1054
- const b = new DOMMatrix(x.transform);
1055
- M = b.m41, A = b.m42;
1054
+ const w = new DOMMatrix(x.transform);
1055
+ S = w.m41, L = w.m42;
1056
1056
  }
1057
- if (e.userData.baseTransform = { x: M, y: A }, delete e.userData.originRatioX, delete e.userData.originRatioY, z.update(
1057
+ if (e.userData.baseTransform = { x: S, y: L }, delete e.userData.originRatioX, delete e.userData.originRatioY, X.update(
1058
1058
  e.userData.baseMaterial,
1059
1059
  "BOX",
1060
1060
  i,
@@ -1062,10 +1062,10 @@ class rt {
1062
1062
  r.width,
1063
1063
  r.height,
1064
1064
  this.qualityFactor,
1065
- t.isTraveler ? (S = this.renderTargets[t.captureLayer - 2]) == null ? void 0 : S.texture : this.textureManager.get(t.element)
1065
+ t.isTraveler ? (T = this.renderTargets[t.captureLayer - 2]) == null ? void 0 : T.texture : this.textureManager.get(t.element)
1066
1066
  ), t.nativeStyles && t.nativeRect) {
1067
1067
  if (!e.userData.nativeMesh) {
1068
- const I = z.create(
1068
+ const B = X.create(
1069
1069
  "BOX",
1070
1070
  t.nativeStyles,
1071
1071
  "",
@@ -1074,30 +1074,30 @@ class rt {
1074
1074
  this.qualityFactor,
1075
1075
  t.isTraveler ? (E = this.renderTargets[t.captureLayer - 2]) == null ? void 0 : E.texture : this.textureManager.get(t.element),
1076
1076
  t.shaderHooks
1077
- ), G = new y.Mesh(e.geometry, I);
1077
+ ), G = new y.Mesh(e.geometry, B);
1078
1078
  t.type === "TEXT" && (G.name = "BG_MESH"), this.scene.add(G), e.userData.nativeMesh = G;
1079
1079
  }
1080
- const b = e.userData.nativeMesh;
1081
- let O, X;
1080
+ const w = e.userData.nativeMesh;
1081
+ let k, U;
1082
1082
  if (this.isViewport)
1083
- O = t.nativeRect.x - window.innerWidth / 2 + t.nativeRect.width / 2, X = -t.nativeRect.y + window.innerHeight / 2 - t.nativeRect.height / 2;
1083
+ k = t.nativeRect.x - window.innerWidth / 2 + t.nativeRect.width / 2, U = -t.nativeRect.y + window.innerHeight / 2 - t.nativeRect.height / 2;
1084
1084
  else {
1085
- const I = t.nativeRect.x - l, G = t.nativeRect.y - d;
1086
- O = I - n / 2 + t.nativeRect.width / 2, X = -G + a / 2 - t.nativeRect.height / 2;
1085
+ const B = t.nativeRect.x - l, G = t.nativeRect.y - d;
1086
+ k = B - n / 2 + t.nativeRect.width / 2, U = -G + o / 2 - t.nativeRect.height / 2;
1087
1087
  }
1088
- b.scale.set(t.nativeRect.width, t.nativeRect.height, 1), b.position.set(
1089
- O,
1090
- X,
1091
- t.nativeStyles.zIndex + this.renderOrder * c
1092
- ), z.update(
1093
- b.material,
1088
+ w.scale.set(t.nativeRect.width, t.nativeRect.height, 1), w.position.set(
1089
+ k,
1090
+ U,
1091
+ t.nativeStyles.zIndex + this.renderOrder * a
1092
+ ), X.update(
1093
+ w.material,
1094
1094
  "BOX",
1095
1095
  t.nativeStyles,
1096
1096
  "",
1097
1097
  t.nativeRect.width,
1098
1098
  t.nativeRect.height,
1099
1099
  this.qualityFactor,
1100
- t.isTraveler ? (C = this.renderTargets[t.captureLayer - 2]) == null ? void 0 : C.texture : this.textureManager.get(t.element)
1100
+ t.isTraveler ? (b = this.renderTargets[t.captureLayer - 2]) == null ? void 0 : b.texture : this.textureManager.get(t.element)
1101
1101
  );
1102
1102
  } else
1103
1103
  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);
@@ -1107,33 +1107,33 @@ class rt {
1107
1107
  if (e.layers.set(r), t.visibility & K && e.layers.enable(D.SELECTED), e.userData.nativeMesh && t.nativeLayer !== void 0) {
1108
1108
  const i = e.userData.nativeMesh;
1109
1109
  if (i.layers.set(D.HIDDEN), t.visibility & W) {
1110
- for (let o = t.captureLayer; o < t.nativeLayer; o++)
1111
- e.layers.enable(D.getCaptureLayer(o));
1112
- for (let o = Math.max(t.captureLayer, t.nativeLayer); o <= U.MAX_LAYERS + 1; o++)
1113
- i.layers.enable(D.getCaptureLayer(o));
1110
+ for (let c = t.captureLayer; c < t.nativeLayer; c++)
1111
+ e.layers.enable(D.getCaptureLayer(c));
1112
+ for (let c = Math.max(t.captureLayer, t.nativeLayer); c <= O.MAX_LAYERS + 1; c++)
1113
+ i.layers.enable(D.getCaptureLayer(c));
1114
1114
  }
1115
1115
  } else if (t.visibility & W)
1116
- for (let i = t.captureLayer; i <= U.MAX_LAYERS + 1; i++)
1116
+ for (let i = t.captureLayer; i <= O.MAX_LAYERS + 1; i++)
1117
1117
  e.layers.enable(D.getCaptureLayer(i));
1118
1118
  }
1119
1119
  captureRenderTarget(e, t, r) {
1120
1120
  if (e.size === 0 || !r)
1121
1121
  return;
1122
- const i = new y.Color(), o = this.renderer.getClearAlpha();
1122
+ const i = new y.Color(), c = this.renderer.getClearAlpha();
1123
1123
  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);
1124
- const n = new y.Vector3(), a = this.isViewport ? window.innerWidth + this.overscan * 2 : this.targetRect.width, c = this.isViewport ? window.innerHeight + this.overscan * 2 : this.targetRect.height, l = this.renderer.getPixelRatio();
1124
+ 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, l = this.renderer.getPixelRatio();
1125
1125
  for (const d of e) {
1126
1126
  n.setFromMatrixPosition(d.matrixWorld), n.project(this.camera);
1127
- const h = (n.x + 1) / 2 * a, f = (n.y + 1) / 2 * c;
1127
+ const h = (n.x + 1) / 2 * o, f = (n.y + 1) / 2 * a;
1128
1128
  let p = 0, g = 1;
1129
1129
  typeof this.clipArea == "number" ? g = this.clipArea : this.clipArea.endsWith("%") ? g = parseFloat(this.clipArea) / 100 : this.clipArea.endsWith("px") && (p = parseFloat(this.clipArea));
1130
- const v = d.scale.x * g + 0.5, x = d.scale.y * g + 0.5, M = h - v / 2, A = f - x / 2, S = (M * this.qualityFactor - p) / l, E = (A * this.qualityFactor - p) / l, C = (v * this.qualityFactor + p * 2) / l, b = (x * this.qualityFactor + p * 2) / l;
1131
- this.renderer.setScissor(S, E, C, b), this.renderer.render(this.scene, this.camera);
1130
+ const m = d.scale.x * g + 0.5, x = d.scale.y * g + 0.5, S = h - m / 2, L = f - x / 2, T = (S * this.qualityFactor - p) / l, E = (L * this.qualityFactor - p) / l, b = (m * this.qualityFactor + p * 2) / l, w = (x * this.qualityFactor + p * 2) / l;
1131
+ this.renderer.setScissor(T, E, b, w), this.renderer.render(this.scene, this.camera);
1132
1132
  }
1133
- this.renderer.setScissorTest(!1), this.renderer.autoClear = !0, this.renderer.setRenderTarget(null), this.camera.layers.set(this.getSceneLayer()), this.renderer.setClearColor(i, o);
1133
+ this.renderer.setScissorTest(!1), this.renderer.autoClear = !0, this.renderer.setRenderTarget(null), this.camera.layers.set(this.getSceneLayer()), this.renderer.setClearColor(i, c);
1134
1134
  }
1135
1135
  render() {
1136
- for (let e = 0; e < U.MAX_LAYERS; e++) {
1136
+ for (let e = 0; e < O.MAX_LAYERS; e++) {
1137
1137
  const t = e + 1;
1138
1138
  this.captureRenderTarget(
1139
1139
  this.travelersByLayer[e],
@@ -1144,23 +1144,23 @@ class rt {
1144
1144
  this.renderer.render(this.scene, this.camera);
1145
1145
  }
1146
1146
  syncMeshesByDOM() {
1147
- const e = this.targetRect.left + window.scrollX, t = this.targetRect.top + window.scrollY, r = this.renderer.getPixelRatio(), i = this.renderer.domElement.width / r, o = this.renderer.domElement.height / r;
1147
+ const e = this.targetRect.left + window.scrollX, t = this.targetRect.top + window.scrollY, r = this.renderer.getPixelRatio(), i = this.renderer.domElement.width / r, c = this.renderer.domElement.height / r;
1148
1148
  this.scene.children.forEach((n) => {
1149
- const a = n;
1150
- if (!a.userData || !a.userData.domElement)
1149
+ const o = n;
1150
+ if (!o.userData || !o.userData.domElement)
1151
1151
  return;
1152
- const c = a.userData.domElement;
1153
- if (!c.isConnected)
1152
+ const a = o.userData.domElement;
1153
+ if (!a.isConnected)
1154
1154
  return;
1155
1155
  let l;
1156
- if (c.nodeType === Node.TEXT_NODE) {
1156
+ if (a.nodeType === Node.TEXT_NODE) {
1157
1157
  const h = document.createRange();
1158
- h.selectNode(c), l = h.getBoundingClientRect();
1158
+ h.selectNode(a), l = h.getBoundingClientRect();
1159
1159
  } else
1160
- l = c.getBoundingClientRect();
1161
- const d = a.userData.domRect;
1160
+ l = a.getBoundingClientRect();
1161
+ const d = o.userData.domRect;
1162
1162
  if (!d || Math.abs(l.x - d.x) > 0.5 || Math.abs(l.y - d.y) > 0.5 || Math.abs(l.width - d.width) > 0.5 || Math.abs(l.height - d.height) > 0.5) {
1163
- a.userData.domRect = {
1163
+ o.userData.domRect = {
1164
1164
  x: l.x,
1165
1165
  y: l.y,
1166
1166
  width: l.width,
@@ -1171,14 +1171,30 @@ class rt {
1171
1171
  h = l.x - window.innerWidth / 2 + l.width / 2, f = -l.y + window.innerHeight / 2 - l.height / 2;
1172
1172
  else {
1173
1173
  const p = l.x - e, g = l.y - t;
1174
- h = p - i / 2 + l.width / 2, f = -g + o / 2 - l.height / 2;
1174
+ h = p - i / 2 + l.width / 2, f = -g + c / 2 - l.height / 2;
1175
1175
  }
1176
- if (a.position.setX(h), a.position.setY(f), a.scale.set(l.width, l.height, 1), a.updateMatrixWorld(), a.material instanceof y.ShaderMaterial && z.forceUpdateUniforms(a.material, {
1176
+ if (o.position.setX(h), o.position.setY(f), o.scale.set(l.width, l.height, 1), o.updateMatrixWorld(), o.material instanceof y.ShaderMaterial && X.forceUpdateUniforms(o.material, {
1177
1177
  width: l.width,
1178
1178
  height: l.height
1179
- }), a.userData.nativeMesh) {
1180
- const p = a.userData.nativeMesh;
1181
- p.position.setX(h), p.position.setY(f), p.scale.set(l.width, l.height, 1), p.updateMatrixWorld();
1179
+ }), o.userData.nativeMesh) {
1180
+ const p = o.userData.nativeMesh;
1181
+ let g = l.width, m = l.height, x = h, S = f;
1182
+ if (o.userData.nativeTransform) {
1183
+ const L = o.userData.nativeTransform, T = L.match(/scale\(([\d.]+%?)\)/);
1184
+ if (T) {
1185
+ let b = parseFloat(T[1]);
1186
+ T[1].includes("%") && (b /= 100), g *= b, m *= b;
1187
+ }
1188
+ const E = L.match(/translate\(([^,]+),\s*([^)]+)\)/);
1189
+ if (E) {
1190
+ const b = E[1].trim(), w = E[2].trim();
1191
+ let k = parseFloat(b);
1192
+ b.includes("%") && (k = k / 100 * l.width);
1193
+ let U = parseFloat(w);
1194
+ w.includes("%") && (U = U / 100 * l.height), x += k, S -= U;
1195
+ }
1196
+ }
1197
+ p.position.setX(x), p.position.setY(S), p.scale.set(g, m, 1), p.updateMatrixWorld();
1182
1198
  }
1183
1199
  }
1184
1200
  });
@@ -1186,7 +1202,7 @@ class rt {
1186
1202
  }
1187
1203
  function it(s) {
1188
1204
  const e = s.textContent || "", t = [];
1189
- let r = "", i = null, o = -1;
1205
+ let r = "", i = null, c = -1;
1190
1206
  const n = (l, d) => {
1191
1207
  for (let h = 0; h < l.length; h++) {
1192
1208
  const f = l[h], p = document.createRange();
@@ -1196,7 +1212,7 @@ function it(s) {
1196
1212
  r += f;
1197
1213
  continue;
1198
1214
  }
1199
- o === -1 || Math.abs(g.top - o) > g.height / 2 ? (r && i && t.push({
1215
+ c === -1 || Math.abs(g.top - c) > g.height / 2 ? (r && i && t.push({
1200
1216
  text: r,
1201
1217
  rect: {
1202
1218
  left: i.left,
@@ -1209,26 +1225,26 @@ function it(s) {
1209
1225
  top: g.top,
1210
1226
  right: g.right,
1211
1227
  bottom: g.bottom
1212
- }, o = 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(
1228
+ }, c = 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(
1213
1229
  i.bottom,
1214
1230
  g.bottom
1215
1231
  )));
1216
1232
  }
1217
- }, a = e.match(/[^\s\-]+\-?|\-|\s+/g) || [];
1218
- let c = 0;
1219
- for (const l of a) {
1233
+ }, o = e.match(/[^\s\-]+\-?|\-|\s+/g) || [];
1234
+ let a = 0;
1235
+ for (const l of o) {
1220
1236
  const d = document.createRange();
1221
- d.setStart(s, c), d.setEnd(s, c + l.length);
1237
+ d.setStart(s, a), d.setEnd(s, a + l.length);
1222
1238
  const h = d.getClientRects();
1223
1239
  if (h.length > 1)
1224
- n(l, c);
1240
+ n(l, a);
1225
1241
  else {
1226
1242
  const f = h.length === 1 ? h[0] : d.getBoundingClientRect();
1227
1243
  if (f.width === 0 && f.height === 0) {
1228
- r += l, c += l.length;
1244
+ r += l, a += l.length;
1229
1245
  continue;
1230
1246
  }
1231
- o === -1 || Math.abs(f.top - o) > f.height / 2 ? (r && i && t.push({
1247
+ c === -1 || Math.abs(f.top - c) > f.height / 2 ? (r && i && t.push({
1232
1248
  text: r,
1233
1249
  rect: {
1234
1250
  left: i.left,
@@ -1241,12 +1257,12 @@ function it(s) {
1241
1257
  top: f.top,
1242
1258
  right: f.right,
1243
1259
  bottom: f.bottom
1244
- }, o = f.top) : (r += l, 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(
1260
+ }, c = f.top) : (r += l, 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(
1245
1261
  i.bottom,
1246
1262
  f.bottom
1247
1263
  )));
1248
1264
  }
1249
- c += l.length;
1265
+ a += l.length;
1250
1266
  }
1251
1267
  return r && i && t.push({
1252
1268
  text: r,
@@ -1276,241 +1292,241 @@ function Re(s) {
1276
1292
  letterSpacing: r
1277
1293
  };
1278
1294
  }
1279
- function ke(s, e = q | Z | Ye | ce | ie, t, r = 1, i = 0, o = 2, n, a) {
1295
+ function ke(s, e = q | Z | Ye | ce | ie, t, r = 1, i = 0, c = 2, n, o) {
1280
1296
  var de, ue, fe, ge, pe, me;
1281
1297
  if (s.nodeType === Node.TEXT_NODE) {
1282
- const m = s;
1283
- if (!m.textContent || !m.textContent.trim())
1298
+ const v = s;
1299
+ if (!v.textContent || !v.textContent.trim())
1284
1300
  return null;
1285
- const R = m.textContent.replace(/\s+/g, " ");
1286
- if (R.length === 0)
1301
+ const M = v.textContent.replace(/\s+/g, " ");
1302
+ if (M.length === 0)
1287
1303
  return null;
1288
- const k = it(m);
1289
- if (k.length === 0)
1304
+ const I = it(v);
1305
+ if (I.length === 0)
1290
1306
  return null;
1291
- const _ = m.parentElement, L = _ ? window.getComputedStyle(_) : null;
1292
- if (!L)
1307
+ const F = v.parentElement, A = F ? window.getComputedStyle(F) : null;
1308
+ if (!A)
1293
1309
  return null;
1294
- const V = Math.min(...k.map((w) => w.rect.left)), B = Math.min(...k.map((w) => w.rect.top)), H = Math.max(...k.map((w) => w.rect.left + w.rect.width)), T = Math.max(...k.map((w) => w.rect.top + w.rect.height));
1310
+ const V = Math.min(...I.map((C) => C.rect.left)), _ = Math.min(...I.map((C) => C.rect.top)), H = Math.max(...I.map((C) => C.rect.left + C.rect.width)), R = Math.max(...I.map((C) => C.rect.top + C.rect.height));
1295
1311
  return {
1296
1312
  id: Math.random().toString(36).substring(2, 9),
1297
1313
  type: "TEXT",
1298
- element: m,
1314
+ element: v,
1299
1315
  rect: {
1300
1316
  x: V + window.scrollX,
1301
- y: B + window.scrollY,
1317
+ y: _ + window.scrollY,
1302
1318
  width: H - V,
1303
- height: T - B
1319
+ height: R - _
1304
1320
  },
1305
1321
  styles: {
1306
1322
  backgroundColor: "transparent",
1307
1323
  backgroundImage: "",
1308
- opacity: _ && _.dataset[P.KEY] === P.VALUES.HIDE ? 1 : parseFloat(L.opacity),
1309
- zIndex: (isNaN(parseInt(L.zIndex)) ? 0 : parseInt(L.zIndex)) + i,
1324
+ opacity: F && F.dataset[P.KEY] === P.VALUES.HIDE ? 1 : parseFloat(A.opacity),
1325
+ zIndex: (isNaN(parseInt(A.zIndex)) ? 0 : parseInt(A.zIndex)) + i,
1310
1326
  borderRadius: "0px",
1311
1327
  borderColor: "transparent",
1312
1328
  borderWidth: "0px",
1313
1329
  isTraveler: !1
1314
1330
  },
1315
- textContent: R,
1316
- textLines: k.map((w) => ({
1317
- text: w.text.trim(),
1331
+ textContent: M,
1332
+ textLines: I.map((C) => ({
1333
+ text: C.text.trim(),
1318
1334
  rect: {
1319
- x: w.rect.left + window.scrollX,
1320
- y: w.rect.top + window.scrollY,
1321
- width: w.rect.width,
1322
- height: w.rect.height
1335
+ x: C.rect.left + window.scrollX,
1336
+ y: C.rect.top + window.scrollY,
1337
+ width: C.rect.width,
1338
+ height: C.rect.height
1323
1339
  }
1324
1340
  })),
1325
- textStyles: Re(L),
1341
+ textStyles: Re(A),
1326
1342
  dirtyMask: e,
1327
1343
  visibility: t,
1328
1344
  isTraveler: !1,
1329
1345
  captureLayer: r,
1330
- isFixed: L.position === "fixed",
1346
+ isFixed: A.position === "fixed",
1331
1347
  nativeLayer: n,
1332
- nativeStyles: a ? $($({
1348
+ nativeStyles: o ? $($({
1333
1349
  backgroundColor: "transparent",
1334
1350
  backgroundImage: "",
1335
- opacity: _ && _.dataset[P.KEY] === P.VALUES.HIDE ? 1 : parseFloat(L.opacity),
1336
- zIndex: (isNaN(parseInt(L.zIndex)) ? 0 : parseInt(L.zIndex)) + i,
1351
+ opacity: F && F.dataset[P.KEY] === P.VALUES.HIDE ? 1 : parseFloat(A.opacity),
1352
+ zIndex: (isNaN(parseInt(A.zIndex)) ? 0 : parseInt(A.zIndex)) + i,
1337
1353
  borderRadius: "0px",
1338
1354
  borderColor: "transparent",
1339
1355
  borderWidth: "0px",
1340
1356
  isTraveler: !1
1341
- }, Re(L)), a) : void 0,
1342
- nativeRect: a ? {
1357
+ }, Re(A)), o) : void 0,
1358
+ nativeRect: o ? {
1343
1359
  x: V + window.scrollX,
1344
- y: B + window.scrollY,
1360
+ y: _ + window.scrollY,
1345
1361
  width: H - V,
1346
- height: T - B
1362
+ height: R - _
1347
1363
  } : void 0,
1348
1364
  children: []
1349
1365
  };
1350
1366
  }
1351
1367
  if (s.nodeType !== Node.ELEMENT_NODE)
1352
1368
  return null;
1353
- const c = s, l = c.dataset[N.KEY];
1369
+ const a = s, l = a.dataset[z.KEY];
1354
1370
  let d = t, h = t;
1355
1371
  if (l) {
1356
- const m = new Set(l.split(/\s+/));
1357
- for (const R of m)
1358
- if (!Ce.includes(R))
1372
+ const v = new Set(l.split(/\s+/));
1373
+ for (const M of v)
1374
+ if (!Ce.includes(M))
1359
1375
  throw new Error(
1360
- `[MirageEngine] Invalid filter token: '${R}'. Expected one of: 'include-tree', 'exclude-tree', 'include-self', 'exclude-self', 'end'.`
1376
+ `[MirageEngine] Invalid filter token: '${M}'. Expected one of: 'include-tree', 'exclude-tree', 'include-self', 'exclude-self', 'end'.`
1361
1377
  );
1362
- if (m.has(N.VALUES.END))
1378
+ if (v.has(z.VALUES.END))
1363
1379
  return null;
1364
- if (m.has(N.VALUES.INCLUDE_TREE) && m.has(N.VALUES.EXCLUDE_TREE))
1380
+ if (v.has(z.VALUES.INCLUDE_TREE) && v.has(z.VALUES.EXCLUDE_TREE))
1365
1381
  throw new Error(
1366
1382
  "[MirageEngine] Conflicting filters: 'include-tree' and 'exclude-tree' cannot be used together on the same element."
1367
1383
  );
1368
- if (m.has(N.VALUES.INCLUDE_SELF) && m.has(N.VALUES.EXCLUDE_SELF))
1384
+ if (v.has(z.VALUES.INCLUDE_SELF) && v.has(z.VALUES.EXCLUDE_SELF))
1369
1385
  throw new Error(
1370
1386
  "[MirageEngine] Conflicting filters: 'include-self' and 'exclude-self' cannot be used together on the same element."
1371
1387
  );
1372
- m.has(N.VALUES.INCLUDE_TREE) ? d = d | W : m.has(N.VALUES.EXCLUDE_TREE) && (d = d & ~W), h = d, m.has(N.VALUES.INCLUDE_SELF) ? h = h | W : m.has(N.VALUES.EXCLUDE_SELF) && (h = h & ~W);
1388
+ v.has(z.VALUES.INCLUDE_TREE) ? d = d | W : v.has(z.VALUES.EXCLUDE_TREE) && (d = d & ~W), h = d, v.has(z.VALUES.INCLUDE_SELF) ? h = h | W : v.has(z.VALUES.EXCLUDE_SELF) && (h = h & ~W);
1373
1389
  }
1374
- const f = c.dataset[Y.KEY];
1390
+ const f = a.dataset[Y.KEY];
1375
1391
  if (f) {
1376
- const m = new Set(f.split(/\s+/));
1377
- for (const R of m)
1378
- if (!Ce.includes(R))
1392
+ const v = new Set(f.split(/\s+/));
1393
+ for (const M of v)
1394
+ if (!Ce.includes(M))
1379
1395
  throw new Error(
1380
- `[MirageEngine] Invalid select token: '${R}'. Expected one of: 'include-tree', 'exclude-tree', 'include-self', 'exclude-self', 'end'.`
1396
+ `[MirageEngine] Invalid select token: '${M}'. Expected one of: 'include-tree', 'exclude-tree', 'include-self', 'exclude-self', 'end'.`
1381
1397
  );
1382
- if (m.has(Y.VALUES.END))
1398
+ if (v.has(Y.VALUES.END))
1383
1399
  return null;
1384
- if (m.has(Y.VALUES.INCLUDE_TREE) && m.has(Y.VALUES.EXCLUDE_TREE))
1400
+ if (v.has(Y.VALUES.INCLUDE_TREE) && v.has(Y.VALUES.EXCLUDE_TREE))
1385
1401
  throw new Error(
1386
1402
  "[MirageEngine] Conflicting selects: 'include-tree' and 'exclude-tree' cannot be used together on the same element."
1387
1403
  );
1388
- if (m.has(Y.VALUES.INCLUDE_SELF) && m.has(Y.VALUES.EXCLUDE_SELF))
1404
+ if (v.has(Y.VALUES.INCLUDE_SELF) && v.has(Y.VALUES.EXCLUDE_SELF))
1389
1405
  throw new Error(
1390
1406
  "[MirageEngine] Conflicting selects: 'include-self' and 'exclude-self' cannot be used together on the same element."
1391
1407
  );
1392
- m.has(Y.VALUES.INCLUDE_TREE) ? d = d | K : m.has(Y.VALUES.EXCLUDE_TREE) && (d = d & ~K), h = d, m.has(Y.VALUES.INCLUDE_SELF) ? h = h | K : m.has(Y.VALUES.EXCLUDE_SELF) && (h = h & ~K);
1408
+ v.has(Y.VALUES.INCLUDE_TREE) ? d = d | K : v.has(Y.VALUES.EXCLUDE_TREE) && (d = d & ~K), h = d, v.has(Y.VALUES.INCLUDE_SELF) ? h = h | K : v.has(Y.VALUES.EXCLUDE_SELF) && (h = h & ~K);
1393
1409
  }
1394
- const p = c.dataset[U.KEY];
1395
- let g = !1, v = a ? $({}, a) : {}, x = n;
1410
+ const p = a.dataset[O.KEY];
1411
+ let g = !1, m = o ? $({}, o) : {}, x = n;
1396
1412
  if (p) {
1397
- let m = 1;
1398
- const R = p.indexOf("{"), k = p.lastIndexOf("}");
1399
- let _ = p;
1400
- if (R !== -1 && k !== -1 && k > R) {
1401
- _ = p.substring(0, R).trim();
1402
- const T = p.substring(R, k + 1);
1413
+ let v = 1;
1414
+ const M = p.indexOf("{"), I = p.lastIndexOf("}");
1415
+ let F = p;
1416
+ if (M !== -1 && I !== -1 && I > M) {
1417
+ F = p.substring(0, M).trim();
1418
+ const R = p.substring(M, I + 1);
1403
1419
  try {
1404
- v = new Function("return " + T)();
1405
- } catch (w) {
1420
+ m = new Function("return " + R)();
1421
+ } catch (C) {
1406
1422
  console.warn(
1407
- `[MirageEngine] Failed to parse travel styles JSON: ${T}`
1423
+ `[MirageEngine] Failed to parse travel styles JSON: ${R}`
1408
1424
  );
1409
1425
  }
1410
1426
  }
1411
- const L = _.split(/\s+/);
1427
+ const A = F.split(/\s+/);
1412
1428
  let V = !1;
1413
- const B = L.indexOf(U.VALUES.TRAVELER);
1414
- if (B !== -1) {
1429
+ const _ = A.indexOf(O.VALUES.TRAVELER);
1430
+ if (_ !== -1) {
1415
1431
  g = !0, V = !0;
1416
- const T = L[B + 1];
1417
- if (T && !isNaN(parseInt(T, 10)))
1418
- m = parseInt(T, 10);
1432
+ const R = A[_ + 1];
1433
+ if (R && !isNaN(parseInt(R, 10)))
1434
+ v = parseInt(R, 10);
1419
1435
  else {
1420
- const w = L.find((j) => !isNaN(parseInt(j, 10)));
1421
- w && (m = parseInt(w, 10));
1436
+ const C = A.find((j) => !isNaN(parseInt(j, 10)));
1437
+ C && (v = parseInt(C, 10));
1422
1438
  }
1423
1439
  }
1424
- const H = L.indexOf(U.VALUES.NATIVE);
1440
+ const H = A.indexOf(O.VALUES.NATIVE);
1425
1441
  if (H !== -1) {
1426
- const T = L[H + 1];
1427
- if (T && !isNaN(parseInt(T, 10)))
1428
- x = parseInt(T, 10);
1442
+ const R = A[H + 1];
1443
+ if (R && !isNaN(parseInt(R, 10)))
1444
+ x = parseInt(R, 10);
1429
1445
  else if (!g) {
1430
- const w = L.find((j) => !isNaN(parseInt(j, 10)));
1431
- w && (x = parseInt(w, 10));
1446
+ const C = A.find((j) => !isNaN(parseInt(j, 10)));
1447
+ C && (x = parseInt(C, 10));
1432
1448
  }
1433
1449
  }
1434
1450
  if (V) {
1435
- const T = m + 1;
1436
- if (T < r)
1451
+ const R = v + 1;
1452
+ if (R < r)
1437
1453
  throw new Error(
1438
- `[MirageEngine] Traveler layer (${m}) cannot be smaller than inherited capture layer (${r - 1}).`
1454
+ `[MirageEngine] Traveler layer (${v}) cannot be smaller than inherited capture layer (${r - 1}).`
1439
1455
  );
1440
- r = Math.min(T, U.MAX_LAYERS + 1);
1456
+ r = Math.min(R, O.MAX_LAYERS + 1);
1441
1457
  }
1442
1458
  }
1443
- const M = c.dataset[Ve.KEY];
1444
- let A;
1445
- M && (A = JSON.parse(M));
1446
- const S = c.getBoundingClientRect(), E = window.getComputedStyle(c);
1447
- if (S.width === 0 || S.height === 0 || E.display === "none")
1459
+ const S = a.dataset[Ve.KEY];
1460
+ let L;
1461
+ S && (L = JSON.parse(S));
1462
+ const T = a.getBoundingClientRect(), E = window.getComputedStyle(a);
1463
+ if (T.width === 0 || T.height === 0 || E.display === "none")
1448
1464
  return null;
1449
- let C = c.getAttribute("data-mid");
1450
- C || (C = Math.random().toString(36).substring(2, 11), c.setAttribute("data-mid", C));
1451
- const b = parseInt(E.zIndex), O = (isNaN(b) ? 0 : b) + i;
1452
- let X;
1453
- if (c.tagName === "IMG")
1454
- X = c.src;
1455
- else if (c.tagName.toLowerCase() === "svg") {
1456
- const m = c.cloneNode(!0), R = v == null ? void 0 : v.color, k = v == null ? void 0 : v.fill, _ = v == null ? void 0 : v.stroke, L = v == null ? void 0 : v.opacity, V = (w, j) => {
1457
- const F = window.getComputedStyle(w), Q = j, Be = F.fill === F.color, Oe = F.stroke === F.color, se = k || (Be ? R : void 0) || F.fill;
1465
+ let b = a.getAttribute("data-mid");
1466
+ b || (b = Math.random().toString(36).substring(2, 11), a.setAttribute("data-mid", b));
1467
+ const w = parseInt(E.zIndex), k = (isNaN(w) ? 0 : w) + i;
1468
+ let U;
1469
+ if (a.tagName === "IMG")
1470
+ U = a.src;
1471
+ else if (a.tagName.toLowerCase() === "svg") {
1472
+ const v = a.cloneNode(!0), M = m == null ? void 0 : m.color, I = m == null ? void 0 : m.fill, F = m == null ? void 0 : m.stroke, A = m == null ? void 0 : m.opacity, V = (C, j) => {
1473
+ const N = window.getComputedStyle(C), Q = j, Be = N.fill === N.color, Oe = N.stroke === N.color, se = I || (Be ? M : void 0) || N.fill;
1458
1474
  se && se !== "none" && (Q.style.fill = se);
1459
- const ne = _ || (Oe ? R : void 0) || F.stroke;
1460
- ne && ne !== "none" && (Q.style.stroke = ne), F.strokeWidth && F.strokeWidth !== "0px" && (Q.style.strokeWidth = F.strokeWidth);
1461
- const ve = R || F.color;
1475
+ const ne = F || (Oe ? M : void 0) || N.stroke;
1476
+ ne && ne !== "none" && (Q.style.stroke = ne), N.strokeWidth && N.strokeWidth !== "0px" && (Q.style.strokeWidth = N.strokeWidth);
1477
+ const ve = M || N.color;
1462
1478
  ve && (Q.style.color = ve);
1463
- const oe = L || F.opacity;
1479
+ const oe = A || N.opacity;
1464
1480
  oe && oe !== "1" && (Q.style.opacity = oe);
1465
- for (let te = 0; te < w.children.length; te++)
1466
- V(w.children[te], j.children[te]);
1481
+ for (let te = 0; te < C.children.length; te++)
1482
+ V(C.children[te], j.children[te]);
1467
1483
  };
1468
- V(c, m);
1469
- const B = c.getBoundingClientRect(), H = window.devicePixelRatio * o;
1470
- m.hasAttribute("viewBox") || m.setAttribute("viewBox", `0 0 ${B.width} ${B.height}`), m.setAttribute("width", (B.width * H).toString()), m.setAttribute("height", (B.height * H).toString());
1471
- let T = new XMLSerializer().serializeToString(m);
1472
- T.includes("xmlns=") || (T = T.replace(
1484
+ V(a, v);
1485
+ const _ = a.getBoundingClientRect(), H = window.devicePixelRatio * c;
1486
+ v.hasAttribute("viewBox") || v.setAttribute("viewBox", `0 0 ${_.width} ${_.height}`), v.setAttribute("width", (_.width * H).toString()), v.setAttribute("height", (_.height * H).toString());
1487
+ let R = new XMLSerializer().serializeToString(v);
1488
+ R.includes("xmlns=") || (R = R.replace(
1473
1489
  "<svg",
1474
1490
  '<svg xmlns="http://www.w3.org/2000/svg"'
1475
- )), X = `data:image/svg+xml;utf8,${encodeURIComponent(T)}`;
1491
+ )), U = `data:image/svg+xml;utf8,${encodeURIComponent(R)}`;
1476
1492
  } else if (E.backgroundImage && E.backgroundImage !== "none") {
1477
- const m = E.backgroundImage.match(/url\(['"]?(.*?)['"]?\)/);
1478
- m && (X = m[1]);
1493
+ const v = E.backgroundImage.match(/url\(['"]?(.*?)['"]?\)/);
1494
+ v && (U = v[1]);
1479
1495
  }
1480
- const I = {
1496
+ const B = {
1481
1497
  backgroundColor: E.backgroundColor,
1482
1498
  backgroundImage: E.backgroundImage,
1483
- opacity: c.dataset[P.KEY] === P.VALUES.HIDE ? 1 : parseFloat(E.opacity),
1484
- zIndex: O,
1499
+ opacity: a.dataset[P.KEY] === P.VALUES.HIDE ? 1 : parseFloat(E.opacity),
1500
+ zIndex: k,
1485
1501
  borderRadius: E.borderRadius,
1486
1502
  borderColor: E.borderColor,
1487
1503
  borderWidth: E.borderWidth,
1488
- imageSrc: X,
1504
+ imageSrc: U,
1489
1505
  isTraveler: g
1490
- }, G = I;
1506
+ }, G = B;
1491
1507
  let Ie, Ue;
1492
1508
  const he = [];
1493
- return c.tagName.toLowerCase() !== "svg" && Array.from(c.childNodes).forEach((m) => {
1494
- const R = m.nodeType === Node.TEXT_NODE ? h : d, k = ke(
1495
- m,
1509
+ return a.tagName.toLowerCase() !== "svg" && Array.from(a.childNodes).forEach((v) => {
1510
+ const M = v.nodeType === Node.TEXT_NODE ? h : d, I = ke(
1511
+ v,
1496
1512
  e,
1497
- R,
1513
+ M,
1498
1514
  r,
1499
- O,
1500
- o,
1501
- m.nodeType === Node.TEXT_NODE ? x : void 0,
1502
- m.nodeType === Node.TEXT_NODE && Object.keys(v).length > 0 ? v : void 0
1515
+ k,
1516
+ c,
1517
+ v.nodeType === Node.TEXT_NODE ? x : void 0,
1518
+ v.nodeType === Node.TEXT_NODE && Object.keys(m).length > 0 ? m : void 0
1503
1519
  );
1504
- k && he.push(k);
1520
+ I && he.push(I);
1505
1521
  }), {
1506
- id: C,
1522
+ id: b,
1507
1523
  type: "BOX",
1508
- element: c,
1524
+ element: a,
1509
1525
  rect: {
1510
- x: S.left + window.scrollX,
1511
- y: S.top + window.scrollY,
1512
- width: S.width,
1513
- height: S.height
1526
+ x: T.left + window.scrollX,
1527
+ y: T.top + window.scrollY,
1528
+ width: T.width,
1529
+ height: T.height
1514
1530
  },
1515
1531
  styles: G,
1516
1532
  textContent: Ie,
@@ -1520,42 +1536,43 @@ function ke(s, e = q | Z | Ye | ce | ie, t, r = 1, i = 0, o = 2, n, a) {
1520
1536
  isTraveler: g,
1521
1537
  captureLayer: r,
1522
1538
  nativeLayer: x,
1523
- nativeStyles: x !== void 0 ? be($({}, I), {
1524
- backgroundColor: (de = v.backgroundColor) != null ? de : I.backgroundColor,
1525
- backgroundImage: (ue = v.backgroundImage) != null ? ue : I.backgroundImage,
1526
- opacity: (fe = v.opacity) != null ? fe : I.opacity,
1527
- zIndex: v.zIndex !== void 0 ? v.zIndex + O : I.zIndex,
1528
- borderRadius: (ge = v.borderRadius) != null ? ge : I.borderRadius,
1529
- borderColor: (pe = v.borderColor) != null ? pe : I.borderColor,
1530
- borderWidth: (me = v.borderWidth) != null ? me : I.borderWidth,
1531
- isTraveler: I.isTraveler
1539
+ nativeStyles: x !== void 0 ? be($({}, B), {
1540
+ backgroundColor: (de = m.backgroundColor) != null ? de : B.backgroundColor,
1541
+ backgroundImage: (ue = m.backgroundImage) != null ? ue : B.backgroundImage,
1542
+ opacity: (fe = m.opacity) != null ? fe : B.opacity,
1543
+ zIndex: m.zIndex !== void 0 ? m.zIndex + k : B.zIndex,
1544
+ borderRadius: (ge = m.borderRadius) != null ? ge : B.borderRadius,
1545
+ borderColor: (pe = m.borderColor) != null ? pe : B.borderColor,
1546
+ borderWidth: (me = m.borderWidth) != null ? me : B.borderWidth,
1547
+ isTraveler: B.isTraveler,
1548
+ transform: m.transform
1532
1549
  }) : void 0,
1533
1550
  nativeRect: x !== void 0 ? {
1534
- x: v.x !== void 0 ? parseFloat(v.x) : S.left + window.scrollX,
1535
- y: v.y !== void 0 ? parseFloat(v.y) : S.top + window.scrollY,
1536
- width: v.width !== void 0 ? parseFloat(v.width) : S.width,
1537
- height: v.height !== void 0 ? parseFloat(v.height) : S.height
1551
+ x: m.x !== void 0 ? parseFloat(m.x) : T.left + window.scrollX,
1552
+ y: m.y !== void 0 ? parseFloat(m.y) : T.top + window.scrollY,
1553
+ width: m.width !== void 0 ? parseFloat(m.width) : T.width,
1554
+ height: m.height !== void 0 ? parseFloat(m.height) : T.height
1538
1555
  } : void 0,
1539
1556
  isFixed: E.position === "fixed",
1540
1557
  children: he,
1541
- shaderHooks: A
1558
+ shaderHooks: L
1542
1559
  };
1543
1560
  }
1544
1561
  function st(s, e) {
1545
1562
  e.size !== 0 && e.forEach((t, r) => {
1546
- var o, n, a, c;
1563
+ var c, n, o, a;
1547
1564
  const i = s.get(r);
1548
- !i || !i.userData.basePosition || (z.forceUpdateUniforms(i.material, {
1565
+ !i || !i.userData.basePosition || (X.forceUpdateUniforms(i.material, {
1549
1566
  backgroundColor: t.backgroundColor,
1550
1567
  backgroundImage: t.backgroundImage,
1551
1568
  opacity: t.opacity,
1552
- borderRadius: (n = t.borderRadius) != null ? n : (o = i.userData.baseStyles) == null ? void 0 : o.borderRadius
1569
+ borderRadius: (n = t.borderRadius) != null ? n : (c = i.userData.baseStyles) == null ? void 0 : c.borderRadius
1553
1570
  // width and height are no longer updated here, they are updated in syncMeshesByDOM
1554
- }), i.userData.nativeMesh && z.forceUpdateUniforms(i.userData.nativeMesh.material, {
1571
+ }), i.userData.nativeMesh && X.forceUpdateUniforms(i.userData.nativeMesh.material, {
1555
1572
  backgroundColor: t.backgroundColor,
1556
1573
  backgroundImage: t.backgroundImage,
1557
1574
  opacity: t.opacity,
1558
- borderRadius: (c = t.borderRadius) != null ? c : (a = i.userData.baseStyles) == null ? void 0 : a.borderRadius
1575
+ borderRadius: (a = t.borderRadius) != null ? a : (o = i.userData.baseStyles) == null ? void 0 : o.borderRadius
1559
1576
  }));
1560
1577
  });
1561
1578
  }
@@ -1568,19 +1585,19 @@ class nt {
1568
1585
  u(this, "tracker");
1569
1586
  this.target = e, this.renderer = t, this.registry = r, this.tracker = new Me(e, {
1570
1587
  resizeDebounce: i.resizeDebounce
1571
- }), this.tracker.onLayoutChange.add((o, n) => {
1572
- document.querySelector(`[${U.NAME}~='${U.VALUES.TRAVELER}']`) !== null && !this.isTravelEnabled && (this.isTravelEnabled = !0, this.renderer.createRenderTarget());
1573
- const c = ke(
1588
+ }), this.tracker.onLayoutChange.add((c, n) => {
1589
+ document.querySelector(`[${O.NAME}~='${O.VALUES.TRAVELER}']`) !== null && !this.isTravelEnabled && (this.isTravelEnabled = !0, this.renderer.createRenderTarget());
1590
+ const a = ke(
1574
1591
  this.target,
1575
- o,
1592
+ c,
1576
1593
  W,
1577
1594
  1,
1578
1595
  0,
1579
1596
  this.renderer.qualityFactor
1580
1597
  );
1581
- c && this.renderer.syncScene(c, n);
1582
- }), this.tracker.onStyleChange.add((o) => {
1583
- st(this.registry, o);
1598
+ a && this.renderer.syncScene(a, n);
1599
+ }), this.tracker.onStyleChange.add((c) => {
1600
+ st(this.registry, c);
1584
1601
  }), this.tracker.onRender.add(() => {
1585
1602
  this.renderer.syncMeshesByDOM(), this.renderer.render();
1586
1603
  });
@@ -1623,17 +1640,17 @@ class at {
1623
1640
  u(this, "syncer");
1624
1641
  u(this, "target");
1625
1642
  u(this, "registry");
1626
- var i, o, n;
1643
+ var i, c, n;
1627
1644
  if (this.target = e, this.registry = new ot(), !document.getElementById("mirage-engine-styles")) {
1628
- const a = document.createElement("style");
1629
- a.id = "mirage-engine-styles", a.textContent = `
1645
+ const o = document.createElement("style");
1646
+ o.id = "mirage-engine-styles", o.textContent = `
1630
1647
  [${P.NAME}="${P.VALUES.HIDE}"] {
1631
1648
  opacity: 0 !important;
1632
1649
  }
1633
- `, document.head.appendChild(a);
1650
+ `, document.head.appendChild(o);
1634
1651
  }
1635
1652
  let r;
1636
- if (t.mode === "duplicate" ? r = (o = (i = t.container) != null ? i : this.target.parentElement) != null ? o : void 0 : r = (n = this.target.parentElement) != null ? n : void 0, !r)
1653
+ if (t.mode === "duplicate" ? r = (c = (i = t.container) != null ? i : this.target.parentElement) != null ? c : void 0 : r = (n = this.target.parentElement) != null ? n : void 0, !r)
1637
1654
  throw new Error("[Mirage] Cannot find a container (parent or option).");
1638
1655
  this.renderer = new rt(
1639
1656
  this.target,
@@ -1672,10 +1689,10 @@ class at {
1672
1689
  ArrowUp: !1,
1673
1690
  ArrowDown: !1
1674
1691
  };
1675
- window.addEventListener("keydown", (o) => {
1676
- t[o.key] !== void 0 && (t[o.key] = !0);
1677
- }), window.addEventListener("keyup", (o) => {
1678
- t[o.key] !== void 0 && (t[o.key] = !1);
1692
+ window.addEventListener("keydown", (c) => {
1693
+ t[c.key] !== void 0 && (t[c.key] = !0);
1694
+ }), window.addEventListener("keyup", (c) => {
1695
+ t[c.key] !== void 0 && (t[c.key] = !1);
1679
1696
  });
1680
1697
  const r = 2, i = () => {
1681
1698
  requestAnimationFrame(i), t.ArrowRight && e.position.setX(e.position.x + r), t.ArrowLeft && e.position.setX(e.position.x - r), t.ArrowUp && e.position.setY(e.position.y + r), t.ArrowDown && e.position.setY(e.position.y - r);
@@ -1722,8 +1739,8 @@ class ct {
1722
1739
  const e = document.querySelectorAll(this.frontSelector);
1723
1740
  this.frontLayer && e.forEach((t) => {
1724
1741
  var n;
1725
- const r = t.getBoundingClientRect(), i = window.getComputedStyle(t), o = document.createElement("div");
1726
- o.className = "sand-placeholder", Object.assign(o.style, {
1742
+ const r = t.getBoundingClientRect(), i = window.getComputedStyle(t), c = document.createElement("div");
1743
+ c.className = "sand-placeholder", Object.assign(c.style, {
1727
1744
  display: i.display === "inline" ? "inline-block" : i.display,
1728
1745
  width: `${r.width}px`,
1729
1746
  height: `${r.height}px`,
@@ -1734,14 +1751,14 @@ class ct {
1734
1751
  marginRight: i.marginRight,
1735
1752
  visibility: "hidden",
1736
1753
  pointerEvents: "none"
1737
- }), (n = t.parentNode) == null || n.insertBefore(o, t), this.frontLayer.appendChild(t), Object.assign(t.style, {
1754
+ }), (n = t.parentNode) == null || n.insertBefore(c, t), this.frontLayer.appendChild(t), Object.assign(t.style, {
1738
1755
  position: "fixed",
1739
1756
  margin: "0",
1740
1757
  boxSizing: "border-box",
1741
1758
  width: `${r.width}px`,
1742
1759
  height: `${r.height}px`,
1743
1760
  pointerEvents: "auto"
1744
- }), this.items.push({ placeholder: o, original: t });
1761
+ }), this.items.push({ placeholder: c, original: t });
1745
1762
  });
1746
1763
  }
1747
1764
  setupHooks() {