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