mirage-engine 0.3.10 → 0.3.12
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 +469 -440
- package/dist/mirage-engine.umd.js +11 -11
- package/package.json +3 -3
package/dist/mirage-engine.js
CHANGED
|
@@ -1,47 +1,47 @@
|
|
|
1
1
|
var _e = Object.defineProperty, Fe = Object.defineProperties;
|
|
2
2
|
var Ne = Object.getOwnPropertyDescriptors;
|
|
3
|
-
var
|
|
3
|
+
var we = Object.getOwnPropertySymbols;
|
|
4
4
|
var ze = Object.prototype.hasOwnProperty, Xe = Object.prototype.propertyIsEnumerable;
|
|
5
|
-
var
|
|
5
|
+
var me = (s, e, t) => e in s ? _e(s, e, { enumerable: !0, configurable: !0, writable: !0, value: t }) : s[e] = t, J = (s, e) => {
|
|
6
6
|
for (var t in e || (e = {}))
|
|
7
|
-
ze.call(e, t) &&
|
|
8
|
-
if (
|
|
9
|
-
for (var t of
|
|
10
|
-
Xe.call(e, t) &&
|
|
7
|
+
ze.call(e, t) && me(s, t, e[t]);
|
|
8
|
+
if (we)
|
|
9
|
+
for (var t of we(e))
|
|
10
|
+
Xe.call(e, t) && me(s, t, e[t]);
|
|
11
11
|
return s;
|
|
12
|
-
},
|
|
13
|
-
var u = (s, e, t) => (
|
|
14
|
-
var
|
|
15
|
-
var
|
|
12
|
+
}, xe = (s, e) => Fe(s, Ne(e));
|
|
13
|
+
var u = (s, e, t) => (me(s, typeof e != "symbol" ? e + "" : e, t), t);
|
|
14
|
+
var Ee = (s, e, t) => new Promise((r, i) => {
|
|
15
|
+
var l = (a) => {
|
|
16
16
|
try {
|
|
17
17
|
o(t.next(a));
|
|
18
|
-
} catch (
|
|
19
|
-
i(
|
|
18
|
+
} catch (c) {
|
|
19
|
+
i(c);
|
|
20
20
|
}
|
|
21
21
|
}, n = (a) => {
|
|
22
22
|
try {
|
|
23
23
|
o(t.throw(a));
|
|
24
|
-
} catch (
|
|
25
|
-
i(
|
|
24
|
+
} catch (c) {
|
|
25
|
+
i(c);
|
|
26
26
|
}
|
|
27
|
-
}, o = (a) => a.done ? r(a.value) : Promise.resolve(a.value).then(
|
|
27
|
+
}, o = (a) => a.done ? r(a.value) : Promise.resolve(a.value).then(l, n);
|
|
28
28
|
o((t = t.apply(s, e)).next());
|
|
29
29
|
});
|
|
30
30
|
import * as y from "three";
|
|
31
|
-
const
|
|
31
|
+
const Ae = {
|
|
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
|
+
}, K = {
|
|
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
|
+
}, Ce = {
|
|
45
45
|
TRAVELER: "traveler",
|
|
46
46
|
NATIVE: "native",
|
|
47
47
|
CAPTURE_1: "1",
|
|
@@ -54,29 +54,29 @@ const Le = {
|
|
|
54
54
|
CAPTURE_8: "8",
|
|
55
55
|
CAPTURE_9: "9",
|
|
56
56
|
CAPTURE_10: "10"
|
|
57
|
-
},
|
|
57
|
+
}, _ = {
|
|
58
58
|
NAME: "data-mirage-travel",
|
|
59
59
|
KEY: "mirageTravel",
|
|
60
|
-
VALUES:
|
|
61
|
-
MAX_LAYERS: Object.keys(
|
|
62
|
-
},
|
|
60
|
+
VALUES: Ce,
|
|
61
|
+
MAX_LAYERS: Object.keys(Ce).length - 1
|
|
62
|
+
}, W = {
|
|
63
63
|
NAME: "data-mirage-filter",
|
|
64
64
|
KEY: "mirageFilter",
|
|
65
|
-
VALUES:
|
|
66
|
-
},
|
|
65
|
+
VALUES: Ae
|
|
66
|
+
}, $ = {
|
|
67
67
|
NAME: "data-mirage-select",
|
|
68
68
|
KEY: "mirageSelect",
|
|
69
|
-
VALUES:
|
|
69
|
+
VALUES: Ae
|
|
70
70
|
}, Ve = {
|
|
71
71
|
NAME: "data-mirage-shader",
|
|
72
72
|
KEY: "mirageShader"
|
|
73
|
-
},
|
|
73
|
+
}, Se = {
|
|
74
74
|
NAME: "data-mirage-sandwich",
|
|
75
75
|
KEY: "mirageSandwich",
|
|
76
76
|
VALUES: {
|
|
77
77
|
FRONT: "front"
|
|
78
78
|
}
|
|
79
|
-
},
|
|
79
|
+
}, de = 0, Q = 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 ? {
|
|
@@ -97,7 +97,7 @@ function He(s) {
|
|
|
97
97
|
}
|
|
98
98
|
return e;
|
|
99
99
|
}
|
|
100
|
-
class
|
|
100
|
+
class De {
|
|
101
101
|
constructor(e, t) {
|
|
102
102
|
u(this, "target");
|
|
103
103
|
u(this, "observer");
|
|
@@ -105,7 +105,7 @@ class Me {
|
|
|
105
105
|
u(this, "pendingStyles", /* @__PURE__ */ new Map());
|
|
106
106
|
u(this, "isDomDirty", !1);
|
|
107
107
|
u(this, "isRunning", !1);
|
|
108
|
-
u(this, "pendingMask",
|
|
108
|
+
u(this, "pendingMask", de);
|
|
109
109
|
u(this, "mutationTimer", null);
|
|
110
110
|
u(this, "cssTimer", null);
|
|
111
111
|
u(this, "resizeConfig");
|
|
@@ -120,7 +120,7 @@ class Me {
|
|
|
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 |= Q | ce, this.cssTimer = window.setTimeout(() => {
|
|
124
124
|
this.isDomDirty = !0, this.cssTimer = null;
|
|
125
125
|
}, 50)));
|
|
126
126
|
});
|
|
@@ -136,38 +136,38 @@ class Me {
|
|
|
136
136
|
u(this, "renderLoop", () => {
|
|
137
137
|
if (!this.isRunning)
|
|
138
138
|
return;
|
|
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 =
|
|
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 |= Q, this.isDomDirty = !0, this.scrollTimer = null;
|
|
143
143
|
}, 150)), this.pendingStyles.size > 0 && (this.onStyleChange.forEach((r) => r(this.pendingStyles)), this.pendingStyles.clear()), this.onRender.forEach((r) => r()), requestAnimationFrame(this.renderLoop);
|
|
144
144
|
});
|
|
145
|
-
var i,
|
|
145
|
+
var i, l;
|
|
146
146
|
this.target = e;
|
|
147
147
|
const r = (i = t.resizeDebounce) != null ? i : !0;
|
|
148
148
|
r === !1 ? this.resizeConfig = { enabled: !1, delay: 0 } : r === !0 ? this.resizeConfig = { enabled: !0, delay: 150 } : this.resizeConfig = {
|
|
149
149
|
enabled: !0,
|
|
150
|
-
delay: (
|
|
150
|
+
delay: (l = r.delay) != null ? l : 150,
|
|
151
151
|
onStart: r.onStart,
|
|
152
152
|
onEnd: r.onEnd
|
|
153
153
|
}, this.observer = new MutationObserver((n) => {
|
|
154
|
-
let o =
|
|
154
|
+
let o = de;
|
|
155
155
|
for (const a of n)
|
|
156
156
|
if (a.type === "childList")
|
|
157
|
-
o |=
|
|
158
|
-
|
|
157
|
+
o |= ue, a.removedNodes.length > 0 && a.removedNodes.forEach((c) => {
|
|
158
|
+
c instanceof HTMLElement && this.pendingDeletions.add(c);
|
|
159
159
|
});
|
|
160
160
|
else if (a.type === "attributes")
|
|
161
161
|
if (a.attributeName === "style") {
|
|
162
|
-
o |=
|
|
163
|
-
const
|
|
164
|
-
this.pendingStyles.set(
|
|
162
|
+
o |= Q | ce;
|
|
163
|
+
const c = a.target, d = He(c.style);
|
|
164
|
+
this.pendingStyles.set(c, d);
|
|
165
165
|
} else
|
|
166
|
-
a.attributeName === "class" ? o |=
|
|
166
|
+
a.attributeName === "class" ? o |= Q | ce : a.attributeName && a.attributeName.startsWith("data-") && (o |= Q | ce, a.attributeName.startsWith("data-mirage") && (o |= ue));
|
|
167
167
|
else
|
|
168
|
-
a.type === "characterData" && (o |=
|
|
169
|
-
if (o !==
|
|
170
|
-
if (this.pendingMask |= o, o &
|
|
168
|
+
a.type === "characterData" && (o |= ve | Q);
|
|
169
|
+
if (o !== de) {
|
|
170
|
+
if (this.pendingMask |= o, o & ue) {
|
|
171
171
|
this.clearTimers(), this.isDomDirty = !0;
|
|
172
172
|
return;
|
|
173
173
|
}
|
|
@@ -192,13 +192,13 @@ class Me {
|
|
|
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 P = 1, te = 2, U = {
|
|
196
196
|
BASE: 0,
|
|
197
197
|
SELECTED: 1,
|
|
198
198
|
getCaptureLayer: (s) => 31 - s,
|
|
199
199
|
HIDDEN: 31
|
|
200
|
-
},
|
|
201
|
-
class
|
|
200
|
+
}, Te = Object.values(W.VALUES);
|
|
201
|
+
class ke {
|
|
202
202
|
/**
|
|
203
203
|
* Calculates or retrieves the exact alphabetic baseline (in pixels) for the given font.
|
|
204
204
|
* @param font CSS font shorthand string (e.g., "400 16px Inter")
|
|
@@ -215,13 +215,13 @@ class Ae {
|
|
|
215
215
|
return 0;
|
|
216
216
|
const t = document.createElement("div"), r = document.createElement("span"), i = document.createElement("img");
|
|
217
217
|
t.style.visibility = "hidden", t.style.position = "absolute", t.style.top = "0px", t.style.left = "0px", t.style.font = e, t.style.margin = "0", t.style.padding = "0", t.style.border = "none", r.style.margin = "0", r.style.padding = "0", r.style.border = "none", r.style.lineHeight = "normal", i.width = 1, i.height = 1, i.style.verticalAlign = "baseline", r.appendChild(document.createTextNode("Hidden Text")), t.appendChild(r), t.appendChild(i), document.body.appendChild(t);
|
|
218
|
-
const
|
|
219
|
-
return document.body.removeChild(t),
|
|
218
|
+
const l = i.offsetTop - r.offsetTop;
|
|
219
|
+
return document.body.removeChild(t), l;
|
|
220
220
|
}
|
|
221
221
|
}
|
|
222
|
-
u(
|
|
222
|
+
u(ke, "cache", /* @__PURE__ */ new Map());
|
|
223
223
|
class Pe extends y.MeshBasicMaterial {
|
|
224
|
-
constructor(t, r, i,
|
|
224
|
+
constructor(t, r, i, l, n = 2) {
|
|
225
225
|
super({
|
|
226
226
|
transparent: !0,
|
|
227
227
|
side: y.FrontSide,
|
|
@@ -232,55 +232,55 @@ class Pe extends y.MeshBasicMaterial {
|
|
|
232
232
|
u(this, "qualityFactor");
|
|
233
233
|
if (this.canvas = document.createElement("canvas"), this.ctx = this.canvas.getContext("2d"), !this.ctx)
|
|
234
234
|
throw new Error("[Mirage] Failed to create canvas context");
|
|
235
|
-
this.qualityFactor = n, this.map = new y.CanvasTexture(this.canvas), this.map.colorSpace = y.LinearSRGBColorSpace, this.map.minFilter = y.LinearFilter, this.map.magFilter = y.LinearFilter, this.updateText(t, r, i,
|
|
235
|
+
this.qualityFactor = n, this.map = new y.CanvasTexture(this.canvas), this.map.colorSpace = y.LinearSRGBColorSpace, this.map.minFilter = y.LinearFilter, this.map.magFilter = y.LinearFilter, this.updateText(t, r, i, l);
|
|
236
236
|
}
|
|
237
237
|
wrapText(t, r) {
|
|
238
238
|
const i = t.split(`
|
|
239
|
-
`),
|
|
239
|
+
`), l = [];
|
|
240
240
|
return i.forEach((n) => {
|
|
241
241
|
const o = n.match(/[^\s\-]+\-?|\-|\s+/g) || [];
|
|
242
242
|
if (o.length === 0) {
|
|
243
|
-
|
|
243
|
+
l.push("");
|
|
244
244
|
return;
|
|
245
245
|
}
|
|
246
246
|
let a = o[0];
|
|
247
|
-
for (let
|
|
248
|
-
const d = o[
|
|
249
|
-
this.ctx.measureText(a + d).width <= r + 2 ? a += d : (a &&
|
|
247
|
+
for (let c = 1; c < o.length; c++) {
|
|
248
|
+
const d = o[c];
|
|
249
|
+
this.ctx.measureText(a + d).width <= r + 2 ? a += d : (a && l.push(a), a = d.trimStart());
|
|
250
250
|
}
|
|
251
|
-
a &&
|
|
252
|
-
}),
|
|
251
|
+
a && l.push(a);
|
|
252
|
+
}), l;
|
|
253
253
|
}
|
|
254
|
-
updateText(t, r, i,
|
|
254
|
+
updateText(t, r, i, l, n) {
|
|
255
255
|
n !== void 0 && (this.qualityFactor = n);
|
|
256
|
-
const a = (window.devicePixelRatio || 1) * this.qualityFactor,
|
|
257
|
-
this.canvas.width !==
|
|
258
|
-
const h = this.wrapText(t, i), f = r.lineHeight,
|
|
256
|
+
const a = (window.devicePixelRatio || 1) * this.qualityFactor, c = i * a, d = l * a;
|
|
257
|
+
this.canvas.width !== c || this.canvas.height !== d ? (this.canvas.width = c, this.canvas.height = d) : this.ctx.clearRect(0, 0, this.canvas.width, this.canvas.height), this.ctx.setTransform(a, 0, 0, a, 0, 0), this.ctx.font = r.font, this.ctx.fillStyle = r.color, this.ctx.textBaseline = "alphabetic", this.ctx.globalAlpha = 1;
|
|
258
|
+
const h = this.wrapText(t, i), f = r.lineHeight, v = ke.getBaseline(r.font);
|
|
259
259
|
h.forEach((g, m) => {
|
|
260
|
-
const b = m * f +
|
|
261
|
-
let
|
|
262
|
-
r.textAlign === "center" ?
|
|
260
|
+
const b = m * f + v;
|
|
261
|
+
let L = 0;
|
|
262
|
+
r.textAlign === "center" ? L = i / 2 : r.textAlign === "right" && (L = i), this.ctx.textAlign = r.textAlign, this.ctx.fillText(g, L, b);
|
|
263
263
|
}), this.map && (this.map.needsUpdate = !0);
|
|
264
264
|
}
|
|
265
265
|
dispose() {
|
|
266
266
|
this.map && this.map.dispose(), super.dispose();
|
|
267
267
|
}
|
|
268
268
|
}
|
|
269
|
-
function
|
|
269
|
+
function re(s, e = 0) {
|
|
270
270
|
if (typeof s == "number")
|
|
271
271
|
return s;
|
|
272
272
|
const t = parseFloat(s) || 0;
|
|
273
273
|
return typeof s == "string" && s.includes("%") ? t / 100 * e : t;
|
|
274
274
|
}
|
|
275
|
-
function
|
|
275
|
+
function le(s) {
|
|
276
276
|
if (!s || s === "transparent")
|
|
277
277
|
return { color: new y.Color(16777215), alpha: 0 };
|
|
278
278
|
const e = s.match(
|
|
279
279
|
/rgba?\((\d+),\s*(\d+),\s*(\d+)(?:,\s*([\d.]+))?\)/
|
|
280
280
|
);
|
|
281
281
|
if (e) {
|
|
282
|
-
const t = parseInt(e[1], 10), r = parseInt(e[2], 10), i = parseInt(e[3], 10),
|
|
283
|
-
return { color: new y.Color(`rgb(${t}, ${r}, ${i})`), alpha:
|
|
282
|
+
const t = parseInt(e[1], 10), r = parseInt(e[2], 10), i = parseInt(e[3], 10), l = e[4] !== void 0 ? parseFloat(e[4]) : 1;
|
|
283
|
+
return { color: new y.Color(`rgb(${t}, ${r}, ${i})`), alpha: l };
|
|
284
284
|
}
|
|
285
285
|
return { color: new y.Color(s), alpha: 1 };
|
|
286
286
|
}
|
|
@@ -288,16 +288,16 @@ function Ge(s) {
|
|
|
288
288
|
const e = [];
|
|
289
289
|
let t = "", r = 0;
|
|
290
290
|
for (let i = 0; i < s.length; i++) {
|
|
291
|
-
const
|
|
292
|
-
if (
|
|
291
|
+
const l = s[i];
|
|
292
|
+
if (l === "(")
|
|
293
293
|
r++;
|
|
294
|
-
else if (
|
|
294
|
+
else if (l === ")")
|
|
295
295
|
r--;
|
|
296
|
-
else if (
|
|
296
|
+
else if (l === "," && r === 0) {
|
|
297
297
|
e.push(t.trim()), t = "";
|
|
298
298
|
continue;
|
|
299
299
|
}
|
|
300
|
-
t +=
|
|
300
|
+
t += l;
|
|
301
301
|
}
|
|
302
302
|
return t && e.push(t.trim()), e;
|
|
303
303
|
}
|
|
@@ -308,44 +308,44 @@ function $e(s) {
|
|
|
308
308
|
if (!e)
|
|
309
309
|
return null;
|
|
310
310
|
const t = e[1], r = Ge(t);
|
|
311
|
-
let i = Math.PI,
|
|
311
|
+
let i = Math.PI, l = 0;
|
|
312
312
|
const n = r[0].trim();
|
|
313
313
|
if (n.startsWith("to "))
|
|
314
|
-
n === "to top" ? i = 0 : n === "to right" ? i = Math.PI / 2 : n === "to bottom" ? i = Math.PI : n === "to left" ? i = Math.PI * 1.5 : n === "to top right" || n === "to right top" ? i = Math.PI / 4 : n === "to bottom right" || n === "to right bottom" ? i = Math.PI * 0.75 : n === "to bottom left" || n === "to left bottom" ? i = Math.PI * 1.25 : (n === "to top left" || n === "to left top") && (i = Math.PI * 1.75),
|
|
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
316
|
const a = parseFloat(n);
|
|
317
|
-
n.endsWith("deg") ? i = a * (Math.PI / 180) : n.endsWith("rad") ? i = a : n.endsWith("turn") && (i = a * Math.PI * 2),
|
|
317
|
+
n.endsWith("deg") ? i = a * (Math.PI / 180) : n.endsWith("rad") ? i = a : n.endsWith("turn") && (i = a * Math.PI * 2), l = 1;
|
|
318
318
|
}
|
|
319
319
|
const o = [];
|
|
320
|
-
for (let a =
|
|
321
|
-
const
|
|
322
|
-
let h =
|
|
323
|
-
if (d !== -1 && !
|
|
324
|
-
const g =
|
|
325
|
-
(g.endsWith("%") || g.endsWith("px") || !isNaN(parseFloat(g))) && (h =
|
|
320
|
+
for (let a = l; a < r.length && !(o.length >= 8); a++) {
|
|
321
|
+
const c = r[a].trim(), d = c.lastIndexOf(" ");
|
|
322
|
+
let h = c, f = null;
|
|
323
|
+
if (d !== -1 && !c.endsWith(")")) {
|
|
324
|
+
const g = c.substring(d + 1);
|
|
325
|
+
(g.endsWith("%") || g.endsWith("px") || !isNaN(parseFloat(g))) && (h = c.substring(0, d).trim(), f = g);
|
|
326
326
|
}
|
|
327
|
-
const
|
|
327
|
+
const v = le(h);
|
|
328
328
|
o.push({
|
|
329
|
-
color:
|
|
330
|
-
alpha:
|
|
329
|
+
color: v.color,
|
|
330
|
+
alpha: v.alpha,
|
|
331
331
|
rawStop: f,
|
|
332
332
|
stop: 0
|
|
333
333
|
});
|
|
334
334
|
}
|
|
335
335
|
if (o.length > 0) {
|
|
336
|
-
for (let
|
|
337
|
-
o[
|
|
336
|
+
for (let c = 0; c < o.length; c++)
|
|
337
|
+
o[c].rawStop !== null && (o[c].stop = parseFloat(o[c].rawStop) / 100);
|
|
338
338
|
o[0].rawStop === null && (o[0].stop = 0), o.length > 1 && o[o.length - 1].rawStop === null && (o[o.length - 1].stop = 1);
|
|
339
339
|
let a = 0;
|
|
340
|
-
for (let
|
|
341
|
-
if (o[
|
|
342
|
-
const d =
|
|
340
|
+
for (let c = 1; c < o.length; c++)
|
|
341
|
+
if (o[c].rawStop !== null || c === o.length - 1) {
|
|
342
|
+
const d = c - a;
|
|
343
343
|
if (d > 1) {
|
|
344
|
-
const h = o[a].stop,
|
|
344
|
+
const h = o[a].stop, v = (o[c].stop - h) / d;
|
|
345
345
|
for (let g = 1; g < d; g++)
|
|
346
|
-
o[a + g].stop = h +
|
|
346
|
+
o[a + g].stop = h + v * g;
|
|
347
347
|
}
|
|
348
|
-
a =
|
|
348
|
+
a = c;
|
|
349
349
|
}
|
|
350
350
|
}
|
|
351
351
|
return { angle: i, stops: o };
|
|
@@ -503,17 +503,17 @@ uniform vec2 uTextureOffset;`, Je = `vec2 screenUv = (vScreenPos.xy / vScreenPos
|
|
|
503
503
|
vec2 resultUv = screenUv;
|
|
504
504
|
|
|
505
505
|
`, Qe = `vec4 texColor = texture2D(uTexture, resultUv);
|
|
506
|
-
baseColor = blendSrcOver(baseColor, texColor);`,
|
|
506
|
+
baseColor = blendSrcOver(baseColor, texColor);`, Re = {
|
|
507
507
|
vertexShader: qe,
|
|
508
508
|
fragmentShader: je
|
|
509
|
-
},
|
|
509
|
+
}, Le = {
|
|
510
510
|
declChunk: Ke,
|
|
511
511
|
uvChunk: Je,
|
|
512
512
|
baseColorChunk: Qe
|
|
513
513
|
};
|
|
514
514
|
function Ze(s, e, t, r = null, i) {
|
|
515
515
|
var x;
|
|
516
|
-
const
|
|
516
|
+
const l = r !== null || !!s.imageSrc;
|
|
517
517
|
let n = "";
|
|
518
518
|
const o = {};
|
|
519
519
|
if (i != null && i.uniforms)
|
|
@@ -524,11 +524,11 @@ function Ze(s, e, t, r = null, i) {
|
|
|
524
524
|
`, o[C] = { value: new y.Vector3(...w) }) : w.length === 4 && (n += `uniform vec4 ${C};
|
|
525
525
|
`, o[C] = { value: new y.Vector4(...w) }) : (n += `uniform float ${C};
|
|
526
526
|
`, o[C] = { value: w });
|
|
527
|
-
const a = i !== void 0,
|
|
527
|
+
const a = i !== void 0, c = (l || a ? Le.declChunk : "") + `
|
|
528
528
|
` + n, d = `vec2 screenUv = (vScreenPos.xy / vScreenPos.w) * 0.5 + 0.5;
|
|
529
529
|
`, h = s.isTraveler ? `vec2 resultUv = screenUv;
|
|
530
530
|
` : `vec2 resultUv = vUv * uTextureRepeat + uTextureOffset;
|
|
531
|
-
`, f =
|
|
531
|
+
`, f = l || a ? d + h + ((i == null ? void 0 : i.uvModifier) || "") : "", v = l || a ? Le.baseColorChunk : "", g = (i == null ? void 0 : i.colorModifier) || "", m = Re.fragmentShader.replace("#INJECT_DECLARATIONS", c).replace("#INJECT_UV_MODIFIER", f).replace("#INJECT_BASE_COLOR", v).replace("#INJECT_COLOR_MODIFIER", g), b = le(s.backgroundColor), L = le(s.borderColor), M = {
|
|
532
532
|
uSize: { value: new y.Vector2(e, t) },
|
|
533
533
|
uBgColor: {
|
|
534
534
|
value: new y.Vector4(
|
|
@@ -540,14 +540,14 @@ function Ze(s, e, t, r = null, i) {
|
|
|
540
540
|
},
|
|
541
541
|
uBorderColor: {
|
|
542
542
|
value: new y.Vector4(
|
|
543
|
-
|
|
544
|
-
|
|
545
|
-
|
|
546
|
-
|
|
543
|
+
L.color.r,
|
|
544
|
+
L.color.g,
|
|
545
|
+
L.color.b,
|
|
546
|
+
L.alpha
|
|
547
547
|
)
|
|
548
548
|
},
|
|
549
549
|
uBorderRadius: { value: new y.Vector4(0, 0, 0, 0) },
|
|
550
|
-
uBorderWidth: { value:
|
|
550
|
+
uBorderWidth: { value: re(s.borderWidth) },
|
|
551
551
|
uOpacity: { value: (x = s.opacity) != null ? x : 1 },
|
|
552
552
|
uTexture: { value: null },
|
|
553
553
|
uTextureRepeat: { value: new y.Vector2(1, 1) },
|
|
@@ -559,24 +559,24 @@ function Ze(s, e, t, r = null, i) {
|
|
|
559
559
|
},
|
|
560
560
|
uGradientStops: { value: new Float32Array(8) }
|
|
561
561
|
};
|
|
562
|
-
|
|
563
|
-
const
|
|
564
|
-
uniforms:
|
|
565
|
-
vertexShader:
|
|
562
|
+
Ie(M.uBorderRadius.value, s.borderRadius, Math.min(e, t)), l && (M.uTexture.value = r);
|
|
563
|
+
const S = new y.ShaderMaterial({
|
|
564
|
+
uniforms: J(J({}, M), o),
|
|
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 &&
|
|
571
|
+
return s.backgroundImage && ye(S, { backgroundImage: s.backgroundImage }), S;
|
|
572
572
|
}
|
|
573
573
|
function et(s, e, t, r, i) {
|
|
574
|
-
const
|
|
575
|
-
|
|
574
|
+
const l = re(e.borderWidth);
|
|
575
|
+
ye(s, {
|
|
576
576
|
width: t,
|
|
577
577
|
height: r,
|
|
578
578
|
borderRadius: e.borderRadius,
|
|
579
|
-
borderWidth:
|
|
579
|
+
borderWidth: l,
|
|
580
580
|
backgroundColor: e.backgroundColor,
|
|
581
581
|
borderColor: e.borderColor,
|
|
582
582
|
opacity: e.opacity,
|
|
@@ -584,11 +584,11 @@ function et(s, e, t, r, i) {
|
|
|
584
584
|
backgroundImage: e.backgroundImage
|
|
585
585
|
});
|
|
586
586
|
}
|
|
587
|
-
function
|
|
588
|
-
var r, i,
|
|
587
|
+
function ye(s, e) {
|
|
588
|
+
var r, i, l;
|
|
589
589
|
if (e.width !== void 0 && e.height !== void 0 && s.uniforms.uSize.value.set(e.width, e.height), e.borderRadius !== void 0) {
|
|
590
590
|
const n = e.width !== void 0 && e.height !== void 0 ? Math.min(e.width, e.height) : Math.min(s.uniforms.uSize.value.x, s.uniforms.uSize.value.y);
|
|
591
|
-
|
|
591
|
+
Ie(s.uniforms.uBorderRadius.value, e.borderRadius, n);
|
|
592
592
|
}
|
|
593
593
|
if (e.borderWidth !== void 0 && (s.uniforms.uBorderWidth.value = e.borderWidth), e.backgroundColor !== void 0)
|
|
594
594
|
if (Array.isArray(e.backgroundColor)) {
|
|
@@ -600,7 +600,7 @@ function le(s, e) {
|
|
|
600
600
|
n
|
|
601
601
|
);
|
|
602
602
|
} else if (typeof e.backgroundColor == "string") {
|
|
603
|
-
const n =
|
|
603
|
+
const n = le(e.backgroundColor);
|
|
604
604
|
s.uniforms.uBgColor.value.set(
|
|
605
605
|
n.color.r,
|
|
606
606
|
n.color.g,
|
|
@@ -626,7 +626,7 @@ function le(s, e) {
|
|
|
626
626
|
n
|
|
627
627
|
);
|
|
628
628
|
} else if (typeof e.borderColor == "string") {
|
|
629
|
-
const n =
|
|
629
|
+
const n = le(e.borderColor);
|
|
630
630
|
s.uniforms.uBorderColor.value.set(
|
|
631
631
|
n.color.r,
|
|
632
632
|
n.color.g,
|
|
@@ -645,9 +645,9 @@ function le(s, e) {
|
|
|
645
645
|
e.opacity !== void 0 && (s.uniforms.uOpacity.value = e.opacity), e.bgOpacity !== void 0 && (s.uniforms.uBgColor.value.w = e.bgOpacity), e.borderOpacity !== void 0 && (s.uniforms.uBorderColor.value.w = e.borderOpacity), s.uniforms.uTexture && e.texture !== void 0 && (s.uniforms.uTexture.value = e.texture);
|
|
646
646
|
const t = e.texture !== void 0 ? e.texture : (r = s.uniforms.uTexture) == null ? void 0 : r.value;
|
|
647
647
|
if (t && (t.image instanceof ImageBitmap || t.image instanceof HTMLImageElement || t.image instanceof HTMLCanvasElement)) {
|
|
648
|
-
const n = t.image.naturalWidth || t.image.videoWidth || t.image.width, o = t.image.naturalHeight || t.image.videoHeight || t.image.height, a = (i = e.width) != null ? i : s.uniforms.uSize.value.x,
|
|
649
|
-
if (n && o && a &&
|
|
650
|
-
const d = n / o, h = a /
|
|
648
|
+
const n = t.image.naturalWidth || t.image.videoWidth || t.image.width, o = t.image.naturalHeight || t.image.videoHeight || t.image.height, a = (i = e.width) != null ? i : s.uniforms.uSize.value.x, c = (l = e.height) != null ? l : s.uniforms.uSize.value.y;
|
|
649
|
+
if (n && o && a && c) {
|
|
650
|
+
const d = n / o, h = a / c;
|
|
651
651
|
if (d > h) {
|
|
652
652
|
const f = h / d;
|
|
653
653
|
s.uniforms.uTextureRepeat.value.set(f, 1), s.uniforms.uTextureOffset.value.set((1 - f) / 2, 0);
|
|
@@ -679,8 +679,8 @@ function le(s, e) {
|
|
|
679
679
|
for (const n of Object.keys(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
|
-
function
|
|
683
|
-
var a,
|
|
682
|
+
function Ie(s, e, t = 0) {
|
|
683
|
+
var a, c, d, h;
|
|
684
684
|
if (e == null) {
|
|
685
685
|
s.set(0, 0, 0, 0);
|
|
686
686
|
return;
|
|
@@ -693,11 +693,11 @@ function De(s, e, t = 0) {
|
|
|
693
693
|
s.set(e[0], e[1], e[2], e[3]);
|
|
694
694
|
return;
|
|
695
695
|
}
|
|
696
|
-
const r = e.split("/")[0].trim().split(/\s+/), i =
|
|
697
|
-
s.set(i,
|
|
696
|
+
const r = e.split("/")[0].trim().split(/\s+/), i = re(r[0], t), l = re((a = r[1]) != null ? a : r[0], t), n = re((c = r[2]) != null ? c : r[0], t), o = re((h = (d = r[3]) != null ? d : r[1]) != null ? h : r[0], t);
|
|
697
|
+
s.set(i, l, n, o);
|
|
698
698
|
}
|
|
699
|
-
const
|
|
700
|
-
create(s, e, t, r, i,
|
|
699
|
+
const H = {
|
|
700
|
+
create(s, e, t, r, i, l = 2, n = null, o) {
|
|
701
701
|
return s === "BOX" ? Ze(
|
|
702
702
|
e,
|
|
703
703
|
r,
|
|
@@ -709,26 +709,26 @@ const V = {
|
|
|
709
709
|
e,
|
|
710
710
|
r,
|
|
711
711
|
i,
|
|
712
|
-
|
|
712
|
+
l
|
|
713
713
|
) : new y.MeshBasicMaterial({ visible: !1 });
|
|
714
714
|
},
|
|
715
|
-
update(s, e, t, r, i,
|
|
715
|
+
update(s, e, t, r, i, l, n = 2, o) {
|
|
716
716
|
e === "BOX" ? et(
|
|
717
717
|
s,
|
|
718
718
|
t,
|
|
719
719
|
i,
|
|
720
|
-
|
|
720
|
+
l,
|
|
721
721
|
o
|
|
722
722
|
) : e === "TEXT" && s.updateText(
|
|
723
723
|
r || "",
|
|
724
724
|
t,
|
|
725
725
|
i,
|
|
726
|
-
|
|
726
|
+
l,
|
|
727
727
|
n
|
|
728
728
|
);
|
|
729
729
|
},
|
|
730
730
|
forceUpdateUniforms(s, e) {
|
|
731
|
-
|
|
731
|
+
ye(s, e);
|
|
732
732
|
}
|
|
733
733
|
};
|
|
734
734
|
class tt {
|
|
@@ -741,8 +741,8 @@ class tt {
|
|
|
741
741
|
this.onUpdate = e, t && (this.observer = new IntersectionObserver(
|
|
742
742
|
(r) => {
|
|
743
743
|
for (const i of r) {
|
|
744
|
-
const
|
|
745
|
-
i.isIntersecting ? this.loadTexture(
|
|
744
|
+
const l = i.target;
|
|
745
|
+
i.isIntersecting ? this.loadTexture(l) : this.disposeTexture(l);
|
|
746
746
|
}
|
|
747
747
|
},
|
|
748
748
|
{ rootMargin: "300px" }
|
|
@@ -757,7 +757,7 @@ class tt {
|
|
|
757
757
|
e.nodeType === Node.ELEMENT_NODE && this.observer && this.observer.unobserve(e), this.disposeTexture(e), this.elementUrls.delete(e), this.loadStatus.delete(e);
|
|
758
758
|
}
|
|
759
759
|
loadTexture(e) {
|
|
760
|
-
return
|
|
760
|
+
return Ee(this, null, function* () {
|
|
761
761
|
if (this.loadStatus.get(e) || this.textures.has(e))
|
|
762
762
|
return;
|
|
763
763
|
const t = this.elementUrls.get(e);
|
|
@@ -766,9 +766,9 @@ class tt {
|
|
|
766
766
|
try {
|
|
767
767
|
let r;
|
|
768
768
|
if (t.startsWith("data:image/svg+xml"))
|
|
769
|
-
r = yield new Promise((
|
|
769
|
+
r = yield new Promise((l, n) => {
|
|
770
770
|
const o = new Image();
|
|
771
|
-
o.onload = () =>
|
|
771
|
+
o.onload = () => l(o), o.onerror = n, o.src = t;
|
|
772
772
|
});
|
|
773
773
|
else {
|
|
774
774
|
const n = yield (yield fetch(t)).blob();
|
|
@@ -818,21 +818,21 @@ class rt {
|
|
|
818
818
|
u(this, "registry");
|
|
819
819
|
u(this, "targetRect");
|
|
820
820
|
u(this, "travelersByLayer", Array.from(
|
|
821
|
-
{ length:
|
|
821
|
+
{ length: _.MAX_LAYERS },
|
|
822
822
|
() => /* @__PURE__ */ new Set()
|
|
823
823
|
));
|
|
824
824
|
u(this, "textureManager");
|
|
825
825
|
// private meshMap: Map<HTMLElement, THREE.Mesh> = new Map();
|
|
826
826
|
u(this, "fixedMeshes", /* @__PURE__ */ new Set());
|
|
827
|
-
var o, a,
|
|
828
|
-
this.target = e, this.mountContainer = r, this.registry = i, this.mode = (o = t.mode) != null ? o : "overlay", this.canvasSize = (a = t.canvasSize) != null ? a : "viewport", this.clipArea = (
|
|
827
|
+
var o, a, c, d, h;
|
|
828
|
+
this.target = e, this.mountContainer = r, this.registry = i, this.mode = (o = t.mode) != null ? o : "overlay", this.canvasSize = (a = t.canvasSize) != null ? a : "viewport", this.clipArea = (c = t.travelerClipArea) != null ? c : 1, this.targetLayer = (d = t.layer) != null ? d : "base", this.textureManager = new tt((f, v) => {
|
|
829
829
|
const g = this.registry.get(f);
|
|
830
|
-
g && g.material instanceof y.ShaderMaterial &&
|
|
830
|
+
g && g.material instanceof y.ShaderMaterial && H.forceUpdateUniforms(g.material, { texture: v });
|
|
831
831
|
}, this.isViewport), this.canvas = document.createElement("canvas"), this.scene = new y.Scene(), this.targetRect = this.target.getBoundingClientRect();
|
|
832
|
-
const
|
|
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(
|
|
834
|
-
|
|
835
|
-
|
|
834
|
+
l / -2,
|
|
835
|
+
l / 2,
|
|
836
836
|
n / 2,
|
|
837
837
|
n / -2,
|
|
838
838
|
1,
|
|
@@ -843,7 +843,7 @@ class rt {
|
|
|
843
843
|
antialias: !0
|
|
844
844
|
// [new]
|
|
845
845
|
// premultipliedAlpha: true
|
|
846
|
-
}), y.ColorManagement.enabled = !1, this.renderer.outputColorSpace = y.LinearSRGBColorSpace, this.renderer.setPixelRatio(window.devicePixelRatio), this.renderer.setSize(
|
|
846
|
+
}), y.ColorManagement.enabled = !1, this.renderer.outputColorSpace = y.LinearSRGBColorSpace, this.renderer.setPixelRatio(window.devicePixelRatio), this.renderer.setSize(l, n), this.applyTextQuality((h = t.quality) != null ? h : "medium");
|
|
847
847
|
}
|
|
848
848
|
get isViewport() {
|
|
849
849
|
return this.mode === "overlay" && this.canvasSize === "viewport";
|
|
@@ -852,7 +852,7 @@ class rt {
|
|
|
852
852
|
return typeof this.targetLayer == "number" ? this.targetLayer : this.targetLayer === "selected" ? U.SELECTED : U.BASE;
|
|
853
853
|
}
|
|
854
854
|
createRenderTarget() {
|
|
855
|
-
for (let e = 0; e <
|
|
855
|
+
for (let e = 0; e < _.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 && H.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 && H.forceUpdateUniforms(
|
|
908
908
|
i.material,
|
|
909
909
|
t
|
|
910
910
|
);
|
|
@@ -920,8 +920,8 @@ class rt {
|
|
|
920
920
|
this.camera.left = e / -2, this.camera.right = e / 2, this.camera.top = t / 2, this.camera.bottom = t / -2, this.camera.updateProjectionMatrix();
|
|
921
921
|
}
|
|
922
922
|
syncScene(e, t) {
|
|
923
|
-
const r = this.target.getBoundingClientRect(), i = this.isViewport ? window.innerWidth + this.overscan * 2 : r.width,
|
|
924
|
-
a ? (this.targetRect = r, this.setSize(i,
|
|
923
|
+
const r = this.target.getBoundingClientRect(), i = this.isViewport ? window.innerWidth + this.overscan * 2 : r.width, l = this.isViewport ? window.innerHeight + this.overscan * 2 : r.height, n = this.isViewport ? this.canvas.clientWidth : this.targetRect.width, o = this.isViewport ? this.canvas.clientHeight : this.targetRect.height, a = Math.abs(i - n) > 0.1 || Math.abs(l - o) > 0.1, c = this.mode === "overlay" && (Math.abs(r.top - this.targetRect.top) > 0.1 || Math.abs(r.left - this.targetRect.left) > 0.1);
|
|
924
|
+
a ? (this.targetRect = r, this.setSize(i, l), this.updateCanvasLayout()) : c ? (this.targetRect = r, this.updateCanvasLayout()) : this.targetRect = r, this.renderOrder = 0, this.reconcileNode(e), t.size > 0 && t.forEach((d) => {
|
|
925
925
|
const h = this.registry.get(d);
|
|
926
926
|
if (h) {
|
|
927
927
|
this.scene.remove(h);
|
|
@@ -930,7 +930,7 @@ class rt {
|
|
|
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
931
|
(f) => f.dispose()
|
|
932
932
|
) : h.userData.nativeMesh.material.dispose(), h.userData.nativeMesh.geometry.dispose()), h.traverse((f) => {
|
|
933
|
-
f instanceof y.Mesh && (f.geometry && f.geometry.dispose(), f.material && (Array.isArray(f.material) ? f.material.forEach((
|
|
933
|
+
f instanceof y.Mesh && (f.geometry && f.geometry.dispose(), f.material && (Array.isArray(f.material) ? f.material.forEach((v) => v.dispose()) : f.material.dispose()));
|
|
934
934
|
}), this.registry.remove(d), this.textureManager.unregister(d);
|
|
935
935
|
}
|
|
936
936
|
});
|
|
@@ -940,11 +940,11 @@ class rt {
|
|
|
940
940
|
// => 이후 activeElements를 이용하여 mesh를 정리!!!+ map에서도 삭제
|
|
941
941
|
// private reconcileNode(node: SceneNode, activeElements: Set<HTMLElement>) {
|
|
942
942
|
reconcileNode(e) {
|
|
943
|
-
var i,
|
|
943
|
+
var i, l;
|
|
944
944
|
let t = this.registry.get(e.element);
|
|
945
945
|
const r = JSON.stringify(e.shaderHooks || null);
|
|
946
946
|
if (t && t.userData.shaderHash !== r && (this.scene.remove(t), t.geometry.dispose(), t.material instanceof y.Material && t.material.dispose(), this.registry.remove(e.element), t = void 0), !t) {
|
|
947
|
-
const n = new y.PlaneGeometry(1, 1), o = e.isTraveler ? (i = this.renderTargets[e.captureLayer - 2]) == null ? void 0 : i.texture : this.textureManager.get(e.element), a =
|
|
947
|
+
const n = new y.PlaneGeometry(1, 1), o = e.isTraveler ? (i = this.renderTargets[e.captureLayer - 2]) == null ? void 0 : i.texture : this.textureManager.get(e.element), a = H.create(
|
|
948
948
|
"BOX",
|
|
949
949
|
e.styles,
|
|
950
950
|
"",
|
|
@@ -956,8 +956,8 @@ class rt {
|
|
|
956
956
|
);
|
|
957
957
|
t = new y.Mesh(n, a), e.type === "TEXT" && (t.name = "BG_MESH"), this.scene.add(t), this.registry.register(e.element, t), t.userData.baseMaterial = a, t.userData.domElement = e.element, t.userData.shaderHash = r;
|
|
958
958
|
}
|
|
959
|
-
if ((
|
|
960
|
-
for (let n = 0; n <
|
|
959
|
+
if ((l = e.nativeStyles) != null && l.transform ? t.userData.nativeTransform = e.nativeStyles.transform : t.userData.nativeTransform = void 0, this.updateMeshProperties(t, e), this.updateMeshLayers(t, e), e.isTraveler)
|
|
960
|
+
for (let n = 0; n < _.MAX_LAYERS; n++)
|
|
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)
|
|
@@ -973,11 +973,11 @@ class rt {
|
|
|
973
973
|
));
|
|
974
974
|
}
|
|
975
975
|
reconcileTextChild(e, t, r) {
|
|
976
|
-
var
|
|
976
|
+
var c;
|
|
977
977
|
const i = t.textLines || [
|
|
978
978
|
{ text: t.textContent || "", rect: t.rect }
|
|
979
|
-
],
|
|
980
|
-
if (t.dirtyMask &
|
|
979
|
+
], l = r ? t.nativeStyles : t.textStyles, n = JSON.stringify(l) + t.textContent + i.map((d) => d.text).join("|"), o = (c = e.userData) == null ? void 0 : c.textChildStyleHash;
|
|
980
|
+
if (t.dirtyMask & ve || n !== o) {
|
|
981
981
|
e.children.filter(
|
|
982
982
|
(g) => g.name.startsWith("TEXT_CHILD")
|
|
983
983
|
).forEach((g) => {
|
|
@@ -985,46 +985,48 @@ class rt {
|
|
|
985
985
|
const m = g;
|
|
986
986
|
(b = m.material.map) == null || b.dispose(), m.geometry.dispose(), e.remove(m);
|
|
987
987
|
});
|
|
988
|
-
const h = t.rect, f = h.x + h.width / 2,
|
|
988
|
+
const h = t.rect, f = h.x + h.width / 2, v = h.y + h.height / 2;
|
|
989
989
|
i.forEach((g, m) => {
|
|
990
|
-
const b =
|
|
990
|
+
const b = H.create(
|
|
991
991
|
"TEXT",
|
|
992
|
-
|
|
992
|
+
l,
|
|
993
993
|
g.text,
|
|
994
994
|
g.rect.width,
|
|
995
995
|
g.rect.height,
|
|
996
996
|
this.qualityFactor
|
|
997
|
-
),
|
|
998
|
-
|
|
999
|
-
const
|
|
1000
|
-
|
|
1001
|
-
const C = g.rect.x + g.rect.width / 2, w = g.rect.y + g.rect.height / 2,
|
|
1002
|
-
|
|
1003
|
-
t.rect.width === 0 ? 0 :
|
|
1004
|
-
t.rect.height === 0 ? 0 :
|
|
997
|
+
), L = new y.PlaneGeometry(1, 1), M = new y.Mesh(L, b);
|
|
998
|
+
M.name = `TEXT_CHILD_${m}`;
|
|
999
|
+
const S = t.rect.width === 0 ? 1 : g.rect.width / t.rect.width, x = t.rect.height === 0 ? 1 : g.rect.height / t.rect.height;
|
|
1000
|
+
M.scale.set(S, x, 1);
|
|
1001
|
+
const C = g.rect.x + g.rect.width / 2, w = g.rect.y + g.rect.height / 2, T = C - f, A = -(w - v);
|
|
1002
|
+
M.position.set(
|
|
1003
|
+
t.rect.width === 0 ? 0 : T / t.rect.width,
|
|
1004
|
+
t.rect.height === 0 ? 0 : A / t.rect.height,
|
|
1005
1005
|
5e-3
|
|
1006
|
-
), e.add(
|
|
1006
|
+
), e.add(M);
|
|
1007
1007
|
}), e.userData.textChildStyleHash = n;
|
|
1008
1008
|
}
|
|
1009
1009
|
e.children.forEach((d) => {
|
|
1010
1010
|
if (!d.name.startsWith("TEXT_CHILD"))
|
|
1011
1011
|
return;
|
|
1012
|
-
const h = d
|
|
1013
|
-
if (
|
|
1014
|
-
|
|
1015
|
-
|
|
1016
|
-
|
|
1017
|
-
|
|
1018
|
-
|
|
1019
|
-
|
|
1020
|
-
|
|
1021
|
-
|
|
1022
|
-
|
|
1012
|
+
const h = d;
|
|
1013
|
+
if (r && t.nativeLayer !== void 0)
|
|
1014
|
+
h.layers.set(U.HIDDEN), t.visibility & P && h.layers.enable(U.getCaptureLayer(t.nativeLayer));
|
|
1015
|
+
else {
|
|
1016
|
+
const f = t.visibility & P ? U.BASE : U.HIDDEN;
|
|
1017
|
+
if (h.layers.set(f), t.visibility & te && h.layers.enable(U.SELECTED), t.visibility & P)
|
|
1018
|
+
if (!r && t.nativeLayer !== void 0 && t.nativeStyles !== void 0)
|
|
1019
|
+
for (let v = t.captureLayer; v <= _.MAX_LAYERS + 1; v++)
|
|
1020
|
+
v !== t.nativeLayer && h.layers.enable(U.getCaptureLayer(v));
|
|
1021
|
+
else
|
|
1022
|
+
for (let v = t.captureLayer; v <= _.MAX_LAYERS + 1; v++)
|
|
1023
|
+
h.layers.enable(U.getCaptureLayer(v));
|
|
1024
|
+
}
|
|
1023
1025
|
});
|
|
1024
1026
|
}
|
|
1025
1027
|
updateMeshProperties(e, t) {
|
|
1026
|
-
var
|
|
1027
|
-
const { rect: r, styles: i } = t,
|
|
1028
|
+
var S, x, C;
|
|
1029
|
+
const { rect: r, styles: i } = t, l = this.renderer.getPixelRatio(), n = this.renderer.domElement.width / l, o = this.renderer.domElement.height / l;
|
|
1028
1030
|
e.material = e.userData.baseMaterial, e.scale.set(r.width, r.height, 1), e.userData.domRect = {
|
|
1029
1031
|
x: r.x,
|
|
1030
1032
|
y: r.y,
|
|
@@ -1033,28 +1035,28 @@ class rt {
|
|
|
1033
1035
|
};
|
|
1034
1036
|
const a = 1e-3;
|
|
1035
1037
|
this.renderOrder++;
|
|
1036
|
-
const
|
|
1038
|
+
const c = this.targetRect.left + window.scrollX, d = this.targetRect.top + window.scrollY;
|
|
1037
1039
|
let h, f;
|
|
1038
1040
|
if (this.isViewport)
|
|
1039
1041
|
h = r.x - window.innerWidth / 2 + r.width / 2, f = -r.y + window.innerHeight / 2 - r.height / 2;
|
|
1040
1042
|
else {
|
|
1041
|
-
const w = r.x -
|
|
1042
|
-
h = w - n / 2 + r.width / 2, f = -
|
|
1043
|
+
const w = r.x - c, T = r.y - d;
|
|
1044
|
+
h = w - n / 2 + r.width / 2, f = -T + o / 2 - r.height / 2;
|
|
1043
1045
|
}
|
|
1044
1046
|
e.position.set(
|
|
1045
1047
|
h,
|
|
1046
1048
|
f,
|
|
1047
1049
|
i.zIndex + this.renderOrder * a
|
|
1048
1050
|
);
|
|
1049
|
-
const
|
|
1050
|
-
e.userData.basePosition = { x: h, y: f }, e.userData.originalBasePosition = { x: h, y: f }, e.userData.baseSize = { width: r.width, height: r.height }, e.userData.baseDOM = { x:
|
|
1051
|
+
const v = r.x, g = r.y;
|
|
1052
|
+
e.userData.basePosition = { x: h, y: f }, e.userData.originalBasePosition = { x: h, y: f }, e.userData.baseSize = { width: r.width, height: r.height }, e.userData.baseDOM = { x: v, y: g }, e.userData.isFixed = t.isFixed, e.userData.initialScroll = { x: window.scrollX, y: window.scrollY };
|
|
1051
1053
|
const m = t.element.nodeType === Node.TEXT_NODE ? t.element.parentElement : t.element, b = window.getComputedStyle(m);
|
|
1052
|
-
let
|
|
1054
|
+
let L = 0, M = 0;
|
|
1053
1055
|
if (b.transform && b.transform !== "none") {
|
|
1054
1056
|
const w = new DOMMatrix(b.transform);
|
|
1055
|
-
|
|
1057
|
+
L = w.m41, M = w.m42;
|
|
1056
1058
|
}
|
|
1057
|
-
if (e.userData.baseTransform = { x:
|
|
1059
|
+
if (e.userData.baseTransform = { x: L, y: M }, delete e.userData.originRatioX, delete e.userData.originRatioY, H.update(
|
|
1058
1060
|
e.userData.baseMaterial,
|
|
1059
1061
|
"BOX",
|
|
1060
1062
|
i,
|
|
@@ -1062,10 +1064,10 @@ class rt {
|
|
|
1062
1064
|
r.width,
|
|
1063
1065
|
r.height,
|
|
1064
1066
|
this.qualityFactor,
|
|
1065
|
-
t.isTraveler ? (
|
|
1067
|
+
t.isTraveler ? (S = this.renderTargets[t.captureLayer - 2]) == null ? void 0 : S.texture : this.textureManager.get(t.element)
|
|
1066
1068
|
), t.nativeStyles && t.nativeRect) {
|
|
1067
1069
|
if (!e.userData.nativeMesh) {
|
|
1068
|
-
const
|
|
1070
|
+
const X = H.create(
|
|
1069
1071
|
"BOX",
|
|
1070
1072
|
t.nativeStyles,
|
|
1071
1073
|
"",
|
|
@@ -1074,22 +1076,50 @@ class rt {
|
|
|
1074
1076
|
this.qualityFactor,
|
|
1075
1077
|
t.isTraveler ? (x = this.renderTargets[t.captureLayer - 2]) == null ? void 0 : x.texture : this.textureManager.get(t.element),
|
|
1076
1078
|
t.shaderHooks
|
|
1077
|
-
),
|
|
1078
|
-
t.type === "TEXT" && (
|
|
1079
|
+
), N = new y.Mesh(e.geometry, X);
|
|
1080
|
+
t.type === "TEXT" && (N.name = "BG_MESH"), this.scene.add(N), e.userData.nativeMesh = N;
|
|
1079
1081
|
}
|
|
1080
1082
|
const w = e.userData.nativeMesh;
|
|
1081
|
-
let
|
|
1083
|
+
let T, A;
|
|
1082
1084
|
if (this.isViewport)
|
|
1083
|
-
|
|
1085
|
+
T = t.nativeRect.x - window.innerWidth / 2 + t.nativeRect.width / 2, A = -t.nativeRect.y + window.innerHeight / 2 - t.nativeRect.height / 2;
|
|
1084
1086
|
else {
|
|
1085
|
-
const
|
|
1086
|
-
|
|
1087
|
+
const X = t.nativeRect.x - c, N = t.nativeRect.y - d;
|
|
1088
|
+
T = X - n / 2 + t.nativeRect.width / 2, A = -N + o / 2 - t.nativeRect.height / 2;
|
|
1087
1089
|
}
|
|
1088
|
-
|
|
1089
|
-
|
|
1090
|
-
|
|
1090
|
+
let I = t.nativeRect.width, q = t.nativeRect.height, ie = T, se = A;
|
|
1091
|
+
if (t.nativeStyles.transform) {
|
|
1092
|
+
const X = t.nativeStyles.transform, N = X.match(/scale\(([\d.]+%?)\)/);
|
|
1093
|
+
if (N) {
|
|
1094
|
+
let B = parseFloat(N[1]);
|
|
1095
|
+
N[1].includes("%") && (B /= 100), I *= B, q *= B;
|
|
1096
|
+
}
|
|
1097
|
+
const Z = X.match(/translate\(([^,]+),\s*([^)]+)\)/);
|
|
1098
|
+
if (Z) {
|
|
1099
|
+
const B = Z[1].trim(), F = Z[2].trim();
|
|
1100
|
+
let p = parseFloat(B);
|
|
1101
|
+
B.includes("%") && (p = p / 100 * t.nativeRect.width);
|
|
1102
|
+
let R = parseFloat(F);
|
|
1103
|
+
F.includes("%") && (R = R / 100 * t.nativeRect.height), ie += p, se -= R;
|
|
1104
|
+
}
|
|
1105
|
+
const ne = X.match(/translateX\(([^)]+)\)/);
|
|
1106
|
+
if (ne) {
|
|
1107
|
+
const B = ne[1].trim();
|
|
1108
|
+
let F = parseFloat(B);
|
|
1109
|
+
B.includes("%") && (F = F / 100 * t.nativeRect.width), ie += F;
|
|
1110
|
+
}
|
|
1111
|
+
const oe = X.match(/translateY\(([^)]+)\)/);
|
|
1112
|
+
if (oe) {
|
|
1113
|
+
const B = oe[1].trim();
|
|
1114
|
+
let F = parseFloat(B);
|
|
1115
|
+
B.includes("%") && (F = F / 100 * t.nativeRect.height), se -= F;
|
|
1116
|
+
}
|
|
1117
|
+
}
|
|
1118
|
+
w.scale.set(I, q, 1), w.position.set(
|
|
1119
|
+
ie,
|
|
1120
|
+
se,
|
|
1091
1121
|
t.nativeStyles.zIndex + this.renderOrder * a
|
|
1092
|
-
),
|
|
1122
|
+
), H.update(
|
|
1093
1123
|
w.material,
|
|
1094
1124
|
"BOX",
|
|
1095
1125
|
t.nativeStyles,
|
|
@@ -1103,37 +1133,36 @@ class rt {
|
|
|
1103
1133
|
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);
|
|
1104
1134
|
}
|
|
1105
1135
|
updateMeshLayers(e, t) {
|
|
1106
|
-
const r = t.visibility &
|
|
1107
|
-
if (e.layers.set(r), t.visibility &
|
|
1136
|
+
const r = t.visibility & P ? U.BASE : U.HIDDEN;
|
|
1137
|
+
if (e.layers.set(r), t.visibility & te && e.layers.enable(U.SELECTED), e.userData.nativeMesh && t.nativeLayer !== void 0) {
|
|
1108
1138
|
const i = e.userData.nativeMesh;
|
|
1109
|
-
if (i.layers.set(U.HIDDEN), t.visibility &
|
|
1110
|
-
|
|
1111
|
-
|
|
1112
|
-
|
|
1113
|
-
i.layers.enable(U.getCaptureLayer(c));
|
|
1139
|
+
if (i.layers.set(U.HIDDEN), t.visibility & P) {
|
|
1140
|
+
i.layers.enable(U.getCaptureLayer(t.nativeLayer));
|
|
1141
|
+
for (let l = t.captureLayer; l <= _.MAX_LAYERS + 1; l++)
|
|
1142
|
+
l !== t.nativeLayer && e.layers.enable(U.getCaptureLayer(l));
|
|
1114
1143
|
}
|
|
1115
|
-
} else if (t.visibility &
|
|
1116
|
-
for (let i = t.captureLayer; i <=
|
|
1144
|
+
} else if (t.visibility & P)
|
|
1145
|
+
for (let i = t.captureLayer; i <= _.MAX_LAYERS + 1; i++)
|
|
1117
1146
|
e.layers.enable(U.getCaptureLayer(i));
|
|
1118
1147
|
}
|
|
1119
1148
|
captureRenderTarget(e, t, r) {
|
|
1120
1149
|
if (e.size === 0 || !r)
|
|
1121
1150
|
return;
|
|
1122
|
-
const i = new y.Color(),
|
|
1151
|
+
const i = new y.Color(), l = this.renderer.getClearAlpha();
|
|
1123
1152
|
this.renderer.getClearColor(i), this.renderer.setClearColor(0, 0), this.renderer.setRenderTarget(r), this.renderer.clear(), this.renderer.autoClear = !1, this.renderer.setScissorTest(!0), this.camera.layers.set(t);
|
|
1124
|
-
const n = new y.Vector3(), o = this.isViewport ? window.innerWidth + this.overscan * 2 : this.targetRect.width, a = this.isViewport ? window.innerHeight + this.overscan * 2 : this.targetRect.height,
|
|
1153
|
+
const n = new y.Vector3(), o = this.isViewport ? window.innerWidth + this.overscan * 2 : this.targetRect.width, a = this.isViewport ? window.innerHeight + this.overscan * 2 : this.targetRect.height, c = this.renderer.getPixelRatio();
|
|
1125
1154
|
for (const d of e) {
|
|
1126
1155
|
n.setFromMatrixPosition(d.matrixWorld), n.project(this.camera);
|
|
1127
1156
|
const h = (n.x + 1) / 2 * o, f = (n.y + 1) / 2 * a;
|
|
1128
|
-
let
|
|
1129
|
-
typeof this.clipArea == "number" ? g = this.clipArea : this.clipArea.endsWith("%") ? g = parseFloat(this.clipArea) / 100 : this.clipArea.endsWith("px") && (
|
|
1130
|
-
const m = d.scale.x * g + 0.5, b = d.scale.y * g + 0.5,
|
|
1131
|
-
this.renderer.setScissor(
|
|
1157
|
+
let v = 0, g = 1;
|
|
1158
|
+
typeof this.clipArea == "number" ? g = this.clipArea : this.clipArea.endsWith("%") ? g = parseFloat(this.clipArea) / 100 : this.clipArea.endsWith("px") && (v = parseFloat(this.clipArea));
|
|
1159
|
+
const m = d.scale.x * g + 0.5, b = d.scale.y * g + 0.5, L = h - m / 2, M = f - b / 2, S = (L * this.qualityFactor - v) / c, x = (M * this.qualityFactor - v) / c, C = (m * this.qualityFactor + v * 2) / c, w = (b * this.qualityFactor + v * 2) / c;
|
|
1160
|
+
this.renderer.setScissor(S, x, C, w), this.renderer.render(this.scene, this.camera);
|
|
1132
1161
|
}
|
|
1133
|
-
this.renderer.setScissorTest(!1), this.renderer.autoClear = !0, this.renderer.setRenderTarget(null), this.camera.layers.set(this.getSceneLayer()), this.renderer.setClearColor(i,
|
|
1162
|
+
this.renderer.setScissorTest(!1), this.renderer.autoClear = !0, this.renderer.setRenderTarget(null), this.camera.layers.set(this.getSceneLayer()), this.renderer.setClearColor(i, l);
|
|
1134
1163
|
}
|
|
1135
1164
|
render() {
|
|
1136
|
-
for (let e = 0; e <
|
|
1165
|
+
for (let e = 0; e < _.MAX_LAYERS; e++) {
|
|
1137
1166
|
const t = e + 1;
|
|
1138
1167
|
this.captureRenderTarget(
|
|
1139
1168
|
this.travelersByLayer[e],
|
|
@@ -1144,7 +1173,7 @@ class rt {
|
|
|
1144
1173
|
this.renderer.render(this.scene, this.camera);
|
|
1145
1174
|
}
|
|
1146
1175
|
syncMeshesByDOM() {
|
|
1147
|
-
const e = this.targetRect.left + window.scrollX, t = this.targetRect.top + window.scrollY, r = this.renderer.getPixelRatio(), i = this.renderer.domElement.width / r,
|
|
1176
|
+
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;
|
|
1148
1177
|
this.scene.children.forEach((n) => {
|
|
1149
1178
|
const o = n;
|
|
1150
1179
|
if (!o.userData || !o.userData.domElement)
|
|
@@ -1152,61 +1181,61 @@ class rt {
|
|
|
1152
1181
|
const a = o.userData.domElement;
|
|
1153
1182
|
if (!a.isConnected)
|
|
1154
1183
|
return;
|
|
1155
|
-
let
|
|
1184
|
+
let c;
|
|
1156
1185
|
if (a.nodeType === Node.TEXT_NODE) {
|
|
1157
1186
|
const h = document.createRange();
|
|
1158
|
-
h.selectNode(a),
|
|
1187
|
+
h.selectNode(a), c = h.getBoundingClientRect();
|
|
1159
1188
|
} else
|
|
1160
|
-
|
|
1189
|
+
c = a.getBoundingClientRect();
|
|
1161
1190
|
const d = o.userData.domRect;
|
|
1162
|
-
if (!d || Math.abs(
|
|
1191
|
+
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) {
|
|
1163
1192
|
o.userData.domRect = {
|
|
1164
|
-
x:
|
|
1165
|
-
y:
|
|
1166
|
-
width:
|
|
1167
|
-
height:
|
|
1193
|
+
x: c.x,
|
|
1194
|
+
y: c.y,
|
|
1195
|
+
width: c.width,
|
|
1196
|
+
height: c.height
|
|
1168
1197
|
};
|
|
1169
1198
|
let h, f;
|
|
1170
1199
|
if (this.isViewport)
|
|
1171
|
-
h =
|
|
1200
|
+
h = c.x - window.innerWidth / 2 + c.width / 2, f = -c.y + window.innerHeight / 2 - c.height / 2;
|
|
1172
1201
|
else {
|
|
1173
|
-
const
|
|
1174
|
-
h =
|
|
1202
|
+
const v = c.x - e, g = c.y - t;
|
|
1203
|
+
h = v - i / 2 + c.width / 2, f = -g + l / 2 - c.height / 2;
|
|
1175
1204
|
}
|
|
1176
|
-
if (o.position.setX(h), o.position.setY(f), o.scale.set(
|
|
1177
|
-
width:
|
|
1178
|
-
height:
|
|
1205
|
+
if (o.position.setX(h), o.position.setY(f), o.scale.set(c.width, c.height, 1), o.updateMatrixWorld(), o.material instanceof y.ShaderMaterial && H.forceUpdateUniforms(o.material, {
|
|
1206
|
+
width: c.width,
|
|
1207
|
+
height: c.height
|
|
1179
1208
|
}), o.userData.nativeMesh) {
|
|
1180
|
-
const
|
|
1181
|
-
let g =
|
|
1209
|
+
const v = o.userData.nativeMesh;
|
|
1210
|
+
let g = c.width, m = c.height, b = h, L = f;
|
|
1182
1211
|
if (o.userData.nativeTransform) {
|
|
1183
|
-
const
|
|
1184
|
-
if (
|
|
1185
|
-
let
|
|
1186
|
-
|
|
1212
|
+
const M = o.userData.nativeTransform, S = M.match(/scale\(([\d.]+%?)\)/);
|
|
1213
|
+
if (S) {
|
|
1214
|
+
let T = parseFloat(S[1]);
|
|
1215
|
+
S[1].includes("%") && (T /= 100), g *= T, m *= T;
|
|
1187
1216
|
}
|
|
1188
|
-
const x =
|
|
1217
|
+
const x = M.match(/translate\(([^,]+),\s*([^)]+)\)/);
|
|
1189
1218
|
if (x) {
|
|
1190
|
-
const
|
|
1191
|
-
let I = parseFloat(
|
|
1192
|
-
|
|
1193
|
-
let
|
|
1194
|
-
|
|
1219
|
+
const T = x[1].trim(), A = x[2].trim();
|
|
1220
|
+
let I = parseFloat(T);
|
|
1221
|
+
T.includes("%") && (I = I / 100 * c.width);
|
|
1222
|
+
let q = parseFloat(A);
|
|
1223
|
+
A.includes("%") && (q = q / 100 * c.height), b += I, L -= q;
|
|
1195
1224
|
}
|
|
1196
|
-
const C =
|
|
1225
|
+
const C = M.match(/translateX\(([^)]+)\)/);
|
|
1197
1226
|
if (C) {
|
|
1198
|
-
const
|
|
1199
|
-
let
|
|
1200
|
-
|
|
1227
|
+
const T = C[1].trim();
|
|
1228
|
+
let A = parseFloat(T);
|
|
1229
|
+
T.includes("%") && (A = A / 100 * c.width), b += A;
|
|
1201
1230
|
}
|
|
1202
|
-
const w =
|
|
1231
|
+
const w = M.match(/translateY\(([^)]+)\)/);
|
|
1203
1232
|
if (w) {
|
|
1204
|
-
const
|
|
1205
|
-
let
|
|
1206
|
-
|
|
1233
|
+
const T = w[1].trim();
|
|
1234
|
+
let A = parseFloat(T);
|
|
1235
|
+
T.includes("%") && (A = A / 100 * c.height), L -= A;
|
|
1207
1236
|
}
|
|
1208
1237
|
}
|
|
1209
|
-
|
|
1238
|
+
v.position.setX(b), v.position.setY(L), v.scale.set(g, m, 1), v.updateMatrixWorld();
|
|
1210
1239
|
}
|
|
1211
1240
|
}
|
|
1212
1241
|
});
|
|
@@ -1214,17 +1243,17 @@ class rt {
|
|
|
1214
1243
|
}
|
|
1215
1244
|
function it(s) {
|
|
1216
1245
|
const e = s.textContent || "", t = [];
|
|
1217
|
-
let r = "", i = null,
|
|
1218
|
-
const n = (
|
|
1219
|
-
for (let h = 0; h <
|
|
1220
|
-
const f =
|
|
1221
|
-
|
|
1222
|
-
const g =
|
|
1246
|
+
let r = "", i = null, l = -1;
|
|
1247
|
+
const n = (c, d) => {
|
|
1248
|
+
for (let h = 0; h < c.length; h++) {
|
|
1249
|
+
const f = c[h], v = document.createRange();
|
|
1250
|
+
v.setStart(s, d + h), v.setEnd(s, d + h + 1);
|
|
1251
|
+
const g = v.getBoundingClientRect();
|
|
1223
1252
|
if (g.width === 0 && g.height === 0) {
|
|
1224
1253
|
r += f;
|
|
1225
1254
|
continue;
|
|
1226
1255
|
}
|
|
1227
|
-
|
|
1256
|
+
l === -1 || Math.abs(g.top - l) > g.height / 2 ? (r && i && t.push({
|
|
1228
1257
|
text: r,
|
|
1229
1258
|
rect: {
|
|
1230
1259
|
left: i.left,
|
|
@@ -1237,26 +1266,26 @@ function it(s) {
|
|
|
1237
1266
|
top: g.top,
|
|
1238
1267
|
right: g.right,
|
|
1239
1268
|
bottom: g.bottom
|
|
1240
|
-
},
|
|
1269
|
+
}, l = g.top) : (r += f, i && (i.left = Math.min(i.left, g.left), i.top = Math.min(i.top, g.top), i.right = Math.max(i.right, g.right), i.bottom = Math.max(
|
|
1241
1270
|
i.bottom,
|
|
1242
1271
|
g.bottom
|
|
1243
1272
|
)));
|
|
1244
1273
|
}
|
|
1245
1274
|
}, o = e.match(/[^\s\-]+\-?|\-|\s+/g) || [];
|
|
1246
1275
|
let a = 0;
|
|
1247
|
-
for (const
|
|
1276
|
+
for (const c of o) {
|
|
1248
1277
|
const d = document.createRange();
|
|
1249
|
-
d.setStart(s, a), d.setEnd(s, a +
|
|
1278
|
+
d.setStart(s, a), d.setEnd(s, a + c.length);
|
|
1250
1279
|
const h = d.getClientRects();
|
|
1251
1280
|
if (h.length > 1)
|
|
1252
|
-
n(
|
|
1281
|
+
n(c, a);
|
|
1253
1282
|
else {
|
|
1254
1283
|
const f = h.length === 1 ? h[0] : d.getBoundingClientRect();
|
|
1255
1284
|
if (f.width === 0 && f.height === 0) {
|
|
1256
|
-
r +=
|
|
1285
|
+
r += c, a += c.length;
|
|
1257
1286
|
continue;
|
|
1258
1287
|
}
|
|
1259
|
-
|
|
1288
|
+
l === -1 || Math.abs(f.top - l) > f.height / 2 ? (r && i && t.push({
|
|
1260
1289
|
text: r,
|
|
1261
1290
|
rect: {
|
|
1262
1291
|
left: i.left,
|
|
@@ -1264,17 +1293,17 @@ function it(s) {
|
|
|
1264
1293
|
width: i.right - i.left,
|
|
1265
1294
|
height: i.bottom - i.top
|
|
1266
1295
|
}
|
|
1267
|
-
}), r =
|
|
1296
|
+
}), r = c, i = {
|
|
1268
1297
|
left: f.left,
|
|
1269
1298
|
top: f.top,
|
|
1270
1299
|
right: f.right,
|
|
1271
1300
|
bottom: f.bottom
|
|
1272
|
-
},
|
|
1301
|
+
}, l = f.top) : (r += c, i && (i.left = Math.min(i.left, f.left), i.top = Math.min(i.top, f.top), i.right = Math.max(i.right, f.right), i.bottom = Math.max(
|
|
1273
1302
|
i.bottom,
|
|
1274
1303
|
f.bottom
|
|
1275
1304
|
)));
|
|
1276
1305
|
}
|
|
1277
|
-
a +=
|
|
1306
|
+
a += c.length;
|
|
1278
1307
|
}
|
|
1279
1308
|
return r && i && t.push({
|
|
1280
1309
|
text: r,
|
|
@@ -1285,10 +1314,10 @@ function it(s) {
|
|
|
1285
1314
|
height: i.bottom - i.top
|
|
1286
1315
|
}
|
|
1287
1316
|
}), t.filter(
|
|
1288
|
-
(
|
|
1317
|
+
(c) => c.text.trim().length > 0 && c.rect.width > 0 && c.rect.height > 0
|
|
1289
1318
|
);
|
|
1290
1319
|
}
|
|
1291
|
-
function
|
|
1320
|
+
function Me(s) {
|
|
1292
1321
|
const e = parseFloat(s.fontSize);
|
|
1293
1322
|
let t = parseFloat(s.lineHeight);
|
|
1294
1323
|
isNaN(t) && (t = e * 1.2);
|
|
@@ -1304,44 +1333,44 @@ function Re(s) {
|
|
|
1304
1333
|
letterSpacing: r
|
|
1305
1334
|
};
|
|
1306
1335
|
}
|
|
1307
|
-
function
|
|
1308
|
-
var
|
|
1336
|
+
function Ue(s, e = Q | ce | Ye | ve | ue, t, r = 1, i = 0, l = 2, n, o) {
|
|
1337
|
+
var N, Z, ne, oe, B, F;
|
|
1309
1338
|
if (s.nodeType === Node.TEXT_NODE) {
|
|
1310
|
-
const
|
|
1311
|
-
if (!
|
|
1339
|
+
const p = s;
|
|
1340
|
+
if (!p.textContent || !p.textContent.trim())
|
|
1312
1341
|
return null;
|
|
1313
|
-
const
|
|
1314
|
-
if (
|
|
1342
|
+
const R = p.textContent.replace(/\s+/g, " ");
|
|
1343
|
+
if (R.length === 0)
|
|
1315
1344
|
return null;
|
|
1316
|
-
const
|
|
1317
|
-
if (
|
|
1345
|
+
const O = it(p);
|
|
1346
|
+
if (O.length === 0)
|
|
1318
1347
|
return null;
|
|
1319
|
-
const
|
|
1348
|
+
const V = p.parentElement, k = V ? window.getComputedStyle(V) : null;
|
|
1320
1349
|
if (!k)
|
|
1321
1350
|
return null;
|
|
1322
|
-
const
|
|
1351
|
+
const G = Math.min(...O.map((E) => E.rect.left)), z = Math.min(...O.map((E) => E.rect.top)), j = Math.max(...O.map((E) => E.rect.left + E.rect.width)), D = Math.max(...O.map((E) => E.rect.top + E.rect.height));
|
|
1323
1352
|
return {
|
|
1324
1353
|
id: Math.random().toString(36).substring(2, 9),
|
|
1325
1354
|
type: "TEXT",
|
|
1326
|
-
element:
|
|
1355
|
+
element: p,
|
|
1327
1356
|
rect: {
|
|
1328
|
-
x:
|
|
1329
|
-
y:
|
|
1330
|
-
width:
|
|
1331
|
-
height:
|
|
1357
|
+
x: G + window.scrollX,
|
|
1358
|
+
y: z + window.scrollY,
|
|
1359
|
+
width: j - G,
|
|
1360
|
+
height: D - z
|
|
1332
1361
|
},
|
|
1333
1362
|
styles: {
|
|
1334
1363
|
backgroundColor: "transparent",
|
|
1335
1364
|
backgroundImage: "",
|
|
1336
|
-
opacity:
|
|
1365
|
+
opacity: V && V.dataset[K.KEY] === K.VALUES.HIDE ? 1 : parseFloat(k.opacity),
|
|
1337
1366
|
zIndex: (isNaN(parseInt(k.zIndex)) ? 0 : parseInt(k.zIndex)) + i,
|
|
1338
1367
|
borderRadius: "0px",
|
|
1339
1368
|
borderColor: "transparent",
|
|
1340
1369
|
borderWidth: "0px",
|
|
1341
1370
|
isTraveler: !1
|
|
1342
1371
|
},
|
|
1343
|
-
textContent:
|
|
1344
|
-
textLines:
|
|
1372
|
+
textContent: R,
|
|
1373
|
+
textLines: O.map((E) => ({
|
|
1345
1374
|
text: E.text.trim(),
|
|
1346
1375
|
rect: {
|
|
1347
1376
|
x: E.rect.left + window.scrollX,
|
|
@@ -1350,237 +1379,237 @@ function ke(s, e = q | Z | Ye | ce | ie, t, r = 1, i = 0, c = 2, n, o) {
|
|
|
1350
1379
|
height: E.rect.height
|
|
1351
1380
|
}
|
|
1352
1381
|
})),
|
|
1353
|
-
textStyles:
|
|
1382
|
+
textStyles: Me(k),
|
|
1354
1383
|
dirtyMask: e,
|
|
1355
1384
|
visibility: t,
|
|
1356
1385
|
isTraveler: !1,
|
|
1357
1386
|
captureLayer: r,
|
|
1358
1387
|
isFixed: k.position === "fixed",
|
|
1359
1388
|
nativeLayer: n,
|
|
1360
|
-
nativeStyles: o ?
|
|
1389
|
+
nativeStyles: o ? J(J({
|
|
1361
1390
|
backgroundColor: "transparent",
|
|
1362
1391
|
backgroundImage: "",
|
|
1363
|
-
opacity:
|
|
1392
|
+
opacity: V && V.dataset[K.KEY] === K.VALUES.HIDE ? 1 : parseFloat(k.opacity),
|
|
1364
1393
|
zIndex: (isNaN(parseInt(k.zIndex)) ? 0 : parseInt(k.zIndex)) + i,
|
|
1365
1394
|
borderRadius: "0px",
|
|
1366
1395
|
borderColor: "transparent",
|
|
1367
1396
|
borderWidth: "0px",
|
|
1368
1397
|
isTraveler: !1
|
|
1369
|
-
},
|
|
1398
|
+
}, Me(k)), o) : void 0,
|
|
1370
1399
|
nativeRect: o ? {
|
|
1371
|
-
x:
|
|
1372
|
-
y:
|
|
1373
|
-
width:
|
|
1374
|
-
height:
|
|
1400
|
+
x: G + window.scrollX,
|
|
1401
|
+
y: z + window.scrollY,
|
|
1402
|
+
width: j - G,
|
|
1403
|
+
height: D - z
|
|
1375
1404
|
} : void 0,
|
|
1376
1405
|
children: []
|
|
1377
1406
|
};
|
|
1378
1407
|
}
|
|
1379
1408
|
if (s.nodeType !== Node.ELEMENT_NODE)
|
|
1380
1409
|
return null;
|
|
1381
|
-
const a = s,
|
|
1410
|
+
const a = s, c = a.dataset[W.KEY];
|
|
1382
1411
|
let d = t, h = t;
|
|
1383
|
-
if (
|
|
1384
|
-
const
|
|
1385
|
-
for (const
|
|
1386
|
-
if (!
|
|
1412
|
+
if (c) {
|
|
1413
|
+
const p = new Set(c.split(/\s+/));
|
|
1414
|
+
for (const R of p)
|
|
1415
|
+
if (!Te.includes(R))
|
|
1387
1416
|
throw new Error(
|
|
1388
|
-
`[MirageEngine] Invalid filter token: '${
|
|
1417
|
+
`[MirageEngine] Invalid filter token: '${R}'. Expected one of: 'include-tree', 'exclude-tree', 'include-self', 'exclude-self', 'end'.`
|
|
1389
1418
|
);
|
|
1390
|
-
if (
|
|
1419
|
+
if (p.has(W.VALUES.END))
|
|
1391
1420
|
return null;
|
|
1392
|
-
if (
|
|
1421
|
+
if (p.has(W.VALUES.INCLUDE_TREE) && p.has(W.VALUES.EXCLUDE_TREE))
|
|
1393
1422
|
throw new Error(
|
|
1394
1423
|
"[MirageEngine] Conflicting filters: 'include-tree' and 'exclude-tree' cannot be used together on the same element."
|
|
1395
1424
|
);
|
|
1396
|
-
if (
|
|
1425
|
+
if (p.has(W.VALUES.INCLUDE_SELF) && p.has(W.VALUES.EXCLUDE_SELF))
|
|
1397
1426
|
throw new Error(
|
|
1398
1427
|
"[MirageEngine] Conflicting filters: 'include-self' and 'exclude-self' cannot be used together on the same element."
|
|
1399
1428
|
);
|
|
1400
|
-
|
|
1429
|
+
p.has(W.VALUES.INCLUDE_TREE) ? d = d | P : p.has(W.VALUES.EXCLUDE_TREE) && (d = d & ~P), h = d, p.has(W.VALUES.INCLUDE_SELF) ? h = h | P : p.has(W.VALUES.EXCLUDE_SELF) && (h = h & ~P);
|
|
1401
1430
|
}
|
|
1402
|
-
const f = a.dataset[
|
|
1431
|
+
const f = a.dataset[$.KEY];
|
|
1403
1432
|
if (f) {
|
|
1404
|
-
const
|
|
1405
|
-
for (const
|
|
1406
|
-
if (!
|
|
1433
|
+
const p = new Set(f.split(/\s+/));
|
|
1434
|
+
for (const R of p)
|
|
1435
|
+
if (!Te.includes(R))
|
|
1407
1436
|
throw new Error(
|
|
1408
|
-
`[MirageEngine] Invalid select token: '${
|
|
1437
|
+
`[MirageEngine] Invalid select token: '${R}'. Expected one of: 'include-tree', 'exclude-tree', 'include-self', 'exclude-self', 'end'.`
|
|
1409
1438
|
);
|
|
1410
|
-
if (
|
|
1439
|
+
if (p.has($.VALUES.END))
|
|
1411
1440
|
return null;
|
|
1412
|
-
if (
|
|
1441
|
+
if (p.has($.VALUES.INCLUDE_TREE) && p.has($.VALUES.EXCLUDE_TREE))
|
|
1413
1442
|
throw new Error(
|
|
1414
1443
|
"[MirageEngine] Conflicting selects: 'include-tree' and 'exclude-tree' cannot be used together on the same element."
|
|
1415
1444
|
);
|
|
1416
|
-
if (
|
|
1445
|
+
if (p.has($.VALUES.INCLUDE_SELF) && p.has($.VALUES.EXCLUDE_SELF))
|
|
1417
1446
|
throw new Error(
|
|
1418
1447
|
"[MirageEngine] Conflicting selects: 'include-self' and 'exclude-self' cannot be used together on the same element."
|
|
1419
1448
|
);
|
|
1420
|
-
|
|
1421
|
-
}
|
|
1422
|
-
const
|
|
1423
|
-
let g = !1, m = o ?
|
|
1424
|
-
if (
|
|
1425
|
-
let
|
|
1426
|
-
const
|
|
1427
|
-
let
|
|
1428
|
-
if (
|
|
1429
|
-
|
|
1430
|
-
const
|
|
1449
|
+
p.has($.VALUES.INCLUDE_TREE) ? d = d | te : p.has($.VALUES.EXCLUDE_TREE) && (d = d & ~te), h = d, p.has($.VALUES.INCLUDE_SELF) ? h = h | te : p.has($.VALUES.EXCLUDE_SELF) && (h = h & ~te);
|
|
1450
|
+
}
|
|
1451
|
+
const v = a.dataset[_.KEY];
|
|
1452
|
+
let g = !1, m = o ? J({}, o) : {}, b = n;
|
|
1453
|
+
if (v) {
|
|
1454
|
+
let p = 1;
|
|
1455
|
+
const R = v.indexOf("{"), O = v.lastIndexOf("}");
|
|
1456
|
+
let V = v;
|
|
1457
|
+
if (R !== -1 && O !== -1 && O > R) {
|
|
1458
|
+
V = v.substring(0, R).trim();
|
|
1459
|
+
const D = v.substring(R, O + 1);
|
|
1431
1460
|
try {
|
|
1432
|
-
m = new Function("return " +
|
|
1461
|
+
m = new Function("return " + D)();
|
|
1433
1462
|
} catch (E) {
|
|
1434
1463
|
console.warn(
|
|
1435
|
-
`[MirageEngine] Failed to parse travel styles JSON: ${
|
|
1464
|
+
`[MirageEngine] Failed to parse travel styles JSON: ${D}`
|
|
1436
1465
|
);
|
|
1437
1466
|
}
|
|
1438
1467
|
}
|
|
1439
|
-
const k =
|
|
1440
|
-
let
|
|
1441
|
-
const
|
|
1442
|
-
if (
|
|
1443
|
-
g = !0,
|
|
1444
|
-
const
|
|
1445
|
-
if (
|
|
1446
|
-
|
|
1468
|
+
const k = V.split(/\s+/);
|
|
1469
|
+
let G = !1;
|
|
1470
|
+
const z = k.indexOf(_.VALUES.TRAVELER);
|
|
1471
|
+
if (z !== -1) {
|
|
1472
|
+
g = !0, G = !0;
|
|
1473
|
+
const D = k[z + 1];
|
|
1474
|
+
if (D && !isNaN(parseInt(D, 10)))
|
|
1475
|
+
p = parseInt(D, 10);
|
|
1447
1476
|
else {
|
|
1448
|
-
const E = k.find((
|
|
1449
|
-
E && (
|
|
1477
|
+
const E = k.find((ee) => !isNaN(parseInt(ee, 10)));
|
|
1478
|
+
E && (p = parseInt(E, 10));
|
|
1450
1479
|
}
|
|
1451
1480
|
}
|
|
1452
|
-
const
|
|
1453
|
-
if (
|
|
1454
|
-
const
|
|
1455
|
-
if (
|
|
1456
|
-
b = parseInt(
|
|
1481
|
+
const j = k.indexOf(_.VALUES.NATIVE);
|
|
1482
|
+
if (j !== -1) {
|
|
1483
|
+
const D = k[j + 1];
|
|
1484
|
+
if (D && !isNaN(parseInt(D, 10)))
|
|
1485
|
+
b = parseInt(D, 10);
|
|
1457
1486
|
else if (!g) {
|
|
1458
|
-
const E = k.find((
|
|
1487
|
+
const E = k.find((ee) => !isNaN(parseInt(ee, 10)));
|
|
1459
1488
|
E && (b = parseInt(E, 10));
|
|
1460
1489
|
}
|
|
1461
1490
|
}
|
|
1462
|
-
if (
|
|
1463
|
-
const
|
|
1464
|
-
if (
|
|
1491
|
+
if (G) {
|
|
1492
|
+
const D = p + 1;
|
|
1493
|
+
if (D < r)
|
|
1465
1494
|
throw new Error(
|
|
1466
|
-
`[MirageEngine] Traveler layer (${
|
|
1495
|
+
`[MirageEngine] Traveler layer (${p}) cannot be smaller than inherited capture layer (${r - 1}).`
|
|
1467
1496
|
);
|
|
1468
|
-
r = Math.min(
|
|
1497
|
+
r = Math.min(D, _.MAX_LAYERS + 1);
|
|
1469
1498
|
}
|
|
1470
1499
|
}
|
|
1471
|
-
const
|
|
1472
|
-
let
|
|
1473
|
-
|
|
1474
|
-
const
|
|
1475
|
-
if (
|
|
1500
|
+
const L = a.dataset[Ve.KEY];
|
|
1501
|
+
let M;
|
|
1502
|
+
L && (M = JSON.parse(L));
|
|
1503
|
+
const S = a.getBoundingClientRect(), x = window.getComputedStyle(a);
|
|
1504
|
+
if (S.width === 0 || S.height === 0 || x.display === "none")
|
|
1476
1505
|
return null;
|
|
1477
1506
|
let C = a.getAttribute("data-mid");
|
|
1478
1507
|
C || (C = Math.random().toString(36).substring(2, 11), a.setAttribute("data-mid", C));
|
|
1479
|
-
const w = parseInt(x.zIndex),
|
|
1480
|
-
let
|
|
1508
|
+
const w = parseInt(x.zIndex), T = (isNaN(w) ? 0 : w) + i;
|
|
1509
|
+
let A;
|
|
1481
1510
|
if (a.tagName === "IMG")
|
|
1482
|
-
|
|
1511
|
+
A = a.src;
|
|
1483
1512
|
else if (a.tagName.toLowerCase() === "svg") {
|
|
1484
|
-
const
|
|
1485
|
-
const
|
|
1486
|
-
|
|
1487
|
-
const
|
|
1488
|
-
|
|
1489
|
-
const
|
|
1490
|
-
|
|
1491
|
-
const
|
|
1492
|
-
|
|
1493
|
-
for (let
|
|
1494
|
-
|
|
1513
|
+
const p = a.cloneNode(!0), R = m == null ? void 0 : m.color, O = m == null ? void 0 : m.fill, V = m == null ? void 0 : m.stroke, k = m == null ? void 0 : m.opacity, G = (E, ee) => {
|
|
1514
|
+
const Y = window.getComputedStyle(E), ae = ee, Be = Y.fill === Y.color, Oe = Y.stroke === Y.color, fe = O || (Be ? R : void 0) || Y.fill;
|
|
1515
|
+
fe && fe !== "none" && (ae.style.fill = fe);
|
|
1516
|
+
const ge = V || (Oe ? R : void 0) || Y.stroke;
|
|
1517
|
+
ge && ge !== "none" && (ae.style.stroke = ge), Y.strokeWidth && Y.strokeWidth !== "0px" && (ae.style.strokeWidth = Y.strokeWidth);
|
|
1518
|
+
const be = R || Y.color;
|
|
1519
|
+
be && (ae.style.color = be);
|
|
1520
|
+
const pe = k || Y.opacity;
|
|
1521
|
+
pe && pe !== "1" && (ae.style.opacity = pe);
|
|
1522
|
+
for (let he = 0; he < E.children.length; he++)
|
|
1523
|
+
G(E.children[he], ee.children[he]);
|
|
1495
1524
|
};
|
|
1496
|
-
|
|
1497
|
-
const
|
|
1498
|
-
|
|
1499
|
-
let
|
|
1500
|
-
|
|
1525
|
+
G(a, p);
|
|
1526
|
+
const z = a.getBoundingClientRect(), j = window.devicePixelRatio * l;
|
|
1527
|
+
p.hasAttribute("viewBox") || p.setAttribute("viewBox", `0 0 ${z.width} ${z.height}`), p.setAttribute("width", (z.width * j).toString()), p.setAttribute("height", (z.height * j).toString());
|
|
1528
|
+
let D = new XMLSerializer().serializeToString(p);
|
|
1529
|
+
D.includes("xmlns=") || (D = D.replace(
|
|
1501
1530
|
"<svg",
|
|
1502
1531
|
'<svg xmlns="http://www.w3.org/2000/svg"'
|
|
1503
|
-
)),
|
|
1532
|
+
)), A = `data:image/svg+xml;utf8,${encodeURIComponent(D)}`;
|
|
1504
1533
|
} else if (x.backgroundImage && x.backgroundImage !== "none") {
|
|
1505
|
-
const
|
|
1506
|
-
|
|
1534
|
+
const p = x.backgroundImage.match(/url\(['"]?(.*?)['"]?\)/);
|
|
1535
|
+
p && (A = p[1]);
|
|
1507
1536
|
}
|
|
1508
1537
|
const I = {
|
|
1509
1538
|
backgroundColor: x.backgroundColor,
|
|
1510
1539
|
backgroundImage: x.backgroundImage,
|
|
1511
|
-
opacity: a.dataset[
|
|
1512
|
-
zIndex:
|
|
1540
|
+
opacity: a.dataset[K.KEY] === K.VALUES.HIDE ? 1 : parseFloat(x.opacity),
|
|
1541
|
+
zIndex: T,
|
|
1513
1542
|
borderRadius: x.borderRadius,
|
|
1514
1543
|
borderColor: x.borderColor,
|
|
1515
1544
|
borderWidth: x.borderWidth,
|
|
1516
|
-
imageSrc:
|
|
1545
|
+
imageSrc: A,
|
|
1517
1546
|
isTraveler: g
|
|
1518
|
-
},
|
|
1519
|
-
let
|
|
1520
|
-
const
|
|
1521
|
-
return a.tagName.toLowerCase() !== "svg" && Array.from(a.childNodes).forEach((
|
|
1522
|
-
const
|
|
1523
|
-
|
|
1547
|
+
}, q = I;
|
|
1548
|
+
let ie, se;
|
|
1549
|
+
const X = [];
|
|
1550
|
+
return a.tagName.toLowerCase() !== "svg" && Array.from(a.childNodes).forEach((p) => {
|
|
1551
|
+
const R = p.nodeType === Node.TEXT_NODE ? h : d, O = Ue(
|
|
1552
|
+
p,
|
|
1524
1553
|
e,
|
|
1525
|
-
|
|
1554
|
+
R,
|
|
1526
1555
|
r,
|
|
1527
|
-
|
|
1528
|
-
|
|
1529
|
-
|
|
1530
|
-
|
|
1556
|
+
T,
|
|
1557
|
+
l,
|
|
1558
|
+
p.nodeType === Node.TEXT_NODE ? b : void 0,
|
|
1559
|
+
p.nodeType === Node.TEXT_NODE && Object.keys(m).length > 0 ? m : void 0
|
|
1531
1560
|
);
|
|
1532
|
-
|
|
1561
|
+
O && X.push(O);
|
|
1533
1562
|
}), {
|
|
1534
1563
|
id: C,
|
|
1535
1564
|
type: "BOX",
|
|
1536
1565
|
element: a,
|
|
1537
1566
|
rect: {
|
|
1538
|
-
x:
|
|
1539
|
-
y:
|
|
1540
|
-
width:
|
|
1541
|
-
height:
|
|
1567
|
+
x: S.left + window.scrollX,
|
|
1568
|
+
y: S.top + window.scrollY,
|
|
1569
|
+
width: S.width,
|
|
1570
|
+
height: S.height
|
|
1542
1571
|
},
|
|
1543
|
-
styles:
|
|
1544
|
-
textContent:
|
|
1545
|
-
textStyles:
|
|
1572
|
+
styles: q,
|
|
1573
|
+
textContent: ie,
|
|
1574
|
+
textStyles: se,
|
|
1546
1575
|
dirtyMask: e,
|
|
1547
1576
|
visibility: h,
|
|
1548
1577
|
isTraveler: g,
|
|
1549
1578
|
captureLayer: r,
|
|
1550
1579
|
nativeLayer: b,
|
|
1551
|
-
nativeStyles: b !== void 0 ?
|
|
1552
|
-
backgroundColor: (
|
|
1553
|
-
backgroundImage: (
|
|
1554
|
-
opacity: (
|
|
1555
|
-
zIndex: m.zIndex !== void 0 ? m.zIndex +
|
|
1556
|
-
borderRadius: (
|
|
1557
|
-
borderColor: (
|
|
1558
|
-
borderWidth: (
|
|
1580
|
+
nativeStyles: b !== void 0 ? xe(J({}, I), {
|
|
1581
|
+
backgroundColor: (N = m.backgroundColor) != null ? N : I.backgroundColor,
|
|
1582
|
+
backgroundImage: (Z = m.backgroundImage) != null ? Z : I.backgroundImage,
|
|
1583
|
+
opacity: (ne = m.opacity) != null ? ne : I.opacity,
|
|
1584
|
+
zIndex: m.zIndex !== void 0 ? m.zIndex + T : I.zIndex,
|
|
1585
|
+
borderRadius: (oe = m.borderRadius) != null ? oe : I.borderRadius,
|
|
1586
|
+
borderColor: (B = m.borderColor) != null ? B : I.borderColor,
|
|
1587
|
+
borderWidth: (F = m.borderWidth) != null ? F : I.borderWidth,
|
|
1559
1588
|
isTraveler: I.isTraveler,
|
|
1560
1589
|
transform: m.transform
|
|
1561
1590
|
}) : void 0,
|
|
1562
1591
|
nativeRect: b !== void 0 ? {
|
|
1563
|
-
x: m.x !== void 0 ? parseFloat(m.x) :
|
|
1564
|
-
y: m.y !== void 0 ? parseFloat(m.y) :
|
|
1565
|
-
width: m.width !== void 0 ? parseFloat(m.width) :
|
|
1566
|
-
height: m.height !== void 0 ? parseFloat(m.height) :
|
|
1592
|
+
x: m.x !== void 0 ? parseFloat(m.x) : S.left + window.scrollX,
|
|
1593
|
+
y: m.y !== void 0 ? parseFloat(m.y) : S.top + window.scrollY,
|
|
1594
|
+
width: m.width !== void 0 ? parseFloat(m.width) : S.width,
|
|
1595
|
+
height: m.height !== void 0 ? parseFloat(m.height) : S.height
|
|
1567
1596
|
} : void 0,
|
|
1568
1597
|
isFixed: x.position === "fixed",
|
|
1569
|
-
children:
|
|
1570
|
-
shaderHooks:
|
|
1598
|
+
children: X,
|
|
1599
|
+
shaderHooks: M
|
|
1571
1600
|
};
|
|
1572
1601
|
}
|
|
1573
1602
|
function st(s, e) {
|
|
1574
1603
|
e.size !== 0 && e.forEach((t, r) => {
|
|
1575
|
-
var
|
|
1604
|
+
var l, n, o, a;
|
|
1576
1605
|
const i = s.get(r);
|
|
1577
|
-
!i || !i.userData.basePosition || (
|
|
1606
|
+
!i || !i.userData.basePosition || (H.forceUpdateUniforms(i.material, {
|
|
1578
1607
|
backgroundColor: t.backgroundColor,
|
|
1579
1608
|
backgroundImage: t.backgroundImage,
|
|
1580
1609
|
opacity: t.opacity,
|
|
1581
|
-
borderRadius: (n = t.borderRadius) != null ? n : (
|
|
1610
|
+
borderRadius: (n = t.borderRadius) != null ? n : (l = i.userData.baseStyles) == null ? void 0 : l.borderRadius
|
|
1582
1611
|
// width and height are no longer updated here, they are updated in syncMeshesByDOM
|
|
1583
|
-
}), i.userData.nativeMesh &&
|
|
1612
|
+
}), i.userData.nativeMesh && H.forceUpdateUniforms(i.userData.nativeMesh.material, {
|
|
1584
1613
|
backgroundColor: t.backgroundColor,
|
|
1585
1614
|
backgroundImage: t.backgroundImage,
|
|
1586
1615
|
opacity: t.opacity,
|
|
@@ -1595,21 +1624,21 @@ class nt {
|
|
|
1595
1624
|
u(this, "registry");
|
|
1596
1625
|
u(this, "isTravelEnabled", !1);
|
|
1597
1626
|
u(this, "tracker");
|
|
1598
|
-
this.target = e, this.renderer = t, this.registry = r, this.tracker = new
|
|
1627
|
+
this.target = e, this.renderer = t, this.registry = r, this.tracker = new De(e, {
|
|
1599
1628
|
resizeDebounce: i.resizeDebounce
|
|
1600
|
-
}), this.tracker.onLayoutChange.add((
|
|
1601
|
-
document.querySelector(`[${
|
|
1602
|
-
const a =
|
|
1629
|
+
}), this.tracker.onLayoutChange.add((l, n) => {
|
|
1630
|
+
document.querySelector(`[${_.NAME}~='${_.VALUES.TRAVELER}']`) !== null && !this.isTravelEnabled && (this.isTravelEnabled = !0, this.renderer.createRenderTarget());
|
|
1631
|
+
const a = Ue(
|
|
1603
1632
|
this.target,
|
|
1604
|
-
|
|
1605
|
-
|
|
1633
|
+
l,
|
|
1634
|
+
P,
|
|
1606
1635
|
1,
|
|
1607
1636
|
0,
|
|
1608
1637
|
this.renderer.qualityFactor
|
|
1609
1638
|
);
|
|
1610
1639
|
a && this.renderer.syncScene(a, n);
|
|
1611
|
-
}), this.tracker.onStyleChange.add((
|
|
1612
|
-
st(this.registry,
|
|
1640
|
+
}), this.tracker.onStyleChange.add((l) => {
|
|
1641
|
+
st(this.registry, l);
|
|
1613
1642
|
}), this.tracker.onRender.add(() => {
|
|
1614
1643
|
this.renderer.syncMeshesByDOM(), this.renderer.render();
|
|
1615
1644
|
});
|
|
@@ -1652,17 +1681,17 @@ class at {
|
|
|
1652
1681
|
u(this, "syncer");
|
|
1653
1682
|
u(this, "target");
|
|
1654
1683
|
u(this, "registry");
|
|
1655
|
-
var i,
|
|
1684
|
+
var i, l, n;
|
|
1656
1685
|
if (this.target = e, this.registry = new ot(), !document.getElementById("mirage-engine-styles")) {
|
|
1657
1686
|
const o = document.createElement("style");
|
|
1658
1687
|
o.id = "mirage-engine-styles", o.textContent = `
|
|
1659
|
-
[${
|
|
1688
|
+
[${K.NAME}="${K.VALUES.HIDE}"] {
|
|
1660
1689
|
opacity: 0 !important;
|
|
1661
1690
|
}
|
|
1662
1691
|
`, document.head.appendChild(o);
|
|
1663
1692
|
}
|
|
1664
1693
|
let r;
|
|
1665
|
-
if (t.mode === "duplicate" ? r = (
|
|
1694
|
+
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)
|
|
1666
1695
|
throw new Error("[Mirage] Cannot find a container (parent or option).");
|
|
1667
1696
|
this.renderer = new rt(
|
|
1668
1697
|
this.target,
|
|
@@ -1701,10 +1730,10 @@ class at {
|
|
|
1701
1730
|
ArrowUp: !1,
|
|
1702
1731
|
ArrowDown: !1
|
|
1703
1732
|
};
|
|
1704
|
-
window.addEventListener("keydown", (
|
|
1705
|
-
t[
|
|
1706
|
-
}), window.addEventListener("keyup", (
|
|
1707
|
-
t[
|
|
1733
|
+
window.addEventListener("keydown", (l) => {
|
|
1734
|
+
t[l.key] !== void 0 && (t[l.key] = !0);
|
|
1735
|
+
}), window.addEventListener("keyup", (l) => {
|
|
1736
|
+
t[l.key] !== void 0 && (t[l.key] = !1);
|
|
1708
1737
|
});
|
|
1709
1738
|
const r = 2, i = () => {
|
|
1710
1739
|
requestAnimationFrame(i), t.ArrowRight && e.position.setX(e.position.x + r), t.ArrowLeft && e.position.setX(e.position.x - r), t.ArrowUp && e.position.setY(e.position.y + r), t.ArrowDown && e.position.setY(e.position.y - r);
|
|
@@ -1721,7 +1750,7 @@ class ct {
|
|
|
1721
1750
|
u(this, "midLayer", null);
|
|
1722
1751
|
u(this, "frontLayer", null);
|
|
1723
1752
|
u(this, "tracker", null);
|
|
1724
|
-
this.frontSelector = e.frontSelector || ".front", this.midLayerElement = e.midLayerElement || null, this.items = [], this.isInitialized = !1, this.tracker = new
|
|
1753
|
+
this.frontSelector = e.frontSelector || ".front", this.midLayerElement = e.midLayerElement || null, this.items = [], this.isInitialized = !1, this.tracker = new De(document.body, e.trackerConfig || { resizeDebounce: !0 });
|
|
1725
1754
|
}
|
|
1726
1755
|
init() {
|
|
1727
1756
|
var e;
|
|
@@ -1751,8 +1780,8 @@ class ct {
|
|
|
1751
1780
|
const e = document.querySelectorAll(this.frontSelector);
|
|
1752
1781
|
this.frontLayer && e.forEach((t) => {
|
|
1753
1782
|
var n;
|
|
1754
|
-
const r = t.getBoundingClientRect(), i = window.getComputedStyle(t),
|
|
1755
|
-
|
|
1783
|
+
const r = t.getBoundingClientRect(), i = window.getComputedStyle(t), l = document.createElement("div");
|
|
1784
|
+
l.className = "sand-placeholder", Object.assign(l.style, {
|
|
1756
1785
|
display: i.display === "inline" ? "inline-block" : i.display,
|
|
1757
1786
|
width: `${r.width}px`,
|
|
1758
1787
|
height: `${r.height}px`,
|
|
@@ -1763,14 +1792,14 @@ class ct {
|
|
|
1763
1792
|
marginRight: i.marginRight,
|
|
1764
1793
|
visibility: "hidden",
|
|
1765
1794
|
pointerEvents: "none"
|
|
1766
|
-
}), (n = t.parentNode) == null || n.insertBefore(
|
|
1795
|
+
}), (n = t.parentNode) == null || n.insertBefore(l, t), this.frontLayer.appendChild(t), Object.assign(t.style, {
|
|
1767
1796
|
position: "fixed",
|
|
1768
1797
|
margin: "0",
|
|
1769
1798
|
boxSizing: "border-box",
|
|
1770
1799
|
width: `${r.width}px`,
|
|
1771
1800
|
height: `${r.height}px`,
|
|
1772
1801
|
pointerEvents: "auto"
|
|
1773
|
-
}), this.items.push({ placeholder:
|
|
1802
|
+
}), this.items.push({ placeholder: l, original: t });
|
|
1774
1803
|
});
|
|
1775
1804
|
}
|
|
1776
1805
|
setupHooks() {
|
|
@@ -1792,7 +1821,7 @@ class ht {
|
|
|
1792
1821
|
if (this._engine = new at(e, t), t.sandwich !== !1) {
|
|
1793
1822
|
const r = typeof t.sandwich == "object" ? t.sandwich : {};
|
|
1794
1823
|
this._sandwich = new ct({
|
|
1795
|
-
frontSelector: r.frontSelector || `[${
|
|
1824
|
+
frontSelector: r.frontSelector || `[${Se.NAME}='${Se.VALUES.FRONT}']`
|
|
1796
1825
|
}), this._sandwich.useTracker(this._engine.getTracker());
|
|
1797
1826
|
}
|
|
1798
1827
|
}
|