@mirage-engine/core 0.3.3 → 0.3.4
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 +6 -0
- package/dist/mirage-engine.js +711 -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 +81 -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,165 @@ 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
|
+
let c;
|
|
1123
|
+
if (l.nodeType === Node.TEXT_NODE) {
|
|
1124
|
+
const h = document.createRange();
|
|
1125
|
+
h.selectNode(l), c = h.getBoundingClientRect();
|
|
1126
|
+
} else
|
|
1127
|
+
c = l.getBoundingClientRect();
|
|
1128
|
+
const d = o.userData.domRect;
|
|
1129
|
+
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) {
|
|
1130
|
+
o.userData.domRect = { x: c.x, y: c.y, width: c.width, height: c.height };
|
|
1131
|
+
let h, u;
|
|
1132
|
+
if (this.isViewport)
|
|
1133
|
+
h = c.x - window.innerWidth / 2 + c.width / 2, u = -c.y + window.innerHeight / 2 - c.height / 2;
|
|
1134
|
+
else {
|
|
1135
|
+
const p = c.x - e, f = c.y - t;
|
|
1136
|
+
h = p - i / 2 + c.width / 2, u = -f + a / 2 - c.height / 2;
|
|
1137
|
+
}
|
|
1138
|
+
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, {
|
|
1139
|
+
width: c.width,
|
|
1140
|
+
height: c.height
|
|
1141
|
+
}), o.userData.nativeMesh) {
|
|
1142
|
+
const p = o.userData.nativeMesh;
|
|
1143
|
+
p.position.setX(h), p.position.setY(u), p.scale.set(c.width, c.height, 1);
|
|
1144
|
+
}
|
|
1145
|
+
}
|
|
1146
|
+
});
|
|
1113
1147
|
}
|
|
1114
1148
|
}
|
|
1115
|
-
function
|
|
1149
|
+
function rt(s) {
|
|
1116
1150
|
const e = s.textContent || "", t = [];
|
|
1117
|
-
let
|
|
1118
|
-
const
|
|
1119
|
-
for (let h = 0; h <
|
|
1120
|
-
const u =
|
|
1121
|
-
|
|
1122
|
-
const f =
|
|
1151
|
+
let r = "", i = null, a = -1;
|
|
1152
|
+
const n = (c, d) => {
|
|
1153
|
+
for (let h = 0; h < c.length; h++) {
|
|
1154
|
+
const u = c[h], p = document.createRange();
|
|
1155
|
+
p.setStart(s, d + h), p.setEnd(s, d + h + 1);
|
|
1156
|
+
const f = p.getBoundingClientRect();
|
|
1123
1157
|
if (f.width === 0 && f.height === 0) {
|
|
1124
|
-
|
|
1158
|
+
r += u;
|
|
1125
1159
|
continue;
|
|
1126
1160
|
}
|
|
1127
|
-
|
|
1128
|
-
text:
|
|
1161
|
+
a === -1 || Math.abs(f.top - a) > f.height / 2 ? (r && i && t.push({
|
|
1162
|
+
text: r,
|
|
1129
1163
|
rect: {
|
|
1130
|
-
left:
|
|
1131
|
-
top:
|
|
1132
|
-
width:
|
|
1133
|
-
height:
|
|
1164
|
+
left: i.left,
|
|
1165
|
+
top: i.top,
|
|
1166
|
+
width: i.right - i.left,
|
|
1167
|
+
height: i.bottom - i.top
|
|
1134
1168
|
}
|
|
1135
|
-
}),
|
|
1169
|
+
}), r = u, i = {
|
|
1136
1170
|
left: f.left,
|
|
1137
1171
|
top: f.top,
|
|
1138
1172
|
right: f.right,
|
|
1139
1173
|
bottom: f.bottom
|
|
1140
|
-
},
|
|
1141
|
-
|
|
1174
|
+
}, 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(
|
|
1175
|
+
i.bottom,
|
|
1142
1176
|
f.bottom
|
|
1143
1177
|
)));
|
|
1144
1178
|
}
|
|
1145
|
-
},
|
|
1146
|
-
let
|
|
1147
|
-
for (const
|
|
1179
|
+
}, o = e.match(/[^\s\-]+\-?|\-|\s+/g) || [];
|
|
1180
|
+
let l = 0;
|
|
1181
|
+
for (const c of o) {
|
|
1148
1182
|
const d = document.createRange();
|
|
1149
|
-
d.setStart(s,
|
|
1183
|
+
d.setStart(s, l), d.setEnd(s, l + c.length);
|
|
1150
1184
|
const h = d.getClientRects();
|
|
1151
1185
|
if (h.length > 1)
|
|
1152
|
-
|
|
1186
|
+
n(c, l);
|
|
1153
1187
|
else {
|
|
1154
1188
|
const u = h.length === 1 ? h[0] : d.getBoundingClientRect();
|
|
1155
1189
|
if (u.width === 0 && u.height === 0) {
|
|
1156
|
-
|
|
1190
|
+
r += c, l += c.length;
|
|
1157
1191
|
continue;
|
|
1158
1192
|
}
|
|
1159
|
-
|
|
1160
|
-
text:
|
|
1193
|
+
a === -1 || Math.abs(u.top - a) > u.height / 2 ? (r && i && t.push({
|
|
1194
|
+
text: r,
|
|
1161
1195
|
rect: {
|
|
1162
|
-
left:
|
|
1163
|
-
top:
|
|
1164
|
-
width:
|
|
1165
|
-
height:
|
|
1196
|
+
left: i.left,
|
|
1197
|
+
top: i.top,
|
|
1198
|
+
width: i.right - i.left,
|
|
1199
|
+
height: i.bottom - i.top
|
|
1166
1200
|
}
|
|
1167
|
-
}),
|
|
1201
|
+
}), r = c, i = {
|
|
1168
1202
|
left: u.left,
|
|
1169
1203
|
top: u.top,
|
|
1170
1204
|
right: u.right,
|
|
1171
1205
|
bottom: u.bottom
|
|
1172
|
-
},
|
|
1173
|
-
|
|
1206
|
+
}, 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(
|
|
1207
|
+
i.bottom,
|
|
1174
1208
|
u.bottom
|
|
1175
1209
|
)));
|
|
1176
1210
|
}
|
|
1177
|
-
|
|
1211
|
+
l += c.length;
|
|
1178
1212
|
}
|
|
1179
|
-
return
|
|
1180
|
-
text:
|
|
1213
|
+
return r && i && t.push({
|
|
1214
|
+
text: r,
|
|
1181
1215
|
rect: {
|
|
1182
|
-
left:
|
|
1183
|
-
top:
|
|
1184
|
-
width:
|
|
1185
|
-
height:
|
|
1216
|
+
left: i.left,
|
|
1217
|
+
top: i.top,
|
|
1218
|
+
width: i.right - i.left,
|
|
1219
|
+
height: i.bottom - i.top
|
|
1186
1220
|
}
|
|
1187
1221
|
}), t.filter(
|
|
1188
|
-
(
|
|
1222
|
+
(c) => c.text.trim().length > 0 && c.rect.width > 0 && c.rect.height > 0
|
|
1189
1223
|
);
|
|
1190
1224
|
}
|
|
1191
|
-
function
|
|
1225
|
+
function Se(s) {
|
|
1192
1226
|
const e = parseFloat(s.fontSize);
|
|
1193
1227
|
let t = parseFloat(s.lineHeight);
|
|
1194
1228
|
isNaN(t) && (t = e * 1.2);
|
|
1195
|
-
let
|
|
1196
|
-
return isNaN(
|
|
1229
|
+
let r = parseFloat(s.letterSpacing);
|
|
1230
|
+
return isNaN(r) && (r = 0), {
|
|
1197
1231
|
font: `${s.fontStyle} ${s.fontWeight} ${s.fontSize} ${s.fontFamily}`,
|
|
1198
1232
|
fontSize: s.fontSize,
|
|
1199
1233
|
color: s.color,
|
|
@@ -1201,329 +1235,303 @@ function Le(s) {
|
|
|
1201
1235
|
textBaseline: "alphabetic",
|
|
1202
1236
|
direction: s.direction || "inherit",
|
|
1203
1237
|
lineHeight: t,
|
|
1204
|
-
letterSpacing:
|
|
1238
|
+
letterSpacing: r
|
|
1205
1239
|
};
|
|
1206
1240
|
}
|
|
1207
|
-
function
|
|
1208
|
-
var
|
|
1241
|
+
function De(s, e = $ | Q | ze | le | re, t, r = 1, i = 0, a = 2, n, o) {
|
|
1242
|
+
var de, ue, fe, ge, pe, me;
|
|
1209
1243
|
if (s.nodeType === Node.TEXT_NODE) {
|
|
1210
|
-
const
|
|
1211
|
-
if (!
|
|
1244
|
+
const v = s;
|
|
1245
|
+
if (!v.textContent || !v.textContent.trim())
|
|
1212
1246
|
return null;
|
|
1213
|
-
const
|
|
1214
|
-
if (
|
|
1247
|
+
const C = v.textContent.replace(/\s+/g, " ");
|
|
1248
|
+
if (C.length === 0)
|
|
1215
1249
|
return null;
|
|
1216
|
-
const
|
|
1217
|
-
if (
|
|
1250
|
+
const A = rt(v);
|
|
1251
|
+
if (A.length === 0)
|
|
1218
1252
|
return null;
|
|
1219
|
-
const
|
|
1253
|
+
const B = v.parentElement, S = B ? window.getComputedStyle(B) : null;
|
|
1220
1254
|
if (!S)
|
|
1221
1255
|
return null;
|
|
1222
|
-
const
|
|
1256
|
+
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
1257
|
return {
|
|
1224
1258
|
id: Math.random().toString(36).substring(2, 9),
|
|
1225
1259
|
type: "TEXT",
|
|
1226
|
-
element:
|
|
1260
|
+
element: v,
|
|
1227
1261
|
rect: {
|
|
1228
|
-
x:
|
|
1229
|
-
y:
|
|
1230
|
-
width:
|
|
1231
|
-
height:
|
|
1262
|
+
x: X + window.scrollX,
|
|
1263
|
+
y: x + window.scrollY,
|
|
1264
|
+
width: z - X,
|
|
1265
|
+
height: G - x
|
|
1232
1266
|
},
|
|
1233
1267
|
styles: {
|
|
1234
1268
|
backgroundColor: "transparent",
|
|
1235
1269
|
backgroundImage: "",
|
|
1236
|
-
opacity:
|
|
1237
|
-
zIndex: (isNaN(parseInt(S.zIndex)) ? 0 : parseInt(S.zIndex)) +
|
|
1270
|
+
opacity: B && B.dataset[H.KEY] === H.VALUES.HIDE ? 1 : parseFloat(S.opacity),
|
|
1271
|
+
zIndex: (isNaN(parseInt(S.zIndex)) ? 0 : parseInt(S.zIndex)) + i,
|
|
1238
1272
|
borderRadius: "0px",
|
|
1239
1273
|
borderColor: "transparent",
|
|
1240
1274
|
borderWidth: "0px",
|
|
1241
1275
|
isTraveler: !1
|
|
1242
1276
|
},
|
|
1243
|
-
textContent:
|
|
1244
|
-
textLines:
|
|
1245
|
-
text:
|
|
1277
|
+
textContent: C,
|
|
1278
|
+
textLines: A.map((T) => ({
|
|
1279
|
+
text: T.text.trim(),
|
|
1246
1280
|
rect: {
|
|
1247
|
-
x:
|
|
1248
|
-
y:
|
|
1249
|
-
width:
|
|
1250
|
-
height:
|
|
1281
|
+
x: T.rect.left + window.scrollX,
|
|
1282
|
+
y: T.rect.top + window.scrollY,
|
|
1283
|
+
width: T.rect.width,
|
|
1284
|
+
height: T.rect.height
|
|
1251
1285
|
}
|
|
1252
1286
|
})),
|
|
1253
|
-
textStyles:
|
|
1287
|
+
textStyles: Se(S),
|
|
1254
1288
|
dirtyMask: e,
|
|
1255
1289
|
visibility: t,
|
|
1256
1290
|
isTraveler: !1,
|
|
1257
|
-
captureLayer:
|
|
1291
|
+
captureLayer: r,
|
|
1258
1292
|
isFixed: S.position === "fixed",
|
|
1259
|
-
nativeLayer:
|
|
1260
|
-
nativeStyles:
|
|
1293
|
+
nativeLayer: n,
|
|
1294
|
+
nativeStyles: o ? q(q({
|
|
1261
1295
|
backgroundColor: "transparent",
|
|
1262
1296
|
backgroundImage: "",
|
|
1263
|
-
opacity:
|
|
1264
|
-
zIndex: (isNaN(parseInt(S.zIndex)) ? 0 : parseInt(S.zIndex)) +
|
|
1297
|
+
opacity: B && B.dataset[H.KEY] === H.VALUES.HIDE ? 1 : parseFloat(S.opacity),
|
|
1298
|
+
zIndex: (isNaN(parseInt(S.zIndex)) ? 0 : parseInt(S.zIndex)) + i,
|
|
1265
1299
|
borderRadius: "0px",
|
|
1266
1300
|
borderColor: "transparent",
|
|
1267
1301
|
borderWidth: "0px",
|
|
1268
1302
|
isTraveler: !1
|
|
1269
|
-
},
|
|
1270
|
-
nativeRect:
|
|
1271
|
-
x:
|
|
1272
|
-
y:
|
|
1273
|
-
width:
|
|
1274
|
-
height:
|
|
1303
|
+
}, Se(S)), o) : void 0,
|
|
1304
|
+
nativeRect: o ? {
|
|
1305
|
+
x: X + window.scrollX,
|
|
1306
|
+
y: x + window.scrollY,
|
|
1307
|
+
width: z - X,
|
|
1308
|
+
height: G - x
|
|
1275
1309
|
} : void 0,
|
|
1276
1310
|
children: []
|
|
1277
1311
|
};
|
|
1278
1312
|
}
|
|
1279
1313
|
if (s.nodeType !== Node.ELEMENT_NODE)
|
|
1280
1314
|
return null;
|
|
1281
|
-
const
|
|
1315
|
+
const l = s, c = l.dataset[_.KEY];
|
|
1282
1316
|
let d = t, h = t;
|
|
1283
|
-
if (
|
|
1284
|
-
const
|
|
1285
|
-
for (const
|
|
1286
|
-
if (!
|
|
1317
|
+
if (c) {
|
|
1318
|
+
const v = new Set(c.split(/\s+/));
|
|
1319
|
+
for (const C of v)
|
|
1320
|
+
if (!Ce.includes(C))
|
|
1287
1321
|
throw new Error(
|
|
1288
|
-
`[MirageEngine] Invalid filter token: '${
|
|
1322
|
+
`[MirageEngine] Invalid filter token: '${C}'. Expected one of: 'include-tree', 'exclude-tree', 'include-self', 'exclude-self', 'end'.`
|
|
1289
1323
|
);
|
|
1290
|
-
if (
|
|
1324
|
+
if (v.has(_.VALUES.END))
|
|
1291
1325
|
return null;
|
|
1292
|
-
if (
|
|
1326
|
+
if (v.has(_.VALUES.INCLUDE_TREE) && v.has(_.VALUES.EXCLUDE_TREE))
|
|
1293
1327
|
throw new Error(
|
|
1294
1328
|
"[MirageEngine] Conflicting filters: 'include-tree' and 'exclude-tree' cannot be used together on the same element."
|
|
1295
1329
|
);
|
|
1296
|
-
if (
|
|
1330
|
+
if (v.has(_.VALUES.INCLUDE_SELF) && v.has(_.VALUES.EXCLUDE_SELF))
|
|
1297
1331
|
throw new Error(
|
|
1298
1332
|
"[MirageEngine] Conflicting filters: 'include-self' and 'exclude-self' cannot be used together on the same element."
|
|
1299
1333
|
);
|
|
1300
|
-
|
|
1334
|
+
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
1335
|
}
|
|
1302
|
-
const u =
|
|
1336
|
+
const u = l.dataset[V.KEY];
|
|
1303
1337
|
if (u) {
|
|
1304
|
-
const
|
|
1305
|
-
for (const
|
|
1306
|
-
if (!
|
|
1338
|
+
const v = new Set(u.split(/\s+/));
|
|
1339
|
+
for (const C of v)
|
|
1340
|
+
if (!Ce.includes(C))
|
|
1307
1341
|
throw new Error(
|
|
1308
|
-
`[MirageEngine] Invalid select token: '${
|
|
1342
|
+
`[MirageEngine] Invalid select token: '${C}'. Expected one of: 'include-tree', 'exclude-tree', 'include-self', 'exclude-self', 'end'.`
|
|
1309
1343
|
);
|
|
1310
|
-
if (
|
|
1344
|
+
if (v.has(V.VALUES.END))
|
|
1311
1345
|
return null;
|
|
1312
|
-
if (
|
|
1346
|
+
if (v.has(V.VALUES.INCLUDE_TREE) && v.has(V.VALUES.EXCLUDE_TREE))
|
|
1313
1347
|
throw new Error(
|
|
1314
1348
|
"[MirageEngine] Conflicting selects: 'include-tree' and 'exclude-tree' cannot be used together on the same element."
|
|
1315
1349
|
);
|
|
1316
|
-
if (
|
|
1350
|
+
if (v.has(V.VALUES.INCLUDE_SELF) && v.has(V.VALUES.EXCLUDE_SELF))
|
|
1317
1351
|
throw new Error(
|
|
1318
1352
|
"[MirageEngine] Conflicting selects: 'include-self' and 'exclude-self' cannot be used together on the same element."
|
|
1319
1353
|
);
|
|
1320
|
-
|
|
1321
|
-
}
|
|
1322
|
-
const
|
|
1323
|
-
let f = !1,
|
|
1324
|
-
if (
|
|
1325
|
-
let
|
|
1326
|
-
const
|
|
1327
|
-
let
|
|
1328
|
-
if (
|
|
1329
|
-
|
|
1330
|
-
const
|
|
1354
|
+
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);
|
|
1355
|
+
}
|
|
1356
|
+
const p = l.dataset[k.KEY];
|
|
1357
|
+
let f = !1, m = o ? q({}, o) : {}, E = n;
|
|
1358
|
+
if (p) {
|
|
1359
|
+
let v = 1;
|
|
1360
|
+
const C = p.indexOf("{"), A = p.lastIndexOf("}");
|
|
1361
|
+
let B = p;
|
|
1362
|
+
if (C !== -1 && A !== -1 && A > C) {
|
|
1363
|
+
B = p.substring(0, C).trim();
|
|
1364
|
+
const x = p.substring(C, A + 1);
|
|
1331
1365
|
try {
|
|
1332
|
-
|
|
1333
|
-
} catch (
|
|
1366
|
+
m = new Function("return " + x)();
|
|
1367
|
+
} catch (z) {
|
|
1334
1368
|
console.warn(
|
|
1335
|
-
`[MirageEngine] Failed to parse travel styles JSON: ${
|
|
1369
|
+
`[MirageEngine] Failed to parse travel styles JSON: ${x}`
|
|
1336
1370
|
);
|
|
1337
1371
|
}
|
|
1338
1372
|
}
|
|
1339
|
-
const S =
|
|
1340
|
-
let
|
|
1341
|
-
if (S.includes(
|
|
1342
|
-
f = !0,
|
|
1343
|
-
const
|
|
1344
|
-
|
|
1345
|
-
} else if (S.includes(
|
|
1373
|
+
const S = B.split(/\s+/);
|
|
1374
|
+
let X = !1;
|
|
1375
|
+
if (S.includes(k.VALUES.TRAVELER)) {
|
|
1376
|
+
f = !0, X = !0;
|
|
1377
|
+
const x = S.find((z) => !isNaN(parseInt(z, 10)));
|
|
1378
|
+
x && (v = parseInt(x, 10));
|
|
1379
|
+
} else if (S.includes(k.VALUES.NATIVE)) {
|
|
1346
1380
|
f = !1;
|
|
1347
|
-
const
|
|
1348
|
-
|
|
1381
|
+
const x = S.find((z) => !isNaN(parseInt(z, 10)));
|
|
1382
|
+
x && (E = parseInt(x, 10));
|
|
1349
1383
|
}
|
|
1350
|
-
if (
|
|
1351
|
-
const
|
|
1352
|
-
if (
|
|
1384
|
+
if (X) {
|
|
1385
|
+
const x = v + 1;
|
|
1386
|
+
if (x < r)
|
|
1353
1387
|
throw new Error(
|
|
1354
|
-
`[MirageEngine] Traveler layer (${
|
|
1388
|
+
`[MirageEngine] Traveler layer (${v}) cannot be smaller than inherited capture layer (${r - 1}).`
|
|
1355
1389
|
);
|
|
1356
|
-
|
|
1390
|
+
r = Math.min(x, k.MAX_LAYERS + 1);
|
|
1357
1391
|
}
|
|
1358
1392
|
}
|
|
1359
|
-
const R =
|
|
1360
|
-
let
|
|
1361
|
-
R && (
|
|
1362
|
-
const
|
|
1363
|
-
if (
|
|
1393
|
+
const R = l.dataset[Xe.KEY];
|
|
1394
|
+
let M;
|
|
1395
|
+
R && (M = JSON.parse(R));
|
|
1396
|
+
const w = l.getBoundingClientRect(), b = window.getComputedStyle(l);
|
|
1397
|
+
if (w.width === 0 || w.height === 0 || b.display === "none")
|
|
1364
1398
|
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
|
-
|
|
1399
|
+
let U = l.getAttribute("data-mid");
|
|
1400
|
+
U || (U = Math.random().toString(36).substring(2, 11), l.setAttribute("data-mid", U));
|
|
1401
|
+
const D = parseInt(b.zIndex), O = (isNaN(D) ? 0 : D) + i;
|
|
1402
|
+
let N;
|
|
1403
|
+
if (l.tagName === "IMG")
|
|
1404
|
+
N = l.src;
|
|
1405
|
+
else if (l.tagName.toLowerCase() === "svg") {
|
|
1406
|
+
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) => {
|
|
1407
|
+
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;
|
|
1408
|
+
ie && ie !== "none" && (J.style.fill = ie);
|
|
1409
|
+
const se = B || (Ue ? C : void 0) || F.stroke;
|
|
1410
|
+
se && se !== "none" && (J.style.stroke = se), F.strokeWidth && F.strokeWidth !== "0px" && (J.style.strokeWidth = F.strokeWidth);
|
|
1411
|
+
const ye = C || F.color;
|
|
1412
|
+
ye && (J.style.color = ye);
|
|
1413
|
+
const ne = S || F.opacity;
|
|
1414
|
+
ne && ne !== "1" && (J.style.opacity = ne);
|
|
1415
|
+
for (let ee = 0; ee < T.children.length; ee++)
|
|
1416
|
+
X(T.children[ee], ve.children[ee]);
|
|
1383
1417
|
};
|
|
1384
|
-
|
|
1385
|
-
const
|
|
1386
|
-
|
|
1387
|
-
let
|
|
1388
|
-
|
|
1418
|
+
X(l, v);
|
|
1419
|
+
const x = l.getBoundingClientRect(), z = window.devicePixelRatio * a;
|
|
1420
|
+
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());
|
|
1421
|
+
let G = new XMLSerializer().serializeToString(v);
|
|
1422
|
+
G.includes("xmlns=") || (G = G.replace(
|
|
1389
1423
|
"<svg",
|
|
1390
1424
|
'<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:
|
|
1425
|
+
)), N = `data:image/svg+xml;utf8,${encodeURIComponent(G)}`;
|
|
1426
|
+
} else if (b.backgroundImage && b.backgroundImage !== "none") {
|
|
1427
|
+
const v = b.backgroundImage.match(/url\(['"]?(.*?)['"]?\)/);
|
|
1428
|
+
v && (N = v[1]);
|
|
1429
|
+
}
|
|
1430
|
+
const I = {
|
|
1431
|
+
backgroundColor: b.backgroundColor,
|
|
1432
|
+
backgroundImage: b.backgroundImage,
|
|
1433
|
+
opacity: l.dataset[H.KEY] === H.VALUES.HIDE ? 1 : parseFloat(b.opacity),
|
|
1434
|
+
zIndex: O,
|
|
1435
|
+
borderRadius: b.borderRadius,
|
|
1436
|
+
borderColor: b.borderColor,
|
|
1437
|
+
borderWidth: b.borderWidth,
|
|
1438
|
+
imageSrc: N,
|
|
1405
1439
|
isTraveler: f
|
|
1406
|
-
},
|
|
1407
|
-
let
|
|
1408
|
-
const
|
|
1409
|
-
return
|
|
1410
|
-
const
|
|
1411
|
-
|
|
1440
|
+
}, P = I;
|
|
1441
|
+
let Ae, Ie;
|
|
1442
|
+
const he = [];
|
|
1443
|
+
return l.tagName.toLowerCase() !== "svg" && Array.from(l.childNodes).forEach((v) => {
|
|
1444
|
+
const C = v.nodeType === Node.TEXT_NODE ? h : d, A = De(
|
|
1445
|
+
v,
|
|
1412
1446
|
e,
|
|
1413
|
-
|
|
1414
|
-
|
|
1415
|
-
|
|
1416
|
-
|
|
1447
|
+
C,
|
|
1448
|
+
r,
|
|
1449
|
+
O,
|
|
1450
|
+
a,
|
|
1417
1451
|
E,
|
|
1418
|
-
|
|
1452
|
+
v.nodeType === Node.TEXT_NODE && Object.keys(m).length > 0 ? m : void 0
|
|
1419
1453
|
);
|
|
1420
|
-
|
|
1454
|
+
A && he.push(A);
|
|
1421
1455
|
}), {
|
|
1422
1456
|
id: U,
|
|
1423
1457
|
type: "BOX",
|
|
1424
|
-
element:
|
|
1458
|
+
element: l,
|
|
1425
1459
|
rect: {
|
|
1426
|
-
x:
|
|
1427
|
-
y:
|
|
1428
|
-
width:
|
|
1429
|
-
height:
|
|
1460
|
+
x: w.left + window.scrollX,
|
|
1461
|
+
y: w.top + window.scrollY,
|
|
1462
|
+
width: w.width,
|
|
1463
|
+
height: w.height
|
|
1430
1464
|
},
|
|
1431
|
-
styles:
|
|
1432
|
-
textContent:
|
|
1433
|
-
textStyles:
|
|
1465
|
+
styles: P,
|
|
1466
|
+
textContent: Ae,
|
|
1467
|
+
textStyles: Ie,
|
|
1434
1468
|
dirtyMask: e,
|
|
1435
1469
|
visibility: h,
|
|
1436
1470
|
isTraveler: f,
|
|
1437
|
-
captureLayer:
|
|
1471
|
+
captureLayer: r,
|
|
1438
1472
|
nativeLayer: E,
|
|
1439
|
-
nativeStyles: E !== void 0 ?
|
|
1440
|
-
backgroundColor: (
|
|
1441
|
-
backgroundImage: (
|
|
1442
|
-
opacity: (
|
|
1443
|
-
zIndex:
|
|
1444
|
-
borderRadius: (
|
|
1445
|
-
borderColor: (
|
|
1446
|
-
borderWidth: (
|
|
1447
|
-
isTraveler:
|
|
1473
|
+
nativeStyles: E !== void 0 ? we(q({}, I), {
|
|
1474
|
+
backgroundColor: (de = m.backgroundColor) != null ? de : I.backgroundColor,
|
|
1475
|
+
backgroundImage: (ue = m.backgroundImage) != null ? ue : I.backgroundImage,
|
|
1476
|
+
opacity: (fe = m.opacity) != null ? fe : I.opacity,
|
|
1477
|
+
zIndex: m.zIndex !== void 0 ? m.zIndex + O : I.zIndex,
|
|
1478
|
+
borderRadius: (ge = m.borderRadius) != null ? ge : I.borderRadius,
|
|
1479
|
+
borderColor: (pe = m.borderColor) != null ? pe : I.borderColor,
|
|
1480
|
+
borderWidth: (me = m.borderWidth) != null ? me : I.borderWidth,
|
|
1481
|
+
isTraveler: I.isTraveler
|
|
1448
1482
|
}) : void 0,
|
|
1449
1483
|
nativeRect: E !== void 0 ? {
|
|
1450
|
-
x:
|
|
1451
|
-
y:
|
|
1452
|
-
width:
|
|
1453
|
-
height:
|
|
1484
|
+
x: m.x !== void 0 ? parseFloat(m.x) : w.left + window.scrollX,
|
|
1485
|
+
y: m.y !== void 0 ? parseFloat(m.y) : w.top + window.scrollY,
|
|
1486
|
+
width: m.width !== void 0 ? parseFloat(m.width) : w.width,
|
|
1487
|
+
height: m.height !== void 0 ? parseFloat(m.height) : w.height
|
|
1454
1488
|
} : void 0,
|
|
1455
|
-
isFixed:
|
|
1456
|
-
children:
|
|
1457
|
-
shaderHooks:
|
|
1489
|
+
isFixed: b.position === "fixed",
|
|
1490
|
+
children: he,
|
|
1491
|
+
shaderHooks: M
|
|
1458
1492
|
};
|
|
1459
1493
|
}
|
|
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, {
|
|
1494
|
+
function it(s, e) {
|
|
1495
|
+
e.size !== 0 && e.forEach((t, r) => {
|
|
1496
|
+
var a, n;
|
|
1497
|
+
const i = s.get(r);
|
|
1498
|
+
!i || !i.userData.basePosition || Y.forceUpdateUniforms(i.material, {
|
|
1480
1499
|
backgroundColor: t.backgroundColor,
|
|
1481
1500
|
backgroundImage: t.backgroundImage,
|
|
1482
1501
|
opacity: t.opacity,
|
|
1483
|
-
borderRadius: (
|
|
1484
|
-
width
|
|
1485
|
-
height: d
|
|
1502
|
+
borderRadius: (n = t.borderRadius) != null ? n : (a = i.userData.baseStyles) == null ? void 0 : a.borderRadius
|
|
1503
|
+
// width and height are no longer updated here, they are updated in syncMeshesByDOM
|
|
1486
1504
|
});
|
|
1487
1505
|
});
|
|
1488
1506
|
}
|
|
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) {
|
|
1507
|
+
class st {
|
|
1508
|
+
constructor(e, t, r, i) {
|
|
1499
1509
|
g(this, "target");
|
|
1500
1510
|
g(this, "renderer");
|
|
1501
1511
|
g(this, "registry");
|
|
1502
1512
|
g(this, "isTravelEnabled", !1);
|
|
1503
1513
|
g(this, "tracker");
|
|
1504
|
-
this.target = e, this.renderer = t, this.registry =
|
|
1505
|
-
resizeDebounce:
|
|
1506
|
-
}), this.tracker.onLayoutChange.add((
|
|
1507
|
-
document.querySelector(`[${
|
|
1508
|
-
const
|
|
1514
|
+
this.target = e, this.renderer = t, this.registry = r, this.tracker = new We(e, {
|
|
1515
|
+
resizeDebounce: i.resizeDebounce
|
|
1516
|
+
}), this.tracker.onLayoutChange.add((a, n) => {
|
|
1517
|
+
document.querySelector(`[${k.NAME}~='${k.VALUES.TRAVELER}']`) !== null && !this.isTravelEnabled && (this.isTravelEnabled = !0, this.renderer.createRenderTarget());
|
|
1518
|
+
const l = De(
|
|
1509
1519
|
this.target,
|
|
1510
|
-
|
|
1520
|
+
a,
|
|
1511
1521
|
W,
|
|
1512
1522
|
1,
|
|
1513
1523
|
0,
|
|
1514
1524
|
this.renderer.qualityFactor
|
|
1515
1525
|
);
|
|
1516
|
-
|
|
1517
|
-
}), this.tracker.
|
|
1518
|
-
|
|
1519
|
-
}), this.tracker.onStyleChange.add((n) => {
|
|
1520
|
-
st(this.registry, n);
|
|
1526
|
+
l && this.renderer.syncScene(l, n);
|
|
1527
|
+
}), this.tracker.onStyleChange.add((a) => {
|
|
1528
|
+
it(this.registry, a);
|
|
1521
1529
|
}), this.tracker.onRender.add(() => {
|
|
1522
|
-
this.renderer.render();
|
|
1530
|
+
this.renderer.syncMeshesByDOM(), this.renderer.render();
|
|
1523
1531
|
});
|
|
1524
1532
|
}
|
|
1525
1533
|
start() {
|
|
1526
|
-
this.tracker.start()
|
|
1534
|
+
this.tracker.start();
|
|
1527
1535
|
}
|
|
1528
1536
|
stop() {
|
|
1529
1537
|
this.tracker.stop();
|
|
@@ -1554,30 +1562,30 @@ class nt {
|
|
|
1554
1562
|
this.store.delete(e);
|
|
1555
1563
|
}
|
|
1556
1564
|
}
|
|
1557
|
-
class
|
|
1565
|
+
class ct {
|
|
1558
1566
|
constructor(e, t) {
|
|
1559
1567
|
g(this, "renderer");
|
|
1560
1568
|
g(this, "syncer");
|
|
1561
1569
|
g(this, "target");
|
|
1562
1570
|
g(this, "registry");
|
|
1563
|
-
var
|
|
1571
|
+
var i, a, n;
|
|
1564
1572
|
if (this.target = e, this.registry = new nt(), !document.getElementById("mirage-engine-styles")) {
|
|
1565
|
-
const
|
|
1566
|
-
|
|
1567
|
-
[${
|
|
1573
|
+
const o = document.createElement("style");
|
|
1574
|
+
o.id = "mirage-engine-styles", o.textContent = `
|
|
1575
|
+
[${H.NAME}="${H.VALUES.HIDE}"] {
|
|
1568
1576
|
opacity: 0 !important;
|
|
1569
1577
|
}
|
|
1570
|
-
`, document.head.appendChild(
|
|
1578
|
+
`, document.head.appendChild(o);
|
|
1571
1579
|
}
|
|
1572
|
-
let
|
|
1573
|
-
if (t.mode === "duplicate" ?
|
|
1580
|
+
let r;
|
|
1581
|
+
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
1582
|
throw new Error("[Mirage] Cannot find a container (parent or option).");
|
|
1575
|
-
this.renderer = new
|
|
1583
|
+
this.renderer = new tt(
|
|
1576
1584
|
this.target,
|
|
1577
1585
|
t,
|
|
1578
|
-
|
|
1586
|
+
r,
|
|
1579
1587
|
this.registry
|
|
1580
|
-
), this.renderer.mount(), this.syncer = new
|
|
1588
|
+
), this.renderer.mount(), this.syncer = new st(this.target, this.renderer, this.registry, t);
|
|
1581
1589
|
}
|
|
1582
1590
|
start() {
|
|
1583
1591
|
this.syncer.start();
|
|
@@ -1609,37 +1617,37 @@ class ht {
|
|
|
1609
1617
|
ArrowUp: !1,
|
|
1610
1618
|
ArrowDown: !1
|
|
1611
1619
|
};
|
|
1612
|
-
window.addEventListener("keydown", (
|
|
1613
|
-
t[
|
|
1614
|
-
}), window.addEventListener("keyup", (
|
|
1615
|
-
t[
|
|
1620
|
+
window.addEventListener("keydown", (a) => {
|
|
1621
|
+
t[a.key] !== void 0 && (t[a.key] = !0);
|
|
1622
|
+
}), window.addEventListener("keyup", (a) => {
|
|
1623
|
+
t[a.key] !== void 0 && (t[a.key] = !1);
|
|
1616
1624
|
});
|
|
1617
|
-
const
|
|
1618
|
-
requestAnimationFrame(
|
|
1625
|
+
const r = 2, i = () => {
|
|
1626
|
+
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
1627
|
};
|
|
1620
|
-
|
|
1628
|
+
i();
|
|
1621
1629
|
}
|
|
1622
1630
|
}
|
|
1623
1631
|
export {
|
|
1624
|
-
|
|
1625
|
-
|
|
1626
|
-
|
|
1627
|
-
|
|
1632
|
+
Ce as ALLOWED_FILTERS,
|
|
1633
|
+
H as ATTR_DOM,
|
|
1634
|
+
_ as ATTR_FILTER,
|
|
1635
|
+
at as ATTR_SANDWICH,
|
|
1628
1636
|
V as ATTR_SELECT,
|
|
1629
|
-
|
|
1630
|
-
|
|
1631
|
-
|
|
1632
|
-
|
|
1637
|
+
Xe as ATTR_SHADER,
|
|
1638
|
+
k as ATTR_TRAVEL,
|
|
1639
|
+
le as DIRTY_CONTENT,
|
|
1640
|
+
te as DIRTY_NONE,
|
|
1633
1641
|
$ as DIRTY_RECT,
|
|
1634
|
-
|
|
1635
|
-
|
|
1636
|
-
|
|
1642
|
+
re as DIRTY_STRUCTURE,
|
|
1643
|
+
Q as DIRTY_STYLE,
|
|
1644
|
+
ze as DIRTY_ZINDEX,
|
|
1637
1645
|
lt as EXCLUDED,
|
|
1638
|
-
|
|
1646
|
+
ct as Engine,
|
|
1639
1647
|
j as SELECT_LAYER,
|
|
1640
|
-
|
|
1641
|
-
|
|
1642
|
-
|
|
1648
|
+
L as THREE_LAYERS,
|
|
1649
|
+
xe as TRAVEL_VALUES,
|
|
1650
|
+
We as Tracker,
|
|
1643
1651
|
W as USER_LAYER,
|
|
1644
|
-
|
|
1652
|
+
Ye as extractFromStyle
|
|
1645
1653
|
};
|