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