@tresjs/core 3.2.0 → 3.2.1-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/tres.js CHANGED
@@ -1,31 +1,31 @@
1
1
  /**
2
2
  * name: @tresjs/core
3
- * version: v3.2.0
3
+ * version: v3.2.1-next.1
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 { ref as h, computed as M, watchEffect as D, onUnmounted as N, shallowRef as F, watch as ee, reactive as ie, readonly as ue, provide as I, inject as le, createRenderer as ce, defineComponent as U, useSlots as fe, onMounted as me, openBlock as pe, createElementBlock as ve, normalizeStyle as de, h as J, Fragment as ge } from "vue";
9
- import * as ye from "three";
10
- import { PerspectiveCamera as W, OrthographicCamera as we, Camera as Ce, Clock as _e, Vector3 as Pe, Color as R, REVISION as Ee, SRGBColorSpace as Me, ACESFilmicToneMapping as Ae, PCFSoftShadowMap as ke, WebGLRenderer as z, LoadingManager as be, TextureLoader as De, Vector2 as Oe, Raycaster as xe, BufferAttribute as he, Scene as Be } from "three";
11
- import { createEventHook as x, useRafFn as Le, toValue as _, unrefElement as Te, useDevicePixelRatio as Se, usePointer as Re, useElementBounding as je, useWindowSize as He, useElementSize as Fe } from "@vueuse/core";
12
- const ze = ({ sizes: e, scene: n }) => {
13
- const t = h([]), r = M(
8
+ import { ref as h, computed as A, watchEffect as D, onUnmounted as N, shallowRef as F, watch as te, reactive as ue, readonly as le, provide as I, inject as ce, createRenderer as fe, defineComponent as U, useSlots as me, getCurrentInstance as J, onMounted as pe, openBlock as ve, createElementBlock as de, normalizeStyle as ge, h as K, Fragment as ye } from "vue";
9
+ import * as we from "three";
10
+ import { PerspectiveCamera as W, OrthographicCamera as Ce, Camera as _e, Clock as Pe, Vector3 as Ee, Color as R, REVISION as Me, SRGBColorSpace as Ae, ACESFilmicToneMapping as be, PCFSoftShadowMap as ke, WebGLRenderer as z, LoadingManager as De, TextureLoader as Oe, Vector2 as xe, Raycaster as he, BufferAttribute as Be, Scene as Le } from "three";
11
+ import { createEventHook as x, useRafFn as Te, toValue as P, unrefElement as Se, useDevicePixelRatio as Re, usePointer as je, useElementBounding as He, useWindowSize as Fe, useElementSize as ze } from "@vueuse/core";
12
+ const Ge = ({ sizes: e, scene: n }) => {
13
+ const t = h([]), r = A(
14
14
  () => t.value[0]
15
- ), a = (i, c = !1) => {
16
- t.value.some(({ uuid: s }) => s === i.uuid) || (c ? f(i) : t.value.push(i));
17
- }, o = (i) => {
18
- t.value = t.value.filter(({ uuid: c }) => c !== i.uuid);
19
- }, f = (i) => {
20
- const c = i instanceof Ce ? i : t.value.find((m) => m.uuid === i);
15
+ ), a = (s, c = !1) => {
16
+ t.value.some(({ uuid: i }) => i === s.uuid) || (c ? f(s) : t.value.push(s));
17
+ }, o = (s) => {
18
+ t.value = t.value.filter(({ uuid: c }) => c !== s.uuid);
19
+ }, f = (s) => {
20
+ const c = s instanceof _e ? s : t.value.find((m) => m.uuid === s);
21
21
  if (!c)
22
22
  return;
23
- const s = t.value.filter(({ uuid: m }) => m !== c.uuid);
24
- t.value = [c, ...s];
23
+ const i = t.value.filter(({ uuid: m }) => m !== c.uuid);
24
+ t.value = [c, ...i];
25
25
  };
26
26
  return D(() => {
27
- e.aspectRatio.value && t.value.forEach((i) => {
28
- i instanceof W && (i.aspect = e.aspectRatio.value), (i instanceof W || i instanceof we) && i.updateProjectionMatrix();
27
+ e.aspectRatio.value && t.value.forEach((s) => {
28
+ s instanceof W && (s.aspect = e.aspectRatio.value), (s instanceof W || s instanceof Ce) && s.updateProjectionMatrix();
29
29
  });
30
30
  }), n.userData.tres__registerCamera = a, n.userData.tres__deregisterCamera = o, N(() => {
31
31
  t.value = [];
@@ -36,31 +36,31 @@ const ze = ({ sizes: e, scene: n }) => {
36
36
  deregisterCamera: o,
37
37
  setCameraActive: f
38
38
  };
39
- }, te = x(), re = x(), V = x(), O = new _e();
39
+ }, re = x(), ne = x(), V = x(), O = new Pe();
40
40
  let j = 0, H = 0;
41
- const { pause: Ge, resume: Ie, isActive: We } = Le(
41
+ const { pause: Ie, resume: We, isActive: $e } = Te(
42
42
  () => {
43
- te.trigger({ delta: j, elapsed: H, clock: O }), re.trigger({ delta: j, elapsed: H, clock: O }), V.trigger({ delta: j, elapsed: H, clock: O });
43
+ re.trigger({ delta: j, elapsed: H, clock: O }), ne.trigger({ delta: j, elapsed: H, clock: O }), V.trigger({ delta: j, elapsed: H, clock: O });
44
44
  },
45
45
  { immediate: !1 }
46
46
  );
47
47
  V.on(() => {
48
48
  j = O.getDelta(), H = O.getElapsedTime();
49
49
  });
50
- const ne = () => ({
51
- onBeforeLoop: te.on,
52
- onLoop: re.on,
50
+ const ae = () => ({
51
+ onBeforeLoop: re.on,
52
+ onLoop: ne.on,
53
53
  onAfterLoop: V.on,
54
- pause: Ge,
55
- resume: Ie,
56
- isActive: We
57
- }), mt = !0, K = "[TresJS ▲ ■ ●] ";
54
+ pause: Ie,
55
+ resume: We,
56
+ isActive: $e
57
+ }), pt = !0, X = "[TresJS ▲ ■ ●] ";
58
58
  function B() {
59
59
  function e(r, a) {
60
- console.error(`${K} ${r}`, a || "");
60
+ console.error(`${X} ${r}`, a || "");
61
61
  }
62
62
  function n(r) {
63
- console.warn(`${K} ${r}`);
63
+ console.warn(`${X} ${r}`);
64
64
  }
65
65
  function t(r, a) {
66
66
  }
@@ -70,49 +70,49 @@ function B() {
70
70
  logMessage: t
71
71
  };
72
72
  }
73
- function pt(e) {
74
- return typeof e == "number" ? [e, e, e] : e instanceof Pe ? [e.x, e.y, e.z] : e;
73
+ function vt(e) {
74
+ return typeof e == "number" ? [e, e, e] : e instanceof Ee ? [e.x, e.y, e.z] : e;
75
75
  }
76
- function $e(e) {
76
+ function Ne(e) {
77
77
  return e instanceof R ? e : Array.isArray(e) ? new R(...e) : new R(e);
78
78
  }
79
- const ae = (e, n) => {
79
+ const oe = (e, n) => {
80
80
  for (const t of Object.keys(n))
81
- n[t] instanceof Object && Object.assign(n[t], ae(e[t], n[t]));
81
+ n[t] instanceof Object && Object.assign(n[t], oe(e[t], n[t]));
82
82
  return Object.assign(e || {}, n), e;
83
- }, Ne = "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", Ve = /* @__PURE__ */ qe(Ne);
84
- function X(e) {
83
+ }, Ve = "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", qe = /* @__PURE__ */ Ue(Ve);
84
+ function Y(e) {
85
85
  return e && e.nodeType === 1;
86
86
  }
87
87
  function T(e) {
88
88
  return e.replace(/-([a-z])/g, (n, t) => t.toUpperCase());
89
89
  }
