@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 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 R, computed as h, watchEffect as $, ref as U, toRefs as ne, watch as W, shallowReactive as ae, provide as oe, inject as Me, onUnmounted as re, reactive as Ce, readonly as z, createRenderer as Pe, defineComponent as Te, useSlots as _e, onMounted as xe, openBlock as Ae, createElementBlock as Re, normalizeStyle as he } from "vue";
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 ie, 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";
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 = R([]), o = h(() => n.value.find((c) => c.userData.IS_ACTIVE_CAMERA));
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 ie && (a.aspect = e.aspectRatio.value), a.updateProjectionMatrix();
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 se = S(), ce = S(), Y = S(), A = new Le();
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
- se.trigger({ delta: D, elapsed: j, clock: A }), ce.trigger({ delta: D, elapsed: j, clock: A }), Y.trigger({ delta: D, elapsed: j, clock: A });
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 = A.getDelta(), j = A.getElapsedTime();
46
+ D = h.getDelta(), j = h.getElapsedTime();
47
47
  });
48
- function ue() {
48
+ function fe() {
49
49
  return {
50
- onBeforeLoop: se.on,
51
- onLoop: ce.on,
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 Tt(e) {
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
- }, fe = (e, n) => {
74
+ }, le = (e, n) => {
75
75
  for (const o of Object.keys(n))
76
- n[o] instanceof Object && Object.assign(n[o], fe(e[o], 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 T() {
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 = R(), r = U(!1), {
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: w = !1,
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: P,
130
+ clearColor: T,
131
131
  windowSize: f = !1,
132
132
  preset: v = void 0
133
- } = ne(o), { cameras: Et, setRenderer: ve, sizes: V } = n, { logError: ge, logWarning: yt } = T(), { pixelRatio: I } = $e(), { pause: be, resume: we } = ue(), q = () => {
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 || ge("Renderer Preset must be one of these: " + Object.keys(H).join(", ")), fe(t.value, H[C]);
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, P != null && P.value && t.value.setClearColor(et(m(P))), t.value.useLegacyLights = m(w);
144
- }, Ee = () => {
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
- }), ve(t.value), K(), q(), we(), r.value = !0);
160
- }, ye = () => {
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, w, y, _, P],
167
+ [M, E, g, b, y, _, T],
168
168
  K
169
169
  ), W(
170
170
  e,
171
171
  () => {
172
- Q(e) && Ee();
172
+ Q(e) && ye();
173
173
  },
174
174
  { immediate: !0, deep: !0 }
175
175
  ), {
176
176
  renderer: t,
177
177
  isReady: r,
178
- dispose: ye
178
+ dispose: Me
179
179
  };
180
180
  }
181
- const ee = (e) => typeof e == "function", le = (e) => !!e && e.constructor === Array;
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 } = T(), c = new e();
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 le(n) ? await Promise.all(s) : await s[0];
203
+ return de(n) ? await Promise.all(s) : await s[0];
204
204
  }
205
- async function At(e) {
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 (le(e)) {
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 b = ["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"];
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 (b[e & 255] + b[e >> 8 & 255] + b[e >> 16 & 255] + b[e >> 24 & 255] + "-" + b[n & 255] + b[n >> 8 & 255] + "-" + b[n >> 16 & 15 | 64] + b[n >> 24 & 255] + "-" + b[o & 63 | 128] + b[o >> 8 & 255] + "-" + b[o >> 16 & 255] + b[o >> 24 & 255] + b[t & 255] + b[t >> 8 & 255] + b[t >> 16 & 255] + b[t >> 24 & 255]).toLowerCase();
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 de = Symbol();
248
- function Rt() {
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(de, t), t;
271
+ return oe(me, t), t;
272
272
  }
273
- const ct = () => Me(de, {
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 = h(() => {
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 = h(() => d()), E = S(), w = S(), g = (f, v) => {
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(w, f);
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) => w.trigger({ event: f, intersects: [] }), P = $(() => {
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), P());
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 re(() => {
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) => w.on(f).off
321
+ onPointerMove: (f) => b.on(f).off
322
322
  };
323
323
  };
324
- function ht() {
325
- const { logWarning: e } = T();
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 = h(
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, w, g;
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 && ((w = p.get(u)) == null || w(a[0], s)), (g = d.get(u)) == null || g(a[0], s)), c = u || null;
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 } = T();
374
+ }, { logError: ft } = P();
375
375
  function lt(e, n, o) {
376
- var w;
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((w = n.value) == null ? void 0 : w.parentElement), i = h(() => t.value / r.value), c = {
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 = R(e), { camera: s, cameras: u, addCamera: l, setCameraToActive: p } = Je(c), d = R(null);
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
- const me = U({}), pe = (e) => void Object.assign(me.value, e), F = {
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 } = T(), dt = {
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 = me.value[r];
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 } = Pe(dt), pt = (e) => {
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
- pe(Se);
491
- const vt = ["data-scene"], gt = /* @__PURE__ */ Te({
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 } = T(), t = U(), r = R(new Ne()), { onLoop: i } = ue(), c = _e();
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", pe), d.mount(r.value), w();
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 w() {
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 ie(45, window.innerWidth / window.innerHeight, 0.1, 1e3);
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
- }), re(() => {
543
- }), (s, u) => (Ae(), Re("canvas", {
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: he({
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
- }), bt = [
566
+ }), wt = [
561
567
  "TresCanvas",
562
568
  "TresLeches",
563
569
  "TresScene"
564
- ], wt = {
570
+ ], bt = {
565
571
  template: {
566
572
  compilerOptions: {
567
- isCustomElement: (e) => e.startsWith("Tres") && !bt.includes(e) || e === "primitive"
573
+ isCustomElement: (e) => e.startsWith("Tres") && !wt.includes(e) || e === "primitive"
568
574
  }
569
575
  }
570
- }, Lt = wt, Ot = {
576
+ }, Ot = bt, kt = {
571
577
  install(e) {
572
578
  e.component("TresCanvas", gt);
573
579
  }
574
580
  };
575
581
  export {
576
- de as TRES_CONTEXT_KEY,
582
+ me as TRES_CONTEXT_KEY,
577
583
  gt as TresCanvas,
578
- me as catalogue,
579
- Ot as default,
580
- pe as extend,
584
+ pe as catalogue,
585
+ kt as default,
586
+ ve as extend,
581
587
  _t as isProd,
582
588
  et as normalizeColor,
583
- Tt as normalizeVectorFlexibleParam,
584
- Lt as templateCompilerOptions,
589
+ Pt as normalizeVectorFlexibleParam,
590
+ Ot as templateCompilerOptions,
585
591
  it as trasverseObjects,
586
592
  Je as useCamera,
587
593
  xt as useLoader,
588
- T as useLogger,
594
+ P as useLogger,
589
595
  St as usePointerEventHandler,
590
596
  ut as useRaycaster,
591
- ue as useRenderLoop,
597
+ fe as useRenderLoop,
592
598
  rt as useRenderer,
593
- ht as useSeek,
594
- At as useTexture,
599
+ Rt as useSeek,
600
+ ht as useTexture,
595
601
  ct as useTres,
596
- Rt as useTresProvider
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.0",
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/)",