@mirage-engine/core 0.3.3 → 0.3.5
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/CHANGELOG.md +14 -0
- package/dist/mirage-engine.js +713 -703
- package/dist/mirage-engine.umd.js +16 -16
- package/dist/src/animation/Animator.d.ts +0 -2
- package/dist/src/renderer/Renderer.d.ts +1 -1
- package/dist/src/types/attributes.d.ts +1 -0
- package/package.json +3 -3
- package/src/animation/Animator.ts +1 -85
- package/src/core/Syncer.ts +2 -8
- package/src/renderer/Renderer.ts +82 -7
- package/src/types/attributes.ts +1 -0
package/dist/mirage-engine.js
CHANGED
|
@@ -1,46 +1,47 @@
|
|
|
1
|
-
var Oe = Object.defineProperty,
|
|
2
|
-
var
|
|
3
|
-
var
|
|
1
|
+
var Oe = Object.defineProperty, Be = Object.defineProperties;
|
|
2
|
+
var Fe = Object.getOwnPropertyDescriptors;
|
|
3
|
+
var be = Object.getOwnPropertySymbols;
|
|
4
4
|
var _e = Object.prototype.hasOwnProperty, Ne = Object.prototype.propertyIsEnumerable;
|
|
5
|
-
var
|
|
5
|
+
var oe = (s, e, t) => e in s ? Oe(s, e, { enumerable: !0, configurable: !0, writable: !0, value: t }) : s[e] = t, q = (s, e) => {
|
|
6
6
|
for (var t in e || (e = {}))
|
|
7
|
-
_e.call(e, t) &&
|
|
8
|
-
if (
|
|
9
|
-
for (var t of
|
|
10
|
-
Ne.call(e, t) &&
|
|
7
|
+
_e.call(e, t) && oe(s, t, e[t]);
|
|
8
|
+
if (be)
|
|
9
|
+
for (var t of be(e))
|
|
10
|
+
Ne.call(e, t) && oe(s, t, e[t]);
|
|
11
11
|
return s;
|
|
12
|
-
},
|
|
13
|
-
var g = (s, e, t) => (
|
|
14
|
-
var
|
|
15
|
-
var
|
|
12
|
+
}, we = (s, e) => Be(s, Fe(e));
|
|
13
|
+
var g = (s, e, t) => (oe(s, typeof e != "symbol" ? e + "" : e, t), t);
|
|
14
|
+
var Ee = (s, e, t) => new Promise((r, i) => {
|
|
15
|
+
var a = (l) => {
|
|
16
16
|
try {
|
|
17
|
-
|
|
18
|
-
} catch (
|
|
19
|
-
|
|
17
|
+
o(t.next(l));
|
|
18
|
+
} catch (c) {
|
|
19
|
+
i(c);
|
|
20
20
|
}
|
|
21
|
-
},
|
|
21
|
+
}, n = (l) => {
|
|
22
22
|
try {
|
|
23
|
-
|
|
24
|
-
} catch (
|
|
25
|
-
|
|
23
|
+
o(t.throw(l));
|
|
24
|
+
} catch (c) {
|
|
25
|
+
i(c);
|
|
26
26
|
}
|
|
27
|
-
},
|
|
28
|
-
|
|
27
|
+
}, o = (l) => l.done ? r(l.value) : Promise.resolve(l.value).then(a, n);
|
|
28
|
+
o((t = t.apply(s, e)).next());
|
|
29
29
|
});
|
|
30
|
-
import * as
|
|
31
|
-
const
|
|
30
|
+
import * as y from "three";
|
|
31
|
+
const Re = {
|
|
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
|
+
}, H = {
|
|
38
38
|
NAME: "data-mirage-dom",
|
|
39
39
|
KEY: "mirageDom",
|
|
40
40
|
VALUES: {
|
|
41
|
-
HIDE: "hide"
|
|
41
|
+
HIDE: "hide",
|
|
42
|
+
SHOW: "show"
|
|
42
43
|
}
|
|
43
|
-
},
|
|
44
|
+
}, xe = {
|
|
44
45
|
TRAVELER: "traveler",
|
|
45
46
|
NATIVE: "native",
|
|
46
47
|
CAPTURE_1: "1",
|
|
@@ -48,29 +49,29 @@ const De = {
|
|
|
48
49
|
CAPTURE_3: "3",
|
|
49
50
|
CAPTURE_4: "4",
|
|
50
51
|
CAPTURE_5: "5"
|
|
51
|
-
},
|
|
52
|
+
}, k = {
|
|
52
53
|
NAME: "data-mirage-travel",
|
|
53
54
|
KEY: "mirageTravel",
|
|
54
|
-
VALUES:
|
|
55
|
-
MAX_LAYERS: Object.keys(
|
|
56
|
-
},
|
|
55
|
+
VALUES: xe,
|
|
56
|
+
MAX_LAYERS: Object.keys(xe).length - 1
|
|
57
|
+
}, _ = {
|
|
57
58
|
NAME: "data-mirage-filter",
|
|
58
59
|
KEY: "mirageFilter",
|
|
59
|
-
VALUES:
|
|
60
|
+
VALUES: Re
|
|
60
61
|
}, V = {
|
|
61
62
|
NAME: "data-mirage-select",
|
|
62
63
|
KEY: "mirageSelect",
|
|
63
|
-
VALUES:
|
|
64
|
-
},
|
|
64
|
+
VALUES: Re
|
|
65
|
+
}, Xe = {
|
|
65
66
|
NAME: "data-mirage-shader",
|
|
66
67
|
KEY: "mirageShader"
|
|
67
|
-
},
|
|
68
|
+
}, at = {
|
|
68
69
|
NAME: "data-mirage-sandwich",
|
|
69
70
|
KEY: "mirageSandwich",
|
|
70
71
|
VALUES: {
|
|
71
72
|
FRONT: "front"
|
|
72
73
|
}
|
|
73
|
-
},
|
|
74
|
+
}, te = 0, $ = 1, Q = 2, ze = 4, re = 8, le = 16;
|
|
74
75
|
function Ve(s) {
|
|
75
76
|
const e = s.match(/rgba?\((\d+),\s*(\d+),\s*(\d+)/);
|
|
76
77
|
return e ? {
|
|
@@ -79,7 +80,7 @@ function Ve(s) {
|
|
|
79
80
|
b: parseInt(e[3]) / 255
|
|
80
81
|
} : { r: 1, g: 1, b: 1 };
|
|
81
82
|
}
|
|
82
|
-
function
|
|
83
|
+
function Ye(s) {
|
|
83
84
|
const e = {};
|
|
84
85
|
if (s.opacity && (e.opacity = parseFloat(s.opacity)), s.backgroundColor && s.backgroundColor !== "rgba(0, 0, 0, 0)") {
|
|
85
86
|
const t = Ve(s.backgroundColor);
|
|
@@ -91,7 +92,7 @@ function We(s) {
|
|
|
91
92
|
}
|
|
92
93
|
return e;
|
|
93
94
|
}
|
|
94
|
-
class
|
|
95
|
+
class We {
|
|
95
96
|
constructor(e, t) {
|
|
96
97
|
g(this, "target");
|
|
97
98
|
g(this, "observer");
|
|
@@ -99,7 +100,7 @@ class Pe {
|
|
|
99
100
|
g(this, "pendingStyles", /* @__PURE__ */ new Map());
|
|
100
101
|
g(this, "isDomDirty", !1);
|
|
101
102
|
g(this, "isRunning", !1);
|
|
102
|
-
g(this, "pendingMask",
|
|
103
|
+
g(this, "pendingMask", te);
|
|
103
104
|
g(this, "mutationTimer", null);
|
|
104
105
|
g(this, "cssTimer", null);
|
|
105
106
|
g(this, "resizeConfig");
|
|
@@ -114,7 +115,7 @@ class Pe {
|
|
|
114
115
|
g(this, "onScrollChange", /* @__PURE__ */ new Set());
|
|
115
116
|
g(this, "onRender", /* @__PURE__ */ new Set());
|
|
116
117
|
g(this, "onTransitionFinished", (e) => {
|
|
117
|
-
this.target.contains(e.target) && this.mutationTimer === null && (this.cssTimer && clearTimeout(this.cssTimer), this.pendingStyles.size == 0 && (this.pendingMask |= $ |
|
|
118
|
+
this.target.contains(e.target) && this.mutationTimer === null && (this.cssTimer && clearTimeout(this.cssTimer), this.pendingStyles.size == 0 && (this.pendingMask |= $ | Q, this.cssTimer = window.setTimeout(() => {
|
|
118
119
|
this.isDomDirty = !0, this.cssTimer = null;
|
|
119
120
|
}, 50)));
|
|
120
121
|
});
|
|
@@ -130,38 +131,38 @@ class Pe {
|
|
|
130
131
|
g(this, "renderLoop", () => {
|
|
131
132
|
if (!this.isRunning)
|
|
132
133
|
return;
|
|
133
|
-
this.onBeforeRender.forEach((
|
|
134
|
+
this.onBeforeRender.forEach((r) => r()), this.isDomDirty && (this.isDomDirty = !1, this.onLayoutChange.forEach((r) => r(this.pendingMask, this.pendingDeletions)), this.pendingDeletions.clear(), this.pendingMask = te);
|
|
134
135
|
const e = window.scrollX, t = window.scrollY;
|
|
135
|
-
(e !== this.lastScrollX || t !== this.lastScrollY) && (this.onScrollChange.forEach((
|
|
136
|
+
(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(() => {
|
|
136
137
|
this.pendingMask |= $, this.isDomDirty = !0, this.scrollTimer = null;
|
|
137
|
-
}, 150)), this.pendingStyles.size > 0 && (this.onStyleChange.forEach((
|
|
138
|
+
}, 150)), this.pendingStyles.size > 0 && (this.onStyleChange.forEach((r) => r(this.pendingStyles)), this.pendingStyles.clear()), this.onRender.forEach((r) => r()), requestAnimationFrame(this.renderLoop);
|
|
138
139
|
});
|
|
139
|
-
var
|
|
140
|
+
var i, a;
|
|
140
141
|
this.target = e;
|
|
141
|
-
const
|
|
142
|
-
|
|
142
|
+
const r = (i = t.resizeDebounce) != null ? i : !0;
|
|
143
|
+
r === !1 ? this.resizeConfig = { enabled: !1, delay: 0 } : r === !0 ? this.resizeConfig = { enabled: !0, delay: 150 } : this.resizeConfig = {
|
|
143
144
|
enabled: !0,
|
|
144
|
-
delay: (
|
|
145
|
-
onStart:
|
|
146
|
-
onEnd:
|
|
147
|
-
}, this.observer = new MutationObserver((
|
|
148
|
-
let
|
|
149
|
-
for (const
|
|
150
|
-
if (
|
|
151
|
-
|
|
152
|
-
|
|
145
|
+
delay: (a = r.delay) != null ? a : 150,
|
|
146
|
+
onStart: r.onStart,
|
|
147
|
+
onEnd: r.onEnd
|
|
148
|
+
}, this.observer = new MutationObserver((n) => {
|
|
149
|
+
let o = te;
|
|
150
|
+
for (const l of n)
|
|
151
|
+
if (l.type === "childList")
|
|
152
|
+
o |= re, l.removedNodes.length > 0 && l.removedNodes.forEach((c) => {
|
|
153
|
+
c instanceof HTMLElement && this.pendingDeletions.add(c);
|
|
153
154
|
});
|
|
154
|
-
else if (
|
|
155
|
-
if (
|
|
156
|
-
|
|
157
|
-
const
|
|
158
|
-
this.pendingStyles.set(
|
|
155
|
+
else if (l.type === "attributes")
|
|
156
|
+
if (l.attributeName === "style") {
|
|
157
|
+
o |= $ | Q;
|
|
158
|
+
const c = l.target, d = Ye(c.style);
|
|
159
|
+
this.pendingStyles.set(c, d);
|
|
159
160
|
} else
|
|
160
|
-
|
|
161
|
+
l.attributeName === "class" ? o |= $ | Q : l.attributeName && l.attributeName.startsWith("data-") && (o |= $ | Q, l.attributeName.startsWith("data-mirage") && (o |= re));
|
|
161
162
|
else
|
|
162
|
-
|
|
163
|
-
if (
|
|
164
|
-
if (this.pendingMask |=
|
|
163
|
+
l.type === "characterData" && (o |= le | $);
|
|
164
|
+
if (o !== te) {
|
|
165
|
+
if (this.pendingMask |= o, o & re) {
|
|
165
166
|
this.clearTimers(), this.isDomDirty = !0;
|
|
166
167
|
return;
|
|
167
168
|
}
|
|
@@ -186,13 +187,13 @@ class Pe {
|
|
|
186
187
|
this.mutationTimer && (clearTimeout(this.mutationTimer), this.mutationTimer = null), this.cssTimer && (clearTimeout(this.cssTimer), this.cssTimer = null), this.scrollTimer && (clearTimeout(this.scrollTimer), this.scrollTimer = null);
|
|
187
188
|
}
|
|
188
189
|
}
|
|
189
|
-
const W = 1, j = 2, lt = 0,
|
|
190
|
+
const W = 1, j = 2, lt = 0, L = {
|
|
190
191
|
BASE: 0,
|
|
191
192
|
SELECTED: 1,
|
|
192
193
|
getCaptureLayer: (s) => 31 - s,
|
|
193
194
|
HIDDEN: 31
|
|
194
|
-
},
|
|
195
|
-
class
|
|
195
|
+
}, Ce = Object.values(_.VALUES);
|
|
196
|
+
class Le {
|
|
196
197
|
/**
|
|
197
198
|
* Calculates or retrieves the exact alphabetic baseline (in pixels) for the given font.
|
|
198
199
|
* @param font CSS font shorthand string (e.g., "400 16px Inter")
|
|
@@ -207,18 +208,18 @@ class Ae {
|
|
|
207
208
|
static calculateBaselineFromDOM(e) {
|
|
208
209
|
if (typeof document == "undefined")
|
|
209
210
|
return 0;
|
|
210
|
-
const t = document.createElement("div"),
|
|
211
|
-
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",
|
|
212
|
-
const
|
|
213
|
-
return document.body.removeChild(t),
|
|
211
|
+
const t = document.createElement("div"), r = document.createElement("span"), i = document.createElement("img");
|
|
212
|
+
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);
|
|
213
|
+
const a = i.offsetTop - r.offsetTop;
|
|
214
|
+
return document.body.removeChild(t), a;
|
|
214
215
|
}
|
|
215
216
|
}
|
|
216
|
-
g(
|
|
217
|
-
class He extends
|
|
218
|
-
constructor(t, i,
|
|
217
|
+
g(Le, "cache", /* @__PURE__ */ new Map());
|
|
218
|
+
class He extends y.MeshBasicMaterial {
|
|
219
|
+
constructor(t, r, i, a, n = 2) {
|
|
219
220
|
super({
|
|
220
221
|
transparent: !0,
|
|
221
|
-
side:
|
|
222
|
+
side: y.FrontSide,
|
|
222
223
|
color: 16777215
|
|
223
224
|
});
|
|
224
225
|
g(this, "canvas");
|
|
@@ -226,34 +227,34 @@ class He extends b.MeshBasicMaterial {
|
|
|
226
227
|
g(this, "qualityFactor");
|
|
227
228
|
if (this.canvas = document.createElement("canvas"), this.ctx = this.canvas.getContext("2d"), !this.ctx)
|
|
228
229
|
throw new Error("[Mirage] Failed to create canvas context");
|
|
229
|
-
this.qualityFactor =
|
|
230
|
-
}
|
|
231
|
-
wrapText(t,
|
|
232
|
-
const
|
|
233
|
-
`),
|
|
234
|
-
return
|
|
235
|
-
const
|
|
236
|
-
if (
|
|
237
|
-
|
|
230
|
+
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, a);
|
|
231
|
+
}
|
|
232
|
+
wrapText(t, r) {
|
|
233
|
+
const i = t.split(`
|
|
234
|
+
`), a = [];
|
|
235
|
+
return i.forEach((n) => {
|
|
236
|
+
const o = n.match(/[^\s\-]+\-?|\-|\s+/g) || [];
|
|
237
|
+
if (o.length === 0) {
|
|
238
|
+
a.push("");
|
|
238
239
|
return;
|
|
239
240
|
}
|
|
240
|
-
let
|
|
241
|
-
for (let
|
|
242
|
-
const d = c
|
|
243
|
-
this.ctx.measureText(
|
|
241
|
+
let l = o[0];
|
|
242
|
+
for (let c = 1; c < o.length; c++) {
|
|
243
|
+
const d = o[c];
|
|
244
|
+
this.ctx.measureText(l + d).width <= r + 2 ? l += d : (l && a.push(l), l = d.trimStart());
|
|
244
245
|
}
|
|
245
|
-
|
|
246
|
-
}),
|
|
247
|
-
}
|
|
248
|
-
updateText(t, i,
|
|
249
|
-
|
|
250
|
-
const
|
|
251
|
-
this.canvas.width !==
|
|
252
|
-
const h = this.wrapText(t,
|
|
253
|
-
h.forEach((f,
|
|
254
|
-
const E =
|
|
246
|
+
l && a.push(l);
|
|
247
|
+
}), a;
|
|
248
|
+
}
|
|
249
|
+
updateText(t, r, i, a, n) {
|
|
250
|
+
n !== void 0 && (this.qualityFactor = n);
|
|
251
|
+
const l = (window.devicePixelRatio || 1) * this.qualityFactor, c = i * l, d = a * l;
|
|
252
|
+
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(l, 0, 0, l, 0, 0), this.ctx.font = r.font, this.ctx.fillStyle = r.color, this.ctx.textBaseline = "alphabetic", this.ctx.globalAlpha = 1;
|
|
253
|
+
const h = this.wrapText(t, i), u = r.lineHeight, p = Le.getBaseline(r.font);
|
|
254
|
+
h.forEach((f, m) => {
|
|
255
|
+
const E = m * u + p;
|
|
255
256
|
let R = 0;
|
|
256
|
-
|
|
257
|
+
r.textAlign === "center" ? R = i / 2 : r.textAlign === "right" && (R = i), this.ctx.textAlign = r.textAlign, this.ctx.fillText(f, R, E);
|
|
257
258
|
}), this.map && (this.map.needsUpdate = !0);
|
|
258
259
|
}
|
|
259
260
|
dispose() {
|
|
@@ -263,91 +264,91 @@ class He extends b.MeshBasicMaterial {
|
|
|
263
264
|
function K(s) {
|
|
264
265
|
return typeof s == "number" ? s : parseFloat(s) || 0;
|
|
265
266
|
}
|
|
266
|
-
function
|
|
267
|
+
function Z(s) {
|
|
267
268
|
if (!s || s === "transparent")
|
|
268
|
-
return { color: new
|
|
269
|
+
return { color: new y.Color(16777215), alpha: 0 };
|
|
269
270
|
const e = s.match(
|
|
270
271
|
/rgba?\((\d+),\s*(\d+),\s*(\d+)(?:,\s*([\d.]+))?\)/
|
|
271
272
|
);
|
|
272
273
|
if (e) {
|
|
273
|
-
const t = parseInt(e[1], 10),
|
|
274
|
-
return { color: new
|
|
274
|
+
const t = parseInt(e[1], 10), r = parseInt(e[2], 10), i = parseInt(e[3], 10), a = e[4] !== void 0 ? parseFloat(e[4]) : 1;
|
|
275
|
+
return { color: new y.Color(`rgb(${t}, ${r}, ${i})`), alpha: a };
|
|
275
276
|
}
|
|
276
|
-
return { color: new
|
|
277
|
+
return { color: new y.Color(s), alpha: 1 };
|
|
277
278
|
}
|
|
278
|
-
function
|
|
279
|
+
function Pe(s) {
|
|
279
280
|
const e = [];
|
|
280
|
-
let t = "",
|
|
281
|
-
for (let
|
|
282
|
-
const
|
|
283
|
-
if (
|
|
284
|
-
|
|
285
|
-
else if (
|
|
286
|
-
|
|
287
|
-
else if (
|
|
281
|
+
let t = "", r = 0;
|
|
282
|
+
for (let i = 0; i < s.length; i++) {
|
|
283
|
+
const a = s[i];
|
|
284
|
+
if (a === "(")
|
|
285
|
+
r++;
|
|
286
|
+
else if (a === ")")
|
|
287
|
+
r--;
|
|
288
|
+
else if (a === "," && r === 0) {
|
|
288
289
|
e.push(t.trim()), t = "";
|
|
289
290
|
continue;
|
|
290
291
|
}
|
|
291
|
-
t +=
|
|
292
|
+
t += a;
|
|
292
293
|
}
|
|
293
294
|
return t && e.push(t.trim()), e;
|
|
294
295
|
}
|
|
295
|
-
function
|
|
296
|
+
function Ge(s) {
|
|
296
297
|
if (!s || typeof s != "string" || !s.includes("linear-gradient"))
|
|
297
298
|
return null;
|
|
298
299
|
const e = s.match(/linear-gradient\((.*)\)/);
|
|
299
300
|
if (!e)
|
|
300
301
|
return null;
|
|
301
|
-
const t = e[1],
|
|
302
|
-
let
|
|
303
|
-
const
|
|
304
|
-
if (
|
|
305
|
-
|
|
306
|
-
else if (
|
|
307
|
-
const
|
|
308
|
-
|
|
309
|
-
}
|
|
310
|
-
const
|
|
311
|
-
for (let
|
|
312
|
-
const
|
|
313
|
-
let h =
|
|
314
|
-
if (d !== -1 && !
|
|
315
|
-
const f =
|
|
316
|
-
(f.endsWith("%") || f.endsWith("px") || !isNaN(parseFloat(f))) && (h =
|
|
302
|
+
const t = e[1], r = Pe(t);
|
|
303
|
+
let i = Math.PI, a = 0;
|
|
304
|
+
const n = r[0].trim();
|
|
305
|
+
if (n.startsWith("to "))
|
|
306
|
+
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), a = 1;
|
|
307
|
+
else if (n.endsWith("deg") || n.endsWith("rad") || n.endsWith("turn")) {
|
|
308
|
+
const l = parseFloat(n);
|
|
309
|
+
n.endsWith("deg") ? i = l * (Math.PI / 180) : n.endsWith("rad") ? i = l : n.endsWith("turn") && (i = l * Math.PI * 2), a = 1;
|
|
310
|
+
}
|
|
311
|
+
const o = [];
|
|
312
|
+
for (let l = a; l < r.length && !(o.length >= 8); l++) {
|
|
313
|
+
const c = r[l].trim(), d = c.lastIndexOf(" ");
|
|
314
|
+
let h = c, u = null;
|
|
315
|
+
if (d !== -1 && !c.endsWith(")")) {
|
|
316
|
+
const f = c.substring(d + 1);
|
|
317
|
+
(f.endsWith("%") || f.endsWith("px") || !isNaN(parseFloat(f))) && (h = c.substring(0, d).trim(), u = f);
|
|
317
318
|
}
|
|
318
|
-
const
|
|
319
|
-
|
|
320
|
-
color:
|
|
321
|
-
alpha:
|
|
319
|
+
const p = Z(h);
|
|
320
|
+
o.push({
|
|
321
|
+
color: p.color,
|
|
322
|
+
alpha: p.alpha,
|
|
322
323
|
rawStop: u,
|
|
323
324
|
stop: 0
|
|
324
325
|
});
|
|
325
326
|
}
|
|
326
|
-
if (
|
|
327
|
-
for (let
|
|
328
|
-
c
|
|
329
|
-
|
|
330
|
-
let
|
|
331
|
-
for (let
|
|
332
|
-
if (c
|
|
333
|
-
const d =
|
|
327
|
+
if (o.length > 0) {
|
|
328
|
+
for (let c = 0; c < o.length; c++)
|
|
329
|
+
o[c].rawStop !== null && (o[c].stop = parseFloat(o[c].rawStop) / 100);
|
|
330
|
+
o[0].rawStop === null && (o[0].stop = 0), o.length > 1 && o[o.length - 1].rawStop === null && (o[o.length - 1].stop = 1);
|
|
331
|
+
let l = 0;
|
|
332
|
+
for (let c = 1; c < o.length; c++)
|
|
333
|
+
if (o[c].rawStop !== null || c === o.length - 1) {
|
|
334
|
+
const d = c - l;
|
|
334
335
|
if (d > 1) {
|
|
335
|
-
const h =
|
|
336
|
+
const h = o[l].stop, p = (o[c].stop - h) / d;
|
|
336
337
|
for (let f = 1; f < d; f++)
|
|
337
|
-
|
|
338
|
+
o[l + f].stop = h + p * f;
|
|
338
339
|
}
|
|
339
|
-
|
|
340
|
+
l = c;
|
|
340
341
|
}
|
|
341
342
|
}
|
|
342
|
-
return { angle:
|
|
343
|
+
return { angle: i, stops: o };
|
|
343
344
|
}
|
|
344
|
-
const
|
|
345
|
+
const qe = `varying vec2 vUv;
|
|
345
346
|
varying vec4 vScreenPos;
|
|
346
347
|
void main() {
|
|
347
348
|
vUv = uv;
|
|
348
349
|
gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);
|
|
349
350
|
vScreenPos = gl_Position;
|
|
350
|
-
}`,
|
|
351
|
+
}`, $e = `varying vec2 vUv;
|
|
351
352
|
uniform vec2 uSize;
|
|
352
353
|
uniform vec4 uBorderRadius;
|
|
353
354
|
uniform float uBorderWidth;
|
|
@@ -476,40 +477,40 @@ void main() {
|
|
|
476
477
|
|
|
477
478
|
// #include <colorspace_fragment>
|
|
478
479
|
}
|
|
479
|
-
`,
|
|
480
|
+
`, je = `uniform sampler2D uTexture;
|
|
480
481
|
varying vec4 vScreenPos;
|
|
481
482
|
uniform vec2 uTextureRepeat;
|
|
482
|
-
uniform vec2 uTextureOffset;`,
|
|
483
|
+
uniform vec2 uTextureOffset;`, Ke = `vec2 screenUv = (vScreenPos.xy / vScreenPos.w) * 0.5 + 0.5;
|
|
483
484
|
vec2 resultUv = screenUv;
|
|
484
485
|
|
|
485
|
-
`,
|
|
486
|
-
baseColor = blendSrcOver(baseColor, texColor);`,
|
|
487
|
-
vertexShader:
|
|
488
|
-
fragmentShader:
|
|
489
|
-
},
|
|
490
|
-
declChunk:
|
|
491
|
-
uvChunk:
|
|
492
|
-
baseColorChunk:
|
|
486
|
+
`, Je = `vec4 texColor = texture2D(uTexture, resultUv);
|
|
487
|
+
baseColor = blendSrcOver(baseColor, texColor);`, Te = {
|
|
488
|
+
vertexShader: qe,
|
|
489
|
+
fragmentShader: $e
|
|
490
|
+
}, ae = {
|
|
491
|
+
declChunk: je,
|
|
492
|
+
uvChunk: Ke,
|
|
493
|
+
baseColorChunk: Je
|
|
493
494
|
};
|
|
494
|
-
function
|
|
495
|
-
var
|
|
496
|
-
const
|
|
497
|
-
let
|
|
498
|
-
const
|
|
499
|
-
if (
|
|
500
|
-
for (const [
|
|
501
|
-
typeof
|
|
502
|
-
`,
|
|
503
|
-
`,
|
|
504
|
-
`,
|
|
505
|
-
`,
|
|
506
|
-
`,
|
|
507
|
-
const
|
|
508
|
-
` +
|
|
509
|
-
`, d =
|
|
510
|
-
uSize: { value: new
|
|
495
|
+
function Qe(s, e, t, r = null, i) {
|
|
496
|
+
var M;
|
|
497
|
+
const a = r !== null || !!s.imageSrc;
|
|
498
|
+
let n = "";
|
|
499
|
+
const o = {};
|
|
500
|
+
if (i != null && i.uniforms)
|
|
501
|
+
for (const [w, b] of Object.entries(i.uniforms))
|
|
502
|
+
typeof b == "number" ? (n += `uniform float ${w};
|
|
503
|
+
`, o[w] = { value: b }) : Array.isArray(b) ? b.length === 2 ? (n += `uniform vec2 ${w};
|
|
504
|
+
`, o[w] = { value: new y.Vector2(...b) }) : b.length === 3 ? (n += `uniform vec3 ${w};
|
|
505
|
+
`, o[w] = { value: new y.Vector3(...b) }) : b.length === 4 && (n += `uniform vec4 ${w};
|
|
506
|
+
`, o[w] = { value: new y.Vector4(...b) }) : (n += `uniform float ${w};
|
|
507
|
+
`, o[w] = { value: b });
|
|
508
|
+
const l = (a ? ae.declChunk : "") + `
|
|
509
|
+
` + n, c = s.isTraveler ? ae.uvChunk : `vec2 resultUv = vUv * uTextureRepeat + uTextureOffset;
|
|
510
|
+
`, d = a ? c + ((i == null ? void 0 : i.uvModifier) || "") : "", h = a ? ae.baseColorChunk : "", u = (i == null ? void 0 : i.colorModifier) || "", p = Te.fragmentShader.replace("#INJECT_DECLARATIONS", l).replace("#INJECT_UV_MODIFIER", d).replace("#INJECT_BASE_COLOR", h).replace("#INJECT_COLOR_MODIFIER", u), f = Z(s.backgroundColor), m = Z(s.borderColor), E = {
|
|
511
|
+
uSize: { value: new y.Vector2(e, t) },
|
|
511
512
|
uBgColor: {
|
|
512
|
-
value: new
|
|
513
|
+
value: new y.Vector4(
|
|
513
514
|
f.color.r,
|
|
514
515
|
f.color.g,
|
|
515
516
|
f.color.b,
|
|
@@ -517,111 +518,111 @@ function Ze(s, e, t, i = null, r) {
|
|
|
517
518
|
)
|
|
518
519
|
},
|
|
519
520
|
uBorderColor: {
|
|
520
|
-
value: new
|
|
521
|
-
|
|
522
|
-
|
|
523
|
-
|
|
524
|
-
|
|
521
|
+
value: new y.Vector4(
|
|
522
|
+
m.color.r,
|
|
523
|
+
m.color.g,
|
|
524
|
+
m.color.b,
|
|
525
|
+
m.alpha
|
|
525
526
|
)
|
|
526
527
|
},
|
|
527
|
-
uBorderRadius: { value: new
|
|
528
|
+
uBorderRadius: { value: new y.Vector4(0, 0, 0, 0) },
|
|
528
529
|
uBorderWidth: { value: K(s.borderWidth) },
|
|
529
|
-
uOpacity: { value: (
|
|
530
|
+
uOpacity: { value: (M = s.opacity) != null ? M : 1 },
|
|
530
531
|
uTexture: { value: null },
|
|
531
|
-
uTextureRepeat: { value: new
|
|
532
|
-
uTextureOffset: { value: new
|
|
532
|
+
uTextureRepeat: { value: new y.Vector2(1, 1) },
|
|
533
|
+
uTextureOffset: { value: new y.Vector2(0, 0) },
|
|
533
534
|
uGradientCount: { value: 0 },
|
|
534
535
|
uGradientAngle: { value: 0 },
|
|
535
536
|
uGradientColors: {
|
|
536
|
-
value: Array.from({ length: 8 }, () => new
|
|
537
|
+
value: Array.from({ length: 8 }, () => new y.Vector4(0, 0, 0, 0))
|
|
537
538
|
},
|
|
538
539
|
uGradientStops: { value: new Float32Array(8) }
|
|
539
540
|
};
|
|
540
|
-
|
|
541
|
-
const R = new
|
|
542
|
-
uniforms:
|
|
543
|
-
vertexShader:
|
|
544
|
-
fragmentShader:
|
|
541
|
+
Me(E.uBorderRadius.value, s.borderRadius), a && (E.uTexture.value = r);
|
|
542
|
+
const R = new y.ShaderMaterial({
|
|
543
|
+
uniforms: q(q({}, E), o),
|
|
544
|
+
vertexShader: Te.vertexShader,
|
|
545
|
+
fragmentShader: p,
|
|
545
546
|
transparent: !0,
|
|
546
|
-
side:
|
|
547
|
+
side: y.FrontSide
|
|
547
548
|
// for better performance
|
|
548
549
|
});
|
|
549
|
-
return s.backgroundImage &&
|
|
550
|
+
return s.backgroundImage && ce(R, { backgroundImage: s.backgroundImage }), R;
|
|
550
551
|
}
|
|
551
|
-
function
|
|
552
|
-
const
|
|
553
|
-
|
|
552
|
+
function Ze(s, e, t, r, i) {
|
|
553
|
+
const a = K(e.borderWidth);
|
|
554
|
+
ce(s, {
|
|
554
555
|
width: t,
|
|
555
|
-
height:
|
|
556
|
+
height: r,
|
|
556
557
|
borderRadius: e.borderRadius,
|
|
557
|
-
borderWidth:
|
|
558
|
+
borderWidth: a,
|
|
558
559
|
backgroundColor: e.backgroundColor,
|
|
559
560
|
borderColor: e.borderColor,
|
|
560
561
|
opacity: e.opacity,
|
|
561
|
-
texture:
|
|
562
|
+
texture: i,
|
|
562
563
|
backgroundImage: e.backgroundImage
|
|
563
564
|
});
|
|
564
565
|
}
|
|
565
|
-
function
|
|
566
|
-
var
|
|
567
|
-
if (e.width !== void 0 && e.height !== void 0 && s.uniforms.uSize.value.set(e.width, e.height), e.borderRadius !== void 0 &&
|
|
566
|
+
function ce(s, e) {
|
|
567
|
+
var r, i, a;
|
|
568
|
+
if (e.width !== void 0 && e.height !== void 0 && s.uniforms.uSize.value.set(e.width, e.height), e.borderRadius !== void 0 && Me(s.uniforms.uBorderRadius.value, e.borderRadius), e.borderWidth !== void 0 && (s.uniforms.uBorderWidth.value = e.borderWidth), e.backgroundColor !== void 0)
|
|
568
569
|
if (Array.isArray(e.backgroundColor)) {
|
|
569
|
-
const
|
|
570
|
+
const n = s.uniforms.uBgColor.value.w;
|
|
570
571
|
s.uniforms.uBgColor.value.set(
|
|
571
572
|
e.backgroundColor[0],
|
|
572
573
|
e.backgroundColor[1],
|
|
573
574
|
e.backgroundColor[2],
|
|
574
|
-
|
|
575
|
+
n
|
|
575
576
|
);
|
|
576
577
|
} else if (typeof e.backgroundColor == "string") {
|
|
577
|
-
const
|
|
578
|
+
const n = Z(e.backgroundColor);
|
|
578
579
|
s.uniforms.uBgColor.value.set(
|
|
579
|
-
|
|
580
|
-
|
|
581
|
-
|
|
582
|
-
|
|
580
|
+
n.color.r,
|
|
581
|
+
n.color.g,
|
|
582
|
+
n.color.b,
|
|
583
|
+
n.alpha
|
|
583
584
|
);
|
|
584
585
|
} else {
|
|
585
|
-
const
|
|
586
|
+
const n = s.uniforms.uBgColor.value.w;
|
|
586
587
|
s.uniforms.uBgColor.value.set(
|
|
587
588
|
e.backgroundColor.r,
|
|
588
589
|
e.backgroundColor.g,
|
|
589
590
|
e.backgroundColor.b,
|
|
590
|
-
|
|
591
|
+
n
|
|
591
592
|
);
|
|
592
593
|
}
|
|
593
594
|
if (e.borderColor !== void 0)
|
|
594
595
|
if (Array.isArray(e.borderColor)) {
|
|
595
|
-
const
|
|
596
|
+
const n = s.uniforms.uBorderColor.value.w;
|
|
596
597
|
s.uniforms.uBorderColor.value.set(
|
|
597
598
|
e.borderColor[0],
|
|
598
599
|
e.borderColor[1],
|
|
599
600
|
e.borderColor[2],
|
|
600
|
-
|
|
601
|
+
n
|
|
601
602
|
);
|
|
602
603
|
} else if (typeof e.borderColor == "string") {
|
|
603
|
-
const
|
|
604
|
+
const n = Z(e.borderColor);
|
|
604
605
|
s.uniforms.uBorderColor.value.set(
|
|
605
|
-
|
|
606
|
-
|
|
607
|
-
|
|
608
|
-
|
|
606
|
+
n.color.r,
|
|
607
|
+
n.color.g,
|
|
608
|
+
n.color.b,
|
|
609
|
+
n.alpha
|
|
609
610
|
);
|
|
610
611
|
} else {
|
|
611
|
-
const
|
|
612
|
+
const n = s.uniforms.uBorderColor.value.w;
|
|
612
613
|
s.uniforms.uBorderColor.value.set(
|
|
613
614
|
e.borderColor.r,
|
|
614
615
|
e.borderColor.g,
|
|
615
616
|
e.borderColor.b,
|
|
616
|
-
|
|
617
|
+
n
|
|
617
618
|
);
|
|
618
619
|
}
|
|
619
620
|
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);
|
|
620
|
-
const t = e.texture !== void 0 ? e.texture : (
|
|
621
|
+
const t = e.texture !== void 0 ? e.texture : (r = s.uniforms.uTexture) == null ? void 0 : r.value;
|
|
621
622
|
if (t && (t.image instanceof ImageBitmap || t.image instanceof HTMLImageElement || t.image instanceof HTMLCanvasElement)) {
|
|
622
|
-
const
|
|
623
|
-
if (
|
|
624
|
-
const d =
|
|
623
|
+
const n = t.image.naturalWidth || t.image.videoWidth || t.image.width, o = t.image.naturalHeight || t.image.videoHeight || t.image.height, l = (i = e.width) != null ? i : s.uniforms.uSize.value.x, c = (a = e.height) != null ? a : s.uniforms.uSize.value.y;
|
|
624
|
+
if (n && o && l && c) {
|
|
625
|
+
const d = n / o, h = l / c;
|
|
625
626
|
if (d > h) {
|
|
626
627
|
const u = h / d;
|
|
627
628
|
s.uniforms.uTextureRepeat.value.set(u, 1), s.uniforms.uTextureOffset.value.set((1 - u) / 2, 0);
|
|
@@ -633,28 +634,28 @@ function ye(s, e) {
|
|
|
633
634
|
} else
|
|
634
635
|
s.uniforms.uTextureRepeat && (s.uniforms.uTextureRepeat.value.set(1, 1), s.uniforms.uTextureOffset.value.set(0, 0));
|
|
635
636
|
if (e.backgroundImage !== void 0) {
|
|
636
|
-
const
|
|
637
|
-
if (
|
|
638
|
-
s.uniforms.uGradientCount.value =
|
|
639
|
-
for (let
|
|
640
|
-
if (
|
|
641
|
-
const
|
|
642
|
-
s.uniforms.uGradientColors.value[
|
|
643
|
-
|
|
644
|
-
|
|
645
|
-
|
|
646
|
-
|
|
647
|
-
), s.uniforms.uGradientStops.value[
|
|
637
|
+
const n = Ge(e.backgroundImage);
|
|
638
|
+
if (n) {
|
|
639
|
+
s.uniforms.uGradientCount.value = n.stops.length, s.uniforms.uGradientAngle.value = n.angle;
|
|
640
|
+
for (let o = 0; o < 8; o++)
|
|
641
|
+
if (o < n.stops.length) {
|
|
642
|
+
const l = n.stops[o];
|
|
643
|
+
s.uniforms.uGradientColors.value[o].set(
|
|
644
|
+
l.color.r,
|
|
645
|
+
l.color.g,
|
|
646
|
+
l.color.b,
|
|
647
|
+
l.alpha
|
|
648
|
+
), s.uniforms.uGradientStops.value[o] = l.stop;
|
|
648
649
|
} else
|
|
649
|
-
s.uniforms.uGradientColors.value[
|
|
650
|
+
s.uniforms.uGradientColors.value[o].set(0, 0, 0, 0), s.uniforms.uGradientStops.value[o] = 1;
|
|
650
651
|
} else
|
|
651
652
|
s.uniforms.uGradientCount.value = 0;
|
|
652
653
|
}
|
|
653
|
-
for (const
|
|
654
|
-
|
|
654
|
+
for (const n of Object.keys(e))
|
|
655
|
+
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]);
|
|
655
656
|
}
|
|
656
|
-
function
|
|
657
|
-
var
|
|
657
|
+
function Me(s, e) {
|
|
658
|
+
var o, l, c, d;
|
|
658
659
|
if (e == null) {
|
|
659
660
|
s.set(0, 0, 0, 0);
|
|
660
661
|
return;
|
|
@@ -667,45 +668,45 @@ function Ie(s, e) {
|
|
|
667
668
|
s.set(e[0], e[1], e[2], e[3]);
|
|
668
669
|
return;
|
|
669
670
|
}
|
|
670
|
-
const t = e.split("/")[0].trim().split(/\s+/),
|
|
671
|
-
s.set(i,
|
|
671
|
+
const t = e.split("/")[0].trim().split(/\s+/), r = K(t[0]), i = K((o = t[1]) != null ? o : t[0]), a = K((l = t[2]) != null ? l : t[0]), n = K((d = (c = t[3]) != null ? c : t[1]) != null ? d : t[0]);
|
|
672
|
+
s.set(r, i, a, n);
|
|
672
673
|
}
|
|
673
|
-
const
|
|
674
|
-
create(s, e, t,
|
|
675
|
-
return s === "BOX" ?
|
|
674
|
+
const Y = {
|
|
675
|
+
create(s, e, t, r, i, a = 2, n = null, o) {
|
|
676
|
+
return s === "BOX" ? Qe(
|
|
676
677
|
e,
|
|
677
|
-
i,
|
|
678
678
|
r,
|
|
679
|
-
|
|
680
|
-
|
|
679
|
+
i,
|
|
680
|
+
n,
|
|
681
|
+
o
|
|
681
682
|
) : s === "TEXT" ? new He(
|
|
682
683
|
t || "",
|
|
683
684
|
e,
|
|
684
|
-
i,
|
|
685
685
|
r,
|
|
686
|
-
|
|
687
|
-
|
|
686
|
+
i,
|
|
687
|
+
a
|
|
688
|
+
) : new y.MeshBasicMaterial({ visible: !1 });
|
|
688
689
|
},
|
|
689
|
-
update(s, e, t, i,
|
|
690
|
-
e === "BOX" ?
|
|
690
|
+
update(s, e, t, r, i, a, n = 2, o) {
|
|
691
|
+
e === "BOX" ? Ze(
|
|
691
692
|
s,
|
|
692
693
|
t,
|
|
693
|
-
|
|
694
|
-
|
|
695
|
-
|
|
694
|
+
i,
|
|
695
|
+
a,
|
|
696
|
+
o
|
|
696
697
|
) : e === "TEXT" && s.updateText(
|
|
697
|
-
|
|
698
|
+
r || "",
|
|
698
699
|
t,
|
|
699
|
-
|
|
700
|
-
|
|
701
|
-
|
|
700
|
+
i,
|
|
701
|
+
a,
|
|
702
|
+
n
|
|
702
703
|
);
|
|
703
704
|
},
|
|
704
705
|
forceUpdateUniforms(s, e) {
|
|
705
|
-
|
|
706
|
+
ce(s, e);
|
|
706
707
|
}
|
|
707
708
|
};
|
|
708
|
-
class
|
|
709
|
+
class et {
|
|
709
710
|
constructor(e, t = !0) {
|
|
710
711
|
g(this, "observer");
|
|
711
712
|
g(this, "textures", /* @__PURE__ */ new WeakMap());
|
|
@@ -713,10 +714,10 @@ class tt {
|
|
|
713
714
|
g(this, "elementUrls", /* @__PURE__ */ new WeakMap());
|
|
714
715
|
g(this, "onUpdate");
|
|
715
716
|
this.onUpdate = e, t && (this.observer = new IntersectionObserver(
|
|
716
|
-
(
|
|
717
|
-
for (const
|
|
718
|
-
const
|
|
719
|
-
|
|
717
|
+
(r) => {
|
|
718
|
+
for (const i of r) {
|
|
719
|
+
const a = i.target;
|
|
720
|
+
i.isIntersecting ? this.loadTexture(a) : this.disposeTexture(a);
|
|
720
721
|
}
|
|
721
722
|
},
|
|
722
723
|
{ rootMargin: "300px" }
|
|
@@ -731,31 +732,31 @@ class tt {
|
|
|
731
732
|
e.nodeType === Node.ELEMENT_NODE && this.observer && this.observer.unobserve(e), this.disposeTexture(e), this.elementUrls.delete(e), this.loadStatus.delete(e);
|
|
732
733
|
}
|
|
733
734
|
loadTexture(e) {
|
|
734
|
-
return
|
|
735
|
+
return Ee(this, null, function* () {
|
|
735
736
|
if (this.loadStatus.get(e) || this.textures.has(e))
|
|
736
737
|
return;
|
|
737
738
|
const t = this.elementUrls.get(e);
|
|
738
739
|
if (t) {
|
|
739
740
|
this.loadStatus.set(e, !0);
|
|
740
741
|
try {
|
|
741
|
-
let
|
|
742
|
+
let r;
|
|
742
743
|
if (t.startsWith("data:image/svg+xml"))
|
|
743
|
-
|
|
744
|
-
const
|
|
745
|
-
|
|
744
|
+
r = yield new Promise((a, n) => {
|
|
745
|
+
const o = new Image();
|
|
746
|
+
o.onload = () => a(o), o.onerror = n, o.src = t;
|
|
746
747
|
});
|
|
747
748
|
else {
|
|
748
|
-
const
|
|
749
|
-
|
|
749
|
+
const n = yield (yield fetch(t)).blob();
|
|
750
|
+
r = yield createImageBitmap(n, { imageOrientation: "flipY" });
|
|
750
751
|
}
|
|
751
752
|
if (this.elementUrls.get(e) !== t) {
|
|
752
|
-
"close" in
|
|
753
|
+
"close" in r && r.close();
|
|
753
754
|
return;
|
|
754
755
|
}
|
|
755
|
-
const
|
|
756
|
-
|
|
757
|
-
} catch (
|
|
758
|
-
console.warn("[MirageEngine] Failed to load texture:", t,
|
|
756
|
+
const i = new y.Texture(r);
|
|
757
|
+
r instanceof HTMLImageElement || (i.flipY = !1), i.colorSpace = y.LinearSRGBColorSpace, i.needsUpdate = !0, this.textures.set(e, i), this.onUpdate(e, i);
|
|
758
|
+
} catch (r) {
|
|
759
|
+
console.warn("[MirageEngine] Failed to load texture:", t, r);
|
|
759
760
|
} finally {
|
|
760
761
|
this.elementUrls.has(e) && this.loadStatus.set(e, !1);
|
|
761
762
|
}
|
|
@@ -773,8 +774,8 @@ class tt {
|
|
|
773
774
|
this.observer && this.observer.disconnect();
|
|
774
775
|
}
|
|
775
776
|
}
|
|
776
|
-
class
|
|
777
|
-
constructor(e, t,
|
|
777
|
+
class tt {
|
|
778
|
+
constructor(e, t, r, i) {
|
|
778
779
|
g(this, "canvas");
|
|
779
780
|
g(this, "scene");
|
|
780
781
|
g(this, "camera");
|
|
@@ -792,50 +793,50 @@ class rt {
|
|
|
792
793
|
g(this, "registry");
|
|
793
794
|
g(this, "targetRect");
|
|
794
795
|
g(this, "travelersByLayer", Array.from(
|
|
795
|
-
{ length:
|
|
796
|
+
{ length: k.MAX_LAYERS },
|
|
796
797
|
() => /* @__PURE__ */ new Set()
|
|
797
798
|
));
|
|
798
799
|
g(this, "textureManager");
|
|
799
800
|
// private meshMap: Map<HTMLElement, THREE.Mesh> = new Map();
|
|
800
801
|
g(this, "fixedMeshes", /* @__PURE__ */ new Set());
|
|
801
|
-
var
|
|
802
|
-
this.target = e, this.mountContainer =
|
|
802
|
+
var o, l, c, d, h;
|
|
803
|
+
this.target = e, this.mountContainer = r, this.registry = i, this.mode = (o = t.mode) != null ? o : "overlay", this.canvasSize = (l = t.canvasSize) != null ? l : "viewport", this.clipArea = (c = t.travelerClipArea) != null ? c : 1, this.targetLayer = (d = t.layer) != null ? d : "base", this.textureManager = new et((u, p) => {
|
|
803
804
|
const f = this.registry.get(u);
|
|
804
|
-
f && f.material instanceof
|
|
805
|
-
}, this.isViewport), this.canvas = document.createElement("canvas"), this.scene = new
|
|
806
|
-
const
|
|
807
|
-
this.camera = new
|
|
808
|
-
|
|
805
|
+
f && f.material instanceof y.ShaderMaterial && Y.forceUpdateUniforms(f.material, { texture: p });
|
|
806
|
+
}, this.isViewport), this.canvas = document.createElement("canvas"), this.scene = new y.Scene(), this.targetRect = this.target.getBoundingClientRect();
|
|
807
|
+
const a = this.isViewport ? window.innerWidth + this.overscan * 2 : this.targetRect.width, n = this.isViewport ? window.innerHeight + this.overscan * 2 : this.targetRect.height;
|
|
808
|
+
this.camera = new y.OrthographicCamera(
|
|
809
|
+
a / -2,
|
|
810
|
+
a / 2,
|
|
809
811
|
n / 2,
|
|
810
|
-
|
|
811
|
-
o / -2,
|
|
812
|
+
n / -2,
|
|
812
813
|
1,
|
|
813
814
|
1e3
|
|
814
|
-
), this.camera.position.z = 100, this.camera.layers.set(this.getSceneLayer()), this.renderer = new
|
|
815
|
+
), this.camera.position.z = 100, this.camera.layers.set(this.getSceneLayer()), this.renderer = new y.WebGLRenderer({
|
|
815
816
|
canvas: this.canvas,
|
|
816
817
|
alpha: !0,
|
|
817
818
|
antialias: !0
|
|
818
819
|
// [new]
|
|
819
820
|
// premultipliedAlpha: true
|
|
820
|
-
}),
|
|
821
|
+
}), y.ColorManagement.enabled = !1, this.renderer.outputColorSpace = y.LinearSRGBColorSpace, this.renderer.setPixelRatio(window.devicePixelRatio), this.renderer.setSize(a, n), this.applyTextQuality((h = t.quality) != null ? h : "medium");
|
|
821
822
|
}
|
|
822
823
|
get isViewport() {
|
|
823
824
|
return this.mode === "overlay" && this.canvasSize === "viewport";
|
|
824
825
|
}
|
|
825
826
|
getSceneLayer() {
|
|
826
|
-
return typeof this.targetLayer == "number" ? this.targetLayer : this.targetLayer === "selected" ?
|
|
827
|
+
return typeof this.targetLayer == "number" ? this.targetLayer : this.targetLayer === "selected" ? L.SELECTED : L.BASE;
|
|
827
828
|
}
|
|
828
829
|
createRenderTarget() {
|
|
829
|
-
for (let e = 0; e <
|
|
830
|
-
const t = this.isViewport ? window.innerWidth + this.overscan * 2 : this.targetRect.width,
|
|
830
|
+
for (let e = 0; e < k.MAX_LAYERS; e++) {
|
|
831
|
+
const t = this.isViewport ? window.innerWidth + this.overscan * 2 : this.targetRect.width, r = this.isViewport ? window.innerHeight + this.overscan * 2 : this.targetRect.height;
|
|
831
832
|
this.renderTargets.push(
|
|
832
|
-
new
|
|
833
|
+
new y.WebGLRenderTarget(
|
|
833
834
|
t * this.qualityFactor,
|
|
834
|
-
|
|
835
|
+
r * this.qualityFactor,
|
|
835
836
|
{
|
|
836
|
-
minFilter:
|
|
837
|
-
magFilter:
|
|
838
|
-
format:
|
|
837
|
+
minFilter: y.LinearFilter,
|
|
838
|
+
magFilter: y.LinearFilter,
|
|
839
|
+
format: y.RGBAFormat,
|
|
839
840
|
stencilBuffer: !1,
|
|
840
841
|
depthBuffer: !0
|
|
841
842
|
}
|
|
@@ -871,15 +872,15 @@ class rt {
|
|
|
871
872
|
this.canvas.style.width = `${e}px`, this.canvas.style.height = `${t}px`, this.mode === "duplicate" ? (this.canvas.style.position = "", this.canvas.style.top = "", this.canvas.style.left = "", this.canvas.style.display = "block") : (this.canvas.style.position = this.isViewport ? "fixed" : "absolute", this.canvas.style.top = this.isViewport ? `-${this.overscan}px` : `${this.target.offsetTop}px`, this.canvas.style.left = this.isViewport ? `-${this.overscan}px` : `${this.target.offsetLeft}px`, this.canvas.style.display = "block");
|
|
872
873
|
}
|
|
873
874
|
updateUniforms(e, t) {
|
|
874
|
-
const
|
|
875
|
-
|
|
876
|
-
|
|
877
|
-
|
|
875
|
+
const r = this.registry.get(e);
|
|
876
|
+
r && (r.traverse((i) => {
|
|
877
|
+
i.isMesh && i.material && Y.forceUpdateUniforms(
|
|
878
|
+
i.material,
|
|
878
879
|
t
|
|
879
880
|
);
|
|
880
|
-
}),
|
|
881
|
-
|
|
882
|
-
|
|
881
|
+
}), r.userData.nativeMesh && r.userData.nativeMesh.traverse((i) => {
|
|
882
|
+
i.isMesh && i.material && Y.forceUpdateUniforms(
|
|
883
|
+
i.material,
|
|
883
884
|
t
|
|
884
885
|
);
|
|
885
886
|
}));
|
|
@@ -889,20 +890,20 @@ class rt {
|
|
|
889
890
|
}
|
|
890
891
|
setSize(e, t) {
|
|
891
892
|
this.renderer.setSize(e, t);
|
|
892
|
-
for (const
|
|
893
|
-
|
|
893
|
+
for (const r of this.renderTargets)
|
|
894
|
+
r.setSize(e * this.qualityFactor, t * this.qualityFactor);
|
|
894
895
|
this.camera.left = e / -2, this.camera.right = e / 2, this.camera.top = t / 2, this.camera.bottom = t / -2, this.camera.updateProjectionMatrix();
|
|
895
896
|
}
|
|
896
897
|
syncScene(e, t) {
|
|
897
|
-
const
|
|
898
|
-
|
|
898
|
+
const r = this.target.getBoundingClientRect(), i = this.isViewport ? window.innerWidth + this.overscan * 2 : r.width, a = 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, l = Math.abs(i - n) > 0.1 || Math.abs(a - 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);
|
|
899
|
+
l ? (this.targetRect = r, this.setSize(i, a), this.updateCanvasLayout()) : c ? (this.targetRect = r, this.updateCanvasLayout()) : this.targetRect = r, this.renderOrder = 0, this.reconcileNode(e), t.size > 0 && t.forEach((d) => {
|
|
899
900
|
const h = this.registry.get(d);
|
|
900
901
|
if (h) {
|
|
901
902
|
this.scene.remove(h);
|
|
902
903
|
for (const u of this.travelersByLayer)
|
|
903
904
|
u.delete(h);
|
|
904
905
|
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((u) => u.dispose()) : h.userData.nativeMesh.material.dispose(), h.userData.nativeMesh.geometry.dispose()), h.traverse((u) => {
|
|
905
|
-
u instanceof
|
|
906
|
+
u instanceof y.Mesh && (u.geometry && u.geometry.dispose(), u.material && (Array.isArray(u.material) ? u.material.forEach((p) => p.dispose()) : u.material.dispose()));
|
|
906
907
|
}), this.registry.remove(d), this.textureManager.unregister(d);
|
|
907
908
|
}
|
|
908
909
|
});
|
|
@@ -914,8 +915,9 @@ class rt {
|
|
|
914
915
|
reconcileNode(e) {
|
|
915
916
|
var i;
|
|
916
917
|
let t = this.registry.get(e.element);
|
|
917
|
-
|
|
918
|
-
|
|
918
|
+
const r = JSON.stringify(e.shaderHooks || null);
|
|
919
|
+
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) {
|
|
920
|
+
const a = new y.PlaneGeometry(1, 1), n = e.isTraveler ? (i = this.renderTargets[e.captureLayer - 2]) == null ? void 0 : i.texture : this.textureManager.get(e.element), o = Y.create(
|
|
919
921
|
"BOX",
|
|
920
922
|
e.styles,
|
|
921
923
|
"",
|
|
@@ -925,137 +927,139 @@ class rt {
|
|
|
925
927
|
n,
|
|
926
928
|
e.shaderHooks
|
|
927
929
|
);
|
|
928
|
-
t = new
|
|
930
|
+
t = new y.Mesh(a, o), e.type === "TEXT" && (t.name = "BG_MESH"), this.scene.add(t), this.registry.register(e.element, t), t.userData.baseMaterial = o, t.userData.domElement = e.element, t.userData.shaderHash = r;
|
|
929
931
|
}
|
|
930
932
|
if (this.updateMeshProperties(t, e), this.updateMeshLayers(t, e), e.isTraveler)
|
|
931
|
-
for (let
|
|
932
|
-
|
|
933
|
+
for (let a = 0; a < k.MAX_LAYERS; a++)
|
|
934
|
+
a === e.captureLayer - 2 ? this.travelersByLayer[a].add(t) : this.travelersByLayer[a].delete(t);
|
|
933
935
|
else
|
|
934
|
-
for (const
|
|
935
|
-
|
|
936
|
+
for (const a of this.travelersByLayer)
|
|
937
|
+
a.delete(t);
|
|
936
938
|
if (e.isFixed ? this.fixedMeshes.add(t) : this.fixedMeshes.delete(t), e.styles.imageSrc ? this.textureManager.register(e.element, e.styles.imageSrc) : this.textureManager.unregister(e.element), e.type === "BOX")
|
|
937
|
-
for (const
|
|
938
|
-
this.reconcileNode(
|
|
939
|
+
for (const a of e.children)
|
|
940
|
+
this.reconcileNode(a);
|
|
939
941
|
else
|
|
940
942
|
e.type === "TEXT" && (this.reconcileTextChild(t, e, !1), t.userData.nativeMesh && e.nativeStyles && this.reconcileTextChild(t.userData.nativeMesh, e, !0));
|
|
941
943
|
}
|
|
942
|
-
reconcileTextChild(e, t,
|
|
943
|
-
var
|
|
944
|
-
const
|
|
944
|
+
reconcileTextChild(e, t, r) {
|
|
945
|
+
var c;
|
|
946
|
+
const i = t.textLines || [
|
|
945
947
|
{ text: t.textContent || "", rect: t.rect }
|
|
946
|
-
],
|
|
947
|
-
if (t.dirtyMask &
|
|
948
|
+
], a = r ? t.nativeStyles : t.textStyles, n = JSON.stringify(a) + t.textContent + i.map((d) => d.text).join("|"), o = (c = e.userData) == null ? void 0 : c.textChildStyleHash;
|
|
949
|
+
if (t.dirtyMask & le || n !== o) {
|
|
948
950
|
e.children.filter(
|
|
949
951
|
(f) => f.name.startsWith("TEXT_CHILD")
|
|
950
952
|
).forEach((f) => {
|
|
951
953
|
var E;
|
|
952
|
-
const
|
|
953
|
-
(E =
|
|
954
|
+
const m = f;
|
|
955
|
+
(E = m.material.map) == null || E.dispose(), m.geometry.dispose(), e.remove(m);
|
|
954
956
|
});
|
|
955
|
-
const h = t.rect, u = h.x + h.width / 2,
|
|
956
|
-
|
|
957
|
-
const E =
|
|
957
|
+
const h = t.rect, u = h.x + h.width / 2, p = h.y + h.height / 2;
|
|
958
|
+
i.forEach((f, m) => {
|
|
959
|
+
const E = Y.create(
|
|
958
960
|
"TEXT",
|
|
959
|
-
|
|
961
|
+
a,
|
|
960
962
|
f.text,
|
|
961
963
|
f.rect.width,
|
|
962
964
|
f.rect.height,
|
|
963
965
|
this.qualityFactor
|
|
964
|
-
), R = new
|
|
965
|
-
|
|
966
|
-
const
|
|
967
|
-
|
|
968
|
-
const U = f.rect.x + f.rect.width / 2,
|
|
969
|
-
|
|
970
|
-
t.rect.width === 0 ? 0 :
|
|
971
|
-
t.rect.height === 0 ? 0 :
|
|
966
|
+
), R = new y.PlaneGeometry(1, 1), M = new y.Mesh(R, E);
|
|
967
|
+
M.name = `TEXT_CHILD_${m}`;
|
|
968
|
+
const w = t.rect.width === 0 ? 1 : f.rect.width / t.rect.width, b = t.rect.height === 0 ? 1 : f.rect.height / t.rect.height;
|
|
969
|
+
M.scale.set(w, b, 1);
|
|
970
|
+
const U = f.rect.x + f.rect.width / 2, D = f.rect.y + f.rect.height / 2, O = U - u, N = -(D - p);
|
|
971
|
+
M.position.set(
|
|
972
|
+
t.rect.width === 0 ? 0 : O / t.rect.width,
|
|
973
|
+
t.rect.height === 0 ? 0 : N / t.rect.height,
|
|
972
974
|
5e-3
|
|
973
|
-
), e.add(
|
|
974
|
-
}), e.userData.textChildStyleHash =
|
|
975
|
+
), e.add(M);
|
|
976
|
+
}), e.userData.textChildStyleHash = n;
|
|
975
977
|
}
|
|
976
978
|
e.children.forEach((d) => {
|
|
977
979
|
if (!d.name.startsWith("TEXT_CHILD"))
|
|
978
980
|
return;
|
|
979
|
-
const h = d, u = t.visibility & W ?
|
|
980
|
-
if (h.layers.set(u), t.visibility & j && h.layers.enable(
|
|
981
|
-
if (!
|
|
982
|
-
for (let
|
|
983
|
-
h.layers.enable(
|
|
984
|
-
else if (
|
|
985
|
-
for (let
|
|
986
|
-
h.layers.enable(
|
|
981
|
+
const h = d, u = t.visibility & W ? L.BASE : L.HIDDEN;
|
|
982
|
+
if (h.layers.set(u), t.visibility & j && h.layers.enable(L.SELECTED), t.visibility & W)
|
|
983
|
+
if (!r && t.nativeLayer !== void 0 && t.nativeStyles !== void 0)
|
|
984
|
+
for (let p = t.captureLayer; p < t.nativeLayer; p++)
|
|
985
|
+
h.layers.enable(L.getCaptureLayer(p));
|
|
986
|
+
else if (r && t.nativeLayer !== void 0)
|
|
987
|
+
for (let p = Math.max(t.captureLayer, t.nativeLayer); p <= k.MAX_LAYERS + 1; p++)
|
|
988
|
+
h.layers.enable(L.getCaptureLayer(p));
|
|
987
989
|
else
|
|
988
|
-
for (let
|
|
989
|
-
h.layers.enable(
|
|
990
|
+
for (let p = t.captureLayer; p <= k.MAX_LAYERS + 1; p++)
|
|
991
|
+
h.layers.enable(L.getCaptureLayer(p));
|
|
990
992
|
});
|
|
991
993
|
}
|
|
992
994
|
updateMeshProperties(e, t) {
|
|
993
|
-
var
|
|
994
|
-
const { rect:
|
|
995
|
-
e.material = e.userData.baseMaterial, e.scale.set(
|
|
996
|
-
|
|
997
|
-
|
|
998
|
-
|
|
999
|
-
|
|
995
|
+
var w, b, U;
|
|
996
|
+
const { rect: r, styles: i } = t, a = this.renderer.getPixelRatio(), n = this.renderer.domElement.width / a, o = this.renderer.domElement.height / a;
|
|
997
|
+
e.material = e.userData.baseMaterial, e.scale.set(r.width, r.height, 1), e.userData.domRect = {
|
|
998
|
+
x: r.x,
|
|
999
|
+
y: r.y,
|
|
1000
|
+
width: r.width,
|
|
1001
|
+
height: r.height
|
|
1002
|
+
};
|
|
1003
|
+
const l = 1e-3;
|
|
1000
1004
|
this.renderOrder++;
|
|
1001
|
-
const
|
|
1005
|
+
const c = this.targetRect.left + window.scrollX, d = this.targetRect.top + window.scrollY;
|
|
1002
1006
|
let h, u;
|
|
1003
1007
|
if (this.isViewport)
|
|
1004
|
-
h =
|
|
1008
|
+
h = r.x - window.innerWidth / 2 + r.width / 2, u = -r.y + window.innerHeight / 2 - r.height / 2;
|
|
1005
1009
|
else {
|
|
1006
|
-
const
|
|
1007
|
-
h =
|
|
1010
|
+
const D = r.x - c, O = r.y - d;
|
|
1011
|
+
h = D - n / 2 + r.width / 2, u = -O + o / 2 - r.height / 2;
|
|
1008
1012
|
}
|
|
1009
1013
|
e.position.set(
|
|
1010
1014
|
h,
|
|
1011
1015
|
u,
|
|
1012
|
-
|
|
1016
|
+
i.zIndex + this.renderOrder * l
|
|
1013
1017
|
);
|
|
1014
|
-
const
|
|
1015
|
-
e.userData.basePosition = { x: h, y: u }, e.userData.originalBasePosition = { x: h, y: u }, e.userData.baseSize = { width:
|
|
1016
|
-
const
|
|
1017
|
-
let R = 0,
|
|
1018
|
+
const p = r.x, f = r.y;
|
|
1019
|
+
e.userData.basePosition = { x: h, y: u }, e.userData.originalBasePosition = { x: h, y: u }, e.userData.baseSize = { width: r.width, height: r.height }, e.userData.baseDOM = { x: p, y: f }, e.userData.isFixed = t.isFixed, e.userData.initialScroll = { x: window.scrollX, y: window.scrollY };
|
|
1020
|
+
const m = t.element.nodeType === Node.TEXT_NODE ? t.element.parentElement : t.element, E = window.getComputedStyle(m);
|
|
1021
|
+
let R = 0, M = 0;
|
|
1018
1022
|
if (E.transform && E.transform !== "none") {
|
|
1019
|
-
const
|
|
1020
|
-
R =
|
|
1023
|
+
const D = new DOMMatrix(E.transform);
|
|
1024
|
+
R = D.m41, M = D.m42;
|
|
1021
1025
|
}
|
|
1022
|
-
if (e.userData.baseTransform = { x: R, y:
|
|
1026
|
+
if (e.userData.baseTransform = { x: R, y: M }, delete e.userData.originRatioX, delete e.userData.originRatioY, Y.update(
|
|
1023
1027
|
e.userData.baseMaterial,
|
|
1024
1028
|
"BOX",
|
|
1025
|
-
|
|
1029
|
+
i,
|
|
1026
1030
|
"",
|
|
1027
|
-
|
|
1028
|
-
|
|
1031
|
+
r.width,
|
|
1032
|
+
r.height,
|
|
1029
1033
|
this.qualityFactor,
|
|
1030
|
-
t.isTraveler ? (
|
|
1034
|
+
t.isTraveler ? (w = this.renderTargets[t.captureLayer - 2]) == null ? void 0 : w.texture : this.textureManager.get(t.element)
|
|
1031
1035
|
), t.nativeStyles && t.nativeRect) {
|
|
1032
1036
|
if (!e.userData.nativeMesh) {
|
|
1033
|
-
const
|
|
1037
|
+
const I = Y.create(
|
|
1034
1038
|
"BOX",
|
|
1035
1039
|
t.nativeStyles,
|
|
1036
1040
|
"",
|
|
1037
1041
|
t.nativeRect.width,
|
|
1038
1042
|
t.nativeRect.height,
|
|
1039
1043
|
this.qualityFactor,
|
|
1040
|
-
t.isTraveler ? (
|
|
1044
|
+
t.isTraveler ? (b = this.renderTargets[t.captureLayer - 2]) == null ? void 0 : b.texture : this.textureManager.get(t.element),
|
|
1041
1045
|
t.shaderHooks
|
|
1042
|
-
),
|
|
1043
|
-
t.type === "TEXT" && (
|
|
1046
|
+
), P = new y.Mesh(e.geometry, I);
|
|
1047
|
+
t.type === "TEXT" && (P.name = "BG_MESH"), this.scene.add(P), e.userData.nativeMesh = P;
|
|
1044
1048
|
}
|
|
1045
|
-
const
|
|
1046
|
-
let
|
|
1049
|
+
const D = e.userData.nativeMesh;
|
|
1050
|
+
let O, N;
|
|
1047
1051
|
if (this.isViewport)
|
|
1048
|
-
|
|
1052
|
+
O = t.nativeRect.x - window.innerWidth / 2 + t.nativeRect.width / 2, N = -t.nativeRect.y + window.innerHeight / 2 - t.nativeRect.height / 2;
|
|
1049
1053
|
else {
|
|
1050
|
-
const
|
|
1051
|
-
|
|
1054
|
+
const I = t.nativeRect.x - c, P = t.nativeRect.y - d;
|
|
1055
|
+
O = I - n / 2 + t.nativeRect.width / 2, N = -P + o / 2 - t.nativeRect.height / 2;
|
|
1052
1056
|
}
|
|
1053
|
-
|
|
1054
|
-
|
|
1055
|
-
|
|
1056
|
-
t.nativeStyles.zIndex + this.renderOrder *
|
|
1057
|
-
),
|
|
1058
|
-
|
|
1057
|
+
D.scale.set(t.nativeRect.width, t.nativeRect.height, 1), D.position.set(
|
|
1058
|
+
O,
|
|
1059
|
+
N,
|
|
1060
|
+
t.nativeStyles.zIndex + this.renderOrder * l
|
|
1061
|
+
), Y.update(
|
|
1062
|
+
D.material,
|
|
1059
1063
|
"BOX",
|
|
1060
1064
|
t.nativeStyles,
|
|
1061
1065
|
"",
|
|
@@ -1065,135 +1069,167 @@ class rt {
|
|
|
1065
1069
|
t.isTraveler ? (U = this.renderTargets[t.captureLayer - 2]) == null ? void 0 : U.texture : this.textureManager.get(t.element)
|
|
1066
1070
|
);
|
|
1067
1071
|
} else
|
|
1068
|
-
e.userData.nativeMesh && (this.scene.remove(e.userData.nativeMesh), e.userData.nativeMesh.material instanceof
|
|
1072
|
+
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);
|
|
1069
1073
|
}
|
|
1070
1074
|
updateMeshLayers(e, t) {
|
|
1071
|
-
const
|
|
1072
|
-
if (e.layers.set(
|
|
1073
|
-
const
|
|
1074
|
-
if (
|
|
1075
|
-
for (let
|
|
1076
|
-
e.layers.enable(
|
|
1077
|
-
for (let
|
|
1078
|
-
|
|
1075
|
+
const r = t.visibility & W ? L.BASE : L.HIDDEN;
|
|
1076
|
+
if (e.layers.set(r), t.visibility & j && e.layers.enable(L.SELECTED), e.userData.nativeMesh && t.nativeLayer !== void 0) {
|
|
1077
|
+
const i = e.userData.nativeMesh;
|
|
1078
|
+
if (i.layers.set(L.HIDDEN), t.visibility & W) {
|
|
1079
|
+
for (let a = t.captureLayer; a < t.nativeLayer; a++)
|
|
1080
|
+
e.layers.enable(L.getCaptureLayer(a));
|
|
1081
|
+
for (let a = Math.max(t.captureLayer, t.nativeLayer); a <= k.MAX_LAYERS + 1; a++)
|
|
1082
|
+
i.layers.enable(L.getCaptureLayer(a));
|
|
1079
1083
|
}
|
|
1080
1084
|
} else if (t.visibility & W)
|
|
1081
|
-
for (let
|
|
1082
|
-
e.layers.enable(
|
|
1085
|
+
for (let i = t.captureLayer; i <= k.MAX_LAYERS + 1; i++)
|
|
1086
|
+
e.layers.enable(L.getCaptureLayer(i));
|
|
1083
1087
|
}
|
|
1084
|
-
captureRenderTarget(e, t,
|
|
1085
|
-
if (e.size === 0 || !
|
|
1088
|
+
captureRenderTarget(e, t, r) {
|
|
1089
|
+
if (e.size === 0 || !r)
|
|
1086
1090
|
return;
|
|
1087
|
-
const
|
|
1088
|
-
this.renderer.getClearColor(
|
|
1089
|
-
const
|
|
1091
|
+
const i = new y.Color(), a = this.renderer.getClearAlpha();
|
|
1092
|
+
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);
|
|
1093
|
+
const n = new y.Vector3(), o = this.isViewport ? window.innerWidth + this.overscan * 2 : this.targetRect.width, l = this.isViewport ? window.innerHeight + this.overscan * 2 : this.targetRect.height, c = this.renderer.getPixelRatio();
|
|
1090
1094
|
for (const d of e) {
|
|
1091
|
-
|
|
1092
|
-
const h = (
|
|
1093
|
-
let
|
|
1094
|
-
typeof this.clipArea == "number" ? f = this.clipArea : this.clipArea.endsWith("%") ? f = parseFloat(this.clipArea) / 100 : this.clipArea.endsWith("px") && (
|
|
1095
|
-
const
|
|
1096
|
-
this.renderer.setScissor(
|
|
1095
|
+
n.setFromMatrixPosition(d.matrixWorld), n.project(this.camera);
|
|
1096
|
+
const h = (n.x + 1) / 2 * o, u = (n.y + 1) / 2 * l;
|
|
1097
|
+
let p = 0, f = 1;
|
|
1098
|
+
typeof this.clipArea == "number" ? f = this.clipArea : this.clipArea.endsWith("%") ? f = parseFloat(this.clipArea) / 100 : this.clipArea.endsWith("px") && (p = parseFloat(this.clipArea));
|
|
1099
|
+
const m = d.scale.x * f + 0.5, E = d.scale.y * f + 0.5, R = h - m / 2, M = u - E / 2, w = (R * this.qualityFactor - p) / c, b = (M * this.qualityFactor - p) / c, U = (m * this.qualityFactor + p * 2) / c, D = (E * this.qualityFactor + p * 2) / c;
|
|
1100
|
+
this.renderer.setScissor(w, b, U, D), this.renderer.render(this.scene, this.camera);
|
|
1097
1101
|
}
|
|
1098
|
-
this.renderer.setScissorTest(!1), this.renderer.autoClear = !0, this.renderer.setRenderTarget(null), this.camera.layers.set(this.getSceneLayer()), this.renderer.setClearColor(
|
|
1102
|
+
this.renderer.setScissorTest(!1), this.renderer.autoClear = !0, this.renderer.setRenderTarget(null), this.camera.layers.set(this.getSceneLayer()), this.renderer.setClearColor(i, a);
|
|
1099
1103
|
}
|
|
1100
1104
|
render() {
|
|
1101
|
-
for (let e = 0; e <
|
|
1105
|
+
for (let e = 0; e < k.MAX_LAYERS; e++) {
|
|
1102
1106
|
const t = e + 1;
|
|
1103
1107
|
this.captureRenderTarget(
|
|
1104
1108
|
this.travelersByLayer[e],
|
|
1105
|
-
|
|
1109
|
+
L.getCaptureLayer(t),
|
|
1106
1110
|
this.renderTargets[e]
|
|
1107
1111
|
);
|
|
1108
1112
|
}
|
|
1109
1113
|
this.renderer.render(this.scene, this.camera);
|
|
1110
1114
|
}
|
|
1111
|
-
|
|
1112
|
-
this.
|
|
1115
|
+
syncMeshesByDOM() {
|
|
1116
|
+
const e = this.targetRect.left + window.scrollX, t = this.targetRect.top + window.scrollY, r = this.renderer.getPixelRatio(), i = this.renderer.domElement.width / r, a = this.renderer.domElement.height / r;
|
|
1117
|
+
this.scene.children.forEach((n) => {
|
|
1118
|
+
const o = n;
|
|
1119
|
+
if (!o.userData || !o.userData.domElement)
|
|
1120
|
+
return;
|
|
1121
|
+
const l = o.userData.domElement;
|
|
1122
|
+
if (!l.isConnected)
|
|
1123
|
+
return;
|
|
1124
|
+
let c;
|
|
1125
|
+
if (l.nodeType === Node.TEXT_NODE) {
|
|
1126
|
+
const h = document.createRange();
|
|
1127
|
+
h.selectNode(l), c = h.getBoundingClientRect();
|
|
1128
|
+
} else
|
|
1129
|
+
c = l.getBoundingClientRect();
|
|
1130
|
+
const d = o.userData.domRect;
|
|
1131
|
+
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) {
|
|
1132
|
+
o.userData.domRect = { x: c.x, y: c.y, width: c.width, height: c.height };
|
|
1133
|
+
let h, u;
|
|
1134
|
+
if (this.isViewport)
|
|
1135
|
+
h = c.x - window.innerWidth / 2 + c.width / 2, u = -c.y + window.innerHeight / 2 - c.height / 2;
|
|
1136
|
+
else {
|
|
1137
|
+
const p = c.x - e, f = c.y - t;
|
|
1138
|
+
h = p - i / 2 + c.width / 2, u = -f + a / 2 - c.height / 2;
|
|
1139
|
+
}
|
|
1140
|
+
if (o.position.setX(h), o.position.setY(u), o.scale.set(c.width, c.height, 1), o.material instanceof y.ShaderMaterial && Y.forceUpdateUniforms(o.material, {
|
|
1141
|
+
width: c.width,
|
|
1142
|
+
height: c.height
|
|
1143
|
+
}), o.userData.nativeMesh) {
|
|
1144
|
+
const p = o.userData.nativeMesh;
|
|
1145
|
+
p.position.setX(h), p.position.setY(u), p.scale.set(c.width, c.height, 1);
|
|
1146
|
+
}
|
|
1147
|
+
}
|
|
1148
|
+
});
|
|
1113
1149
|
}
|
|
1114
1150
|
}
|
|
1115
|
-
function
|
|
1151
|
+
function rt(s) {
|
|
1116
1152
|
const e = s.textContent || "", t = [];
|
|
1117
|
-
let
|
|
1118
|
-
const
|
|
1119
|
-
for (let h = 0; h <
|
|
1120
|
-
const u =
|
|
1121
|
-
|
|
1122
|
-
const f =
|
|
1153
|
+
let r = "", i = null, a = -1;
|
|
1154
|
+
const n = (c, d) => {
|
|
1155
|
+
for (let h = 0; h < c.length; h++) {
|
|
1156
|
+
const u = c[h], p = document.createRange();
|
|
1157
|
+
p.setStart(s, d + h), p.setEnd(s, d + h + 1);
|
|
1158
|
+
const f = p.getBoundingClientRect();
|
|
1123
1159
|
if (f.width === 0 && f.height === 0) {
|
|
1124
|
-
|
|
1160
|
+
r += u;
|
|
1125
1161
|
continue;
|
|
1126
1162
|
}
|
|
1127
|
-
|
|
1128
|
-
text:
|
|
1163
|
+
a === -1 || Math.abs(f.top - a) > f.height / 2 ? (r && i && t.push({
|
|
1164
|
+
text: r,
|
|
1129
1165
|
rect: {
|
|
1130
|
-
left:
|
|
1131
|
-
top:
|
|
1132
|
-
width:
|
|
1133
|
-
height:
|
|
1166
|
+
left: i.left,
|
|
1167
|
+
top: i.top,
|
|
1168
|
+
width: i.right - i.left,
|
|
1169
|
+
height: i.bottom - i.top
|
|
1134
1170
|
}
|
|
1135
|
-
}),
|
|
1171
|
+
}), r = u, i = {
|
|
1136
1172
|
left: f.left,
|
|
1137
1173
|
top: f.top,
|
|
1138
1174
|
right: f.right,
|
|
1139
1175
|
bottom: f.bottom
|
|
1140
|
-
},
|
|
1141
|
-
|
|
1176
|
+
}, a = f.top) : (r += u, 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(
|
|
1177
|
+
i.bottom,
|
|
1142
1178
|
f.bottom
|
|
1143
1179
|
)));
|
|
1144
1180
|
}
|
|
1145
|
-
},
|
|
1146
|
-
let
|
|
1147
|
-
for (const
|
|
1181
|
+
}, o = e.match(/[^\s\-]+\-?|\-|\s+/g) || [];
|
|
1182
|
+
let l = 0;
|
|
1183
|
+
for (const c of o) {
|
|
1148
1184
|
const d = document.createRange();
|
|
1149
|
-
d.setStart(s,
|
|
1185
|
+
d.setStart(s, l), d.setEnd(s, l + c.length);
|
|
1150
1186
|
const h = d.getClientRects();
|
|
1151
1187
|
if (h.length > 1)
|
|
1152
|
-
|
|
1188
|
+
n(c, l);
|
|
1153
1189
|
else {
|
|
1154
1190
|
const u = h.length === 1 ? h[0] : d.getBoundingClientRect();
|
|
1155
1191
|
if (u.width === 0 && u.height === 0) {
|
|
1156
|
-
|
|
1192
|
+
r += c, l += c.length;
|
|
1157
1193
|
continue;
|
|
1158
1194
|
}
|
|
1159
|
-
|
|
1160
|
-
text:
|
|
1195
|
+
a === -1 || Math.abs(u.top - a) > u.height / 2 ? (r && i && t.push({
|
|
1196
|
+
text: r,
|
|
1161
1197
|
rect: {
|
|
1162
|
-
left:
|
|
1163
|
-
top:
|
|
1164
|
-
width:
|
|
1165
|
-
height:
|
|
1198
|
+
left: i.left,
|
|
1199
|
+
top: i.top,
|
|
1200
|
+
width: i.right - i.left,
|
|
1201
|
+
height: i.bottom - i.top
|
|
1166
1202
|
}
|
|
1167
|
-
}),
|
|
1203
|
+
}), r = c, i = {
|
|
1168
1204
|
left: u.left,
|
|
1169
1205
|
top: u.top,
|
|
1170
1206
|
right: u.right,
|
|
1171
1207
|
bottom: u.bottom
|
|
1172
|
-
},
|
|
1173
|
-
|
|
1208
|
+
}, a = u.top) : (r += c, i && (i.left = Math.min(i.left, u.left), i.top = Math.min(i.top, u.top), i.right = Math.max(i.right, u.right), i.bottom = Math.max(
|
|
1209
|
+
i.bottom,
|
|
1174
1210
|
u.bottom
|
|
1175
1211
|
)));
|
|
1176
1212
|
}
|
|
1177
|
-
|
|
1213
|
+
l += c.length;
|
|
1178
1214
|
}
|
|
1179
|
-
return
|
|
1180
|
-
text:
|
|
1215
|
+
return r && i && t.push({
|
|
1216
|
+
text: r,
|
|
1181
1217
|
rect: {
|
|
1182
|
-
left:
|
|
1183
|
-
top:
|
|
1184
|
-
width:
|
|
1185
|
-
height:
|
|
1218
|
+
left: i.left,
|
|
1219
|
+
top: i.top,
|
|
1220
|
+
width: i.right - i.left,
|
|
1221
|
+
height: i.bottom - i.top
|
|
1186
1222
|
}
|
|
1187
1223
|
}), t.filter(
|
|
1188
|
-
(
|
|
1224
|
+
(c) => c.text.trim().length > 0 && c.rect.width > 0 && c.rect.height > 0
|
|
1189
1225
|
);
|
|
1190
1226
|
}
|
|
1191
|
-
function
|
|
1227
|
+
function Se(s) {
|
|
1192
1228
|
const e = parseFloat(s.fontSize);
|
|
1193
1229
|
let t = parseFloat(s.lineHeight);
|
|
1194
1230
|
isNaN(t) && (t = e * 1.2);
|
|
1195
|
-
let
|
|
1196
|
-
return isNaN(
|
|
1231
|
+
let r = parseFloat(s.letterSpacing);
|
|
1232
|
+
return isNaN(r) && (r = 0), {
|
|
1197
1233
|
font: `${s.fontStyle} ${s.fontWeight} ${s.fontSize} ${s.fontFamily}`,
|
|
1198
1234
|
fontSize: s.fontSize,
|
|
1199
1235
|
color: s.color,
|
|
@@ -1201,329 +1237,303 @@ function Le(s) {
|
|
|
1201
1237
|
textBaseline: "alphabetic",
|
|
1202
1238
|
direction: s.direction || "inherit",
|
|
1203
1239
|
lineHeight: t,
|
|
1204
|
-
letterSpacing:
|
|
1240
|
+
letterSpacing: r
|
|
1205
1241
|
};
|
|
1206
1242
|
}
|
|
1207
|
-
function
|
|
1208
|
-
var
|
|
1243
|
+
function De(s, e = $ | Q | ze | le | re, t, r = 1, i = 0, a = 2, n, o) {
|
|
1244
|
+
var de, ue, fe, ge, pe, me;
|
|
1209
1245
|
if (s.nodeType === Node.TEXT_NODE) {
|
|
1210
|
-
const
|
|
1211
|
-
if (!
|
|
1246
|
+
const v = s;
|
|
1247
|
+
if (!v.textContent || !v.textContent.trim())
|
|
1212
1248
|
return null;
|
|
1213
|
-
const
|
|
1214
|
-
if (
|
|
1249
|
+
const C = v.textContent.replace(/\s+/g, " ");
|
|
1250
|
+
if (C.length === 0)
|
|
1215
1251
|
return null;
|
|
1216
|
-
const
|
|
1217
|
-
if (
|
|
1252
|
+
const A = rt(v);
|
|
1253
|
+
if (A.length === 0)
|
|
1218
1254
|
return null;
|
|
1219
|
-
const
|
|
1255
|
+
const B = v.parentElement, S = B ? window.getComputedStyle(B) : null;
|
|
1220
1256
|
if (!S)
|
|
1221
1257
|
return null;
|
|
1222
|
-
const
|
|
1258
|
+
const X = Math.min(...A.map((T) => T.rect.left)), x = Math.min(...A.map((T) => T.rect.top)), z = Math.max(...A.map((T) => T.rect.left + T.rect.width)), G = Math.max(...A.map((T) => T.rect.top + T.rect.height));
|
|
1223
1259
|
return {
|
|
1224
1260
|
id: Math.random().toString(36).substring(2, 9),
|
|
1225
1261
|
type: "TEXT",
|
|
1226
|
-
element:
|
|
1262
|
+
element: v,
|
|
1227
1263
|
rect: {
|
|
1228
|
-
x:
|
|
1229
|
-
y:
|
|
1230
|
-
width:
|
|
1231
|
-
height:
|
|
1264
|
+
x: X + window.scrollX,
|
|
1265
|
+
y: x + window.scrollY,
|
|
1266
|
+
width: z - X,
|
|
1267
|
+
height: G - x
|
|
1232
1268
|
},
|
|
1233
1269
|
styles: {
|
|
1234
1270
|
backgroundColor: "transparent",
|
|
1235
1271
|
backgroundImage: "",
|
|
1236
|
-
opacity:
|
|
1237
|
-
zIndex: (isNaN(parseInt(S.zIndex)) ? 0 : parseInt(S.zIndex)) +
|
|
1272
|
+
opacity: B && B.dataset[H.KEY] === H.VALUES.HIDE ? 1 : parseFloat(S.opacity),
|
|
1273
|
+
zIndex: (isNaN(parseInt(S.zIndex)) ? 0 : parseInt(S.zIndex)) + i,
|
|
1238
1274
|
borderRadius: "0px",
|
|
1239
1275
|
borderColor: "transparent",
|
|
1240
1276
|
borderWidth: "0px",
|
|
1241
1277
|
isTraveler: !1
|
|
1242
1278
|
},
|
|
1243
|
-
textContent:
|
|
1244
|
-
textLines:
|
|
1245
|
-
text:
|
|
1279
|
+
textContent: C,
|
|
1280
|
+
textLines: A.map((T) => ({
|
|
1281
|
+
text: T.text.trim(),
|
|
1246
1282
|
rect: {
|
|
1247
|
-
x:
|
|
1248
|
-
y:
|
|
1249
|
-
width:
|
|
1250
|
-
height:
|
|
1283
|
+
x: T.rect.left + window.scrollX,
|
|
1284
|
+
y: T.rect.top + window.scrollY,
|
|
1285
|
+
width: T.rect.width,
|
|
1286
|
+
height: T.rect.height
|
|
1251
1287
|
}
|
|
1252
1288
|
})),
|
|
1253
|
-
textStyles:
|
|
1289
|
+
textStyles: Se(S),
|
|
1254
1290
|
dirtyMask: e,
|
|
1255
1291
|
visibility: t,
|
|
1256
1292
|
isTraveler: !1,
|
|
1257
|
-
captureLayer:
|
|
1293
|
+
captureLayer: r,
|
|
1258
1294
|
isFixed: S.position === "fixed",
|
|
1259
|
-
nativeLayer:
|
|
1260
|
-
nativeStyles:
|
|
1295
|
+
nativeLayer: n,
|
|
1296
|
+
nativeStyles: o ? q(q({
|
|
1261
1297
|
backgroundColor: "transparent",
|
|
1262
1298
|
backgroundImage: "",
|
|
1263
|
-
opacity:
|
|
1264
|
-
zIndex: (isNaN(parseInt(S.zIndex)) ? 0 : parseInt(S.zIndex)) +
|
|
1299
|
+
opacity: B && B.dataset[H.KEY] === H.VALUES.HIDE ? 1 : parseFloat(S.opacity),
|
|
1300
|
+
zIndex: (isNaN(parseInt(S.zIndex)) ? 0 : parseInt(S.zIndex)) + i,
|
|
1265
1301
|
borderRadius: "0px",
|
|
1266
1302
|
borderColor: "transparent",
|
|
1267
1303
|
borderWidth: "0px",
|
|
1268
1304
|
isTraveler: !1
|
|
1269
|
-
},
|
|
1270
|
-
nativeRect:
|
|
1271
|
-
x:
|
|
1272
|
-
y:
|
|
1273
|
-
width:
|
|
1274
|
-
height:
|
|
1305
|
+
}, Se(S)), o) : void 0,
|
|
1306
|
+
nativeRect: o ? {
|
|
1307
|
+
x: X + window.scrollX,
|
|
1308
|
+
y: x + window.scrollY,
|
|
1309
|
+
width: z - X,
|
|
1310
|
+
height: G - x
|
|
1275
1311
|
} : void 0,
|
|
1276
1312
|
children: []
|
|
1277
1313
|
};
|
|
1278
1314
|
}
|
|
1279
1315
|
if (s.nodeType !== Node.ELEMENT_NODE)
|
|
1280
1316
|
return null;
|
|
1281
|
-
const
|
|
1317
|
+
const l = s, c = l.dataset[_.KEY];
|
|
1282
1318
|
let d = t, h = t;
|
|
1283
|
-
if (
|
|
1284
|
-
const
|
|
1285
|
-
for (const
|
|
1286
|
-
if (!
|
|
1319
|
+
if (c) {
|
|
1320
|
+
const v = new Set(c.split(/\s+/));
|
|
1321
|
+
for (const C of v)
|
|
1322
|
+
if (!Ce.includes(C))
|
|
1287
1323
|
throw new Error(
|
|
1288
|
-
`[MirageEngine] Invalid filter token: '${
|
|
1324
|
+
`[MirageEngine] Invalid filter token: '${C}'. Expected one of: 'include-tree', 'exclude-tree', 'include-self', 'exclude-self', 'end'.`
|
|
1289
1325
|
);
|
|
1290
|
-
if (
|
|
1326
|
+
if (v.has(_.VALUES.END))
|
|
1291
1327
|
return null;
|
|
1292
|
-
if (
|
|
1328
|
+
if (v.has(_.VALUES.INCLUDE_TREE) && v.has(_.VALUES.EXCLUDE_TREE))
|
|
1293
1329
|
throw new Error(
|
|
1294
1330
|
"[MirageEngine] Conflicting filters: 'include-tree' and 'exclude-tree' cannot be used together on the same element."
|
|
1295
1331
|
);
|
|
1296
|
-
if (
|
|
1332
|
+
if (v.has(_.VALUES.INCLUDE_SELF) && v.has(_.VALUES.EXCLUDE_SELF))
|
|
1297
1333
|
throw new Error(
|
|
1298
1334
|
"[MirageEngine] Conflicting filters: 'include-self' and 'exclude-self' cannot be used together on the same element."
|
|
1299
1335
|
);
|
|
1300
|
-
|
|
1336
|
+
v.has(_.VALUES.INCLUDE_TREE) ? d = d | W : v.has(_.VALUES.EXCLUDE_TREE) && (d = d & ~W), h = d, v.has(_.VALUES.INCLUDE_SELF) ? h = h | W : v.has(_.VALUES.EXCLUDE_SELF) && (h = h & ~W);
|
|
1301
1337
|
}
|
|
1302
|
-
const u =
|
|
1338
|
+
const u = l.dataset[V.KEY];
|
|
1303
1339
|
if (u) {
|
|
1304
|
-
const
|
|
1305
|
-
for (const
|
|
1306
|
-
if (!
|
|
1340
|
+
const v = new Set(u.split(/\s+/));
|
|
1341
|
+
for (const C of v)
|
|
1342
|
+
if (!Ce.includes(C))
|
|
1307
1343
|
throw new Error(
|
|
1308
|
-
`[MirageEngine] Invalid select token: '${
|
|
1344
|
+
`[MirageEngine] Invalid select token: '${C}'. Expected one of: 'include-tree', 'exclude-tree', 'include-self', 'exclude-self', 'end'.`
|
|
1309
1345
|
);
|
|
1310
|
-
if (
|
|
1346
|
+
if (v.has(V.VALUES.END))
|
|
1311
1347
|
return null;
|
|
1312
|
-
if (
|
|
1348
|
+
if (v.has(V.VALUES.INCLUDE_TREE) && v.has(V.VALUES.EXCLUDE_TREE))
|
|
1313
1349
|
throw new Error(
|
|
1314
1350
|
"[MirageEngine] Conflicting selects: 'include-tree' and 'exclude-tree' cannot be used together on the same element."
|
|
1315
1351
|
);
|
|
1316
|
-
if (
|
|
1352
|
+
if (v.has(V.VALUES.INCLUDE_SELF) && v.has(V.VALUES.EXCLUDE_SELF))
|
|
1317
1353
|
throw new Error(
|
|
1318
1354
|
"[MirageEngine] Conflicting selects: 'include-self' and 'exclude-self' cannot be used together on the same element."
|
|
1319
1355
|
);
|
|
1320
|
-
|
|
1321
|
-
}
|
|
1322
|
-
const
|
|
1323
|
-
let f = !1,
|
|
1324
|
-
if (
|
|
1325
|
-
let
|
|
1326
|
-
const
|
|
1327
|
-
let
|
|
1328
|
-
if (
|
|
1329
|
-
|
|
1330
|
-
const
|
|
1356
|
+
v.has(V.VALUES.INCLUDE_TREE) ? d = d | j : v.has(V.VALUES.EXCLUDE_TREE) && (d = d & ~j), h = d, v.has(V.VALUES.INCLUDE_SELF) ? h = h | j : v.has(V.VALUES.EXCLUDE_SELF) && (h = h & ~j);
|
|
1357
|
+
}
|
|
1358
|
+
const p = l.dataset[k.KEY];
|
|
1359
|
+
let f = !1, m = o ? q({}, o) : {}, E = n;
|
|
1360
|
+
if (p) {
|
|
1361
|
+
let v = 1;
|
|
1362
|
+
const C = p.indexOf("{"), A = p.lastIndexOf("}");
|
|
1363
|
+
let B = p;
|
|
1364
|
+
if (C !== -1 && A !== -1 && A > C) {
|
|
1365
|
+
B = p.substring(0, C).trim();
|
|
1366
|
+
const x = p.substring(C, A + 1);
|
|
1331
1367
|
try {
|
|
1332
|
-
|
|
1333
|
-
} catch (
|
|
1368
|
+
m = new Function("return " + x)();
|
|
1369
|
+
} catch (z) {
|
|
1334
1370
|
console.warn(
|
|
1335
|
-
`[MirageEngine] Failed to parse travel styles JSON: ${
|
|
1371
|
+
`[MirageEngine] Failed to parse travel styles JSON: ${x}`
|
|
1336
1372
|
);
|
|
1337
1373
|
}
|
|
1338
1374
|
}
|
|
1339
|
-
const S =
|
|
1340
|
-
let
|
|
1341
|
-
if (S.includes(
|
|
1342
|
-
f = !0,
|
|
1343
|
-
const
|
|
1344
|
-
|
|
1345
|
-
} else if (S.includes(
|
|
1375
|
+
const S = B.split(/\s+/);
|
|
1376
|
+
let X = !1;
|
|
1377
|
+
if (S.includes(k.VALUES.TRAVELER)) {
|
|
1378
|
+
f = !0, X = !0;
|
|
1379
|
+
const x = S.find((z) => !isNaN(parseInt(z, 10)));
|
|
1380
|
+
x && (v = parseInt(x, 10));
|
|
1381
|
+
} else if (S.includes(k.VALUES.NATIVE)) {
|
|
1346
1382
|
f = !1;
|
|
1347
|
-
const
|
|
1348
|
-
|
|
1383
|
+
const x = S.find((z) => !isNaN(parseInt(z, 10)));
|
|
1384
|
+
x && (E = parseInt(x, 10));
|
|
1349
1385
|
}
|
|
1350
|
-
if (
|
|
1351
|
-
const
|
|
1352
|
-
if (
|
|
1386
|
+
if (X) {
|
|
1387
|
+
const x = v + 1;
|
|
1388
|
+
if (x < r)
|
|
1353
1389
|
throw new Error(
|
|
1354
|
-
`[MirageEngine] Traveler layer (${
|
|
1390
|
+
`[MirageEngine] Traveler layer (${v}) cannot be smaller than inherited capture layer (${r - 1}).`
|
|
1355
1391
|
);
|
|
1356
|
-
|
|
1392
|
+
r = Math.min(x, k.MAX_LAYERS + 1);
|
|
1357
1393
|
}
|
|
1358
1394
|
}
|
|
1359
|
-
const R =
|
|
1360
|
-
let
|
|
1361
|
-
R && (
|
|
1362
|
-
const
|
|
1363
|
-
if (
|
|
1395
|
+
const R = l.dataset[Xe.KEY];
|
|
1396
|
+
let M;
|
|
1397
|
+
R && (M = JSON.parse(R));
|
|
1398
|
+
const w = l.getBoundingClientRect(), b = window.getComputedStyle(l);
|
|
1399
|
+
if (w.width === 0 || w.height === 0 || b.display === "none")
|
|
1364
1400
|
return null;
|
|
1365
|
-
let U =
|
|
1366
|
-
U || (U = Math.random().toString(36).substring(2, 11),
|
|
1367
|
-
const
|
|
1368
|
-
let
|
|
1369
|
-
if (
|
|
1370
|
-
|
|
1371
|
-
else if (
|
|
1372
|
-
const
|
|
1373
|
-
const
|
|
1374
|
-
|
|
1375
|
-
const
|
|
1376
|
-
|
|
1377
|
-
const
|
|
1378
|
-
|
|
1379
|
-
const
|
|
1380
|
-
|
|
1381
|
-
for (let
|
|
1382
|
-
|
|
1401
|
+
let U = l.getAttribute("data-mid");
|
|
1402
|
+
U || (U = Math.random().toString(36).substring(2, 11), l.setAttribute("data-mid", U));
|
|
1403
|
+
const D = parseInt(b.zIndex), O = (isNaN(D) ? 0 : D) + i;
|
|
1404
|
+
let N;
|
|
1405
|
+
if (l.tagName === "IMG")
|
|
1406
|
+
N = l.src;
|
|
1407
|
+
else if (l.tagName.toLowerCase() === "svg") {
|
|
1408
|
+
const v = l.cloneNode(!0), C = m == null ? void 0 : m.color, A = m == null ? void 0 : m.fill, B = m == null ? void 0 : m.stroke, S = m == null ? void 0 : m.opacity, X = (T, ve) => {
|
|
1409
|
+
const F = window.getComputedStyle(T), J = ve, ke = F.fill === F.color, Ue = F.stroke === F.color, ie = A || (ke ? C : void 0) || F.fill;
|
|
1410
|
+
ie && ie !== "none" && (J.style.fill = ie);
|
|
1411
|
+
const se = B || (Ue ? C : void 0) || F.stroke;
|
|
1412
|
+
se && se !== "none" && (J.style.stroke = se), F.strokeWidth && F.strokeWidth !== "0px" && (J.style.strokeWidth = F.strokeWidth);
|
|
1413
|
+
const ye = C || F.color;
|
|
1414
|
+
ye && (J.style.color = ye);
|
|
1415
|
+
const ne = S || F.opacity;
|
|
1416
|
+
ne && ne !== "1" && (J.style.opacity = ne);
|
|
1417
|
+
for (let ee = 0; ee < T.children.length; ee++)
|
|
1418
|
+
X(T.children[ee], ve.children[ee]);
|
|
1383
1419
|
};
|
|
1384
|
-
|
|
1385
|
-
const
|
|
1386
|
-
|
|
1387
|
-
let
|
|
1388
|
-
|
|
1420
|
+
X(l, v);
|
|
1421
|
+
const x = l.getBoundingClientRect(), z = window.devicePixelRatio * a;
|
|
1422
|
+
v.hasAttribute("viewBox") || v.setAttribute("viewBox", `0 0 ${x.width} ${x.height}`), v.setAttribute("width", (x.width * z).toString()), v.setAttribute("height", (x.height * z).toString());
|
|
1423
|
+
let G = new XMLSerializer().serializeToString(v);
|
|
1424
|
+
G.includes("xmlns=") || (G = G.replace(
|
|
1389
1425
|
"<svg",
|
|
1390
1426
|
'<svg xmlns="http://www.w3.org/2000/svg"'
|
|
1391
|
-
)),
|
|
1392
|
-
} else if (
|
|
1393
|
-
const
|
|
1394
|
-
|
|
1395
|
-
}
|
|
1396
|
-
const
|
|
1397
|
-
backgroundColor:
|
|
1398
|
-
backgroundImage:
|
|
1399
|
-
opacity:
|
|
1400
|
-
zIndex:
|
|
1401
|
-
borderRadius:
|
|
1402
|
-
borderColor:
|
|
1403
|
-
borderWidth:
|
|
1404
|
-
imageSrc:
|
|
1427
|
+
)), N = `data:image/svg+xml;utf8,${encodeURIComponent(G)}`;
|
|
1428
|
+
} else if (b.backgroundImage && b.backgroundImage !== "none") {
|
|
1429
|
+
const v = b.backgroundImage.match(/url\(['"]?(.*?)['"]?\)/);
|
|
1430
|
+
v && (N = v[1]);
|
|
1431
|
+
}
|
|
1432
|
+
const I = {
|
|
1433
|
+
backgroundColor: b.backgroundColor,
|
|
1434
|
+
backgroundImage: b.backgroundImage,
|
|
1435
|
+
opacity: l.dataset[H.KEY] === H.VALUES.HIDE ? 1 : parseFloat(b.opacity),
|
|
1436
|
+
zIndex: O,
|
|
1437
|
+
borderRadius: b.borderRadius,
|
|
1438
|
+
borderColor: b.borderColor,
|
|
1439
|
+
borderWidth: b.borderWidth,
|
|
1440
|
+
imageSrc: N,
|
|
1405
1441
|
isTraveler: f
|
|
1406
|
-
},
|
|
1407
|
-
let
|
|
1408
|
-
const
|
|
1409
|
-
return
|
|
1410
|
-
const
|
|
1411
|
-
|
|
1442
|
+
}, P = I;
|
|
1443
|
+
let Ae, Ie;
|
|
1444
|
+
const he = [];
|
|
1445
|
+
return l.tagName.toLowerCase() !== "svg" && Array.from(l.childNodes).forEach((v) => {
|
|
1446
|
+
const C = v.nodeType === Node.TEXT_NODE ? h : d, A = De(
|
|
1447
|
+
v,
|
|
1412
1448
|
e,
|
|
1413
|
-
|
|
1414
|
-
|
|
1415
|
-
|
|
1416
|
-
|
|
1449
|
+
C,
|
|
1450
|
+
r,
|
|
1451
|
+
O,
|
|
1452
|
+
a,
|
|
1417
1453
|
E,
|
|
1418
|
-
|
|
1454
|
+
v.nodeType === Node.TEXT_NODE && Object.keys(m).length > 0 ? m : void 0
|
|
1419
1455
|
);
|
|
1420
|
-
|
|
1456
|
+
A && he.push(A);
|
|
1421
1457
|
}), {
|
|
1422
1458
|
id: U,
|
|
1423
1459
|
type: "BOX",
|
|
1424
|
-
element:
|
|
1460
|
+
element: l,
|
|
1425
1461
|
rect: {
|
|
1426
|
-
x:
|
|
1427
|
-
y:
|
|
1428
|
-
width:
|
|
1429
|
-
height:
|
|
1462
|
+
x: w.left + window.scrollX,
|
|
1463
|
+
y: w.top + window.scrollY,
|
|
1464
|
+
width: w.width,
|
|
1465
|
+
height: w.height
|
|
1430
1466
|
},
|
|
1431
|
-
styles:
|
|
1432
|
-
textContent:
|
|
1433
|
-
textStyles:
|
|
1467
|
+
styles: P,
|
|
1468
|
+
textContent: Ae,
|
|
1469
|
+
textStyles: Ie,
|
|
1434
1470
|
dirtyMask: e,
|
|
1435
1471
|
visibility: h,
|
|
1436
1472
|
isTraveler: f,
|
|
1437
|
-
captureLayer:
|
|
1473
|
+
captureLayer: r,
|
|
1438
1474
|
nativeLayer: E,
|
|
1439
|
-
nativeStyles: E !== void 0 ?
|
|
1440
|
-
backgroundColor: (
|
|
1441
|
-
backgroundImage: (
|
|
1442
|
-
opacity: (
|
|
1443
|
-
zIndex:
|
|
1444
|
-
borderRadius: (
|
|
1445
|
-
borderColor: (
|
|
1446
|
-
borderWidth: (
|
|
1447
|
-
isTraveler:
|
|
1475
|
+
nativeStyles: E !== void 0 ? we(q({}, I), {
|
|
1476
|
+
backgroundColor: (de = m.backgroundColor) != null ? de : I.backgroundColor,
|
|
1477
|
+
backgroundImage: (ue = m.backgroundImage) != null ? ue : I.backgroundImage,
|
|
1478
|
+
opacity: (fe = m.opacity) != null ? fe : I.opacity,
|
|
1479
|
+
zIndex: m.zIndex !== void 0 ? m.zIndex + O : I.zIndex,
|
|
1480
|
+
borderRadius: (ge = m.borderRadius) != null ? ge : I.borderRadius,
|
|
1481
|
+
borderColor: (pe = m.borderColor) != null ? pe : I.borderColor,
|
|
1482
|
+
borderWidth: (me = m.borderWidth) != null ? me : I.borderWidth,
|
|
1483
|
+
isTraveler: I.isTraveler
|
|
1448
1484
|
}) : void 0,
|
|
1449
1485
|
nativeRect: E !== void 0 ? {
|
|
1450
|
-
x:
|
|
1451
|
-
y:
|
|
1452
|
-
width:
|
|
1453
|
-
height:
|
|
1486
|
+
x: m.x !== void 0 ? parseFloat(m.x) : w.left + window.scrollX,
|
|
1487
|
+
y: m.y !== void 0 ? parseFloat(m.y) : w.top + window.scrollY,
|
|
1488
|
+
width: m.width !== void 0 ? parseFloat(m.width) : w.width,
|
|
1489
|
+
height: m.height !== void 0 ? parseFloat(m.height) : w.height
|
|
1454
1490
|
} : void 0,
|
|
1455
|
-
isFixed:
|
|
1456
|
-
children:
|
|
1457
|
-
shaderHooks:
|
|
1491
|
+
isFixed: b.position === "fixed",
|
|
1492
|
+
children: he,
|
|
1493
|
+
shaderHooks: M
|
|
1458
1494
|
};
|
|
1459
1495
|
}
|
|
1460
|
-
function
|
|
1461
|
-
e.size !== 0 && e.forEach((t,
|
|
1462
|
-
var
|
|
1463
|
-
const
|
|
1464
|
-
|
|
1465
|
-
return;
|
|
1466
|
-
let { x: n, y: o } = r.userData.basePosition;
|
|
1467
|
-
const { width: c, height: a } = r.userData.baseSize, l = (U = t.width) != null ? U : c, d = (M = t.height) != null ? M : a, h = l - c, u = d - a;
|
|
1468
|
-
if (t.width !== void 0 && r.userData.originRatioX === void 0 && Math.abs(h) > 0.1) {
|
|
1469
|
-
const k = i.getBoundingClientRect(), S = (B = t.x) != null ? B : 0, O = (A = (X = r.userData.baseTransform) == null ? void 0 : X.x) != null ? A : 0, C = r.userData.isFixed ? 0 : window.scrollX;
|
|
1470
|
-
let y = -(k.left + C - S + O - r.userData.baseDOM.x) / h;
|
|
1471
|
-
Math.abs(y) < 0.05 ? y = 0 : Math.abs(y - 1) < 0.05 ? y = 1 : Math.abs(y - 0.5) < 0.05 && (y = 0.5), r.userData.originRatioX = y;
|
|
1472
|
-
}
|
|
1473
|
-
if (t.height !== void 0 && r.userData.originRatioY === void 0 && Math.abs(u) > 0.1) {
|
|
1474
|
-
const k = i.getBoundingClientRect(), S = (Y = t.y) != null ? Y : 0, O = (ce = (ae = r.userData.baseTransform) == null ? void 0 : ae.y) != null ? ce : 0, C = r.userData.isFixed ? 0 : window.scrollY;
|
|
1475
|
-
let y = -(k.top + C - S + O - r.userData.baseDOM.y) / u;
|
|
1476
|
-
Math.abs(y) < 0.05 ? y = 0 : Math.abs(y - 1) < 0.05 ? y = 1 : Math.abs(y - 0.5) < 0.05 && (y = 0.5), r.userData.originRatioY = y;
|
|
1477
|
-
}
|
|
1478
|
-
const v = (J = r.userData.originRatioX) != null ? J : 0.5, f = (Q = r.userData.originRatioY) != null ? Q : 0.5, p = h * (0.5 - v), E = u * (0.5 - f), R = (ee = (Z = r.userData.baseTransform) == null ? void 0 : Z.x) != null ? ee : 0, L = (re = (te = r.userData.baseTransform) == null ? void 0 : te.y) != null ? re : 0, x = ((ie = t.x) != null ? ie : R) - R, w = ((m = t.y) != null ? m : L) - L;
|
|
1479
|
-
r.position.setX(n + p + x), r.position.setY(o - (E + w)), r.scale.set(l, d, 1), H.forceUpdateUniforms(r.material, {
|
|
1496
|
+
function it(s, e) {
|
|
1497
|
+
e.size !== 0 && e.forEach((t, r) => {
|
|
1498
|
+
var a, n;
|
|
1499
|
+
const i = s.get(r);
|
|
1500
|
+
!i || !i.userData.basePosition || Y.forceUpdateUniforms(i.material, {
|
|
1480
1501
|
backgroundColor: t.backgroundColor,
|
|
1481
1502
|
backgroundImage: t.backgroundImage,
|
|
1482
1503
|
opacity: t.opacity,
|
|
1483
|
-
borderRadius: (
|
|
1484
|
-
width
|
|
1485
|
-
height: d
|
|
1504
|
+
borderRadius: (n = t.borderRadius) != null ? n : (a = i.userData.baseStyles) == null ? void 0 : a.borderRadius
|
|
1505
|
+
// width and height are no longer updated here, they are updated in syncMeshesByDOM
|
|
1486
1506
|
});
|
|
1487
1507
|
});
|
|
1488
1508
|
}
|
|
1489
|
-
|
|
1490
|
-
|
|
1491
|
-
if (i.userData.isFixed && i.userData.initialScroll && i.userData.originalBasePosition) {
|
|
1492
|
-
const r = e - i.userData.initialScroll.x, n = t - i.userData.initialScroll.y;
|
|
1493
|
-
i.userData.basePosition.x = i.userData.originalBasePosition.x + r, i.userData.basePosition.y = i.userData.originalBasePosition.y - n, i.position.x = i.userData.basePosition.x, i.position.y = i.userData.basePosition.y;
|
|
1494
|
-
}
|
|
1495
|
-
});
|
|
1496
|
-
}
|
|
1497
|
-
class ot {
|
|
1498
|
-
constructor(e, t, i, r) {
|
|
1509
|
+
class st {
|
|
1510
|
+
constructor(e, t, r, i) {
|
|
1499
1511
|
g(this, "target");
|
|
1500
1512
|
g(this, "renderer");
|
|
1501
1513
|
g(this, "registry");
|
|
1502
1514
|
g(this, "isTravelEnabled", !1);
|
|
1503
1515
|
g(this, "tracker");
|
|
1504
|
-
this.target = e, this.renderer = t, this.registry =
|
|
1505
|
-
resizeDebounce:
|
|
1506
|
-
}), this.tracker.onLayoutChange.add((
|
|
1507
|
-
document.querySelector(`[${
|
|
1508
|
-
const
|
|
1516
|
+
this.target = e, this.renderer = t, this.registry = r, this.tracker = new We(e, {
|
|
1517
|
+
resizeDebounce: i.resizeDebounce
|
|
1518
|
+
}), this.tracker.onLayoutChange.add((a, n) => {
|
|
1519
|
+
document.querySelector(`[${k.NAME}~='${k.VALUES.TRAVELER}']`) !== null && !this.isTravelEnabled && (this.isTravelEnabled = !0, this.renderer.createRenderTarget());
|
|
1520
|
+
const l = De(
|
|
1509
1521
|
this.target,
|
|
1510
|
-
|
|
1522
|
+
a,
|
|
1511
1523
|
W,
|
|
1512
1524
|
1,
|
|
1513
1525
|
0,
|
|
1514
1526
|
this.renderer.qualityFactor
|
|
1515
1527
|
);
|
|
1516
|
-
|
|
1517
|
-
}), this.tracker.
|
|
1518
|
-
|
|
1519
|
-
}), this.tracker.onStyleChange.add((n) => {
|
|
1520
|
-
st(this.registry, n);
|
|
1528
|
+
l && this.renderer.syncScene(l, n);
|
|
1529
|
+
}), this.tracker.onStyleChange.add((a) => {
|
|
1530
|
+
it(this.registry, a);
|
|
1521
1531
|
}), this.tracker.onRender.add(() => {
|
|
1522
|
-
this.renderer.render();
|
|
1532
|
+
this.renderer.syncMeshesByDOM(), this.renderer.render();
|
|
1523
1533
|
});
|
|
1524
1534
|
}
|
|
1525
1535
|
start() {
|
|
1526
|
-
this.tracker.start()
|
|
1536
|
+
this.tracker.start();
|
|
1527
1537
|
}
|
|
1528
1538
|
stop() {
|
|
1529
1539
|
this.tracker.stop();
|
|
@@ -1554,30 +1564,30 @@ class nt {
|
|
|
1554
1564
|
this.store.delete(e);
|
|
1555
1565
|
}
|
|
1556
1566
|
}
|
|
1557
|
-
class
|
|
1567
|
+
class ct {
|
|
1558
1568
|
constructor(e, t) {
|
|
1559
1569
|
g(this, "renderer");
|
|
1560
1570
|
g(this, "syncer");
|
|
1561
1571
|
g(this, "target");
|
|
1562
1572
|
g(this, "registry");
|
|
1563
|
-
var
|
|
1573
|
+
var i, a, n;
|
|
1564
1574
|
if (this.target = e, this.registry = new nt(), !document.getElementById("mirage-engine-styles")) {
|
|
1565
|
-
const
|
|
1566
|
-
|
|
1567
|
-
[${
|
|
1575
|
+
const o = document.createElement("style");
|
|
1576
|
+
o.id = "mirage-engine-styles", o.textContent = `
|
|
1577
|
+
[${H.NAME}="${H.VALUES.HIDE}"] {
|
|
1568
1578
|
opacity: 0 !important;
|
|
1569
1579
|
}
|
|
1570
|
-
`, document.head.appendChild(
|
|
1580
|
+
`, document.head.appendChild(o);
|
|
1571
1581
|
}
|
|
1572
|
-
let
|
|
1573
|
-
if (t.mode === "duplicate" ?
|
|
1582
|
+
let r;
|
|
1583
|
+
if (t.mode === "duplicate" ? r = (a = (i = t.container) != null ? i : this.target.parentElement) != null ? a : void 0 : r = (n = this.target.parentElement) != null ? n : void 0, !r)
|
|
1574
1584
|
throw new Error("[Mirage] Cannot find a container (parent or option).");
|
|
1575
|
-
this.renderer = new
|
|
1585
|
+
this.renderer = new tt(
|
|
1576
1586
|
this.target,
|
|
1577
1587
|
t,
|
|
1578
|
-
|
|
1588
|
+
r,
|
|
1579
1589
|
this.registry
|
|
1580
|
-
), this.renderer.mount(), this.syncer = new
|
|
1590
|
+
), this.renderer.mount(), this.syncer = new st(this.target, this.renderer, this.registry, t);
|
|
1581
1591
|
}
|
|
1582
1592
|
start() {
|
|
1583
1593
|
this.syncer.start();
|
|
@@ -1609,37 +1619,37 @@ class ht {
|
|
|
1609
1619
|
ArrowUp: !1,
|
|
1610
1620
|
ArrowDown: !1
|
|
1611
1621
|
};
|
|
1612
|
-
window.addEventListener("keydown", (
|
|
1613
|
-
t[
|
|
1614
|
-
}), window.addEventListener("keyup", (
|
|
1615
|
-
t[
|
|
1622
|
+
window.addEventListener("keydown", (a) => {
|
|
1623
|
+
t[a.key] !== void 0 && (t[a.key] = !0);
|
|
1624
|
+
}), window.addEventListener("keyup", (a) => {
|
|
1625
|
+
t[a.key] !== void 0 && (t[a.key] = !1);
|
|
1616
1626
|
});
|
|
1617
|
-
const
|
|
1618
|
-
requestAnimationFrame(
|
|
1627
|
+
const r = 2, i = () => {
|
|
1628
|
+
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);
|
|
1619
1629
|
};
|
|
1620
|
-
|
|
1630
|
+
i();
|
|
1621
1631
|
}
|
|
1622
1632
|
}
|
|
1623
1633
|
export {
|
|
1624
|
-
|
|
1625
|
-
|
|
1626
|
-
|
|
1627
|
-
|
|
1634
|
+
Ce as ALLOWED_FILTERS,
|
|
1635
|
+
H as ATTR_DOM,
|
|
1636
|
+
_ as ATTR_FILTER,
|
|
1637
|
+
at as ATTR_SANDWICH,
|
|
1628
1638
|
V as ATTR_SELECT,
|
|
1629
|
-
|
|
1630
|
-
|
|
1631
|
-
|
|
1632
|
-
|
|
1639
|
+
Xe as ATTR_SHADER,
|
|
1640
|
+
k as ATTR_TRAVEL,
|
|
1641
|
+
le as DIRTY_CONTENT,
|
|
1642
|
+
te as DIRTY_NONE,
|
|
1633
1643
|
$ as DIRTY_RECT,
|
|
1634
|
-
|
|
1635
|
-
|
|
1636
|
-
|
|
1644
|
+
re as DIRTY_STRUCTURE,
|
|
1645
|
+
Q as DIRTY_STYLE,
|
|
1646
|
+
ze as DIRTY_ZINDEX,
|
|
1637
1647
|
lt as EXCLUDED,
|
|
1638
|
-
|
|
1648
|
+
ct as Engine,
|
|
1639
1649
|
j as SELECT_LAYER,
|
|
1640
|
-
|
|
1641
|
-
|
|
1642
|
-
|
|
1650
|
+
L as THREE_LAYERS,
|
|
1651
|
+
xe as TRAVEL_VALUES,
|
|
1652
|
+
We as Tracker,
|
|
1643
1653
|
W as USER_LAYER,
|
|
1644
|
-
|
|
1654
|
+
Ye as extractFromStyle
|
|
1645
1655
|
};
|