@tresjs/core 2.4.0-next.5 → 2.4.0-next.6
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.
|
@@ -5,7 +5,7 @@ export type TresContext = {
|
|
|
5
5
|
scene: DeepReadonly<ShallowRef<Scene>>;
|
|
6
6
|
camera: ComputedRef<Camera | undefined>;
|
|
7
7
|
cameras: DeepReadonly<Ref<Camera[]>>;
|
|
8
|
-
renderer:
|
|
8
|
+
renderer: ShallowRef<WebGLRenderer>;
|
|
9
9
|
addCamera: (camera: Camera) => void;
|
|
10
10
|
removeCamera: (camera: Camera) => void;
|
|
11
11
|
setCameraActive: (cameraOrUuid: Camera | string) => void;
|
package/dist/tres.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* name: @tresjs/core
|
|
3
|
-
* version: v2.4.0-next.
|
|
3
|
+
* version: v2.4.0-next.6
|
|
4
4
|
* (c) 2023
|
|
5
5
|
* description: Declarative ThreeJS using Vue Components
|
|
6
6
|
* author: Alvaro Saburido <hola@alvarosaburido.dev> (https://github.com/alvarosabu/)
|
|
@@ -370,10 +370,10 @@ function qe({
|
|
|
370
370
|
}
|
|
371
371
|
), y = {
|
|
372
372
|
sizes: i,
|
|
373
|
-
scene: f,
|
|
373
|
+
scene: I(f),
|
|
374
374
|
camera: c,
|
|
375
375
|
cameras: I(w),
|
|
376
|
-
renderer:
|
|
376
|
+
renderer: v,
|
|
377
377
|
addCamera: C,
|
|
378
378
|
removeCamera: _,
|
|
379
379
|
setCameraActive: d
|
package/dist/tres.umd.cjs
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* name: @tresjs/core
|
|
3
|
-
* version: v2.4.0-next.
|
|
3
|
+
* version: v2.4.0-next.6
|
|
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(d,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):(d=typeof globalThis<"u"?globalThis:d||self,f(d.tres={},d.Vue,d.Three,d.VueUseCore))})(this,function(d,f,g,p){"use strict";function ae(e){const r=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(e){for(const t in e)if(t!=="default"){const a=Object.getOwnPropertyDescriptor(e,t);Object.defineProperty(r,t,a.get?a:{enumerable:!0,get:()=>e[t]})}}return r.default=e,Object.freeze(r)}const ne=ae(g),E=f.ref({}),j=e=>void Object.assign(E.value,e),W=e=>typeof e=="function",$=e=>!!e&&e.constructor===Array;function I({sizes:e,scene:r}){const t=f.ref([]),a=f.computed(()=>t.value.find(({userData:n})=>n.tres__isActiveCamera)),o=(n,i=!0)=>{t.value.some(({uuid:m})=>m===n.uuid)||(t.value.push(n),i&&l(n))},u=n=>{if(n.userData.tres__isActiveCamera){const i=t.value[t.value.length-1];i&&l(i.uuid)}t.value=t.value.filter(({uuid:i})=>i!==n.uuid)},l=n=>{const i=n instanceof g.Camera?n:t.value.find(c=>c.uuid===n);if(!i)return;t.value.forEach(({userData:c})=>c.tres__isActiveCamera=!1);const m=i;m.userData.tres__isActiveCamera=!0},s=()=>{t.value=[]};return f.watchEffect(()=>{e.aspectRatio.value&&t.value.forEach(n=>{n instanceof g.PerspectiveCamera&&(n.aspect=e.aspectRatio.value),(n instanceof g.PerspectiveCamera||n instanceof g.OrthographicCamera)&&n.updateProjectionMatrix()})}),r.userData.tres__registerCamera=o,r.userData.tres__deregisterCamera=u,f.onUnmounted(()=>{s()}),{camera:a,cameras:t,addCamera:o,removeCamera:u,setCameraActive:l}}const q=p.createEventHook(),N=p.createEventHook(),z=p.createEventHook(),D=new g.Clock;let V=0,B=0;const{pause:re,resume:oe,isActive:se}=p.useRafFn(()=>{q.trigger({delta:V,elapsed:B,clock:D}),N.trigger({delta:V,elapsed:B,clock:D}),z.trigger({delta:V,elapsed:B,clock:D})},{immediate:!1});z.on(()=>{V=D.getDelta(),B=D.getElapsedTime()});const F=()=>({onBeforeLoop:q.on,onLoop:N.on,onAfterLoop:z.on,pause:re,resume:oe,isActive:se}),G={realistic:{outputColorSpace:g.SRGBColorSpace,toneMapping:g.ACESFilmicToneMapping,toneMappingExposure:3,shadowMap:{enabled:!0,type:g.PCFSoftShadowMap}}},U=(e,r)=>{for(const t of Object.keys(r))r[t]instanceof Object&&Object.assign(r[t],U(e[t],r[t]));return Object.assign(e||{},r),e},ie=ue("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 T(e){return e.replace(/-([a-z])/g,(r,t)=>t.toUpperCase())}function ue(e,r){const t=Object.create(null),a=e.split(",");for(let o=0;o<a.length;o++)t[a[o]]=!0;return r?o=>!!t[o.toLowerCase()]:o=>!!t[o]}const le=(e,r)=>{const t=new Set,a=[];for(const o of e){const u=r(o);t.has(u)||(t.add(u),a.push(o))}return a},ce=!0,J="[TresJS ▲ ■ ●] ";function k(){function e(a,o){console.error(`${J} ${a}`,o||"")}function r(a){console.warn(`${J} ${a}`)}function t(a,o){}return{logError:e,logWarning:r,logMessage:t}}function fe(e){return typeof e=="number"?[e,e,e]:e instanceof g.Vector3?[e.x,e.y,e.z]:e}function K(e){return e instanceof g.Color?e:Array.isArray(e)?new g.Color(...e):new g.Color(e)}function X({scene:e,canvas:r,options:t,disableRender:a,contextParts:{sizes:o,camera:u}}){const l=f.computed(()=>({alpha:p.toValue(t.alpha),depth:p.toValue(t.depth),canvas:p.unrefElement(r),context:p.toValue(t.context),stencil:p.toValue(t.stencil),antialias:p.toValue(t.antialias)===void 0?!0:p.toValue(t.antialias),precision:p.toValue(t.precision),powerPreference:p.toValue(t.powerPreference),premultipliedAlpha:p.toValue(t.premultipliedAlpha),preserveDrawingBuffer:p.toValue(t.preserveDrawingBuffer),logarithmicDepthBuffer:p.toValue(t.logarithmicDepthBuffer),failIfMajorPerformanceCaveat:p.toValue(t.failIfMajorPerformanceCaveat)})),s=f.shallowRef(new g.WebGLRenderer(l.value));f.watch(l,()=>{s.value.dispose(),s.value=new g.WebGLRenderer(l.value)}),f.watchEffect(()=>{s.value.setSize(o.width.value,o.height.value)});const{pixelRatio:n}=p.useDevicePixelRatio();f.watchEffect(()=>{s.value.setPixelRatio(n.value)});const{logError:i}=k(),c=(()=>{const y=new g.WebGLRenderer,w={shadowMap:{enabled:y.shadowMap.enabled,type:y.shadowMap.type},toneMapping:y.toneMapping,toneMappingExposure:y.toneMappingExposure,outputColorSpace:y.outputColorSpace,useLegacyLights:y.useLegacyLights};return y.dispose(),w})();f.watchEffect(()=>{const y=p.toValue(t.preset);if(y){y in G||i("Renderer Preset must be one of these: "+Object.keys(G).join(", ")),U(s.value,G[y]);return}const w=p.toValue(t.shadows);s.value.shadowMap.enabled=w!==void 0?w:c.shadowMap.enabled;const _=p.toValue(t.shadowMapType);s.value.shadowMap.type=_!==void 0?_:c.shadowMap.type;const b=p.toValue(t.toneMapping);s.value.toneMapping=b!==void 0?b:c.toneMapping;const A=p.toValue(t.toneMappingExposure);s.value.toneMappingExposure=A!==void 0?A:c.toneMappingExposure;const O=p.toValue(t.outputColorSpace);s.value.outputColorSpace=O!==void 0?O:c.outputColorSpace;const x=p.toValue(t.useLegacyLights);s.value.useLegacyLights=x!==void 0?x:c.useLegacyLights;const S=p.toValue(t.clearColor);S&&s.value.setClearColor(S?K(S):new g.Color(0))});const{pause:M,resume:P,onLoop:L}=F();return L(()=>{u.value&&!p.toValue(a)&&s.value.render(e,u.value)}),P(),f.onUnmounted(()=>{M(),s.value.dispose(),s.value.forceContextLoss()}),{renderer:s}}function Y(e){const r={nodes:{},materials:{}};return e&&e.traverse(t=>{t.name&&(r.nodes[t.name]=t),t.material&&!r.materials[t.material.name]&&(r.materials[t.material.name]=t.material)}),r}async function me(e,r,t,a,o){const{logError:u}=k(),l=new e;o&&o(l),t&&t(l);const n=(Array.isArray(r)?r:[r]).map(i=>new Promise((m,c)=>{l.load(i,M=>{M.scene&&Object.assign(M,Y(M.scene)),m(M)},a,M=>c(u("[useLoader] - Failed to load resource",M)))}));return $(r)?await Promise.all(n):await n[0]}async function pe(e){const r=new g.LoadingManager,t=new g.TextureLoader(r),a=o=>new Promise((u,l)=>{t.load(o,s=>u(s),()=>null,()=>{l(new Error("[useTextures] - Failed to load texture"))})});if($(e)){const o=await Promise.all(e.map(u=>a(u)));return e.length>1?o:o[0]}else{const{map:o,displacementMap:u,normalMap:l,roughnessMap:s,metalnessMap:n,aoMap:i,alphaMap:m,matcap:c}=e;return{map:o?await a(o):null,displacementMap:u?await a(u):null,normalMap:l?await a(l):null,roughnessMap:s?await a(s):null,metalnessMap:n?await a(n):null,aoMap:i?await a(i):null,alphaMap:m?await a(m):null,matcap:c?await a(c):null}}}const Q=(e,{renderer:r,camera:t})=>{const a=f.computed(()=>r.value.domElement),{x:o,y:u}=p.usePointer({target:a}),{width:l,height:s,top:n,left:i}=p.useElementBounding(a),m=new g.Raycaster,c=({x:v,y:h})=>{if(a.value)return{x:(v-i.value)/l.value*2-1,y:-((h-n.value)/s.value)*2+1}},M=({x:v,y:h})=>{if(t.value)return m.setFromCamera(new g.Vector2(v,h),t.value),m.intersectObjects(e.value,!1)},P=v=>{const h=c({x:(v==null?void 0:v.clientX)??o.value,y:(v==null?void 0:v.clientY)??u.value});return h?M(h)||[]:[]},L=f.computed(()=>P()),y=p.createEventHook(),w=p.createEventHook(),_=(v,h)=>{v.trigger({event:h,intersects:P(h)})},b=v=>{_(w,v)};let A;const O=v=>{var h;A=(h=P(v)[0])==null?void 0:h.object},x=v=>{var h;v instanceof PointerEvent&&A===((h=P(v)[0])==null?void 0:h.object)&&_(y,v)},S=v=>w.trigger({event:v,intersects:[]});return a.value.addEventListener("pointerup",x),a.value.addEventListener("pointerdown",O),a.value.addEventListener("pointermove",b),a.value.addEventListener("pointerleave",S),f.onUnmounted(()=>{a!=null&&a.value&&(a.value.removeEventListener("pointerup",x),a.value.removeEventListener("pointerdown",O),a.value.removeEventListener("pointermove",b),a.value.removeEventListener("pointerleave",S))}),{intersects:L,onClick:v=>y.on(v).off,onPointerMove:v=>w.on(v).off}};function de(){const{logWarning:e}=k();function r(a,o,u){let l=null;return a.traverse(s=>{s[o]===u&&(l=s)}),l||e(`Child with ${o} '${u}' not found.`),l}function t(a,o){return r(a,"name",o)}return{seek:r,seekByName:t}}const Z=(e,r)=>{const t=f.reactive({click:new Map,pointerMove:new Map,pointerEnter:new Map,pointerLeave:new Map}),a=i=>{Object.values(t).forEach(m=>m.delete(i))},o=i=>{const{onClick:m,onPointerMove:c,onPointerEnter:M,onPointerLeave:P}=i;m&&t.click.set(i,m),c&&t.pointerMove.set(i,c),M&&t.pointerEnter.set(i,M),P&&t.pointerLeave.set(i,P)};e.userData.tres__registerAtPointerEventHandler=o,e.userData.tres__deregisterAtPointerEventHandler=a;const u=f.computed(()=>le(Object.values(t).map(i=>Array.from(i.keys())).flat(),({uuid:i})=>i)),{onClick:l,onPointerMove:s}=Q(u,r);l(({intersects:i,event:m})=>{var c;i.length&&((c=t.click.get(i[0].object))==null||c(i[0],m))});let n;return s(({intersects:i,event:m})=>{var y,w,_,b;const c=(y=i==null?void 0:i[0])==null?void 0:y.object,{pointerLeave:M,pointerEnter:P,pointerMove:L}=t;n&&n!==c&&((w=M.get(n))==null||w(n,m)),c&&(n!==c&&((_=P.get(c))==null||_(i[0],m)),(b=L.get(c))==null||b(i[0],m)),n=c||null}),{registerObject:o,deregisterObject:a}};function H({scene:e,canvas:r,windowSize:t,disableRender:a,rendererOptions:o}){const u=f.computed(()=>p.toValue(t)?p.useWindowSize():p.useElementSize(p.toValue(r).parentElement)),l=f.computed(()=>u.value.width.value),s=f.computed(()=>u.value.height.value),n=f.computed(()=>l.value/s.value),i={height:s,width:l,aspectRatio:n},m=f.shallowRef(e),{camera:c,cameras:M,addCamera:P,removeCamera:L,setCameraActive:y}=I({sizes:i,scene:e}),{renderer:w}=X({scene:e,canvas:r,options:o,contextParts:{sizes:i,camera:c},disableRender:a}),_={sizes:i,scene:m,camera:c,cameras:f.readonly(M),renderer:f.readonly(w),addCamera:P,removeCamera:L,setCameraActive:y};return f.provide("useTres",_),_}function ve(){const e=f.inject("useTres");if(!e)throw new Error("useTresContext must be used together with useTresContextProvider");return e}function Le(e){}let R=null,C=null;const{logError:ee}=k(),ge={createElement(e,r,t,a){var l,s;if(a||(a={}),a.args||(a.args=[]),e==="template"||ie(e))return null;let o=e.replace("Tres",""),u;if(e==="primitive"){(a==null?void 0:a.object)===void 0&&ee("Tres primitives need a prop 'object'");const n=a.object;o=n.type,u=Object.assign(n,{type:o,attach:a.attach,primitive:!0})}else{const n=E.value[o];n||ee(`${o} is not defined on the THREE namespace. Use extend to add it to the catalog.`),u=new n(...a.args)}return u.isCamera&&(a!=null&&a.position||u.position.set(3,3,3),a!=null&&a.lookAt||u.lookAt(0,0,0)),(a==null?void 0:a.attach)===void 0&&(u.isMaterial?u.attach="material":u.isBufferGeometry&&(u.attach="geometry")),u.isObject3D&&((l=a==null?void 0:a.material)!=null&&l.isMaterial&&(u.userData.tres__materialViaProp=!0),(s=a==null?void 0:a.geometry)!=null&&s.isBufferGeometry&&(u.userData.tres__geometryViaProp=!0)),u},insert(e,r){var t,a,o,u,l,s,n,i,m;if(r&&r.isScene&&(C=r),(((t=e==null?void 0:e.__vnode)==null?void 0:t.type)==="TresGroup"||((a=e==null?void 0:e.__vnode)==null?void 0:a.type)==="TresObject3D")&&r===null&&!((u=(o=e==null?void 0:e.__vnode)==null?void 0:o.ctx)!=null&&u.asyncResolved)){R=e;return}else(l=e==null?void 0:e.__vnode)!=null&&l.type.includes("Controls")&&r===null&&(R=C);if(r||(r=R),e!=null&&e.isObject3D){if(e!=null&&e.isCamera){if(!(C!=null&&C.userData.tres__registerCamera))throw"could not find tres__registerCamera on scene's userData";(n=C==null?void 0:(s=C.userData).tres__registerCamera)==null||n.call(s,e)}if(e!=null&&e.onClick||e!=null&&e.onPointerMove||e!=null&&e.onPointerEnter||e!=null&&e.onPointerLeave){if(!(C!=null&&C.userData.tres__registerAtPointerEventHandler))throw"could not find tres__registerAtPointerEventHandler on scene's userData";(m=C==null?void 0:(i=C.userData).tres__registerAtPointerEventHandler)==null||m.call(i,e)}}e!=null&&e.isObject3D&&(r!=null&&r.isObject3D)?(r.add(e),e.dispatchEvent({type:"added"})):e!=null&&e.isFog?r.fog=e:typeof(e==null?void 0:e.attach)=="string"&&(e.__previousAttach=e[r==null?void 0:r.attach],r&&(r[e.attach]=e))},remove(e){var r,t;if(e){if(e.isObject3D){const a=e,o=n=>{var m,c;const i=n;n.userData.tres__materialViaProp||(m=i.material)==null||m.dispose(),n.userData.tres__geometryViaProp||(c=i.geometry)==null||c.dispose()},u=C==null?void 0:C.userData.tres__deregisterAtPointerEventHandler,l=n=>{if(!u)throw"could not find tres__deregisterAtPointerEventHandler on scene's userData";(n!=null&&n.onClick||n!=null&&n.onPointerMove||n!=null&&n.onPointerEnter||n!=null&&n.onPointerLeave)&&(u==null||u(n))},s=n=>{const i=C==null?void 0:C.userData.tres__deregisterCamera;if(!i)throw"could not find tres__deregisterCamera on scene's userData";n.isCamera&&(i==null||i(n))};a.traverse(n=>{o(n),s(n),l==null||l(n)}),o(a),s(a),l==null||l(a)}(r=e.removeFromParent)==null||r.call(e),(t=e.dispose)==null||t.call(e)}},patchProp(e,r,t,a){if(e){let o=e,u=r,l=T(u),s=o==null?void 0:o[l];if(o.type==="BufferGeometry"){if(u==="args")return;o.setAttribute(T(u),new g.BufferAttribute(...a));return}if(u.includes("-")&&s===void 0){const i=u.split("-");s=i.reduce((m,c)=>m[T(c)],o),u=i.pop(),l=u.toLowerCase(),s!=null&&s.set||(o=i.reduce((m,c)=>m[T(c)],o))}let n=a;if(n===""&&(n=!0),W(s)){Array.isArray(n)?e[l](...n):e[l](n);return}!(s!=null&&s.set)&&!W(s)?o[l]=n:s.constructor===n.constructor&&(s!=null&&s.copy)?s==null||s.copy(n):Array.isArray(n)?s.set(...n):!s.isColor&&s.setScalar?s.setScalar(n):s.set(n)}},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:we}=f.createRenderer(ge),ye=e=>{const r=we(t);function t(){return e&&e.default?e.default():[]}return r};j(ne);const Ce=["data-scene"],te=f.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 r=e,{logWarning:t}=k(),a=f.ref(),o=f.shallowRef(new g.Scene);F();const u=f.useSlots();let l;const s=i=>{l=ye(u),l.provide("useTres",i),l.provide("extend",j),l.mount(o.value)},n=f.computed(()=>r.disableRender);return f.onMounted(()=>{const i=a,m=H({scene:o.value,canvas:i,windowSize:r.windowSize,disableRender:n,rendererOptions:r});Z(o.value,m);const{addCamera:c,camera:M,cameras:P,removeCamera:L}=m;s(m);const y=()=>{const w=new g.PerspectiveCamera(45,window.innerWidth/window.innerHeight,.1,1e3);w.position.set(3,3,3),w.lookAt(0,0,0),c(w);const _=f.watchEffect(()=>{P.value.length>=2&&(w.removeFromParent(),L(w),_==null||_())})};f.watch(()=>r.camera,(w,_)=>{w?c(w):_&&(_.removeFromParent(),L(_))},{immediate:!0}),M.value||(t("No camera found. Creating a default perspective camera. To have full control over a camera, please add one to the scene."),y())}),(i,m)=>(f.openBlock(),f.createElementBlock("canvas",{ref_key:"canvas",ref:a,"data-scene":o.value.uuid,style:f.normalizeStyle({display:"block",width:"100%",height:"100%",position:i.windowSize?"fixed":"relative",top:0,left:0,pointerEvents:"auto",touchAction:"none",zIndex:1})},null,12,Ce))}}),Me=["TresCanvas","TresLeches","TresScene"],_e={template:{compilerOptions:{isCustomElement:e=>e.startsWith("Tres")&&!Me.includes(e)||e==="primitive"}}},Pe={install(e){e.component("TresCanvas",te)}};d.TresCanvas=te,d.catalogue=E,d.default=Pe,d.extend=j,d.isProd=ce,d.normalizeColor=K,d.normalizeVectorFlexibleParam=fe,d.templateCompilerOptions=_e,d.trasverseObjects=Y,d.useCamera=I,d.useLoader=me,d.useLogger=k,d.usePointerEventHandler=Z,d.useRaycaster=Q,d.useRenderLoop=F,d.useRenderer=X,d.useSeek=de,d.useTexture=pe,d.useTresContext=ve,d.useTresContextProvider=H,Object.defineProperties(d,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}})});
|
|
8
|
+
(function(d,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):(d=typeof globalThis<"u"?globalThis:d||self,f(d.tres={},d.Vue,d.Three,d.VueUseCore))})(this,function(d,f,g,p){"use strict";function ae(e){const r=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(e){for(const t in e)if(t!=="default"){const a=Object.getOwnPropertyDescriptor(e,t);Object.defineProperty(r,t,a.get?a:{enumerable:!0,get:()=>e[t]})}}return r.default=e,Object.freeze(r)}const ne=ae(g),E=f.ref({}),j=e=>void Object.assign(E.value,e),W=e=>typeof e=="function",$=e=>!!e&&e.constructor===Array;function I({sizes:e,scene:r}){const t=f.ref([]),a=f.computed(()=>t.value.find(({userData:n})=>n.tres__isActiveCamera)),o=(n,i=!0)=>{t.value.some(({uuid:m})=>m===n.uuid)||(t.value.push(n),i&&l(n))},u=n=>{if(n.userData.tres__isActiveCamera){const i=t.value[t.value.length-1];i&&l(i.uuid)}t.value=t.value.filter(({uuid:i})=>i!==n.uuid)},l=n=>{const i=n instanceof g.Camera?n:t.value.find(c=>c.uuid===n);if(!i)return;t.value.forEach(({userData:c})=>c.tres__isActiveCamera=!1);const m=i;m.userData.tres__isActiveCamera=!0},s=()=>{t.value=[]};return f.watchEffect(()=>{e.aspectRatio.value&&t.value.forEach(n=>{n instanceof g.PerspectiveCamera&&(n.aspect=e.aspectRatio.value),(n instanceof g.PerspectiveCamera||n instanceof g.OrthographicCamera)&&n.updateProjectionMatrix()})}),r.userData.tres__registerCamera=o,r.userData.tres__deregisterCamera=u,f.onUnmounted(()=>{s()}),{camera:a,cameras:t,addCamera:o,removeCamera:u,setCameraActive:l}}const q=p.createEventHook(),N=p.createEventHook(),z=p.createEventHook(),D=new g.Clock;let V=0,B=0;const{pause:re,resume:oe,isActive:se}=p.useRafFn(()=>{q.trigger({delta:V,elapsed:B,clock:D}),N.trigger({delta:V,elapsed:B,clock:D}),z.trigger({delta:V,elapsed:B,clock:D})},{immediate:!1});z.on(()=>{V=D.getDelta(),B=D.getElapsedTime()});const F=()=>({onBeforeLoop:q.on,onLoop:N.on,onAfterLoop:z.on,pause:re,resume:oe,isActive:se}),G={realistic:{outputColorSpace:g.SRGBColorSpace,toneMapping:g.ACESFilmicToneMapping,toneMappingExposure:3,shadowMap:{enabled:!0,type:g.PCFSoftShadowMap}}},U=(e,r)=>{for(const t of Object.keys(r))r[t]instanceof Object&&Object.assign(r[t],U(e[t],r[t]));return Object.assign(e||{},r),e},ie=ue("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 T(e){return e.replace(/-([a-z])/g,(r,t)=>t.toUpperCase())}function ue(e,r){const t=Object.create(null),a=e.split(",");for(let o=0;o<a.length;o++)t[a[o]]=!0;return r?o=>!!t[o.toLowerCase()]:o=>!!t[o]}const le=(e,r)=>{const t=new Set,a=[];for(const o of e){const u=r(o);t.has(u)||(t.add(u),a.push(o))}return a},ce=!0,J="[TresJS ▲ ■ ●] ";function k(){function e(a,o){console.error(`${J} ${a}`,o||"")}function r(a){console.warn(`${J} ${a}`)}function t(a,o){}return{logError:e,logWarning:r,logMessage:t}}function fe(e){return typeof e=="number"?[e,e,e]:e instanceof g.Vector3?[e.x,e.y,e.z]:e}function K(e){return e instanceof g.Color?e:Array.isArray(e)?new g.Color(...e):new g.Color(e)}function X({scene:e,canvas:r,options:t,disableRender:a,contextParts:{sizes:o,camera:u}}){const l=f.computed(()=>({alpha:p.toValue(t.alpha),depth:p.toValue(t.depth),canvas:p.unrefElement(r),context:p.toValue(t.context),stencil:p.toValue(t.stencil),antialias:p.toValue(t.antialias)===void 0?!0:p.toValue(t.antialias),precision:p.toValue(t.precision),powerPreference:p.toValue(t.powerPreference),premultipliedAlpha:p.toValue(t.premultipliedAlpha),preserveDrawingBuffer:p.toValue(t.preserveDrawingBuffer),logarithmicDepthBuffer:p.toValue(t.logarithmicDepthBuffer),failIfMajorPerformanceCaveat:p.toValue(t.failIfMajorPerformanceCaveat)})),s=f.shallowRef(new g.WebGLRenderer(l.value));f.watch(l,()=>{s.value.dispose(),s.value=new g.WebGLRenderer(l.value)}),f.watchEffect(()=>{s.value.setSize(o.width.value,o.height.value)});const{pixelRatio:n}=p.useDevicePixelRatio();f.watchEffect(()=>{s.value.setPixelRatio(n.value)});const{logError:i}=k(),c=(()=>{const y=new g.WebGLRenderer,w={shadowMap:{enabled:y.shadowMap.enabled,type:y.shadowMap.type},toneMapping:y.toneMapping,toneMappingExposure:y.toneMappingExposure,outputColorSpace:y.outputColorSpace,useLegacyLights:y.useLegacyLights};return y.dispose(),w})();f.watchEffect(()=>{const y=p.toValue(t.preset);if(y){y in G||i("Renderer Preset must be one of these: "+Object.keys(G).join(", ")),U(s.value,G[y]);return}const w=p.toValue(t.shadows);s.value.shadowMap.enabled=w!==void 0?w:c.shadowMap.enabled;const _=p.toValue(t.shadowMapType);s.value.shadowMap.type=_!==void 0?_:c.shadowMap.type;const b=p.toValue(t.toneMapping);s.value.toneMapping=b!==void 0?b:c.toneMapping;const A=p.toValue(t.toneMappingExposure);s.value.toneMappingExposure=A!==void 0?A:c.toneMappingExposure;const O=p.toValue(t.outputColorSpace);s.value.outputColorSpace=O!==void 0?O:c.outputColorSpace;const x=p.toValue(t.useLegacyLights);s.value.useLegacyLights=x!==void 0?x:c.useLegacyLights;const S=p.toValue(t.clearColor);S&&s.value.setClearColor(S?K(S):new g.Color(0))});const{pause:M,resume:P,onLoop:L}=F();return L(()=>{u.value&&!p.toValue(a)&&s.value.render(e,u.value)}),P(),f.onUnmounted(()=>{M(),s.value.dispose(),s.value.forceContextLoss()}),{renderer:s}}function Y(e){const r={nodes:{},materials:{}};return e&&e.traverse(t=>{t.name&&(r.nodes[t.name]=t),t.material&&!r.materials[t.material.name]&&(r.materials[t.material.name]=t.material)}),r}async function me(e,r,t,a,o){const{logError:u}=k(),l=new e;o&&o(l),t&&t(l);const n=(Array.isArray(r)?r:[r]).map(i=>new Promise((m,c)=>{l.load(i,M=>{M.scene&&Object.assign(M,Y(M.scene)),m(M)},a,M=>c(u("[useLoader] - Failed to load resource",M)))}));return $(r)?await Promise.all(n):await n[0]}async function pe(e){const r=new g.LoadingManager,t=new g.TextureLoader(r),a=o=>new Promise((u,l)=>{t.load(o,s=>u(s),()=>null,()=>{l(new Error("[useTextures] - Failed to load texture"))})});if($(e)){const o=await Promise.all(e.map(u=>a(u)));return e.length>1?o:o[0]}else{const{map:o,displacementMap:u,normalMap:l,roughnessMap:s,metalnessMap:n,aoMap:i,alphaMap:m,matcap:c}=e;return{map:o?await a(o):null,displacementMap:u?await a(u):null,normalMap:l?await a(l):null,roughnessMap:s?await a(s):null,metalnessMap:n?await a(n):null,aoMap:i?await a(i):null,alphaMap:m?await a(m):null,matcap:c?await a(c):null}}}const Q=(e,{renderer:r,camera:t})=>{const a=f.computed(()=>r.value.domElement),{x:o,y:u}=p.usePointer({target:a}),{width:l,height:s,top:n,left:i}=p.useElementBounding(a),m=new g.Raycaster,c=({x:v,y:h})=>{if(a.value)return{x:(v-i.value)/l.value*2-1,y:-((h-n.value)/s.value)*2+1}},M=({x:v,y:h})=>{if(t.value)return m.setFromCamera(new g.Vector2(v,h),t.value),m.intersectObjects(e.value,!1)},P=v=>{const h=c({x:(v==null?void 0:v.clientX)??o.value,y:(v==null?void 0:v.clientY)??u.value});return h?M(h)||[]:[]},L=f.computed(()=>P()),y=p.createEventHook(),w=p.createEventHook(),_=(v,h)=>{v.trigger({event:h,intersects:P(h)})},b=v=>{_(w,v)};let A;const O=v=>{var h;A=(h=P(v)[0])==null?void 0:h.object},x=v=>{var h;v instanceof PointerEvent&&A===((h=P(v)[0])==null?void 0:h.object)&&_(y,v)},S=v=>w.trigger({event:v,intersects:[]});return a.value.addEventListener("pointerup",x),a.value.addEventListener("pointerdown",O),a.value.addEventListener("pointermove",b),a.value.addEventListener("pointerleave",S),f.onUnmounted(()=>{a!=null&&a.value&&(a.value.removeEventListener("pointerup",x),a.value.removeEventListener("pointerdown",O),a.value.removeEventListener("pointermove",b),a.value.removeEventListener("pointerleave",S))}),{intersects:L,onClick:v=>y.on(v).off,onPointerMove:v=>w.on(v).off}};function de(){const{logWarning:e}=k();function r(a,o,u){let l=null;return a.traverse(s=>{s[o]===u&&(l=s)}),l||e(`Child with ${o} '${u}' not found.`),l}function t(a,o){return r(a,"name",o)}return{seek:r,seekByName:t}}const Z=(e,r)=>{const t=f.reactive({click:new Map,pointerMove:new Map,pointerEnter:new Map,pointerLeave:new Map}),a=i=>{Object.values(t).forEach(m=>m.delete(i))},o=i=>{const{onClick:m,onPointerMove:c,onPointerEnter:M,onPointerLeave:P}=i;m&&t.click.set(i,m),c&&t.pointerMove.set(i,c),M&&t.pointerEnter.set(i,M),P&&t.pointerLeave.set(i,P)};e.userData.tres__registerAtPointerEventHandler=o,e.userData.tres__deregisterAtPointerEventHandler=a;const u=f.computed(()=>le(Object.values(t).map(i=>Array.from(i.keys())).flat(),({uuid:i})=>i)),{onClick:l,onPointerMove:s}=Q(u,r);l(({intersects:i,event:m})=>{var c;i.length&&((c=t.click.get(i[0].object))==null||c(i[0],m))});let n;return s(({intersects:i,event:m})=>{var y,w,_,b;const c=(y=i==null?void 0:i[0])==null?void 0:y.object,{pointerLeave:M,pointerEnter:P,pointerMove:L}=t;n&&n!==c&&((w=M.get(n))==null||w(n,m)),c&&(n!==c&&((_=P.get(c))==null||_(i[0],m)),(b=L.get(c))==null||b(i[0],m)),n=c||null}),{registerObject:o,deregisterObject:a}};function H({scene:e,canvas:r,windowSize:t,disableRender:a,rendererOptions:o}){const u=f.computed(()=>p.toValue(t)?p.useWindowSize():p.useElementSize(p.toValue(r).parentElement)),l=f.computed(()=>u.value.width.value),s=f.computed(()=>u.value.height.value),n=f.computed(()=>l.value/s.value),i={height:s,width:l,aspectRatio:n},m=f.shallowRef(e),{camera:c,cameras:M,addCamera:P,removeCamera:L,setCameraActive:y}=I({sizes:i,scene:e}),{renderer:w}=X({scene:e,canvas:r,options:o,contextParts:{sizes:i,camera:c},disableRender:a}),_={sizes:i,scene:f.readonly(m),camera:c,cameras:f.readonly(M),renderer:w,addCamera:P,removeCamera:L,setCameraActive:y};return f.provide("useTres",_),_}function ve(){const e=f.inject("useTres");if(!e)throw new Error("useTresContext must be used together with useTresContextProvider");return e}function Le(e){}let R=null,C=null;const{logError:ee}=k(),ge={createElement(e,r,t,a){var l,s;if(a||(a={}),a.args||(a.args=[]),e==="template"||ie(e))return null;let o=e.replace("Tres",""),u;if(e==="primitive"){(a==null?void 0:a.object)===void 0&&ee("Tres primitives need a prop 'object'");const n=a.object;o=n.type,u=Object.assign(n,{type:o,attach:a.attach,primitive:!0})}else{const n=E.value[o];n||ee(`${o} is not defined on the THREE namespace. Use extend to add it to the catalog.`),u=new n(...a.args)}return u.isCamera&&(a!=null&&a.position||u.position.set(3,3,3),a!=null&&a.lookAt||u.lookAt(0,0,0)),(a==null?void 0:a.attach)===void 0&&(u.isMaterial?u.attach="material":u.isBufferGeometry&&(u.attach="geometry")),u.isObject3D&&((l=a==null?void 0:a.material)!=null&&l.isMaterial&&(u.userData.tres__materialViaProp=!0),(s=a==null?void 0:a.geometry)!=null&&s.isBufferGeometry&&(u.userData.tres__geometryViaProp=!0)),u},insert(e,r){var t,a,o,u,l,s,n,i,m;if(r&&r.isScene&&(C=r),(((t=e==null?void 0:e.__vnode)==null?void 0:t.type)==="TresGroup"||((a=e==null?void 0:e.__vnode)==null?void 0:a.type)==="TresObject3D")&&r===null&&!((u=(o=e==null?void 0:e.__vnode)==null?void 0:o.ctx)!=null&&u.asyncResolved)){R=e;return}else(l=e==null?void 0:e.__vnode)!=null&&l.type.includes("Controls")&&r===null&&(R=C);if(r||(r=R),e!=null&&e.isObject3D){if(e!=null&&e.isCamera){if(!(C!=null&&C.userData.tres__registerCamera))throw"could not find tres__registerCamera on scene's userData";(n=C==null?void 0:(s=C.userData).tres__registerCamera)==null||n.call(s,e)}if(e!=null&&e.onClick||e!=null&&e.onPointerMove||e!=null&&e.onPointerEnter||e!=null&&e.onPointerLeave){if(!(C!=null&&C.userData.tres__registerAtPointerEventHandler))throw"could not find tres__registerAtPointerEventHandler on scene's userData";(m=C==null?void 0:(i=C.userData).tres__registerAtPointerEventHandler)==null||m.call(i,e)}}e!=null&&e.isObject3D&&(r!=null&&r.isObject3D)?(r.add(e),e.dispatchEvent({type:"added"})):e!=null&&e.isFog?r.fog=e:typeof(e==null?void 0:e.attach)=="string"&&(e.__previousAttach=e[r==null?void 0:r.attach],r&&(r[e.attach]=e))},remove(e){var r,t;if(e){if(e.isObject3D){const a=e,o=n=>{var m,c;const i=n;n.userData.tres__materialViaProp||(m=i.material)==null||m.dispose(),n.userData.tres__geometryViaProp||(c=i.geometry)==null||c.dispose()},u=C==null?void 0:C.userData.tres__deregisterAtPointerEventHandler,l=n=>{if(!u)throw"could not find tres__deregisterAtPointerEventHandler on scene's userData";(n!=null&&n.onClick||n!=null&&n.onPointerMove||n!=null&&n.onPointerEnter||n!=null&&n.onPointerLeave)&&(u==null||u(n))},s=n=>{const i=C==null?void 0:C.userData.tres__deregisterCamera;if(!i)throw"could not find tres__deregisterCamera on scene's userData";n.isCamera&&(i==null||i(n))};a.traverse(n=>{o(n),s(n),l==null||l(n)}),o(a),s(a),l==null||l(a)}(r=e.removeFromParent)==null||r.call(e),(t=e.dispose)==null||t.call(e)}},patchProp(e,r,t,a){if(e){let o=e,u=r,l=T(u),s=o==null?void 0:o[l];if(o.type==="BufferGeometry"){if(u==="args")return;o.setAttribute(T(u),new g.BufferAttribute(...a));return}if(u.includes("-")&&s===void 0){const i=u.split("-");s=i.reduce((m,c)=>m[T(c)],o),u=i.pop(),l=u.toLowerCase(),s!=null&&s.set||(o=i.reduce((m,c)=>m[T(c)],o))}let n=a;if(n===""&&(n=!0),W(s)){Array.isArray(n)?e[l](...n):e[l](n);return}!(s!=null&&s.set)&&!W(s)?o[l]=n:s.constructor===n.constructor&&(s!=null&&s.copy)?s==null||s.copy(n):Array.isArray(n)?s.set(...n):!s.isColor&&s.setScalar?s.setScalar(n):s.set(n)}},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:we}=f.createRenderer(ge),ye=e=>{const r=we(t);function t(){return e&&e.default?e.default():[]}return r};j(ne);const Ce=["data-scene"],te=f.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 r=e,{logWarning:t}=k(),a=f.ref(),o=f.shallowRef(new g.Scene);F();const u=f.useSlots();let l;const s=i=>{l=ye(u),l.provide("useTres",i),l.provide("extend",j),l.mount(o.value)},n=f.computed(()=>r.disableRender);return f.onMounted(()=>{const i=a,m=H({scene:o.value,canvas:i,windowSize:r.windowSize,disableRender:n,rendererOptions:r});Z(o.value,m);const{addCamera:c,camera:M,cameras:P,removeCamera:L}=m;s(m);const y=()=>{const w=new g.PerspectiveCamera(45,window.innerWidth/window.innerHeight,.1,1e3);w.position.set(3,3,3),w.lookAt(0,0,0),c(w);const _=f.watchEffect(()=>{P.value.length>=2&&(w.removeFromParent(),L(w),_==null||_())})};f.watch(()=>r.camera,(w,_)=>{w?c(w):_&&(_.removeFromParent(),L(_))},{immediate:!0}),M.value||(t("No camera found. Creating a default perspective camera. To have full control over a camera, please add one to the scene."),y())}),(i,m)=>(f.openBlock(),f.createElementBlock("canvas",{ref_key:"canvas",ref:a,"data-scene":o.value.uuid,style:f.normalizeStyle({display:"block",width:"100%",height:"100%",position:i.windowSize?"fixed":"relative",top:0,left:0,pointerEvents:"auto",touchAction:"none",zIndex:1})},null,12,Ce))}}),Me=["TresCanvas","TresLeches","TresScene"],_e={template:{compilerOptions:{isCustomElement:e=>e.startsWith("Tres")&&!Me.includes(e)||e==="primitive"}}},Pe={install(e){e.component("TresCanvas",te)}};d.TresCanvas=te,d.catalogue=E,d.default=Pe,d.extend=j,d.isProd=ce,d.normalizeColor=K,d.normalizeVectorFlexibleParam=fe,d.templateCompilerOptions=_e,d.trasverseObjects=Y,d.useCamera=I,d.useLoader=me,d.useLogger=k,d.usePointerEventHandler=Z,d.useRaycaster=Q,d.useRenderLoop=F,d.useRenderer=X,d.useSeek=de,d.useTexture=pe,d.useTresContext=ve,d.useTresContextProvider=H,Object.defineProperties(d,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}})});
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tresjs/core",
|
|
3
3
|
"description": "Declarative ThreeJS using Vue Components",
|
|
4
|
-
"version": "2.4.0-next.
|
|
4
|
+
"version": "2.4.0-next.6",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"packageManager": "pnpm@8.3.1",
|
|
7
7
|
"author": "Alvaro Saburido <hola@alvarosaburido.dev> (https://github.com/alvarosabu/)",
|