@tresjs/core 3.6.0-next.0 → 3.6.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/README.md +6 -6
- package/dist/index.d.ts +3 -17
- package/dist/{components → src/components}/TresCanvas.vue.d.ts +6 -4
- package/dist/{composables → src/composables}/useCamera/index.d.ts +30 -30
- package/dist/{composables → src/composables}/useRenderer/index.d.ts +1 -1
- package/dist/src/index.d.ts +17 -0
- package/dist/{types → src/types}/index.d.ts +1 -1
- package/dist/tres.js +511 -388
- package/dist/tres.umd.cjs +3 -3
- package/package.json +22 -22
- /package/dist/{components → src/components}/index.d.ts +0 -0
- /package/dist/{composables → src/composables}/index.d.ts +0 -0
- /package/dist/{composables → src/composables}/useLoader/index.d.ts +0 -0
- /package/dist/{composables → src/composables}/useLogger.d.ts +0 -0
- /package/dist/{composables → src/composables}/usePointerEventHandler/index.d.ts +0 -0
- /package/dist/{composables → src/composables}/useRaycaster/index.d.ts +0 -0
- /package/dist/{composables → src/composables}/useRenderLoop/index.d.ts +0 -0
- /package/dist/{composables → src/composables}/useRenderer/const.d.ts +0 -0
- /package/dist/{composables → src/composables}/useSeek/index.d.ts +0 -0
- /package/dist/{composables → src/composables}/useTexture/index.d.ts +0 -0
- /package/dist/{composables → src/composables}/useTresContextProvider/index.d.ts +0 -0
- /package/dist/{core → src/core}/catalogue.d.ts +0 -0
- /package/dist/{core → src/core}/nodeOps.d.ts +0 -0
- /package/dist/{core → src/core}/renderer.d.ts +0 -0
- /package/dist/{core → src/core}/revision.d.ts +0 -0
- /package/dist/{utils → src/utils}/index.d.ts +0 -0
- /package/dist/{utils → src/utils}/normalize.d.ts +0 -0
- /package/dist/{utils → src/utils}/perf.d.ts +0 -0
- /package/dist/{utils → src/utils}/template-compiler-options.d.ts +0 -0
- /package/dist/{utils → src/utils}/test-utils.d.ts +0 -0
package/dist/tres.umd.cjs
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* name: @tresjs/core
|
|
3
|
-
* version: v3.6.
|
|
4
|
-
* (c)
|
|
3
|
+
* version: v3.6.1
|
|
4
|
+
* (c) 2024
|
|
5
5
|
* description: Declarative ThreeJS using Vue Components
|
|
6
6
|
* author: Alvaro Saburido <hola@alvarosaburido.dev> (https://github.com/alvarosabu/)
|
|
7
7
|
*/
|
|
8
|
-
(function(_,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):(_=typeof globalThis<"u"?globalThis:_||self,u(_.tres={},_.Vue,_.Three,_.VueUseCore))})(this,function(_,u,P,y){"use strict";function se(e){const a=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(e){for(const t in e)if(t!=="default"){const r=Object.getOwnPropertyDescriptor(e,t);Object.defineProperty(a,t,r.get?r:{enumerable:!0,get:()=>e[t]})}}return a.default=e,Object.freeze(a)}const ie=se(P),G=({sizes:e,scene:a})=>{const t=u.ref([]),r=u.computed(()=>t.value[0]),n=(s,f=!1)=>{t.value.some(({uuid:i})=>i===s.uuid)||(f?c(s):t.value.push(s))},o=s=>{t.value=t.value.filter(({uuid:f})=>f!==s.uuid)},c=s=>{const f=s instanceof P.Camera?s:t.value.find(p=>p.uuid===s);if(!f)return;const i=t.value.filter(({uuid:p})=>p!==f.uuid);t.value=[f,...i]};return u.watchEffect(()=>{e.aspectRatio.value&&t.value.forEach(s=>{s instanceof P.PerspectiveCamera&&(s.aspect=e.aspectRatio.value),(s instanceof P.PerspectiveCamera||s instanceof P.OrthographicCamera)&&s.updateProjectionMatrix()})}),a.userData.tres__registerCamera=n,a.userData.tres__deregisterCamera=o,u.onUnmounted(()=>{t.value=[]}),{camera:r,cameras:t,registerCamera:n,deregisterCamera:o,setCameraActive:c}},I=y.createEventHook(),W=y.createEventHook(),z=y.createEventHook(),E=new P.Clock;let B=0,T=0;const{pause:le,resume:ue,isActive:ce}=y.useRafFn(()=>{I.trigger({delta:B,elapsed:T,clock:E}),W.trigger({delta:B,elapsed:T,clock:E}),z.trigger({delta:B,elapsed:T,clock:E})},{immediate:!1});z.on(()=>{B=E.getDelta(),T=E.getElapsedTime()});const N=()=>({onBeforeLoop:I.on,onLoop:W.on,onAfterLoop:z.on,pause:le,resume:ue,isActive:ce}),fe=!0,U="[TresJS ▲ ■ ●] ";function S(){function e(r,n){console.error(`${U} ${r}`,n||"")}function a(r){console.warn(`${U} ${r}`)}function t(r,n){}return{logError:e,logWarning:a,logMessage:t}}function me(e){return typeof e=="number"?[e,e,e]:e instanceof P.Vector3?[e.x,e.y,e.z]:e}function q(e){return e instanceof P.Color?e:Array.isArray(e)?new P.Color(...e):new P.Color(e)}const Y=(e,a)=>{for(const t of Object.keys(a))a[t]instanceof Object&&Object.assign(a[t],Y(e[t],a[t]));return Object.assign(e||{},a),e},de=pe("html,body,base,head,link,meta,style,title,address,article,aside,footer,header,hgroup,h1,h2,h3,h4,h5,h6,nav,section,div,dd,dl,dt,figcaption,figure,picture,hr,img,li,main,ol,p,pre,ul,a,b,abbr,bdi,bdo,br,cite,code,data,dfn,em,i,kbd,mark,q,rp,rt,ruby,s,samp,small,span,strong,sub,sup,time,u,var,wbr,area,audio,map,track,video,embed,object,param,source,canvas,script,noscript,del,ins,caption,col,colgroup,table,thead,tbody,td,th,tr,button,datalist,fieldset,form,input,label,legend,meter,optgroup,option,output,progress,select,textarea,details,dialog,menu,summary,template,blockquote,iframe,tfoot");function H(e){return e&&e.nodeType===1}function x(e){return e.replace(/-([a-z])/g,(a,t)=>t.toUpperCase())}function pe(e,a){const t=Object.create(null),r=e.split(",");for(let n=0;n<r.length;n++)t[r[n]]=!0;return a?n=>!!t[n.toLowerCase()]:n=>!!t[n]}const ge=(e,a)=>{const t=new Set,r=[];for(const n of e){const o=a(n);t.has(o)||(t.add(o),r.push(n))}return r},J=(e,a)=>{if(!a)return;const t=Array.isArray(a)?a:a.match(/([^[.\]])+/g);return t==null?void 0:t.reduce((r,n)=>r&&r[n],e)},ve=(e,a,t)=>{const r=Array.isArray(a)?a:a.match(/([^[.\]])+/g);r&&r.reduce((n,o,c)=>(n[o]===void 0&&(n[o]={}),c===r.length-1&&(n[o]=t),n[o]),e)};function K(e,a){if(H(e)&&H(a)){const n=e.attributes,o=a.attributes;return n.length!==o.length?!1:Array.from(n).every(({name:c,value:s})=>a.getAttribute(c)===s)}if(e===a)return!0;if(e===null||typeof e!="object"||a===null||typeof a!="object")return!1;const t=Object.keys(e),r=Object.keys(a);if(t.length!==r.length)return!1;for(const n of t)if(!r.includes(n)||!K(e[n],a[n]))return!1;return!0}function ye(e,a){if(!Array.isArray(e)||!Array.isArray(a)||e.length!==a.length)return!1;for(let t=0;t<e.length;t++)if(!K(e[t],a[t]))return!1;return!0}const we=Array.isArray,Ce=Number.parseInt(P.REVISION.replace("dev","")),V={realistic:{shadows:!0,physicallyCorrectLights:!0,outputColorSpace:P.SRGBColorSpace,toneMapping:P.ACESFilmicToneMapping,toneMappingExposure:3,shadowMap:{enabled:!0,type:P.PCFSoftShadowMap}}};function X({scene:e,canvas:a,options:t,disableRender:r,contextParts:{sizes:n,camera:o}}){const c=u.computed(()=>({alpha:y.toValue(t.alpha),depth:y.toValue(t.depth),canvas:y.unrefElement(a),context:y.toValue(t.context),stencil:y.toValue(t.stencil),antialias:y.toValue(t.antialias)===void 0?!0:y.toValue(t.antialias),precision:y.toValue(t.precision),powerPreference:y.toValue(t.powerPreference),premultipliedAlpha:y.toValue(t.premultipliedAlpha),preserveDrawingBuffer:y.toValue(t.preserveDrawingBuffer),logarithmicDepthBuffer:y.toValue(t.logarithmicDepthBuffer),failIfMajorPerformanceCaveat:y.toValue(t.failIfMajorPerformanceCaveat)})),s=u.shallowRef(new P.WebGLRenderer(c.value));u.watch(c,()=>{s.value.dispose(),s.value=new P.WebGLRenderer(c.value)}),u.watchEffect(()=>{s.value.setSize(n.width.value,n.height.value)});const{pixelRatio:f}=y.useDevicePixelRatio();u.watchEffect(()=>{s.value.setPixelRatio(f.value)});const{logError:i}=S(),m=(()=>{const v=new P.WebGLRenderer,b={shadowMap:{enabled:v.shadowMap.enabled,type:v.shadowMap.type},toneMapping:v.toneMapping,toneMappingExposure:v.toneMappingExposure,outputColorSpace:v.outputColorSpace};return v.dispose(),b})();u.watchEffect(()=>{const v=y.toValue(t.preset);v&&(v in V||i(`Renderer Preset must be one of these: ${Object.keys(V).join(", ")}`),Y(s.value,V[v]));const b=(M,A)=>{const D=y.toValue(M),O=()=>{if(v)return J(V[v],A)};if(D!==void 0)return D;const C=O();return C!==void 0?C:J(m,A)},h=(M,A)=>ve(s.value,A,b(M,A));h(t.shadows,"shadowMap.enabled"),h(t.toneMapping,"toneMapping"),h(t.shadowMapType,"shadowMap.type"),Ce<150&&h(!t.useLegacyLights,"physicallyCorrectLights"),h(t.outputColorSpace,"outputColorSpace"),h(t.toneMappingExposure,"toneMappingExposure");const L=b(t.clearColor,"clearColor");L&&s.value.setClearColor(L?q(L):new P.Color(0))});const{pause:l,resume:d,onLoop:g}=N();return g(()=>{o.value&&!y.toValue(r)&&s.value.render(e,o.value)}),d(),u.onUnmounted(()=>{l(),s.value.dispose(),s.value.forceContextLoss()}),{renderer:s}}const Q=e=>typeof e=="function",he=e=>!!e&&e.constructor===Array;function Z(e){const a={nodes:{},materials:{}};return e&&e.traverse(t=>{t.name&&(a.nodes[t.name]=t),t.material&&!a.materials[t.material.name]&&(a.materials[t.material.name]=t.material)}),a}async function _e(e,a,t,r,n){const{logError:o}=S(),c=new e;n&&n(c),t&&t(c);const f=(Array.isArray(a)?a:[a]).map(i=>new Promise((p,m)=>{c.load(i,l=>{l.scene&&Object.assign(l,Z(l.scene)),p(l)},r,l=>m(o("[useLoader] - Failed to load resource",l)))}));return he(a)?await Promise.all(f):await f[0]}async function Pe(e){const a=new P.LoadingManager,t=new P.TextureLoader(a),r=n=>new Promise((o,c)=>{t.load(n,s=>o(s),()=>null,()=>{c(new Error("[useTextures] - Failed to load texture"))})});if(we(e)){const n=await Promise.all(e.map(o=>r(o)));return e.length>1?n:n[0]}else{const{map:n,displacementMap:o,normalMap:c,roughnessMap:s,metalnessMap:f,aoMap:i,alphaMap:p,matcap:m}=e;return{map:n?await r(n):null,displacementMap:o?await r(o):null,normalMap:c?await r(c):null,roughnessMap:s?await r(s):null,metalnessMap:f?await r(f):null,aoMap:i?await r(i):null,alphaMap:p?await r(p):null,matcap:m?await r(m):null}}}const ee=(e,{renderer:a,camera:t,raycaster:r})=>{const n=u.computed(()=>a.value.domElement),{x:o,y:c}=y.usePointer({target:n}),{width:s,height:f,top:i,left:p}=y.useElementBounding(n),m=({x:C,y:k})=>{if(n.value)return{x:(C-p.value)/s.value*2-1,y:-((k-i.value)/f.value)*2+1}},l=({x:C,y:k})=>{if(t.value)return r.value.setFromCamera(new P.Vector2(C,k),t.value),r.value.intersectObjects(e.value,!1)},d=C=>{const k=m({x:(C==null?void 0:C.clientX)??o.value,y:(C==null?void 0:C.clientY)??c.value});return k?l(k)||[]:[]},g=u.computed(()=>d()),v=y.createEventHook(),b=y.createEventHook(),h=(C,k)=>{C.trigger({event:k,intersects:d(k)})},L=C=>{h(b,C)};let M;const A=C=>{var k;M=(k=d(C)[0])==null?void 0:k.object},D=C=>{var k;C instanceof PointerEvent&&M===((k=d(C)[0])==null?void 0:k.object)&&h(v,C)},O=C=>b.trigger({event:C,intersects:[]});return n.value.addEventListener("pointerup",D),n.value.addEventListener("pointerdown",A),n.value.addEventListener("pointermove",L),n.value.addEventListener("pointerleave",O),u.onUnmounted(()=>{n!=null&&n.value&&(n.value.removeEventListener("pointerup",D),n.value.removeEventListener("pointerdown",A),n.value.removeEventListener("pointermove",L),n.value.removeEventListener("pointerleave",O))}),{intersects:g,onClick:C=>v.on(C).off,onPointerMove:C=>b.on(C).off}};function Me(){const{logWarning:e}=S();function a(o,c,s){let f=null;return o.traverse(i=>{i[c]===s&&(f=i)}),f||e(`Child with ${c} '${s}' not found.`),f}function t(o,c,s){const f=[];return o.traverse(i=>{i[c].includes(s)&&f.push(i)}),f.length||e(`Children with ${c} '${s}' not found.`),f}function r(o,c){return a(o,"name",c)}function n(o,c){return t(o,"name",c)}return{seek:a,seekByName:r,seekAll:t,seekAllByName:n}}const te=({scene:e,contextParts:a})=>{const t=u.reactive({click:new Map,pointerMove:new Map,pointerEnter:new Map,pointerLeave:new Map}),r=u.ref(new Set),n=l=>{r.value.add(l)},o=l=>{r.value.delete(l)},c=l=>{Object.values(t).forEach(d=>d.delete(l)),o(l)},s=l=>{const{onClick:d,onPointerMove:g,onPointerEnter:v,onPointerLeave:b}=l;d&&t.click.set(l,d),g&&t.pointerMove.set(l,g),v&&t.pointerEnter.set(l,v),b&&t.pointerLeave.set(l,b)};e.userData.tres__registerAtPointerEventHandler=s,e.userData.tres__deregisterAtPointerEventHandler=c,e.userData.tres__registerBlockingObjectAtPointerEventHandler=n,e.userData.tres__deregisterBlockingObjectAtPointerEventHandler=o;const f=u.computed(()=>ge([...Array.from(r.value),...Object.values(t).map(l=>Array.from(l.keys())).flat()],({uuid:l})=>l)),{onClick:i,onPointerMove:p}=ee(f,a);i(({intersects:l,event:d})=>{var g;l.length&&((g=t.click.get(l[0].object))==null||g(l[0],d))});let m;return p(({intersects:l,event:d})=>{var L,M,A,D;const g=(L=l==null?void 0:l[0])==null?void 0:L.object,{pointerLeave:v,pointerEnter:b,pointerMove:h}=t;m&&m!==g&&((M=v.get(m))==null||M(m,d)),g&&(m!==g&&((A=b.get(g))==null||A(l[0],d)),(D=h.get(g))==null||D(l[0],d)),m=g||null}),{registerObject:s,deregisterObject:c}};function Ae(e){let a=0;return e.traverse(t=>{if(t.isMesh&&t.geometry){const r=t.geometry,n=r.attributes.position.count*3*Float32Array.BYTES_PER_ELEMENT,o=r.index?r.index.count*Uint32Array.BYTES_PER_ELEMENT:0,c=r.attributes.normal?r.attributes.normal.count*3*Float32Array.BYTES_PER_ELEMENT:0,s=r.attributes.uv?r.attributes.uv.count*2*Float32Array.BYTES_PER_ELEMENT:0,f=n+o+c+s;a+=f}}),a}const j=u.ref({}),F=e=>Object.assign(j.value,e);function re({scene:e,canvas:a,windowSize:t,disableRender:r,rendererOptions:n}){const o=u.computed(()=>y.toValue(t)?y.useWindowSize():y.useElementSize(y.toValue(a).parentElement)),c=u.computed(()=>o.value.width.value),s=u.computed(()=>o.value.height.value),f=u.computed(()=>c.value/s.value),i={height:s,width:c,aspectRatio:f},p=u.shallowRef(e),{camera:m,cameras:l,registerCamera:d,deregisterCamera:g,setCameraActive:v}=G({sizes:i,scene:e}),{renderer:b}=X({scene:e,canvas:a,options:n,contextParts:{sizes:i,camera:m},disableRender:r}),h={sizes:i,scene:p,camera:m,cameras:u.readonly(l),renderer:b,raycaster:u.shallowRef(new P.Raycaster),controls:u.ref(null),perf:{maxFrames:160,fps:{value:0,accumulator:[]},memory:{currentMem:0,allocatedMem:0,accumulator:[]}},extend:F,registerCamera:d,setCameraActive:v,deregisterCamera:g};u.provide("useTres",h);const L=100,M=y.useFps({every:L}),{isSupported:A,memory:D}=y.useMemory({interval:L}),O=160;let C=performance.now();const k=({timestamp:R})=>{h.scene.value&&(h.perf.memory.allocatedMem=Ae(h.scene.value)),R-C>=L&&(C=R,h.perf.fps.accumulator.push(M.value),h.perf.fps.accumulator.length>O&&h.perf.fps.accumulator.shift(),h.perf.fps.value=M.value,A.value&&D.value&&(h.perf.memory.accumulator.push(D.value.usedJSHeapSize/1024/1024),h.perf.memory.accumulator.length>O&&h.perf.memory.accumulator.shift(),h.perf.memory.currentMem=h.perf.memory.accumulator.reduce((xe,Ve)=>xe+Ve,0)/h.perf.memory.accumulator.length))};let $=0;const Be=1,{pause:Te,resume:ze}=y.useRafFn(({delta:R})=>{window.__TRES__DEVTOOLS__&&(k({timestamp:performance.now()}),$+=R,$>=Be&&(window.__TRES__DEVTOOLS__.cb(h),$=0))},{immediate:!0});return u.onUnmounted(()=>{Te()}),h}function ne(){const e=u.inject("useTres");if(!e)throw new Error("useTresContext must be used together with useTresContextProvider");return e}const be=ne;function Fe(e){}let w=null;const{logError:ae}=S(),ke={createElement(e,a,t,r){var c,s;if(r||(r={}),r.args||(r.args=[]),e==="template"||de(e))return null;let n=e.replace("Tres",""),o;if(e==="primitive"){(r==null?void 0:r.object)===void 0&&ae("Tres primitives need a prop 'object'");const f=r.object;n=f.type,o=Object.assign(f,{type:n,attach:r.attach,primitive:!0})}else{const f=j.value[n];f||ae(`${n} is not defined on the THREE namespace. Use extend to add it to the catalog.`),o=new f(...r.args)}return o.isCamera&&(r!=null&&r.position||o.position.set(3,3,3),r!=null&&r.lookAt||o.lookAt(0,0,0)),(r==null?void 0:r.attach)===void 0&&(o.isMaterial?o.attach="material":o.isBufferGeometry&&(o.attach="geometry")),o.isObject3D&&((c=r==null?void 0:r.material)!=null&&c.isMaterial&&(o.userData.tres__materialViaProp=!0),(s=r==null?void 0:r.geometry)!=null&&s.isBufferGeometry&&(o.userData.tres__geometryViaProp=!0)),o.userData={...o.userData,tres__name:n},o},insert(e,a){var r,n,o,c;a&&a.isScene&&(w=a);const t=a||w;if(e!=null&&e.isObject3D){if(e!=null&&e.isCamera){if(!(w!=null&&w.userData.tres__registerCamera))throw"could not find tres__registerCamera on scene's userData";(n=w==null?void 0:(r=w.userData).tres__registerCamera)==null||n.call(r,e)}if(e!=null&&e.onClick||e!=null&&e.onPointerMove||e!=null&&e.onPointerEnter||e!=null&&e.onPointerLeave){if(!(w!=null&&w.userData.tres__registerAtPointerEventHandler))throw"could not find tres__registerAtPointerEventHandler on scene's userData";(c=w==null?void 0:(o=w.userData).tres__registerAtPointerEventHandler)==null||c.call(o,e)}}e!=null&&e.isObject3D&&(t!=null&&t.isObject3D)?(t.add(e),e.dispatchEvent({type:"added"})):e!=null&&e.isFog?t.fog=e:typeof(e==null?void 0:e.attach)=="string"&&(e.__previousAttach=e[t==null?void 0:t.attach],t&&(t[e.attach]=e))},remove(e){var a,t;if(e){if(e.isObject3D){const r=e,n=i=>{var m,l;const p=i;i.userData.tres__materialViaProp||(m=p.material)==null||m.dispose(),i.userData.tres__geometryViaProp||(l=p.geometry)==null||l.dispose()},o=w==null?void 0:w.userData.tres__deregisterAtPointerEventHandler,c=w==null?void 0:w.userData.tres__deregisterBlockingObjectAtPointerEventHandler,s=i=>{var p,m;if(!c)throw"could not find tres__deregisterBlockingObjectAtPointerEventHandler on scene's userData";if((m=w==null?void 0:(p=w.userData).tres__deregisterBlockingObjectAtPointerEventHandler)==null||m.call(p,i),!o)throw"could not find tres__deregisterAtPointerEventHandler on scene's userData";(i!=null&&i.onClick||i!=null&&i.onPointerMove||i!=null&&i.onPointerEnter||i!=null&&i.onPointerLeave)&&(o==null||o(i))},f=i=>{const p=w==null?void 0:w.userData.tres__deregisterCamera;if(!p)throw"could not find tres__deregisterCamera on scene's userData";i.isCamera&&(p==null||p(i))};r.traverse(i=>{n(i),f(i),s==null||s(i)}),n(r),f(r),s==null||s(r)}(a=e.removeFromParent)==null||a.call(e),(t=e.dispose)==null||t.call(e)}},patchProp(e,a,t,r){var n,o,c,s;if(e){let f=e,i=a;if(e.isObject3D&&i==="blocks-pointer-events"){r||r===""?(o=w==null?void 0:(n=w.userData).tres__registerBlockingObjectAtPointerEventHandler)==null||o.call(n,e):(s=w==null?void 0:(c=w.userData).tres__deregisterBlockingObjectAtPointerEventHandler)==null||s.call(c,e);return}let p=x(i),m=f==null?void 0:f[p];if(i==="args"){const d=e,g=t??[],v=r??[],b=e.userData.tres__name||e.type;b&&g.length&&!ye(g,v)&&(f=Object.assign(d,new j.value[b](...r)));return}if(f.type==="BufferGeometry"){if(i==="args")return;f.setAttribute(x(i),new P.BufferAttribute(...r));return}if(i.includes("-")&&m===void 0){const d=i.split("-");m=d.reduce((g,v)=>g[x(v)],f),i=d.pop(),p=i.toLowerCase(),m!=null&&m.set||(f=d.reduce((g,v)=>g[x(v)],f))}let l=r;if(l===""&&(l=!0),Q(m)){Array.isArray(l)?e[p](...l):e[p](l);return}!(m!=null&&m.set)&&!Q(m)?f[p]=l:m.constructor===l.constructor&&(m!=null&&m.copy)?m==null||m.copy(l):Array.isArray(l)?m.set(...l):!m.isColor&&m.setScalar?m.setScalar(l):m.set(l)}},parentNode(e){return(e==null?void 0:e.parent)||null},createText:()=>void 0,createComment:()=>void 0,setText:()=>void 0,setElementText:()=>void 0,nextSibling:()=>void 0,querySelector:()=>void 0,setScopeId:()=>void 0,cloneNode:()=>void 0,insertStaticContent:()=>void 0},{render:Le}=u.createRenderer(ke);F(ie);const De=["data-scene"],oe=u.defineComponent({__name:"TresCanvas",props:{shadows:{type:Boolean,default:void 0},clearColor:{},toneMapping:{},shadowMapType:{},useLegacyLights:{type:Boolean,default:void 0},outputColorSpace:{},toneMappingExposure:{},camera:{},preset:{},windowSize:{type:Boolean,default:void 0},disableRender:{type:Boolean,default:void 0},context:{},precision:{},alpha:{type:Boolean,default:void 0},premultipliedAlpha:{type:Boolean},antialias:{type:Boolean,default:void 0},stencil:{type:Boolean,default:void 0},preserveDrawingBuffer:{type:Boolean,default:void 0},powerPreference:{},depth:{type:Boolean,default:void 0},logarithmicDepthBuffer:{type:Boolean,default:void 0},failIfMajorPerformanceCaveat:{type:Boolean,default:void 0}},setup(e,{expose:a}){var l;const t=e,{logWarning:r}=S(),n=u.ref(),o=u.shallowRef(new P.Scene);N();const c=u.useSlots(),s=(l=u.getCurrentInstance())==null?void 0:l.appContext.app,f=d=>u.defineComponent({setup(){var v;const g=(v=u.getCurrentInstance())==null?void 0:v.appContext;return g&&(g.app=s),u.provide("useTres",d),u.provide("extend",F),()=>u.h(u.Fragment,null,c!=null&&c.default?c.default():[])}}),i=d=>{const g=f(d);Le(u.h(g),o.value)},p=u.computed(()=>t.disableRender),m=u.shallowRef(null);return a({context:m}),u.onMounted(()=>{const d=n;m.value=re({scene:o.value,canvas:d,windowSize:t.windowSize,disableRender:p,rendererOptions:t}),te({scene:o.value,contextParts:m.value});const{registerCamera:g,camera:v,cameras:b,deregisterCamera:h}=m.value;i(m.value);const L=()=>{const M=new P.PerspectiveCamera(45,window.innerWidth/window.innerHeight,.1,1e3);M.position.set(3,3,3),M.lookAt(0,0,0),g(M);const A=u.watchEffect(()=>{b.value.length>=2&&(M.removeFromParent(),h(M),A==null||A())})};u.watch(()=>t.camera,(M,A)=>{M&&g(M),A&&(A.removeFromParent(),h(A))},{immediate:!0}),v.value||(r("No camera found. Creating a default perspective camera. To have full control over a camera, please add one to the scene."),L())}),(d,g)=>(u.openBlock(),u.createElementBlock("canvas",{ref_key:"canvas",ref:n,"data-scene":o.value.uuid,class:u.normalizeClass(d.$attrs.class),style:u.normalizeStyle({display:"block",width:"100%",height:"100%",position:d.windowSize?"fixed":"relative",top:0,left:0,pointerEvents:"auto",touchAction:"none",...d.$attrs.style})},null,14,De))}}),Oe=["TresCanvas","TresLeches","TresScene"],Se={template:{compilerOptions:{isCustomElement:e=>e.startsWith("Tres")&&!Oe.includes(e)||e==="primitive"}}},Ee={install(e){e.component("TresCanvas",oe)}};_.TresCanvas=oe,_.catalogue=j,_.default=Ee,_.extend=F,_.isProd=fe,_.normalizeColor=q,_.normalizeVectorFlexibleParam=me,_.templateCompilerOptions=Se,_.trasverseObjects=Z,_.useCamera=G,_.useLoader=_e,_.useLogger=S,_.usePointerEventHandler=te,_.useRaycaster=ee,_.useRenderLoop=N,_.useRenderer=X,_.useSeek=Me,_.useTexture=Pe,_.useTres=be,_.useTresContext=ne,_.useTresContextProvider=re,Object.defineProperties(_,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}})});
|
|
8
|
+
(function(w,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):(w=typeof globalThis<"u"?globalThis:w||self,l(w.tres={},w.Vue,w.Three,w.VueUseCore))})(this,function(w,l,M,v){"use strict";function ie(e){const a=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(e){for(const t in e)if(t!=="default"){const r=Object.getOwnPropertyDescriptor(e,t);Object.defineProperty(a,t,r.get?r:{enumerable:!0,get:()=>e[t]})}}return a.default=e,Object.freeze(a)}const le=ie(M),ue={name:"@tresjs/core",type:"module",version:"3.6.1",packageManager:"pnpm@8.10.2",description:"Declarative ThreeJS using Vue Components",author:"Alvaro Saburido <hola@alvarosaburido.dev> (https://github.com/alvarosabu/)",license:"MIT",keywords:["vue","3d","threejs","three","threejs-vue"],sideEffects:!1,exports:{".":{types:"./dist/index.d.ts",require:"./dist/tres.umd.cjs",import:"./dist/tres.js"},"./components":{types:"./dist/components/index.d.ts"},"./composables":{types:"./dist/composables/index.d.ts"},"./types":{types:"./dist/types/index.d.ts"},"./utils":{types:"./dist/utils/index.d.ts"},"./*":"./*"},main:"./dist/tres.js",module:"./dist/tres.js",types:"./dist/index.d.ts",files:["dist","*.d.ts"],publishConfig:{access:"public"},scripts:{dev:"cd playground && npm run dev",build:"vite build",playground:"cd playground && npm run dev",test:"vitest","test:ci":"vitest run","test:ui":"vitest --ui",release:"release-it",coverage:"vitest run --coverage",lint:"eslint . --ext .js,.jsx,.ts,.tsx,.vue","docs:dev":"vitepress dev docs","docs:build":"vitepress build docs","docs:serve":"vitepress serve docs","docs:preview":"vitepress preview docs","docs:contributors":"esno scripts/update-contributors.ts"},peerDependencies:{three:">=0.133",vue:">=3.3"},dependencies:{"@alvarosabu/utils":"^3.1.1","@vueuse/core":"^10.7.0"},devDependencies:{"@release-it/conventional-changelog":"^8.0.1","@stackblitz/sdk":"^1.9.0","@tresjs/cientos":"3.6.0","@tresjs/eslint-config-vue":"^0.2.1","@types/three":"^0.159.0","@typescript-eslint/eslint-plugin":"^6.14.0","@typescript-eslint/parser":"^6.14.0","@vitejs/plugin-vue":"^4.5.2","@vitest/coverage-c8":"^0.33.0","@vitest/ui":"^1.0.4","@vue/test-utils":"^2.4.3",eslint:"^8.55.0","eslint-plugin-vue":"^9.19.2",esno:"^4.0.0",gsap:"^3.12.3",jsdom:"^23.0.1",kolorist:"^1.8.0",ohmyfetch:"^0.4.21",pathe:"^1.1.1","release-it":"^17.0.1","rollup-plugin-analyzer":"^4.0.0","rollup-plugin-copy":"^3.5.0","rollup-plugin-visualizer":"^5.11.0",three:"^0.159.0",unocss:"^0.58.0",unplugin:"^1.5.1","unplugin-vue-components":"^0.26.0",vite:"^5.0.8","vite-plugin-banner":"^0.7.1","vite-plugin-dts":"3.6.4","vite-plugin-inspect":"^0.8.1","vite-plugin-require-transform":"^1.0.21","vite-svg-loader":"^5.1.0",vitepress:"1.0.0-rc.31",vitest:"^1.0.4",vue:"^3.3.11","vue-demi":"^0.14.6"}},G=({sizes:e,scene:a})=>{const t=l.ref([]),r=l.computed(()=>t.value[0]),n=(o,u=!1)=>{t.value.some(({uuid:f})=>f===o.uuid)||(u?c(o):t.value.push(o))},s=o=>{t.value=t.value.filter(({uuid:u})=>u!==o.uuid)},c=o=>{const u=o instanceof M.Camera?o:t.value.find(m=>m.uuid===o);if(!u)return;const f=t.value.filter(({uuid:m})=>m!==u.uuid);t.value=[u,...f]};return l.watchEffect(()=>{e.aspectRatio.value&&t.value.forEach(o=>{o instanceof M.PerspectiveCamera&&(o.aspect=e.aspectRatio.value),(o instanceof M.PerspectiveCamera||o instanceof M.OrthographicCamera)&&o.updateProjectionMatrix()})}),a.userData.tres__registerCamera=n,a.userData.tres__deregisterCamera=s,l.onUnmounted(()=>{t.value=[]}),{camera:r,cameras:t,registerCamera:n,deregisterCamera:s,setCameraActive:c}},W=v.createEventHook(),q=v.createEventHook(),R=v.createEventHook(),E=new M.Clock;let O=0,B=0;const{pause:ce,resume:fe,isActive:de}=v.useRafFn(()=>{W.trigger({delta:O,elapsed:B,clock:E}),q.trigger({delta:O,elapsed:B,clock:E}),R.trigger({delta:O,elapsed:B,clock:E})},{immediate:!1});R.on(()=>{O=E.getDelta(),B=E.getElapsedTime()});const $=()=>({onBeforeLoop:W.on,onLoop:q.on,onAfterLoop:R.on,pause:ce,resume:fe,isActive:de}),pe=!0,U="[TresJS ▲ ■ ●] ";function L(){function e(r,n){console.error(`${U} ${r}`,n||"")}function a(r){console.warn(`${U} ${r}`)}function t(r,n){}return{logError:e,logWarning:a,logMessage:t}}function me(e){return typeof e=="number"?[e,e,e]:e instanceof M.Vector3?[e.x,e.y,e.z]:e}function Y(e){return e instanceof M.Color?e:Array.isArray(e)?new M.Color(...e):new M.Color(e)}const H=(e,a)=>{for(const t of Object.keys(a))a[t]instanceof Object&&Object.assign(a[t],H(e[t],a[t]));return Object.assign(e||{},a),e},ve=ge("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 J(e){return e&&e.nodeType===1}function x(e){return e.replace(/-([a-z])/g,(a,t)=>t.toUpperCase())}function ge(e,a){const t=Object.create(null),r=e.split(",");for(let n=0;n<r.length;n++)t[r[n]]=!0;return a?n=>!!t[n.toLowerCase()]:n=>!!t[n]}const ye=(e,a)=>{const t=new Set,r=[];for(const n of e){const s=a(n);t.has(s)||(t.add(s),r.push(n))}return r},K=(e,a)=>{if(!a)return;const t=Array.isArray(a)?a:a.match(/([^[.\]])+/g);return t==null?void 0:t.reduce((r,n)=>r&&r[n],e)},he=(e,a,t)=>{const r=Array.isArray(a)?a:a.match(/([^[.\]])+/g);r&&r.reduce((n,s,c)=>(n[s]===void 0&&(n[s]={}),c===r.length-1&&(n[s]=t),n[s]),e)};function X(e,a){if(J(e)&&J(a)){const n=e.attributes,s=a.attributes;return n.length!==s.length?!1:Array.from(n).every(({name:c,value:o})=>a.getAttribute(c)===o)}if(e===a)return!0;if(e===null||typeof e!="object"||a===null||typeof a!="object")return!1;const t=Object.keys(e),r=Object.keys(a);if(t.length!==r.length)return!1;for(const n of t)if(!r.includes(n)||!X(e[n],a[n]))return!1;return!0}function we(e,a){if(!Array.isArray(e)||!Array.isArray(a)||e.length!==a.length)return!1;for(let t=0;t<e.length;t++)if(!X(e[t],a[t]))return!1;return!0}const be=Array.isArray,Ce=Number.parseInt(M.REVISION.replace("dev","")),T={realistic:{shadows:!0,physicallyCorrectLights:!0,outputColorSpace:M.SRGBColorSpace,toneMapping:M.ACESFilmicToneMapping,toneMappingExposure:3,shadowMap:{enabled:!0,type:M.PCFSoftShadowMap}}};function Q({scene:e,canvas:a,options:t,disableRender:r,contextParts:{sizes:n,camera:s}}){const c=l.computed(()=>({alpha:v.toValue(t.alpha),depth:v.toValue(t.depth),canvas:v.unrefElement(a),context:v.toValue(t.context),stencil:v.toValue(t.stencil),antialias:v.toValue(t.antialias)===void 0?!0:v.toValue(t.antialias),precision:v.toValue(t.precision),powerPreference:v.toValue(t.powerPreference),premultipliedAlpha:v.toValue(t.premultipliedAlpha),preserveDrawingBuffer:v.toValue(t.preserveDrawingBuffer),logarithmicDepthBuffer:v.toValue(t.logarithmicDepthBuffer),failIfMajorPerformanceCaveat:v.toValue(t.failIfMajorPerformanceCaveat)})),o=l.shallowRef(new M.WebGLRenderer(c.value));l.watch(c,()=>{o.value.dispose(),o.value=new M.WebGLRenderer(c.value)}),l.watchEffect(()=>{o.value.setSize(n.width.value,n.height.value)});const{pixelRatio:u}=v.useDevicePixelRatio();l.watchEffect(()=>{o.value.setPixelRatio(u.value)});const{logError:f}=L(),d=(()=>{const p=new M.WebGLRenderer,b={shadowMap:{enabled:p.shadowMap.enabled,type:p.shadowMap.type},toneMapping:p.toneMapping,toneMappingExposure:p.toneMappingExposure,outputColorSpace:p.outputColorSpace};return p.dispose(),b})();l.watchEffect(()=>{const p=v.toValue(t.preset);p&&(p in T||f(`Renderer Preset must be one of these: ${Object.keys(T).join(", ")}`),H(o.value,T[p]));const b=(D,S)=>{const P=v.toValue(D),j=()=>{if(p)return K(T[p],S)};if(P!==void 0)return P;const h=j();return h!==void 0?h:K(d,S)},k=(D,S)=>he(o.value,S,b(D,S));k(t.shadows,"shadowMap.enabled"),k(t.toneMapping,"toneMapping"),k(t.shadowMapType,"shadowMap.type"),Ce<150&&k(!t.useLegacyLights,"physicallyCorrectLights"),k(t.outputColorSpace,"outputColorSpace"),k(t.toneMappingExposure,"toneMappingExposure");const _=b(t.clearColor,"clearColor");_&&o.value.setClearColor(_?Y(_):new M.Color(0))});const{pause:i,resume:y,onLoop:C}=$();return C(()=>{s.value&&!v.toValue(r)&&o.value.render(e,s.value)}),y(),l.onUnmounted(()=>{i(),o.value.dispose(),o.value.forceContextLoss()}),{renderer:o}}const Z=e=>typeof e=="function",_e=e=>!!e&&e.constructor===Array;function ee(e){const a={nodes:{},materials:{}};return e&&e.traverse(t=>{t.name&&(a.nodes[t.name]=t),t.material&&!a.materials[t.material.name]&&(a.materials[t.material.name]=t.material)}),a}async function Me(e,a,t,r,n){const{logError:s}=L(),c=new e;n&&n(c),t&&t(c);const u=(Array.isArray(a)?a:[a]).map(f=>new Promise((m,d)=>{c.load(f,i=>{i.scene&&Object.assign(i,ee(i.scene)),m(i)},r,i=>d(s("[useLoader] - Failed to load resource",i)))}));return _e(a)?await Promise.all(u):await u[0]}async function Pe(e){const a=new M.LoadingManager,t=new M.TextureLoader(a),r=n=>new Promise((s,c)=>{t.load(n,o=>s(o),()=>null,()=>{c(new Error("[useTextures] - Failed to load texture"))})});if(be(e)){const n=await Promise.all(e.map(s=>r(s)));return e.length>1?n:n[0]}else{const{map:n,displacementMap:s,normalMap:c,roughnessMap:o,metalnessMap:u,aoMap:f,alphaMap:m,matcap:d}=e;return{map:n?await r(n):null,displacementMap:s?await r(s):null,normalMap:c?await r(c):null,roughnessMap:o?await r(o):null,metalnessMap:u?await r(u):null,aoMap:f?await r(f):null,alphaMap:m?await r(m):null,matcap:d?await r(d):null}}}const te=(e,{renderer:a,camera:t,raycaster:r})=>{const n=l.computed(()=>a.value.domElement),{x:s,y:c}=v.usePointer({target:n}),{width:o,height:u,top:f,left:m}=v.useElementBounding(n),d=({x:h,y:A})=>{if(n.value)return{x:(h-m.value)/o.value*2-1,y:-((A-f.value)/u.value)*2+1}},i=({x:h,y:A})=>{if(t.value)return r.value.setFromCamera(new M.Vector2(h,A),t.value),r.value.intersectObjects(e.value,!1)},y=h=>{const A=d({x:(h==null?void 0:h.clientX)??s.value,y:(h==null?void 0:h.clientY)??c.value});return A?i(A)||[]:[]},C=l.computed(()=>y()),p=v.createEventHook(),b=v.createEventHook(),k=(h,A)=>{h.trigger({event:A,intersects:y(A)})},_=h=>{k(b,h)};let D;const S=h=>{var A;D=(A=y(h)[0])==null?void 0:A.object},P=h=>{var A;h instanceof PointerEvent&&D===((A=y(h)[0])==null?void 0:A.object)&&k(p,h)},j=h=>b.trigger({event:h,intersects:[]});return n.value.addEventListener("pointerup",P),n.value.addEventListener("pointerdown",S),n.value.addEventListener("pointermove",_),n.value.addEventListener("pointerleave",j),l.onUnmounted(()=>{n!=null&&n.value&&(n.value.removeEventListener("pointerup",P),n.value.removeEventListener("pointerdown",S),n.value.removeEventListener("pointermove",_),n.value.removeEventListener("pointerleave",j))}),{intersects:C,onClick:h=>p.on(h).off,onPointerMove:h=>b.on(h).off}};function ke(){const{logWarning:e}=L();function a(s,c,o){let u=null;return s.traverse(f=>{f[c]===o&&(u=f)}),u||e(`Child with ${c} '${o}' not found.`),u}function t(s,c,o){const u=[];return s.traverse(f=>{f[c].includes(o)&&u.push(f)}),u.length||e(`Children with ${c} '${o}' not found.`),u}function r(s,c){return a(s,"name",c)}function n(s,c){return t(s,"name",c)}return{seek:a,seekByName:r,seekAll:t,seekAllByName:n}}const re=({scene:e,contextParts:a})=>{const t=l.reactive({click:new Map,pointerMove:new Map,pointerEnter:new Map,pointerLeave:new Map}),r=l.ref(new Set),n=i=>{r.value.add(i)},s=i=>{r.value.delete(i)},c=i=>{Object.values(t).forEach(y=>y.delete(i)),s(i)},o=i=>{const{onClick:y,onPointerMove:C,onPointerEnter:p,onPointerLeave:b}=i;y&&t.click.set(i,y),C&&t.pointerMove.set(i,C),p&&t.pointerEnter.set(i,p),b&&t.pointerLeave.set(i,b)};e.userData.tres__registerAtPointerEventHandler=o,e.userData.tres__deregisterAtPointerEventHandler=c,e.userData.tres__registerBlockingObjectAtPointerEventHandler=n,e.userData.tres__deregisterBlockingObjectAtPointerEventHandler=s;const u=l.computed(()=>ye([...Array.from(r.value),...Object.values(t).map(i=>Array.from(i.keys())).flat()],({uuid:i})=>i)),{onClick:f,onPointerMove:m}=te(u,a);f(({intersects:i,event:y})=>{var C;i.length&&((C=t.click.get(i[0].object))==null||C(i[0],y))});let d;return m(({intersects:i,event:y})=>{var _,D,S,P;const C=(_=i==null?void 0:i[0])==null?void 0:_.object,{pointerLeave:p,pointerEnter:b,pointerMove:k}=t;d&&d!==C&&((D=p.get(d))==null||D(d,y)),C&&(d!==C&&((S=b.get(C))==null||S(i[0],y)),(P=k.get(C))==null||P(i[0],y)),d=C||null}),{registerObject:o,deregisterObject:c}};function Ae(e){let a=0;return e.traverse(t=>{if(t.isMesh&&t.geometry){const r=t.geometry,n=r.attributes.position.count*3*Float32Array.BYTES_PER_ELEMENT,s=r.index?r.index.count*Uint32Array.BYTES_PER_ELEMENT:0,c=r.attributes.normal?r.attributes.normal.count*3*Float32Array.BYTES_PER_ELEMENT:0,o=r.attributes.uv?r.attributes.uv.count*2*Float32Array.BYTES_PER_ELEMENT:0,u=n+s+c+o;a+=u}}),a}const V=l.ref({}),z=e=>Object.assign(V.value,e);function ne({scene:e,canvas:a,windowSize:t,disableRender:r,rendererOptions:n}){const s=l.computed(()=>v.toValue(t)?v.useWindowSize():v.useElementSize(v.toValue(a).parentElement)),c=l.shallowRef({width:0,height:0}),o=v.refDebounced(c,10),u=l.watchEffect(()=>{c.value={width:s.value.width.value,height:s.value.height.value}}),f=l.computed(()=>o.value.width/o.value.height),m={height:l.computed(()=>o.value.height),width:l.computed(()=>o.value.width),aspectRatio:f},d=l.shallowRef(e),{camera:i,cameras:y,registerCamera:C,deregisterCamera:p,setCameraActive:b}=G({sizes:m,scene:e}),{renderer:k}=Q({scene:e,canvas:a,options:n,contextParts:{sizes:m,camera:i},disableRender:r}),_={sizes:m,scene:d,camera:i,cameras:l.readonly(y),renderer:k,raycaster:l.shallowRef(new M.Raycaster),controls:l.ref(null),perf:{maxFrames:160,fps:{value:0,accumulator:[]},memory:{currentMem:0,allocatedMem:0,accumulator:[]}},extend:z,registerCamera:C,setCameraActive:b,deregisterCamera:p};l.provide("useTres",_);const D=100,S=v.useFps({every:D}),{isSupported:P,memory:j}=v.useMemory({interval:D}),h=160;let A=performance.now();const xe=({timestamp:F})=>{_.scene.value&&(_.perf.memory.allocatedMem=Ae(_.scene.value)),F-A>=D&&(A=F,_.perf.fps.accumulator.push(S.value),_.perf.fps.accumulator.length>h&&_.perf.fps.accumulator.shift(),_.perf.fps.value=S.value,P.value&&j.value&&(_.perf.memory.accumulator.push(j.value.usedJSHeapSize/1024/1024),_.perf.memory.accumulator.length>h&&_.perf.memory.accumulator.shift(),_.perf.memory.currentMem=_.perf.memory.accumulator.reduce((ze,Fe)=>ze+Fe,0)/_.perf.memory.accumulator.length))};let I=0;const Te=1,{pause:Ve,resume:it}=v.useRafFn(({delta:F})=>{window.__TRES__DEVTOOLS__&&(xe({timestamp:performance.now()}),I+=F,I>=Te&&(window.__TRES__DEVTOOLS__.cb(_),I=0))},{immediate:!0});return l.onUnmounted(()=>{u(),Ve()}),_}function ae(){const e=l.inject("useTres");if(!e)throw new Error("useTresContext must be used together with useTresContextProvider");return e}const De=ae;function st(e){}let g=null;const{logError:se}=L(),N=["onClick","onPointerMove","onPointerEnter","onPointerLeave"],Se={createElement(e,a,t,r){var c,o;if(r||(r={}),r.args||(r.args=[]),e==="template"||ve(e))return null;let n=e.replace("Tres",""),s;if(e==="primitive"){(r==null?void 0:r.object)===void 0&&se("Tres primitives need a prop 'object'");const u=r.object;n=u.type,s=Object.assign(u,{type:n,attach:r.attach,primitive:!0})}else{const u=V.value[n];u||se(`${n} is not defined on the THREE namespace. Use extend to add it to the catalog.`),s=new u(...r.args)}return s.isCamera&&(r!=null&&r.position||s.position.set(3,3,3),r!=null&&r.lookAt||s.lookAt(0,0,0)),(r==null?void 0:r.attach)===void 0&&(s.isMaterial?s.attach="material":s.isBufferGeometry&&(s.attach="geometry")),s.isObject3D&&((c=r==null?void 0:r.material)!=null&&c.isMaterial&&(s.userData.tres__materialViaProp=!0),(o=r==null?void 0:r.geometry)!=null&&o.isBufferGeometry&&(s.userData.tres__geometryViaProp=!0)),s.userData={...s.userData,tres__name:n},s},insert(e,a){var r,n,s,c;a&&a.isScene&&(g=a);const t=a||g;if(e!=null&&e.isObject3D){if(e!=null&&e.isCamera){if(!(g!=null&&g.userData.tres__registerCamera))throw"could not find tres__registerCamera on scene's userData";(n=g==null?void 0:(r=g.userData).tres__registerCamera)==null||n.call(r,e)}if(e&&N.some(o=>e[o])){if(!(g!=null&&g.userData.tres__registerAtPointerEventHandler))throw"could not find tres__registerAtPointerEventHandler on scene's userData";(c=g==null?void 0:(s=g.userData).tres__registerAtPointerEventHandler)==null||c.call(s,e)}}e!=null&&e.isObject3D&&(t!=null&&t.isObject3D)?(t.add(e),e.dispatchEvent({type:"added"})):e!=null&&e.isFog?t.fog=e:typeof(e==null?void 0:e.attach)=="string"&&(e.__previousAttach=e[t==null?void 0:t.attach],t&&(t[e.attach]=e))},remove(e){var a,t;if(e){if(e.isObject3D){const r=e,n=f=>{var d,i;const m=f;f.userData.tres__materialViaProp||((d=m.material)==null||d.dispose(),m.material=void 0),f.userData.tres__geometryViaProp||((i=m.geometry)==null||i.dispose(),m.geometry=void 0)},s=g==null?void 0:g.userData.tres__deregisterAtPointerEventHandler,c=g==null?void 0:g.userData.tres__deregisterBlockingObjectAtPointerEventHandler,o=f=>{var m,d;if(!c)throw"could not find tres__deregisterBlockingObjectAtPointerEventHandler on scene's userData";if((d=g==null?void 0:(m=g.userData).tres__deregisterBlockingObjectAtPointerEventHandler)==null||d.call(m,f),!s)throw"could not find tres__deregisterAtPointerEventHandler on scene's userData";f&&N.some(i=>f[i])&&(s==null||s(f))},u=f=>{const m=g==null?void 0:g.userData.tres__deregisterCamera;if(!m)throw"could not find tres__deregisterCamera on scene's userData";f.isCamera&&(m==null||m(f))};(a=e.removeFromParent)==null||a.call(e),r.traverse(f=>{n(f),u(f),o==null||o(f)}),n(r),u(r),o==null||o(r)}(t=e.dispose)==null||t.call(e)}},patchProp(e,a,t,r){var n,s,c,o;if(e){let u=e,f=a;if(e.isObject3D&&f==="blocks-pointer-events"){r||r===""?(s=g==null?void 0:(n=g.userData).tres__registerBlockingObjectAtPointerEventHandler)==null||s.call(n,e):(o=g==null?void 0:(c=g.userData).tres__deregisterBlockingObjectAtPointerEventHandler)==null||o.call(c,e);return}let m=x(f),d=u==null?void 0:u[m];if(f==="args"){const y=e,C=t??[],p=r??[],b=e.userData.tres__name||e.type;b&&C.length&&!we(C,p)&&(u=Object.assign(y,new V.value[b](...r)));return}if(u.type==="BufferGeometry"){if(f==="args")return;u.setAttribute(x(f),new M.BufferAttribute(...r));return}if(f.includes("-")&&d===void 0){const y=f.split("-");d=y.reduce((C,p)=>C[x(p)],u),f=y.pop(),m=f.toLowerCase(),d!=null&&d.set||(u=y.reduce((C,p)=>C[x(p)],u))}let i=r;if(i===""&&(i=!0),Z(d)){N.includes(a)||(Array.isArray(i)?e[m](...i):e[m](i));return}!(d!=null&&d.set)&&!Z(d)?u[m]=i:d.constructor===i.constructor&&(d!=null&&d.copy)?d==null||d.copy(i):Array.isArray(i)?d.set(...i):!d.isColor&&d.setScalar?d.setScalar(i):d.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},{render:je}=l.createRenderer(Se);z(le);const Le=["data-scene","data-tres"],oe=l.defineComponent({__name:"TresCanvas",props:{shadows:{type:Boolean,default:void 0},clearColor:{},toneMapping:{},shadowMapType:{},useLegacyLights:{type:Boolean,default:void 0},outputColorSpace:{},toneMappingExposure:{},camera:{},preset:{},windowSize:{type:Boolean,default:void 0},disableRender:{type:Boolean,default:void 0},context:{},precision:{},alpha:{type:Boolean,default:void 0},premultipliedAlpha:{type:Boolean},antialias:{type:Boolean,default:void 0},stencil:{type:Boolean,default:void 0},preserveDrawingBuffer:{type:Boolean,default:void 0},powerPreference:{},depth:{type:Boolean,default:void 0},logarithmicDepthBuffer:{type:Boolean,default:void 0},failIfMajorPerformanceCaveat:{type:Boolean,default:void 0}},setup(e,{expose:a}){var C;const t=e,{logWarning:r}=L(),n=l.ref(),s=l.shallowRef(new M.Scene),{resume:c}=$(),o=l.useSlots(),u=(C=l.getCurrentInstance())==null?void 0:C.appContext.app,f=p=>l.defineComponent({setup(){var k;const b=(k=l.getCurrentInstance())==null?void 0:k.appContext;return b&&(b.app=u),l.provide("useTres",p),l.provide("extend",z),()=>l.h(l.Fragment,null,o!=null&&o.default?o.default():[])}}),m=p=>{const b=f(p);je(l.h(b),s.value)},d=(p,b=!1)=>{s.value.children=[],b&&(p.renderer.value.dispose(),p.renderer.value.renderLists.dispose(),p.renderer.value.forceContextLoss()),m(p),c()},i=l.computed(()=>t.disableRender),y=l.shallowRef(null);return a({context:y,dispose:()=>d(y.value,!0)}),l.onMounted(()=>{const p=n;y.value=ne({scene:s.value,canvas:p,windowSize:t.windowSize,disableRender:i,rendererOptions:t}),re({scene:s.value,contextParts:y.value});const{registerCamera:b,camera:k,cameras:_,deregisterCamera:D}=y.value;m(y.value);const S=()=>{const P=new M.PerspectiveCamera(45,window.innerWidth/window.innerHeight,.1,1e3);P.position.set(3,3,3),P.lookAt(0,0,0),b(P);const j=l.watchEffect(()=>{_.value.length>=2&&(P.removeFromParent(),D(P),j==null||j())})};l.watch(()=>t.camera,(P,j)=>{P&&b(P),j&&(j.removeFromParent(),D(j))},{immediate:!0}),k.value||(r("No camera found. Creating a default perspective camera. To have full control over a camera, please add one to the scene."),S())}),(p,b)=>(l.openBlock(),l.createElementBlock("canvas",{ref_key:"canvas",ref:n,"data-scene":s.value.uuid,class:l.normalizeClass(p.$attrs.class),"data-tres":`tresjs ${l.unref(ue).version}`,style:l.normalizeStyle({display:"block",width:"100%",height:"100%",position:p.windowSize?"fixed":"relative",top:0,left:0,pointerEvents:"auto",touchAction:"none",...p.$attrs.style})},null,14,Le))}}),Ee=["TresCanvas","TresLeches","TresScene"],Oe={template:{compilerOptions:{isCustomElement:e=>e.startsWith("Tres")&&!Ee.includes(e)||e==="primitive"}}},Be={install(e){e.component("TresCanvas",oe)}};w.TresCanvas=oe,w.catalogue=V,w.default=Be,w.extend=z,w.isProd=pe,w.normalizeColor=Y,w.normalizeVectorFlexibleParam=me,w.templateCompilerOptions=Oe,w.trasverseObjects=ee,w.useCamera=G,w.useLoader=Me,w.useLogger=L,w.usePointerEventHandler=re,w.useRaycaster=te,w.useRenderLoop=$,w.useRenderer=Q,w.useSeek=ke,w.useTexture=Pe,w.useTres=De,w.useTresContext=ae,w.useTresContextProvider=ne,Object.defineProperties(w,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}})});
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tresjs/core",
|
|
3
3
|
"type": "module",
|
|
4
|
-
"version": "3.6.
|
|
4
|
+
"version": "3.6.1",
|
|
5
5
|
"packageManager": "pnpm@8.10.2",
|
|
6
6
|
"description": "Declarative ThreeJS using Vue Components",
|
|
7
7
|
"author": "Alvaro Saburido <hola@alvarosaburido.dev> (https://github.com/alvarosabu/)",
|
|
@@ -66,45 +66,45 @@
|
|
|
66
66
|
},
|
|
67
67
|
"dependencies": {
|
|
68
68
|
"@alvarosabu/utils": "^3.1.1",
|
|
69
|
-
"@vueuse/core": "^10.
|
|
69
|
+
"@vueuse/core": "^10.7.0"
|
|
70
70
|
},
|
|
71
71
|
"devDependencies": {
|
|
72
72
|
"@release-it/conventional-changelog": "^8.0.1",
|
|
73
73
|
"@stackblitz/sdk": "^1.9.0",
|
|
74
74
|
"@tresjs/cientos": "3.6.0",
|
|
75
75
|
"@tresjs/eslint-config-vue": "^0.2.1",
|
|
76
|
-
"@types/three": "^0.
|
|
77
|
-
"@typescript-eslint/eslint-plugin": "^6.
|
|
78
|
-
"@typescript-eslint/parser": "^6.
|
|
79
|
-
"@vitejs/plugin-vue": "^4.5.
|
|
76
|
+
"@types/three": "^0.159.0",
|
|
77
|
+
"@typescript-eslint/eslint-plugin": "^6.14.0",
|
|
78
|
+
"@typescript-eslint/parser": "^6.14.0",
|
|
79
|
+
"@vitejs/plugin-vue": "^4.5.2",
|
|
80
80
|
"@vitest/coverage-c8": "^0.33.0",
|
|
81
|
-
"@vitest/ui": "^0.
|
|
82
|
-
"@vue/test-utils": "^2.4.
|
|
83
|
-
"eslint": "^8.
|
|
84
|
-
"eslint-plugin-vue": "^9.
|
|
81
|
+
"@vitest/ui": "^1.0.4",
|
|
82
|
+
"@vue/test-utils": "^2.4.3",
|
|
83
|
+
"eslint": "^8.55.0",
|
|
84
|
+
"eslint-plugin-vue": "^9.19.2",
|
|
85
85
|
"esno": "^4.0.0",
|
|
86
|
-
"gsap": "^3.12.
|
|
87
|
-
"jsdom": "^23.0.
|
|
86
|
+
"gsap": "^3.12.3",
|
|
87
|
+
"jsdom": "^23.0.1",
|
|
88
88
|
"kolorist": "^1.8.0",
|
|
89
89
|
"ohmyfetch": "^0.4.21",
|
|
90
90
|
"pathe": "^1.1.1",
|
|
91
|
-
"release-it": "^17.0.
|
|
91
|
+
"release-it": "^17.0.1",
|
|
92
92
|
"rollup-plugin-analyzer": "^4.0.0",
|
|
93
93
|
"rollup-plugin-copy": "^3.5.0",
|
|
94
|
-
"rollup-plugin-visualizer": "^5.
|
|
95
|
-
"three": "^0.
|
|
96
|
-
"unocss": "^0.
|
|
94
|
+
"rollup-plugin-visualizer": "^5.11.0",
|
|
95
|
+
"three": "^0.159.0",
|
|
96
|
+
"unocss": "^0.58.0",
|
|
97
97
|
"unplugin": "^1.5.1",
|
|
98
|
-
"unplugin-vue-components": "^0.
|
|
99
|
-
"vite": "^5.0.
|
|
98
|
+
"unplugin-vue-components": "^0.26.0",
|
|
99
|
+
"vite": "^5.0.8",
|
|
100
100
|
"vite-plugin-banner": "^0.7.1",
|
|
101
|
-
"vite-plugin-dts": "3.6.
|
|
102
|
-
"vite-plugin-inspect": "^0.8.
|
|
101
|
+
"vite-plugin-dts": "3.6.4",
|
|
102
|
+
"vite-plugin-inspect": "^0.8.1",
|
|
103
103
|
"vite-plugin-require-transform": "^1.0.21",
|
|
104
104
|
"vite-svg-loader": "^5.1.0",
|
|
105
105
|
"vitepress": "1.0.0-rc.31",
|
|
106
|
-
"vitest": "^0.
|
|
107
|
-
"vue": "^3.3.
|
|
106
|
+
"vitest": "^1.0.4",
|
|
107
|
+
"vue": "^3.3.11",
|
|
108
108
|
"vue-demi": "^0.14.6"
|
|
109
109
|
}
|
|
110
110
|
}
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|