@tresjs/core 2.3.0 → 2.4.0-next.1

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