@tresjs/core 4.2.6 → 4.2.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/tres.js +172 -168
- package/dist/tres.umd.cjs +2 -2
- package/package.json +5 -1
package/dist/tres.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* name: @tresjs/core
|
|
3
|
-
* version: v4.2.
|
|
3
|
+
* version: v4.2.7
|
|
4
4
|
* (c) 2024
|
|
5
5
|
* description: Declarative ThreeJS using Vue Components
|
|
6
6
|
* author: Alvaro Saburido <hola@alvarosaburido.dev> (https://github.com/alvarosabu/)
|
|
@@ -12,13 +12,16 @@ import { ref as H, computed as V, watchEffect as Te, onUnmounted as K, shallowRe
|
|
|
12
12
|
import * as et from "three";
|
|
13
13
|
import { PerspectiveCamera as we, Camera as Dt, Clock as tt, Vector3 as Se, Color as Z, Scene as nt, MathUtils as rt, MeshBasicMaterial as ot, DoubleSide as jt, REVISION as Bt, SRGBColorSpace as It, ACESFilmicToneMapping as st, PCFSoftShadowMap as Ht, NoToneMapping as $t, WebGLRenderer as he, TextureLoader as Ut, Vector2 as ge, Raycaster as Ft, BufferAttribute as Wt, Object3D as Nt, Line as zt, BufferGeometry as $e, Float32BufferAttribute as Ue, LineBasicMaterial as Gt, Mesh as Vt, BackSide as Yt, DirectionalLightHelper as qt, PointLightHelper as Jt, SpotLightHelper as Kt, HemisphereLightHelper as Qt, ArrowHelper as Xt } from "three";
|
|
14
14
|
import { createEventHook as j, useRafFn as it, toValue as k, unrefElement as Zt, useDevicePixelRatio as en, usePointer as tn, useElementBounding as nn, useWindowSize as rn, useElementSize as on, refDebounced as Fe, tryOnScopeDispose as sn, useFps as an, useMemory as ln } from "@vueuse/core";
|
|
15
|
-
const cn = "@tresjs/core", un = "module", fn = "4.2.
|
|
15
|
+
const cn = "@tresjs/core", un = "module", fn = "4.2.7", dn = "pnpm@9.1.4", pn = "Declarative ThreeJS using Vue Components", mn = "Alvaro Saburido <hola@alvarosaburido.dev> (https://github.com/alvarosabu/)", hn = "MIT", gn = {
|
|
16
|
+
type: "git",
|
|
17
|
+
url: "git+https://github.com/Tresjs/tres.git"
|
|
18
|
+
}, vn = [
|
|
16
19
|
"vue",
|
|
17
20
|
"3d",
|
|
18
21
|
"threejs",
|
|
19
22
|
"three",
|
|
20
23
|
"threejs-vue"
|
|
21
|
-
],
|
|
24
|
+
], yn = !1, _n = {
|
|
22
25
|
".": {
|
|
23
26
|
types: "./dist/index.d.ts",
|
|
24
27
|
import: "./dist/tres.js",
|
|
@@ -37,12 +40,12 @@ const cn = "@tresjs/core", un = "module", fn = "4.2.6", dn = "pnpm@9.1.4", pn =
|
|
|
37
40
|
types: "./dist/src/utils/index.d.ts"
|
|
38
41
|
},
|
|
39
42
|
"./*": "./*"
|
|
40
|
-
},
|
|
43
|
+
}, wn = "./dist/tres.js", bn = "./dist/tres.js", Pn = "./dist/index.d.ts", Cn = [
|
|
41
44
|
"*.d.ts",
|
|
42
45
|
"dist"
|
|
43
|
-
],
|
|
46
|
+
], Mn = {
|
|
44
47
|
access: "public"
|
|
45
|
-
},
|
|
48
|
+
}, En = {
|
|
46
49
|
dev: "cd playground && npm run dev",
|
|
47
50
|
build: "vite build",
|
|
48
51
|
playground: "cd playground && npm run dev",
|
|
@@ -59,14 +62,14 @@ const cn = "@tresjs/core", un = "module", fn = "4.2.6", dn = "pnpm@9.1.4", pn =
|
|
|
59
62
|
"docs:preview": "vitepress preview docs",
|
|
60
63
|
"docs:contributors": "esno scripts/update-contributors.ts",
|
|
61
64
|
prepare: "node .husky/install.mjs"
|
|
62
|
-
},
|
|
65
|
+
}, Tn = {
|
|
63
66
|
three: ">=0.133",
|
|
64
67
|
vue: ">=3.4"
|
|
65
|
-
},
|
|
68
|
+
}, Sn = {
|
|
66
69
|
"@alvarosabu/utils": "^3.2.0",
|
|
67
70
|
"@vue/devtools-api": "^6.6.3",
|
|
68
71
|
"@vueuse/core": "^10.11.0"
|
|
69
|
-
},
|
|
72
|
+
}, An = {
|
|
70
73
|
"@release-it/conventional-changelog": "^8.0.1",
|
|
71
74
|
"@stackblitz/sdk": "^1.11.0",
|
|
72
75
|
"@tresjs/cientos": "3.9.0",
|
|
@@ -107,7 +110,7 @@ const cn = "@tresjs/core", un = "module", fn = "4.2.6", dn = "pnpm@9.1.4", pn =
|
|
|
107
110
|
vitest: "^2.0.2",
|
|
108
111
|
vue: "^3.4.31",
|
|
109
112
|
"vue-demi": "^0.14.8"
|
|
110
|
-
},
|
|
113
|
+
}, xn = {
|
|
111
114
|
name: cn,
|
|
112
115
|
type: un,
|
|
113
116
|
version: fn,
|
|
@@ -115,18 +118,19 @@ const cn = "@tresjs/core", un = "module", fn = "4.2.6", dn = "pnpm@9.1.4", pn =
|
|
|
115
118
|
description: pn,
|
|
116
119
|
author: mn,
|
|
117
120
|
license: hn,
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
121
|
+
repository: gn,
|
|
122
|
+
keywords: vn,
|
|
123
|
+
sideEffects: yn,
|
|
124
|
+
exports: _n,
|
|
125
|
+
main: wn,
|
|
126
|
+
module: bn,
|
|
127
|
+
types: Pn,
|
|
128
|
+
files: Cn,
|
|
129
|
+
publishConfig: Mn,
|
|
130
|
+
scripts: En,
|
|
131
|
+
peerDependencies: Tn,
|
|
132
|
+
dependencies: Sn,
|
|
133
|
+
devDependencies: An
|
|
130
134
|
};
|
|
131
135
|
function be(e) {
|
|
132
136
|
return typeof e > "u";
|
|
@@ -134,7 +138,7 @@ function be(e) {
|
|
|
134
138
|
function de(e) {
|
|
135
139
|
return Array.isArray(e);
|
|
136
140
|
}
|
|
137
|
-
function
|
|
141
|
+
function kn(e) {
|
|
138
142
|
return typeof e == "number";
|
|
139
143
|
}
|
|
140
144
|
function at(e) {
|
|
@@ -152,28 +156,28 @@ function N(e) {
|
|
|
152
156
|
function We(e) {
|
|
153
157
|
return U(e) && "isCamera" in e && !!e.isCamera;
|
|
154
158
|
}
|
|
155
|
-
function
|
|
159
|
+
function Ln(e) {
|
|
156
160
|
return U(e) && "isBufferGeometry" in e && !!e.isBufferGeometry;
|
|
157
161
|
}
|
|
158
|
-
function
|
|
162
|
+
function Rn(e) {
|
|
159
163
|
return U(e) && "isMaterial" in e && !!e.isMaterial;
|
|
160
164
|
}
|
|
161
|
-
function
|
|
165
|
+
function On(e) {
|
|
162
166
|
return U(e) && "isLight" in e && !!e.isLight;
|
|
163
167
|
}
|
|
164
|
-
function
|
|
168
|
+
function Dn(e) {
|
|
165
169
|
return U(e) && "isFog" in e && !!e.isFog;
|
|
166
170
|
}
|
|
167
|
-
function
|
|
171
|
+
function jn(e) {
|
|
168
172
|
return U(e) && "isScene" in e && !!e.isScene;
|
|
169
173
|
}
|
|
170
174
|
function oe(e) {
|
|
171
|
-
return N(e) ||
|
|
175
|
+
return N(e) || Ln(e) || Rn(e) || Dn(e);
|
|
172
176
|
}
|
|
173
|
-
function
|
|
177
|
+
function Bn(e) {
|
|
174
178
|
return U(e) && !!e.isPrimitive;
|
|
175
179
|
}
|
|
176
|
-
const
|
|
180
|
+
const In = ({ sizes: e }) => {
|
|
177
181
|
const t = H([]), n = V(
|
|
178
182
|
() => t.value[0]
|
|
179
183
|
), r = (i) => {
|
|
@@ -197,7 +201,7 @@ const Bn = ({ sizes: e }) => {
|
|
|
197
201
|
};
|
|
198
202
|
return Te(() => {
|
|
199
203
|
e.aspectRatio.value && t.value.forEach((i) => {
|
|
200
|
-
!i.manual && (i instanceof we ||
|
|
204
|
+
!i.manual && (i instanceof we || Hn(i)) && (i instanceof we ? i.aspect = e.aspectRatio.value : (i.left = e.width.value * -0.5, i.right = e.width.value * 0.5, i.top = e.height.value * 0.5, i.bottom = e.height.value * -0.5), i.updateProjectionMatrix());
|
|
201
205
|
});
|
|
202
206
|
}), K(() => {
|
|
203
207
|
t.value = [];
|
|
@@ -209,12 +213,12 @@ const Bn = ({ sizes: e }) => {
|
|
|
209
213
|
setCameraActive: r
|
|
210
214
|
};
|
|
211
215
|
};
|
|
212
|
-
function
|
|
216
|
+
function Hn(e) {
|
|
213
217
|
return e.hasOwnProperty("isOrthographicCamera") && e.isOrthographicCamera;
|
|
214
218
|
}
|
|
215
219
|
const lt = j(), ct = j(), Ae = j(), ee = new tt();
|
|
216
220
|
let ue = 0, fe = 0;
|
|
217
|
-
const { pause:
|
|
221
|
+
const { pause: $n, resume: Ne, isActive: Un } = it(
|
|
218
222
|
() => {
|
|
219
223
|
lt.trigger({ delta: ue, elapsed: fe, clock: ee }), ct.trigger({ delta: ue, elapsed: fe, clock: ee }), Ae.trigger({ delta: ue, elapsed: fe, clock: ee });
|
|
220
224
|
},
|
|
@@ -224,14 +228,14 @@ Ae.on(() => {
|
|
|
224
228
|
ue = ee.getDelta(), fe = ee.getElapsedTime();
|
|
225
229
|
});
|
|
226
230
|
let ze = !1;
|
|
227
|
-
const
|
|
231
|
+
const Fr = () => (ze || (ze = !0, Ne()), {
|
|
228
232
|
onBeforeLoop: lt.on,
|
|
229
233
|
onLoop: ct.on,
|
|
230
234
|
onAfterLoop: Ae.on,
|
|
231
|
-
pause:
|
|
235
|
+
pause: $n,
|
|
232
236
|
resume: Ne,
|
|
233
|
-
isActive:
|
|
234
|
-
}),
|
|
237
|
+
isActive: Un
|
|
238
|
+
}), Wr = !0, se = "[TresJS ▲ ■ ●] ";
|
|
235
239
|
function Y() {
|
|
236
240
|
function e(...r) {
|
|
237
241
|
typeof r[0] == "string" ? r[0] = se + r[0] : r.unshift(se), console.error(...r);
|
|
@@ -247,13 +251,13 @@ function Y() {
|
|
|
247
251
|
logMessage: n
|
|
248
252
|
};
|
|
249
253
|
}
|
|
250
|
-
function
|
|
254
|
+
function Nr(e) {
|
|
251
255
|
return typeof e == "number" ? [e, e, e] : e instanceof Se ? [e.x, e.y, e.z] : e;
|
|
252
256
|
}
|
|
253
|
-
function
|
|
257
|
+
function Fn(e) {
|
|
254
258
|
return e instanceof Z ? e : Array.isArray(e) ? new Z(...e) : new Z(e);
|
|
255
259
|
}
|
|
256
|
-
class
|
|
260
|
+
class Wn extends et.Mesh {
|
|
257
261
|
constructor(...n) {
|
|
258
262
|
super(...n);
|
|
259
263
|
me(this, "type", "HightlightMesh");
|
|
@@ -269,18 +273,18 @@ const ut = (e, t) => {
|
|
|
269
273
|
for (const n of Object.keys(t))
|
|
270
274
|
t[n] instanceof Object && Object.assign(t[n], ut(e[n], t[n]));
|
|
271
275
|
return Object.assign(e || {}, t), e;
|
|
272
|
-
},
|
|
276
|
+
}, Nn = "html,body,base,head,link,meta,style,title,address,article,aside,footer,header,hgroup,h1,h2,h3,h4,h5,h6,nav,section,div,dd,dl,dt,figcaption,figure,picture,hr,img,li,main,ol,p,pre,ul,a,b,abbr,bdi,bdo,br,cite,code,data,dfn,em,i,kbd,mark,q,rp,rt,ruby,s,samp,small,span,strong,sub,sup,time,u,var,wbr,area,audio,map,track,video,embed,object,param,source,canvas,script,noscript,del,ins,caption,col,colgroup,table,thead,tbody,td,th,tr,button,datalist,fieldset,form,input,label,legend,meter,optgroup,option,output,progress,select,textarea,details,dialog,menu,summary,template,blockquote,iframe,tfoot", zn = /* @__PURE__ */ Yn(Nn);
|
|
273
277
|
function Ge(e) {
|
|
274
278
|
return e && e.nodeType === 1;
|
|
275
279
|
}
|
|
276
280
|
function ie(e) {
|
|
277
281
|
return e.replace(/-([a-z])/g, (t, n) => n.toUpperCase());
|
|
278
282
|
}
|
|
279
|
-
const
|
|
280
|
-
function
|
|
281
|
-
return e.replace(
|
|
283
|
+
const Gn = /\B([A-Z])/g;
|
|
284
|
+
function Vn(e) {
|
|
285
|
+
return e.replace(Gn, "-$1").toLowerCase();
|
|
282
286
|
}
|
|
283
|
-
function
|
|
287
|
+
function Yn(e, t) {
|
|
284
288
|
const n = /* @__PURE__ */ Object.create(null), r = e.split(",");
|
|
285
289
|
for (let s = 0; s < r.length; s++)
|
|
286
290
|
n[r[s]] = !0;
|
|
@@ -291,7 +295,7 @@ const Ve = (e, t) => {
|
|
|
291
295
|
return;
|
|
292
296
|
const n = Array.isArray(t) ? t : t.match(/([^[.\]])+/g);
|
|
293
297
|
return n == null ? void 0 : n.reduce((r, s) => r && r[s], e);
|
|
294
|
-
},
|
|
298
|
+
}, qn = (e, t, n) => {
|
|
295
299
|
const r = Array.isArray(t) ? t : t.match(/([^[.\]])+/g);
|
|
296
300
|
r && r.reduce((s, l, i) => (s[l] === void 0 && (s[l] = {}), i === r.length - 1 && (s[l] = n), s[l]), e);
|
|
297
301
|
};
|
|
@@ -312,7 +316,7 @@ function ft(e, t) {
|
|
|
312
316
|
return !1;
|
|
313
317
|
return !0;
|
|
314
318
|
}
|
|
315
|
-
function
|
|
319
|
+
function Jn(e, t) {
|
|
316
320
|
if (!Array.isArray(e) || !Array.isArray(t) || e.length !== t.length)
|
|
317
321
|
return !1;
|
|
318
322
|
for (let n = 0; n < e.length; n++)
|
|
@@ -320,8 +324,8 @@ function qn(e, t) {
|
|
|
320
324
|
return !1;
|
|
321
325
|
return !0;
|
|
322
326
|
}
|
|
323
|
-
const
|
|
324
|
-
function
|
|
327
|
+
const Kn = Array.isArray;
|
|
328
|
+
function Qn(e, t, n, r) {
|
|
325
329
|
const s = (c) => {
|
|
326
330
|
if (c.uuid === t)
|
|
327
331
|
return c;
|
|
@@ -346,7 +350,7 @@ function Kn(e, t, n, r) {
|
|
|
346
350
|
const a = n[n.length - 1];
|
|
347
351
|
i[a] !== void 0 ? i[a] = r : console.warn(`Property path is not valid: ${n.join(".")}`);
|
|
348
352
|
}
|
|
349
|
-
function
|
|
353
|
+
function Xn(e) {
|
|
350
354
|
const t = new ot({
|
|
351
355
|
color: 11003607,
|
|
352
356
|
// Highlight color, e.g., yellow
|
|
@@ -357,18 +361,18 @@ function Qn(e) {
|
|
|
357
361
|
side: jt
|
|
358
362
|
// To e
|
|
359
363
|
});
|
|
360
|
-
return new
|
|
364
|
+
return new Wn(e.geometry.clone(), t);
|
|
361
365
|
}
|
|
362
|
-
function
|
|
366
|
+
function Zn(e) {
|
|
363
367
|
var n;
|
|
364
368
|
let t = e.value;
|
|
365
369
|
return e.value && ((n = e.value) != null && n.isMesh) && (t = e.value.position), Array.isArray(e.value) && (t = new Se(...t)), t;
|
|
366
370
|
}
|
|
367
|
-
function
|
|
371
|
+
function er(e) {
|
|
368
372
|
return "map" in e;
|
|
369
373
|
}
|
|
370
374
|
function Ye(e) {
|
|
371
|
-
|
|
375
|
+
er(e) && e.map && e.map.dispose(), e.dispose();
|
|
372
376
|
}
|
|
373
377
|
function dt(e) {
|
|
374
378
|
var n, r;
|
|
@@ -377,7 +381,7 @@ function dt(e) {
|
|
|
377
381
|
e && ((r = e.dispose) == null || r.call(e)), s.geometry && (s.geometry.dispose(), delete s.geometry), Array.isArray(s.material) ? (s.material.forEach((l) => Ye(l)), delete s.material) : s.material && (Ye(s.material), delete s.material);
|
|
378
382
|
}
|
|
379
383
|
}
|
|
380
|
-
function
|
|
384
|
+
function tr(e, t) {
|
|
381
385
|
let n = 0;
|
|
382
386
|
for (let r = 0; r < e.length; r++)
|
|
383
387
|
t(e[r], r) && (e[n] = e[r], n++);
|
|
@@ -398,7 +402,7 @@ function qe(...e) {
|
|
|
398
402
|
return e.map((t, n) => n === 0 ? t : t.charAt(0).toUpperCase() + t.slice(1)).join("");
|
|
399
403
|
}
|
|
400
404
|
const Je = /-\d+$/;
|
|
401
|
-
function
|
|
405
|
+
function nr(e, t, n) {
|
|
402
406
|
if (at(n)) {
|
|
403
407
|
if (Je.test(n)) {
|
|
404
408
|
const l = n.replace(Je, ""), { target: i, key: a } = Pe(e, l);
|
|
@@ -414,7 +418,7 @@ function tr(e, t, n) {
|
|
|
414
418
|
} else
|
|
415
419
|
t.__tres.previousAttach = n(e, t);
|
|
416
420
|
}
|
|
417
|
-
function
|
|
421
|
+
function rr(e, t, n) {
|
|
418
422
|
var r, s, l;
|
|
419
423
|
if (at(n)) {
|
|
420
424
|
const { target: i, key: a } = Pe(e, n), c = t.__tres.previousAttach;
|
|
@@ -442,7 +446,7 @@ function pt(e) {
|
|
|
442
446
|
const t = (n = e == null ? void 0 : e.__tres) == null ? void 0 : n.root;
|
|
443
447
|
t && t.render && t.render.canBeInvalidated.value && t.invalidate();
|
|
444
448
|
}
|
|
445
|
-
function
|
|
449
|
+
function or(e, t, n) {
|
|
446
450
|
var s;
|
|
447
451
|
if (!G(e.setPixelRatio))
|
|
448
452
|
return;
|
|
@@ -450,10 +454,10 @@ function rr(e, t, n) {
|
|
|
450
454
|
if (de(n) && n.length >= 2) {
|
|
451
455
|
const [l, i] = n;
|
|
452
456
|
r = rt.clamp(t, l, i);
|
|
453
|
-
} else
|
|
457
|
+
} else kn(n) ? r = n : r = t;
|
|
454
458
|
r !== ((s = e.getPixelRatio) == null ? void 0 : s.call(e)) && e.setPixelRatio(r);
|
|
455
459
|
}
|
|
456
|
-
function
|
|
460
|
+
function sr(e, t, n, r, s) {
|
|
457
461
|
const l = [...t.__tres.objects], i = Q(t);
|
|
458
462
|
if (e = Q(e), i === e)
|
|
459
463
|
return !0;
|
|
@@ -470,12 +474,12 @@ function or(e, t, n, r, s) {
|
|
|
470
474
|
return !0;
|
|
471
475
|
}
|
|
472
476
|
function Q(e) {
|
|
473
|
-
return
|
|
477
|
+
return Bn(e) ? (e.object.__tres = e.__tres, e.object) : e;
|
|
474
478
|
}
|
|
475
479
|
function mt(e, t) {
|
|
476
480
|
var r, s, l, i;
|
|
477
481
|
const n = ((r = e.__tres) == null ? void 0 : r.parent) || t.scene.value;
|
|
478
|
-
e.__tres && (e.__tres.parent = null), n && n.__tres && "objects" in n.__tres &&
|
|
482
|
+
e.__tres && (e.__tres.parent = null), n && n.__tres && "objects" in n.__tres && tr(n.__tres.objects, (a) => a !== e), (s = e.__tres) != null && s.attach ? rr(n, e, e.__tres.attach) : ((i = (l = e.parent) == null ? void 0 : l.remove) == null || i.call(l, Q(e)), e.parent = null);
|
|
479
483
|
}
|
|
480
484
|
function ht(e, t) {
|
|
481
485
|
var n;
|
|
@@ -484,7 +488,7 @@ function ht(e, t) {
|
|
|
484
488
|
t.deregisterCamera(r), (s = t.eventManager) == null || s.deregisterPointerMissedObject(r);
|
|
485
489
|
}), t.deregisterCamera(e), pt(e);
|
|
486
490
|
}
|
|
487
|
-
const
|
|
491
|
+
const ir = Number.parseInt(Bt.replace("dev", "")), ae = {
|
|
488
492
|
realistic: {
|
|
489
493
|
shadows: !0,
|
|
490
494
|
physicallyCorrectLights: !0,
|
|
@@ -501,7 +505,7 @@ const sr = Number.parseInt(Bt.replace("dev", "")), ae = {
|
|
|
501
505
|
toneMappingExposure: 1
|
|
502
506
|
}
|
|
503
507
|
};
|
|
504
|
-
function
|
|
508
|
+
function ar({
|
|
505
509
|
canvas: e,
|
|
506
510
|
options: t,
|
|
507
511
|
contextParts: { sizes: n, render: r, invalidate: s, advance: l }
|
|
@@ -546,7 +550,7 @@ function ir({
|
|
|
546
550
|
l();
|
|
547
551
|
}, 100), Te(() => {
|
|
548
552
|
const g = k(t.preset);
|
|
549
|
-
g && (g in ae || u(`Renderer Preset must be one of these: ${Object.keys(ae).join(", ")}`), ut(a.value, ae[g])),
|
|
553
|
+
g && (g in ae || u(`Renderer Preset must be one of these: ${Object.keys(ae).join(", ")}`), ut(a.value, ae[g])), or(a.value, o.value, k(t.dpr)), h === "always" && (r.frames.value = Math.max(1, r.frames.value));
|
|
550
554
|
const b = (C, M) => {
|
|
551
555
|
const P = k(C), E = () => {
|
|
552
556
|
if (g)
|
|
@@ -556,11 +560,11 @@ function ir({
|
|
|
556
560
|
return P;
|
|
557
561
|
const S = E();
|
|
558
562
|
return S !== void 0 ? S : Ve(f, M);
|
|
559
|
-
}, y = (C, M) =>
|
|
560
|
-
y(t.shadows, "shadowMap.enabled"), y(t.toneMapping ?? st, "toneMapping"), y(t.shadowMapType, "shadowMap.type"),
|
|
563
|
+
}, y = (C, M) => qn(a.value, M, b(C, M));
|
|
564
|
+
y(t.shadows, "shadowMap.enabled"), y(t.toneMapping ?? st, "toneMapping"), y(t.shadowMapType, "shadowMap.type"), ir < 150 && y(!t.useLegacyLights, "physicallyCorrectLights"), y(t.outputColorSpace, "outputColorSpace"), y(t.toneMappingExposure, "toneMappingExposure");
|
|
561
565
|
const d = b(t.clearColor, "clearColor");
|
|
562
566
|
d && a.value.setClearColor(
|
|
563
|
-
d ?
|
|
567
|
+
d ? Fn(d) : new Z(0)
|
|
564
568
|
// default clear color is not easily/efficiently retrievable from three
|
|
565
569
|
);
|
|
566
570
|
}), K(() => {
|
|
@@ -569,14 +573,14 @@ function ir({
|
|
|
569
573
|
renderer: a
|
|
570
574
|
};
|
|
571
575
|
}
|
|
572
|
-
const
|
|
573
|
-
function
|
|
576
|
+
const lr = (e) => !!e && e.constructor === Array;
|
|
577
|
+
function cr(e) {
|
|
574
578
|
const t = { nodes: {}, materials: {} };
|
|
575
579
|
return e && e.traverse((n) => {
|
|
576
580
|
n.name && (t.nodes[n.name] = n), n.material && !t.materials[n.material.name] && (t.materials[n.material.name] = n.material);
|
|
577
581
|
}), t;
|
|
578
582
|
}
|
|
579
|
-
async function
|
|
583
|
+
async function zr(e, t, n, r, s) {
|
|
580
584
|
const { logError: l } = Y(), i = new e();
|
|
581
585
|
s && s(i), n && n(i);
|
|
582
586
|
const c = (Array.isArray(t) ? t : [t]).map(
|
|
@@ -585,16 +589,16 @@ async function Nr(e, t, n, r, s) {
|
|
|
585
589
|
o,
|
|
586
590
|
(f) => {
|
|
587
591
|
const h = f;
|
|
588
|
-
h.scene && Object.assign(h,
|
|
592
|
+
h.scene && Object.assign(h, cr(h.scene)), u(h);
|
|
589
593
|
},
|
|
590
594
|
r,
|
|
591
595
|
(f) => v(l("[useLoader] - Failed to load resource", f))
|
|
592
596
|
);
|
|
593
597
|
})
|
|
594
598
|
);
|
|
595
|
-
return
|
|
599
|
+
return lr(t) ? await Promise.all(c) : await c[0];
|
|
596
600
|
}
|
|
597
|
-
async function
|
|
601
|
+
async function Gr(e, t) {
|
|
598
602
|
const n = new Ut(t), r = (s) => new Promise((l, i) => {
|
|
599
603
|
n.load(
|
|
600
604
|
s,
|
|
@@ -605,7 +609,7 @@ async function zr(e, t) {
|
|
|
605
609
|
}
|
|
606
610
|
);
|
|
607
611
|
});
|
|
608
|
-
if (
|
|
612
|
+
if (Kn(e)) {
|
|
609
613
|
const s = await Promise.all(e.map((l) => r(l)));
|
|
610
614
|
return e.length > 1 ? s : s[0];
|
|
611
615
|
} else {
|
|
@@ -631,7 +635,7 @@ async function zr(e, t) {
|
|
|
631
635
|
};
|
|
632
636
|
}
|
|
633
637
|
}
|
|
634
|
-
const
|
|
638
|
+
const ur = (e, t) => {
|
|
635
639
|
const n = V(() => t.renderer.value.domElement), r = $([]), { x: s, y: l } = tn({ target: n });
|
|
636
640
|
let i = 0;
|
|
637
641
|
const { width: a, height: c, top: o, left: u } = nn(n), v = ({ x: m, y: T }) => {
|
|
@@ -710,7 +714,7 @@ const cr = (e, t) => {
|
|
|
710
714
|
forceUpdate: p
|
|
711
715
|
};
|
|
712
716
|
};
|
|
713
|
-
function
|
|
717
|
+
function Vr() {
|
|
714
718
|
const { logWarning: e } = Y();
|
|
715
719
|
function t(l, i, a) {
|
|
716
720
|
let c = null;
|
|
@@ -746,11 +750,11 @@ function xe(e) {
|
|
|
746
750
|
}
|
|
747
751
|
}), t;
|
|
748
752
|
}
|
|
749
|
-
function
|
|
753
|
+
function fr(e) {
|
|
750
754
|
return (e / 1024).toFixed(2);
|
|
751
755
|
}
|
|
752
756
|
const Ce = H({}), Me = (e) => Object.assign(Ce.value, e);
|
|
753
|
-
function
|
|
757
|
+
function dr(e, t, n) {
|
|
754
758
|
var L;
|
|
755
759
|
const r = $(), s = $();
|
|
756
760
|
e && (r.value = e), t && (s.value = t);
|
|
@@ -779,7 +783,7 @@ function fr(e, t, n) {
|
|
|
779
783
|
let R = B.parent;
|
|
780
784
|
for (; R !== null && !w.stopPropagating && !x.includes(R); )
|
|
781
785
|
w.eventObject = R, c(R[p], w), x.push(R), R = R.parent;
|
|
782
|
-
const ne =
|
|
786
|
+
const ne = Vn(p.slice(2));
|
|
783
787
|
n(ne, { intersection: O, event: w });
|
|
784
788
|
}
|
|
785
789
|
}
|
|
@@ -793,7 +797,7 @@ function fr(e, t, n) {
|
|
|
793
797
|
onPointerMissed: y,
|
|
794
798
|
onWheel: d,
|
|
795
799
|
forceUpdate: C
|
|
796
|
-
} =
|
|
800
|
+
} = ur(a, t);
|
|
797
801
|
b((p) => o("onPointerUp", p)), g((p) => o("onPointerDown", p)), u((p) => o("onClick", p)), v((p) => o("onDoubleClick", p)), f((p) => o("onContextMenu", p)), d((p) => o("onWheel", p));
|
|
798
802
|
let M = [];
|
|
799
803
|
h((p) => {
|
|
@@ -843,7 +847,7 @@ function fr(e, t, n) {
|
|
|
843
847
|
deregisterPointerMissedObject: A
|
|
844
848
|
};
|
|
845
849
|
}
|
|
846
|
-
function
|
|
850
|
+
function pr(e, t, n = 10) {
|
|
847
851
|
const r = k(e) ? rn() : on(V(() => k(t).parentElement)), s = ye(Fe(r.width, n)), l = ye(Fe(r.height, n)), i = V(() => s.value / l.value);
|
|
848
852
|
return {
|
|
849
853
|
height: l,
|
|
@@ -877,7 +881,7 @@ function ve() {
|
|
|
877
881
|
return e.size;
|
|
878
882
|
} };
|
|
879
883
|
}
|
|
880
|
-
function
|
|
884
|
+
function mr() {
|
|
881
885
|
let e = !0, t = !0, n = !1;
|
|
882
886
|
const r = new tt(!1), s = H(r.running), l = H(!1);
|
|
883
887
|
let i;
|
|
@@ -952,7 +956,7 @@ function pr() {
|
|
|
952
956
|
setReady: (_) => e = _
|
|
953
957
|
};
|
|
954
958
|
}
|
|
955
|
-
function
|
|
959
|
+
function hr(e, t, n = 100) {
|
|
956
960
|
n = n <= 0 ? 100 : n;
|
|
957
961
|
const r = j(), s = /* @__PURE__ */ new Set();
|
|
958
962
|
let l = !1, i = !1, a = null;
|
|
@@ -985,7 +989,7 @@ const te = /* @__PURE__ */ new WeakMap();
|
|
|
985
989
|
function gt(e) {
|
|
986
990
|
if (e = e || pe(), te.has(e))
|
|
987
991
|
return te.get(e);
|
|
988
|
-
const t = 100, n = Date.now(), l =
|
|
992
|
+
const t = 100, n = Date.now(), l = hr(() => {
|
|
989
993
|
if (Date.now() - n >= t)
|
|
990
994
|
return !0;
|
|
991
995
|
{
|
|
@@ -995,12 +999,12 @@ function gt(e) {
|
|
|
995
999
|
}, e);
|
|
996
1000
|
return te.set(e, l), l;
|
|
997
1001
|
}
|
|
998
|
-
function
|
|
1002
|
+
function Yr(e) {
|
|
999
1003
|
const t = pe();
|
|
1000
1004
|
if (t)
|
|
1001
1005
|
return te.has(t) ? te.get(t).on(e) : gt(t).on(e);
|
|
1002
1006
|
}
|
|
1003
|
-
function
|
|
1007
|
+
function gr({
|
|
1004
1008
|
scene: e,
|
|
1005
1009
|
canvas: t,
|
|
1006
1010
|
windowSize: n,
|
|
@@ -1008,13 +1012,13 @@ function hr({
|
|
|
1008
1012
|
rendererOptions: s,
|
|
1009
1013
|
emit: l
|
|
1010
1014
|
}) {
|
|
1011
|
-
const i = $(e), a =
|
|
1015
|
+
const i = $(e), a = pr(n, t), {
|
|
1012
1016
|
camera: c,
|
|
1013
1017
|
cameras: o,
|
|
1014
1018
|
registerCamera: u,
|
|
1015
1019
|
deregisterCamera: v,
|
|
1016
1020
|
setCameraActive: f
|
|
1017
|
-
} =
|
|
1021
|
+
} = In({ sizes: a, scene: e }), h = {
|
|
1018
1022
|
mode: H(s.renderMode || "always"),
|
|
1019
1023
|
priority: H(0),
|
|
1020
1024
|
frames: H(0),
|
|
@@ -1027,7 +1031,7 @@ function hr({
|
|
|
1027
1031
|
function b() {
|
|
1028
1032
|
s.renderMode === "manual" && (h.frames.value = 1);
|
|
1029
1033
|
}
|
|
1030
|
-
const { renderer: y } =
|
|
1034
|
+
const { renderer: y } = ar(
|
|
1031
1035
|
{
|
|
1032
1036
|
scene: e,
|
|
1033
1037
|
canvas: t,
|
|
@@ -1064,7 +1068,7 @@ function hr({
|
|
|
1064
1068
|
registerCamera: u,
|
|
1065
1069
|
setCameraActive: f,
|
|
1066
1070
|
deregisterCamera: v,
|
|
1067
|
-
loop:
|
|
1071
|
+
loop: mr()
|
|
1068
1072
|
};
|
|
1069
1073
|
_e("useTres", d), d.scene.value.__tres = {
|
|
1070
1074
|
root: d
|
|
@@ -1073,7 +1077,7 @@ function hr({
|
|
|
1073
1077
|
}, "render");
|
|
1074
1078
|
const { on: C, cancel: M } = gt(d);
|
|
1075
1079
|
d.loop.setReady(!1), d.loop.start(), C(() => {
|
|
1076
|
-
l("ready", d), d.loop.setReady(!0),
|
|
1080
|
+
l("ready", d), d.loop.setReady(!0), dr(e, d, l);
|
|
1077
1081
|
}), K(() => {
|
|
1078
1082
|
M(), d.loop.stop();
|
|
1079
1083
|
});
|
|
@@ -1096,8 +1100,8 @@ function pe() {
|
|
|
1096
1100
|
throw new Error("useTresContext must be used together with useTresContextProvider");
|
|
1097
1101
|
return e;
|
|
1098
1102
|
}
|
|
1099
|
-
const
|
|
1100
|
-
function
|
|
1103
|
+
const qr = pe;
|
|
1104
|
+
function Jr() {
|
|
1101
1105
|
const {
|
|
1102
1106
|
camera: e,
|
|
1103
1107
|
scene: t,
|
|
@@ -1137,7 +1141,7 @@ function qr() {
|
|
|
1137
1141
|
onAfterRender: u
|
|
1138
1142
|
};
|
|
1139
1143
|
}
|
|
1140
|
-
function
|
|
1144
|
+
function vr(e, t = {}, n = {}) {
|
|
1141
1145
|
let r = e;
|
|
1142
1146
|
const s = (a) => {
|
|
1143
1147
|
r = a;
|
|
@@ -1171,10 +1175,10 @@ const { logError: Ke } = Y(), Qe = [
|
|
|
1171
1175
|
"onPointerMissed",
|
|
1172
1176
|
"onLostPointerCapture",
|
|
1173
1177
|
"onWheel"
|
|
1174
|
-
],
|
|
1178
|
+
], yr = (e) => {
|
|
1175
1179
|
const t = e.scene.value;
|
|
1176
1180
|
function n(o, u, v, f) {
|
|
1177
|
-
if (f || (f = {}), f.args || (f.args = []), o === "template" ||
|
|
1181
|
+
if (f || (f = {}), f.args || (f.args = []), o === "template" || zn(o))
|
|
1178
1182
|
return null;
|
|
1179
1183
|
let h = o.replace("Tres", ""), g;
|
|
1180
1184
|
if (o === "primitive") {
|
|
@@ -1182,7 +1186,7 @@ const { logError: Ke } = Y(), Qe = [
|
|
|
1182
1186
|
"Tres primitives need an 'object' prop, whose value is an object or shallowRef<object>"
|
|
1183
1187
|
), h = f.object.type;
|
|
1184
1188
|
const b = {};
|
|
1185
|
-
g =
|
|
1189
|
+
g = vr(
|
|
1186
1190
|
f.object,
|
|
1187
1191
|
{
|
|
1188
1192
|
object: (d) => d,
|
|
@@ -1191,7 +1195,7 @@ const { logError: Ke } = Y(), Qe = [
|
|
|
1191
1195
|
},
|
|
1192
1196
|
{
|
|
1193
1197
|
object: (d, C, M, P) => {
|
|
1194
|
-
|
|
1198
|
+
sr(d, M, P, { patchProp: l, remove: s, insert: r }, e);
|
|
1195
1199
|
},
|
|
1196
1200
|
__tres: (d) => {
|
|
1197
1201
|
Object.assign(b, d);
|
|
@@ -1219,7 +1223,7 @@ const { logError: Ke } = Y(), Qe = [
|
|
|
1219
1223
|
return;
|
|
1220
1224
|
u = u || t;
|
|
1221
1225
|
const v = o.__tres ? o : z(o, {}, e), f = u.__tres ? u : z(u, {}, e);
|
|
1222
|
-
o = Q(v), u = Q(f), o.__tres && ((h = o.__tres) == null ? void 0 : h.eventCount) > 0 && ((g = e.eventManager) == null || g.registerObject(o)), e.registerCamera(o), (b = e.eventManager) == null || b.registerPointerMissedObject(o), v.__tres.attach ?
|
|
1226
|
+
o = Q(v), u = Q(f), o.__tres && ((h = o.__tres) == null ? void 0 : h.eventCount) > 0 && ((g = e.eventManager) == null || g.registerObject(o)), e.registerCamera(o), (b = e.eventManager) == null || b.registerPointerMissedObject(o), v.__tres.attach ? nr(f, v, v.__tres.attach) : N(o) && N(f) && (f.add(o), o.dispatchEvent({ type: "added" })), v.__tres.parent = f, f.__tres.objects && !f.__tres.objects.includes(v) && f.__tres.objects.push(v);
|
|
1223
1227
|
}
|
|
1224
1228
|
function s(o, u) {
|
|
1225
1229
|
var g, b, y, d;
|
|
@@ -1229,7 +1233,7 @@ const { logError: Ke } = Y(), Qe = [
|
|
|
1229
1233
|
const v = (y = o.__tres) == null ? void 0 : y.dispose;
|
|
1230
1234
|
be(v) || (v === null ? u = !1 : u = v);
|
|
1231
1235
|
const f = (d = o.__tres) == null ? void 0 : d.primitive, h = u === "default" ? !f : !!u;
|
|
1232
|
-
if (o.__tres && "objects" in o.__tres && [...o.__tres.objects].forEach((C) => s(C, u)), h && o.children && [...o.children].forEach((C) => s(C, u)), mt(o, e), ht(o, e), h && !
|
|
1236
|
+
if (o.__tres && "objects" in o.__tres && [...o.__tres.objects].forEach((C) => s(C, u)), h && o.children && [...o.children].forEach((C) => s(C, u)), mt(o, e), ht(o, e), h && !jn(o)) {
|
|
1233
1237
|
if (G(u))
|
|
1234
1238
|
u(o);
|
|
1235
1239
|
else if (G(o.dispose))
|
|
@@ -1262,7 +1266,7 @@ const { logError: Ke } = Y(), Qe = [
|
|
|
1262
1266
|
let b = ie(g), y = h == null ? void 0 : h[b];
|
|
1263
1267
|
if (g === "args") {
|
|
1264
1268
|
const P = o, E = v ?? [], S = f ?? [], _ = ((M = o.__tres) == null ? void 0 : M.type) || o.type;
|
|
1265
|
-
_ && E.length && !
|
|
1269
|
+
_ && E.length && !Jn(E, S) && (h = Object.assign(
|
|
1266
1270
|
P,
|
|
1267
1271
|
new Ce.value[_](...f)
|
|
1268
1272
|
));
|
|
@@ -1318,22 +1322,22 @@ const { logError: Ke } = Y(), Qe = [
|
|
|
1318
1322
|
insertStaticContent: () => void 0
|
|
1319
1323
|
};
|
|
1320
1324
|
};
|
|
1321
|
-
function
|
|
1325
|
+
function _r() {
|
|
1322
1326
|
return vt().__VUE_DEVTOOLS_GLOBAL_HOOK__;
|
|
1323
1327
|
}
|
|
1324
1328
|
function vt() {
|
|
1325
1329
|
return typeof navigator < "u" && typeof window < "u" ? window : typeof globalThis < "u" ? globalThis : {};
|
|
1326
1330
|
}
|
|
1327
|
-
const
|
|
1331
|
+
const wr = typeof Proxy == "function", br = "devtools-plugin:setup", Pr = "plugin:settings:set";
|
|
1328
1332
|
let q, Ee;
|
|
1329
|
-
function
|
|
1333
|
+
function Cr() {
|
|
1330
1334
|
var e;
|
|
1331
1335
|
return q !== void 0 || (typeof window < "u" && window.performance ? (q = !0, Ee = window.performance) : typeof globalThis < "u" && (!((e = globalThis.perf_hooks) === null || e === void 0) && e.performance) ? (q = !0, Ee = globalThis.perf_hooks.performance) : q = !1), q;
|
|
1332
1336
|
}
|
|
1333
|
-
function
|
|
1334
|
-
return
|
|
1337
|
+
function Mr() {
|
|
1338
|
+
return Cr() ? Ee.now() : Date.now();
|
|
1335
1339
|
}
|
|
1336
|
-
class
|
|
1340
|
+
class Er {
|
|
1337
1341
|
constructor(t, n) {
|
|
1338
1342
|
this.target = null, this.targetQueue = [], this.onQueue = [], this.plugin = t, this.hook = n;
|
|
1339
1343
|
const r = {};
|
|
@@ -1361,9 +1365,9 @@ class Mr {
|
|
|
1361
1365
|
l = i;
|
|
1362
1366
|
},
|
|
1363
1367
|
now() {
|
|
1364
|
-
return
|
|
1368
|
+
return Mr();
|
|
1365
1369
|
}
|
|
1366
|
-
}, n && n.on(
|
|
1370
|
+
}, n && n.on(Pr, (i, a) => {
|
|
1367
1371
|
i === this.plugin.id && this.fallbacks.setSettings(a);
|
|
1368
1372
|
}), this.proxiedOn = new Proxy({}, {
|
|
1369
1373
|
get: (i, a) => this.target ? this.target.on[a] : (...c) => {
|
|
@@ -1395,12 +1399,12 @@ class Mr {
|
|
|
1395
1399
|
n.resolve(await this.target[n.method](...n.args));
|
|
1396
1400
|
}
|
|
1397
1401
|
}
|
|
1398
|
-
function
|
|
1399
|
-
const n = e, r = vt(), s =
|
|
1402
|
+
function Tr(e, t) {
|
|
1403
|
+
const n = e, r = vt(), s = _r(), l = wr && n.enableEarlyProxy;
|
|
1400
1404
|
if (s && (r.__VUE_DEVTOOLS_PLUGIN_API_AVAILABLE__ || !l))
|
|
1401
|
-
s.emit(
|
|
1405
|
+
s.emit(br, e, t);
|
|
1402
1406
|
else {
|
|
1403
|
-
const i = l ? new
|
|
1407
|
+
const i = l ? new Er(n, s) : null;
|
|
1404
1408
|
(r.__VUE_DEVTOOLS_PLUGINS__ = r.__VUE_DEVTOOLS_PLUGINS__ || []).push({
|
|
1405
1409
|
pluginDescriptor: n,
|
|
1406
1410
|
setupFn: t,
|
|
@@ -1408,7 +1412,7 @@ function Er(e, t) {
|
|
|
1408
1412
|
}), i && t(i.proxiedTarget);
|
|
1409
1413
|
}
|
|
1410
1414
|
}
|
|
1411
|
-
function
|
|
1415
|
+
function Sr(e, t) {
|
|
1412
1416
|
const n = `▲ ■ ●${e}`;
|
|
1413
1417
|
typeof Xe == "function" ? Xe(n, t) : console.log(n);
|
|
1414
1418
|
}
|
|
@@ -1429,11 +1433,11 @@ const yt = (e) => {
|
|
|
1429
1433
|
});
|
|
1430
1434
|
const n = xe(e);
|
|
1431
1435
|
return n > 0 && t.tags.push({
|
|
1432
|
-
label: `${
|
|
1436
|
+
label: `${fr(n)} KB`,
|
|
1433
1437
|
textColor: 15707189,
|
|
1434
1438
|
backgroundColor: 16775644,
|
|
1435
1439
|
tooltip: "Memory usage"
|
|
1436
|
-
}), e.type.includes("Light") && (
|
|
1440
|
+
}), e.type.includes("Light") && (On(e) && t.tags.push({
|
|
1437
1441
|
label: `${e.intensity}`,
|
|
1438
1442
|
textColor: 9738662,
|
|
1439
1443
|
backgroundColor: 16316922,
|
|
@@ -1463,22 +1467,22 @@ function _t(e, t, n = "") {
|
|
|
1463
1467
|
t.children.push(s), _t(r, s, n);
|
|
1464
1468
|
});
|
|
1465
1469
|
}
|
|
1466
|
-
const
|
|
1470
|
+
const Ar = [], X = "tres:inspector", xr = Et({
|
|
1467
1471
|
sceneGraph: null
|
|
1468
1472
|
});
|
|
1469
|
-
function
|
|
1470
|
-
|
|
1473
|
+
function kr(e, t) {
|
|
1474
|
+
Tr(
|
|
1471
1475
|
{
|
|
1472
1476
|
id: "dev.esm.tres",
|
|
1473
1477
|
label: "TresJS 🪐",
|
|
1474
1478
|
logo: "https://raw.githubusercontent.com/Tresjs/tres/main/public/favicon.svg",
|
|
1475
1479
|
packageName: "tresjs",
|
|
1476
1480
|
homepage: "https://tresjs.org",
|
|
1477
|
-
componentStateTypes:
|
|
1481
|
+
componentStateTypes: Ar,
|
|
1478
1482
|
app: e
|
|
1479
1483
|
},
|
|
1480
1484
|
(n) => {
|
|
1481
|
-
typeof n.now != "function" &&
|
|
1485
|
+
typeof n.now != "function" && Sr(
|
|
1482
1486
|
"You seem to be using an outdated version of Vue Devtools. Are you still using the Beta release instead of the stable one? You can find the links at https://devtools.vuejs.org/guide/installation.html."
|
|
1483
1487
|
), n.addInspector({
|
|
1484
1488
|
id: X,
|
|
@@ -1492,7 +1496,7 @@ function xr(e, t) {
|
|
|
1492
1496
|
}, 5e3), n.on.getInspectorTree((l) => {
|
|
1493
1497
|
if (l.inspectorId === X) {
|
|
1494
1498
|
const i = yt(t.scene.value);
|
|
1495
|
-
_t(t.scene.value, i, l.filter),
|
|
1499
|
+
_t(t.scene.value, i, l.filter), xr.sceneGraph = i, l.rootNodes = [i];
|
|
1496
1500
|
}
|
|
1497
1501
|
});
|
|
1498
1502
|
let r = null, s = null;
|
|
@@ -1503,7 +1507,7 @@ function xr(e, t) {
|
|
|
1503
1507
|
if (!a)
|
|
1504
1508
|
return;
|
|
1505
1509
|
if (s && r && r.parent && s.remove(r), a.isMesh) {
|
|
1506
|
-
const c =
|
|
1510
|
+
const c = Xn(a);
|
|
1507
1511
|
a.add(c), r = c, s = a;
|
|
1508
1512
|
}
|
|
1509
1513
|
l.state = {
|
|
@@ -1526,12 +1530,12 @@ function xr(e, t) {
|
|
|
1526
1530
|
}))) || []);
|
|
1527
1531
|
}
|
|
1528
1532
|
}), n.on.editInspectorState((l) => {
|
|
1529
|
-
l.inspectorId === X &&
|
|
1533
|
+
l.inspectorId === X && Qn(t.scene.value, l.nodeId, l.path, l.state.value);
|
|
1530
1534
|
});
|
|
1531
1535
|
}
|
|
1532
1536
|
);
|
|
1533
1537
|
}
|
|
1534
|
-
const
|
|
1538
|
+
const Lr = ["data-scene", "data-tres"], Rr = /* @__PURE__ */ Be({
|
|
1535
1539
|
__name: "TresCanvas",
|
|
1536
1540
|
props: {
|
|
1537
1541
|
shadows: { type: Boolean, default: void 0 },
|
|
@@ -1583,10 +1587,10 @@ const kr = ["data-scene", "data-tres"], Lr = /* @__PURE__ */ Be({
|
|
|
1583
1587
|
setup() {
|
|
1584
1588
|
var P;
|
|
1585
1589
|
const M = (P = Ie()) == null ? void 0 : P.appContext;
|
|
1586
|
-
return M && (M.app = o), _e("useTres", d), _e("extend", Me), typeof window < "u" &&
|
|
1590
|
+
return M && (M.app = o), _e("useTres", d), _e("extend", Me), typeof window < "u" && kr(M == null ? void 0 : M.app, d), () => He(Ot, null, C ? [] : l.default());
|
|
1587
1591
|
}
|
|
1588
1592
|
}), v = (d, C = !1) => {
|
|
1589
|
-
const M = u(d, C), { render: P } = Rt(
|
|
1593
|
+
const M = u(d, C), { render: P } = Rt(yr(d));
|
|
1590
1594
|
P(He(M), c.value);
|
|
1591
1595
|
}, f = (d, C = !1) => {
|
|
1592
1596
|
dt(d.scene.value), C && (d.renderer.value.dispose(), d.renderer.value.renderLists.dispose(), d.renderer.value.forceContextLoss()), c.value.__tres = {
|
|
@@ -1599,7 +1603,7 @@ const kr = ["data-scene", "data-tres"], Lr = /* @__PURE__ */ Be({
|
|
|
1599
1603
|
};
|
|
1600
1604
|
return St(() => {
|
|
1601
1605
|
const d = a;
|
|
1602
|
-
g.value =
|
|
1606
|
+
g.value = gr({
|
|
1603
1607
|
scene: c.value,
|
|
1604
1608
|
canvas: d,
|
|
1605
1609
|
windowSize: r.windowSize ?? !1,
|
|
@@ -1637,7 +1641,7 @@ const kr = ["data-scene", "data-tres"], Lr = /* @__PURE__ */ Be({
|
|
|
1637
1641
|
ref: a,
|
|
1638
1642
|
"data-scene": c.value.uuid,
|
|
1639
1643
|
class: kt(d.$attrs.class),
|
|
1640
|
-
"data-tres": `tresjs ${J(
|
|
1644
|
+
"data-tres": `tresjs ${J(xn).version}`,
|
|
1641
1645
|
style: Lt({
|
|
1642
1646
|
display: "block",
|
|
1643
1647
|
width: "100%",
|
|
@@ -1649,19 +1653,19 @@ const kr = ["data-scene", "data-tres"], Lr = /* @__PURE__ */ Be({
|
|
|
1649
1653
|
touchAction: "none",
|
|
1650
1654
|
...d.$attrs.style
|
|
1651
1655
|
})
|
|
1652
|
-
}, null, 14,
|
|
1656
|
+
}, null, 14, Lr));
|
|
1653
1657
|
}
|
|
1654
|
-
}),
|
|
1658
|
+
}), Or = [
|
|
1655
1659
|
"TresCanvas",
|
|
1656
1660
|
"TresLeches",
|
|
1657
1661
|
"TresScene"
|
|
1658
|
-
],
|
|
1662
|
+
], Dr = {
|
|
1659
1663
|
template: {
|
|
1660
1664
|
compilerOptions: {
|
|
1661
|
-
isCustomElement: (e) => e.startsWith("Tres") && !
|
|
1665
|
+
isCustomElement: (e) => e.startsWith("Tres") && !Or.includes(e) || e === "primitive"
|
|
1662
1666
|
}
|
|
1663
1667
|
}
|
|
1664
|
-
},
|
|
1668
|
+
}, Kr = Dr, Qr = {
|
|
1665
1669
|
mounted: (e, t) => {
|
|
1666
1670
|
if (t.arg) {
|
|
1667
1671
|
console.log(`v-log:${t.arg}`, e[t.arg]);
|
|
@@ -1695,19 +1699,19 @@ class wt extends zt {
|
|
|
1695
1699
|
}
|
|
1696
1700
|
const { logWarning: Ze } = Y();
|
|
1697
1701
|
let le, W;
|
|
1698
|
-
const
|
|
1702
|
+
const jr = {
|
|
1699
1703
|
DirectionalLight: qt,
|
|
1700
1704
|
PointLight: Jt,
|
|
1701
1705
|
SpotLight: Kt,
|
|
1702
1706
|
HemisphereLight: Qt,
|
|
1703
1707
|
RectAreaLight: wt
|
|
1704
|
-
},
|
|
1708
|
+
}, Xr = {
|
|
1705
1709
|
mounted: (e) => {
|
|
1706
1710
|
if (!e.isLight) {
|
|
1707
1711
|
Ze(`${e.type} is not a light`);
|
|
1708
1712
|
return;
|
|
1709
1713
|
}
|
|
1710
|
-
le =
|
|
1714
|
+
le = jr[e.type], e.parent.add(new le(e, 1, e.color.getHex()));
|
|
1711
1715
|
},
|
|
1712
1716
|
updated: (e) => {
|
|
1713
1717
|
W = e.parent.children.find((t) => t instanceof le), !(W instanceof wt) && W.update();
|
|
@@ -1719,14 +1723,14 @@ const Dr = {
|
|
|
1719
1723
|
}
|
|
1720
1724
|
W = e.parent.children.find((t) => t instanceof le), W && W.dispose && W.dispose(), e.parent.remove(W);
|
|
1721
1725
|
}
|
|
1722
|
-
}, { logWarning:
|
|
1726
|
+
}, { logWarning: Br } = Y();
|
|
1723
1727
|
let I = null;
|
|
1724
|
-
const
|
|
1728
|
+
const Zr = {
|
|
1725
1729
|
updated: (e, t) => {
|
|
1726
1730
|
var s;
|
|
1727
|
-
const n =
|
|
1731
|
+
const n = Zn(t);
|
|
1728
1732
|
if (!n) {
|
|
1729
|
-
|
|
1733
|
+
Br(`v-distance-to: problem with binding value: ${t.value}`);
|
|
1730
1734
|
return;
|
|
1731
1735
|
}
|
|
1732
1736
|
I && (I.dispose(), e.parent.remove(I));
|
|
@@ -1742,38 +1746,38 @@ const Xr = {
|
|
|
1742
1746
|
unmounted: (e) => {
|
|
1743
1747
|
I == null || I.dispose(), e.parent.remove(I);
|
|
1744
1748
|
}
|
|
1745
|
-
},
|
|
1749
|
+
}, eo = {
|
|
1746
1750
|
install(e) {
|
|
1747
|
-
e.component("TresCanvas",
|
|
1751
|
+
e.component("TresCanvas", Rr);
|
|
1748
1752
|
}
|
|
1749
1753
|
};
|
|
1750
1754
|
export {
|
|
1751
|
-
|
|
1755
|
+
Rr as TresCanvas,
|
|
1752
1756
|
Ce as catalogue,
|
|
1753
|
-
|
|
1754
|
-
|
|
1757
|
+
mr as createRenderLoop,
|
|
1758
|
+
eo as default,
|
|
1755
1759
|
dt as dispose,
|
|
1756
1760
|
Me as extend,
|
|
1757
|
-
|
|
1758
|
-
|
|
1759
|
-
|
|
1760
|
-
|
|
1761
|
-
|
|
1762
|
-
|
|
1763
|
-
|
|
1764
|
-
|
|
1761
|
+
Wr as isProd,
|
|
1762
|
+
Fn as normalizeColor,
|
|
1763
|
+
Nr as normalizeVectorFlexibleParam,
|
|
1764
|
+
Yr as onTresReady,
|
|
1765
|
+
Kr as templateCompilerOptions,
|
|
1766
|
+
cr as trasverseObjects,
|
|
1767
|
+
In as useCamera,
|
|
1768
|
+
zr as useLoader,
|
|
1765
1769
|
Y as useLogger,
|
|
1766
|
-
|
|
1767
|
-
|
|
1768
|
-
|
|
1769
|
-
|
|
1770
|
-
|
|
1771
|
-
|
|
1772
|
-
|
|
1770
|
+
Jr as useLoop,
|
|
1771
|
+
ur as useRaycaster,
|
|
1772
|
+
Fr as useRenderLoop,
|
|
1773
|
+
ar as useRenderer,
|
|
1774
|
+
Vr as useSeek,
|
|
1775
|
+
Gr as useTexture,
|
|
1776
|
+
qr as useTres,
|
|
1773
1777
|
pe as useTresContext,
|
|
1774
|
-
|
|
1775
|
-
|
|
1776
|
-
|
|
1777
|
-
|
|
1778
|
-
|
|
1778
|
+
gr as useTresContextProvider,
|
|
1779
|
+
dr as useTresEventManager,
|
|
1780
|
+
Zr as vDistanceTo,
|
|
1781
|
+
Xr as vLightHelper,
|
|
1782
|
+
Qr as vLog
|
|
1779
1783
|
};
|
package/dist/tres.umd.cjs
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* name: @tresjs/core
|
|
3
|
-
* version: v4.2.
|
|
3
|
+
* version: v4.2.7
|
|
4
4
|
* (c) 2024
|
|
5
5
|
* description: Declarative ThreeJS using Vue Components
|
|
6
6
|
* author: Alvaro Saburido <hola@alvarosaburido.dev> (https://github.com/alvarosabu/)
|
|
7
7
|
*/
|
|
8
|
-
(function(b,p){typeof exports=="object"&&typeof module<"u"?p(exports,require("vue"),require("three"),require("@vueuse/core")):typeof define=="function"&&define.amd?define(["exports","vue","three","@vueuse/core"],p):(b=typeof globalThis<"u"?globalThis:b||self,p(b.tres={},b.Vue,b.Three,b.VueUseCore))})(this,function(b,p,y,C){"use strict";var _n=Object.defineProperty;var wn=(b,p,y)=>p in b?_n(b,p,{enumerable:!0,configurable:!0,writable:!0,value:y}):b[p]=y;var ye=(b,p,y)=>wn(b,typeof p!="symbol"?p+"":p,y);function it(e){const t=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(e){for(const n in e)if(n!=="default"){const r=Object.getOwnPropertyDescriptor(e,n);Object.defineProperty(t,n,r.get?r:{enumerable:!0,get:()=>e[n]})}}return t.default=e,Object.freeze(t)}const _e=it(y),at={name:"@tresjs/core",type:"module",version:"4.2.6",packageManager:"pnpm@9.1.4",description:"Declarative ThreeJS using Vue Components",author:"Alvaro Saburido <hola@alvarosaburido.dev> (https://github.com/alvarosabu/)",license:"MIT",keywords:["vue","3d","threejs","three","threejs-vue"],sideEffects:!1,exports:{".":{types:"./dist/index.d.ts",import:"./dist/tres.js",require:"./dist/tres.umd.cjs"},"./components":{types:"./dist/src/components/index.d.ts"},"./composables":{types:"./dist/src/composables/index.d.ts"},"./types":{types:"./dist/src/types/index.d.ts"},"./utils":{types:"./dist/src/utils/index.d.ts"},"./*":"./*"},main:"./dist/tres.js",module:"./dist/tres.js",types:"./dist/index.d.ts",files:["*.d.ts","dist"],publishConfig:{access:"public"},scripts:{dev:"cd playground && npm run dev",build:"vite build",playground:"cd playground && npm run dev",test:"vitest","test:ci":"vitest run","test:ui":"vitest --ui --coverage.enabled=true",release:"release-it",coverage:"vitest run --coverage",lint:"eslint .","lint:fix":"eslint . --fix","docs:dev":"vitepress dev docs","docs:build":"vitepress build docs","docs:serve":"vitepress serve docs","docs:preview":"vitepress preview docs","docs:contributors":"esno scripts/update-contributors.ts",prepare:"node .husky/install.mjs"},peerDependencies:{three:">=0.133",vue:">=3.4"},dependencies:{"@alvarosabu/utils":"^3.2.0","@vue/devtools-api":"^6.6.3","@vueuse/core":"^10.11.0"},devDependencies:{"@release-it/conventional-changelog":"^8.0.1","@stackblitz/sdk":"^1.11.0","@tresjs/cientos":"3.9.0","@tresjs/eslint-config":"^1.1.0","@types/three":"^0.166.0","@typescript-eslint/eslint-plugin":"^7.16.0","@typescript-eslint/parser":"^7.16.0","@vitejs/plugin-vue":"^5.0.5","@vitest/coverage-c8":"^0.33.0","@vitest/coverage-v8":"^2.0.2","@vitest/ui":"^2.0.2","@vue/test-utils":"^2.4.6",eslint:"^9.6.0","eslint-plugin-vue":"^9.27.0",esno:"^4.7.0",gsap:"^3.12.5",husky:"^9.0.11",jsdom:"^24.1.0",kolorist:"^1.8.0",ohmyfetch:"^0.4.21",pathe:"^1.1.2","release-it":"^17.5.0","rollup-plugin-analyzer":"^4.0.0","rollup-plugin-copy":"^3.5.0","rollup-plugin-visualizer":"^5.12.0",sponsorkit:"^0.14.6",three:"^0.166.1",unocss:"^0.61.3",unplugin:"^1.11.0","unplugin-vue-components":"^0.27.2",vite:"^5.3.3","vite-plugin-banner":"^0.7.1","vite-plugin-dts":"3.9.1","vite-plugin-inspect":"^0.8.4","vite-plugin-require-transform":"^1.0.21","vite-svg-loader":"^5.1.0",vitepress:"1.3.0",vitest:"^2.0.2",vue:"^3.4.31","vue-demi":"^0.14.8"}};function fe(e){return typeof e>"u"}function Z(e){return Array.isArray(e)}function lt(e){return typeof e=="number"}function we(e){return typeof e=="string"}function G(e){return typeof e=="function"}function U(e){return e===Object(e)&&!Z(e)&&!G(e)}function F(e){return U(e)&&"isObject3D"in e&&!!e.isObject3D}function be(e){return U(e)&&"isCamera"in e&&!!e.isCamera}function ct(e){return U(e)&&"isBufferGeometry"in e&&!!e.isBufferGeometry}function ut(e){return U(e)&&"isMaterial"in e&&!!e.isMaterial}function ft(e){return U(e)&&"isLight"in e&&!!e.isLight}function dt(e){return U(e)&&"isFog"in e&&!!e.isFog}function pt(e){return U(e)&&"isScene"in e&&!!e.isScene}function ee(e){return F(e)||ct(e)||ut(e)||dt(e)}function mt(e){return U(e)&&!!e.isPrimitive}const Ce=({sizes:e})=>{const t=p.ref([]),n=p.computed(()=>t.value[0]),r=i=>{const a=i instanceof y.Camera?i:t.value.find(o=>o.uuid===i);if(!a)return;const c=t.value.filter(({uuid:o})=>o!==a.uuid);t.value=[a,...c]},s=(i,a=!1)=>{if(be(i)){const c=i;if(t.value.some(({uuid:o})=>o===c.uuid))return;a?r(c):t.value.push(c)}},l=i=>{if(be(i)){const a=i;t.value=t.value.filter(({uuid:c})=>c!==a.uuid)}};return p.watchEffect(()=>{e.aspectRatio.value&&t.value.forEach(i=>{!i.manual&&(i instanceof y.PerspectiveCamera||ht(i))&&(i instanceof y.PerspectiveCamera?i.aspect=e.aspectRatio.value:(i.left=e.width.value*-.5,i.right=e.width.value*.5,i.top=e.height.value*.5,i.bottom=e.height.value*-.5),i.updateProjectionMatrix())})}),p.onUnmounted(()=>{t.value=[]}),{camera:n,cameras:t,registerCamera:s,deregisterCamera:l,setCameraActive:r}};function ht(e){return e.hasOwnProperty("isOrthographicCamera")&&e.isOrthographicCamera}const Me=C.createEventHook(),Pe=C.createEventHook(),de=C.createEventHook(),K=new y.Clock;let te=0,ne=0;const{pause:gt,resume:Se,isActive:vt}=C.useRafFn(()=>{Me.trigger({delta:te,elapsed:ne,clock:K}),Pe.trigger({delta:te,elapsed:ne,clock:K}),de.trigger({delta:te,elapsed:ne,clock:K})},{immediate:!1});de.on(()=>{te=K.getDelta(),ne=K.getElapsedTime()});let ke=!1;const yt=()=>(ke||(ke=!0,Se()),{onBeforeLoop:Me.on,onLoop:Pe.on,onAfterLoop:de.on,pause:gt,resume:Se,isActive:vt}),_t=!0,re="[TresJS ▲ ■ ●] ";function W(){function e(...r){typeof r[0]=="string"?r[0]=re+r[0]:r.unshift(re),console.error(...r)}function t(...r){typeof r[0]=="string"?r[0]=re+r[0]:r.unshift(re),console.warn(...r)}function n(r,s){}return{logError:e,logWarning:t,logMessage:n}}function wt(e){return typeof e=="number"?[e,e,e]:e instanceof y.Vector3?[e.x,e.y,e.z]:e}function Ae(e){return e instanceof y.Color?e:Array.isArray(e)?new y.Color(...e):new y.Color(e)}class bt extends _e.Mesh{constructor(...n){super(...n);ye(this,"type","HightlightMesh");ye(this,"createTime");this.createTime=Date.now()}onBeforeRender(){const r=(Date.now()-this.createTime)/1e3,i=1+.07*Math.sin(2.5*r);this.scale.set(i,i,i)}}const Le=(e,t)=>{for(const n of Object.keys(t))t[n]instanceof Object&&Object.assign(t[n],Le(e[n],t[n]));return Object.assign(e||{},t),e},Ct=St("html,body,base,head,link,meta,style,title,address,article,aside,footer,header,hgroup,h1,h2,h3,h4,h5,h6,nav,section,div,dd,dl,dt,figcaption,figure,picture,hr,img,li,main,ol,p,pre,ul,a,b,abbr,bdi,bdo,br,cite,code,data,dfn,em,i,kbd,mark,q,rp,rt,ruby,s,samp,small,span,strong,sub,sup,time,u,var,wbr,area,audio,map,track,video,embed,object,param,source,canvas,script,noscript,del,ins,caption,col,colgroup,table,thead,tbody,td,th,tr,button,datalist,fieldset,form,input,label,legend,meter,optgroup,option,output,progress,select,textarea,details,dialog,menu,summary,template,blockquote,iframe,tfoot");function Oe(e){return e&&e.nodeType===1}function oe(e){return e.replace(/-([a-z])/g,(t,n)=>n.toUpperCase())}const Mt=/\B([A-Z])/g;function Pt(e){return e.replace(Mt,"-$1").toLowerCase()}function St(e,t){const n=Object.create(null),r=e.split(",");for(let s=0;s<r.length;s++)n[r[s]]=!0;return s=>!!n[s]}const De=(e,t)=>{if(!t)return;const n=Array.isArray(t)?t:t.match(/([^[.\]])+/g);return n==null?void 0:n.reduce((r,s)=>r&&r[s],e)},kt=(e,t,n)=>{const r=Array.isArray(t)?t:t.match(/([^[.\]])+/g);r&&r.reduce((s,l,i)=>(s[l]===void 0&&(s[l]={}),i===r.length-1&&(s[l]=n),s[l]),e)};function je(e,t){if(Oe(e)&&Oe(t)){const s=e.attributes,l=t.attributes;return s.length!==l.length?!1:Array.from(s).every(({name:i,value:a})=>t.getAttribute(i)===a)}if(e===t)return!0;if(e===null||typeof e!="object"||t===null||typeof t!="object")return!1;const n=Object.keys(e),r=Object.keys(t);if(n.length!==r.length)return!1;for(const s of n)if(!r.includes(s)||!je(e[s],t[s]))return!1;return!0}function At(e,t){if(!Array.isArray(e)||!Array.isArray(t)||e.length!==t.length)return!1;for(let n=0;n<e.length;n++)if(!je(e[n],t[n]))return!1;return!0}const Lt=Array.isArray;function Ot(e,t,n,r){const s=c=>{if(c.uuid===t)return c;for(const o of c.children){const u=s(o);if(u)return u}},l=s(e);if(!l){console.warn("Object with UUID not found in the scene.");return}let i=l;for(let c=0;c<n.length-1;c++)if(i[n[c]]!==void 0)i=i[n[c]];else{console.warn(`Property path is not valid: ${n.join(".")}`);return}const a=n[n.length-1];i[a]!==void 0?i[a]=r:console.warn(`Property path is not valid: ${n.join(".")}`)}function Dt(e){const t=new y.MeshBasicMaterial({color:11003607,transparent:!0,opacity:.2,depthTest:!1,side:y.DoubleSide});return new bt(e.geometry.clone(),t)}function jt(e){var n;let t=e.value;return e.value&&((n=e.value)!=null&&n.isMesh)&&(t=e.value.position),Array.isArray(e.value)&&(t=new y.Vector3(...t)),t}function Tt(e){return"map"in e}function Te(e){Tt(e)&&e.map&&e.map.dispose(),e.dispose()}function pe(e){var n,r;if(e.parent&&((n=e.removeFromParent)==null||n.call(e)),delete e.__tres,[...e.children].forEach(s=>pe(s)),!(e instanceof y.Scene)){const s=e;e&&((r=e.dispose)==null||r.call(e)),s.geometry&&(s.geometry.dispose(),delete s.geometry),Array.isArray(s.material)?(s.material.forEach(l=>Te(l)),delete s.material):s.material&&(Te(s.material),delete s.material)}}function xt(e,t){let n=0;for(let r=0;r<e.length;r++)t(e[r],r)&&(e[n]=e[r],n++);return e.length=n,e}function me(e,t){let n=e;if(t.includes("-")){const r=t.split("-");let s=r.shift();for(;n&&r.length;)s in n?(n=n[s],s=r.shift()):s=xe(s,r.shift());return{target:n,key:xe(s,...r)}}else return{target:n,key:t}}function xe(...e){return e.map((t,n)=>n===0?t:t.charAt(0).toUpperCase()+t.slice(1)).join("")}const Be=/-\d+$/;function Bt(e,t,n){if(we(n)){if(Be.test(n)){const l=n.replace(Be,""),{target:i,key:a}=me(e,l);if(!Array.isArray(i[a])){const c=i[a],o=[];o.__tresDetach=()=>{o.every(u=>fe(u))&&(i[a]=c)},i[a]=o}}const{target:r,key:s}=me(e,n);t.__tres.previousAttach=r[s],r[s]=Y(t)}else t.__tres.previousAttach=n(e,t)}function It(e,t,n){var r,s,l;if(we(n)){const{target:i,key:a}=me(e,n),c=t.__tres.previousAttach;c===void 0?delete i[a]:i[a]=c,"__tresDetach"in i&&i.__tresDetach()}else(s=(r=t.__tres)==null?void 0:r.previousAttach)==null||s.call(r,e,t);(l=t.__tres)==null||delete l.previousAttach}function q(e,t,n){const r=e;return r.__tres={type:"unknown",eventCount:0,root:n,handlers:{},memoizedProps:{},objects:[],parent:null,previousAttach:null,...t},r.__tres.attach||(r.isMaterial?r.__tres.attach="material":r.isBufferGeometry?r.__tres.attach="geometry":r.isFog&&(r.__tres.attach="fog")),r}function Ie(e){var n;const t=(n=e==null?void 0:e.__tres)==null?void 0:n.root;t&&t.render&&t.render.canBeInvalidated.value&&t.invalidate()}function Fn(e){}function Rt(e,t,n){var s;if(!G(e.setPixelRatio))return;let r=0;if(Z(n)&&n.length>=2){const[l,i]=n;r=y.MathUtils.clamp(t,l,i)}else lt(n)?r=n:r=t;r!==((s=e.getPixelRatio)==null?void 0:s.call(e))&&e.setPixelRatio(r)}function Et(e,t,n,r,s){const l=[...t.__tres.objects],i=Y(t);if(e=Y(e),i===e)return!0;const a=q(e,t.__tres??{},s),c=t.parent??t.__tres.parent??null,o={...t.__tres.memoizedProps};delete o.object;for(const u of l)Re(u,s),Ee(u,s);i.__tres.objects=[],r.remove(t);for(const[u,_]of Object.entries(o))r.patchProp(a,u,a[u],_);n(e),r.insert(t,c);for(const u of l)r.insert(u,t);return!0}function Y(e){return mt(e)?(e.object.__tres=e.__tres,e.object):e}function Re(e,t){var r,s,l,i;const n=((r=e.__tres)==null?void 0:r.parent)||t.scene.value;e.__tres&&(e.__tres.parent=null),n&&n.__tres&&"objects"in n.__tres&&xt(n.__tres.objects,a=>a!==e),(s=e.__tres)!=null&&s.attach?It(n,e,e.__tres.attach):((i=(l=e.parent)==null?void 0:l.remove)==null||i.call(l,Y(e)),e.parent=null)}function Ee(e,t){var n;(n=e.traverse)==null||n.call(e,r=>{var s;t.deregisterCamera(r),(s=t.eventManager)==null||s.deregisterPointerMissedObject(r)}),t.deregisterCamera(e),Ie(e)}const $t=Number.parseInt(y.REVISION.replace("dev","")),se={realistic:{shadows:!0,physicallyCorrectLights:!0,outputColorSpace:y.SRGBColorSpace,toneMapping:y.ACESFilmicToneMapping,toneMappingExposure:3,shadowMap:{enabled:!0,type:y.PCFSoftShadowMap}},flat:{toneMapping:y.NoToneMapping,toneMappingExposure:1}};function $e({canvas:e,options:t,contextParts:{sizes:n,render:r,invalidate:s,advance:l}}){const i=p.computed(()=>({alpha:C.toValue(t.alpha)??!0,depth:C.toValue(t.depth),canvas:C.unrefElement(e),context:C.toValue(t.context),stencil:C.toValue(t.stencil),antialias:C.toValue(t.antialias)??!0,precision:C.toValue(t.precision),powerPreference:C.toValue(t.powerPreference),premultipliedAlpha:C.toValue(t.premultipliedAlpha),preserveDrawingBuffer:C.toValue(t.preserveDrawingBuffer),logarithmicDepthBuffer:C.toValue(t.logarithmicDepthBuffer),failIfMajorPerformanceCaveat:C.toValue(t.failIfMajorPerformanceCaveat)})),a=p.shallowRef(new y.WebGLRenderer(i.value));function c(){t.renderMode==="on-demand"&&s()}p.watch(i,()=>{a.value.dispose(),a.value=new y.WebGLRenderer(i.value),c()}),p.watch([n.width,n.height],()=>{a.value.setSize(n.width.value,n.height.value),c()},{immediate:!0}),p.watch(()=>t.clearColor,c);const{pixelRatio:o}=C.useDevicePixelRatio(),{logError:u}=W(),f=(()=>{const v=new y.WebGLRenderer,S={shadowMap:{enabled:v.shadowMap.enabled,type:v.shadowMap.type},toneMapping:v.toneMapping,toneMappingExposure:v.toneMappingExposure,outputColorSpace:v.outputColorSpace};return v.dispose(),S})(),g=C.toValue(t.renderMode);return g==="on-demand"&&s(),g==="manual"&&setTimeout(()=>{l()},100),p.watchEffect(()=>{const v=C.toValue(t.preset);v&&(v in se||u(`Renderer Preset must be one of these: ${Object.keys(se).join(", ")}`),Le(a.value,se[v])),Rt(a.value,o.value,C.toValue(t.dpr)),g==="always"&&(r.frames.value=Math.max(1,r.frames.value));const S=(A,L)=>{const k=C.toValue(A),O=()=>{if(v)return De(se[v],L)};if(k!==void 0)return k;const j=O();return j!==void 0?j:De(f,L)},w=(A,L)=>kt(a.value,L,S(A,L));w(t.shadows,"shadowMap.enabled"),w(t.toneMapping??y.ACESFilmicToneMapping,"toneMapping"),w(t.shadowMapType,"shadowMap.type"),$t<150&&w(!t.useLegacyLights,"physicallyCorrectLights"),w(t.outputColorSpace,"outputColorSpace"),w(t.toneMappingExposure,"toneMappingExposure");const d=S(t.clearColor,"clearColor");d&&a.value.setClearColor(d?Ae(d):new y.Color(0))}),p.onUnmounted(()=>{a.value.dispose(),a.value.forceContextLoss()}),{renderer:a}}const Ut=e=>!!e&&e.constructor===Array;function Ue(e){const t={nodes:{},materials:{}};return e&&e.traverse(n=>{n.name&&(t.nodes[n.name]=n),n.material&&!t.materials[n.material.name]&&(t.materials[n.material.name]=n.material)}),t}async function Vt(e,t,n,r,s){const{logError:l}=W(),i=new e;s&&s(i),n&&n(i);const c=(Array.isArray(t)?t:[t]).map(o=>new Promise((u,_)=>{i.load(o,f=>{const g=f;g.scene&&Object.assign(g,Ue(g.scene)),u(g)},r,f=>_(l("[useLoader] - Failed to load resource",f)))}));return Ut(t)?await Promise.all(c):await c[0]}async function Ft(e,t){const n=new y.TextureLoader(t),r=s=>new Promise((l,i)=>{n.load(s,a=>l(a),()=>null,()=>{i(new Error("[useTextures] - Failed to load texture"))})});if(Lt(e)){const s=await Promise.all(e.map(l=>r(l)));return e.length>1?s:s[0]}else{const{map:s,displacementMap:l,normalMap:i,roughnessMap:a,metalnessMap:c,aoMap:o,alphaMap:u,matcap:_}=e;return{map:s?await r(s):null,displacementMap:l?await r(l):null,normalMap:i?await r(i):null,roughnessMap:a?await r(a):null,metalnessMap:c?await r(c):null,aoMap:o?await r(o):null,alphaMap:u?await r(u):null,matcap:_?await r(_):null}}}const Ve=(e,t)=>{const n=p.computed(()=>t.renderer.value.domElement),r=p.shallowRef([]),{x:s,y:l}=C.usePointer({target:n});let i=0;const{width:a,height:c,top:o,left:u}=C.useElementBounding(n),_=({x:h,y:D})=>{if(n.value)return{x:(h-u.value)/a.value*2-1,y:-((D-o.value)/c.value)*2+1}},f=({x:h,y:D})=>{if(t.camera.value)return t.raycaster.value.setFromCamera(new y.Vector2(h,D),t.camera.value),r.value=t.raycaster.value.intersectObjects(e.value,!0),r.value},g=h=>{const D=_({x:(h==null?void 0:h.clientX)??s.value,y:(h==null?void 0:h.clientY)??l.value});return D?f(D)||[]:[]},v=C.createEventHook(),S=C.createEventHook(),w=C.createEventHook(),d=C.createEventHook(),A=C.createEventHook(),L=C.createEventHook(),k=C.createEventHook(),O=C.createEventHook();function j(h){const D={};for(const z in h)typeof z!="function"&&(D[z]=h[z]);return D}const M=(h,D)=>{var rt,ot,st;const z=j(D),ue=new y.Vector3(D==null?void 0:D.clientX,D==null?void 0:D.clientY,0).unproject((rt=t.camera)==null?void 0:rt.value);h.trigger({...z,intersections:r.value,unprojectedPoint:ue,ray:(ot=t.raycaster)==null?void 0:ot.value.ray,camera:(st=t.camera)==null?void 0:st.value,sourceEvent:D,delta:i,stopPropagating:!1})};let T;const B=h=>{g(h),M(w,h),T=h},m=()=>{T&&B(T)};let P,x,E;const R=h=>{var D;P=(D=r.value[0])==null?void 0:D.object,i=0,x=new y.Vector2((h==null?void 0:h.clientX)??s.value,(h==null?void 0:h.clientY)??l.value),M(A,h)};let $,I=!1;const ce=h=>{var D,z,ue;h instanceof PointerEvent&&(r.value.length===0&&M(L,h),P===((D=r.value[0])==null?void 0:D.object)&&(E=new y.Vector2((h==null?void 0:h.clientX)??s.value,(h==null?void 0:h.clientY)??l.value),i=x==null?void 0:x.distanceTo(E),h.button===0?(M(v,h),$===((z=r.value[0])==null?void 0:z.object)?I=!0:($=(ue=r.value[0])==null?void 0:ue.object,I=!1)):h.button===2&&M(k,h)),M(d,h))},et=h=>{I&&(M(S,h),$=void 0,I=!1)},tt=h=>M(w,h),nt=h=>M(O,h);return n.value.addEventListener("pointerup",ce),n.value.addEventListener("pointerdown",R),n.value.addEventListener("pointermove",B),n.value.addEventListener("pointerleave",tt),n.value.addEventListener("dblclick",et),n.value.addEventListener("wheel",nt),p.onUnmounted(()=>{n!=null&&n.value&&(n.value.removeEventListener("pointerup",ce),n.value.removeEventListener("pointerdown",R),n.value.removeEventListener("pointermove",B),n.value.removeEventListener("pointerleave",tt),n.value.removeEventListener("dblclick",et),n.value.removeEventListener("wheel",nt))}),{intersects:r,onClick:h=>v.on(h).off,onDblClick:h=>S.on(h).off,onContextMenu:h=>k.on(h).off,onPointerMove:h=>w.on(h).off,onPointerUp:h=>d.on(h).off,onPointerDown:h=>A.on(h).off,onPointerMissed:h=>L.on(h).off,onWheel:h=>O.on(h).off,forceUpdate:m}};function Wt(){const{logWarning:e}=W();function t(l,i,a){let c=null;return l.traverse(o=>{o[i]===a&&(c=o)}),c||e(`Child with ${i} '${a}' not found.`),c}function n(l,i,a){const c=[];return l.traverse(o=>{o[i].includes(a)&&c.push(o)}),c.length||e(`Children with ${i} '${a}' not found.`),c}function r(l,i){return t(l,"name",i)}function s(l,i){return n(l,"name",i)}return{seek:t,seekByName:r,seekAll:n,seekAllByName:s}}function he(e){let t=0;return e.traverse(n=>{if(n.isMesh&&n.geometry&&n.type!=="HightlightMesh"){const r=n.geometry,s=r.attributes.position.count*3*Float32Array.BYTES_PER_ELEMENT,l=r.index?r.index.count*Uint32Array.BYTES_PER_ELEMENT:0,i=r.attributes.normal?r.attributes.normal.count*3*Float32Array.BYTES_PER_ELEMENT:0,a=r.attributes.uv?r.attributes.uv.count*2*Float32Array.BYTES_PER_ELEMENT:0,c=s+l+i+a;t+=c}}),t}function Nt(e){return(e/1024).toFixed(2)}const ie=p.ref({}),ae=e=>Object.assign(ie.value,e);function Fe(e,t,n){var B;const r=p.shallowRef(),s=p.shallowRef();e&&(r.value=e),t&&(s.value=t);const l=m=>{var P;return((P=m.__tres)==null?void 0:P.eventCount)>0},i=m=>{var P;return((P=m.children)==null?void 0:P.some(x=>i(x)))||l(m)},a=p.shallowRef(((B=r.value)==null?void 0:B.children).filter(i)||[]);function c(m,P){if(Array.isArray(m))for(const x of m)x(P);typeof m=="function"&&m(P)}function o(m,P){const x=[],E=()=>P.stopPropagating=!0;P.stopPropagation=E;for(const R of P==null?void 0:P.intersections){if(P.stopPropagating)return;P={...P,...R};const{object:$}=R;P.eventObject=$,c($[m],P),x.push($);let I=$.parent;for(;I!==null&&!P.stopPropagating&&!x.includes(I);)P.eventObject=I,c(I[m],P),x.push(I),I=I.parent;const ce=Pt(m.slice(2));n(ce,{intersection:R,event:P})}}const{onClick:u,onDblClick:_,onContextMenu:f,onPointerMove:g,onPointerDown:v,onPointerUp:S,onPointerMissed:w,onWheel:d,forceUpdate:A}=Ve(a,t);S(m=>o("onPointerUp",m)),v(m=>o("onPointerDown",m)),u(m=>o("onClick",m)),_(m=>o("onDoubleClick",m)),f(m=>o("onContextMenu",m)),d(m=>o("onWheel",m));let L=[];g(m=>{const P=m.intersections.map(({object:E})=>E),x=m.intersections;L.forEach(({object:E})=>{P.includes(E)||(m.intersections=L,o("onPointerLeave",m),o("onPointerOut",m))}),m.intersections=x,m.intersections.forEach(({object:E})=>{L.includes(E)||(o("onPointerEnter",m),o("onPointerOver",m))}),o("onPointerMove",m),L=m.intersections});const k=[];w(m=>{const P=()=>m.stopPropagating=!0;m.stopPropagation=P,k.forEach(x=>{m.stopPropagating||(m.eventObject=x,c(x.onPointerMissed,m))}),n("pointer-missed",{event:m})});function O(m){ee(m)&&F(m)&&a.value.push(m)}function j(m){if(ee(m)&&F(m)){const P=a.value.indexOf(m);P>-1&&a.value.splice(P,1)}}function M(m){ee(m)&&F(m)&&m.onPointerMissed&&k.push(m)}function T(m){if(ee(m)&&F(m)){const P=k.indexOf(m);P>-1&&k.splice(P,1)}}return t.eventManager={forceUpdate:A,registerObject:O,deregisterObject:j,registerPointerMissedObject:M,deregisterPointerMissedObject:T},{forceUpdate:A,registerObject:O,deregisterObject:j,registerPointerMissedObject:M,deregisterPointerMissedObject:T}}function zt(e,t,n=10){const r=C.toValue(e)?C.useWindowSize():C.useElementSize(p.computed(()=>C.toValue(t).parentElement)),s=p.readonly(C.refDebounced(r.width,n)),l=p.readonly(C.refDebounced(r.height,n)),i=p.computed(()=>s.value/l.value);return{height:l,width:s,aspectRatio:i}}function ge(){const e=new Map,t=new Set;let n=0,r=!1;const s=()=>{const o=Array.from(e.entries()).sort((u,_)=>{const f=u[1].priority-_[1].priority;return f===0?u[1].addI-_[1].addI:f});t.clear(),o.forEach(u=>t.add(u[0]))},l=o=>{e.delete(o),t.delete(o)};return{on:(o,u=0)=>{e.set(o,{priority:u,addI:n++});const _=()=>l(o);return C.tryOnScopeDispose(_),r=!0,{off:_}},off:l,trigger:(...o)=>{r&&(s(),r=!1),t.forEach(u=>u(...o))},dispose:()=>{e.clear(),t.clear()},get count(){return e.size}}}function We(){let e=!0,t=!0,n=!1;const r=new y.Clock(!1),s=p.ref(r.running),l=p.ref(!1);let i;const a=y.MathUtils.generateUUID();let c=null;const o=ge(),u=ge(),_=ge();j();let f={};function g(M){f=M}function v(M,T,B=0){switch(T){case"before":return o.on(M,B);case"render":return c||(c=M),u.dispose(),u.on(M);case"after":return _.on(M,B)}}function S(){t&&(t=!1,j(),O())}function w(){t=!0,j(),cancelAnimationFrame(i)}function d(){n=!1,j()}function A(){n=!0,j()}function L(){l.value=!0}function k(){l.value=!1}function O(){if(!e){i=requestAnimationFrame(O);return}const M=r.getDelta(),T=r.getElapsedTime(),B={camera:p.unref(f.camera),scene:p.unref(f.scene),renderer:p.unref(f.renderer),raycaster:p.unref(f.raycaster),controls:p.unref(f.controls),invalidate:f.invalidate,advance:f.advance},m={delta:M,elapsed:T,clock:r,...B};s.value&&o.trigger(m),l.value||(u.count?u.trigger(m):c&&c(m)),s.value&&_.trigger(m),i=requestAnimationFrame(O)}function j(){const M=!t&&!n;r.running!==M&&(r.running?r.stop():r.start()),s.value=r.running}return{loopId:a,register:(M,T,B)=>v(M,T,B),start:S,stop:w,pause:A,resume:d,pauseRender:L,resumeRender:k,isRenderPaused:l,isActive:s,setContext:g,setReady:M=>e=M}}function Gt(e,t,n=100){n=n<=0?100:n;const r=C.createEventHook(),s=new Set;let l=!1,i=!1,a=null;function c(){a&&clearTimeout(a),!i&&!l&&e()?(r.trigger(t),s.forEach(f=>f()),s.clear(),l=!0):!i&&!l&&(a=setTimeout(c,n))}function o(){i=!0,a&&clearTimeout(a)}c();const u=(f,...g)=>{f(...g)};return{on:f=>{if(l)return u(f,t),{off:()=>{}};{const g=r.on(f);return s.add(g.off),r.on(f)}},off:r.off,trigger:r.trigger,cancel:o}}const Q=new WeakMap;function Ne(e){if(e=e||X(),Q.has(e))return Q.get(e);const t=100,n=Date.now(),l=Gt(()=>{if(Date.now()-n>=t)return!0;{const i=e.renderer.value,a=(i==null?void 0:i.domElement)||{width:0,height:0};return!!(i&&a.width>0&&a.height>0)}},e);return Q.set(e,l),l}function qt(e){const t=X();if(t)return Q.has(t)?Q.get(t).on(e):Ne(t).on(e)}function ze({scene:e,canvas:t,windowSize:n,disableRender:r,rendererOptions:s,emit:l}){const i=p.shallowRef(e),a=zt(n,t),{camera:c,cameras:o,registerCamera:u,deregisterCamera:_,setCameraActive:f}=Ce({sizes:a,scene:e}),g={mode:p.ref(s.renderMode||"always"),priority:p.ref(0),frames:p.ref(0),maxFrames:60,canBeInvalidated:p.computed(()=>g.mode.value==="on-demand"&&g.frames.value===0)};function v(R=1){s.renderMode==="on-demand"&&(g.frames.value=Math.min(g.maxFrames,g.frames.value+R))}function S(){s.renderMode==="manual"&&(g.frames.value=1)}const{renderer:w}=$e({scene:e,canvas:t,options:s,emit:l,contextParts:{sizes:a,camera:c,render:g,invalidate:v,advance:S},disableRender:r}),d={sizes:a,scene:i,camera:c,cameras:p.readonly(o),renderer:w,raycaster:p.shallowRef(new y.Raycaster),controls:p.ref(null),perf:{maxFrames:160,fps:{value:0,accumulator:[]},memory:{currentMem:0,allocatedMem:0,accumulator:[]}},render:g,advance:S,extend:ae,invalidate:v,registerCamera:u,setCameraActive:f,deregisterCamera:_,loop:We()};p.provide("useTres",d),d.scene.value.__tres={root:d},d.loop.register(()=>{c.value&&g.frames.value>0&&(w.value.render(e,c.value),l("render",d.renderer.value)),g.priority.value=0,g.mode.value==="always"?g.frames.value=1:g.frames.value=Math.max(0,g.frames.value-1)},"render");const{on:A,cancel:L}=Ne(d);d.loop.setReady(!1),d.loop.start(),A(()=>{l("ready",d),d.loop.setReady(!0),Fe(e,d,l)}),p.onUnmounted(()=>{L(),d.loop.stop()});const k=100,O=C.useFps({every:k}),{isSupported:j,memory:M}=C.useMemory({interval:k}),T=160;let B=performance.now();const m=({timestamp:R})=>{d.scene.value&&(d.perf.memory.allocatedMem=he(d.scene.value)),R-B>=k&&(B=R,d.perf.fps.accumulator.push(O.value),d.perf.fps.accumulator.length>T&&d.perf.fps.accumulator.shift(),d.perf.fps.value=O.value,j.value&&M.value&&(d.perf.memory.accumulator.push(M.value.usedJSHeapSize/1024/1024),d.perf.memory.accumulator.length>T&&d.perf.memory.accumulator.shift(),d.perf.memory.currentMem=d.perf.memory.accumulator.reduce(($,I)=>$+I,0)/d.perf.memory.accumulator.length))};let P=0;const x=1,{pause:E}=C.useRafFn(({delta:R})=>{window.__TRES__DEVTOOLS__&&(m({timestamp:performance.now()}),P+=R,P>=x&&(window.__TRES__DEVTOOLS__.cb(d),P=0))},{immediate:!0});return p.onUnmounted(()=>{E()}),d}function X(){const e=p.inject("useTres");if(!e)throw new Error("useTresContext must be used together with useTresContextProvider");return e}const Yt=X;function Jt(){const{camera:e,scene:t,renderer:n,loop:r,raycaster:s,controls:l,invalidate:i,advance:a}=X();r.setContext({camera:e,scene:t,renderer:n,raycaster:s,controls:l,invalidate:i,advance:a});function c(_,f=0){return r.register(_,"before",f)}function o(_){return r.register(_,"render")}function u(_,f=0){return r.register(_,"after",f)}return{pause:r.pause,resume:r.resume,pauseRender:r.pauseRender,resumeRender:r.resumeRender,isActive:r.isActive,onBeforeRender:c,render:o,onAfterRender:u}}function Kt(e,t={},n={}){let r=e;const s=a=>{r=a};let l=new Proxy({},{});const i={has(a,c){return c in t||c in r},get(a,c,o){return c in t?t[c](r):r[c]},set(a,c,o){return n[c]?n[c](o,r,l,s):r[c]=o,!0}};return l=new Proxy({},i),l}const{logError:Ge}=W(),qe=["onClick","onContextMenu","onPointerMove","onPointerEnter","onPointerLeave","onPointerOver","onPointerOut","onDoubleClick","onPointerDown","onPointerUp","onPointerCancel","onPointerMissed","onLostPointerCapture","onWheel"],Qt=e=>{const t=e.scene.value;function n(o,u,_,f){if(f||(f={}),f.args||(f.args=[]),o==="template"||Ct(o))return null;let g=o.replace("Tres",""),v;if(o==="primitive"){(!U(f.object)||p.isRef(f.object))&&Ge("Tres primitives need an 'object' prop, whose value is an object or shallowRef<object>"),g=f.object.type;const S={};v=Kt(f.object,{object:d=>d,isPrimitive:()=>!0,__tres:()=>S},{object:(d,A,L,k)=>{Et(d,L,k,{patchProp:l,remove:s,insert:r},e)},__tres:d=>{Object.assign(S,d)}})}else{const S=ie.value[g];S||Ge(`${g} is not defined on the THREE namespace. Use extend to add it to the catalog.`),v=new S(...f.args)}return v?(v.isCamera&&(f!=null&&f.position||v.position.set(3,3,3),f!=null&&f.lookAt||v.lookAt(0,0,0)),v=q(v,{...v.__tres,type:g,memoizedProps:f,eventCount:0,primitive:o==="primitive",attach:f.attach},e),v):null}function r(o,u){var g,v,S;if(!o)return;u=u||t;const _=o.__tres?o:q(o,{},e),f=u.__tres?u:q(u,{},e);o=Y(_),u=Y(f),o.__tres&&((g=o.__tres)==null?void 0:g.eventCount)>0&&((v=e.eventManager)==null||v.registerObject(o)),e.registerCamera(o),(S=e.eventManager)==null||S.registerPointerMissedObject(o),_.__tres.attach?Bt(f,_,_.__tres.attach):F(o)&&F(f)&&(f.add(o),o.dispatchEvent({type:"added"})),_.__tres.parent=f,f.__tres.objects&&!f.__tres.objects.includes(_)&&f.__tres.objects.push(_)}function s(o,u){var v,S,w,d;if(!o)return;o!=null&&o.__tres&&((v=o.__tres)==null?void 0:v.eventCount)>0&&((S=e.eventManager)==null||S.deregisterObject(o)),u=fe(u)?"default":u;const _=(w=o.__tres)==null?void 0:w.dispose;fe(_)||(_===null?u=!1:u=_);const f=(d=o.__tres)==null?void 0:d.primitive,g=u==="default"?!f:!!u;if(o.__tres&&"objects"in o.__tres&&[...o.__tres.objects].forEach(A=>s(A,u)),g&&o.children&&[...o.children].forEach(A=>s(A,u)),Re(o,e),Ee(o,e),g&&!pt(o)){if(G(u))u(o);else if(G(o.dispose))try{o.dispose()}catch{}}"__tres"in o&&delete o.__tres}function l(o,u,_,f){var A,L;if(!o)return;let g=o,v=u;if(o.__tres&&(o.__tres.memoizedProps[u]=f),u==="attach"){const k=((A=o.__tres)==null?void 0:A.parent)||o.parent;s(o),q(o,{attach:f},e),k&&r(o,k);return}if(u==="dispose"){o.__tres||(o=q(o,{},e)),o.__tres.dispose=f;return}if(F(o)&&v==="blocks-pointer-events"){f||f===""?o[v]=f:delete o[v];return}qe.includes(u)&&o.__tres&&(o.__tres.eventCount+=1);let S=oe(v),w=g==null?void 0:g[S];if(v==="args"){const k=o,O=_??[],j=f??[],M=((L=o.__tres)==null?void 0:L.type)||o.type;M&&O.length&&!At(O,j)&&(g=Object.assign(k,new ie.value[M](...f)));return}if(g.type==="BufferGeometry"){if(v==="args")return;g.setAttribute(oe(v),new y.BufferAttribute(...f));return}if(v.includes("-")&&w===void 0){const k=v.split("-");w=k.reduce((O,j)=>O[oe(j)],g),v=k.pop(),S=v,w!=null&&w.set||(g=k.reduce((O,j)=>O[oe(j)],g))}let d=f;if(d===""&&(d=!0),G(w)){qe.includes(u)||(Z(d)?o[S](...d):o[S](d)),S.startsWith("on")&&G(d)&&(g[S]=d);return}!(w!=null&&w.set)&&!G(w)?g[S]=d:w.constructor===d.constructor&&(w!=null&&w.copy)?w==null||w.copy(d):Z(d)?w.set(...d):!w.isColor&&w.setScalar?w.setScalar(d):w.set(d),Ie(o)}function i(o){var u;return((u=o==null?void 0:o.__tres)==null?void 0:u.parent)||null}function a(o){const u=q(new y.Object3D,{type:"Comment"},e);return u.name=o,u}function c(o){var g;const u=i(o),_=((g=u==null?void 0:u.__tres)==null?void 0:g.objects)||[],f=_.indexOf(o);return f<0||f>=_.length-1?null:_[f+1]}return{insert:r,remove:s,createElement:n,patchProp:l,parentNode:i,createText:()=>void 0,createComment:a,setText:()=>void 0,setElementText:()=>void 0,nextSibling:c,querySelector:()=>void 0,setScopeId:()=>void 0,cloneNode:()=>void 0,insertStaticContent:()=>void 0}};function Xt(){return Ye().__VUE_DEVTOOLS_GLOBAL_HOOK__}function Ye(){return typeof navigator<"u"&&typeof window<"u"?window:typeof globalThis<"u"?globalThis:{}}const Ht=typeof Proxy=="function",Zt="devtools-plugin:setup",en="plugin:settings:set";let J,ve;function tn(){var e;return J!==void 0||(typeof window<"u"&&window.performance?(J=!0,ve=window.performance):typeof globalThis<"u"&&(!((e=globalThis.perf_hooks)===null||e===void 0)&&e.performance)?(J=!0,ve=globalThis.perf_hooks.performance):J=!1),J}function nn(){return tn()?ve.now():Date.now()}class rn{constructor(t,n){this.target=null,this.targetQueue=[],this.onQueue=[],this.plugin=t,this.hook=n;const r={};if(t.settings)for(const i in t.settings){const a=t.settings[i];r[i]=a.defaultValue}const s=`__vue-devtools-plugin-settings__${t.id}`;let l=Object.assign({},r);try{const i=localStorage.getItem(s),a=JSON.parse(i);Object.assign(l,a)}catch{}this.fallbacks={getSettings(){return l},setSettings(i){try{localStorage.setItem(s,JSON.stringify(i))}catch{}l=i},now(){return nn()}},n&&n.on(en,(i,a)=>{i===this.plugin.id&&this.fallbacks.setSettings(a)}),this.proxiedOn=new Proxy({},{get:(i,a)=>this.target?this.target.on[a]:(...c)=>{this.onQueue.push({method:a,args:c})}}),this.proxiedTarget=new Proxy({},{get:(i,a)=>this.target?this.target[a]:a==="on"?this.proxiedOn:Object.keys(this.fallbacks).includes(a)?(...c)=>(this.targetQueue.push({method:a,args:c,resolve:()=>{}}),this.fallbacks[a](...c)):(...c)=>new Promise(o=>{this.targetQueue.push({method:a,args:c,resolve:o})})})}async setRealTarget(t){this.target=t;for(const n of this.onQueue)this.target.on[n.method](...n.args);for(const n of this.targetQueue)n.resolve(await this.target[n.method](...n.args))}}function on(e,t){const n=e,r=Ye(),s=Xt(),l=Ht&&n.enableEarlyProxy;if(s&&(r.__VUE_DEVTOOLS_PLUGIN_API_AVAILABLE__||!l))s.emit(Zt,e,t);else{const i=l?new rn(n,s):null;(r.__VUE_DEVTOOLS_PLUGINS__=r.__VUE_DEVTOOLS_PLUGINS__||[]).push({pluginDescriptor:n,setupFn:t,proxy:i}),i&&t(i.proxiedTarget)}}function sn(e,t){const n=`▲ ■ ●${e}`;typeof Je=="function"?Je(n,t):console.log(n)}function Je(e,t){throw new Error(e+t)}const Ke=e=>{const t={id:e.uuid,label:e.type,children:[],tags:[]};e.name!==""&&t.tags.push({label:e.name,textColor:5750629,backgroundColor:15793395});const n=he(e);return n>0&&t.tags.push({label:`${Nt(n)} KB`,textColor:15707189,backgroundColor:16775644,tooltip:"Memory usage"}),e.type.includes("Light")&&(ft(e)&&t.tags.push({label:`${e.intensity}`,textColor:9738662,backgroundColor:16316922,tooltip:"Intensity"}),t.tags.push({label:`#${new y.Color(e.color).getHexString()}`,textColor:9738662,backgroundColor:16316922,tooltip:"Color"})),e.type.includes("Camera")&&(t.tags.push({label:`${e.fov}°`,textColor:9738662,backgroundColor:16316922,tooltip:"Field of view"}),t.tags.push({label:`x: ${Math.round(e.position.x)} y: ${Math.round(e.position.y)} z: ${Math.round(e.position.z)}`,textColor:9738662,backgroundColor:16316922,tooltip:"Position"})),t};function Qe(e,t,n=""){e.children.forEach(r=>{if(r.type==="HightlightMesh"||n&&!r.type.includes(n)&&!r.name.includes(n))return;const s=Ke(r);t.children.push(s),Qe(r,s,n)})}const an=[],H="tres:inspector",ln=p.reactive({sceneGraph:null});function cn(e,t){on({id:"dev.esm.tres",label:"TresJS 🪐",logo:"https://raw.githubusercontent.com/Tresjs/tres/main/public/favicon.svg",packageName:"tresjs",homepage:"https://tresjs.org",componentStateTypes:an,app:e},n=>{typeof n.now!="function"&&sn("You seem to be using an outdated version of Vue Devtools. Are you still using the Beta release instead of the stable one? You can find the links at https://devtools.vuejs.org/guide/installation.html."),n.addInspector({id:H,label:"TresJS 🪐",icon:"account_tree",treeFilterPlaceholder:"Search instances"}),setInterval(()=>{n.sendInspectorTree(H)},1e3),setInterval(()=>{n.notifyComponentUpdate()},5e3),n.on.getInspectorTree(l=>{if(l.inspectorId===H){const i=Ke(t.scene.value);Qe(t.scene.value,i,l.filter),ln.sceneGraph=i,l.rootNodes=[i]}});let r=null,s=null;n.on.getInspectorState(l=>{var i;if(l.inspectorId===H){const[a]=t.scene.value.getObjectsByProperty("uuid",l.nodeId);if(!a)return;if(s&&r&&r.parent&&s.remove(r),a.isMesh){const c=Dt(a);a.add(c),r=c,s=a}l.state={object:Object.entries(a).map(([c,o])=>c==="children"?{key:c,value:o.filter(u=>u.type!=="HightlightMesh")}:{key:c,value:o,editable:!0}).filter(({key:c})=>c!=="parent")},a.isScene&&(l.state.info={memory:he(a),objects:a.children.length,calls:t.renderer.value.info.render.calls,triangles:t.renderer.value.info.render.triangles,points:t.renderer.value.info.render.points,lines:t.renderer.value.info.render.lines},l.state.programs=((i=t.renderer.value.info.programs)==null?void 0:i.map(c=>({key:c.name,value:{...c,vertexShader:c.vertexShader,attributes:c.getAttributes(),uniforms:c.getUniforms()}})))||[])}}),n.on.editInspectorState(l=>{l.inspectorId===H&&Ot(t.scene.value,l.nodeId,l.path,l.state.value)})})}const un=["data-scene","data-tres"],Xe=p.defineComponent({__name:"TresCanvas",props:{shadows:{type:Boolean,default:void 0},clearColor:{},toneMapping:{},shadowMapType:{},useLegacyLights:{type:Boolean,default:void 0},outputColorSpace:{},toneMappingExposure:{},renderMode:{default:"always"},dpr:{},camera:{},preset:{},windowSize:{type:Boolean,default:void 0},disableRender:{type:Boolean,default:void 0},context:{},precision:{},alpha:{type:Boolean,default:void 0},premultipliedAlpha:{type:Boolean},antialias:{type:Boolean,default:void 0},stencil:{type:Boolean,default:void 0},preserveDrawingBuffer:{type:Boolean,default:void 0},powerPreference:{},depth:{type:Boolean,default:void 0},logarithmicDepthBuffer:{type:Boolean,default:void 0},failIfMajorPerformanceCaveat:{type:Boolean,default:void 0}},emits:["render","click","double-click","context-menu","pointer-move","pointer-up","pointer-down","pointer-enter","pointer-leave","pointer-over","pointer-out","pointer-missed","wheel","ready"],setup(e,{expose:t,emit:n}){var w;const r=e,s=n,l=p.useSlots(),{logWarning:i}=W(),a=p.ref(),c=p.shallowRef(new y.Scene),o=(w=p.getCurrentInstance())==null?void 0:w.appContext.app;ae(_e);const u=(d,A=!1)=>p.defineComponent({setup(){var k;const L=(k=p.getCurrentInstance())==null?void 0:k.appContext;return L&&(L.app=o),p.provide("useTres",d),p.provide("extend",ae),typeof window<"u"&&cn(L==null?void 0:L.app,d),()=>p.h(p.Fragment,null,A?[]:l.default())}}),_=(d,A=!1)=>{const L=u(d,A),{render:k}=p.createRenderer(Qt(d));k(p.h(L),c.value)},f=(d,A=!1)=>{pe(d.scene.value),A&&(d.renderer.value.dispose(),d.renderer.value.renderLists.dispose(),d.renderer.value.forceContextLoss()),c.value.__tres={root:d}},g=p.computed(()=>r.disableRender),v=p.shallowRef(null);t({context:v,dispose:()=>f(v.value,!0)});const S=()=>{f(v.value),_(v.value,!0)};return p.onMounted(()=>{const d=a;v.value=ze({scene:c.value,canvas:d,windowSize:r.windowSize??!1,disableRender:g.value??!1,rendererOptions:r,emit:s});const{registerCamera:A,camera:L,cameras:k,deregisterCamera:O}=v.value;_(v.value);const j=()=>{const M=new y.PerspectiveCamera(45,window.innerWidth/window.innerHeight,.1,1e3);M.position.set(3,3,3),M.lookAt(0,0,0),A(M);const T=p.watchEffect(()=>{k.value.length>=2&&(M.removeFromParent(),O(M),T==null||T())})};p.watch(()=>r.camera,(M,T)=>{M&&A(M),T&&(T.removeFromParent(),O(T))},{immediate:!0}),L.value||(i("No camera found. Creating a default perspective camera. To have full control over a camera, please add one to the scene."),j())}),p.onUnmounted(S),(d,A)=>(p.openBlock(),p.createElementBlock("canvas",{ref_key:"canvas",ref:a,"data-scene":c.value.uuid,class:p.normalizeClass(d.$attrs.class),"data-tres":`tresjs ${p.unref(at).version}`,style:p.normalizeStyle({display:"block",width:"100%",height:"100%",position:d.windowSize?"fixed":"relative",top:0,left:0,pointerEvents:"auto",touchAction:"none",...d.$attrs.style})},null,14,un))}}),fn=["TresCanvas","TresLeches","TresScene"],dn={template:{compilerOptions:{isCustomElement:e=>e.startsWith("Tres")&&!fn.includes(e)||e==="primitive"}}},pn={mounted:(e,t)=>{if(t.arg){console.log(`v-log:${t.arg}`,e[t.arg]);return}console.log("v-log",e)}};class He extends y.Line{constructor(t,n){const r=[1,1,0,-1,1,0,-1,-1,0,1,-1,0,1,1,0],s=new y.BufferGeometry;s.setAttribute("position",new y.Float32BufferAttribute(r,3)),s.computeBoundingSphere();const l=new y.LineBasicMaterial({fog:!1});super(s,l),this.light=t,this.color=n,this.type="RectAreaLightHelper";const i=[1,1,0,-1,1,0,-1,-1,0,1,1,0,-1,-1,0,1,-1,0],a=new y.BufferGeometry;a.setAttribute("position",new y.Float32BufferAttribute(i,3)),a.computeBoundingSphere(),this.add(new y.Mesh(a,new y.MeshBasicMaterial({side:y.BackSide,fog:!1})))}updateMatrixWorld(){if(this.scale.set(.5*this.light.width,.5*this.light.height,1),this.color!==void 0)this.material.color.set(this.color),this.children[0].material.color.set(this.color);else{this.material.color.copy(this.light.color).multiplyScalar(this.light.intensity);const t=this.material.color,n=Math.max(t.r,t.g,t.b);n>1&&t.multiplyScalar(1/n),this.children[0].material.color.copy(this.material.color)}this.matrixWorld.extractRotation(this.light.matrixWorld).scale(this.scale).copyPosition(this.light.matrixWorld),this.children[0].matrixWorld.copy(this.matrixWorld)}dispose(){this.geometry.dispose(),this.material.dispose(),this.children[0].geometry.dispose(),this.children[0].material.dispose()}}const{logWarning:Ze}=W();let le,N;const mn={DirectionalLight:y.DirectionalLightHelper,PointLight:y.PointLightHelper,SpotLight:y.SpotLightHelper,HemisphereLight:y.HemisphereLightHelper,RectAreaLight:He},hn={mounted:e=>{if(!e.isLight){Ze(`${e.type} is not a light`);return}le=mn[e.type],e.parent.add(new le(e,1,e.color.getHex()))},updated:e=>{N=e.parent.children.find(t=>t instanceof le),!(N instanceof He)&&N.update()},unmounted:e=>{if(!e.isLight){Ze(`${e.type} is not a light`);return}N=e.parent.children.find(t=>t instanceof le),N&&N.dispose&&N.dispose(),e.parent.remove(N)}},{logWarning:gn}=W();let V=null;const vn={updated:(e,t)=>{var s;const n=jt(t);if(!n){gn(`v-distance-to: problem with binding value: ${t.value}`);return}V&&(V.dispose(),e.parent.remove(V));const r=n.clone().sub(e.position);r.normalize(),V=new y.ArrowHelper(r,e.position,e.position.distanceTo(n),16776960),e.parent.add(V),console.table([["Distance:",e.position.distanceTo(n)],[`origin: ${e.name||e.type}`,`x:${e.position.x}, y:${e.position.y}, z:${(s=e.position)==null?void 0:s.z}`],[`Destiny: ${e.name||e.type}`,`x:${n.x}, y:${n.y}, z:${n==null?void 0:n.z}`]])},unmounted:e=>{V==null||V.dispose(),e.parent.remove(V)}},yn={install(e){e.component("TresCanvas",Xe)}};b.TresCanvas=Xe,b.catalogue=ie,b.createRenderLoop=We,b.default=yn,b.dispose=pe,b.extend=ae,b.isProd=_t,b.normalizeColor=Ae,b.normalizeVectorFlexibleParam=wt,b.onTresReady=qt,b.templateCompilerOptions=dn,b.trasverseObjects=Ue,b.useCamera=Ce,b.useLoader=Vt,b.useLogger=W,b.useLoop=Jt,b.useRaycaster=Ve,b.useRenderLoop=yt,b.useRenderer=$e,b.useSeek=Wt,b.useTexture=Ft,b.useTres=Yt,b.useTresContext=X,b.useTresContextProvider=ze,b.useTresEventManager=Fe,b.vDistanceTo=vn,b.vLightHelper=hn,b.vLog=pn,Object.defineProperties(b,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}})});
|
|
8
|
+
(function(b,p){typeof exports=="object"&&typeof module<"u"?p(exports,require("vue"),require("three"),require("@vueuse/core")):typeof define=="function"&&define.amd?define(["exports","vue","three","@vueuse/core"],p):(b=typeof globalThis<"u"?globalThis:b||self,p(b.tres={},b.Vue,b.Three,b.VueUseCore))})(this,function(b,p,y,C){"use strict";var _n=Object.defineProperty;var wn=(b,p,y)=>p in b?_n(b,p,{enumerable:!0,configurable:!0,writable:!0,value:y}):b[p]=y;var ye=(b,p,y)=>wn(b,typeof p!="symbol"?p+"":p,y);function it(e){const t=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(e){for(const n in e)if(n!=="default"){const r=Object.getOwnPropertyDescriptor(e,n);Object.defineProperty(t,n,r.get?r:{enumerable:!0,get:()=>e[n]})}}return t.default=e,Object.freeze(t)}const _e=it(y),at={name:"@tresjs/core",type:"module",version:"4.2.7",packageManager:"pnpm@9.1.4",description:"Declarative ThreeJS using Vue Components",author:"Alvaro Saburido <hola@alvarosaburido.dev> (https://github.com/alvarosabu/)",license:"MIT",repository:{type:"git",url:"git+https://github.com/Tresjs/tres.git"},keywords:["vue","3d","threejs","three","threejs-vue"],sideEffects:!1,exports:{".":{types:"./dist/index.d.ts",import:"./dist/tres.js",require:"./dist/tres.umd.cjs"},"./components":{types:"./dist/src/components/index.d.ts"},"./composables":{types:"./dist/src/composables/index.d.ts"},"./types":{types:"./dist/src/types/index.d.ts"},"./utils":{types:"./dist/src/utils/index.d.ts"},"./*":"./*"},main:"./dist/tres.js",module:"./dist/tres.js",types:"./dist/index.d.ts",files:["*.d.ts","dist"],publishConfig:{access:"public"},scripts:{dev:"cd playground && npm run dev",build:"vite build",playground:"cd playground && npm run dev",test:"vitest","test:ci":"vitest run","test:ui":"vitest --ui --coverage.enabled=true",release:"release-it",coverage:"vitest run --coverage",lint:"eslint .","lint:fix":"eslint . --fix","docs:dev":"vitepress dev docs","docs:build":"vitepress build docs","docs:serve":"vitepress serve docs","docs:preview":"vitepress preview docs","docs:contributors":"esno scripts/update-contributors.ts",prepare:"node .husky/install.mjs"},peerDependencies:{three:">=0.133",vue:">=3.4"},dependencies:{"@alvarosabu/utils":"^3.2.0","@vue/devtools-api":"^6.6.3","@vueuse/core":"^10.11.0"},devDependencies:{"@release-it/conventional-changelog":"^8.0.1","@stackblitz/sdk":"^1.11.0","@tresjs/cientos":"3.9.0","@tresjs/eslint-config":"^1.1.0","@types/three":"^0.166.0","@typescript-eslint/eslint-plugin":"^7.16.0","@typescript-eslint/parser":"^7.16.0","@vitejs/plugin-vue":"^5.0.5","@vitest/coverage-c8":"^0.33.0","@vitest/coverage-v8":"^2.0.2","@vitest/ui":"^2.0.2","@vue/test-utils":"^2.4.6",eslint:"^9.6.0","eslint-plugin-vue":"^9.27.0",esno:"^4.7.0",gsap:"^3.12.5",husky:"^9.0.11",jsdom:"^24.1.0",kolorist:"^1.8.0",ohmyfetch:"^0.4.21",pathe:"^1.1.2","release-it":"^17.5.0","rollup-plugin-analyzer":"^4.0.0","rollup-plugin-copy":"^3.5.0","rollup-plugin-visualizer":"^5.12.0",sponsorkit:"^0.14.6",three:"^0.166.1",unocss:"^0.61.3",unplugin:"^1.11.0","unplugin-vue-components":"^0.27.2",vite:"^5.3.3","vite-plugin-banner":"^0.7.1","vite-plugin-dts":"3.9.1","vite-plugin-inspect":"^0.8.4","vite-plugin-require-transform":"^1.0.21","vite-svg-loader":"^5.1.0",vitepress:"1.3.0",vitest:"^2.0.2",vue:"^3.4.31","vue-demi":"^0.14.8"}};function fe(e){return typeof e>"u"}function Z(e){return Array.isArray(e)}function lt(e){return typeof e=="number"}function we(e){return typeof e=="string"}function G(e){return typeof e=="function"}function U(e){return e===Object(e)&&!Z(e)&&!G(e)}function F(e){return U(e)&&"isObject3D"in e&&!!e.isObject3D}function be(e){return U(e)&&"isCamera"in e&&!!e.isCamera}function ct(e){return U(e)&&"isBufferGeometry"in e&&!!e.isBufferGeometry}function ut(e){return U(e)&&"isMaterial"in e&&!!e.isMaterial}function ft(e){return U(e)&&"isLight"in e&&!!e.isLight}function dt(e){return U(e)&&"isFog"in e&&!!e.isFog}function pt(e){return U(e)&&"isScene"in e&&!!e.isScene}function ee(e){return F(e)||ct(e)||ut(e)||dt(e)}function mt(e){return U(e)&&!!e.isPrimitive}const Ce=({sizes:e})=>{const t=p.ref([]),n=p.computed(()=>t.value[0]),r=i=>{const a=i instanceof y.Camera?i:t.value.find(o=>o.uuid===i);if(!a)return;const c=t.value.filter(({uuid:o})=>o!==a.uuid);t.value=[a,...c]},s=(i,a=!1)=>{if(be(i)){const c=i;if(t.value.some(({uuid:o})=>o===c.uuid))return;a?r(c):t.value.push(c)}},l=i=>{if(be(i)){const a=i;t.value=t.value.filter(({uuid:c})=>c!==a.uuid)}};return p.watchEffect(()=>{e.aspectRatio.value&&t.value.forEach(i=>{!i.manual&&(i instanceof y.PerspectiveCamera||ht(i))&&(i instanceof y.PerspectiveCamera?i.aspect=e.aspectRatio.value:(i.left=e.width.value*-.5,i.right=e.width.value*.5,i.top=e.height.value*.5,i.bottom=e.height.value*-.5),i.updateProjectionMatrix())})}),p.onUnmounted(()=>{t.value=[]}),{camera:n,cameras:t,registerCamera:s,deregisterCamera:l,setCameraActive:r}};function ht(e){return e.hasOwnProperty("isOrthographicCamera")&&e.isOrthographicCamera}const Me=C.createEventHook(),Pe=C.createEventHook(),de=C.createEventHook(),K=new y.Clock;let te=0,ne=0;const{pause:gt,resume:Se,isActive:vt}=C.useRafFn(()=>{Me.trigger({delta:te,elapsed:ne,clock:K}),Pe.trigger({delta:te,elapsed:ne,clock:K}),de.trigger({delta:te,elapsed:ne,clock:K})},{immediate:!1});de.on(()=>{te=K.getDelta(),ne=K.getElapsedTime()});let ke=!1;const yt=()=>(ke||(ke=!0,Se()),{onBeforeLoop:Me.on,onLoop:Pe.on,onAfterLoop:de.on,pause:gt,resume:Se,isActive:vt}),_t=!0,re="[TresJS ▲ ■ ●] ";function W(){function e(...r){typeof r[0]=="string"?r[0]=re+r[0]:r.unshift(re),console.error(...r)}function t(...r){typeof r[0]=="string"?r[0]=re+r[0]:r.unshift(re),console.warn(...r)}function n(r,s){}return{logError:e,logWarning:t,logMessage:n}}function wt(e){return typeof e=="number"?[e,e,e]:e instanceof y.Vector3?[e.x,e.y,e.z]:e}function Ae(e){return e instanceof y.Color?e:Array.isArray(e)?new y.Color(...e):new y.Color(e)}class bt extends _e.Mesh{constructor(...n){super(...n);ye(this,"type","HightlightMesh");ye(this,"createTime");this.createTime=Date.now()}onBeforeRender(){const r=(Date.now()-this.createTime)/1e3,i=1+.07*Math.sin(2.5*r);this.scale.set(i,i,i)}}const Le=(e,t)=>{for(const n of Object.keys(t))t[n]instanceof Object&&Object.assign(t[n],Le(e[n],t[n]));return Object.assign(e||{},t),e},Ct=St("html,body,base,head,link,meta,style,title,address,article,aside,footer,header,hgroup,h1,h2,h3,h4,h5,h6,nav,section,div,dd,dl,dt,figcaption,figure,picture,hr,img,li,main,ol,p,pre,ul,a,b,abbr,bdi,bdo,br,cite,code,data,dfn,em,i,kbd,mark,q,rp,rt,ruby,s,samp,small,span,strong,sub,sup,time,u,var,wbr,area,audio,map,track,video,embed,object,param,source,canvas,script,noscript,del,ins,caption,col,colgroup,table,thead,tbody,td,th,tr,button,datalist,fieldset,form,input,label,legend,meter,optgroup,option,output,progress,select,textarea,details,dialog,menu,summary,template,blockquote,iframe,tfoot");function Oe(e){return e&&e.nodeType===1}function oe(e){return e.replace(/-([a-z])/g,(t,n)=>n.toUpperCase())}const Mt=/\B([A-Z])/g;function Pt(e){return e.replace(Mt,"-$1").toLowerCase()}function St(e,t){const n=Object.create(null),r=e.split(",");for(let s=0;s<r.length;s++)n[r[s]]=!0;return s=>!!n[s]}const De=(e,t)=>{if(!t)return;const n=Array.isArray(t)?t:t.match(/([^[.\]])+/g);return n==null?void 0:n.reduce((r,s)=>r&&r[s],e)},kt=(e,t,n)=>{const r=Array.isArray(t)?t:t.match(/([^[.\]])+/g);r&&r.reduce((s,l,i)=>(s[l]===void 0&&(s[l]={}),i===r.length-1&&(s[l]=n),s[l]),e)};function je(e,t){if(Oe(e)&&Oe(t)){const s=e.attributes,l=t.attributes;return s.length!==l.length?!1:Array.from(s).every(({name:i,value:a})=>t.getAttribute(i)===a)}if(e===t)return!0;if(e===null||typeof e!="object"||t===null||typeof t!="object")return!1;const n=Object.keys(e),r=Object.keys(t);if(n.length!==r.length)return!1;for(const s of n)if(!r.includes(s)||!je(e[s],t[s]))return!1;return!0}function At(e,t){if(!Array.isArray(e)||!Array.isArray(t)||e.length!==t.length)return!1;for(let n=0;n<e.length;n++)if(!je(e[n],t[n]))return!1;return!0}const Lt=Array.isArray;function Ot(e,t,n,r){const s=c=>{if(c.uuid===t)return c;for(const o of c.children){const u=s(o);if(u)return u}},l=s(e);if(!l){console.warn("Object with UUID not found in the scene.");return}let i=l;for(let c=0;c<n.length-1;c++)if(i[n[c]]!==void 0)i=i[n[c]];else{console.warn(`Property path is not valid: ${n.join(".")}`);return}const a=n[n.length-1];i[a]!==void 0?i[a]=r:console.warn(`Property path is not valid: ${n.join(".")}`)}function Dt(e){const t=new y.MeshBasicMaterial({color:11003607,transparent:!0,opacity:.2,depthTest:!1,side:y.DoubleSide});return new bt(e.geometry.clone(),t)}function jt(e){var n;let t=e.value;return e.value&&((n=e.value)!=null&&n.isMesh)&&(t=e.value.position),Array.isArray(e.value)&&(t=new y.Vector3(...t)),t}function Tt(e){return"map"in e}function Te(e){Tt(e)&&e.map&&e.map.dispose(),e.dispose()}function pe(e){var n,r;if(e.parent&&((n=e.removeFromParent)==null||n.call(e)),delete e.__tres,[...e.children].forEach(s=>pe(s)),!(e instanceof y.Scene)){const s=e;e&&((r=e.dispose)==null||r.call(e)),s.geometry&&(s.geometry.dispose(),delete s.geometry),Array.isArray(s.material)?(s.material.forEach(l=>Te(l)),delete s.material):s.material&&(Te(s.material),delete s.material)}}function xt(e,t){let n=0;for(let r=0;r<e.length;r++)t(e[r],r)&&(e[n]=e[r],n++);return e.length=n,e}function me(e,t){let n=e;if(t.includes("-")){const r=t.split("-");let s=r.shift();for(;n&&r.length;)s in n?(n=n[s],s=r.shift()):s=xe(s,r.shift());return{target:n,key:xe(s,...r)}}else return{target:n,key:t}}function xe(...e){return e.map((t,n)=>n===0?t:t.charAt(0).toUpperCase()+t.slice(1)).join("")}const Be=/-\d+$/;function Bt(e,t,n){if(we(n)){if(Be.test(n)){const l=n.replace(Be,""),{target:i,key:a}=me(e,l);if(!Array.isArray(i[a])){const c=i[a],o=[];o.__tresDetach=()=>{o.every(u=>fe(u))&&(i[a]=c)},i[a]=o}}const{target:r,key:s}=me(e,n);t.__tres.previousAttach=r[s],r[s]=Y(t)}else t.__tres.previousAttach=n(e,t)}function It(e,t,n){var r,s,l;if(we(n)){const{target:i,key:a}=me(e,n),c=t.__tres.previousAttach;c===void 0?delete i[a]:i[a]=c,"__tresDetach"in i&&i.__tresDetach()}else(s=(r=t.__tres)==null?void 0:r.previousAttach)==null||s.call(r,e,t);(l=t.__tres)==null||delete l.previousAttach}function q(e,t,n){const r=e;return r.__tres={type:"unknown",eventCount:0,root:n,handlers:{},memoizedProps:{},objects:[],parent:null,previousAttach:null,...t},r.__tres.attach||(r.isMaterial?r.__tres.attach="material":r.isBufferGeometry?r.__tres.attach="geometry":r.isFog&&(r.__tres.attach="fog")),r}function Ie(e){var n;const t=(n=e==null?void 0:e.__tres)==null?void 0:n.root;t&&t.render&&t.render.canBeInvalidated.value&&t.invalidate()}function Wn(e){}function Rt(e,t,n){var s;if(!G(e.setPixelRatio))return;let r=0;if(Z(n)&&n.length>=2){const[l,i]=n;r=y.MathUtils.clamp(t,l,i)}else lt(n)?r=n:r=t;r!==((s=e.getPixelRatio)==null?void 0:s.call(e))&&e.setPixelRatio(r)}function Et(e,t,n,r,s){const l=[...t.__tres.objects],i=Y(t);if(e=Y(e),i===e)return!0;const a=q(e,t.__tres??{},s),c=t.parent??t.__tres.parent??null,o={...t.__tres.memoizedProps};delete o.object;for(const u of l)Re(u,s),Ee(u,s);i.__tres.objects=[],r.remove(t);for(const[u,_]of Object.entries(o))r.patchProp(a,u,a[u],_);n(e),r.insert(t,c);for(const u of l)r.insert(u,t);return!0}function Y(e){return mt(e)?(e.object.__tres=e.__tres,e.object):e}function Re(e,t){var r,s,l,i;const n=((r=e.__tres)==null?void 0:r.parent)||t.scene.value;e.__tres&&(e.__tres.parent=null),n&&n.__tres&&"objects"in n.__tres&&xt(n.__tres.objects,a=>a!==e),(s=e.__tres)!=null&&s.attach?It(n,e,e.__tres.attach):((i=(l=e.parent)==null?void 0:l.remove)==null||i.call(l,Y(e)),e.parent=null)}function Ee(e,t){var n;(n=e.traverse)==null||n.call(e,r=>{var s;t.deregisterCamera(r),(s=t.eventManager)==null||s.deregisterPointerMissedObject(r)}),t.deregisterCamera(e),Ie(e)}const $t=Number.parseInt(y.REVISION.replace("dev","")),se={realistic:{shadows:!0,physicallyCorrectLights:!0,outputColorSpace:y.SRGBColorSpace,toneMapping:y.ACESFilmicToneMapping,toneMappingExposure:3,shadowMap:{enabled:!0,type:y.PCFSoftShadowMap}},flat:{toneMapping:y.NoToneMapping,toneMappingExposure:1}};function $e({canvas:e,options:t,contextParts:{sizes:n,render:r,invalidate:s,advance:l}}){const i=p.computed(()=>({alpha:C.toValue(t.alpha)??!0,depth:C.toValue(t.depth),canvas:C.unrefElement(e),context:C.toValue(t.context),stencil:C.toValue(t.stencil),antialias:C.toValue(t.antialias)??!0,precision:C.toValue(t.precision),powerPreference:C.toValue(t.powerPreference),premultipliedAlpha:C.toValue(t.premultipliedAlpha),preserveDrawingBuffer:C.toValue(t.preserveDrawingBuffer),logarithmicDepthBuffer:C.toValue(t.logarithmicDepthBuffer),failIfMajorPerformanceCaveat:C.toValue(t.failIfMajorPerformanceCaveat)})),a=p.shallowRef(new y.WebGLRenderer(i.value));function c(){t.renderMode==="on-demand"&&s()}p.watch(i,()=>{a.value.dispose(),a.value=new y.WebGLRenderer(i.value),c()}),p.watch([n.width,n.height],()=>{a.value.setSize(n.width.value,n.height.value),c()},{immediate:!0}),p.watch(()=>t.clearColor,c);const{pixelRatio:o}=C.useDevicePixelRatio(),{logError:u}=W(),f=(()=>{const v=new y.WebGLRenderer,S={shadowMap:{enabled:v.shadowMap.enabled,type:v.shadowMap.type},toneMapping:v.toneMapping,toneMappingExposure:v.toneMappingExposure,outputColorSpace:v.outputColorSpace};return v.dispose(),S})(),g=C.toValue(t.renderMode);return g==="on-demand"&&s(),g==="manual"&&setTimeout(()=>{l()},100),p.watchEffect(()=>{const v=C.toValue(t.preset);v&&(v in se||u(`Renderer Preset must be one of these: ${Object.keys(se).join(", ")}`),Le(a.value,se[v])),Rt(a.value,o.value,C.toValue(t.dpr)),g==="always"&&(r.frames.value=Math.max(1,r.frames.value));const S=(A,L)=>{const k=C.toValue(A),O=()=>{if(v)return De(se[v],L)};if(k!==void 0)return k;const j=O();return j!==void 0?j:De(f,L)},w=(A,L)=>kt(a.value,L,S(A,L));w(t.shadows,"shadowMap.enabled"),w(t.toneMapping??y.ACESFilmicToneMapping,"toneMapping"),w(t.shadowMapType,"shadowMap.type"),$t<150&&w(!t.useLegacyLights,"physicallyCorrectLights"),w(t.outputColorSpace,"outputColorSpace"),w(t.toneMappingExposure,"toneMappingExposure");const d=S(t.clearColor,"clearColor");d&&a.value.setClearColor(d?Ae(d):new y.Color(0))}),p.onUnmounted(()=>{a.value.dispose(),a.value.forceContextLoss()}),{renderer:a}}const Ut=e=>!!e&&e.constructor===Array;function Ue(e){const t={nodes:{},materials:{}};return e&&e.traverse(n=>{n.name&&(t.nodes[n.name]=n),n.material&&!t.materials[n.material.name]&&(t.materials[n.material.name]=n.material)}),t}async function Vt(e,t,n,r,s){const{logError:l}=W(),i=new e;s&&s(i),n&&n(i);const c=(Array.isArray(t)?t:[t]).map(o=>new Promise((u,_)=>{i.load(o,f=>{const g=f;g.scene&&Object.assign(g,Ue(g.scene)),u(g)},r,f=>_(l("[useLoader] - Failed to load resource",f)))}));return Ut(t)?await Promise.all(c):await c[0]}async function Ft(e,t){const n=new y.TextureLoader(t),r=s=>new Promise((l,i)=>{n.load(s,a=>l(a),()=>null,()=>{i(new Error("[useTextures] - Failed to load texture"))})});if(Lt(e)){const s=await Promise.all(e.map(l=>r(l)));return e.length>1?s:s[0]}else{const{map:s,displacementMap:l,normalMap:i,roughnessMap:a,metalnessMap:c,aoMap:o,alphaMap:u,matcap:_}=e;return{map:s?await r(s):null,displacementMap:l?await r(l):null,normalMap:i?await r(i):null,roughnessMap:a?await r(a):null,metalnessMap:c?await r(c):null,aoMap:o?await r(o):null,alphaMap:u?await r(u):null,matcap:_?await r(_):null}}}const Ve=(e,t)=>{const n=p.computed(()=>t.renderer.value.domElement),r=p.shallowRef([]),{x:s,y:l}=C.usePointer({target:n});let i=0;const{width:a,height:c,top:o,left:u}=C.useElementBounding(n),_=({x:h,y:D})=>{if(n.value)return{x:(h-u.value)/a.value*2-1,y:-((D-o.value)/c.value)*2+1}},f=({x:h,y:D})=>{if(t.camera.value)return t.raycaster.value.setFromCamera(new y.Vector2(h,D),t.camera.value),r.value=t.raycaster.value.intersectObjects(e.value,!0),r.value},g=h=>{const D=_({x:(h==null?void 0:h.clientX)??s.value,y:(h==null?void 0:h.clientY)??l.value});return D?f(D)||[]:[]},v=C.createEventHook(),S=C.createEventHook(),w=C.createEventHook(),d=C.createEventHook(),A=C.createEventHook(),L=C.createEventHook(),k=C.createEventHook(),O=C.createEventHook();function j(h){const D={};for(const z in h)typeof z!="function"&&(D[z]=h[z]);return D}const M=(h,D)=>{var rt,ot,st;const z=j(D),ue=new y.Vector3(D==null?void 0:D.clientX,D==null?void 0:D.clientY,0).unproject((rt=t.camera)==null?void 0:rt.value);h.trigger({...z,intersections:r.value,unprojectedPoint:ue,ray:(ot=t.raycaster)==null?void 0:ot.value.ray,camera:(st=t.camera)==null?void 0:st.value,sourceEvent:D,delta:i,stopPropagating:!1})};let T;const B=h=>{g(h),M(w,h),T=h},m=()=>{T&&B(T)};let P,x,E;const R=h=>{var D;P=(D=r.value[0])==null?void 0:D.object,i=0,x=new y.Vector2((h==null?void 0:h.clientX)??s.value,(h==null?void 0:h.clientY)??l.value),M(A,h)};let $,I=!1;const ce=h=>{var D,z,ue;h instanceof PointerEvent&&(r.value.length===0&&M(L,h),P===((D=r.value[0])==null?void 0:D.object)&&(E=new y.Vector2((h==null?void 0:h.clientX)??s.value,(h==null?void 0:h.clientY)??l.value),i=x==null?void 0:x.distanceTo(E),h.button===0?(M(v,h),$===((z=r.value[0])==null?void 0:z.object)?I=!0:($=(ue=r.value[0])==null?void 0:ue.object,I=!1)):h.button===2&&M(k,h)),M(d,h))},et=h=>{I&&(M(S,h),$=void 0,I=!1)},tt=h=>M(w,h),nt=h=>M(O,h);return n.value.addEventListener("pointerup",ce),n.value.addEventListener("pointerdown",R),n.value.addEventListener("pointermove",B),n.value.addEventListener("pointerleave",tt),n.value.addEventListener("dblclick",et),n.value.addEventListener("wheel",nt),p.onUnmounted(()=>{n!=null&&n.value&&(n.value.removeEventListener("pointerup",ce),n.value.removeEventListener("pointerdown",R),n.value.removeEventListener("pointermove",B),n.value.removeEventListener("pointerleave",tt),n.value.removeEventListener("dblclick",et),n.value.removeEventListener("wheel",nt))}),{intersects:r,onClick:h=>v.on(h).off,onDblClick:h=>S.on(h).off,onContextMenu:h=>k.on(h).off,onPointerMove:h=>w.on(h).off,onPointerUp:h=>d.on(h).off,onPointerDown:h=>A.on(h).off,onPointerMissed:h=>L.on(h).off,onWheel:h=>O.on(h).off,forceUpdate:m}};function Wt(){const{logWarning:e}=W();function t(l,i,a){let c=null;return l.traverse(o=>{o[i]===a&&(c=o)}),c||e(`Child with ${i} '${a}' not found.`),c}function n(l,i,a){const c=[];return l.traverse(o=>{o[i].includes(a)&&c.push(o)}),c.length||e(`Children with ${i} '${a}' not found.`),c}function r(l,i){return t(l,"name",i)}function s(l,i){return n(l,"name",i)}return{seek:t,seekByName:r,seekAll:n,seekAllByName:s}}function he(e){let t=0;return e.traverse(n=>{if(n.isMesh&&n.geometry&&n.type!=="HightlightMesh"){const r=n.geometry,s=r.attributes.position.count*3*Float32Array.BYTES_PER_ELEMENT,l=r.index?r.index.count*Uint32Array.BYTES_PER_ELEMENT:0,i=r.attributes.normal?r.attributes.normal.count*3*Float32Array.BYTES_PER_ELEMENT:0,a=r.attributes.uv?r.attributes.uv.count*2*Float32Array.BYTES_PER_ELEMENT:0,c=s+l+i+a;t+=c}}),t}function Nt(e){return(e/1024).toFixed(2)}const ie=p.ref({}),ae=e=>Object.assign(ie.value,e);function Fe(e,t,n){var B;const r=p.shallowRef(),s=p.shallowRef();e&&(r.value=e),t&&(s.value=t);const l=m=>{var P;return((P=m.__tres)==null?void 0:P.eventCount)>0},i=m=>{var P;return((P=m.children)==null?void 0:P.some(x=>i(x)))||l(m)},a=p.shallowRef(((B=r.value)==null?void 0:B.children).filter(i)||[]);function c(m,P){if(Array.isArray(m))for(const x of m)x(P);typeof m=="function"&&m(P)}function o(m,P){const x=[],E=()=>P.stopPropagating=!0;P.stopPropagation=E;for(const R of P==null?void 0:P.intersections){if(P.stopPropagating)return;P={...P,...R};const{object:$}=R;P.eventObject=$,c($[m],P),x.push($);let I=$.parent;for(;I!==null&&!P.stopPropagating&&!x.includes(I);)P.eventObject=I,c(I[m],P),x.push(I),I=I.parent;const ce=Pt(m.slice(2));n(ce,{intersection:R,event:P})}}const{onClick:u,onDblClick:_,onContextMenu:f,onPointerMove:g,onPointerDown:v,onPointerUp:S,onPointerMissed:w,onWheel:d,forceUpdate:A}=Ve(a,t);S(m=>o("onPointerUp",m)),v(m=>o("onPointerDown",m)),u(m=>o("onClick",m)),_(m=>o("onDoubleClick",m)),f(m=>o("onContextMenu",m)),d(m=>o("onWheel",m));let L=[];g(m=>{const P=m.intersections.map(({object:E})=>E),x=m.intersections;L.forEach(({object:E})=>{P.includes(E)||(m.intersections=L,o("onPointerLeave",m),o("onPointerOut",m))}),m.intersections=x,m.intersections.forEach(({object:E})=>{L.includes(E)||(o("onPointerEnter",m),o("onPointerOver",m))}),o("onPointerMove",m),L=m.intersections});const k=[];w(m=>{const P=()=>m.stopPropagating=!0;m.stopPropagation=P,k.forEach(x=>{m.stopPropagating||(m.eventObject=x,c(x.onPointerMissed,m))}),n("pointer-missed",{event:m})});function O(m){ee(m)&&F(m)&&a.value.push(m)}function j(m){if(ee(m)&&F(m)){const P=a.value.indexOf(m);P>-1&&a.value.splice(P,1)}}function M(m){ee(m)&&F(m)&&m.onPointerMissed&&k.push(m)}function T(m){if(ee(m)&&F(m)){const P=k.indexOf(m);P>-1&&k.splice(P,1)}}return t.eventManager={forceUpdate:A,registerObject:O,deregisterObject:j,registerPointerMissedObject:M,deregisterPointerMissedObject:T},{forceUpdate:A,registerObject:O,deregisterObject:j,registerPointerMissedObject:M,deregisterPointerMissedObject:T}}function zt(e,t,n=10){const r=C.toValue(e)?C.useWindowSize():C.useElementSize(p.computed(()=>C.toValue(t).parentElement)),s=p.readonly(C.refDebounced(r.width,n)),l=p.readonly(C.refDebounced(r.height,n)),i=p.computed(()=>s.value/l.value);return{height:l,width:s,aspectRatio:i}}function ge(){const e=new Map,t=new Set;let n=0,r=!1;const s=()=>{const o=Array.from(e.entries()).sort((u,_)=>{const f=u[1].priority-_[1].priority;return f===0?u[1].addI-_[1].addI:f});t.clear(),o.forEach(u=>t.add(u[0]))},l=o=>{e.delete(o),t.delete(o)};return{on:(o,u=0)=>{e.set(o,{priority:u,addI:n++});const _=()=>l(o);return C.tryOnScopeDispose(_),r=!0,{off:_}},off:l,trigger:(...o)=>{r&&(s(),r=!1),t.forEach(u=>u(...o))},dispose:()=>{e.clear(),t.clear()},get count(){return e.size}}}function We(){let e=!0,t=!0,n=!1;const r=new y.Clock(!1),s=p.ref(r.running),l=p.ref(!1);let i;const a=y.MathUtils.generateUUID();let c=null;const o=ge(),u=ge(),_=ge();j();let f={};function g(M){f=M}function v(M,T,B=0){switch(T){case"before":return o.on(M,B);case"render":return c||(c=M),u.dispose(),u.on(M);case"after":return _.on(M,B)}}function S(){t&&(t=!1,j(),O())}function w(){t=!0,j(),cancelAnimationFrame(i)}function d(){n=!1,j()}function A(){n=!0,j()}function L(){l.value=!0}function k(){l.value=!1}function O(){if(!e){i=requestAnimationFrame(O);return}const M=r.getDelta(),T=r.getElapsedTime(),B={camera:p.unref(f.camera),scene:p.unref(f.scene),renderer:p.unref(f.renderer),raycaster:p.unref(f.raycaster),controls:p.unref(f.controls),invalidate:f.invalidate,advance:f.advance},m={delta:M,elapsed:T,clock:r,...B};s.value&&o.trigger(m),l.value||(u.count?u.trigger(m):c&&c(m)),s.value&&_.trigger(m),i=requestAnimationFrame(O)}function j(){const M=!t&&!n;r.running!==M&&(r.running?r.stop():r.start()),s.value=r.running}return{loopId:a,register:(M,T,B)=>v(M,T,B),start:S,stop:w,pause:A,resume:d,pauseRender:L,resumeRender:k,isRenderPaused:l,isActive:s,setContext:g,setReady:M=>e=M}}function Gt(e,t,n=100){n=n<=0?100:n;const r=C.createEventHook(),s=new Set;let l=!1,i=!1,a=null;function c(){a&&clearTimeout(a),!i&&!l&&e()?(r.trigger(t),s.forEach(f=>f()),s.clear(),l=!0):!i&&!l&&(a=setTimeout(c,n))}function o(){i=!0,a&&clearTimeout(a)}c();const u=(f,...g)=>{f(...g)};return{on:f=>{if(l)return u(f,t),{off:()=>{}};{const g=r.on(f);return s.add(g.off),r.on(f)}},off:r.off,trigger:r.trigger,cancel:o}}const Q=new WeakMap;function Ne(e){if(e=e||X(),Q.has(e))return Q.get(e);const t=100,n=Date.now(),l=Gt(()=>{if(Date.now()-n>=t)return!0;{const i=e.renderer.value,a=(i==null?void 0:i.domElement)||{width:0,height:0};return!!(i&&a.width>0&&a.height>0)}},e);return Q.set(e,l),l}function qt(e){const t=X();if(t)return Q.has(t)?Q.get(t).on(e):Ne(t).on(e)}function ze({scene:e,canvas:t,windowSize:n,disableRender:r,rendererOptions:s,emit:l}){const i=p.shallowRef(e),a=zt(n,t),{camera:c,cameras:o,registerCamera:u,deregisterCamera:_,setCameraActive:f}=Ce({sizes:a,scene:e}),g={mode:p.ref(s.renderMode||"always"),priority:p.ref(0),frames:p.ref(0),maxFrames:60,canBeInvalidated:p.computed(()=>g.mode.value==="on-demand"&&g.frames.value===0)};function v(R=1){s.renderMode==="on-demand"&&(g.frames.value=Math.min(g.maxFrames,g.frames.value+R))}function S(){s.renderMode==="manual"&&(g.frames.value=1)}const{renderer:w}=$e({scene:e,canvas:t,options:s,emit:l,contextParts:{sizes:a,camera:c,render:g,invalidate:v,advance:S},disableRender:r}),d={sizes:a,scene:i,camera:c,cameras:p.readonly(o),renderer:w,raycaster:p.shallowRef(new y.Raycaster),controls:p.ref(null),perf:{maxFrames:160,fps:{value:0,accumulator:[]},memory:{currentMem:0,allocatedMem:0,accumulator:[]}},render:g,advance:S,extend:ae,invalidate:v,registerCamera:u,setCameraActive:f,deregisterCamera:_,loop:We()};p.provide("useTres",d),d.scene.value.__tres={root:d},d.loop.register(()=>{c.value&&g.frames.value>0&&(w.value.render(e,c.value),l("render",d.renderer.value)),g.priority.value=0,g.mode.value==="always"?g.frames.value=1:g.frames.value=Math.max(0,g.frames.value-1)},"render");const{on:A,cancel:L}=Ne(d);d.loop.setReady(!1),d.loop.start(),A(()=>{l("ready",d),d.loop.setReady(!0),Fe(e,d,l)}),p.onUnmounted(()=>{L(),d.loop.stop()});const k=100,O=C.useFps({every:k}),{isSupported:j,memory:M}=C.useMemory({interval:k}),T=160;let B=performance.now();const m=({timestamp:R})=>{d.scene.value&&(d.perf.memory.allocatedMem=he(d.scene.value)),R-B>=k&&(B=R,d.perf.fps.accumulator.push(O.value),d.perf.fps.accumulator.length>T&&d.perf.fps.accumulator.shift(),d.perf.fps.value=O.value,j.value&&M.value&&(d.perf.memory.accumulator.push(M.value.usedJSHeapSize/1024/1024),d.perf.memory.accumulator.length>T&&d.perf.memory.accumulator.shift(),d.perf.memory.currentMem=d.perf.memory.accumulator.reduce(($,I)=>$+I,0)/d.perf.memory.accumulator.length))};let P=0;const x=1,{pause:E}=C.useRafFn(({delta:R})=>{window.__TRES__DEVTOOLS__&&(m({timestamp:performance.now()}),P+=R,P>=x&&(window.__TRES__DEVTOOLS__.cb(d),P=0))},{immediate:!0});return p.onUnmounted(()=>{E()}),d}function X(){const e=p.inject("useTres");if(!e)throw new Error("useTresContext must be used together with useTresContextProvider");return e}const Yt=X;function Jt(){const{camera:e,scene:t,renderer:n,loop:r,raycaster:s,controls:l,invalidate:i,advance:a}=X();r.setContext({camera:e,scene:t,renderer:n,raycaster:s,controls:l,invalidate:i,advance:a});function c(_,f=0){return r.register(_,"before",f)}function o(_){return r.register(_,"render")}function u(_,f=0){return r.register(_,"after",f)}return{pause:r.pause,resume:r.resume,pauseRender:r.pauseRender,resumeRender:r.resumeRender,isActive:r.isActive,onBeforeRender:c,render:o,onAfterRender:u}}function Kt(e,t={},n={}){let r=e;const s=a=>{r=a};let l=new Proxy({},{});const i={has(a,c){return c in t||c in r},get(a,c,o){return c in t?t[c](r):r[c]},set(a,c,o){return n[c]?n[c](o,r,l,s):r[c]=o,!0}};return l=new Proxy({},i),l}const{logError:Ge}=W(),qe=["onClick","onContextMenu","onPointerMove","onPointerEnter","onPointerLeave","onPointerOver","onPointerOut","onDoubleClick","onPointerDown","onPointerUp","onPointerCancel","onPointerMissed","onLostPointerCapture","onWheel"],Qt=e=>{const t=e.scene.value;function n(o,u,_,f){if(f||(f={}),f.args||(f.args=[]),o==="template"||Ct(o))return null;let g=o.replace("Tres",""),v;if(o==="primitive"){(!U(f.object)||p.isRef(f.object))&&Ge("Tres primitives need an 'object' prop, whose value is an object or shallowRef<object>"),g=f.object.type;const S={};v=Kt(f.object,{object:d=>d,isPrimitive:()=>!0,__tres:()=>S},{object:(d,A,L,k)=>{Et(d,L,k,{patchProp:l,remove:s,insert:r},e)},__tres:d=>{Object.assign(S,d)}})}else{const S=ie.value[g];S||Ge(`${g} is not defined on the THREE namespace. Use extend to add it to the catalog.`),v=new S(...f.args)}return v?(v.isCamera&&(f!=null&&f.position||v.position.set(3,3,3),f!=null&&f.lookAt||v.lookAt(0,0,0)),v=q(v,{...v.__tres,type:g,memoizedProps:f,eventCount:0,primitive:o==="primitive",attach:f.attach},e),v):null}function r(o,u){var g,v,S;if(!o)return;u=u||t;const _=o.__tres?o:q(o,{},e),f=u.__tres?u:q(u,{},e);o=Y(_),u=Y(f),o.__tres&&((g=o.__tres)==null?void 0:g.eventCount)>0&&((v=e.eventManager)==null||v.registerObject(o)),e.registerCamera(o),(S=e.eventManager)==null||S.registerPointerMissedObject(o),_.__tres.attach?Bt(f,_,_.__tres.attach):F(o)&&F(f)&&(f.add(o),o.dispatchEvent({type:"added"})),_.__tres.parent=f,f.__tres.objects&&!f.__tres.objects.includes(_)&&f.__tres.objects.push(_)}function s(o,u){var v,S,w,d;if(!o)return;o!=null&&o.__tres&&((v=o.__tres)==null?void 0:v.eventCount)>0&&((S=e.eventManager)==null||S.deregisterObject(o)),u=fe(u)?"default":u;const _=(w=o.__tres)==null?void 0:w.dispose;fe(_)||(_===null?u=!1:u=_);const f=(d=o.__tres)==null?void 0:d.primitive,g=u==="default"?!f:!!u;if(o.__tres&&"objects"in o.__tres&&[...o.__tres.objects].forEach(A=>s(A,u)),g&&o.children&&[...o.children].forEach(A=>s(A,u)),Re(o,e),Ee(o,e),g&&!pt(o)){if(G(u))u(o);else if(G(o.dispose))try{o.dispose()}catch{}}"__tres"in o&&delete o.__tres}function l(o,u,_,f){var A,L;if(!o)return;let g=o,v=u;if(o.__tres&&(o.__tres.memoizedProps[u]=f),u==="attach"){const k=((A=o.__tres)==null?void 0:A.parent)||o.parent;s(o),q(o,{attach:f},e),k&&r(o,k);return}if(u==="dispose"){o.__tres||(o=q(o,{},e)),o.__tres.dispose=f;return}if(F(o)&&v==="blocks-pointer-events"){f||f===""?o[v]=f:delete o[v];return}qe.includes(u)&&o.__tres&&(o.__tres.eventCount+=1);let S=oe(v),w=g==null?void 0:g[S];if(v==="args"){const k=o,O=_??[],j=f??[],M=((L=o.__tres)==null?void 0:L.type)||o.type;M&&O.length&&!At(O,j)&&(g=Object.assign(k,new ie.value[M](...f)));return}if(g.type==="BufferGeometry"){if(v==="args")return;g.setAttribute(oe(v),new y.BufferAttribute(...f));return}if(v.includes("-")&&w===void 0){const k=v.split("-");w=k.reduce((O,j)=>O[oe(j)],g),v=k.pop(),S=v,w!=null&&w.set||(g=k.reduce((O,j)=>O[oe(j)],g))}let d=f;if(d===""&&(d=!0),G(w)){qe.includes(u)||(Z(d)?o[S](...d):o[S](d)),S.startsWith("on")&&G(d)&&(g[S]=d);return}!(w!=null&&w.set)&&!G(w)?g[S]=d:w.constructor===d.constructor&&(w!=null&&w.copy)?w==null||w.copy(d):Z(d)?w.set(...d):!w.isColor&&w.setScalar?w.setScalar(d):w.set(d),Ie(o)}function i(o){var u;return((u=o==null?void 0:o.__tres)==null?void 0:u.parent)||null}function a(o){const u=q(new y.Object3D,{type:"Comment"},e);return u.name=o,u}function c(o){var g;const u=i(o),_=((g=u==null?void 0:u.__tres)==null?void 0:g.objects)||[],f=_.indexOf(o);return f<0||f>=_.length-1?null:_[f+1]}return{insert:r,remove:s,createElement:n,patchProp:l,parentNode:i,createText:()=>void 0,createComment:a,setText:()=>void 0,setElementText:()=>void 0,nextSibling:c,querySelector:()=>void 0,setScopeId:()=>void 0,cloneNode:()=>void 0,insertStaticContent:()=>void 0}};function Xt(){return Ye().__VUE_DEVTOOLS_GLOBAL_HOOK__}function Ye(){return typeof navigator<"u"&&typeof window<"u"?window:typeof globalThis<"u"?globalThis:{}}const Ht=typeof Proxy=="function",Zt="devtools-plugin:setup",en="plugin:settings:set";let J,ve;function tn(){var e;return J!==void 0||(typeof window<"u"&&window.performance?(J=!0,ve=window.performance):typeof globalThis<"u"&&(!((e=globalThis.perf_hooks)===null||e===void 0)&&e.performance)?(J=!0,ve=globalThis.perf_hooks.performance):J=!1),J}function nn(){return tn()?ve.now():Date.now()}class rn{constructor(t,n){this.target=null,this.targetQueue=[],this.onQueue=[],this.plugin=t,this.hook=n;const r={};if(t.settings)for(const i in t.settings){const a=t.settings[i];r[i]=a.defaultValue}const s=`__vue-devtools-plugin-settings__${t.id}`;let l=Object.assign({},r);try{const i=localStorage.getItem(s),a=JSON.parse(i);Object.assign(l,a)}catch{}this.fallbacks={getSettings(){return l},setSettings(i){try{localStorage.setItem(s,JSON.stringify(i))}catch{}l=i},now(){return nn()}},n&&n.on(en,(i,a)=>{i===this.plugin.id&&this.fallbacks.setSettings(a)}),this.proxiedOn=new Proxy({},{get:(i,a)=>this.target?this.target.on[a]:(...c)=>{this.onQueue.push({method:a,args:c})}}),this.proxiedTarget=new Proxy({},{get:(i,a)=>this.target?this.target[a]:a==="on"?this.proxiedOn:Object.keys(this.fallbacks).includes(a)?(...c)=>(this.targetQueue.push({method:a,args:c,resolve:()=>{}}),this.fallbacks[a](...c)):(...c)=>new Promise(o=>{this.targetQueue.push({method:a,args:c,resolve:o})})})}async setRealTarget(t){this.target=t;for(const n of this.onQueue)this.target.on[n.method](...n.args);for(const n of this.targetQueue)n.resolve(await this.target[n.method](...n.args))}}function on(e,t){const n=e,r=Ye(),s=Xt(),l=Ht&&n.enableEarlyProxy;if(s&&(r.__VUE_DEVTOOLS_PLUGIN_API_AVAILABLE__||!l))s.emit(Zt,e,t);else{const i=l?new rn(n,s):null;(r.__VUE_DEVTOOLS_PLUGINS__=r.__VUE_DEVTOOLS_PLUGINS__||[]).push({pluginDescriptor:n,setupFn:t,proxy:i}),i&&t(i.proxiedTarget)}}function sn(e,t){const n=`▲ ■ ●${e}`;typeof Je=="function"?Je(n,t):console.log(n)}function Je(e,t){throw new Error(e+t)}const Ke=e=>{const t={id:e.uuid,label:e.type,children:[],tags:[]};e.name!==""&&t.tags.push({label:e.name,textColor:5750629,backgroundColor:15793395});const n=he(e);return n>0&&t.tags.push({label:`${Nt(n)} KB`,textColor:15707189,backgroundColor:16775644,tooltip:"Memory usage"}),e.type.includes("Light")&&(ft(e)&&t.tags.push({label:`${e.intensity}`,textColor:9738662,backgroundColor:16316922,tooltip:"Intensity"}),t.tags.push({label:`#${new y.Color(e.color).getHexString()}`,textColor:9738662,backgroundColor:16316922,tooltip:"Color"})),e.type.includes("Camera")&&(t.tags.push({label:`${e.fov}°`,textColor:9738662,backgroundColor:16316922,tooltip:"Field of view"}),t.tags.push({label:`x: ${Math.round(e.position.x)} y: ${Math.round(e.position.y)} z: ${Math.round(e.position.z)}`,textColor:9738662,backgroundColor:16316922,tooltip:"Position"})),t};function Qe(e,t,n=""){e.children.forEach(r=>{if(r.type==="HightlightMesh"||n&&!r.type.includes(n)&&!r.name.includes(n))return;const s=Ke(r);t.children.push(s),Qe(r,s,n)})}const an=[],H="tres:inspector",ln=p.reactive({sceneGraph:null});function cn(e,t){on({id:"dev.esm.tres",label:"TresJS 🪐",logo:"https://raw.githubusercontent.com/Tresjs/tres/main/public/favicon.svg",packageName:"tresjs",homepage:"https://tresjs.org",componentStateTypes:an,app:e},n=>{typeof n.now!="function"&&sn("You seem to be using an outdated version of Vue Devtools. Are you still using the Beta release instead of the stable one? You can find the links at https://devtools.vuejs.org/guide/installation.html."),n.addInspector({id:H,label:"TresJS 🪐",icon:"account_tree",treeFilterPlaceholder:"Search instances"}),setInterval(()=>{n.sendInspectorTree(H)},1e3),setInterval(()=>{n.notifyComponentUpdate()},5e3),n.on.getInspectorTree(l=>{if(l.inspectorId===H){const i=Ke(t.scene.value);Qe(t.scene.value,i,l.filter),ln.sceneGraph=i,l.rootNodes=[i]}});let r=null,s=null;n.on.getInspectorState(l=>{var i;if(l.inspectorId===H){const[a]=t.scene.value.getObjectsByProperty("uuid",l.nodeId);if(!a)return;if(s&&r&&r.parent&&s.remove(r),a.isMesh){const c=Dt(a);a.add(c),r=c,s=a}l.state={object:Object.entries(a).map(([c,o])=>c==="children"?{key:c,value:o.filter(u=>u.type!=="HightlightMesh")}:{key:c,value:o,editable:!0}).filter(({key:c})=>c!=="parent")},a.isScene&&(l.state.info={memory:he(a),objects:a.children.length,calls:t.renderer.value.info.render.calls,triangles:t.renderer.value.info.render.triangles,points:t.renderer.value.info.render.points,lines:t.renderer.value.info.render.lines},l.state.programs=((i=t.renderer.value.info.programs)==null?void 0:i.map(c=>({key:c.name,value:{...c,vertexShader:c.vertexShader,attributes:c.getAttributes(),uniforms:c.getUniforms()}})))||[])}}),n.on.editInspectorState(l=>{l.inspectorId===H&&Ot(t.scene.value,l.nodeId,l.path,l.state.value)})})}const un=["data-scene","data-tres"],Xe=p.defineComponent({__name:"TresCanvas",props:{shadows:{type:Boolean,default:void 0},clearColor:{},toneMapping:{},shadowMapType:{},useLegacyLights:{type:Boolean,default:void 0},outputColorSpace:{},toneMappingExposure:{},renderMode:{default:"always"},dpr:{},camera:{},preset:{},windowSize:{type:Boolean,default:void 0},disableRender:{type:Boolean,default:void 0},context:{},precision:{},alpha:{type:Boolean,default:void 0},premultipliedAlpha:{type:Boolean},antialias:{type:Boolean,default:void 0},stencil:{type:Boolean,default:void 0},preserveDrawingBuffer:{type:Boolean,default:void 0},powerPreference:{},depth:{type:Boolean,default:void 0},logarithmicDepthBuffer:{type:Boolean,default:void 0},failIfMajorPerformanceCaveat:{type:Boolean,default:void 0}},emits:["render","click","double-click","context-menu","pointer-move","pointer-up","pointer-down","pointer-enter","pointer-leave","pointer-over","pointer-out","pointer-missed","wheel","ready"],setup(e,{expose:t,emit:n}){var w;const r=e,s=n,l=p.useSlots(),{logWarning:i}=W(),a=p.ref(),c=p.shallowRef(new y.Scene),o=(w=p.getCurrentInstance())==null?void 0:w.appContext.app;ae(_e);const u=(d,A=!1)=>p.defineComponent({setup(){var k;const L=(k=p.getCurrentInstance())==null?void 0:k.appContext;return L&&(L.app=o),p.provide("useTres",d),p.provide("extend",ae),typeof window<"u"&&cn(L==null?void 0:L.app,d),()=>p.h(p.Fragment,null,A?[]:l.default())}}),_=(d,A=!1)=>{const L=u(d,A),{render:k}=p.createRenderer(Qt(d));k(p.h(L),c.value)},f=(d,A=!1)=>{pe(d.scene.value),A&&(d.renderer.value.dispose(),d.renderer.value.renderLists.dispose(),d.renderer.value.forceContextLoss()),c.value.__tres={root:d}},g=p.computed(()=>r.disableRender),v=p.shallowRef(null);t({context:v,dispose:()=>f(v.value,!0)});const S=()=>{f(v.value),_(v.value,!0)};return p.onMounted(()=>{const d=a;v.value=ze({scene:c.value,canvas:d,windowSize:r.windowSize??!1,disableRender:g.value??!1,rendererOptions:r,emit:s});const{registerCamera:A,camera:L,cameras:k,deregisterCamera:O}=v.value;_(v.value);const j=()=>{const M=new y.PerspectiveCamera(45,window.innerWidth/window.innerHeight,.1,1e3);M.position.set(3,3,3),M.lookAt(0,0,0),A(M);const T=p.watchEffect(()=>{k.value.length>=2&&(M.removeFromParent(),O(M),T==null||T())})};p.watch(()=>r.camera,(M,T)=>{M&&A(M),T&&(T.removeFromParent(),O(T))},{immediate:!0}),L.value||(i("No camera found. Creating a default perspective camera. To have full control over a camera, please add one to the scene."),j())}),p.onUnmounted(S),(d,A)=>(p.openBlock(),p.createElementBlock("canvas",{ref_key:"canvas",ref:a,"data-scene":c.value.uuid,class:p.normalizeClass(d.$attrs.class),"data-tres":`tresjs ${p.unref(at).version}`,style:p.normalizeStyle({display:"block",width:"100%",height:"100%",position:d.windowSize?"fixed":"relative",top:0,left:0,pointerEvents:"auto",touchAction:"none",...d.$attrs.style})},null,14,un))}}),fn=["TresCanvas","TresLeches","TresScene"],dn={template:{compilerOptions:{isCustomElement:e=>e.startsWith("Tres")&&!fn.includes(e)||e==="primitive"}}},pn={mounted:(e,t)=>{if(t.arg){console.log(`v-log:${t.arg}`,e[t.arg]);return}console.log("v-log",e)}};class He extends y.Line{constructor(t,n){const r=[1,1,0,-1,1,0,-1,-1,0,1,-1,0,1,1,0],s=new y.BufferGeometry;s.setAttribute("position",new y.Float32BufferAttribute(r,3)),s.computeBoundingSphere();const l=new y.LineBasicMaterial({fog:!1});super(s,l),this.light=t,this.color=n,this.type="RectAreaLightHelper";const i=[1,1,0,-1,1,0,-1,-1,0,1,1,0,-1,-1,0,1,-1,0],a=new y.BufferGeometry;a.setAttribute("position",new y.Float32BufferAttribute(i,3)),a.computeBoundingSphere(),this.add(new y.Mesh(a,new y.MeshBasicMaterial({side:y.BackSide,fog:!1})))}updateMatrixWorld(){if(this.scale.set(.5*this.light.width,.5*this.light.height,1),this.color!==void 0)this.material.color.set(this.color),this.children[0].material.color.set(this.color);else{this.material.color.copy(this.light.color).multiplyScalar(this.light.intensity);const t=this.material.color,n=Math.max(t.r,t.g,t.b);n>1&&t.multiplyScalar(1/n),this.children[0].material.color.copy(this.material.color)}this.matrixWorld.extractRotation(this.light.matrixWorld).scale(this.scale).copyPosition(this.light.matrixWorld),this.children[0].matrixWorld.copy(this.matrixWorld)}dispose(){this.geometry.dispose(),this.material.dispose(),this.children[0].geometry.dispose(),this.children[0].material.dispose()}}const{logWarning:Ze}=W();let le,N;const mn={DirectionalLight:y.DirectionalLightHelper,PointLight:y.PointLightHelper,SpotLight:y.SpotLightHelper,HemisphereLight:y.HemisphereLightHelper,RectAreaLight:He},hn={mounted:e=>{if(!e.isLight){Ze(`${e.type} is not a light`);return}le=mn[e.type],e.parent.add(new le(e,1,e.color.getHex()))},updated:e=>{N=e.parent.children.find(t=>t instanceof le),!(N instanceof He)&&N.update()},unmounted:e=>{if(!e.isLight){Ze(`${e.type} is not a light`);return}N=e.parent.children.find(t=>t instanceof le),N&&N.dispose&&N.dispose(),e.parent.remove(N)}},{logWarning:gn}=W();let V=null;const vn={updated:(e,t)=>{var s;const n=jt(t);if(!n){gn(`v-distance-to: problem with binding value: ${t.value}`);return}V&&(V.dispose(),e.parent.remove(V));const r=n.clone().sub(e.position);r.normalize(),V=new y.ArrowHelper(r,e.position,e.position.distanceTo(n),16776960),e.parent.add(V),console.table([["Distance:",e.position.distanceTo(n)],[`origin: ${e.name||e.type}`,`x:${e.position.x}, y:${e.position.y}, z:${(s=e.position)==null?void 0:s.z}`],[`Destiny: ${e.name||e.type}`,`x:${n.x}, y:${n.y}, z:${n==null?void 0:n.z}`]])},unmounted:e=>{V==null||V.dispose(),e.parent.remove(V)}},yn={install(e){e.component("TresCanvas",Xe)}};b.TresCanvas=Xe,b.catalogue=ie,b.createRenderLoop=We,b.default=yn,b.dispose=pe,b.extend=ae,b.isProd=_t,b.normalizeColor=Ae,b.normalizeVectorFlexibleParam=wt,b.onTresReady=qt,b.templateCompilerOptions=dn,b.trasverseObjects=Ue,b.useCamera=Ce,b.useLoader=Vt,b.useLogger=W,b.useLoop=Jt,b.useRaycaster=Ve,b.useRenderLoop=yt,b.useRenderer=$e,b.useSeek=Wt,b.useTexture=Ft,b.useTres=Yt,b.useTresContext=X,b.useTresContextProvider=ze,b.useTresEventManager=Fe,b.vDistanceTo=vn,b.vLightHelper=hn,b.vLog=pn,Object.defineProperties(b,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}})});
|
package/package.json
CHANGED
|
@@ -1,11 +1,15 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tresjs/core",
|
|
3
3
|
"type": "module",
|
|
4
|
-
"version": "4.2.
|
|
4
|
+
"version": "4.2.7",
|
|
5
5
|
"packageManager": "pnpm@9.1.4",
|
|
6
6
|
"description": "Declarative ThreeJS using Vue Components",
|
|
7
7
|
"author": "Alvaro Saburido <hola@alvarosaburido.dev> (https://github.com/alvarosabu/)",
|
|
8
8
|
"license": "MIT",
|
|
9
|
+
"repository": {
|
|
10
|
+
"type": "git",
|
|
11
|
+
"url": "git+https://github.com/Tresjs/tres.git"
|
|
12
|
+
},
|
|
9
13
|
"keywords": [
|
|
10
14
|
"vue",
|
|
11
15
|
"3d",
|