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