90
- function qe(e, n) {
90
+ function Ue(e, n) {
91
91
  const t = /* @__PURE__ */ Object.create(null), r = e.split(",");
92
92
  for (let a = 0; a < r.length; a++)
93
93
  t[r[a]] = !0;
94
94
  return n ? (a) => !!t[a.toLowerCase()] : (a) => !!t[a];
95
95
  }
96
- const Ue = (e, n) => {
96
+ const Je = (e, n) => {
97
97
  const t = /* @__PURE__ */ new Set(), r = [];
98
98
  for (const a of e) {
99
99
  const o = n(a);
100
100
  t.has(o) || (t.add(o), r.push(a));
101
101
  }
102
102
  return r;
103
- }, Y = (e, n) => {
103
+ }, Q = (e, n) => {
104
104
  if (!n)
105
105
  return;
106
106
  const t = Array.isArray(n) ? n : n.match(/([^[.\]])+/g);
107
107
  return t == null ? void 0 : t.reduce((r, a) => r && r[a], e);
108
- }, Je = (e, n, t) => {
108
+ }, Ke = (e, n, t) => {
109
109
  const r = Array.isArray(n) ? n : n.match(/([^[.\]])+/g);
110
110
  r && r.reduce((a, o, f) => (a[o] === void 0 && (a[o] = {}), f === r.length - 1 && (a[o] = t), a[o]), e);
111
111
  };
112
- function oe(e, n) {
113
- if (X(e) && X(n)) {
112
+ function se(e, n) {
113
+ if (Y(e) && Y(n)) {
114
114
  const a = e.attributes, o = n.attributes;
115
- return a.length !== o.length ? !1 : Array.from(a).every(({ name: f, value: i }) => n.getAttribute(f) === i);
115
+ return a.length !== o.length ? !1 : Array.from(a).every(({ name: f, value: s }) => n.getAttribute(f) === s);
116
116
  }
117
117
  if (e === n)
118
118
  return !0;
@@ -122,22 +122,22 @@ function oe(e, n) {
122
122
  if (t.length !== r.length)
123
123
  return !1;
124
124
  for (const a of t)
125
- if (!r.includes(a) || !oe(e[a], n[a]))
125
+ if (!r.includes(a) || !se(e[a], n[a]))
126
126
  return !1;
127
127
  return !0;
128
128
  }
129
- function Ke(e, n) {
129
+ function Xe(e, n) {
130
130
  if (!Array.isArray(e) || !Array.isArray(n) || e.length !== n.length)
131
131
  return !1;
132
132
  for (let t = 0; t < e.length; t++)
133
- if (!oe(e[t], n[t]))
133
+ if (!se(e[t], n[t]))
134
134
  return !1;
135
135
  return !0;
136
136
  }
137
- const Xe = Number.parseInt(Ee.replace("dev", "")), S = {
137
+ const Ye = Number.parseInt(Me.replace("dev", "")), S = {
138
138
  realistic: {
139
- outputColorSpace: Me,
140
- toneMapping: Ae,
139
+ outputColorSpace: Ae,
140
+ toneMapping: be,
141
141
  toneMappingExposure: 3,
142
142
  shadowMap: {
143
143
  enabled: !0,
@@ -145,38 +145,38 @@ const Xe = Number.parseInt(Ee.replace("dev", "")), S = {
145
145
  }
146
146
  }
147
147
  };
148
- function Ye({
148
+ function Qe({
149
149
  scene: e,
150
150
  canvas: n,
151
151
  options: t,
152
152
  disableRender: r,
153
153
  contextParts: { sizes: a, camera: o }
154
154
  }) {
155
- const f = M(() => ({
156
- alpha: _(t.alpha),
157
- depth: _(t.depth),
158
- canvas: Te(n),
159
- context: _(t.context),
160
- stencil: _(t.stencil),
161
- antialias: _(t.antialias) === void 0 ? !0 : _(t.antialias),
162
- precision: _(t.precision),
163
- powerPreference: _(t.powerPreference),
164
- premultipliedAlpha: _(t.premultipliedAlpha),
165
- preserveDrawingBuffer: _(t.preserveDrawingBuffer),
166
- logarithmicDepthBuffer: _(t.logarithmicDepthBuffer),
167
- failIfMajorPerformanceCaveat: _(t.failIfMajorPerformanceCaveat)
168
- })), i = F(new z(f.value));
169
- ee(f, () => {
170
- i.value.dispose(), i.value = new z(f.value);
155
+ const f = A(() => ({
156
+ alpha: P(t.alpha),
157
+ depth: P(t.depth),
158
+ canvas: Se(n),
159
+ context: P(t.context),
160
+ stencil: P(t.stencil),
161
+ antialias: P(t.antialias) === void 0 ? !0 : P(t.antialias),
162
+ precision: P(t.precision),
163
+ powerPreference: P(t.powerPreference),
164
+ premultipliedAlpha: P(t.premultipliedAlpha),
165
+ preserveDrawingBuffer: P(t.preserveDrawingBuffer),
166
+ logarithmicDepthBuffer: P(t.logarithmicDepthBuffer),
167
+ failIfMajorPerformanceCaveat: P(t.failIfMajorPerformanceCaveat)
168
+ })), s = F(new z(f.value));
169
+ te(f, () => {
170
+ s.value.dispose(), s.value = new z(f.value);
171
171
  }), D(() => {
172
- i.value.setSize(a.width.value, a.height.value);
172
+ s.value.setSize(a.width.value, a.height.value);
173
173
  });
174
- const { pixelRatio: c } = Se();
174
+ const { pixelRatio: c } = Re();
175
175
  D(() => {
176
- i.value.setPixelRatio(c.value);
176
+ s.value.setPixelRatio(c.value);
177
177
  });
178
- const { logError: s } = B(), l = (() => {
179
- const v = new z(), w = {
178
+ const { logError: i } = B(), u = (() => {
179
+ const v = new z(), C = {
180
180
  shadowMap: {
181
181
  enabled: v.shadowMap.enabled,
182
182
  type: v.shadowMap.type
@@ -185,73 +185,73 @@ function Ye({
185
185
  toneMappingExposure: v.toneMappingExposure,
186
186
  outputColorSpace: v.outputColorSpace
187
187
  };
188
- return v.dispose(), w;
188
+ return v.dispose(), C;
189
189
  })();
190
190
  D(() => {
191
- const v = _(t.preset);
192
- v && (v in S || s(`Renderer Preset must be one of these: ${Object.keys(S).join(", ")}`), ae(i.value, S[v]));
193
- const w = (k, E) => {
194
- const b = _(k), L = () => {
191
+ const v = P(t.preset);
192
+ v && (v in S || i(`Renderer Preset must be one of these: ${Object.keys(S).join(", ")}`), oe(s.value, S[v]));
193
+ const C = (b, M) => {
194
+ const k = P(b), L = () => {
195
195
  if (v)
196
- return Y(S[v], E);
196
+ return Q(S[v], M);
197
197
  };
198
- if (b !== void 0)
199
- return b;
198
+ if (k !== void 0)
199
+ return k;
200
200
  const d = L();
201
- return d !== void 0 ? d : Y(l, E);
202
- }, C = (k, E) => Je(i.value, E, w(k, E));
203
- C(t.shadows, "shadowMap.enabled"), C(t.toneMapping, "toneMapping"), C(t.shadowMapType, "shadowMap.type"), Xe < 150 && C(!t.useLegacyLights, "physicallyCorrectLights"), C(t.outputColorSpace, "outputColorSpace"), C(t.toneMappingExposure, "toneMappingExposure");
204
- const A = w(t.clearColor, "clearColor");
205
- A && i.value.setClearColor(
206
- A ? $e(A) : new R(0)
201
+ return d !== void 0 ? d : Q(u, M);
202
+ }, w = (b, M) => Ke(s.value, M, C(b, M));
203
+ w(t.shadows, "shadowMap.enabled"), w(t.toneMapping, "toneMapping"), w(t.shadowMapType, "shadowMap.type"), Ye < 150 && w(!t.useLegacyLights, "physicallyCorrectLights"), w(t.outputColorSpace, "outputColorSpace"), w(t.toneMappingExposure, "toneMappingExposure");
204
+ const _ = C(t.clearColor, "clearColor");
205
+ _ && s.value.setClearColor(
206
+ _ ? Ne(_) : new R(0)
207
207
  // default clear color is not easily/efficiently retrievable from three
208
208
  );
209
209
  });
210
- const { pause: u, resume: y, onLoop: g } = ne();
211
- return g(() => {
212
- o.value && !_(r) && i.value.render(e, o.value);
213
- }), y(), N(() => {
214
- u(), i.value.dispose(), i.value.forceContextLoss();
210
+ const { pause: l, resume: g, onLoop: y } = ae();
211
+ return y(() => {
212
+ o.value && !P(r) && s.value.render(e, o.value);
213
+ }), g(), N(() => {
214
+ l(), s.value.dispose(), s.value.forceContextLoss();
215
215
  }), {
216
- renderer: i
216
+ renderer: s
217
217
  };
218
218
  }
219
- const Q = (e) => typeof e == "function", se = (e) => !!e && e.constructor === Array;
220
- function Qe(e) {
219
+ const Z = (e) => typeof e == "function", ie = (e) => !!e && e.constructor === Array;
220
+ function Ze(e) {
221
221
  const n = { nodes: {}, materials: {} };
222
222
  return e && e.traverse((t) => {
223
223
  t.name && (n.nodes[t.name] = t), t.material && !n.materials[t.material.name] && (n.materials[t.material.name] = t.material);
224
224
  }), n;
225
225
  }
226
- async function vt(e, n, t, r, a) {
226
+ async function dt(e, n, t, r, a) {
227
227
  const { logError: o } = B(), f = new e();
228
228
  a && a(f), t && t(f);
229
229
  const c = (Array.isArray(n) ? n : [n]).map(
230
- (s) => new Promise((m, l) => {
230
+ (i) => new Promise((m, u) => {
231
231
  f.load(
232
- s,
233
- (u) => {
234
- u.scene && Object.assign(u, Qe(u.scene)), m(u);
232
+ i,
233
+ (l) => {
234
+ l.scene && Object.assign(l, Ze(l.scene)), m(l);
235
235
  },
236
236
  r,
237
- (u) => l(o("[useLoader] - Failed to load resource", u))
237
+ (l) => u(o("[useLoader] - Failed to load resource", l))
238
238
  );
239
239
  })
240
240
  );
241
- return se(n) ? await Promise.all(c) : await c[0];
241
+ return ie(n) ? await Promise.all(c) : await c[0];
242
242
  }
243
- async function dt(e) {
244
- const n = new be(), t = new De(n), r = (a) => new Promise((o, f) => {
243
+ async function gt(e) {
244
+ const n = new De(), t = new Oe(n), r = (a) => new Promise((o, f) => {
245
245
  t.load(
246
246
  a,
247
- (i) => o(i),
247
+ (s) => o(s),
248
248
  () => null,
249
249
  () => {
250
250
  f(new Error("[useTextures] - Failed to load texture"));
251
251
  }
252
252
  );
253
253
  });
254
- if (se(e)) {
254
+ if (ie(e)) {
255
255
  const a = await Promise.all(e.map((o) => r(o)));
256
256
  return e.length > 1 ? a : a[0];
257
257
  } else {
@@ -259,67 +259,67 @@ async function dt(e) {
259
259
  map: a,
260
260
  displacementMap: o,
261
261
  normalMap: f,
262
- roughnessMap: i,
262
+ roughnessMap: s,
263
263
  metalnessMap: c,
264
- aoMap: s,
264
+ aoMap: i,
265
265
  alphaMap: m,
266
- matcap: l
266
+ matcap: u
267
267
  } = e;
268
268
  return {
269
269
  map: a ? await r(a) : null,
270
270
  displacementMap: o ? await r(o) : null,
271
271
  normalMap: f ? await r(f) : null,
272
- roughnessMap: i ? await r(i) : null,
272
+ roughnessMap: s ? await r(s) : null,
273
273
  metalnessMap: c ? await r(c) : null,
274
- aoMap: s ? await r(s) : null,
274
+ aoMap: i ? await r(i) : null,
275
275
  alphaMap: m ? await r(m) : null,
276
- matcap: l ? await r(l) : null
276
+ matcap: u ? await r(u) : null
277
277
  };
278
278
  }
279
279
  }
280
- const Ze = (e, { renderer: n, camera: t, raycaster: r }) => {
281
- const a = M(() => n.value.domElement), { x: o, y: f } = Re({ target: a }), { width: i, height: c, top: s, left: m } = je(a), l = ({ x: d, y: P }) => {
280
+ const et = (e, { renderer: n, camera: t, raycaster: r }) => {
281
+ const a = A(() => n.value.domElement), { x: o, y: f } = je({ target: a }), { width: s, height: c, top: i, left: m } = He(a), u = ({ x: d, y: E }) => {
282
282
  if (a.value)
283
283
  return {
284
- x: (d - m.value) / i.value * 2 - 1,
285
- y: -((P - s.value) / c.value) * 2 + 1
284
+ x: (d - m.value) / s.value * 2 - 1,
285
+ y: -((E - i.value) / c.value) * 2 + 1
286
286
  };
287
- }, u = ({ x: d, y: P }) => {
287
+ }, l = ({ x: d, y: E }) => {
288
288
  if (t.value)
289
- return r.value.setFromCamera(new Oe(d, P), t.value), r.value.intersectObjects(e.value, !1);
290
- }, y = (d) => {
291
- const P = l({
289
+ return r.value.setFromCamera(new xe(d, E), t.value), r.value.intersectObjects(e.value, !1);
290
+ }, g = (d) => {
291
+ const E = u({
292
292
  x: (d == null ? void 0 : d.clientX) ?? o.value,
293
293
  y: (d == null ? void 0 : d.clientY) ?? f.value
294
294
  });
295
- return P ? u(P) || [] : [];
296
- }, g = M(() => y()), v = x(), w = x(), C = (d, P) => {
297
- d.trigger({ event: P, intersects: y(P) });
298
- }, A = (d) => {
299
- C(w, d);
295
+ return E ? l(E) || [] : [];
296
+ }, y = A(() => g()), v = x(), C = x(), w = (d, E) => {
297
+ d.trigger({ event: E, intersects: g(E) });
298
+ }, _ = (d) => {
299
+ w(C, d);
300
300
  };
301
- let k;
302
- const E = (d) => {
303
- var P;
304
- k = (P = y(d)[0]) == null ? void 0 : P.object;
305
- }, b = (d) => {
306
- var P;
307
- d instanceof PointerEvent && k === ((P = y(d)[0]) == null ? void 0 : P.object) && C(v, d);
308
- }, L = (d) => w.trigger({ event: d, intersects: [] });
309
- return a.value.addEventListener("pointerup", b), a.value.addEventListener("pointerdown", E), a.value.addEventListener("pointermove", A), a.value.addEventListener("pointerleave", L), N(() => {
310
- a != null && a.value && (a.value.removeEventListener("pointerup", b), a.value.removeEventListener("pointerdown", E), a.value.removeEventListener("pointermove", A), a.value.removeEventListener("pointerleave", L));
301
+ let b;
302
+ const M = (d) => {
303
+ var E;
304
+ b = (E = g(d)[0]) == null ? void 0 : E.object;
305
+ }, k = (d) => {
306
+ var E;
307
+ d instanceof PointerEvent && b === ((E = g(d)[0]) == null ? void 0 : E.object) && w(v, d);
308
+ }, L = (d) => C.trigger({ event: d, intersects: [] });
309
+ return a.value.addEventListener("pointerup", k), a.value.addEventListener("pointerdown", M), a.value.addEventListener("pointermove", _), a.value.addEventListener("pointerleave", L), N(() => {
310
+ a != null && a.value && (a.value.removeEventListener("pointerup", k), a.value.removeEventListener("pointerdown", M), a.value.removeEventListener("pointermove", _), a.value.removeEventListener("pointerleave", L));
311
311
  }), {
312
- intersects: g,
312
+ intersects: y,
313
313
  onClick: (d) => v.on(d).off,
314
- onPointerMove: (d) => w.on(d).off
314
+ onPointerMove: (d) => C.on(d).off
315
315
  };
316
316
  };
317
- function gt() {
317
+ function yt() {
318
318
  const { logWarning: e } = B();
319
319
  function n(r, a, o) {
320
320
  let f = null;
321
- return r.traverse((i) => {
322
- i[a] === o && (f = i);
321
+ return r.traverse((s) => {
322
+ s[a] === o && (f = s);
323
323
  }), f || e(`Child with ${a} '${o}' not found.`), f;
324
324
  }
325
325
  function t(r, a) {
@@ -330,117 +330,117 @@ function gt() {
330
330
  seekByName: t
331
331
  };
332
332
  }
333
- const et = ({ scene: e, contextParts: n }) => {
334
- const t = ie({
333
+ const tt = ({ scene: e, contextParts: n }) => {
334
+ const t = ue({
335
335
  click: /* @__PURE__ */ new Map(),
336
336
  pointerMove: /* @__PURE__ */ new Map(),
337
337
  pointerEnter: /* @__PURE__ */ new Map(),
338
338
  pointerLeave: /* @__PURE__ */ new Map()
339
- }), r = h(/* @__PURE__ */ new Set()), a = (u) => {
340
- r.value.add(u);
341
- }, o = (u) => {
342
- r.value.delete(u);
343
- }, f = (u) => {
344
- Object.values(t).forEach((y) => y.delete(u)), o(u);
345
- }, i = (u) => {
346
- const { onClick: y, onPointerMove: g, onPointerEnter: v, onPointerLeave: w } = u;
347
- y && t.click.set(u, y), g && t.pointerMove.set(u, g), v && t.pointerEnter.set(u, v), w && t.pointerLeave.set(u, w);
339
+ }), r = h(/* @__PURE__ */ new Set()), a = (l) => {
340
+ r.value.add(l);
341
+ }, o = (l) => {
342
+ r.value.delete(l);
343
+ }, f = (l) => {
344
+ Object.values(t).forEach((g) => g.delete(l)), o(l);
345
+ }, s = (l) => {
346
+ const { onClick: g, onPointerMove: y, onPointerEnter: v, onPointerLeave: C } = l;
347
+ g && t.click.set(l, g), y && t.pointerMove.set(l, y), v && t.pointerEnter.set(l, v), C && t.pointerLeave.set(l, C);
348
348
  };
349
- e.userData.tres__registerAtPointerEventHandler = i, e.userData.tres__deregisterAtPointerEventHandler = f, e.userData.tres__registerBlockingObjectAtPointerEventHandler = a, e.userData.tres__deregisterBlockingObjectAtPointerEventHandler = o;
350
- const c = M(
351
- () => Ue(
349
+ e.userData.tres__registerAtPointerEventHandler = s, e.userData.tres__deregisterAtPointerEventHandler = f, e.userData.tres__registerBlockingObjectAtPointerEventHandler = a, e.userData.tres__deregisterBlockingObjectAtPointerEventHandler = o;
350
+ const c = A(
351
+ () => Je(
352
352
  [
353
353
  ...Array.from(r.value),
354
- ...Object.values(t).map((u) => Array.from(u.keys())).flat()
354
+ ...Object.values(t).map((l) => Array.from(l.keys())).flat()
355
355
  ],
356
- ({ uuid: u }) => u
356
+ ({ uuid: l }) => l
357
357
  )
358
- ), { onClick: s, onPointerMove: m } = Ze(c, n);
359
- s(({ intersects: u, event: y }) => {
360
- var g;
361
- u.length && ((g = t.click.get(u[0].object)) == null || g(u[0], y));
358
+ ), { onClick: i, onPointerMove: m } = et(c, n);
359
+ i(({ intersects: l, event: g }) => {
360
+ var y;
361
+ l.length && ((y = t.click.get(l[0].object)) == null || y(l[0], g));
362
362
  });
363
- let l;
364
- return m(({ intersects: u, event: y }) => {
365
- var A, k, E, b;
366
- const g = (A = u == null ? void 0 : u[0]) == null ? void 0 : A.object, { pointerLeave: v, pointerEnter: w, pointerMove: C } = t;
367
- l && l !== g && ((k = v.get(l)) == null || k(l, y)), g && (l !== g && ((E = w.get(g)) == null || E(u[0], y)), (b = C.get(g)) == null || b(u[0], y)), l = g || null;
363
+ let u;
364
+ return m(({ intersects: l, event: g }) => {
365
+ var _, b, M, k;
366
+ const y = (_ = l == null ? void 0 : l[0]) == null ? void 0 : _.object, { pointerLeave: v, pointerEnter: C, pointerMove: w } = t;
367
+ u && u !== y && ((b = v.get(u)) == null || b(u, g)), y && (u !== y && ((M = C.get(y)) == null || M(l[0], g)), (k = w.get(y)) == null || k(l[0], g)), u = y || null;
368
368
  }), {
369
- registerObject: i,
369
+ registerObject: s,
370
370
  deregisterObject: f
371
371
  };
372
372
  }, $ = h({}), q = (e) => Object.assign($.value, e);
373
- function tt({
373
+ function rt({
374
374
  scene: e,
375
375
  canvas: n,
376
376
  windowSize: t,
377
377
  disableRender: r,
378
378
  rendererOptions: a
379
379
  }) {
380
- const o = M(
381
- () => _(t) ? He() : Fe(_(n).parentElement)
382
- ), f = M(() => o.value.width.value), i = M(() => o.value.height.value), c = M(() => f.value / i.value), s = {
383
- height: i,
380
+ const o = A(
381
+ () => P(t) ? Fe() : ze(P(n).parentElement)
382
+ ), f = A(() => o.value.width.value), s = A(() => o.value.height.value), c = A(() => f.value / s.value), i = {
383
+ height: s,
384
384
  width: f,
385
385
  aspectRatio: c
386
386
  }, m = F(e), {
387
- camera: l,
388
- cameras: u,
389
- registerCamera: y,
390
- deregisterCamera: g,
387
+ camera: u,
388
+ cameras: l,
389
+ registerCamera: g,
390
+ deregisterCamera: y,
391
391
  setCameraActive: v
392
- } = ze({ sizes: s, scene: e }), { renderer: w } = Ye(
392
+ } = Ge({ sizes: i, scene: e }), { renderer: C } = Qe(
393
393
  {
394
394
  scene: e,
395
395
  canvas: n,
396
396
  options: a,
397
- contextParts: { sizes: s, camera: l },
397
+ contextParts: { sizes: i, camera: u },
398
398
  disableRender: r
399
399
  }
400
- ), C = {
401
- sizes: s,
400
+ ), w = {
401
+ sizes: i,
402
402
  scene: m,
403
- camera: l,
404
- cameras: ue(u),
405
- renderer: w,
406
- raycaster: F(new xe()),
403
+ camera: u,
404
+ cameras: le(l),
405
+ renderer: C,
406
+ raycaster: F(new he()),
407
407
  controls: h(null),
408
408
  extend: q,
409
- registerCamera: y,
409
+ registerCamera: g,
410
410
  setCameraActive: v,
411
- deregisterCamera: g
411
+ deregisterCamera: y
412
412
  };
413
- return I("useTres", C), C;
413
+ return I("useTres", w), w;
414
414
  }
415
- function rt() {
416
- const e = le("useTres");
415
+ function nt() {
416
+ const e = ce("useTres");
417
417
  if (!e)
418
418
  throw new Error("useTresContext must be used together with useTresContextProvider");
419
419
  return e;
420
420
  }
421
- const yt = rt;
421
+ const wt = nt;
422
422
  let G = null, p = null;
423
- const { logError: Z } = B(), nt = {
423
+ const { logError: ee } = B(), at = {
424
424
  createElement(e, n, t, r) {
425
- var f, i;
426
- if (r || (r = {}), r.args || (r.args = []), e === "template" || Ve(e))
425
+ var f, s;
426
+ if (r || (r = {}), r.args || (r.args = []), e === "template" || qe(e))
427
427
  return null;
428
428
  let a = e.replace("Tres", ""), o;
429
429
  if (e === "primitive") {
430
- (r == null ? void 0 : r.object) === void 0 && Z("Tres primitives need a prop 'object'");
430
+ (r == null ? void 0 : r.object) === void 0 && ee("Tres primitives need a prop 'object'");
431
431
  const c = r.object;
432
432
  a = c.type, o = Object.assign(c, { type: a, attach: r.attach, primitive: !0 });
433
433
  } else {
434
434
  const c = $.value[a];
435
- c || Z(`${a} is not defined on the THREE namespace. Use extend to add it to the catalog.`), o = new c(...r.args);
435
+ c || ee(`${a} is not defined on the THREE namespace. Use extend to add it to the catalog.`), o = new c(...r.args);
436
436
  }
437
- return o.isCamera && (r != null && r.position || o.position.set(3, 3, 3), r != null && r.lookAt || o.lookAt(0, 0, 0)), (r == null ? void 0 : r.attach) === void 0 && (o.isMaterial ? o.attach = "material" : o.isBufferGeometry && (o.attach = "geometry")), o.isObject3D && ((f = r == null ? void 0 : r.material) != null && f.isMaterial && (o.userData.tres__materialViaProp = !0), (i = r == null ? void 0 : r.geometry) != null && i.isBufferGeometry && (o.userData.tres__geometryViaProp = !0)), o.userData = {
437
+ return o.isCamera && (r != null && r.position || o.position.set(3, 3, 3), r != null && r.lookAt || o.lookAt(0, 0, 0)), (r == null ? void 0 : r.attach) === void 0 && (o.isMaterial ? o.attach = "material" : o.isBufferGeometry && (o.attach = "geometry")), o.isObject3D && ((f = r == null ? void 0 : r.material) != null && f.isMaterial && (o.userData.tres__materialViaProp = !0), (s = r == null ? void 0 : r.geometry) != null && s.isBufferGeometry && (o.userData.tres__geometryViaProp = !0)), o.userData = {
438
438
  ...o.userData,
439
439
  tres__name: a
440
440
  }, o;
441
441
  },
442
442
  insert(e, n) {
443
- var t, r, a, o, f, i, c, s, m;
443
+ var t, r, a, o, f, s, c, i, m;
444
444
  if (n && n.isScene && (p = n), (((t = e == null ? void 0 : e.__vnode) == null ? void 0 : t.type) === "TresGroup" || ((r = e == null ? void 0 : e.__vnode) == null ? void 0 : r.type) === "TresObject3D") && n === null && !((o = (a = e == null ? void 0 : e.__vnode) == null ? void 0 : a.ctx) != null && o.asyncResolved)) {
445
445
  G = e;
446
446
  return;
@@ -450,12 +450,12 @@ const { logError: Z } = B(), nt = {
450
450
  if (e != null && e.isCamera) {
451
451
  if (!(p != null && p.userData.tres__registerCamera))
452
452
  throw "could not find tres__registerCamera on scene's userData";
453
- (c = p == null ? void 0 : (i = p.userData).tres__registerCamera) == null || c.call(i, e);
453
+ (c = p == null ? void 0 : (s = p.userData).tres__registerCamera) == null || c.call(s, e);
454
454
  }
455
455
  if (e != null && e.onClick || e != null && e.onPointerMove || e != null && e.onPointerEnter || e != null && e.onPointerLeave) {
456
456
  if (!(p != null && p.userData.tres__registerAtPointerEventHandler))
457
457
  throw "could not find tres__registerAtPointerEventHandler on scene's userData";
458
- (m = p == null ? void 0 : (s = p.userData).tres__registerAtPointerEventHandler) == null || m.call(s, e);
458
+ (m = p == null ? void 0 : (i = p.userData).tres__registerAtPointerEventHandler) == null || m.call(i, e);
459
459
  }
460
460
  }
461
461
  e != null && e.isObject3D && (n != null && n.isObject3D) ? (n.add(e), e.dispatchEvent({ type: "added" })) : 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));
@@ -464,63 +464,63 @@ const { logError: Z } = B(), nt = {
464
464
  var n, t;
465
465
  if (e) {
466
466
  if (e.isObject3D) {
467
- const r = e, a = (s) => {
468
- var l, u;
469
- const m = s;
470
- s.userData.tres__materialViaProp || (l = m.material) == null || l.dispose(), s.userData.tres__geometryViaProp || (u = m.geometry) == null || u.dispose();
471
- }, o = p == null ? void 0 : p.userData.tres__deregisterAtPointerEventHandler, f = p == null ? void 0 : p.userData.tres__deregisterBlockingObjectAtPointerEventHandler, i = (s) => {
472
- var m, l;
467
+ const r = e, a = (i) => {
468
+ var u, l;
469
+ const m = i;
470
+ i.userData.tres__materialViaProp || (u = m.material) == null || u.dispose(), i.userData.tres__geometryViaProp || (l = m.geometry) == null || l.dispose();
471
+ }, o = p == null ? void 0 : p.userData.tres__deregisterAtPointerEventHandler, f = p == null ? void 0 : p.userData.tres__deregisterBlockingObjectAtPointerEventHandler, s = (i) => {
472
+ var m, u;
473
473
  if (!f)
474
474
  throw "could not find tres__deregisterBlockingObjectAtPointerEventHandler on scene's userData";
475
- if ((l = p == null ? void 0 : (m = p.userData).tres__deregisterBlockingObjectAtPointerEventHandler) == null || l.call(m, s), !o)
475
+ if ((u = p == null ? void 0 : (m = p.userData).tres__deregisterBlockingObjectAtPointerEventHandler) == null || u.call(m, i), !o)
476
476
  throw "could not find tres__deregisterAtPointerEventHandler on scene's userData";
477
- (s != null && s.onClick || s != null && s.onPointerMove || s != null && s.onPointerEnter || s != null && s.onPointerLeave) && (o == null || o(s));
478
- }, c = (s) => {
477
+ (i != null && i.onClick || i != null && i.onPointerMove || i != null && i.onPointerEnter || i != null && i.onPointerLeave) && (o == null || o(i));
478
+ }, c = (i) => {
479
479
  const m = p == null ? void 0 : p.userData.tres__deregisterCamera;
480
480
  if (!m)
481
481
  throw "could not find tres__deregisterCamera on scene's userData";
482
- s.isCamera && (m == null || m(s));
482
+ i.isCamera && (m == null || m(i));
483
483
  };
484
- r.traverse((s) => {
485
- a(s), c(s), i == null || i(s);
486
- }), a(r), c(r), i == null || i(r);
484
+ r.traverse((i) => {
485
+ a(i), c(i), s == null || s(i);
486
+ }), a(r), c(r), s == null || s(r);
487
487
  }
488
488
  (n = e.removeFromParent) == null || n.call(e), (t = e.dispose) == null || t.call(e);
489
489
  }
490
490
  },
491
491
  patchProp(e, n, t, r) {
492
- var a, o, f, i;
492
+ var a, o, f, s;
493
493
  if (e) {
494
- let c = e, s = n;
495
- if (e.isObject3D && s === "blocks-pointer-events") {
496
- r || r === "" ? (o = p == null ? void 0 : (a = p.userData).tres__registerBlockingObjectAtPointerEventHandler) == null || o.call(a, e) : (i = p == null ? void 0 : (f = p.userData).tres__deregisterBlockingObjectAtPointerEventHandler) == null || i.call(f, e);
494
+ let c = e, i = n;
495
+ if (e.isObject3D && i === "blocks-pointer-events") {
496
+ r || r === "" ? (o = p == null ? void 0 : (a = p.userData).tres__registerBlockingObjectAtPointerEventHandler) == null || o.call(a, e) : (s = p == null ? void 0 : (f = p.userData).tres__deregisterBlockingObjectAtPointerEventHandler) == null || s.call(f, e);
497
497
  return;
498
498
  }
499
- let m = T(s), l = c == null ? void 0 : c[m];
500
- if (s === "args") {
501
- const y = e, g = t ?? [], v = r ?? [], w = e.userData.tres__name || e.type;
502
- w && g.length && !Ke(g, v) && (c = Object.assign(y, new $.value[w](...r)));
499
+ let m = T(i), u = c == null ? void 0 : c[m];
500
+ if (i === "args") {
501
+ const g = e, y = t ?? [], v = r ?? [], C = e.userData.tres__name || e.type;
502
+ C && y.length && !Xe(y, v) && (c = Object.assign(g, new $.value[C](...r)));
503
503
  return;
504
504
  }
505
505
  if (c.type === "BufferGeometry") {
506
- if (s === "args")
506
+ if (i === "args")
507
507
  return;
508
508
  c.setAttribute(
509
- T(s),
510
- new he(...r)
509
+ T(i),
510
+ new Be(...r)
511
511
  );
512
512
  return;
513
513
  }
514
- if (s.includes("-") && l === void 0) {
515
- const y = s.split("-");
516
- l = y.reduce((g, v) => g[T(v)], c), s = y.pop(), m = s.toLowerCase(), l != null && l.set || (c = y.reduce((g, v) => g[T(v)], c));
514
+ if (i.includes("-") && u === void 0) {
515
+ const g = i.split("-");
516
+ u = g.reduce((y, v) => y[T(v)], c), i = g.pop(), m = i.toLowerCase(), u != null && u.set || (c = g.reduce((y, v) => y[T(v)], c));
517
517
  }
518
- let u = r;
519
- if (u === "" && (u = !0), Q(l)) {
520
- Array.isArray(u) ? e[m](...u) : e[m](u);
518
+ let l = r;
519
+ if (l === "" && (l = !0), Z(u)) {
520
+ Array.isArray(l) ? e[m](...l) : e[m](l);
521
521
  return;
522
522
  }
523
- !(l != null && l.set) && !Q(l) ? c[m] = u : l.constructor === u.constructor && (l != null && l.copy) ? l == null || l.copy(u) : Array.isArray(u) ? l.set(...u) : !l.isColor && l.setScalar ? l.setScalar(u) : l.set(u);
523
+ !(u != null && u.set) && !Z(u) ? c[m] = l : u.constructor === l.constructor && (u != null && u.copy) ? u == null || u.copy(l) : Array.isArray(l) ? u.set(...l) : !u.isColor && u.setScalar ? u.setScalar(l) : u.set(l);
524
524
  }
525
525
  },
526
526
  parentNode(e) {
@@ -535,9 +535,9 @@ const { logError: Z } = B(), nt = {
535
535
  setScopeId: () => void 0,
536
536
  cloneNode: () => void 0,
537
537
  insertStaticContent: () => void 0
538
- }, { render: at } = ce(nt);
539
- q(ye);
540
- const ot = ["data-scene"], st = /* @__PURE__ */ U({
538
+ }, { render: ot } = fe(at);
539
+ q(we);
540
+ const st = ["data-scene"], it = /* @__PURE__ */ U({
541
541
  __name: "TresCanvas",
542
542
  props: {
543
543
  shadows: { type: Boolean, default: void 0 },
@@ -564,28 +564,29 @@ const ot = ["data-scene"], st = /* @__PURE__ */ U({
564
564
  failIfMajorPerformanceCaveat: { type: Boolean, default: void 0 }
565
565
  },
566
566
  setup(e) {
567
- const n = e, { logWarning: t } = B(), r = h(), a = F(new Be());
568
- ne();
569
- const o = fe(), f = (s) => U({
567
+ const n = e, { logWarning: t } = B(), r = h(), a = F(new Le());
568
+ ae();
569
+ const o = me(), f = J(), s = (m) => U({
570
570
  setup() {
571
- return I("useTres", s), I("extend", q), () => J(ge, null, o != null && o.default ? o.default() : []);
571
+ const u = J();
572
+ return Object.assign(u.appContext, f.appContext), Object.assign(u.provides, u.appContext.provides), I("useTres", m), I("extend", q), () => K(ye, null, o != null && o.default ? o.default() : []);
572
573
  }
573
- }), i = (s) => {
574
- const m = f(s);
575
- at(J(m), a.value);
576
- }, c = M(() => n.disableRender);
577
- return me(() => {
578
- const s = r, m = tt({
574
+ }), c = (m) => {
575
+ const u = s(m);
576
+ ot(K(u), a.value);
577
+ }, i = A(() => n.disableRender);
578
+ return pe(() => {
579
+ const m = r, u = rt({
579
580
  scene: a.value,
580
- canvas: s,
581
+ canvas: m,
581
582
  windowSize: n.windowSize,
582
- disableRender: c,
583
+ disableRender: i,
583
584
  rendererOptions: n
584
585
  });
585
- et({ scene: a.value, contextParts: m });
586
- const { registerCamera: l, camera: u, cameras: y, deregisterCamera: g } = m;
587
- i(m);
588
- const v = () => {
586
+ tt({ scene: a.value, contextParts: u });
587
+ const { registerCamera: l, camera: g, cameras: y, deregisterCamera: v } = u;
588
+ c(u);
589
+ const C = () => {
589
590
  const w = new W(
590
591
  45,
591
592
  window.innerWidth / window.innerHeight,
@@ -593,72 +594,72 @@ const ot = ["data-scene"], st = /* @__PURE__ */ U({
593
594
  1e3
594
595
  );
595
596
  w.position.set(3, 3, 3), w.lookAt(0, 0, 0), l(w);
596
- const C = D(() => {
597
- y.value.length >= 2 && (w.removeFromParent(), g(w), C == null || C());
597
+ const _ = D(() => {
598
+ y.value.length >= 2 && (w.removeFromParent(), v(w), _ == null || _());
598
599
  });
599
600
  };
600
- ee(
601
+ te(
601
602
  () => n.camera,
602
- (w, C) => {
603
- w ? l(w) : C && (C.removeFromParent(), g(C));
603
+ (w, _) => {
604
+ w ? l(w) : _ && (_.removeFromParent(), v(_));
604
605
  },
605
606
  {
606
607
  immediate: !0
607
608
  }
608
- ), u.value || (t(
609
+ ), g.value || (t(
609
610
  "No camera found. Creating a default perspective camera. To have full control over a camera, please add one to the scene."
610
- ), v());
611
- }), (s, m) => (pe(), ve("canvas", {
611
+ ), C());
612
+ }), (m, u) => (ve(), de("canvas", {
612
613
  ref_key: "canvas",
613
614
  ref: r,
614
615
  "data-scene": a.value.uuid,
615
- style: de({
616
+ style: ge({
616
617
  display: "block",
617
618
  width: "100%",
618
619
  height: "100%",
619
- position: s.windowSize ? "fixed" : "relative",
620
+ position: m.windowSize ? "fixed" : "relative",
620
621
  top: 0,
621
622
  left: 0,
622
623
  pointerEvents: "auto",
623
624
  touchAction: "none"
624
625
  })
625
- }, null, 12, ot));
626
+ }, null, 12, st));
626
627
  }
627
- }), it = [
628
+ }), ut = [
628
629
  "TresCanvas",
629
630
  "TresLeches",
630
631
  "TresScene"
631
- ], ut = {
632
+ ], lt = {
632
633
  template: {
633
634
  compilerOptions: {
634
- isCustomElement: (e) => e.startsWith("Tres") && !it.includes(e) || e === "primitive"
635
+ isCustomElement: (e) => e.startsWith("Tres") && !ut.includes(e) || e === "primitive"
635
636
  }
636
637
  }
637
- }, wt = ut, Ct = {
638
+ }, Ct = lt, _t = {
638
639
  install(e) {
639
- e.component("TresCanvas", st);
640
+ e.component("TresCanvas", it);
640
641
  }
641
642
  };
642
643
  export {
643
- st as TresCanvas,
644
+ it as TresCanvas,
644
645
  $ as catalogue,
645
- Ct as default,
646
+ _t as default,
646
647
  q as extend,
647
- mt as isProd,
648
- $e as normalizeColor,
649
- pt as normalizeVectorFlexibleParam,
650
- wt as templateCompilerOptions,
651
- Qe as trasverseObjects,
652
- ze as useCamera,
653
- vt as useLoader,
648
+ pt as isProd,
649
+ Ne as normalizeColor,
650
+ vt as normalizeVectorFlexibleParam,
651
+ Ct as templateCompilerOptions,
652
+ Ze as trasverseObjects,
653
+ Ge as useCamera,
654
+ dt as useLoader,
654
655
  B as useLogger,
655
- et as usePointerEventHandler,
656
- Ze as useRaycaster,
657
- ne as useRenderLoop,
658
- Ye as useRenderer,
659
- gt as useSeek,
660
- dt as useTexture,
661
- yt as useTres,
662
- rt as useTresContext,
663
- tt as useTresContextProvider
656
+ tt as usePointerEventHandler,
657
+ et as useRaycaster,
658
+ ae as useRenderLoop,
659
+ Qe as useRenderer,
660
+ yt as useSeek,
661
+ gt as useTexture,
662
+ wt as useTres,
663
+ nt as useTresContext,
664
+ rt as useTresContextProvider
664
665
  };
package/dist/tres.umd.cjs CHANGED
@@ -1,8 +1,8 @@
1
1
  /**
2
2
  * name: @tresjs/core
3
- * version: v3.2.0
3
+ * version: v3.2.1-next.1
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(v,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):(v=typeof globalThis<"u"?globalThis:v||self,u(v.tres={},v.Vue,v.Three,v.VueUseCore))})(this,function(v,u,M,y){"use strict";function se(e){const n=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(e){for(const t in e)if(t!=="default"){const r=Object.getOwnPropertyDescriptor(e,t);Object.defineProperty(n,t,r.get?r:{enumerable:!0,get:()=>e[t]})}}return n.default=e,Object.freeze(n)}const ie=se(M),W=({sizes:e,scene:n})=>{const t=u.ref([]),r=u.computed(()=>t.value[0]),a=(i,f=!1)=>{t.value.some(({uuid:s})=>s===i.uuid)||(f?m(i):t.value.push(i))},o=i=>{t.value=t.value.filter(({uuid:f})=>f!==i.uuid)},m=i=>{const f=i instanceof M.Camera?i:t.value.find(d=>d.uuid===i);if(!f)return;const s=t.value.filter(({uuid:d})=>d!==f.uuid);t.value=[f,...s]};return u.watchEffect(()=>{e.aspectRatio.value&&t.value.forEach(i=>{i instanceof M.PerspectiveCamera&&(i.aspect=e.aspectRatio.value),(i instanceof M.PerspectiveCamera||i instanceof M.OrthographicCamera)&&i.updateProjectionMatrix()})}),n.userData.tres__registerCamera=a,n.userData.tres__deregisterCamera=o,u.onUnmounted(()=>{t.value=[]}),{camera:r,cameras:t,registerCamera:a,deregisterCamera:o,setCameraActive:m}},I=y.createEventHook(),N=y.createEventHook(),F=y.createEventHook(),S=new M.Clock;let B=0,x=0;const{pause:le,resume:ue,isActive:ce}=y.useRafFn(()=>{I.trigger({delta:B,elapsed:x,clock:S}),N.trigger({delta:B,elapsed:x,clock:S}),F.trigger({delta:B,elapsed:x,clock:S})},{immediate:!1});F.on(()=>{B=S.getDelta(),x=S.getElapsedTime()});const G=()=>({onBeforeLoop:I.on,onLoop:N.on,onAfterLoop:F.on,pause:le,resume:ue,isActive:ce}),fe=!0,$="[TresJS ▲ ■ ●] ";function L(){function e(r,a){console.error(`${$} ${r}`,a||"")}function n(r){console.warn(`${$} ${r}`)}function t(r,a){}return{logError:e,logWarning:n,logMessage:t}}function me(e){return typeof e=="number"?[e,e,e]:e instanceof M.Vector3?[e.x,e.y,e.z]:e}function q(e){return e instanceof M.Color?e:Array.isArray(e)?new M.Color(...e):new M.Color(e)}const U=(e,n)=>{for(const t of Object.keys(n))n[t]instanceof Object&&Object.assign(n[t],U(e[t],n[t]));return Object.assign(e||{},n),e},de=pe("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 H(e){return e&&e.nodeType===1}function j(e){return e.replace(/-([a-z])/g,(n,t)=>t.toUpperCase())}function pe(e,n){const t=Object.create(null),r=e.split(",");for(let a=0;a<r.length;a++)t[r[a]]=!0;return n?a=>!!t[a.toLowerCase()]:a=>!!t[a]}const ge=(e,n)=>{const t=new Set,r=[];for(const a of e){const o=n(a);t.has(o)||(t.add(o),r.push(a))}return r},J=(e,n)=>{if(!n)return;const t=Array.isArray(n)?n:n.match(/([^[.\]])+/g);return t==null?void 0:t.reduce((r,a)=>r&&r[a],e)},ve=(e,n,t)=>{const r=Array.isArray(n)?n:n.match(/([^[.\]])+/g);r&&r.reduce((a,o,m)=>(a[o]===void 0&&(a[o]={}),m===r.length-1&&(a[o]=t),a[o]),e)};function K(e,n){if(H(e)&&H(n)){const a=e.attributes,o=n.attributes;return a.length!==o.length?!1:Array.from(a).every(({name:m,value:i})=>n.getAttribute(m)===i)}if(e===n)return!0;if(e===null||typeof e!="object"||n===null||typeof n!="object")return!1;const t=Object.keys(e),r=Object.keys(n);if(t.length!==r.length)return!1;for(const a of t)if(!r.includes(a)||!K(e[a],n[a]))return!1;return!0}function ye(e,n){if(!Array.isArray(e)||!Array.isArray(n)||e.length!==n.length)return!1;for(let t=0;t<e.length;t++)if(!K(e[t],n[t]))return!1;return!0}const we=Number.parseInt(M.REVISION.replace("dev","")),T={realistic:{outputColorSpace:M.SRGBColorSpace,toneMapping:M.ACESFilmicToneMapping,toneMappingExposure:3,shadowMap:{enabled:!0,type:M.PCFSoftShadowMap}}};function X({scene:e,canvas:n,options:t,disableRender:r,contextParts:{sizes:a,camera:o}}){const m=u.computed(()=>({alpha:y.toValue(t.alpha),depth:y.toValue(t.depth),canvas:y.unrefElement(n),context:y.toValue(t.context),stencil:y.toValue(t.stencil),antialias:y.toValue(t.antialias)===void 0?!0:y.toValue(t.antialias),precision:y.toValue(t.precision),powerPreference:y.toValue(t.powerPreference),premultipliedAlpha:y.toValue(t.premultipliedAlpha),preserveDrawingBuffer:y.toValue(t.preserveDrawingBuffer),logarithmicDepthBuffer:y.toValue(t.logarithmicDepthBuffer),failIfMajorPerformanceCaveat:y.toValue(t.failIfMajorPerformanceCaveat)})),i=u.shallowRef(new M.WebGLRenderer(m.value));u.watch(m,()=>{i.value.dispose(),i.value=new M.WebGLRenderer(m.value)}),u.watchEffect(()=>{i.value.setSize(a.width.value,a.height.value)});const{pixelRatio:f}=y.useDevicePixelRatio();u.watchEffect(()=>{i.value.setPixelRatio(f.value)});const{logError:s}=L(),c=(()=>{const g=new M.WebGLRenderer,_={shadowMap:{enabled:g.shadowMap.enabled,type:g.shadowMap.type},toneMapping:g.toneMapping,toneMappingExposure:g.toneMappingExposure,outputColorSpace:g.outputColorSpace};return g.dispose(),_})();u.watchEffect(()=>{const g=y.toValue(t.preset);g&&(g in T||s(`Renderer Preset must be one of these: ${Object.keys(T).join(", ")}`),U(i.value,T[g]));const _=(O,h)=>{const D=y.toValue(O),z=()=>{if(g)return J(T[g],h)};if(D!==void 0)return D;const w=z();return w!==void 0?w:J(c,h)},b=(O,h)=>ve(i.value,h,_(O,h));b(t.shadows,"shadowMap.enabled"),b(t.toneMapping,"toneMapping"),b(t.shadowMapType,"shadowMap.type"),we<150&&b(!t.useLegacyLights,"physicallyCorrectLights"),b(t.outputColorSpace,"outputColorSpace"),b(t.toneMappingExposure,"toneMappingExposure");const A=_(t.clearColor,"clearColor");A&&i.value.setClearColor(A?q(A):new M.Color(0))});const{pause:l,resume:P,onLoop:C}=G();return C(()=>{o.value&&!y.toValue(r)&&i.value.render(e,o.value)}),P(),u.onUnmounted(()=>{l(),i.value.dispose(),i.value.forceContextLoss()}),{renderer:i}}const Y=e=>typeof e=="function",Q=e=>!!e&&e.constructor===Array;function Z(e){const n={nodes:{},materials:{}};return e&&e.traverse(t=>{t.name&&(n.nodes[t.name]=t),t.material&&!n.materials[t.material.name]&&(n.materials[t.material.name]=t.material)}),n}async function Ce(e,n,t,r,a){const{logError:o}=L(),m=new e;a&&a(m),t&&t(m);const f=(Array.isArray(n)?n:[n]).map(s=>new Promise((d,c)=>{m.load(s,l=>{l.scene&&Object.assign(l,Z(l.scene)),d(l)},r,l=>c(o("[useLoader] - Failed to load resource",l)))}));return Q(n)?await Promise.all(f):await f[0]}async function Pe(e){const n=new M.LoadingManager,t=new M.TextureLoader(n),r=a=>new Promise((o,m)=>{t.load(a,i=>o(i),()=>null,()=>{m(new Error("[useTextures] - Failed to load texture"))})});if(Q(e)){const a=await Promise.all(e.map(o=>r(o)));return e.length>1?a:a[0]}else{const{map:a,displacementMap:o,normalMap:m,roughnessMap:i,metalnessMap:f,aoMap:s,alphaMap:d,matcap:c}=e;return{map:a?await r(a):null,displacementMap:o?await r(o):null,normalMap:m?await r(m):null,roughnessMap:i?await r(i):null,metalnessMap:f?await r(f):null,aoMap:s?await r(s):null,alphaMap:d?await r(d):null,matcap:c?await r(c):null}}}const ee=(e,{renderer:n,camera:t,raycaster:r})=>{const a=u.computed(()=>n.value.domElement),{x:o,y:m}=y.usePointer({target:a}),{width:i,height:f,top:s,left:d}=y.useElementBounding(a),c=({x:w,y:k})=>{if(a.value)return{x:(w-d.value)/i.value*2-1,y:-((k-s.value)/f.value)*2+1}},l=({x:w,y:k})=>{if(t.value)return r.value.setFromCamera(new M.Vector2(w,k),t.value),r.value.intersectObjects(e.value,!1)},P=w=>{const k=c({x:(w==null?void 0:w.clientX)??o.value,y:(w==null?void 0:w.clientY)??m.value});return k?l(k)||[]:[]},C=u.computed(()=>P()),g=y.createEventHook(),_=y.createEventHook(),b=(w,k)=>{w.trigger({event:k,intersects:P(k)})},A=w=>{b(_,w)};let O;const h=w=>{var k;O=(k=P(w)[0])==null?void 0:k.object},D=w=>{var k;w instanceof PointerEvent&&O===((k=P(w)[0])==null?void 0:k.object)&&b(g,w)},z=w=>_.trigger({event:w,intersects:[]});return a.value.addEventListener("pointerup",D),a.value.addEventListener("pointerdown",h),a.value.addEventListener("pointermove",A),a.value.addEventListener("pointerleave",z),u.onUnmounted(()=>{a!=null&&a.value&&(a.value.removeEventListener("pointerup",D),a.value.removeEventListener("pointerdown",h),a.value.removeEventListener("pointermove",A),a.value.removeEventListener("pointerleave",z))}),{intersects:C,onClick:w=>g.on(w).off,onPointerMove:w=>_.on(w).off}};function _e(){const{logWarning:e}=L();function n(r,a,o){let m=null;return r.traverse(i=>{i[a]===o&&(m=i)}),m||e(`Child with ${a} '${o}' not found.`),m}function t(r,a){return n(r,"name",a)}return{seek:n,seekByName:t}}const te=({scene:e,contextParts:n})=>{const t=u.reactive({click:new Map,pointerMove:new Map,pointerEnter:new Map,pointerLeave:new Map}),r=u.ref(new Set),a=l=>{r.value.add(l)},o=l=>{r.value.delete(l)},m=l=>{Object.values(t).forEach(P=>P.delete(l)),o(l)},i=l=>{const{onClick:P,onPointerMove:C,onPointerEnter:g,onPointerLeave:_}=l;P&&t.click.set(l,P),C&&t.pointerMove.set(l,C),g&&t.pointerEnter.set(l,g),_&&t.pointerLeave.set(l,_)};e.userData.tres__registerAtPointerEventHandler=i,e.userData.tres__deregisterAtPointerEventHandler=m,e.userData.tres__registerBlockingObjectAtPointerEventHandler=a,e.userData.tres__deregisterBlockingObjectAtPointerEventHandler=o;const f=u.computed(()=>ge([...Array.from(r.value),...Object.values(t).map(l=>Array.from(l.keys())).flat()],({uuid:l})=>l)),{onClick:s,onPointerMove:d}=ee(f,n);s(({intersects:l,event:P})=>{var C;l.length&&((C=t.click.get(l[0].object))==null||C(l[0],P))});let c;return d(({intersects:l,event:P})=>{var A,O,h,D;const C=(A=l==null?void 0:l[0])==null?void 0:A.object,{pointerLeave:g,pointerEnter:_,pointerMove:b}=t;c&&c!==C&&((O=g.get(c))==null||O(c,P)),C&&(c!==C&&((h=_.get(C))==null||h(l[0],P)),(D=b.get(C))==null||D(l[0],P)),c=C||null}),{registerObject:i,deregisterObject:m}},E=u.ref({}),V=e=>Object.assign(E.value,e);function re({scene:e,canvas:n,windowSize:t,disableRender:r,rendererOptions:a}){const o=u.computed(()=>y.toValue(t)?y.useWindowSize():y.useElementSize(y.toValue(n).parentElement)),m=u.computed(()=>o.value.width.value),i=u.computed(()=>o.value.height.value),f=u.computed(()=>m.value/i.value),s={height:i,width:m,aspectRatio:f},d=u.shallowRef(e),{camera:c,cameras:l,registerCamera:P,deregisterCamera:C,setCameraActive:g}=W({sizes:s,scene:e}),{renderer:_}=X({scene:e,canvas:n,options:a,contextParts:{sizes:s,camera:c},disableRender:r}),b={sizes:s,scene:d,camera:c,cameras:u.readonly(l),renderer:_,raycaster:u.shallowRef(new M.Raycaster),controls:u.ref(null),extend:V,registerCamera:P,setCameraActive:g,deregisterCamera:C};return u.provide("useTres",b),b}function ne(){const e=u.inject("useTres");if(!e)throw new Error("useTresContext must be used together with useTresContextProvider");return e}const Me=ne;function Se(e){}let R=null,p=null;const{logError:ae}=L(),be={createElement(e,n,t,r){var m,i;if(r||(r={}),r.args||(r.args=[]),e==="template"||de(e))return null;let a=e.replace("Tres",""),o;if(e==="primitive"){(r==null?void 0:r.object)===void 0&&ae("Tres primitives need a prop 'object'");const f=r.object;a=f.type,o=Object.assign(f,{type:a,attach:r.attach,primitive:!0})}else{const f=E.value[a];f||ae(`${a} is not defined on the THREE namespace. Use extend to add it to the catalog.`),o=new f(...r.args)}return o.isCamera&&(r!=null&&r.position||o.position.set(3,3,3),r!=null&&r.lookAt||o.lookAt(0,0,0)),(r==null?void 0:r.attach)===void 0&&(o.isMaterial?o.attach="material":o.isBufferGeometry&&(o.attach="geometry")),o.isObject3D&&((m=r==null?void 0:r.material)!=null&&m.isMaterial&&(o.userData.tres__materialViaProp=!0),(i=r==null?void 0:r.geometry)!=null&&i.isBufferGeometry&&(o.userData.tres__geometryViaProp=!0)),o.userData={...o.userData,tres__name:a},o},insert(e,n){var t,r,a,o,m,i,f,s,d;if(n&&n.isScene&&(p=n),(((t=e==null?void 0:e.__vnode)==null?void 0:t.type)==="TresGroup"||((r=e==null?void 0:e.__vnode)==null?void 0:r.type)==="TresObject3D")&&n===null&&!((o=(a=e==null?void 0:e.__vnode)==null?void 0:a.ctx)!=null&&o.asyncResolved)){R=e;return}else(m=e==null?void 0:e.__vnode)!=null&&m.type.includes("Controls")&&n===null&&(R=p);if(n||(n=R),e!=null&&e.isObject3D){if(e!=null&&e.isCamera){if(!(p!=null&&p.userData.tres__registerCamera))throw"could not find tres__registerCamera on scene's userData";(f=p==null?void 0:(i=p.userData).tres__registerCamera)==null||f.call(i,e)}if(e!=null&&e.onClick||e!=null&&e.onPointerMove||e!=null&&e.onPointerEnter||e!=null&&e.onPointerLeave){if(!(p!=null&&p.userData.tres__registerAtPointerEventHandler))throw"could not find tres__registerAtPointerEventHandler on scene's userData";(d=p==null?void 0:(s=p.userData).tres__registerAtPointerEventHandler)==null||d.call(s,e)}}e!=null&&e.isObject3D&&(n!=null&&n.isObject3D)?(n.add(e),e.dispatchEvent({type:"added"})):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,t;if(e){if(e.isObject3D){const r=e,a=s=>{var c,l;const d=s;s.userData.tres__materialViaProp||(c=d.material)==null||c.dispose(),s.userData.tres__geometryViaProp||(l=d.geometry)==null||l.dispose()},o=p==null?void 0:p.userData.tres__deregisterAtPointerEventHandler,m=p==null?void 0:p.userData.tres__deregisterBlockingObjectAtPointerEventHandler,i=s=>{var d,c;if(!m)throw"could not find tres__deregisterBlockingObjectAtPointerEventHandler on scene's userData";if((c=p==null?void 0:(d=p.userData).tres__deregisterBlockingObjectAtPointerEventHandler)==null||c.call(d,s),!o)throw"could not find tres__deregisterAtPointerEventHandler on scene's userData";(s!=null&&s.onClick||s!=null&&s.onPointerMove||s!=null&&s.onPointerEnter||s!=null&&s.onPointerLeave)&&(o==null||o(s))},f=s=>{const d=p==null?void 0:p.userData.tres__deregisterCamera;if(!d)throw"could not find tres__deregisterCamera on scene's userData";s.isCamera&&(d==null||d(s))};r.traverse(s=>{a(s),f(s),i==null||i(s)}),a(r),f(r),i==null||i(r)}(n=e.removeFromParent)==null||n.call(e),(t=e.dispose)==null||t.call(e)}},patchProp(e,n,t,r){var a,o,m,i;if(e){let f=e,s=n;if(e.isObject3D&&s==="blocks-pointer-events"){r||r===""?(o=p==null?void 0:(a=p.userData).tres__registerBlockingObjectAtPointerEventHandler)==null||o.call(a,e):(i=p==null?void 0:(m=p.userData).tres__deregisterBlockingObjectAtPointerEventHandler)==null||i.call(m,e);return}let d=j(s),c=f==null?void 0:f[d];if(s==="args"){const P=e,C=t??[],g=r??[],_=e.userData.tres__name||e.type;_&&C.length&&!ye(C,g)&&(f=Object.assign(P,new E.value[_](...r)));return}if(f.type==="BufferGeometry"){if(s==="args")return;f.setAttribute(j(s),new M.BufferAttribute(...r));return}if(s.includes("-")&&c===void 0){const P=s.split("-");c=P.reduce((C,g)=>C[j(g)],f),s=P.pop(),d=s.toLowerCase(),c!=null&&c.set||(f=P.reduce((C,g)=>C[j(g)],f))}let l=r;if(l===""&&(l=!0),Y(c)){Array.isArray(l)?e[d](...l):e[d](l);return}!(c!=null&&c.set)&&!Y(c)?f[d]=l:c.constructor===l.constructor&&(c!=null&&c.copy)?c==null||c.copy(l):Array.isArray(l)?c.set(...l):!c.isColor&&c.setScalar?c.setScalar(l):c.set(l)}},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},{render:ke}=u.createRenderer(be);V(ie);const he=["data-scene"],oe=u.defineComponent({__name:"TresCanvas",props:{shadows:{type:Boolean,default:void 0},clearColor:{},toneMapping:{},shadowMapType:{},useLegacyLights:{type:Boolean,default:void 0},outputColorSpace:{},toneMappingExposure:{},camera:{},preset:{},windowSize:{type:Boolean,default:void 0},disableRender:{type:Boolean,default:void 0},context:{},precision:{},alpha:{type:Boolean,default:void 0},premultipliedAlpha:{type:Boolean},antialias:{type:Boolean,default:void 0},stencil:{type:Boolean,default:void 0},preserveDrawingBuffer:{type:Boolean,default:void 0},powerPreference:{},depth:{type:Boolean,default:void 0},logarithmicDepthBuffer:{type:Boolean,default:void 0},failIfMajorPerformanceCaveat:{type:Boolean,default:void 0}},setup(e){const n=e,{logWarning:t}=L(),r=u.ref(),a=u.shallowRef(new M.Scene);G();const o=u.useSlots(),m=s=>u.defineComponent({setup(){return u.provide("useTres",s),u.provide("extend",V),()=>u.h(u.Fragment,null,o!=null&&o.default?o.default():[])}}),i=s=>{const d=m(s);ke(u.h(d),a.value)},f=u.computed(()=>n.disableRender);return u.onMounted(()=>{const s=r,d=re({scene:a.value,canvas:s,windowSize:n.windowSize,disableRender:f,rendererOptions:n});te({scene:a.value,contextParts:d});const{registerCamera:c,camera:l,cameras:P,deregisterCamera:C}=d;i(d);const g=()=>{const _=new M.PerspectiveCamera(45,window.innerWidth/window.innerHeight,.1,1e3);_.position.set(3,3,3),_.lookAt(0,0,0),c(_);const b=u.watchEffect(()=>{P.value.length>=2&&(_.removeFromParent(),C(_),b==null||b())})};u.watch(()=>n.camera,(_,b)=>{_?c(_):b&&(b.removeFromParent(),C(b))},{immediate:!0}),l.value||(t("No camera found. Creating a default perspective camera. To have full control over a camera, please add one to the scene."),g())}),(s,d)=>(u.openBlock(),u.createElementBlock("canvas",{ref_key:"canvas",ref:r,"data-scene":a.value.uuid,style:u.normalizeStyle({display:"block",width:"100%",height:"100%",position:s.windowSize?"fixed":"relative",top:0,left:0,pointerEvents:"auto",touchAction:"none"})},null,12,he))}}),Ae=["TresCanvas","TresLeches","TresScene"],Oe={template:{compilerOptions:{isCustomElement:e=>e.startsWith("Tres")&&!Ae.includes(e)||e==="primitive"}}},De={install(e){e.component("TresCanvas",oe)}};v.TresCanvas=oe,v.catalogue=E,v.default=De,v.extend=V,v.isProd=fe,v.normalizeColor=q,v.normalizeVectorFlexibleParam=me,v.templateCompilerOptions=Oe,v.trasverseObjects=Z,v.useCamera=W,v.useLoader=Ce,v.useLogger=L,v.usePointerEventHandler=te,v.useRaycaster=ee,v.useRenderLoop=G,v.useRenderer=X,v.useSeek=_e,v.useTexture=Pe,v.useTres=Me,v.useTresContext=ne,v.useTresContextProvider=re,Object.defineProperties(v,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}})});
8
+ (function(v,c){typeof exports=="object"&&typeof module<"u"?c(exports,require("vue"),require("three"),require("@vueuse/core")):typeof define=="function"&&define.amd?define(["exports","vue","three","@vueuse/core"],c):(v=typeof globalThis<"u"?globalThis:v||self,c(v.tres={},v.Vue,v.Three,v.VueUseCore))})(this,function(v,c,_,y){"use strict";function se(e){const n=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(e){for(const t in e)if(t!=="default"){const r=Object.getOwnPropertyDescriptor(e,t);Object.defineProperty(n,t,r.get?r:{enumerable:!0,get:()=>e[t]})}}return n.default=e,Object.freeze(n)}const ie=se(_),I=({sizes:e,scene:n})=>{const t=c.ref([]),r=c.computed(()=>t.value[0]),a=(s,f=!1)=>{t.value.some(({uuid:i})=>i===s.uuid)||(f?m(s):t.value.push(s))},o=s=>{t.value=t.value.filter(({uuid:f})=>f!==s.uuid)},m=s=>{const f=s instanceof _.Camera?s:t.value.find(d=>d.uuid===s);if(!f)return;const i=t.value.filter(({uuid:d})=>d!==f.uuid);t.value=[f,...i]};return c.watchEffect(()=>{e.aspectRatio.value&&t.value.forEach(s=>{s instanceof _.PerspectiveCamera&&(s.aspect=e.aspectRatio.value),(s instanceof _.PerspectiveCamera||s instanceof _.OrthographicCamera)&&s.updateProjectionMatrix()})}),n.userData.tres__registerCamera=a,n.userData.tres__deregisterCamera=o,c.onUnmounted(()=>{t.value=[]}),{camera:r,cameras:t,registerCamera:a,deregisterCamera:o,setCameraActive:m}},W=y.createEventHook(),N=y.createEventHook(),F=y.createEventHook(),S=new _.Clock;let B=0,x=0;const{pause:le,resume:ue,isActive:ce}=y.useRafFn(()=>{W.trigger({delta:B,elapsed:x,clock:S}),N.trigger({delta:B,elapsed:x,clock:S}),F.trigger({delta:B,elapsed:x,clock:S})},{immediate:!1});F.on(()=>{B=S.getDelta(),x=S.getElapsedTime()});const G=()=>({onBeforeLoop:W.on,onLoop:N.on,onAfterLoop:F.on,pause:le,resume:ue,isActive:ce}),fe=!0,$="[TresJS ▲ ■ ●] ";function L(){function e(r,a){console.error(`${$} ${r}`,a||"")}function n(r){console.warn(`${$} ${r}`)}function t(r,a){}return{logError:e,logWarning:n,logMessage:t}}function me(e){return typeof e=="number"?[e,e,e]:e instanceof _.Vector3?[e.x,e.y,e.z]:e}function q(e){return e instanceof _.Color?e:Array.isArray(e)?new _.Color(...e):new _.Color(e)}const U=(e,n)=>{for(const t of Object.keys(n))n[t]instanceof Object&&Object.assign(n[t],U(e[t],n[t]));return Object.assign(e||{},n),e},de=pe("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 H(e){return e&&e.nodeType===1}function j(e){return e.replace(/-([a-z])/g,(n,t)=>t.toUpperCase())}function pe(e,n){const t=Object.create(null),r=e.split(",");for(let a=0;a<r.length;a++)t[r[a]]=!0;return n?a=>!!t[a.toLowerCase()]:a=>!!t[a]}const ge=(e,n)=>{const t=new Set,r=[];for(const a of e){const o=n(a);t.has(o)||(t.add(o),r.push(a))}return r},J=(e,n)=>{if(!n)return;const t=Array.isArray(n)?n:n.match(/([^[.\]])+/g);return t==null?void 0:t.reduce((r,a)=>r&&r[a],e)},ve=(e,n,t)=>{const r=Array.isArray(n)?n:n.match(/([^[.\]])+/g);r&&r.reduce((a,o,m)=>(a[o]===void 0&&(a[o]={}),m===r.length-1&&(a[o]=t),a[o]),e)};function K(e,n){if(H(e)&&H(n)){const a=e.attributes,o=n.attributes;return a.length!==o.length?!1:Array.from(a).every(({name:m,value:s})=>n.getAttribute(m)===s)}if(e===n)return!0;if(e===null||typeof e!="object"||n===null||typeof n!="object")return!1;const t=Object.keys(e),r=Object.keys(n);if(t.length!==r.length)return!1;for(const a of t)if(!r.includes(a)||!K(e[a],n[a]))return!1;return!0}function ye(e,n){if(!Array.isArray(e)||!Array.isArray(n)||e.length!==n.length)return!1;for(let t=0;t<e.length;t++)if(!K(e[t],n[t]))return!1;return!0}const we=Number.parseInt(_.REVISION.replace("dev","")),T={realistic:{outputColorSpace:_.SRGBColorSpace,toneMapping:_.ACESFilmicToneMapping,toneMappingExposure:3,shadowMap:{enabled:!0,type:_.PCFSoftShadowMap}}};function X({scene:e,canvas:n,options:t,disableRender:r,contextParts:{sizes:a,camera:o}}){const m=c.computed(()=>({alpha:y.toValue(t.alpha),depth:y.toValue(t.depth),canvas:y.unrefElement(n),context:y.toValue(t.context),stencil:y.toValue(t.stencil),antialias:y.toValue(t.antialias)===void 0?!0:y.toValue(t.antialias),precision:y.toValue(t.precision),powerPreference:y.toValue(t.powerPreference),premultipliedAlpha:y.toValue(t.premultipliedAlpha),preserveDrawingBuffer:y.toValue(t.preserveDrawingBuffer),logarithmicDepthBuffer:y.toValue(t.logarithmicDepthBuffer),failIfMajorPerformanceCaveat:y.toValue(t.failIfMajorPerformanceCaveat)})),s=c.shallowRef(new _.WebGLRenderer(m.value));c.watch(m,()=>{s.value.dispose(),s.value=new _.WebGLRenderer(m.value)}),c.watchEffect(()=>{s.value.setSize(a.width.value,a.height.value)});const{pixelRatio:f}=y.useDevicePixelRatio();c.watchEffect(()=>{s.value.setPixelRatio(f.value)});const{logError:i}=L(),l=(()=>{const g=new _.WebGLRenderer,b={shadowMap:{enabled:g.shadowMap.enabled,type:g.shadowMap.type},toneMapping:g.toneMapping,toneMappingExposure:g.toneMappingExposure,outputColorSpace:g.outputColorSpace};return g.dispose(),b})();c.watchEffect(()=>{const g=y.toValue(t.preset);g&&(g in T||i(`Renderer Preset must be one of these: ${Object.keys(T).join(", ")}`),U(s.value,T[g]));const b=(A,O)=>{const D=y.toValue(A),z=()=>{if(g)return J(T[g],O)};if(D!==void 0)return D;const w=z();return w!==void 0?w:J(l,O)},M=(A,O)=>ve(s.value,O,b(A,O));M(t.shadows,"shadowMap.enabled"),M(t.toneMapping,"toneMapping"),M(t.shadowMapType,"shadowMap.type"),we<150&&M(!t.useLegacyLights,"physicallyCorrectLights"),M(t.outputColorSpace,"outputColorSpace"),M(t.toneMappingExposure,"toneMappingExposure");const k=b(t.clearColor,"clearColor");k&&s.value.setClearColor(k?q(k):new _.Color(0))});const{pause:u,resume:C,onLoop:P}=G();return P(()=>{o.value&&!y.toValue(r)&&s.value.render(e,o.value)}),C(),c.onUnmounted(()=>{u(),s.value.dispose(),s.value.forceContextLoss()}),{renderer:s}}const Y=e=>typeof e=="function",Q=e=>!!e&&e.constructor===Array;function Z(e){const n={nodes:{},materials:{}};return e&&e.traverse(t=>{t.name&&(n.nodes[t.name]=t),t.material&&!n.materials[t.material.name]&&(n.materials[t.material.name]=t.material)}),n}async function Ce(e,n,t,r,a){const{logError:o}=L(),m=new e;a&&a(m),t&&t(m);const f=(Array.isArray(n)?n:[n]).map(i=>new Promise((d,l)=>{m.load(i,u=>{u.scene&&Object.assign(u,Z(u.scene)),d(u)},r,u=>l(o("[useLoader] - Failed to load resource",u)))}));return Q(n)?await Promise.all(f):await f[0]}async function Pe(e){const n=new _.LoadingManager,t=new _.TextureLoader(n),r=a=>new Promise((o,m)=>{t.load(a,s=>o(s),()=>null,()=>{m(new Error("[useTextures] - Failed to load texture"))})});if(Q(e)){const a=await Promise.all(e.map(o=>r(o)));return e.length>1?a:a[0]}else{const{map:a,displacementMap:o,normalMap:m,roughnessMap:s,metalnessMap:f,aoMap:i,alphaMap:d,matcap:l}=e;return{map:a?await r(a):null,displacementMap:o?await r(o):null,normalMap:m?await r(m):null,roughnessMap:s?await r(s):null,metalnessMap:f?await r(f):null,aoMap:i?await r(i):null,alphaMap:d?await r(d):null,matcap:l?await r(l):null}}}const ee=(e,{renderer:n,camera:t,raycaster:r})=>{const a=c.computed(()=>n.value.domElement),{x:o,y:m}=y.usePointer({target:a}),{width:s,height:f,top:i,left:d}=y.useElementBounding(a),l=({x:w,y:h})=>{if(a.value)return{x:(w-d.value)/s.value*2-1,y:-((h-i.value)/f.value)*2+1}},u=({x:w,y:h})=>{if(t.value)return r.value.setFromCamera(new _.Vector2(w,h),t.value),r.value.intersectObjects(e.value,!1)},C=w=>{const h=l({x:(w==null?void 0:w.clientX)??o.value,y:(w==null?void 0:w.clientY)??m.value});return h?u(h)||[]:[]},P=c.computed(()=>C()),g=y.createEventHook(),b=y.createEventHook(),M=(w,h)=>{w.trigger({event:h,intersects:C(h)})},k=w=>{M(b,w)};let A;const O=w=>{var h;A=(h=C(w)[0])==null?void 0:h.object},D=w=>{var h;w instanceof PointerEvent&&A===((h=C(w)[0])==null?void 0:h.object)&&M(g,w)},z=w=>b.trigger({event:w,intersects:[]});return a.value.addEventListener("pointerup",D),a.value.addEventListener("pointerdown",O),a.value.addEventListener("pointermove",k),a.value.addEventListener("pointerleave",z),c.onUnmounted(()=>{a!=null&&a.value&&(a.value.removeEventListener("pointerup",D),a.value.removeEventListener("pointerdown",O),a.value.removeEventListener("pointermove",k),a.value.removeEventListener("pointerleave",z))}),{intersects:P,onClick:w=>g.on(w).off,onPointerMove:w=>b.on(w).off}};function _e(){const{logWarning:e}=L();function n(r,a,o){let m=null;return r.traverse(s=>{s[a]===o&&(m=s)}),m||e(`Child with ${a} '${o}' not found.`),m}function t(r,a){return n(r,"name",a)}return{seek:n,seekByName:t}}const te=({scene:e,contextParts:n})=>{const t=c.reactive({click:new Map,pointerMove:new Map,pointerEnter:new Map,pointerLeave:new Map}),r=c.ref(new Set),a=u=>{r.value.add(u)},o=u=>{r.value.delete(u)},m=u=>{Object.values(t).forEach(C=>C.delete(u)),o(u)},s=u=>{const{onClick:C,onPointerMove:P,onPointerEnter:g,onPointerLeave:b}=u;C&&t.click.set(u,C),P&&t.pointerMove.set(u,P),g&&t.pointerEnter.set(u,g),b&&t.pointerLeave.set(u,b)};e.userData.tres__registerAtPointerEventHandler=s,e.userData.tres__deregisterAtPointerEventHandler=m,e.userData.tres__registerBlockingObjectAtPointerEventHandler=a,e.userData.tres__deregisterBlockingObjectAtPointerEventHandler=o;const f=c.computed(()=>ge([...Array.from(r.value),...Object.values(t).map(u=>Array.from(u.keys())).flat()],({uuid:u})=>u)),{onClick:i,onPointerMove:d}=ee(f,n);i(({intersects:u,event:C})=>{var P;u.length&&((P=t.click.get(u[0].object))==null||P(u[0],C))});let l;return d(({intersects:u,event:C})=>{var k,A,O,D;const P=(k=u==null?void 0:u[0])==null?void 0:k.object,{pointerLeave:g,pointerEnter:b,pointerMove:M}=t;l&&l!==P&&((A=g.get(l))==null||A(l,C)),P&&(l!==P&&((O=b.get(P))==null||O(u[0],C)),(D=M.get(P))==null||D(u[0],C)),l=P||null}),{registerObject:s,deregisterObject:m}},E=c.ref({}),V=e=>Object.assign(E.value,e);function re({scene:e,canvas:n,windowSize:t,disableRender:r,rendererOptions:a}){const o=c.computed(()=>y.toValue(t)?y.useWindowSize():y.useElementSize(y.toValue(n).parentElement)),m=c.computed(()=>o.value.width.value),s=c.computed(()=>o.value.height.value),f=c.computed(()=>m.value/s.value),i={height:s,width:m,aspectRatio:f},d=c.shallowRef(e),{camera:l,cameras:u,registerCamera:C,deregisterCamera:P,setCameraActive:g}=I({sizes:i,scene:e}),{renderer:b}=X({scene:e,canvas:n,options:a,contextParts:{sizes:i,camera:l},disableRender:r}),M={sizes:i,scene:d,camera:l,cameras:c.readonly(u),renderer:b,raycaster:c.shallowRef(new _.Raycaster),controls:c.ref(null),extend:V,registerCamera:C,setCameraActive:g,deregisterCamera:P};return c.provide("useTres",M),M}function ne(){const e=c.inject("useTres");if(!e)throw new Error("useTresContext must be used together with useTresContextProvider");return e}const Me=ne;function Se(e){}let R=null,p=null;const{logError:ae}=L(),be={createElement(e,n,t,r){var m,s;if(r||(r={}),r.args||(r.args=[]),e==="template"||de(e))return null;let a=e.replace("Tres",""),o;if(e==="primitive"){(r==null?void 0:r.object)===void 0&&ae("Tres primitives need a prop 'object'");const f=r.object;a=f.type,o=Object.assign(f,{type:a,attach:r.attach,primitive:!0})}else{const f=E.value[a];f||ae(`${a} is not defined on the THREE namespace. Use extend to add it to the catalog.`),o=new f(...r.args)}return o.isCamera&&(r!=null&&r.position||o.position.set(3,3,3),r!=null&&r.lookAt||o.lookAt(0,0,0)),(r==null?void 0:r.attach)===void 0&&(o.isMaterial?o.attach="material":o.isBufferGeometry&&(o.attach="geometry")),o.isObject3D&&((m=r==null?void 0:r.material)!=null&&m.isMaterial&&(o.userData.tres__materialViaProp=!0),(s=r==null?void 0:r.geometry)!=null&&s.isBufferGeometry&&(o.userData.tres__geometryViaProp=!0)),o.userData={...o.userData,tres__name:a},o},insert(e,n){var t,r,a,o,m,s,f,i,d;if(n&&n.isScene&&(p=n),(((t=e==null?void 0:e.__vnode)==null?void 0:t.type)==="TresGroup"||((r=e==null?void 0:e.__vnode)==null?void 0:r.type)==="TresObject3D")&&n===null&&!((o=(a=e==null?void 0:e.__vnode)==null?void 0:a.ctx)!=null&&o.asyncResolved)){R=e;return}else(m=e==null?void 0:e.__vnode)!=null&&m.type.includes("Controls")&&n===null&&(R=p);if(n||(n=R),e!=null&&e.isObject3D){if(e!=null&&e.isCamera){if(!(p!=null&&p.userData.tres__registerCamera))throw"could not find tres__registerCamera on scene's userData";(f=p==null?void 0:(s=p.userData).tres__registerCamera)==null||f.call(s,e)}if(e!=null&&e.onClick||e!=null&&e.onPointerMove||e!=null&&e.onPointerEnter||e!=null&&e.onPointerLeave){if(!(p!=null&&p.userData.tres__registerAtPointerEventHandler))throw"could not find tres__registerAtPointerEventHandler on scene's userData";(d=p==null?void 0:(i=p.userData).tres__registerAtPointerEventHandler)==null||d.call(i,e)}}e!=null&&e.isObject3D&&(n!=null&&n.isObject3D)?(n.add(e),e.dispatchEvent({type:"added"})):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,t;if(e){if(e.isObject3D){const r=e,a=i=>{var l,u;const d=i;i.userData.tres__materialViaProp||(l=d.material)==null||l.dispose(),i.userData.tres__geometryViaProp||(u=d.geometry)==null||u.dispose()},o=p==null?void 0:p.userData.tres__deregisterAtPointerEventHandler,m=p==null?void 0:p.userData.tres__deregisterBlockingObjectAtPointerEventHandler,s=i=>{var d,l;if(!m)throw"could not find tres__deregisterBlockingObjectAtPointerEventHandler on scene's userData";if((l=p==null?void 0:(d=p.userData).tres__deregisterBlockingObjectAtPointerEventHandler)==null||l.call(d,i),!o)throw"could not find tres__deregisterAtPointerEventHandler on scene's userData";(i!=null&&i.onClick||i!=null&&i.onPointerMove||i!=null&&i.onPointerEnter||i!=null&&i.onPointerLeave)&&(o==null||o(i))},f=i=>{const d=p==null?void 0:p.userData.tres__deregisterCamera;if(!d)throw"could not find tres__deregisterCamera on scene's userData";i.isCamera&&(d==null||d(i))};r.traverse(i=>{a(i),f(i),s==null||s(i)}),a(r),f(r),s==null||s(r)}(n=e.removeFromParent)==null||n.call(e),(t=e.dispose)==null||t.call(e)}},patchProp(e,n,t,r){var a,o,m,s;if(e){let f=e,i=n;if(e.isObject3D&&i==="blocks-pointer-events"){r||r===""?(o=p==null?void 0:(a=p.userData).tres__registerBlockingObjectAtPointerEventHandler)==null||o.call(a,e):(s=p==null?void 0:(m=p.userData).tres__deregisterBlockingObjectAtPointerEventHandler)==null||s.call(m,e);return}let d=j(i),l=f==null?void 0:f[d];if(i==="args"){const C=e,P=t??[],g=r??[],b=e.userData.tres__name||e.type;b&&P.length&&!ye(P,g)&&(f=Object.assign(C,new E.value[b](...r)));return}if(f.type==="BufferGeometry"){if(i==="args")return;f.setAttribute(j(i),new _.BufferAttribute(...r));return}if(i.includes("-")&&l===void 0){const C=i.split("-");l=C.reduce((P,g)=>P[j(g)],f),i=C.pop(),d=i.toLowerCase(),l!=null&&l.set||(f=C.reduce((P,g)=>P[j(g)],f))}let u=r;if(u===""&&(u=!0),Y(l)){Array.isArray(u)?e[d](...u):e[d](u);return}!(l!=null&&l.set)&&!Y(l)?f[d]=u:l.constructor===u.constructor&&(l!=null&&l.copy)?l==null||l.copy(u):Array.isArray(u)?l.set(...u):!l.isColor&&l.setScalar?l.setScalar(u):l.set(u)}},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},{render:ke}=c.createRenderer(be);V(ie);const he=["data-scene"],oe=c.defineComponent({__name:"TresCanvas",props:{shadows:{type:Boolean,default:void 0},clearColor:{},toneMapping:{},shadowMapType:{},useLegacyLights:{type:Boolean,default:void 0},outputColorSpace:{},toneMappingExposure:{},camera:{},preset:{},windowSize:{type:Boolean,default:void 0},disableRender:{type:Boolean,default:void 0},context:{},precision:{},alpha:{type:Boolean,default:void 0},premultipliedAlpha:{type:Boolean},antialias:{type:Boolean,default:void 0},stencil:{type:Boolean,default:void 0},preserveDrawingBuffer:{type:Boolean,default:void 0},powerPreference:{},depth:{type:Boolean,default:void 0},logarithmicDepthBuffer:{type:Boolean,default:void 0},failIfMajorPerformanceCaveat:{type:Boolean,default:void 0}},setup(e){const n=e,{logWarning:t}=L(),r=c.ref(),a=c.shallowRef(new _.Scene);G();const o=c.useSlots(),m=c.getCurrentInstance(),s=d=>c.defineComponent({setup(){const l=c.getCurrentInstance();return Object.assign(l.appContext,m.appContext),Object.assign(l.provides,l.appContext.provides),c.provide("useTres",d),c.provide("extend",V),()=>c.h(c.Fragment,null,o!=null&&o.default?o.default():[])}}),f=d=>{const l=s(d);ke(c.h(l),a.value)},i=c.computed(()=>n.disableRender);return c.onMounted(()=>{const d=r,l=re({scene:a.value,canvas:d,windowSize:n.windowSize,disableRender:i,rendererOptions:n});te({scene:a.value,contextParts:l});const{registerCamera:u,camera:C,cameras:P,deregisterCamera:g}=l;f(l);const b=()=>{const M=new _.PerspectiveCamera(45,window.innerWidth/window.innerHeight,.1,1e3);M.position.set(3,3,3),M.lookAt(0,0,0),u(M);const k=c.watchEffect(()=>{P.value.length>=2&&(M.removeFromParent(),g(M),k==null||k())})};c.watch(()=>n.camera,(M,k)=>{M?u(M):k&&(k.removeFromParent(),g(k))},{immediate:!0}),C.value||(t("No camera found. Creating a default perspective camera. To have full control over a camera, please add one to the scene."),b())}),(d,l)=>(c.openBlock(),c.createElementBlock("canvas",{ref_key:"canvas",ref:r,"data-scene":a.value.uuid,style:c.normalizeStyle({display:"block",width:"100%",height:"100%",position:d.windowSize?"fixed":"relative",top:0,left:0,pointerEvents:"auto",touchAction:"none"})},null,12,he))}}),Oe=["TresCanvas","TresLeches","TresScene"],Ae={template:{compilerOptions:{isCustomElement:e=>e.startsWith("Tres")&&!Oe.includes(e)||e==="primitive"}}},De={install(e){e.component("TresCanvas",oe)}};v.TresCanvas=oe,v.catalogue=E,v.default=De,v.extend=V,v.isProd=fe,v.normalizeColor=q,v.normalizeVectorFlexibleParam=me,v.templateCompilerOptions=Ae,v.trasverseObjects=Z,v.useCamera=I,v.useLoader=Ce,v.useLogger=L,v.usePointerEventHandler=te,v.useRaycaster=ee,v.useRenderLoop=G,v.useRenderer=X,v.useSeek=_e,v.useTexture=Pe,v.useTres=Me,v.useTresContext=ne,v.useTresContextProvider=re,Object.defineProperties(v,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}})});
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@tresjs/core",
3
3
  "type": "module",
4
- "version": "3.2.0",
4
+ "version": "3.2.1-next.1",
5
5
  "packageManager": "pnpm@8.3.1",
6
6
  "description": "Declarative ThreeJS using Vue Components",
7
7
  "author": "Alvaro Saburido <hola@alvarosaburido.dev> (https://github.com/alvarosabu/)",