@tresjs/core 2.4.0-next.0 → 2.4.0-next.1
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/index.d.ts +1 -0
- package/dist/tres.js +90 -82
- package/dist/tres.umd.cjs +2 -2
- package/package.json +1 -1
package/dist/index.d.ts
CHANGED
|
@@ -3,6 +3,7 @@ export * from './composables';
|
|
|
3
3
|
export * from './core/catalogue';
|
|
4
4
|
export * from './components';
|
|
5
5
|
export * from './types';
|
|
6
|
+
export * from './provider';
|
|
6
7
|
import { normalizeColor, normalizeVectorFlexibleParam } from './utils/normalize';
|
|
7
8
|
import templateCompilerOptions from './utils/template-compiler-options';
|
|
8
9
|
export interface TresOptions {
|
package/dist/tres.js
CHANGED
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* name: @tresjs/core
|
|
3
|
-
* version: v2.4.0
|
|
3
|
+
* version: v2.4.0-next.0
|
|
4
4
|
* (c) 2023
|
|
5
5
|
* description: Declarative ThreeJS using Vue Components
|
|
6
6
|
* author: Alvaro Saburido <hola@alvarosaburido.dev> (https://github.com/alvarosabu/)
|
|
7
7
|
*/
|
|
8
|
-
import { shallowRef as
|
|
8
|
+
import { shallowRef as A, computed as R, watchEffect as $, ref as U, toRefs as ne, watch as W, shallowReactive as ae, provide as oe, inject as re, onUnmounted as ie, reactive as Ce, readonly as z, createRenderer as Te, defineComponent as Pe, useSlots as _e, onMounted as xe, openBlock as he, createElementBlock as Ae, normalizeStyle as Re } from "vue";
|
|
9
9
|
import * as Se from "three";
|
|
10
|
-
import { PerspectiveCamera as
|
|
10
|
+
import { PerspectiveCamera as se, Clock as Le, Vector3 as Oe, Color as G, SRGBColorSpace as ke, ACESFilmicToneMapping as Ie, PCFSoftShadowMap as Be, PCFShadowMap as De, LinearSRGBColorSpace as J, NoToneMapping as X, WebGLRenderer as je, LoadingManager as Ve, TextureLoader as ze, Raycaster as Ge, Vector2 as He, BufferAttribute as Fe, Scene as Ne } from "three";
|
|
11
11
|
import { createEventHook as S, useRafFn as We, useDevicePixelRatio as $e, unrefElement as Q, toValue as m, usePointer as Ue, useElementBounding as Ye, useWindowSize as qe, useElementSize as Ke } from "@vueuse/core";
|
|
12
12
|
function Je(e) {
|
|
13
|
-
const n =
|
|
13
|
+
const n = A([]), o = R(() => n.value.find((c) => c.userData.IS_ACTIVE_CAMERA));
|
|
14
14
|
function t(c, a = !0) {
|
|
15
15
|
n.value.push(c), a && r(c.uuid);
|
|
16
16
|
}
|
|
@@ -24,7 +24,7 @@ function Je(e) {
|
|
|
24
24
|
return $(() => {
|
|
25
25
|
var c;
|
|
26
26
|
(c = e.aspectRatio) != null && c.value && (console.log("camera watcher aspectRatio", e.aspectRatio.value), n.value.forEach((a) => {
|
|
27
|
-
a instanceof
|
|
27
|
+
a instanceof se && (a.aspect = e.aspectRatio.value), a.updateProjectionMatrix();
|
|
28
28
|
}));
|
|
29
29
|
}), {
|
|
30
30
|
cameras: n,
|
|
@@ -34,28 +34,28 @@ function Je(e) {
|
|
|
34
34
|
clearCameras: i
|
|
35
35
|
};
|
|
36
36
|
}
|
|
37
|
-
const
|
|
37
|
+
const ce = S(), ue = S(), Y = S(), h = new Le();
|
|
38
38
|
let D = 0, j = 0;
|
|
39
39
|
const { pause: Xe, resume: Qe, isActive: Ze } = We(
|
|
40
40
|
() => {
|
|
41
|
-
|
|
41
|
+
ce.trigger({ delta: D, elapsed: j, clock: h }), ue.trigger({ delta: D, elapsed: j, clock: h }), Y.trigger({ delta: D, elapsed: j, clock: h });
|
|
42
42
|
},
|
|
43
43
|
{ immediate: !1 }
|
|
44
44
|
);
|
|
45
45
|
Y.on(() => {
|
|
46
|
-
D =
|
|
46
|
+
D = h.getDelta(), j = h.getElapsedTime();
|
|
47
47
|
});
|
|
48
|
-
function
|
|
48
|
+
function fe() {
|
|
49
49
|
return {
|
|
50
|
-
onBeforeLoop:
|
|
51
|
-
onLoop:
|
|
50
|
+
onBeforeLoop: ce.on,
|
|
51
|
+
onLoop: ue.on,
|
|
52
52
|
onAfterLoop: Y.on,
|
|
53
53
|
pause: Xe,
|
|
54
54
|
resume: Qe,
|
|
55
55
|
isActive: Ze
|
|
56
56
|
};
|
|
57
57
|
}
|
|
58
|
-
function
|
|
58
|
+
function Pt(e) {
|
|
59
59
|
return typeof e == "number" ? [e, e, e] : e instanceof Oe ? [e.x, e.y, e.z] : e;
|
|
60
60
|
}
|
|
61
61
|
function et(e) {
|
|
@@ -71,9 +71,9 @@ const H = {
|
|
|
71
71
|
type: Be
|
|
72
72
|
}
|
|
73
73
|
}
|
|
74
|
-
},
|
|
74
|
+
}, le = (e, n) => {
|
|
75
75
|
for (const o of Object.keys(n))
|
|
76
|
-
n[o] instanceof Object && Object.assign(n[o],
|
|
76
|
+
n[o] instanceof Object && Object.assign(n[o], le(e[o], n[o]));
|
|
77
77
|
return Object.assign(e || {}, n), e;
|
|
78
78
|
}, tt = "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", nt = /* @__PURE__ */ at(tt);
|
|
79
79
|
function B(e) {
|
|
@@ -93,7 +93,7 @@ const ot = (e, n) => {
|
|
|
93
93
|
}
|
|
94
94
|
return t;
|
|
95
95
|
}, _t = !0, Z = "[TresJS ▲ ■ ●] ";
|
|
96
|
-
function
|
|
96
|
+
function P() {
|
|
97
97
|
function e(t, r) {
|
|
98
98
|
console.error(`${Z} ${t}`, r || "");
|
|
99
99
|
}
|
|
@@ -109,7 +109,7 @@ function T() {
|
|
|
109
109
|
};
|
|
110
110
|
}
|
|
111
111
|
function rt(e, n, o) {
|
|
112
|
-
const t =
|
|
112
|
+
const t = A(), r = U(!1), {
|
|
113
113
|
alpha: i = !0,
|
|
114
114
|
antialias: c = !0,
|
|
115
115
|
depth: a,
|
|
@@ -120,28 +120,28 @@ function rt(e, n, o) {
|
|
|
120
120
|
stencil: d,
|
|
121
121
|
shadows: M = !1,
|
|
122
122
|
shadowMapType: E = De,
|
|
123
|
-
useLegacyLights:
|
|
123
|
+
useLegacyLights: b = !1,
|
|
124
124
|
outputColorSpace: g = J,
|
|
125
125
|
toneMapping: y = X,
|
|
126
126
|
toneMappingExposure: _ = 1,
|
|
127
127
|
context: L = void 0,
|
|
128
128
|
powerPreference: O = "default",
|
|
129
129
|
preserveDrawingBuffer: k = !1,
|
|
130
|
-
clearColor:
|
|
130
|
+
clearColor: T,
|
|
131
131
|
windowSize: f = !1,
|
|
132
132
|
preset: v = void 0
|
|
133
|
-
} = ne(o), { cameras: Et, setRenderer:
|
|
133
|
+
} = ne(o), { cameras: Et, setRenderer: ge, sizes: V } = n, { logError: we, logWarning: yt } = P(), { pixelRatio: I } = $e(), { pause: be, resume: Ee } = fe(), q = () => {
|
|
134
134
|
t.value && (t.value.setSize(V.width.value, V.height.value), t.value.setPixelRatio(Math.min(I.value, 2)));
|
|
135
135
|
}, K = () => {
|
|
136
136
|
if (!t.value)
|
|
137
137
|
return;
|
|
138
138
|
const C = m(v);
|
|
139
139
|
if (C) {
|
|
140
|
-
C in H ||
|
|
140
|
+
C in H || we("Renderer Preset must be one of these: " + Object.keys(H).join(", ")), le(t.value, H[C]);
|
|
141
141
|
return;
|
|
142
142
|
}
|
|
143
|
-
t.value.shadowMap.enabled = m(M), t.value.shadowMap.type = m(E), t.value.toneMapping = m(y) || X, t.value.toneMappingExposure = m(_), t.value.outputColorSpace = m(g) || J,
|
|
144
|
-
},
|
|
143
|
+
t.value.shadowMap.enabled = m(M), t.value.shadowMap.type = m(E), t.value.toneMapping = m(y) || X, t.value.toneMappingExposure = m(_), t.value.outputColorSpace = m(g) || J, T != null && T.value && t.value.setClearColor(et(m(T))), t.value.useLegacyLights = m(b);
|
|
144
|
+
}, ye = () => {
|
|
145
145
|
const C = Q(e);
|
|
146
146
|
console.count("init renderer"), C && (t.value = new je({
|
|
147
147
|
canvas: C,
|
|
@@ -156,29 +156,29 @@ function rt(e, n, o) {
|
|
|
156
156
|
stencil: m(d),
|
|
157
157
|
preserveDrawingBuffer: m(k),
|
|
158
158
|
premultipliedAlpha: m(p)
|
|
159
|
-
}),
|
|
160
|
-
},
|
|
159
|
+
}), ge(t.value), K(), q(), Ee(), r.value = !0);
|
|
160
|
+
}, Me = () => {
|
|
161
161
|
t.value && (t.value.dispose(), t.value = void 0, r.value = !1, be());
|
|
162
162
|
};
|
|
163
163
|
return $(() => {
|
|
164
164
|
var C;
|
|
165
165
|
((C = V.aspectRatio) != null && C.value || I != null && I.value) && q();
|
|
166
166
|
}), W(
|
|
167
|
-
[M, E, g,
|
|
167
|
+
[M, E, g, b, y, _, T],
|
|
168
168
|
K
|
|
169
169
|
), W(
|
|
170
170
|
e,
|
|
171
171
|
() => {
|
|
172
|
-
Q(e) &&
|
|
172
|
+
Q(e) && ye();
|
|
173
173
|
},
|
|
174
174
|
{ immediate: !0, deep: !0 }
|
|
175
175
|
), {
|
|
176
176
|
renderer: t,
|
|
177
177
|
isReady: r,
|
|
178
|
-
dispose:
|
|
178
|
+
dispose: Me
|
|
179
179
|
};
|
|
180
180
|
}
|
|
181
|
-
const ee = (e) => typeof e == "function",
|
|
181
|
+
const ee = (e) => typeof e == "function", de = (e) => !!e && e.constructor === Array;
|
|
182
182
|
function it(e) {
|
|
183
183
|
const n = { nodes: {}, materials: {} };
|
|
184
184
|
return e && e.traverse((o) => {
|
|
@@ -186,7 +186,7 @@ function it(e) {
|
|
|
186
186
|
}), n;
|
|
187
187
|
}
|
|
188
188
|
async function xt(e, n, o, t, r) {
|
|
189
|
-
const { logError: i } =
|
|
189
|
+
const { logError: i } = P(), c = new e();
|
|
190
190
|
r && r(c), o && o(c);
|
|
191
191
|
const s = (Array.isArray(n) ? n : [n]).map(
|
|
192
192
|
(u) => new Promise((l, p) => {
|
|
@@ -200,9 +200,9 @@ async function xt(e, n, o, t, r) {
|
|
|
200
200
|
);
|
|
201
201
|
})
|
|
202
202
|
);
|
|
203
|
-
return
|
|
203
|
+
return de(n) ? await Promise.all(s) : await s[0];
|
|
204
204
|
}
|
|
205
|
-
async function
|
|
205
|
+
async function ht(e) {
|
|
206
206
|
const n = new Ve(), o = new ze(n), t = (r) => new Promise((i, c) => {
|
|
207
207
|
o.load(
|
|
208
208
|
r,
|
|
@@ -213,7 +213,7 @@ async function At(e) {
|
|
|
213
213
|
}
|
|
214
214
|
);
|
|
215
215
|
});
|
|
216
|
-
if (
|
|
216
|
+
if (de(e)) {
|
|
217
217
|
const r = await Promise.all(e.map((i) => t(i)));
|
|
218
218
|
return e.length > 1 ? r : r[0];
|
|
219
219
|
} else {
|
|
@@ -239,13 +239,13 @@ async function At(e) {
|
|
|
239
239
|
};
|
|
240
240
|
}
|
|
241
241
|
}
|
|
242
|
-
const
|
|
242
|
+
const w = ["00", "01", "02", "03", "04", "05", "06", "07", "08", "09", "0a", "0b", "0c", "0d", "0e", "0f", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "1a", "1b", "1c", "1d", "1e", "1f", "20", "21", "22", "23", "24", "25", "26", "27", "28", "29", "2a", "2b", "2c", "2d", "2e", "2f", "30", "31", "32", "33", "34", "35", "36", "37", "38", "39", "3a", "3b", "3c", "3d", "3e", "3f", "40", "41", "42", "43", "44", "45", "46", "47", "48", "49", "4a", "4b", "4c", "4d", "4e", "4f", "50", "51", "52", "53", "54", "55", "56", "57", "58", "59", "5a", "5b", "5c", "5d", "5e", "5f", "60", "61", "62", "63", "64", "65", "66", "67", "68", "69", "6a", "6b", "6c", "6d", "6e", "6f", "70", "71", "72", "73", "74", "75", "76", "77", "78", "79", "7a", "7b", "7c", "7d", "7e", "7f", "80", "81", "82", "83", "84", "85", "86", "87", "88", "89", "8a", "8b", "8c", "8d", "8e", "8f", "90", "91", "92", "93", "94", "95", "96", "97", "98", "99", "9a", "9b", "9c", "9d", "9e", "9f", "a0", "a1", "a2", "a3", "a4", "a5", "a6", "a7", "a8", "a9", "aa", "ab", "ac", "ad", "ae", "af", "b0", "b1", "b2", "b3", "b4", "b5", "b6", "b7", "b8", "b9", "ba", "bb", "bc", "bd", "be", "bf", "c0", "c1", "c2", "c3", "c4", "c5", "c6", "c7", "c8", "c9", "ca", "cb", "cc", "cd", "ce", "cf", "d0", "d1", "d2", "d3", "d4", "d5", "d6", "d7", "d8", "d9", "da", "db", "dc", "dd", "de", "df", "e0", "e1", "e2", "e3", "e4", "e5", "e6", "e7", "e8", "e9", "ea", "eb", "ec", "ed", "ee", "ef", "f0", "f1", "f2", "f3", "f4", "f5", "f6", "f7", "f8", "f9", "fa", "fb", "fc", "fd", "fe", "ff"];
|
|
243
243
|
function st() {
|
|
244
244
|
const e = Math.random() * 4294967295 | 0, n = Math.random() * 4294967295 | 0, o = Math.random() * 4294967295 | 0, t = Math.random() * 4294967295 | 0;
|
|
245
|
-
return (
|
|
245
|
+
return (w[e & 255] + w[e >> 8 & 255] + w[e >> 16 & 255] + w[e >> 24 & 255] + "-" + w[n & 255] + w[n >> 8 & 255] + "-" + w[n >> 16 & 15 | 64] + w[n >> 24 & 255] + "-" + w[o & 63 | 128] + w[o >> 8 & 255] + "-" + w[o >> 16 & 255] + w[o >> 24 & 255] + w[t & 255] + w[t >> 8 & 255] + w[t >> 16 & 255] + w[t >> 24 & 255]).toLowerCase();
|
|
246
246
|
}
|
|
247
|
-
const
|
|
248
|
-
function
|
|
247
|
+
const me = Symbol();
|
|
248
|
+
function At() {
|
|
249
249
|
const e = ae({
|
|
250
250
|
uuid: st(),
|
|
251
251
|
camera: void 0,
|
|
@@ -268,9 +268,9 @@ function Rt() {
|
|
|
268
268
|
getState: n,
|
|
269
269
|
setState: o
|
|
270
270
|
};
|
|
271
|
-
return oe(
|
|
271
|
+
return oe(me, t), t;
|
|
272
272
|
}
|
|
273
|
-
const ct = () =>
|
|
273
|
+
const ct = () => re(me, {
|
|
274
274
|
state: ae({
|
|
275
275
|
camera: void 0,
|
|
276
276
|
cameras: [],
|
|
@@ -280,7 +280,7 @@ const ct = () => Me(de, {
|
|
|
280
280
|
pointerEventHandler: void 0
|
|
281
281
|
})
|
|
282
282
|
}), ut = (e) => {
|
|
283
|
-
const { state: n } = ct(), o =
|
|
283
|
+
const { state: n } = ct(), o = R(() => {
|
|
284
284
|
var f;
|
|
285
285
|
return (f = n.canvas) == null ? void 0 : f.value;
|
|
286
286
|
}), { x: t, y: r } = Ue({ target: o }), { width: i, height: c, top: a, left: s } = Ye(o), u = new Ge(), l = ({ x: f, y: v }) => {
|
|
@@ -298,10 +298,10 @@ const ct = () => Me(de, {
|
|
|
298
298
|
y: (f == null ? void 0 : f.clientY) ?? r.value
|
|
299
299
|
});
|
|
300
300
|
return v ? p(v) || [] : [];
|
|
301
|
-
}, M =
|
|
301
|
+
}, M = R(() => d()), E = S(), b = S(), g = (f, v) => {
|
|
302
302
|
f.trigger({ event: v, intersects: d(v) });
|
|
303
303
|
}, y = (f) => {
|
|
304
|
-
g(
|
|
304
|
+
g(b, f);
|
|
305
305
|
};
|
|
306
306
|
let _;
|
|
307
307
|
const L = (f) => {
|
|
@@ -310,19 +310,19 @@ const ct = () => Me(de, {
|
|
|
310
310
|
}, O = (f) => {
|
|
311
311
|
var v;
|
|
312
312
|
f instanceof PointerEvent && _ === ((v = d(f)[0]) == null ? void 0 : v.object) && g(E, f);
|
|
313
|
-
}, k = (f) =>
|
|
314
|
-
o != null && o.value && (o.value.addEventListener("pointerup", O), o.value.addEventListener("pointerdown", L), o.value.addEventListener("pointermove", y), o.value.addEventListener("pointerleave", k),
|
|
313
|
+
}, k = (f) => b.trigger({ event: f, intersects: [] }), T = $(() => {
|
|
314
|
+
o != null && o.value && (o.value.addEventListener("pointerup", O), o.value.addEventListener("pointerdown", L), o.value.addEventListener("pointermove", y), o.value.addEventListener("pointerleave", k), T());
|
|
315
315
|
});
|
|
316
|
-
return
|
|
316
|
+
return ie(() => {
|
|
317
317
|
o != null && o.value && (o.value.removeEventListener("pointerup", O), o.value.removeEventListener("pointerdown", L), o.value.removeEventListener("pointermove", y), o.value.removeEventListener("pointerleave", k));
|
|
318
318
|
}), {
|
|
319
319
|
intersects: M,
|
|
320
320
|
onClick: (f) => E.on(f).off,
|
|
321
|
-
onPointerMove: (f) =>
|
|
321
|
+
onPointerMove: (f) => b.on(f).off
|
|
322
322
|
};
|
|
323
323
|
};
|
|
324
|
-
function
|
|
325
|
-
const { logWarning: e } =
|
|
324
|
+
function Rt() {
|
|
325
|
+
const { logWarning: e } = P();
|
|
326
326
|
function n(t, r, i) {
|
|
327
327
|
let c = null;
|
|
328
328
|
return t.traverse((a) => {
|
|
@@ -352,7 +352,7 @@ const St = () => {
|
|
|
352
352
|
n(d);
|
|
353
353
|
}), n(a);
|
|
354
354
|
});
|
|
355
|
-
}, t =
|
|
355
|
+
}, t = R(
|
|
356
356
|
() => ot(
|
|
357
357
|
Object.values(e).map((a) => Array.from(a.keys())).flat(),
|
|
358
358
|
({ uuid: a }) => a
|
|
@@ -364,22 +364,22 @@ const St = () => {
|
|
|
364
364
|
});
|
|
365
365
|
let c;
|
|
366
366
|
return i(({ intersects: a, event: s }) => {
|
|
367
|
-
var M, E,
|
|
367
|
+
var M, E, b, g;
|
|
368
368
|
const u = (M = a == null ? void 0 : a[0]) == null ? void 0 : M.object, { pointerLeave: l, pointerEnter: p, pointerMove: d } = e;
|
|
369
|
-
c && c !== u && ((E = l.get(c)) == null || E(c, s)), u && (c !== u && ((
|
|
369
|
+
c && c !== u && ((E = l.get(c)) == null || E(c, s)), u && (c !== u && ((b = p.get(u)) == null || b(a[0], s)), (g = d.get(u)) == null || g(a[0], s)), c = u || null;
|
|
370
370
|
}), {
|
|
371
371
|
registerObject: o,
|
|
372
372
|
deregisterObject: n
|
|
373
373
|
};
|
|
374
|
-
}, { logError: ft } =
|
|
374
|
+
}, { logError: ft } = P();
|
|
375
375
|
function lt(e, n, o) {
|
|
376
|
-
var
|
|
376
|
+
var b;
|
|
377
377
|
e || ft("A scene most be provided to the TresProvider");
|
|
378
|
-
const { width: t, height: r } = m(o.windowSize) == !0 || m(o.windowSize) === "" || m(o.windowSize) === "true" || n.value === void 0 ? qe() : Ke((
|
|
378
|
+
const { width: t, height: r } = m(o.windowSize) == !0 || m(o.windowSize) === "" || m(o.windowSize) === "true" || n.value === void 0 ? qe() : Ke((b = n.value) == null ? void 0 : b.parentElement), i = R(() => t.value / r.value), c = {
|
|
379
379
|
height: r,
|
|
380
380
|
width: t,
|
|
381
381
|
aspectRatio: i
|
|
382
|
-
}, a =
|
|
382
|
+
}, a = A(e), { camera: s, cameras: u, addCamera: l, setCameraToActive: p } = Je(c), d = A(null);
|
|
383
383
|
function M(g) {
|
|
384
384
|
d.value || (d.value = g);
|
|
385
385
|
}
|
|
@@ -395,13 +395,19 @@ function lt(e, n, o) {
|
|
|
395
395
|
};
|
|
396
396
|
return oe("useTres", E), E;
|
|
397
397
|
}
|
|
398
|
-
|
|
398
|
+
function Lt() {
|
|
399
|
+
const e = re("useTres");
|
|
400
|
+
if (!e)
|
|
401
|
+
throw new Error("useTresContext must be used within a TresProvider");
|
|
402
|
+
return e;
|
|
403
|
+
}
|
|
404
|
+
const pe = U({}), ve = (e) => void Object.assign(pe.value, e), F = {
|
|
399
405
|
GEOMETRY_VIA_PROP: "tres__geometryViaProp",
|
|
400
406
|
MATERIAL_VIA_PROP: "tres__materialViaProp",
|
|
401
407
|
REGISTER_AT_POINTER_EVENT_HANDLER: "tres__registerAtPointerEventHandler"
|
|
402
408
|
};
|
|
403
409
|
let N = null, x = null;
|
|
404
|
-
const { logError: te } =
|
|
410
|
+
const { logError: te } = P(), dt = {
|
|
405
411
|
createElement(e, n, o, t) {
|
|
406
412
|
var s, u;
|
|
407
413
|
if (t || (t = {}), t.args || (t.args = []), e === "template" || nt(e))
|
|
@@ -412,7 +418,7 @@ const { logError: te } = T(), dt = {
|
|
|
412
418
|
const l = t.object;
|
|
413
419
|
r = l.type, i = Object.assign(l, { type: r, attach: t.attach, primitive: !0 });
|
|
414
420
|
} else {
|
|
415
|
-
const l =
|
|
421
|
+
const l = pe.value[r];
|
|
416
422
|
l || te(`${r} is not defined on the THREE namespace. Use extend to add it to the catalog.`), i = new l(...t.args);
|
|
417
423
|
}
|
|
418
424
|
i.isCamera && (t != null && t.position || i.position.set(3, 3, 3), t != null && t.lookAt || i.lookAt(0, 0, 0)), (t == null ? void 0 : t.attach) === void 0 && (i.isMaterial ? i.attach = "material" : i.isBufferGeometry && (i.attach = "geometry"));
|
|
@@ -480,15 +486,15 @@ const { logError: te } = T(), dt = {
|
|
|
480
486
|
setScopeId: () => void 0,
|
|
481
487
|
cloneNode: () => void 0,
|
|
482
488
|
insertStaticContent: () => void 0
|
|
483
|
-
}, { createApp: mt } =
|
|
489
|
+
}, { createApp: mt } = Te(dt), pt = (e) => {
|
|
484
490
|
const n = mt(o);
|
|
485
491
|
function o() {
|
|
486
492
|
return e && e.default ? e.default() : [];
|
|
487
493
|
}
|
|
488
494
|
return n;
|
|
489
495
|
};
|
|
490
|
-
|
|
491
|
-
const vt = ["data-scene"], gt = /* @__PURE__ */
|
|
496
|
+
ve(Se);
|
|
497
|
+
const vt = ["data-scene"], gt = /* @__PURE__ */ Pe({
|
|
492
498
|
__name: "TresCanvas",
|
|
493
499
|
props: {
|
|
494
500
|
shadows: { type: Boolean },
|
|
@@ -507,12 +513,12 @@ const vt = ["data-scene"], gt = /* @__PURE__ */ Te({
|
|
|
507
513
|
camera: {}
|
|
508
514
|
},
|
|
509
515
|
setup(e) {
|
|
510
|
-
const n = e, { logWarning: o } =
|
|
516
|
+
const n = e, { logWarning: o } = P(), t = U(), r = A(new Ne()), { onLoop: i } = fe(), c = _e();
|
|
511
517
|
function a() {
|
|
512
518
|
const s = lt(r.value, t, n), { addCamera: u, camera: l, clearCameras: p } = s;
|
|
513
519
|
let d;
|
|
514
520
|
function M() {
|
|
515
|
-
d = pt(c), d.provide("useTres", s), d.provide("extend",
|
|
521
|
+
d = pt(c), d.provide("useTres", s), d.provide("extend", ve), d.mount(r.value), b();
|
|
516
522
|
}
|
|
517
523
|
M();
|
|
518
524
|
const { renderer: E } = rt(t, s, n);
|
|
@@ -520,13 +526,13 @@ const vt = ["data-scene"], gt = /* @__PURE__ */ Te({
|
|
|
520
526
|
var g;
|
|
521
527
|
l.value && n.disableRender !== !0 && ((g = E.value) == null || g.render(r.value, l.value));
|
|
522
528
|
});
|
|
523
|
-
function
|
|
529
|
+
function b() {
|
|
524
530
|
const g = r.value.getObjectByProperty("isCamera", !0);
|
|
525
531
|
if (g)
|
|
526
532
|
u(g);
|
|
527
533
|
else {
|
|
528
534
|
o("No camera found. Creating a default perspective camera. To have full control over a camera, please add one to the scene.");
|
|
529
|
-
const y = new
|
|
535
|
+
const y = new se(45, window.innerWidth / window.innerHeight, 0.1, 1e3);
|
|
530
536
|
y.position.set(3, 3, 3), y.lookAt(0, 0, 0), u(y);
|
|
531
537
|
}
|
|
532
538
|
W(
|
|
@@ -539,12 +545,12 @@ const vt = ["data-scene"], gt = /* @__PURE__ */ Te({
|
|
|
539
545
|
}
|
|
540
546
|
return xe(() => {
|
|
541
547
|
a();
|
|
542
|
-
}),
|
|
543
|
-
}), (s, u) => (
|
|
548
|
+
}), ie(() => {
|
|
549
|
+
}), (s, u) => (he(), Ae("canvas", {
|
|
544
550
|
ref_key: "canvas",
|
|
545
551
|
ref: t,
|
|
546
552
|
"data-scene": r.value.uuid,
|
|
547
|
-
style:
|
|
553
|
+
style: Re({
|
|
548
554
|
display: "block",
|
|
549
555
|
width: "100%",
|
|
550
556
|
height: "100%",
|
|
@@ -557,41 +563,43 @@ const vt = ["data-scene"], gt = /* @__PURE__ */ Te({
|
|
|
557
563
|
})
|
|
558
564
|
}, null, 12, vt));
|
|
559
565
|
}
|
|
560
|
-
}),
|
|
566
|
+
}), wt = [
|
|
561
567
|
"TresCanvas",
|
|
562
568
|
"TresLeches",
|
|
563
569
|
"TresScene"
|
|
564
|
-
],
|
|
570
|
+
], bt = {
|
|
565
571
|
template: {
|
|
566
572
|
compilerOptions: {
|
|
567
|
-
isCustomElement: (e) => e.startsWith("Tres") && !
|
|
573
|
+
isCustomElement: (e) => e.startsWith("Tres") && !wt.includes(e) || e === "primitive"
|
|
568
574
|
}
|
|
569
575
|
}
|
|
570
|
-
},
|
|
576
|
+
}, Ot = bt, kt = {
|
|
571
577
|
install(e) {
|
|
572
578
|
e.component("TresCanvas", gt);
|
|
573
579
|
}
|
|
574
580
|
};
|
|
575
581
|
export {
|
|
576
|
-
|
|
582
|
+
me as TRES_CONTEXT_KEY,
|
|
577
583
|
gt as TresCanvas,
|
|
578
|
-
|
|
579
|
-
|
|
580
|
-
|
|
584
|
+
pe as catalogue,
|
|
585
|
+
kt as default,
|
|
586
|
+
ve as extend,
|
|
581
587
|
_t as isProd,
|
|
582
588
|
et as normalizeColor,
|
|
583
|
-
|
|
584
|
-
|
|
589
|
+
Pt as normalizeVectorFlexibleParam,
|
|
590
|
+
Ot as templateCompilerOptions,
|
|
585
591
|
it as trasverseObjects,
|
|
586
592
|
Je as useCamera,
|
|
587
593
|
xt as useLoader,
|
|
588
|
-
|
|
594
|
+
P as useLogger,
|
|
589
595
|
St as usePointerEventHandler,
|
|
590
596
|
ut as useRaycaster,
|
|
591
|
-
|
|
597
|
+
fe as useRenderLoop,
|
|
592
598
|
rt as useRenderer,
|
|
593
|
-
|
|
594
|
-
|
|
599
|
+
Rt as useSeek,
|
|
600
|
+
ht as useTexture,
|
|
595
601
|
ct as useTres,
|
|
596
|
-
|
|
602
|
+
Lt as useTresContext,
|
|
603
|
+
lt as useTresContextProvider,
|
|
604
|
+
At as useTresProvider
|
|
597
605
|
};
|
package/dist/tres.umd.cjs
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* name: @tresjs/core
|
|
3
|
-
* version: v2.4.0
|
|
3
|
+
* version: v2.4.0-next.0
|
|
4
4
|
* (c) 2023
|
|
5
5
|
* description: Declarative ThreeJS using Vue Components
|
|
6
6
|
* author: Alvaro Saburido <hola@alvarosaburido.dev> (https://github.com/alvarosabu/)
|
|
7
7
|
*/
|
|
8
|
-
(function(m,l){typeof exports=="object"&&typeof module<"u"?l(exports,require("vue"),require("three"),require("@vueuse/core")):typeof define=="function"&&define.amd?define(["exports","vue","three","@vueuse/core"],l):(m=typeof globalThis<"u"?globalThis:m||self,l(m.tres={},m.Vue,m.Three,m.VueUseCore))})(this,function(m,l,g,f){"use strict";function le(e){const n=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(e){for(const a in e)if(a!=="default"){const t=Object.getOwnPropertyDescriptor(e,a);Object.defineProperty(n,a,t.get?t:{enumerable:!0,get:()=>e[a]})}}return n.default=e,Object.freeze(n)}const ue=le(g);function Y(e){const n=l.shallowRef([]),a=l.computed(()=>n.value.find(c=>c.userData.IS_ACTIVE_CAMERA));function t(c,o=!0){n.value.push(c),o&&r(c.uuid)}function r(c){const o=n.value.find(s=>s.uuid===c);o&&(n.value.forEach(s=>s.userData.IS_ACTIVE_CAMERA=!1),o.userData.IS_ACTIVE_CAMERA=!0)}function i(){n.value=[]}return l.watchEffect(()=>{var c;(c=e.aspectRatio)!=null&&c.value&&(console.log("camera watcher aspectRatio",e.aspectRatio.value),n.value.forEach(o=>{o instanceof g.PerspectiveCamera&&(o.aspect=e.aspectRatio.value),o.updateProjectionMatrix()}))}),{cameras:n,camera:a,addCamera:t,setCameraToActive:r,clearCameras:i}}const K=f.createEventHook(),X=f.createEventHook(),I=f.createEventHook(),L=new g.Clock;let R=0,k=0;const{pause:fe,resume:de,isActive:me}=f.useRafFn(()=>{K.trigger({delta:R,elapsed:k,clock:L}),X.trigger({delta:R,elapsed:k,clock:L}),I.trigger({delta:R,elapsed:k,clock:L})},{immediate:!1});I.on(()=>{R=L.getDelta(),k=L.getElapsedTime()});function z(){return{onBeforeLoop:K.on,onLoop:X.on,onAfterLoop:I.on,pause:fe,resume:de,isActive:me}}function pe(e){return typeof e=="number"?[e,e,e]:e instanceof g.Vector3?[e.x,e.y,e.z]:e}function J(e){return e instanceof g.Color?e:Array.isArray(e)?new g.Color(...e):new g.Color(e)}const G={realistic:{outputColorSpace:g.SRGBColorSpace,toneMapping:g.ACESFilmicToneMapping,toneMappingExposure:3,shadowMap:{enabled:!0,type:g.PCFSoftShadowMap}}},Q=(e,n)=>{for(const a of Object.keys(n))n[a]instanceof Object&&Object.assign(n[a],Q(e[a],n[a]));return Object.assign(e||{},n),e},ve=ge("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 x(e){return e.replace(/-([a-z])/g,(n,a)=>a.toUpperCase())}function ge(e,n){const a=Object.create(null),t=e.split(",");for(let r=0;r<t.length;r++)a[t[r]]=!0;return n?r=>!!a[r.toLowerCase()]:r=>!!a[r]}const we=(e,n)=>{const a=new Set,t=[];for(const r of e){const i=n(r);a.has(i)||(a.add(i),t.push(r))}return t},be=!0,Z="[TresJS ▲ ■ ●] ";function S(){function e(t,r){console.error(`${Z} ${t}`,r||"")}function n(t){console.warn(`${Z} ${t}`)}function a(t,r){}return{logError:e,logWarning:n,logMessage:a}}function H(e,n,a){const t=l.shallowRef(),r=l.ref(!1),{alpha:i=!0,antialias:c=!0,depth:o,logarithmicDepthBuffer:s,failIfMajorPerformanceCaveat:u,precision:p,premultipliedAlpha:w,stencil:v,shadows:_=!1,shadowMapType:h=g.PCFShadowMap,useLegacyLights:M=!1,outputColorSpace:C=g.LinearSRGBColorSpace,toneMapping:P=g.NoToneMapping,toneMappingExposure:O=1,context:V=void 0,powerPreference:j="default",preserveDrawingBuffer:B=!1,clearColor:T,windowSize:d=!1,preset:b=void 0}=l.toRefs(a),{cameras:We,setRenderer:Ve,sizes:q}=n,{logError:je,logWarning:Ue}=S(),{pixelRatio:D}=f.useDevicePixelRatio(),{pause:Be,resume:De}=z(),se=()=>{t.value&&(t.value.setSize(q.width.value,q.height.value),t.value.setPixelRatio(Math.min(D.value,2)))},ce=()=>{if(!t.value)return;const A=f.toValue(b);if(A){A in G||je("Renderer Preset must be one of these: "+Object.keys(G).join(", ")),Q(t.value,G[A]);return}t.value.shadowMap.enabled=f.toValue(_),t.value.shadowMap.type=f.toValue(h),t.value.toneMapping=f.toValue(P)||g.NoToneMapping,t.value.toneMappingExposure=f.toValue(O),t.value.outputColorSpace=f.toValue(C)||g.LinearSRGBColorSpace,T!=null&&T.value&&t.value.setClearColor(J(f.toValue(T))),t.value.useLegacyLights=f.toValue(M)},Ie=()=>{const A=f.unrefElement(e);console.count("init renderer"),A&&(t.value=new g.WebGLRenderer({canvas:A,alpha:f.toValue(i),antialias:f.toValue(c),context:f.toValue(V),depth:f.toValue(o),failIfMajorPerformanceCaveat:f.toValue(u),logarithmicDepthBuffer:f.toValue(s),powerPreference:f.toValue(j),precision:f.toValue(p),stencil:f.toValue(v),preserveDrawingBuffer:f.toValue(B),premultipliedAlpha:f.toValue(w)}),Ve(t.value),ce(),se(),De(),r.value=!0)},ze=()=>{t.value&&(t.value.dispose(),t.value=void 0,r.value=!1,Be())};return l.watchEffect(()=>{var A;((A=q.aspectRatio)!=null&&A.value||D!=null&&D.value)&&se()}),l.watch([_,h,C,M,P,O,T],ce),l.watch(e,()=>{f.unrefElement(e)&&Ie()},{immediate:!0,deep:!0}),{renderer:t,isReady:r,dispose:ze}}const ee=e=>typeof e=="function",te=e=>!!e&&e.constructor===Array;function ne(e){const n={nodes:{},materials:{}};return e&&e.traverse(a=>{a.name&&(n.nodes[a.name]=a),a.material&&!n.materials[a.material.name]&&(n.materials[a.material.name]=a.material)}),n}async function ye(e,n,a,t,r){const{logError:i}=S(),c=new e;r&&r(c),a&&a(c);const s=(Array.isArray(n)?n:[n]).map(u=>new Promise((p,w)=>{c.load(u,v=>{v.scene&&Object.assign(v,ne(v.scene)),p(v)},t,v=>w(i("[useLoader] - Failed to load resource",v)))}));return te(n)?await Promise.all(s):await s[0]}async function Ce(e){const n=new g.LoadingManager,a=new g.TextureLoader(n),t=r=>new Promise((i,c)=>{a.load(r,o=>i(o),()=>null,()=>{c(new Error("[useTextures] - Failed to load texture"))})});if(te(e)){const r=await Promise.all(e.map(i=>t(i)));return e.length>1?r:r[0]}else{const{map:r,displacementMap:i,normalMap:c,roughnessMap:o,metalnessMap:s,aoMap:u,alphaMap:p,matcap:w}=e;return{map:r?await t(r):null,displacementMap:i?await t(i):null,normalMap:c?await t(c):null,roughnessMap:o?await t(o):null,metalnessMap:s?await t(s):null,aoMap:u?await t(u):null,alphaMap:p?await t(p):null,matcap:w?await t(w):null}}}const y=["00","01","02","03","04","05","06","07","08","09","0a","0b","0c","0d","0e","0f","10","11","12","13","14","15","16","17","18","19","1a","1b","1c","1d","1e","1f","20","21","22","23","24","25","26","27","28","29","2a","2b","2c","2d","2e","2f","30","31","32","33","34","35","36","37","38","39","3a","3b","3c","3d","3e","3f","40","41","42","43","44","45","46","47","48","49","4a","4b","4c","4d","4e","4f","50","51","52","53","54","55","56","57","58","59","5a","5b","5c","5d","5e","5f","60","61","62","63","64","65","66","67","68","69","6a","6b","6c","6d","6e","6f","70","71","72","73","74","75","76","77","78","79","7a","7b","7c","7d","7e","7f","80","81","82","83","84","85","86","87","88","89","8a","8b","8c","8d","8e","8f","90","91","92","93","94","95","96","97","98","99","9a","9b","9c","9d","9e","9f","a0","a1","a2","a3","a4","a5","a6","a7","a8","a9","aa","ab","ac","ad","ae","af","b0","b1","b2","b3","b4","b5","b6","b7","b8","b9","ba","bb","bc","bd","be","bf","c0","c1","c2","c3","c4","c5","c6","c7","c8","c9","ca","cb","cc","cd","ce","cf","d0","d1","d2","d3","d4","d5","d6","d7","d8","d9","da","db","dc","dd","de","df","e0","e1","e2","e3","e4","e5","e6","e7","e8","e9","ea","eb","ec","ed","ee","ef","f0","f1","f2","f3","f4","f5","f6","f7","f8","f9","fa","fb","fc","fd","fe","ff"];function Me(){const e=Math.random()*4294967295|0,n=Math.random()*4294967295|0,a=Math.random()*4294967295|0,t=Math.random()*4294967295|0;return(y[e&255]+y[e>>8&255]+y[e>>16&255]+y[e>>24&255]+"-"+y[n&255]+y[n>>8&255]+"-"+y[n>>16&15|64]+y[n>>24&255]+"-"+y[a&63|128]+y[a>>8&255]+"-"+y[a>>16&255]+y[a>>24&255]+y[t&255]+y[t>>8&255]+y[t>>16&255]+y[t>>24&255]).toLowerCase()}const N=Symbol();function he(){const e=l.shallowReactive({uuid:Me(),camera:void 0,cameras:[],canvas:void 0,scene:void 0,renderer:void 0,aspectRatio:void 0,pointerEventHandler:void 0});function n(r){return e[r]}function a(r,i){e[r]=i}const t={state:e,...l.toRefs(e),getState:n,setState:a};return l.provide(N,t),t}const ae=()=>l.inject(N,{state:l.shallowReactive({camera:void 0,cameras:[],canvas:void 0,scene:void 0,renderer:void 0,pointerEventHandler:void 0})}),oe=e=>{const{state:n}=ae(),a=l.computed(()=>{var d;return(d=n.canvas)==null?void 0:d.value}),{x:t,y:r}=f.usePointer({target:a}),{width:i,height:c,top:o,left:s}=f.useElementBounding(a),u=new g.Raycaster,p=({x:d,y:b})=>{if(a.value)return{x:(d-s.value)/i.value*2-1,y:-((b-o.value)/c.value)*2+1}},w=({x:d,y:b})=>{if(n.camera)return u.setFromCamera(new g.Vector2(d,b),n.camera),u.intersectObjects(e.value,!1)},v=d=>{const b=p({x:(d==null?void 0:d.clientX)??t.value,y:(d==null?void 0:d.clientY)??r.value});return b?w(b)||[]:[]},_=l.computed(()=>v()),h=f.createEventHook(),M=f.createEventHook(),C=(d,b)=>{d.trigger({event:b,intersects:v(b)})},P=d=>{C(M,d)};let O;const V=d=>{var b;O=(b=v(d)[0])==null?void 0:b.object},j=d=>{var b;d instanceof PointerEvent&&O===((b=v(d)[0])==null?void 0:b.object)&&C(h,d)},B=d=>M.trigger({event:d,intersects:[]}),T=l.watchEffect(()=>{a!=null&&a.value&&(a.value.addEventListener("pointerup",j),a.value.addEventListener("pointerdown",V),a.value.addEventListener("pointermove",P),a.value.addEventListener("pointerleave",B),T())});return l.onUnmounted(()=>{a!=null&&a.value&&(a.value.removeEventListener("pointerup",j),a.value.removeEventListener("pointerdown",V),a.value.removeEventListener("pointermove",P),a.value.removeEventListener("pointerleave",B))}),{intersects:_,onClick:d=>h.on(d).off,onPointerMove:d=>M.on(d).off}};function Pe(){const{logWarning:e}=S();function n(t,r,i){let c=null;return t.traverse(o=>{o[r]===i&&(c=o)}),c||e(`Child with ${r} '${i}' not found.`),c}function a(t,r){return n(t,"name",r)}return{seek:n,seekByName:a}}const _e=()=>{const e=l.reactive({click:new Map,pointerMove:new Map,pointerEnter:new Map,pointerLeave:new Map}),n=o=>{Object.values(e).forEach(s=>s.delete(o))},a=o=>{const{onClick:s,onPointerMove:u,onPointerEnter:p,onPointerLeave:w}=o;s&&e.click.set(o,s),u&&e.pointerMove.set(o,u),p&&e.pointerEnter.set(o,p),w&&e.pointerLeave.set(o,w),o.addEventListener("removed",()=>{o.traverse(v=>{n(v)}),n(o)})},t=l.computed(()=>we(Object.values(e).map(o=>Array.from(o.keys())).flat(),({uuid:o})=>o)),{onClick:r,onPointerMove:i}=oe(t);r(({intersects:o,event:s})=>{var u;o.length&&((u=e.click.get(o[0].object))==null||u(o[0],s))});let c;return i(({intersects:o,event:s})=>{var _,h,M,C;const u=(_=o==null?void 0:o[0])==null?void 0:_.object,{pointerLeave:p,pointerEnter:w,pointerMove:v}=e;c&&c!==u&&((h=p.get(c))==null||h(c,s)),u&&(c!==u&&((M=w.get(u))==null||M(o[0],s)),(C=v.get(u))==null||C(o[0],s)),c=u||null}),{registerObject:a,deregisterObject:n}},{logError:Ae}=S();function Se(e,n,a){var M;e||Ae("A scene most be provided to the TresProvider");const{width:t,height:r}=f.toValue(a.windowSize)==!0||f.toValue(a.windowSize)===""||f.toValue(a.windowSize)==="true"||n.value===void 0?f.useWindowSize():f.useElementSize((M=n.value)==null?void 0:M.parentElement),i=l.computed(()=>t.value/r.value),c={height:r,width:t,aspectRatio:i},o=l.shallowRef(e),{camera:s,cameras:u,addCamera:p,setCameraToActive:w}=Y(c),v=l.shallowRef(null);function _(C){v.value||(v.value=C)}const h={scene:l.readonly(o),cameras:l.readonly(u),camera:s,addCamera:p,setCameraToActive:w,renderer:l.readonly(v),setRenderer:_,sizes:c};return l.provide("useTres",h),h}const F=l.ref({}),W=e=>void Object.assign(F.value,e),U={GEOMETRY_VIA_PROP:"tres__geometryViaProp",MATERIAL_VIA_PROP:"tres__materialViaProp",REGISTER_AT_POINTER_EVENT_HANDLER:"tres__registerAtPointerEventHandler"};function Ne(e){}let $=null,E=null;const{logError:re}=S(),Te={createElement(e,n,a,t){var s,u;if(t||(t={}),t.args||(t.args=[]),e==="template"||ve(e))return null;let r=e.replace("Tres",""),i;if(e==="primitive"){(t==null?void 0:t.object)===void 0&&re("Tres primitives need a prop 'object'");const p=t.object;r=p.type,i=Object.assign(p,{type:r,attach:t.attach,primitive:!0})}else{const p=F.value[r];p||re(`${r} is not defined on the THREE namespace. Use extend to add it to the catalog.`),i=new p(...t.args)}i.isCamera&&(t!=null&&t.position||i.position.set(3,3,3),t!=null&&t.lookAt||i.lookAt(0,0,0)),(t==null?void 0:t.attach)===void 0&&(i.isMaterial?i.attach="material":i.isBufferGeometry&&(i.attach="geometry"));const{GEOMETRY_VIA_PROP:c,MATERIAL_VIA_PROP:o}=U;return i.isObject3D&&((s=t==null?void 0:t.material)!=null&&s.isMaterial&&(i.userData[o]=!0),(u=t==null?void 0:t.geometry)!=null&&u.isBufferGeometry&&(i.userData[c]=!0)),i},insert(e,n){var a,t,r,i,c,o,s;if(n&&n.isScene&&(E=n),(((a=e==null?void 0:e.__vnode)==null?void 0:a.type)==="TresGroup"||((t=e==null?void 0:e.__vnode)==null?void 0:t.type)==="TresObject3D")&&n===null&&!((i=(r=e==null?void 0:e.__vnode)==null?void 0:r.ctx)!=null&&i.asyncResolved)){$=e;return}else(c=e==null?void 0:e.__vnode)!=null&&c.type.includes("Controls")&&n===null&&($=E);n||(n=$),e!=null&&e.isObject3D&&(n!=null&&n.isObject3D)?(n.add(e),e.dispatchEvent({type:"added"}),(s=(o=E==null?void 0:E.userData)==null?void 0:o[U.REGISTER_AT_POINTER_EVENT_HANDLER])==null||s.call(o,e)):e!=null&&e.isFog?n.fog=e:typeof(e==null?void 0:e.attach)=="string"&&(e.__previousAttach=e[n==null?void 0:n.attach],n&&(n[e.attach]=e))},remove(e){var n,a;if(e){if(e.isObject3D){const t=e,r=i=>{var s,u;const{GEOMETRY_VIA_PROP:c,MATERIAL_VIA_PROP:o}=U;i.userData[o]||(s=i.material)==null||s.dispose(),i.userData[c]||(u=i.geometry)==null||u.dispose()};t.traverse(i=>{r(i)}),r(t)}(n=e.removeFromParent)==null||n.call(e),(a=e.dispose)==null||a.call(e)}},patchProp(e,n,a,t){if(e){let r=e,i=n,c=x(i),o=r==null?void 0:r[c];if(r.type==="BufferGeometry"){if(i==="args")return;r.setAttribute(x(i),new g.BufferAttribute(...t));return}if(i.includes("-")&&o===void 0){const u=i.split("-");o=u.reduce((p,w)=>p[x(w)],r),i=u.pop(),c=i.toLowerCase(),o!=null&&o.set||(r=u.reduce((p,w)=>p[x(w)],r))}let s=t;if(s===""&&(s=!0),ee(o)){Array.isArray(s)?e[c](...s):e[c](s);return}!(o!=null&&o.set)&&!ee(o)?r[c]=s:o.constructor===s.constructor&&(o!=null&&o.copy)?o==null||o.copy(s):Array.isArray(s)?o.set(...s):!o.isColor&&o.setScalar?o.setScalar(s):o.set(s)}},parentNode(e){return(e==null?void 0:e.parent)||null},createText:()=>void 0,createComment:()=>void 0,setText:()=>void 0,setElementText:()=>void 0,nextSibling:()=>void 0,querySelector:()=>void 0,setScopeId:()=>void 0,cloneNode:()=>void 0,insertStaticContent:()=>void 0},{createApp:Le}=l.createRenderer(Te),Ee=e=>{const n=Le(a);function a(){return e&&e.default?e.default():[]}return n};W(ue);const Oe=["data-scene"],ie=l.defineComponent({__name:"TresCanvas",props:{shadows:{type:Boolean},shadowMapType:{},useLegacyLights:{type:Boolean},outputColorSpace:{},toneMapping:{},toneMappingExposure:{},context:{},powerPreference:{},preserveDrawingBuffer:{type:Boolean},clearColor:{},windowSize:{type:Boolean},preset:{},disableRender:{type:Boolean},camera:{}},setup(e){const n=e,{logWarning:a}=S(),t=l.ref(),r=l.shallowRef(new g.Scene),{onLoop:i}=z(),c=l.useSlots();function o(){const s=Se(r.value,t,n),{addCamera:u,camera:p,clearCameras:w}=s;let v;function _(){v=Ee(c),v.provide("useTres",s),v.provide("extend",W),v.mount(r.value),M()}_();const{renderer:h}=H(t,s,n);n.camera&&u(n.camera),i(()=>{var C;p.value&&n.disableRender!==!0&&((C=h.value)==null||C.render(r.value,p.value))});function M(){const C=r.value.getObjectByProperty("isCamera",!0);if(C)u(C);else{a("No camera found. Creating a default perspective camera. To have full control over a camera, please add one to the scene.");const P=new g.PerspectiveCamera(45,window.innerWidth/window.innerHeight,.1,1e3);P.position.set(3,3,3),P.lookAt(0,0,0),u(P)}l.watch(()=>n.camera,P=>{P&&(w(),u(P))})}}return l.onMounted(()=>{o()}),l.onUnmounted(()=>{}),(s,u)=>(l.openBlock(),l.createElementBlock("canvas",{ref_key:"canvas",ref:t,"data-scene":r.value.uuid,style:l.normalizeStyle({display:"block",width:"100%",height:"100%",position:s.windowSize?"fixed":"relative",top:0,left:0,pointerEvents:"auto",touchAction:"none",zIndex:1})},null,12,Oe))}}),Re=["TresCanvas","TresLeches","TresScene"],ke={template:{compilerOptions:{isCustomElement:e=>e.startsWith("Tres")&&!Re.includes(e)||e==="primitive"}}},xe={install(e){e.component("TresCanvas",ie)}};m.TRES_CONTEXT_KEY=N,m.TresCanvas=ie,m.catalogue=F,m.default=xe,m.extend=W,m.isProd=be,m.normalizeColor=J,m.normalizeVectorFlexibleParam=pe,m.templateCompilerOptions=ke,m.trasverseObjects=ne,m.useCamera=Y,m.useLoader=ye,m.useLogger=S,m.usePointerEventHandler=_e,m.useRaycaster=oe,m.useRenderLoop=z,m.useRenderer=H,m.useSeek=Pe,m.useTexture=Ce,m.useTres=ae,m.useTresProvider=he,Object.defineProperties(m,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}})});
|
|
8
|
+
(function(d,u){typeof exports=="object"&&typeof module<"u"?u(exports,require("vue"),require("three"),require("@vueuse/core")):typeof define=="function"&&define.amd?define(["exports","vue","three","@vueuse/core"],u):(d=typeof globalThis<"u"?globalThis:d||self,u(d.tres={},d.Vue,d.Three,d.VueUseCore))})(this,function(d,u,g,f){"use strict";function le(e){const n=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(e){for(const a in e)if(a!=="default"){const t=Object.getOwnPropertyDescriptor(e,a);Object.defineProperty(n,a,t.get?t:{enumerable:!0,get:()=>e[a]})}}return n.default=e,Object.freeze(n)}const fe=le(g);function Y(e){const n=u.shallowRef([]),a=u.computed(()=>n.value.find(c=>c.userData.IS_ACTIVE_CAMERA));function t(c,o=!0){n.value.push(c),o&&r(c.uuid)}function r(c){const o=n.value.find(s=>s.uuid===c);o&&(n.value.forEach(s=>s.userData.IS_ACTIVE_CAMERA=!1),o.userData.IS_ACTIVE_CAMERA=!0)}function i(){n.value=[]}return u.watchEffect(()=>{var c;(c=e.aspectRatio)!=null&&c.value&&(console.log("camera watcher aspectRatio",e.aspectRatio.value),n.value.forEach(o=>{o instanceof g.PerspectiveCamera&&(o.aspect=e.aspectRatio.value),o.updateProjectionMatrix()}))}),{cameras:n,camera:a,addCamera:t,setCameraToActive:r,clearCameras:i}}const K=f.createEventHook(),X=f.createEventHook(),I=f.createEventHook(),E=new g.Clock;let R=0,x=0;const{pause:de,resume:me,isActive:pe}=f.useRafFn(()=>{K.trigger({delta:R,elapsed:x,clock:E}),X.trigger({delta:R,elapsed:x,clock:E}),I.trigger({delta:R,elapsed:x,clock:E})},{immediate:!1});I.on(()=>{R=E.getDelta(),x=E.getElapsedTime()});function z(){return{onBeforeLoop:K.on,onLoop:X.on,onAfterLoop:I.on,pause:de,resume:me,isActive:pe}}function ve(e){return typeof e=="number"?[e,e,e]:e instanceof g.Vector3?[e.x,e.y,e.z]:e}function J(e){return e instanceof g.Color?e:Array.isArray(e)?new g.Color(...e):new g.Color(e)}const G={realistic:{outputColorSpace:g.SRGBColorSpace,toneMapping:g.ACESFilmicToneMapping,toneMappingExposure:3,shadowMap:{enabled:!0,type:g.PCFSoftShadowMap}}},Q=(e,n)=>{for(const a of Object.keys(n))n[a]instanceof Object&&Object.assign(n[a],Q(e[a],n[a]));return Object.assign(e||{},n),e},ge=we("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 k(e){return e.replace(/-([a-z])/g,(n,a)=>a.toUpperCase())}function we(e,n){const a=Object.create(null),t=e.split(",");for(let r=0;r<t.length;r++)a[t[r]]=!0;return n?r=>!!a[r.toLowerCase()]:r=>!!a[r]}const be=(e,n)=>{const a=new Set,t=[];for(const r of e){const i=n(r);a.has(i)||(a.add(i),t.push(r))}return t},ye=!0,Z="[TresJS ▲ ■ ●] ";function A(){function e(t,r){console.error(`${Z} ${t}`,r||"")}function n(t){console.warn(`${Z} ${t}`)}function a(t,r){}return{logError:e,logWarning:n,logMessage:a}}function H(e,n,a){const t=u.shallowRef(),r=u.ref(!1),{alpha:i=!0,antialias:c=!0,depth:o,logarithmicDepthBuffer:s,failIfMajorPerformanceCaveat:l,precision:p,premultipliedAlpha:w,stencil:v,shadows:_=!1,shadowMapType:P=g.PCFShadowMap,useLegacyLights:h=!1,outputColorSpace:C=g.LinearSRGBColorSpace,toneMapping:M=g.NoToneMapping,toneMappingExposure:O=1,context:V=void 0,powerPreference:j="default",preserveDrawingBuffer:B=!1,clearColor:S,windowSize:m=!1,preset:b=void 0}=u.toRefs(a),{cameras:Ue,setRenderer:je,sizes:q}=n,{logError:Be,logWarning:$e}=A(),{pixelRatio:D}=f.useDevicePixelRatio(),{pause:De,resume:Ie}=z(),ce=()=>{t.value&&(t.value.setSize(q.width.value,q.height.value),t.value.setPixelRatio(Math.min(D.value,2)))},ue=()=>{if(!t.value)return;const T=f.toValue(b);if(T){T in G||Be("Renderer Preset must be one of these: "+Object.keys(G).join(", ")),Q(t.value,G[T]);return}t.value.shadowMap.enabled=f.toValue(_),t.value.shadowMap.type=f.toValue(P),t.value.toneMapping=f.toValue(M)||g.NoToneMapping,t.value.toneMappingExposure=f.toValue(O),t.value.outputColorSpace=f.toValue(C)||g.LinearSRGBColorSpace,S!=null&&S.value&&t.value.setClearColor(J(f.toValue(S))),t.value.useLegacyLights=f.toValue(h)},ze=()=>{const T=f.unrefElement(e);console.count("init renderer"),T&&(t.value=new g.WebGLRenderer({canvas:T,alpha:f.toValue(i),antialias:f.toValue(c),context:f.toValue(V),depth:f.toValue(o),failIfMajorPerformanceCaveat:f.toValue(l),logarithmicDepthBuffer:f.toValue(s),powerPreference:f.toValue(j),precision:f.toValue(p),stencil:f.toValue(v),preserveDrawingBuffer:f.toValue(B),premultipliedAlpha:f.toValue(w)}),je(t.value),ue(),ce(),Ie(),r.value=!0)},Ge=()=>{t.value&&(t.value.dispose(),t.value=void 0,r.value=!1,De())};return u.watchEffect(()=>{var T;((T=q.aspectRatio)!=null&&T.value||D!=null&&D.value)&&ce()}),u.watch([_,P,C,h,M,O,S],ue),u.watch(e,()=>{f.unrefElement(e)&&ze()},{immediate:!0,deep:!0}),{renderer:t,isReady:r,dispose:Ge}}const ee=e=>typeof e=="function",te=e=>!!e&&e.constructor===Array;function ne(e){const n={nodes:{},materials:{}};return e&&e.traverse(a=>{a.name&&(n.nodes[a.name]=a),a.material&&!n.materials[a.material.name]&&(n.materials[a.material.name]=a.material)}),n}async function Ce(e,n,a,t,r){const{logError:i}=A(),c=new e;r&&r(c),a&&a(c);const s=(Array.isArray(n)?n:[n]).map(l=>new Promise((p,w)=>{c.load(l,v=>{v.scene&&Object.assign(v,ne(v.scene)),p(v)},t,v=>w(i("[useLoader] - Failed to load resource",v)))}));return te(n)?await Promise.all(s):await s[0]}async function he(e){const n=new g.LoadingManager,a=new g.TextureLoader(n),t=r=>new Promise((i,c)=>{a.load(r,o=>i(o),()=>null,()=>{c(new Error("[useTextures] - Failed to load texture"))})});if(te(e)){const r=await Promise.all(e.map(i=>t(i)));return e.length>1?r:r[0]}else{const{map:r,displacementMap:i,normalMap:c,roughnessMap:o,metalnessMap:s,aoMap:l,alphaMap:p,matcap:w}=e;return{map:r?await t(r):null,displacementMap:i?await t(i):null,normalMap:c?await t(c):null,roughnessMap:o?await t(o):null,metalnessMap:s?await t(s):null,aoMap:l?await t(l):null,alphaMap:p?await t(p):null,matcap:w?await t(w):null}}}const y=["00","01","02","03","04","05","06","07","08","09","0a","0b","0c","0d","0e","0f","10","11","12","13","14","15","16","17","18","19","1a","1b","1c","1d","1e","1f","20","21","22","23","24","25","26","27","28","29","2a","2b","2c","2d","2e","2f","30","31","32","33","34","35","36","37","38","39","3a","3b","3c","3d","3e","3f","40","41","42","43","44","45","46","47","48","49","4a","4b","4c","4d","4e","4f","50","51","52","53","54","55","56","57","58","59","5a","5b","5c","5d","5e","5f","60","61","62","63","64","65","66","67","68","69","6a","6b","6c","6d","6e","6f","70","71","72","73","74","75","76","77","78","79","7a","7b","7c","7d","7e","7f","80","81","82","83","84","85","86","87","88","89","8a","8b","8c","8d","8e","8f","90","91","92","93","94","95","96","97","98","99","9a","9b","9c","9d","9e","9f","a0","a1","a2","a3","a4","a5","a6","a7","a8","a9","aa","ab","ac","ad","ae","af","b0","b1","b2","b3","b4","b5","b6","b7","b8","b9","ba","bb","bc","bd","be","bf","c0","c1","c2","c3","c4","c5","c6","c7","c8","c9","ca","cb","cc","cd","ce","cf","d0","d1","d2","d3","d4","d5","d6","d7","d8","d9","da","db","dc","dd","de","df","e0","e1","e2","e3","e4","e5","e6","e7","e8","e9","ea","eb","ec","ed","ee","ef","f0","f1","f2","f3","f4","f5","f6","f7","f8","f9","fa","fb","fc","fd","fe","ff"];function Pe(){const e=Math.random()*4294967295|0,n=Math.random()*4294967295|0,a=Math.random()*4294967295|0,t=Math.random()*4294967295|0;return(y[e&255]+y[e>>8&255]+y[e>>16&255]+y[e>>24&255]+"-"+y[n&255]+y[n>>8&255]+"-"+y[n>>16&15|64]+y[n>>24&255]+"-"+y[a&63|128]+y[a>>8&255]+"-"+y[a>>16&255]+y[a>>24&255]+y[t&255]+y[t>>8&255]+y[t>>16&255]+y[t>>24&255]).toLowerCase()}const N=Symbol();function Me(){const e=u.shallowReactive({uuid:Pe(),camera:void 0,cameras:[],canvas:void 0,scene:void 0,renderer:void 0,aspectRatio:void 0,pointerEventHandler:void 0});function n(r){return e[r]}function a(r,i){e[r]=i}const t={state:e,...u.toRefs(e),getState:n,setState:a};return u.provide(N,t),t}const ae=()=>u.inject(N,{state:u.shallowReactive({camera:void 0,cameras:[],canvas:void 0,scene:void 0,renderer:void 0,pointerEventHandler:void 0})}),oe=e=>{const{state:n}=ae(),a=u.computed(()=>{var m;return(m=n.canvas)==null?void 0:m.value}),{x:t,y:r}=f.usePointer({target:a}),{width:i,height:c,top:o,left:s}=f.useElementBounding(a),l=new g.Raycaster,p=({x:m,y:b})=>{if(a.value)return{x:(m-s.value)/i.value*2-1,y:-((b-o.value)/c.value)*2+1}},w=({x:m,y:b})=>{if(n.camera)return l.setFromCamera(new g.Vector2(m,b),n.camera),l.intersectObjects(e.value,!1)},v=m=>{const b=p({x:(m==null?void 0:m.clientX)??t.value,y:(m==null?void 0:m.clientY)??r.value});return b?w(b)||[]:[]},_=u.computed(()=>v()),P=f.createEventHook(),h=f.createEventHook(),C=(m,b)=>{m.trigger({event:b,intersects:v(b)})},M=m=>{C(h,m)};let O;const V=m=>{var b;O=(b=v(m)[0])==null?void 0:b.object},j=m=>{var b;m instanceof PointerEvent&&O===((b=v(m)[0])==null?void 0:b.object)&&C(P,m)},B=m=>h.trigger({event:m,intersects:[]}),S=u.watchEffect(()=>{a!=null&&a.value&&(a.value.addEventListener("pointerup",j),a.value.addEventListener("pointerdown",V),a.value.addEventListener("pointermove",M),a.value.addEventListener("pointerleave",B),S())});return u.onUnmounted(()=>{a!=null&&a.value&&(a.value.removeEventListener("pointerup",j),a.value.removeEventListener("pointerdown",V),a.value.removeEventListener("pointermove",M),a.value.removeEventListener("pointerleave",B))}),{intersects:_,onClick:m=>P.on(m).off,onPointerMove:m=>h.on(m).off}};function _e(){const{logWarning:e}=A();function n(t,r,i){let c=null;return t.traverse(o=>{o[r]===i&&(c=o)}),c||e(`Child with ${r} '${i}' not found.`),c}function a(t,r){return n(t,"name",r)}return{seek:n,seekByName:a}}const Te=()=>{const e=u.reactive({click:new Map,pointerMove:new Map,pointerEnter:new Map,pointerLeave:new Map}),n=o=>{Object.values(e).forEach(s=>s.delete(o))},a=o=>{const{onClick:s,onPointerMove:l,onPointerEnter:p,onPointerLeave:w}=o;s&&e.click.set(o,s),l&&e.pointerMove.set(o,l),p&&e.pointerEnter.set(o,p),w&&e.pointerLeave.set(o,w),o.addEventListener("removed",()=>{o.traverse(v=>{n(v)}),n(o)})},t=u.computed(()=>be(Object.values(e).map(o=>Array.from(o.keys())).flat(),({uuid:o})=>o)),{onClick:r,onPointerMove:i}=oe(t);r(({intersects:o,event:s})=>{var l;o.length&&((l=e.click.get(o[0].object))==null||l(o[0],s))});let c;return i(({intersects:o,event:s})=>{var _,P,h,C;const l=(_=o==null?void 0:o[0])==null?void 0:_.object,{pointerLeave:p,pointerEnter:w,pointerMove:v}=e;c&&c!==l&&((P=p.get(c))==null||P(c,s)),l&&(c!==l&&((h=w.get(l))==null||h(o[0],s)),(C=v.get(l))==null||C(o[0],s)),c=l||null}),{registerObject:a,deregisterObject:n}},{logError:Ae}=A();function re(e,n,a){var h;e||Ae("A scene most be provided to the TresProvider");const{width:t,height:r}=f.toValue(a.windowSize)==!0||f.toValue(a.windowSize)===""||f.toValue(a.windowSize)==="true"||n.value===void 0?f.useWindowSize():f.useElementSize((h=n.value)==null?void 0:h.parentElement),i=u.computed(()=>t.value/r.value),c={height:r,width:t,aspectRatio:i},o=u.shallowRef(e),{camera:s,cameras:l,addCamera:p,setCameraToActive:w}=Y(c),v=u.shallowRef(null);function _(C){v.value||(v.value=C)}const P={scene:u.readonly(o),cameras:u.readonly(l),camera:s,addCamera:p,setCameraToActive:w,renderer:u.readonly(v),setRenderer:_,sizes:c};return u.provide("useTres",P),P}function Se(){const e=u.inject("useTres");if(!e)throw new Error("useTresContext must be used within a TresProvider");return e}const F=u.ref({}),W=e=>void Object.assign(F.value,e),U={GEOMETRY_VIA_PROP:"tres__geometryViaProp",MATERIAL_VIA_PROP:"tres__materialViaProp",REGISTER_AT_POINTER_EVENT_HANDLER:"tres__registerAtPointerEventHandler"};function Fe(e){}let $=null,L=null;const{logError:ie}=A(),Ee={createElement(e,n,a,t){var s,l;if(t||(t={}),t.args||(t.args=[]),e==="template"||ge(e))return null;let r=e.replace("Tres",""),i;if(e==="primitive"){(t==null?void 0:t.object)===void 0&&ie("Tres primitives need a prop 'object'");const p=t.object;r=p.type,i=Object.assign(p,{type:r,attach:t.attach,primitive:!0})}else{const p=F.value[r];p||ie(`${r} is not defined on the THREE namespace. Use extend to add it to the catalog.`),i=new p(...t.args)}i.isCamera&&(t!=null&&t.position||i.position.set(3,3,3),t!=null&&t.lookAt||i.lookAt(0,0,0)),(t==null?void 0:t.attach)===void 0&&(i.isMaterial?i.attach="material":i.isBufferGeometry&&(i.attach="geometry"));const{GEOMETRY_VIA_PROP:c,MATERIAL_VIA_PROP:o}=U;return i.isObject3D&&((s=t==null?void 0:t.material)!=null&&s.isMaterial&&(i.userData[o]=!0),(l=t==null?void 0:t.geometry)!=null&&l.isBufferGeometry&&(i.userData[c]=!0)),i},insert(e,n){var a,t,r,i,c,o,s;if(n&&n.isScene&&(L=n),(((a=e==null?void 0:e.__vnode)==null?void 0:a.type)==="TresGroup"||((t=e==null?void 0:e.__vnode)==null?void 0:t.type)==="TresObject3D")&&n===null&&!((i=(r=e==null?void 0:e.__vnode)==null?void 0:r.ctx)!=null&&i.asyncResolved)){$=e;return}else(c=e==null?void 0:e.__vnode)!=null&&c.type.includes("Controls")&&n===null&&($=L);n||(n=$),e!=null&&e.isObject3D&&(n!=null&&n.isObject3D)?(n.add(e),e.dispatchEvent({type:"added"}),(s=(o=L==null?void 0:L.userData)==null?void 0:o[U.REGISTER_AT_POINTER_EVENT_HANDLER])==null||s.call(o,e)):e!=null&&e.isFog?n.fog=e:typeof(e==null?void 0:e.attach)=="string"&&(e.__previousAttach=e[n==null?void 0:n.attach],n&&(n[e.attach]=e))},remove(e){var n,a;if(e){if(e.isObject3D){const t=e,r=i=>{var s,l;const{GEOMETRY_VIA_PROP:c,MATERIAL_VIA_PROP:o}=U;i.userData[o]||(s=i.material)==null||s.dispose(),i.userData[c]||(l=i.geometry)==null||l.dispose()};t.traverse(i=>{r(i)}),r(t)}(n=e.removeFromParent)==null||n.call(e),(a=e.dispose)==null||a.call(e)}},patchProp(e,n,a,t){if(e){let r=e,i=n,c=k(i),o=r==null?void 0:r[c];if(r.type==="BufferGeometry"){if(i==="args")return;r.setAttribute(k(i),new g.BufferAttribute(...t));return}if(i.includes("-")&&o===void 0){const l=i.split("-");o=l.reduce((p,w)=>p[k(w)],r),i=l.pop(),c=i.toLowerCase(),o!=null&&o.set||(r=l.reduce((p,w)=>p[k(w)],r))}let s=t;if(s===""&&(s=!0),ee(o)){Array.isArray(s)?e[c](...s):e[c](s);return}!(o!=null&&o.set)&&!ee(o)?r[c]=s:o.constructor===s.constructor&&(o!=null&&o.copy)?o==null||o.copy(s):Array.isArray(s)?o.set(...s):!o.isColor&&o.setScalar?o.setScalar(s):o.set(s)}},parentNode(e){return(e==null?void 0:e.parent)||null},createText:()=>void 0,createComment:()=>void 0,setText:()=>void 0,setElementText:()=>void 0,nextSibling:()=>void 0,querySelector:()=>void 0,setScopeId:()=>void 0,cloneNode:()=>void 0,insertStaticContent:()=>void 0},{createApp:Le}=u.createRenderer(Ee),Oe=e=>{const n=Le(a);function a(){return e&&e.default?e.default():[]}return n};W(fe);const Re=["data-scene"],se=u.defineComponent({__name:"TresCanvas",props:{shadows:{type:Boolean},shadowMapType:{},useLegacyLights:{type:Boolean},outputColorSpace:{},toneMapping:{},toneMappingExposure:{},context:{},powerPreference:{},preserveDrawingBuffer:{type:Boolean},clearColor:{},windowSize:{type:Boolean},preset:{},disableRender:{type:Boolean},camera:{}},setup(e){const n=e,{logWarning:a}=A(),t=u.ref(),r=u.shallowRef(new g.Scene),{onLoop:i}=z(),c=u.useSlots();function o(){const s=re(r.value,t,n),{addCamera:l,camera:p,clearCameras:w}=s;let v;function _(){v=Oe(c),v.provide("useTres",s),v.provide("extend",W),v.mount(r.value),h()}_();const{renderer:P}=H(t,s,n);n.camera&&l(n.camera),i(()=>{var C;p.value&&n.disableRender!==!0&&((C=P.value)==null||C.render(r.value,p.value))});function h(){const C=r.value.getObjectByProperty("isCamera",!0);if(C)l(C);else{a("No camera found. Creating a default perspective camera. To have full control over a camera, please add one to the scene.");const M=new g.PerspectiveCamera(45,window.innerWidth/window.innerHeight,.1,1e3);M.position.set(3,3,3),M.lookAt(0,0,0),l(M)}u.watch(()=>n.camera,M=>{M&&(w(),l(M))})}}return u.onMounted(()=>{o()}),u.onUnmounted(()=>{}),(s,l)=>(u.openBlock(),u.createElementBlock("canvas",{ref_key:"canvas",ref:t,"data-scene":r.value.uuid,style:u.normalizeStyle({display:"block",width:"100%",height:"100%",position:s.windowSize?"fixed":"relative",top:0,left:0,pointerEvents:"auto",touchAction:"none",zIndex:1})},null,12,Re))}}),xe=["TresCanvas","TresLeches","TresScene"],ke={template:{compilerOptions:{isCustomElement:e=>e.startsWith("Tres")&&!xe.includes(e)||e==="primitive"}}},Ve={install(e){e.component("TresCanvas",se)}};d.TRES_CONTEXT_KEY=N,d.TresCanvas=se,d.catalogue=F,d.default=Ve,d.extend=W,d.isProd=ye,d.normalizeColor=J,d.normalizeVectorFlexibleParam=ve,d.templateCompilerOptions=ke,d.trasverseObjects=ne,d.useCamera=Y,d.useLoader=Ce,d.useLogger=A,d.usePointerEventHandler=Te,d.useRaycaster=oe,d.useRenderLoop=z,d.useRenderer=H,d.useSeek=_e,d.useTexture=he,d.useTres=ae,d.useTresContext=Se,d.useTresContextProvider=re,d.useTresProvider=Me,Object.defineProperties(d,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}})});
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tresjs/core",
|
|
3
3
|
"description": "Declarative ThreeJS using Vue Components",
|
|
4
|
-
"version": "2.4.0-next.
|
|
4
|
+
"version": "2.4.0-next.1",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"packageManager": "pnpm@8.3.1",
|
|
7
7
|
"author": "Alvaro Saburido <hola@alvarosaburido.dev> (https://github.com/alvarosabu/)",
|