@tresjs/core 3.1.0 → 3.1.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,16 +1,16 @@
1
1
  /**
2
2
  * name: @tresjs/core
3
- * version: v3.1.0
3
+ * version: v3.1.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 _, watchEffect as L, onUnmounted as N, shallowRef as z, 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";
8
+ import { ref as j, computed as _, watchEffect as L, onUnmounted as N, shallowRef as H, watch as ee, reactive as ie, readonly as ue, provide as V, 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
9
  import * as ye from "three";
10
- import { PerspectiveCamera as V, OrthographicCamera as we, Camera as Ce, Clock as Pe, SRGBColorSpace as Me, ACESFilmicToneMapping as _e, PCFSoftShadowMap as Ee, Vector3 as xe, Color as B, REVISION as Ae, WebGLRenderer as j, LoadingManager as De, TextureLoader as Le, Vector2 as he, Raycaster as ke, BufferAttribute as Te, Scene as be } from "three";
11
- import { createEventHook as k, useRafFn as Se, toValue as w, unrefElement as Oe, useDevicePixelRatio as Be, usePointer as Re, useElementBounding as Fe, useWindowSize as ze, useElementSize as He } from "@vueuse/core";
12
- const je = ({ sizes: e, scene: n }) => {
13
- const t = H([]), a = _(
10
+ import { PerspectiveCamera as I, OrthographicCamera as we, Camera as Ce, Clock as Pe, SRGBColorSpace as Me, ACESFilmicToneMapping as _e, PCFSoftShadowMap as Ee, Vector3 as xe, Color as B, REVISION as Ae, WebGLRenderer as z, LoadingManager as De, TextureLoader as Le, Vector2 as he, Raycaster as ke, BufferAttribute as Te, Scene as be } from "three";
11
+ import { createEventHook as k, useRafFn as Se, toValue as w, unrefElement as Oe, useDevicePixelRatio as Be, usePointer as Re, useElementBounding as Fe, useWindowSize as He, useElementSize as je } from "@vueuse/core";
12
+ const ze = ({ sizes: e, scene: n }) => {
13
+ const t = j([]), a = _(
14
14
  () => t.value[0]
15
15
  ), r = (o, s = !1) => {
16
16
  t.value.some(({ uuid: u }) => u === o.uuid) || (s ? l(o) : t.value.push(o));
@@ -25,7 +25,7 @@ const je = ({ sizes: e, scene: n }) => {
25
25
  };
26
26
  return L(() => {
27
27
  e.aspectRatio.value && t.value.forEach((o) => {
28
- o instanceof V && (o.aspect = e.aspectRatio.value), (o instanceof V || o instanceof we) && o.updateProjectionMatrix();
28
+ o instanceof I && (o.aspect = e.aspectRatio.value), (o instanceof I || o instanceof we) && o.updateProjectionMatrix();
29
29
  });
30
30
  }), n.userData.tres__registerCamera = r, n.userData.tres__deregisterCamera = i, N(() => {
31
31
  t.value = [];
@@ -38,7 +38,7 @@ const je = ({ sizes: e, scene: n }) => {
38
38
  };
39
39
  }, te = k(), re = k(), $ = k(), h = new Pe();
40
40
  let R = 0, F = 0;
41
- const { pause: Ge, resume: Ie, isActive: Ve } = Se(
41
+ const { pause: Ge, resume: Ve, isActive: Ie } = Se(
42
42
  () => {
43
43
  te.trigger({ delta: R, elapsed: F, clock: h }), re.trigger({ delta: R, elapsed: F, clock: h }), $.trigger({ delta: R, elapsed: F, clock: h });
44
44
  },
@@ -52,8 +52,8 @@ const ne = () => ({
52
52
  onLoop: re.on,
53
53
  onAfterLoop: $.on,
54
54
  pause: Ge,
55
- resume: Ie,
56
- isActive: Ve
55
+ resume: Ve,
56
+ isActive: Ie
57
57
  }), S = {
58
58
  realistic: {
59
59
  outputColorSpace: Me,
@@ -168,9 +168,9 @@ function Ye({
168
168
  preserveDrawingBuffer: w(t.preserveDrawingBuffer),
169
169
  logarithmicDepthBuffer: w(t.logarithmicDepthBuffer),
170
170
  failIfMajorPerformanceCaveat: w(t.failIfMajorPerformanceCaveat)
171
- })), o = z(new j(l.value));
171
+ })), o = H(new z(l.value));
172
172
  ee(l, () => {
173
- o.value.dispose(), o.value = new j(l.value);
173
+ o.value.dispose(), o.value = new z(l.value);
174
174
  }), L(() => {
175
175
  o.value.setSize(r.width.value, r.height.value);
176
176
  });
@@ -179,7 +179,7 @@ function Ye({
179
179
  o.value.setPixelRatio(s.value);
180
180
  });
181
181
  const { logError: u } = T(), f = (() => {
182
- const d = new j(), g = {
182
+ const d = new z(), g = {
183
183
  shadowMap: {
184
184
  enabled: d.shadowMap.enabled,
185
185
  type: d.shadowMap.type
@@ -365,7 +365,7 @@ const et = ({ scene: e, contextParts: n }) => {
365
365
  registerObject: r,
366
366
  deregisterObject: a
367
367
  };
368
- }, W = H({}), q = (e) => void Object.assign(W.value, e);
368
+ }, W = j({}), q = (e) => void Object.assign(W.value, e);
369
369
  function tt({
370
370
  scene: e,
371
371
  canvas: n,
@@ -374,18 +374,18 @@ function tt({
374
374
  rendererOptions: r
375
375
  }) {
376
376
  const i = _(
377
- () => w(t) ? ze() : He(w(n).parentElement)
377
+ () => w(t) ? He() : je(w(n).parentElement)
378
378
  ), l = _(() => i.value.width.value), o = _(() => i.value.height.value), s = _(() => l.value / o.value), u = {
379
379
  height: o,
380
380
  width: l,
381
381
  aspectRatio: s
382
- }, c = z(e), {
382
+ }, c = H(e), {
383
383
  camera: f,
384
384
  cameras: v,
385
385
  addCamera: C,
386
386
  removeCamera: M,
387
387
  setCameraActive: d
388
- } = je({ sizes: u, scene: e }), { renderer: g } = Ye(
388
+ } = ze({ sizes: u, scene: e }), { renderer: g } = Ye(
389
389
  {
390
390
  scene: e,
391
391
  canvas: n,
@@ -399,14 +399,14 @@ function tt({
399
399
  camera: f,
400
400
  cameras: ue(v),
401
401
  renderer: g,
402
- raycaster: z(new ke()),
403
- controls: H(null),
402
+ raycaster: H(new ke()),
403
+ controls: j(null),
404
404
  extend: q,
405
405
  addCamera: C,
406
406
  removeCamera: M,
407
407
  setCameraActive: d
408
408
  };
409
- return I("useTres", p), p;
409
+ return V("useTres", p), p;
410
410
  }
411
411
  function rt() {
412
412
  const e = le("useTres");
@@ -551,11 +551,11 @@ const ot = ["data-scene"], st = /* @__PURE__ */ U({
551
551
  failIfMajorPerformanceCaveat: { type: Boolean }
552
552
  },
553
553
  setup(e) {
554
- const n = e, { logWarning: t } = T(), a = H(), r = z(new be());
554
+ const n = e, { logWarning: t } = T(), a = j(), r = H(new be());
555
555
  ne();
556
556
  const i = fe(), l = (u) => U({
557
557
  setup() {
558
- return I("useTres", u), I("extend", q), () => J(ge, null, i != null && i.default ? i.default() : []);
558
+ return V("useTres", u), V("extend", q), () => J(ge, null, i != null && i.default ? i.default() : []);
559
559
  }
560
560
  }), o = (u) => {
561
561
  const c = l(u);
@@ -573,7 +573,7 @@ const ot = ["data-scene"], st = /* @__PURE__ */ U({
573
573
  const { addCamera: f, camera: v, cameras: C, removeCamera: M } = c;
574
574
  o(c);
575
575
  const d = () => {
576
- const g = new V(45, window.innerWidth / window.innerHeight, 0.1, 1e3);
576
+ const g = new I(45, window.innerWidth / window.innerHeight, 0.1, 1e3);
577
577
  g.position.set(3, 3, 3), g.lookAt(0, 0, 0), f(g);
578
578
  const p = L(
579
579
  () => {
@@ -600,8 +600,7 @@ const ot = ["data-scene"], st = /* @__PURE__ */ U({
600
600
  top: 0,
601
601
  left: 0,
602
602
  pointerEvents: "auto",
603
- touchAction: "none",
604
- zIndex: 1
603
+ touchAction: "none"
605
604
  })
606
605
  }, null, 12, ot));
607
606
  }
@@ -630,7 +629,7 @@ export {
630
629
  pt as normalizeVectorFlexibleParam,
631
630
  wt as templateCompilerOptions,
632
631
  Qe as trasverseObjects,
633
- je as useCamera,
632
+ ze as useCamera,
634
633
  vt as useLoader,
635
634
  T as useLogger,
636
635
  et as usePointerEventHandler,
package/dist/tres.umd.cjs CHANGED
@@ -1,8 +1,8 @@
1
1
  /**
2
2
  * name: @tresjs/core
3
- * version: v3.1.0
3
+ * version: v3.1.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(p,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):(p=typeof globalThis<"u"?globalThis:p||self,c(p.tres={},p.Vue,p.Three,p.VueUseCore))})(this,function(p,c,v,d){"use strict";function se(e){const r=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(e){for(const t in e)if(t!=="default"){const a=Object.getOwnPropertyDescriptor(e,t);Object.defineProperty(r,t,a.get?a:{enumerable:!0,get:()=>e[t]})}}return r.default=e,Object.freeze(r)}const ie=se(v),W=({sizes:e,scene:r})=>{const t=c.ref([]),a=c.computed(()=>t.value[0]),n=(o,s=!1)=>{t.value.some(({uuid:u})=>u===o.uuid)||(s?l(o):t.value.push(o))},i=o=>{t.value=t.value.filter(({uuid:s})=>s!==o.uuid)},l=o=>{const s=o instanceof v.Camera?o:t.value.find(f=>f.uuid===o);if(!s)return;const u=t.value.filter(({uuid:f})=>f!==s.uuid);t.value=[s,...u]};return c.watchEffect(()=>{e.aspectRatio.value&&t.value.forEach(o=>{o instanceof v.PerspectiveCamera&&(o.aspect=e.aspectRatio.value),(o instanceof v.PerspectiveCamera||o instanceof v.OrthographicCamera)&&o.updateProjectionMatrix()})}),r.userData.tres__registerCamera=n,r.userData.tres__deregisterCamera=i,c.onUnmounted(()=>{t.value=[]}),{camera:a,cameras:t,addCamera:n,removeCamera:i,setCameraActive:l}},I=d.createEventHook(),N=d.createEventHook(),F=d.createEventHook(),O=new v.Clock;let x=0,B=0;const{pause:ue,resume:le,isActive:ce}=d.useRafFn(()=>{I.trigger({delta:x,elapsed:B,clock:O}),N.trigger({delta:x,elapsed:B,clock:O}),F.trigger({delta:x,elapsed:B,clock:O})},{immediate:!1});F.on(()=>{x=O.getDelta(),B=O.getElapsedTime()});const G=()=>({onBeforeLoop:I.on,onLoop:N.on,onAfterLoop:F.on,pause:ue,resume:le,isActive:ce}),V={realistic:{outputColorSpace:v.SRGBColorSpace,toneMapping:v.ACESFilmicToneMapping,toneMappingExposure:3,shadowMap:{enabled:!0,type:v.PCFSoftShadowMap}}},$=(e,r)=>{for(const t of Object.keys(r))r[t]instanceof Object&&Object.assign(r[t],$(e[t],r[t]));return Object.assign(e||{},r),e},fe=me("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 q(e){return e&&e.nodeType===1}function T(e){return e.replace(/-([a-z])/g,(r,t)=>t.toUpperCase())}function me(e,r){const t=Object.create(null),a=e.split(",");for(let n=0;n<a.length;n++)t[a[n]]=!0;return r?n=>!!t[n.toLowerCase()]:n=>!!t[n]}const pe=(e,r)=>{const t=new Set,a=[];for(const n of e){const i=r(n);t.has(i)||(t.add(i),a.push(n))}return a},U=(e,r)=>{if(!r)return;const t=Array.isArray(r)?r:r.match(/([^[.\]])+/g);return t==null?void 0:t.reduce((a,n)=>a&&a[n],e)},de=(e,r,t)=>{const a=Array.isArray(r)?r:r.match(/([^[.\]])+/g);a&&a.reduce((n,i,l)=>(n[i]===void 0&&(n[i]={}),l===a.length-1&&(n[i]=t),n[i]),e)};function J(e,r){if(q(e)&&q(r)){const n=e.attributes,i=r.attributes;return n.length!==i.length?!1:Array.from(n).every(({name:l,value:o})=>r.getAttribute(l)===o)}if(e===r)return!0;if(e===null||typeof e!="object"||r===null||typeof r!="object")return!1;const t=Object.keys(e),a=Object.keys(r);if(t.length!==a.length)return!1;for(const n of t)if(!a.includes(n)||!J(e[n],r[n]))return!1;return!0}function ge(e,r){if(!Array.isArray(e)||!Array.isArray(r)||e.length!==r.length)return!1;for(let t=0;t<e.length;t++)if(!J(e[t],r[t]))return!1;return!0}const ve=!0,K="[TresJS ▲ ■ ●] ";function A(){function e(a,n){console.error(`${K} ${a}`,n||"")}function r(a){console.warn(`${K} ${a}`)}function t(a,n){}return{logError:e,logWarning:r,logMessage:t}}function ye(e){return typeof e=="number"?[e,e,e]:e instanceof v.Vector3?[e.x,e.y,e.z]:e}function X(e){return e instanceof v.Color?e:Array.isArray(e)?new v.Color(...e):new v.Color(e)}const we=Number.parseInt(v.REVISION.replace("dev",""));function Y({scene:e,canvas:r,options:t,disableRender:a,contextParts:{sizes:n,camera:i}}){const l=c.computed(()=>({alpha:d.toValue(t.alpha),depth:d.toValue(t.depth),canvas:d.unrefElement(r),context:d.toValue(t.context),stencil:d.toValue(t.stencil),antialias:d.toValue(t.antialias)===void 0?!0:d.toValue(t.antialias),precision:d.toValue(t.precision),powerPreference:d.toValue(t.powerPreference),premultipliedAlpha:d.toValue(t.premultipliedAlpha),preserveDrawingBuffer:d.toValue(t.preserveDrawingBuffer),logarithmicDepthBuffer:d.toValue(t.logarithmicDepthBuffer),failIfMajorPerformanceCaveat:d.toValue(t.failIfMajorPerformanceCaveat)})),o=c.shallowRef(new v.WebGLRenderer(l.value));c.watch(l,()=>{o.value.dispose(),o.value=new v.WebGLRenderer(l.value)}),c.watchEffect(()=>{o.value.setSize(n.width.value,n.height.value)});const{pixelRatio:s}=d.useDevicePixelRatio();c.watchEffect(()=>{o.value.setPixelRatio(s.value)});const{logError:u}=A(),m=(()=>{const C=new v.WebGLRenderer,P={shadowMap:{enabled:C.shadowMap.enabled,type:C.shadowMap.type},toneMapping:C.toneMapping,toneMappingExposure:C.toneMappingExposure,outputColorSpace:C.outputColorSpace};return C.dispose(),P})();c.watchEffect(()=>{const C=d.toValue(t.preset);C&&(C in V||u("Renderer Preset must be one of these: "+Object.keys(V).join(", ")),$(o.value,V[C]));const P=(D,k)=>{const S=d.toValue(D),z=()=>{if(C)return U(V[C],k)};if(S!==void 0)return S;const g=z();return g!==void 0?g:U(m,k)},y=(D,k)=>de(o.value,k,P(D,k));y(t.shadows,"shadowMap.enabled"),y(t.toneMapping,"toneMapping"),y(t.shadowMapType,"shadowMap.type"),we<150&&y(!t.useLegacyLights,"physicallyCorrectLights"),y(t.outputColorSpace,"outputColorSpace"),y(t.toneMappingExposure,"toneMappingExposure");const L=P(t.clearColor,"clearColor");L&&o.value.setClearColor(L?X(L):new v.Color(0))});const{pause:w,resume:_,onLoop:b}=G();return b(()=>{i.value&&!d.toValue(a)&&o.value.render(e,i.value)}),_(),c.onUnmounted(()=>{w(),o.value.dispose(),o.value.forceContextLoss()}),{renderer:o}}const Q=e=>typeof e=="function",Z=e=>!!e&&e.constructor===Array;function H(e){const r={nodes:{},materials:{}};return e&&e.traverse(t=>{t.name&&(r.nodes[t.name]=t),t.material&&!r.materials[t.material.name]&&(r.materials[t.material.name]=t.material)}),r}async function Ce(e,r,t,a,n){const{logError:i}=A(),l=new e;n&&n(l),t&&t(l);const s=(Array.isArray(r)?r:[r]).map(u=>new Promise((f,m)=>{l.load(u,w=>{w.scene&&Object.assign(w,H(w.scene)),f(w)},a,w=>m(i("[useLoader] - Failed to load resource",w)))}));return Z(r)?await Promise.all(s):await s[0]}async function Pe(e){const r=new v.LoadingManager,t=new v.TextureLoader(r),a=n=>new Promise((i,l)=>{t.load(n,o=>i(o),()=>null,()=>{l(new Error("[useTextures] - Failed to load texture"))})});if(Z(e)){const n=await Promise.all(e.map(i=>a(i)));return e.length>1?n:n[0]}else{const{map:n,displacementMap:i,normalMap:l,roughnessMap:o,metalnessMap:s,aoMap:u,alphaMap:f,matcap:m}=e;return{map:n?await a(n):null,displacementMap:i?await a(i):null,normalMap:l?await a(l):null,roughnessMap:o?await a(o):null,metalnessMap:s?await a(s):null,aoMap:u?await a(u):null,alphaMap:f?await a(f):null,matcap:m?await a(m):null}}}const ee=(e,{renderer:r,camera:t,raycaster:a})=>{const n=c.computed(()=>r.value.domElement),{x:i,y:l}=d.usePointer({target:n}),{width:o,height:s,top:u,left:f}=d.useElementBounding(n),m=({x:g,y:h})=>{if(n.value)return{x:(g-f.value)/o.value*2-1,y:-((h-u.value)/s.value)*2+1}},w=({x:g,y:h})=>{if(t.value)return a.value.setFromCamera(new v.Vector2(g,h),t.value),a.value.intersectObjects(e.value,!1)},_=g=>{const h=m({x:(g==null?void 0:g.clientX)??i.value,y:(g==null?void 0:g.clientY)??l.value});return h?w(h)||[]:[]},b=c.computed(()=>_()),C=d.createEventHook(),P=d.createEventHook(),y=(g,h)=>{g.trigger({event:h,intersects:_(h)})},L=g=>{y(P,g)};let D;const k=g=>{var h;D=(h=_(g)[0])==null?void 0:h.object},S=g=>{var h;g instanceof PointerEvent&&D===((h=_(g)[0])==null?void 0:h.object)&&y(C,g)},z=g=>P.trigger({event:g,intersects:[]});return n.value.addEventListener("pointerup",S),n.value.addEventListener("pointerdown",k),n.value.addEventListener("pointermove",L),n.value.addEventListener("pointerleave",z),c.onUnmounted(()=>{n!=null&&n.value&&(n.value.removeEventListener("pointerup",S),n.value.removeEventListener("pointerdown",k),n.value.removeEventListener("pointermove",L),n.value.removeEventListener("pointerleave",z))}),{intersects:b,onClick:g=>C.on(g).off,onPointerMove:g=>P.on(g).off}};function Me(){const{logWarning:e}=A();function r(a,n,i){let l=null;return a.traverse(o=>{o[n]===i&&(l=o)}),l||e(`Child with ${n} '${i}' not found.`),l}function t(a,n){return r(a,"name",n)}return{seek:r,seekByName:t}}const te=({scene:e,contextParts:r})=>{const t=c.reactive({click:new Map,pointerMove:new Map,pointerEnter:new Map,pointerLeave:new Map}),a=u=>{Object.values(t).forEach(f=>f.delete(u))},n=u=>{const{onClick:f,onPointerMove:m,onPointerEnter:w,onPointerLeave:_}=u;f&&t.click.set(u,f),m&&t.pointerMove.set(u,m),w&&t.pointerEnter.set(u,w),_&&t.pointerLeave.set(u,_)};e.userData.tres__registerAtPointerEventHandler=n,e.userData.tres__deregisterAtPointerEventHandler=a;const i=c.computed(()=>pe(Object.values(t).map(u=>Array.from(u.keys())).flat(),({uuid:u})=>u)),{onClick:l,onPointerMove:o}=ee(i,r);l(({intersects:u,event:f})=>{var m;u.length&&((m=t.click.get(u[0].object))==null||m(u[0],f))});let s;return o(({intersects:u,event:f})=>{var C,P,y,L;const m=(C=u==null?void 0:u[0])==null?void 0:C.object,{pointerLeave:w,pointerEnter:_,pointerMove:b}=t;s&&s!==m&&((P=w.get(s))==null||P(s,f)),m&&(s!==m&&((y=_.get(m))==null||y(u[0],f)),(L=b.get(m))==null||L(u[0],f)),s=m||null}),{registerObject:n,deregisterObject:a}},j=c.ref({}),E=e=>void Object.assign(j.value,e);function ne({scene:e,canvas:r,windowSize:t,disableRender:a,rendererOptions:n}){const i=c.computed(()=>d.toValue(t)?d.useWindowSize():d.useElementSize(d.toValue(r).parentElement)),l=c.computed(()=>i.value.width.value),o=c.computed(()=>i.value.height.value),s=c.computed(()=>l.value/o.value),u={height:o,width:l,aspectRatio:s},f=c.shallowRef(e),{camera:m,cameras:w,addCamera:_,removeCamera:b,setCameraActive:C}=W({sizes:u,scene:e}),{renderer:P}=Y({scene:e,canvas:r,options:n,contextParts:{sizes:u,camera:m},disableRender:a}),y={sizes:u,scene:f,camera:m,cameras:c.readonly(w),renderer:P,raycaster:c.shallowRef(new v.Raycaster),controls:c.ref(null),extend:E,addCamera:_,removeCamera:b,setCameraActive:C};return c.provide("useTres",y),y}function re(){const e=c.inject("useTres");if(!e)throw new Error("useTresContext must be used together with useTresContextProvider");return e}const _e=re;function Se(e){}let R=null,M=null;const{logError:ae}=A(),he={createElement(e,r,t,a){var l,o;if(a||(a={}),a.args||(a.args=[]),e==="template"||fe(e))return null;let n=e.replace("Tres",""),i;if(e==="primitive"){(a==null?void 0:a.object)===void 0&&ae("Tres primitives need a prop 'object'");const s=a.object;n=s.type,i=Object.assign(s,{type:n,attach:a.attach,primitive:!0})}else{const s=j.value[n];s||ae(`${n} is not defined on the THREE namespace. Use extend to add it to the catalog.`),i=new s(...a.args)}return i.isCamera&&(a!=null&&a.position||i.position.set(3,3,3),a!=null&&a.lookAt||i.lookAt(0,0,0)),(a==null?void 0:a.attach)===void 0&&(i.isMaterial?i.attach="material":i.isBufferGeometry&&(i.attach="geometry")),i.isObject3D&&((l=a==null?void 0:a.material)!=null&&l.isMaterial&&(i.userData.tres__materialViaProp=!0),(o=a==null?void 0:a.geometry)!=null&&o.isBufferGeometry&&(i.userData.tres__geometryViaProp=!0)),i.userData={...i.userData,tres__name:n},i},insert(e,r){var t,a,n,i,l,o,s,u,f;if(r&&r.isScene&&(M=r),(((t=e==null?void 0:e.__vnode)==null?void 0:t.type)==="TresGroup"||((a=e==null?void 0:e.__vnode)==null?void 0:a.type)==="TresObject3D")&&r===null&&!((i=(n=e==null?void 0:e.__vnode)==null?void 0:n.ctx)!=null&&i.asyncResolved)){R=e;return}else(l=e==null?void 0:e.__vnode)!=null&&l.type.includes("Controls")&&r===null&&(R=M);if(r||(r=R),e!=null&&e.isObject3D){if(e!=null&&e.isCamera){if(!(M!=null&&M.userData.tres__registerCamera))throw"could not find tres__registerCamera on scene's userData";(s=M==null?void 0:(o=M.userData).tres__registerCamera)==null||s.call(o,e)}if(e!=null&&e.onClick||e!=null&&e.onPointerMove||e!=null&&e.onPointerEnter||e!=null&&e.onPointerLeave){if(!(M!=null&&M.userData.tres__registerAtPointerEventHandler))throw"could not find tres__registerAtPointerEventHandler on scene's userData";(f=M==null?void 0:(u=M.userData).tres__registerAtPointerEventHandler)==null||f.call(u,e)}}e!=null&&e.isObject3D&&(r!=null&&r.isObject3D)?(r.add(e),e.dispatchEvent({type:"added"})):e!=null&&e.isFog?r.fog=e:typeof(e==null?void 0:e.attach)=="string"&&(e.__previousAttach=e[r==null?void 0:r.attach],r&&(r[e.attach]=e))},remove(e){var r,t;if(e){if(e.isObject3D){const a=e,n=s=>{var f,m;const u=s;s.userData.tres__materialViaProp||(f=u.material)==null||f.dispose(),s.userData.tres__geometryViaProp||(m=u.geometry)==null||m.dispose()},i=M==null?void 0:M.userData.tres__deregisterAtPointerEventHandler,l=s=>{if(!i)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)&&(i==null||i(s))},o=s=>{const u=M==null?void 0:M.userData.tres__deregisterCamera;if(!u)throw"could not find tres__deregisterCamera on scene's userData";s.isCamera&&(u==null||u(s))};a.traverse(s=>{n(s),o(s),l==null||l(s)}),n(a),o(a),l==null||l(a)}(r=e.removeFromParent)==null||r.call(e),(t=e.dispose)==null||t.call(e)}},patchProp(e,r,t,a){if(e){let n=e,i=r,l=T(i),o=n==null?void 0:n[l];if(i==="args"){const u=e,f=t??[],m=a??[],w=e.userData.tres__name||e.type;w&&f.length&&!ge(f,m)&&(n=Object.assign(u,new j.value[w](...a)));return}if(n.type==="BufferGeometry"){if(i==="args")return;n.setAttribute(T(i),new v.BufferAttribute(...a));return}if(i.includes("-")&&o===void 0){const u=i.split("-");o=u.reduce((f,m)=>f[T(m)],n),i=u.pop(),l=i.toLowerCase(),o!=null&&o.set||(n=u.reduce((f,m)=>f[T(m)],n))}let s=a;if(s===""&&(s=!0),Q(o)){Array.isArray(s)?e[l](...s):e[l](s);return}!(o!=null&&o.set)&&!Q(o)?n[l]=s:o.constructor===s.constructor&&(o!=null&&o.copy)?o==null||o.copy(s):Array.isArray(s)?o.set(...s):!o.isColor&&o.setScalar?o.setScalar(s):o.set(s)}},parentNode(e){return(e==null?void 0:e.parent)||null},createText:()=>void 0,createComment:()=>void 0,setText:()=>void 0,setElementText:()=>void 0,nextSibling:()=>void 0,querySelector:()=>void 0,setScopeId:()=>void 0,cloneNode:()=>void 0,insertStaticContent:()=>void 0},{render:be}=c.createRenderer(he);E(ie);const Le=["data-scene"],oe=c.defineComponent({__name:"TresCanvas",props:{shadows:{type:Boolean},clearColor:{},toneMapping:{},shadowMapType:{},useLegacyLights:{type:Boolean},outputColorSpace:{},toneMappingExposure:{},windowSize:{type:Boolean},preset:{},disableRender:{type:Boolean},camera:{},context:{},precision:{},alpha:{type:Boolean,default:!1},premultipliedAlpha:{type:Boolean},antialias:{type:Boolean,default:!0},stencil:{type:Boolean,default:!0},preserveDrawingBuffer:{type:Boolean,default:!1},powerPreference:{},depth:{type:Boolean,default:!0},logarithmicDepthBuffer:{type:Boolean},failIfMajorPerformanceCaveat:{type:Boolean}},setup(e){const r=e,{logWarning:t}=A(),a=c.ref(),n=c.shallowRef(new v.Scene);G();const i=c.useSlots(),l=u=>c.defineComponent({setup(){return c.provide("useTres",u),c.provide("extend",E),()=>c.h(c.Fragment,null,i!=null&&i.default?i.default():[])}}),o=u=>{const f=l(u);be(c.h(f),n.value)},s=c.computed(()=>r.disableRender);return c.onMounted(()=>{const u=a,f=ne({scene:n.value,canvas:u,windowSize:r.windowSize,disableRender:s,rendererOptions:r});te({scene:n.value,contextParts:f});const{addCamera:m,camera:w,cameras:_,removeCamera:b}=f;o(f);const C=()=>{const P=new v.PerspectiveCamera(45,window.innerWidth/window.innerHeight,.1,1e3);P.position.set(3,3,3),P.lookAt(0,0,0),m(P);const y=c.watchEffect(()=>{_.value.length>=2&&(P.removeFromParent(),b(P),y==null||y())})};c.watch(()=>r.camera,(P,y)=>{P?m(P):y&&(y.removeFromParent(),b(y))},{immediate:!0}),w.value||(t("No camera found. Creating a default perspective camera. To have full control over a camera, please add one to the scene."),C())}),(u,f)=>(c.openBlock(),c.createElementBlock("canvas",{ref_key:"canvas",ref:a,"data-scene":n.value.uuid,style:c.normalizeStyle({display:"block",width:"100%",height:"100%",position:u.windowSize?"fixed":"relative",top:0,left:0,pointerEvents:"auto",touchAction:"none",zIndex:1})},null,12,Le))}}),ke=["TresCanvas","TresLeches","TresScene"],Ae={template:{compilerOptions:{isCustomElement:e=>e.startsWith("Tres")&&!ke.includes(e)||e==="primitive"}}},De={install(e){e.component("TresCanvas",oe)}};p.TresCanvas=oe,p.catalogue=j,p.default=De,p.extend=E,p.isProd=ve,p.normalizeColor=X,p.normalizeVectorFlexibleParam=ye,p.templateCompilerOptions=Ae,p.trasverseObjects=H,p.useCamera=W,p.useLoader=Ce,p.useLogger=A,p.usePointerEventHandler=te,p.useRaycaster=ee,p.useRenderLoop=G,p.useRenderer=Y,p.useSeek=Me,p.useTexture=Pe,p.useTres=_e,p.useTresContext=re,p.useTresContextProvider=ne,Object.defineProperties(p,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}})});
8
+ (function(p,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):(p=typeof globalThis<"u"?globalThis:p||self,c(p.tres={},p.Vue,p.Three,p.VueUseCore))})(this,function(p,c,v,d){"use strict";function se(e){const r=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(e){for(const t in e)if(t!=="default"){const a=Object.getOwnPropertyDescriptor(e,t);Object.defineProperty(r,t,a.get?a:{enumerable:!0,get:()=>e[t]})}}return r.default=e,Object.freeze(r)}const ie=se(v),W=({sizes:e,scene:r})=>{const t=c.ref([]),a=c.computed(()=>t.value[0]),n=(o,s=!1)=>{t.value.some(({uuid:u})=>u===o.uuid)||(s?l(o):t.value.push(o))},i=o=>{t.value=t.value.filter(({uuid:s})=>s!==o.uuid)},l=o=>{const s=o instanceof v.Camera?o:t.value.find(f=>f.uuid===o);if(!s)return;const u=t.value.filter(({uuid:f})=>f!==s.uuid);t.value=[s,...u]};return c.watchEffect(()=>{e.aspectRatio.value&&t.value.forEach(o=>{o instanceof v.PerspectiveCamera&&(o.aspect=e.aspectRatio.value),(o instanceof v.PerspectiveCamera||o instanceof v.OrthographicCamera)&&o.updateProjectionMatrix()})}),r.userData.tres__registerCamera=n,r.userData.tres__deregisterCamera=i,c.onUnmounted(()=>{t.value=[]}),{camera:a,cameras:t,addCamera:n,removeCamera:i,setCameraActive:l}},I=d.createEventHook(),N=d.createEventHook(),F=d.createEventHook(),O=new v.Clock;let B=0,x=0;const{pause:ue,resume:le,isActive:ce}=d.useRafFn(()=>{I.trigger({delta:B,elapsed:x,clock:O}),N.trigger({delta:B,elapsed:x,clock:O}),F.trigger({delta:B,elapsed:x,clock:O})},{immediate:!1});F.on(()=>{B=O.getDelta(),x=O.getElapsedTime()});const G=()=>({onBeforeLoop:I.on,onLoop:N.on,onAfterLoop:F.on,pause:ue,resume:le,isActive:ce}),V={realistic:{outputColorSpace:v.SRGBColorSpace,toneMapping:v.ACESFilmicToneMapping,toneMappingExposure:3,shadowMap:{enabled:!0,type:v.PCFSoftShadowMap}}},$=(e,r)=>{for(const t of Object.keys(r))r[t]instanceof Object&&Object.assign(r[t],$(e[t],r[t]));return Object.assign(e||{},r),e},fe=me("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 q(e){return e&&e.nodeType===1}function T(e){return e.replace(/-([a-z])/g,(r,t)=>t.toUpperCase())}function me(e,r){const t=Object.create(null),a=e.split(",");for(let n=0;n<a.length;n++)t[a[n]]=!0;return r?n=>!!t[n.toLowerCase()]:n=>!!t[n]}const pe=(e,r)=>{const t=new Set,a=[];for(const n of e){const i=r(n);t.has(i)||(t.add(i),a.push(n))}return a},U=(e,r)=>{if(!r)return;const t=Array.isArray(r)?r:r.match(/([^[.\]])+/g);return t==null?void 0:t.reduce((a,n)=>a&&a[n],e)},de=(e,r,t)=>{const a=Array.isArray(r)?r:r.match(/([^[.\]])+/g);a&&a.reduce((n,i,l)=>(n[i]===void 0&&(n[i]={}),l===a.length-1&&(n[i]=t),n[i]),e)};function J(e,r){if(q(e)&&q(r)){const n=e.attributes,i=r.attributes;return n.length!==i.length?!1:Array.from(n).every(({name:l,value:o})=>r.getAttribute(l)===o)}if(e===r)return!0;if(e===null||typeof e!="object"||r===null||typeof r!="object")return!1;const t=Object.keys(e),a=Object.keys(r);if(t.length!==a.length)return!1;for(const n of t)if(!a.includes(n)||!J(e[n],r[n]))return!1;return!0}function ge(e,r){if(!Array.isArray(e)||!Array.isArray(r)||e.length!==r.length)return!1;for(let t=0;t<e.length;t++)if(!J(e[t],r[t]))return!1;return!0}const ve=!0,K="[TresJS ▲ ■ ●] ";function A(){function e(a,n){console.error(`${K} ${a}`,n||"")}function r(a){console.warn(`${K} ${a}`)}function t(a,n){}return{logError:e,logWarning:r,logMessage:t}}function ye(e){return typeof e=="number"?[e,e,e]:e instanceof v.Vector3?[e.x,e.y,e.z]:e}function X(e){return e instanceof v.Color?e:Array.isArray(e)?new v.Color(...e):new v.Color(e)}const we=Number.parseInt(v.REVISION.replace("dev",""));function Y({scene:e,canvas:r,options:t,disableRender:a,contextParts:{sizes:n,camera:i}}){const l=c.computed(()=>({alpha:d.toValue(t.alpha),depth:d.toValue(t.depth),canvas:d.unrefElement(r),context:d.toValue(t.context),stencil:d.toValue(t.stencil),antialias:d.toValue(t.antialias)===void 0?!0:d.toValue(t.antialias),precision:d.toValue(t.precision),powerPreference:d.toValue(t.powerPreference),premultipliedAlpha:d.toValue(t.premultipliedAlpha),preserveDrawingBuffer:d.toValue(t.preserveDrawingBuffer),logarithmicDepthBuffer:d.toValue(t.logarithmicDepthBuffer),failIfMajorPerformanceCaveat:d.toValue(t.failIfMajorPerformanceCaveat)})),o=c.shallowRef(new v.WebGLRenderer(l.value));c.watch(l,()=>{o.value.dispose(),o.value=new v.WebGLRenderer(l.value)}),c.watchEffect(()=>{o.value.setSize(n.width.value,n.height.value)});const{pixelRatio:s}=d.useDevicePixelRatio();c.watchEffect(()=>{o.value.setPixelRatio(s.value)});const{logError:u}=A(),m=(()=>{const C=new v.WebGLRenderer,P={shadowMap:{enabled:C.shadowMap.enabled,type:C.shadowMap.type},toneMapping:C.toneMapping,toneMappingExposure:C.toneMappingExposure,outputColorSpace:C.outputColorSpace};return C.dispose(),P})();c.watchEffect(()=>{const C=d.toValue(t.preset);C&&(C in V||u("Renderer Preset must be one of these: "+Object.keys(V).join(", ")),$(o.value,V[C]));const P=(D,k)=>{const S=d.toValue(D),z=()=>{if(C)return U(V[C],k)};if(S!==void 0)return S;const g=z();return g!==void 0?g:U(m,k)},y=(D,k)=>de(o.value,k,P(D,k));y(t.shadows,"shadowMap.enabled"),y(t.toneMapping,"toneMapping"),y(t.shadowMapType,"shadowMap.type"),we<150&&y(!t.useLegacyLights,"physicallyCorrectLights"),y(t.outputColorSpace,"outputColorSpace"),y(t.toneMappingExposure,"toneMappingExposure");const L=P(t.clearColor,"clearColor");L&&o.value.setClearColor(L?X(L):new v.Color(0))});const{pause:w,resume:_,onLoop:b}=G();return b(()=>{i.value&&!d.toValue(a)&&o.value.render(e,i.value)}),_(),c.onUnmounted(()=>{w(),o.value.dispose(),o.value.forceContextLoss()}),{renderer:o}}const Q=e=>typeof e=="function",Z=e=>!!e&&e.constructor===Array;function H(e){const r={nodes:{},materials:{}};return e&&e.traverse(t=>{t.name&&(r.nodes[t.name]=t),t.material&&!r.materials[t.material.name]&&(r.materials[t.material.name]=t.material)}),r}async function Ce(e,r,t,a,n){const{logError:i}=A(),l=new e;n&&n(l),t&&t(l);const s=(Array.isArray(r)?r:[r]).map(u=>new Promise((f,m)=>{l.load(u,w=>{w.scene&&Object.assign(w,H(w.scene)),f(w)},a,w=>m(i("[useLoader] - Failed to load resource",w)))}));return Z(r)?await Promise.all(s):await s[0]}async function Pe(e){const r=new v.LoadingManager,t=new v.TextureLoader(r),a=n=>new Promise((i,l)=>{t.load(n,o=>i(o),()=>null,()=>{l(new Error("[useTextures] - Failed to load texture"))})});if(Z(e)){const n=await Promise.all(e.map(i=>a(i)));return e.length>1?n:n[0]}else{const{map:n,displacementMap:i,normalMap:l,roughnessMap:o,metalnessMap:s,aoMap:u,alphaMap:f,matcap:m}=e;return{map:n?await a(n):null,displacementMap:i?await a(i):null,normalMap:l?await a(l):null,roughnessMap:o?await a(o):null,metalnessMap:s?await a(s):null,aoMap:u?await a(u):null,alphaMap:f?await a(f):null,matcap:m?await a(m):null}}}const ee=(e,{renderer:r,camera:t,raycaster:a})=>{const n=c.computed(()=>r.value.domElement),{x:i,y:l}=d.usePointer({target:n}),{width:o,height:s,top:u,left:f}=d.useElementBounding(n),m=({x:g,y:h})=>{if(n.value)return{x:(g-f.value)/o.value*2-1,y:-((h-u.value)/s.value)*2+1}},w=({x:g,y:h})=>{if(t.value)return a.value.setFromCamera(new v.Vector2(g,h),t.value),a.value.intersectObjects(e.value,!1)},_=g=>{const h=m({x:(g==null?void 0:g.clientX)??i.value,y:(g==null?void 0:g.clientY)??l.value});return h?w(h)||[]:[]},b=c.computed(()=>_()),C=d.createEventHook(),P=d.createEventHook(),y=(g,h)=>{g.trigger({event:h,intersects:_(h)})},L=g=>{y(P,g)};let D;const k=g=>{var h;D=(h=_(g)[0])==null?void 0:h.object},S=g=>{var h;g instanceof PointerEvent&&D===((h=_(g)[0])==null?void 0:h.object)&&y(C,g)},z=g=>P.trigger({event:g,intersects:[]});return n.value.addEventListener("pointerup",S),n.value.addEventListener("pointerdown",k),n.value.addEventListener("pointermove",L),n.value.addEventListener("pointerleave",z),c.onUnmounted(()=>{n!=null&&n.value&&(n.value.removeEventListener("pointerup",S),n.value.removeEventListener("pointerdown",k),n.value.removeEventListener("pointermove",L),n.value.removeEventListener("pointerleave",z))}),{intersects:b,onClick:g=>C.on(g).off,onPointerMove:g=>P.on(g).off}};function Me(){const{logWarning:e}=A();function r(a,n,i){let l=null;return a.traverse(o=>{o[n]===i&&(l=o)}),l||e(`Child with ${n} '${i}' not found.`),l}function t(a,n){return r(a,"name",n)}return{seek:r,seekByName:t}}const te=({scene:e,contextParts:r})=>{const t=c.reactive({click:new Map,pointerMove:new Map,pointerEnter:new Map,pointerLeave:new Map}),a=u=>{Object.values(t).forEach(f=>f.delete(u))},n=u=>{const{onClick:f,onPointerMove:m,onPointerEnter:w,onPointerLeave:_}=u;f&&t.click.set(u,f),m&&t.pointerMove.set(u,m),w&&t.pointerEnter.set(u,w),_&&t.pointerLeave.set(u,_)};e.userData.tres__registerAtPointerEventHandler=n,e.userData.tres__deregisterAtPointerEventHandler=a;const i=c.computed(()=>pe(Object.values(t).map(u=>Array.from(u.keys())).flat(),({uuid:u})=>u)),{onClick:l,onPointerMove:o}=ee(i,r);l(({intersects:u,event:f})=>{var m;u.length&&((m=t.click.get(u[0].object))==null||m(u[0],f))});let s;return o(({intersects:u,event:f})=>{var C,P,y,L;const m=(C=u==null?void 0:u[0])==null?void 0:C.object,{pointerLeave:w,pointerEnter:_,pointerMove:b}=t;s&&s!==m&&((P=w.get(s))==null||P(s,f)),m&&(s!==m&&((y=_.get(m))==null||y(u[0],f)),(L=b.get(m))==null||L(u[0],f)),s=m||null}),{registerObject:n,deregisterObject:a}},j=c.ref({}),E=e=>void Object.assign(j.value,e);function ne({scene:e,canvas:r,windowSize:t,disableRender:a,rendererOptions:n}){const i=c.computed(()=>d.toValue(t)?d.useWindowSize():d.useElementSize(d.toValue(r).parentElement)),l=c.computed(()=>i.value.width.value),o=c.computed(()=>i.value.height.value),s=c.computed(()=>l.value/o.value),u={height:o,width:l,aspectRatio:s},f=c.shallowRef(e),{camera:m,cameras:w,addCamera:_,removeCamera:b,setCameraActive:C}=W({sizes:u,scene:e}),{renderer:P}=Y({scene:e,canvas:r,options:n,contextParts:{sizes:u,camera:m},disableRender:a}),y={sizes:u,scene:f,camera:m,cameras:c.readonly(w),renderer:P,raycaster:c.shallowRef(new v.Raycaster),controls:c.ref(null),extend:E,addCamera:_,removeCamera:b,setCameraActive:C};return c.provide("useTres",y),y}function re(){const e=c.inject("useTres");if(!e)throw new Error("useTresContext must be used together with useTresContextProvider");return e}const _e=re;function Se(e){}let R=null,M=null;const{logError:ae}=A(),he={createElement(e,r,t,a){var l,o;if(a||(a={}),a.args||(a.args=[]),e==="template"||fe(e))return null;let n=e.replace("Tres",""),i;if(e==="primitive"){(a==null?void 0:a.object)===void 0&&ae("Tres primitives need a prop 'object'");const s=a.object;n=s.type,i=Object.assign(s,{type:n,attach:a.attach,primitive:!0})}else{const s=j.value[n];s||ae(`${n} is not defined on the THREE namespace. Use extend to add it to the catalog.`),i=new s(...a.args)}return i.isCamera&&(a!=null&&a.position||i.position.set(3,3,3),a!=null&&a.lookAt||i.lookAt(0,0,0)),(a==null?void 0:a.attach)===void 0&&(i.isMaterial?i.attach="material":i.isBufferGeometry&&(i.attach="geometry")),i.isObject3D&&((l=a==null?void 0:a.material)!=null&&l.isMaterial&&(i.userData.tres__materialViaProp=!0),(o=a==null?void 0:a.geometry)!=null&&o.isBufferGeometry&&(i.userData.tres__geometryViaProp=!0)),i.userData={...i.userData,tres__name:n},i},insert(e,r){var t,a,n,i,l,o,s,u,f;if(r&&r.isScene&&(M=r),(((t=e==null?void 0:e.__vnode)==null?void 0:t.type)==="TresGroup"||((a=e==null?void 0:e.__vnode)==null?void 0:a.type)==="TresObject3D")&&r===null&&!((i=(n=e==null?void 0:e.__vnode)==null?void 0:n.ctx)!=null&&i.asyncResolved)){R=e;return}else(l=e==null?void 0:e.__vnode)!=null&&l.type.includes("Controls")&&r===null&&(R=M);if(r||(r=R),e!=null&&e.isObject3D){if(e!=null&&e.isCamera){if(!(M!=null&&M.userData.tres__registerCamera))throw"could not find tres__registerCamera on scene's userData";(s=M==null?void 0:(o=M.userData).tres__registerCamera)==null||s.call(o,e)}if(e!=null&&e.onClick||e!=null&&e.onPointerMove||e!=null&&e.onPointerEnter||e!=null&&e.onPointerLeave){if(!(M!=null&&M.userData.tres__registerAtPointerEventHandler))throw"could not find tres__registerAtPointerEventHandler on scene's userData";(f=M==null?void 0:(u=M.userData).tres__registerAtPointerEventHandler)==null||f.call(u,e)}}e!=null&&e.isObject3D&&(r!=null&&r.isObject3D)?(r.add(e),e.dispatchEvent({type:"added"})):e!=null&&e.isFog?r.fog=e:typeof(e==null?void 0:e.attach)=="string"&&(e.__previousAttach=e[r==null?void 0:r.attach],r&&(r[e.attach]=e))},remove(e){var r,t;if(e){if(e.isObject3D){const a=e,n=s=>{var f,m;const u=s;s.userData.tres__materialViaProp||(f=u.material)==null||f.dispose(),s.userData.tres__geometryViaProp||(m=u.geometry)==null||m.dispose()},i=M==null?void 0:M.userData.tres__deregisterAtPointerEventHandler,l=s=>{if(!i)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)&&(i==null||i(s))},o=s=>{const u=M==null?void 0:M.userData.tres__deregisterCamera;if(!u)throw"could not find tres__deregisterCamera on scene's userData";s.isCamera&&(u==null||u(s))};a.traverse(s=>{n(s),o(s),l==null||l(s)}),n(a),o(a),l==null||l(a)}(r=e.removeFromParent)==null||r.call(e),(t=e.dispose)==null||t.call(e)}},patchProp(e,r,t,a){if(e){let n=e,i=r,l=T(i),o=n==null?void 0:n[l];if(i==="args"){const u=e,f=t??[],m=a??[],w=e.userData.tres__name||e.type;w&&f.length&&!ge(f,m)&&(n=Object.assign(u,new j.value[w](...a)));return}if(n.type==="BufferGeometry"){if(i==="args")return;n.setAttribute(T(i),new v.BufferAttribute(...a));return}if(i.includes("-")&&o===void 0){const u=i.split("-");o=u.reduce((f,m)=>f[T(m)],n),i=u.pop(),l=i.toLowerCase(),o!=null&&o.set||(n=u.reduce((f,m)=>f[T(m)],n))}let s=a;if(s===""&&(s=!0),Q(o)){Array.isArray(s)?e[l](...s):e[l](s);return}!(o!=null&&o.set)&&!Q(o)?n[l]=s:o.constructor===s.constructor&&(o!=null&&o.copy)?o==null||o.copy(s):Array.isArray(s)?o.set(...s):!o.isColor&&o.setScalar?o.setScalar(s):o.set(s)}},parentNode(e){return(e==null?void 0:e.parent)||null},createText:()=>void 0,createComment:()=>void 0,setText:()=>void 0,setElementText:()=>void 0,nextSibling:()=>void 0,querySelector:()=>void 0,setScopeId:()=>void 0,cloneNode:()=>void 0,insertStaticContent:()=>void 0},{render:be}=c.createRenderer(he);E(ie);const Le=["data-scene"],oe=c.defineComponent({__name:"TresCanvas",props:{shadows:{type:Boolean},clearColor:{},toneMapping:{},shadowMapType:{},useLegacyLights:{type:Boolean},outputColorSpace:{},toneMappingExposure:{},windowSize:{type:Boolean},preset:{},disableRender:{type:Boolean},camera:{},context:{},precision:{},alpha:{type:Boolean,default:!1},premultipliedAlpha:{type:Boolean},antialias:{type:Boolean,default:!0},stencil:{type:Boolean,default:!0},preserveDrawingBuffer:{type:Boolean,default:!1},powerPreference:{},depth:{type:Boolean,default:!0},logarithmicDepthBuffer:{type:Boolean},failIfMajorPerformanceCaveat:{type:Boolean}},setup(e){const r=e,{logWarning:t}=A(),a=c.ref(),n=c.shallowRef(new v.Scene);G();const i=c.useSlots(),l=u=>c.defineComponent({setup(){return c.provide("useTres",u),c.provide("extend",E),()=>c.h(c.Fragment,null,i!=null&&i.default?i.default():[])}}),o=u=>{const f=l(u);be(c.h(f),n.value)},s=c.computed(()=>r.disableRender);return c.onMounted(()=>{const u=a,f=ne({scene:n.value,canvas:u,windowSize:r.windowSize,disableRender:s,rendererOptions:r});te({scene:n.value,contextParts:f});const{addCamera:m,camera:w,cameras:_,removeCamera:b}=f;o(f);const C=()=>{const P=new v.PerspectiveCamera(45,window.innerWidth/window.innerHeight,.1,1e3);P.position.set(3,3,3),P.lookAt(0,0,0),m(P);const y=c.watchEffect(()=>{_.value.length>=2&&(P.removeFromParent(),b(P),y==null||y())})};c.watch(()=>r.camera,(P,y)=>{P?m(P):y&&(y.removeFromParent(),b(y))},{immediate:!0}),w.value||(t("No camera found. Creating a default perspective camera. To have full control over a camera, please add one to the scene."),C())}),(u,f)=>(c.openBlock(),c.createElementBlock("canvas",{ref_key:"canvas",ref:a,"data-scene":n.value.uuid,style:c.normalizeStyle({display:"block",width:"100%",height:"100%",position:u.windowSize?"fixed":"relative",top:0,left:0,pointerEvents:"auto",touchAction:"none"})},null,12,Le))}}),ke=["TresCanvas","TresLeches","TresScene"],Ae={template:{compilerOptions:{isCustomElement:e=>e.startsWith("Tres")&&!ke.includes(e)||e==="primitive"}}},De={install(e){e.component("TresCanvas",oe)}};p.TresCanvas=oe,p.catalogue=j,p.default=De,p.extend=E,p.isProd=ve,p.normalizeColor=X,p.normalizeVectorFlexibleParam=ye,p.templateCompilerOptions=Ae,p.trasverseObjects=H,p.useCamera=W,p.useLoader=Ce,p.useLogger=A,p.usePointerEventHandler=te,p.useRaycaster=ee,p.useRenderLoop=G,p.useRenderer=Y,p.useSeek=Me,p.useTexture=Pe,p.useTres=_e,p.useTresContext=re,p.useTresContextProvider=ne,Object.defineProperties(p,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}})});
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@tresjs/core",
3
3
  "description": "Declarative ThreeJS using Vue Components",
4
- "version": "3.1.0",
4
+ "version": "3.1.1",
5
5
  "type": "module",
6
6
  "packageManager": "pnpm@8.3.1",
7
7
  "author": "Alvaro Saburido <hola@alvarosaburido.dev> (https://github.com/alvarosabu/)",