@tresjs/core 2.4.0-next.4 → 2.4.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.umd.cjs CHANGED
@@ -1,8 +1,9 @@
1
1
  /**
2
2
  * name: @tresjs/core
3
- * version: v2.4.0-next.4
3
+ * version: v2.4.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(C,l){typeof exports=="object"&&typeof module<"u"?l(exports,require("vue"),require("three"),require("@vueuse/core")):typeof define=="function"&&define.amd?define(["exports","vue","three","@vueuse/core"],l):(C=typeof globalThis<"u"?globalThis:C||self,l(C.tres={},C.Vue,C.Three,C.VueUseCore))})(this,function(C,l,w,v){"use strict";function ae(e){const a=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(e){for(const n in e)if(n!=="default"){const t=Object.getOwnPropertyDescriptor(e,n);Object.defineProperty(a,n,t.get?t:{enumerable:!0,get:()=>e[n]})}}return a.default=e,Object.freeze(a)}const oe=ae(w),I=l.ref({}),B=e=>void Object.assign(I.value,e),F=e=>typeof e=="function",W=e=>!!e&&e.constructor===Array,S={REGISTER_CAMERA:"tres__registerCamera",IS_ACTIVE_CAMERA:"tres__isActiveCamera",GEOMETRY_VIA_PROP:"tres__geometryViaProp",MATERIAL_VIA_PROP:"tres__materialViaProp",DEREGISTER_CAMERA:"tres__deregisterCamera",REGISTER_AT_POINTER_EVENT_HANDLER:"tres__registerAtPointerEventHandler",DEREGISTER_AT_POINTER_EVENT_HANDLER:"tres__deregisterAtPointerEventHandler"};function $({sizes:e,scene:a}){const{IS_ACTIVE_CAMERA:n,REGISTER_CAMERA:t,DEREGISTER_CAMERA:i}=S,o=l.ref([]),c=l.computed(()=>o.value.find(({userData:s})=>s[n])),r=(s,f=!0)=>{o.value.some(({uuid:g})=>g===s.uuid)||(o.value.push(s),f&&d(s))},m=s=>{if(s.userData[n]){const f=o.value[o.value.length-1];f&&d(f.uuid)}o.value=o.value.filter(({uuid:f})=>f!==s.uuid)},d=s=>{const f=s instanceof w.Camera?s:o.value.find(g=>g.uuid===s);f&&(o.value.forEach(({userData:g})=>g[n]=!1),f.userData[n]=!0)},p=()=>{o.value=[]};return l.watchEffect(()=>{e.aspectRatio.value&&o.value.forEach(s=>{s instanceof w.PerspectiveCamera&&(s.aspect=e.aspectRatio.value),(s instanceof w.PerspectiveCamera||s instanceof w.OrthographicCamera)&&s.updateProjectionMatrix()})}),a.userData[t]=r,a.userData[i]=m,l.onUnmounted(()=>{p()}),{camera:c,cameras:o,addCamera:r,removeCamera:m,setCameraActive:d}}const U=v.createEventHook(),q=v.createEventHook(),G=v.createEventHook(),b=new w.Clock;let k=0,V=0;const{pause:re,resume:se,isActive:ie}=v.useRafFn(()=>{U.trigger({delta:k,elapsed:V,clock:b}),q.trigger({delta:k,elapsed:V,clock:b}),G.trigger({delta:k,elapsed:V,clock:b})},{immediate:!1});G.on(()=>{k=b.getDelta(),V=b.getElapsedTime()});const N=()=>({onBeforeLoop:U.on,onLoop:q.on,onAfterLoop:G.on,pause:re,resume:se,isActive:ie}),z={realistic:{outputColorSpace:w.SRGBColorSpace,toneMapping:w.ACESFilmicToneMapping,toneMappingExposure:3,shadowMap:{enabled:!0,type:w.PCFSoftShadowMap}}},Y=(e,a)=>{for(const n of Object.keys(a))a[n]instanceof Object&&Object.assign(a[n],Y(e[n],a[n]));return Object.assign(e||{},a),e},ue=le("html,body,base,head,link,meta,style,title,address,article,aside,footer,header,hgroup,h1,h2,h3,h4,h5,h6,nav,section,div,dd,dl,dt,figcaption,figure,picture,hr,img,li,main,ol,p,pre,ul,a,b,abbr,bdi,bdo,br,cite,code,data,dfn,em,i,kbd,mark,q,rp,rt,ruby,s,samp,small,span,strong,sub,sup,time,u,var,wbr,area,audio,map,track,video,embed,object,param,source,canvas,script,noscript,del,ins,caption,col,colgroup,table,thead,tbody,td,th,tr,button,datalist,fieldset,form,input,label,legend,meter,optgroup,option,output,progress,select,textarea,details,dialog,menu,summary,template,blockquote,iframe,tfoot");function x(e){return e.replace(/-([a-z])/g,(a,n)=>n.toUpperCase())}function le(e,a){const n=Object.create(null),t=e.split(",");for(let i=0;i<t.length;i++)n[t[i]]=!0;return a?i=>!!n[i.toLowerCase()]:i=>!!n[i]}const ce=(e,a)=>{const n=new Set,t=[];for(const i of e){const o=a(i);n.has(o)||(n.add(o),t.push(i))}return t},fe=!0,J="[TresJS ▲ ■ ●] ";function h(){function e(t,i){console.error(`${J} ${t}`,i||"")}function a(t){console.warn(`${J} ${t}`)}function n(t,i){}return{logError:e,logWarning:a,logMessage:n}}function pe(e){return typeof e=="number"?[e,e,e]:e instanceof w.Vector3?[e.x,e.y,e.z]:e}function K(e){return e instanceof w.Color?e:Array.isArray(e)?new w.Color(...e):new w.Color(e)}function X({scene:e,canvas:a,options:n,disableRender:t,contextParts:{sizes:i,camera:o}}){const c=l.computed(()=>({alpha:v.toValue(n.alpha),depth:v.toValue(n.depth),canvas:v.unrefElement(a),context:v.toValue(n.context),stencil:v.toValue(n.stencil),antialias:v.toValue(n.antialias),precision:v.toValue(n.precision),powerPreference:v.toValue(n.powerPreference),premultipliedAlpha:v.toValue(n.premultipliedAlpha),preserveDrawingBuffer:v.toValue(n.preserveDrawingBuffer),logarithmicDepthBuffer:v.toValue(n.logarithmicDepthBuffer),failIfMajorPerformanceCaveat:v.toValue(n.failIfMajorPerformanceCaveat)})),r=l.shallowRef(new w.WebGLRenderer(c.value));l.watch(c,()=>{r.value.dispose(),r.value=new w.WebGLRenderer(c.value)}),l.watchEffect(()=>{r.value.setSize(i.width.value,i.height.value)});const{pixelRatio:m}=v.useDevicePixelRatio();l.watchEffect(()=>{r.value.setPixelRatio(m.value)});const{logError:d}=h(),s=(()=>{const u=new w.WebGLRenderer,_={shadowMap:{enabled:u.shadowMap.enabled,type:u.shadowMap.type},toneMapping:u.toneMapping,toneMappingExposure:u.toneMappingExposure,outputColorSpace:u.outputColorSpace,useLegacyLights:u.useLegacyLights};return u.dispose(),_})();l.watchEffect(()=>{const u=v.toValue(n.preset);if(u){u in z||d("Renderer Preset must be one of these: "+Object.keys(z).join(", ")),Y(r.value,z[u]);return}const _=v.toValue(n.shadows);r.value.shadowMap.enabled=_!==void 0?_:s.shadowMap.enabled;const E=v.toValue(n.shadowMapType);r.value.shadowMap.type=E!==void 0?E:s.shadowMap.type;const T=v.toValue(n.toneMapping);r.value.toneMapping=T!==void 0?T:s.toneMapping;const R=v.toValue(n.toneMappingExposure);r.value.toneMappingExposure=R!==void 0?R:s.toneMappingExposure;const L=v.toValue(n.outputColorSpace);r.value.outputColorSpace=L!==void 0?L:s.outputColorSpace;const D=v.toValue(n.useLegacyLights);r.value.useLegacyLights=D!==void 0?D:s.useLegacyLights;const O=v.toValue(n.clearColor);O&&r.value.setClearColor(O?K(O):new w.Color(0))});const{pause:f,resume:g,onLoop:M}=N();return M(()=>{o.value&&!v.toValue(t)&&r.value.render(e,o.value)}),g(),l.onUnmounted(()=>{f(),r.value.dispose(),r.value.forceContextLoss()}),{renderer:r}}function Q(e){const a={nodes:{},materials:{}};return e&&e.traverse(n=>{n.name&&(a.nodes[n.name]=n),n.material&&!a.materials[n.material.name]&&(a.materials[n.material.name]=n.material)}),a}async function me(e,a,n,t,i){const{logError:o}=h(),c=new e;i&&i(c),n&&n(c);const m=(Array.isArray(a)?a:[a]).map(d=>new Promise((p,s)=>{c.load(d,f=>{f.scene&&Object.assign(f,Q(f.scene)),p(f)},t,f=>s(o("[useLoader] - Failed to load resource",f)))}));return W(a)?await Promise.all(m):await m[0]}async function de(e){const a=new w.LoadingManager,n=new w.TextureLoader(a),t=i=>new Promise((o,c)=>{n.load(i,r=>o(r),()=>null,()=>{c(new Error("[useTextures] - Failed to load texture"))})});if(W(e)){const i=await Promise.all(e.map(o=>t(o)));return e.length>1?i:i[0]}else{const{map:i,displacementMap:o,normalMap:c,roughnessMap:r,metalnessMap:m,aoMap:d,alphaMap:p,matcap:s}=e;return{map:i?await t(i):null,displacementMap:o?await t(o):null,normalMap:c?await t(c):null,roughnessMap:r?await t(r):null,metalnessMap:m?await t(m):null,aoMap:d?await t(d):null,alphaMap:p?await t(p):null,matcap:s?await t(s):null}}}const Z=(e,{renderer:a,camera:n})=>{const t=l.computed(()=>a.value.domElement),{x:i,y:o}=v.usePointer({target:t}),{width:c,height:r,top:m,left:d}=v.useElementBounding(t),p=new w.Raycaster,s=({x:y,y:P})=>{if(t.value)return{x:(y-d.value)/c.value*2-1,y:-((P-m.value)/r.value)*2+1}},f=({x:y,y:P})=>{if(n.value)return p.setFromCamera(new w.Vector2(y,P),n.value),p.intersectObjects(e.value,!1)},g=y=>{const P=s({x:(y==null?void 0:y.clientX)??i.value,y:(y==null?void 0:y.clientY)??o.value});return P?f(P)||[]:[]},M=l.computed(()=>g()),u=v.createEventHook(),_=v.createEventHook(),E=(y,P)=>{y.trigger({event:P,intersects:g(P)})},T=y=>{E(_,y)};let R;const L=y=>{var P;R=(P=g(y)[0])==null?void 0:P.object},D=y=>{var P;y instanceof PointerEvent&&R===((P=g(y)[0])==null?void 0:P.object)&&E(u,y)},O=y=>_.trigger({event:y,intersects:[]});return t.value.addEventListener("pointerup",D),t.value.addEventListener("pointerdown",L),t.value.addEventListener("pointermove",T),t.value.addEventListener("pointerleave",O),l.onUnmounted(()=>{t!=null&&t.value&&(t.value.removeEventListener("pointerup",D),t.value.removeEventListener("pointerdown",L),t.value.removeEventListener("pointermove",T),t.value.removeEventListener("pointerleave",O))}),{intersects:M,onClick:y=>u.on(y).off,onPointerMove:y=>_.on(y).off}};function ve(){const{logWarning:e}=h();function a(t,i,o){let c=null;return t.traverse(r=>{r[i]===o&&(c=r)}),c||e(`Child with ${i} '${o}' not found.`),c}function n(t,i){return a(t,"name",i)}return{seek:a,seekByName:n}}const H=(e,a)=>{const n=l.reactive({click:new Map,pointerMove:new Map,pointerEnter:new Map,pointerLeave:new Map}),t=s=>{Object.values(n).forEach(f=>f.delete(s))},i=s=>{const{onClick:f,onPointerMove:g,onPointerEnter:M,onPointerLeave:u}=s;f&&n.click.set(s,f),g&&n.pointerMove.set(s,g),M&&n.pointerEnter.set(s,M),u&&n.pointerLeave.set(s,u)},{REGISTER_AT_POINTER_EVENT_HANDLER:o,DEREGISTER_AT_POINTER_EVENT_HANDLER:c}=S;e.userData[o]=i,e.userData[c]=t;const r=l.computed(()=>ce(Object.values(n).map(s=>Array.from(s.keys())).flat(),({uuid:s})=>s)),{onClick:m,onPointerMove:d}=Z(r,a);m(({intersects:s,event:f})=>{var g;s.length&&((g=n.click.get(s[0].object))==null||g(s[0],f))});let p;return d(({intersects:s,event:f})=>{var E,T,R,L;const g=(E=s==null?void 0:s[0])==null?void 0:E.object,{pointerLeave:M,pointerEnter:u,pointerMove:_}=n;p&&p!==g&&((T=M.get(p))==null||T(p,f)),g&&(p!==g&&((R=u.get(g))==null||R(s[0],f)),(L=_.get(g))==null||L(s[0],f)),p=g||null}),{registerObject:i,deregisterObject:t}};function ee({scene:e,canvas:a,windowSize:n,disableRender:t,rendererOptions:i}){const o=l.computed(()=>v.toValue(n)?v.useWindowSize():v.useElementSize(v.toValue(a).parentElement)),c=l.computed(()=>o.value.width.value),r=l.computed(()=>o.value.height.value),m=l.computed(()=>c.value/r.value),d={height:r,width:c,aspectRatio:m},p=l.shallowRef(e),{camera:s,cameras:f,addCamera:g,removeCamera:M,setCameraActive:u}=$({sizes:d,scene:e}),{renderer:_}=X({scene:e,canvas:a,options:i,contextParts:{sizes:d,camera:s},disableRender:t}),E={sizes:d,scene:l.readonly(p),camera:s,cameras:l.readonly(f),renderer:l.readonly(_),addCamera:g,removeCamera:M,setCameraActive:u};return l.provide("useTres",E),E}function ge(){const e=l.inject("useTres");if(!e)throw new Error("useTresContext must be used together with useTresContextProvider");return e}function Te(e){}let j=null,A=null;const{logError:te}=h(),Ce={createElement(e,a,n,t){var m,d;if(t||(t={}),t.args||(t.args=[]),e==="template"||ue(e))return null;let i=e.replace("Tres",""),o;if(e==="primitive"){(t==null?void 0:t.object)===void 0&&te("Tres primitives need a prop 'object'");const p=t.object;i=p.type,o=Object.assign(p,{type:i,attach:t.attach,primitive:!0})}else{const p=I.value[i];p||te(`${i} is not defined on the THREE namespace. Use extend to add it to the catalog.`),o=new p(...t.args)}o.isCamera&&(t!=null&&t.position||o.position.set(3,3,3),t!=null&&t.lookAt||o.lookAt(0,0,0)),(t==null?void 0:t.attach)===void 0&&(o.isMaterial?o.attach="material":o.isBufferGeometry&&(o.attach="geometry"));const{GEOMETRY_VIA_PROP:c,MATERIAL_VIA_PROP:r}=S;return o.isObject3D&&((m=t==null?void 0:t.material)!=null&&m.isMaterial&&(o.userData[r]=!0),(d=t==null?void 0:t.geometry)!=null&&d.isBufferGeometry&&(o.userData[c]=!0)),o},insert(e,a){var n,t,i,o,c,r,m,d,p;if(a&&a.isScene&&(A=a),(((n=e==null?void 0:e.__vnode)==null?void 0:n.type)==="TresGroup"||((t=e==null?void 0:e.__vnode)==null?void 0:t.type)==="TresObject3D")&&a===null&&!((o=(i=e==null?void 0:e.__vnode)==null?void 0:i.ctx)!=null&&o.asyncResolved)){j=e;return}else(c=e==null?void 0:e.__vnode)!=null&&c.type.includes("Controls")&&a===null&&(j=A);a||(a=j),e!=null&&e.isObject3D&&(e!=null&&e.isCamera&&((m=(r=A==null?void 0:A.userData)==null?void 0:r[S.REGISTER_CAMERA])==null||m.call(r,e)),(e!=null&&e.onClick||e!=null&&e.onPointerMove||e!=null&&e.onPointerEnter||e!=null&&e.onPointerLeave)&&((p=(d=A==null?void 0:A.userData)==null?void 0:d[S.REGISTER_AT_POINTER_EVENT_HANDLER])==null||p.call(d,e))),e!=null&&e.isObject3D&&(a!=null&&a.isObject3D)?(a.add(e),e.dispatchEvent({type:"added"})):e!=null&&e.isFog?a.fog=e:typeof(e==null?void 0:e.attach)=="string"&&(e.__previousAttach=e[a==null?void 0:a.attach],a&&(a[e.attach]=e))},remove(e){var a,n,t,i;if(e){if(e.isObject3D){const o=e,{DEREGISTER_CAMERA:c,GEOMETRY_VIA_PROP:r,MATERIAL_VIA_PROP:m,DEREGISTER_AT_POINTER_EVENT_HANDLER:d}=S,p=u=>{var _,E;u.userData[m]||(_=u.material)==null||_.dispose(),u.userData[r]||(E=u.geometry)==null||E.dispose()},s=(a=A==null?void 0:A.userData)==null?void 0:a[d],f=u=>{(u!=null&&u.onClick||u!=null&&u.onPointerMove||u!=null&&u.onPointerEnter||u!=null&&u.onPointerLeave)&&(s==null||s(u))},g=(n=A==null?void 0:A.userData)==null?void 0:n[c],M=u=>{u.isCamera&&g(u)};o.traverse(u=>{p(u),M(u),f==null||f(u)}),p(o),M(o),f==null||f(o)}(t=e.removeFromParent)==null||t.call(e),(i=e.dispose)==null||i.call(e)}},patchProp(e,a,n,t){if(e){let i=e,o=a,c=x(o),r=i==null?void 0:i[c];if(i.type==="BufferGeometry"){if(o==="args")return;i.setAttribute(x(o),new w.BufferAttribute(...t));return}if(o.includes("-")&&r===void 0){const d=o.split("-");r=d.reduce((p,s)=>p[x(s)],i),o=d.pop(),c=o.toLowerCase(),r!=null&&r.set||(i=d.reduce((p,s)=>p[x(s)],i))}let m=t;if(m===""&&(m=!0),F(r)){Array.isArray(m)?e[c](...m):e[c](m);return}!(r!=null&&r.set)&&!F(r)?i[c]=m:r.constructor===m.constructor&&(r!=null&&r.copy)?r==null||r.copy(m):Array.isArray(m)?r.set(...m):!r.isColor&&r.setScalar?r.setScalar(m):r.set(m)}},parentNode(e){return(e==null?void 0:e.parent)||null},createText:()=>void 0,createComment:()=>void 0,setText:()=>void 0,setElementText:()=>void 0,nextSibling:()=>void 0,querySelector:()=>void 0,setScopeId:()=>void 0,cloneNode:()=>void 0,insertStaticContent:()=>void 0},{createApp:ye}=l.createRenderer(Ce),we=e=>{const a=ye(n);function n(){return e&&e.default?e.default():[]}return a};B(oe);const _e=["data-scene"],ne=l.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},premultipliedAlpha:{type:Boolean},antialias:{type:Boolean},stencil:{type:Boolean},preserveDrawingBuffer:{type:Boolean},powerPreference:{},depth:{type:Boolean},logarithmicDepthBuffer:{type:Boolean},failIfMajorPerformanceCaveat:{type:Boolean}},setup(e){const a=e,{logWarning:n}=h(),t=l.ref(),i=l.shallowRef(new w.Scene);N();const o=l.useSlots();let c;const r=d=>{c=we(o),c.provide("useTres",d),c.provide("extend",B),c.mount(i.value)},m=l.computed(()=>a.disableRender);return l.onMounted(()=>{const d=t,p=ee({scene:i.value,canvas:d,windowSize:a.windowSize,disableRender:m,rendererOptions:{...a,antialias:a.antialias===void 0?!0:a.antialias}});H(i.value,p);const{addCamera:s,camera:f,cameras:g,removeCamera:M}=p;r(p);const u=()=>{const _=new w.PerspectiveCamera(45,window.innerWidth/window.innerHeight,.1,1e3);_.position.set(3,3,3),_.lookAt(0,0,0),s(_);const E=l.watchEffect(()=>{g.value.length>=2&&(_.removeFromParent(),M(_),E==null||E())})};l.watch(()=>a.camera,(_,E)=>{_?s(_):E&&(E.removeFromParent(),M(E))},{immediate:!0}),f.value||(n("No camera found. Creating a default perspective camera. To have full control over a camera, please add one to the scene."),u())}),(d,p)=>(l.openBlock(),l.createElementBlock("canvas",{ref_key:"canvas",ref:t,"data-scene":i.value.uuid,style:l.normalizeStyle({display:"block",width:"100%",height:"100%",position:d.windowSize?"fixed":"relative",top:0,left:0,pointerEvents:"auto",touchAction:"none",zIndex:1})},null,12,_e))}}),Ee=["TresCanvas","TresLeches","TresScene"],Me={template:{compilerOptions:{isCustomElement:e=>e.startsWith("Tres")&&!Ee.includes(e)||e==="primitive"}}},Pe={install(e){e.component("TresCanvas",ne)}};C.TresCanvas=ne,C.catalogue=I,C.default=Pe,C.extend=B,C.isProd=fe,C.normalizeColor=K,C.normalizeVectorFlexibleParam=pe,C.templateCompilerOptions=Me,C.trasverseObjects=Q,C.useCamera=$,C.useLoader=me,C.useLogger=h,C.usePointerEventHandler=H,C.useRaycaster=Z,C.useRenderLoop=N,C.useRenderer=X,C.useSeek=ve,C.useTexture=de,C.useTresContext=ge,C.useTresContextProvider=ee,Object.defineProperties(C,{__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,m,f){"use strict";function ve(e){const t=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(e){for(const a in e)if(a!=="default"){const n=Object.getOwnPropertyDescriptor(e,a);Object.defineProperty(t,a,n.get?n:{enumerable:!0,get:()=>e[a]})}}return t.default=e,Object.freeze(t)}const ge=ve(m),z=c.ref({}),G=e=>void Object.assign(z.value,e),K=e=>typeof e=="function",X=e=>!!e&&e.constructor===Array,b=["00","01","02","03","04","05","06","07","08","09","0a","0b","0c","0d","0e","0f","10","11","12","13","14","15","16","17","18","19","1a","1b","1c","1d","1e","1f","20","21","22","23","24","25","26","27","28","29","2a","2b","2c","2d","2e","2f","30","31","32","33","34","35","36","37","38","39","3a","3b","3c","3d","3e","3f","40","41","42","43","44","45","46","47","48","49","4a","4b","4c","4d","4e","4f","50","51","52","53","54","55","56","57","58","59","5a","5b","5c","5d","5e","5f","60","61","62","63","64","65","66","67","68","69","6a","6b","6c","6d","6e","6f","70","71","72","73","74","75","76","77","78","79","7a","7b","7c","7d","7e","7f","80","81","82","83","84","85","86","87","88","89","8a","8b","8c","8d","8e","8f","90","91","92","93","94","95","96","97","98","99","9a","9b","9c","9d","9e","9f","a0","a1","a2","a3","a4","a5","a6","a7","a8","a9","aa","ab","ac","ad","ae","af","b0","b1","b2","b3","b4","b5","b6","b7","b8","b9","ba","bb","bc","bd","be","bf","c0","c1","c2","c3","c4","c5","c6","c7","c8","c9","ca","cb","cc","cd","ce","cf","d0","d1","d2","d3","d4","d5","d6","d7","d8","d9","da","db","dc","dd","de","df","e0","e1","e2","e3","e4","e5","e6","e7","e8","e9","ea","eb","ec","ed","ee","ef","f0","f1","f2","f3","f4","f5","f6","f7","f8","f9","fa","fb","fc","fd","fe","ff"];function ye(){const e=Math.random()*4294967295|0,t=Math.random()*4294967295|0,a=Math.random()*4294967295|0,n=Math.random()*4294967295|0;return(b[e&255]+b[e>>8&255]+b[e>>16&255]+b[e>>24&255]+"-"+b[t&255]+b[t>>8&255]+"-"+b[t>>16&15|64]+b[t>>24&255]+"-"+b[a&63|128]+b[a>>8&255]+"-"+b[a>>16&255]+b[a>>24&255]+b[n&255]+b[n>>8&255]+b[n>>16&255]+b[n>>24&255]).toLowerCase()}const B=Symbol();function J(){const e=c.shallowReactive({uuid:ye(),camera:void 0,cameras:[],canvas:void 0,scene:void 0,renderer:void 0,aspectRatio:void 0,pointerEventHandler:void 0});function t(r){return e[r]}function a(r,s){e[r]=s}const n={state:e,...c.toRefs(e),getState:t,setState:a};return c.provide(B,n),n}const k=()=>c.inject(B,{state:c.shallowReactive({camera:void 0,cameras:[],canvas:void 0,scene:void 0,renderer:void 0,pointerEventHandler:void 0})});var H=(e=>(e.Perspective="Perspective",e.Orthographic="Orthographic",e))(H||{});const he=45;let x;function Q(){const{state:e,setState:t,aspectRatio:a}=k();function n(i="Perspective",u){var v,y,g;if(i==="Perspective"){const{near:L,far:M,fov:P}=u||{near:.1,far:1e3,fov:he};x=new m.PerspectiveCamera(P,((v=e.aspectRatio)==null?void 0:v.value)||window.innerWidth/window.innerHeight,L,M),(y=e.cameras)==null||y.push(x)}else{const{left:L,right:M,top:P,bottom:C,near:O,far:T}=u||{left:-100,right:100,top:100,bottom:-100,near:.1,far:1e3};x=new m.OrthographicCamera(L,M,P,C,O,T),(g=e.cameras)==null||g.push(x)}return e.camera=x,t("camera",e.camera),x}function r(){var i;e.camera instanceof m.PerspectiveCamera&&e.aspectRatio&&(e.camera.aspect=e.aspectRatio.value),(i=e.camera)==null||i.updateProjectionMatrix()}function s(i){var u;(u=e.cameras)==null||u.push(i),i instanceof m.PerspectiveCamera&&e.aspectRatio&&(i.aspect=e.aspectRatio.value),i.updateProjectionMatrix(),t("camera",i)}function l(i){var u;((u=e.cameras)==null?void 0:u.length)===0&&s(i)}function o(){e.cameras=[]}return c.watchEffect(()=>{a!=null&&a.value&&r()}),{activeCamera:c.toRef(e,"camera"),createCamera:n,updateCamera:r,pushCamera:s,clearCameras:o,setFirstCamera:l}}const Z=f.createEventHook(),ee=f.createEventHook(),F=f.createEventHook(),R=new m.Clock;let j=0,D=0;const{pause:we,resume:be,isActive:Ce}=f.useRafFn(()=>{Z.trigger({delta:j,elapsed:D,clock:R}),ee.trigger({delta:j,elapsed:D,clock:R}),F.trigger({delta:j,elapsed:D,clock:R})},{immediate:!1});F.on(()=>{j=R.getDelta(),D=R.getElapsedTime()});function W(){return{onBeforeLoop:Z.on,onLoop:ee.on,onAfterLoop:F.on,pause:we,resume:be,isActive:Ce}}function _e(e){return typeof e=="number"?[e,e,e]:e instanceof m.Vector3?[e.x,e.y,e.z]:e}function te(e){return e instanceof m.Color?e:Array.isArray(e)?new m.Color(...e):new m.Color(e)}const $={realistic:{outputColorSpace:m.SRGBColorSpace,toneMapping:m.ACESFilmicToneMapping,toneMappingExposure:3,shadowMap:{enabled:!0,type:m.PCFSoftShadowMap}}},ae=(e,t)=>{for(const a of Object.keys(t))t[a]instanceof Object&&Object.assign(t[a],ae(e[a],t[a]));return Object.assign(e||{},t),e},Pe=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 I(e){return e.replace(/-([a-z])/g,(t,a)=>a.toUpperCase())}function Me(e,t){const a=Object.create(null),n=e.split(",");for(let r=0;r<n.length;r++)a[n[r]]=!0;return t?r=>!!a[r.toLowerCase()]:r=>!!a[r]}const Le=(e,t)=>{const a=new Set,n=[];for(const r of e){const s=t(r);a.has(s)||(a.add(s),n.push(r))}return n},Se=!0,ne="[TresJS ▲ ■ ●] ";function E(){function e(n,r){console.error(`${ne} ${n}`,r||"")}function t(n){console.warn(`${ne} ${n}`)}function a(n,r){}return{logError:e,logWarning:t,logMessage:a}}function oe(e){const t=c.shallowRef(),a=c.ref(!1),{alpha:n=!0,antialias:r=!0,depth:s,logarithmicDepthBuffer:l,failIfMajorPerformanceCaveat:o,precision:i,premultipliedAlpha:u,stencil:v,shadows:y=!1,shadowMapType:g=m.PCFShadowMap,useLegacyLights:L=!1,outputColorSpace:M=m.LinearSRGBColorSpace,toneMapping:P=m.NoToneMapping,toneMappingExposure:C=1,context:O=void 0,powerPreference:T="default",preserveDrawingBuffer:w=!1,clearColor:_,windowSize:A=!1,preset:Y=void 0}=c.toRefs(e),{state:d,setState:h}=k(),{width:ue,height:fe}=f.toValue(A)==!0||f.toValue(A)===""||f.toValue(A)==="true"?f.useWindowSize():f.useElementSize(d.container),{logError:ze,logWarning:Ge}=E(),{pixelRatio:de}=f.useDevicePixelRatio(),{pause:Fe,resume:We}=W(),q=c.computed(()=>ue.value/fe.value);setTimeout(()=>{var S;!f.toValue(A)&&!((S=d.canvas)!=null&&S.value.offsetHeight)&&Ge(`Oops... Seems like your canvas height is currently 0px, it's posible that you couldn't watch your scene.
9
+ You could set windowSize=true to force the canvas to be the size of the window.`)},1e3);const pe=()=>{t.value&&(t.value.setSize(ue.value,fe.value),t.value.setPixelRatio(Math.min(de.value,2)))},me=()=>{if(!t.value)return;const S=f.toValue(Y);if(S){S in $||ze("Renderer Preset must be one of these: "+Object.keys($).join(", ")),ae(t.value,$[S]);return}t.value.shadowMap.enabled=f.toValue(y),t.value.shadowMap.type=f.toValue(g),t.value.toneMapping=f.toValue(P)||m.NoToneMapping,t.value.toneMappingExposure=f.toValue(C),t.value.outputColorSpace=f.toValue(M)||m.LinearSRGBColorSpace,_!=null&&_.value&&t.value.setClearColor(te(f.toValue(_))),t.value.useLegacyLights=f.toValue(L)},$e=()=>{const S=f.unrefElement(d.canvas);S&&(t.value=new m.WebGLRenderer({canvas:S,alpha:f.toValue(n),antialias:f.toValue(r),context:f.toValue(O),depth:f.toValue(s),failIfMajorPerformanceCaveat:f.toValue(o),logarithmicDepthBuffer:f.toValue(l),powerPreference:f.toValue(T),precision:f.toValue(i),stencil:f.toValue(v),preserveDrawingBuffer:f.toValue(w),premultipliedAlpha:f.toValue(u)}),h("renderer",t.value),h("clock",new m.Clock),h("aspectRatio",q),me(),pe(),We(),a.value=!0)},Ue=()=>{t.value&&(t.value.dispose(),t.value=void 0,a.value=!1,Fe())};return c.watch([q,de],pe),c.watch([y,g,M,L,P,C,_],me),c.watch(()=>[d.canvas,d.container],()=>{f.unrefElement(d.canvas)&&f.unrefElement(d.container)&&$e()},{immediate:!0,deep:!0}),{renderer:t,isReady:a,dispose:Ue,aspectRatio:q}}function re(e){const t={nodes:{},materials:{}};return e&&e.traverse(a=>{a.name&&(t.nodes[a.name]=a),a.material&&!t.materials[a.material.name]&&(t.materials[a.material.name]=a.material)}),t}async function Oe(e,t,a,n,r){const{logError:s}=E(),l=new e;r&&r(l),a&&a(l);const i=(Array.isArray(t)?t:[t]).map(u=>new Promise((v,y)=>{l.load(u,g=>{g.scene&&Object.assign(g,re(g.scene)),v(g)},n,g=>y(s("[useLoader] - Failed to load resource",g)))}));return X(t)?await Promise.all(i):await i[0]}async function Te(e){const t=new m.LoadingManager,a=new m.TextureLoader(t),n=r=>new Promise((s,l)=>{a.load(r,o=>s(o),()=>null,()=>{l(new Error("[useTextures] - Failed to load texture"))})});if(X(e)){const r=await Promise.all(e.map(s=>n(s)));return e.length>1?r:r[0]}else{const{map:r,displacementMap:s,normalMap:l,roughnessMap:o,metalnessMap:i,aoMap:u,alphaMap:v,matcap:y}=e;return{map:r?await n(r):null,displacementMap:s?await n(s):null,normalMap:l?await n(l):null,roughnessMap:o?await n(o):null,metalnessMap:i?await n(i):null,aoMap:u?await n(u):null,alphaMap:v?await n(v):null,matcap:y?await n(y):null}}}const ie=e=>{const{state:t}=k(),a=c.computed(()=>{var d;return(d=t.canvas)==null?void 0:d.value}),{x:n,y:r}=f.usePointer({target:a}),{width:s,height:l,top:o,left:i}=f.useElementBounding(a),u=new m.Raycaster,v=({x:d,y:h})=>{if(a.value)return{x:(d-i.value)/s.value*2-1,y:-((h-o.value)/l.value)*2+1}},y=({x:d,y:h})=>{if(t.camera)return u.setFromCamera(new m.Vector2(d,h),t.camera),u.intersectObjects(e.value,!1)},g=d=>{const h=v({x:(d==null?void 0:d.clientX)??n.value,y:(d==null?void 0:d.clientY)??r.value});return h?y(h)||[]:[]},L=c.computed(()=>g()),M=f.createEventHook(),P=f.createEventHook(),C=(d,h)=>{d.trigger({event:h,intersects:g(h)})},O=d=>{C(P,d)};let T;const w=d=>{var h;T=(h=g(d)[0])==null?void 0:h.object},_=d=>{var h;d instanceof PointerEvent&&T===((h=g(d)[0])==null?void 0:h.object)&&C(M,d)},A=d=>P.trigger({event:d,intersects:[]}),Y=c.watchEffect(()=>{a!=null&&a.value&&(a.value.addEventListener("pointerup",_),a.value.addEventListener("pointerdown",w),a.value.addEventListener("pointermove",O),a.value.addEventListener("pointerleave",A),Y())});return c.onUnmounted(()=>{a!=null&&a.value&&(a.value.removeEventListener("pointerup",_),a.value.removeEventListener("pointerdown",w),a.value.removeEventListener("pointermove",O),a.value.removeEventListener("pointerleave",A))}),{intersects:L,onClick:d=>M.on(d).off,onPointerMove:d=>P.on(d).off}};function Ae(){const{logWarning:e}=E();function t(n,r,s){let l=null;return n.traverse(o=>{o[r]===s&&(l=o)}),l||e(`Child with ${r} '${s}' not found.`),l}function a(n,r){return t(n,"name",r)}return{seek:t,seekByName:a}}const se=()=>{const e=c.reactive({click:new Map,pointerMove:new Map,pointerEnter:new Map,pointerLeave:new Map}),t=o=>{Object.values(e).forEach(i=>i.delete(o))},a=o=>{const{onClick:i,onPointerMove:u,onPointerEnter:v,onPointerLeave:y}=o;i&&e.click.set(o,i),u&&e.pointerMove.set(o,u),v&&e.pointerEnter.set(o,v),y&&e.pointerLeave.set(o,y),o.addEventListener("removed",()=>{o.traverse(g=>{t(g)}),t(o)})},n=c.computed(()=>Le(Object.values(e).map(o=>Array.from(o.keys())).flat(),({uuid:o})=>o)),{onClick:r,onPointerMove:s}=ie(n);r(({intersects:o,event:i})=>{var u;o.length&&((u=e.click.get(o[0].object))==null||u(o[0],i))});let l;return s(({intersects:o,event:i})=>{var L,M,P,C;const u=(L=o==null?void 0:o[0])==null?void 0:L.object,{pointerLeave:v,pointerEnter:y,pointerMove:g}=e;l&&l!==u&&((M=v.get(l))==null||M(l,i)),u&&(l!==u&&((P=y.get(u))==null||P(o[0],i)),(C=g.get(u))==null||C(o[0],i)),l=u||null}),{registerObject:a,deregisterObject:t}},N={GEOMETRY_VIA_PROP:"tres__geometryViaProp",MATERIAL_VIA_PROP:"tres__materialViaProp",REGISTER_AT_POINTER_EVENT_HANDLER:"tres__registerAtPointerEventHandler"};function qe(e){}let U=null,V=null;const{logError:ce}=E(),ke={createElement(e,t,a,n){var i,u;if(n||(n={}),n.args||(n.args=[]),e==="template"||Pe(e))return null;let r=e.replace("Tres",""),s;if(e==="primitive"){(n==null?void 0:n.object)===void 0&&ce("Tres primitives need a prop 'object'");const v=n.object;r=v.type,s=Object.assign(v,{type:r,attach:n.attach,primitive:!0})}else{const v=z.value[r];v||ce(`${r} is not defined on the THREE namespace. Use extend to add it to the catalog.`),s=new v(...n.args)}s.isCamera&&(n!=null&&n.position||s.position.set(3,3,3),n!=null&&n.lookAt||s.lookAt(0,0,0)),(n==null?void 0:n.attach)===void 0&&(s.isMaterial?s.attach="material":s.isBufferGeometry&&(s.attach="geometry"));const{GEOMETRY_VIA_PROP:l,MATERIAL_VIA_PROP:o}=N;return s.isObject3D&&((i=n==null?void 0:n.material)!=null&&i.isMaterial&&(s.userData[o]=!0),(u=n==null?void 0:n.geometry)!=null&&u.isBufferGeometry&&(s.userData[l]=!0)),s},insert(e,t){var a,n,r,s,l,o,i;if(t&&t.isScene&&(V=t),(((a=e==null?void 0:e.__vnode)==null?void 0:a.type)==="TresGroup"||((n=e==null?void 0:e.__vnode)==null?void 0:n.type)==="TresObject3D")&&t===null&&!((s=(r=e==null?void 0:e.__vnode)==null?void 0:r.ctx)!=null&&s.asyncResolved)){U=e;return}else(l=e==null?void 0:e.__vnode)!=null&&l.type.includes("Controls")&&t===null&&(U=V);t||(t=U),e!=null&&e.isObject3D&&(t!=null&&t.isObject3D)?(t.add(e),e.dispatchEvent({type:"added"}),(i=(o=V==null?void 0:V.userData)==null?void 0:o[N.REGISTER_AT_POINTER_EVENT_HANDLER])==null||i.call(o,e)):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 t,a;if(e){if(e.isObject3D){const n=e,r=s=>{var i,u;const{GEOMETRY_VIA_PROP:l,MATERIAL_VIA_PROP:o}=N;s.userData[o]||(i=s.material)==null||i.dispose(),s.userData[l]||(u=s.geometry)==null||u.dispose()};n.traverse(s=>{r(s)}),r(n)}(t=e.removeFromParent)==null||t.call(e),(a=e.dispose)==null||a.call(e)}},patchProp(e,t,a,n){if(e){let r=e,s=t,l=I(s),o=r==null?void 0:r[l];if(r.type==="BufferGeometry"){if(s==="args")return;r.setAttribute(I(s),new m.BufferAttribute(...n));return}if(s.includes("-")&&o===void 0){const u=s.split("-");o=u.reduce((v,y)=>v[I(y)],r),s=u.pop(),l=s.toLowerCase(),o!=null&&o.set||(r=u.reduce((v,y)=>v[I(y)],r))}let i=n;if(i===""&&(i=!0),K(o)){Array.isArray(i)?e[l](...i):e[l](i);return}!(o!=null&&o.set)&&!K(o)?r[l]=i:o.constructor===i.constructor&&(o!=null&&o.copy)?o==null||o.copy(i):Array.isArray(i)?o.set(...i):!o.isColor&&o.setScalar?o.setScalar(i):o.set(i)}},parentNode(e){return(e==null?void 0:e.parent)||null},createText:()=>void 0,createComment:()=>void 0,setText:()=>void 0,setElementText:()=>void 0,nextSibling:()=>void 0,querySelector:()=>void 0,setScopeId:()=>void 0,cloneNode:()=>void 0,insertStaticContent:()=>void 0},{createApp:xe}=c.createRenderer(ke),Ee=e=>{const t=xe(a);function a(){return e&&e.default?e.default():[]}return t};G(ge);const Re=["data-scene"],Ve={style:{width:"100%",height:"100%"}},Be=["data-scene"],je=c.defineComponent({__name:"TresScene",props:{shadows:{type:Boolean},shadowMapType:{},physicallyCorrectLights:{type:Boolean,default:!1},useLegacyLights:{type:Boolean},outputColorSpace:{},toneMapping:{},toneMappingExposure:{},context:{},powerPreference:{},preserveDrawingBuffer:{type:Boolean},clearColor:{},windowSize:{type:Boolean},preset:{},disableRender:{type:Boolean},camera:{}},setup(e,{expose:t}){const a=e,{logWarning:n}=E();a.physicallyCorrectLights===!0&&n("physicallyCorrectLights is deprecated, useLegacyLights is now false by default");const r=c.ref(),s=c.ref(),l=new m.Scene,o=se(),{setState:i}=k();l.userData[N.REGISTER_AT_POINTER_EVENT_HANDLER]=o.registerObject,i("scene",l),i("canvas",s),i("container",r),i("pointerEventHandler",o),i("appContext",c.getCurrentInstance());const{onLoop:u,resume:v}=W(),{activeCamera:y,pushCamera:g,clearCameras:L}=Q();c.onMounted(()=>{P()}),c.onUnmounted(()=>{i("renderer",null)});function M(){const w=l.getObjectByProperty("isCamera",!0);if(w)g(w);else{n("No camera found. Creating a default perspective camera. To have full control over a camera, please add one to the scene.");const _=new m.PerspectiveCamera(45,window.innerWidth/window.innerHeight,.1,1e3);_.position.set(3,3,3),_.lookAt(0,0,0),g(_)}}function P(){const{renderer:w}=oe(a);a.camera&&g(a.camera),u(()=>{var _;y.value&&a.disableRender!==!0&&((_=w.value)==null||_.render(l,y.value))})}let C;const O=c.useSlots();function T(){C=Ee(O);const w=k();C.provide("useTres",w),C.provide(B,w),C.provide("extend",G),C.mount(l),M()}return T(),t({scene:l}),c.watch(()=>a.camera,w=>{w&&(L(),g(w))}),(w,_)=>(c.openBlock(),c.createElementBlock("div",{ref_key:"container",ref:r,key:c.unref(l).uuid,"data-scene":c.unref(l).uuid,style:{position:"relative",width:"100%",height:"100%",pointerEvents:"auto",touchAction:"none"}},[c.createElementVNode("div",Ve,[c.createElementVNode("canvas",{ref_key:"canvas",ref:s,"data-scene":c.unref(l).uuid,style:c.normalizeStyle({display:"block",width:"100%",height:"100%",position:w.windowSize?"fixed":"absolute",top:0,left:0})},null,12,Be)])],8,Re))}}),le=c.defineComponent({__name:"TresCanvas",props:{shadows:{type:Boolean},shadowMapType:{},physicallyCorrectLights:{type:Boolean},useLegacyLights:{type:Boolean},outputColorSpace:{},toneMapping:{},toneMappingExposure:{},context:{},powerPreference:{},preserveDrawingBuffer:{type:Boolean},clearColor:{},windowSize:{type:Boolean},preset:{},disableRender:{type:Boolean},camera:{}},setup(e,{expose:t}){const a=e,n=J();return t(n),(r,s)=>(c.openBlock(),c.createBlock(je,c.normalizeProps(c.guardReactiveProps(a)),{default:c.withCtx(()=>[c.renderSlot(r.$slots,"default")]),_:3},16))}}),De=["TresCanvas","TresLeches","TresScene"],Ie={template:{compilerOptions:{isCustomElement:e=>e.startsWith("Tres")&&!De.includes(e)||e==="primitive"}}},Ne={install(e){e.component("TresCanvas",le)}};p.CameraType=H,p.TRES_CONTEXT_KEY=B,p.TresCanvas=le,p.catalogue=z,p.default=Ne,p.extend=G,p.isProd=Se,p.normalizeColor=te,p.normalizeVectorFlexibleParam=_e,p.templateCompilerOptions=Ie,p.trasverseObjects=re,p.useCamera=Q,p.useLoader=Oe,p.useLogger=E,p.usePointerEventHandler=se,p.useRaycaster=ie,p.useRenderLoop=W,p.useRenderer=oe,p.useSeek=Ae,p.useTexture=Te,p.useTres=k,p.useTresProvider=J,Object.defineProperties(p,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}})});
@@ -123,7 +123,7 @@ interface RaycastableRepresentation {
123
123
  type EventProps<P> = P extends RaycastableRepresentation ? Partial<EventHandlers> : unknown;
124
124
  export interface VueProps<P> {
125
125
  children?: VNode[];
126
- ref?: Ref<P>;
126
+ ref?: string | null | Ref<P>;
127
127
  key?: string;
128
128
  }
129
129
  type ElementProps<T extends ConstructorRepresentation, P = InstanceType<T>> = Partial<Overwrite<WithMathProps<P>, VueProps<P> & EventProps<P>>>;
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@tresjs/core",
3
3
  "description": "Declarative ThreeJS using Vue Components",
4
- "version": "2.4.0-next.4",
4
+ "version": "2.4.1",
5
5
  "type": "module",
6
6
  "packageManager": "pnpm@8.3.1",
7
7
  "author": "Alvaro Saburido <hola@alvarosaburido.dev> (https://github.com/alvarosabu/)",
@@ -64,7 +64,7 @@
64
64
  },
65
65
  "dependencies": {
66
66
  "@alvarosabu/utils": "^3.1.1",
67
- "@vueuse/core": "^10.2.1"
67
+ "@vueuse/core": "^10.2.0"
68
68
  },
69
69
  "devDependencies": {
70
70
  "@alvarosabu/prettier-config": "^1.3.0",
@@ -73,17 +73,17 @@
73
73
  "@stackblitz/sdk": "^1.9.0",
74
74
  "@tresjs/cientos": "2.2.0",
75
75
  "@types/three": "^0.152.1",
76
- "@typescript-eslint/eslint-plugin": "^5.60.1",
77
- "@typescript-eslint/parser": "^5.60.1",
76
+ "@typescript-eslint/eslint-plugin": "^5.60.0",
77
+ "@typescript-eslint/parser": "^5.60.0",
78
78
  "@vitejs/plugin-vue": "^4.2.3",
79
- "@vitest/coverage-c8": "^0.32.3",
80
- "@vitest/ui": "^0.32.3",
79
+ "@vitest/coverage-c8": "^0.32.2",
80
+ "@vitest/ui": "^0.32.2",
81
81
  "@vue/test-utils": "^2.4.0",
82
- "eslint": "^8.44.0",
82
+ "eslint": "^8.43.0",
83
83
  "eslint-config-prettier": "^8.8.0",
84
84
  "eslint-plugin-vue": "^9.15.1",
85
85
  "esno": "^0.16.3",
86
- "gsap": "^3.12.2",
86
+ "gsap": "^3.12.1",
87
87
  "jsdom": "^22.1.0",
88
88
  "kolorist": "^1.8.0",
89
89
  "ohmyfetch": "^0.4.21",
@@ -93,18 +93,18 @@
93
93
  "rollup-plugin-analyzer": "^4.0.0",
94
94
  "rollup-plugin-copy": "^3.4.0",
95
95
  "rollup-plugin-visualizer": "^5.9.2",
96
- "three": "^0.154.0",
97
- "unocss": "^0.53.4",
96
+ "three": "^0.153.0",
97
+ "unocss": "^0.53.3",
98
98
  "unplugin": "^1.3.1",
99
99
  "unplugin-vue-components": "^0.25.1",
100
100
  "vite": "^4.3.9",
101
101
  "vite-plugin-banner": "^0.7.0",
102
- "vite-plugin-dts": "3.0.2",
103
- "vite-plugin-inspect": "^0.7.32",
104
- "vite-plugin-require-transform": "^1.0.20",
102
+ "vite-plugin-dts": "2.3.0",
103
+ "vite-plugin-inspect": "^0.7.29",
104
+ "vite-plugin-require-transform": "^1.0.17",
105
105
  "vite-svg-loader": "^4.0.0",
106
106
  "vitepress": "1.0.0-beta.5",
107
- "vitest": "^0.32.3",
107
+ "vitest": "^0.32.2",
108
108
  "vue": "^3.3.4",
109
109
  "vue-demi": "^0.14.5"
110
110
  }
@@ -1,25 +0,0 @@
1
- import { Camera, Scene, WebGLRenderer } from 'three';
2
- import { UseRendererOptions } from '../useRenderer';
3
- import type { ComputedRef, DeepReadonly, MaybeRef, MaybeRefOrGetter, Ref, ShallowRef } from 'vue';
4
- export type TresContext = {
5
- scene: DeepReadonly<ShallowRef<Scene>>;
6
- camera: ComputedRef<Camera | undefined>;
7
- cameras: DeepReadonly<Ref<Camera[]>>;
8
- renderer: DeepReadonly<ShallowRef<WebGLRenderer>>;
9
- addCamera: (camera: Camera) => void;
10
- removeCamera: (camera: Camera) => void;
11
- setCameraActive: (cameraOrUuid: Camera | string) => void;
12
- sizes: {
13
- height: Ref<number>;
14
- width: Ref<number>;
15
- aspectRatio: ComputedRef<number>;
16
- };
17
- };
18
- export declare function useTresContextProvider({ scene, canvas, windowSize, disableRender, rendererOptions }: {
19
- scene: Scene;
20
- canvas: MaybeRef<HTMLCanvasElement>;
21
- windowSize: MaybeRefOrGetter<boolean>;
22
- disableRender: MaybeRefOrGetter<boolean>;
23
- rendererOptions: UseRendererOptions;
24
- }): TresContext;
25
- export declare function useTresContext(): TresContext;