@tresjs/core 3.5.1 → 3.5.2

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.
@@ -30,6 +30,7 @@ declare const _default: __VLS_WithTemplateSlots<import("vue").DefineComponent<__
30
30
  failIfMajorPerformanceCaveat: undefined;
31
31
  }>, {
32
32
  context: Ref<TresContext | null> | import("vue").ShallowRef<TresContext | null>;
33
+ dispose: () => void;
33
34
  }, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<import("vue").ExtractPropTypes<__VLS_WithDefaults<__VLS_TypePropsToRuntimeProps<TresCanvasProps>, {
34
35
  alpha: undefined;
35
36
  depth: undefined;
@@ -1052,9 +1052,7 @@ export declare const useCamera: ({ sizes, scene }: Pick<TresContext, "sizes"> &
1052
1052
  clone: () => import("three").AnimationClip;
1053
1053
  toJSON: (clip: import("three").AnimationClip) => any;
1054
1054
  }[];
1055
- userData: {
1056
- [key: string]: any;
1057
- };
1055
+ userData: Record<string, any>;
1058
1056
  customDepthMaterial?: {
1059
1057
  alphaHash: boolean;
1060
1058
  alphaTest: number;
@@ -1259,7 +1257,7 @@ export declare const useCamera: ({ sizes, scene }: Pick<TresContext, "sizes"> &
1259
1257
  uuid: string;
1260
1258
  vertexColors: boolean;
1261
1259
  visible: boolean;
1262
- userData: any;
1260
+ userData: Record<string, any>;
1263
1261
  version: number;
1264
1262
  clone: () => import("three").Material;
1265
1263
  copy: (material: import("three").Material) => import("three").Material;
@@ -1494,7 +1492,7 @@ export declare const useCamera: ({ sizes, scene }: Pick<TresContext, "sizes"> &
1494
1492
  uuid: string;
1495
1493
  vertexColors: boolean;
1496
1494
  visible: boolean;
1497
- userData: any;
1495
+ userData: Record<string, any>;
1498
1496
  version: number;
1499
1497
  clone: () => import("three").Material;
1500
1498
  copy: (material: import("three").Material) => import("three").Material;
@@ -1525,6 +1523,8 @@ export declare const useCamera: ({ sizes, scene }: Pick<TresContext, "sizes"> &
1525
1523
  dispose: {};
1526
1524
  }[T_6]) => void;
1527
1525
  } | undefined;
1526
+ onBeforeShadow: (renderer: import("three").WebGLRenderer, scene: import("three").Scene, shadowCamera: Camera, geometry: import("three").BufferGeometry<import("three").NormalBufferAttributes>, depthMaterial: import("three").Material, group: import("three").Group<import("three").Object3DEventMap>) => void;
1527
+ onAfterShadow: (renderer: import("three").WebGLRenderer, scene: import("three").Scene, shadowCamera: Camera, geometry: import("three").BufferGeometry<import("three").NormalBufferAttributes>, depthMaterial: import("three").Material, group: import("three").Group<import("three").Object3DEventMap>) => void;
1528
1528
  onBeforeRender: (renderer: import("three").WebGLRenderer, scene: import("three").Scene, camera: Camera, geometry: import("three").BufferGeometry<import("three").NormalBufferAttributes>, material: import("three").Material, group: import("three").Group<import("three").Object3DEventMap>) => void;
1529
1529
  onAfterRender: (renderer: import("three").WebGLRenderer, scene: import("three").Scene, camera: Camera, geometry: import("three").BufferGeometry<import("three").NormalBufferAttributes>, material: import("three").Material, group: import("three").Group<import("three").Object3DEventMap>) => void;
1530
1530
  applyMatrix4: (matrix: import("three").Matrix4) => void;
@@ -1556,7 +1556,7 @@ export declare const useCamera: ({ sizes, scene }: Pick<TresContext, "sizes"> &
1556
1556
  getObjectById: (id: number) => import("three").Object3D<import("three").Object3DEventMap> | undefined;
1557
1557
  getObjectByName: (name: string) => import("three").Object3D<import("three").Object3DEventMap> | undefined;
1558
1558
  getObjectByProperty: (name: string, value: any) => import("three").Object3D<import("three").Object3DEventMap> | undefined;
1559
- getObjectsByProperty: (name: string, value: any) => import("three").Object3D<import("three").Object3DEventMap>[];
1559
+ getObjectsByProperty: (name: string, value: any, optionalTarget?: import("three").Object3D<import("three").Object3DEventMap>[] | undefined) => import("three").Object3D<import("three").Object3DEventMap>[];
1560
1560
  getWorldPosition: (target: import("three").Vector3) => import("three").Vector3;
1561
1561
  getWorldQuaternion: (target: import("three").Quaternion) => import("three").Quaternion;
1562
1562
  getWorldScale: (target: import("three").Vector3) => import("three").Vector3;
@@ -2440,9 +2440,7 @@ export declare const useCamera: ({ sizes, scene }: Pick<TresContext, "sizes"> &
2440
2440
  clone: () => import("three").AnimationClip;
2441
2441
  toJSON: (clip: import("three").AnimationClip) => any;
2442
2442
  }[];
2443
- userData: {
2444
- [key: string]: any;
2445
- };
2443
+ userData: Record<string, any>;
2446
2444
  customDepthMaterial?: {
2447
2445
  alphaHash: boolean;
2448
2446
  alphaTest: number;
@@ -2647,7 +2645,7 @@ export declare const useCamera: ({ sizes, scene }: Pick<TresContext, "sizes"> &
2647
2645
  uuid: string;
2648
2646
  vertexColors: boolean;
2649
2647
  visible: boolean;
2650
- userData: any;
2648
+ userData: Record<string, any>;
2651
2649
  version: number;
2652
2650
  clone: () => import("three").Material;
2653
2651
  copy: (material: import("three").Material) => import("three").Material;
@@ -2882,7 +2880,7 @@ export declare const useCamera: ({ sizes, scene }: Pick<TresContext, "sizes"> &
2882
2880
  uuid: string;
2883
2881
  vertexColors: boolean;
2884
2882
  visible: boolean;
2885
- userData: any;
2883
+ userData: Record<string, any>;
2886
2884
  version: number;
2887
2885
  clone: () => import("three").Material;
2888
2886
  copy: (material: import("three").Material) => import("three").Material;
@@ -2913,6 +2911,8 @@ export declare const useCamera: ({ sizes, scene }: Pick<TresContext, "sizes"> &
2913
2911
  dispose: {};
2914
2912
  }[T_6]) => void;
2915
2913
  } | undefined;
2914
+ onBeforeShadow: (renderer: import("three").WebGLRenderer, scene: import("three").Scene, shadowCamera: Camera, geometry: import("three").BufferGeometry<import("three").NormalBufferAttributes>, depthMaterial: import("three").Material, group: import("three").Group<import("three").Object3DEventMap>) => void;
2915
+ onAfterShadow: (renderer: import("three").WebGLRenderer, scene: import("three").Scene, shadowCamera: Camera, geometry: import("three").BufferGeometry<import("three").NormalBufferAttributes>, depthMaterial: import("three").Material, group: import("three").Group<import("three").Object3DEventMap>) => void;
2916
2916
  onBeforeRender: (renderer: import("three").WebGLRenderer, scene: import("three").Scene, camera: Camera, geometry: import("three").BufferGeometry<import("three").NormalBufferAttributes>, material: import("three").Material, group: import("three").Group<import("three").Object3DEventMap>) => void;
2917
2917
  onAfterRender: (renderer: import("three").WebGLRenderer, scene: import("three").Scene, camera: Camera, geometry: import("three").BufferGeometry<import("three").NormalBufferAttributes>, material: import("three").Material, group: import("three").Group<import("three").Object3DEventMap>) => void;
2918
2918
  applyMatrix4: (matrix: import("three").Matrix4) => void;
@@ -2944,7 +2944,7 @@ export declare const useCamera: ({ sizes, scene }: Pick<TresContext, "sizes"> &
2944
2944
  getObjectById: (id: number) => import("three").Object3D<import("three").Object3DEventMap> | undefined;
2945
2945
  getObjectByName: (name: string) => import("three").Object3D<import("three").Object3DEventMap> | undefined;
2946
2946
  getObjectByProperty: (name: string, value: any) => import("three").Object3D<import("three").Object3DEventMap> | undefined;
2947
- getObjectsByProperty: (name: string, value: any) => import("three").Object3D<import("three").Object3DEventMap>[];
2947
+ getObjectsByProperty: (name: string, value: any, optionalTarget?: import("three").Object3D<import("three").Object3DEventMap>[] | undefined) => import("three").Object3D<import("three").Object3DEventMap>[];
2948
2948
  getWorldPosition: (target: import("three").Vector3) => import("three").Vector3;
2949
2949
  getWorldQuaternion: (target: import("three").Quaternion) => import("three").Quaternion;
2950
2950
  getWorldScale: (target: import("three").Vector3) => import("three").Vector3;
@@ -3809,9 +3809,7 @@ export declare const useCamera: ({ sizes, scene }: Pick<TresContext, "sizes"> &
3809
3809
  clone: () => import("three").AnimationClip;
3810
3810
  toJSON: (clip: import("three").AnimationClip) => any;
3811
3811
  }[];
3812
- userData: {
3813
- [key: string]: any;
3814
- };
3812
+ userData: Record<string, any>;
3815
3813
  customDepthMaterial?: {
3816
3814
  alphaHash: boolean;
3817
3815
  alphaTest: number;
@@ -4016,7 +4014,7 @@ export declare const useCamera: ({ sizes, scene }: Pick<TresContext, "sizes"> &
4016
4014
  uuid: string;
4017
4015
  vertexColors: boolean;
4018
4016
  visible: boolean;
4019
- userData: any;
4017
+ userData: Record<string, any>;
4020
4018
  version: number;
4021
4019
  clone: () => import("three").Material;
4022
4020
  copy: (material: import("three").Material) => import("three").Material;
@@ -4251,7 +4249,7 @@ export declare const useCamera: ({ sizes, scene }: Pick<TresContext, "sizes"> &
4251
4249
  uuid: string;
4252
4250
  vertexColors: boolean;
4253
4251
  visible: boolean;
4254
- userData: any;
4252
+ userData: Record<string, any>;
4255
4253
  version: number;
4256
4254
  clone: () => import("three").Material;
4257
4255
  copy: (material: import("three").Material) => import("three").Material;
@@ -4282,6 +4280,8 @@ export declare const useCamera: ({ sizes, scene }: Pick<TresContext, "sizes"> &
4282
4280
  dispose: {};
4283
4281
  }[T_6]) => void;
4284
4282
  } | undefined;
4283
+ onBeforeShadow: (renderer: import("three").WebGLRenderer, scene: import("three").Scene, shadowCamera: Camera, geometry: import("three").BufferGeometry<import("three").NormalBufferAttributes>, depthMaterial: import("three").Material, group: import("three").Group<import("three").Object3DEventMap>) => void;
4284
+ onAfterShadow: (renderer: import("three").WebGLRenderer, scene: import("three").Scene, shadowCamera: Camera, geometry: import("three").BufferGeometry<import("three").NormalBufferAttributes>, depthMaterial: import("three").Material, group: import("three").Group<import("three").Object3DEventMap>) => void;
4285
4285
  onBeforeRender: (renderer: import("three").WebGLRenderer, scene: import("three").Scene, camera: Camera, geometry: import("three").BufferGeometry<import("three").NormalBufferAttributes>, material: import("three").Material, group: import("three").Group<import("three").Object3DEventMap>) => void;
4286
4286
  onAfterRender: (renderer: import("three").WebGLRenderer, scene: import("three").Scene, camera: Camera, geometry: import("three").BufferGeometry<import("three").NormalBufferAttributes>, material: import("three").Material, group: import("three").Group<import("three").Object3DEventMap>) => void;
4287
4287
  applyMatrix4: (matrix: import("three").Matrix4) => void;
@@ -4313,7 +4313,7 @@ export declare const useCamera: ({ sizes, scene }: Pick<TresContext, "sizes"> &
4313
4313
  getObjectById: (id: number) => import("three").Object3D<import("three").Object3DEventMap> | undefined;
4314
4314
  getObjectByName: (name: string) => import("three").Object3D<import("three").Object3DEventMap> | undefined;
4315
4315
  getObjectByProperty: (name: string, value: any) => import("three").Object3D<import("three").Object3DEventMap> | undefined;
4316
- getObjectsByProperty: (name: string, value: any) => import("three").Object3D<import("three").Object3DEventMap>[];
4316
+ getObjectsByProperty: (name: string, value: any, optionalTarget?: import("three").Object3D<import("three").Object3DEventMap>[] | undefined) => import("three").Object3D<import("three").Object3DEventMap>[];
4317
4317
  getWorldPosition: (target: import("three").Vector3) => import("three").Vector3;
4318
4318
  getWorldQuaternion: (target: import("three").Quaternion) => import("three").Quaternion;
4319
4319
  getWorldScale: (target: import("three").Vector3) => import("three").Vector3;
package/dist/tres.js CHANGED
@@ -1,29 +1,29 @@
1
1
  /**
2
2
  * name: @tresjs/core
3
- * version: v3.5.1
3
+ * version: v3.5.2
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 L, computed as A, watchEffect as D, onUnmounted as N, shallowRef as x, watch as ee, reactive as se, readonly as ie, provide as z, inject as le, createRenderer as ue, defineComponent as q, useSlots as ce, getCurrentInstance as U, onMounted as fe, openBlock as pe, createElementBlock as me, normalizeClass as de, normalizeStyle as ve, h as J, Fragment as ge } from "vue";
8
+ import { ref as O, computed as D, watchEffect as b, onUnmounted as N, shallowRef as B, watch as ee, reactive as se, readonly as ie, provide as z, inject as le, createRenderer as ue, defineComponent as q, useSlots as ce, getCurrentInstance as U, onMounted as fe, openBlock as pe, createElementBlock as me, normalizeClass as de, normalizeStyle as ve, h as J, Fragment as ge } from "vue";
9
9
  import * as ye from "three";
10
- import { PerspectiveCamera as I, OrthographicCamera as we, Camera as Ce, Clock as Pe, Vector3 as he, Color as H, REVISION as Ee, SRGBColorSpace as _e, ACESFilmicToneMapping as Me, PCFSoftShadowMap as Ae, WebGLRenderer as $, LoadingManager as ke, TextureLoader as De, Vector2 as be, Raycaster as xe, BufferAttribute as Be, Scene as Le } from "three";
11
- import { createEventHook as B, useRafFn as Oe, toValue as E, unrefElement as Te, useDevicePixelRatio as Se, usePointer as Re, useElementBounding as He, useWindowSize as je, useElementSize as Fe } from "@vueuse/core";
10
+ import { PerspectiveCamera as I, OrthographicCamera as we, Camera as Ce, Clock as Pe, Vector3 as he, Color as H, REVISION as Ee, SRGBColorSpace as _e, ACESFilmicToneMapping as Me, PCFSoftShadowMap as Ae, WebGLRenderer as $, LoadingManager as ke, TextureLoader as De, Vector2 as be, Raycaster as Le, BufferAttribute as Be, Scene as xe } from "three";
11
+ import { createEventHook as x, useRafFn as Oe, toValue as h, unrefElement as Te, useDevicePixelRatio as Se, usePointer as Re, useElementBounding as He, useWindowSize as je, useElementSize as Fe } from "@vueuse/core";
12
12
  const $e = ({ sizes: e, scene: a }) => {
13
- const t = L([]), r = A(
13
+ const t = O([]), r = D(
14
14
  () => t.value[0]
15
- ), n = (s, f = !1) => {
16
- t.value.some(({ uuid: i }) => i === s.uuid) || (f ? u(s) : t.value.push(s));
15
+ ), n = (s, u = !1) => {
16
+ t.value.some(({ uuid: i }) => i === s.uuid) || (u ? c(s) : t.value.push(s));
17
17
  }, o = (s) => {
18
- t.value = t.value.filter(({ uuid: f }) => f !== s.uuid);
19
- }, u = (s) => {
20
- const f = s instanceof Ce ? s : t.value.find((m) => m.uuid === s);
21
- if (!f)
18
+ t.value = t.value.filter(({ uuid: u }) => u !== s.uuid);
19
+ }, c = (s) => {
20
+ const u = s instanceof Ce ? s : t.value.find((m) => m.uuid === s);
21
+ if (!u)
22
22
  return;
23
- const i = t.value.filter(({ uuid: m }) => m !== f.uuid);
24
- t.value = [f, ...i];
23
+ const i = t.value.filter(({ uuid: m }) => m !== u.uuid);
24
+ t.value = [u, ...i];
25
25
  };
26
- return D(() => {
26
+ return b(() => {
27
27
  e.aspectRatio.value && t.value.forEach((s) => {
28
28
  s instanceof I && (s.aspect = e.aspectRatio.value), (s instanceof I || s instanceof we) && s.updateProjectionMatrix();
29
29
  });
@@ -34,18 +34,18 @@ const $e = ({ sizes: e, scene: a }) => {
34
34
  cameras: t,
35
35
  registerCamera: n,
36
36
  deregisterCamera: o,
37
- setCameraActive: u
37
+ setCameraActive: c
38
38
  };
39
- }, te = B(), re = B(), W = B(), b = new Pe();
39
+ }, te = x(), re = x(), W = x(), L = new Pe();
40
40
  let j = 0, F = 0;
41
41
  const { pause: ze, resume: Ie, isActive: Ge } = Oe(
42
42
  () => {
43
- te.trigger({ delta: j, elapsed: F, clock: b }), re.trigger({ delta: j, elapsed: F, clock: b }), W.trigger({ delta: j, elapsed: F, clock: b });
43
+ te.trigger({ delta: j, elapsed: F, clock: L }), re.trigger({ delta: j, elapsed: F, clock: L }), W.trigger({ delta: j, elapsed: F, clock: L });
44
44
  },
45
45
  { immediate: !1 }
46
46
  );
47
47
  W.on(() => {
48
- j = b.getDelta(), F = b.getElapsedTime();
48
+ j = L.getDelta(), F = L.getElapsedTime();
49
49
  });
50
50
  const ne = () => ({
51
51
  onBeforeLoop: te.on,
@@ -55,7 +55,7 @@ const ne = () => ({
55
55
  resume: Ie,
56
56
  isActive: Ge
57
57
  }), dt = !0, K = "[TresJS ▲ ■ ●] ";
58
- function O() {
58
+ function T() {
59
59
  function e(r, n) {
60
60
  console.error(`${K} ${r}`, n || "");
61
61
  }
@@ -107,12 +107,12 @@ const Ue = (e, a) => {
107
107
  return t == null ? void 0 : t.reduce((r, n) => r && r[n], e);
108
108
  }, Je = (e, a, t) => {
109
109
  const r = Array.isArray(a) ? a : a.match(/([^[.\]])+/g);
110
- r && r.reduce((n, o, u) => (n[o] === void 0 && (n[o] = {}), u === r.length - 1 && (n[o] = t), n[o]), e);
110
+ r && r.reduce((n, o, c) => (n[o] === void 0 && (n[o] = {}), c === r.length - 1 && (n[o] = t), n[o]), e);
111
111
  };
112
112
  function oe(e, a) {
113
113
  if (X(e) && X(a)) {
114
114
  const n = e.attributes, o = a.attributes;
115
- return n.length !== o.length ? !1 : Array.from(n).every(({ name: u, value: s }) => a.getAttribute(u) === s);
115
+ return n.length !== o.length ? !1 : Array.from(n).every(({ name: c, value: s }) => a.getAttribute(c) === s);
116
116
  }
117
117
  if (e === a)
118
118
  return !0;
@@ -154,65 +154,65 @@ function Qe({
154
154
  disableRender: r,
155
155
  contextParts: { sizes: n, camera: o }
156
156
  }) {
157
- const u = A(() => ({
158
- alpha: E(t.alpha),
159
- depth: E(t.depth),
157
+ const c = D(() => ({
158
+ alpha: h(t.alpha),
159
+ depth: h(t.depth),
160
160
  canvas: Te(a),
161
- context: E(t.context),
162
- stencil: E(t.stencil),
163
- antialias: E(t.antialias) === void 0 ? !0 : E(t.antialias),
164
- precision: E(t.precision),
165
- powerPreference: E(t.powerPreference),
166
- premultipliedAlpha: E(t.premultipliedAlpha),
167
- preserveDrawingBuffer: E(t.preserveDrawingBuffer),
168
- logarithmicDepthBuffer: E(t.logarithmicDepthBuffer),
169
- failIfMajorPerformanceCaveat: E(t.failIfMajorPerformanceCaveat)
170
- })), s = x(new $(u.value));
171
- ee(u, () => {
172
- s.value.dispose(), s.value = new $(u.value);
173
- }), D(() => {
161
+ context: h(t.context),
162
+ stencil: h(t.stencil),
163
+ antialias: h(t.antialias) === void 0 ? !0 : h(t.antialias),
164
+ precision: h(t.precision),
165
+ powerPreference: h(t.powerPreference),
166
+ premultipliedAlpha: h(t.premultipliedAlpha),
167
+ preserveDrawingBuffer: h(t.preserveDrawingBuffer),
168
+ logarithmicDepthBuffer: h(t.logarithmicDepthBuffer),
169
+ failIfMajorPerformanceCaveat: h(t.failIfMajorPerformanceCaveat)
170
+ })), s = B(new $(c.value));
171
+ ee(c, () => {
172
+ s.value.dispose(), s.value = new $(c.value);
173
+ }), b(() => {
174
174
  s.value.setSize(n.width.value, n.height.value);
175
175
  });
176
- const { pixelRatio: f } = Se();
177
- D(() => {
178
- s.value.setPixelRatio(f.value);
176
+ const { pixelRatio: u } = Se();
177
+ b(() => {
178
+ s.value.setPixelRatio(u.value);
179
179
  });
180
- const { logError: i } = O(), c = (() => {
181
- const v = new $(), w = {
180
+ const { logError: i } = T(), f = (() => {
181
+ const p = new $(), g = {
182
182
  shadowMap: {
183
- enabled: v.shadowMap.enabled,
184
- type: v.shadowMap.type
183
+ enabled: p.shadowMap.enabled,
184
+ type: p.shadowMap.type
185
185
  },
186
- toneMapping: v.toneMapping,
187
- toneMappingExposure: v.toneMappingExposure,
188
- outputColorSpace: v.outputColorSpace
186
+ toneMapping: p.toneMapping,
187
+ toneMappingExposure: p.toneMappingExposure,
188
+ outputColorSpace: p.outputColorSpace
189
189
  };
190
- return v.dispose(), w;
190
+ return p.dispose(), g;
191
191
  })();
192
- D(() => {
193
- const v = E(t.preset);
194
- v && (v in R || i(`Renderer Preset must be one of these: ${Object.keys(R).join(", ")}`), ae(s.value, R[v]));
195
- const w = (P, C) => {
196
- const k = E(P), T = () => {
197
- if (v)
198
- return Y(R[v], C);
192
+ b(() => {
193
+ const p = h(t.preset);
194
+ p && (p in R || i(`Renderer Preset must be one of these: ${Object.keys(R).join(", ")}`), ae(s.value, R[p]));
195
+ const g = (M, _) => {
196
+ const P = h(M), A = () => {
197
+ if (p)
198
+ return Y(R[p], _);
199
199
  };
200
- if (k !== void 0)
201
- return k;
202
- const y = T();
203
- return y !== void 0 ? y : Y(c, C);
204
- }, h = (P, C) => Je(s.value, C, w(P, C));
205
- h(t.shadows, "shadowMap.enabled"), h(t.toneMapping, "toneMapping"), h(t.shadowMapType, "shadowMap.type"), Ye < 150 && h(!t.useLegacyLights, "physicallyCorrectLights"), h(t.outputColorSpace, "outputColorSpace"), h(t.toneMappingExposure, "toneMappingExposure");
206
- const M = w(t.clearColor, "clearColor");
207
- M && s.value.setClearColor(
208
- M ? Ne(M) : new H(0)
200
+ if (P !== void 0)
201
+ return P;
202
+ const y = A();
203
+ return y !== void 0 ? y : Y(f, _);
204
+ }, C = (M, _) => Je(s.value, _, g(M, _));
205
+ C(t.shadows, "shadowMap.enabled"), C(t.toneMapping, "toneMapping"), C(t.shadowMapType, "shadowMap.type"), Ye < 150 && C(!t.useLegacyLights, "physicallyCorrectLights"), C(t.outputColorSpace, "outputColorSpace"), C(t.toneMappingExposure, "toneMappingExposure");
206
+ const k = g(t.clearColor, "clearColor");
207
+ k && s.value.setClearColor(
208
+ k ? Ne(k) : new H(0)
209
209
  // default clear color is not easily/efficiently retrievable from three
210
210
  );
211
211
  });
212
- const { pause: l, resume: p, onLoop: d } = ne();
213
- return d(() => {
214
- o.value && !E(r) && s.value.render(e, o.value);
215
- }), p(), N(() => {
212
+ const { pause: l, resume: d, onLoop: w } = ne();
213
+ return w(() => {
214
+ o.value && !h(r) && s.value.render(e, o.value);
215
+ }), d(), N(() => {
216
216
  l(), s.value.dispose(), s.value.forceContextLoss();
217
217
  }), {
218
218
  renderer: s
@@ -226,30 +226,30 @@ function et(e) {
226
226
  }), a;
227
227
  }
228
228
  async function gt(e, a, t, r, n) {
229
- const { logError: o } = O(), u = new e();
230
- n && n(u), t && t(u);
231
- const f = (Array.isArray(a) ? a : [a]).map(
232
- (i) => new Promise((m, c) => {
233
- u.load(
229
+ const { logError: o } = T(), c = new e();
230
+ n && n(c), t && t(c);
231
+ const u = (Array.isArray(a) ? a : [a]).map(
232
+ (i) => new Promise((m, f) => {
233
+ c.load(
234
234
  i,
235
235
  (l) => {
236
236
  l.scene && Object.assign(l, et(l.scene)), m(l);
237
237
  },
238
238
  r,
239
- (l) => c(o("[useLoader] - Failed to load resource", l))
239
+ (l) => f(o("[useLoader] - Failed to load resource", l))
240
240
  );
241
241
  })
242
242
  );
243
- return Ze(a) ? await Promise.all(f) : await f[0];
243
+ return Ze(a) ? await Promise.all(u) : await u[0];
244
244
  }
245
245
  async function yt(e) {
246
- const a = new ke(), t = new De(a), r = (n) => new Promise((o, u) => {
246
+ const a = new ke(), t = new De(a), r = (n) => new Promise((o, c) => {
247
247
  t.load(
248
248
  n,
249
249
  (s) => o(s),
250
250
  () => null,
251
251
  () => {
252
- u(new Error("[useTextures] - Failed to load texture"));
252
+ c(new Error("[useTextures] - Failed to load texture"));
253
253
  }
254
254
  );
255
255
  });
@@ -260,81 +260,81 @@ async function yt(e) {
260
260
  const {
261
261
  map: n,
262
262
  displacementMap: o,
263
- normalMap: u,
263
+ normalMap: c,
264
264
  roughnessMap: s,
265
- metalnessMap: f,
265
+ metalnessMap: u,
266
266
  aoMap: i,
267
267
  alphaMap: m,
268
- matcap: c
268
+ matcap: f
269
269
  } = e;
270
270
  return {
271
271
  map: n ? await r(n) : null,
272
272
  displacementMap: o ? await r(o) : null,
273
- normalMap: u ? await r(u) : null,
273
+ normalMap: c ? await r(c) : null,
274
274
  roughnessMap: s ? await r(s) : null,
275
- metalnessMap: f ? await r(f) : null,
275
+ metalnessMap: u ? await r(u) : null,
276
276
  aoMap: i ? await r(i) : null,
277
277
  alphaMap: m ? await r(m) : null,
278
- matcap: c ? await r(c) : null
278
+ matcap: f ? await r(f) : null
279
279
  };
280
280
  }
281
281
  }
282
282
  const tt = (e, { renderer: a, camera: t, raycaster: r }) => {
283
- const n = A(() => a.value.domElement), { x: o, y: u } = Re({ target: n }), { width: s, height: f, top: i, left: m } = He(n), c = ({ x: y, y: _ }) => {
283
+ const n = D(() => a.value.domElement), { x: o, y: c } = Re({ target: n }), { width: s, height: u, top: i, left: m } = He(n), f = ({ x: y, y: E }) => {
284
284
  if (n.value)
285
285
  return {
286
286
  x: (y - m.value) / s.value * 2 - 1,
287
- y: -((_ - i.value) / f.value) * 2 + 1
287
+ y: -((E - i.value) / u.value) * 2 + 1
288
288
  };
289
- }, l = ({ x: y, y: _ }) => {
289
+ }, l = ({ x: y, y: E }) => {
290
290
  if (t.value)
291
- return r.value.setFromCamera(new be(y, _), t.value), r.value.intersectObjects(e.value, !1);
292
- }, p = (y) => {
293
- const _ = c({
291
+ return r.value.setFromCamera(new be(y, E), t.value), r.value.intersectObjects(e.value, !1);
292
+ }, d = (y) => {
293
+ const E = f({
294
294
  x: (y == null ? void 0 : y.clientX) ?? o.value,
295
- y: (y == null ? void 0 : y.clientY) ?? u.value
295
+ y: (y == null ? void 0 : y.clientY) ?? c.value
296
296
  });
297
- return _ ? l(_) || [] : [];
298
- }, d = A(() => p()), v = B(), w = B(), h = (y, _) => {
299
- y.trigger({ event: _, intersects: p(_) });
300
- }, M = (y) => {
301
- h(w, y);
302
- };
303
- let P;
304
- const C = (y) => {
305
- var _;
306
- P = (_ = p(y)[0]) == null ? void 0 : _.object;
297
+ return E ? l(E) || [] : [];
298
+ }, w = D(() => d()), p = x(), g = x(), C = (y, E) => {
299
+ y.trigger({ event: E, intersects: d(E) });
307
300
  }, k = (y) => {
308
- var _;
309
- y instanceof PointerEvent && P === ((_ = p(y)[0]) == null ? void 0 : _.object) && h(v, y);
310
- }, T = (y) => w.trigger({ event: y, intersects: [] });
311
- return n.value.addEventListener("pointerup", k), n.value.addEventListener("pointerdown", C), n.value.addEventListener("pointermove", M), n.value.addEventListener("pointerleave", T), N(() => {
312
- n != null && n.value && (n.value.removeEventListener("pointerup", k), n.value.removeEventListener("pointerdown", C), n.value.removeEventListener("pointermove", M), n.value.removeEventListener("pointerleave", T));
301
+ C(g, y);
302
+ };
303
+ let M;
304
+ const _ = (y) => {
305
+ var E;
306
+ M = (E = d(y)[0]) == null ? void 0 : E.object;
307
+ }, P = (y) => {
308
+ var E;
309
+ y instanceof PointerEvent && M === ((E = d(y)[0]) == null ? void 0 : E.object) && C(p, y);
310
+ }, A = (y) => g.trigger({ event: y, intersects: [] });
311
+ return n.value.addEventListener("pointerup", P), n.value.addEventListener("pointerdown", _), n.value.addEventListener("pointermove", k), n.value.addEventListener("pointerleave", A), N(() => {
312
+ n != null && n.value && (n.value.removeEventListener("pointerup", P), n.value.removeEventListener("pointerdown", _), n.value.removeEventListener("pointermove", k), n.value.removeEventListener("pointerleave", A));
313
313
  }), {
314
- intersects: d,
315
- onClick: (y) => v.on(y).off,
316
- onPointerMove: (y) => w.on(y).off
314
+ intersects: w,
315
+ onClick: (y) => p.on(y).off,
316
+ onPointerMove: (y) => g.on(y).off
317
317
  };
318
318
  };
319
319
  function wt() {
320
- const { logWarning: e } = O();
321
- function a(o, u, s) {
322
- let f = null;
320
+ const { logWarning: e } = T();
321
+ function a(o, c, s) {
322
+ let u = null;
323
323
  return o.traverse((i) => {
324
- i[u] === s && (f = i);
325
- }), f || e(`Child with ${u} '${s}' not found.`), f;
324
+ i[c] === s && (u = i);
325
+ }), u || e(`Child with ${c} '${s}' not found.`), u;
326
326
  }
327
- function t(o, u, s) {
328
- const f = [];
327
+ function t(o, c, s) {
328
+ const u = [];
329
329
  return o.traverse((i) => {
330
- i[u].includes(s) && f.push(i);
331
- }), f.length || e(`Children with ${u} '${s}' not found.`), f;
330
+ i[c].includes(s) && u.push(i);
331
+ }), u.length || e(`Children with ${c} '${s}' not found.`), u;
332
332
  }
333
- function r(o, u) {
334
- return a(o, "name", u);
333
+ function r(o, c) {
334
+ return a(o, "name", c);
335
335
  }
336
- function n(o, u) {
337
- return t(o, "name", u);
336
+ function n(o, c) {
337
+ return t(o, "name", c);
338
338
  }
339
339
  return {
340
340
  seek: a,
@@ -349,18 +349,18 @@ const rt = ({ scene: e, contextParts: a }) => {
349
349
  pointerMove: /* @__PURE__ */ new Map(),
350
350
  pointerEnter: /* @__PURE__ */ new Map(),
351
351
  pointerLeave: /* @__PURE__ */ new Map()
352
- }), r = L(/* @__PURE__ */ new Set()), n = (l) => {
352
+ }), r = O(/* @__PURE__ */ new Set()), n = (l) => {
353
353
  r.value.add(l);
354
354
  }, o = (l) => {
355
355
  r.value.delete(l);
356
- }, u = (l) => {
357
- Object.values(t).forEach((p) => p.delete(l)), o(l);
356
+ }, c = (l) => {
357
+ Object.values(t).forEach((d) => d.delete(l)), o(l);
358
358
  }, s = (l) => {
359
- const { onClick: p, onPointerMove: d, onPointerEnter: v, onPointerLeave: w } = l;
360
- p && t.click.set(l, p), d && t.pointerMove.set(l, d), v && t.pointerEnter.set(l, v), w && t.pointerLeave.set(l, w);
359
+ const { onClick: d, onPointerMove: w, onPointerEnter: p, onPointerLeave: g } = l;
360
+ d && t.click.set(l, d), w && t.pointerMove.set(l, w), p && t.pointerEnter.set(l, p), g && t.pointerLeave.set(l, g);
361
361
  };
362
- e.userData.tres__registerAtPointerEventHandler = s, e.userData.tres__deregisterAtPointerEventHandler = u, e.userData.tres__registerBlockingObjectAtPointerEventHandler = n, e.userData.tres__deregisterBlockingObjectAtPointerEventHandler = o;
363
- const f = A(
362
+ e.userData.tres__registerAtPointerEventHandler = s, e.userData.tres__deregisterAtPointerEventHandler = c, e.userData.tres__registerBlockingObjectAtPointerEventHandler = n, e.userData.tres__deregisterBlockingObjectAtPointerEventHandler = o;
363
+ const u = D(
364
364
  () => Ue(
365
365
  [
366
366
  ...Array.from(r.value),
@@ -368,21 +368,21 @@ const rt = ({ scene: e, contextParts: a }) => {
368
368
  ],
369
369
  ({ uuid: l }) => l
370
370
  )
371
- ), { onClick: i, onPointerMove: m } = tt(f, a);
372
- i(({ intersects: l, event: p }) => {
373
- var d;
374
- l.length && ((d = t.click.get(l[0].object)) == null || d(l[0], p));
371
+ ), { onClick: i, onPointerMove: m } = tt(u, a);
372
+ i(({ intersects: l, event: d }) => {
373
+ var w;
374
+ l.length && ((w = t.click.get(l[0].object)) == null || w(l[0], d));
375
375
  });
376
- let c;
377
- return m(({ intersects: l, event: p }) => {
378
- var M, P, C, k;
379
- const d = (M = l == null ? void 0 : l[0]) == null ? void 0 : M.object, { pointerLeave: v, pointerEnter: w, pointerMove: h } = t;
380
- c && c !== d && ((P = v.get(c)) == null || P(c, p)), d && (c !== d && ((C = w.get(d)) == null || C(l[0], p)), (k = h.get(d)) == null || k(l[0], p)), c = d || null;
376
+ let f;
377
+ return m(({ intersects: l, event: d }) => {
378
+ var k, M, _, P;
379
+ const w = (k = l == null ? void 0 : l[0]) == null ? void 0 : k.object, { pointerLeave: p, pointerEnter: g, pointerMove: C } = t;
380
+ f && f !== w && ((M = p.get(f)) == null || M(f, d)), w && (f !== w && ((_ = g.get(w)) == null || _(l[0], d)), (P = C.get(w)) == null || P(l[0], d)), f = w || null;
381
381
  }), {
382
382
  registerObject: s,
383
- deregisterObject: u
383
+ deregisterObject: c
384
384
  };
385
- }, G = L({}), V = (e) => Object.assign(G.value, e);
385
+ }, G = O({}), V = (e) => Object.assign(G.value, e);
386
386
  function nt({
387
387
  scene: e,
388
388
  canvas: a,
@@ -390,40 +390,40 @@ function nt({
390
390
  disableRender: r,
391
391
  rendererOptions: n
392
392
  }) {
393
- const o = A(
394
- () => E(t) ? je() : Fe(E(a).parentElement)
395
- ), u = A(() => o.value.width.value), s = A(() => o.value.height.value), f = A(() => u.value / s.value), i = {
393
+ const o = D(
394
+ () => h(t) ? je() : Fe(h(a).parentElement)
395
+ ), c = D(() => o.value.width.value), s = D(() => o.value.height.value), u = D(() => c.value / s.value), i = {
396
396
  height: s,
397
- width: u,
398
- aspectRatio: f
399
- }, m = x(e), {
400
- camera: c,
397
+ width: c,
398
+ aspectRatio: u
399
+ }, m = B(e), {
400
+ camera: f,
401
401
  cameras: l,
402
- registerCamera: p,
403
- deregisterCamera: d,
404
- setCameraActive: v
405
- } = $e({ sizes: i, scene: e }), { renderer: w } = Qe(
402
+ registerCamera: d,
403
+ deregisterCamera: w,
404
+ setCameraActive: p
405
+ } = $e({ sizes: i, scene: e }), { renderer: g } = Qe(
406
406
  {
407
407
  scene: e,
408
408
  canvas: a,
409
409
  options: n,
410
- contextParts: { sizes: i, camera: c },
410
+ contextParts: { sizes: i, camera: f },
411
411
  disableRender: r
412
412
  }
413
- ), h = {
413
+ ), C = {
414
414
  sizes: i,
415
415
  scene: m,
416
- camera: c,
416
+ camera: f,
417
417
  cameras: ie(l),
418
- renderer: w,
419
- raycaster: x(new xe()),
420
- controls: L(null),
418
+ renderer: g,
419
+ raycaster: B(new Le()),
420
+ controls: O(null),
421
421
  extend: V,
422
- registerCamera: p,
423
- setCameraActive: v,
424
- deregisterCamera: d
422
+ registerCamera: d,
423
+ setCameraActive: p,
424
+ deregisterCamera: w
425
425
  };
426
- return z("useTres", h), h;
426
+ return z("useTres", C), C;
427
427
  }
428
428
  function at() {
429
429
  const e = le("useTres");
@@ -432,40 +432,40 @@ function at() {
432
432
  return e;
433
433
  }
434
434
  const Ct = at;
435
- let g = null;
436
- const { logError: Z } = O(), ot = {
435
+ let v = null;
436
+ const { logError: Z } = T(), ot = {
437
437
  createElement(e, a, t, r) {
438
- var u, s;
438
+ var c, s;
439
439
  if (r || (r = {}), r.args || (r.args = []), e === "template" || Ve(e))
440
440
  return null;
441
441
  let n = e.replace("Tres", ""), o;
442
442
  if (e === "primitive") {
443
443
  (r == null ? void 0 : r.object) === void 0 && Z("Tres primitives need a prop 'object'");
444
- const f = r.object;
445
- n = f.type, o = Object.assign(f, { type: n, attach: r.attach, primitive: !0 });
444
+ const u = r.object;
445
+ n = u.type, o = Object.assign(u, { type: n, attach: r.attach, primitive: !0 });
446
446
  } else {
447
- const f = G.value[n];
448
- f || Z(`${n} is not defined on the THREE namespace. Use extend to add it to the catalog.`), o = new f(...r.args);
447
+ const u = G.value[n];
448
+ u || Z(`${n} is not defined on the THREE namespace. Use extend to add it to the catalog.`), o = new u(...r.args);
449
449
  }
450
- 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 && ((u = r == null ? void 0 : r.material) != null && u.isMaterial && (o.userData.tres__materialViaProp = !0), (s = r == null ? void 0 : r.geometry) != null && s.isBufferGeometry && (o.userData.tres__geometryViaProp = !0)), o.userData = {
450
+ 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 && ((c = r == null ? void 0 : r.material) != null && c.isMaterial && (o.userData.tres__materialViaProp = !0), (s = r == null ? void 0 : r.geometry) != null && s.isBufferGeometry && (o.userData.tres__geometryViaProp = !0)), o.userData = {
451
451
  ...o.userData,
452
452
  tres__name: n
453
453
  }, o;
454
454
  },
455
455
  insert(e, a) {
456
- var r, n, o, u;
457
- a && a.isScene && (g = a);
458
- const t = a || g;
456
+ var r, n, o, c;
457
+ a && a.isScene && (v = a);
458
+ const t = a || v;
459
459
  if (e != null && e.isObject3D) {
460
460
  if (e != null && e.isCamera) {
461
- if (!(g != null && g.userData.tres__registerCamera))
461
+ if (!(v != null && v.userData.tres__registerCamera))
462
462
  throw "could not find tres__registerCamera on scene's userData";
463
- (n = g == null ? void 0 : (r = g.userData).tres__registerCamera) == null || n.call(r, e);
463
+ (n = v == null ? void 0 : (r = v.userData).tres__registerCamera) == null || n.call(r, e);
464
464
  }
465
465
  if (e != null && e.onClick || e != null && e.onPointerMove || e != null && e.onPointerEnter || e != null && e.onPointerLeave) {
466
- if (!(g != null && g.userData.tres__registerAtPointerEventHandler))
466
+ if (!(v != null && v.userData.tres__registerAtPointerEventHandler))
467
467
  throw "could not find tres__registerAtPointerEventHandler on scene's userData";
468
- (u = g == null ? void 0 : (o = g.userData).tres__registerAtPointerEventHandler) == null || u.call(o, e);
468
+ (c = v == null ? void 0 : (o = v.userData).tres__registerAtPointerEventHandler) == null || c.call(o, e);
469
469
  }
470
470
  }
471
471
  e != null && e.isObject3D && (t != null && t.isObject3D) ? (t.add(e), e.dispatchEvent({ type: "added" })) : e != null && e.isFog ? t.fog = e : typeof (e == null ? void 0 : e.attach) == "string" && (e.__previousAttach = e[t == null ? void 0 : t.attach], t && (t[e.attach] = e));
@@ -475,62 +475,62 @@ const { logError: Z } = O(), ot = {
475
475
  if (e) {
476
476
  if (e.isObject3D) {
477
477
  const r = e, n = (i) => {
478
- var c, l;
478
+ var f, l;
479
479
  const m = i;
480
- i.userData.tres__materialViaProp || (c = m.material) == null || c.dispose(), i.userData.tres__geometryViaProp || (l = m.geometry) == null || l.dispose();
481
- }, o = g == null ? void 0 : g.userData.tres__deregisterAtPointerEventHandler, u = g == null ? void 0 : g.userData.tres__deregisterBlockingObjectAtPointerEventHandler, s = (i) => {
482
- var m, c;
483
- if (!u)
480
+ i.userData.tres__materialViaProp || ((f = m.material) == null || f.dispose(), m.material = void 0), i.userData.tres__geometryViaProp || ((l = m.geometry) == null || l.dispose(), m.geometry = void 0);
481
+ }, o = v == null ? void 0 : v.userData.tres__deregisterAtPointerEventHandler, c = v == null ? void 0 : v.userData.tres__deregisterBlockingObjectAtPointerEventHandler, s = (i) => {
482
+ var m, f;
483
+ if (!c)
484
484
  throw "could not find tres__deregisterBlockingObjectAtPointerEventHandler on scene's userData";
485
- if ((c = g == null ? void 0 : (m = g.userData).tres__deregisterBlockingObjectAtPointerEventHandler) == null || c.call(m, i), !o)
485
+ if ((f = v == null ? void 0 : (m = v.userData).tres__deregisterBlockingObjectAtPointerEventHandler) == null || f.call(m, i), !o)
486
486
  throw "could not find tres__deregisterAtPointerEventHandler on scene's userData";
487
487
  (i != null && i.onClick || i != null && i.onPointerMove || i != null && i.onPointerEnter || i != null && i.onPointerLeave) && (o == null || o(i));
488
- }, f = (i) => {
489
- const m = g == null ? void 0 : g.userData.tres__deregisterCamera;
488
+ }, u = (i) => {
489
+ const m = v == null ? void 0 : v.userData.tres__deregisterCamera;
490
490
  if (!m)
491
491
  throw "could not find tres__deregisterCamera on scene's userData";
492
492
  i.isCamera && (m == null || m(i));
493
493
  };
494
- r.traverse((i) => {
495
- n(i), f(i), s == null || s(i);
496
- }), n(r), f(r), s == null || s(r);
494
+ (a = e.removeFromParent) == null || a.call(e), r.traverse((i) => {
495
+ n(i), u(i), s == null || s(i);
496
+ }), n(r), u(r), s == null || s(r);
497
497
  }
498
- (a = e.removeFromParent) == null || a.call(e), (t = e.dispose) == null || t.call(e);
498
+ (t = e.dispose) == null || t.call(e);
499
499
  }
500
500
  },
501
501
  patchProp(e, a, t, r) {
502
- var n, o, u, s;
502
+ var n, o, c, s;
503
503
  if (e) {
504
- let f = e, i = a;
504
+ let u = e, i = a;
505
505
  if (e.isObject3D && i === "blocks-pointer-events") {
506
- r || r === "" ? (o = g == null ? void 0 : (n = g.userData).tres__registerBlockingObjectAtPointerEventHandler) == null || o.call(n, e) : (s = g == null ? void 0 : (u = g.userData).tres__deregisterBlockingObjectAtPointerEventHandler) == null || s.call(u, e);
506
+ r || r === "" ? (o = v == null ? void 0 : (n = v.userData).tres__registerBlockingObjectAtPointerEventHandler) == null || o.call(n, e) : (s = v == null ? void 0 : (c = v.userData).tres__deregisterBlockingObjectAtPointerEventHandler) == null || s.call(c, e);
507
507
  return;
508
508
  }
509
- let m = S(i), c = f == null ? void 0 : f[m];
509
+ let m = S(i), f = u == null ? void 0 : u[m];
510
510
  if (i === "args") {
511
- const p = e, d = t ?? [], v = r ?? [], w = e.userData.tres__name || e.type;
512
- w && d.length && !Ke(d, v) && (f = Object.assign(p, new G.value[w](...r)));
511
+ const d = e, w = t ?? [], p = r ?? [], g = e.userData.tres__name || e.type;
512
+ g && w.length && !Ke(w, p) && (u = Object.assign(d, new G.value[g](...r)));
513
513
  return;
514
514
  }
515
- if (f.type === "BufferGeometry") {
515
+ if (u.type === "BufferGeometry") {
516
516
  if (i === "args")
517
517
  return;
518
- f.setAttribute(
518
+ u.setAttribute(
519
519
  S(i),
520
520
  new Be(...r)
521
521
  );
522
522
  return;
523
523
  }
524
- if (i.includes("-") && c === void 0) {
525
- const p = i.split("-");
526
- c = p.reduce((d, v) => d[S(v)], f), i = p.pop(), m = i.toLowerCase(), c != null && c.set || (f = p.reduce((d, v) => d[S(v)], f));
524
+ if (i.includes("-") && f === void 0) {
525
+ const d = i.split("-");
526
+ f = d.reduce((w, p) => w[S(p)], u), i = d.pop(), m = i.toLowerCase(), f != null && f.set || (u = d.reduce((w, p) => w[S(p)], u));
527
527
  }
528
528
  let l = r;
529
- if (l === "" && (l = !0), Q(c)) {
529
+ if (l === "" && (l = !0), Q(f)) {
530
530
  Array.isArray(l) ? e[m](...l) : e[m](l);
531
531
  return;
532
532
  }
533
- !(c != null && c.set) && !Q(c) ? f[m] = 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);
533
+ !(f != null && f.set) && !Q(f) ? u[m] = l : f.constructor === l.constructor && (f != null && f.copy) ? f == null || f.copy(l) : Array.isArray(l) ? f.set(...l) : !f.isColor && f.setScalar ? f.setScalar(l) : f.set(l);
534
534
  }
535
535
  },
536
536
  parentNode(e) {
@@ -574,54 +574,54 @@ const it = ["data-scene"], lt = /* @__PURE__ */ q({
574
574
  failIfMajorPerformanceCaveat: { type: Boolean, default: void 0 }
575
575
  },
576
576
  setup(e, { expose: a }) {
577
- var l;
578
- const t = e, { logWarning: r } = O(), n = L(), o = x(new Le());
579
- ne();
580
- const u = ce(), s = (l = U()) == null ? void 0 : l.appContext.app, f = (p) => q({
577
+ var w;
578
+ const t = e, { logWarning: r } = T(), n = O(), o = B(new xe()), { resume: c } = ne(), s = ce(), u = (w = U()) == null ? void 0 : w.appContext.app, i = (p) => q({
581
579
  setup() {
582
- var v;
583
- const d = (v = U()) == null ? void 0 : v.appContext;
584
- return d && (d.app = s), z("useTres", p), z("extend", V), () => J(ge, null, u != null && u.default ? u.default() : []);
580
+ var C;
581
+ const g = (C = U()) == null ? void 0 : C.appContext;
582
+ return g && (g.app = u), z("useTres", p), z("extend", V), () => J(ge, null, s != null && s.default ? s.default() : []);
585
583
  }
586
- }), i = (p) => {
587
- const d = f(p);
588
- st(J(d), o.value);
589
- }, m = A(() => t.disableRender), c = x(null);
590
- return a({ context: c }), fe(() => {
584
+ }), m = (p) => {
585
+ const g = i(p);
586
+ st(J(g), o.value);
587
+ }, f = (p, g = !1) => {
588
+ o.value.children = [], g && (p.renderer.value.dispose(), p.renderer.value.renderLists.dispose(), p.renderer.value.forceContextLoss()), m(p), c();
589
+ }, l = D(() => t.disableRender), d = B(null);
590
+ return a({ context: d, dispose: () => f(d.value, !0) }), fe(() => {
591
591
  const p = n;
592
- c.value = nt({
592
+ d.value = nt({
593
593
  scene: o.value,
594
594
  canvas: p,
595
595
  windowSize: t.windowSize,
596
- disableRender: m,
596
+ disableRender: l,
597
597
  rendererOptions: t
598
- }), rt({ scene: o.value, contextParts: c.value });
599
- const { registerCamera: d, camera: v, cameras: w, deregisterCamera: h } = c.value;
600
- i(c.value);
601
- const M = () => {
598
+ }), rt({ scene: o.value, contextParts: d.value });
599
+ const { registerCamera: g, camera: C, cameras: k, deregisterCamera: M } = d.value;
600
+ m(d.value);
601
+ const _ = () => {
602
602
  const P = new I(
603
603
  45,
604
604
  window.innerWidth / window.innerHeight,
605
605
  0.1,
606
606
  1e3
607
607
  );
608
- P.position.set(3, 3, 3), P.lookAt(0, 0, 0), d(P);
609
- const C = D(() => {
610
- w.value.length >= 2 && (P.removeFromParent(), h(P), C == null || C());
608
+ P.position.set(3, 3, 3), P.lookAt(0, 0, 0), g(P);
609
+ const A = b(() => {
610
+ k.value.length >= 2 && (P.removeFromParent(), M(P), A == null || A());
611
611
  });
612
612
  };
613
613
  ee(
614
614
  () => t.camera,
615
- (P, C) => {
616
- P && d(P), C && (C.removeFromParent(), h(C));
615
+ (P, A) => {
616
+ P && g(P), A && (A.removeFromParent(), M(A));
617
617
  },
618
618
  {
619
619
  immediate: !0
620
620
  }
621
- ), v.value || (r(
621
+ ), C.value || (r(
622
622
  "No camera found. Creating a default perspective camera. To have full control over a camera, please add one to the scene."
623
- ), M());
624
- }), (p, d) => (pe(), me("canvas", {
623
+ ), _());
624
+ }), (p, g) => (pe(), me("canvas", {
625
625
  ref_key: "canvas",
626
626
  ref: n,
627
627
  "data-scene": o.value.uuid,
@@ -666,7 +666,7 @@ export {
666
666
  et as trasverseObjects,
667
667
  $e as useCamera,
668
668
  gt as useLoader,
669
- O as useLogger,
669
+ T as useLogger,
670
670
  rt as usePointerEventHandler,
671
671
  tt as useRaycaster,
672
672
  ne as useRenderLoop,
package/dist/tres.umd.cjs CHANGED
@@ -1,8 +1,8 @@
1
1
  /**
2
2
  * name: @tresjs/core
3
- * version: v3.5.1
3
+ * version: v3.5.2
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(w,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):(w=typeof globalThis<"u"?globalThis:w||self,u(w.tres={},w.Vue,w.Three,w.VueUseCore))})(this,function(w,u,P,C){"use strict";function ae(e){const a=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(a,t,r.get?r:{enumerable:!0,get:()=>e[t]})}}return a.default=e,Object.freeze(a)}const oe=ae(P),G=({sizes:e,scene:a})=>{const t=u.ref([]),r=u.computed(()=>t.value[0]),n=(s,d=!1)=>{t.value.some(({uuid:i})=>i===s.uuid)||(d?c(s):t.value.push(s))},o=s=>{t.value=t.value.filter(({uuid:d})=>d!==s.uuid)},c=s=>{const d=s instanceof P.Camera?s:t.value.find(p=>p.uuid===s);if(!d)return;const i=t.value.filter(({uuid:p})=>p!==d.uuid);t.value=[d,...i]};return u.watchEffect(()=>{e.aspectRatio.value&&t.value.forEach(s=>{s instanceof P.PerspectiveCamera&&(s.aspect=e.aspectRatio.value),(s instanceof P.PerspectiveCamera||s instanceof P.OrthographicCamera)&&s.updateProjectionMatrix()})}),a.userData.tres__registerCamera=n,a.userData.tres__deregisterCamera=o,u.onUnmounted(()=>{t.value=[]}),{camera:r,cameras:t,registerCamera:n,deregisterCamera:o,setCameraActive:c}},R=C.createEventHook(),I=C.createEventHook(),F=C.createEventHook(),B=new P.Clock;let S=0,x=0;const{pause:se,resume:ie,isActive:le}=C.useRafFn(()=>{R.trigger({delta:S,elapsed:x,clock:B}),I.trigger({delta:S,elapsed:x,clock:B}),F.trigger({delta:S,elapsed:x,clock:B})},{immediate:!1});F.on(()=>{S=B.getDelta(),x=B.getElapsedTime()});const $=()=>({onBeforeLoop:R.on,onLoop:I.on,onAfterLoop:F.on,pause:se,resume:ie,isActive:le}),ue=!0,W="[TresJS ▲ ■ ●] ";function L(){function e(r,n){console.error(`${W} ${r}`,n||"")}function a(r){console.warn(`${W} ${r}`)}function t(r,n){}return{logError:e,logWarning:a,logMessage:t}}function ce(e){return typeof e=="number"?[e,e,e]:e instanceof P.Vector3?[e.x,e.y,e.z]:e}function N(e){return e instanceof P.Color?e:Array.isArray(e)?new P.Color(...e):new P.Color(e)}const q=(e,a)=>{for(const t of Object.keys(a))a[t]instanceof Object&&Object.assign(a[t],q(e[t],a[t]));return Object.assign(e||{},a),e},fe=de("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 U(e){return e&&e.nodeType===1}function E(e){return e.replace(/-([a-z])/g,(a,t)=>t.toUpperCase())}function de(e,a){const t=Object.create(null),r=e.split(",");for(let n=0;n<r.length;n++)t[r[n]]=!0;return a?n=>!!t[n.toLowerCase()]:n=>!!t[n]}const me=(e,a)=>{const t=new Set,r=[];for(const n of e){const o=a(n);t.has(o)||(t.add(o),r.push(n))}return r},H=(e,a)=>{if(!a)return;const t=Array.isArray(a)?a:a.match(/([^[.\]])+/g);return t==null?void 0:t.reduce((r,n)=>r&&r[n],e)},pe=(e,a,t)=>{const r=Array.isArray(a)?a:a.match(/([^[.\]])+/g);r&&r.reduce((n,o,c)=>(n[o]===void 0&&(n[o]={}),c===r.length-1&&(n[o]=t),n[o]),e)};function J(e,a){if(U(e)&&U(a)){const n=e.attributes,o=a.attributes;return n.length!==o.length?!1:Array.from(n).every(({name:c,value:s})=>a.getAttribute(c)===s)}if(e===a)return!0;if(e===null||typeof e!="object"||a===null||typeof a!="object")return!1;const t=Object.keys(e),r=Object.keys(a);if(t.length!==r.length)return!1;for(const n of t)if(!r.includes(n)||!J(e[n],a[n]))return!1;return!0}function ge(e,a){if(!Array.isArray(e)||!Array.isArray(a)||e.length!==a.length)return!1;for(let t=0;t<e.length;t++)if(!J(e[t],a[t]))return!1;return!0}const ve=Array.isArray,ye=Number.parseInt(P.REVISION.replace("dev","")),V={realistic:{shadows:!0,physicallyCorrectLights:!0,outputColorSpace:P.SRGBColorSpace,toneMapping:P.ACESFilmicToneMapping,toneMappingExposure:3,shadowMap:{enabled:!0,type:P.PCFSoftShadowMap}}};function K({scene:e,canvas:a,options:t,disableRender:r,contextParts:{sizes:n,camera:o}}){const c=u.computed(()=>({alpha:C.toValue(t.alpha),depth:C.toValue(t.depth),canvas:C.unrefElement(a),context:C.toValue(t.context),stencil:C.toValue(t.stencil),antialias:C.toValue(t.antialias)===void 0?!0:C.toValue(t.antialias),precision:C.toValue(t.precision),powerPreference:C.toValue(t.powerPreference),premultipliedAlpha:C.toValue(t.premultipliedAlpha),preserveDrawingBuffer:C.toValue(t.preserveDrawingBuffer),logarithmicDepthBuffer:C.toValue(t.logarithmicDepthBuffer),failIfMajorPerformanceCaveat:C.toValue(t.failIfMajorPerformanceCaveat)})),s=u.shallowRef(new P.WebGLRenderer(c.value));u.watch(c,()=>{s.value.dispose(),s.value=new P.WebGLRenderer(c.value)}),u.watchEffect(()=>{s.value.setSize(n.width.value,n.height.value)});const{pixelRatio:d}=C.useDevicePixelRatio();u.watchEffect(()=>{s.value.setPixelRatio(d.value)});const{logError:i}=L(),f=(()=>{const v=new P.WebGLRenderer,_={shadowMap:{enabled:v.shadowMap.enabled,type:v.shadowMap.type},toneMapping:v.toneMapping,toneMappingExposure:v.toneMappingExposure,outputColorSpace:v.outputColorSpace};return v.dispose(),_})();u.watchEffect(()=>{const v=C.toValue(t.preset);v&&(v in V||i(`Renderer Preset must be one of these: ${Object.keys(V).join(", ")}`),q(s.value,V[v]));const _=(A,M)=>{const O=C.toValue(A),z=()=>{if(v)return H(V[v],M)};if(O!==void 0)return O;const h=z();return h!==void 0?h:H(f,M)},k=(A,M)=>pe(s.value,M,_(A,M));k(t.shadows,"shadowMap.enabled"),k(t.toneMapping,"toneMapping"),k(t.shadowMapType,"shadowMap.type"),ye<150&&k(!t.useLegacyLights,"physicallyCorrectLights"),k(t.outputColorSpace,"outputColorSpace"),k(t.toneMappingExposure,"toneMappingExposure");const D=_(t.clearColor,"clearColor");D&&s.value.setClearColor(D?N(D):new P.Color(0))});const{pause:l,resume:m,onLoop:g}=$();return g(()=>{o.value&&!C.toValue(r)&&s.value.render(e,o.value)}),m(),u.onUnmounted(()=>{l(),s.value.dispose(),s.value.forceContextLoss()}),{renderer:s}}const X=e=>typeof e=="function",we=e=>!!e&&e.constructor===Array;function Y(e){const a={nodes:{},materials:{}};return e&&e.traverse(t=>{t.name&&(a.nodes[t.name]=t),t.material&&!a.materials[t.material.name]&&(a.materials[t.material.name]=t.material)}),a}async function Ce(e,a,t,r,n){const{logError:o}=L(),c=new e;n&&n(c),t&&t(c);const d=(Array.isArray(a)?a:[a]).map(i=>new Promise((p,f)=>{c.load(i,l=>{l.scene&&Object.assign(l,Y(l.scene)),p(l)},r,l=>f(o("[useLoader] - Failed to load resource",l)))}));return we(a)?await Promise.all(d):await d[0]}async function he(e){const a=new P.LoadingManager,t=new P.TextureLoader(a),r=n=>new Promise((o,c)=>{t.load(n,s=>o(s),()=>null,()=>{c(new Error("[useTextures] - Failed to load texture"))})});if(ve(e)){const n=await Promise.all(e.map(o=>r(o)));return e.length>1?n:n[0]}else{const{map:n,displacementMap:o,normalMap:c,roughnessMap:s,metalnessMap:d,aoMap:i,alphaMap:p,matcap:f}=e;return{map:n?await r(n):null,displacementMap:o?await r(o):null,normalMap:c?await r(c):null,roughnessMap:s?await r(s):null,metalnessMap:d?await r(d):null,aoMap:i?await r(i):null,alphaMap:p?await r(p):null,matcap:f?await r(f):null}}}const Q=(e,{renderer:a,camera:t,raycaster:r})=>{const n=u.computed(()=>a.value.domElement),{x:o,y:c}=C.usePointer({target:n}),{width:s,height:d,top:i,left:p}=C.useElementBounding(n),f=({x:h,y:b})=>{if(n.value)return{x:(h-p.value)/s.value*2-1,y:-((b-i.value)/d.value)*2+1}},l=({x:h,y:b})=>{if(t.value)return r.value.setFromCamera(new P.Vector2(h,b),t.value),r.value.intersectObjects(e.value,!1)},m=h=>{const b=f({x:(h==null?void 0:h.clientX)??o.value,y:(h==null?void 0:h.clientY)??c.value});return b?l(b)||[]:[]},g=u.computed(()=>m()),v=C.createEventHook(),_=C.createEventHook(),k=(h,b)=>{h.trigger({event:b,intersects:m(b)})},D=h=>{k(_,h)};let A;const M=h=>{var b;A=(b=m(h)[0])==null?void 0:b.object},O=h=>{var b;h instanceof PointerEvent&&A===((b=m(h)[0])==null?void 0:b.object)&&k(v,h)},z=h=>_.trigger({event:h,intersects:[]});return n.value.addEventListener("pointerup",O),n.value.addEventListener("pointerdown",M),n.value.addEventListener("pointermove",D),n.value.addEventListener("pointerleave",z),u.onUnmounted(()=>{n!=null&&n.value&&(n.value.removeEventListener("pointerup",O),n.value.removeEventListener("pointerdown",M),n.value.removeEventListener("pointermove",D),n.value.removeEventListener("pointerleave",z))}),{intersects:g,onClick:h=>v.on(h).off,onPointerMove:h=>_.on(h).off}};function Pe(){const{logWarning:e}=L();function a(o,c,s){let d=null;return o.traverse(i=>{i[c]===s&&(d=i)}),d||e(`Child with ${c} '${s}' not found.`),d}function t(o,c,s){const d=[];return o.traverse(i=>{i[c].includes(s)&&d.push(i)}),d.length||e(`Children with ${c} '${s}' not found.`),d}function r(o,c){return a(o,"name",c)}function n(o,c){return t(o,"name",c)}return{seek:a,seekByName:r,seekAll:t,seekAllByName:n}}const Z=({scene:e,contextParts:a})=>{const t=u.reactive({click:new Map,pointerMove:new Map,pointerEnter:new Map,pointerLeave:new Map}),r=u.ref(new Set),n=l=>{r.value.add(l)},o=l=>{r.value.delete(l)},c=l=>{Object.values(t).forEach(m=>m.delete(l)),o(l)},s=l=>{const{onClick:m,onPointerMove:g,onPointerEnter:v,onPointerLeave:_}=l;m&&t.click.set(l,m),g&&t.pointerMove.set(l,g),v&&t.pointerEnter.set(l,v),_&&t.pointerLeave.set(l,_)};e.userData.tres__registerAtPointerEventHandler=s,e.userData.tres__deregisterAtPointerEventHandler=c,e.userData.tres__registerBlockingObjectAtPointerEventHandler=n,e.userData.tres__deregisterBlockingObjectAtPointerEventHandler=o;const d=u.computed(()=>me([...Array.from(r.value),...Object.values(t).map(l=>Array.from(l.keys())).flat()],({uuid:l})=>l)),{onClick:i,onPointerMove:p}=Q(d,a);i(({intersects:l,event:m})=>{var g;l.length&&((g=t.click.get(l[0].object))==null||g(l[0],m))});let f;return p(({intersects:l,event:m})=>{var D,A,M,O;const g=(D=l==null?void 0:l[0])==null?void 0:D.object,{pointerLeave:v,pointerEnter:_,pointerMove:k}=t;f&&f!==g&&((A=v.get(f))==null||A(f,m)),g&&(f!==g&&((M=_.get(g))==null||M(l[0],m)),(O=k.get(g))==null||O(l[0],m)),f=g||null}),{registerObject:s,deregisterObject:c}},T=u.ref({}),j=e=>Object.assign(T.value,e);function ee({scene:e,canvas:a,windowSize:t,disableRender:r,rendererOptions:n}){const o=u.computed(()=>C.toValue(t)?C.useWindowSize():C.useElementSize(C.toValue(a).parentElement)),c=u.computed(()=>o.value.width.value),s=u.computed(()=>o.value.height.value),d=u.computed(()=>c.value/s.value),i={height:s,width:c,aspectRatio:d},p=u.shallowRef(e),{camera:f,cameras:l,registerCamera:m,deregisterCamera:g,setCameraActive:v}=G({sizes:i,scene:e}),{renderer:_}=K({scene:e,canvas:a,options:n,contextParts:{sizes:i,camera:f},disableRender:r}),k={sizes:i,scene:p,camera:f,cameras:u.readonly(l),renderer:_,raycaster:u.shallowRef(new P.Raycaster),controls:u.ref(null),extend:j,registerCamera:m,setCameraActive:v,deregisterCamera:g};return u.provide("useTres",k),k}function te(){const e=u.inject("useTres");if(!e)throw new Error("useTresContext must be used together with useTresContextProvider");return e}const _e=te;function Be(e){}let y=null;const{logError:re}=L(),Me={createElement(e,a,t,r){var c,s;if(r||(r={}),r.args||(r.args=[]),e==="template"||fe(e))return null;let n=e.replace("Tres",""),o;if(e==="primitive"){(r==null?void 0:r.object)===void 0&&re("Tres primitives need a prop 'object'");const d=r.object;n=d.type,o=Object.assign(d,{type:n,attach:r.attach,primitive:!0})}else{const d=T.value[n];d||re(`${n} is not defined on the THREE namespace. Use extend to add it to the catalog.`),o=new d(...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&&((c=r==null?void 0:r.material)!=null&&c.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:n},o},insert(e,a){var r,n,o,c;a&&a.isScene&&(y=a);const t=a||y;if(e!=null&&e.isObject3D){if(e!=null&&e.isCamera){if(!(y!=null&&y.userData.tres__registerCamera))throw"could not find tres__registerCamera on scene's userData";(n=y==null?void 0:(r=y.userData).tres__registerCamera)==null||n.call(r,e)}if(e!=null&&e.onClick||e!=null&&e.onPointerMove||e!=null&&e.onPointerEnter||e!=null&&e.onPointerLeave){if(!(y!=null&&y.userData.tres__registerAtPointerEventHandler))throw"could not find tres__registerAtPointerEventHandler on scene's userData";(c=y==null?void 0:(o=y.userData).tres__registerAtPointerEventHandler)==null||c.call(o,e)}}e!=null&&e.isObject3D&&(t!=null&&t.isObject3D)?(t.add(e),e.dispatchEvent({type:"added"})):e!=null&&e.isFog?t.fog=e:typeof(e==null?void 0:e.attach)=="string"&&(e.__previousAttach=e[t==null?void 0:t.attach],t&&(t[e.attach]=e))},remove(e){var a,t;if(e){if(e.isObject3D){const r=e,n=i=>{var f,l;const p=i;i.userData.tres__materialViaProp||(f=p.material)==null||f.dispose(),i.userData.tres__geometryViaProp||(l=p.geometry)==null||l.dispose()},o=y==null?void 0:y.userData.tres__deregisterAtPointerEventHandler,c=y==null?void 0:y.userData.tres__deregisterBlockingObjectAtPointerEventHandler,s=i=>{var p,f;if(!c)throw"could not find tres__deregisterBlockingObjectAtPointerEventHandler on scene's userData";if((f=y==null?void 0:(p=y.userData).tres__deregisterBlockingObjectAtPointerEventHandler)==null||f.call(p,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))},d=i=>{const p=y==null?void 0:y.userData.tres__deregisterCamera;if(!p)throw"could not find tres__deregisterCamera on scene's userData";i.isCamera&&(p==null||p(i))};r.traverse(i=>{n(i),d(i),s==null||s(i)}),n(r),d(r),s==null||s(r)}(a=e.removeFromParent)==null||a.call(e),(t=e.dispose)==null||t.call(e)}},patchProp(e,a,t,r){var n,o,c,s;if(e){let d=e,i=a;if(e.isObject3D&&i==="blocks-pointer-events"){r||r===""?(o=y==null?void 0:(n=y.userData).tres__registerBlockingObjectAtPointerEventHandler)==null||o.call(n,e):(s=y==null?void 0:(c=y.userData).tres__deregisterBlockingObjectAtPointerEventHandler)==null||s.call(c,e);return}let p=E(i),f=d==null?void 0:d[p];if(i==="args"){const m=e,g=t??[],v=r??[],_=e.userData.tres__name||e.type;_&&g.length&&!ge(g,v)&&(d=Object.assign(m,new T.value[_](...r)));return}if(d.type==="BufferGeometry"){if(i==="args")return;d.setAttribute(E(i),new P.BufferAttribute(...r));return}if(i.includes("-")&&f===void 0){const m=i.split("-");f=m.reduce((g,v)=>g[E(v)],d),i=m.pop(),p=i.toLowerCase(),f!=null&&f.set||(d=m.reduce((g,v)=>g[E(v)],d))}let l=r;if(l===""&&(l=!0),X(f)){Array.isArray(l)?e[p](...l):e[p](l);return}!(f!=null&&f.set)&&!X(f)?d[p]=l:f.constructor===l.constructor&&(f!=null&&f.copy)?f==null||f.copy(l):Array.isArray(l)?f.set(...l):!f.isColor&&f.setScalar?f.setScalar(l):f.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:Ae}=u.createRenderer(Me);j(oe);const ke=["data-scene"],ne=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,{expose:a}){var l;const t=e,{logWarning:r}=L(),n=u.ref(),o=u.shallowRef(new P.Scene);$();const c=u.useSlots(),s=(l=u.getCurrentInstance())==null?void 0:l.appContext.app,d=m=>u.defineComponent({setup(){var v;const g=(v=u.getCurrentInstance())==null?void 0:v.appContext;return g&&(g.app=s),u.provide("useTres",m),u.provide("extend",j),()=>u.h(u.Fragment,null,c!=null&&c.default?c.default():[])}}),i=m=>{const g=d(m);Ae(u.h(g),o.value)},p=u.computed(()=>t.disableRender),f=u.shallowRef(null);return a({context:f}),u.onMounted(()=>{const m=n;f.value=ee({scene:o.value,canvas:m,windowSize:t.windowSize,disableRender:p,rendererOptions:t}),Z({scene:o.value,contextParts:f.value});const{registerCamera:g,camera:v,cameras:_,deregisterCamera:k}=f.value;i(f.value);const D=()=>{const A=new P.PerspectiveCamera(45,window.innerWidth/window.innerHeight,.1,1e3);A.position.set(3,3,3),A.lookAt(0,0,0),g(A);const M=u.watchEffect(()=>{_.value.length>=2&&(A.removeFromParent(),k(A),M==null||M())})};u.watch(()=>t.camera,(A,M)=>{A&&g(A),M&&(M.removeFromParent(),k(M))},{immediate:!0}),v.value||(r("No camera found. Creating a default perspective camera. To have full control over a camera, please add one to the scene."),D())}),(m,g)=>(u.openBlock(),u.createElementBlock("canvas",{ref_key:"canvas",ref:n,"data-scene":o.value.uuid,class:u.normalizeClass(m.$attrs.class),style:u.normalizeStyle({display:"block",width:"100%",height:"100%",position:m.windowSize?"fixed":"relative",top:0,left:0,pointerEvents:"auto",touchAction:"none",...m.$attrs.style})},null,14,ke))}}),be=["TresCanvas","TresLeches","TresScene"],De={template:{compilerOptions:{isCustomElement:e=>e.startsWith("Tres")&&!be.includes(e)||e==="primitive"}}},Oe={install(e){e.component("TresCanvas",ne)}};w.TresCanvas=ne,w.catalogue=T,w.default=Oe,w.extend=j,w.isProd=ue,w.normalizeColor=N,w.normalizeVectorFlexibleParam=ce,w.templateCompilerOptions=De,w.trasverseObjects=Y,w.useCamera=G,w.useLoader=Ce,w.useLogger=L,w.usePointerEventHandler=Z,w.useRaycaster=Q,w.useRenderLoop=$,w.useRenderer=K,w.useSeek=Pe,w.useTexture=he,w.useTres=_e,w.useTresContext=te,w.useTresContextProvider=ee,Object.defineProperties(w,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}})});
8
+ (function(y,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):(y=typeof globalThis<"u"?globalThis:y||self,u(y.tres={},y.Vue,y.Three,y.VueUseCore))})(this,function(y,u,_,w){"use strict";function ae(e){const a=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(a,t,r.get?r:{enumerable:!0,get:()=>e[t]})}}return a.default=e,Object.freeze(a)}const oe=ae(_),G=({sizes:e,scene:a})=>{const t=u.ref([]),r=u.computed(()=>t.value[0]),n=(s,c=!1)=>{t.value.some(({uuid:i})=>i===s.uuid)||(c?f(s):t.value.push(s))},o=s=>{t.value=t.value.filter(({uuid:c})=>c!==s.uuid)},f=s=>{const c=s instanceof _.Camera?s:t.value.find(p=>p.uuid===s);if(!c)return;const i=t.value.filter(({uuid:p})=>p!==c.uuid);t.value=[c,...i]};return u.watchEffect(()=>{e.aspectRatio.value&&t.value.forEach(s=>{s instanceof _.PerspectiveCamera&&(s.aspect=e.aspectRatio.value),(s instanceof _.PerspectiveCamera||s instanceof _.OrthographicCamera)&&s.updateProjectionMatrix()})}),a.userData.tres__registerCamera=n,a.userData.tres__deregisterCamera=o,u.onUnmounted(()=>{t.value=[]}),{camera:r,cameras:t,registerCamera:n,deregisterCamera:o,setCameraActive:f}},R=w.createEventHook(),I=w.createEventHook(),F=w.createEventHook(),S=new _.Clock;let x=0,E=0;const{pause:se,resume:ie,isActive:le}=w.useRafFn(()=>{R.trigger({delta:x,elapsed:E,clock:S}),I.trigger({delta:x,elapsed:E,clock:S}),F.trigger({delta:x,elapsed:E,clock:S})},{immediate:!1});F.on(()=>{x=S.getDelta(),E=S.getElapsedTime()});const $=()=>({onBeforeLoop:R.on,onLoop:I.on,onAfterLoop:F.on,pause:se,resume:ie,isActive:le}),ue=!0,W="[TresJS ▲ ■ ●] ";function B(){function e(r,n){console.error(`${W} ${r}`,n||"")}function a(r){console.warn(`${W} ${r}`)}function t(r,n){}return{logError:e,logWarning:a,logMessage:t}}function ce(e){return typeof e=="number"?[e,e,e]:e instanceof _.Vector3?[e.x,e.y,e.z]:e}function N(e){return e instanceof _.Color?e:Array.isArray(e)?new _.Color(...e):new _.Color(e)}const q=(e,a)=>{for(const t of Object.keys(a))a[t]instanceof Object&&Object.assign(a[t],q(e[t],a[t]));return Object.assign(e||{},a),e},fe=de("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 U(e){return e&&e.nodeType===1}function V(e){return e.replace(/-([a-z])/g,(a,t)=>t.toUpperCase())}function de(e,a){const t=Object.create(null),r=e.split(",");for(let n=0;n<r.length;n++)t[r[n]]=!0;return a?n=>!!t[n.toLowerCase()]:n=>!!t[n]}const me=(e,a)=>{const t=new Set,r=[];for(const n of e){const o=a(n);t.has(o)||(t.add(o),r.push(n))}return r},H=(e,a)=>{if(!a)return;const t=Array.isArray(a)?a:a.match(/([^[.\]])+/g);return t==null?void 0:t.reduce((r,n)=>r&&r[n],e)},pe=(e,a,t)=>{const r=Array.isArray(a)?a:a.match(/([^[.\]])+/g);r&&r.reduce((n,o,f)=>(n[o]===void 0&&(n[o]={}),f===r.length-1&&(n[o]=t),n[o]),e)};function J(e,a){if(U(e)&&U(a)){const n=e.attributes,o=a.attributes;return n.length!==o.length?!1:Array.from(n).every(({name:f,value:s})=>a.getAttribute(f)===s)}if(e===a)return!0;if(e===null||typeof e!="object"||a===null||typeof a!="object")return!1;const t=Object.keys(e),r=Object.keys(a);if(t.length!==r.length)return!1;for(const n of t)if(!r.includes(n)||!J(e[n],a[n]))return!1;return!0}function ge(e,a){if(!Array.isArray(e)||!Array.isArray(a)||e.length!==a.length)return!1;for(let t=0;t<e.length;t++)if(!J(e[t],a[t]))return!1;return!0}const ve=Array.isArray,ye=Number.parseInt(_.REVISION.replace("dev","")),T={realistic:{shadows:!0,physicallyCorrectLights:!0,outputColorSpace:_.SRGBColorSpace,toneMapping:_.ACESFilmicToneMapping,toneMappingExposure:3,shadowMap:{enabled:!0,type:_.PCFSoftShadowMap}}};function K({scene:e,canvas:a,options:t,disableRender:r,contextParts:{sizes:n,camera:o}}){const f=u.computed(()=>({alpha:w.toValue(t.alpha),depth:w.toValue(t.depth),canvas:w.unrefElement(a),context:w.toValue(t.context),stencil:w.toValue(t.stencil),antialias:w.toValue(t.antialias)===void 0?!0:w.toValue(t.antialias),precision:w.toValue(t.precision),powerPreference:w.toValue(t.powerPreference),premultipliedAlpha:w.toValue(t.premultipliedAlpha),preserveDrawingBuffer:w.toValue(t.preserveDrawingBuffer),logarithmicDepthBuffer:w.toValue(t.logarithmicDepthBuffer),failIfMajorPerformanceCaveat:w.toValue(t.failIfMajorPerformanceCaveat)})),s=u.shallowRef(new _.WebGLRenderer(f.value));u.watch(f,()=>{s.value.dispose(),s.value=new _.WebGLRenderer(f.value)}),u.watchEffect(()=>{s.value.setSize(n.width.value,n.height.value)});const{pixelRatio:c}=w.useDevicePixelRatio();u.watchEffect(()=>{s.value.setPixelRatio(c.value)});const{logError:i}=B(),d=(()=>{const m=new _.WebGLRenderer,C={shadowMap:{enabled:m.shadowMap.enabled,type:m.shadowMap.type},toneMapping:m.toneMapping,toneMappingExposure:m.toneMappingExposure,outputColorSpace:m.outputColorSpace};return m.dispose(),C})();u.watchEffect(()=>{const m=w.toValue(t.preset);m&&(m in T||i(`Renderer Preset must be one of these: ${Object.keys(T).join(", ")}`),q(s.value,T[m]));const C=(D,b)=>{const A=w.toValue(D),L=()=>{if(m)return H(T[m],b)};if(A!==void 0)return A;const h=L();return h!==void 0?h:H(d,b)},M=(D,b)=>pe(s.value,b,C(D,b));M(t.shadows,"shadowMap.enabled"),M(t.toneMapping,"toneMapping"),M(t.shadowMapType,"shadowMap.type"),ye<150&&M(!t.useLegacyLights,"physicallyCorrectLights"),M(t.outputColorSpace,"outputColorSpace"),M(t.toneMappingExposure,"toneMappingExposure");const O=C(t.clearColor,"clearColor");O&&s.value.setClearColor(O?N(O):new _.Color(0))});const{pause:l,resume:v,onLoop:P}=$();return P(()=>{o.value&&!w.toValue(r)&&s.value.render(e,o.value)}),v(),u.onUnmounted(()=>{l(),s.value.dispose(),s.value.forceContextLoss()}),{renderer:s}}const X=e=>typeof e=="function",we=e=>!!e&&e.constructor===Array;function Y(e){const a={nodes:{},materials:{}};return e&&e.traverse(t=>{t.name&&(a.nodes[t.name]=t),t.material&&!a.materials[t.material.name]&&(a.materials[t.material.name]=t.material)}),a}async function Ce(e,a,t,r,n){const{logError:o}=B(),f=new e;n&&n(f),t&&t(f);const c=(Array.isArray(a)?a:[a]).map(i=>new Promise((p,d)=>{f.load(i,l=>{l.scene&&Object.assign(l,Y(l.scene)),p(l)},r,l=>d(o("[useLoader] - Failed to load resource",l)))}));return we(a)?await Promise.all(c):await c[0]}async function he(e){const a=new _.LoadingManager,t=new _.TextureLoader(a),r=n=>new Promise((o,f)=>{t.load(n,s=>o(s),()=>null,()=>{f(new Error("[useTextures] - Failed to load texture"))})});if(ve(e)){const n=await Promise.all(e.map(o=>r(o)));return e.length>1?n:n[0]}else{const{map:n,displacementMap:o,normalMap:f,roughnessMap:s,metalnessMap:c,aoMap:i,alphaMap:p,matcap:d}=e;return{map:n?await r(n):null,displacementMap:o?await r(o):null,normalMap:f?await r(f):null,roughnessMap:s?await r(s):null,metalnessMap:c?await r(c):null,aoMap:i?await r(i):null,alphaMap:p?await r(p):null,matcap:d?await r(d):null}}}const Q=(e,{renderer:a,camera:t,raycaster:r})=>{const n=u.computed(()=>a.value.domElement),{x:o,y:f}=w.usePointer({target:n}),{width:s,height:c,top:i,left:p}=w.useElementBounding(n),d=({x:h,y:k})=>{if(n.value)return{x:(h-p.value)/s.value*2-1,y:-((k-i.value)/c.value)*2+1}},l=({x:h,y:k})=>{if(t.value)return r.value.setFromCamera(new _.Vector2(h,k),t.value),r.value.intersectObjects(e.value,!1)},v=h=>{const k=d({x:(h==null?void 0:h.clientX)??o.value,y:(h==null?void 0:h.clientY)??f.value});return k?l(k)||[]:[]},P=u.computed(()=>v()),m=w.createEventHook(),C=w.createEventHook(),M=(h,k)=>{h.trigger({event:k,intersects:v(k)})},O=h=>{M(C,h)};let D;const b=h=>{var k;D=(k=v(h)[0])==null?void 0:k.object},A=h=>{var k;h instanceof PointerEvent&&D===((k=v(h)[0])==null?void 0:k.object)&&M(m,h)},L=h=>C.trigger({event:h,intersects:[]});return n.value.addEventListener("pointerup",A),n.value.addEventListener("pointerdown",b),n.value.addEventListener("pointermove",O),n.value.addEventListener("pointerleave",L),u.onUnmounted(()=>{n!=null&&n.value&&(n.value.removeEventListener("pointerup",A),n.value.removeEventListener("pointerdown",b),n.value.removeEventListener("pointermove",O),n.value.removeEventListener("pointerleave",L))}),{intersects:P,onClick:h=>m.on(h).off,onPointerMove:h=>C.on(h).off}};function Pe(){const{logWarning:e}=B();function a(o,f,s){let c=null;return o.traverse(i=>{i[f]===s&&(c=i)}),c||e(`Child with ${f} '${s}' not found.`),c}function t(o,f,s){const c=[];return o.traverse(i=>{i[f].includes(s)&&c.push(i)}),c.length||e(`Children with ${f} '${s}' not found.`),c}function r(o,f){return a(o,"name",f)}function n(o,f){return t(o,"name",f)}return{seek:a,seekByName:r,seekAll:t,seekAllByName:n}}const Z=({scene:e,contextParts:a})=>{const t=u.reactive({click:new Map,pointerMove:new Map,pointerEnter:new Map,pointerLeave:new Map}),r=u.ref(new Set),n=l=>{r.value.add(l)},o=l=>{r.value.delete(l)},f=l=>{Object.values(t).forEach(v=>v.delete(l)),o(l)},s=l=>{const{onClick:v,onPointerMove:P,onPointerEnter:m,onPointerLeave:C}=l;v&&t.click.set(l,v),P&&t.pointerMove.set(l,P),m&&t.pointerEnter.set(l,m),C&&t.pointerLeave.set(l,C)};e.userData.tres__registerAtPointerEventHandler=s,e.userData.tres__deregisterAtPointerEventHandler=f,e.userData.tres__registerBlockingObjectAtPointerEventHandler=n,e.userData.tres__deregisterBlockingObjectAtPointerEventHandler=o;const c=u.computed(()=>me([...Array.from(r.value),...Object.values(t).map(l=>Array.from(l.keys())).flat()],({uuid:l})=>l)),{onClick:i,onPointerMove:p}=Q(c,a);i(({intersects:l,event:v})=>{var P;l.length&&((P=t.click.get(l[0].object))==null||P(l[0],v))});let d;return p(({intersects:l,event:v})=>{var O,D,b,A;const P=(O=l==null?void 0:l[0])==null?void 0:O.object,{pointerLeave:m,pointerEnter:C,pointerMove:M}=t;d&&d!==P&&((D=m.get(d))==null||D(d,v)),P&&(d!==P&&((b=C.get(P))==null||b(l[0],v)),(A=M.get(P))==null||A(l[0],v)),d=P||null}),{registerObject:s,deregisterObject:f}},j=u.ref({}),z=e=>Object.assign(j.value,e);function ee({scene:e,canvas:a,windowSize:t,disableRender:r,rendererOptions:n}){const o=u.computed(()=>w.toValue(t)?w.useWindowSize():w.useElementSize(w.toValue(a).parentElement)),f=u.computed(()=>o.value.width.value),s=u.computed(()=>o.value.height.value),c=u.computed(()=>f.value/s.value),i={height:s,width:f,aspectRatio:c},p=u.shallowRef(e),{camera:d,cameras:l,registerCamera:v,deregisterCamera:P,setCameraActive:m}=G({sizes:i,scene:e}),{renderer:C}=K({scene:e,canvas:a,options:n,contextParts:{sizes:i,camera:d},disableRender:r}),M={sizes:i,scene:p,camera:d,cameras:u.readonly(l),renderer:C,raycaster:u.shallowRef(new _.Raycaster),controls:u.ref(null),extend:z,registerCamera:v,setCameraActive:m,deregisterCamera:P};return u.provide("useTres",M),M}function te(){const e=u.inject("useTres");if(!e)throw new Error("useTresContext must be used together with useTresContextProvider");return e}const _e=te;function Be(e){}let g=null;const{logError:re}=B(),Me={createElement(e,a,t,r){var f,s;if(r||(r={}),r.args||(r.args=[]),e==="template"||fe(e))return null;let n=e.replace("Tres",""),o;if(e==="primitive"){(r==null?void 0:r.object)===void 0&&re("Tres primitives need a prop 'object'");const c=r.object;n=c.type,o=Object.assign(c,{type:n,attach:r.attach,primitive:!0})}else{const c=j.value[n];c||re(`${n} is not defined on the THREE namespace. Use extend to add it to the catalog.`),o=new c(...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&&((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={...o.userData,tres__name:n},o},insert(e,a){var r,n,o,f;a&&a.isScene&&(g=a);const t=a||g;if(e!=null&&e.isObject3D){if(e!=null&&e.isCamera){if(!(g!=null&&g.userData.tres__registerCamera))throw"could not find tres__registerCamera on scene's userData";(n=g==null?void 0:(r=g.userData).tres__registerCamera)==null||n.call(r,e)}if(e!=null&&e.onClick||e!=null&&e.onPointerMove||e!=null&&e.onPointerEnter||e!=null&&e.onPointerLeave){if(!(g!=null&&g.userData.tres__registerAtPointerEventHandler))throw"could not find tres__registerAtPointerEventHandler on scene's userData";(f=g==null?void 0:(o=g.userData).tres__registerAtPointerEventHandler)==null||f.call(o,e)}}e!=null&&e.isObject3D&&(t!=null&&t.isObject3D)?(t.add(e),e.dispatchEvent({type:"added"})):e!=null&&e.isFog?t.fog=e:typeof(e==null?void 0:e.attach)=="string"&&(e.__previousAttach=e[t==null?void 0:t.attach],t&&(t[e.attach]=e))},remove(e){var a,t;if(e){if(e.isObject3D){const r=e,n=i=>{var d,l;const p=i;i.userData.tres__materialViaProp||((d=p.material)==null||d.dispose(),p.material=void 0),i.userData.tres__geometryViaProp||((l=p.geometry)==null||l.dispose(),p.geometry=void 0)},o=g==null?void 0:g.userData.tres__deregisterAtPointerEventHandler,f=g==null?void 0:g.userData.tres__deregisterBlockingObjectAtPointerEventHandler,s=i=>{var p,d;if(!f)throw"could not find tres__deregisterBlockingObjectAtPointerEventHandler on scene's userData";if((d=g==null?void 0:(p=g.userData).tres__deregisterBlockingObjectAtPointerEventHandler)==null||d.call(p,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))},c=i=>{const p=g==null?void 0:g.userData.tres__deregisterCamera;if(!p)throw"could not find tres__deregisterCamera on scene's userData";i.isCamera&&(p==null||p(i))};(a=e.removeFromParent)==null||a.call(e),r.traverse(i=>{n(i),c(i),s==null||s(i)}),n(r),c(r),s==null||s(r)}(t=e.dispose)==null||t.call(e)}},patchProp(e,a,t,r){var n,o,f,s;if(e){let c=e,i=a;if(e.isObject3D&&i==="blocks-pointer-events"){r||r===""?(o=g==null?void 0:(n=g.userData).tres__registerBlockingObjectAtPointerEventHandler)==null||o.call(n,e):(s=g==null?void 0:(f=g.userData).tres__deregisterBlockingObjectAtPointerEventHandler)==null||s.call(f,e);return}let p=V(i),d=c==null?void 0:c[p];if(i==="args"){const v=e,P=t??[],m=r??[],C=e.userData.tres__name||e.type;C&&P.length&&!ge(P,m)&&(c=Object.assign(v,new j.value[C](...r)));return}if(c.type==="BufferGeometry"){if(i==="args")return;c.setAttribute(V(i),new _.BufferAttribute(...r));return}if(i.includes("-")&&d===void 0){const v=i.split("-");d=v.reduce((P,m)=>P[V(m)],c),i=v.pop(),p=i.toLowerCase(),d!=null&&d.set||(c=v.reduce((P,m)=>P[V(m)],c))}let l=r;if(l===""&&(l=!0),X(d)){Array.isArray(l)?e[p](...l):e[p](l);return}!(d!=null&&d.set)&&!X(d)?c[p]=l:d.constructor===l.constructor&&(d!=null&&d.copy)?d==null||d.copy(l):Array.isArray(l)?d.set(...l):!d.isColor&&d.setScalar?d.setScalar(l):d.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:Ae}=u.createRenderer(Me);z(oe);const ke=["data-scene"],ne=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,{expose:a}){var P;const t=e,{logWarning:r}=B(),n=u.ref(),o=u.shallowRef(new _.Scene),{resume:f}=$(),s=u.useSlots(),c=(P=u.getCurrentInstance())==null?void 0:P.appContext.app,i=m=>u.defineComponent({setup(){var M;const C=(M=u.getCurrentInstance())==null?void 0:M.appContext;return C&&(C.app=c),u.provide("useTres",m),u.provide("extend",z),()=>u.h(u.Fragment,null,s!=null&&s.default?s.default():[])}}),p=m=>{const C=i(m);Ae(u.h(C),o.value)},d=(m,C=!1)=>{o.value.children=[],C&&(m.renderer.value.dispose(),m.renderer.value.renderLists.dispose(),m.renderer.value.forceContextLoss()),p(m),f()},l=u.computed(()=>t.disableRender),v=u.shallowRef(null);return a({context:v,dispose:()=>d(v.value,!0)}),u.onMounted(()=>{const m=n;v.value=ee({scene:o.value,canvas:m,windowSize:t.windowSize,disableRender:l,rendererOptions:t}),Z({scene:o.value,contextParts:v.value});const{registerCamera:C,camera:M,cameras:O,deregisterCamera:D}=v.value;p(v.value);const b=()=>{const A=new _.PerspectiveCamera(45,window.innerWidth/window.innerHeight,.1,1e3);A.position.set(3,3,3),A.lookAt(0,0,0),C(A);const L=u.watchEffect(()=>{O.value.length>=2&&(A.removeFromParent(),D(A),L==null||L())})};u.watch(()=>t.camera,(A,L)=>{A&&C(A),L&&(L.removeFromParent(),D(L))},{immediate:!0}),M.value||(r("No camera found. Creating a default perspective camera. To have full control over a camera, please add one to the scene."),b())}),(m,C)=>(u.openBlock(),u.createElementBlock("canvas",{ref_key:"canvas",ref:n,"data-scene":o.value.uuid,class:u.normalizeClass(m.$attrs.class),style:u.normalizeStyle({display:"block",width:"100%",height:"100%",position:m.windowSize?"fixed":"relative",top:0,left:0,pointerEvents:"auto",touchAction:"none",...m.$attrs.style})},null,14,ke))}}),be=["TresCanvas","TresLeches","TresScene"],De={template:{compilerOptions:{isCustomElement:e=>e.startsWith("Tres")&&!be.includes(e)||e==="primitive"}}},Le={install(e){e.component("TresCanvas",ne)}};y.TresCanvas=ne,y.catalogue=j,y.default=Le,y.extend=z,y.isProd=ue,y.normalizeColor=N,y.normalizeVectorFlexibleParam=ce,y.templateCompilerOptions=De,y.trasverseObjects=Y,y.useCamera=G,y.useLoader=Ce,y.useLogger=B,y.usePointerEventHandler=Z,y.useRaycaster=Q,y.useRenderLoop=$,y.useRenderer=K,y.useSeek=Pe,y.useTexture=he,y.useTres=_e,y.useTresContext=te,y.useTresContextProvider=ee,Object.defineProperties(y,{__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.5.1",
4
+ "version": "3.5.2",
5
5
  "packageManager": "pnpm@8.10.2",
6
6
  "description": "Declarative ThreeJS using Vue Components",
7
7
  "author": "Alvaro Saburido <hola@alvarosaburido.dev> (https://github.com/alvarosabu/)",
@@ -66,45 +66,45 @@
66
66
  },
67
67
  "dependencies": {
68
68
  "@alvarosabu/utils": "^3.1.1",
69
- "@vueuse/core": "^10.5.0"
69
+ "@vueuse/core": "^10.7.0"
70
70
  },
71
71
  "devDependencies": {
72
72
  "@release-it/conventional-changelog": "^8.0.1",
73
73
  "@stackblitz/sdk": "^1.9.0",
74
74
  "@tresjs/cientos": "3.6.0",
75
75
  "@tresjs/eslint-config-vue": "^0.2.1",
76
- "@types/three": "^0.158.3",
77
- "@typescript-eslint/eslint-plugin": "^6.13.0",
78
- "@typescript-eslint/parser": "^6.13.0",
79
- "@vitejs/plugin-vue": "^4.5.0",
76
+ "@types/three": "^0.159.0",
77
+ "@typescript-eslint/eslint-plugin": "^6.14.0",
78
+ "@typescript-eslint/parser": "^6.14.0",
79
+ "@vitejs/plugin-vue": "^4.5.2",
80
80
  "@vitest/coverage-c8": "^0.33.0",
81
- "@vitest/ui": "^0.34.6",
82
- "@vue/test-utils": "^2.4.2",
83
- "eslint": "^8.54.0",
84
- "eslint-plugin-vue": "^9.18.1",
81
+ "@vitest/ui": "^1.0.4",
82
+ "@vue/test-utils": "^2.4.3",
83
+ "eslint": "^8.55.0",
84
+ "eslint-plugin-vue": "^9.19.2",
85
85
  "esno": "^4.0.0",
86
- "gsap": "^3.12.2",
87
- "jsdom": "^23.0.0",
86
+ "gsap": "^3.12.3",
87
+ "jsdom": "^23.0.1",
88
88
  "kolorist": "^1.8.0",
89
89
  "ohmyfetch": "^0.4.21",
90
90
  "pathe": "^1.1.1",
91
- "release-it": "^17.0.0",
91
+ "release-it": "^17.0.1",
92
92
  "rollup-plugin-analyzer": "^4.0.0",
93
93
  "rollup-plugin-copy": "^3.5.0",
94
- "rollup-plugin-visualizer": "^5.9.3",
95
- "three": "^0.158.0",
96
- "unocss": "^0.57.7",
94
+ "rollup-plugin-visualizer": "^5.11.0",
95
+ "three": "^0.159.0",
96
+ "unocss": "^0.58.0",
97
97
  "unplugin": "^1.5.1",
98
- "unplugin-vue-components": "^0.25.2",
99
- "vite": "^5.0.2",
98
+ "unplugin-vue-components": "^0.26.0",
99
+ "vite": "^5.0.8",
100
100
  "vite-plugin-banner": "^0.7.1",
101
- "vite-plugin-dts": "3.6.3",
102
- "vite-plugin-inspect": "^0.8.0",
101
+ "vite-plugin-dts": "3.6.4",
102
+ "vite-plugin-inspect": "^0.8.1",
103
103
  "vite-plugin-require-transform": "^1.0.21",
104
104
  "vite-svg-loader": "^5.1.0",
105
105
  "vitepress": "1.0.0-rc.31",
106
- "vitest": "^0.34.6",
107
- "vue": "^3.3.9",
106
+ "vitest": "^1.0.4",
107
+ "vue": "^3.3.11",
108
108
  "vue-demi": "^0.14.6"
109
109
  }
110
110
  }