@tresjs/cientos 3.6.0 → 3.7.0
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/core/abstractions/Lensflare/component.vue.d.ts +52 -14
- package/dist/core/abstractions/Reflector.vue.d.ts +107 -0
- package/dist/core/abstractions/Text3D.vue.d.ts +1 -1
- package/dist/core/abstractions/index.d.ts +4 -1
- package/dist/core/abstractions/useSurfaceSampler/component.vue.d.ts +21 -0
- package/dist/core/abstractions/useSurfaceSampler/index.d.ts +614 -0
- package/dist/core/controls/CameraControls.vue.d.ts +2 -2
- package/dist/core/controls/OrbitControls.vue.d.ts +2 -2
- package/dist/core/controls/PointerLockControls.vue.d.ts +2 -0
- package/dist/core/materials/customShaderMaterial/index.vue.d.ts +1 -1
- package/dist/core/misc/html/HTML.vue.d.ts +1 -1
- package/dist/core/staging/Precipitation.vue.d.ts +1 -1
- package/dist/core/staging/Sky.vue.d.ts +22 -0
- package/dist/core/staging/Sparkles/ShaderData.d.ts +1 -1
- package/dist/core/staging/Stars.vue.d.ts +2 -2
- package/dist/trescientos.js +3464 -3169
- package/dist/trescientos.umd.cjs +104 -60
- package/package.json +20 -20
package/dist/trescientos.umd.cjs
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* name: @tresjs/cientos
|
|
3
|
-
* version: v3.
|
|
3
|
+
* version: v3.7.0
|
|
4
4
|
* (c) 2023
|
|
5
5
|
* description: Collection of useful helpers and fully functional, ready-made abstractions for Tres
|
|
6
6
|
* author: Alvaro Saburido <hola@alvarosaburido.dev> (https://github.com/alvarosabu/)
|
|
7
7
|
*/
|
|
8
|
-
(function(re,c){typeof exports=="object"&&typeof module<"u"?c(exports,require("three"),require("vue"),require("@tresjs/core"),require("tweakpane")):typeof define=="function"&&define.amd?define(["exports","three","vue","@tresjs/core","tweakpane"],c):(re=typeof globalThis<"u"?globalThis:re||self,c(re.trescientos={},re.Three,re.Vue,re.TresjsCore,re.tweakpane))})(this,function(re,c,u,ae,mr){"use strict";var Ru=Object.defineProperty;var Eu=(re,c,u)=>c in re?Ru(re,c,{enumerable:!0,configurable:!0,writable:!0,value:u}):re[c]=u;var ye=(re,c,u)=>(Eu(re,typeof c!="symbol"?c+"":c,u),u);function gr(o){const e=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(o){for(const t in o)if(t!=="default"){const n=Object.getOwnPropertyDescriptor(o,t);Object.defineProperty(e,t,n.get?n:{enumerable:!0,get:()=>o[t]})}}return e.default=o,Object.freeze(e)}const Mi=gr(c);function Si(o,e){if(e===c.TrianglesDrawMode)return console.warn("THREE.BufferGeometryUtils.toTrianglesDrawMode(): Geometry already defined as triangles."),o;if(e===c.TriangleFanDrawMode||e===c.TriangleStripDrawMode){let t=o.getIndex();if(t===null){const r=[],a=o.getAttribute("position");if(a!==void 0){for(let l=0;l<a.count;l++)r.push(l);o.setIndex(r),t=o.getIndex()}else return console.error("THREE.BufferGeometryUtils.toTrianglesDrawMode(): Undefined position attribute. Processing not possible."),o}const n=t.count-2,i=[];if(t)if(e===c.TriangleFanDrawMode)for(let r=1;r<=n;r++)i.push(t.getX(0)),i.push(t.getX(r)),i.push(t.getX(r+1));else for(let r=0;r<n;r++)r%2===0?(i.push(t.getX(r)),i.push(t.getX(r+1)),i.push(t.getX(r+2))):(i.push(t.getX(r+2)),i.push(t.getX(r+1)),i.push(t.getX(r)));i.length/3!==n&&console.error("THREE.BufferGeometryUtils.toTrianglesDrawMode(): Unable to generate correct amount of triangles.");const s=o.clone();return s.setIndex(i),s.clearGroups(),s}else return console.error("THREE.BufferGeometryUtils.toTrianglesDrawMode(): Unknown draw mode:",e),o}const yr=parseInt(c.REVISION.replace(/\D+/g,""));var Ge=Uint8Array,lt=Uint16Array,Ln=Uint32Array,Ai=new Ge([0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0,0,0,0]),Pi=new Ge([0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13,0,0]),_r=new Ge([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),Ci=function(o,e){for(var t=new lt(31),n=0;n<31;++n)t[n]=e+=1<<o[n-1];for(var i=new Ln(t[30]),n=1;n<30;++n)for(var s=t[n];s<t[n+1];++s)i[s]=s-t[n]<<5|n;return[t,i]},Li=Ci(Ai,2),Ti=Li[0],vr=Li[1];Ti[28]=258,vr[258]=28;for(var wr=Ci(Pi,0),xr=wr[0],Tn=new lt(32768),Ce=0;Ce<32768;++Ce){var ct=(Ce&43690)>>>1|(Ce&21845)<<1;ct=(ct&52428)>>>2|(ct&13107)<<2,ct=(ct&61680)>>>4|(ct&3855)<<4,Tn[Ce]=((ct&65280)>>>8|(ct&255)<<8)>>>1}for(var Nt=function(o,e,t){for(var n=o.length,i=0,s=new lt(e);i<n;++i)++s[o[i]-1];var r=new lt(e);for(i=0;i<e;++i)r[i]=r[i-1]+s[i-1]<<1;var a;if(t){a=new lt(1<<e);var l=15-e;for(i=0;i<n;++i)if(o[i])for(var f=i<<4|o[i],h=e-o[i],d=r[o[i]-1]++<<h,m=d|(1<<h)-1;d<=m;++d)a[Tn[d]>>>l]=f}else for(a=new lt(n),i=0;i<n;++i)o[i]&&(a[i]=Tn[r[o[i]-1]++]>>>15-o[i]);return a},zt=new Ge(288),Ce=0;Ce<144;++Ce)zt[Ce]=8;for(var Ce=144;Ce<256;++Ce)zt[Ce]=9;for(var Ce=256;Ce<280;++Ce)zt[Ce]=7;for(var Ce=280;Ce<288;++Ce)zt[Ce]=8;for(var Oi=new Ge(32),Ce=0;Ce<32;++Ce)Oi[Ce]=5;var br=Nt(zt,9,1),Mr=Nt(Oi,5,1),On=function(o){for(var e=o[0],t=1;t<o.length;++t)o[t]>e&&(e=o[t]);return e},We=function(o,e,t){var n=e/8|0;return(o[n]|o[n+1]<<8)>>(e&7)&t},In=function(o,e){var t=e/8|0;return(o[t]|o[t+1]<<8|o[t+2]<<16)>>(e&7)},Sr=function(o){return(o/8|0)+(o&7&&1)},Ar=function(o,e,t){(e==null||e<0)&&(e=0),(t==null||t>o.length)&&(t=o.length);var n=new(o instanceof lt?lt:o instanceof Ln?Ln:Ge)(t-e);return n.set(o.subarray(e,t)),n},Pr=function(o,e,t){var n=o.length;if(!n||t&&!t.l&&n<5)return e||new Ge(0);var i=!e||t,s=!t||t.i;t||(t={}),e||(e=new Ge(n*3));var r=function(H){var N=e.length;if(H>N){var j=new Ge(Math.max(N*2,H));j.set(e),e=j}},a=t.f||0,l=t.p||0,f=t.b||0,h=t.l,d=t.d,m=t.m,y=t.n,M=n*8;do{if(!h){t.f=a=We(o,l,1);var S=We(o,l+1,3);if(l+=3,S)if(S==1)h=br,d=Mr,m=9,y=5;else if(S==2){var A=We(o,l,31)+257,g=We(o,l+10,15)+4,O=A+We(o,l+5,31)+1;l+=14;for(var x=new Ge(O),C=new Ge(19),p=0;p<g;++p)C[_r[p]]=We(o,l+p*3,7);l+=g*3;for(var w=On(C),_=(1<<w)-1,T=Nt(C,w,1),p=0;p<O;){var F=T[We(o,l,_)];l+=F&15;var v=F>>>4;if(v<16)x[p++]=v;else{var J=0,X=0;for(v==16?(X=3+We(o,l,3),l+=2,J=x[p-1]):v==17?(X=3+We(o,l,7),l+=3):v==18&&(X=11+We(o,l,127),l+=7);X--;)x[p++]=J}}var ee=x.subarray(0,A),$=x.subarray(A);m=On(ee),y=On($),h=Nt(ee,m,1),d=Nt($,y,1)}else throw"invalid block type";else{var v=Sr(l)+4,L=o[v-4]|o[v-3]<<8,I=v+L;if(I>n){if(s)throw"unexpected EOF";break}i&&r(f+L),e.set(o.subarray(v,I),f),t.b=f+=L,t.p=l=I*8;continue}if(l>M){if(s)throw"unexpected EOF";break}}i&&r(f+131072);for(var q=(1<<m)-1,Z=(1<<y)-1,ie=l;;ie=l){var J=h[In(o,l)&q],ne=J>>>4;if(l+=J&15,l>M){if(s)throw"unexpected EOF";break}if(!J)throw"invalid length/literal";if(ne<256)e[f++]=ne;else if(ne==256){ie=l,h=null;break}else{var ce=ne-254;if(ne>264){var p=ne-257,G=Ai[p];ce=We(o,l,(1<<G)-1)+Ti[p],l+=G}var z=d[In(o,l)&Z],b=z>>>4;if(!z)throw"invalid distance";l+=z&15;var $=xr[b];if(b>3){var G=Pi[b];$+=In(o,l)&(1<<G)-1,l+=G}if(l>M){if(s)throw"unexpected EOF";break}i&&r(f+131072);for(var V=f+ce;f<V;f+=4)e[f]=e[f-$],e[f+1]=e[f+1-$],e[f+2]=e[f+2-$],e[f+3]=e[f+3-$];f=V}}t.l=h,t.p=ie,t.b=f,h&&(a=1,t.m=m,t.d=d,t.n=y)}while(!a);return f==e.length?e:Ar(e,0,f)},Cr=new Ge(0),Lr=function(o){if((o[0]&15)!=8||o[0]>>>4>7||(o[0]<<8|o[1])%31)throw"invalid zlib data";if(o[1]&32)throw"invalid zlib data: preset dictionaries not supported"};function Tr(o,e){return Pr((Lr(o),o.subarray(2,-4)),e)}var Or=typeof TextDecoder<"u"&&new TextDecoder,Ir=0;try{Or.decode(Cr,{stream:!0}),Ir=1}catch{}var Dr=Object.defineProperty,kr=(o,e,t)=>e in o?Dr(o,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):o[e]=t,K=(o,e,t)=>(kr(o,typeof e!="symbol"?e+"":e,t),t);class Fr extends c.Object3D{constructor(e,t){super(),K(this,"isTransformControls",!0),K(this,"visible",!1),K(this,"domElement"),K(this,"raycaster",new c.Raycaster),K(this,"gizmo"),K(this,"plane"),K(this,"tempVector",new c.Vector3),K(this,"tempVector2",new c.Vector3),K(this,"tempQuaternion",new c.Quaternion),K(this,"unit",{X:new c.Vector3(1,0,0),Y:new c.Vector3(0,1,0),Z:new c.Vector3(0,0,1)}),K(this,"pointStart",new c.Vector3),K(this,"pointEnd",new c.Vector3),K(this,"offset",new c.Vector3),K(this,"rotationAxis",new c.Vector3),K(this,"startNorm",new c.Vector3),K(this,"endNorm",new c.Vector3),K(this,"rotationAngle",0),K(this,"cameraPosition",new c.Vector3),K(this,"cameraQuaternion",new c.Quaternion),K(this,"cameraScale",new c.Vector3),K(this,"parentPosition",new c.Vector3),K(this,"parentQuaternion",new c.Quaternion),K(this,"parentQuaternionInv",new c.Quaternion),K(this,"parentScale",new c.Vector3),K(this,"worldPositionStart",new c.Vector3),K(this,"worldQuaternionStart",new c.Quaternion),K(this,"worldScaleStart",new c.Vector3),K(this,"worldPosition",new c.Vector3),K(this,"worldQuaternion",new c.Quaternion),K(this,"worldQuaternionInv",new c.Quaternion),K(this,"worldScale",new c.Vector3),K(this,"eye",new c.Vector3),K(this,"positionStart",new c.Vector3),K(this,"quaternionStart",new c.Quaternion),K(this,"scaleStart",new c.Vector3),K(this,"camera"),K(this,"object"),K(this,"enabled",!0),K(this,"axis",null),K(this,"mode","translate"),K(this,"translationSnap",null),K(this,"rotationSnap",null),K(this,"scaleSnap",null),K(this,"space","world"),K(this,"size",1),K(this,"dragging",!1),K(this,"showX",!0),K(this,"showY",!0),K(this,"showZ",!0),K(this,"changeEvent",{type:"change"}),K(this,"mouseDownEvent",{type:"mouseDown",mode:this.mode}),K(this,"mouseUpEvent",{type:"mouseUp",mode:this.mode}),K(this,"objectChangeEvent",{type:"objectChange"}),K(this,"intersectObjectWithRay",(i,s,r)=>{const a=s.intersectObject(i,!0);for(let l=0;l<a.length;l++)if(a[l].object.visible||r)return a[l];return!1}),K(this,"attach",i=>(this.object=i,this.visible=!0,this)),K(this,"detach",()=>(this.object=void 0,this.visible=!1,this.axis=null,this)),K(this,"reset",()=>this.enabled?(this.dragging&&this.object!==void 0&&(this.object.position.copy(this.positionStart),this.object.quaternion.copy(this.quaternionStart),this.object.scale.copy(this.scaleStart),this.dispatchEvent(this.changeEvent),this.dispatchEvent(this.objectChangeEvent),this.pointStart.copy(this.pointEnd)),this):this),K(this,"updateMatrixWorld",()=>{this.object!==void 0&&(this.object.updateMatrixWorld(),this.object.parent===null?console.error("TransformControls: The attached 3D object must be a part of the scene graph."):this.object.parent.matrixWorld.decompose(this.parentPosition,this.parentQuaternion,this.parentScale),this.object.matrixWorld.decompose(this.worldPosition,this.worldQuaternion,this.worldScale),this.parentQuaternionInv.copy(this.parentQuaternion).invert(),this.worldQuaternionInv.copy(this.worldQuaternion).invert()),this.camera.updateMatrixWorld(),this.camera.matrixWorld.decompose(this.cameraPosition,this.cameraQuaternion,this.cameraScale),this.eye.copy(this.cameraPosition).sub(this.worldPosition).normalize(),super.updateMatrixWorld()}),K(this,"pointerHover",i=>{if(this.object===void 0||this.dragging===!0)return;this.raycaster.setFromCamera(i,this.camera);const s=this.intersectObjectWithRay(this.gizmo.picker[this.mode],this.raycaster);s?this.axis=s.object.name:this.axis=null}),K(this,"pointerDown",i=>{if(!(this.object===void 0||this.dragging===!0||i.button!==0)&&this.axis!==null){this.raycaster.setFromCamera(i,this.camera);const s=this.intersectObjectWithRay(this.plane,this.raycaster,!0);if(s){let r=this.space;if(this.mode==="scale"?r="local":(this.axis==="E"||this.axis==="XYZE"||this.axis==="XYZ")&&(r="world"),r==="local"&&this.mode==="rotate"){const a=this.rotationSnap;this.axis==="X"&&a&&(this.object.rotation.x=Math.round(this.object.rotation.x/a)*a),this.axis==="Y"&&a&&(this.object.rotation.y=Math.round(this.object.rotation.y/a)*a),this.axis==="Z"&&a&&(this.object.rotation.z=Math.round(this.object.rotation.z/a)*a)}this.object.updateMatrixWorld(),this.object.parent&&this.object.parent.updateMatrixWorld(),this.positionStart.copy(this.object.position),this.quaternionStart.copy(this.object.quaternion),this.scaleStart.copy(this.object.scale),this.object.matrixWorld.decompose(this.worldPositionStart,this.worldQuaternionStart,this.worldScaleStart),this.pointStart.copy(s.point).sub(this.worldPositionStart)}this.dragging=!0,this.mouseDownEvent.mode=this.mode,this.dispatchEvent(this.mouseDownEvent)}}),K(this,"pointerMove",i=>{const s=this.axis,r=this.mode,a=this.object;let l=this.space;if(r==="scale"?l="local":(s==="E"||s==="XYZE"||s==="XYZ")&&(l="world"),a===void 0||s===null||this.dragging===!1||i.button!==-1)return;this.raycaster.setFromCamera(i,this.camera);const f=this.intersectObjectWithRay(this.plane,this.raycaster,!0);if(f){if(this.pointEnd.copy(f.point).sub(this.worldPositionStart),r==="translate")this.offset.copy(this.pointEnd).sub(this.pointStart),l==="local"&&s!=="XYZ"&&this.offset.applyQuaternion(this.worldQuaternionInv),s.indexOf("X")===-1&&(this.offset.x=0),s.indexOf("Y")===-1&&(this.offset.y=0),s.indexOf("Z")===-1&&(this.offset.z=0),l==="local"&&s!=="XYZ"?this.offset.applyQuaternion(this.quaternionStart).divide(this.parentScale):this.offset.applyQuaternion(this.parentQuaternionInv).divide(this.parentScale),a.position.copy(this.offset).add(this.positionStart),this.translationSnap&&(l==="local"&&(a.position.applyQuaternion(this.tempQuaternion.copy(this.quaternionStart).invert()),s.search("X")!==-1&&(a.position.x=Math.round(a.position.x/this.translationSnap)*this.translationSnap),s.search("Y")!==-1&&(a.position.y=Math.round(a.position.y/this.translationSnap)*this.translationSnap),s.search("Z")!==-1&&(a.position.z=Math.round(a.position.z/this.translationSnap)*this.translationSnap),a.position.applyQuaternion(this.quaternionStart)),l==="world"&&(a.parent&&a.position.add(this.tempVector.setFromMatrixPosition(a.parent.matrixWorld)),s.search("X")!==-1&&(a.position.x=Math.round(a.position.x/this.translationSnap)*this.translationSnap),s.search("Y")!==-1&&(a.position.y=Math.round(a.position.y/this.translationSnap)*this.translationSnap),s.search("Z")!==-1&&(a.position.z=Math.round(a.position.z/this.translationSnap)*this.translationSnap),a.parent&&a.position.sub(this.tempVector.setFromMatrixPosition(a.parent.matrixWorld))));else if(r==="scale"){if(s.search("XYZ")!==-1){let h=this.pointEnd.length()/this.pointStart.length();this.pointEnd.dot(this.pointStart)<0&&(h*=-1),this.tempVector2.set(h,h,h)}else this.tempVector.copy(this.pointStart),this.tempVector2.copy(this.pointEnd),this.tempVector.applyQuaternion(this.worldQuaternionInv),this.tempVector2.applyQuaternion(this.worldQuaternionInv),this.tempVector2.divide(this.tempVector),s.search("X")===-1&&(this.tempVector2.x=1),s.search("Y")===-1&&(this.tempVector2.y=1),s.search("Z")===-1&&(this.tempVector2.z=1);a.scale.copy(this.scaleStart).multiply(this.tempVector2),this.scaleSnap&&this.object&&(s.search("X")!==-1&&(this.object.scale.x=Math.round(a.scale.x/this.scaleSnap)*this.scaleSnap||this.scaleSnap),s.search("Y")!==-1&&(a.scale.y=Math.round(a.scale.y/this.scaleSnap)*this.scaleSnap||this.scaleSnap),s.search("Z")!==-1&&(a.scale.z=Math.round(a.scale.z/this.scaleSnap)*this.scaleSnap||this.scaleSnap))}else if(r==="rotate"){this.offset.copy(this.pointEnd).sub(this.pointStart);const h=20/this.worldPosition.distanceTo(this.tempVector.setFromMatrixPosition(this.camera.matrixWorld));s==="E"?(this.rotationAxis.copy(this.eye),this.rotationAngle=this.pointEnd.angleTo(this.pointStart),this.startNorm.copy(this.pointStart).normalize(),this.endNorm.copy(this.pointEnd).normalize(),this.rotationAngle*=this.endNorm.cross(this.startNorm).dot(this.eye)<0?1:-1):s==="XYZE"?(this.rotationAxis.copy(this.offset).cross(this.eye).normalize(),this.rotationAngle=this.offset.dot(this.tempVector.copy(this.rotationAxis).cross(this.eye))*h):(s==="X"||s==="Y"||s==="Z")&&(this.rotationAxis.copy(this.unit[s]),this.tempVector.copy(this.unit[s]),l==="local"&&this.tempVector.applyQuaternion(this.worldQuaternion),this.rotationAngle=this.offset.dot(this.tempVector.cross(this.eye).normalize())*h),this.rotationSnap&&(this.rotationAngle=Math.round(this.rotationAngle/this.rotationSnap)*this.rotationSnap),l==="local"&&s!=="E"&&s!=="XYZE"?(a.quaternion.copy(this.quaternionStart),a.quaternion.multiply(this.tempQuaternion.setFromAxisAngle(this.rotationAxis,this.rotationAngle)).normalize()):(this.rotationAxis.applyQuaternion(this.parentQuaternionInv),a.quaternion.copy(this.tempQuaternion.setFromAxisAngle(this.rotationAxis,this.rotationAngle)),a.quaternion.multiply(this.quaternionStart).normalize())}this.dispatchEvent(this.changeEvent),this.dispatchEvent(this.objectChangeEvent)}}),K(this,"pointerUp",i=>{i.button===0&&(this.dragging&&this.axis!==null&&(this.mouseUpEvent.mode=this.mode,this.dispatchEvent(this.mouseUpEvent)),this.dragging=!1,this.axis=null)}),K(this,"getPointer",i=>{var s,r;if(this.domElement&&((s=this.domElement.ownerDocument)!=null&&s.pointerLockElement))return{x:0,y:0,button:i.button};{const a=i.changedTouches?i.changedTouches[0]:i,l=(r=this.domElement)==null?void 0:r.getBoundingClientRect();return{x:(a.clientX-l.left)/l.width*2-1,y:-(a.clientY-l.top)/l.height*2+1,button:i.button}}}),K(this,"onPointerHover",i=>{if(this.enabled)switch(i.pointerType){case"mouse":case"pen":this.pointerHover(this.getPointer(i));break}}),K(this,"onPointerDown",i=>{!this.enabled||!this.domElement||(this.domElement.style.touchAction="none",this.domElement.ownerDocument.addEventListener("pointermove",this.onPointerMove),this.pointerHover(this.getPointer(i)),this.pointerDown(this.getPointer(i)))}),K(this,"onPointerMove",i=>{this.enabled&&this.pointerMove(this.getPointer(i))}),K(this,"onPointerUp",i=>{!this.enabled||!this.domElement||(this.domElement.style.touchAction="",this.domElement.ownerDocument.removeEventListener("pointermove",this.onPointerMove),this.pointerUp(this.getPointer(i)))}),K(this,"getMode",()=>this.mode),K(this,"setMode",i=>{this.mode=i}),K(this,"setTranslationSnap",i=>{this.translationSnap=i}),K(this,"setRotationSnap",i=>{this.rotationSnap=i}),K(this,"setScaleSnap",i=>{this.scaleSnap=i}),K(this,"setSize",i=>{this.size=i}),K(this,"setSpace",i=>{this.space=i}),K(this,"update",()=>{console.warn("THREE.TransformControls: update function has no more functionality and therefore has been deprecated.")}),K(this,"connect",i=>{i===document&&console.error('THREE.OrbitControls: "document" should not be used as the target "domElement". Please use "renderer.domElement" instead.'),this.domElement=i,this.domElement.addEventListener("pointerdown",this.onPointerDown),this.domElement.addEventListener("pointermove",this.onPointerHover),this.domElement.ownerDocument.addEventListener("pointerup",this.onPointerUp)}),K(this,"dispose",()=>{var i,s,r,a,l,f;(i=this.domElement)==null||i.removeEventListener("pointerdown",this.onPointerDown),(s=this.domElement)==null||s.removeEventListener("pointermove",this.onPointerHover),(a=(r=this.domElement)==null?void 0:r.ownerDocument)==null||a.removeEventListener("pointermove",this.onPointerMove),(f=(l=this.domElement)==null?void 0:l.ownerDocument)==null||f.removeEventListener("pointerup",this.onPointerUp),this.traverse(h=>{const d=h;d.geometry&&d.geometry.dispose(),d.material&&d.material.dispose()})}),this.domElement=t,this.camera=e,this.gizmo=new Br,this.add(this.gizmo),this.plane=new Ur,this.add(this.plane);const n=(i,s)=>{let r=s;Object.defineProperty(this,i,{get:function(){return r!==void 0?r:s},set:function(a){r!==a&&(r=a,this.plane[i]=a,this.gizmo[i]=a,this.dispatchEvent({type:i+"-changed",value:a}),this.dispatchEvent(this.changeEvent))}}),this[i]=s,this.plane[i]=s,this.gizmo[i]=s};n("camera",this.camera),n("object",this.object),n("enabled",this.enabled),n("axis",this.axis),n("mode",this.mode),n("translationSnap",this.translationSnap),n("rotationSnap",this.rotationSnap),n("scaleSnap",this.scaleSnap),n("space",this.space),n("size",this.size),n("dragging",this.dragging),n("showX",this.showX),n("showY",this.showY),n("showZ",this.showZ),n("worldPosition",this.worldPosition),n("worldPositionStart",this.worldPositionStart),n("worldQuaternion",this.worldQuaternion),n("worldQuaternionStart",this.worldQuaternionStart),n("cameraPosition",this.cameraPosition),n("cameraQuaternion",this.cameraQuaternion),n("pointStart",this.pointStart),n("pointEnd",this.pointEnd),n("rotationAxis",this.rotationAxis),n("rotationAngle",this.rotationAngle),n("eye",this.eye),t!==void 0&&this.connect(t)}}class Br extends c.Object3D{constructor(){super(),K(this,"isTransformControlsGizmo",!0),K(this,"type","TransformControlsGizmo"),K(this,"tempVector",new c.Vector3(0,0,0)),K(this,"tempEuler",new c.Euler),K(this,"alignVector",new c.Vector3(0,1,0)),K(this,"zeroVector",new c.Vector3(0,0,0)),K(this,"lookAtMatrix",new c.Matrix4),K(this,"tempQuaternion",new c.Quaternion),K(this,"tempQuaternion2",new c.Quaternion),K(this,"identityQuaternion",new c.Quaternion),K(this,"unitX",new c.Vector3(1,0,0)),K(this,"unitY",new c.Vector3(0,1,0)),K(this,"unitZ",new c.Vector3(0,0,1)),K(this,"gizmo"),K(this,"picker"),K(this,"helper"),K(this,"rotationAxis",new c.Vector3),K(this,"cameraPosition",new c.Vector3),K(this,"worldPositionStart",new c.Vector3),K(this,"worldQuaternionStart",new c.Quaternion),K(this,"worldPosition",new c.Vector3),K(this,"worldQuaternion",new c.Quaternion),K(this,"eye",new c.Vector3),K(this,"camera",null),K(this,"enabled",!0),K(this,"axis",null),K(this,"mode","translate"),K(this,"space","world"),K(this,"size",1),K(this,"dragging",!1),K(this,"showX",!0),K(this,"showY",!0),K(this,"showZ",!0),K(this,"updateMatrixWorld",()=>{let ne=this.space;this.mode==="scale"&&(ne="local");const ce=ne==="local"?this.worldQuaternion:this.identityQuaternion;this.gizmo.translate.visible=this.mode==="translate",this.gizmo.rotate.visible=this.mode==="rotate",this.gizmo.scale.visible=this.mode==="scale",this.helper.translate.visible=this.mode==="translate",this.helper.rotate.visible=this.mode==="rotate",this.helper.scale.visible=this.mode==="scale";let G=[];G=G.concat(this.picker[this.mode].children),G=G.concat(this.gizmo[this.mode].children),G=G.concat(this.helper[this.mode].children);for(let z=0;z<G.length;z++){const b=G[z];b.visible=!0,b.rotation.set(0,0,0),b.position.copy(this.worldPosition);let V;if(this.camera.isOrthographicCamera?V=(this.camera.top-this.camera.bottom)/this.camera.zoom:V=this.worldPosition.distanceTo(this.cameraPosition)*Math.min(1.9*Math.tan(Math.PI*this.camera.fov/360)/this.camera.zoom,7),b.scale.set(1,1,1).multiplyScalar(V*this.size/7),b.tag==="helper"){b.visible=!1,b.name==="AXIS"?(b.position.copy(this.worldPositionStart),b.visible=!!this.axis,this.axis==="X"&&(this.tempQuaternion.setFromEuler(this.tempEuler.set(0,0,0)),b.quaternion.copy(ce).multiply(this.tempQuaternion),Math.abs(this.alignVector.copy(this.unitX).applyQuaternion(ce).dot(this.eye))>.9&&(b.visible=!1)),this.axis==="Y"&&(this.tempQuaternion.setFromEuler(this.tempEuler.set(0,0,Math.PI/2)),b.quaternion.copy(ce).multiply(this.tempQuaternion),Math.abs(this.alignVector.copy(this.unitY).applyQuaternion(ce).dot(this.eye))>.9&&(b.visible=!1)),this.axis==="Z"&&(this.tempQuaternion.setFromEuler(this.tempEuler.set(0,Math.PI/2,0)),b.quaternion.copy(ce).multiply(this.tempQuaternion),Math.abs(this.alignVector.copy(this.unitZ).applyQuaternion(ce).dot(this.eye))>.9&&(b.visible=!1)),this.axis==="XYZE"&&(this.tempQuaternion.setFromEuler(this.tempEuler.set(0,Math.PI/2,0)),this.alignVector.copy(this.rotationAxis),b.quaternion.setFromRotationMatrix(this.lookAtMatrix.lookAt(this.zeroVector,this.alignVector,this.unitY)),b.quaternion.multiply(this.tempQuaternion),b.visible=this.dragging),this.axis==="E"&&(b.visible=!1)):b.name==="START"?(b.position.copy(this.worldPositionStart),b.visible=this.dragging):b.name==="END"?(b.position.copy(this.worldPosition),b.visible=this.dragging):b.name==="DELTA"?(b.position.copy(this.worldPositionStart),b.quaternion.copy(this.worldQuaternionStart),this.tempVector.set(1e-10,1e-10,1e-10).add(this.worldPositionStart).sub(this.worldPosition).multiplyScalar(-1),this.tempVector.applyQuaternion(this.worldQuaternionStart.clone().invert()),b.scale.copy(this.tempVector),b.visible=this.dragging):(b.quaternion.copy(ce),this.dragging?b.position.copy(this.worldPositionStart):b.position.copy(this.worldPosition),this.axis&&(b.visible=this.axis.search(b.name)!==-1));continue}b.quaternion.copy(ce),this.mode==="translate"||this.mode==="scale"?((b.name==="X"||b.name==="XYZX")&&Math.abs(this.alignVector.copy(this.unitX).applyQuaternion(ce).dot(this.eye))>.99&&(b.scale.set(1e-10,1e-10,1e-10),b.visible=!1),(b.name==="Y"||b.name==="XYZY")&&Math.abs(this.alignVector.copy(this.unitY).applyQuaternion(ce).dot(this.eye))>.99&&(b.scale.set(1e-10,1e-10,1e-10),b.visible=!1),(b.name==="Z"||b.name==="XYZZ")&&Math.abs(this.alignVector.copy(this.unitZ).applyQuaternion(ce).dot(this.eye))>.99&&(b.scale.set(1e-10,1e-10,1e-10),b.visible=!1),b.name==="XY"&&Math.abs(this.alignVector.copy(this.unitZ).applyQuaternion(ce).dot(this.eye))<.2&&(b.scale.set(1e-10,1e-10,1e-10),b.visible=!1),b.name==="YZ"&&Math.abs(this.alignVector.copy(this.unitX).applyQuaternion(ce).dot(this.eye))<.2&&(b.scale.set(1e-10,1e-10,1e-10),b.visible=!1),b.name==="XZ"&&Math.abs(this.alignVector.copy(this.unitY).applyQuaternion(ce).dot(this.eye))<.2&&(b.scale.set(1e-10,1e-10,1e-10),b.visible=!1),b.name.search("X")!==-1&&(this.alignVector.copy(this.unitX).applyQuaternion(ce).dot(this.eye)<0?b.tag==="fwd"?b.visible=!1:b.scale.x*=-1:b.tag==="bwd"&&(b.visible=!1)),b.name.search("Y")!==-1&&(this.alignVector.copy(this.unitY).applyQuaternion(ce).dot(this.eye)<0?b.tag==="fwd"?b.visible=!1:b.scale.y*=-1:b.tag==="bwd"&&(b.visible=!1)),b.name.search("Z")!==-1&&(this.alignVector.copy(this.unitZ).applyQuaternion(ce).dot(this.eye)<0?b.tag==="fwd"?b.visible=!1:b.scale.z*=-1:b.tag==="bwd"&&(b.visible=!1))):this.mode==="rotate"&&(this.tempQuaternion2.copy(ce),this.alignVector.copy(this.eye).applyQuaternion(this.tempQuaternion.copy(ce).invert()),b.name.search("E")!==-1&&b.quaternion.setFromRotationMatrix(this.lookAtMatrix.lookAt(this.eye,this.zeroVector,this.unitY)),b.name==="X"&&(this.tempQuaternion.setFromAxisAngle(this.unitX,Math.atan2(-this.alignVector.y,this.alignVector.z)),this.tempQuaternion.multiplyQuaternions(this.tempQuaternion2,this.tempQuaternion),b.quaternion.copy(this.tempQuaternion)),b.name==="Y"&&(this.tempQuaternion.setFromAxisAngle(this.unitY,Math.atan2(this.alignVector.x,this.alignVector.z)),this.tempQuaternion.multiplyQuaternions(this.tempQuaternion2,this.tempQuaternion),b.quaternion.copy(this.tempQuaternion)),b.name==="Z"&&(this.tempQuaternion.setFromAxisAngle(this.unitZ,Math.atan2(this.alignVector.y,this.alignVector.x)),this.tempQuaternion.multiplyQuaternions(this.tempQuaternion2,this.tempQuaternion),b.quaternion.copy(this.tempQuaternion))),b.visible=b.visible&&(b.name.indexOf("X")===-1||this.showX),b.visible=b.visible&&(b.name.indexOf("Y")===-1||this.showY),b.visible=b.visible&&(b.name.indexOf("Z")===-1||this.showZ),b.visible=b.visible&&(b.name.indexOf("E")===-1||this.showX&&this.showY&&this.showZ),b.material.tempOpacity=b.material.tempOpacity||b.material.opacity,b.material.tempColor=b.material.tempColor||b.material.color.clone(),b.material.color.copy(b.material.tempColor),b.material.opacity=b.material.tempOpacity,this.enabled?this.axis&&(b.name===this.axis?(b.material.opacity=1,b.material.color.lerp(new c.Color(1,1,1),.5)):this.axis.split("").some(function(H){return b.name===H})?(b.material.opacity=1,b.material.color.lerp(new c.Color(1,1,1),.5)):(b.material.opacity*=.25,b.material.color.lerp(new c.Color(1,1,1),.5))):(b.material.opacity*=.5,b.material.color.lerp(new c.Color(1,1,1),.5))}super.updateMatrixWorld()});const e=new c.MeshBasicMaterial({depthTest:!1,depthWrite:!1,transparent:!0,side:c.DoubleSide,fog:!1,toneMapped:!1}),t=new c.LineBasicMaterial({depthTest:!1,depthWrite:!1,transparent:!0,linewidth:1,fog:!1,toneMapped:!1}),n=e.clone();n.opacity=.15;const i=e.clone();i.opacity=.33;const s=e.clone();s.color.set(16711680);const r=e.clone();r.color.set(65280);const a=e.clone();a.color.set(255);const l=e.clone();l.opacity=.25;const f=l.clone();f.color.set(16776960);const h=l.clone();h.color.set(65535);const d=l.clone();d.color.set(16711935),e.clone().color.set(16776960);const y=t.clone();y.color.set(16711680);const M=t.clone();M.color.set(65280);const S=t.clone();S.color.set(255);const v=t.clone();v.color.set(65535);const L=t.clone();L.color.set(16711935);const I=t.clone();I.color.set(16776960);const A=t.clone();A.color.set(7895160);const g=I.clone();g.opacity=.25;const O=new c.CylinderGeometry(0,.05,.2,12,1,!1),x=new c.BoxGeometry(.125,.125,.125),C=new c.BufferGeometry;C.setAttribute("position",new c.Float32BufferAttribute([0,0,0,1,0,0],3));const p=(ne,ce)=>{const G=new c.BufferGeometry,z=[];for(let b=0;b<=64*ce;++b)z.push(0,Math.cos(b/32*Math.PI)*ne,Math.sin(b/32*Math.PI)*ne);return G.setAttribute("position",new c.Float32BufferAttribute(z,3)),G},w=()=>{const ne=new c.BufferGeometry;return ne.setAttribute("position",new c.Float32BufferAttribute([0,0,0,1,1,1],3)),ne},_={X:[[new c.Mesh(O,s),[1,0,0],[0,0,-Math.PI/2],null,"fwd"],[new c.Mesh(O,s),[1,0,0],[0,0,Math.PI/2],null,"bwd"],[new c.Line(C,y)]],Y:[[new c.Mesh(O,r),[0,1,0],null,null,"fwd"],[new c.Mesh(O,r),[0,1,0],[Math.PI,0,0],null,"bwd"],[new c.Line(C,M),null,[0,0,Math.PI/2]]],Z:[[new c.Mesh(O,a),[0,0,1],[Math.PI/2,0,0],null,"fwd"],[new c.Mesh(O,a),[0,0,1],[-Math.PI/2,0,0],null,"bwd"],[new c.Line(C,S),null,[0,-Math.PI/2,0]]],XYZ:[[new c.Mesh(new c.OctahedronGeometry(.1,0),l.clone()),[0,0,0],[0,0,0]]],XY:[[new c.Mesh(new c.PlaneGeometry(.295,.295),f.clone()),[.15,.15,0]],[new c.Line(C,I),[.18,.3,0],null,[.125,1,1]],[new c.Line(C,I),[.3,.18,0],[0,0,Math.PI/2],[.125,1,1]]],YZ:[[new c.Mesh(new c.PlaneGeometry(.295,.295),h.clone()),[0,.15,.15],[0,Math.PI/2,0]],[new c.Line(C,v),[0,.18,.3],[0,0,Math.PI/2],[.125,1,1]],[new c.Line(C,v),[0,.3,.18],[0,-Math.PI/2,0],[.125,1,1]]],XZ:[[new c.Mesh(new c.PlaneGeometry(.295,.295),d.clone()),[.15,0,.15],[-Math.PI/2,0,0]],[new c.Line(C,L),[.18,0,.3],null,[.125,1,1]],[new c.Line(C,L),[.3,0,.18],[0,-Math.PI/2,0],[.125,1,1]]]},T={X:[[new c.Mesh(new c.CylinderGeometry(.2,0,1,4,1,!1),n),[.6,0,0],[0,0,-Math.PI/2]]],Y:[[new c.Mesh(new c.CylinderGeometry(.2,0,1,4,1,!1),n),[0,.6,0]]],Z:[[new c.Mesh(new c.CylinderGeometry(.2,0,1,4,1,!1),n),[0,0,.6],[Math.PI/2,0,0]]],XYZ:[[new c.Mesh(new c.OctahedronGeometry(.2,0),n)]],XY:[[new c.Mesh(new c.PlaneGeometry(.4,.4),n),[.2,.2,0]]],YZ:[[new c.Mesh(new c.PlaneGeometry(.4,.4),n),[0,.2,.2],[0,Math.PI/2,0]]],XZ:[[new c.Mesh(new c.PlaneGeometry(.4,.4),n),[.2,0,.2],[-Math.PI/2,0,0]]]},F={START:[[new c.Mesh(new c.OctahedronGeometry(.01,2),i),null,null,null,"helper"]],END:[[new c.Mesh(new c.OctahedronGeometry(.01,2),i),null,null,null,"helper"]],DELTA:[[new c.Line(w(),i),null,null,null,"helper"]],X:[[new c.Line(C,i.clone()),[-1e3,0,0],null,[1e6,1,1],"helper"]],Y:[[new c.Line(C,i.clone()),[0,-1e3,0],[0,0,Math.PI/2],[1e6,1,1],"helper"]],Z:[[new c.Line(C,i.clone()),[0,0,-1e3],[0,-Math.PI/2,0],[1e6,1,1],"helper"]]},J={X:[[new c.Line(p(1,.5),y)],[new c.Mesh(new c.OctahedronGeometry(.04,0),s),[0,0,.99],null,[1,3,1]]],Y:[[new c.Line(p(1,.5),M),null,[0,0,-Math.PI/2]],[new c.Mesh(new c.OctahedronGeometry(.04,0),r),[0,0,.99],null,[3,1,1]]],Z:[[new c.Line(p(1,.5),S),null,[0,Math.PI/2,0]],[new c.Mesh(new c.OctahedronGeometry(.04,0),a),[.99,0,0],null,[1,3,1]]],E:[[new c.Line(p(1.25,1),g),null,[0,Math.PI/2,0]],[new c.Mesh(new c.CylinderGeometry(.03,0,.15,4,1,!1),g),[1.17,0,0],[0,0,-Math.PI/2],[1,1,.001]],[new c.Mesh(new c.CylinderGeometry(.03,0,.15,4,1,!1),g),[-1.17,0,0],[0,0,Math.PI/2],[1,1,.001]],[new c.Mesh(new c.CylinderGeometry(.03,0,.15,4,1,!1),g),[0,-1.17,0],[Math.PI,0,0],[1,1,.001]],[new c.Mesh(new c.CylinderGeometry(.03,0,.15,4,1,!1),g),[0,1.17,0],[0,0,0],[1,1,.001]]],XYZE:[[new c.Line(p(1,1),A),null,[0,Math.PI/2,0]]]},X={AXIS:[[new c.Line(C,i.clone()),[-1e3,0,0],null,[1e6,1,1],"helper"]]},ee={X:[[new c.Mesh(new c.TorusGeometry(1,.1,4,24),n),[0,0,0],[0,-Math.PI/2,-Math.PI/2]]],Y:[[new c.Mesh(new c.TorusGeometry(1,.1,4,24),n),[0,0,0],[Math.PI/2,0,0]]],Z:[[new c.Mesh(new c.TorusGeometry(1,.1,4,24),n),[0,0,0],[0,0,-Math.PI/2]]],E:[[new c.Mesh(new c.TorusGeometry(1.25,.1,2,24),n)]],XYZE:[[new c.Mesh(new c.SphereGeometry(.7,10,8),n)]]},$={X:[[new c.Mesh(x,s),[.8,0,0],[0,0,-Math.PI/2]],[new c.Line(C,y),null,null,[.8,1,1]]],Y:[[new c.Mesh(x,r),[0,.8,0]],[new c.Line(C,M),null,[0,0,Math.PI/2],[.8,1,1]]],Z:[[new c.Mesh(x,a),[0,0,.8],[Math.PI/2,0,0]],[new c.Line(C,S),null,[0,-Math.PI/2,0],[.8,1,1]]],XY:[[new c.Mesh(x,f),[.85,.85,0],null,[2,2,.2]],[new c.Line(C,I),[.855,.98,0],null,[.125,1,1]],[new c.Line(C,I),[.98,.855,0],[0,0,Math.PI/2],[.125,1,1]]],YZ:[[new c.Mesh(x,h),[0,.85,.85],null,[.2,2,2]],[new c.Line(C,v),[0,.855,.98],[0,0,Math.PI/2],[.125,1,1]],[new c.Line(C,v),[0,.98,.855],[0,-Math.PI/2,0],[.125,1,1]]],XZ:[[new c.Mesh(x,d),[.85,0,.85],null,[2,.2,2]],[new c.Line(C,L),[.855,0,.98],null,[.125,1,1]],[new c.Line(C,L),[.98,0,.855],[0,-Math.PI/2,0],[.125,1,1]]],XYZX:[[new c.Mesh(new c.BoxGeometry(.125,.125,.125),l.clone()),[1.1,0,0]]],XYZY:[[new c.Mesh(new c.BoxGeometry(.125,.125,.125),l.clone()),[0,1.1,0]]],XYZZ:[[new c.Mesh(new c.BoxGeometry(.125,.125,.125),l.clone()),[0,0,1.1]]]},q={X:[[new c.Mesh(new c.CylinderGeometry(.2,0,.8,4,1,!1),n),[.5,0,0],[0,0,-Math.PI/2]]],Y:[[new c.Mesh(new c.CylinderGeometry(.2,0,.8,4,1,!1),n),[0,.5,0]]],Z:[[new c.Mesh(new c.CylinderGeometry(.2,0,.8,4,1,!1),n),[0,0,.5],[Math.PI/2,0,0]]],XY:[[new c.Mesh(x,n),[.85,.85,0],null,[3,3,.2]]],YZ:[[new c.Mesh(x,n),[0,.85,.85],null,[.2,3,3]]],XZ:[[new c.Mesh(x,n),[.85,0,.85],null,[3,.2,3]]],XYZX:[[new c.Mesh(new c.BoxGeometry(.2,.2,.2),n),[1.1,0,0]]],XYZY:[[new c.Mesh(new c.BoxGeometry(.2,.2,.2),n),[0,1.1,0]]],XYZZ:[[new c.Mesh(new c.BoxGeometry(.2,.2,.2),n),[0,0,1.1]]]},Z={X:[[new c.Line(C,i.clone()),[-1e3,0,0],null,[1e6,1,1],"helper"]],Y:[[new c.Line(C,i.clone()),[0,-1e3,0],[0,0,Math.PI/2],[1e6,1,1],"helper"]],Z:[[new c.Line(C,i.clone()),[0,0,-1e3],[0,-Math.PI/2,0],[1e6,1,1],"helper"]]},ie=ne=>{const ce=new c.Object3D;for(let G in ne)for(let z=ne[G].length;z--;){const b=ne[G][z][0].clone(),V=ne[G][z][1],H=ne[G][z][2],N=ne[G][z][3],j=ne[G][z][4];b.name=G,b.tag=j,V&&b.position.set(V[0],V[1],V[2]),H&&b.rotation.set(H[0],H[1],H[2]),N&&b.scale.set(N[0],N[1],N[2]),b.updateMatrix();const P=b.geometry.clone();P.applyMatrix4(b.matrix),b.geometry=P,b.renderOrder=1/0,b.position.set(0,0,0),b.rotation.set(0,0,0),b.scale.set(1,1,1),ce.add(b)}return ce};this.gizmo={},this.picker={},this.helper={},this.add(this.gizmo.translate=ie(_)),this.add(this.gizmo.rotate=ie(J)),this.add(this.gizmo.scale=ie($)),this.add(this.picker.translate=ie(T)),this.add(this.picker.rotate=ie(ee)),this.add(this.picker.scale=ie(q)),this.add(this.helper.translate=ie(F)),this.add(this.helper.rotate=ie(X)),this.add(this.helper.scale=ie(Z)),this.picker.translate.visible=!1,this.picker.rotate.visible=!1,this.picker.scale.visible=!1}}class Ur extends c.Mesh{constructor(){super(new c.PlaneGeometry(1e5,1e5,2,2),new c.MeshBasicMaterial({visible:!1,wireframe:!0,side:c.DoubleSide,transparent:!0,opacity:.1,toneMapped:!1})),K(this,"isTransformControlsPlane",!0),K(this,"type","TransformControlsPlane"),K(this,"unitX",new c.Vector3(1,0,0)),K(this,"unitY",new c.Vector3(0,1,0)),K(this,"unitZ",new c.Vector3(0,0,1)),K(this,"tempVector",new c.Vector3),K(this,"dirVector",new c.Vector3),K(this,"alignVector",new c.Vector3),K(this,"tempMatrix",new c.Matrix4),K(this,"identityQuaternion",new c.Quaternion),K(this,"cameraQuaternion",new c.Quaternion),K(this,"worldPosition",new c.Vector3),K(this,"worldQuaternion",new c.Quaternion),K(this,"eye",new c.Vector3),K(this,"axis",null),K(this,"mode","translate"),K(this,"space","world"),K(this,"updateMatrixWorld",()=>{let e=this.space;switch(this.position.copy(this.worldPosition),this.mode==="scale"&&(e="local"),this.unitX.set(1,0,0).applyQuaternion(e==="local"?this.worldQuaternion:this.identityQuaternion),this.unitY.set(0,1,0).applyQuaternion(e==="local"?this.worldQuaternion:this.identityQuaternion),this.unitZ.set(0,0,1).applyQuaternion(e==="local"?this.worldQuaternion:this.identityQuaternion),this.alignVector.copy(this.unitY),this.mode){case"translate":case"scale":switch(this.axis){case"X":this.alignVector.copy(this.eye).cross(this.unitX),this.dirVector.copy(this.unitX).cross(this.alignVector);break;case"Y":this.alignVector.copy(this.eye).cross(this.unitY),this.dirVector.copy(this.unitY).cross(this.alignVector);break;case"Z":this.alignVector.copy(this.eye).cross(this.unitZ),this.dirVector.copy(this.unitZ).cross(this.alignVector);break;case"XY":this.dirVector.copy(this.unitZ);break;case"YZ":this.dirVector.copy(this.unitX);break;case"XZ":this.alignVector.copy(this.unitZ),this.dirVector.copy(this.unitY);break;case"XYZ":case"E":this.dirVector.set(0,0,0);break}break;case"rotate":default:this.dirVector.set(0,0,0)}this.dirVector.length()===0?this.quaternion.copy(this.cameraQuaternion):(this.tempMatrix.lookAt(this.tempVector.set(0,0,0),this.dirVector,this.alignVector),this.quaternion.setFromRotationMatrix(this.tempMatrix)),super.updateMatrixWorld()})}}var Nr=Object.defineProperty,zr=(o,e,t)=>e in o?Nr(o,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):o[e]=t,Oe=(o,e,t)=>(zr(o,typeof e!="symbol"?e+"":e,t),t);const At=new c.Euler(0,0,0,"YXZ"),Pt=new c.Vector3,Vr={type:"change"},jr={type:"lock"},Gr={type:"unlock"},Ii=Math.PI/2;class Dn extends c.EventDispatcher{constructor(e,t){super(),Oe(this,"camera"),Oe(this,"domElement"),Oe(this,"isLocked"),Oe(this,"minPolarAngle"),Oe(this,"maxPolarAngle"),Oe(this,"pointerSpeed"),Oe(this,"onMouseMove",n=>{if(!this.domElement||this.isLocked===!1)return;const i=n.movementX||n.mozMovementX||n.webkitMovementX||0,s=n.movementY||n.mozMovementY||n.webkitMovementY||0;At.setFromQuaternion(this.camera.quaternion),At.y-=i*.002*this.pointerSpeed,At.x-=s*.002*this.pointerSpeed,At.x=Math.max(Ii-this.maxPolarAngle,Math.min(Ii-this.minPolarAngle,At.x)),this.camera.quaternion.setFromEuler(At),this.dispatchEvent(Vr)}),Oe(this,"onPointerlockChange",()=>{this.domElement&&(this.domElement.ownerDocument.pointerLockElement===this.domElement?(this.dispatchEvent(jr),this.isLocked=!0):(this.dispatchEvent(Gr),this.isLocked=!1))}),Oe(this,"onPointerlockError",()=>{console.error("THREE.PointerLockControls: Unable to use Pointer Lock API")}),Oe(this,"connect",n=>{this.domElement=n||this.domElement,this.domElement&&(this.domElement.ownerDocument.addEventListener("mousemove",this.onMouseMove),this.domElement.ownerDocument.addEventListener("pointerlockchange",this.onPointerlockChange),this.domElement.ownerDocument.addEventListener("pointerlockerror",this.onPointerlockError))}),Oe(this,"disconnect",()=>{this.domElement&&(this.domElement.ownerDocument.removeEventListener("mousemove",this.onMouseMove),this.domElement.ownerDocument.removeEventListener("pointerlockchange",this.onPointerlockChange),this.domElement.ownerDocument.removeEventListener("pointerlockerror",this.onPointerlockError))}),Oe(this,"dispose",()=>{this.disconnect()}),Oe(this,"getObject",()=>this.camera),Oe(this,"direction",new c.Vector3(0,0,-1)),Oe(this,"getDirection",n=>n.copy(this.direction).applyQuaternion(this.camera.quaternion)),Oe(this,"moveForward",n=>{Pt.setFromMatrixColumn(this.camera.matrix,0),Pt.crossVectors(this.camera.up,Pt),this.camera.position.addScaledVector(Pt,n)}),Oe(this,"moveRight",n=>{Pt.setFromMatrixColumn(this.camera.matrix,0),this.camera.position.addScaledVector(Pt,n)}),Oe(this,"lock",()=>{this.domElement&&this.domElement.requestPointerLock()}),Oe(this,"unlock",()=>{this.domElement&&this.domElement.ownerDocument.exitPointerLock()}),this.camera=e,this.domElement=t,this.isLocked=!1,this.minPolarAngle=0,this.maxPolarAngle=Math.PI,this.pointerSpeed=1,t&&this.connect(t)}}var Rr=Object.defineProperty,Er=(o,e,t)=>e in o?Rr(o,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):o[e]=t,ue=(o,e,t)=>(Er(o,typeof e!="symbol"?e+"":e,t),t);const sn=new c.Ray,Di=new c.Plane,Yr=Math.cos(70*(Math.PI/180)),ki=(o,e)=>(o%e+e)%e;class Fi extends c.EventDispatcher{constructor(e,t){super(),ue(this,"object"),ue(this,"domElement"),ue(this,"enabled",!0),ue(this,"target",new c.Vector3),ue(this,"minDistance",0),ue(this,"maxDistance",1/0),ue(this,"minZoom",0),ue(this,"maxZoom",1/0),ue(this,"minPolarAngle",0),ue(this,"maxPolarAngle",Math.PI),ue(this,"minAzimuthAngle",-1/0),ue(this,"maxAzimuthAngle",1/0),ue(this,"enableDamping",!1),ue(this,"dampingFactor",.05),ue(this,"enableZoom",!0),ue(this,"zoomSpeed",1),ue(this,"enableRotate",!0),ue(this,"rotateSpeed",1),ue(this,"enablePan",!0),ue(this,"panSpeed",1),ue(this,"screenSpacePanning",!0),ue(this,"keyPanSpeed",7),ue(this,"zoomToCursor",!1),ue(this,"autoRotate",!1),ue(this,"autoRotateSpeed",2),ue(this,"reverseOrbit",!1),ue(this,"reverseHorizontalOrbit",!1),ue(this,"reverseVerticalOrbit",!1),ue(this,"keys",{LEFT:"ArrowLeft",UP:"ArrowUp",RIGHT:"ArrowRight",BOTTOM:"ArrowDown"}),ue(this,"mouseButtons",{LEFT:c.MOUSE.ROTATE,MIDDLE:c.MOUSE.DOLLY,RIGHT:c.MOUSE.PAN}),ue(this,"touches",{ONE:c.TOUCH.ROTATE,TWO:c.TOUCH.DOLLY_PAN}),ue(this,"target0"),ue(this,"position0"),ue(this,"zoom0"),ue(this,"_domElementKeyEvents",null),ue(this,"getPolarAngle"),ue(this,"getAzimuthalAngle"),ue(this,"setPolarAngle"),ue(this,"setAzimuthalAngle"),ue(this,"getDistance"),ue(this,"listenToKeyEvents"),ue(this,"stopListenToKeyEvents"),ue(this,"saveState"),ue(this,"reset"),ue(this,"update"),ue(this,"connect"),ue(this,"dispose"),this.object=e,this.domElement=t,this.target0=this.target.clone(),this.position0=this.object.position.clone(),this.zoom0=this.object.zoom,this.getPolarAngle=()=>h.phi,this.getAzimuthalAngle=()=>h.theta,this.setPolarAngle=E=>{let se=ki(E,2*Math.PI),pe=h.phi;pe<0&&(pe+=2*Math.PI),se<0&&(se+=2*Math.PI);let Me=Math.abs(se-pe);2*Math.PI-Me<Me&&(se<pe?se+=2*Math.PI:pe+=2*Math.PI),d.phi=se-pe,n.update()},this.setAzimuthalAngle=E=>{let se=ki(E,2*Math.PI),pe=h.theta;pe<0&&(pe+=2*Math.PI),se<0&&(se+=2*Math.PI);let Me=Math.abs(se-pe);2*Math.PI-Me<Me&&(se<pe?se+=2*Math.PI:pe+=2*Math.PI),d.theta=se-pe,n.update()},this.getDistance=()=>n.object.position.distanceTo(n.target),this.listenToKeyEvents=E=>{E.addEventListener("keydown",Ut),this._domElementKeyEvents=E},this.stopListenToKeyEvents=()=>{this._domElementKeyEvents.removeEventListener("keydown",Ut),this._domElementKeyEvents=null},this.saveState=()=>{n.target0.copy(n.target),n.position0.copy(n.object.position),n.zoom0=n.object.zoom},this.reset=()=>{n.target.copy(n.target0),n.object.position.copy(n.position0),n.object.zoom=n.zoom0,n.object.updateProjectionMatrix(),n.dispatchEvent(i),n.update(),l=a.NONE},this.update=(()=>{const E=new c.Vector3,se=new c.Vector3(0,1,0),pe=new c.Quaternion().setFromUnitVectors(e.up,se),Me=pe.clone().invert(),De=new c.Vector3,rt=new c.Quaternion,yt=2*Math.PI;return function(){const pr=n.object.position;pe.setFromUnitVectors(e.up,se),Me.copy(pe).invert(),E.copy(pr).sub(n.target),E.applyQuaternion(pe),h.setFromVector3(E),n.autoRotate&&l===a.NONE&&X(F()),n.enableDamping?(h.theta+=d.theta*n.dampingFactor,h.phi+=d.phi*n.dampingFactor):(h.theta+=d.theta,h.phi+=d.phi);let ot=n.minAzimuthAngle,at=n.maxAzimuthAngle;isFinite(ot)&&isFinite(at)&&(ot<-Math.PI?ot+=yt:ot>Math.PI&&(ot-=yt),at<-Math.PI?at+=yt:at>Math.PI&&(at-=yt),ot<=at?h.theta=Math.max(ot,Math.min(at,h.theta)):h.theta=h.theta>(ot+at)/2?Math.max(ot,h.theta):Math.min(at,h.theta)),h.phi=Math.max(n.minPolarAngle,Math.min(n.maxPolarAngle,h.phi)),h.makeSafe(),n.enableDamping===!0?n.target.addScaledVector(y,n.dampingFactor):n.target.add(y),n.zoomToCursor&&w||n.object.isOrthographicCamera?h.radius=G(h.radius):h.radius=G(h.radius*m),E.setFromSpherical(h),E.applyQuaternion(Me),pr.copy(n.target).add(E),n.object.lookAt(n.target),n.enableDamping===!0?(d.theta*=1-n.dampingFactor,d.phi*=1-n.dampingFactor,y.multiplyScalar(1-n.dampingFactor)):(d.set(0,0,0),y.set(0,0,0));let An=!1;if(n.zoomToCursor&&w){let tn=null;if(n.object instanceof c.PerspectiveCamera&&n.object.isPerspectiveCamera){const nn=E.length();tn=G(nn*m);const Pn=nn-tn;n.object.position.addScaledVector(C,Pn),n.object.updateMatrixWorld()}else if(n.object.isOrthographicCamera){const nn=new c.Vector3(p.x,p.y,0);nn.unproject(n.object),n.object.zoom=Math.max(n.minZoom,Math.min(n.maxZoom,n.object.zoom/m)),n.object.updateProjectionMatrix(),An=!0;const Pn=new c.Vector3(p.x,p.y,0);Pn.unproject(n.object),n.object.position.sub(Pn).add(nn),n.object.updateMatrixWorld(),tn=E.length()}else console.warn("WARNING: OrbitControls.js encountered an unknown camera type - zoom to cursor disabled."),n.zoomToCursor=!1;tn!==null&&(n.screenSpacePanning?n.target.set(0,0,-1).transformDirection(n.object.matrix).multiplyScalar(tn).add(n.object.position):(sn.origin.copy(n.object.position),sn.direction.set(0,0,-1).transformDirection(n.object.matrix),Math.abs(n.object.up.dot(sn.direction))<Yr?e.lookAt(n.target):(Di.setFromNormalAndCoplanarPoint(n.object.up,n.target),sn.intersectPlane(Di,n.target))))}else n.object instanceof c.OrthographicCamera&&n.object.isOrthographicCamera&&(n.object.zoom=Math.max(n.minZoom,Math.min(n.maxZoom,n.object.zoom/m)),n.object.updateProjectionMatrix(),An=!0);return m=1,w=!1,An||De.distanceToSquared(n.object.position)>f||8*(1-rt.dot(n.object.quaternion))>f?(n.dispatchEvent(i),De.copy(n.object.position),rt.copy(n.object.quaternion),An=!1,!0):!1}})(),this.connect=E=>{E===document&&console.error('THREE.OrbitControls: "document" should not be used as the target "domElement". Please use "renderer.domElement" instead.'),n.domElement=E,n.domElement.style.touchAction="none",n.domElement.addEventListener("contextmenu",ur),n.domElement.addEventListener("pointerdown",_e),n.domElement.addEventListener("pointercancel",st),n.domElement.addEventListener("wheel",Xe)},this.dispose=()=>{var E,se,pe,Me,De,rt;(E=n.domElement)==null||E.removeEventListener("contextmenu",ur),(se=n.domElement)==null||se.removeEventListener("pointerdown",_e),(pe=n.domElement)==null||pe.removeEventListener("pointercancel",st),(Me=n.domElement)==null||Me.removeEventListener("wheel",Xe),(De=n.domElement)==null||De.ownerDocument.removeEventListener("pointermove",we),(rt=n.domElement)==null||rt.ownerDocument.removeEventListener("pointerup",Ie),n._domElementKeyEvents!==null&&n._domElementKeyEvents.removeEventListener("keydown",Ut)};const n=this,i={type:"change"},s={type:"start"},r={type:"end"},a={NONE:-1,ROTATE:0,DOLLY:1,PAN:2,TOUCH_ROTATE:3,TOUCH_PAN:4,TOUCH_DOLLY_PAN:5,TOUCH_DOLLY_ROTATE:6};let l=a.NONE;const f=1e-6,h=new c.Spherical,d=new c.Spherical;let m=1;const y=new c.Vector3,M=new c.Vector2,S=new c.Vector2,v=new c.Vector2,L=new c.Vector2,I=new c.Vector2,A=new c.Vector2,g=new c.Vector2,O=new c.Vector2,x=new c.Vector2,C=new c.Vector3,p=new c.Vector2;let w=!1;const _=[],T={};function F(){return 2*Math.PI/60/60*n.autoRotateSpeed}function J(){return Math.pow(.95,n.zoomSpeed)}function X(E){n.reverseOrbit||n.reverseHorizontalOrbit?d.theta+=E:d.theta-=E}function ee(E){n.reverseOrbit||n.reverseVerticalOrbit?d.phi+=E:d.phi-=E}const $=(()=>{const E=new c.Vector3;return function(pe,Me){E.setFromMatrixColumn(Me,0),E.multiplyScalar(-pe),y.add(E)}})(),q=(()=>{const E=new c.Vector3;return function(pe,Me){n.screenSpacePanning===!0?E.setFromMatrixColumn(Me,1):(E.setFromMatrixColumn(Me,0),E.crossVectors(n.object.up,E)),E.multiplyScalar(pe),y.add(E)}})(),Z=(()=>{const E=new c.Vector3;return function(pe,Me){const De=n.domElement;if(De&&n.object instanceof c.PerspectiveCamera&&n.object.isPerspectiveCamera){const rt=n.object.position;E.copy(rt).sub(n.target);let yt=E.length();yt*=Math.tan(n.object.fov/2*Math.PI/180),$(2*pe*yt/De.clientHeight,n.object.matrix),q(2*Me*yt/De.clientHeight,n.object.matrix)}else De&&n.object instanceof c.OrthographicCamera&&n.object.isOrthographicCamera?($(pe*(n.object.right-n.object.left)/n.object.zoom/De.clientWidth,n.object.matrix),q(Me*(n.object.top-n.object.bottom)/n.object.zoom/De.clientHeight,n.object.matrix)):(console.warn("WARNING: OrbitControls.js encountered an unknown camera type - pan disabled."),n.enablePan=!1)}})();function ie(E){n.object instanceof c.PerspectiveCamera&&n.object.isPerspectiveCamera||n.object instanceof c.OrthographicCamera&&n.object.isOrthographicCamera?m/=E:(console.warn("WARNING: OrbitControls.js encountered an unknown camera type - dolly/zoom disabled."),n.enableZoom=!1)}function ne(E){n.object instanceof c.PerspectiveCamera&&n.object.isPerspectiveCamera||n.object instanceof c.OrthographicCamera&&n.object.isOrthographicCamera?m*=E:(console.warn("WARNING: OrbitControls.js encountered an unknown camera type - dolly/zoom disabled."),n.enableZoom=!1)}function ce(E){if(!n.zoomToCursor||!n.domElement)return;w=!0;const se=n.domElement.getBoundingClientRect(),pe=E.clientX-se.left,Me=E.clientY-se.top,De=se.width,rt=se.height;p.x=pe/De*2-1,p.y=-(Me/rt)*2+1,C.set(p.x,p.y,1).unproject(n.object).sub(n.object.position).normalize()}function G(E){return Math.max(n.minDistance,Math.min(n.maxDistance,E))}function z(E){M.set(E.clientX,E.clientY)}function b(E){ce(E),g.set(E.clientX,E.clientY)}function V(E){L.set(E.clientX,E.clientY)}function H(E){S.set(E.clientX,E.clientY),v.subVectors(S,M).multiplyScalar(n.rotateSpeed);const se=n.domElement;se&&(X(2*Math.PI*v.x/se.clientHeight),ee(2*Math.PI*v.y/se.clientHeight)),M.copy(S),n.update()}function N(E){O.set(E.clientX,E.clientY),x.subVectors(O,g),x.y>0?ie(J()):x.y<0&&ne(J()),g.copy(O),n.update()}function j(E){I.set(E.clientX,E.clientY),A.subVectors(I,L).multiplyScalar(n.panSpeed),Z(A.x,A.y),L.copy(I),n.update()}function P(E){ce(E),E.deltaY<0?ne(J()):E.deltaY>0&&ie(J()),n.update()}function D(E){let se=!1;switch(E.code){case n.keys.UP:Z(0,n.keyPanSpeed),se=!0;break;case n.keys.BOTTOM:Z(0,-n.keyPanSpeed),se=!0;break;case n.keys.LEFT:Z(n.keyPanSpeed,0),se=!0;break;case n.keys.RIGHT:Z(-n.keyPanSpeed,0),se=!0;break}se&&(E.preventDefault(),n.update())}function k(){if(_.length==1)M.set(_[0].pageX,_[0].pageY);else{const E=.5*(_[0].pageX+_[1].pageX),se=.5*(_[0].pageY+_[1].pageY);M.set(E,se)}}function R(){if(_.length==1)L.set(_[0].pageX,_[0].pageY);else{const E=.5*(_[0].pageX+_[1].pageX),se=.5*(_[0].pageY+_[1].pageY);L.set(E,se)}}function W(){const E=_[0].pageX-_[1].pageX,se=_[0].pageY-_[1].pageY,pe=Math.sqrt(E*E+se*se);g.set(0,pe)}function Y(){n.enableZoom&&W(),n.enablePan&&R()}function te(){n.enableZoom&&W(),n.enableRotate&&k()}function U(E){if(_.length==1)S.set(E.pageX,E.pageY);else{const pe=bi(E),Me=.5*(E.pageX+pe.x),De=.5*(E.pageY+pe.y);S.set(Me,De)}v.subVectors(S,M).multiplyScalar(n.rotateSpeed);const se=n.domElement;se&&(X(2*Math.PI*v.x/se.clientHeight),ee(2*Math.PI*v.y/se.clientHeight)),M.copy(S)}function B(E){if(_.length==1)I.set(E.pageX,E.pageY);else{const se=bi(E),pe=.5*(E.pageX+se.x),Me=.5*(E.pageY+se.y);I.set(pe,Me)}A.subVectors(I,L).multiplyScalar(n.panSpeed),Z(A.x,A.y),L.copy(I)}function oe(E){const se=bi(E),pe=E.pageX-se.x,Me=E.pageY-se.y,De=Math.sqrt(pe*pe+Me*Me);O.set(0,De),x.set(0,Math.pow(O.y/g.y,n.zoomSpeed)),ie(x.y),g.copy(O)}function le(E){n.enableZoom&&oe(E),n.enablePan&&B(E)}function me(E){n.enableZoom&&oe(E),n.enableRotate&&U(E)}function _e(E){var se,pe;n.enabled!==!1&&(_.length===0&&((se=n.domElement)==null||se.ownerDocument.addEventListener("pointermove",we),(pe=n.domElement)==null||pe.ownerDocument.addEventListener("pointerup",Ie)),Gu(E),E.pointerType==="touch"?Vu(E):en(E))}function we(E){n.enabled!==!1&&(E.pointerType==="touch"?ju(E):Bt(E))}function Ie(E){var se,pe,Me;fr(E),_.length===0&&((se=n.domElement)==null||se.releasePointerCapture(E.pointerId),(pe=n.domElement)==null||pe.ownerDocument.removeEventListener("pointermove",we),(Me=n.domElement)==null||Me.ownerDocument.removeEventListener("pointerup",Ie)),n.dispatchEvent(r),l=a.NONE}function st(E){fr(E)}function en(E){let se;switch(E.button){case 0:se=n.mouseButtons.LEFT;break;case 1:se=n.mouseButtons.MIDDLE;break;case 2:se=n.mouseButtons.RIGHT;break;default:se=-1}switch(se){case c.MOUSE.DOLLY:if(n.enableZoom===!1)return;b(E),l=a.DOLLY;break;case c.MOUSE.ROTATE:if(E.ctrlKey||E.metaKey||E.shiftKey){if(n.enablePan===!1)return;V(E),l=a.PAN}else{if(n.enableRotate===!1)return;z(E),l=a.ROTATE}break;case c.MOUSE.PAN:if(E.ctrlKey||E.metaKey||E.shiftKey){if(n.enableRotate===!1)return;z(E),l=a.ROTATE}else{if(n.enablePan===!1)return;V(E),l=a.PAN}break;default:l=a.NONE}l!==a.NONE&&n.dispatchEvent(s)}function Bt(E){if(n.enabled!==!1)switch(l){case a.ROTATE:if(n.enableRotate===!1)return;H(E);break;case a.DOLLY:if(n.enableZoom===!1)return;N(E);break;case a.PAN:if(n.enablePan===!1)return;j(E);break}}function Xe(E){n.enabled===!1||n.enableZoom===!1||l!==a.NONE&&l!==a.ROTATE||(E.preventDefault(),n.dispatchEvent(s),P(E),n.dispatchEvent(r))}function Ut(E){n.enabled===!1||n.enablePan===!1||D(E)}function Vu(E){switch(dr(E),_.length){case 1:switch(n.touches.ONE){case c.TOUCH.ROTATE:if(n.enableRotate===!1)return;k(),l=a.TOUCH_ROTATE;break;case c.TOUCH.PAN:if(n.enablePan===!1)return;R(),l=a.TOUCH_PAN;break;default:l=a.NONE}break;case 2:switch(n.touches.TWO){case c.TOUCH.DOLLY_PAN:if(n.enableZoom===!1&&n.enablePan===!1)return;Y(),l=a.TOUCH_DOLLY_PAN;break;case c.TOUCH.DOLLY_ROTATE:if(n.enableZoom===!1&&n.enableRotate===!1)return;te(),l=a.TOUCH_DOLLY_ROTATE;break;default:l=a.NONE}break;default:l=a.NONE}l!==a.NONE&&n.dispatchEvent(s)}function ju(E){switch(dr(E),l){case a.TOUCH_ROTATE:if(n.enableRotate===!1)return;U(E),n.update();break;case a.TOUCH_PAN:if(n.enablePan===!1)return;B(E),n.update();break;case a.TOUCH_DOLLY_PAN:if(n.enableZoom===!1&&n.enablePan===!1)return;le(E),n.update();break;case a.TOUCH_DOLLY_ROTATE:if(n.enableZoom===!1&&n.enableRotate===!1)return;me(E),n.update();break;default:l=a.NONE}}function ur(E){n.enabled!==!1&&E.preventDefault()}function Gu(E){_.push(E)}function fr(E){delete T[E.pointerId];for(let se=0;se<_.length;se++)if(_[se].pointerId==E.pointerId){_.splice(se,1);return}}function dr(E){let se=T[E.pointerId];se===void 0&&(se=new c.Vector2,T[E.pointerId]=se),se.set(E.pageX,E.pageY)}function bi(E){const se=E.pointerId===_[0].pointerId?_[1]:_[0];return T[se.pointerId]}t!==void 0&&this.connect(t),this.update()}}class Xr extends Fi{constructor(e,t){super(e,t),this.screenSpacePanning=!1,this.mouseButtons.LEFT=c.MOUSE.PAN,this.mouseButtons.RIGHT=c.MOUSE.ROTATE,this.touches.ONE=c.TOUCH.PAN,this.touches.TWO=c.TOUCH.DOLLY_ROTATE}}class Wr extends c.Loader{constructor(e){super(e),this.dracoLoader=null,this.ktx2Loader=null,this.meshoptDecoder=null,this.pluginCallbacks=[],this.register(function(t){return new Jr(t)}),this.register(function(t){return new ro(t)}),this.register(function(t){return new oo(t)}),this.register(function(t){return new ao(t)}),this.register(function(t){return new $r(t)}),this.register(function(t){return new eo(t)}),this.register(function(t){return new to(t)}),this.register(function(t){return new no(t)}),this.register(function(t){return new Qr(t)}),this.register(function(t){return new io(t)}),this.register(function(t){return new Hr(t)}),this.register(function(t){return new so(t)}),this.register(function(t){return new qr(t)}),this.register(function(t){return new lo(t)}),this.register(function(t){return new co(t)})}load(e,t,n,i){const s=this;let r;this.resourcePath!==""?r=this.resourcePath:this.path!==""?r=this.path:r=c.LoaderUtils.extractUrlBase(e),this.manager.itemStart(e);const a=function(f){i?i(f):console.error(f),s.manager.itemError(e),s.manager.itemEnd(e)},l=new c.FileLoader(this.manager);l.setPath(this.path),l.setResponseType("arraybuffer"),l.setRequestHeader(this.requestHeader),l.setWithCredentials(this.withCredentials),l.load(e,function(f){try{s.parse(f,r,function(h){t(h),s.manager.itemEnd(e)},a)}catch(h){a(h)}},n,a)}setDRACOLoader(e){return this.dracoLoader=e,this}setDDSLoader(){throw new Error('THREE.GLTFLoader: "MSFT_texture_dds" no longer supported. Please update to "KHR_texture_basisu".')}setKTX2Loader(e){return this.ktx2Loader=e,this}setMeshoptDecoder(e){return this.meshoptDecoder=e,this}register(e){return this.pluginCallbacks.indexOf(e)===-1&&this.pluginCallbacks.push(e),this}unregister(e){return this.pluginCallbacks.indexOf(e)!==-1&&this.pluginCallbacks.splice(this.pluginCallbacks.indexOf(e),1),this}parse(e,t,n,i){let s;const r={},a={};if(typeof e=="string")s=JSON.parse(e);else if(e instanceof ArrayBuffer)if(c.LoaderUtils.decodeText(new Uint8Array(e.slice(0,4)))===Bi){try{r[xe.KHR_BINARY_GLTF]=new ho(e)}catch(h){i&&i(h);return}s=JSON.parse(r[xe.KHR_BINARY_GLTF].content)}else s=JSON.parse(c.LoaderUtils.decodeText(new Uint8Array(e)));else s=e;if(s.asset===void 0||s.asset.version[0]<2){i&&i(new Error("THREE.GLTFLoader: Unsupported asset. glTF versions >=2.0 are supported."));return}const l=new So(s,{path:t||this.resourcePath||"",crossOrigin:this.crossOrigin,requestHeader:this.requestHeader,manager:this.manager,ktx2Loader:this.ktx2Loader,meshoptDecoder:this.meshoptDecoder});l.fileLoader.setRequestHeader(this.requestHeader);for(let f=0;f<this.pluginCallbacks.length;f++){const h=this.pluginCallbacks[f](l);a[h.name]=h,r[h.name]=!0}if(s.extensionsUsed)for(let f=0;f<s.extensionsUsed.length;++f){const h=s.extensionsUsed[f],d=s.extensionsRequired||[];switch(h){case xe.KHR_MATERIALS_UNLIT:r[h]=new Kr;break;case xe.KHR_DRACO_MESH_COMPRESSION:r[h]=new uo(s,this.dracoLoader);break;case xe.KHR_TEXTURE_TRANSFORM:r[h]=new fo;break;case xe.KHR_MESH_QUANTIZATION:r[h]=new po;break;default:d.indexOf(h)>=0&&a[h]===void 0&&console.warn('THREE.GLTFLoader: Unknown extension "'+h+'".')}}l.setExtensions(r),l.setPlugins(a),l.parse(n,i)}parseAsync(e,t){const n=this;return new Promise(function(i,s){n.parse(e,t,i,s)})}}function Zr(){let o={};return{get:function(e){return o[e]},add:function(e,t){o[e]=t},remove:function(e){delete o[e]},removeAll:function(){o={}}}}const xe={KHR_BINARY_GLTF:"KHR_binary_glTF",KHR_DRACO_MESH_COMPRESSION:"KHR_draco_mesh_compression",KHR_LIGHTS_PUNCTUAL:"KHR_lights_punctual",KHR_MATERIALS_CLEARCOAT:"KHR_materials_clearcoat",KHR_MATERIALS_IOR:"KHR_materials_ior",KHR_MATERIALS_SHEEN:"KHR_materials_sheen",KHR_MATERIALS_SPECULAR:"KHR_materials_specular",KHR_MATERIALS_TRANSMISSION:"KHR_materials_transmission",KHR_MATERIALS_IRIDESCENCE:"KHR_materials_iridescence",KHR_MATERIALS_ANISOTROPY:"KHR_materials_anisotropy",KHR_MATERIALS_UNLIT:"KHR_materials_unlit",KHR_MATERIALS_VOLUME:"KHR_materials_volume",KHR_TEXTURE_BASISU:"KHR_texture_basisu",KHR_TEXTURE_TRANSFORM:"KHR_texture_transform",KHR_MESH_QUANTIZATION:"KHR_mesh_quantization",KHR_MATERIALS_EMISSIVE_STRENGTH:"KHR_materials_emissive_strength",EXT_TEXTURE_WEBP:"EXT_texture_webp",EXT_TEXTURE_AVIF:"EXT_texture_avif",EXT_MESHOPT_COMPRESSION:"EXT_meshopt_compression",EXT_MESH_GPU_INSTANCING:"EXT_mesh_gpu_instancing"};class qr{constructor(e){this.parser=e,this.name=xe.KHR_LIGHTS_PUNCTUAL,this.cache={refs:{},uses:{}}}_markDefs(){const e=this.parser,t=this.parser.json.nodes||[];for(let n=0,i=t.length;n<i;n++){const s=t[n];s.extensions&&s.extensions[this.name]&&s.extensions[this.name].light!==void 0&&e._addNodeRef(this.cache,s.extensions[this.name].light)}}_loadLight(e){const t=this.parser,n="light:"+e;let i=t.cache.get(n);if(i)return i;const s=t.json,l=((s.extensions&&s.extensions[this.name]||{}).lights||[])[e];let f;const h=new c.Color(16777215);l.color!==void 0&&h.fromArray(l.color);const d=l.range!==void 0?l.range:0;switch(l.type){case"directional":f=new c.DirectionalLight(h),f.target.position.set(0,0,-1),f.add(f.target);break;case"point":f=new c.PointLight(h),f.distance=d;break;case"spot":f=new c.SpotLight(h),f.distance=d,l.spot=l.spot||{},l.spot.innerConeAngle=l.spot.innerConeAngle!==void 0?l.spot.innerConeAngle:0,l.spot.outerConeAngle=l.spot.outerConeAngle!==void 0?l.spot.outerConeAngle:Math.PI/4,f.angle=l.spot.outerConeAngle,f.penumbra=1-l.spot.innerConeAngle/l.spot.outerConeAngle,f.target.position.set(0,0,-1),f.add(f.target);break;default:throw new Error("THREE.GLTFLoader: Unexpected light type: "+l.type)}return f.position.set(0,0,0),f.decay=2,ut(f,l),l.intensity!==void 0&&(f.intensity=l.intensity),f.name=t.createUniqueName(l.name||"light_"+e),i=Promise.resolve(f),t.cache.add(n,i),i}getDependency(e,t){if(e==="light")return this._loadLight(t)}createNodeAttachment(e){const t=this,n=this.parser,s=n.json.nodes[e],a=(s.extensions&&s.extensions[this.name]||{}).light;return a===void 0?null:this._loadLight(a).then(function(l){return n._getNodeRef(t.cache,a,l)})}}class Kr{constructor(){this.name=xe.KHR_MATERIALS_UNLIT}getMaterialType(){return c.MeshBasicMaterial}extendParams(e,t,n){const i=[];e.color=new c.Color(1,1,1),e.opacity=1;const s=t.pbrMetallicRoughness;if(s){if(Array.isArray(s.baseColorFactor)){const r=s.baseColorFactor;e.color.fromArray(r),e.opacity=r[3]}s.baseColorTexture!==void 0&&i.push(n.assignTexture(e,"map",s.baseColorTexture,3001))}return Promise.all(i)}}class Qr{constructor(e){this.parser=e,this.name=xe.KHR_MATERIALS_EMISSIVE_STRENGTH}extendMaterialParams(e,t){const i=this.parser.json.materials[e];if(!i.extensions||!i.extensions[this.name])return Promise.resolve();const s=i.extensions[this.name].emissiveStrength;return s!==void 0&&(t.emissiveIntensity=s),Promise.resolve()}}class Jr{constructor(e){this.parser=e,this.name=xe.KHR_MATERIALS_CLEARCOAT}getMaterialType(e){const n=this.parser.json.materials[e];return!n.extensions||!n.extensions[this.name]?null:c.MeshPhysicalMaterial}extendMaterialParams(e,t){const n=this.parser,i=n.json.materials[e];if(!i.extensions||!i.extensions[this.name])return Promise.resolve();const s=[],r=i.extensions[this.name];if(r.clearcoatFactor!==void 0&&(t.clearcoat=r.clearcoatFactor),r.clearcoatTexture!==void 0&&s.push(n.assignTexture(t,"clearcoatMap",r.clearcoatTexture)),r.clearcoatRoughnessFactor!==void 0&&(t.clearcoatRoughness=r.clearcoatRoughnessFactor),r.clearcoatRoughnessTexture!==void 0&&s.push(n.assignTexture(t,"clearcoatRoughnessMap",r.clearcoatRoughnessTexture)),r.clearcoatNormalTexture!==void 0&&(s.push(n.assignTexture(t,"clearcoatNormalMap",r.clearcoatNormalTexture)),r.clearcoatNormalTexture.scale!==void 0)){const a=r.clearcoatNormalTexture.scale;t.clearcoatNormalScale=new c.Vector2(a,a)}return Promise.all(s)}}class Hr{constructor(e){this.parser=e,this.name=xe.KHR_MATERIALS_IRIDESCENCE}getMaterialType(e){const n=this.parser.json.materials[e];return!n.extensions||!n.extensions[this.name]?null:c.MeshPhysicalMaterial}extendMaterialParams(e,t){const n=this.parser,i=n.json.materials[e];if(!i.extensions||!i.extensions[this.name])return Promise.resolve();const s=[],r=i.extensions[this.name];return r.iridescenceFactor!==void 0&&(t.iridescence=r.iridescenceFactor),r.iridescenceTexture!==void 0&&s.push(n.assignTexture(t,"iridescenceMap",r.iridescenceTexture)),r.iridescenceIor!==void 0&&(t.iridescenceIOR=r.iridescenceIor),t.iridescenceThicknessRange===void 0&&(t.iridescenceThicknessRange=[100,400]),r.iridescenceThicknessMinimum!==void 0&&(t.iridescenceThicknessRange[0]=r.iridescenceThicknessMinimum),r.iridescenceThicknessMaximum!==void 0&&(t.iridescenceThicknessRange[1]=r.iridescenceThicknessMaximum),r.iridescenceThicknessTexture!==void 0&&s.push(n.assignTexture(t,"iridescenceThicknessMap",r.iridescenceThicknessTexture)),Promise.all(s)}}class $r{constructor(e){this.parser=e,this.name=xe.KHR_MATERIALS_SHEEN}getMaterialType(e){const n=this.parser.json.materials[e];return!n.extensions||!n.extensions[this.name]?null:c.MeshPhysicalMaterial}extendMaterialParams(e,t){const n=this.parser,i=n.json.materials[e];if(!i.extensions||!i.extensions[this.name])return Promise.resolve();const s=[];t.sheenColor=new c.Color(0,0,0),t.sheenRoughness=0,t.sheen=1;const r=i.extensions[this.name];return r.sheenColorFactor!==void 0&&t.sheenColor.fromArray(r.sheenColorFactor),r.sheenRoughnessFactor!==void 0&&(t.sheenRoughness=r.sheenRoughnessFactor),r.sheenColorTexture!==void 0&&s.push(n.assignTexture(t,"sheenColorMap",r.sheenColorTexture,3001)),r.sheenRoughnessTexture!==void 0&&s.push(n.assignTexture(t,"sheenRoughnessMap",r.sheenRoughnessTexture)),Promise.all(s)}}class eo{constructor(e){this.parser=e,this.name=xe.KHR_MATERIALS_TRANSMISSION}getMaterialType(e){const n=this.parser.json.materials[e];return!n.extensions||!n.extensions[this.name]?null:c.MeshPhysicalMaterial}extendMaterialParams(e,t){const n=this.parser,i=n.json.materials[e];if(!i.extensions||!i.extensions[this.name])return Promise.resolve();const s=[],r=i.extensions[this.name];return r.transmissionFactor!==void 0&&(t.transmission=r.transmissionFactor),r.transmissionTexture!==void 0&&s.push(n.assignTexture(t,"transmissionMap",r.transmissionTexture)),Promise.all(s)}}class to{constructor(e){this.parser=e,this.name=xe.KHR_MATERIALS_VOLUME}getMaterialType(e){const n=this.parser.json.materials[e];return!n.extensions||!n.extensions[this.name]?null:c.MeshPhysicalMaterial}extendMaterialParams(e,t){const n=this.parser,i=n.json.materials[e];if(!i.extensions||!i.extensions[this.name])return Promise.resolve();const s=[],r=i.extensions[this.name];t.thickness=r.thicknessFactor!==void 0?r.thicknessFactor:0,r.thicknessTexture!==void 0&&s.push(n.assignTexture(t,"thicknessMap",r.thicknessTexture)),t.attenuationDistance=r.attenuationDistance||1/0;const a=r.attenuationColor||[1,1,1];return t.attenuationColor=new c.Color(a[0],a[1],a[2]),Promise.all(s)}}class no{constructor(e){this.parser=e,this.name=xe.KHR_MATERIALS_IOR}getMaterialType(e){const n=this.parser.json.materials[e];return!n.extensions||!n.extensions[this.name]?null:c.MeshPhysicalMaterial}extendMaterialParams(e,t){const i=this.parser.json.materials[e];if(!i.extensions||!i.extensions[this.name])return Promise.resolve();const s=i.extensions[this.name];return t.ior=s.ior!==void 0?s.ior:1.5,Promise.resolve()}}class io{constructor(e){this.parser=e,this.name=xe.KHR_MATERIALS_SPECULAR}getMaterialType(e){const n=this.parser.json.materials[e];return!n.extensions||!n.extensions[this.name]?null:c.MeshPhysicalMaterial}extendMaterialParams(e,t){const n=this.parser,i=n.json.materials[e];if(!i.extensions||!i.extensions[this.name])return Promise.resolve();const s=[],r=i.extensions[this.name];t.specularIntensity=r.specularFactor!==void 0?r.specularFactor:1,r.specularTexture!==void 0&&s.push(n.assignTexture(t,"specularIntensityMap",r.specularTexture));const a=r.specularColorFactor||[1,1,1];return t.specularColor=new c.Color(a[0],a[1],a[2]),r.specularColorTexture!==void 0&&s.push(n.assignTexture(t,"specularColorMap",r.specularColorTexture,3001)),Promise.all(s)}}class so{constructor(e){this.parser=e,this.name=xe.KHR_MATERIALS_ANISOTROPY}getMaterialType(e){const n=this.parser.json.materials[e];return!n.extensions||!n.extensions[this.name]?null:c.MeshPhysicalMaterial}extendMaterialParams(e,t){const n=this.parser,i=n.json.materials[e];if(!i.extensions||!i.extensions[this.name])return Promise.resolve();const s=[],r=i.extensions[this.name];return r.anisotropyStrength!==void 0&&(t.anisotropy=r.anisotropyStrength),r.anisotropyRotation!==void 0&&(t.anisotropyRotation=r.anisotropyRotation),r.anisotropyTexture!==void 0&&s.push(n.assignTexture(t,"anisotropyMap",r.anisotropyTexture)),Promise.all(s)}}class ro{constructor(e){this.parser=e,this.name=xe.KHR_TEXTURE_BASISU}loadTexture(e){const t=this.parser,n=t.json,i=n.textures[e];if(!i.extensions||!i.extensions[this.name])return null;const s=i.extensions[this.name],r=t.options.ktx2Loader;if(!r){if(n.extensionsRequired&&n.extensionsRequired.indexOf(this.name)>=0)throw new Error("THREE.GLTFLoader: setKTX2Loader must be called before loading KTX2 textures");return null}return t.loadTextureImage(e,s.source,r)}}class oo{constructor(e){this.parser=e,this.name=xe.EXT_TEXTURE_WEBP,this.isSupported=null}loadTexture(e){const t=this.name,n=this.parser,i=n.json,s=i.textures[e];if(!s.extensions||!s.extensions[t])return null;const r=s.extensions[t],a=i.images[r.source];let l=n.textureLoader;if(a.uri){const f=n.options.manager.getHandler(a.uri);f!==null&&(l=f)}return this.detectSupport().then(function(f){if(f)return n.loadTextureImage(e,r.source,l);if(i.extensionsRequired&&i.extensionsRequired.indexOf(t)>=0)throw new Error("THREE.GLTFLoader: WebP required by asset but unsupported.");return n.loadTexture(e)})}detectSupport(){return this.isSupported||(this.isSupported=new Promise(function(e){const t=new Image;t.src="data:image/webp;base64,UklGRiIAAABXRUJQVlA4IBYAAAAwAQCdASoBAAEADsD+JaQAA3AAAAAA",t.onload=t.onerror=function(){e(t.height===1)}})),this.isSupported}}class ao{constructor(e){this.parser=e,this.name=xe.EXT_TEXTURE_AVIF,this.isSupported=null}loadTexture(e){const t=this.name,n=this.parser,i=n.json,s=i.textures[e];if(!s.extensions||!s.extensions[t])return null;const r=s.extensions[t],a=i.images[r.source];let l=n.textureLoader;if(a.uri){const f=n.options.manager.getHandler(a.uri);f!==null&&(l=f)}return this.detectSupport().then(function(f){if(f)return n.loadTextureImage(e,r.source,l);if(i.extensionsRequired&&i.extensionsRequired.indexOf(t)>=0)throw new Error("THREE.GLTFLoader: AVIF required by asset but unsupported.");return n.loadTexture(e)})}detectSupport(){return this.isSupported||(this.isSupported=new Promise(function(e){const t=new Image;t.src="data:image/avif;base64,AAAAIGZ0eXBhdmlmAAAAAGF2aWZtaWYxbWlhZk1BMUIAAADybWV0YQAAAAAAAAAoaGRscgAAAAAAAAAAcGljdAAAAAAAAAAAAAAAAGxpYmF2aWYAAAAADnBpdG0AAAAAAAEAAAAeaWxvYwAAAABEAAABAAEAAAABAAABGgAAABcAAAAoaWluZgAAAAAAAQAAABppbmZlAgAAAAABAABhdjAxQ29sb3IAAAAAamlwcnAAAABLaXBjbwAAABRpc3BlAAAAAAAAAAEAAAABAAAAEHBpeGkAAAAAAwgICAAAAAxhdjFDgQAMAAAAABNjb2xybmNseAACAAIABoAAAAAXaXBtYQAAAAAAAAABAAEEAQKDBAAAAB9tZGF0EgAKCBgABogQEDQgMgkQAAAAB8dSLfI=",t.onload=t.onerror=function(){e(t.height===1)}})),this.isSupported}}class lo{constructor(e){this.name=xe.EXT_MESHOPT_COMPRESSION,this.parser=e}loadBufferView(e){const t=this.parser.json,n=t.bufferViews[e];if(n.extensions&&n.extensions[this.name]){const i=n.extensions[this.name],s=this.parser.getDependency("buffer",i.buffer),r=this.parser.options.meshoptDecoder;if(!r||!r.supported){if(t.extensionsRequired&&t.extensionsRequired.indexOf(this.name)>=0)throw new Error("THREE.GLTFLoader: setMeshoptDecoder must be called before loading compressed files");return null}return s.then(function(a){const l=i.byteOffset||0,f=i.byteLength||0,h=i.count,d=i.byteStride,m=new Uint8Array(a,l,f);return r.decodeGltfBufferAsync?r.decodeGltfBufferAsync(h,d,m,i.mode,i.filter).then(function(y){return y.buffer}):r.ready.then(function(){const y=new ArrayBuffer(h*d);return r.decodeGltfBuffer(new Uint8Array(y),h,d,m,i.mode,i.filter),y})})}else return null}}class co{constructor(e){this.name=xe.EXT_MESH_GPU_INSTANCING,this.parser=e}createNodeMesh(e){const t=this.parser.json,n=t.nodes[e];if(!n.extensions||!n.extensions[this.name]||n.mesh===void 0)return null;const i=t.meshes[n.mesh];for(const f of i.primitives)if(f.mode!==Re.TRIANGLES&&f.mode!==Re.TRIANGLE_STRIP&&f.mode!==Re.TRIANGLE_FAN&&f.mode!==void 0)return null;const r=n.extensions[this.name].attributes,a=[],l={};for(const f in r)a.push(this.parser.getDependency("accessor",r[f]).then(h=>(l[f]=h,l[f])));return a.length<1?null:(a.push(this.parser.createNodeMesh(e)),Promise.all(a).then(f=>{const h=f.pop(),d=h.isGroup?h.children:[h],m=f[0].count,y=[];for(const M of d){const S=new c.Matrix4,v=new c.Vector3,L=new c.Quaternion,I=new c.Vector3(1,1,1),A=new c.InstancedMesh(M.geometry,M.material,m);for(let g=0;g<m;g++)l.TRANSLATION&&v.fromBufferAttribute(l.TRANSLATION,g),l.ROTATION&&L.fromBufferAttribute(l.ROTATION,g),l.SCALE&&I.fromBufferAttribute(l.SCALE,g),A.setMatrixAt(g,S.compose(v,L,I));for(const g in l)g!=="TRANSLATION"&&g!=="ROTATION"&&g!=="SCALE"&&M.geometry.setAttribute(g,l[g]);c.Object3D.prototype.copy.call(A,M),this.parser.assignFinalMaterial(A),y.push(A)}return h.isGroup?(h.clear(),h.add(...y),h):y[0]}))}}const Bi="glTF",Vt=12,Ui={JSON:1313821514,BIN:5130562};class ho{constructor(e){this.name=xe.KHR_BINARY_GLTF,this.content=null,this.body=null;const t=new DataView(e,0,Vt);if(this.header={magic:c.LoaderUtils.decodeText(new Uint8Array(e.slice(0,4))),version:t.getUint32(4,!0),length:t.getUint32(8,!0)},this.header.magic!==Bi)throw new Error("THREE.GLTFLoader: Unsupported glTF-Binary header.");if(this.header.version<2)throw new Error("THREE.GLTFLoader: Legacy binary file detected.");const n=this.header.length-Vt,i=new DataView(e,Vt);let s=0;for(;s<n;){const r=i.getUint32(s,!0);s+=4;const a=i.getUint32(s,!0);if(s+=4,a===Ui.JSON){const l=new Uint8Array(e,Vt+s,r);this.content=c.LoaderUtils.decodeText(l)}else if(a===Ui.BIN){const l=Vt+s;this.body=e.slice(l,l+r)}s+=r}if(this.content===null)throw new Error("THREE.GLTFLoader: JSON content not found.")}}class uo{constructor(e,t){if(!t)throw new Error("THREE.GLTFLoader: No DRACOLoader instance provided.");this.name=xe.KHR_DRACO_MESH_COMPRESSION,this.json=e,this.dracoLoader=t,this.dracoLoader.preload()}decodePrimitive(e,t){const n=this.json,i=this.dracoLoader,s=e.extensions[this.name].bufferView,r=e.extensions[this.name].attributes,a={},l={},f={};for(const h in r){const d=Fn[h]||h.toLowerCase();a[d]=r[h]}for(const h in e.attributes){const d=Fn[h]||h.toLowerCase();if(r[h]!==void 0){const m=n.accessors[e.attributes[h]],y=Ct[m.componentType];f[d]=y.name,l[d]=m.normalized===!0}}return t.getDependency("bufferView",s).then(function(h){return new Promise(function(d){i.decodeDracoFile(h,function(m){for(const y in m.attributes){const M=m.attributes[y],S=l[y];S!==void 0&&(M.normalized=S)}d(m)},a,f)})})}}class fo{constructor(){this.name=xe.KHR_TEXTURE_TRANSFORM}extendTexture(e,t){return(t.texCoord===void 0||t.texCoord===e.channel)&&t.offset===void 0&&t.rotation===void 0&&t.scale===void 0||(e=e.clone(),t.texCoord!==void 0&&(e.channel=t.texCoord),t.offset!==void 0&&e.offset.fromArray(t.offset),t.rotation!==void 0&&(e.rotation=t.rotation),t.scale!==void 0&&e.repeat.fromArray(t.scale),e.needsUpdate=!0),e}}class po{constructor(){this.name=xe.KHR_MESH_QUANTIZATION}}class Ni extends c.Interpolant{constructor(e,t,n,i){super(e,t,n,i)}copySampleValue_(e){const t=this.resultBuffer,n=this.sampleValues,i=this.valueSize,s=e*i*3+i;for(let r=0;r!==i;r++)t[r]=n[s+r];return t}interpolate_(e,t,n,i){const s=this.resultBuffer,r=this.sampleValues,a=this.valueSize,l=a*2,f=a*3,h=i-t,d=(n-t)/h,m=d*d,y=m*d,M=e*f,S=M-f,v=-2*y+3*m,L=y-m,I=1-v,A=L-m+d;for(let g=0;g!==a;g++){const O=r[S+g+a],x=r[S+g+l]*h,C=r[M+g+a],p=r[M+g]*h;s[g]=I*O+A*x+v*C+L*p}return s}}const mo=new c.Quaternion;class go extends Ni{interpolate_(e,t,n,i){const s=super.interpolate_(e,t,n,i);return mo.fromArray(s).normalize().toArray(s),s}}const Re={FLOAT:5126,FLOAT_MAT3:35675,FLOAT_MAT4:35676,FLOAT_VEC2:35664,FLOAT_VEC3:35665,FLOAT_VEC4:35666,LINEAR:9729,REPEAT:10497,SAMPLER_2D:35678,POINTS:0,LINES:1,LINE_LOOP:2,LINE_STRIP:3,TRIANGLES:4,TRIANGLE_STRIP:5,TRIANGLE_FAN:6,UNSIGNED_BYTE:5121,UNSIGNED_SHORT:5123},Ct={5120:Int8Array,5121:Uint8Array,5122:Int16Array,5123:Uint16Array,5125:Uint32Array,5126:Float32Array},zi={9728:c.NearestFilter,9729:c.LinearFilter,9984:c.NearestMipmapNearestFilter,9985:c.LinearMipmapNearestFilter,9986:c.NearestMipmapLinearFilter,9987:c.LinearMipmapLinearFilter},Vi={33071:c.ClampToEdgeWrapping,33648:c.MirroredRepeatWrapping,10497:c.RepeatWrapping},kn={SCALAR:1,VEC2:2,VEC3:3,VEC4:4,MAT2:4,MAT3:9,MAT4:16},Fn={POSITION:"position",NORMAL:"normal",TANGENT:"tangent",...yr>=152?{TEXCOORD_0:"uv",TEXCOORD_1:"uv1",TEXCOORD_2:"uv2",TEXCOORD_3:"uv3"}:{TEXCOORD_0:"uv",TEXCOORD_1:"uv2"},COLOR_0:"color",WEIGHTS_0:"skinWeight",JOINTS_0:"skinIndex"},ht={scale:"scale",translation:"position",rotation:"quaternion",weights:"morphTargetInfluences"},yo={CUBICSPLINE:void 0,LINEAR:c.InterpolateLinear,STEP:c.InterpolateDiscrete},Bn={OPAQUE:"OPAQUE",MASK:"MASK",BLEND:"BLEND"};function _o(o){return o.DefaultMaterial===void 0&&(o.DefaultMaterial=new c.MeshStandardMaterial({color:16777215,emissive:0,metalness:1,roughness:1,transparent:!1,depthTest:!0,side:c.FrontSide})),o.DefaultMaterial}function _t(o,e,t){for(const n in t.extensions)o[n]===void 0&&(e.userData.gltfExtensions=e.userData.gltfExtensions||{},e.userData.gltfExtensions[n]=t.extensions[n])}function ut(o,e){e.extras!==void 0&&(typeof e.extras=="object"?Object.assign(o.userData,e.extras):console.warn("THREE.GLTFLoader: Ignoring primitive type .extras, "+e.extras))}function vo(o,e,t){let n=!1,i=!1,s=!1;for(let f=0,h=e.length;f<h;f++){const d=e[f];if(d.POSITION!==void 0&&(n=!0),d.NORMAL!==void 0&&(i=!0),d.COLOR_0!==void 0&&(s=!0),n&&i&&s)break}if(!n&&!i&&!s)return Promise.resolve(o);const r=[],a=[],l=[];for(let f=0,h=e.length;f<h;f++){const d=e[f];if(n){const m=d.POSITION!==void 0?t.getDependency("accessor",d.POSITION):o.attributes.position;r.push(m)}if(i){const m=d.NORMAL!==void 0?t.getDependency("accessor",d.NORMAL):o.attributes.normal;a.push(m)}if(s){const m=d.COLOR_0!==void 0?t.getDependency("accessor",d.COLOR_0):o.attributes.color;l.push(m)}}return Promise.all([Promise.all(r),Promise.all(a),Promise.all(l)]).then(function(f){const h=f[0],d=f[1],m=f[2];return n&&(o.morphAttributes.position=h),i&&(o.morphAttributes.normal=d),s&&(o.morphAttributes.color=m),o.morphTargetsRelative=!0,o})}function wo(o,e){if(o.updateMorphTargets(),e.weights!==void 0)for(let t=0,n=e.weights.length;t<n;t++)o.morphTargetInfluences[t]=e.weights[t];if(e.extras&&Array.isArray(e.extras.targetNames)){const t=e.extras.targetNames;if(o.morphTargetInfluences.length===t.length){o.morphTargetDictionary={};for(let n=0,i=t.length;n<i;n++)o.morphTargetDictionary[t[n]]=n}else console.warn("THREE.GLTFLoader: Invalid extras.targetNames length. Ignoring names.")}}function xo(o){let e;const t=o.extensions&&o.extensions[xe.KHR_DRACO_MESH_COMPRESSION];if(t?e="draco:"+t.bufferView+":"+t.indices+":"+Un(t.attributes):e=o.indices+":"+Un(o.attributes)+":"+o.mode,o.targets!==void 0)for(let n=0,i=o.targets.length;n<i;n++)e+=":"+Un(o.targets[n]);return e}function Un(o){let e="";const t=Object.keys(o).sort();for(let n=0,i=t.length;n<i;n++)e+=t[n]+":"+o[t[n]]+";";return e}function Nn(o){switch(o){case Int8Array:return 1/127;case Uint8Array:return 1/255;case Int16Array:return 1/32767;case Uint16Array:return 1/65535;default:throw new Error("THREE.GLTFLoader: Unsupported normalized accessor component type.")}}function bo(o){return o.search(/\.jpe?g($|\?)/i)>0||o.search(/^data\:image\/jpeg/)===0?"image/jpeg":o.search(/\.webp($|\?)/i)>0||o.search(/^data\:image\/webp/)===0?"image/webp":"image/png"}const Mo=new c.Matrix4;class So{constructor(e={},t={}){this.json=e,this.extensions={},this.plugins={},this.options=t,this.cache=new Zr,this.associations=new Map,this.primitiveCache={},this.nodeCache={},this.meshCache={refs:{},uses:{}},this.cameraCache={refs:{},uses:{}},this.lightCache={refs:{},uses:{}},this.sourceCache={},this.textureCache={},this.nodeNamesUsed={};let n=!1,i=!1,s=-1;typeof navigator<"u"&&typeof navigator.userAgent<"u"&&(n=/^((?!chrome|android).)*safari/i.test(navigator.userAgent)===!0,i=navigator.userAgent.indexOf("Firefox")>-1,s=i?navigator.userAgent.match(/Firefox\/([0-9]+)\./)[1]:-1),typeof createImageBitmap>"u"||n||i&&s<98?this.textureLoader=new c.TextureLoader(this.options.manager):this.textureLoader=new c.ImageBitmapLoader(this.options.manager),this.textureLoader.setCrossOrigin(this.options.crossOrigin),this.textureLoader.setRequestHeader(this.options.requestHeader),this.fileLoader=new c.FileLoader(this.options.manager),this.fileLoader.setResponseType("arraybuffer"),this.options.crossOrigin==="use-credentials"&&this.fileLoader.setWithCredentials(!0)}setExtensions(e){this.extensions=e}setPlugins(e){this.plugins=e}parse(e,t){const n=this,i=this.json,s=this.extensions;this.cache.removeAll(),this.nodeCache={},this._invokeAll(function(r){return r._markDefs&&r._markDefs()}),Promise.all(this._invokeAll(function(r){return r.beforeRoot&&r.beforeRoot()})).then(function(){return Promise.all([n.getDependencies("scene"),n.getDependencies("animation"),n.getDependencies("camera")])}).then(function(r){const a={scene:r[0][i.scene||0],scenes:r[0],animations:r[1],cameras:r[2],asset:i.asset,parser:n,userData:{}};_t(s,a,i),ut(a,i),Promise.all(n._invokeAll(function(l){return l.afterRoot&&l.afterRoot(a)})).then(function(){e(a)})}).catch(t)}_markDefs(){const e=this.json.nodes||[],t=this.json.skins||[],n=this.json.meshes||[];for(let i=0,s=t.length;i<s;i++){const r=t[i].joints;for(let a=0,l=r.length;a<l;a++)e[r[a]].isBone=!0}for(let i=0,s=e.length;i<s;i++){const r=e[i];r.mesh!==void 0&&(this._addNodeRef(this.meshCache,r.mesh),r.skin!==void 0&&(n[r.mesh].isSkinnedMesh=!0)),r.camera!==void 0&&this._addNodeRef(this.cameraCache,r.camera)}}_addNodeRef(e,t){t!==void 0&&(e.refs[t]===void 0&&(e.refs[t]=e.uses[t]=0),e.refs[t]++)}_getNodeRef(e,t,n){if(e.refs[t]<=1)return n;const i=n.clone(),s=(r,a)=>{const l=this.associations.get(r);l!=null&&this.associations.set(a,l);for(const[f,h]of r.children.entries())s(h,a.children[f])};return s(n,i),i.name+="_instance_"+e.uses[t]++,i}_invokeOne(e){const t=Object.values(this.plugins);t.push(this);for(let n=0;n<t.length;n++){const i=e(t[n]);if(i)return i}return null}_invokeAll(e){const t=Object.values(this.plugins);t.unshift(this);const n=[];for(let i=0;i<t.length;i++){const s=e(t[i]);s&&n.push(s)}return n}getDependency(e,t){const n=e+":"+t;let i=this.cache.get(n);if(!i){switch(e){case"scene":i=this.loadScene(t);break;case"node":i=this._invokeOne(function(s){return s.loadNode&&s.loadNode(t)});break;case"mesh":i=this._invokeOne(function(s){return s.loadMesh&&s.loadMesh(t)});break;case"accessor":i=this.loadAccessor(t);break;case"bufferView":i=this._invokeOne(function(s){return s.loadBufferView&&s.loadBufferView(t)});break;case"buffer":i=this.loadBuffer(t);break;case"material":i=this._invokeOne(function(s){return s.loadMaterial&&s.loadMaterial(t)});break;case"texture":i=this._invokeOne(function(s){return s.loadTexture&&s.loadTexture(t)});break;case"skin":i=this.loadSkin(t);break;case"animation":i=this._invokeOne(function(s){return s.loadAnimation&&s.loadAnimation(t)});break;case"camera":i=this.loadCamera(t);break;default:if(i=this._invokeOne(function(s){return s!=this&&s.getDependency&&s.getDependency(e,t)}),!i)throw new Error("Unknown type: "+e);break}this.cache.add(n,i)}return i}getDependencies(e){let t=this.cache.get(e);if(!t){const n=this,i=this.json[e+(e==="mesh"?"es":"s")]||[];t=Promise.all(i.map(function(s,r){return n.getDependency(e,r)})),this.cache.add(e,t)}return t}loadBuffer(e){const t=this.json.buffers[e],n=this.fileLoader;if(t.type&&t.type!=="arraybuffer")throw new Error("THREE.GLTFLoader: "+t.type+" buffer type is not supported.");if(t.uri===void 0&&e===0)return Promise.resolve(this.extensions[xe.KHR_BINARY_GLTF].body);const i=this.options;return new Promise(function(s,r){n.load(c.LoaderUtils.resolveURL(t.uri,i.path),s,void 0,function(){r(new Error('THREE.GLTFLoader: Failed to load buffer "'+t.uri+'".'))})})}loadBufferView(e){const t=this.json.bufferViews[e];return this.getDependency("buffer",t.buffer).then(function(n){const i=t.byteLength||0,s=t.byteOffset||0;return n.slice(s,s+i)})}loadAccessor(e){const t=this,n=this.json,i=this.json.accessors[e];if(i.bufferView===void 0&&i.sparse===void 0){const r=kn[i.type],a=Ct[i.componentType],l=i.normalized===!0,f=new a(i.count*r);return Promise.resolve(new c.BufferAttribute(f,r,l))}const s=[];return i.bufferView!==void 0?s.push(this.getDependency("bufferView",i.bufferView)):s.push(null),i.sparse!==void 0&&(s.push(this.getDependency("bufferView",i.sparse.indices.bufferView)),s.push(this.getDependency("bufferView",i.sparse.values.bufferView))),Promise.all(s).then(function(r){const a=r[0],l=kn[i.type],f=Ct[i.componentType],h=f.BYTES_PER_ELEMENT,d=h*l,m=i.byteOffset||0,y=i.bufferView!==void 0?n.bufferViews[i.bufferView].byteStride:void 0,M=i.normalized===!0;let S,v;if(y&&y!==d){const L=Math.floor(m/y),I="InterleavedBuffer:"+i.bufferView+":"+i.componentType+":"+L+":"+i.count;let A=t.cache.get(I);A||(S=new f(a,L*y,i.count*y/h),A=new c.InterleavedBuffer(S,y/h),t.cache.add(I,A)),v=new c.InterleavedBufferAttribute(A,l,m%y/h,M)}else a===null?S=new f(i.count*l):S=new f(a,m,i.count*l),v=new c.BufferAttribute(S,l,M);if(i.sparse!==void 0){const L=kn.SCALAR,I=Ct[i.sparse.indices.componentType],A=i.sparse.indices.byteOffset||0,g=i.sparse.values.byteOffset||0,O=new I(r[1],A,i.sparse.count*L),x=new f(r[2],g,i.sparse.count*l);a!==null&&(v=new c.BufferAttribute(v.array.slice(),v.itemSize,v.normalized));for(let C=0,p=O.length;C<p;C++){const w=O[C];if(v.setX(w,x[C*l]),l>=2&&v.setY(w,x[C*l+1]),l>=3&&v.setZ(w,x[C*l+2]),l>=4&&v.setW(w,x[C*l+3]),l>=5)throw new Error("THREE.GLTFLoader: Unsupported itemSize in sparse BufferAttribute.")}}return v})}loadTexture(e){const t=this.json,n=this.options,s=t.textures[e].source,r=t.images[s];let a=this.textureLoader;if(r.uri){const l=n.manager.getHandler(r.uri);l!==null&&(a=l)}return this.loadTextureImage(e,s,a)}loadTextureImage(e,t,n){const i=this,s=this.json,r=s.textures[e],a=s.images[t],l=(a.uri||a.bufferView)+":"+r.sampler;if(this.textureCache[l])return this.textureCache[l];const f=this.loadImageSource(t,n).then(function(h){h.flipY=!1,h.name=r.name||a.name||"",h.name===""&&typeof a.uri=="string"&&a.uri.startsWith("data:image/")===!1&&(h.name=a.uri);const m=(s.samplers||{})[r.sampler]||{};return h.magFilter=zi[m.magFilter]||c.LinearFilter,h.minFilter=zi[m.minFilter]||c.LinearMipmapLinearFilter,h.wrapS=Vi[m.wrapS]||c.RepeatWrapping,h.wrapT=Vi[m.wrapT]||c.RepeatWrapping,i.associations.set(h,{textures:e}),h}).catch(function(){return null});return this.textureCache[l]=f,f}loadImageSource(e,t){const n=this,i=this.json,s=this.options;if(this.sourceCache[e]!==void 0)return this.sourceCache[e].then(d=>d.clone());const r=i.images[e],a=self.URL||self.webkitURL;let l=r.uri||"",f=!1;if(r.bufferView!==void 0)l=n.getDependency("bufferView",r.bufferView).then(function(d){f=!0;const m=new Blob([d],{type:r.mimeType});return l=a.createObjectURL(m),l});else if(r.uri===void 0)throw new Error("THREE.GLTFLoader: Image "+e+" is missing URI and bufferView");const h=Promise.resolve(l).then(function(d){return new Promise(function(m,y){let M=m;t.isImageBitmapLoader===!0&&(M=function(S){const v=new c.Texture(S);v.needsUpdate=!0,m(v)}),t.load(c.LoaderUtils.resolveURL(d,s.path),M,void 0,y)})}).then(function(d){return f===!0&&a.revokeObjectURL(l),d.userData.mimeType=r.mimeType||bo(r.uri),d}).catch(function(d){throw console.error("THREE.GLTFLoader: Couldn't load texture",l),d});return this.sourceCache[e]=h,h}assignTexture(e,t,n,i){const s=this;return this.getDependency("texture",n.index).then(function(r){if(!r)return null;if(n.texCoord!==void 0&&n.texCoord>0&&(r=r.clone(),r.channel=n.texCoord),s.extensions[xe.KHR_TEXTURE_TRANSFORM]){const a=n.extensions!==void 0?n.extensions[xe.KHR_TEXTURE_TRANSFORM]:void 0;if(a){const l=s.associations.get(r);r=s.extensions[xe.KHR_TEXTURE_TRANSFORM].extendTexture(r,a),s.associations.set(r,l)}}return i!==void 0&&("colorSpace"in r?r.colorSpace=i===3001?"srgb":"srgb-linear":r.encoding=i),e[t]=r,r})}assignFinalMaterial(e){const t=e.geometry;let n=e.material;const i=t.attributes.tangent===void 0,s=t.attributes.color!==void 0,r=t.attributes.normal===void 0;if(e.isPoints){const a="PointsMaterial:"+n.uuid;let l=this.cache.get(a);l||(l=new c.PointsMaterial,c.Material.prototype.copy.call(l,n),l.color.copy(n.color),l.map=n.map,l.sizeAttenuation=!1,this.cache.add(a,l)),n=l}else if(e.isLine){const a="LineBasicMaterial:"+n.uuid;let l=this.cache.get(a);l||(l=new c.LineBasicMaterial,c.Material.prototype.copy.call(l,n),l.color.copy(n.color),l.map=n.map,this.cache.add(a,l)),n=l}if(i||s||r){let a="ClonedMaterial:"+n.uuid+":";i&&(a+="derivative-tangents:"),s&&(a+="vertex-colors:"),r&&(a+="flat-shading:");let l=this.cache.get(a);l||(l=n.clone(),s&&(l.vertexColors=!0),r&&(l.flatShading=!0),i&&(l.normalScale&&(l.normalScale.y*=-1),l.clearcoatNormalScale&&(l.clearcoatNormalScale.y*=-1)),this.cache.add(a,l),this.associations.set(l,this.associations.get(n))),n=l}e.material=n}getMaterialType(){return c.MeshStandardMaterial}loadMaterial(e){const t=this,n=this.json,i=this.extensions,s=n.materials[e];let r;const a={},l=s.extensions||{},f=[];if(l[xe.KHR_MATERIALS_UNLIT]){const d=i[xe.KHR_MATERIALS_UNLIT];r=d.getMaterialType(),f.push(d.extendParams(a,s,t))}else{const d=s.pbrMetallicRoughness||{};if(a.color=new c.Color(1,1,1),a.opacity=1,Array.isArray(d.baseColorFactor)){const m=d.baseColorFactor;a.color.fromArray(m),a.opacity=m[3]}d.baseColorTexture!==void 0&&f.push(t.assignTexture(a,"map",d.baseColorTexture,3001)),a.metalness=d.metallicFactor!==void 0?d.metallicFactor:1,a.roughness=d.roughnessFactor!==void 0?d.roughnessFactor:1,d.metallicRoughnessTexture!==void 0&&(f.push(t.assignTexture(a,"metalnessMap",d.metallicRoughnessTexture)),f.push(t.assignTexture(a,"roughnessMap",d.metallicRoughnessTexture))),r=this._invokeOne(function(m){return m.getMaterialType&&m.getMaterialType(e)}),f.push(Promise.all(this._invokeAll(function(m){return m.extendMaterialParams&&m.extendMaterialParams(e,a)})))}s.doubleSided===!0&&(a.side=c.DoubleSide);const h=s.alphaMode||Bn.OPAQUE;if(h===Bn.BLEND?(a.transparent=!0,a.depthWrite=!1):(a.transparent=!1,h===Bn.MASK&&(a.alphaTest=s.alphaCutoff!==void 0?s.alphaCutoff:.5)),s.normalTexture!==void 0&&r!==c.MeshBasicMaterial&&(f.push(t.assignTexture(a,"normalMap",s.normalTexture)),a.normalScale=new c.Vector2(1,1),s.normalTexture.scale!==void 0)){const d=s.normalTexture.scale;a.normalScale.set(d,d)}return s.occlusionTexture!==void 0&&r!==c.MeshBasicMaterial&&(f.push(t.assignTexture(a,"aoMap",s.occlusionTexture)),s.occlusionTexture.strength!==void 0&&(a.aoMapIntensity=s.occlusionTexture.strength)),s.emissiveFactor!==void 0&&r!==c.MeshBasicMaterial&&(a.emissive=new c.Color().fromArray(s.emissiveFactor)),s.emissiveTexture!==void 0&&r!==c.MeshBasicMaterial&&f.push(t.assignTexture(a,"emissiveMap",s.emissiveTexture,3001)),Promise.all(f).then(function(){const d=new r(a);return s.name&&(d.name=s.name),ut(d,s),t.associations.set(d,{materials:e}),s.extensions&&_t(i,d,s),d})}createUniqueName(e){const t=c.PropertyBinding.sanitizeNodeName(e||"");return t in this.nodeNamesUsed?t+"_"+ ++this.nodeNamesUsed[t]:(this.nodeNamesUsed[t]=0,t)}loadGeometries(e){const t=this,n=this.extensions,i=this.primitiveCache;function s(a){return n[xe.KHR_DRACO_MESH_COMPRESSION].decodePrimitive(a,t).then(function(l){return ji(l,a,t)})}const r=[];for(let a=0,l=e.length;a<l;a++){const f=e[a],h=xo(f),d=i[h];if(d)r.push(d.promise);else{let m;f.extensions&&f.extensions[xe.KHR_DRACO_MESH_COMPRESSION]?m=s(f):m=ji(new c.BufferGeometry,f,t),i[h]={primitive:f,promise:m},r.push(m)}}return Promise.all(r)}loadMesh(e){const t=this,n=this.json,i=this.extensions,s=n.meshes[e],r=s.primitives,a=[];for(let l=0,f=r.length;l<f;l++){const h=r[l].material===void 0?_o(this.cache):this.getDependency("material",r[l].material);a.push(h)}return a.push(t.loadGeometries(r)),Promise.all(a).then(function(l){const f=l.slice(0,l.length-1),h=l[l.length-1],d=[];for(let y=0,M=h.length;y<M;y++){const S=h[y],v=r[y];let L;const I=f[y];if(v.mode===Re.TRIANGLES||v.mode===Re.TRIANGLE_STRIP||v.mode===Re.TRIANGLE_FAN||v.mode===void 0)L=s.isSkinnedMesh===!0?new c.SkinnedMesh(S,I):new c.Mesh(S,I),L.isSkinnedMesh===!0&&L.normalizeSkinWeights(),v.mode===Re.TRIANGLE_STRIP?L.geometry=Si(L.geometry,c.TriangleStripDrawMode):v.mode===Re.TRIANGLE_FAN&&(L.geometry=Si(L.geometry,c.TriangleFanDrawMode));else if(v.mode===Re.LINES)L=new c.LineSegments(S,I);else if(v.mode===Re.LINE_STRIP)L=new c.Line(S,I);else if(v.mode===Re.LINE_LOOP)L=new c.LineLoop(S,I);else if(v.mode===Re.POINTS)L=new c.Points(S,I);else throw new Error("THREE.GLTFLoader: Primitive mode unsupported: "+v.mode);Object.keys(L.geometry.morphAttributes).length>0&&wo(L,s),L.name=t.createUniqueName(s.name||"mesh_"+e),ut(L,s),v.extensions&&_t(i,L,v),t.assignFinalMaterial(L),d.push(L)}for(let y=0,M=d.length;y<M;y++)t.associations.set(d[y],{meshes:e,primitives:y});if(d.length===1)return s.extensions&&_t(i,d[0],s),d[0];const m=new c.Group;s.extensions&&_t(i,m,s),t.associations.set(m,{meshes:e});for(let y=0,M=d.length;y<M;y++)m.add(d[y]);return m})}loadCamera(e){let t;const n=this.json.cameras[e],i=n[n.type];if(!i){console.warn("THREE.GLTFLoader: Missing camera parameters.");return}return n.type==="perspective"?t=new c.PerspectiveCamera(c.MathUtils.radToDeg(i.yfov),i.aspectRatio||1,i.znear||1,i.zfar||2e6):n.type==="orthographic"&&(t=new c.OrthographicCamera(-i.xmag,i.xmag,i.ymag,-i.ymag,i.znear,i.zfar)),n.name&&(t.name=this.createUniqueName(n.name)),ut(t,n),Promise.resolve(t)}loadSkin(e){const t=this.json.skins[e],n=[];for(let i=0,s=t.joints.length;i<s;i++)n.push(this._loadNodeShallow(t.joints[i]));return t.inverseBindMatrices!==void 0?n.push(this.getDependency("accessor",t.inverseBindMatrices)):n.push(null),Promise.all(n).then(function(i){const s=i.pop(),r=i,a=[],l=[];for(let f=0,h=r.length;f<h;f++){const d=r[f];if(d){a.push(d);const m=new c.Matrix4;s!==null&&m.fromArray(s.array,f*16),l.push(m)}else console.warn('THREE.GLTFLoader: Joint "%s" could not be found.',t.joints[f])}return new c.Skeleton(a,l)})}loadAnimation(e){const n=this.json.animations[e],i=n.name?n.name:"animation_"+e,s=[],r=[],a=[],l=[],f=[];for(let h=0,d=n.channels.length;h<d;h++){const m=n.channels[h],y=n.samplers[m.sampler],M=m.target,S=M.node,v=n.parameters!==void 0?n.parameters[y.input]:y.input,L=n.parameters!==void 0?n.parameters[y.output]:y.output;M.node!==void 0&&(s.push(this.getDependency("node",S)),r.push(this.getDependency("accessor",v)),a.push(this.getDependency("accessor",L)),l.push(y),f.push(M))}return Promise.all([Promise.all(s),Promise.all(r),Promise.all(a),Promise.all(l),Promise.all(f)]).then(function(h){const d=h[0],m=h[1],y=h[2],M=h[3],S=h[4],v=[];for(let L=0,I=d.length;L<I;L++){const A=d[L],g=m[L],O=y[L],x=M[L],C=S[L];if(A===void 0)continue;A.updateMatrix();let p;switch(ht[C.path]){case ht.weights:p=c.NumberKeyframeTrack;break;case ht.rotation:p=c.QuaternionKeyframeTrack;break;case ht.position:case ht.scale:default:p=c.VectorKeyframeTrack;break}const w=A.name?A.name:A.uuid,_=x.interpolation!==void 0?yo[x.interpolation]:c.InterpolateLinear,T=[];ht[C.path]===ht.weights?A.traverse(function(J){J.morphTargetInfluences&&T.push(J.name?J.name:J.uuid)}):T.push(w);let F=O.array;if(O.normalized){const J=Nn(F.constructor),X=new Float32Array(F.length);for(let ee=0,$=F.length;ee<$;ee++)X[ee]=F[ee]*J;F=X}for(let J=0,X=T.length;J<X;J++){const ee=new p(T[J]+"."+ht[C.path],g.array,F,_);x.interpolation==="CUBICSPLINE"&&(ee.createInterpolant=function(q){const Z=this instanceof c.QuaternionKeyframeTrack?go:Ni;return new Z(this.times,this.values,this.getValueSize()/3,q)},ee.createInterpolant.isInterpolantFactoryMethodGLTFCubicSpline=!0),v.push(ee)}}return new c.AnimationClip(i,void 0,v)})}createNodeMesh(e){const t=this.json,n=this,i=t.nodes[e];return i.mesh===void 0?null:n.getDependency("mesh",i.mesh).then(function(s){const r=n._getNodeRef(n.meshCache,i.mesh,s);return i.weights!==void 0&&r.traverse(function(a){if(a.isMesh)for(let l=0,f=i.weights.length;l<f;l++)a.morphTargetInfluences[l]=i.weights[l]}),r})}loadNode(e){const t=this.json,n=this,i=t.nodes[e],s=n._loadNodeShallow(e),r=[],a=i.children||[];for(let f=0,h=a.length;f<h;f++)r.push(n.getDependency("node",a[f]));const l=i.skin===void 0?Promise.resolve(null):n.getDependency("skin",i.skin);return Promise.all([s,Promise.all(r),l]).then(function(f){const h=f[0],d=f[1],m=f[2];m!==null&&h.traverse(function(y){y.isSkinnedMesh&&y.bind(m,Mo)});for(let y=0,M=d.length;y<M;y++)h.add(d[y]);return h})}_loadNodeShallow(e){const t=this.json,n=this.extensions,i=this;if(this.nodeCache[e]!==void 0)return this.nodeCache[e];const s=t.nodes[e],r=s.name?i.createUniqueName(s.name):"",a=[],l=i._invokeOne(function(f){return f.createNodeMesh&&f.createNodeMesh(e)});return l&&a.push(l),s.camera!==void 0&&a.push(i.getDependency("camera",s.camera).then(function(f){return i._getNodeRef(i.cameraCache,s.camera,f)})),i._invokeAll(function(f){return f.createNodeAttachment&&f.createNodeAttachment(e)}).forEach(function(f){a.push(f)}),this.nodeCache[e]=Promise.all(a).then(function(f){let h;if(s.isBone===!0?h=new c.Bone:f.length>1?h=new c.Group:f.length===1?h=f[0]:h=new c.Object3D,h!==f[0])for(let d=0,m=f.length;d<m;d++)h.add(f[d]);if(s.name&&(h.userData.name=s.name,h.name=r),ut(h,s),s.extensions&&_t(n,h,s),s.matrix!==void 0){const d=new c.Matrix4;d.fromArray(s.matrix),h.applyMatrix4(d)}else s.translation!==void 0&&h.position.fromArray(s.translation),s.rotation!==void 0&&h.quaternion.fromArray(s.rotation),s.scale!==void 0&&h.scale.fromArray(s.scale);return i.associations.has(h)||i.associations.set(h,{}),i.associations.get(h).nodes=e,h}),this.nodeCache[e]}loadScene(e){const t=this.extensions,n=this.json.scenes[e],i=this,s=new c.Group;n.name&&(s.name=i.createUniqueName(n.name)),ut(s,n),n.extensions&&_t(t,s,n);const r=n.nodes||[],a=[];for(let l=0,f=r.length;l<f;l++)a.push(i.getDependency("node",r[l]));return Promise.all(a).then(function(l){for(let h=0,d=l.length;h<d;h++)s.add(l[h]);const f=h=>{const d=new Map;for(const[m,y]of i.associations)(m instanceof c.Material||m instanceof c.Texture)&&d.set(m,y);return h.traverse(m=>{const y=i.associations.get(m);y!=null&&d.set(m,y)}),d};return i.associations=f(s),s})}}function Ao(o,e,t){const n=e.attributes,i=new c.Box3;if(n.POSITION!==void 0){const a=t.json.accessors[n.POSITION],l=a.min,f=a.max;if(l!==void 0&&f!==void 0){if(i.set(new c.Vector3(l[0],l[1],l[2]),new c.Vector3(f[0],f[1],f[2])),a.normalized){const h=Nn(Ct[a.componentType]);i.min.multiplyScalar(h),i.max.multiplyScalar(h)}}else{console.warn("THREE.GLTFLoader: Missing min/max properties for accessor POSITION.");return}}else return;const s=e.targets;if(s!==void 0){const a=new c.Vector3,l=new c.Vector3;for(let f=0,h=s.length;f<h;f++){const d=s[f];if(d.POSITION!==void 0){const m=t.json.accessors[d.POSITION],y=m.min,M=m.max;if(y!==void 0&&M!==void 0){if(l.setX(Math.max(Math.abs(y[0]),Math.abs(M[0]))),l.setY(Math.max(Math.abs(y[1]),Math.abs(M[1]))),l.setZ(Math.max(Math.abs(y[2]),Math.abs(M[2]))),m.normalized){const S=Nn(Ct[m.componentType]);l.multiplyScalar(S)}a.max(l)}else console.warn("THREE.GLTFLoader: Missing min/max properties for accessor POSITION.")}}i.expandByVector(a)}o.boundingBox=i;const r=new c.Sphere;i.getCenter(r.center),r.radius=i.min.distanceTo(i.max)/2,o.boundingSphere=r}function ji(o,e,t){const n=e.attributes,i=[];function s(r,a){return t.getDependency("accessor",r).then(function(l){o.setAttribute(a,l)})}for(const r in n){const a=Fn[r]||r.toLowerCase();a in o.attributes||i.push(s(n[r],a))}if(e.indices!==void 0&&!o.index){const r=t.getDependency("accessor",e.indices).then(function(a){o.setIndex(a)});i.push(r)}return ut(o,e),Ao(o,e,t),Promise.all(i).then(function(){return e.targets!==void 0?vo(o,e.targets,t):o})}class Gi extends c.ExtrudeGeometry{constructor(e,t={}){const{bevelEnabled:n=!1,bevelSize:i=8,bevelThickness:s=10,font:r,height:a=50,size:l=100,lineHeight:f=1,letterSpacing:h=0,...d}=t;if(r===void 0)super();else{const m=r.generateShapes(e,l,{lineHeight:f,letterSpacing:h});super(m,{...d,bevelEnabled:n,bevelSize:i,bevelThickness:s,depth:a})}this.type="TextGeometry"}}const Po={uniforms:{tDiffuse:{value:null},h:{value:1/512}},vertexShader:`
|
|
8
|
+
(function(re,c){typeof exports=="object"&&typeof module<"u"?c(exports,require("three"),require("vue"),require("@tresjs/core"),require("tweakpane")):typeof define=="function"&&define.amd?define(["exports","three","vue","@tresjs/core","tweakpane"],c):(re=typeof globalThis<"u"?globalThis:re||self,c(re.trescientos={},re.Three,re.Vue,re.TresjsCore,re.tweakpane))})(this,function(re,c,h,ae,xs){"use strict";var Hu=Object.defineProperty;var $u=(re,c,h)=>c in re?Hu(re,c,{enumerable:!0,configurable:!0,writable:!0,value:h}):re[c]=h;var ye=(re,c,h)=>($u(re,typeof c!="symbol"?c+"":c,h),h);function bs(o){const e=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(o){for(const t in o)if(t!=="default"){const n=Object.getOwnPropertyDescriptor(o,t);Object.defineProperty(e,t,n.get?n:{enumerable:!0,get:()=>o[t]})}}return e.default=o,Object.freeze(e)}const Pi=bs(c);function Ci(o,e){if(e===c.TrianglesDrawMode)return console.warn("THREE.BufferGeometryUtils.toTrianglesDrawMode(): Geometry already defined as triangles."),o;if(e===c.TriangleFanDrawMode||e===c.TriangleStripDrawMode){let t=o.getIndex();if(t===null){const s=[],a=o.getAttribute("position");if(a!==void 0){for(let l=0;l<a.count;l++)s.push(l);o.setIndex(s),t=o.getIndex()}else return console.error("THREE.BufferGeometryUtils.toTrianglesDrawMode(): Undefined position attribute. Processing not possible."),o}const n=t.count-2,i=[];if(t)if(e===c.TriangleFanDrawMode)for(let s=1;s<=n;s++)i.push(t.getX(0)),i.push(t.getX(s)),i.push(t.getX(s+1));else for(let s=0;s<n;s++)s%2===0?(i.push(t.getX(s)),i.push(t.getX(s+1)),i.push(t.getX(s+2))):(i.push(t.getX(s+2)),i.push(t.getX(s+1)),i.push(t.getX(s)));i.length/3!==n&&console.error("THREE.BufferGeometryUtils.toTrianglesDrawMode(): Unable to generate correct amount of triangles.");const r=o.clone();return r.setIndex(i),r.clearGroups(),r}else return console.error("THREE.BufferGeometryUtils.toTrianglesDrawMode(): Unknown draw mode:",e),o}const Ms=parseInt(c.REVISION.replace(/\D+/g,""));var Ee=Uint8Array,ct=Uint16Array,In=Uint32Array,Li=new Ee([0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0,0,0,0]),Ti=new Ee([0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13,0,0]),As=new Ee([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),Oi=function(o,e){for(var t=new ct(31),n=0;n<31;++n)t[n]=e+=1<<o[n-1];for(var i=new In(t[30]),n=1;n<30;++n)for(var r=t[n];r<t[n+1];++r)i[r]=r-t[n]<<5|n;return[t,i]},Ii=Oi(Li,2),Di=Ii[0],Ss=Ii[1];Di[28]=258,Ss[258]=28;for(var Ps=Oi(Ti,0),Cs=Ps[0],Dn=new ct(32768),Ce=0;Ce<32768;++Ce){var ht=(Ce&43690)>>>1|(Ce&21845)<<1;ht=(ht&52428)>>>2|(ht&13107)<<2,ht=(ht&61680)>>>4|(ht&3855)<<4,Dn[Ce]=((ht&65280)>>>8|(ht&255)<<8)>>>1}for(var zt=function(o,e,t){for(var n=o.length,i=0,r=new ct(e);i<n;++i)++r[o[i]-1];var s=new ct(e);for(i=0;i<e;++i)s[i]=s[i-1]+r[i-1]<<1;var a;if(t){a=new ct(1<<e);var l=15-e;for(i=0;i<n;++i)if(o[i])for(var f=i<<4|o[i],u=e-o[i],d=s[o[i]-1]++<<u,m=d|(1<<u)-1;d<=m;++d)a[Dn[d]>>>l]=f}else for(a=new ct(n),i=0;i<n;++i)o[i]&&(a[i]=Dn[s[o[i]-1]++]>>>15-o[i]);return a},jt=new Ee(288),Ce=0;Ce<144;++Ce)jt[Ce]=8;for(var Ce=144;Ce<256;++Ce)jt[Ce]=9;for(var Ce=256;Ce<280;++Ce)jt[Ce]=7;for(var Ce=280;Ce<288;++Ce)jt[Ce]=8;for(var ki=new Ee(32),Ce=0;Ce<32;++Ce)ki[Ce]=5;var Ls=zt(jt,9,1),Ts=zt(ki,5,1),kn=function(o){for(var e=o[0],t=1;t<o.length;++t)o[t]>e&&(e=o[t]);return e},Ze=function(o,e,t){var n=e/8|0;return(o[n]|o[n+1]<<8)>>(e&7)&t},Fn=function(o,e){var t=e/8|0;return(o[t]|o[t+1]<<8|o[t+2]<<16)>>(e&7)},Os=function(o){return(o/8|0)+(o&7&&1)},Is=function(o,e,t){(e==null||e<0)&&(e=0),(t==null||t>o.length)&&(t=o.length);var n=new(o instanceof ct?ct:o instanceof In?In:Ee)(t-e);return n.set(o.subarray(e,t)),n},Ds=function(o,e,t){var n=o.length;if(!n||t&&!t.l&&n<5)return e||new Ee(0);var i=!e||t,r=!t||t.i;t||(t={}),e||(e=new Ee(n*3));var s=function(H){var N=e.length;if(H>N){var j=new Ee(Math.max(N*2,H));j.set(e),e=j}},a=t.f||0,l=t.p||0,f=t.b||0,u=t.l,d=t.d,m=t.m,y=t.n,b=n*8;do{if(!u){t.f=a=Ze(o,l,1);var A=Ze(o,l+1,3);if(l+=3,A)if(A==1)u=Ls,d=Ts,m=9,y=5;else if(A==2){var S=Ze(o,l,31)+257,g=Ze(o,l+10,15)+4,O=S+Ze(o,l+5,31)+1;l+=14;for(var x=new Ee(O),C=new Ee(19),p=0;p<g;++p)C[As[p]]=Ze(o,l+p*3,7);l+=g*3;for(var w=kn(C),v=(1<<w)-1,T=zt(C,w,1),p=0;p<O;){var k=T[Ze(o,l,v)];l+=k&15;var _=k>>>4;if(_<16)x[p++]=_;else{var Q=0,Y=0;for(_==16?(Y=3+Ze(o,l,3),l+=2,Q=x[p-1]):_==17?(Y=3+Ze(o,l,7),l+=3):_==18&&(Y=11+Ze(o,l,127),l+=7);Y--;)x[p++]=Q}}var $=x.subarray(0,S),ee=x.subarray(S);m=kn($),y=kn(ee),u=zt($,m,1),d=zt(ee,y,1)}else throw"invalid block type";else{var _=Os(l)+4,L=o[_-4]|o[_-3]<<8,I=_+L;if(I>n){if(r)throw"unexpected EOF";break}i&&s(f+L),e.set(o.subarray(_,I),f),t.b=f+=L,t.p=l=I*8;continue}if(l>b){if(r)throw"unexpected EOF";break}}i&&s(f+131072);for(var q=(1<<m)-1,Z=(1<<y)-1,ie=l;;ie=l){var Q=u[Fn(o,l)&q],ne=Q>>>4;if(l+=Q&15,l>b){if(r)throw"unexpected EOF";break}if(!Q)throw"invalid length/literal";if(ne<256)e[f++]=ne;else if(ne==256){ie=l,u=null;break}else{var ce=ne-254;if(ne>264){var p=ne-257,G=Li[p];ce=Ze(o,l,(1<<G)-1)+Di[p],l+=G}var V=d[Fn(o,l)&Z],M=V>>>4;if(!V)throw"invalid distance";l+=V&15;var ee=Cs[M];if(M>3){var G=Ti[M];ee+=Fn(o,l)&(1<<G)-1,l+=G}if(l>b){if(r)throw"unexpected EOF";break}i&&s(f+131072);for(var z=f+ce;f<z;f+=4)e[f]=e[f-ee],e[f+1]=e[f+1-ee],e[f+2]=e[f+2-ee],e[f+3]=e[f+3-ee];f=z}}t.l=u,t.p=ie,t.b=f,u&&(a=1,t.m=m,t.d=d,t.n=y)}while(!a);return f==e.length?e:Is(e,0,f)},ks=new Ee(0),Fs=function(o){if((o[0]&15)!=8||o[0]>>>4>7||(o[0]<<8|o[1])%31)throw"invalid zlib data";if(o[1]&32)throw"invalid zlib data: preset dictionaries not supported"};function Bs(o,e){return Ds((Fs(o),o.subarray(2,-4)),e)}var Us=typeof TextDecoder<"u"&&new TextDecoder,Ns=0;try{Us.decode(ks,{stream:!0}),Ns=1}catch{}const ke=new c.Triangle,on=new c.Vector3;class Vs{constructor(e){let t=e.geometry;t.index&&(console.warn("THREE.MeshSurfaceSampler: Converting geometry to non-indexed BufferGeometry."),t=t.toNonIndexed()),this.geometry=t,this.randomFunction=Math.random,this.positionAttribute=this.geometry.getAttribute("position"),this.colorAttribute=this.geometry.getAttribute("color"),this.weightAttribute=null,this.distribution=null}setWeightAttribute(e){return this.weightAttribute=e?this.geometry.getAttribute(e):null,this}build(){const e=this.positionAttribute,t=this.weightAttribute,n=new Float32Array(e.count/3);for(let r=0;r<e.count;r+=3){let s=1;t&&(s=t.getX(r)+t.getX(r+1)+t.getX(r+2)),ke.a.fromBufferAttribute(e,r),ke.b.fromBufferAttribute(e,r+1),ke.c.fromBufferAttribute(e,r+2),s*=ke.getArea(),n[r/3]=s}this.distribution=new Float32Array(e.count/3);let i=0;for(let r=0;r<n.length;r++)i+=n[r],this.distribution[r]=i;return this}setRandomGenerator(e){return this.randomFunction=e,this}sample(e,t,n){const i=this.sampleFaceIndex();return this.sampleFace(i,e,t,n)}sampleFaceIndex(){const e=this.distribution[this.distribution.length-1];return this.binarySearch(this.randomFunction()*e)}binarySearch(e){const t=this.distribution;let n=0,i=t.length-1,r=-1;for(;n<=i;){const s=Math.ceil((n+i)/2);if(s===0||t[s-1]<=e&&t[s]>e){r=s;break}else e<t[s]?i=s-1:n=s+1}return r}sampleFace(e,t,n,i){let r=this.randomFunction(),s=this.randomFunction();return r+s>1&&(r=1-r,s=1-s),ke.a.fromBufferAttribute(this.positionAttribute,e*3),ke.b.fromBufferAttribute(this.positionAttribute,e*3+1),ke.c.fromBufferAttribute(this.positionAttribute,e*3+2),t.set(0,0,0).addScaledVector(ke.a,r).addScaledVector(ke.b,s).addScaledVector(ke.c,1-(r+s)),n!==void 0&&ke.getNormal(n),i!==void 0&&this.colorAttribute!==void 0&&(ke.a.fromBufferAttribute(this.colorAttribute,e*3),ke.b.fromBufferAttribute(this.colorAttribute,e*3+1),ke.c.fromBufferAttribute(this.colorAttribute,e*3+2),on.set(0,0,0).addScaledVector(ke.a,r).addScaledVector(ke.b,s).addScaledVector(ke.c,1-(r+s)),i.r=on.x,i.g=on.y,i.b=on.z),this}}var zs=Object.defineProperty,js=(o,e,t)=>e in o?zs(o,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):o[e]=t,K=(o,e,t)=>(js(o,typeof e!="symbol"?e+"":e,t),t);class Gs extends c.Object3D{constructor(e,t){super(),K(this,"isTransformControls",!0),K(this,"visible",!1),K(this,"domElement"),K(this,"raycaster",new c.Raycaster),K(this,"gizmo"),K(this,"plane"),K(this,"tempVector",new c.Vector3),K(this,"tempVector2",new c.Vector3),K(this,"tempQuaternion",new c.Quaternion),K(this,"unit",{X:new c.Vector3(1,0,0),Y:new c.Vector3(0,1,0),Z:new c.Vector3(0,0,1)}),K(this,"pointStart",new c.Vector3),K(this,"pointEnd",new c.Vector3),K(this,"offset",new c.Vector3),K(this,"rotationAxis",new c.Vector3),K(this,"startNorm",new c.Vector3),K(this,"endNorm",new c.Vector3),K(this,"rotationAngle",0),K(this,"cameraPosition",new c.Vector3),K(this,"cameraQuaternion",new c.Quaternion),K(this,"cameraScale",new c.Vector3),K(this,"parentPosition",new c.Vector3),K(this,"parentQuaternion",new c.Quaternion),K(this,"parentQuaternionInv",new c.Quaternion),K(this,"parentScale",new c.Vector3),K(this,"worldPositionStart",new c.Vector3),K(this,"worldQuaternionStart",new c.Quaternion),K(this,"worldScaleStart",new c.Vector3),K(this,"worldPosition",new c.Vector3),K(this,"worldQuaternion",new c.Quaternion),K(this,"worldQuaternionInv",new c.Quaternion),K(this,"worldScale",new c.Vector3),K(this,"eye",new c.Vector3),K(this,"positionStart",new c.Vector3),K(this,"quaternionStart",new c.Quaternion),K(this,"scaleStart",new c.Vector3),K(this,"camera"),K(this,"object"),K(this,"enabled",!0),K(this,"axis",null),K(this,"mode","translate"),K(this,"translationSnap",null),K(this,"rotationSnap",null),K(this,"scaleSnap",null),K(this,"space","world"),K(this,"size",1),K(this,"dragging",!1),K(this,"showX",!0),K(this,"showY",!0),K(this,"showZ",!0),K(this,"changeEvent",{type:"change"}),K(this,"mouseDownEvent",{type:"mouseDown",mode:this.mode}),K(this,"mouseUpEvent",{type:"mouseUp",mode:this.mode}),K(this,"objectChangeEvent",{type:"objectChange"}),K(this,"intersectObjectWithRay",(i,r,s)=>{const a=r.intersectObject(i,!0);for(let l=0;l<a.length;l++)if(a[l].object.visible||s)return a[l];return!1}),K(this,"attach",i=>(this.object=i,this.visible=!0,this)),K(this,"detach",()=>(this.object=void 0,this.visible=!1,this.axis=null,this)),K(this,"reset",()=>this.enabled?(this.dragging&&this.object!==void 0&&(this.object.position.copy(this.positionStart),this.object.quaternion.copy(this.quaternionStart),this.object.scale.copy(this.scaleStart),this.dispatchEvent(this.changeEvent),this.dispatchEvent(this.objectChangeEvent),this.pointStart.copy(this.pointEnd)),this):this),K(this,"updateMatrixWorld",()=>{this.object!==void 0&&(this.object.updateMatrixWorld(),this.object.parent===null?console.error("TransformControls: The attached 3D object must be a part of the scene graph."):this.object.parent.matrixWorld.decompose(this.parentPosition,this.parentQuaternion,this.parentScale),this.object.matrixWorld.decompose(this.worldPosition,this.worldQuaternion,this.worldScale),this.parentQuaternionInv.copy(this.parentQuaternion).invert(),this.worldQuaternionInv.copy(this.worldQuaternion).invert()),this.camera.updateMatrixWorld(),this.camera.matrixWorld.decompose(this.cameraPosition,this.cameraQuaternion,this.cameraScale),this.eye.copy(this.cameraPosition).sub(this.worldPosition).normalize(),super.updateMatrixWorld()}),K(this,"pointerHover",i=>{if(this.object===void 0||this.dragging===!0)return;this.raycaster.setFromCamera(i,this.camera);const r=this.intersectObjectWithRay(this.gizmo.picker[this.mode],this.raycaster);r?this.axis=r.object.name:this.axis=null}),K(this,"pointerDown",i=>{if(!(this.object===void 0||this.dragging===!0||i.button!==0)&&this.axis!==null){this.raycaster.setFromCamera(i,this.camera);const r=this.intersectObjectWithRay(this.plane,this.raycaster,!0);if(r){let s=this.space;if(this.mode==="scale"?s="local":(this.axis==="E"||this.axis==="XYZE"||this.axis==="XYZ")&&(s="world"),s==="local"&&this.mode==="rotate"){const a=this.rotationSnap;this.axis==="X"&&a&&(this.object.rotation.x=Math.round(this.object.rotation.x/a)*a),this.axis==="Y"&&a&&(this.object.rotation.y=Math.round(this.object.rotation.y/a)*a),this.axis==="Z"&&a&&(this.object.rotation.z=Math.round(this.object.rotation.z/a)*a)}this.object.updateMatrixWorld(),this.object.parent&&this.object.parent.updateMatrixWorld(),this.positionStart.copy(this.object.position),this.quaternionStart.copy(this.object.quaternion),this.scaleStart.copy(this.object.scale),this.object.matrixWorld.decompose(this.worldPositionStart,this.worldQuaternionStart,this.worldScaleStart),this.pointStart.copy(r.point).sub(this.worldPositionStart)}this.dragging=!0,this.mouseDownEvent.mode=this.mode,this.dispatchEvent(this.mouseDownEvent)}}),K(this,"pointerMove",i=>{const r=this.axis,s=this.mode,a=this.object;let l=this.space;if(s==="scale"?l="local":(r==="E"||r==="XYZE"||r==="XYZ")&&(l="world"),a===void 0||r===null||this.dragging===!1||i.button!==-1)return;this.raycaster.setFromCamera(i,this.camera);const f=this.intersectObjectWithRay(this.plane,this.raycaster,!0);if(f){if(this.pointEnd.copy(f.point).sub(this.worldPositionStart),s==="translate")this.offset.copy(this.pointEnd).sub(this.pointStart),l==="local"&&r!=="XYZ"&&this.offset.applyQuaternion(this.worldQuaternionInv),r.indexOf("X")===-1&&(this.offset.x=0),r.indexOf("Y")===-1&&(this.offset.y=0),r.indexOf("Z")===-1&&(this.offset.z=0),l==="local"&&r!=="XYZ"?this.offset.applyQuaternion(this.quaternionStart).divide(this.parentScale):this.offset.applyQuaternion(this.parentQuaternionInv).divide(this.parentScale),a.position.copy(this.offset).add(this.positionStart),this.translationSnap&&(l==="local"&&(a.position.applyQuaternion(this.tempQuaternion.copy(this.quaternionStart).invert()),r.search("X")!==-1&&(a.position.x=Math.round(a.position.x/this.translationSnap)*this.translationSnap),r.search("Y")!==-1&&(a.position.y=Math.round(a.position.y/this.translationSnap)*this.translationSnap),r.search("Z")!==-1&&(a.position.z=Math.round(a.position.z/this.translationSnap)*this.translationSnap),a.position.applyQuaternion(this.quaternionStart)),l==="world"&&(a.parent&&a.position.add(this.tempVector.setFromMatrixPosition(a.parent.matrixWorld)),r.search("X")!==-1&&(a.position.x=Math.round(a.position.x/this.translationSnap)*this.translationSnap),r.search("Y")!==-1&&(a.position.y=Math.round(a.position.y/this.translationSnap)*this.translationSnap),r.search("Z")!==-1&&(a.position.z=Math.round(a.position.z/this.translationSnap)*this.translationSnap),a.parent&&a.position.sub(this.tempVector.setFromMatrixPosition(a.parent.matrixWorld))));else if(s==="scale"){if(r.search("XYZ")!==-1){let u=this.pointEnd.length()/this.pointStart.length();this.pointEnd.dot(this.pointStart)<0&&(u*=-1),this.tempVector2.set(u,u,u)}else this.tempVector.copy(this.pointStart),this.tempVector2.copy(this.pointEnd),this.tempVector.applyQuaternion(this.worldQuaternionInv),this.tempVector2.applyQuaternion(this.worldQuaternionInv),this.tempVector2.divide(this.tempVector),r.search("X")===-1&&(this.tempVector2.x=1),r.search("Y")===-1&&(this.tempVector2.y=1),r.search("Z")===-1&&(this.tempVector2.z=1);a.scale.copy(this.scaleStart).multiply(this.tempVector2),this.scaleSnap&&this.object&&(r.search("X")!==-1&&(this.object.scale.x=Math.round(a.scale.x/this.scaleSnap)*this.scaleSnap||this.scaleSnap),r.search("Y")!==-1&&(a.scale.y=Math.round(a.scale.y/this.scaleSnap)*this.scaleSnap||this.scaleSnap),r.search("Z")!==-1&&(a.scale.z=Math.round(a.scale.z/this.scaleSnap)*this.scaleSnap||this.scaleSnap))}else if(s==="rotate"){this.offset.copy(this.pointEnd).sub(this.pointStart);const u=20/this.worldPosition.distanceTo(this.tempVector.setFromMatrixPosition(this.camera.matrixWorld));r==="E"?(this.rotationAxis.copy(this.eye),this.rotationAngle=this.pointEnd.angleTo(this.pointStart),this.startNorm.copy(this.pointStart).normalize(),this.endNorm.copy(this.pointEnd).normalize(),this.rotationAngle*=this.endNorm.cross(this.startNorm).dot(this.eye)<0?1:-1):r==="XYZE"?(this.rotationAxis.copy(this.offset).cross(this.eye).normalize(),this.rotationAngle=this.offset.dot(this.tempVector.copy(this.rotationAxis).cross(this.eye))*u):(r==="X"||r==="Y"||r==="Z")&&(this.rotationAxis.copy(this.unit[r]),this.tempVector.copy(this.unit[r]),l==="local"&&this.tempVector.applyQuaternion(this.worldQuaternion),this.rotationAngle=this.offset.dot(this.tempVector.cross(this.eye).normalize())*u),this.rotationSnap&&(this.rotationAngle=Math.round(this.rotationAngle/this.rotationSnap)*this.rotationSnap),l==="local"&&r!=="E"&&r!=="XYZE"?(a.quaternion.copy(this.quaternionStart),a.quaternion.multiply(this.tempQuaternion.setFromAxisAngle(this.rotationAxis,this.rotationAngle)).normalize()):(this.rotationAxis.applyQuaternion(this.parentQuaternionInv),a.quaternion.copy(this.tempQuaternion.setFromAxisAngle(this.rotationAxis,this.rotationAngle)),a.quaternion.multiply(this.quaternionStart).normalize())}this.dispatchEvent(this.changeEvent),this.dispatchEvent(this.objectChangeEvent)}}),K(this,"pointerUp",i=>{i.button===0&&(this.dragging&&this.axis!==null&&(this.mouseUpEvent.mode=this.mode,this.dispatchEvent(this.mouseUpEvent)),this.dragging=!1,this.axis=null)}),K(this,"getPointer",i=>{var r,s;if(this.domElement&&((r=this.domElement.ownerDocument)!=null&&r.pointerLockElement))return{x:0,y:0,button:i.button};{const a=i.changedTouches?i.changedTouches[0]:i,l=(s=this.domElement)==null?void 0:s.getBoundingClientRect();return{x:(a.clientX-l.left)/l.width*2-1,y:-(a.clientY-l.top)/l.height*2+1,button:i.button}}}),K(this,"onPointerHover",i=>{if(this.enabled)switch(i.pointerType){case"mouse":case"pen":this.pointerHover(this.getPointer(i));break}}),K(this,"onPointerDown",i=>{!this.enabled||!this.domElement||(this.domElement.style.touchAction="none",this.domElement.ownerDocument.addEventListener("pointermove",this.onPointerMove),this.pointerHover(this.getPointer(i)),this.pointerDown(this.getPointer(i)))}),K(this,"onPointerMove",i=>{this.enabled&&this.pointerMove(this.getPointer(i))}),K(this,"onPointerUp",i=>{!this.enabled||!this.domElement||(this.domElement.style.touchAction="",this.domElement.ownerDocument.removeEventListener("pointermove",this.onPointerMove),this.pointerUp(this.getPointer(i)))}),K(this,"getMode",()=>this.mode),K(this,"setMode",i=>{this.mode=i}),K(this,"setTranslationSnap",i=>{this.translationSnap=i}),K(this,"setRotationSnap",i=>{this.rotationSnap=i}),K(this,"setScaleSnap",i=>{this.scaleSnap=i}),K(this,"setSize",i=>{this.size=i}),K(this,"setSpace",i=>{this.space=i}),K(this,"update",()=>{console.warn("THREE.TransformControls: update function has no more functionality and therefore has been deprecated.")}),K(this,"connect",i=>{i===document&&console.error('THREE.OrbitControls: "document" should not be used as the target "domElement". Please use "renderer.domElement" instead.'),this.domElement=i,this.domElement.addEventListener("pointerdown",this.onPointerDown),this.domElement.addEventListener("pointermove",this.onPointerHover),this.domElement.ownerDocument.addEventListener("pointerup",this.onPointerUp)}),K(this,"dispose",()=>{var i,r,s,a,l,f;(i=this.domElement)==null||i.removeEventListener("pointerdown",this.onPointerDown),(r=this.domElement)==null||r.removeEventListener("pointermove",this.onPointerHover),(a=(s=this.domElement)==null?void 0:s.ownerDocument)==null||a.removeEventListener("pointermove",this.onPointerMove),(f=(l=this.domElement)==null?void 0:l.ownerDocument)==null||f.removeEventListener("pointerup",this.onPointerUp),this.traverse(u=>{const d=u;d.geometry&&d.geometry.dispose(),d.material&&d.material.dispose()})}),this.domElement=t,this.camera=e,this.gizmo=new Rs,this.add(this.gizmo),this.plane=new Es,this.add(this.plane);const n=(i,r)=>{let s=r;Object.defineProperty(this,i,{get:function(){return s!==void 0?s:r},set:function(a){s!==a&&(s=a,this.plane[i]=a,this.gizmo[i]=a,this.dispatchEvent({type:i+"-changed",value:a}),this.dispatchEvent(this.changeEvent))}}),this[i]=r,this.plane[i]=r,this.gizmo[i]=r};n("camera",this.camera),n("object",this.object),n("enabled",this.enabled),n("axis",this.axis),n("mode",this.mode),n("translationSnap",this.translationSnap),n("rotationSnap",this.rotationSnap),n("scaleSnap",this.scaleSnap),n("space",this.space),n("size",this.size),n("dragging",this.dragging),n("showX",this.showX),n("showY",this.showY),n("showZ",this.showZ),n("worldPosition",this.worldPosition),n("worldPositionStart",this.worldPositionStart),n("worldQuaternion",this.worldQuaternion),n("worldQuaternionStart",this.worldQuaternionStart),n("cameraPosition",this.cameraPosition),n("cameraQuaternion",this.cameraQuaternion),n("pointStart",this.pointStart),n("pointEnd",this.pointEnd),n("rotationAxis",this.rotationAxis),n("rotationAngle",this.rotationAngle),n("eye",this.eye),t!==void 0&&this.connect(t)}}class Rs extends c.Object3D{constructor(){super(),K(this,"isTransformControlsGizmo",!0),K(this,"type","TransformControlsGizmo"),K(this,"tempVector",new c.Vector3(0,0,0)),K(this,"tempEuler",new c.Euler),K(this,"alignVector",new c.Vector3(0,1,0)),K(this,"zeroVector",new c.Vector3(0,0,0)),K(this,"lookAtMatrix",new c.Matrix4),K(this,"tempQuaternion",new c.Quaternion),K(this,"tempQuaternion2",new c.Quaternion),K(this,"identityQuaternion",new c.Quaternion),K(this,"unitX",new c.Vector3(1,0,0)),K(this,"unitY",new c.Vector3(0,1,0)),K(this,"unitZ",new c.Vector3(0,0,1)),K(this,"gizmo"),K(this,"picker"),K(this,"helper"),K(this,"rotationAxis",new c.Vector3),K(this,"cameraPosition",new c.Vector3),K(this,"worldPositionStart",new c.Vector3),K(this,"worldQuaternionStart",new c.Quaternion),K(this,"worldPosition",new c.Vector3),K(this,"worldQuaternion",new c.Quaternion),K(this,"eye",new c.Vector3),K(this,"camera",null),K(this,"enabled",!0),K(this,"axis",null),K(this,"mode","translate"),K(this,"space","world"),K(this,"size",1),K(this,"dragging",!1),K(this,"showX",!0),K(this,"showY",!0),K(this,"showZ",!0),K(this,"updateMatrixWorld",()=>{let ne=this.space;this.mode==="scale"&&(ne="local");const ce=ne==="local"?this.worldQuaternion:this.identityQuaternion;this.gizmo.translate.visible=this.mode==="translate",this.gizmo.rotate.visible=this.mode==="rotate",this.gizmo.scale.visible=this.mode==="scale",this.helper.translate.visible=this.mode==="translate",this.helper.rotate.visible=this.mode==="rotate",this.helper.scale.visible=this.mode==="scale";let G=[];G=G.concat(this.picker[this.mode].children),G=G.concat(this.gizmo[this.mode].children),G=G.concat(this.helper[this.mode].children);for(let V=0;V<G.length;V++){const M=G[V];M.visible=!0,M.rotation.set(0,0,0),M.position.copy(this.worldPosition);let z;if(this.camera.isOrthographicCamera?z=(this.camera.top-this.camera.bottom)/this.camera.zoom:z=this.worldPosition.distanceTo(this.cameraPosition)*Math.min(1.9*Math.tan(Math.PI*this.camera.fov/360)/this.camera.zoom,7),M.scale.set(1,1,1).multiplyScalar(z*this.size/7),M.tag==="helper"){M.visible=!1,M.name==="AXIS"?(M.position.copy(this.worldPositionStart),M.visible=!!this.axis,this.axis==="X"&&(this.tempQuaternion.setFromEuler(this.tempEuler.set(0,0,0)),M.quaternion.copy(ce).multiply(this.tempQuaternion),Math.abs(this.alignVector.copy(this.unitX).applyQuaternion(ce).dot(this.eye))>.9&&(M.visible=!1)),this.axis==="Y"&&(this.tempQuaternion.setFromEuler(this.tempEuler.set(0,0,Math.PI/2)),M.quaternion.copy(ce).multiply(this.tempQuaternion),Math.abs(this.alignVector.copy(this.unitY).applyQuaternion(ce).dot(this.eye))>.9&&(M.visible=!1)),this.axis==="Z"&&(this.tempQuaternion.setFromEuler(this.tempEuler.set(0,Math.PI/2,0)),M.quaternion.copy(ce).multiply(this.tempQuaternion),Math.abs(this.alignVector.copy(this.unitZ).applyQuaternion(ce).dot(this.eye))>.9&&(M.visible=!1)),this.axis==="XYZE"&&(this.tempQuaternion.setFromEuler(this.tempEuler.set(0,Math.PI/2,0)),this.alignVector.copy(this.rotationAxis),M.quaternion.setFromRotationMatrix(this.lookAtMatrix.lookAt(this.zeroVector,this.alignVector,this.unitY)),M.quaternion.multiply(this.tempQuaternion),M.visible=this.dragging),this.axis==="E"&&(M.visible=!1)):M.name==="START"?(M.position.copy(this.worldPositionStart),M.visible=this.dragging):M.name==="END"?(M.position.copy(this.worldPosition),M.visible=this.dragging):M.name==="DELTA"?(M.position.copy(this.worldPositionStart),M.quaternion.copy(this.worldQuaternionStart),this.tempVector.set(1e-10,1e-10,1e-10).add(this.worldPositionStart).sub(this.worldPosition).multiplyScalar(-1),this.tempVector.applyQuaternion(this.worldQuaternionStart.clone().invert()),M.scale.copy(this.tempVector),M.visible=this.dragging):(M.quaternion.copy(ce),this.dragging?M.position.copy(this.worldPositionStart):M.position.copy(this.worldPosition),this.axis&&(M.visible=this.axis.search(M.name)!==-1));continue}M.quaternion.copy(ce),this.mode==="translate"||this.mode==="scale"?((M.name==="X"||M.name==="XYZX")&&Math.abs(this.alignVector.copy(this.unitX).applyQuaternion(ce).dot(this.eye))>.99&&(M.scale.set(1e-10,1e-10,1e-10),M.visible=!1),(M.name==="Y"||M.name==="XYZY")&&Math.abs(this.alignVector.copy(this.unitY).applyQuaternion(ce).dot(this.eye))>.99&&(M.scale.set(1e-10,1e-10,1e-10),M.visible=!1),(M.name==="Z"||M.name==="XYZZ")&&Math.abs(this.alignVector.copy(this.unitZ).applyQuaternion(ce).dot(this.eye))>.99&&(M.scale.set(1e-10,1e-10,1e-10),M.visible=!1),M.name==="XY"&&Math.abs(this.alignVector.copy(this.unitZ).applyQuaternion(ce).dot(this.eye))<.2&&(M.scale.set(1e-10,1e-10,1e-10),M.visible=!1),M.name==="YZ"&&Math.abs(this.alignVector.copy(this.unitX).applyQuaternion(ce).dot(this.eye))<.2&&(M.scale.set(1e-10,1e-10,1e-10),M.visible=!1),M.name==="XZ"&&Math.abs(this.alignVector.copy(this.unitY).applyQuaternion(ce).dot(this.eye))<.2&&(M.scale.set(1e-10,1e-10,1e-10),M.visible=!1),M.name.search("X")!==-1&&(this.alignVector.copy(this.unitX).applyQuaternion(ce).dot(this.eye)<0?M.tag==="fwd"?M.visible=!1:M.scale.x*=-1:M.tag==="bwd"&&(M.visible=!1)),M.name.search("Y")!==-1&&(this.alignVector.copy(this.unitY).applyQuaternion(ce).dot(this.eye)<0?M.tag==="fwd"?M.visible=!1:M.scale.y*=-1:M.tag==="bwd"&&(M.visible=!1)),M.name.search("Z")!==-1&&(this.alignVector.copy(this.unitZ).applyQuaternion(ce).dot(this.eye)<0?M.tag==="fwd"?M.visible=!1:M.scale.z*=-1:M.tag==="bwd"&&(M.visible=!1))):this.mode==="rotate"&&(this.tempQuaternion2.copy(ce),this.alignVector.copy(this.eye).applyQuaternion(this.tempQuaternion.copy(ce).invert()),M.name.search("E")!==-1&&M.quaternion.setFromRotationMatrix(this.lookAtMatrix.lookAt(this.eye,this.zeroVector,this.unitY)),M.name==="X"&&(this.tempQuaternion.setFromAxisAngle(this.unitX,Math.atan2(-this.alignVector.y,this.alignVector.z)),this.tempQuaternion.multiplyQuaternions(this.tempQuaternion2,this.tempQuaternion),M.quaternion.copy(this.tempQuaternion)),M.name==="Y"&&(this.tempQuaternion.setFromAxisAngle(this.unitY,Math.atan2(this.alignVector.x,this.alignVector.z)),this.tempQuaternion.multiplyQuaternions(this.tempQuaternion2,this.tempQuaternion),M.quaternion.copy(this.tempQuaternion)),M.name==="Z"&&(this.tempQuaternion.setFromAxisAngle(this.unitZ,Math.atan2(this.alignVector.y,this.alignVector.x)),this.tempQuaternion.multiplyQuaternions(this.tempQuaternion2,this.tempQuaternion),M.quaternion.copy(this.tempQuaternion))),M.visible=M.visible&&(M.name.indexOf("X")===-1||this.showX),M.visible=M.visible&&(M.name.indexOf("Y")===-1||this.showY),M.visible=M.visible&&(M.name.indexOf("Z")===-1||this.showZ),M.visible=M.visible&&(M.name.indexOf("E")===-1||this.showX&&this.showY&&this.showZ),M.material.tempOpacity=M.material.tempOpacity||M.material.opacity,M.material.tempColor=M.material.tempColor||M.material.color.clone(),M.material.color.copy(M.material.tempColor),M.material.opacity=M.material.tempOpacity,this.enabled?this.axis&&(M.name===this.axis?(M.material.opacity=1,M.material.color.lerp(new c.Color(1,1,1),.5)):this.axis.split("").some(function(H){return M.name===H})?(M.material.opacity=1,M.material.color.lerp(new c.Color(1,1,1),.5)):(M.material.opacity*=.25,M.material.color.lerp(new c.Color(1,1,1),.5))):(M.material.opacity*=.5,M.material.color.lerp(new c.Color(1,1,1),.5))}super.updateMatrixWorld()});const e=new c.MeshBasicMaterial({depthTest:!1,depthWrite:!1,transparent:!0,side:c.DoubleSide,fog:!1,toneMapped:!1}),t=new c.LineBasicMaterial({depthTest:!1,depthWrite:!1,transparent:!0,linewidth:1,fog:!1,toneMapped:!1}),n=e.clone();n.opacity=.15;const i=e.clone();i.opacity=.33;const r=e.clone();r.color.set(16711680);const s=e.clone();s.color.set(65280);const a=e.clone();a.color.set(255);const l=e.clone();l.opacity=.25;const f=l.clone();f.color.set(16776960);const u=l.clone();u.color.set(65535);const d=l.clone();d.color.set(16711935),e.clone().color.set(16776960);const y=t.clone();y.color.set(16711680);const b=t.clone();b.color.set(65280);const A=t.clone();A.color.set(255);const _=t.clone();_.color.set(65535);const L=t.clone();L.color.set(16711935);const I=t.clone();I.color.set(16776960);const S=t.clone();S.color.set(7895160);const g=I.clone();g.opacity=.25;const O=new c.CylinderGeometry(0,.05,.2,12,1,!1),x=new c.BoxGeometry(.125,.125,.125),C=new c.BufferGeometry;C.setAttribute("position",new c.Float32BufferAttribute([0,0,0,1,0,0],3));const p=(ne,ce)=>{const G=new c.BufferGeometry,V=[];for(let M=0;M<=64*ce;++M)V.push(0,Math.cos(M/32*Math.PI)*ne,Math.sin(M/32*Math.PI)*ne);return G.setAttribute("position",new c.Float32BufferAttribute(V,3)),G},w=()=>{const ne=new c.BufferGeometry;return ne.setAttribute("position",new c.Float32BufferAttribute([0,0,0,1,1,1],3)),ne},v={X:[[new c.Mesh(O,r),[1,0,0],[0,0,-Math.PI/2],null,"fwd"],[new c.Mesh(O,r),[1,0,0],[0,0,Math.PI/2],null,"bwd"],[new c.Line(C,y)]],Y:[[new c.Mesh(O,s),[0,1,0],null,null,"fwd"],[new c.Mesh(O,s),[0,1,0],[Math.PI,0,0],null,"bwd"],[new c.Line(C,b),null,[0,0,Math.PI/2]]],Z:[[new c.Mesh(O,a),[0,0,1],[Math.PI/2,0,0],null,"fwd"],[new c.Mesh(O,a),[0,0,1],[-Math.PI/2,0,0],null,"bwd"],[new c.Line(C,A),null,[0,-Math.PI/2,0]]],XYZ:[[new c.Mesh(new c.OctahedronGeometry(.1,0),l.clone()),[0,0,0],[0,0,0]]],XY:[[new c.Mesh(new c.PlaneGeometry(.295,.295),f.clone()),[.15,.15,0]],[new c.Line(C,I),[.18,.3,0],null,[.125,1,1]],[new c.Line(C,I),[.3,.18,0],[0,0,Math.PI/2],[.125,1,1]]],YZ:[[new c.Mesh(new c.PlaneGeometry(.295,.295),u.clone()),[0,.15,.15],[0,Math.PI/2,0]],[new c.Line(C,_),[0,.18,.3],[0,0,Math.PI/2],[.125,1,1]],[new c.Line(C,_),[0,.3,.18],[0,-Math.PI/2,0],[.125,1,1]]],XZ:[[new c.Mesh(new c.PlaneGeometry(.295,.295),d.clone()),[.15,0,.15],[-Math.PI/2,0,0]],[new c.Line(C,L),[.18,0,.3],null,[.125,1,1]],[new c.Line(C,L),[.3,0,.18],[0,-Math.PI/2,0],[.125,1,1]]]},T={X:[[new c.Mesh(new c.CylinderGeometry(.2,0,1,4,1,!1),n),[.6,0,0],[0,0,-Math.PI/2]]],Y:[[new c.Mesh(new c.CylinderGeometry(.2,0,1,4,1,!1),n),[0,.6,0]]],Z:[[new c.Mesh(new c.CylinderGeometry(.2,0,1,4,1,!1),n),[0,0,.6],[Math.PI/2,0,0]]],XYZ:[[new c.Mesh(new c.OctahedronGeometry(.2,0),n)]],XY:[[new c.Mesh(new c.PlaneGeometry(.4,.4),n),[.2,.2,0]]],YZ:[[new c.Mesh(new c.PlaneGeometry(.4,.4),n),[0,.2,.2],[0,Math.PI/2,0]]],XZ:[[new c.Mesh(new c.PlaneGeometry(.4,.4),n),[.2,0,.2],[-Math.PI/2,0,0]]]},k={START:[[new c.Mesh(new c.OctahedronGeometry(.01,2),i),null,null,null,"helper"]],END:[[new c.Mesh(new c.OctahedronGeometry(.01,2),i),null,null,null,"helper"]],DELTA:[[new c.Line(w(),i),null,null,null,"helper"]],X:[[new c.Line(C,i.clone()),[-1e3,0,0],null,[1e6,1,1],"helper"]],Y:[[new c.Line(C,i.clone()),[0,-1e3,0],[0,0,Math.PI/2],[1e6,1,1],"helper"]],Z:[[new c.Line(C,i.clone()),[0,0,-1e3],[0,-Math.PI/2,0],[1e6,1,1],"helper"]]},Q={X:[[new c.Line(p(1,.5),y)],[new c.Mesh(new c.OctahedronGeometry(.04,0),r),[0,0,.99],null,[1,3,1]]],Y:[[new c.Line(p(1,.5),b),null,[0,0,-Math.PI/2]],[new c.Mesh(new c.OctahedronGeometry(.04,0),s),[0,0,.99],null,[3,1,1]]],Z:[[new c.Line(p(1,.5),A),null,[0,Math.PI/2,0]],[new c.Mesh(new c.OctahedronGeometry(.04,0),a),[.99,0,0],null,[1,3,1]]],E:[[new c.Line(p(1.25,1),g),null,[0,Math.PI/2,0]],[new c.Mesh(new c.CylinderGeometry(.03,0,.15,4,1,!1),g),[1.17,0,0],[0,0,-Math.PI/2],[1,1,.001]],[new c.Mesh(new c.CylinderGeometry(.03,0,.15,4,1,!1),g),[-1.17,0,0],[0,0,Math.PI/2],[1,1,.001]],[new c.Mesh(new c.CylinderGeometry(.03,0,.15,4,1,!1),g),[0,-1.17,0],[Math.PI,0,0],[1,1,.001]],[new c.Mesh(new c.CylinderGeometry(.03,0,.15,4,1,!1),g),[0,1.17,0],[0,0,0],[1,1,.001]]],XYZE:[[new c.Line(p(1,1),S),null,[0,Math.PI/2,0]]]},Y={AXIS:[[new c.Line(C,i.clone()),[-1e3,0,0],null,[1e6,1,1],"helper"]]},$={X:[[new c.Mesh(new c.TorusGeometry(1,.1,4,24),n),[0,0,0],[0,-Math.PI/2,-Math.PI/2]]],Y:[[new c.Mesh(new c.TorusGeometry(1,.1,4,24),n),[0,0,0],[Math.PI/2,0,0]]],Z:[[new c.Mesh(new c.TorusGeometry(1,.1,4,24),n),[0,0,0],[0,0,-Math.PI/2]]],E:[[new c.Mesh(new c.TorusGeometry(1.25,.1,2,24),n)]],XYZE:[[new c.Mesh(new c.SphereGeometry(.7,10,8),n)]]},ee={X:[[new c.Mesh(x,r),[.8,0,0],[0,0,-Math.PI/2]],[new c.Line(C,y),null,null,[.8,1,1]]],Y:[[new c.Mesh(x,s),[0,.8,0]],[new c.Line(C,b),null,[0,0,Math.PI/2],[.8,1,1]]],Z:[[new c.Mesh(x,a),[0,0,.8],[Math.PI/2,0,0]],[new c.Line(C,A),null,[0,-Math.PI/2,0],[.8,1,1]]],XY:[[new c.Mesh(x,f),[.85,.85,0],null,[2,2,.2]],[new c.Line(C,I),[.855,.98,0],null,[.125,1,1]],[new c.Line(C,I),[.98,.855,0],[0,0,Math.PI/2],[.125,1,1]]],YZ:[[new c.Mesh(x,u),[0,.85,.85],null,[.2,2,2]],[new c.Line(C,_),[0,.855,.98],[0,0,Math.PI/2],[.125,1,1]],[new c.Line(C,_),[0,.98,.855],[0,-Math.PI/2,0],[.125,1,1]]],XZ:[[new c.Mesh(x,d),[.85,0,.85],null,[2,.2,2]],[new c.Line(C,L),[.855,0,.98],null,[.125,1,1]],[new c.Line(C,L),[.98,0,.855],[0,-Math.PI/2,0],[.125,1,1]]],XYZX:[[new c.Mesh(new c.BoxGeometry(.125,.125,.125),l.clone()),[1.1,0,0]]],XYZY:[[new c.Mesh(new c.BoxGeometry(.125,.125,.125),l.clone()),[0,1.1,0]]],XYZZ:[[new c.Mesh(new c.BoxGeometry(.125,.125,.125),l.clone()),[0,0,1.1]]]},q={X:[[new c.Mesh(new c.CylinderGeometry(.2,0,.8,4,1,!1),n),[.5,0,0],[0,0,-Math.PI/2]]],Y:[[new c.Mesh(new c.CylinderGeometry(.2,0,.8,4,1,!1),n),[0,.5,0]]],Z:[[new c.Mesh(new c.CylinderGeometry(.2,0,.8,4,1,!1),n),[0,0,.5],[Math.PI/2,0,0]]],XY:[[new c.Mesh(x,n),[.85,.85,0],null,[3,3,.2]]],YZ:[[new c.Mesh(x,n),[0,.85,.85],null,[.2,3,3]]],XZ:[[new c.Mesh(x,n),[.85,0,.85],null,[3,.2,3]]],XYZX:[[new c.Mesh(new c.BoxGeometry(.2,.2,.2),n),[1.1,0,0]]],XYZY:[[new c.Mesh(new c.BoxGeometry(.2,.2,.2),n),[0,1.1,0]]],XYZZ:[[new c.Mesh(new c.BoxGeometry(.2,.2,.2),n),[0,0,1.1]]]},Z={X:[[new c.Line(C,i.clone()),[-1e3,0,0],null,[1e6,1,1],"helper"]],Y:[[new c.Line(C,i.clone()),[0,-1e3,0],[0,0,Math.PI/2],[1e6,1,1],"helper"]],Z:[[new c.Line(C,i.clone()),[0,0,-1e3],[0,-Math.PI/2,0],[1e6,1,1],"helper"]]},ie=ne=>{const ce=new c.Object3D;for(let G in ne)for(let V=ne[G].length;V--;){const M=ne[G][V][0].clone(),z=ne[G][V][1],H=ne[G][V][2],N=ne[G][V][3],j=ne[G][V][4];M.name=G,M.tag=j,z&&M.position.set(z[0],z[1],z[2]),H&&M.rotation.set(H[0],H[1],H[2]),N&&M.scale.set(N[0],N[1],N[2]),M.updateMatrix();const P=M.geometry.clone();P.applyMatrix4(M.matrix),M.geometry=P,M.renderOrder=1/0,M.position.set(0,0,0),M.rotation.set(0,0,0),M.scale.set(1,1,1),ce.add(M)}return ce};this.gizmo={},this.picker={},this.helper={},this.add(this.gizmo.translate=ie(v)),this.add(this.gizmo.rotate=ie(Q)),this.add(this.gizmo.scale=ie(ee)),this.add(this.picker.translate=ie(T)),this.add(this.picker.rotate=ie($)),this.add(this.picker.scale=ie(q)),this.add(this.helper.translate=ie(k)),this.add(this.helper.rotate=ie(Y)),this.add(this.helper.scale=ie(Z)),this.picker.translate.visible=!1,this.picker.rotate.visible=!1,this.picker.scale.visible=!1}}class Es extends c.Mesh{constructor(){super(new c.PlaneGeometry(1e5,1e5,2,2),new c.MeshBasicMaterial({visible:!1,wireframe:!0,side:c.DoubleSide,transparent:!0,opacity:.1,toneMapped:!1})),K(this,"isTransformControlsPlane",!0),K(this,"type","TransformControlsPlane"),K(this,"unitX",new c.Vector3(1,0,0)),K(this,"unitY",new c.Vector3(0,1,0)),K(this,"unitZ",new c.Vector3(0,0,1)),K(this,"tempVector",new c.Vector3),K(this,"dirVector",new c.Vector3),K(this,"alignVector",new c.Vector3),K(this,"tempMatrix",new c.Matrix4),K(this,"identityQuaternion",new c.Quaternion),K(this,"cameraQuaternion",new c.Quaternion),K(this,"worldPosition",new c.Vector3),K(this,"worldQuaternion",new c.Quaternion),K(this,"eye",new c.Vector3),K(this,"axis",null),K(this,"mode","translate"),K(this,"space","world"),K(this,"updateMatrixWorld",()=>{let e=this.space;switch(this.position.copy(this.worldPosition),this.mode==="scale"&&(e="local"),this.unitX.set(1,0,0).applyQuaternion(e==="local"?this.worldQuaternion:this.identityQuaternion),this.unitY.set(0,1,0).applyQuaternion(e==="local"?this.worldQuaternion:this.identityQuaternion),this.unitZ.set(0,0,1).applyQuaternion(e==="local"?this.worldQuaternion:this.identityQuaternion),this.alignVector.copy(this.unitY),this.mode){case"translate":case"scale":switch(this.axis){case"X":this.alignVector.copy(this.eye).cross(this.unitX),this.dirVector.copy(this.unitX).cross(this.alignVector);break;case"Y":this.alignVector.copy(this.eye).cross(this.unitY),this.dirVector.copy(this.unitY).cross(this.alignVector);break;case"Z":this.alignVector.copy(this.eye).cross(this.unitZ),this.dirVector.copy(this.unitZ).cross(this.alignVector);break;case"XY":this.dirVector.copy(this.unitZ);break;case"YZ":this.dirVector.copy(this.unitX);break;case"XZ":this.alignVector.copy(this.unitZ),this.dirVector.copy(this.unitY);break;case"XYZ":case"E":this.dirVector.set(0,0,0);break}break;case"rotate":default:this.dirVector.set(0,0,0)}this.dirVector.length()===0?this.quaternion.copy(this.cameraQuaternion):(this.tempMatrix.lookAt(this.tempVector.set(0,0,0),this.dirVector,this.alignVector),this.quaternion.setFromRotationMatrix(this.tempMatrix)),super.updateMatrixWorld()})}}var Ys=Object.defineProperty,Xs=(o,e,t)=>e in o?Ys(o,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):o[e]=t,Oe=(o,e,t)=>(Xs(o,typeof e!="symbol"?e+"":e,t),t);const Pt=new c.Euler(0,0,0,"YXZ"),Ct=new c.Vector3,Ws={type:"change"},Zs={type:"lock"},qs={type:"unlock"},Fi=Math.PI/2;class Bn extends c.EventDispatcher{constructor(e,t){super(),Oe(this,"camera"),Oe(this,"domElement"),Oe(this,"isLocked"),Oe(this,"minPolarAngle"),Oe(this,"maxPolarAngle"),Oe(this,"pointerSpeed"),Oe(this,"onMouseMove",n=>{if(!this.domElement||this.isLocked===!1)return;const i=n.movementX||n.mozMovementX||n.webkitMovementX||0,r=n.movementY||n.mozMovementY||n.webkitMovementY||0;Pt.setFromQuaternion(this.camera.quaternion),Pt.y-=i*.002*this.pointerSpeed,Pt.x-=r*.002*this.pointerSpeed,Pt.x=Math.max(Fi-this.maxPolarAngle,Math.min(Fi-this.minPolarAngle,Pt.x)),this.camera.quaternion.setFromEuler(Pt),this.dispatchEvent(Ws)}),Oe(this,"onPointerlockChange",()=>{this.domElement&&(this.domElement.ownerDocument.pointerLockElement===this.domElement?(this.dispatchEvent(Zs),this.isLocked=!0):(this.dispatchEvent(qs),this.isLocked=!1))}),Oe(this,"onPointerlockError",()=>{console.error("THREE.PointerLockControls: Unable to use Pointer Lock API")}),Oe(this,"connect",n=>{this.domElement=n||this.domElement,this.domElement&&(this.domElement.ownerDocument.addEventListener("mousemove",this.onMouseMove),this.domElement.ownerDocument.addEventListener("pointerlockchange",this.onPointerlockChange),this.domElement.ownerDocument.addEventListener("pointerlockerror",this.onPointerlockError))}),Oe(this,"disconnect",()=>{this.domElement&&(this.domElement.ownerDocument.removeEventListener("mousemove",this.onMouseMove),this.domElement.ownerDocument.removeEventListener("pointerlockchange",this.onPointerlockChange),this.domElement.ownerDocument.removeEventListener("pointerlockerror",this.onPointerlockError))}),Oe(this,"dispose",()=>{this.disconnect()}),Oe(this,"getObject",()=>this.camera),Oe(this,"direction",new c.Vector3(0,0,-1)),Oe(this,"getDirection",n=>n.copy(this.direction).applyQuaternion(this.camera.quaternion)),Oe(this,"moveForward",n=>{Ct.setFromMatrixColumn(this.camera.matrix,0),Ct.crossVectors(this.camera.up,Ct),this.camera.position.addScaledVector(Ct,n)}),Oe(this,"moveRight",n=>{Ct.setFromMatrixColumn(this.camera.matrix,0),this.camera.position.addScaledVector(Ct,n)}),Oe(this,"lock",()=>{this.domElement&&this.domElement.requestPointerLock()}),Oe(this,"unlock",()=>{this.domElement&&this.domElement.ownerDocument.exitPointerLock()}),this.camera=e,this.domElement=t,this.isLocked=!1,this.minPolarAngle=0,this.maxPolarAngle=Math.PI,this.pointerSpeed=1,t&&this.connect(t)}}var Ks=Object.defineProperty,Qs=(o,e,t)=>e in o?Ks(o,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):o[e]=t,ue=(o,e,t)=>(Qs(o,typeof e!="symbol"?e+"":e,t),t);const an=new c.Ray,Bi=new c.Plane,Js=Math.cos(70*(Math.PI/180)),Ui=(o,e)=>(o%e+e)%e;class Ni extends c.EventDispatcher{constructor(e,t){super(),ue(this,"object"),ue(this,"domElement"),ue(this,"enabled",!0),ue(this,"target",new c.Vector3),ue(this,"minDistance",0),ue(this,"maxDistance",1/0),ue(this,"minZoom",0),ue(this,"maxZoom",1/0),ue(this,"minPolarAngle",0),ue(this,"maxPolarAngle",Math.PI),ue(this,"minAzimuthAngle",-1/0),ue(this,"maxAzimuthAngle",1/0),ue(this,"enableDamping",!1),ue(this,"dampingFactor",.05),ue(this,"enableZoom",!0),ue(this,"zoomSpeed",1),ue(this,"enableRotate",!0),ue(this,"rotateSpeed",1),ue(this,"enablePan",!0),ue(this,"panSpeed",1),ue(this,"screenSpacePanning",!0),ue(this,"keyPanSpeed",7),ue(this,"zoomToCursor",!1),ue(this,"autoRotate",!1),ue(this,"autoRotateSpeed",2),ue(this,"reverseOrbit",!1),ue(this,"reverseHorizontalOrbit",!1),ue(this,"reverseVerticalOrbit",!1),ue(this,"keys",{LEFT:"ArrowLeft",UP:"ArrowUp",RIGHT:"ArrowRight",BOTTOM:"ArrowDown"}),ue(this,"mouseButtons",{LEFT:c.MOUSE.ROTATE,MIDDLE:c.MOUSE.DOLLY,RIGHT:c.MOUSE.PAN}),ue(this,"touches",{ONE:c.TOUCH.ROTATE,TWO:c.TOUCH.DOLLY_PAN}),ue(this,"target0"),ue(this,"position0"),ue(this,"zoom0"),ue(this,"_domElementKeyEvents",null),ue(this,"getPolarAngle"),ue(this,"getAzimuthalAngle"),ue(this,"setPolarAngle"),ue(this,"setAzimuthalAngle"),ue(this,"getDistance"),ue(this,"listenToKeyEvents"),ue(this,"stopListenToKeyEvents"),ue(this,"saveState"),ue(this,"reset"),ue(this,"update"),ue(this,"connect"),ue(this,"dispose"),this.object=e,this.domElement=t,this.target0=this.target.clone(),this.position0=this.object.position.clone(),this.zoom0=this.object.zoom,this.getPolarAngle=()=>u.phi,this.getAzimuthalAngle=()=>u.theta,this.setPolarAngle=E=>{let se=Ui(E,2*Math.PI),pe=u.phi;pe<0&&(pe+=2*Math.PI),se<0&&(se+=2*Math.PI);let Me=Math.abs(se-pe);2*Math.PI-Me<Me&&(se<pe?se+=2*Math.PI:pe+=2*Math.PI),d.phi=se-pe,n.update()},this.setAzimuthalAngle=E=>{let se=Ui(E,2*Math.PI),pe=u.theta;pe<0&&(pe+=2*Math.PI),se<0&&(se+=2*Math.PI);let Me=Math.abs(se-pe);2*Math.PI-Me<Me&&(se<pe?se+=2*Math.PI:pe+=2*Math.PI),d.theta=se-pe,n.update()},this.getDistance=()=>n.object.position.distanceTo(n.target),this.listenToKeyEvents=E=>{E.addEventListener("keydown",Vt),this._domElementKeyEvents=E},this.stopListenToKeyEvents=()=>{this._domElementKeyEvents.removeEventListener("keydown",Vt),this._domElementKeyEvents=null},this.saveState=()=>{n.target0.copy(n.target),n.position0.copy(n.object.position),n.zoom0=n.object.zoom},this.reset=()=>{n.target.copy(n.target0),n.object.position.copy(n.position0),n.object.zoom=n.zoom0,n.object.updateProjectionMatrix(),n.dispatchEvent(i),n.update(),l=a.NONE},this.update=(()=>{const E=new c.Vector3,se=new c.Vector3(0,1,0),pe=new c.Quaternion().setFromUnitVectors(e.up,se),Me=pe.clone().invert(),De=new c.Vector3,ot=new c.Quaternion,_t=2*Math.PI;return function(){const ws=n.object.position;pe.setFromUnitVectors(e.up,se),Me.copy(pe).invert(),E.copy(ws).sub(n.target),E.applyQuaternion(pe),u.setFromVector3(E),n.autoRotate&&l===a.NONE&&Y(k()),n.enableDamping?(u.theta+=d.theta*n.dampingFactor,u.phi+=d.phi*n.dampingFactor):(u.theta+=d.theta,u.phi+=d.phi);let at=n.minAzimuthAngle,lt=n.maxAzimuthAngle;isFinite(at)&&isFinite(lt)&&(at<-Math.PI?at+=_t:at>Math.PI&&(at-=_t),lt<-Math.PI?lt+=_t:lt>Math.PI&&(lt-=_t),at<=lt?u.theta=Math.max(at,Math.min(lt,u.theta)):u.theta=u.theta>(at+lt)/2?Math.max(at,u.theta):Math.min(lt,u.theta)),u.phi=Math.max(n.minPolarAngle,Math.min(n.maxPolarAngle,u.phi)),u.makeSafe(),n.enableDamping===!0?n.target.addScaledVector(y,n.dampingFactor):n.target.add(y),n.zoomToCursor&&w||n.object.isOrthographicCamera?u.radius=G(u.radius):u.radius=G(u.radius*m),E.setFromSpherical(u),E.applyQuaternion(Me),ws.copy(n.target).add(E),n.object.matrixAutoUpdate||n.object.updateMatrix(),n.object.lookAt(n.target),n.enableDamping===!0?(d.theta*=1-n.dampingFactor,d.phi*=1-n.dampingFactor,y.multiplyScalar(1-n.dampingFactor)):(d.set(0,0,0),y.set(0,0,0));let Ln=!1;if(n.zoomToCursor&&w){let rn=null;if(n.object instanceof c.PerspectiveCamera&&n.object.isPerspectiveCamera){const sn=E.length();rn=G(sn*m);const Tn=sn-rn;n.object.position.addScaledVector(C,Tn),n.object.updateMatrixWorld()}else if(n.object.isOrthographicCamera){const sn=new c.Vector3(p.x,p.y,0);sn.unproject(n.object),n.object.zoom=Math.max(n.minZoom,Math.min(n.maxZoom,n.object.zoom/m)),n.object.updateProjectionMatrix(),Ln=!0;const Tn=new c.Vector3(p.x,p.y,0);Tn.unproject(n.object),n.object.position.sub(Tn).add(sn),n.object.updateMatrixWorld(),rn=E.length()}else console.warn("WARNING: OrbitControls.js encountered an unknown camera type - zoom to cursor disabled."),n.zoomToCursor=!1;rn!==null&&(n.screenSpacePanning?n.target.set(0,0,-1).transformDirection(n.object.matrix).multiplyScalar(rn).add(n.object.position):(an.origin.copy(n.object.position),an.direction.set(0,0,-1).transformDirection(n.object.matrix),Math.abs(n.object.up.dot(an.direction))<Js?e.lookAt(n.target):(Bi.setFromNormalAndCoplanarPoint(n.object.up,n.target),an.intersectPlane(Bi,n.target))))}else n.object instanceof c.OrthographicCamera&&n.object.isOrthographicCamera&&(n.object.zoom=Math.max(n.minZoom,Math.min(n.maxZoom,n.object.zoom/m)),n.object.updateProjectionMatrix(),Ln=!0);return m=1,w=!1,Ln||De.distanceToSquared(n.object.position)>f||8*(1-ot.dot(n.object.quaternion))>f?(n.dispatchEvent(i),De.copy(n.object.position),ot.copy(n.object.quaternion),Ln=!1,!0):!1}})(),this.connect=E=>{E===document&&console.error('THREE.OrbitControls: "document" should not be used as the target "domElement". Please use "renderer.domElement" instead.'),n.domElement=E,n.domElement.style.touchAction="none",n.domElement.addEventListener("contextmenu",ys),n.domElement.addEventListener("pointerdown",_e),n.domElement.addEventListener("pointercancel",st),n.domElement.addEventListener("wheel",We)},this.dispose=()=>{var E,se,pe,Me,De,ot;(E=n.domElement)==null||E.removeEventListener("contextmenu",ys),(se=n.domElement)==null||se.removeEventListener("pointerdown",_e),(pe=n.domElement)==null||pe.removeEventListener("pointercancel",st),(Me=n.domElement)==null||Me.removeEventListener("wheel",We),(De=n.domElement)==null||De.ownerDocument.removeEventListener("pointermove",we),(ot=n.domElement)==null||ot.ownerDocument.removeEventListener("pointerup",Ie),n._domElementKeyEvents!==null&&n._domElementKeyEvents.removeEventListener("keydown",Vt)};const n=this,i={type:"change"},r={type:"start"},s={type:"end"},a={NONE:-1,ROTATE:0,DOLLY:1,PAN:2,TOUCH_ROTATE:3,TOUCH_PAN:4,TOUCH_DOLLY_PAN:5,TOUCH_DOLLY_ROTATE:6};let l=a.NONE;const f=1e-6,u=new c.Spherical,d=new c.Spherical;let m=1;const y=new c.Vector3,b=new c.Vector2,A=new c.Vector2,_=new c.Vector2,L=new c.Vector2,I=new c.Vector2,S=new c.Vector2,g=new c.Vector2,O=new c.Vector2,x=new c.Vector2,C=new c.Vector3,p=new c.Vector2;let w=!1;const v=[],T={};function k(){return 2*Math.PI/60/60*n.autoRotateSpeed}function Q(){return Math.pow(.95,n.zoomSpeed)}function Y(E){n.reverseOrbit||n.reverseHorizontalOrbit?d.theta+=E:d.theta-=E}function $(E){n.reverseOrbit||n.reverseVerticalOrbit?d.phi+=E:d.phi-=E}const ee=(()=>{const E=new c.Vector3;return function(pe,Me){E.setFromMatrixColumn(Me,0),E.multiplyScalar(-pe),y.add(E)}})(),q=(()=>{const E=new c.Vector3;return function(pe,Me){n.screenSpacePanning===!0?E.setFromMatrixColumn(Me,1):(E.setFromMatrixColumn(Me,0),E.crossVectors(n.object.up,E)),E.multiplyScalar(pe),y.add(E)}})(),Z=(()=>{const E=new c.Vector3;return function(pe,Me){const De=n.domElement;if(De&&n.object instanceof c.PerspectiveCamera&&n.object.isPerspectiveCamera){const ot=n.object.position;E.copy(ot).sub(n.target);let _t=E.length();_t*=Math.tan(n.object.fov/2*Math.PI/180),ee(2*pe*_t/De.clientHeight,n.object.matrix),q(2*Me*_t/De.clientHeight,n.object.matrix)}else De&&n.object instanceof c.OrthographicCamera&&n.object.isOrthographicCamera?(ee(pe*(n.object.right-n.object.left)/n.object.zoom/De.clientWidth,n.object.matrix),q(Me*(n.object.top-n.object.bottom)/n.object.zoom/De.clientHeight,n.object.matrix)):(console.warn("WARNING: OrbitControls.js encountered an unknown camera type - pan disabled."),n.enablePan=!1)}})();function ie(E){n.object instanceof c.PerspectiveCamera&&n.object.isPerspectiveCamera||n.object instanceof c.OrthographicCamera&&n.object.isOrthographicCamera?m/=E:(console.warn("WARNING: OrbitControls.js encountered an unknown camera type - dolly/zoom disabled."),n.enableZoom=!1)}function ne(E){n.object instanceof c.PerspectiveCamera&&n.object.isPerspectiveCamera||n.object instanceof c.OrthographicCamera&&n.object.isOrthographicCamera?m*=E:(console.warn("WARNING: OrbitControls.js encountered an unknown camera type - dolly/zoom disabled."),n.enableZoom=!1)}function ce(E){if(!n.zoomToCursor||!n.domElement)return;w=!0;const se=n.domElement.getBoundingClientRect(),pe=E.clientX-se.left,Me=E.clientY-se.top,De=se.width,ot=se.height;p.x=pe/De*2-1,p.y=-(Me/ot)*2+1,C.set(p.x,p.y,1).unproject(n.object).sub(n.object.position).normalize()}function G(E){return Math.max(n.minDistance,Math.min(n.maxDistance,E))}function V(E){b.set(E.clientX,E.clientY)}function M(E){ce(E),g.set(E.clientX,E.clientY)}function z(E){L.set(E.clientX,E.clientY)}function H(E){A.set(E.clientX,E.clientY),_.subVectors(A,b).multiplyScalar(n.rotateSpeed);const se=n.domElement;se&&(Y(2*Math.PI*_.x/se.clientHeight),$(2*Math.PI*_.y/se.clientHeight)),b.copy(A),n.update()}function N(E){O.set(E.clientX,E.clientY),x.subVectors(O,g),x.y>0?ie(Q()):x.y<0&&ne(Q()),g.copy(O),n.update()}function j(E){I.set(E.clientX,E.clientY),S.subVectors(I,L).multiplyScalar(n.panSpeed),Z(S.x,S.y),L.copy(I),n.update()}function P(E){ce(E),E.deltaY<0?ne(Q()):E.deltaY>0&&ie(Q()),n.update()}function D(E){let se=!1;switch(E.code){case n.keys.UP:Z(0,n.keyPanSpeed),se=!0;break;case n.keys.BOTTOM:Z(0,-n.keyPanSpeed),se=!0;break;case n.keys.LEFT:Z(n.keyPanSpeed,0),se=!0;break;case n.keys.RIGHT:Z(-n.keyPanSpeed,0),se=!0;break}se&&(E.preventDefault(),n.update())}function F(){if(v.length==1)b.set(v[0].pageX,v[0].pageY);else{const E=.5*(v[0].pageX+v[1].pageX),se=.5*(v[0].pageY+v[1].pageY);b.set(E,se)}}function R(){if(v.length==1)L.set(v[0].pageX,v[0].pageY);else{const E=.5*(v[0].pageX+v[1].pageX),se=.5*(v[0].pageY+v[1].pageY);L.set(E,se)}}function W(){const E=v[0].pageX-v[1].pageX,se=v[0].pageY-v[1].pageY,pe=Math.sqrt(E*E+se*se);g.set(0,pe)}function X(){n.enableZoom&&W(),n.enablePan&&R()}function te(){n.enableZoom&&W(),n.enableRotate&&F()}function U(E){if(v.length==1)A.set(E.pageX,E.pageY);else{const pe=Si(E),Me=.5*(E.pageX+pe.x),De=.5*(E.pageY+pe.y);A.set(Me,De)}_.subVectors(A,b).multiplyScalar(n.rotateSpeed);const se=n.domElement;se&&(Y(2*Math.PI*_.x/se.clientHeight),$(2*Math.PI*_.y/se.clientHeight)),b.copy(A)}function B(E){if(v.length==1)I.set(E.pageX,E.pageY);else{const se=Si(E),pe=.5*(E.pageX+se.x),Me=.5*(E.pageY+se.y);I.set(pe,Me)}S.subVectors(I,L).multiplyScalar(n.panSpeed),Z(S.x,S.y),L.copy(I)}function oe(E){const se=Si(E),pe=E.pageX-se.x,Me=E.pageY-se.y,De=Math.sqrt(pe*pe+Me*Me);O.set(0,De),x.set(0,Math.pow(O.y/g.y,n.zoomSpeed)),ie(x.y),g.copy(O)}function le(E){n.enableZoom&&oe(E),n.enablePan&&B(E)}function me(E){n.enableZoom&&oe(E),n.enableRotate&&U(E)}function _e(E){var se,pe;n.enabled!==!1&&(v.length===0&&((se=n.domElement)==null||se.ownerDocument.addEventListener("pointermove",we),(pe=n.domElement)==null||pe.ownerDocument.addEventListener("pointerup",Ie)),Ju(E),E.pointerType==="touch"?Ku(E):nn(E))}function we(E){n.enabled!==!1&&(E.pointerType==="touch"?Qu(E):Nt(E))}function Ie(E){var se,pe,Me;_s(E),v.length===0&&((se=n.domElement)==null||se.releasePointerCapture(E.pointerId),(pe=n.domElement)==null||pe.ownerDocument.removeEventListener("pointermove",we),(Me=n.domElement)==null||Me.ownerDocument.removeEventListener("pointerup",Ie)),n.dispatchEvent(s),l=a.NONE}function st(E){_s(E)}function nn(E){let se;switch(E.button){case 0:se=n.mouseButtons.LEFT;break;case 1:se=n.mouseButtons.MIDDLE;break;case 2:se=n.mouseButtons.RIGHT;break;default:se=-1}switch(se){case c.MOUSE.DOLLY:if(n.enableZoom===!1)return;M(E),l=a.DOLLY;break;case c.MOUSE.ROTATE:if(E.ctrlKey||E.metaKey||E.shiftKey){if(n.enablePan===!1)return;z(E),l=a.PAN}else{if(n.enableRotate===!1)return;V(E),l=a.ROTATE}break;case c.MOUSE.PAN:if(E.ctrlKey||E.metaKey||E.shiftKey){if(n.enableRotate===!1)return;V(E),l=a.ROTATE}else{if(n.enablePan===!1)return;z(E),l=a.PAN}break;default:l=a.NONE}l!==a.NONE&&n.dispatchEvent(r)}function Nt(E){if(n.enabled!==!1)switch(l){case a.ROTATE:if(n.enableRotate===!1)return;H(E);break;case a.DOLLY:if(n.enableZoom===!1)return;N(E);break;case a.PAN:if(n.enablePan===!1)return;j(E);break}}function We(E){n.enabled===!1||n.enableZoom===!1||l!==a.NONE&&l!==a.ROTATE||(E.preventDefault(),n.dispatchEvent(r),P(E),n.dispatchEvent(s))}function Vt(E){n.enabled===!1||n.enablePan===!1||D(E)}function Ku(E){switch(vs(E),v.length){case 1:switch(n.touches.ONE){case c.TOUCH.ROTATE:if(n.enableRotate===!1)return;F(),l=a.TOUCH_ROTATE;break;case c.TOUCH.PAN:if(n.enablePan===!1)return;R(),l=a.TOUCH_PAN;break;default:l=a.NONE}break;case 2:switch(n.touches.TWO){case c.TOUCH.DOLLY_PAN:if(n.enableZoom===!1&&n.enablePan===!1)return;X(),l=a.TOUCH_DOLLY_PAN;break;case c.TOUCH.DOLLY_ROTATE:if(n.enableZoom===!1&&n.enableRotate===!1)return;te(),l=a.TOUCH_DOLLY_ROTATE;break;default:l=a.NONE}break;default:l=a.NONE}l!==a.NONE&&n.dispatchEvent(r)}function Qu(E){switch(vs(E),l){case a.TOUCH_ROTATE:if(n.enableRotate===!1)return;U(E),n.update();break;case a.TOUCH_PAN:if(n.enablePan===!1)return;B(E),n.update();break;case a.TOUCH_DOLLY_PAN:if(n.enableZoom===!1&&n.enablePan===!1)return;le(E),n.update();break;case a.TOUCH_DOLLY_ROTATE:if(n.enableZoom===!1&&n.enableRotate===!1)return;me(E),n.update();break;default:l=a.NONE}}function ys(E){n.enabled!==!1&&E.preventDefault()}function Ju(E){v.push(E)}function _s(E){delete T[E.pointerId];for(let se=0;se<v.length;se++)if(v[se].pointerId==E.pointerId){v.splice(se,1);return}}function vs(E){let se=T[E.pointerId];se===void 0&&(se=new c.Vector2,T[E.pointerId]=se),se.set(E.pageX,E.pageY)}function Si(E){const se=E.pointerId===v[0].pointerId?v[1]:v[0];return T[se.pointerId]}t!==void 0&&this.connect(t),this.update()}}class Hs extends Ni{constructor(e,t){super(e,t),this.screenSpacePanning=!1,this.mouseButtons.LEFT=c.MOUSE.PAN,this.mouseButtons.RIGHT=c.MOUSE.ROTATE,this.touches.ONE=c.TOUCH.PAN,this.touches.TWO=c.TOUCH.DOLLY_ROTATE}}class $s extends c.Loader{constructor(e){super(e),this.dracoLoader=null,this.ktx2Loader=null,this.meshoptDecoder=null,this.pluginCallbacks=[],this.register(function(t){return new ro(t)}),this.register(function(t){return new fo(t)}),this.register(function(t){return new po(t)}),this.register(function(t){return new mo(t)}),this.register(function(t){return new oo(t)}),this.register(function(t){return new ao(t)}),this.register(function(t){return new lo(t)}),this.register(function(t){return new co(t)}),this.register(function(t){return new io(t)}),this.register(function(t){return new ho(t)}),this.register(function(t){return new so(t)}),this.register(function(t){return new uo(t)}),this.register(function(t){return new to(t)}),this.register(function(t){return new go(t)}),this.register(function(t){return new yo(t)})}load(e,t,n,i){const r=this;let s;this.resourcePath!==""?s=this.resourcePath:this.path!==""?s=this.path:s=c.LoaderUtils.extractUrlBase(e),this.manager.itemStart(e);const a=function(f){i?i(f):console.error(f),r.manager.itemError(e),r.manager.itemEnd(e)},l=new c.FileLoader(this.manager);l.setPath(this.path),l.setResponseType("arraybuffer"),l.setRequestHeader(this.requestHeader),l.setWithCredentials(this.withCredentials),l.load(e,function(f){try{r.parse(f,s,function(u){t(u),r.manager.itemEnd(e)},a)}catch(u){a(u)}},n,a)}setDRACOLoader(e){return this.dracoLoader=e,this}setDDSLoader(){throw new Error('THREE.GLTFLoader: "MSFT_texture_dds" no longer supported. Please update to "KHR_texture_basisu".')}setKTX2Loader(e){return this.ktx2Loader=e,this}setMeshoptDecoder(e){return this.meshoptDecoder=e,this}register(e){return this.pluginCallbacks.indexOf(e)===-1&&this.pluginCallbacks.push(e),this}unregister(e){return this.pluginCallbacks.indexOf(e)!==-1&&this.pluginCallbacks.splice(this.pluginCallbacks.indexOf(e),1),this}parse(e,t,n,i){let r;const s={},a={};if(typeof e=="string")r=JSON.parse(e);else if(e instanceof ArrayBuffer)if(c.LoaderUtils.decodeText(new Uint8Array(e.slice(0,4)))===Vi){try{s[xe.KHR_BINARY_GLTF]=new _o(e)}catch(u){i&&i(u);return}r=JSON.parse(s[xe.KHR_BINARY_GLTF].content)}else r=JSON.parse(c.LoaderUtils.decodeText(new Uint8Array(e)));else r=e;if(r.asset===void 0||r.asset.version[0]<2){i&&i(new Error("THREE.GLTFLoader: Unsupported asset. glTF versions >=2.0 are supported."));return}const l=new Io(r,{path:t||this.resourcePath||"",crossOrigin:this.crossOrigin,requestHeader:this.requestHeader,manager:this.manager,ktx2Loader:this.ktx2Loader,meshoptDecoder:this.meshoptDecoder});l.fileLoader.setRequestHeader(this.requestHeader);for(let f=0;f<this.pluginCallbacks.length;f++){const u=this.pluginCallbacks[f](l);a[u.name]=u,s[u.name]=!0}if(r.extensionsUsed)for(let f=0;f<r.extensionsUsed.length;++f){const u=r.extensionsUsed[f],d=r.extensionsRequired||[];switch(u){case xe.KHR_MATERIALS_UNLIT:s[u]=new no;break;case xe.KHR_DRACO_MESH_COMPRESSION:s[u]=new vo(r,this.dracoLoader);break;case xe.KHR_TEXTURE_TRANSFORM:s[u]=new wo;break;case xe.KHR_MESH_QUANTIZATION:s[u]=new xo;break;default:d.indexOf(u)>=0&&a[u]===void 0&&console.warn('THREE.GLTFLoader: Unknown extension "'+u+'".')}}l.setExtensions(s),l.setPlugins(a),l.parse(n,i)}parseAsync(e,t){const n=this;return new Promise(function(i,r){n.parse(e,t,i,r)})}}function eo(){let o={};return{get:function(e){return o[e]},add:function(e,t){o[e]=t},remove:function(e){delete o[e]},removeAll:function(){o={}}}}const xe={KHR_BINARY_GLTF:"KHR_binary_glTF",KHR_DRACO_MESH_COMPRESSION:"KHR_draco_mesh_compression",KHR_LIGHTS_PUNCTUAL:"KHR_lights_punctual",KHR_MATERIALS_CLEARCOAT:"KHR_materials_clearcoat",KHR_MATERIALS_IOR:"KHR_materials_ior",KHR_MATERIALS_SHEEN:"KHR_materials_sheen",KHR_MATERIALS_SPECULAR:"KHR_materials_specular",KHR_MATERIALS_TRANSMISSION:"KHR_materials_transmission",KHR_MATERIALS_IRIDESCENCE:"KHR_materials_iridescence",KHR_MATERIALS_ANISOTROPY:"KHR_materials_anisotropy",KHR_MATERIALS_UNLIT:"KHR_materials_unlit",KHR_MATERIALS_VOLUME:"KHR_materials_volume",KHR_TEXTURE_BASISU:"KHR_texture_basisu",KHR_TEXTURE_TRANSFORM:"KHR_texture_transform",KHR_MESH_QUANTIZATION:"KHR_mesh_quantization",KHR_MATERIALS_EMISSIVE_STRENGTH:"KHR_materials_emissive_strength",EXT_TEXTURE_WEBP:"EXT_texture_webp",EXT_TEXTURE_AVIF:"EXT_texture_avif",EXT_MESHOPT_COMPRESSION:"EXT_meshopt_compression",EXT_MESH_GPU_INSTANCING:"EXT_mesh_gpu_instancing"};class to{constructor(e){this.parser=e,this.name=xe.KHR_LIGHTS_PUNCTUAL,this.cache={refs:{},uses:{}}}_markDefs(){const e=this.parser,t=this.parser.json.nodes||[];for(let n=0,i=t.length;n<i;n++){const r=t[n];r.extensions&&r.extensions[this.name]&&r.extensions[this.name].light!==void 0&&e._addNodeRef(this.cache,r.extensions[this.name].light)}}_loadLight(e){const t=this.parser,n="light:"+e;let i=t.cache.get(n);if(i)return i;const r=t.json,l=((r.extensions&&r.extensions[this.name]||{}).lights||[])[e];let f;const u=new c.Color(16777215);l.color!==void 0&&u.fromArray(l.color);const d=l.range!==void 0?l.range:0;switch(l.type){case"directional":f=new c.DirectionalLight(u),f.target.position.set(0,0,-1),f.add(f.target);break;case"point":f=new c.PointLight(u),f.distance=d;break;case"spot":f=new c.SpotLight(u),f.distance=d,l.spot=l.spot||{},l.spot.innerConeAngle=l.spot.innerConeAngle!==void 0?l.spot.innerConeAngle:0,l.spot.outerConeAngle=l.spot.outerConeAngle!==void 0?l.spot.outerConeAngle:Math.PI/4,f.angle=l.spot.outerConeAngle,f.penumbra=1-l.spot.innerConeAngle/l.spot.outerConeAngle,f.target.position.set(0,0,-1),f.add(f.target);break;default:throw new Error("THREE.GLTFLoader: Unexpected light type: "+l.type)}return f.position.set(0,0,0),f.decay=2,ft(f,l),l.intensity!==void 0&&(f.intensity=l.intensity),f.name=t.createUniqueName(l.name||"light_"+e),i=Promise.resolve(f),t.cache.add(n,i),i}getDependency(e,t){if(e==="light")return this._loadLight(t)}createNodeAttachment(e){const t=this,n=this.parser,r=n.json.nodes[e],a=(r.extensions&&r.extensions[this.name]||{}).light;return a===void 0?null:this._loadLight(a).then(function(l){return n._getNodeRef(t.cache,a,l)})}}class no{constructor(){this.name=xe.KHR_MATERIALS_UNLIT}getMaterialType(){return c.MeshBasicMaterial}extendParams(e,t,n){const i=[];e.color=new c.Color(1,1,1),e.opacity=1;const r=t.pbrMetallicRoughness;if(r){if(Array.isArray(r.baseColorFactor)){const s=r.baseColorFactor;e.color.fromArray(s),e.opacity=s[3]}r.baseColorTexture!==void 0&&i.push(n.assignTexture(e,"map",r.baseColorTexture,3001))}return Promise.all(i)}}class io{constructor(e){this.parser=e,this.name=xe.KHR_MATERIALS_EMISSIVE_STRENGTH}extendMaterialParams(e,t){const i=this.parser.json.materials[e];if(!i.extensions||!i.extensions[this.name])return Promise.resolve();const r=i.extensions[this.name].emissiveStrength;return r!==void 0&&(t.emissiveIntensity=r),Promise.resolve()}}class ro{constructor(e){this.parser=e,this.name=xe.KHR_MATERIALS_CLEARCOAT}getMaterialType(e){const n=this.parser.json.materials[e];return!n.extensions||!n.extensions[this.name]?null:c.MeshPhysicalMaterial}extendMaterialParams(e,t){const n=this.parser,i=n.json.materials[e];if(!i.extensions||!i.extensions[this.name])return Promise.resolve();const r=[],s=i.extensions[this.name];if(s.clearcoatFactor!==void 0&&(t.clearcoat=s.clearcoatFactor),s.clearcoatTexture!==void 0&&r.push(n.assignTexture(t,"clearcoatMap",s.clearcoatTexture)),s.clearcoatRoughnessFactor!==void 0&&(t.clearcoatRoughness=s.clearcoatRoughnessFactor),s.clearcoatRoughnessTexture!==void 0&&r.push(n.assignTexture(t,"clearcoatRoughnessMap",s.clearcoatRoughnessTexture)),s.clearcoatNormalTexture!==void 0&&(r.push(n.assignTexture(t,"clearcoatNormalMap",s.clearcoatNormalTexture)),s.clearcoatNormalTexture.scale!==void 0)){const a=s.clearcoatNormalTexture.scale;t.clearcoatNormalScale=new c.Vector2(a,a)}return Promise.all(r)}}class so{constructor(e){this.parser=e,this.name=xe.KHR_MATERIALS_IRIDESCENCE}getMaterialType(e){const n=this.parser.json.materials[e];return!n.extensions||!n.extensions[this.name]?null:c.MeshPhysicalMaterial}extendMaterialParams(e,t){const n=this.parser,i=n.json.materials[e];if(!i.extensions||!i.extensions[this.name])return Promise.resolve();const r=[],s=i.extensions[this.name];return s.iridescenceFactor!==void 0&&(t.iridescence=s.iridescenceFactor),s.iridescenceTexture!==void 0&&r.push(n.assignTexture(t,"iridescenceMap",s.iridescenceTexture)),s.iridescenceIor!==void 0&&(t.iridescenceIOR=s.iridescenceIor),t.iridescenceThicknessRange===void 0&&(t.iridescenceThicknessRange=[100,400]),s.iridescenceThicknessMinimum!==void 0&&(t.iridescenceThicknessRange[0]=s.iridescenceThicknessMinimum),s.iridescenceThicknessMaximum!==void 0&&(t.iridescenceThicknessRange[1]=s.iridescenceThicknessMaximum),s.iridescenceThicknessTexture!==void 0&&r.push(n.assignTexture(t,"iridescenceThicknessMap",s.iridescenceThicknessTexture)),Promise.all(r)}}class oo{constructor(e){this.parser=e,this.name=xe.KHR_MATERIALS_SHEEN}getMaterialType(e){const n=this.parser.json.materials[e];return!n.extensions||!n.extensions[this.name]?null:c.MeshPhysicalMaterial}extendMaterialParams(e,t){const n=this.parser,i=n.json.materials[e];if(!i.extensions||!i.extensions[this.name])return Promise.resolve();const r=[];t.sheenColor=new c.Color(0,0,0),t.sheenRoughness=0,t.sheen=1;const s=i.extensions[this.name];return s.sheenColorFactor!==void 0&&t.sheenColor.fromArray(s.sheenColorFactor),s.sheenRoughnessFactor!==void 0&&(t.sheenRoughness=s.sheenRoughnessFactor),s.sheenColorTexture!==void 0&&r.push(n.assignTexture(t,"sheenColorMap",s.sheenColorTexture,3001)),s.sheenRoughnessTexture!==void 0&&r.push(n.assignTexture(t,"sheenRoughnessMap",s.sheenRoughnessTexture)),Promise.all(r)}}class ao{constructor(e){this.parser=e,this.name=xe.KHR_MATERIALS_TRANSMISSION}getMaterialType(e){const n=this.parser.json.materials[e];return!n.extensions||!n.extensions[this.name]?null:c.MeshPhysicalMaterial}extendMaterialParams(e,t){const n=this.parser,i=n.json.materials[e];if(!i.extensions||!i.extensions[this.name])return Promise.resolve();const r=[],s=i.extensions[this.name];return s.transmissionFactor!==void 0&&(t.transmission=s.transmissionFactor),s.transmissionTexture!==void 0&&r.push(n.assignTexture(t,"transmissionMap",s.transmissionTexture)),Promise.all(r)}}class lo{constructor(e){this.parser=e,this.name=xe.KHR_MATERIALS_VOLUME}getMaterialType(e){const n=this.parser.json.materials[e];return!n.extensions||!n.extensions[this.name]?null:c.MeshPhysicalMaterial}extendMaterialParams(e,t){const n=this.parser,i=n.json.materials[e];if(!i.extensions||!i.extensions[this.name])return Promise.resolve();const r=[],s=i.extensions[this.name];t.thickness=s.thicknessFactor!==void 0?s.thicknessFactor:0,s.thicknessTexture!==void 0&&r.push(n.assignTexture(t,"thicknessMap",s.thicknessTexture)),t.attenuationDistance=s.attenuationDistance||1/0;const a=s.attenuationColor||[1,1,1];return t.attenuationColor=new c.Color(a[0],a[1],a[2]),Promise.all(r)}}class co{constructor(e){this.parser=e,this.name=xe.KHR_MATERIALS_IOR}getMaterialType(e){const n=this.parser.json.materials[e];return!n.extensions||!n.extensions[this.name]?null:c.MeshPhysicalMaterial}extendMaterialParams(e,t){const i=this.parser.json.materials[e];if(!i.extensions||!i.extensions[this.name])return Promise.resolve();const r=i.extensions[this.name];return t.ior=r.ior!==void 0?r.ior:1.5,Promise.resolve()}}class ho{constructor(e){this.parser=e,this.name=xe.KHR_MATERIALS_SPECULAR}getMaterialType(e){const n=this.parser.json.materials[e];return!n.extensions||!n.extensions[this.name]?null:c.MeshPhysicalMaterial}extendMaterialParams(e,t){const n=this.parser,i=n.json.materials[e];if(!i.extensions||!i.extensions[this.name])return Promise.resolve();const r=[],s=i.extensions[this.name];t.specularIntensity=s.specularFactor!==void 0?s.specularFactor:1,s.specularTexture!==void 0&&r.push(n.assignTexture(t,"specularIntensityMap",s.specularTexture));const a=s.specularColorFactor||[1,1,1];return t.specularColor=new c.Color(a[0],a[1],a[2]),s.specularColorTexture!==void 0&&r.push(n.assignTexture(t,"specularColorMap",s.specularColorTexture,3001)),Promise.all(r)}}class uo{constructor(e){this.parser=e,this.name=xe.KHR_MATERIALS_ANISOTROPY}getMaterialType(e){const n=this.parser.json.materials[e];return!n.extensions||!n.extensions[this.name]?null:c.MeshPhysicalMaterial}extendMaterialParams(e,t){const n=this.parser,i=n.json.materials[e];if(!i.extensions||!i.extensions[this.name])return Promise.resolve();const r=[],s=i.extensions[this.name];return s.anisotropyStrength!==void 0&&(t.anisotropy=s.anisotropyStrength),s.anisotropyRotation!==void 0&&(t.anisotropyRotation=s.anisotropyRotation),s.anisotropyTexture!==void 0&&r.push(n.assignTexture(t,"anisotropyMap",s.anisotropyTexture)),Promise.all(r)}}class fo{constructor(e){this.parser=e,this.name=xe.KHR_TEXTURE_BASISU}loadTexture(e){const t=this.parser,n=t.json,i=n.textures[e];if(!i.extensions||!i.extensions[this.name])return null;const r=i.extensions[this.name],s=t.options.ktx2Loader;if(!s){if(n.extensionsRequired&&n.extensionsRequired.indexOf(this.name)>=0)throw new Error("THREE.GLTFLoader: setKTX2Loader must be called before loading KTX2 textures");return null}return t.loadTextureImage(e,r.source,s)}}class po{constructor(e){this.parser=e,this.name=xe.EXT_TEXTURE_WEBP,this.isSupported=null}loadTexture(e){const t=this.name,n=this.parser,i=n.json,r=i.textures[e];if(!r.extensions||!r.extensions[t])return null;const s=r.extensions[t],a=i.images[s.source];let l=n.textureLoader;if(a.uri){const f=n.options.manager.getHandler(a.uri);f!==null&&(l=f)}return this.detectSupport().then(function(f){if(f)return n.loadTextureImage(e,s.source,l);if(i.extensionsRequired&&i.extensionsRequired.indexOf(t)>=0)throw new Error("THREE.GLTFLoader: WebP required by asset but unsupported.");return n.loadTexture(e)})}detectSupport(){return this.isSupported||(this.isSupported=new Promise(function(e){const t=new Image;t.src="data:image/webp;base64,UklGRiIAAABXRUJQVlA4IBYAAAAwAQCdASoBAAEADsD+JaQAA3AAAAAA",t.onload=t.onerror=function(){e(t.height===1)}})),this.isSupported}}class mo{constructor(e){this.parser=e,this.name=xe.EXT_TEXTURE_AVIF,this.isSupported=null}loadTexture(e){const t=this.name,n=this.parser,i=n.json,r=i.textures[e];if(!r.extensions||!r.extensions[t])return null;const s=r.extensions[t],a=i.images[s.source];let l=n.textureLoader;if(a.uri){const f=n.options.manager.getHandler(a.uri);f!==null&&(l=f)}return this.detectSupport().then(function(f){if(f)return n.loadTextureImage(e,s.source,l);if(i.extensionsRequired&&i.extensionsRequired.indexOf(t)>=0)throw new Error("THREE.GLTFLoader: AVIF required by asset but unsupported.");return n.loadTexture(e)})}detectSupport(){return this.isSupported||(this.isSupported=new Promise(function(e){const t=new Image;t.src="data:image/avif;base64,AAAAIGZ0eXBhdmlmAAAAAGF2aWZtaWYxbWlhZk1BMUIAAADybWV0YQAAAAAAAAAoaGRscgAAAAAAAAAAcGljdAAAAAAAAAAAAAAAAGxpYmF2aWYAAAAADnBpdG0AAAAAAAEAAAAeaWxvYwAAAABEAAABAAEAAAABAAABGgAAABcAAAAoaWluZgAAAAAAAQAAABppbmZlAgAAAAABAABhdjAxQ29sb3IAAAAAamlwcnAAAABLaXBjbwAAABRpc3BlAAAAAAAAAAEAAAABAAAAEHBpeGkAAAAAAwgICAAAAAxhdjFDgQAMAAAAABNjb2xybmNseAACAAIABoAAAAAXaXBtYQAAAAAAAAABAAEEAQKDBAAAAB9tZGF0EgAKCBgABogQEDQgMgkQAAAAB8dSLfI=",t.onload=t.onerror=function(){e(t.height===1)}})),this.isSupported}}class go{constructor(e){this.name=xe.EXT_MESHOPT_COMPRESSION,this.parser=e}loadBufferView(e){const t=this.parser.json,n=t.bufferViews[e];if(n.extensions&&n.extensions[this.name]){const i=n.extensions[this.name],r=this.parser.getDependency("buffer",i.buffer),s=this.parser.options.meshoptDecoder;if(!s||!s.supported){if(t.extensionsRequired&&t.extensionsRequired.indexOf(this.name)>=0)throw new Error("THREE.GLTFLoader: setMeshoptDecoder must be called before loading compressed files");return null}return r.then(function(a){const l=i.byteOffset||0,f=i.byteLength||0,u=i.count,d=i.byteStride,m=new Uint8Array(a,l,f);return s.decodeGltfBufferAsync?s.decodeGltfBufferAsync(u,d,m,i.mode,i.filter).then(function(y){return y.buffer}):s.ready.then(function(){const y=new ArrayBuffer(u*d);return s.decodeGltfBuffer(new Uint8Array(y),u,d,m,i.mode,i.filter),y})})}else return null}}class yo{constructor(e){this.name=xe.EXT_MESH_GPU_INSTANCING,this.parser=e}createNodeMesh(e){const t=this.parser.json,n=t.nodes[e];if(!n.extensions||!n.extensions[this.name]||n.mesh===void 0)return null;const i=t.meshes[n.mesh];for(const f of i.primitives)if(f.mode!==Ye.TRIANGLES&&f.mode!==Ye.TRIANGLE_STRIP&&f.mode!==Ye.TRIANGLE_FAN&&f.mode!==void 0)return null;const s=n.extensions[this.name].attributes,a=[],l={};for(const f in s)a.push(this.parser.getDependency("accessor",s[f]).then(u=>(l[f]=u,l[f])));return a.length<1?null:(a.push(this.parser.createNodeMesh(e)),Promise.all(a).then(f=>{const u=f.pop(),d=u.isGroup?u.children:[u],m=f[0].count,y=[];for(const b of d){const A=new c.Matrix4,_=new c.Vector3,L=new c.Quaternion,I=new c.Vector3(1,1,1),S=new c.InstancedMesh(b.geometry,b.material,m);for(let g=0;g<m;g++)l.TRANSLATION&&_.fromBufferAttribute(l.TRANSLATION,g),l.ROTATION&&L.fromBufferAttribute(l.ROTATION,g),l.SCALE&&I.fromBufferAttribute(l.SCALE,g),S.setMatrixAt(g,A.compose(_,L,I));for(const g in l)g!=="TRANSLATION"&&g!=="ROTATION"&&g!=="SCALE"&&b.geometry.setAttribute(g,l[g]);c.Object3D.prototype.copy.call(S,b),this.parser.assignFinalMaterial(S),y.push(S)}return u.isGroup?(u.clear(),u.add(...y),u):y[0]}))}}const Vi="glTF",Gt=12,zi={JSON:1313821514,BIN:5130562};class _o{constructor(e){this.name=xe.KHR_BINARY_GLTF,this.content=null,this.body=null;const t=new DataView(e,0,Gt);if(this.header={magic:c.LoaderUtils.decodeText(new Uint8Array(e.slice(0,4))),version:t.getUint32(4,!0),length:t.getUint32(8,!0)},this.header.magic!==Vi)throw new Error("THREE.GLTFLoader: Unsupported glTF-Binary header.");if(this.header.version<2)throw new Error("THREE.GLTFLoader: Legacy binary file detected.");const n=this.header.length-Gt,i=new DataView(e,Gt);let r=0;for(;r<n;){const s=i.getUint32(r,!0);r+=4;const a=i.getUint32(r,!0);if(r+=4,a===zi.JSON){const l=new Uint8Array(e,Gt+r,s);this.content=c.LoaderUtils.decodeText(l)}else if(a===zi.BIN){const l=Gt+r;this.body=e.slice(l,l+s)}r+=s}if(this.content===null)throw new Error("THREE.GLTFLoader: JSON content not found.")}}class vo{constructor(e,t){if(!t)throw new Error("THREE.GLTFLoader: No DRACOLoader instance provided.");this.name=xe.KHR_DRACO_MESH_COMPRESSION,this.json=e,this.dracoLoader=t,this.dracoLoader.preload()}decodePrimitive(e,t){const n=this.json,i=this.dracoLoader,r=e.extensions[this.name].bufferView,s=e.extensions[this.name].attributes,a={},l={},f={};for(const u in s){const d=Nn[u]||u.toLowerCase();a[d]=s[u]}for(const u in e.attributes){const d=Nn[u]||u.toLowerCase();if(s[u]!==void 0){const m=n.accessors[e.attributes[u]],y=Lt[m.componentType];f[d]=y.name,l[d]=m.normalized===!0}}return t.getDependency("bufferView",r).then(function(u){return new Promise(function(d){i.decodeDracoFile(u,function(m){for(const y in m.attributes){const b=m.attributes[y],A=l[y];A!==void 0&&(b.normalized=A)}d(m)},a,f)})})}}class wo{constructor(){this.name=xe.KHR_TEXTURE_TRANSFORM}extendTexture(e,t){return(t.texCoord===void 0||t.texCoord===e.channel)&&t.offset===void 0&&t.rotation===void 0&&t.scale===void 0||(e=e.clone(),t.texCoord!==void 0&&(e.channel=t.texCoord),t.offset!==void 0&&e.offset.fromArray(t.offset),t.rotation!==void 0&&(e.rotation=t.rotation),t.scale!==void 0&&e.repeat.fromArray(t.scale),e.needsUpdate=!0),e}}class xo{constructor(){this.name=xe.KHR_MESH_QUANTIZATION}}class ji extends c.Interpolant{constructor(e,t,n,i){super(e,t,n,i)}copySampleValue_(e){const t=this.resultBuffer,n=this.sampleValues,i=this.valueSize,r=e*i*3+i;for(let s=0;s!==i;s++)t[s]=n[r+s];return t}interpolate_(e,t,n,i){const r=this.resultBuffer,s=this.sampleValues,a=this.valueSize,l=a*2,f=a*3,u=i-t,d=(n-t)/u,m=d*d,y=m*d,b=e*f,A=b-f,_=-2*y+3*m,L=y-m,I=1-_,S=L-m+d;for(let g=0;g!==a;g++){const O=s[A+g+a],x=s[A+g+l]*u,C=s[b+g+a],p=s[b+g]*u;r[g]=I*O+S*x+_*C+L*p}return r}}const bo=new c.Quaternion;class Mo extends ji{interpolate_(e,t,n,i){const r=super.interpolate_(e,t,n,i);return bo.fromArray(r).normalize().toArray(r),r}}const Ye={FLOAT:5126,FLOAT_MAT3:35675,FLOAT_MAT4:35676,FLOAT_VEC2:35664,FLOAT_VEC3:35665,FLOAT_VEC4:35666,LINEAR:9729,REPEAT:10497,SAMPLER_2D:35678,POINTS:0,LINES:1,LINE_LOOP:2,LINE_STRIP:3,TRIANGLES:4,TRIANGLE_STRIP:5,TRIANGLE_FAN:6,UNSIGNED_BYTE:5121,UNSIGNED_SHORT:5123},Lt={5120:Int8Array,5121:Uint8Array,5122:Int16Array,5123:Uint16Array,5125:Uint32Array,5126:Float32Array},Gi={9728:c.NearestFilter,9729:c.LinearFilter,9984:c.NearestMipmapNearestFilter,9985:c.LinearMipmapNearestFilter,9986:c.NearestMipmapLinearFilter,9987:c.LinearMipmapLinearFilter},Ri={33071:c.ClampToEdgeWrapping,33648:c.MirroredRepeatWrapping,10497:c.RepeatWrapping},Un={SCALAR:1,VEC2:2,VEC3:3,VEC4:4,MAT2:4,MAT3:9,MAT4:16},Nn={POSITION:"position",NORMAL:"normal",TANGENT:"tangent",...Ms>=152?{TEXCOORD_0:"uv",TEXCOORD_1:"uv1",TEXCOORD_2:"uv2",TEXCOORD_3:"uv3"}:{TEXCOORD_0:"uv",TEXCOORD_1:"uv2"},COLOR_0:"color",WEIGHTS_0:"skinWeight",JOINTS_0:"skinIndex"},ut={scale:"scale",translation:"position",rotation:"quaternion",weights:"morphTargetInfluences"},Ao={CUBICSPLINE:void 0,LINEAR:c.InterpolateLinear,STEP:c.InterpolateDiscrete},Vn={OPAQUE:"OPAQUE",MASK:"MASK",BLEND:"BLEND"};function So(o){return o.DefaultMaterial===void 0&&(o.DefaultMaterial=new c.MeshStandardMaterial({color:16777215,emissive:0,metalness:1,roughness:1,transparent:!1,depthTest:!0,side:c.FrontSide})),o.DefaultMaterial}function vt(o,e,t){for(const n in t.extensions)o[n]===void 0&&(e.userData.gltfExtensions=e.userData.gltfExtensions||{},e.userData.gltfExtensions[n]=t.extensions[n])}function ft(o,e){e.extras!==void 0&&(typeof e.extras=="object"?Object.assign(o.userData,e.extras):console.warn("THREE.GLTFLoader: Ignoring primitive type .extras, "+e.extras))}function Po(o,e,t){let n=!1,i=!1,r=!1;for(let f=0,u=e.length;f<u;f++){const d=e[f];if(d.POSITION!==void 0&&(n=!0),d.NORMAL!==void 0&&(i=!0),d.COLOR_0!==void 0&&(r=!0),n&&i&&r)break}if(!n&&!i&&!r)return Promise.resolve(o);const s=[],a=[],l=[];for(let f=0,u=e.length;f<u;f++){const d=e[f];if(n){const m=d.POSITION!==void 0?t.getDependency("accessor",d.POSITION):o.attributes.position;s.push(m)}if(i){const m=d.NORMAL!==void 0?t.getDependency("accessor",d.NORMAL):o.attributes.normal;a.push(m)}if(r){const m=d.COLOR_0!==void 0?t.getDependency("accessor",d.COLOR_0):o.attributes.color;l.push(m)}}return Promise.all([Promise.all(s),Promise.all(a),Promise.all(l)]).then(function(f){const u=f[0],d=f[1],m=f[2];return n&&(o.morphAttributes.position=u),i&&(o.morphAttributes.normal=d),r&&(o.morphAttributes.color=m),o.morphTargetsRelative=!0,o})}function Co(o,e){if(o.updateMorphTargets(),e.weights!==void 0)for(let t=0,n=e.weights.length;t<n;t++)o.morphTargetInfluences[t]=e.weights[t];if(e.extras&&Array.isArray(e.extras.targetNames)){const t=e.extras.targetNames;if(o.morphTargetInfluences.length===t.length){o.morphTargetDictionary={};for(let n=0,i=t.length;n<i;n++)o.morphTargetDictionary[t[n]]=n}else console.warn("THREE.GLTFLoader: Invalid extras.targetNames length. Ignoring names.")}}function Lo(o){let e;const t=o.extensions&&o.extensions[xe.KHR_DRACO_MESH_COMPRESSION];if(t?e="draco:"+t.bufferView+":"+t.indices+":"+zn(t.attributes):e=o.indices+":"+zn(o.attributes)+":"+o.mode,o.targets!==void 0)for(let n=0,i=o.targets.length;n<i;n++)e+=":"+zn(o.targets[n]);return e}function zn(o){let e="";const t=Object.keys(o).sort();for(let n=0,i=t.length;n<i;n++)e+=t[n]+":"+o[t[n]]+";";return e}function jn(o){switch(o){case Int8Array:return 1/127;case Uint8Array:return 1/255;case Int16Array:return 1/32767;case Uint16Array:return 1/65535;default:throw new Error("THREE.GLTFLoader: Unsupported normalized accessor component type.")}}function To(o){return o.search(/\.jpe?g($|\?)/i)>0||o.search(/^data\:image\/jpeg/)===0?"image/jpeg":o.search(/\.webp($|\?)/i)>0||o.search(/^data\:image\/webp/)===0?"image/webp":"image/png"}const Oo=new c.Matrix4;class Io{constructor(e={},t={}){this.json=e,this.extensions={},this.plugins={},this.options=t,this.cache=new eo,this.associations=new Map,this.primitiveCache={},this.nodeCache={},this.meshCache={refs:{},uses:{}},this.cameraCache={refs:{},uses:{}},this.lightCache={refs:{},uses:{}},this.sourceCache={},this.textureCache={},this.nodeNamesUsed={};let n=!1,i=!1,r=-1;typeof navigator<"u"&&typeof navigator.userAgent<"u"&&(n=/^((?!chrome|android).)*safari/i.test(navigator.userAgent)===!0,i=navigator.userAgent.indexOf("Firefox")>-1,r=i?navigator.userAgent.match(/Firefox\/([0-9]+)\./)[1]:-1),typeof createImageBitmap>"u"||n||i&&r<98?this.textureLoader=new c.TextureLoader(this.options.manager):this.textureLoader=new c.ImageBitmapLoader(this.options.manager),this.textureLoader.setCrossOrigin(this.options.crossOrigin),this.textureLoader.setRequestHeader(this.options.requestHeader),this.fileLoader=new c.FileLoader(this.options.manager),this.fileLoader.setResponseType("arraybuffer"),this.options.crossOrigin==="use-credentials"&&this.fileLoader.setWithCredentials(!0)}setExtensions(e){this.extensions=e}setPlugins(e){this.plugins=e}parse(e,t){const n=this,i=this.json,r=this.extensions;this.cache.removeAll(),this.nodeCache={},this._invokeAll(function(s){return s._markDefs&&s._markDefs()}),Promise.all(this._invokeAll(function(s){return s.beforeRoot&&s.beforeRoot()})).then(function(){return Promise.all([n.getDependencies("scene"),n.getDependencies("animation"),n.getDependencies("camera")])}).then(function(s){const a={scene:s[0][i.scene||0],scenes:s[0],animations:s[1],cameras:s[2],asset:i.asset,parser:n,userData:{}};vt(r,a,i),ft(a,i),Promise.all(n._invokeAll(function(l){return l.afterRoot&&l.afterRoot(a)})).then(function(){e(a)})}).catch(t)}_markDefs(){const e=this.json.nodes||[],t=this.json.skins||[],n=this.json.meshes||[];for(let i=0,r=t.length;i<r;i++){const s=t[i].joints;for(let a=0,l=s.length;a<l;a++)e[s[a]].isBone=!0}for(let i=0,r=e.length;i<r;i++){const s=e[i];s.mesh!==void 0&&(this._addNodeRef(this.meshCache,s.mesh),s.skin!==void 0&&(n[s.mesh].isSkinnedMesh=!0)),s.camera!==void 0&&this._addNodeRef(this.cameraCache,s.camera)}}_addNodeRef(e,t){t!==void 0&&(e.refs[t]===void 0&&(e.refs[t]=e.uses[t]=0),e.refs[t]++)}_getNodeRef(e,t,n){if(e.refs[t]<=1)return n;const i=n.clone(),r=(s,a)=>{const l=this.associations.get(s);l!=null&&this.associations.set(a,l);for(const[f,u]of s.children.entries())r(u,a.children[f])};return r(n,i),i.name+="_instance_"+e.uses[t]++,i}_invokeOne(e){const t=Object.values(this.plugins);t.push(this);for(let n=0;n<t.length;n++){const i=e(t[n]);if(i)return i}return null}_invokeAll(e){const t=Object.values(this.plugins);t.unshift(this);const n=[];for(let i=0;i<t.length;i++){const r=e(t[i]);r&&n.push(r)}return n}getDependency(e,t){const n=e+":"+t;let i=this.cache.get(n);if(!i){switch(e){case"scene":i=this.loadScene(t);break;case"node":i=this._invokeOne(function(r){return r.loadNode&&r.loadNode(t)});break;case"mesh":i=this._invokeOne(function(r){return r.loadMesh&&r.loadMesh(t)});break;case"accessor":i=this.loadAccessor(t);break;case"bufferView":i=this._invokeOne(function(r){return r.loadBufferView&&r.loadBufferView(t)});break;case"buffer":i=this.loadBuffer(t);break;case"material":i=this._invokeOne(function(r){return r.loadMaterial&&r.loadMaterial(t)});break;case"texture":i=this._invokeOne(function(r){return r.loadTexture&&r.loadTexture(t)});break;case"skin":i=this.loadSkin(t);break;case"animation":i=this._invokeOne(function(r){return r.loadAnimation&&r.loadAnimation(t)});break;case"camera":i=this.loadCamera(t);break;default:if(i=this._invokeOne(function(r){return r!=this&&r.getDependency&&r.getDependency(e,t)}),!i)throw new Error("Unknown type: "+e);break}this.cache.add(n,i)}return i}getDependencies(e){let t=this.cache.get(e);if(!t){const n=this,i=this.json[e+(e==="mesh"?"es":"s")]||[];t=Promise.all(i.map(function(r,s){return n.getDependency(e,s)})),this.cache.add(e,t)}return t}loadBuffer(e){const t=this.json.buffers[e],n=this.fileLoader;if(t.type&&t.type!=="arraybuffer")throw new Error("THREE.GLTFLoader: "+t.type+" buffer type is not supported.");if(t.uri===void 0&&e===0)return Promise.resolve(this.extensions[xe.KHR_BINARY_GLTF].body);const i=this.options;return new Promise(function(r,s){n.load(c.LoaderUtils.resolveURL(t.uri,i.path),r,void 0,function(){s(new Error('THREE.GLTFLoader: Failed to load buffer "'+t.uri+'".'))})})}loadBufferView(e){const t=this.json.bufferViews[e];return this.getDependency("buffer",t.buffer).then(function(n){const i=t.byteLength||0,r=t.byteOffset||0;return n.slice(r,r+i)})}loadAccessor(e){const t=this,n=this.json,i=this.json.accessors[e];if(i.bufferView===void 0&&i.sparse===void 0){const s=Un[i.type],a=Lt[i.componentType],l=i.normalized===!0,f=new a(i.count*s);return Promise.resolve(new c.BufferAttribute(f,s,l))}const r=[];return i.bufferView!==void 0?r.push(this.getDependency("bufferView",i.bufferView)):r.push(null),i.sparse!==void 0&&(r.push(this.getDependency("bufferView",i.sparse.indices.bufferView)),r.push(this.getDependency("bufferView",i.sparse.values.bufferView))),Promise.all(r).then(function(s){const a=s[0],l=Un[i.type],f=Lt[i.componentType],u=f.BYTES_PER_ELEMENT,d=u*l,m=i.byteOffset||0,y=i.bufferView!==void 0?n.bufferViews[i.bufferView].byteStride:void 0,b=i.normalized===!0;let A,_;if(y&&y!==d){const L=Math.floor(m/y),I="InterleavedBuffer:"+i.bufferView+":"+i.componentType+":"+L+":"+i.count;let S=t.cache.get(I);S||(A=new f(a,L*y,i.count*y/u),S=new c.InterleavedBuffer(A,y/u),t.cache.add(I,S)),_=new c.InterleavedBufferAttribute(S,l,m%y/u,b)}else a===null?A=new f(i.count*l):A=new f(a,m,i.count*l),_=new c.BufferAttribute(A,l,b);if(i.sparse!==void 0){const L=Un.SCALAR,I=Lt[i.sparse.indices.componentType],S=i.sparse.indices.byteOffset||0,g=i.sparse.values.byteOffset||0,O=new I(s[1],S,i.sparse.count*L),x=new f(s[2],g,i.sparse.count*l);a!==null&&(_=new c.BufferAttribute(_.array.slice(),_.itemSize,_.normalized));for(let C=0,p=O.length;C<p;C++){const w=O[C];if(_.setX(w,x[C*l]),l>=2&&_.setY(w,x[C*l+1]),l>=3&&_.setZ(w,x[C*l+2]),l>=4&&_.setW(w,x[C*l+3]),l>=5)throw new Error("THREE.GLTFLoader: Unsupported itemSize in sparse BufferAttribute.")}}return _})}loadTexture(e){const t=this.json,n=this.options,r=t.textures[e].source,s=t.images[r];let a=this.textureLoader;if(s.uri){const l=n.manager.getHandler(s.uri);l!==null&&(a=l)}return this.loadTextureImage(e,r,a)}loadTextureImage(e,t,n){const i=this,r=this.json,s=r.textures[e],a=r.images[t],l=(a.uri||a.bufferView)+":"+s.sampler;if(this.textureCache[l])return this.textureCache[l];const f=this.loadImageSource(t,n).then(function(u){u.flipY=!1,u.name=s.name||a.name||"",u.name===""&&typeof a.uri=="string"&&a.uri.startsWith("data:image/")===!1&&(u.name=a.uri);const m=(r.samplers||{})[s.sampler]||{};return u.magFilter=Gi[m.magFilter]||c.LinearFilter,u.minFilter=Gi[m.minFilter]||c.LinearMipmapLinearFilter,u.wrapS=Ri[m.wrapS]||c.RepeatWrapping,u.wrapT=Ri[m.wrapT]||c.RepeatWrapping,i.associations.set(u,{textures:e}),u}).catch(function(){return null});return this.textureCache[l]=f,f}loadImageSource(e,t){const n=this,i=this.json,r=this.options;if(this.sourceCache[e]!==void 0)return this.sourceCache[e].then(d=>d.clone());const s=i.images[e],a=self.URL||self.webkitURL;let l=s.uri||"",f=!1;if(s.bufferView!==void 0)l=n.getDependency("bufferView",s.bufferView).then(function(d){f=!0;const m=new Blob([d],{type:s.mimeType});return l=a.createObjectURL(m),l});else if(s.uri===void 0)throw new Error("THREE.GLTFLoader: Image "+e+" is missing URI and bufferView");const u=Promise.resolve(l).then(function(d){return new Promise(function(m,y){let b=m;t.isImageBitmapLoader===!0&&(b=function(A){const _=new c.Texture(A);_.needsUpdate=!0,m(_)}),t.load(c.LoaderUtils.resolveURL(d,r.path),b,void 0,y)})}).then(function(d){return f===!0&&a.revokeObjectURL(l),d.userData.mimeType=s.mimeType||To(s.uri),d}).catch(function(d){throw console.error("THREE.GLTFLoader: Couldn't load texture",l),d});return this.sourceCache[e]=u,u}assignTexture(e,t,n,i){const r=this;return this.getDependency("texture",n.index).then(function(s){if(!s)return null;if(n.texCoord!==void 0&&n.texCoord>0&&(s=s.clone(),s.channel=n.texCoord),r.extensions[xe.KHR_TEXTURE_TRANSFORM]){const a=n.extensions!==void 0?n.extensions[xe.KHR_TEXTURE_TRANSFORM]:void 0;if(a){const l=r.associations.get(s);s=r.extensions[xe.KHR_TEXTURE_TRANSFORM].extendTexture(s,a),r.associations.set(s,l)}}return i!==void 0&&("colorSpace"in s?s.colorSpace=i===3001?"srgb":"srgb-linear":s.encoding=i),e[t]=s,s})}assignFinalMaterial(e){const t=e.geometry;let n=e.material;const i=t.attributes.tangent===void 0,r=t.attributes.color!==void 0,s=t.attributes.normal===void 0;if(e.isPoints){const a="PointsMaterial:"+n.uuid;let l=this.cache.get(a);l||(l=new c.PointsMaterial,c.Material.prototype.copy.call(l,n),l.color.copy(n.color),l.map=n.map,l.sizeAttenuation=!1,this.cache.add(a,l)),n=l}else if(e.isLine){const a="LineBasicMaterial:"+n.uuid;let l=this.cache.get(a);l||(l=new c.LineBasicMaterial,c.Material.prototype.copy.call(l,n),l.color.copy(n.color),l.map=n.map,this.cache.add(a,l)),n=l}if(i||r||s){let a="ClonedMaterial:"+n.uuid+":";i&&(a+="derivative-tangents:"),r&&(a+="vertex-colors:"),s&&(a+="flat-shading:");let l=this.cache.get(a);l||(l=n.clone(),r&&(l.vertexColors=!0),s&&(l.flatShading=!0),i&&(l.normalScale&&(l.normalScale.y*=-1),l.clearcoatNormalScale&&(l.clearcoatNormalScale.y*=-1)),this.cache.add(a,l),this.associations.set(l,this.associations.get(n))),n=l}e.material=n}getMaterialType(){return c.MeshStandardMaterial}loadMaterial(e){const t=this,n=this.json,i=this.extensions,r=n.materials[e];let s;const a={},l=r.extensions||{},f=[];if(l[xe.KHR_MATERIALS_UNLIT]){const d=i[xe.KHR_MATERIALS_UNLIT];s=d.getMaterialType(),f.push(d.extendParams(a,r,t))}else{const d=r.pbrMetallicRoughness||{};if(a.color=new c.Color(1,1,1),a.opacity=1,Array.isArray(d.baseColorFactor)){const m=d.baseColorFactor;a.color.fromArray(m),a.opacity=m[3]}d.baseColorTexture!==void 0&&f.push(t.assignTexture(a,"map",d.baseColorTexture,3001)),a.metalness=d.metallicFactor!==void 0?d.metallicFactor:1,a.roughness=d.roughnessFactor!==void 0?d.roughnessFactor:1,d.metallicRoughnessTexture!==void 0&&(f.push(t.assignTexture(a,"metalnessMap",d.metallicRoughnessTexture)),f.push(t.assignTexture(a,"roughnessMap",d.metallicRoughnessTexture))),s=this._invokeOne(function(m){return m.getMaterialType&&m.getMaterialType(e)}),f.push(Promise.all(this._invokeAll(function(m){return m.extendMaterialParams&&m.extendMaterialParams(e,a)})))}r.doubleSided===!0&&(a.side=c.DoubleSide);const u=r.alphaMode||Vn.OPAQUE;if(u===Vn.BLEND?(a.transparent=!0,a.depthWrite=!1):(a.transparent=!1,u===Vn.MASK&&(a.alphaTest=r.alphaCutoff!==void 0?r.alphaCutoff:.5)),r.normalTexture!==void 0&&s!==c.MeshBasicMaterial&&(f.push(t.assignTexture(a,"normalMap",r.normalTexture)),a.normalScale=new c.Vector2(1,1),r.normalTexture.scale!==void 0)){const d=r.normalTexture.scale;a.normalScale.set(d,d)}return r.occlusionTexture!==void 0&&s!==c.MeshBasicMaterial&&(f.push(t.assignTexture(a,"aoMap",r.occlusionTexture)),r.occlusionTexture.strength!==void 0&&(a.aoMapIntensity=r.occlusionTexture.strength)),r.emissiveFactor!==void 0&&s!==c.MeshBasicMaterial&&(a.emissive=new c.Color().fromArray(r.emissiveFactor)),r.emissiveTexture!==void 0&&s!==c.MeshBasicMaterial&&f.push(t.assignTexture(a,"emissiveMap",r.emissiveTexture,3001)),Promise.all(f).then(function(){const d=new s(a);return r.name&&(d.name=r.name),ft(d,r),t.associations.set(d,{materials:e}),r.extensions&&vt(i,d,r),d})}createUniqueName(e){const t=c.PropertyBinding.sanitizeNodeName(e||"");return t in this.nodeNamesUsed?t+"_"+ ++this.nodeNamesUsed[t]:(this.nodeNamesUsed[t]=0,t)}loadGeometries(e){const t=this,n=this.extensions,i=this.primitiveCache;function r(a){return n[xe.KHR_DRACO_MESH_COMPRESSION].decodePrimitive(a,t).then(function(l){return Ei(l,a,t)})}const s=[];for(let a=0,l=e.length;a<l;a++){const f=e[a],u=Lo(f),d=i[u];if(d)s.push(d.promise);else{let m;f.extensions&&f.extensions[xe.KHR_DRACO_MESH_COMPRESSION]?m=r(f):m=Ei(new c.BufferGeometry,f,t),i[u]={primitive:f,promise:m},s.push(m)}}return Promise.all(s)}loadMesh(e){const t=this,n=this.json,i=this.extensions,r=n.meshes[e],s=r.primitives,a=[];for(let l=0,f=s.length;l<f;l++){const u=s[l].material===void 0?So(this.cache):this.getDependency("material",s[l].material);a.push(u)}return a.push(t.loadGeometries(s)),Promise.all(a).then(function(l){const f=l.slice(0,l.length-1),u=l[l.length-1],d=[];for(let y=0,b=u.length;y<b;y++){const A=u[y],_=s[y];let L;const I=f[y];if(_.mode===Ye.TRIANGLES||_.mode===Ye.TRIANGLE_STRIP||_.mode===Ye.TRIANGLE_FAN||_.mode===void 0)L=r.isSkinnedMesh===!0?new c.SkinnedMesh(A,I):new c.Mesh(A,I),L.isSkinnedMesh===!0&&L.normalizeSkinWeights(),_.mode===Ye.TRIANGLE_STRIP?L.geometry=Ci(L.geometry,c.TriangleStripDrawMode):_.mode===Ye.TRIANGLE_FAN&&(L.geometry=Ci(L.geometry,c.TriangleFanDrawMode));else if(_.mode===Ye.LINES)L=new c.LineSegments(A,I);else if(_.mode===Ye.LINE_STRIP)L=new c.Line(A,I);else if(_.mode===Ye.LINE_LOOP)L=new c.LineLoop(A,I);else if(_.mode===Ye.POINTS)L=new c.Points(A,I);else throw new Error("THREE.GLTFLoader: Primitive mode unsupported: "+_.mode);Object.keys(L.geometry.morphAttributes).length>0&&Co(L,r),L.name=t.createUniqueName(r.name||"mesh_"+e),ft(L,r),_.extensions&&vt(i,L,_),t.assignFinalMaterial(L),d.push(L)}for(let y=0,b=d.length;y<b;y++)t.associations.set(d[y],{meshes:e,primitives:y});if(d.length===1)return r.extensions&&vt(i,d[0],r),d[0];const m=new c.Group;r.extensions&&vt(i,m,r),t.associations.set(m,{meshes:e});for(let y=0,b=d.length;y<b;y++)m.add(d[y]);return m})}loadCamera(e){let t;const n=this.json.cameras[e],i=n[n.type];if(!i){console.warn("THREE.GLTFLoader: Missing camera parameters.");return}return n.type==="perspective"?t=new c.PerspectiveCamera(c.MathUtils.radToDeg(i.yfov),i.aspectRatio||1,i.znear||1,i.zfar||2e6):n.type==="orthographic"&&(t=new c.OrthographicCamera(-i.xmag,i.xmag,i.ymag,-i.ymag,i.znear,i.zfar)),n.name&&(t.name=this.createUniqueName(n.name)),ft(t,n),Promise.resolve(t)}loadSkin(e){const t=this.json.skins[e],n=[];for(let i=0,r=t.joints.length;i<r;i++)n.push(this._loadNodeShallow(t.joints[i]));return t.inverseBindMatrices!==void 0?n.push(this.getDependency("accessor",t.inverseBindMatrices)):n.push(null),Promise.all(n).then(function(i){const r=i.pop(),s=i,a=[],l=[];for(let f=0,u=s.length;f<u;f++){const d=s[f];if(d){a.push(d);const m=new c.Matrix4;r!==null&&m.fromArray(r.array,f*16),l.push(m)}else console.warn('THREE.GLTFLoader: Joint "%s" could not be found.',t.joints[f])}return new c.Skeleton(a,l)})}loadAnimation(e){const n=this.json.animations[e],i=n.name?n.name:"animation_"+e,r=[],s=[],a=[],l=[],f=[];for(let u=0,d=n.channels.length;u<d;u++){const m=n.channels[u],y=n.samplers[m.sampler],b=m.target,A=b.node,_=n.parameters!==void 0?n.parameters[y.input]:y.input,L=n.parameters!==void 0?n.parameters[y.output]:y.output;b.node!==void 0&&(r.push(this.getDependency("node",A)),s.push(this.getDependency("accessor",_)),a.push(this.getDependency("accessor",L)),l.push(y),f.push(b))}return Promise.all([Promise.all(r),Promise.all(s),Promise.all(a),Promise.all(l),Promise.all(f)]).then(function(u){const d=u[0],m=u[1],y=u[2],b=u[3],A=u[4],_=[];for(let L=0,I=d.length;L<I;L++){const S=d[L],g=m[L],O=y[L],x=b[L],C=A[L];if(S===void 0)continue;S.updateMatrix();let p;switch(ut[C.path]){case ut.weights:p=c.NumberKeyframeTrack;break;case ut.rotation:p=c.QuaternionKeyframeTrack;break;case ut.position:case ut.scale:default:p=c.VectorKeyframeTrack;break}const w=S.name?S.name:S.uuid,v=x.interpolation!==void 0?Ao[x.interpolation]:c.InterpolateLinear,T=[];ut[C.path]===ut.weights?S.traverse(function(Q){Q.morphTargetInfluences&&T.push(Q.name?Q.name:Q.uuid)}):T.push(w);let k=O.array;if(O.normalized){const Q=jn(k.constructor),Y=new Float32Array(k.length);for(let $=0,ee=k.length;$<ee;$++)Y[$]=k[$]*Q;k=Y}for(let Q=0,Y=T.length;Q<Y;Q++){const $=new p(T[Q]+"."+ut[C.path],g.array,k,v);x.interpolation==="CUBICSPLINE"&&($.createInterpolant=function(q){const Z=this instanceof c.QuaternionKeyframeTrack?Mo:ji;return new Z(this.times,this.values,this.getValueSize()/3,q)},$.createInterpolant.isInterpolantFactoryMethodGLTFCubicSpline=!0),_.push($)}}return new c.AnimationClip(i,void 0,_)})}createNodeMesh(e){const t=this.json,n=this,i=t.nodes[e];return i.mesh===void 0?null:n.getDependency("mesh",i.mesh).then(function(r){const s=n._getNodeRef(n.meshCache,i.mesh,r);return i.weights!==void 0&&s.traverse(function(a){if(a.isMesh)for(let l=0,f=i.weights.length;l<f;l++)a.morphTargetInfluences[l]=i.weights[l]}),s})}loadNode(e){const t=this.json,n=this,i=t.nodes[e],r=n._loadNodeShallow(e),s=[],a=i.children||[];for(let f=0,u=a.length;f<u;f++)s.push(n.getDependency("node",a[f]));const l=i.skin===void 0?Promise.resolve(null):n.getDependency("skin",i.skin);return Promise.all([r,Promise.all(s),l]).then(function(f){const u=f[0],d=f[1],m=f[2];m!==null&&u.traverse(function(y){y.isSkinnedMesh&&y.bind(m,Oo)});for(let y=0,b=d.length;y<b;y++)u.add(d[y]);return u})}_loadNodeShallow(e){const t=this.json,n=this.extensions,i=this;if(this.nodeCache[e]!==void 0)return this.nodeCache[e];const r=t.nodes[e],s=r.name?i.createUniqueName(r.name):"",a=[],l=i._invokeOne(function(f){return f.createNodeMesh&&f.createNodeMesh(e)});return l&&a.push(l),r.camera!==void 0&&a.push(i.getDependency("camera",r.camera).then(function(f){return i._getNodeRef(i.cameraCache,r.camera,f)})),i._invokeAll(function(f){return f.createNodeAttachment&&f.createNodeAttachment(e)}).forEach(function(f){a.push(f)}),this.nodeCache[e]=Promise.all(a).then(function(f){let u;if(r.isBone===!0?u=new c.Bone:f.length>1?u=new c.Group:f.length===1?u=f[0]:u=new c.Object3D,u!==f[0])for(let d=0,m=f.length;d<m;d++)u.add(f[d]);if(r.name&&(u.userData.name=r.name,u.name=s),ft(u,r),r.extensions&&vt(n,u,r),r.matrix!==void 0){const d=new c.Matrix4;d.fromArray(r.matrix),u.applyMatrix4(d)}else r.translation!==void 0&&u.position.fromArray(r.translation),r.rotation!==void 0&&u.quaternion.fromArray(r.rotation),r.scale!==void 0&&u.scale.fromArray(r.scale);return i.associations.has(u)||i.associations.set(u,{}),i.associations.get(u).nodes=e,u}),this.nodeCache[e]}loadScene(e){const t=this.extensions,n=this.json.scenes[e],i=this,r=new c.Group;n.name&&(r.name=i.createUniqueName(n.name)),ft(r,n),n.extensions&&vt(t,r,n);const s=n.nodes||[],a=[];for(let l=0,f=s.length;l<f;l++)a.push(i.getDependency("node",s[l]));return Promise.all(a).then(function(l){for(let u=0,d=l.length;u<d;u++)r.add(l[u]);const f=u=>{const d=new Map;for(const[m,y]of i.associations)(m instanceof c.Material||m instanceof c.Texture)&&d.set(m,y);return u.traverse(m=>{const y=i.associations.get(m);y!=null&&d.set(m,y)}),d};return i.associations=f(r),r})}}function Do(o,e,t){const n=e.attributes,i=new c.Box3;if(n.POSITION!==void 0){const a=t.json.accessors[n.POSITION],l=a.min,f=a.max;if(l!==void 0&&f!==void 0){if(i.set(new c.Vector3(l[0],l[1],l[2]),new c.Vector3(f[0],f[1],f[2])),a.normalized){const u=jn(Lt[a.componentType]);i.min.multiplyScalar(u),i.max.multiplyScalar(u)}}else{console.warn("THREE.GLTFLoader: Missing min/max properties for accessor POSITION.");return}}else return;const r=e.targets;if(r!==void 0){const a=new c.Vector3,l=new c.Vector3;for(let f=0,u=r.length;f<u;f++){const d=r[f];if(d.POSITION!==void 0){const m=t.json.accessors[d.POSITION],y=m.min,b=m.max;if(y!==void 0&&b!==void 0){if(l.setX(Math.max(Math.abs(y[0]),Math.abs(b[0]))),l.setY(Math.max(Math.abs(y[1]),Math.abs(b[1]))),l.setZ(Math.max(Math.abs(y[2]),Math.abs(b[2]))),m.normalized){const A=jn(Lt[m.componentType]);l.multiplyScalar(A)}a.max(l)}else console.warn("THREE.GLTFLoader: Missing min/max properties for accessor POSITION.")}}i.expandByVector(a)}o.boundingBox=i;const s=new c.Sphere;i.getCenter(s.center),s.radius=i.min.distanceTo(i.max)/2,o.boundingSphere=s}function Ei(o,e,t){const n=e.attributes,i=[];function r(s,a){return t.getDependency("accessor",s).then(function(l){o.setAttribute(a,l)})}for(const s in n){const a=Nn[s]||s.toLowerCase();a in o.attributes||i.push(r(n[s],a))}if(e.indices!==void 0&&!o.index){const s=t.getDependency("accessor",e.indices).then(function(a){o.setIndex(a)});i.push(s)}return ft(o,e),Do(o,e,t),Promise.all(i).then(function(){return e.targets!==void 0?Po(o,e.targets,t):o})}class Yi extends c.ExtrudeGeometry{constructor(e,t={}){const{bevelEnabled:n=!1,bevelSize:i=8,bevelThickness:r=10,font:s,height:a=50,size:l=100,lineHeight:f=1,letterSpacing:u=0,...d}=t;if(s===void 0)super();else{const m=s.generateShapes(e,l,{lineHeight:f,letterSpacing:u});super(m,{...d,bevelEnabled:n,bevelSize:i,bevelThickness:r,depth:a})}this.type="TextGeometry"}}const ko={uniforms:{tDiffuse:{value:null},h:{value:1/512}},vertexShader:`
|
|
9
9
|
varying vec2 vUv;
|
|
10
10
|
|
|
11
11
|
void main() {
|
|
@@ -37,7 +37,7 @@
|
|
|
37
37
|
gl_FragColor = sum;
|
|
38
38
|
|
|
39
39
|
}
|
|
40
|
-
`},
|
|
40
|
+
`},Fo={uniforms:{tDiffuse:{value:null},v:{value:1/512}},vertexShader:`
|
|
41
41
|
varying vec2 vUv;
|
|
42
42
|
|
|
43
43
|
void main() {
|
|
@@ -70,13 +70,57 @@
|
|
|
70
70
|
gl_FragColor = sum;
|
|
71
71
|
|
|
72
72
|
}
|
|
73
|
-
`};function Ri(o,e,t){const n=t.length-o-1;if(e>=t[n])return n-1;if(e<=t[o])return o;let i=o,s=n,r=Math.floor((i+s)/2);for(;e<t[r]||e>=t[r+1];)e<t[r]?s=r:i=r,r=Math.floor((i+s)/2);return r}function Lo(o,e,t,n){const i=[],s=[],r=[];i[0]=1;for(let a=1;a<=t;++a){s[a]=e-n[o+1-a],r[a]=n[o+a]-e;let l=0;for(let f=0;f<a;++f){const h=r[f+1],d=s[a-f],m=i[f]/(h+d);i[f]=l+h*m,l=d*m}i[a]=l}return i}function To(o,e,t,n){const i=Ri(o,n,e),s=Lo(i,n,o,e),r=new c.Vector4(0,0,0,0);for(let a=0;a<=o;++a){const l=t[i-o+a],f=s[a],h=l.w*f;r.x+=l.x*h,r.y+=l.y*h,r.z+=l.z*h,r.w+=l.w*f}return r}function Oo(o,e,t,n,i){const s=[];for(let d=0;d<=t;++d)s[d]=0;const r=[];for(let d=0;d<=n;++d)r[d]=s.slice(0);const a=[];for(let d=0;d<=t;++d)a[d]=s.slice(0);a[0][0]=1;const l=s.slice(0),f=s.slice(0);for(let d=1;d<=t;++d){l[d]=e-i[o+1-d],f[d]=i[o+d]-e;let m=0;for(let y=0;y<d;++y){const M=f[y+1],S=l[d-y];a[d][y]=M+S;const v=a[y][d-1]/a[d][y];a[y][d]=m+M*v,m=S*v}a[d][d]=m}for(let d=0;d<=t;++d)r[0][d]=a[d][t];for(let d=0;d<=t;++d){let m=0,y=1;const M=[];for(let S=0;S<=t;++S)M[S]=s.slice(0);M[0][0]=1;for(let S=1;S<=n;++S){let v=0;const L=d-S,I=t-S;d>=S&&(M[y][0]=M[m][0]/a[I+1][L],v=M[y][0]*a[L][I]);const A=L>=-1?1:-L,g=d-1<=I?S-1:t-d;for(let x=A;x<=g;++x)M[y][x]=(M[m][x]-M[m][x-1])/a[I+1][L+x],v+=M[y][x]*a[L+x][I];d<=I&&(M[y][S]=-M[m][S-1]/a[I+1][d],v+=M[y][S]*a[d][I]),r[S][d]=v;const O=m;m=y,y=O}}let h=t;for(let d=1;d<=n;++d){for(let m=0;m<=t;++m)r[d][m]*=h;h*=t-d}return r}function Io(o,e,t,n,i){const s=i<o?i:o,r=[],a=Ri(o,n,e),l=Oo(a,n,o,s,e),f=[];for(let h=0;h<t.length;++h){const d=t[h].clone(),m=d.w;d.x*=m,d.y*=m,d.z*=m,f[h]=d}for(let h=0;h<=s;++h){const d=f[a-o].clone().multiplyScalar(l[h][0]);for(let m=1;m<=o;++m)d.add(f[a-o+m].clone().multiplyScalar(l[h][m]));r[h]=d}for(let h=s+1;h<=i+1;++h)r[h]=new c.Vector4(0,0,0);return r}function Do(o,e){let t=1;for(let i=2;i<=o;++i)t*=i;let n=1;for(let i=2;i<=e;++i)n*=i;for(let i=2;i<=o-e;++i)n*=i;return t/n}function ko(o){const e=o.length,t=[],n=[];for(let s=0;s<e;++s){const r=o[s];t[s]=new c.Vector3(r.x,r.y,r.z),n[s]=r.w}const i=[];for(let s=0;s<e;++s){const r=t[s].clone();for(let a=1;a<=s;++a)r.sub(i[s-a].clone().multiplyScalar(Do(s,a)*n[a]));i[s]=r.divideScalar(n[0])}return i}function Fo(o,e,t,n,i){const s=Io(o,e,t,n,i);return ko(s)}class Ei extends c.Curve{constructor(e,t,n,i,s){super(),this.degree=e,this.knots=t,this.controlPoints=[],this.startKnot=i||0,this.endKnot=s||this.knots.length-1;for(let r=0;r<n.length;++r){const a=n[r];this.controlPoints[r]=new c.Vector4(a.x,a.y,a.z,a.w)}}getPoint(e,t){const n=t||new c.Vector3,i=this.knots[this.startKnot]+e*(this.knots[this.endKnot]-this.knots[this.startKnot]),s=To(this.degree,this.knots,this.controlPoints,i);return s.w!=1&&s.divideScalar(s.w),n.set(s.x,s.y,s.z)}getTangent(e,t){const n=t||new c.Vector3,i=this.knots[0]+e*(this.knots[this.knots.length-1]-this.knots[0]),s=Fo(this.degree,this.knots,this.controlPoints,i,1);return n.copy(s[1]).normalize(),n}}let ve,Te,Ne;class Bo extends c.Loader{constructor(e){super(e)}load(e,t,n,i){const s=this,r=s.path===""?c.LoaderUtils.extractUrlBase(e):s.path,a=new c.FileLoader(this.manager);a.setPath(s.path),a.setResponseType("arraybuffer"),a.setRequestHeader(s.requestHeader),a.setWithCredentials(s.withCredentials),a.load(e,function(l){try{t(s.parse(l,r))}catch(f){i?i(f):console.error(f),s.manager.itemError(e)}},n,i)}parse(e,t){if(Go(e))ve=new jo().parse(e);else{const i=Ki(e);if(!Ro(i))throw new Error("THREE.FBXLoader: Unknown format.");if(Wi(i)<7e3)throw new Error("THREE.FBXLoader: FBX version not supported, FileVersion: "+Wi(i));ve=new Vo().parse(i)}const n=new c.TextureLoader(this.manager).setPath(this.resourcePath||t).setCrossOrigin(this.crossOrigin);return new Uo(n,this.manager).parse(ve)}}class Uo{constructor(e,t){this.textureLoader=e,this.manager=t}parse(){Te=this.parseConnections();const e=this.parseImages(),t=this.parseTextures(e),n=this.parseMaterials(t),i=this.parseDeformers(),s=new No().parse(i);return this.parseScene(i,s,n),Ne}parseConnections(){const e=new Map;return"Connections"in ve&&ve.Connections.connections.forEach(function(n){const i=n[0],s=n[1],r=n[2];e.has(i)||e.set(i,{parents:[],children:[]});const a={ID:s,relationship:r};e.get(i).parents.push(a),e.has(s)||e.set(s,{parents:[],children:[]});const l={ID:i,relationship:r};e.get(s).children.push(l)}),e}parseImages(){const e={},t={};if("Video"in ve.Objects){const n=ve.Objects.Video;for(const i in n){const s=n[i],r=parseInt(i);if(e[r]=s.RelativeFilename||s.Filename,"Content"in s){const a=s.Content instanceof ArrayBuffer&&s.Content.byteLength>0,l=typeof s.Content=="string"&&s.Content!=="";if(a||l){const f=this.parseImage(n[i]);t[s.RelativeFilename||s.Filename]=f}}}}for(const n in e){const i=e[n];t[i]!==void 0?e[n]=t[i]:e[n]=e[n].split("\\").pop()}return e}parseImage(e){const t=e.Content,n=e.RelativeFilename||e.Filename,i=n.slice(n.lastIndexOf(".")+1).toLowerCase();let s;switch(i){case"bmp":s="image/bmp";break;case"jpg":case"jpeg":s="image/jpeg";break;case"png":s="image/png";break;case"tif":s="image/tiff";break;case"tga":this.manager.getHandler(".tga")===null&&console.warn("FBXLoader: TGA loader not found, skipping ",n),s="image/tga";break;default:console.warn('FBXLoader: Image type "'+i+'" is not supported.');return}if(typeof t=="string")return"data:"+s+";base64,"+t;{const r=new Uint8Array(t);return window.URL.createObjectURL(new Blob([r],{type:s}))}}parseTextures(e){const t=new Map;if("Texture"in ve.Objects){const n=ve.Objects.Texture;for(const i in n){const s=this.parseTexture(n[i],e);t.set(parseInt(i),s)}}return t}parseTexture(e,t){const n=this.loadTexture(e,t);n.ID=e.id,n.name=e.attrName;const i=e.WrapModeU,s=e.WrapModeV,r=i!==void 0?i.value:0,a=s!==void 0?s.value:0;if(n.wrapS=r===0?c.RepeatWrapping:c.ClampToEdgeWrapping,n.wrapT=a===0?c.RepeatWrapping:c.ClampToEdgeWrapping,"Scaling"in e){const l=e.Scaling.value;n.repeat.x=l[0],n.repeat.y=l[1]}return n}loadTexture(e,t){let n;const i=this.textureLoader.path,s=Te.get(e.id).children;s!==void 0&&s.length>0&&t[s[0].ID]!==void 0&&(n=t[s[0].ID],(n.indexOf("blob:")===0||n.indexOf("data:")===0)&&this.textureLoader.setPath(void 0));let r;const a=e.FileName.slice(-3).toLowerCase();if(a==="tga"){const l=this.manager.getHandler(".tga");l===null?(console.warn("FBXLoader: TGA loader not found, creating placeholder texture for",e.RelativeFilename),r=new c.Texture):(l.setPath(this.textureLoader.path),r=l.load(n))}else a==="psd"?(console.warn("FBXLoader: PSD textures are not supported, creating placeholder texture for",e.RelativeFilename),r=new c.Texture):r=this.textureLoader.load(n);return this.textureLoader.setPath(i),r}parseMaterials(e){const t=new Map;if("Material"in ve.Objects){const n=ve.Objects.Material;for(const i in n){const s=this.parseMaterial(n[i],e);s!==null&&t.set(parseInt(i),s)}}return t}parseMaterial(e,t){const n=e.id,i=e.attrName;let s=e.ShadingModel;if(typeof s=="object"&&(s=s.value),!Te.has(n))return null;const r=this.parseParameters(e,t,n);let a;switch(s.toLowerCase()){case"phong":a=new c.MeshPhongMaterial;break;case"lambert":a=new c.MeshLambertMaterial;break;default:console.warn('THREE.FBXLoader: unknown material type "%s". Defaulting to MeshPhongMaterial.',s),a=new c.MeshPhongMaterial;break}return a.setValues(r),a.name=i,a}parseParameters(e,t,n){const i={};e.BumpFactor&&(i.bumpScale=e.BumpFactor.value),e.Diffuse?i.color=new c.Color().fromArray(e.Diffuse.value):e.DiffuseColor&&(e.DiffuseColor.type==="Color"||e.DiffuseColor.type==="ColorRGB")&&(i.color=new c.Color().fromArray(e.DiffuseColor.value)),e.DisplacementFactor&&(i.displacementScale=e.DisplacementFactor.value),e.Emissive?i.emissive=new c.Color().fromArray(e.Emissive.value):e.EmissiveColor&&(e.EmissiveColor.type==="Color"||e.EmissiveColor.type==="ColorRGB")&&(i.emissive=new c.Color().fromArray(e.EmissiveColor.value)),e.EmissiveFactor&&(i.emissiveIntensity=parseFloat(e.EmissiveFactor.value)),e.Opacity&&(i.opacity=parseFloat(e.Opacity.value)),i.opacity<1&&(i.transparent=!0),e.ReflectionFactor&&(i.reflectivity=e.ReflectionFactor.value),e.Shininess&&(i.shininess=e.Shininess.value),e.Specular?i.specular=new c.Color().fromArray(e.Specular.value):e.SpecularColor&&e.SpecularColor.type==="Color"&&(i.specular=new c.Color().fromArray(e.SpecularColor.value));const s=this;return Te.get(n).children.forEach(function(r){const a=r.relationship;switch(a){case"Bump":i.bumpMap=s.getTexture(t,r.ID);break;case"Maya|TEX_ao_map":i.aoMap=s.getTexture(t,r.ID);break;case"DiffuseColor":case"Maya|TEX_color_map":i.map=s.getTexture(t,r.ID),i.map!==void 0&&("colorSpace"in i.map?i.map.colorSpace="srgb":i.map.encoding=3001);break;case"DisplacementColor":i.displacementMap=s.getTexture(t,r.ID);break;case"EmissiveColor":i.emissiveMap=s.getTexture(t,r.ID),i.emissiveMap!==void 0&&("colorSpace"in i.emissiveMap?i.emissiveMap.colorSpace="srgb":i.emissiveMap.encoding=3001);break;case"NormalMap":case"Maya|TEX_normal_map":i.normalMap=s.getTexture(t,r.ID);break;case"ReflectionColor":i.envMap=s.getTexture(t,r.ID),i.envMap!==void 0&&(i.envMap.mapping=c.EquirectangularReflectionMapping,"colorSpace"in i.envMap?i.envMap.colorSpace="srgb":i.envMap.encoding=3001);break;case"SpecularColor":i.specularMap=s.getTexture(t,r.ID),i.specularMap!==void 0&&("colorSpace"in i.specularMap?i.specularMap.colorSpace="srgb":i.specularMap.encoding=3001);break;case"TransparentColor":case"TransparencyFactor":i.alphaMap=s.getTexture(t,r.ID),i.transparent=!0;break;case"AmbientColor":case"ShininessExponent":case"SpecularFactor":case"VectorDisplacementColor":default:console.warn("THREE.FBXLoader: %s map is not supported in three.js, skipping texture.",a);break}}),i}getTexture(e,t){return"LayeredTexture"in ve.Objects&&t in ve.Objects.LayeredTexture&&(console.warn("THREE.FBXLoader: layered textures are not supported in three.js. Discarding all but first layer."),t=Te.get(t).children[0].ID),e.get(t)}parseDeformers(){const e={},t={};if("Deformer"in ve.Objects){const n=ve.Objects.Deformer;for(const i in n){const s=n[i],r=Te.get(parseInt(i));if(s.attrType==="Skin"){const a=this.parseSkeleton(r,n);a.ID=i,r.parents.length>1&&console.warn("THREE.FBXLoader: skeleton attached to more than one geometry is not supported."),a.geometryID=r.parents[0].ID,e[i]=a}else if(s.attrType==="BlendShape"){const a={id:i};a.rawTargets=this.parseMorphTargets(r,n),a.id=i,r.parents.length>1&&console.warn("THREE.FBXLoader: morph target attached to more than one geometry is not supported."),t[i]=a}}}return{skeletons:e,morphTargets:t}}parseSkeleton(e,t){const n=[];return e.children.forEach(function(i){const s=t[i.ID];if(s.attrType!=="Cluster")return;const r={ID:i.ID,indices:[],weights:[],transformLink:new c.Matrix4().fromArray(s.TransformLink.a)};"Indexes"in s&&(r.indices=s.Indexes.a,r.weights=s.Weights.a),n.push(r)}),{rawBones:n,bones:[]}}parseMorphTargets(e,t){const n=[];for(let i=0;i<e.children.length;i++){const s=e.children[i],r=t[s.ID],a={name:r.attrName,initialWeight:r.DeformPercent,id:r.id,fullWeights:r.FullWeights.a};if(r.attrType!=="BlendShapeChannel")return;a.geoID=Te.get(parseInt(s.ID)).children.filter(function(l){return l.relationship===void 0})[0].ID,n.push(a)}return n}parseScene(e,t,n){Ne=new c.Group;const i=this.parseModels(e.skeletons,t,n),s=ve.Objects.Model,r=this;i.forEach(function(l){const f=s[l.ID];r.setLookAtProperties(l,f),Te.get(l.ID).parents.forEach(function(d){const m=i.get(d.ID);m!==void 0&&m.add(l)}),l.parent===null&&Ne.add(l)}),this.bindSkeleton(e.skeletons,t,i),this.createAmbientLight(),Ne.traverse(function(l){if(l.userData.transformData){l.parent&&(l.userData.transformData.parentMatrix=l.parent.matrix,l.userData.transformData.parentMatrixWorld=l.parent.matrixWorld);const f=Zi(l.userData.transformData);l.applyMatrix4(f),l.updateWorldMatrix()}});const a=new zo().parse();Ne.children.length===1&&Ne.children[0].isGroup&&(Ne.children[0].animations=a,Ne=Ne.children[0]),Ne.animations=a}parseModels(e,t,n){const i=new Map,s=ve.Objects.Model;for(const r in s){const a=parseInt(r),l=s[r],f=Te.get(a);let h=this.buildSkeleton(f,e,a,l.attrName);if(!h){switch(l.attrType){case"Camera":h=this.createCamera(f);break;case"Light":h=this.createLight(f);break;case"Mesh":h=this.createMesh(f,t,n);break;case"NurbsCurve":h=this.createCurve(f,t);break;case"LimbNode":case"Root":h=new c.Bone;break;case"Null":default:h=new c.Group;break}h.name=l.attrName?c.PropertyBinding.sanitizeNodeName(l.attrName):"",h.ID=a}this.getTransformData(h,l),i.set(a,h)}return i}buildSkeleton(e,t,n,i){let s=null;return e.parents.forEach(function(r){for(const a in t){const l=t[a];l.rawBones.forEach(function(f,h){if(f.ID===r.ID){const d=s;s=new c.Bone,s.matrixWorld.copy(f.transformLink),s.name=i?c.PropertyBinding.sanitizeNodeName(i):"",s.ID=n,l.bones[h]=s,d!==null&&s.add(d)}})}}),s}createCamera(e){let t,n;if(e.children.forEach(function(i){const s=ve.Objects.NodeAttribute[i.ID];s!==void 0&&(n=s)}),n===void 0)t=new c.Object3D;else{let i=0;n.CameraProjectionType!==void 0&&n.CameraProjectionType.value===1&&(i=1);let s=1;n.NearPlane!==void 0&&(s=n.NearPlane.value/1e3);let r=1e3;n.FarPlane!==void 0&&(r=n.FarPlane.value/1e3);let a=window.innerWidth,l=window.innerHeight;n.AspectWidth!==void 0&&n.AspectHeight!==void 0&&(a=n.AspectWidth.value,l=n.AspectHeight.value);const f=a/l;let h=45;n.FieldOfView!==void 0&&(h=n.FieldOfView.value);const d=n.FocalLength?n.FocalLength.value:null;switch(i){case 0:t=new c.PerspectiveCamera(h,f,s,r),d!==null&&t.setFocalLength(d);break;case 1:t=new c.OrthographicCamera(-a/2,a/2,l/2,-l/2,s,r);break;default:console.warn("THREE.FBXLoader: Unknown camera type "+i+"."),t=new c.Object3D;break}}return t}createLight(e){let t,n;if(e.children.forEach(function(i){const s=ve.Objects.NodeAttribute[i.ID];s!==void 0&&(n=s)}),n===void 0)t=new c.Object3D;else{let i;n.LightType===void 0?i=0:i=n.LightType.value;let s=16777215;n.Color!==void 0&&(s=new c.Color().fromArray(n.Color.value));let r=n.Intensity===void 0?1:n.Intensity.value/100;n.CastLightOnObject!==void 0&&n.CastLightOnObject.value===0&&(r=0);let a=0;n.FarAttenuationEnd!==void 0&&(n.EnableFarAttenuation!==void 0&&n.EnableFarAttenuation.value===0?a=0:a=n.FarAttenuationEnd.value);const l=1;switch(i){case 0:t=new c.PointLight(s,r,a,l);break;case 1:t=new c.DirectionalLight(s,r);break;case 2:let f=Math.PI/3;n.InnerAngle!==void 0&&(f=c.MathUtils.degToRad(n.InnerAngle.value));let h=0;n.OuterAngle!==void 0&&(h=c.MathUtils.degToRad(n.OuterAngle.value),h=Math.max(h,1)),t=new c.SpotLight(s,r,a,f,h,l);break;default:console.warn("THREE.FBXLoader: Unknown light type "+n.LightType.value+", defaulting to a PointLight."),t=new c.PointLight(s,r);break}n.CastShadows!==void 0&&n.CastShadows.value===1&&(t.castShadow=!0)}return t}createMesh(e,t,n){let i,s=null,r=null;const a=[];return e.children.forEach(function(l){t.has(l.ID)&&(s=t.get(l.ID)),n.has(l.ID)&&a.push(n.get(l.ID))}),a.length>1?r=a:a.length>0?r=a[0]:(r=new c.MeshPhongMaterial({color:13421772}),a.push(r)),"color"in s.attributes&&a.forEach(function(l){l.vertexColors=!0}),s.FBX_Deformer?(i=new c.SkinnedMesh(s,r),i.normalizeSkinWeights()):i=new c.Mesh(s,r),i}createCurve(e,t){const n=e.children.reduce(function(s,r){return t.has(r.ID)&&(s=t.get(r.ID)),s},null),i=new c.LineBasicMaterial({color:3342591,linewidth:1});return new c.Line(n,i)}getTransformData(e,t){const n={};"InheritType"in t&&(n.inheritType=parseInt(t.InheritType.value)),"RotationOrder"in t?n.eulerOrder=qi(t.RotationOrder.value):n.eulerOrder="ZYX","Lcl_Translation"in t&&(n.translation=t.Lcl_Translation.value),"PreRotation"in t&&(n.preRotation=t.PreRotation.value),"Lcl_Rotation"in t&&(n.rotation=t.Lcl_Rotation.value),"PostRotation"in t&&(n.postRotation=t.PostRotation.value),"Lcl_Scaling"in t&&(n.scale=t.Lcl_Scaling.value),"ScalingOffset"in t&&(n.scalingOffset=t.ScalingOffset.value),"ScalingPivot"in t&&(n.scalingPivot=t.ScalingPivot.value),"RotationOffset"in t&&(n.rotationOffset=t.RotationOffset.value),"RotationPivot"in t&&(n.rotationPivot=t.RotationPivot.value),e.userData.transformData=n}setLookAtProperties(e,t){"LookAtProperty"in t&&Te.get(e.ID).children.forEach(function(i){if(i.relationship==="LookAtProperty"){const s=ve.Objects.Model[i.ID];if("Lcl_Translation"in s){const r=s.Lcl_Translation.value;e.target!==void 0?(e.target.position.fromArray(r),Ne.add(e.target)):e.lookAt(new c.Vector3().fromArray(r))}}})}bindSkeleton(e,t,n){const i=this.parsePoseNodes();for(const s in e){const r=e[s];Te.get(parseInt(r.ID)).parents.forEach(function(l){if(t.has(l.ID)){const f=l.ID;Te.get(f).parents.forEach(function(d){n.has(d.ID)&&n.get(d.ID).bind(new c.Skeleton(r.bones),i[d.ID])})}})}}parsePoseNodes(){const e={};if("Pose"in ve.Objects){const t=ve.Objects.Pose;for(const n in t)if(t[n].attrType==="BindPose"&&t[n].NbPoseNodes>0){const i=t[n].PoseNode;Array.isArray(i)?i.forEach(function(s){e[s.Node]=new c.Matrix4().fromArray(s.Matrix.a)}):e[i.Node]=new c.Matrix4().fromArray(i.Matrix.a)}}return e}createAmbientLight(){if("GlobalSettings"in ve&&"AmbientColor"in ve.GlobalSettings){const e=ve.GlobalSettings.AmbientColor.value,t=e[0],n=e[1],i=e[2];if(t!==0||n!==0||i!==0){const s=new c.Color(t,n,i);Ne.add(new c.AmbientLight(s,1))}}}}class No{parse(e){const t=new Map;if("Geometry"in ve.Objects){const n=ve.Objects.Geometry;for(const i in n){const s=Te.get(parseInt(i)),r=this.parseGeometry(s,n[i],e);t.set(parseInt(i),r)}}return t}parseGeometry(e,t,n){switch(t.attrType){case"Mesh":return this.parseMeshGeometry(e,t,n);case"NurbsCurve":return this.parseNurbsGeometry(t)}}parseMeshGeometry(e,t,n){const i=n.skeletons,s=[],r=e.parents.map(function(d){return ve.Objects.Model[d.ID]});if(r.length===0)return;const a=e.children.reduce(function(d,m){return i[m.ID]!==void 0&&(d=i[m.ID]),d},null);e.children.forEach(function(d){n.morphTargets[d.ID]!==void 0&&s.push(n.morphTargets[d.ID])});const l=r[0],f={};"RotationOrder"in l&&(f.eulerOrder=qi(l.RotationOrder.value)),"InheritType"in l&&(f.inheritType=parseInt(l.InheritType.value)),"GeometricTranslation"in l&&(f.translation=l.GeometricTranslation.value),"GeometricRotation"in l&&(f.rotation=l.GeometricRotation.value),"GeometricScaling"in l&&(f.scale=l.GeometricScaling.value);const h=Zi(f);return this.genGeometry(t,a,s,h)}genGeometry(e,t,n,i){const s=new c.BufferGeometry;e.attrName&&(s.name=e.attrName);const r=this.parseGeoNode(e,t),a=this.genBuffers(r),l=new c.Float32BufferAttribute(a.vertex,3);if(l.applyMatrix4(i),s.setAttribute("position",l),a.colors.length>0&&s.setAttribute("color",new c.Float32BufferAttribute(a.colors,3)),t&&(s.setAttribute("skinIndex",new c.Uint16BufferAttribute(a.weightsIndices,4)),s.setAttribute("skinWeight",new c.Float32BufferAttribute(a.vertexWeights,4)),s.FBX_Deformer=t),a.normal.length>0){const f=new c.Matrix3().getNormalMatrix(i),h=new c.Float32BufferAttribute(a.normal,3);h.applyNormalMatrix(f),s.setAttribute("normal",h)}if(a.uvs.forEach(function(f,h){let d="uv"+(h+1).toString();h===0&&(d="uv"),s.setAttribute(d,new c.Float32BufferAttribute(a.uvs[h],2))}),r.material&&r.material.mappingType!=="AllSame"){let f=a.materialIndex[0],h=0;if(a.materialIndex.forEach(function(d,m){d!==f&&(s.addGroup(h,m-h,f),f=d,h=m)}),s.groups.length>0){const d=s.groups[s.groups.length-1],m=d.start+d.count;m!==a.materialIndex.length&&s.addGroup(m,a.materialIndex.length-m,f)}s.groups.length===0&&s.addGroup(0,a.materialIndex.length,a.materialIndex[0])}return this.addMorphTargets(s,e,n,i),s}parseGeoNode(e,t){const n={};if(n.vertexPositions=e.Vertices!==void 0?e.Vertices.a:[],n.vertexIndices=e.PolygonVertexIndex!==void 0?e.PolygonVertexIndex.a:[],e.LayerElementColor&&(n.color=this.parseVertexColors(e.LayerElementColor[0])),e.LayerElementMaterial&&(n.material=this.parseMaterialIndices(e.LayerElementMaterial[0])),e.LayerElementNormal&&(n.normal=this.parseNormals(e.LayerElementNormal[0])),e.LayerElementUV){n.uv=[];let i=0;for(;e.LayerElementUV[i];)e.LayerElementUV[i].UV&&n.uv.push(this.parseUVs(e.LayerElementUV[i])),i++}return n.weightTable={},t!==null&&(n.skeleton=t,t.rawBones.forEach(function(i,s){i.indices.forEach(function(r,a){n.weightTable[r]===void 0&&(n.weightTable[r]=[]),n.weightTable[r].push({id:s,weight:i.weights[a]})})})),n}genBuffers(e){const t={vertex:[],normal:[],colors:[],uvs:[],materialIndex:[],vertexWeights:[],weightsIndices:[]};let n=0,i=0,s=!1,r=[],a=[],l=[],f=[],h=[],d=[];const m=this;return e.vertexIndices.forEach(function(y,M){let S,v=!1;y<0&&(y=y^-1,v=!0);let L=[],I=[];if(r.push(y*3,y*3+1,y*3+2),e.color){const A=rn(M,n,y,e.color);l.push(A[0],A[1],A[2])}if(e.skeleton){if(e.weightTable[y]!==void 0&&e.weightTable[y].forEach(function(A){I.push(A.weight),L.push(A.id)}),I.length>4){s||(console.warn("THREE.FBXLoader: Vertex has more than 4 skinning weights assigned to vertex. Deleting additional weights."),s=!0);const A=[0,0,0,0],g=[0,0,0,0];I.forEach(function(O,x){let C=O,p=L[x];g.forEach(function(w,_,T){if(C>w){T[_]=C,C=w;const F=A[_];A[_]=p,p=F}})}),L=A,I=g}for(;I.length<4;)I.push(0),L.push(0);for(let A=0;A<4;++A)h.push(I[A]),d.push(L[A])}if(e.normal){const A=rn(M,n,y,e.normal);a.push(A[0],A[1],A[2])}e.material&&e.material.mappingType!=="AllSame"&&(S=rn(M,n,y,e.material)[0]),e.uv&&e.uv.forEach(function(A,g){const O=rn(M,n,y,A);f[g]===void 0&&(f[g]=[]),f[g].push(O[0]),f[g].push(O[1])}),i++,v&&(m.genFace(t,e,r,S,a,l,f,h,d,i),n++,i=0,r=[],a=[],l=[],f=[],h=[],d=[])}),t}genFace(e,t,n,i,s,r,a,l,f,h){for(let d=2;d<h;d++)e.vertex.push(t.vertexPositions[n[0]]),e.vertex.push(t.vertexPositions[n[1]]),e.vertex.push(t.vertexPositions[n[2]]),e.vertex.push(t.vertexPositions[n[(d-1)*3]]),e.vertex.push(t.vertexPositions[n[(d-1)*3+1]]),e.vertex.push(t.vertexPositions[n[(d-1)*3+2]]),e.vertex.push(t.vertexPositions[n[d*3]]),e.vertex.push(t.vertexPositions[n[d*3+1]]),e.vertex.push(t.vertexPositions[n[d*3+2]]),t.skeleton&&(e.vertexWeights.push(l[0]),e.vertexWeights.push(l[1]),e.vertexWeights.push(l[2]),e.vertexWeights.push(l[3]),e.vertexWeights.push(l[(d-1)*4]),e.vertexWeights.push(l[(d-1)*4+1]),e.vertexWeights.push(l[(d-1)*4+2]),e.vertexWeights.push(l[(d-1)*4+3]),e.vertexWeights.push(l[d*4]),e.vertexWeights.push(l[d*4+1]),e.vertexWeights.push(l[d*4+2]),e.vertexWeights.push(l[d*4+3]),e.weightsIndices.push(f[0]),e.weightsIndices.push(f[1]),e.weightsIndices.push(f[2]),e.weightsIndices.push(f[3]),e.weightsIndices.push(f[(d-1)*4]),e.weightsIndices.push(f[(d-1)*4+1]),e.weightsIndices.push(f[(d-1)*4+2]),e.weightsIndices.push(f[(d-1)*4+3]),e.weightsIndices.push(f[d*4]),e.weightsIndices.push(f[d*4+1]),e.weightsIndices.push(f[d*4+2]),e.weightsIndices.push(f[d*4+3])),t.color&&(e.colors.push(r[0]),e.colors.push(r[1]),e.colors.push(r[2]),e.colors.push(r[(d-1)*3]),e.colors.push(r[(d-1)*3+1]),e.colors.push(r[(d-1)*3+2]),e.colors.push(r[d*3]),e.colors.push(r[d*3+1]),e.colors.push(r[d*3+2])),t.material&&t.material.mappingType!=="AllSame"&&(e.materialIndex.push(i),e.materialIndex.push(i),e.materialIndex.push(i)),t.normal&&(e.normal.push(s[0]),e.normal.push(s[1]),e.normal.push(s[2]),e.normal.push(s[(d-1)*3]),e.normal.push(s[(d-1)*3+1]),e.normal.push(s[(d-1)*3+2]),e.normal.push(s[d*3]),e.normal.push(s[d*3+1]),e.normal.push(s[d*3+2])),t.uv&&t.uv.forEach(function(m,y){e.uvs[y]===void 0&&(e.uvs[y]=[]),e.uvs[y].push(a[y][0]),e.uvs[y].push(a[y][1]),e.uvs[y].push(a[y][(d-1)*2]),e.uvs[y].push(a[y][(d-1)*2+1]),e.uvs[y].push(a[y][d*2]),e.uvs[y].push(a[y][d*2+1])})}addMorphTargets(e,t,n,i){if(n.length===0)return;e.morphTargetsRelative=!0,e.morphAttributes.position=[];const s=this;n.forEach(function(r){r.rawTargets.forEach(function(a){const l=ve.Objects.Geometry[a.geoID];l!==void 0&&s.genMorphGeometry(e,t,l,i,a.name)})})}genMorphGeometry(e,t,n,i,s){const r=t.PolygonVertexIndex!==void 0?t.PolygonVertexIndex.a:[],a=n.Vertices!==void 0?n.Vertices.a:[],l=n.Indexes!==void 0?n.Indexes.a:[],f=e.attributes.position.count*3,h=new Float32Array(f);for(let M=0;M<l.length;M++){const S=l[M]*3;h[S]=a[M*3],h[S+1]=a[M*3+1],h[S+2]=a[M*3+2]}const d={vertexIndices:r,vertexPositions:h},m=this.genBuffers(d),y=new c.Float32BufferAttribute(m.vertex,3);y.name=s||n.attrName,y.applyMatrix4(i),e.morphAttributes.position.push(y)}parseNormals(e){const t=e.MappingInformationType,n=e.ReferenceInformationType,i=e.Normals.a;let s=[];return n==="IndexToDirect"&&("NormalIndex"in e?s=e.NormalIndex.a:"NormalsIndex"in e&&(s=e.NormalsIndex.a)),{dataSize:3,buffer:i,indices:s,mappingType:t,referenceType:n}}parseUVs(e){const t=e.MappingInformationType,n=e.ReferenceInformationType,i=e.UV.a;let s=[];return n==="IndexToDirect"&&(s=e.UVIndex.a),{dataSize:2,buffer:i,indices:s,mappingType:t,referenceType:n}}parseVertexColors(e){const t=e.MappingInformationType,n=e.ReferenceInformationType,i=e.Colors.a;let s=[];return n==="IndexToDirect"&&(s=e.ColorIndex.a),{dataSize:4,buffer:i,indices:s,mappingType:t,referenceType:n}}parseMaterialIndices(e){const t=e.MappingInformationType,n=e.ReferenceInformationType;if(t==="NoMappingInformation")return{dataSize:1,buffer:[0],indices:[0],mappingType:"AllSame",referenceType:n};const i=e.Materials.a,s=[];for(let r=0;r<i.length;++r)s.push(r);return{dataSize:1,buffer:i,indices:s,mappingType:t,referenceType:n}}parseNurbsGeometry(e){if(Ei===void 0)return console.error("THREE.FBXLoader: The loader relies on NURBSCurve for any nurbs present in the model. Nurbs will show up as empty geometry."),new c.BufferGeometry;const t=parseInt(e.Order);if(isNaN(t))return console.error("THREE.FBXLoader: Invalid Order %s given for geometry ID: %s",e.Order,e.id),new c.BufferGeometry;const n=t-1,i=e.KnotVector.a,s=[],r=e.Points.a;for(let d=0,m=r.length;d<m;d+=4)s.push(new c.Vector4().fromArray(r,d));let a,l;if(e.Form==="Closed")s.push(s[0]);else if(e.Form==="Periodic"){a=n,l=i.length-1-a;for(let d=0;d<n;++d)s.push(s[d])}const h=new Ei(n,i,s,a,l).getPoints(s.length*12);return new c.BufferGeometry().setFromPoints(h)}}class zo{parse(){const e=[],t=this.parseClips();if(t!==void 0)for(const n in t){const i=t[n],s=this.addClip(i);e.push(s)}return e}parseClips(){if(ve.Objects.AnimationCurve===void 0)return;const e=this.parseAnimationCurveNodes();this.parseAnimationCurves(e);const t=this.parseAnimationLayers(e);return this.parseAnimStacks(t)}parseAnimationCurveNodes(){const e=ve.Objects.AnimationCurveNode,t=new Map;for(const n in e){const i=e[n];if(i.attrName.match(/S|R|T|DeformPercent/)!==null){const s={id:i.id,attr:i.attrName,curves:{}};t.set(s.id,s)}}return t}parseAnimationCurves(e){const t=ve.Objects.AnimationCurve;for(const n in t){const i={id:t[n].id,times:t[n].KeyTime.a.map(Eo),values:t[n].KeyValueFloat.a},s=Te.get(i.id);if(s!==void 0){const r=s.parents[0].ID,a=s.parents[0].relationship;a.match(/X/)?e.get(r).curves.x=i:a.match(/Y/)?e.get(r).curves.y=i:a.match(/Z/)?e.get(r).curves.z=i:a.match(/d|DeformPercent/)&&e.has(r)&&(e.get(r).curves.morph=i)}}}parseAnimationLayers(e){const t=ve.Objects.AnimationLayer,n=new Map;for(const i in t){const s=[],r=Te.get(parseInt(i));r!==void 0&&(r.children.forEach(function(l,f){if(e.has(l.ID)){const h=e.get(l.ID);if(h.curves.x!==void 0||h.curves.y!==void 0||h.curves.z!==void 0){if(s[f]===void 0){const d=Te.get(l.ID).parents.filter(function(m){return m.relationship!==void 0})[0].ID;if(d!==void 0){const m=ve.Objects.Model[d.toString()];if(m===void 0){console.warn("THREE.FBXLoader: Encountered a unused curve.",l);return}const y={modelName:m.attrName?c.PropertyBinding.sanitizeNodeName(m.attrName):"",ID:m.id,initialPosition:[0,0,0],initialRotation:[0,0,0],initialScale:[1,1,1]};Ne.traverse(function(M){M.ID===m.id&&(y.transform=M.matrix,M.userData.transformData&&(y.eulerOrder=M.userData.transformData.eulerOrder))}),y.transform||(y.transform=new c.Matrix4),"PreRotation"in m&&(y.preRotation=m.PreRotation.value),"PostRotation"in m&&(y.postRotation=m.PostRotation.value),s[f]=y}}s[f]&&(s[f][h.attr]=h)}else if(h.curves.morph!==void 0){if(s[f]===void 0){const d=Te.get(l.ID).parents.filter(function(L){return L.relationship!==void 0})[0].ID,m=Te.get(d).parents[0].ID,y=Te.get(m).parents[0].ID,M=Te.get(y).parents[0].ID,S=ve.Objects.Model[M],v={modelName:S.attrName?c.PropertyBinding.sanitizeNodeName(S.attrName):"",morphName:ve.Objects.Deformer[d].attrName};s[f]=v}s[f][h.attr]=h}}}),n.set(parseInt(i),s))}return n}parseAnimStacks(e){const t=ve.Objects.AnimationStack,n={};for(const i in t){const s=Te.get(parseInt(i)).children;s.length>1&&console.warn("THREE.FBXLoader: Encountered an animation stack with multiple layers, this is currently not supported. Ignoring subsequent layers.");const r=e.get(s[0].ID);n[i]={name:t[i].attrName,layer:r}}return n}addClip(e){let t=[];const n=this;return e.layer.forEach(function(i){t=t.concat(n.generateTracks(i))}),new c.AnimationClip(e.name,-1,t)}generateTracks(e){const t=[];let n=new c.Vector3,i=new c.Quaternion,s=new c.Vector3;if(e.transform&&e.transform.decompose(n,i,s),n=n.toArray(),i=new c.Euler().setFromQuaternion(i,e.eulerOrder).toArray(),s=s.toArray(),e.T!==void 0&&Object.keys(e.T.curves).length>0){const r=this.generateVectorTrack(e.modelName,e.T.curves,n,"position");r!==void 0&&t.push(r)}if(e.R!==void 0&&Object.keys(e.R.curves).length>0){const r=this.generateRotationTrack(e.modelName,e.R.curves,i,e.preRotation,e.postRotation,e.eulerOrder);r!==void 0&&t.push(r)}if(e.S!==void 0&&Object.keys(e.S.curves).length>0){const r=this.generateVectorTrack(e.modelName,e.S.curves,s,"scale");r!==void 0&&t.push(r)}if(e.DeformPercent!==void 0){const r=this.generateMorphTrack(e);r!==void 0&&t.push(r)}return t}generateVectorTrack(e,t,n,i){const s=this.getTimesForAllAxes(t),r=this.getKeyframeTrackValues(s,t,n);return new c.VectorKeyframeTrack(e+"."+i,s,r)}generateRotationTrack(e,t,n,i,s,r){t.x!==void 0&&(this.interpolateRotations(t.x),t.x.values=t.x.values.map(c.MathUtils.degToRad)),t.y!==void 0&&(this.interpolateRotations(t.y),t.y.values=t.y.values.map(c.MathUtils.degToRad)),t.z!==void 0&&(this.interpolateRotations(t.z),t.z.values=t.z.values.map(c.MathUtils.degToRad));const a=this.getTimesForAllAxes(t),l=this.getKeyframeTrackValues(a,t,n);i!==void 0&&(i=i.map(c.MathUtils.degToRad),i.push(r),i=new c.Euler().fromArray(i),i=new c.Quaternion().setFromEuler(i)),s!==void 0&&(s=s.map(c.MathUtils.degToRad),s.push(r),s=new c.Euler().fromArray(s),s=new c.Quaternion().setFromEuler(s).invert());const f=new c.Quaternion,h=new c.Euler,d=[];for(let m=0;m<l.length;m+=3)h.set(l[m],l[m+1],l[m+2],r),f.setFromEuler(h),i!==void 0&&f.premultiply(i),s!==void 0&&f.multiply(s),f.toArray(d,m/3*4);return new c.QuaternionKeyframeTrack(e+".quaternion",a,d)}generateMorphTrack(e){const t=e.DeformPercent.curves.morph,n=t.values.map(function(s){return s/100}),i=Ne.getObjectByName(e.modelName).morphTargetDictionary[e.morphName];return new c.NumberKeyframeTrack(e.modelName+".morphTargetInfluences["+i+"]",t.times,n)}getTimesForAllAxes(e){let t=[];if(e.x!==void 0&&(t=t.concat(e.x.times)),e.y!==void 0&&(t=t.concat(e.y.times)),e.z!==void 0&&(t=t.concat(e.z.times)),t=t.sort(function(n,i){return n-i}),t.length>1){let n=1,i=t[0];for(let s=1;s<t.length;s++){const r=t[s];r!==i&&(t[n]=r,i=r,n++)}t=t.slice(0,n)}return t}getKeyframeTrackValues(e,t,n){const i=n,s=[];let r=-1,a=-1,l=-1;return e.forEach(function(f){if(t.x&&(r=t.x.times.indexOf(f)),t.y&&(a=t.y.times.indexOf(f)),t.z&&(l=t.z.times.indexOf(f)),r!==-1){const h=t.x.values[r];s.push(h),i[0]=h}else s.push(i[0]);if(a!==-1){const h=t.y.values[a];s.push(h),i[1]=h}else s.push(i[1]);if(l!==-1){const h=t.z.values[l];s.push(h),i[2]=h}else s.push(i[2])}),s}interpolateRotations(e){for(let t=1;t<e.values.length;t++){const n=e.values[t-1],i=e.values[t]-n,s=Math.abs(i);if(s>=180){const r=s/180,a=i/r;let l=n+a;const f=e.times[t-1],d=(e.times[t]-f)/r;let m=f+d;const y=[],M=[];for(;m<e.times[t];)y.push(m),m+=d,M.push(l),l+=a;e.times=Qi(e.times,t,y),e.values=Qi(e.values,t,M)}}}}class Vo{getPrevNode(){return this.nodeStack[this.currentIndent-2]}getCurrentNode(){return this.nodeStack[this.currentIndent-1]}getCurrentProp(){return this.currentProp}pushStack(e){this.nodeStack.push(e),this.currentIndent+=1}popStack(){this.nodeStack.pop(),this.currentIndent-=1}setCurrentProp(e,t){this.currentProp=e,this.currentPropName=t}parse(e){this.currentIndent=0,this.allNodes=new Xi,this.nodeStack=[],this.currentProp=[],this.currentPropName="";const t=this,n=e.split(/[\r\n]+/);return n.forEach(function(i,s){const r=i.match(/^[\s\t]*;/),a=i.match(/^[\s\t]*$/);if(r||a)return;const l=i.match("^\\t{"+t.currentIndent+"}(\\w+):(.*){",""),f=i.match("^\\t{"+t.currentIndent+"}(\\w+):[\\s\\t\\r\\n](.*)"),h=i.match("^\\t{"+(t.currentIndent-1)+"}}");l?t.parseNodeBegin(i,l):f?t.parseNodeProperty(i,f,n[++s]):h?t.popStack():i.match(/^[^\s\t}]/)&&t.parseNodePropertyContinued(i)}),this.allNodes}parseNodeBegin(e,t){const n=t[1].trim().replace(/^"/,"").replace(/"$/,""),i=t[2].split(",").map(function(l){return l.trim().replace(/^"/,"").replace(/"$/,"")}),s={name:n},r=this.parseNodeAttr(i),a=this.getCurrentNode();this.currentIndent===0?this.allNodes.add(n,s):n in a?(n==="PoseNode"?a.PoseNode.push(s):a[n].id!==void 0&&(a[n]={},a[n][a[n].id]=a[n]),r.id!==""&&(a[n][r.id]=s)):typeof r.id=="number"?(a[n]={},a[n][r.id]=s):n!=="Properties70"&&(n==="PoseNode"?a[n]=[s]:a[n]=s),typeof r.id=="number"&&(s.id=r.id),r.name!==""&&(s.attrName=r.name),r.type!==""&&(s.attrType=r.type),this.pushStack(s)}parseNodeAttr(e){let t=e[0];e[0]!==""&&(t=parseInt(e[0]),isNaN(t)&&(t=e[0]));let n="",i="";return e.length>1&&(n=e[1].replace(/^(\w+)::/,""),i=e[2]),{id:t,name:n,type:i}}parseNodeProperty(e,t,n){let i=t[1].replace(/^"/,"").replace(/"$/,"").trim(),s=t[2].replace(/^"/,"").replace(/"$/,"").trim();i==="Content"&&s===","&&(s=n.replace(/"/g,"").replace(/,$/,"").trim());const r=this.getCurrentNode();if(r.name==="Properties70"){this.parseNodeSpecialProperty(e,i,s);return}if(i==="C"){const l=s.split(",").slice(1),f=parseInt(l[0]),h=parseInt(l[1]);let d=s.split(",").slice(3);d=d.map(function(m){return m.trim().replace(/^"/,"")}),i="connections",s=[f,h],Xo(s,d),r[i]===void 0&&(r[i]=[])}i==="Node"&&(r.id=s),i in r&&Array.isArray(r[i])?r[i].push(s):i!=="a"?r[i]=s:r.a=s,this.setCurrentProp(r,i),i==="a"&&s.slice(-1)!==","&&(r.a=Vn(s))}parseNodePropertyContinued(e){const t=this.getCurrentNode();t.a+=e,e.slice(-1)!==","&&(t.a=Vn(t.a))}parseNodeSpecialProperty(e,t,n){const i=n.split('",').map(function(h){return h.trim().replace(/^\"/,"").replace(/\s/,"_")}),s=i[0],r=i[1],a=i[2],l=i[3];let f=i[4];switch(r){case"int":case"enum":case"bool":case"ULongLong":case"double":case"Number":case"FieldOfView":f=parseFloat(f);break;case"Color":case"ColorRGB":case"Vector3D":case"Lcl_Translation":case"Lcl_Rotation":case"Lcl_Scaling":f=Vn(f);break}this.getPrevNode()[s]={type:r,type2:a,flag:l,value:f},this.setCurrentProp(this.getPrevNode(),s)}}class jo{parse(e){const t=new Yi(e);t.skip(23);const n=t.getUint32();if(n<6400)throw new Error("THREE.FBXLoader: FBX version not supported, FileVersion: "+n);const i=new Xi;for(;!this.endOfContent(t);){const s=this.parseNode(t,n);s!==null&&i.add(s.name,s)}return i}endOfContent(e){return e.size()%16===0?(e.getOffset()+160+16&-16)>=e.size():e.getOffset()+160+16>=e.size()}parseNode(e,t){const n={},i=t>=7500?e.getUint64():e.getUint32(),s=t>=7500?e.getUint64():e.getUint32();t>=7500?e.getUint64():e.getUint32();const r=e.getUint8(),a=e.getString(r);if(i===0)return null;const l=[];for(let m=0;m<s;m++)l.push(this.parseProperty(e));const f=l.length>0?l[0]:"",h=l.length>1?l[1]:"",d=l.length>2?l[2]:"";for(n.singleProperty=s===1&&e.getOffset()===i;i>e.getOffset();){const m=this.parseNode(e,t);m!==null&&this.parseSubNode(a,n,m)}return n.propertyList=l,typeof f=="number"&&(n.id=f),h!==""&&(n.attrName=h),d!==""&&(n.attrType=d),a!==""&&(n.name=a),n}parseSubNode(e,t,n){if(n.singleProperty===!0){const i=n.propertyList[0];Array.isArray(i)?(t[n.name]=n,n.a=i):t[n.name]=i}else if(e==="Connections"&&n.name==="C"){const i=[];n.propertyList.forEach(function(s,r){r!==0&&i.push(s)}),t.connections===void 0&&(t.connections=[]),t.connections.push(i)}else if(n.name==="Properties70")Object.keys(n).forEach(function(s){t[s]=n[s]});else if(e==="Properties70"&&n.name==="P"){let i=n.propertyList[0],s=n.propertyList[1];const r=n.propertyList[2],a=n.propertyList[3];let l;i.indexOf("Lcl ")===0&&(i=i.replace("Lcl ","Lcl_")),s.indexOf("Lcl ")===0&&(s=s.replace("Lcl ","Lcl_")),s==="Color"||s==="ColorRGB"||s==="Vector"||s==="Vector3D"||s.indexOf("Lcl_")===0?l=[n.propertyList[4],n.propertyList[5],n.propertyList[6]]:l=n.propertyList[4],t[i]={type:s,type2:r,flag:a,value:l}}else t[n.name]===void 0?typeof n.id=="number"?(t[n.name]={},t[n.name][n.id]=n):t[n.name]=n:n.name==="PoseNode"?(Array.isArray(t[n.name])||(t[n.name]=[t[n.name]]),t[n.name].push(n)):t[n.name][n.id]===void 0&&(t[n.name][n.id]=n)}parseProperty(e){const t=e.getString(1);let n;switch(t){case"C":return e.getBoolean();case"D":return e.getFloat64();case"F":return e.getFloat32();case"I":return e.getInt32();case"L":return e.getInt64();case"R":return n=e.getUint32(),e.getArrayBuffer(n);case"S":return n=e.getUint32(),e.getString(n);case"Y":return e.getInt16();case"b":case"c":case"d":case"f":case"i":case"l":const i=e.getUint32(),s=e.getUint32(),r=e.getUint32();if(s===0)switch(t){case"b":case"c":return e.getBooleanArray(i);case"d":return e.getFloat64Array(i);case"f":return e.getFloat32Array(i);case"i":return e.getInt32Array(i);case"l":return e.getInt64Array(i)}const a=Tr(new Uint8Array(e.getArrayBuffer(r))),l=new Yi(a.buffer);switch(t){case"b":case"c":return l.getBooleanArray(i);case"d":return l.getFloat64Array(i);case"f":return l.getFloat32Array(i);case"i":return l.getInt32Array(i);case"l":return l.getInt64Array(i)}default:throw new Error("THREE.FBXLoader: Unknown property type "+t)}}}class Yi{constructor(e,t){this.dv=new DataView(e),this.offset=0,this.littleEndian=t!==void 0?t:!0}getOffset(){return this.offset}size(){return this.dv.buffer.byteLength}skip(e){this.offset+=e}getBoolean(){return(this.getUint8()&1)===1}getBooleanArray(e){const t=[];for(let n=0;n<e;n++)t.push(this.getBoolean());return t}getUint8(){const e=this.dv.getUint8(this.offset);return this.offset+=1,e}getInt16(){const e=this.dv.getInt16(this.offset,this.littleEndian);return this.offset+=2,e}getInt32(){const e=this.dv.getInt32(this.offset,this.littleEndian);return this.offset+=4,e}getInt32Array(e){const t=[];for(let n=0;n<e;n++)t.push(this.getInt32());return t}getUint32(){const e=this.dv.getUint32(this.offset,this.littleEndian);return this.offset+=4,e}getInt64(){let e,t;return this.littleEndian?(e=this.getUint32(),t=this.getUint32()):(t=this.getUint32(),e=this.getUint32()),t&2147483648?(t=~t&4294967295,e=~e&4294967295,e===4294967295&&(t=t+1&4294967295),e=e+1&4294967295,-(t*4294967296+e)):t*4294967296+e}getInt64Array(e){const t=[];for(let n=0;n<e;n++)t.push(this.getInt64());return t}getUint64(){let e,t;return this.littleEndian?(e=this.getUint32(),t=this.getUint32()):(t=this.getUint32(),e=this.getUint32()),t*4294967296+e}getFloat32(){const e=this.dv.getFloat32(this.offset,this.littleEndian);return this.offset+=4,e}getFloat32Array(e){const t=[];for(let n=0;n<e;n++)t.push(this.getFloat32());return t}getFloat64(){const e=this.dv.getFloat64(this.offset,this.littleEndian);return this.offset+=8,e}getFloat64Array(e){const t=[];for(let n=0;n<e;n++)t.push(this.getFloat64());return t}getArrayBuffer(e){const t=this.dv.buffer.slice(this.offset,this.offset+e);return this.offset+=e,t}getString(e){let t=[];for(let i=0;i<e;i++)t[i]=this.getUint8();const n=t.indexOf(0);return n>=0&&(t=t.slice(0,n)),c.LoaderUtils.decodeText(new Uint8Array(t))}}class Xi{add(e,t){this[e]=t}}function Go(o){const e="Kaydara FBX Binary \0";return o.byteLength>=e.length&&e===Ki(o,0,e.length)}function Ro(o){const e=["K","a","y","d","a","r","a","\\","F","B","X","\\","B","i","n","a","r","y","\\","\\"];let t=0;function n(i){const s=o[i-1];return o=o.slice(t+i),t++,s}for(let i=0;i<e.length;++i)if(n(1)===e[i])return!1;return!0}function Wi(o){const e=/FBXVersion: (\d+)/,t=o.match(e);if(t)return parseInt(t[1]);throw new Error("THREE.FBXLoader: Cannot find the version number for the file given.")}function Eo(o){return o/46186158e3}const Yo=[];function rn(o,e,t,n){let i;switch(n.mappingType){case"ByPolygonVertex":i=o;break;case"ByPolygon":i=e;break;case"ByVertice":i=t;break;case"AllSame":i=n.indices[0];break;default:console.warn("THREE.FBXLoader: unknown attribute mapping type "+n.mappingType)}n.referenceType==="IndexToDirect"&&(i=n.indices[i]);const s=i*n.dataSize,r=s+n.dataSize;return Wo(Yo,n.buffer,s,r)}const zn=new c.Euler,Lt=new c.Vector3;function Zi(o){const e=new c.Matrix4,t=new c.Matrix4,n=new c.Matrix4,i=new c.Matrix4,s=new c.Matrix4,r=new c.Matrix4,a=new c.Matrix4,l=new c.Matrix4,f=new c.Matrix4,h=new c.Matrix4,d=new c.Matrix4,m=new c.Matrix4,y=o.inheritType?o.inheritType:0;if(o.translation&&e.setPosition(Lt.fromArray(o.translation)),o.preRotation){const _=o.preRotation.map(c.MathUtils.degToRad);_.push(o.eulerOrder),t.makeRotationFromEuler(zn.fromArray(_))}if(o.rotation){const _=o.rotation.map(c.MathUtils.degToRad);_.push(o.eulerOrder),n.makeRotationFromEuler(zn.fromArray(_))}if(o.postRotation){const _=o.postRotation.map(c.MathUtils.degToRad);_.push(o.eulerOrder),i.makeRotationFromEuler(zn.fromArray(_)),i.invert()}o.scale&&s.scale(Lt.fromArray(o.scale)),o.scalingOffset&&a.setPosition(Lt.fromArray(o.scalingOffset)),o.scalingPivot&&r.setPosition(Lt.fromArray(o.scalingPivot)),o.rotationOffset&&l.setPosition(Lt.fromArray(o.rotationOffset)),o.rotationPivot&&f.setPosition(Lt.fromArray(o.rotationPivot)),o.parentMatrixWorld&&(d.copy(o.parentMatrix),h.copy(o.parentMatrixWorld));const M=t.clone().multiply(n).multiply(i),S=new c.Matrix4;S.extractRotation(h);const v=new c.Matrix4;v.copyPosition(h);const L=v.clone().invert().multiply(h),I=S.clone().invert().multiply(L),A=s,g=new c.Matrix4;if(y===0)g.copy(S).multiply(M).multiply(I).multiply(A);else if(y===1)g.copy(S).multiply(I).multiply(M).multiply(A);else{const T=new c.Matrix4().scale(new c.Vector3().setFromMatrixScale(d)).clone().invert(),F=I.clone().multiply(T);g.copy(S).multiply(M).multiply(F).multiply(A)}const O=f.clone().invert(),x=r.clone().invert();let C=e.clone().multiply(l).multiply(f).multiply(t).multiply(n).multiply(i).multiply(O).multiply(a).multiply(r).multiply(s).multiply(x);const p=new c.Matrix4().copyPosition(C),w=h.clone().multiply(p);return m.copyPosition(w),C=m.clone().multiply(g),C.premultiply(h.invert()),C}function qi(o){o=o||0;const e=["ZYX","YZX","XZY","ZXY","YXZ","XYZ"];return o===6?(console.warn("THREE.FBXLoader: unsupported Euler Order: Spherical XYZ. Animations and rotations may be incorrect."),e[0]):e[o]}function Vn(o){return o.split(",").map(function(t){return parseFloat(t)})}function Ki(o,e,t){return e===void 0&&(e=0),t===void 0&&(t=o.byteLength),c.LoaderUtils.decodeText(new Uint8Array(o,e,t))}function Xo(o,e){for(let t=0,n=o.length,i=e.length;t<i;t++,n++)o[n]=e[t]}function Wo(o,e,t,n){for(let i=t,s=0;i<n;i++,s++)o[s]=e[i];return o}function Qi(o,e,t){return o.slice(0,e).concat(t).concat(o.slice(e))}var Zo=Object.defineProperty,qo=(o,e,t)=>e in o?Zo(o,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):o[e]=t,jn=(o,e,t)=>(qo(o,typeof e!="symbol"?e+"":e,t),t);class Ko extends c.Loader{constructor(e){super(e)}load(e,t,n,i){const s=new c.FileLoader(this.manager);s.setPath(this.path),s.setRequestHeader(this.requestHeader),s.setWithCredentials(this.withCredentials),s.load(e,r=>{if(typeof r!="string")throw new Error("unsupported data type");const a=JSON.parse(r),l=this.parse(a);t&&t(l)},n,i)}loadAsync(e,t){return super.loadAsync(e,t)}parse(e){return new Gn(e)}}class Gn{constructor(e){jn(this,"data"),this.data=e}generateShapes(e,t=100,n){const i=[],s={letterSpacing:0,lineHeight:1,...n},r=Qo(e,t,this.data,s);for(let a=0,l=r.length;a<l;a++)Array.prototype.push.apply(i,r[a].toShapes(!1));return i}}jn(Gn,"isFont"),jn(Gn,"type");function Qo(o,e,t,n){const i=Array.from(o),s=e/t.resolution,r=(t.boundingBox.yMax-t.boundingBox.yMin+t.underlineThickness)*s,a=[];let l=0,f=0;for(let h=0;h<i.length;h++){const d=i[h];if(d===`
|
|
74
|
-
`)l=0,f-=
|
|
75
|
-
`,m=function(
|
|
76
|
-
`;
|
|
77
|
-
`,
|
|
78
|
-
`;continue}if((T=_.match(O))&&(w.gamma=parseFloat(T[1])),(T=_.match(x))&&(w.exposure=parseFloat(T[1])),(T=_.match(C))&&(w.valid|=2,w.format=T[1]),(T=_.match(p))&&(w.valid|=4,w.height=parseInt(T[1],10),w.width=parseInt(T[2],10)),w.valid&2&&w.valid&4)break}return w.valid&2?w.valid&4?w:a(3,"missing image size specifier"):a(3,"missing format specifier")},M=function(A,g,O){const x=g;if(x<8||x>32767||A[0]!==2||A[1]!==2||A[2]&128)return new Uint8Array(A);if(x!==(A[2]<<8|A[3]))return a(3,"wrong scanline width");const C=new Uint8Array(4*g*O);if(!C.length)return a(4,"unable to allocate buffer space");let p=0,w=0;const _=4*x,T=new Uint8Array(4),F=new Uint8Array(_);let J=O;for(;J>0&&w<A.byteLength;){if(w+4>A.byteLength)return a(1);if(T[0]=A[w++],T[1]=A[w++],T[2]=A[w++],T[3]=A[w++],T[0]!=2||T[1]!=2||(T[2]<<8|T[3])!=x)return a(3,"bad rgbe scanline format");let X=0,ee;for(;X<_&&w<A.byteLength;){ee=A[w++];const q=ee>128;if(q&&(ee-=128),ee===0||X+ee>_)return a(3,"bad scanline data");if(q){const Z=A[w++];for(let ie=0;ie<ee;ie++)F[X++]=Z}else F.set(A.subarray(w,w+ee),X),X+=ee,w+=ee}const $=x;for(let q=0;q<$;q++){let Z=0;C[p]=F[q+Z],Z+=x,C[p+1]=F[q+Z],Z+=x,C[p+2]=F[q+Z],Z+=x,C[p+3]=F[q+Z],p+=4}J--}return C},S=function(A,g,O,x){const C=A[g+3],p=Math.pow(2,C-128)/255;O[x+0]=A[g+0]*p,O[x+1]=A[g+1]*p,O[x+2]=A[g+2]*p,O[x+3]=1},v=function(A,g,O,x){const C=A[g+3],p=Math.pow(2,C-128)/255;O[x+0]=c.DataUtils.toHalfFloat(Math.min(A[g+0]*p,65504)),O[x+1]=c.DataUtils.toHalfFloat(Math.min(A[g+1]*p,65504)),O[x+2]=c.DataUtils.toHalfFloat(Math.min(A[g+2]*p,65504)),O[x+3]=c.DataUtils.toHalfFloat(1)},L=new Uint8Array(e);L.pos=0;const I=y(L);if(I!==-1){const A=I.width,g=I.height,O=M(L.subarray(L.pos),A,g);if(O!==-1){let x,C,p;switch(this.type){case c.FloatType:p=O.length/4;const w=new Float32Array(p*4);for(let T=0;T<p;T++)S(O,T*4,w,T*4);x=w,C=c.FloatType;break;case c.HalfFloatType:p=O.length/4;const _=new Uint16Array(p*4);for(let T=0;T<p;T++)v(O,T*4,_,T*4);x=_,C=c.HalfFloatType;break;default:console.error("THREE.RGBELoader: unsupported type: ",this.type);break}return{width:A,height:g,data:x,header:I.string,gamma:I.gamma,exposure:I.exposure,type:C}}}return null}setDataType(e){return this.type=e,this}load(e,t,n,i){function s(r,a){switch(r.type){case c.FloatType:case c.HalfFloatType:"colorSpace"in r?r.colorSpace="srgb-linear":r.encoding=3e3,r.minFilter=c.LinearFilter,r.magFilter=c.LinearFilter,r.generateMipmaps=!1,r.flipY=!0;break}t&&t(r,a)}return super.load(e,s,n,i)}}class jt extends c.Loader{constructor(e){super(e),this.defaultDPI=90,this.defaultUnit="px"}load(e,t,n,i){const s=this,r=new c.FileLoader(s.manager);r.setPath(s.path),r.setRequestHeader(s.requestHeader),r.setWithCredentials(s.withCredentials),r.load(e,function(a){try{t(s.parse(a))}catch(l){i?i(l):console.error(l),s.manager.itemError(e)}},n,i)}parse(e){const t=this;function n(G,z){if(G.nodeType!==1)return;const b=g(G);let V=!0,H=null;switch(G.nodeName){case"svg":break;case"style":s(G);break;case"g":z=M(G,z);break;case"path":z=M(G,z),G.hasAttribute("d")&&(H=i(G));break;case"rect":z=M(G,z),H=l(G);break;case"polygon":z=M(G,z),H=f(G);break;case"polyline":z=M(G,z),H=h(G);break;case"circle":z=M(G,z),H=d(G);break;case"ellipse":z=M(G,z),H=m(G);break;case"line":z=M(G,z),H=y(G);break;case"defs":V=!1;break;case"mask":V=!1;break;case"use":z=M(G,z);const N=G.href.baseVal.substring(1),j=G.viewportElement.getElementById(N);j?n(j,z):console.warn("SVGLoader: 'use node' references non-existent node id: "+N);break}if(H&&(z.fill!==void 0&&z.fill!=="none"&&H.color.setStyle(z.fill),x(H,ie),_.push(H),H.userData={node:G,style:z}),V){const N=G.childNodes;for(let j=0;j<N.length;j++)n(N[j],z)}b&&(F.pop(),F.length>0?ie.copy(F[F.length-1]):ie.identity())}function i(G){const z=new c.ShapePath,b=new c.Vector2,V=new c.Vector2,H=new c.Vector2;let N=!0,j=!1;const D=G.getAttribute("d").match(/[a-df-z][^a-df-z]*/gi);for(let k=0,R=D.length;k<R;k++){const W=D[k],Y=W.charAt(0),te=W.substr(1).trim();N===!0&&(j=!0,N=!1);let U;switch(Y){case"M":U=v(te);for(let B=0,oe=U.length;B<oe;B+=2)b.x=U[B+0],b.y=U[B+1],V.x=b.x,V.y=b.y,B===0?z.moveTo(b.x,b.y):z.lineTo(b.x,b.y),B===0&&H.copy(b);break;case"H":U=v(te);for(let B=0,oe=U.length;B<oe;B++)b.x=U[B],V.x=b.x,V.y=b.y,z.lineTo(b.x,b.y),B===0&&j===!0&&H.copy(b);break;case"V":U=v(te);for(let B=0,oe=U.length;B<oe;B++)b.y=U[B],V.x=b.x,V.y=b.y,z.lineTo(b.x,b.y),B===0&&j===!0&&H.copy(b);break;case"L":U=v(te);for(let B=0,oe=U.length;B<oe;B+=2)b.x=U[B+0],b.y=U[B+1],V.x=b.x,V.y=b.y,z.lineTo(b.x,b.y),B===0&&j===!0&&H.copy(b);break;case"C":U=v(te);for(let B=0,oe=U.length;B<oe;B+=6)z.bezierCurveTo(U[B+0],U[B+1],U[B+2],U[B+3],U[B+4],U[B+5]),V.x=U[B+2],V.y=U[B+3],b.x=U[B+4],b.y=U[B+5],B===0&&j===!0&&H.copy(b);break;case"S":U=v(te);for(let B=0,oe=U.length;B<oe;B+=4)z.bezierCurveTo(S(b.x,V.x),S(b.y,V.y),U[B+0],U[B+1],U[B+2],U[B+3]),V.x=U[B+0],V.y=U[B+1],b.x=U[B+2],b.y=U[B+3],B===0&&j===!0&&H.copy(b);break;case"Q":U=v(te);for(let B=0,oe=U.length;B<oe;B+=4)z.quadraticCurveTo(U[B+0],U[B+1],U[B+2],U[B+3]),V.x=U[B+0],V.y=U[B+1],b.x=U[B+2],b.y=U[B+3],B===0&&j===!0&&H.copy(b);break;case"T":U=v(te);for(let B=0,oe=U.length;B<oe;B+=2){const le=S(b.x,V.x),me=S(b.y,V.y);z.quadraticCurveTo(le,me,U[B+0],U[B+1]),V.x=le,V.y=me,b.x=U[B+0],b.y=U[B+1],B===0&&j===!0&&H.copy(b)}break;case"A":U=v(te,[3,4],7);for(let B=0,oe=U.length;B<oe;B+=7){if(U[B+5]==b.x&&U[B+6]==b.y)continue;const le=b.clone();b.x=U[B+5],b.y=U[B+6],V.x=b.x,V.y=b.y,r(z,U[B],U[B+1],U[B+2],U[B+3],U[B+4],le,b),B===0&&j===!0&&H.copy(b)}break;case"m":U=v(te);for(let B=0,oe=U.length;B<oe;B+=2)b.x+=U[B+0],b.y+=U[B+1],V.x=b.x,V.y=b.y,B===0?z.moveTo(b.x,b.y):z.lineTo(b.x,b.y),B===0&&H.copy(b);break;case"h":U=v(te);for(let B=0,oe=U.length;B<oe;B++)b.x+=U[B],V.x=b.x,V.y=b.y,z.lineTo(b.x,b.y),B===0&&j===!0&&H.copy(b);break;case"v":U=v(te);for(let B=0,oe=U.length;B<oe;B++)b.y+=U[B],V.x=b.x,V.y=b.y,z.lineTo(b.x,b.y),B===0&&j===!0&&H.copy(b);break;case"l":U=v(te);for(let B=0,oe=U.length;B<oe;B+=2)b.x+=U[B+0],b.y+=U[B+1],V.x=b.x,V.y=b.y,z.lineTo(b.x,b.y),B===0&&j===!0&&H.copy(b);break;case"c":U=v(te);for(let B=0,oe=U.length;B<oe;B+=6)z.bezierCurveTo(b.x+U[B+0],b.y+U[B+1],b.x+U[B+2],b.y+U[B+3],b.x+U[B+4],b.y+U[B+5]),V.x=b.x+U[B+2],V.y=b.y+U[B+3],b.x+=U[B+4],b.y+=U[B+5],B===0&&j===!0&&H.copy(b);break;case"s":U=v(te);for(let B=0,oe=U.length;B<oe;B+=4)z.bezierCurveTo(S(b.x,V.x),S(b.y,V.y),b.x+U[B+0],b.y+U[B+1],b.x+U[B+2],b.y+U[B+3]),V.x=b.x+U[B+0],V.y=b.y+U[B+1],b.x+=U[B+2],b.y+=U[B+3],B===0&&j===!0&&H.copy(b);break;case"q":U=v(te);for(let B=0,oe=U.length;B<oe;B+=4)z.quadraticCurveTo(b.x+U[B+0],b.y+U[B+1],b.x+U[B+2],b.y+U[B+3]),V.x=b.x+U[B+0],V.y=b.y+U[B+1],b.x+=U[B+2],b.y+=U[B+3],B===0&&j===!0&&H.copy(b);break;case"t":U=v(te);for(let B=0,oe=U.length;B<oe;B+=2){const le=S(b.x,V.x),me=S(b.y,V.y);z.quadraticCurveTo(le,me,b.x+U[B+0],b.y+U[B+1]),V.x=le,V.y=me,b.x=b.x+U[B+0],b.y=b.y+U[B+1],B===0&&j===!0&&H.copy(b)}break;case"a":U=v(te,[3,4],7);for(let B=0,oe=U.length;B<oe;B+=7){if(U[B+5]==0&&U[B+6]==0)continue;const le=b.clone();b.x+=U[B+5],b.y+=U[B+6],V.x=b.x,V.y=b.y,r(z,U[B],U[B+1],U[B+2],U[B+3],U[B+4],le,b),B===0&&j===!0&&H.copy(b)}break;case"Z":case"z":z.currentPath.autoClose=!0,z.currentPath.curves.length>0&&(b.copy(H),z.currentPath.currentPoint.copy(b),N=!0);break;default:console.warn(W)}j=!1}return z}function s(G){if(!(!G.sheet||!G.sheet.cssRules||!G.sheet.cssRules.length))for(let z=0;z<G.sheet.cssRules.length;z++){const b=G.sheet.cssRules[z];if(b.type!==1)continue;const V=b.selectorText.split(/,/gm).filter(Boolean).map(H=>H.trim());for(let H=0;H<V.length;H++)T[V[H]]=Object.assign(T[V[H]]||{},b.style)}}function r(G,z,b,V,H,N,j,P){if(z==0||b==0){G.lineTo(P.x,P.y);return}V=V*Math.PI/180,z=Math.abs(z),b=Math.abs(b);const D=(j.x-P.x)/2,k=(j.y-P.y)/2,R=Math.cos(V)*D+Math.sin(V)*k,W=-Math.sin(V)*D+Math.cos(V)*k;let Y=z*z,te=b*b;const U=R*R,B=W*W,oe=U/Y+B/te;if(oe>1){const Ut=Math.sqrt(oe);z=Ut*z,b=Ut*b,Y=z*z,te=b*b}const le=Y*B+te*U,me=(Y*te-le)/le;let _e=Math.sqrt(Math.max(0,me));H===N&&(_e=-_e);const we=_e*z*W/b,Ie=-_e*b*R/z,st=Math.cos(V)*we-Math.sin(V)*Ie+(j.x+P.x)/2,en=Math.sin(V)*we+Math.cos(V)*Ie+(j.y+P.y)/2,Bt=a(1,0,(R-we)/z,(W-Ie)/b),Xe=a((R-we)/z,(W-Ie)/b,(-R-we)/z,(-W-Ie)/b)%(Math.PI*2);G.currentPath.absellipse(st,en,z,b,Bt,Bt+Xe,N===0,V)}function a(G,z,b,V){const H=G*b+z*V,N=Math.sqrt(G*G+z*z)*Math.sqrt(b*b+V*V);let j=Math.acos(Math.max(-1,Math.min(1,H/N)));return G*V-z*b<0&&(j=-j),j}function l(G){const z=A(G.getAttribute("x")||0),b=A(G.getAttribute("y")||0),V=A(G.getAttribute("rx")||G.getAttribute("ry")||0),H=A(G.getAttribute("ry")||G.getAttribute("rx")||0),N=A(G.getAttribute("width")),j=A(G.getAttribute("height")),P=1-.551915024494,D=new c.ShapePath;return D.moveTo(z+V,b),D.lineTo(z+N-V,b),(V!==0||H!==0)&&D.bezierCurveTo(z+N-V*P,b,z+N,b+H*P,z+N,b+H),D.lineTo(z+N,b+j-H),(V!==0||H!==0)&&D.bezierCurveTo(z+N,b+j-H*P,z+N-V*P,b+j,z+N-V,b+j),D.lineTo(z+V,b+j),(V!==0||H!==0)&&D.bezierCurveTo(z+V*P,b+j,z,b+j-H*P,z,b+j-H),D.lineTo(z,b+H),(V!==0||H!==0)&&D.bezierCurveTo(z,b+H*P,z+V*P,b,z+V,b),D}function f(G){function z(N,j,P){const D=A(j),k=A(P);H===0?V.moveTo(D,k):V.lineTo(D,k),H++}const b=/(-?[\d\.?]+)[,|\s](-?[\d\.?]+)/g,V=new c.ShapePath;let H=0;return G.getAttribute("points").replace(b,z),V.currentPath.autoClose=!0,V}function h(G){function z(N,j,P){const D=A(j),k=A(P);H===0?V.moveTo(D,k):V.lineTo(D,k),H++}const b=/(-?[\d\.?]+)[,|\s](-?[\d\.?]+)/g,V=new c.ShapePath;let H=0;return G.getAttribute("points").replace(b,z),V.currentPath.autoClose=!1,V}function d(G){const z=A(G.getAttribute("cx")||0),b=A(G.getAttribute("cy")||0),V=A(G.getAttribute("r")||0),H=new c.Path;H.absarc(z,b,V,0,Math.PI*2);const N=new c.ShapePath;return N.subPaths.push(H),N}function m(G){const z=A(G.getAttribute("cx")||0),b=A(G.getAttribute("cy")||0),V=A(G.getAttribute("rx")||0),H=A(G.getAttribute("ry")||0),N=new c.Path;N.absellipse(z,b,V,H,0,Math.PI*2);const j=new c.ShapePath;return j.subPaths.push(N),j}function y(G){const z=A(G.getAttribute("x1")||0),b=A(G.getAttribute("y1")||0),V=A(G.getAttribute("x2")||0),H=A(G.getAttribute("y2")||0),N=new c.ShapePath;return N.moveTo(z,b),N.lineTo(V,H),N.currentPath.autoClose=!1,N}function M(G,z){z=Object.assign({},z);let b={};if(G.hasAttribute("class")){const j=G.getAttribute("class").split(/\s/).filter(Boolean).map(P=>P.trim());for(let P=0;P<j.length;P++)b=Object.assign(b,T["."+j[P]])}G.hasAttribute("id")&&(b=Object.assign(b,T["#"+G.getAttribute("id")]));function V(j,P,D){D===void 0&&(D=function(R){return R.startsWith("url")&&console.warn("SVGLoader: url access in attributes is not implemented."),R}),G.hasAttribute(j)&&(z[P]=D(G.getAttribute(j))),b[j]&&(z[P]=D(b[j])),G.style&&G.style[j]!==""&&(z[P]=D(G.style[j]))}function H(j){return Math.max(0,Math.min(1,A(j)))}function N(j){return Math.max(0,A(j))}return V("fill","fill"),V("fill-opacity","fillOpacity",H),V("fill-rule","fillRule"),V("opacity","opacity",H),V("stroke","stroke"),V("stroke-opacity","strokeOpacity",H),V("stroke-width","strokeWidth",N),V("stroke-linejoin","strokeLineJoin"),V("stroke-linecap","strokeLineCap"),V("stroke-miterlimit","strokeMiterLimit",N),V("visibility","visibility"),z}function S(G,z){return G-(z-G)}function v(G,z,b){if(typeof G!="string")throw new TypeError("Invalid input: "+typeof G);const V={SEPARATOR:/[ \t\r\n\,.\-+]/,WHITESPACE:/[ \t\r\n]/,DIGIT:/[\d]/,SIGN:/[-+]/,POINT:/\./,COMMA:/,/,EXP:/e/i,FLAGS:/[01]/},H=0,N=1,j=2,P=3;let D=H,k=!0,R="",W="";const Y=[];function te(le,me,_e){const we=new SyntaxError('Unexpected character "'+le+'" at index '+me+".");throw we.partial=_e,we}function U(){R!==""&&(W===""?Y.push(Number(R)):Y.push(Number(R)*Math.pow(10,Number(W)))),R="",W=""}let B;const oe=G.length;for(let le=0;le<oe;le++){if(B=G[le],Array.isArray(z)&&z.includes(Y.length%b)&&V.FLAGS.test(B)){D=N,R=B,U();continue}if(D===H){if(V.WHITESPACE.test(B))continue;if(V.DIGIT.test(B)||V.SIGN.test(B)){D=N,R=B;continue}if(V.POINT.test(B)){D=j,R=B;continue}V.COMMA.test(B)&&(k&&te(B,le,Y),k=!0)}if(D===N){if(V.DIGIT.test(B)){R+=B;continue}if(V.POINT.test(B)){R+=B,D=j;continue}if(V.EXP.test(B)){D=P;continue}V.SIGN.test(B)&&R.length===1&&V.SIGN.test(R[0])&&te(B,le,Y)}if(D===j){if(V.DIGIT.test(B)){R+=B;continue}if(V.EXP.test(B)){D=P;continue}V.POINT.test(B)&&R[R.length-1]==="."&&te(B,le,Y)}if(D===P){if(V.DIGIT.test(B)){W+=B;continue}if(V.SIGN.test(B)){if(W===""){W+=B;continue}W.length===1&&V.SIGN.test(W)&&te(B,le,Y)}}V.WHITESPACE.test(B)?(U(),D=H,k=!1):V.COMMA.test(B)?(U(),D=H,k=!0):V.SIGN.test(B)?(U(),D=N,R=B):V.POINT.test(B)?(U(),D=j,R=B):te(B,le,Y)}return U(),Y}const L=["mm","cm","in","pt","pc","px"],I={mm:{mm:1,cm:.1,in:1/25.4,pt:72/25.4,pc:6/25.4,px:-1},cm:{mm:10,cm:1,in:1/2.54,pt:72/2.54,pc:6/2.54,px:-1},in:{mm:25.4,cm:2.54,in:1,pt:72,pc:6,px:-1},pt:{mm:25.4/72,cm:2.54/72,in:1/72,pt:1,pc:6/72,px:-1},pc:{mm:25.4/6,cm:2.54/6,in:1/6,pt:72/6,pc:1,px:-1},px:{px:1}};function A(G){let z="px";if(typeof G=="string"||G instanceof String)for(let V=0,H=L.length;V<H;V++){const N=L[V];if(G.endsWith(N)){z=N,G=G.substring(0,G.length-N.length);break}}let b;return z==="px"&&t.defaultUnit!=="px"?b=I.in[t.defaultUnit]/t.defaultDPI:(b=I[z][t.defaultUnit],b<0&&(b=I[z].in*t.defaultDPI)),b*parseFloat(G)}function g(G){if(!(G.hasAttribute("transform")||G.nodeName==="use"&&(G.hasAttribute("x")||G.hasAttribute("y"))))return null;const z=O(G);return F.length>0&&z.premultiply(F[F.length-1]),ie.copy(z),F.push(z),z}function O(G){const z=new c.Matrix3,b=J;if(G.nodeName==="use"&&(G.hasAttribute("x")||G.hasAttribute("y"))){const V=A(G.getAttribute("x")),H=A(G.getAttribute("y"));z.translate(V,H)}if(G.hasAttribute("transform")){const V=G.getAttribute("transform").split(")");for(let H=V.length-1;H>=0;H--){const N=V[H].trim();if(N==="")continue;const j=N.indexOf("("),P=N.length;if(j>0&&j<P){const D=N.substr(0,j),k=v(N.substr(j+1,P-j-1));switch(b.identity(),D){case"translate":if(k.length>=1){const R=k[0];let W=R;k.length>=2&&(W=k[1]),b.translate(R,W)}break;case"rotate":if(k.length>=1){let R=0,W=0,Y=0;R=-k[0]*Math.PI/180,k.length>=3&&(W=k[1],Y=k[2]),X.identity().translate(-W,-Y),ee.identity().rotate(R),$.multiplyMatrices(ee,X),X.identity().translate(W,Y),b.multiplyMatrices(X,$)}break;case"scale":if(k.length>=1){const R=k[0];let W=R;k.length>=2&&(W=k[1]),b.scale(R,W)}break;case"skewX":k.length===1&&b.set(1,Math.tan(k[0]*Math.PI/180),0,0,1,0,0,0,1);break;case"skewY":k.length===1&&b.set(1,0,0,Math.tan(k[0]*Math.PI/180),1,0,0,0,1);break;case"matrix":k.length===6&&b.set(k[0],k[2],k[4],k[1],k[3],k[5],0,0,1);break}}z.premultiply(b)}}return z}function x(G,z){function b(N){Z.set(N.x,N.y,1).applyMatrix3(z),N.set(Z.x,Z.y)}const V=C(z),H=G.subPaths;for(let N=0,j=H.length;N<j;N++){const D=H[N].curves;for(let k=0;k<D.length;k++){const R=D[k];R.isLineCurve?(b(R.v1),b(R.v2)):R.isCubicBezierCurve?(b(R.v0),b(R.v1),b(R.v2),b(R.v3)):R.isQuadraticBezierCurve?(b(R.v0),b(R.v1),b(R.v2)):R.isEllipseCurve&&(V&&console.warn("SVGLoader: Elliptic arc or ellipse rotation or skewing is not implemented."),q.set(R.aX,R.aY),b(q),R.aX=q.x,R.aY=q.y,R.xRadius*=p(z),R.yRadius*=w(z))}}}function C(G){return G.elements[1]!==0||G.elements[3]!==0}function p(G){const z=G.elements;return Math.sqrt(z[0]*z[0]+z[1]*z[1])}function w(G){const z=G.elements;return Math.sqrt(z[3]*z[3]+z[4]*z[4])}const _=[],T={},F=[],J=new c.Matrix3,X=new c.Matrix3,ee=new c.Matrix3,$=new c.Matrix3,q=new c.Vector2,Z=new c.Vector3,ie=new c.Matrix3,ne=new DOMParser().parseFromString(e,"image/svg+xml");return n(ne.documentElement,{fill:"#000",fillOpacity:1,strokeOpacity:1,strokeWidth:1,strokeLineJoin:"miter",strokeLineCap:"butt",strokeMiterLimit:4}),{paths:_,xml:ne.documentElement}}static createShapes(e){const n={ORIGIN:0,DESTINATION:1,BETWEEN:2,LEFT:3,RIGHT:4,BEHIND:5,BEYOND:6},i={loc:n.ORIGIN,t:0};function s(v,L,I,A){const g=v.x,O=L.x,x=I.x,C=A.x,p=v.y,w=L.y,_=I.y,T=A.y,F=(C-x)*(p-_)-(T-_)*(g-x),J=(O-g)*(p-_)-(w-p)*(g-x),X=(T-_)*(O-g)-(C-x)*(w-p),ee=F/X,$=J/X;if(X===0&&F!==0||ee<=0||ee>=1||$<0||$>1)return null;if(F===0&&X===0){for(let q=0;q<2;q++)if(r(q===0?I:A,v,L),i.loc==n.ORIGIN){const Z=q===0?I:A;return{x:Z.x,y:Z.y,t:i.t}}else if(i.loc==n.BETWEEN){const Z=+(g+i.t*(O-g)).toPrecision(10),ie=+(p+i.t*(w-p)).toPrecision(10);return{x:Z,y:ie,t:i.t}}return null}else{for(let ie=0;ie<2;ie++)if(r(ie===0?I:A,v,L),i.loc==n.ORIGIN){const ne=ie===0?I:A;return{x:ne.x,y:ne.y,t:i.t}}const q=+(g+ee*(O-g)).toPrecision(10),Z=+(p+ee*(w-p)).toPrecision(10);return{x:q,y:Z,t:ee}}}function r(v,L,I){const A=I.x-L.x,g=I.y-L.y,O=v.x-L.x,x=v.y-L.y,C=A*x-O*g;if(v.x===L.x&&v.y===L.y){i.loc=n.ORIGIN,i.t=0;return}if(v.x===I.x&&v.y===I.y){i.loc=n.DESTINATION,i.t=1;return}if(C<-Number.EPSILON){i.loc=n.LEFT;return}if(C>Number.EPSILON){i.loc=n.RIGHT;return}if(A*O<0||g*x<0){i.loc=n.BEHIND;return}if(Math.sqrt(A*A+g*g)<Math.sqrt(O*O+x*x)){i.loc=n.BEYOND;return}let p;A!==0?p=O/A:p=x/g,i.loc=n.BETWEEN,i.t=p}function a(v,L){const I=[],A=[];for(let g=1;g<v.length;g++){const O=v[g-1],x=v[g];for(let C=1;C<L.length;C++){const p=L[C-1],w=L[C],_=s(O,x,p,w);_!==null&&I.find(T=>T.t<=_.t+Number.EPSILON&&T.t>=_.t-Number.EPSILON)===void 0&&(I.push(_),A.push(new c.Vector2(_.x,_.y)))}}return A}function l(v,L,I){const A=new c.Vector2;L.getCenter(A);const g=[];return I.forEach(O=>{O.boundingBox.containsPoint(A)&&a(v,O.points).forEach(C=>{g.push({identifier:O.identifier,isCW:O.isCW,point:C})})}),g.sort((O,x)=>O.point.x-x.point.x),g}function f(v,L,I,A,g){(g==null||g==="")&&(g="nonzero");const O=new c.Vector2;v.boundingBox.getCenter(O);const x=[new c.Vector2(I,O.y),new c.Vector2(A,O.y)],C=l(x,v.boundingBox,L);C.sort((J,X)=>J.point.x-X.point.x);const p=[],w=[];C.forEach(J=>{J.identifier===v.identifier?p.push(J):w.push(J)});const _=p[0].point.x,T=[];let F=0;for(;F<w.length&&w[F].point.x<_;)T.length>0&&T[T.length-1]===w[F].identifier?T.pop():T.push(w[F].identifier),F++;if(T.push(v.identifier),g==="evenodd"){const J=T.length%2===0,X=T[T.length-2];return{identifier:v.identifier,isHole:J,for:X}}else if(g==="nonzero"){let J=!0,X=null,ee=null;for(let $=0;$<T.length;$++){const q=T[$];J?(ee=L[q].isCW,J=!1,X=q):ee!==L[q].isCW&&(ee=L[q].isCW,J=!0)}return{identifier:v.identifier,isHole:J,for:X}}else console.warn('fill-rule: "'+g+'" is currently not implemented.')}let h=0,d=999999999,m=-999999999,y=e.subPaths.map(v=>{const L=v.getPoints();let I=-999999999,A=999999999,g=-999999999,O=999999999;for(let x=0;x<L.length;x++){const C=L[x];C.y>I&&(I=C.y),C.y<A&&(A=C.y),C.x>g&&(g=C.x),C.x<O&&(O=C.x)}return m<=g&&(m=g+1),d>=O&&(d=O-1),{curves:v.curves,points:L,isCW:c.ShapeUtils.isClockWise(L),identifier:h++,boundingBox:new c.Box2(new c.Vector2(O,A),new c.Vector2(g,I))}});y=y.filter(v=>v.points.length>1);const M=y.map(v=>f(v,y,d,m,e.userData.style.fillRule)),S=[];return y.forEach(v=>{if(!M[v.identifier].isHole){const I=new c.Shape;I.curves=v.curves,M.filter(g=>g.isHole&&g.for===v.identifier).forEach(g=>{const O=y[g.identifier],x=new c.Path;x.curves=O.curves,I.holes.push(x)}),S.push(I)}}),S}static getStrokeStyle(e,t,n,i,s){return e=e!==void 0?e:1,t=t!==void 0?t:"#000",n=n!==void 0?n:"miter",i=i!==void 0?i:"butt",s=s!==void 0?s:4,{strokeColor:t,strokeWidth:e,strokeLineJoin:n,strokeLineCap:i,strokeMiterLimit:s}}static pointsToStroke(e,t,n,i){const s=[],r=[],a=[];if(jt.pointsToStrokeWithBuffers(e,t,n,i,s,r,a)===0)return null;const l=new c.BufferGeometry;return l.setAttribute("position",new c.Float32BufferAttribute(s,3)),l.setAttribute("normal",new c.Float32BufferAttribute(r,3)),l.setAttribute("uv",new c.Float32BufferAttribute(a,2)),l}static pointsToStrokeWithBuffers(e,t,n,i,s,r,a,l){const f=new c.Vector2,h=new c.Vector2,d=new c.Vector2,m=new c.Vector2,y=new c.Vector2,M=new c.Vector2,S=new c.Vector2,v=new c.Vector2,L=new c.Vector2,I=new c.Vector2,A=new c.Vector2,g=new c.Vector2,O=new c.Vector2,x=new c.Vector2,C=new c.Vector2,p=new c.Vector2,w=new c.Vector2;n=n!==void 0?n:12,i=i!==void 0?i:.001,l=l!==void 0?l:0,e=W(e);const _=e.length;if(_<2)return 0;const T=e[0].equals(e[_-1]);let F,J=e[0],X;const ee=t.strokeWidth/2,$=1/(_-1);let q=0,Z,ie,ne,ce,G=!1,z=0,b=l*3,V=l*2;H(e[0],e[1],f).multiplyScalar(ee),v.copy(e[0]).sub(f),L.copy(e[0]).add(f),I.copy(v),A.copy(L);for(let Y=1;Y<_;Y++){F=e[Y],Y===_-1?T?X=e[1]:X=void 0:X=e[Y+1];const te=f;if(H(J,F,te),d.copy(te).multiplyScalar(ee),g.copy(F).sub(d),O.copy(F).add(d),Z=q+$,ie=!1,X!==void 0){H(F,X,h),d.copy(h).multiplyScalar(ee),x.copy(F).sub(d),C.copy(F).add(d),ne=!0,d.subVectors(X,J),te.dot(d)<0&&(ne=!1),Y===1&&(G=ne),d.subVectors(X,F),d.normalize();const U=Math.abs(te.dot(d));if(U!==0){const B=ee/U;d.multiplyScalar(-B),m.subVectors(F,J),y.copy(m).setLength(B).add(d),p.copy(y).negate();const oe=y.length(),le=m.length();m.divideScalar(le),M.subVectors(X,F);const me=M.length();switch(M.divideScalar(me),m.dot(p)<le&&M.dot(p)<me&&(ie=!0),w.copy(y).add(F),p.add(F),ce=!1,ie?ne?(C.copy(p),O.copy(p)):(x.copy(p),g.copy(p)):P(),t.strokeLineJoin){case"bevel":D(ne,ie,Z);break;case"round":k(ne,ie),ne?j(F,g,x,Z,0):j(F,C,O,Z,1);break;case"miter":case"miter-clip":default:const _e=ee*t.strokeMiterLimit/oe;if(_e<1)if(t.strokeLineJoin!=="miter-clip"){D(ne,ie,Z);break}else k(ne,ie),ne?(M.subVectors(w,g).multiplyScalar(_e).add(g),S.subVectors(w,x).multiplyScalar(_e).add(x),N(g,Z,0),N(M,Z,0),N(F,Z,.5),N(F,Z,.5),N(M,Z,0),N(S,Z,0),N(F,Z,.5),N(S,Z,0),N(x,Z,0)):(M.subVectors(w,O).multiplyScalar(_e).add(O),S.subVectors(w,C).multiplyScalar(_e).add(C),N(O,Z,1),N(M,Z,1),N(F,Z,.5),N(F,Z,.5),N(M,Z,1),N(S,Z,1),N(F,Z,.5),N(S,Z,1),N(C,Z,1));else ie?(ne?(N(L,q,1),N(v,q,0),N(w,Z,0),N(L,q,1),N(w,Z,0),N(p,Z,1)):(N(L,q,1),N(v,q,0),N(w,Z,1),N(v,q,0),N(p,Z,0),N(w,Z,1)),ne?x.copy(w):C.copy(w)):ne?(N(g,Z,0),N(w,Z,0),N(F,Z,.5),N(F,Z,.5),N(w,Z,0),N(x,Z,0)):(N(O,Z,1),N(w,Z,1),N(F,Z,.5),N(F,Z,.5),N(w,Z,1),N(C,Z,1)),ce=!0;break}}else P()}else P();!T&&Y===_-1&&R(e[0],I,A,ne,!0,q),q=Z,J=F,v.copy(x),L.copy(C)}if(!T)R(F,g,O,ne,!1,Z);else if(ie&&s){let Y=w,te=p;G!==ne&&(Y=p,te=w),ne?(ce||G)&&(te.toArray(s,0*3),te.toArray(s,3*3),ce&&Y.toArray(s,1*3)):(ce||!G)&&(te.toArray(s,1*3),te.toArray(s,3*3),ce&&Y.toArray(s,0*3))}return z;function H(Y,te,U){return U.subVectors(te,Y),U.set(-U.y,U.x).normalize()}function N(Y,te,U){s&&(s[b]=Y.x,s[b+1]=Y.y,s[b+2]=0,r&&(r[b]=0,r[b+1]=0,r[b+2]=1),b+=3,a&&(a[V]=te,a[V+1]=U,V+=2)),z+=3}function j(Y,te,U,B,oe){f.copy(te).sub(Y).normalize(),h.copy(U).sub(Y).normalize();let le=Math.PI;const me=f.dot(h);Math.abs(me)<1&&(le=Math.abs(Math.acos(me))),le/=n,d.copy(te);for(let _e=0,we=n-1;_e<we;_e++)m.copy(d).rotateAround(Y,le),N(d,B,oe),N(m,B,oe),N(Y,B,.5),d.copy(m);N(m,B,oe),N(U,B,oe),N(Y,B,.5)}function P(){N(L,q,1),N(v,q,0),N(g,Z,0),N(L,q,1),N(g,Z,1),N(O,Z,0)}function D(Y,te,U){te?Y?(N(L,q,1),N(v,q,0),N(g,Z,0),N(L,q,1),N(g,Z,0),N(p,Z,1),N(g,U,0),N(x,U,0),N(p,U,.5)):(N(L,q,1),N(v,q,0),N(O,Z,1),N(v,q,0),N(p,Z,0),N(O,Z,1),N(O,U,1),N(C,U,0),N(p,U,.5)):Y?(N(g,U,0),N(x,U,0),N(F,U,.5)):(N(O,U,1),N(C,U,0),N(F,U,.5))}function k(Y,te){te&&(Y?(N(L,q,1),N(v,q,0),N(g,Z,0),N(L,q,1),N(g,Z,0),N(p,Z,1),N(g,q,0),N(F,Z,.5),N(p,Z,1),N(F,Z,.5),N(x,q,0),N(p,Z,1)):(N(L,q,1),N(v,q,0),N(O,Z,1),N(v,q,0),N(p,Z,0),N(O,Z,1),N(O,q,1),N(p,Z,0),N(F,Z,.5),N(F,Z,.5),N(p,Z,0),N(C,q,1)))}function R(Y,te,U,B,oe,le){switch(t.strokeLineCap){case"round":oe?j(Y,U,te,le,.5):j(Y,te,U,le,.5);break;case"square":if(oe)f.subVectors(te,Y),h.set(f.y,-f.x),d.addVectors(f,h).add(Y),m.subVectors(h,f).add(Y),B?(d.toArray(s,1*3),m.toArray(s,0*3),m.toArray(s,3*3)):(d.toArray(s,1*3),d.toArray(s,3*3),m.toArray(s,0*3));else{f.subVectors(U,Y),h.set(f.y,-f.x),d.addVectors(f,h).add(Y),m.subVectors(h,f).add(Y);const me=s.length;B?(d.toArray(s,me-1*3),m.toArray(s,me-2*3),m.toArray(s,me-4*3)):(d.toArray(s,me-2*3),m.toArray(s,me-1*3),m.toArray(s,me-4*3))}break}}function W(Y){let te=!1;for(let B=1,oe=Y.length-1;B<oe;B++)if(Y[B].distanceTo(Y[B+1])<i){te=!0;break}if(!te)return Y;const U=[];U.push(Y[0]);for(let B=1,oe=Y.length-1;B<oe;B++)Y[B].distanceTo(Y[B+1])>=i&&U.push(Y[B]);return U.push(Y[Y.length-1]),U}}}const Rn=new WeakMap;class Ho extends c.Loader{constructor(e){super(e),this.decoderPath="",this.decoderConfig={},this.decoderBinary=null,this.decoderPending=null,this.workerLimit=4,this.workerPool=[],this.workerNextTaskID=1,this.workerSourceURL="",this.defaultAttributeIDs={position:"POSITION",normal:"NORMAL",color:"COLOR",uv:"TEX_COORD"},this.defaultAttributeTypes={position:"Float32Array",normal:"Float32Array",color:"Float32Array",uv:"Float32Array"}}setDecoderPath(e){return this.decoderPath=e,this}setDecoderConfig(e){return this.decoderConfig=e,this}setWorkerLimit(e){return this.workerLimit=e,this}load(e,t,n,i){const s=new c.FileLoader(this.manager);s.setPath(this.path),s.setResponseType("arraybuffer"),s.setRequestHeader(this.requestHeader),s.setWithCredentials(this.withCredentials),s.load(e,r=>{const a={attributeIDs:this.defaultAttributeIDs,attributeTypes:this.defaultAttributeTypes,useUniqueIDs:!1};this.decodeGeometry(r,a).then(t).catch(i)},n,i)}decodeDracoFile(e,t,n,i){const s={attributeIDs:n||this.defaultAttributeIDs,attributeTypes:i||this.defaultAttributeTypes,useUniqueIDs:!!n};this.decodeGeometry(e,s).then(t)}decodeGeometry(e,t){for(const l in t.attributeTypes){const f=t.attributeTypes[l];f.BYTES_PER_ELEMENT!==void 0&&(t.attributeTypes[l]=f.name)}const n=JSON.stringify(t);if(Rn.has(e)){const l=Rn.get(e);if(l.key===n)return l.promise;if(e.byteLength===0)throw new Error("THREE.DRACOLoader: Unable to re-decode a buffer with different settings. Buffer has already been transferred.")}let i;const s=this.workerNextTaskID++,r=e.byteLength,a=this._getWorker(s,r).then(l=>(i=l,new Promise((f,h)=>{i._callbacks[s]={resolve:f,reject:h},i.postMessage({type:"decode",id:s,taskConfig:t,buffer:e},[e])}))).then(l=>this._createGeometry(l.geometry));return a.catch(()=>!0).then(()=>{i&&s&&this._releaseTask(i,s)}),Rn.set(e,{key:n,promise:a}),a}_createGeometry(e){const t=new c.BufferGeometry;e.index&&t.setIndex(new c.BufferAttribute(e.index.array,1));for(let n=0;n<e.attributes.length;n++){const i=e.attributes[n],s=i.name,r=i.array,a=i.itemSize;t.setAttribute(s,new c.BufferAttribute(r,a))}return t}_loadLibrary(e,t){const n=new c.FileLoader(this.manager);return n.setPath(this.decoderPath),n.setResponseType(t),n.setWithCredentials(this.withCredentials),new Promise((i,s)=>{n.load(e,i,void 0,s)})}preload(){return this._initDecoder(),this}_initDecoder(){if(this.decoderPending)return this.decoderPending;const e=typeof WebAssembly!="object"||this.decoderConfig.type==="js",t=[];return e?t.push(this._loadLibrary("draco_decoder.js","text")):(t.push(this._loadLibrary("draco_wasm_wrapper.js","text")),t.push(this._loadLibrary("draco_decoder.wasm","arraybuffer"))),this.decoderPending=Promise.all(t).then(n=>{const i=n[0];e||(this.decoderConfig.wasmBinary=n[1]);const s=$o.toString(),r=["/* draco decoder */",i,"","/* worker */",s.substring(s.indexOf("{")+1,s.lastIndexOf("}"))].join(`
|
|
79
|
-
`);this.workerSourceURL=URL.createObjectURL(new Blob([r]))}),this.decoderPending}_getWorker(e,t){return this._initDecoder().then(()=>{if(this.workerPool.length<this.workerLimit){const i=new Worker(this.workerSourceURL);i._callbacks={},i._taskCosts={},i._taskLoad=0,i.postMessage({type:"init",decoderConfig:this.decoderConfig}),i.onmessage=function(s){const r=s.data;switch(r.type){case"decode":i._callbacks[r.id].resolve(r);break;case"error":i._callbacks[r.id].reject(r);break;default:console.error('THREE.DRACOLoader: Unexpected message, "'+r.type+'"')}},this.workerPool.push(i)}else this.workerPool.sort(function(i,s){return i._taskLoad>s._taskLoad?-1:1});const n=this.workerPool[this.workerPool.length-1];return n._taskCosts[e]=t,n._taskLoad+=t,n})}_releaseTask(e,t){e._taskLoad-=e._taskCosts[t],delete e._callbacks[t],delete e._taskCosts[t]}debug(){console.log("Task load: ",this.workerPool.map(e=>e._taskLoad))}dispose(){for(let e=0;e<this.workerPool.length;++e)this.workerPool[e].terminate();return this.workerPool.length=0,this}}function $o(){let o,e;onmessage=function(r){const a=r.data;switch(a.type){case"init":o=a.decoderConfig,e=new Promise(function(h){o.onModuleLoaded=function(d){h({draco:d})},DracoDecoderModule(o)});break;case"decode":const l=a.buffer,f=a.taskConfig;e.then(h=>{const d=h.draco,m=new d.Decoder,y=new d.DecoderBuffer;y.Init(new Int8Array(l),l.byteLength);try{const M=t(d,m,y,f),S=M.attributes.map(v=>v.array.buffer);M.index&&S.push(M.index.array.buffer),self.postMessage({type:"decode",id:a.id,geometry:M},S)}catch(M){console.error(M),self.postMessage({type:"error",id:a.id,error:M.message})}finally{d.destroy(y),d.destroy(m)}});break}};function t(r,a,l,f){const h=f.attributeIDs,d=f.attributeTypes;let m,y;const M=a.GetEncodedGeometryType(l);if(M===r.TRIANGULAR_MESH)m=new r.Mesh,y=a.DecodeBufferToMesh(l,m);else if(M===r.POINT_CLOUD)m=new r.PointCloud,y=a.DecodeBufferToPointCloud(l,m);else throw new Error("THREE.DRACOLoader: Unexpected geometry type.");if(!y.ok()||m.ptr===0)throw new Error("THREE.DRACOLoader: Decoding failed: "+y.error_msg());const S={index:null,attributes:[]};for(const v in h){const L=self[d[v]];let I,A;if(f.useUniqueIDs)A=h[v],I=a.GetAttributeByUniqueId(m,A);else{if(A=a.GetAttributeId(m,r[h[v]]),A===-1)continue;I=a.GetAttribute(m,A)}S.attributes.push(i(r,a,m,v,L,I))}return M===r.TRIANGULAR_MESH&&(S.index=n(r,a,m)),r.destroy(m),S}function n(r,a,l){const h=l.num_faces()*3,d=h*4,m=r._malloc(d);a.GetTrianglesUInt32Array(l,d,m);const y=new Uint32Array(r.HEAPF32.buffer,m,h).slice();return r._free(m),{array:y,itemSize:1}}function i(r,a,l,f,h,d){const m=d.num_components(),M=l.num_points()*m,S=M*h.BYTES_PER_ELEMENT,v=s(r,h),L=r._malloc(S);a.GetAttributeDataArrayForAllPoints(l,d,v,S,L);const I=new h(r.HEAPF32.buffer,L,M).slice();return r._free(L),{name:f,array:I,itemSize:m}}function s(r,a){switch(a){case Float32Array:return r.DT_FLOAT32;case Int8Array:return r.DT_INT8;case Int16Array:return r.DT_INT16;case Int32Array:return r.DT_INT32;case Uint8Array:return r.DT_UINT8;case Uint16Array:return r.DT_UINT16;case Uint32Array:return r.DT_UINT32}}}const ea=["args","center"],ta=u.defineComponent({__name:"Text3D",props:{font:{},text:{},size:{default:.5},height:{default:.2},curveSegments:{default:5},bevelEnabled:{type:Boolean,default:!0},bevelThickness:{default:.05},bevelSize:{default:.02},bevelOffset:{default:0},bevelSegments:{default:4},center:{type:Boolean,default:!1},needUpdates:{type:Boolean,default:!1}},async setup(o,{expose:e}){let t,n;const i=o,{center:s,font:r,text:a,needUpdates:l,size:f,height:h,curveSegments:d,bevelEnabled:m,bevelThickness:y,bevelSize:M,bevelOffset:S,bevelSegments:v}=u.toRefs(i),{extend:L}=ae.useTresContext();L({TextGeometry:Gi});const I=new Ko,A=u.useSlots(),g=u.computed(()=>{var p;return a!=null&&a.value?a.value:A.default?(p=A.default()[0].children)==null?void 0:p.trim():l.value?"":"TresJS"}),O=u.shallowRef();e({value:O});const x=([t,n]=u.withAsyncContext(()=>new Promise((p,w)=>{try{typeof r.value=="string"?I.load(r.value,_=>{p(_)}):p(r.value)}catch(_){w(console.error("cientos",_))}})),t=await t,n(),t),C=u.computed(()=>({font:x,size:u.toValue(f),height:u.toValue(h),curveSegments:u.toValue(d),bevelEnabled:u.toValue(m),bevelThickness:u.toValue(y),bevelSize:u.toValue(M),bevelOffset:u.toValue(S),bevelSegments:u.toValue(v)}));return u.watchEffect(()=>{O.value&&l.value&&(O.value.geometry.dispose(),O.value.geometry=new Gi(g.value,C.value),s.value&&O.value.geometry.center())}),(p,w)=>u.unref(r)?(u.openBlock(),u.createElementBlock("TresMesh",{key:0,ref_key:"text3DRef",ref:O},[g.value?(u.openBlock(),u.createElementBlock("TresTextGeometry",{key:0,args:[g.value,C.value],center:u.unref(s)},null,8,ea)):u.createCommentVNode("",!0),u.renderSlot(p.$slots,"default")],512)):u.createCommentVNode("",!0)}});function na(o,e){const t=u.ref(e),n=new c.AnimationMixer(t.value),i=u.shallowReactive({});o.forEach(r=>{const a=n.clipAction(r,t.value);i[r.name]=a});const{onLoop:s}=ae.useRenderLoop();return s(({delta:r})=>{n.update(r)}),{actions:i,mixer:n}}const ia=u.defineComponent({__name:"Levioso",props:{speed:{default:1},rotationFactor:{default:1},floatFactor:{default:1},range:{default:()=>[-.1,.1]}},setup(o,{expose:e}){const t=o,n=u.shallowRef();e({value:n});{const l=Math.random()*1e4,{onLoop:f}=ae.useRenderLoop();let h=l;f(({delta:d})=>{if(!n.value)return;h+=d*t.speed;const m=h*.25,y=n.value;y.rotation.x=Math.cos(m)*.125*t.rotationFactor,y.rotation.y=Math.sin(m)*.125*t.rotationFactor,y.rotation.z=Math.sin(m)*.05*t.rotationFactor,y.position.y=c.MathUtils.mapLinear(Math.sin(m),-1,1,t.range[0],t.range[1])*t.floatFactor})}return(i,s)=>(u.openBlock(),u.createElementBlock("TresGroup",u.mergeProps(i.$attrs,{ref_key:"groupRef",ref:n}),[u.renderSlot(i.$slots,"default")],16))}});function Hi(o){return u.getCurrentScope()?(u.onScopeDispose(o),!0):!1}function Ee(o){return typeof o=="function"?o():u.unref(o)}const sa=typeof window<"u"&&typeof document<"u",ra=Object.prototype.toString,oa=o=>ra.call(o)==="[object Object]",vt=()=>{};function En(o,e){function t(...n){return new Promise((i,s)=>{Promise.resolve(o(()=>e.apply(this,n),{fn:e,thisArg:this,args:n})).then(i).catch(s)})}return t}const aa=o=>o();function la(o,e={}){let t,n,i=vt;const s=a=>{clearTimeout(a),i(),i=vt};return a=>{const l=Ee(o),f=Ee(e.maxWait);return t&&s(t),l<=0||f!==void 0&&f<=0?(n&&(s(n),n=null),Promise.resolve(a())):new Promise((h,d)=>{i=e.rejectOnCancel?d:h,f&&!n&&(n=setTimeout(()=>{t&&s(t),n=null,h(a())},f)),t=setTimeout(()=>{n&&s(n),n=null,h(a())},l)})}}function $i(o,e=!0,t=!0,n=!1){let i=0,s,r=!0,a=vt,l;const f=()=>{s&&(clearTimeout(s),s=void 0,a(),a=vt)};return d=>{const m=Ee(o),y=Date.now()-i,M=()=>l=d();return f(),m<=0?(i=Date.now(),M()):(y>m&&(t||!r)?(i=Date.now(),M()):e&&(l=new Promise((S,v)=>{a=n?v:S,s=setTimeout(()=>{i=Date.now(),r=!0,S(M()),f()},Math.max(0,m-y))})),!t&&!s&&(s=setTimeout(()=>r=!0,m)),r=!1,l)}}function ca(o,e=200,t={}){return En(la(e,t),o)}function ha(o,e=200,t=!1,n=!0,i=!1){return En($i(e,t,n,i),o)}function ua(o,e,t={}){const{eventFilter:n=aa,...i}=t;return u.watch(o,En(n,e),i)}function fa(o,e=!0){u.getCurrentInstance()?u.onMounted(o):e?o():u.nextTick(o)}function da(o,e,t={}){const{throttle:n=0,trailing:i=!0,leading:s=!0,...r}=t;return ua(o,e,{...r,eventFilter:$i(n,i,s)})}function pa(o){var e;const t=Ee(o);return(e=t==null?void 0:t.$el)!=null?e:t}const wt=sa?window:void 0;function Le(...o){let e,t,n,i;if(typeof o[0]=="string"||Array.isArray(o[0])?([t,n,i]=o,e=wt):[e,t,n,i]=o,!e)return vt;Array.isArray(t)||(t=[t]),Array.isArray(n)||(n=[n]);const s=[],r=()=>{s.forEach(h=>h()),s.length=0},a=(h,d,m,y)=>(h.addEventListener(d,m,y),()=>h.removeEventListener(d,m,y)),l=u.watch(()=>[pa(e),Ee(i)],([h,d])=>{if(r(),!h)return;const m=oa(d)?{...d}:d;s.push(...t.flatMap(y=>n.map(M=>a(h,y,M,m))))},{immediate:!0,flush:"post"}),f=()=>{l(),r()};return Hi(f),f}function ma(o){return typeof o=="function"?o:typeof o=="string"?e=>e.key===o:Array.isArray(o)?e=>o.includes(e.key):()=>!0}function xt(...o){let e,t,n={};o.length===3?(e=o[0],t=o[1],n=o[2]):o.length===2?typeof o[1]=="object"?(e=!0,t=o[0],n=o[1]):(e=o[0],t=o[1]):(e=!0,t=o[0]);const{target:i=wt,eventName:s="keydown",passive:r=!1,dedupe:a=!1}=n,l=ma(e);return Le(i,s,h=>{h.repeat&&Ee(a)||l(h)&&t(h)},r)}function ga(){const o=u.ref(!1);return u.getCurrentInstance()&&u.onMounted(()=>{o.value=!0}),o}function ya(o){const e=ga();return u.computed(()=>(e.value,!!o()))}function _a(o,e={}){const{window:t=wt}=e,n=ya(()=>t&&"matchMedia"in t&&typeof t.matchMedia=="function");let i;const s=u.ref(!1),r=f=>{s.value=f.matches},a=()=>{i&&("removeEventListener"in i?i.removeEventListener("change",r):i.removeListener(r))},l=u.watchEffect(()=>{n.value&&(a(),i=t.matchMedia(Ee(o)),"addEventListener"in i?i.addEventListener("change",r):i.addListener(r),s.value=i.matches)});return Hi(()=>{l(),a(),i=void 0}),s}const es=1;function va(o,e={}){const{throttle:t=0,idle:n=200,onStop:i=vt,onScroll:s=vt,offset:r={left:0,right:0,top:0,bottom:0},eventListenerOptions:a={capture:!1,passive:!0},behavior:l="auto",window:f=wt}=e,h=u.ref(0),d=u.ref(0),m=u.computed({get(){return h.value},set(x){M(x,void 0)}}),y=u.computed({get(){return d.value},set(x){M(void 0,x)}});function M(x,C){var p,w,_;if(!f)return;const T=Ee(o);T&&((_=T instanceof Document?f.document.body:T)==null||_.scrollTo({top:(p=Ee(C))!=null?p:y.value,left:(w=Ee(x))!=null?w:m.value,behavior:Ee(l)}))}const S=u.ref(!1),v=u.reactive({left:!0,right:!1,top:!0,bottom:!1}),L=u.reactive({left:!1,right:!1,top:!1,bottom:!1}),I=x=>{S.value&&(S.value=!1,L.left=!1,L.right=!1,L.top=!1,L.bottom=!1,i(x))},A=ca(I,t+n),g=x=>{var C;if(!f)return;const p=x.document?x.document.documentElement:(C=x.documentElement)!=null?C:x,{display:w,flexDirection:_}=getComputedStyle(p),T=p.scrollLeft;L.left=T<h.value,L.right=T>h.value;const F=Math.abs(T)<=0+(r.left||0),J=Math.abs(T)+p.clientWidth>=p.scrollWidth-(r.right||0)-es;w==="flex"&&_==="row-reverse"?(v.left=J,v.right=F):(v.left=F,v.right=J),h.value=T;let X=p.scrollTop;x===f.document&&!X&&(X=f.document.body.scrollTop),L.top=X<d.value,L.bottom=X>d.value;const ee=Math.abs(X)<=0+(r.top||0),$=Math.abs(X)+p.clientHeight>=p.scrollHeight-(r.bottom||0)-es;w==="flex"&&_==="column-reverse"?(v.top=$,v.bottom=ee):(v.top=ee,v.bottom=$),d.value=X},O=x=>{var C;if(!f)return;const p=(C=x.target.documentElement)!=null?C:x.target;g(p),S.value=!0,A(x),s(x)};return Le(o,"scroll",t?ha(O,t,!0,!1):O,a),Le(o,"scrollend",I,a),{x:m,y,isScrolling:S,arrivedState:v,directions:L,measure(){const x=Ee(o);f&&x&&g(x)}}}const wa={page:o=>[o.pageX,o.pageY],client:o=>[o.clientX,o.clientY],screen:o=>[o.screenX,o.screenY],movement:o=>o instanceof Touch?null:[o.movementX,o.movementY]};function xa(o={}){const{type:e="page",touch:t=!0,resetOnTouchEnds:n=!1,initialValue:i={x:0,y:0},window:s=wt,target:r=s,scroll:a=!0,eventFilter:l}=o;let f=null;const h=u.ref(i.x),d=u.ref(i.y),m=u.ref(null),y=typeof e=="function"?e:wa[e],M=O=>{const x=y(O);f=O,x&&([h.value,d.value]=x,m.value="mouse")},S=O=>{if(O.touches.length>0){const x=y(O.touches[0]);x&&([h.value,d.value]=x,m.value="touch")}},v=()=>{if(!f||!s)return;const O=y(f);f instanceof MouseEvent&&O&&(h.value=O[0]+s.scrollX,d.value=O[1]+s.scrollY)},L=()=>{h.value=i.x,d.value=i.y},I=l?O=>l(()=>M(O),{}):O=>M(O),A=l?O=>l(()=>S(O),{}):O=>S(O),g=l?()=>l(()=>v(),{}):()=>v();if(r){const O={passive:!0};Le(r,["mousemove","dragover"],I,O),t&&e!=="movement"&&(Le(r,["touchstart","touchmove"],A,O),n&&Le(r,"touchend",L,O)),a&&e==="page"&&Le(s,"scroll",g,{passive:!0})}return{x:h,y:d,sourceType:m}}function ba(o={}){const{window:e=wt}=o;if(!e)return{x:u.ref(0),y:u.ref(0)};const t=u.ref(e.scrollX),n=u.ref(e.scrollY);return Le(e,"scroll",()=>{t.value=e.scrollX,n.value=e.scrollY},{capture:!1,passive:!0}),{x:t,y:n}}function ts(o={}){const{window:e=wt,initialWidth:t=Number.POSITIVE_INFINITY,initialHeight:n=Number.POSITIVE_INFINITY,listenOrientation:i=!0,includeScrollbar:s=!0}=o,r=u.ref(t),a=u.ref(n),l=()=>{e&&(s?(r.value=e.innerWidth,a.value=e.innerHeight):(r.value=e.document.documentElement.clientWidth,a.value=e.document.documentElement.clientHeight))};if(l(),fa(l),Le("resize",l,{passive:!0}),i){const f=_a("(orientation: portrait)");u.watch(f,()=>l())}return{width:r,height:a}}const Ma=u.defineComponent({__name:"MouseParallax",props:{disabled:{type:Boolean,default:!1},factor:{default:2.5},ease:{default:.1}},setup(o){const e=o,{camera:t}=ae.useTresContext(),{disabled:n,factor:i,ease:s}=u.toRefs(e),{x:r,y:a}=xa(),{width:l,height:f}=ts(),h=u.ref(),d=u.computed(()=>(r.value/l.value-.5)*i.value),m=u.computed(()=>-(a.value/f.value-.5)*i.value),{onLoop:y}=ae.useRenderLoop();return y(({delta:M})=>{n.value||!h.value||(h.value.position.x+=(d.value-h.value.position.x)*s.value*M,h.value.position.y+=(m.value-h.value.position.y)*s.value*M)}),u.watch(()=>h.value,M=>M==null?void 0:M.add(t.value)),(M,S)=>(u.openBlock(),u.createElementBlock("TresGroup",{ref_key:"cameraGroupRef",ref:h},null,512))}}),Sa=u.defineComponent({name:"GlobalAudio",props:["src","loop","volume","playbackRate","playTrigger","stopTrigger"],async setup(o,{expose:e,emit:t}){var d;const{camera:n,renderer:i}=ae.useTresContext(),s=new c.AudioListener;(d=n.value)==null||d.add(s);const r=new c.Audio(s),a=new c.AudioLoader;e({sound:r}),u.onUnmounted(()=>{r&&r.disconnect()}),u.watch(()=>[o.playbackRate],()=>r.setPlaybackRate(o.playbackRate??1),{immediate:!0}),u.watch(()=>[o.volume],()=>r.setVolume(o.volume??.5),{immediate:!0}),u.watch(()=>[o.loop],()=>r.setLoop(o.loop??!1),{immediate:!0}),u.watch(()=>[o.src],async()=>{const m=await a.loadAsync(o.src);r.setBuffer(m)},{immediate:!0});const l=document.getElementById(o.playTrigger??""),f=l||i.value.domElement;Le(f,"click",()=>{r.isPlaying?r.pause():r.play(),t("isPlaying",r.isPlaying)});const h=document.getElementById(o.stopTrigger??"");return h&&Le(h,"click",()=>{r.stop(),t("isPlaying",r.isPlaying)}),null}});class Gt extends c.Mesh{constructor(){super(Gt.Geometry,new c.MeshBasicMaterial({opacity:0,transparent:!0})),this.isLensflare=!0,this.type="Lensflare",this.frustumCulled=!1,this.renderOrder=1/0;const e=new c.Vector3,t=new c.Vector3,n=new c.FramebufferTexture(16,16),i=new c.FramebufferTexture(16,16);let s=c.UnsignedByteType;const r=Gt.Geometry,a=new c.RawShaderMaterial({uniforms:{scale:{value:null},screenPosition:{value:null}},vertexShader:`
|
|
73
|
+
`};function Xi(o,e,t){const n=t.length-o-1;if(e>=t[n])return n-1;if(e<=t[o])return o;let i=o,r=n,s=Math.floor((i+r)/2);for(;e<t[s]||e>=t[s+1];)e<t[s]?r=s:i=s,s=Math.floor((i+r)/2);return s}function Bo(o,e,t,n){const i=[],r=[],s=[];i[0]=1;for(let a=1;a<=t;++a){r[a]=e-n[o+1-a],s[a]=n[o+a]-e;let l=0;for(let f=0;f<a;++f){const u=s[f+1],d=r[a-f],m=i[f]/(u+d);i[f]=l+u*m,l=d*m}i[a]=l}return i}function Uo(o,e,t,n){const i=Xi(o,n,e),r=Bo(i,n,o,e),s=new c.Vector4(0,0,0,0);for(let a=0;a<=o;++a){const l=t[i-o+a],f=r[a],u=l.w*f;s.x+=l.x*u,s.y+=l.y*u,s.z+=l.z*u,s.w+=l.w*f}return s}function No(o,e,t,n,i){const r=[];for(let d=0;d<=t;++d)r[d]=0;const s=[];for(let d=0;d<=n;++d)s[d]=r.slice(0);const a=[];for(let d=0;d<=t;++d)a[d]=r.slice(0);a[0][0]=1;const l=r.slice(0),f=r.slice(0);for(let d=1;d<=t;++d){l[d]=e-i[o+1-d],f[d]=i[o+d]-e;let m=0;for(let y=0;y<d;++y){const b=f[y+1],A=l[d-y];a[d][y]=b+A;const _=a[y][d-1]/a[d][y];a[y][d]=m+b*_,m=A*_}a[d][d]=m}for(let d=0;d<=t;++d)s[0][d]=a[d][t];for(let d=0;d<=t;++d){let m=0,y=1;const b=[];for(let A=0;A<=t;++A)b[A]=r.slice(0);b[0][0]=1;for(let A=1;A<=n;++A){let _=0;const L=d-A,I=t-A;d>=A&&(b[y][0]=b[m][0]/a[I+1][L],_=b[y][0]*a[L][I]);const S=L>=-1?1:-L,g=d-1<=I?A-1:t-d;for(let x=S;x<=g;++x)b[y][x]=(b[m][x]-b[m][x-1])/a[I+1][L+x],_+=b[y][x]*a[L+x][I];d<=I&&(b[y][A]=-b[m][A-1]/a[I+1][d],_+=b[y][A]*a[d][I]),s[A][d]=_;const O=m;m=y,y=O}}let u=t;for(let d=1;d<=n;++d){for(let m=0;m<=t;++m)s[d][m]*=u;u*=t-d}return s}function Vo(o,e,t,n,i){const r=i<o?i:o,s=[],a=Xi(o,n,e),l=No(a,n,o,r,e),f=[];for(let u=0;u<t.length;++u){const d=t[u].clone(),m=d.w;d.x*=m,d.y*=m,d.z*=m,f[u]=d}for(let u=0;u<=r;++u){const d=f[a-o].clone().multiplyScalar(l[u][0]);for(let m=1;m<=o;++m)d.add(f[a-o+m].clone().multiplyScalar(l[u][m]));s[u]=d}for(let u=r+1;u<=i+1;++u)s[u]=new c.Vector4(0,0,0);return s}function zo(o,e){let t=1;for(let i=2;i<=o;++i)t*=i;let n=1;for(let i=2;i<=e;++i)n*=i;for(let i=2;i<=o-e;++i)n*=i;return t/n}function jo(o){const e=o.length,t=[],n=[];for(let r=0;r<e;++r){const s=o[r];t[r]=new c.Vector3(s.x,s.y,s.z),n[r]=s.w}const i=[];for(let r=0;r<e;++r){const s=t[r].clone();for(let a=1;a<=r;++a)s.sub(i[r-a].clone().multiplyScalar(zo(r,a)*n[a]));i[r]=s.divideScalar(n[0])}return i}function Go(o,e,t,n,i){const r=Vo(o,e,t,n,i);return jo(r)}class Wi extends c.Curve{constructor(e,t,n,i,r){super(),this.degree=e,this.knots=t,this.controlPoints=[],this.startKnot=i||0,this.endKnot=r||this.knots.length-1;for(let s=0;s<n.length;++s){const a=n[s];this.controlPoints[s]=new c.Vector4(a.x,a.y,a.z,a.w)}}getPoint(e,t){const n=t||new c.Vector3,i=this.knots[this.startKnot]+e*(this.knots[this.endKnot]-this.knots[this.startKnot]),r=Uo(this.degree,this.knots,this.controlPoints,i);return r.w!=1&&r.divideScalar(r.w),n.set(r.x,r.y,r.z)}getTangent(e,t){const n=t||new c.Vector3,i=this.knots[0]+e*(this.knots[this.knots.length-1]-this.knots[0]),r=Go(this.degree,this.knots,this.controlPoints,i,1);return n.copy(r[1]).normalize(),n}}let ve,Te,Ve;class Ro extends c.Loader{constructor(e){super(e)}load(e,t,n,i){const r=this,s=r.path===""?c.LoaderUtils.extractUrlBase(e):r.path,a=new c.FileLoader(this.manager);a.setPath(r.path),a.setResponseType("arraybuffer"),a.setRequestHeader(r.requestHeader),a.setWithCredentials(r.withCredentials),a.load(e,function(l){try{t(r.parse(l,s))}catch(f){i?i(f):console.error(f),r.manager.itemError(e)}},n,i)}parse(e,t){if(qo(e))ve=new Zo().parse(e);else{const i=Hi(e);if(!Ko(i))throw new Error("THREE.FBXLoader: Unknown format.");if(Ki(i)<7e3)throw new Error("THREE.FBXLoader: FBX version not supported, FileVersion: "+Ki(i));ve=new Wo().parse(i)}const n=new c.TextureLoader(this.manager).setPath(this.resourcePath||t).setCrossOrigin(this.crossOrigin);return new Eo(n,this.manager).parse(ve)}}class Eo{constructor(e,t){this.textureLoader=e,this.manager=t}parse(){Te=this.parseConnections();const e=this.parseImages(),t=this.parseTextures(e),n=this.parseMaterials(t),i=this.parseDeformers(),r=new Yo().parse(i);return this.parseScene(i,r,n),Ve}parseConnections(){const e=new Map;return"Connections"in ve&&ve.Connections.connections.forEach(function(n){const i=n[0],r=n[1],s=n[2];e.has(i)||e.set(i,{parents:[],children:[]});const a={ID:r,relationship:s};e.get(i).parents.push(a),e.has(r)||e.set(r,{parents:[],children:[]});const l={ID:i,relationship:s};e.get(r).children.push(l)}),e}parseImages(){const e={},t={};if("Video"in ve.Objects){const n=ve.Objects.Video;for(const i in n){const r=n[i],s=parseInt(i);if(e[s]=r.RelativeFilename||r.Filename,"Content"in r){const a=r.Content instanceof ArrayBuffer&&r.Content.byteLength>0,l=typeof r.Content=="string"&&r.Content!=="";if(a||l){const f=this.parseImage(n[i]);t[r.RelativeFilename||r.Filename]=f}}}}for(const n in e){const i=e[n];t[i]!==void 0?e[n]=t[i]:e[n]=e[n].split("\\").pop()}return e}parseImage(e){const t=e.Content,n=e.RelativeFilename||e.Filename,i=n.slice(n.lastIndexOf(".")+1).toLowerCase();let r;switch(i){case"bmp":r="image/bmp";break;case"jpg":case"jpeg":r="image/jpeg";break;case"png":r="image/png";break;case"tif":r="image/tiff";break;case"tga":this.manager.getHandler(".tga")===null&&console.warn("FBXLoader: TGA loader not found, skipping ",n),r="image/tga";break;default:console.warn('FBXLoader: Image type "'+i+'" is not supported.');return}if(typeof t=="string")return"data:"+r+";base64,"+t;{const s=new Uint8Array(t);return window.URL.createObjectURL(new Blob([s],{type:r}))}}parseTextures(e){const t=new Map;if("Texture"in ve.Objects){const n=ve.Objects.Texture;for(const i in n){const r=this.parseTexture(n[i],e);t.set(parseInt(i),r)}}return t}parseTexture(e,t){const n=this.loadTexture(e,t);n.ID=e.id,n.name=e.attrName;const i=e.WrapModeU,r=e.WrapModeV,s=i!==void 0?i.value:0,a=r!==void 0?r.value:0;if(n.wrapS=s===0?c.RepeatWrapping:c.ClampToEdgeWrapping,n.wrapT=a===0?c.RepeatWrapping:c.ClampToEdgeWrapping,"Scaling"in e){const l=e.Scaling.value;n.repeat.x=l[0],n.repeat.y=l[1]}return n}loadTexture(e,t){let n;const i=this.textureLoader.path,r=Te.get(e.id).children;r!==void 0&&r.length>0&&t[r[0].ID]!==void 0&&(n=t[r[0].ID],(n.indexOf("blob:")===0||n.indexOf("data:")===0)&&this.textureLoader.setPath(void 0));let s;const a=e.FileName.slice(-3).toLowerCase();if(a==="tga"){const l=this.manager.getHandler(".tga");l===null?(console.warn("FBXLoader: TGA loader not found, creating placeholder texture for",e.RelativeFilename),s=new c.Texture):(l.setPath(this.textureLoader.path),s=l.load(n))}else a==="psd"?(console.warn("FBXLoader: PSD textures are not supported, creating placeholder texture for",e.RelativeFilename),s=new c.Texture):s=this.textureLoader.load(n);return this.textureLoader.setPath(i),s}parseMaterials(e){const t=new Map;if("Material"in ve.Objects){const n=ve.Objects.Material;for(const i in n){const r=this.parseMaterial(n[i],e);r!==null&&t.set(parseInt(i),r)}}return t}parseMaterial(e,t){const n=e.id,i=e.attrName;let r=e.ShadingModel;if(typeof r=="object"&&(r=r.value),!Te.has(n))return null;const s=this.parseParameters(e,t,n);let a;switch(r.toLowerCase()){case"phong":a=new c.MeshPhongMaterial;break;case"lambert":a=new c.MeshLambertMaterial;break;default:console.warn('THREE.FBXLoader: unknown material type "%s". Defaulting to MeshPhongMaterial.',r),a=new c.MeshPhongMaterial;break}return a.setValues(s),a.name=i,a}parseParameters(e,t,n){const i={};e.BumpFactor&&(i.bumpScale=e.BumpFactor.value),e.Diffuse?i.color=new c.Color().fromArray(e.Diffuse.value):e.DiffuseColor&&(e.DiffuseColor.type==="Color"||e.DiffuseColor.type==="ColorRGB")&&(i.color=new c.Color().fromArray(e.DiffuseColor.value)),e.DisplacementFactor&&(i.displacementScale=e.DisplacementFactor.value),e.Emissive?i.emissive=new c.Color().fromArray(e.Emissive.value):e.EmissiveColor&&(e.EmissiveColor.type==="Color"||e.EmissiveColor.type==="ColorRGB")&&(i.emissive=new c.Color().fromArray(e.EmissiveColor.value)),e.EmissiveFactor&&(i.emissiveIntensity=parseFloat(e.EmissiveFactor.value)),e.Opacity&&(i.opacity=parseFloat(e.Opacity.value)),i.opacity<1&&(i.transparent=!0),e.ReflectionFactor&&(i.reflectivity=e.ReflectionFactor.value),e.Shininess&&(i.shininess=e.Shininess.value),e.Specular?i.specular=new c.Color().fromArray(e.Specular.value):e.SpecularColor&&e.SpecularColor.type==="Color"&&(i.specular=new c.Color().fromArray(e.SpecularColor.value));const r=this;return Te.get(n).children.forEach(function(s){const a=s.relationship;switch(a){case"Bump":i.bumpMap=r.getTexture(t,s.ID);break;case"Maya|TEX_ao_map":i.aoMap=r.getTexture(t,s.ID);break;case"DiffuseColor":case"Maya|TEX_color_map":i.map=r.getTexture(t,s.ID),i.map!==void 0&&("colorSpace"in i.map?i.map.colorSpace="srgb":i.map.encoding=3001);break;case"DisplacementColor":i.displacementMap=r.getTexture(t,s.ID);break;case"EmissiveColor":i.emissiveMap=r.getTexture(t,s.ID),i.emissiveMap!==void 0&&("colorSpace"in i.emissiveMap?i.emissiveMap.colorSpace="srgb":i.emissiveMap.encoding=3001);break;case"NormalMap":case"Maya|TEX_normal_map":i.normalMap=r.getTexture(t,s.ID);break;case"ReflectionColor":i.envMap=r.getTexture(t,s.ID),i.envMap!==void 0&&(i.envMap.mapping=c.EquirectangularReflectionMapping,"colorSpace"in i.envMap?i.envMap.colorSpace="srgb":i.envMap.encoding=3001);break;case"SpecularColor":i.specularMap=r.getTexture(t,s.ID),i.specularMap!==void 0&&("colorSpace"in i.specularMap?i.specularMap.colorSpace="srgb":i.specularMap.encoding=3001);break;case"TransparentColor":case"TransparencyFactor":i.alphaMap=r.getTexture(t,s.ID),i.transparent=!0;break;case"AmbientColor":case"ShininessExponent":case"SpecularFactor":case"VectorDisplacementColor":default:console.warn("THREE.FBXLoader: %s map is not supported in three.js, skipping texture.",a);break}}),i}getTexture(e,t){return"LayeredTexture"in ve.Objects&&t in ve.Objects.LayeredTexture&&(console.warn("THREE.FBXLoader: layered textures are not supported in three.js. Discarding all but first layer."),t=Te.get(t).children[0].ID),e.get(t)}parseDeformers(){const e={},t={};if("Deformer"in ve.Objects){const n=ve.Objects.Deformer;for(const i in n){const r=n[i],s=Te.get(parseInt(i));if(r.attrType==="Skin"){const a=this.parseSkeleton(s,n);a.ID=i,s.parents.length>1&&console.warn("THREE.FBXLoader: skeleton attached to more than one geometry is not supported."),a.geometryID=s.parents[0].ID,e[i]=a}else if(r.attrType==="BlendShape"){const a={id:i};a.rawTargets=this.parseMorphTargets(s,n),a.id=i,s.parents.length>1&&console.warn("THREE.FBXLoader: morph target attached to more than one geometry is not supported."),t[i]=a}}}return{skeletons:e,morphTargets:t}}parseSkeleton(e,t){const n=[];return e.children.forEach(function(i){const r=t[i.ID];if(r.attrType!=="Cluster")return;const s={ID:i.ID,indices:[],weights:[],transformLink:new c.Matrix4().fromArray(r.TransformLink.a)};"Indexes"in r&&(s.indices=r.Indexes.a,s.weights=r.Weights.a),n.push(s)}),{rawBones:n,bones:[]}}parseMorphTargets(e,t){const n=[];for(let i=0;i<e.children.length;i++){const r=e.children[i],s=t[r.ID],a={name:s.attrName,initialWeight:s.DeformPercent,id:s.id,fullWeights:s.FullWeights.a};if(s.attrType!=="BlendShapeChannel")return;a.geoID=Te.get(parseInt(r.ID)).children.filter(function(l){return l.relationship===void 0})[0].ID,n.push(a)}return n}parseScene(e,t,n){Ve=new c.Group;const i=this.parseModels(e.skeletons,t,n),r=ve.Objects.Model,s=this;i.forEach(function(l){const f=r[l.ID];s.setLookAtProperties(l,f),Te.get(l.ID).parents.forEach(function(d){const m=i.get(d.ID);m!==void 0&&m.add(l)}),l.parent===null&&Ve.add(l)}),this.bindSkeleton(e.skeletons,t,i),this.createAmbientLight(),Ve.traverse(function(l){if(l.userData.transformData){l.parent&&(l.userData.transformData.parentMatrix=l.parent.matrix,l.userData.transformData.parentMatrixWorld=l.parent.matrixWorld);const f=Qi(l.userData.transformData);l.applyMatrix4(f),l.updateWorldMatrix()}});const a=new Xo().parse();Ve.children.length===1&&Ve.children[0].isGroup&&(Ve.children[0].animations=a,Ve=Ve.children[0]),Ve.animations=a}parseModels(e,t,n){const i=new Map,r=ve.Objects.Model;for(const s in r){const a=parseInt(s),l=r[s],f=Te.get(a);let u=this.buildSkeleton(f,e,a,l.attrName);if(!u){switch(l.attrType){case"Camera":u=this.createCamera(f);break;case"Light":u=this.createLight(f);break;case"Mesh":u=this.createMesh(f,t,n);break;case"NurbsCurve":u=this.createCurve(f,t);break;case"LimbNode":case"Root":u=new c.Bone;break;case"Null":default:u=new c.Group;break}u.name=l.attrName?c.PropertyBinding.sanitizeNodeName(l.attrName):"",u.ID=a}this.getTransformData(u,l),i.set(a,u)}return i}buildSkeleton(e,t,n,i){let r=null;return e.parents.forEach(function(s){for(const a in t){const l=t[a];l.rawBones.forEach(function(f,u){if(f.ID===s.ID){const d=r;r=new c.Bone,r.matrixWorld.copy(f.transformLink),r.name=i?c.PropertyBinding.sanitizeNodeName(i):"",r.ID=n,l.bones[u]=r,d!==null&&r.add(d)}})}}),r}createCamera(e){let t,n;if(e.children.forEach(function(i){const r=ve.Objects.NodeAttribute[i.ID];r!==void 0&&(n=r)}),n===void 0)t=new c.Object3D;else{let i=0;n.CameraProjectionType!==void 0&&n.CameraProjectionType.value===1&&(i=1);let r=1;n.NearPlane!==void 0&&(r=n.NearPlane.value/1e3);let s=1e3;n.FarPlane!==void 0&&(s=n.FarPlane.value/1e3);let a=window.innerWidth,l=window.innerHeight;n.AspectWidth!==void 0&&n.AspectHeight!==void 0&&(a=n.AspectWidth.value,l=n.AspectHeight.value);const f=a/l;let u=45;n.FieldOfView!==void 0&&(u=n.FieldOfView.value);const d=n.FocalLength?n.FocalLength.value:null;switch(i){case 0:t=new c.PerspectiveCamera(u,f,r,s),d!==null&&t.setFocalLength(d);break;case 1:t=new c.OrthographicCamera(-a/2,a/2,l/2,-l/2,r,s);break;default:console.warn("THREE.FBXLoader: Unknown camera type "+i+"."),t=new c.Object3D;break}}return t}createLight(e){let t,n;if(e.children.forEach(function(i){const r=ve.Objects.NodeAttribute[i.ID];r!==void 0&&(n=r)}),n===void 0)t=new c.Object3D;else{let i;n.LightType===void 0?i=0:i=n.LightType.value;let r=16777215;n.Color!==void 0&&(r=new c.Color().fromArray(n.Color.value));let s=n.Intensity===void 0?1:n.Intensity.value/100;n.CastLightOnObject!==void 0&&n.CastLightOnObject.value===0&&(s=0);let a=0;n.FarAttenuationEnd!==void 0&&(n.EnableFarAttenuation!==void 0&&n.EnableFarAttenuation.value===0?a=0:a=n.FarAttenuationEnd.value);const l=1;switch(i){case 0:t=new c.PointLight(r,s,a,l);break;case 1:t=new c.DirectionalLight(r,s);break;case 2:let f=Math.PI/3;n.InnerAngle!==void 0&&(f=c.MathUtils.degToRad(n.InnerAngle.value));let u=0;n.OuterAngle!==void 0&&(u=c.MathUtils.degToRad(n.OuterAngle.value),u=Math.max(u,1)),t=new c.SpotLight(r,s,a,f,u,l);break;default:console.warn("THREE.FBXLoader: Unknown light type "+n.LightType.value+", defaulting to a PointLight."),t=new c.PointLight(r,s);break}n.CastShadows!==void 0&&n.CastShadows.value===1&&(t.castShadow=!0)}return t}createMesh(e,t,n){let i,r=null,s=null;const a=[];return e.children.forEach(function(l){t.has(l.ID)&&(r=t.get(l.ID)),n.has(l.ID)&&a.push(n.get(l.ID))}),a.length>1?s=a:a.length>0?s=a[0]:(s=new c.MeshPhongMaterial({color:13421772}),a.push(s)),"color"in r.attributes&&a.forEach(function(l){l.vertexColors=!0}),r.FBX_Deformer?(i=new c.SkinnedMesh(r,s),i.normalizeSkinWeights()):i=new c.Mesh(r,s),i}createCurve(e,t){const n=e.children.reduce(function(r,s){return t.has(s.ID)&&(r=t.get(s.ID)),r},null),i=new c.LineBasicMaterial({color:3342591,linewidth:1});return new c.Line(n,i)}getTransformData(e,t){const n={};"InheritType"in t&&(n.inheritType=parseInt(t.InheritType.value)),"RotationOrder"in t?n.eulerOrder=Ji(t.RotationOrder.value):n.eulerOrder="ZYX","Lcl_Translation"in t&&(n.translation=t.Lcl_Translation.value),"PreRotation"in t&&(n.preRotation=t.PreRotation.value),"Lcl_Rotation"in t&&(n.rotation=t.Lcl_Rotation.value),"PostRotation"in t&&(n.postRotation=t.PostRotation.value),"Lcl_Scaling"in t&&(n.scale=t.Lcl_Scaling.value),"ScalingOffset"in t&&(n.scalingOffset=t.ScalingOffset.value),"ScalingPivot"in t&&(n.scalingPivot=t.ScalingPivot.value),"RotationOffset"in t&&(n.rotationOffset=t.RotationOffset.value),"RotationPivot"in t&&(n.rotationPivot=t.RotationPivot.value),e.userData.transformData=n}setLookAtProperties(e,t){"LookAtProperty"in t&&Te.get(e.ID).children.forEach(function(i){if(i.relationship==="LookAtProperty"){const r=ve.Objects.Model[i.ID];if("Lcl_Translation"in r){const s=r.Lcl_Translation.value;e.target!==void 0?(e.target.position.fromArray(s),Ve.add(e.target)):e.lookAt(new c.Vector3().fromArray(s))}}})}bindSkeleton(e,t,n){const i=this.parsePoseNodes();for(const r in e){const s=e[r];Te.get(parseInt(s.ID)).parents.forEach(function(l){if(t.has(l.ID)){const f=l.ID;Te.get(f).parents.forEach(function(d){n.has(d.ID)&&n.get(d.ID).bind(new c.Skeleton(s.bones),i[d.ID])})}})}}parsePoseNodes(){const e={};if("Pose"in ve.Objects){const t=ve.Objects.Pose;for(const n in t)if(t[n].attrType==="BindPose"&&t[n].NbPoseNodes>0){const i=t[n].PoseNode;Array.isArray(i)?i.forEach(function(r){e[r.Node]=new c.Matrix4().fromArray(r.Matrix.a)}):e[i.Node]=new c.Matrix4().fromArray(i.Matrix.a)}}return e}createAmbientLight(){if("GlobalSettings"in ve&&"AmbientColor"in ve.GlobalSettings){const e=ve.GlobalSettings.AmbientColor.value,t=e[0],n=e[1],i=e[2];if(t!==0||n!==0||i!==0){const r=new c.Color(t,n,i);Ve.add(new c.AmbientLight(r,1))}}}}class Yo{parse(e){const t=new Map;if("Geometry"in ve.Objects){const n=ve.Objects.Geometry;for(const i in n){const r=Te.get(parseInt(i)),s=this.parseGeometry(r,n[i],e);t.set(parseInt(i),s)}}return t}parseGeometry(e,t,n){switch(t.attrType){case"Mesh":return this.parseMeshGeometry(e,t,n);case"NurbsCurve":return this.parseNurbsGeometry(t)}}parseMeshGeometry(e,t,n){const i=n.skeletons,r=[],s=e.parents.map(function(d){return ve.Objects.Model[d.ID]});if(s.length===0)return;const a=e.children.reduce(function(d,m){return i[m.ID]!==void 0&&(d=i[m.ID]),d},null);e.children.forEach(function(d){n.morphTargets[d.ID]!==void 0&&r.push(n.morphTargets[d.ID])});const l=s[0],f={};"RotationOrder"in l&&(f.eulerOrder=Ji(l.RotationOrder.value)),"InheritType"in l&&(f.inheritType=parseInt(l.InheritType.value)),"GeometricTranslation"in l&&(f.translation=l.GeometricTranslation.value),"GeometricRotation"in l&&(f.rotation=l.GeometricRotation.value),"GeometricScaling"in l&&(f.scale=l.GeometricScaling.value);const u=Qi(f);return this.genGeometry(t,a,r,u)}genGeometry(e,t,n,i){const r=new c.BufferGeometry;e.attrName&&(r.name=e.attrName);const s=this.parseGeoNode(e,t),a=this.genBuffers(s),l=new c.Float32BufferAttribute(a.vertex,3);if(l.applyMatrix4(i),r.setAttribute("position",l),a.colors.length>0&&r.setAttribute("color",new c.Float32BufferAttribute(a.colors,3)),t&&(r.setAttribute("skinIndex",new c.Uint16BufferAttribute(a.weightsIndices,4)),r.setAttribute("skinWeight",new c.Float32BufferAttribute(a.vertexWeights,4)),r.FBX_Deformer=t),a.normal.length>0){const f=new c.Matrix3().getNormalMatrix(i),u=new c.Float32BufferAttribute(a.normal,3);u.applyNormalMatrix(f),r.setAttribute("normal",u)}if(a.uvs.forEach(function(f,u){let d="uv"+(u+1).toString();u===0&&(d="uv"),r.setAttribute(d,new c.Float32BufferAttribute(a.uvs[u],2))}),s.material&&s.material.mappingType!=="AllSame"){let f=a.materialIndex[0],u=0;if(a.materialIndex.forEach(function(d,m){d!==f&&(r.addGroup(u,m-u,f),f=d,u=m)}),r.groups.length>0){const d=r.groups[r.groups.length-1],m=d.start+d.count;m!==a.materialIndex.length&&r.addGroup(m,a.materialIndex.length-m,f)}r.groups.length===0&&r.addGroup(0,a.materialIndex.length,a.materialIndex[0])}return this.addMorphTargets(r,e,n,i),r}parseGeoNode(e,t){const n={};if(n.vertexPositions=e.Vertices!==void 0?e.Vertices.a:[],n.vertexIndices=e.PolygonVertexIndex!==void 0?e.PolygonVertexIndex.a:[],e.LayerElementColor&&(n.color=this.parseVertexColors(e.LayerElementColor[0])),e.LayerElementMaterial&&(n.material=this.parseMaterialIndices(e.LayerElementMaterial[0])),e.LayerElementNormal&&(n.normal=this.parseNormals(e.LayerElementNormal[0])),e.LayerElementUV){n.uv=[];let i=0;for(;e.LayerElementUV[i];)e.LayerElementUV[i].UV&&n.uv.push(this.parseUVs(e.LayerElementUV[i])),i++}return n.weightTable={},t!==null&&(n.skeleton=t,t.rawBones.forEach(function(i,r){i.indices.forEach(function(s,a){n.weightTable[s]===void 0&&(n.weightTable[s]=[]),n.weightTable[s].push({id:r,weight:i.weights[a]})})})),n}genBuffers(e){const t={vertex:[],normal:[],colors:[],uvs:[],materialIndex:[],vertexWeights:[],weightsIndices:[]};let n=0,i=0,r=!1,s=[],a=[],l=[],f=[],u=[],d=[];const m=this;return e.vertexIndices.forEach(function(y,b){let A,_=!1;y<0&&(y=y^-1,_=!0);let L=[],I=[];if(s.push(y*3,y*3+1,y*3+2),e.color){const S=ln(b,n,y,e.color);l.push(S[0],S[1],S[2])}if(e.skeleton){if(e.weightTable[y]!==void 0&&e.weightTable[y].forEach(function(S){I.push(S.weight),L.push(S.id)}),I.length>4){r||(console.warn("THREE.FBXLoader: Vertex has more than 4 skinning weights assigned to vertex. Deleting additional weights."),r=!0);const S=[0,0,0,0],g=[0,0,0,0];I.forEach(function(O,x){let C=O,p=L[x];g.forEach(function(w,v,T){if(C>w){T[v]=C,C=w;const k=S[v];S[v]=p,p=k}})}),L=S,I=g}for(;I.length<4;)I.push(0),L.push(0);for(let S=0;S<4;++S)u.push(I[S]),d.push(L[S])}if(e.normal){const S=ln(b,n,y,e.normal);a.push(S[0],S[1],S[2])}e.material&&e.material.mappingType!=="AllSame"&&(A=ln(b,n,y,e.material)[0]),e.uv&&e.uv.forEach(function(S,g){const O=ln(b,n,y,S);f[g]===void 0&&(f[g]=[]),f[g].push(O[0]),f[g].push(O[1])}),i++,_&&(m.genFace(t,e,s,A,a,l,f,u,d,i),n++,i=0,s=[],a=[],l=[],f=[],u=[],d=[])}),t}genFace(e,t,n,i,r,s,a,l,f,u){for(let d=2;d<u;d++)e.vertex.push(t.vertexPositions[n[0]]),e.vertex.push(t.vertexPositions[n[1]]),e.vertex.push(t.vertexPositions[n[2]]),e.vertex.push(t.vertexPositions[n[(d-1)*3]]),e.vertex.push(t.vertexPositions[n[(d-1)*3+1]]),e.vertex.push(t.vertexPositions[n[(d-1)*3+2]]),e.vertex.push(t.vertexPositions[n[d*3]]),e.vertex.push(t.vertexPositions[n[d*3+1]]),e.vertex.push(t.vertexPositions[n[d*3+2]]),t.skeleton&&(e.vertexWeights.push(l[0]),e.vertexWeights.push(l[1]),e.vertexWeights.push(l[2]),e.vertexWeights.push(l[3]),e.vertexWeights.push(l[(d-1)*4]),e.vertexWeights.push(l[(d-1)*4+1]),e.vertexWeights.push(l[(d-1)*4+2]),e.vertexWeights.push(l[(d-1)*4+3]),e.vertexWeights.push(l[d*4]),e.vertexWeights.push(l[d*4+1]),e.vertexWeights.push(l[d*4+2]),e.vertexWeights.push(l[d*4+3]),e.weightsIndices.push(f[0]),e.weightsIndices.push(f[1]),e.weightsIndices.push(f[2]),e.weightsIndices.push(f[3]),e.weightsIndices.push(f[(d-1)*4]),e.weightsIndices.push(f[(d-1)*4+1]),e.weightsIndices.push(f[(d-1)*4+2]),e.weightsIndices.push(f[(d-1)*4+3]),e.weightsIndices.push(f[d*4]),e.weightsIndices.push(f[d*4+1]),e.weightsIndices.push(f[d*4+2]),e.weightsIndices.push(f[d*4+3])),t.color&&(e.colors.push(s[0]),e.colors.push(s[1]),e.colors.push(s[2]),e.colors.push(s[(d-1)*3]),e.colors.push(s[(d-1)*3+1]),e.colors.push(s[(d-1)*3+2]),e.colors.push(s[d*3]),e.colors.push(s[d*3+1]),e.colors.push(s[d*3+2])),t.material&&t.material.mappingType!=="AllSame"&&(e.materialIndex.push(i),e.materialIndex.push(i),e.materialIndex.push(i)),t.normal&&(e.normal.push(r[0]),e.normal.push(r[1]),e.normal.push(r[2]),e.normal.push(r[(d-1)*3]),e.normal.push(r[(d-1)*3+1]),e.normal.push(r[(d-1)*3+2]),e.normal.push(r[d*3]),e.normal.push(r[d*3+1]),e.normal.push(r[d*3+2])),t.uv&&t.uv.forEach(function(m,y){e.uvs[y]===void 0&&(e.uvs[y]=[]),e.uvs[y].push(a[y][0]),e.uvs[y].push(a[y][1]),e.uvs[y].push(a[y][(d-1)*2]),e.uvs[y].push(a[y][(d-1)*2+1]),e.uvs[y].push(a[y][d*2]),e.uvs[y].push(a[y][d*2+1])})}addMorphTargets(e,t,n,i){if(n.length===0)return;e.morphTargetsRelative=!0,e.morphAttributes.position=[];const r=this;n.forEach(function(s){s.rawTargets.forEach(function(a){const l=ve.Objects.Geometry[a.geoID];l!==void 0&&r.genMorphGeometry(e,t,l,i,a.name)})})}genMorphGeometry(e,t,n,i,r){const s=t.PolygonVertexIndex!==void 0?t.PolygonVertexIndex.a:[],a=n.Vertices!==void 0?n.Vertices.a:[],l=n.Indexes!==void 0?n.Indexes.a:[],f=e.attributes.position.count*3,u=new Float32Array(f);for(let b=0;b<l.length;b++){const A=l[b]*3;u[A]=a[b*3],u[A+1]=a[b*3+1],u[A+2]=a[b*3+2]}const d={vertexIndices:s,vertexPositions:u},m=this.genBuffers(d),y=new c.Float32BufferAttribute(m.vertex,3);y.name=r||n.attrName,y.applyMatrix4(i),e.morphAttributes.position.push(y)}parseNormals(e){const t=e.MappingInformationType,n=e.ReferenceInformationType,i=e.Normals.a;let r=[];return n==="IndexToDirect"&&("NormalIndex"in e?r=e.NormalIndex.a:"NormalsIndex"in e&&(r=e.NormalsIndex.a)),{dataSize:3,buffer:i,indices:r,mappingType:t,referenceType:n}}parseUVs(e){const t=e.MappingInformationType,n=e.ReferenceInformationType,i=e.UV.a;let r=[];return n==="IndexToDirect"&&(r=e.UVIndex.a),{dataSize:2,buffer:i,indices:r,mappingType:t,referenceType:n}}parseVertexColors(e){const t=e.MappingInformationType,n=e.ReferenceInformationType,i=e.Colors.a;let r=[];return n==="IndexToDirect"&&(r=e.ColorIndex.a),{dataSize:4,buffer:i,indices:r,mappingType:t,referenceType:n}}parseMaterialIndices(e){const t=e.MappingInformationType,n=e.ReferenceInformationType;if(t==="NoMappingInformation")return{dataSize:1,buffer:[0],indices:[0],mappingType:"AllSame",referenceType:n};const i=e.Materials.a,r=[];for(let s=0;s<i.length;++s)r.push(s);return{dataSize:1,buffer:i,indices:r,mappingType:t,referenceType:n}}parseNurbsGeometry(e){if(Wi===void 0)return console.error("THREE.FBXLoader: The loader relies on NURBSCurve for any nurbs present in the model. Nurbs will show up as empty geometry."),new c.BufferGeometry;const t=parseInt(e.Order);if(isNaN(t))return console.error("THREE.FBXLoader: Invalid Order %s given for geometry ID: %s",e.Order,e.id),new c.BufferGeometry;const n=t-1,i=e.KnotVector.a,r=[],s=e.Points.a;for(let d=0,m=s.length;d<m;d+=4)r.push(new c.Vector4().fromArray(s,d));let a,l;if(e.Form==="Closed")r.push(r[0]);else if(e.Form==="Periodic"){a=n,l=i.length-1-a;for(let d=0;d<n;++d)r.push(r[d])}const u=new Wi(n,i,r,a,l).getPoints(r.length*12);return new c.BufferGeometry().setFromPoints(u)}}class Xo{parse(){const e=[],t=this.parseClips();if(t!==void 0)for(const n in t){const i=t[n],r=this.addClip(i);e.push(r)}return e}parseClips(){if(ve.Objects.AnimationCurve===void 0)return;const e=this.parseAnimationCurveNodes();this.parseAnimationCurves(e);const t=this.parseAnimationLayers(e);return this.parseAnimStacks(t)}parseAnimationCurveNodes(){const e=ve.Objects.AnimationCurveNode,t=new Map;for(const n in e){const i=e[n];if(i.attrName.match(/S|R|T|DeformPercent/)!==null){const r={id:i.id,attr:i.attrName,curves:{}};t.set(r.id,r)}}return t}parseAnimationCurves(e){const t=ve.Objects.AnimationCurve;for(const n in t){const i={id:t[n].id,times:t[n].KeyTime.a.map(Qo),values:t[n].KeyValueFloat.a},r=Te.get(i.id);if(r!==void 0){const s=r.parents[0].ID,a=r.parents[0].relationship;a.match(/X/)?e.get(s).curves.x=i:a.match(/Y/)?e.get(s).curves.y=i:a.match(/Z/)?e.get(s).curves.z=i:a.match(/d|DeformPercent/)&&e.has(s)&&(e.get(s).curves.morph=i)}}}parseAnimationLayers(e){const t=ve.Objects.AnimationLayer,n=new Map;for(const i in t){const r=[],s=Te.get(parseInt(i));s!==void 0&&(s.children.forEach(function(l,f){if(e.has(l.ID)){const u=e.get(l.ID);if(u.curves.x!==void 0||u.curves.y!==void 0||u.curves.z!==void 0){if(r[f]===void 0){const d=Te.get(l.ID).parents.filter(function(m){return m.relationship!==void 0})[0].ID;if(d!==void 0){const m=ve.Objects.Model[d.toString()];if(m===void 0){console.warn("THREE.FBXLoader: Encountered a unused curve.",l);return}const y={modelName:m.attrName?c.PropertyBinding.sanitizeNodeName(m.attrName):"",ID:m.id,initialPosition:[0,0,0],initialRotation:[0,0,0],initialScale:[1,1,1]};Ve.traverse(function(b){b.ID===m.id&&(y.transform=b.matrix,b.userData.transformData&&(y.eulerOrder=b.userData.transformData.eulerOrder))}),y.transform||(y.transform=new c.Matrix4),"PreRotation"in m&&(y.preRotation=m.PreRotation.value),"PostRotation"in m&&(y.postRotation=m.PostRotation.value),r[f]=y}}r[f]&&(r[f][u.attr]=u)}else if(u.curves.morph!==void 0){if(r[f]===void 0){const d=Te.get(l.ID).parents.filter(function(L){return L.relationship!==void 0})[0].ID,m=Te.get(d).parents[0].ID,y=Te.get(m).parents[0].ID,b=Te.get(y).parents[0].ID,A=ve.Objects.Model[b],_={modelName:A.attrName?c.PropertyBinding.sanitizeNodeName(A.attrName):"",morphName:ve.Objects.Deformer[d].attrName};r[f]=_}r[f][u.attr]=u}}}),n.set(parseInt(i),r))}return n}parseAnimStacks(e){const t=ve.Objects.AnimationStack,n={};for(const i in t){const r=Te.get(parseInt(i)).children;r.length>1&&console.warn("THREE.FBXLoader: Encountered an animation stack with multiple layers, this is currently not supported. Ignoring subsequent layers.");const s=e.get(r[0].ID);n[i]={name:t[i].attrName,layer:s}}return n}addClip(e){let t=[];const n=this;return e.layer.forEach(function(i){t=t.concat(n.generateTracks(i))}),new c.AnimationClip(e.name,-1,t)}generateTracks(e){const t=[];let n=new c.Vector3,i=new c.Quaternion,r=new c.Vector3;if(e.transform&&e.transform.decompose(n,i,r),n=n.toArray(),i=new c.Euler().setFromQuaternion(i,e.eulerOrder).toArray(),r=r.toArray(),e.T!==void 0&&Object.keys(e.T.curves).length>0){const s=this.generateVectorTrack(e.modelName,e.T.curves,n,"position");s!==void 0&&t.push(s)}if(e.R!==void 0&&Object.keys(e.R.curves).length>0){const s=this.generateRotationTrack(e.modelName,e.R.curves,i,e.preRotation,e.postRotation,e.eulerOrder);s!==void 0&&t.push(s)}if(e.S!==void 0&&Object.keys(e.S.curves).length>0){const s=this.generateVectorTrack(e.modelName,e.S.curves,r,"scale");s!==void 0&&t.push(s)}if(e.DeformPercent!==void 0){const s=this.generateMorphTrack(e);s!==void 0&&t.push(s)}return t}generateVectorTrack(e,t,n,i){const r=this.getTimesForAllAxes(t),s=this.getKeyframeTrackValues(r,t,n);return new c.VectorKeyframeTrack(e+"."+i,r,s)}generateRotationTrack(e,t,n,i,r,s){t.x!==void 0&&(this.interpolateRotations(t.x),t.x.values=t.x.values.map(c.MathUtils.degToRad)),t.y!==void 0&&(this.interpolateRotations(t.y),t.y.values=t.y.values.map(c.MathUtils.degToRad)),t.z!==void 0&&(this.interpolateRotations(t.z),t.z.values=t.z.values.map(c.MathUtils.degToRad));const a=this.getTimesForAllAxes(t),l=this.getKeyframeTrackValues(a,t,n);i!==void 0&&(i=i.map(c.MathUtils.degToRad),i.push(s),i=new c.Euler().fromArray(i),i=new c.Quaternion().setFromEuler(i)),r!==void 0&&(r=r.map(c.MathUtils.degToRad),r.push(s),r=new c.Euler().fromArray(r),r=new c.Quaternion().setFromEuler(r).invert());const f=new c.Quaternion,u=new c.Euler,d=[];for(let m=0;m<l.length;m+=3)u.set(l[m],l[m+1],l[m+2],s),f.setFromEuler(u),i!==void 0&&f.premultiply(i),r!==void 0&&f.multiply(r),f.toArray(d,m/3*4);return new c.QuaternionKeyframeTrack(e+".quaternion",a,d)}generateMorphTrack(e){const t=e.DeformPercent.curves.morph,n=t.values.map(function(r){return r/100}),i=Ve.getObjectByName(e.modelName).morphTargetDictionary[e.morphName];return new c.NumberKeyframeTrack(e.modelName+".morphTargetInfluences["+i+"]",t.times,n)}getTimesForAllAxes(e){let t=[];if(e.x!==void 0&&(t=t.concat(e.x.times)),e.y!==void 0&&(t=t.concat(e.y.times)),e.z!==void 0&&(t=t.concat(e.z.times)),t=t.sort(function(n,i){return n-i}),t.length>1){let n=1,i=t[0];for(let r=1;r<t.length;r++){const s=t[r];s!==i&&(t[n]=s,i=s,n++)}t=t.slice(0,n)}return t}getKeyframeTrackValues(e,t,n){const i=n,r=[];let s=-1,a=-1,l=-1;return e.forEach(function(f){if(t.x&&(s=t.x.times.indexOf(f)),t.y&&(a=t.y.times.indexOf(f)),t.z&&(l=t.z.times.indexOf(f)),s!==-1){const u=t.x.values[s];r.push(u),i[0]=u}else r.push(i[0]);if(a!==-1){const u=t.y.values[a];r.push(u),i[1]=u}else r.push(i[1]);if(l!==-1){const u=t.z.values[l];r.push(u),i[2]=u}else r.push(i[2])}),r}interpolateRotations(e){for(let t=1;t<e.values.length;t++){const n=e.values[t-1],i=e.values[t]-n,r=Math.abs(i);if(r>=180){const s=r/180,a=i/s;let l=n+a;const f=e.times[t-1],d=(e.times[t]-f)/s;let m=f+d;const y=[],b=[];for(;m<e.times[t];)y.push(m),m+=d,b.push(l),l+=a;e.times=$i(e.times,t,y),e.values=$i(e.values,t,b)}}}}class Wo{getPrevNode(){return this.nodeStack[this.currentIndent-2]}getCurrentNode(){return this.nodeStack[this.currentIndent-1]}getCurrentProp(){return this.currentProp}pushStack(e){this.nodeStack.push(e),this.currentIndent+=1}popStack(){this.nodeStack.pop(),this.currentIndent-=1}setCurrentProp(e,t){this.currentProp=e,this.currentPropName=t}parse(e){this.currentIndent=0,this.allNodes=new qi,this.nodeStack=[],this.currentProp=[],this.currentPropName="";const t=this,n=e.split(/[\r\n]+/);return n.forEach(function(i,r){const s=i.match(/^[\s\t]*;/),a=i.match(/^[\s\t]*$/);if(s||a)return;const l=i.match("^\\t{"+t.currentIndent+"}(\\w+):(.*){",""),f=i.match("^\\t{"+t.currentIndent+"}(\\w+):[\\s\\t\\r\\n](.*)"),u=i.match("^\\t{"+(t.currentIndent-1)+"}}");l?t.parseNodeBegin(i,l):f?t.parseNodeProperty(i,f,n[++r]):u?t.popStack():i.match(/^[^\s\t}]/)&&t.parseNodePropertyContinued(i)}),this.allNodes}parseNodeBegin(e,t){const n=t[1].trim().replace(/^"/,"").replace(/"$/,""),i=t[2].split(",").map(function(l){return l.trim().replace(/^"/,"").replace(/"$/,"")}),r={name:n},s=this.parseNodeAttr(i),a=this.getCurrentNode();this.currentIndent===0?this.allNodes.add(n,r):n in a?(n==="PoseNode"?a.PoseNode.push(r):a[n].id!==void 0&&(a[n]={},a[n][a[n].id]=a[n]),s.id!==""&&(a[n][s.id]=r)):typeof s.id=="number"?(a[n]={},a[n][s.id]=r):n!=="Properties70"&&(n==="PoseNode"?a[n]=[r]:a[n]=r),typeof s.id=="number"&&(r.id=s.id),s.name!==""&&(r.attrName=s.name),s.type!==""&&(r.attrType=s.type),this.pushStack(r)}parseNodeAttr(e){let t=e[0];e[0]!==""&&(t=parseInt(e[0]),isNaN(t)&&(t=e[0]));let n="",i="";return e.length>1&&(n=e[1].replace(/^(\w+)::/,""),i=e[2]),{id:t,name:n,type:i}}parseNodeProperty(e,t,n){let i=t[1].replace(/^"/,"").replace(/"$/,"").trim(),r=t[2].replace(/^"/,"").replace(/"$/,"").trim();i==="Content"&&r===","&&(r=n.replace(/"/g,"").replace(/,$/,"").trim());const s=this.getCurrentNode();if(s.name==="Properties70"){this.parseNodeSpecialProperty(e,i,r);return}if(i==="C"){const l=r.split(",").slice(1),f=parseInt(l[0]),u=parseInt(l[1]);let d=r.split(",").slice(3);d=d.map(function(m){return m.trim().replace(/^"/,"")}),i="connections",r=[f,u],Ho(r,d),s[i]===void 0&&(s[i]=[])}i==="Node"&&(s.id=r),i in s&&Array.isArray(s[i])?s[i].push(r):i!=="a"?s[i]=r:s.a=r,this.setCurrentProp(s,i),i==="a"&&r.slice(-1)!==","&&(s.a=Rn(r))}parseNodePropertyContinued(e){const t=this.getCurrentNode();t.a+=e,e.slice(-1)!==","&&(t.a=Rn(t.a))}parseNodeSpecialProperty(e,t,n){const i=n.split('",').map(function(u){return u.trim().replace(/^\"/,"").replace(/\s/,"_")}),r=i[0],s=i[1],a=i[2],l=i[3];let f=i[4];switch(s){case"int":case"enum":case"bool":case"ULongLong":case"double":case"Number":case"FieldOfView":f=parseFloat(f);break;case"Color":case"ColorRGB":case"Vector3D":case"Lcl_Translation":case"Lcl_Rotation":case"Lcl_Scaling":f=Rn(f);break}this.getPrevNode()[r]={type:s,type2:a,flag:l,value:f},this.setCurrentProp(this.getPrevNode(),r)}}class Zo{parse(e){const t=new Zi(e);t.skip(23);const n=t.getUint32();if(n<6400)throw new Error("THREE.FBXLoader: FBX version not supported, FileVersion: "+n);const i=new qi;for(;!this.endOfContent(t);){const r=this.parseNode(t,n);r!==null&&i.add(r.name,r)}return i}endOfContent(e){return e.size()%16===0?(e.getOffset()+160+16&-16)>=e.size():e.getOffset()+160+16>=e.size()}parseNode(e,t){const n={},i=t>=7500?e.getUint64():e.getUint32(),r=t>=7500?e.getUint64():e.getUint32();t>=7500?e.getUint64():e.getUint32();const s=e.getUint8(),a=e.getString(s);if(i===0)return null;const l=[];for(let m=0;m<r;m++)l.push(this.parseProperty(e));const f=l.length>0?l[0]:"",u=l.length>1?l[1]:"",d=l.length>2?l[2]:"";for(n.singleProperty=r===1&&e.getOffset()===i;i>e.getOffset();){const m=this.parseNode(e,t);m!==null&&this.parseSubNode(a,n,m)}return n.propertyList=l,typeof f=="number"&&(n.id=f),u!==""&&(n.attrName=u),d!==""&&(n.attrType=d),a!==""&&(n.name=a),n}parseSubNode(e,t,n){if(n.singleProperty===!0){const i=n.propertyList[0];Array.isArray(i)?(t[n.name]=n,n.a=i):t[n.name]=i}else if(e==="Connections"&&n.name==="C"){const i=[];n.propertyList.forEach(function(r,s){s!==0&&i.push(r)}),t.connections===void 0&&(t.connections=[]),t.connections.push(i)}else if(n.name==="Properties70")Object.keys(n).forEach(function(r){t[r]=n[r]});else if(e==="Properties70"&&n.name==="P"){let i=n.propertyList[0],r=n.propertyList[1];const s=n.propertyList[2],a=n.propertyList[3];let l;i.indexOf("Lcl ")===0&&(i=i.replace("Lcl ","Lcl_")),r.indexOf("Lcl ")===0&&(r=r.replace("Lcl ","Lcl_")),r==="Color"||r==="ColorRGB"||r==="Vector"||r==="Vector3D"||r.indexOf("Lcl_")===0?l=[n.propertyList[4],n.propertyList[5],n.propertyList[6]]:l=n.propertyList[4],t[i]={type:r,type2:s,flag:a,value:l}}else t[n.name]===void 0?typeof n.id=="number"?(t[n.name]={},t[n.name][n.id]=n):t[n.name]=n:n.name==="PoseNode"?(Array.isArray(t[n.name])||(t[n.name]=[t[n.name]]),t[n.name].push(n)):t[n.name][n.id]===void 0&&(t[n.name][n.id]=n)}parseProperty(e){const t=e.getString(1);let n;switch(t){case"C":return e.getBoolean();case"D":return e.getFloat64();case"F":return e.getFloat32();case"I":return e.getInt32();case"L":return e.getInt64();case"R":return n=e.getUint32(),e.getArrayBuffer(n);case"S":return n=e.getUint32(),e.getString(n);case"Y":return e.getInt16();case"b":case"c":case"d":case"f":case"i":case"l":const i=e.getUint32(),r=e.getUint32(),s=e.getUint32();if(r===0)switch(t){case"b":case"c":return e.getBooleanArray(i);case"d":return e.getFloat64Array(i);case"f":return e.getFloat32Array(i);case"i":return e.getInt32Array(i);case"l":return e.getInt64Array(i)}const a=Bs(new Uint8Array(e.getArrayBuffer(s))),l=new Zi(a.buffer);switch(t){case"b":case"c":return l.getBooleanArray(i);case"d":return l.getFloat64Array(i);case"f":return l.getFloat32Array(i);case"i":return l.getInt32Array(i);case"l":return l.getInt64Array(i)}default:throw new Error("THREE.FBXLoader: Unknown property type "+t)}}}class Zi{constructor(e,t){this.dv=new DataView(e),this.offset=0,this.littleEndian=t!==void 0?t:!0}getOffset(){return this.offset}size(){return this.dv.buffer.byteLength}skip(e){this.offset+=e}getBoolean(){return(this.getUint8()&1)===1}getBooleanArray(e){const t=[];for(let n=0;n<e;n++)t.push(this.getBoolean());return t}getUint8(){const e=this.dv.getUint8(this.offset);return this.offset+=1,e}getInt16(){const e=this.dv.getInt16(this.offset,this.littleEndian);return this.offset+=2,e}getInt32(){const e=this.dv.getInt32(this.offset,this.littleEndian);return this.offset+=4,e}getInt32Array(e){const t=[];for(let n=0;n<e;n++)t.push(this.getInt32());return t}getUint32(){const e=this.dv.getUint32(this.offset,this.littleEndian);return this.offset+=4,e}getInt64(){let e,t;return this.littleEndian?(e=this.getUint32(),t=this.getUint32()):(t=this.getUint32(),e=this.getUint32()),t&2147483648?(t=~t&4294967295,e=~e&4294967295,e===4294967295&&(t=t+1&4294967295),e=e+1&4294967295,-(t*4294967296+e)):t*4294967296+e}getInt64Array(e){const t=[];for(let n=0;n<e;n++)t.push(this.getInt64());return t}getUint64(){let e,t;return this.littleEndian?(e=this.getUint32(),t=this.getUint32()):(t=this.getUint32(),e=this.getUint32()),t*4294967296+e}getFloat32(){const e=this.dv.getFloat32(this.offset,this.littleEndian);return this.offset+=4,e}getFloat32Array(e){const t=[];for(let n=0;n<e;n++)t.push(this.getFloat32());return t}getFloat64(){const e=this.dv.getFloat64(this.offset,this.littleEndian);return this.offset+=8,e}getFloat64Array(e){const t=[];for(let n=0;n<e;n++)t.push(this.getFloat64());return t}getArrayBuffer(e){const t=this.dv.buffer.slice(this.offset,this.offset+e);return this.offset+=e,t}getString(e){let t=[];for(let i=0;i<e;i++)t[i]=this.getUint8();const n=t.indexOf(0);return n>=0&&(t=t.slice(0,n)),c.LoaderUtils.decodeText(new Uint8Array(t))}}class qi{add(e,t){this[e]=t}}function qo(o){const e="Kaydara FBX Binary \0";return o.byteLength>=e.length&&e===Hi(o,0,e.length)}function Ko(o){const e=["K","a","y","d","a","r","a","\\","F","B","X","\\","B","i","n","a","r","y","\\","\\"];let t=0;function n(i){const r=o[i-1];return o=o.slice(t+i),t++,r}for(let i=0;i<e.length;++i)if(n(1)===e[i])return!1;return!0}function Ki(o){const e=/FBXVersion: (\d+)/,t=o.match(e);if(t)return parseInt(t[1]);throw new Error("THREE.FBXLoader: Cannot find the version number for the file given.")}function Qo(o){return o/46186158e3}const Jo=[];function ln(o,e,t,n){let i;switch(n.mappingType){case"ByPolygonVertex":i=o;break;case"ByPolygon":i=e;break;case"ByVertice":i=t;break;case"AllSame":i=n.indices[0];break;default:console.warn("THREE.FBXLoader: unknown attribute mapping type "+n.mappingType)}n.referenceType==="IndexToDirect"&&(i=n.indices[i]);const r=i*n.dataSize,s=r+n.dataSize;return $o(Jo,n.buffer,r,s)}const Gn=new c.Euler,Tt=new c.Vector3;function Qi(o){const e=new c.Matrix4,t=new c.Matrix4,n=new c.Matrix4,i=new c.Matrix4,r=new c.Matrix4,s=new c.Matrix4,a=new c.Matrix4,l=new c.Matrix4,f=new c.Matrix4,u=new c.Matrix4,d=new c.Matrix4,m=new c.Matrix4,y=o.inheritType?o.inheritType:0;if(o.translation&&e.setPosition(Tt.fromArray(o.translation)),o.preRotation){const v=o.preRotation.map(c.MathUtils.degToRad);v.push(o.eulerOrder),t.makeRotationFromEuler(Gn.fromArray(v))}if(o.rotation){const v=o.rotation.map(c.MathUtils.degToRad);v.push(o.eulerOrder),n.makeRotationFromEuler(Gn.fromArray(v))}if(o.postRotation){const v=o.postRotation.map(c.MathUtils.degToRad);v.push(o.eulerOrder),i.makeRotationFromEuler(Gn.fromArray(v)),i.invert()}o.scale&&r.scale(Tt.fromArray(o.scale)),o.scalingOffset&&a.setPosition(Tt.fromArray(o.scalingOffset)),o.scalingPivot&&s.setPosition(Tt.fromArray(o.scalingPivot)),o.rotationOffset&&l.setPosition(Tt.fromArray(o.rotationOffset)),o.rotationPivot&&f.setPosition(Tt.fromArray(o.rotationPivot)),o.parentMatrixWorld&&(d.copy(o.parentMatrix),u.copy(o.parentMatrixWorld));const b=t.clone().multiply(n).multiply(i),A=new c.Matrix4;A.extractRotation(u);const _=new c.Matrix4;_.copyPosition(u);const L=_.clone().invert().multiply(u),I=A.clone().invert().multiply(L),S=r,g=new c.Matrix4;if(y===0)g.copy(A).multiply(b).multiply(I).multiply(S);else if(y===1)g.copy(A).multiply(I).multiply(b).multiply(S);else{const T=new c.Matrix4().scale(new c.Vector3().setFromMatrixScale(d)).clone().invert(),k=I.clone().multiply(T);g.copy(A).multiply(b).multiply(k).multiply(S)}const O=f.clone().invert(),x=s.clone().invert();let C=e.clone().multiply(l).multiply(f).multiply(t).multiply(n).multiply(i).multiply(O).multiply(a).multiply(s).multiply(r).multiply(x);const p=new c.Matrix4().copyPosition(C),w=u.clone().multiply(p);return m.copyPosition(w),C=m.clone().multiply(g),C.premultiply(u.invert()),C}function Ji(o){o=o||0;const e=["ZYX","YZX","XZY","ZXY","YXZ","XYZ"];return o===6?(console.warn("THREE.FBXLoader: unsupported Euler Order: Spherical XYZ. Animations and rotations may be incorrect."),e[0]):e[o]}function Rn(o){return o.split(",").map(function(t){return parseFloat(t)})}function Hi(o,e,t){return e===void 0&&(e=0),t===void 0&&(t=o.byteLength),c.LoaderUtils.decodeText(new Uint8Array(o,e,t))}function Ho(o,e){for(let t=0,n=o.length,i=e.length;t<i;t++,n++)o[n]=e[t]}function $o(o,e,t,n){for(let i=t,r=0;i<n;i++,r++)o[r]=e[i];return o}function $i(o,e,t){return o.slice(0,e).concat(t).concat(o.slice(e))}var ea=Object.defineProperty,ta=(o,e,t)=>e in o?ea(o,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):o[e]=t,En=(o,e,t)=>(ta(o,typeof e!="symbol"?e+"":e,t),t);class na extends c.Loader{constructor(e){super(e)}load(e,t,n,i){const r=new c.FileLoader(this.manager);r.setPath(this.path),r.setRequestHeader(this.requestHeader),r.setWithCredentials(this.withCredentials),r.load(e,s=>{if(typeof s!="string")throw new Error("unsupported data type");const a=JSON.parse(s),l=this.parse(a);t&&t(l)},n,i)}loadAsync(e,t){return super.loadAsync(e,t)}parse(e){return new Yn(e)}}class Yn{constructor(e){En(this,"data"),this.data=e}generateShapes(e,t=100,n){const i=[],r={letterSpacing:0,lineHeight:1,...n},s=ia(e,t,this.data,r);for(let a=0,l=s.length;a<l;a++)Array.prototype.push.apply(i,s[a].toShapes(!1));return i}}En(Yn,"isFont"),En(Yn,"type");function ia(o,e,t,n){const i=Array.from(o),r=e/t.resolution,s=(t.boundingBox.yMax-t.boundingBox.yMin+t.underlineThickness)*r,a=[];let l=0,f=0;for(let u=0;u<i.length;u++){const d=i[u];if(d===`
|
|
74
|
+
`)l=0,f-=s*n.lineHeight;else{const m=ra(d,r,l,f,t);m&&(l+=m.offsetX+n.letterSpacing,a.push(m.path))}}return a}function ra(o,e,t,n,i){const r=i.glyphs[o]||i.glyphs["?"];if(!r){console.error('THREE.Font: character "'+o+'" does not exists in font family '+i.familyName+".");return}const s=new c.ShapePath;let a,l,f,u,d,m,y,b;if(r.o){const A=r._cachedOutline||(r._cachedOutline=r.o.split(" "));for(let _=0,L=A.length;_<L;)switch(A[_++]){case"m":a=parseInt(A[_++])*e+t,l=parseInt(A[_++])*e+n,s.moveTo(a,l);break;case"l":a=parseInt(A[_++])*e+t,l=parseInt(A[_++])*e+n,s.lineTo(a,l);break;case"q":f=parseInt(A[_++])*e+t,u=parseInt(A[_++])*e+n,d=parseInt(A[_++])*e+t,m=parseInt(A[_++])*e+n,s.quadraticCurveTo(d,m,f,u);break;case"b":f=parseInt(A[_++])*e+t,u=parseInt(A[_++])*e+n,d=parseInt(A[_++])*e+t,m=parseInt(A[_++])*e+n,y=parseInt(A[_++])*e+t,b=parseInt(A[_++])*e+n,s.bezierCurveTo(d,m,y,b,f,u);break}}return{offsetX:r.ha*e,path:s}}class er extends c.DataTextureLoader{constructor(e){super(e),this.type=c.HalfFloatType}parse(e){const a=function(S,g){switch(S){case 1:console.error("THREE.RGBELoader Read Error: "+(g||""));break;case 2:console.error("THREE.RGBELoader Write Error: "+(g||""));break;case 3:console.error("THREE.RGBELoader Bad File Format: "+(g||""));break;default:case 4:console.error("THREE.RGBELoader: Error: "+(g||""))}return-1},d=`
|
|
75
|
+
`,m=function(S,g,O){g=g||1024;let C=S.pos,p=-1,w=0,v="",T=String.fromCharCode.apply(null,new Uint16Array(S.subarray(C,C+128)));for(;0>(p=T.indexOf(d))&&w<g&&C<S.byteLength;)v+=T,w+=T.length,C+=128,T+=String.fromCharCode.apply(null,new Uint16Array(S.subarray(C,C+128)));return-1<p?(O!==!1&&(S.pos+=w+p+1),v+T.slice(0,p)):!1},y=function(S){const g=/^#\?(\S+)/,O=/^\s*GAMMA\s*=\s*(\d+(\.\d+)?)\s*$/,x=/^\s*EXPOSURE\s*=\s*(\d+(\.\d+)?)\s*$/,C=/^\s*FORMAT=(\S+)\s*$/,p=/^\s*\-Y\s+(\d+)\s+\+X\s+(\d+)\s*$/,w={valid:0,string:"",comments:"",programtype:"RGBE",format:"",gamma:1,exposure:1,width:0,height:0};let v,T;if(S.pos>=S.byteLength||!(v=m(S)))return a(1,"no header found");if(!(T=v.match(g)))return a(3,"bad initial token");for(w.valid|=1,w.programtype=T[1],w.string+=v+`
|
|
76
|
+
`;v=m(S),v!==!1;){if(w.string+=v+`
|
|
77
|
+
`,v.charAt(0)==="#"){w.comments+=v+`
|
|
78
|
+
`;continue}if((T=v.match(O))&&(w.gamma=parseFloat(T[1])),(T=v.match(x))&&(w.exposure=parseFloat(T[1])),(T=v.match(C))&&(w.valid|=2,w.format=T[1]),(T=v.match(p))&&(w.valid|=4,w.height=parseInt(T[1],10),w.width=parseInt(T[2],10)),w.valid&2&&w.valid&4)break}return w.valid&2?w.valid&4?w:a(3,"missing image size specifier"):a(3,"missing format specifier")},b=function(S,g,O){const x=g;if(x<8||x>32767||S[0]!==2||S[1]!==2||S[2]&128)return new Uint8Array(S);if(x!==(S[2]<<8|S[3]))return a(3,"wrong scanline width");const C=new Uint8Array(4*g*O);if(!C.length)return a(4,"unable to allocate buffer space");let p=0,w=0;const v=4*x,T=new Uint8Array(4),k=new Uint8Array(v);let Q=O;for(;Q>0&&w<S.byteLength;){if(w+4>S.byteLength)return a(1);if(T[0]=S[w++],T[1]=S[w++],T[2]=S[w++],T[3]=S[w++],T[0]!=2||T[1]!=2||(T[2]<<8|T[3])!=x)return a(3,"bad rgbe scanline format");let Y=0,$;for(;Y<v&&w<S.byteLength;){$=S[w++];const q=$>128;if(q&&($-=128),$===0||Y+$>v)return a(3,"bad scanline data");if(q){const Z=S[w++];for(let ie=0;ie<$;ie++)k[Y++]=Z}else k.set(S.subarray(w,w+$),Y),Y+=$,w+=$}const ee=x;for(let q=0;q<ee;q++){let Z=0;C[p]=k[q+Z],Z+=x,C[p+1]=k[q+Z],Z+=x,C[p+2]=k[q+Z],Z+=x,C[p+3]=k[q+Z],p+=4}Q--}return C},A=function(S,g,O,x){const C=S[g+3],p=Math.pow(2,C-128)/255;O[x+0]=S[g+0]*p,O[x+1]=S[g+1]*p,O[x+2]=S[g+2]*p,O[x+3]=1},_=function(S,g,O,x){const C=S[g+3],p=Math.pow(2,C-128)/255;O[x+0]=c.DataUtils.toHalfFloat(Math.min(S[g+0]*p,65504)),O[x+1]=c.DataUtils.toHalfFloat(Math.min(S[g+1]*p,65504)),O[x+2]=c.DataUtils.toHalfFloat(Math.min(S[g+2]*p,65504)),O[x+3]=c.DataUtils.toHalfFloat(1)},L=new Uint8Array(e);L.pos=0;const I=y(L);if(I!==-1){const S=I.width,g=I.height,O=b(L.subarray(L.pos),S,g);if(O!==-1){let x,C,p;switch(this.type){case c.FloatType:p=O.length/4;const w=new Float32Array(p*4);for(let T=0;T<p;T++)A(O,T*4,w,T*4);x=w,C=c.FloatType;break;case c.HalfFloatType:p=O.length/4;const v=new Uint16Array(p*4);for(let T=0;T<p;T++)_(O,T*4,v,T*4);x=v,C=c.HalfFloatType;break;default:console.error("THREE.RGBELoader: unsupported type: ",this.type);break}return{width:S,height:g,data:x,header:I.string,gamma:I.gamma,exposure:I.exposure,type:C}}}return null}setDataType(e){return this.type=e,this}load(e,t,n,i){function r(s,a){switch(s.type){case c.FloatType:case c.HalfFloatType:"colorSpace"in s?s.colorSpace="srgb-linear":s.encoding=3e3,s.minFilter=c.LinearFilter,s.magFilter=c.LinearFilter,s.generateMipmaps=!1,s.flipY=!0;break}t&&t(s,a)}return super.load(e,r,n,i)}}class Rt extends c.Loader{constructor(e){super(e),this.defaultDPI=90,this.defaultUnit="px"}load(e,t,n,i){const r=this,s=new c.FileLoader(r.manager);s.setPath(r.path),s.setRequestHeader(r.requestHeader),s.setWithCredentials(r.withCredentials),s.load(e,function(a){try{t(r.parse(a))}catch(l){i?i(l):console.error(l),r.manager.itemError(e)}},n,i)}parse(e){const t=this;function n(G,V){if(G.nodeType!==1)return;const M=g(G);let z=!0,H=null;switch(G.nodeName){case"svg":break;case"style":r(G);break;case"g":V=b(G,V);break;case"path":V=b(G,V),G.hasAttribute("d")&&(H=i(G));break;case"rect":V=b(G,V),H=l(G);break;case"polygon":V=b(G,V),H=f(G);break;case"polyline":V=b(G,V),H=u(G);break;case"circle":V=b(G,V),H=d(G);break;case"ellipse":V=b(G,V),H=m(G);break;case"line":V=b(G,V),H=y(G);break;case"defs":z=!1;break;case"mask":z=!1;break;case"use":V=b(G,V);const N=G.href.baseVal.substring(1),j=G.viewportElement.getElementById(N);j?n(j,V):console.warn("SVGLoader: 'use node' references non-existent node id: "+N);break}if(H&&(V.fill!==void 0&&V.fill!=="none"&&H.color.setStyle(V.fill),x(H,ie),v.push(H),H.userData={node:G,style:V}),z){const N=G.childNodes;for(let j=0;j<N.length;j++)n(N[j],V)}M&&(k.pop(),k.length>0?ie.copy(k[k.length-1]):ie.identity())}function i(G){const V=new c.ShapePath,M=new c.Vector2,z=new c.Vector2,H=new c.Vector2;let N=!0,j=!1;const D=G.getAttribute("d").match(/[a-df-z][^a-df-z]*/gi);for(let F=0,R=D.length;F<R;F++){const W=D[F],X=W.charAt(0),te=W.substr(1).trim();N===!0&&(j=!0,N=!1);let U;switch(X){case"M":U=_(te);for(let B=0,oe=U.length;B<oe;B+=2)M.x=U[B+0],M.y=U[B+1],z.x=M.x,z.y=M.y,B===0?V.moveTo(M.x,M.y):V.lineTo(M.x,M.y),B===0&&H.copy(M);break;case"H":U=_(te);for(let B=0,oe=U.length;B<oe;B++)M.x=U[B],z.x=M.x,z.y=M.y,V.lineTo(M.x,M.y),B===0&&j===!0&&H.copy(M);break;case"V":U=_(te);for(let B=0,oe=U.length;B<oe;B++)M.y=U[B],z.x=M.x,z.y=M.y,V.lineTo(M.x,M.y),B===0&&j===!0&&H.copy(M);break;case"L":U=_(te);for(let B=0,oe=U.length;B<oe;B+=2)M.x=U[B+0],M.y=U[B+1],z.x=M.x,z.y=M.y,V.lineTo(M.x,M.y),B===0&&j===!0&&H.copy(M);break;case"C":U=_(te);for(let B=0,oe=U.length;B<oe;B+=6)V.bezierCurveTo(U[B+0],U[B+1],U[B+2],U[B+3],U[B+4],U[B+5]),z.x=U[B+2],z.y=U[B+3],M.x=U[B+4],M.y=U[B+5],B===0&&j===!0&&H.copy(M);break;case"S":U=_(te);for(let B=0,oe=U.length;B<oe;B+=4)V.bezierCurveTo(A(M.x,z.x),A(M.y,z.y),U[B+0],U[B+1],U[B+2],U[B+3]),z.x=U[B+0],z.y=U[B+1],M.x=U[B+2],M.y=U[B+3],B===0&&j===!0&&H.copy(M);break;case"Q":U=_(te);for(let B=0,oe=U.length;B<oe;B+=4)V.quadraticCurveTo(U[B+0],U[B+1],U[B+2],U[B+3]),z.x=U[B+0],z.y=U[B+1],M.x=U[B+2],M.y=U[B+3],B===0&&j===!0&&H.copy(M);break;case"T":U=_(te);for(let B=0,oe=U.length;B<oe;B+=2){const le=A(M.x,z.x),me=A(M.y,z.y);V.quadraticCurveTo(le,me,U[B+0],U[B+1]),z.x=le,z.y=me,M.x=U[B+0],M.y=U[B+1],B===0&&j===!0&&H.copy(M)}break;case"A":U=_(te,[3,4],7);for(let B=0,oe=U.length;B<oe;B+=7){if(U[B+5]==M.x&&U[B+6]==M.y)continue;const le=M.clone();M.x=U[B+5],M.y=U[B+6],z.x=M.x,z.y=M.y,s(V,U[B],U[B+1],U[B+2],U[B+3],U[B+4],le,M),B===0&&j===!0&&H.copy(M)}break;case"m":U=_(te);for(let B=0,oe=U.length;B<oe;B+=2)M.x+=U[B+0],M.y+=U[B+1],z.x=M.x,z.y=M.y,B===0?V.moveTo(M.x,M.y):V.lineTo(M.x,M.y),B===0&&H.copy(M);break;case"h":U=_(te);for(let B=0,oe=U.length;B<oe;B++)M.x+=U[B],z.x=M.x,z.y=M.y,V.lineTo(M.x,M.y),B===0&&j===!0&&H.copy(M);break;case"v":U=_(te);for(let B=0,oe=U.length;B<oe;B++)M.y+=U[B],z.x=M.x,z.y=M.y,V.lineTo(M.x,M.y),B===0&&j===!0&&H.copy(M);break;case"l":U=_(te);for(let B=0,oe=U.length;B<oe;B+=2)M.x+=U[B+0],M.y+=U[B+1],z.x=M.x,z.y=M.y,V.lineTo(M.x,M.y),B===0&&j===!0&&H.copy(M);break;case"c":U=_(te);for(let B=0,oe=U.length;B<oe;B+=6)V.bezierCurveTo(M.x+U[B+0],M.y+U[B+1],M.x+U[B+2],M.y+U[B+3],M.x+U[B+4],M.y+U[B+5]),z.x=M.x+U[B+2],z.y=M.y+U[B+3],M.x+=U[B+4],M.y+=U[B+5],B===0&&j===!0&&H.copy(M);break;case"s":U=_(te);for(let B=0,oe=U.length;B<oe;B+=4)V.bezierCurveTo(A(M.x,z.x),A(M.y,z.y),M.x+U[B+0],M.y+U[B+1],M.x+U[B+2],M.y+U[B+3]),z.x=M.x+U[B+0],z.y=M.y+U[B+1],M.x+=U[B+2],M.y+=U[B+3],B===0&&j===!0&&H.copy(M);break;case"q":U=_(te);for(let B=0,oe=U.length;B<oe;B+=4)V.quadraticCurveTo(M.x+U[B+0],M.y+U[B+1],M.x+U[B+2],M.y+U[B+3]),z.x=M.x+U[B+0],z.y=M.y+U[B+1],M.x+=U[B+2],M.y+=U[B+3],B===0&&j===!0&&H.copy(M);break;case"t":U=_(te);for(let B=0,oe=U.length;B<oe;B+=2){const le=A(M.x,z.x),me=A(M.y,z.y);V.quadraticCurveTo(le,me,M.x+U[B+0],M.y+U[B+1]),z.x=le,z.y=me,M.x=M.x+U[B+0],M.y=M.y+U[B+1],B===0&&j===!0&&H.copy(M)}break;case"a":U=_(te,[3,4],7);for(let B=0,oe=U.length;B<oe;B+=7){if(U[B+5]==0&&U[B+6]==0)continue;const le=M.clone();M.x+=U[B+5],M.y+=U[B+6],z.x=M.x,z.y=M.y,s(V,U[B],U[B+1],U[B+2],U[B+3],U[B+4],le,M),B===0&&j===!0&&H.copy(M)}break;case"Z":case"z":V.currentPath.autoClose=!0,V.currentPath.curves.length>0&&(M.copy(H),V.currentPath.currentPoint.copy(M),N=!0);break;default:console.warn(W)}j=!1}return V}function r(G){if(!(!G.sheet||!G.sheet.cssRules||!G.sheet.cssRules.length))for(let V=0;V<G.sheet.cssRules.length;V++){const M=G.sheet.cssRules[V];if(M.type!==1)continue;const z=M.selectorText.split(/,/gm).filter(Boolean).map(H=>H.trim());for(let H=0;H<z.length;H++)T[z[H]]=Object.assign(T[z[H]]||{},M.style)}}function s(G,V,M,z,H,N,j,P){if(V==0||M==0){G.lineTo(P.x,P.y);return}z=z*Math.PI/180,V=Math.abs(V),M=Math.abs(M);const D=(j.x-P.x)/2,F=(j.y-P.y)/2,R=Math.cos(z)*D+Math.sin(z)*F,W=-Math.sin(z)*D+Math.cos(z)*F;let X=V*V,te=M*M;const U=R*R,B=W*W,oe=U/X+B/te;if(oe>1){const Vt=Math.sqrt(oe);V=Vt*V,M=Vt*M,X=V*V,te=M*M}const le=X*B+te*U,me=(X*te-le)/le;let _e=Math.sqrt(Math.max(0,me));H===N&&(_e=-_e);const we=_e*V*W/M,Ie=-_e*M*R/V,st=Math.cos(z)*we-Math.sin(z)*Ie+(j.x+P.x)/2,nn=Math.sin(z)*we+Math.cos(z)*Ie+(j.y+P.y)/2,Nt=a(1,0,(R-we)/V,(W-Ie)/M),We=a((R-we)/V,(W-Ie)/M,(-R-we)/V,(-W-Ie)/M)%(Math.PI*2);G.currentPath.absellipse(st,nn,V,M,Nt,Nt+We,N===0,z)}function a(G,V,M,z){const H=G*M+V*z,N=Math.sqrt(G*G+V*V)*Math.sqrt(M*M+z*z);let j=Math.acos(Math.max(-1,Math.min(1,H/N)));return G*z-V*M<0&&(j=-j),j}function l(G){const V=S(G.getAttribute("x")||0),M=S(G.getAttribute("y")||0),z=S(G.getAttribute("rx")||G.getAttribute("ry")||0),H=S(G.getAttribute("ry")||G.getAttribute("rx")||0),N=S(G.getAttribute("width")),j=S(G.getAttribute("height")),P=1-.551915024494,D=new c.ShapePath;return D.moveTo(V+z,M),D.lineTo(V+N-z,M),(z!==0||H!==0)&&D.bezierCurveTo(V+N-z*P,M,V+N,M+H*P,V+N,M+H),D.lineTo(V+N,M+j-H),(z!==0||H!==0)&&D.bezierCurveTo(V+N,M+j-H*P,V+N-z*P,M+j,V+N-z,M+j),D.lineTo(V+z,M+j),(z!==0||H!==0)&&D.bezierCurveTo(V+z*P,M+j,V,M+j-H*P,V,M+j-H),D.lineTo(V,M+H),(z!==0||H!==0)&&D.bezierCurveTo(V,M+H*P,V+z*P,M,V+z,M),D}function f(G){function V(N,j,P){const D=S(j),F=S(P);H===0?z.moveTo(D,F):z.lineTo(D,F),H++}const M=/(-?[\d\.?]+)[,|\s](-?[\d\.?]+)/g,z=new c.ShapePath;let H=0;return G.getAttribute("points").replace(M,V),z.currentPath.autoClose=!0,z}function u(G){function V(N,j,P){const D=S(j),F=S(P);H===0?z.moveTo(D,F):z.lineTo(D,F),H++}const M=/(-?[\d\.?]+)[,|\s](-?[\d\.?]+)/g,z=new c.ShapePath;let H=0;return G.getAttribute("points").replace(M,V),z.currentPath.autoClose=!1,z}function d(G){const V=S(G.getAttribute("cx")||0),M=S(G.getAttribute("cy")||0),z=S(G.getAttribute("r")||0),H=new c.Path;H.absarc(V,M,z,0,Math.PI*2);const N=new c.ShapePath;return N.subPaths.push(H),N}function m(G){const V=S(G.getAttribute("cx")||0),M=S(G.getAttribute("cy")||0),z=S(G.getAttribute("rx")||0),H=S(G.getAttribute("ry")||0),N=new c.Path;N.absellipse(V,M,z,H,0,Math.PI*2);const j=new c.ShapePath;return j.subPaths.push(N),j}function y(G){const V=S(G.getAttribute("x1")||0),M=S(G.getAttribute("y1")||0),z=S(G.getAttribute("x2")||0),H=S(G.getAttribute("y2")||0),N=new c.ShapePath;return N.moveTo(V,M),N.lineTo(z,H),N.currentPath.autoClose=!1,N}function b(G,V){V=Object.assign({},V);let M={};if(G.hasAttribute("class")){const j=G.getAttribute("class").split(/\s/).filter(Boolean).map(P=>P.trim());for(let P=0;P<j.length;P++)M=Object.assign(M,T["."+j[P]])}G.hasAttribute("id")&&(M=Object.assign(M,T["#"+G.getAttribute("id")]));function z(j,P,D){D===void 0&&(D=function(R){return R.startsWith("url")&&console.warn("SVGLoader: url access in attributes is not implemented."),R}),G.hasAttribute(j)&&(V[P]=D(G.getAttribute(j))),M[j]&&(V[P]=D(M[j])),G.style&&G.style[j]!==""&&(V[P]=D(G.style[j]))}function H(j){return Math.max(0,Math.min(1,S(j)))}function N(j){return Math.max(0,S(j))}return z("fill","fill"),z("fill-opacity","fillOpacity",H),z("fill-rule","fillRule"),z("opacity","opacity",H),z("stroke","stroke"),z("stroke-opacity","strokeOpacity",H),z("stroke-width","strokeWidth",N),z("stroke-linejoin","strokeLineJoin"),z("stroke-linecap","strokeLineCap"),z("stroke-miterlimit","strokeMiterLimit",N),z("visibility","visibility"),V}function A(G,V){return G-(V-G)}function _(G,V,M){if(typeof G!="string")throw new TypeError("Invalid input: "+typeof G);const z={SEPARATOR:/[ \t\r\n\,.\-+]/,WHITESPACE:/[ \t\r\n]/,DIGIT:/[\d]/,SIGN:/[-+]/,POINT:/\./,COMMA:/,/,EXP:/e/i,FLAGS:/[01]/},H=0,N=1,j=2,P=3;let D=H,F=!0,R="",W="";const X=[];function te(le,me,_e){const we=new SyntaxError('Unexpected character "'+le+'" at index '+me+".");throw we.partial=_e,we}function U(){R!==""&&(W===""?X.push(Number(R)):X.push(Number(R)*Math.pow(10,Number(W)))),R="",W=""}let B;const oe=G.length;for(let le=0;le<oe;le++){if(B=G[le],Array.isArray(V)&&V.includes(X.length%M)&&z.FLAGS.test(B)){D=N,R=B,U();continue}if(D===H){if(z.WHITESPACE.test(B))continue;if(z.DIGIT.test(B)||z.SIGN.test(B)){D=N,R=B;continue}if(z.POINT.test(B)){D=j,R=B;continue}z.COMMA.test(B)&&(F&&te(B,le,X),F=!0)}if(D===N){if(z.DIGIT.test(B)){R+=B;continue}if(z.POINT.test(B)){R+=B,D=j;continue}if(z.EXP.test(B)){D=P;continue}z.SIGN.test(B)&&R.length===1&&z.SIGN.test(R[0])&&te(B,le,X)}if(D===j){if(z.DIGIT.test(B)){R+=B;continue}if(z.EXP.test(B)){D=P;continue}z.POINT.test(B)&&R[R.length-1]==="."&&te(B,le,X)}if(D===P){if(z.DIGIT.test(B)){W+=B;continue}if(z.SIGN.test(B)){if(W===""){W+=B;continue}W.length===1&&z.SIGN.test(W)&&te(B,le,X)}}z.WHITESPACE.test(B)?(U(),D=H,F=!1):z.COMMA.test(B)?(U(),D=H,F=!0):z.SIGN.test(B)?(U(),D=N,R=B):z.POINT.test(B)?(U(),D=j,R=B):te(B,le,X)}return U(),X}const L=["mm","cm","in","pt","pc","px"],I={mm:{mm:1,cm:.1,in:1/25.4,pt:72/25.4,pc:6/25.4,px:-1},cm:{mm:10,cm:1,in:1/2.54,pt:72/2.54,pc:6/2.54,px:-1},in:{mm:25.4,cm:2.54,in:1,pt:72,pc:6,px:-1},pt:{mm:25.4/72,cm:2.54/72,in:1/72,pt:1,pc:6/72,px:-1},pc:{mm:25.4/6,cm:2.54/6,in:1/6,pt:72/6,pc:1,px:-1},px:{px:1}};function S(G){let V="px";if(typeof G=="string"||G instanceof String)for(let z=0,H=L.length;z<H;z++){const N=L[z];if(G.endsWith(N)){V=N,G=G.substring(0,G.length-N.length);break}}let M;return V==="px"&&t.defaultUnit!=="px"?M=I.in[t.defaultUnit]/t.defaultDPI:(M=I[V][t.defaultUnit],M<0&&(M=I[V].in*t.defaultDPI)),M*parseFloat(G)}function g(G){if(!(G.hasAttribute("transform")||G.nodeName==="use"&&(G.hasAttribute("x")||G.hasAttribute("y"))))return null;const V=O(G);return k.length>0&&V.premultiply(k[k.length-1]),ie.copy(V),k.push(V),V}function O(G){const V=new c.Matrix3,M=Q;if(G.nodeName==="use"&&(G.hasAttribute("x")||G.hasAttribute("y"))){const z=S(G.getAttribute("x")),H=S(G.getAttribute("y"));V.translate(z,H)}if(G.hasAttribute("transform")){const z=G.getAttribute("transform").split(")");for(let H=z.length-1;H>=0;H--){const N=z[H].trim();if(N==="")continue;const j=N.indexOf("("),P=N.length;if(j>0&&j<P){const D=N.substr(0,j),F=_(N.substr(j+1,P-j-1));switch(M.identity(),D){case"translate":if(F.length>=1){const R=F[0];let W=R;F.length>=2&&(W=F[1]),M.translate(R,W)}break;case"rotate":if(F.length>=1){let R=0,W=0,X=0;R=-F[0]*Math.PI/180,F.length>=3&&(W=F[1],X=F[2]),Y.identity().translate(-W,-X),$.identity().rotate(R),ee.multiplyMatrices($,Y),Y.identity().translate(W,X),M.multiplyMatrices(Y,ee)}break;case"scale":if(F.length>=1){const R=F[0];let W=R;F.length>=2&&(W=F[1]),M.scale(R,W)}break;case"skewX":F.length===1&&M.set(1,Math.tan(F[0]*Math.PI/180),0,0,1,0,0,0,1);break;case"skewY":F.length===1&&M.set(1,0,0,Math.tan(F[0]*Math.PI/180),1,0,0,0,1);break;case"matrix":F.length===6&&M.set(F[0],F[2],F[4],F[1],F[3],F[5],0,0,1);break}}V.premultiply(M)}}return V}function x(G,V){function M(N){Z.set(N.x,N.y,1).applyMatrix3(V),N.set(Z.x,Z.y)}const z=C(V),H=G.subPaths;for(let N=0,j=H.length;N<j;N++){const D=H[N].curves;for(let F=0;F<D.length;F++){const R=D[F];R.isLineCurve?(M(R.v1),M(R.v2)):R.isCubicBezierCurve?(M(R.v0),M(R.v1),M(R.v2),M(R.v3)):R.isQuadraticBezierCurve?(M(R.v0),M(R.v1),M(R.v2)):R.isEllipseCurve&&(z&&console.warn("SVGLoader: Elliptic arc or ellipse rotation or skewing is not implemented."),q.set(R.aX,R.aY),M(q),R.aX=q.x,R.aY=q.y,R.xRadius*=p(V),R.yRadius*=w(V))}}}function C(G){return G.elements[1]!==0||G.elements[3]!==0}function p(G){const V=G.elements;return Math.sqrt(V[0]*V[0]+V[1]*V[1])}function w(G){const V=G.elements;return Math.sqrt(V[3]*V[3]+V[4]*V[4])}const v=[],T={},k=[],Q=new c.Matrix3,Y=new c.Matrix3,$=new c.Matrix3,ee=new c.Matrix3,q=new c.Vector2,Z=new c.Vector3,ie=new c.Matrix3,ne=new DOMParser().parseFromString(e,"image/svg+xml");return n(ne.documentElement,{fill:"#000",fillOpacity:1,strokeOpacity:1,strokeWidth:1,strokeLineJoin:"miter",strokeLineCap:"butt",strokeMiterLimit:4}),{paths:v,xml:ne.documentElement}}static createShapes(e){const n={ORIGIN:0,DESTINATION:1,BETWEEN:2,LEFT:3,RIGHT:4,BEHIND:5,BEYOND:6},i={loc:n.ORIGIN,t:0};function r(_,L,I,S){const g=_.x,O=L.x,x=I.x,C=S.x,p=_.y,w=L.y,v=I.y,T=S.y,k=(C-x)*(p-v)-(T-v)*(g-x),Q=(O-g)*(p-v)-(w-p)*(g-x),Y=(T-v)*(O-g)-(C-x)*(w-p),$=k/Y,ee=Q/Y;if(Y===0&&k!==0||$<=0||$>=1||ee<0||ee>1)return null;if(k===0&&Y===0){for(let q=0;q<2;q++)if(s(q===0?I:S,_,L),i.loc==n.ORIGIN){const Z=q===0?I:S;return{x:Z.x,y:Z.y,t:i.t}}else if(i.loc==n.BETWEEN){const Z=+(g+i.t*(O-g)).toPrecision(10),ie=+(p+i.t*(w-p)).toPrecision(10);return{x:Z,y:ie,t:i.t}}return null}else{for(let ie=0;ie<2;ie++)if(s(ie===0?I:S,_,L),i.loc==n.ORIGIN){const ne=ie===0?I:S;return{x:ne.x,y:ne.y,t:i.t}}const q=+(g+$*(O-g)).toPrecision(10),Z=+(p+$*(w-p)).toPrecision(10);return{x:q,y:Z,t:$}}}function s(_,L,I){const S=I.x-L.x,g=I.y-L.y,O=_.x-L.x,x=_.y-L.y,C=S*x-O*g;if(_.x===L.x&&_.y===L.y){i.loc=n.ORIGIN,i.t=0;return}if(_.x===I.x&&_.y===I.y){i.loc=n.DESTINATION,i.t=1;return}if(C<-Number.EPSILON){i.loc=n.LEFT;return}if(C>Number.EPSILON){i.loc=n.RIGHT;return}if(S*O<0||g*x<0){i.loc=n.BEHIND;return}if(Math.sqrt(S*S+g*g)<Math.sqrt(O*O+x*x)){i.loc=n.BEYOND;return}let p;S!==0?p=O/S:p=x/g,i.loc=n.BETWEEN,i.t=p}function a(_,L){const I=[],S=[];for(let g=1;g<_.length;g++){const O=_[g-1],x=_[g];for(let C=1;C<L.length;C++){const p=L[C-1],w=L[C],v=r(O,x,p,w);v!==null&&I.find(T=>T.t<=v.t+Number.EPSILON&&T.t>=v.t-Number.EPSILON)===void 0&&(I.push(v),S.push(new c.Vector2(v.x,v.y)))}}return S}function l(_,L,I){const S=new c.Vector2;L.getCenter(S);const g=[];return I.forEach(O=>{O.boundingBox.containsPoint(S)&&a(_,O.points).forEach(C=>{g.push({identifier:O.identifier,isCW:O.isCW,point:C})})}),g.sort((O,x)=>O.point.x-x.point.x),g}function f(_,L,I,S,g){(g==null||g==="")&&(g="nonzero");const O=new c.Vector2;_.boundingBox.getCenter(O);const x=[new c.Vector2(I,O.y),new c.Vector2(S,O.y)],C=l(x,_.boundingBox,L);C.sort((Q,Y)=>Q.point.x-Y.point.x);const p=[],w=[];C.forEach(Q=>{Q.identifier===_.identifier?p.push(Q):w.push(Q)});const v=p[0].point.x,T=[];let k=0;for(;k<w.length&&w[k].point.x<v;)T.length>0&&T[T.length-1]===w[k].identifier?T.pop():T.push(w[k].identifier),k++;if(T.push(_.identifier),g==="evenodd"){const Q=T.length%2===0,Y=T[T.length-2];return{identifier:_.identifier,isHole:Q,for:Y}}else if(g==="nonzero"){let Q=!0,Y=null,$=null;for(let ee=0;ee<T.length;ee++){const q=T[ee];Q?($=L[q].isCW,Q=!1,Y=q):$!==L[q].isCW&&($=L[q].isCW,Q=!0)}return{identifier:_.identifier,isHole:Q,for:Y}}else console.warn('fill-rule: "'+g+'" is currently not implemented.')}let u=0,d=999999999,m=-999999999,y=e.subPaths.map(_=>{const L=_.getPoints();let I=-999999999,S=999999999,g=-999999999,O=999999999;for(let x=0;x<L.length;x++){const C=L[x];C.y>I&&(I=C.y),C.y<S&&(S=C.y),C.x>g&&(g=C.x),C.x<O&&(O=C.x)}return m<=g&&(m=g+1),d>=O&&(d=O-1),{curves:_.curves,points:L,isCW:c.ShapeUtils.isClockWise(L),identifier:u++,boundingBox:new c.Box2(new c.Vector2(O,S),new c.Vector2(g,I))}});y=y.filter(_=>_.points.length>1);const b=y.map(_=>f(_,y,d,m,e.userData.style.fillRule)),A=[];return y.forEach(_=>{if(!b[_.identifier].isHole){const I=new c.Shape;I.curves=_.curves,b.filter(g=>g.isHole&&g.for===_.identifier).forEach(g=>{const O=y[g.identifier],x=new c.Path;x.curves=O.curves,I.holes.push(x)}),A.push(I)}}),A}static getStrokeStyle(e,t,n,i,r){return e=e!==void 0?e:1,t=t!==void 0?t:"#000",n=n!==void 0?n:"miter",i=i!==void 0?i:"butt",r=r!==void 0?r:4,{strokeColor:t,strokeWidth:e,strokeLineJoin:n,strokeLineCap:i,strokeMiterLimit:r}}static pointsToStroke(e,t,n,i){const r=[],s=[],a=[];if(Rt.pointsToStrokeWithBuffers(e,t,n,i,r,s,a)===0)return null;const l=new c.BufferGeometry;return l.setAttribute("position",new c.Float32BufferAttribute(r,3)),l.setAttribute("normal",new c.Float32BufferAttribute(s,3)),l.setAttribute("uv",new c.Float32BufferAttribute(a,2)),l}static pointsToStrokeWithBuffers(e,t,n,i,r,s,a,l){const f=new c.Vector2,u=new c.Vector2,d=new c.Vector2,m=new c.Vector2,y=new c.Vector2,b=new c.Vector2,A=new c.Vector2,_=new c.Vector2,L=new c.Vector2,I=new c.Vector2,S=new c.Vector2,g=new c.Vector2,O=new c.Vector2,x=new c.Vector2,C=new c.Vector2,p=new c.Vector2,w=new c.Vector2;n=n!==void 0?n:12,i=i!==void 0?i:.001,l=l!==void 0?l:0,e=W(e);const v=e.length;if(v<2)return 0;const T=e[0].equals(e[v-1]);let k,Q=e[0],Y;const $=t.strokeWidth/2,ee=1/(v-1);let q=0,Z,ie,ne,ce,G=!1,V=0,M=l*3,z=l*2;H(e[0],e[1],f).multiplyScalar($),_.copy(e[0]).sub(f),L.copy(e[0]).add(f),I.copy(_),S.copy(L);for(let X=1;X<v;X++){k=e[X],X===v-1?T?Y=e[1]:Y=void 0:Y=e[X+1];const te=f;if(H(Q,k,te),d.copy(te).multiplyScalar($),g.copy(k).sub(d),O.copy(k).add(d),Z=q+ee,ie=!1,Y!==void 0){H(k,Y,u),d.copy(u).multiplyScalar($),x.copy(k).sub(d),C.copy(k).add(d),ne=!0,d.subVectors(Y,Q),te.dot(d)<0&&(ne=!1),X===1&&(G=ne),d.subVectors(Y,k),d.normalize();const U=Math.abs(te.dot(d));if(U!==0){const B=$/U;d.multiplyScalar(-B),m.subVectors(k,Q),y.copy(m).setLength(B).add(d),p.copy(y).negate();const oe=y.length(),le=m.length();m.divideScalar(le),b.subVectors(Y,k);const me=b.length();switch(b.divideScalar(me),m.dot(p)<le&&b.dot(p)<me&&(ie=!0),w.copy(y).add(k),p.add(k),ce=!1,ie?ne?(C.copy(p),O.copy(p)):(x.copy(p),g.copy(p)):P(),t.strokeLineJoin){case"bevel":D(ne,ie,Z);break;case"round":F(ne,ie),ne?j(k,g,x,Z,0):j(k,C,O,Z,1);break;case"miter":case"miter-clip":default:const _e=$*t.strokeMiterLimit/oe;if(_e<1)if(t.strokeLineJoin!=="miter-clip"){D(ne,ie,Z);break}else F(ne,ie),ne?(b.subVectors(w,g).multiplyScalar(_e).add(g),A.subVectors(w,x).multiplyScalar(_e).add(x),N(g,Z,0),N(b,Z,0),N(k,Z,.5),N(k,Z,.5),N(b,Z,0),N(A,Z,0),N(k,Z,.5),N(A,Z,0),N(x,Z,0)):(b.subVectors(w,O).multiplyScalar(_e).add(O),A.subVectors(w,C).multiplyScalar(_e).add(C),N(O,Z,1),N(b,Z,1),N(k,Z,.5),N(k,Z,.5),N(b,Z,1),N(A,Z,1),N(k,Z,.5),N(A,Z,1),N(C,Z,1));else ie?(ne?(N(L,q,1),N(_,q,0),N(w,Z,0),N(L,q,1),N(w,Z,0),N(p,Z,1)):(N(L,q,1),N(_,q,0),N(w,Z,1),N(_,q,0),N(p,Z,0),N(w,Z,1)),ne?x.copy(w):C.copy(w)):ne?(N(g,Z,0),N(w,Z,0),N(k,Z,.5),N(k,Z,.5),N(w,Z,0),N(x,Z,0)):(N(O,Z,1),N(w,Z,1),N(k,Z,.5),N(k,Z,.5),N(w,Z,1),N(C,Z,1)),ce=!0;break}}else P()}else P();!T&&X===v-1&&R(e[0],I,S,ne,!0,q),q=Z,Q=k,_.copy(x),L.copy(C)}if(!T)R(k,g,O,ne,!1,Z);else if(ie&&r){let X=w,te=p;G!==ne&&(X=p,te=w),ne?(ce||G)&&(te.toArray(r,0*3),te.toArray(r,3*3),ce&&X.toArray(r,1*3)):(ce||!G)&&(te.toArray(r,1*3),te.toArray(r,3*3),ce&&X.toArray(r,0*3))}return V;function H(X,te,U){return U.subVectors(te,X),U.set(-U.y,U.x).normalize()}function N(X,te,U){r&&(r[M]=X.x,r[M+1]=X.y,r[M+2]=0,s&&(s[M]=0,s[M+1]=0,s[M+2]=1),M+=3,a&&(a[z]=te,a[z+1]=U,z+=2)),V+=3}function j(X,te,U,B,oe){f.copy(te).sub(X).normalize(),u.copy(U).sub(X).normalize();let le=Math.PI;const me=f.dot(u);Math.abs(me)<1&&(le=Math.abs(Math.acos(me))),le/=n,d.copy(te);for(let _e=0,we=n-1;_e<we;_e++)m.copy(d).rotateAround(X,le),N(d,B,oe),N(m,B,oe),N(X,B,.5),d.copy(m);N(m,B,oe),N(U,B,oe),N(X,B,.5)}function P(){N(L,q,1),N(_,q,0),N(g,Z,0),N(L,q,1),N(g,Z,1),N(O,Z,0)}function D(X,te,U){te?X?(N(L,q,1),N(_,q,0),N(g,Z,0),N(L,q,1),N(g,Z,0),N(p,Z,1),N(g,U,0),N(x,U,0),N(p,U,.5)):(N(L,q,1),N(_,q,0),N(O,Z,1),N(_,q,0),N(p,Z,0),N(O,Z,1),N(O,U,1),N(C,U,0),N(p,U,.5)):X?(N(g,U,0),N(x,U,0),N(k,U,.5)):(N(O,U,1),N(C,U,0),N(k,U,.5))}function F(X,te){te&&(X?(N(L,q,1),N(_,q,0),N(g,Z,0),N(L,q,1),N(g,Z,0),N(p,Z,1),N(g,q,0),N(k,Z,.5),N(p,Z,1),N(k,Z,.5),N(x,q,0),N(p,Z,1)):(N(L,q,1),N(_,q,0),N(O,Z,1),N(_,q,0),N(p,Z,0),N(O,Z,1),N(O,q,1),N(p,Z,0),N(k,Z,.5),N(k,Z,.5),N(p,Z,0),N(C,q,1)))}function R(X,te,U,B,oe,le){switch(t.strokeLineCap){case"round":oe?j(X,U,te,le,.5):j(X,te,U,le,.5);break;case"square":if(oe)f.subVectors(te,X),u.set(f.y,-f.x),d.addVectors(f,u).add(X),m.subVectors(u,f).add(X),B?(d.toArray(r,1*3),m.toArray(r,0*3),m.toArray(r,3*3)):(d.toArray(r,1*3),d.toArray(r,3*3),m.toArray(r,0*3));else{f.subVectors(U,X),u.set(f.y,-f.x),d.addVectors(f,u).add(X),m.subVectors(u,f).add(X);const me=r.length;B?(d.toArray(r,me-1*3),m.toArray(r,me-2*3),m.toArray(r,me-4*3)):(d.toArray(r,me-2*3),m.toArray(r,me-1*3),m.toArray(r,me-4*3))}break}}function W(X){let te=!1;for(let B=1,oe=X.length-1;B<oe;B++)if(X[B].distanceTo(X[B+1])<i){te=!0;break}if(!te)return X;const U=[];U.push(X[0]);for(let B=1,oe=X.length-1;B<oe;B++)X[B].distanceTo(X[B+1])>=i&&U.push(X[B]);return U.push(X[X.length-1]),U}}}const Xn=new WeakMap;class sa extends c.Loader{constructor(e){super(e),this.decoderPath="",this.decoderConfig={},this.decoderBinary=null,this.decoderPending=null,this.workerLimit=4,this.workerPool=[],this.workerNextTaskID=1,this.workerSourceURL="",this.defaultAttributeIDs={position:"POSITION",normal:"NORMAL",color:"COLOR",uv:"TEX_COORD"},this.defaultAttributeTypes={position:"Float32Array",normal:"Float32Array",color:"Float32Array",uv:"Float32Array"}}setDecoderPath(e){return this.decoderPath=e,this}setDecoderConfig(e){return this.decoderConfig=e,this}setWorkerLimit(e){return this.workerLimit=e,this}load(e,t,n,i){const r=new c.FileLoader(this.manager);r.setPath(this.path),r.setResponseType("arraybuffer"),r.setRequestHeader(this.requestHeader),r.setWithCredentials(this.withCredentials),r.load(e,s=>{const a={attributeIDs:this.defaultAttributeIDs,attributeTypes:this.defaultAttributeTypes,useUniqueIDs:!1};this.decodeGeometry(s,a).then(t).catch(i)},n,i)}decodeDracoFile(e,t,n,i){const r={attributeIDs:n||this.defaultAttributeIDs,attributeTypes:i||this.defaultAttributeTypes,useUniqueIDs:!!n};this.decodeGeometry(e,r).then(t)}decodeGeometry(e,t){for(const l in t.attributeTypes){const f=t.attributeTypes[l];f.BYTES_PER_ELEMENT!==void 0&&(t.attributeTypes[l]=f.name)}const n=JSON.stringify(t);if(Xn.has(e)){const l=Xn.get(e);if(l.key===n)return l.promise;if(e.byteLength===0)throw new Error("THREE.DRACOLoader: Unable to re-decode a buffer with different settings. Buffer has already been transferred.")}let i;const r=this.workerNextTaskID++,s=e.byteLength,a=this._getWorker(r,s).then(l=>(i=l,new Promise((f,u)=>{i._callbacks[r]={resolve:f,reject:u},i.postMessage({type:"decode",id:r,taskConfig:t,buffer:e},[e])}))).then(l=>this._createGeometry(l.geometry));return a.catch(()=>!0).then(()=>{i&&r&&this._releaseTask(i,r)}),Xn.set(e,{key:n,promise:a}),a}_createGeometry(e){const t=new c.BufferGeometry;e.index&&t.setIndex(new c.BufferAttribute(e.index.array,1));for(let n=0;n<e.attributes.length;n++){const i=e.attributes[n],r=i.name,s=i.array,a=i.itemSize;t.setAttribute(r,new c.BufferAttribute(s,a))}return t}_loadLibrary(e,t){const n=new c.FileLoader(this.manager);return n.setPath(this.decoderPath),n.setResponseType(t),n.setWithCredentials(this.withCredentials),new Promise((i,r)=>{n.load(e,i,void 0,r)})}preload(){return this._initDecoder(),this}_initDecoder(){if(this.decoderPending)return this.decoderPending;const e=typeof WebAssembly!="object"||this.decoderConfig.type==="js",t=[];return e?t.push(this._loadLibrary("draco_decoder.js","text")):(t.push(this._loadLibrary("draco_wasm_wrapper.js","text")),t.push(this._loadLibrary("draco_decoder.wasm","arraybuffer"))),this.decoderPending=Promise.all(t).then(n=>{const i=n[0];e||(this.decoderConfig.wasmBinary=n[1]);const r=oa.toString(),s=["/* draco decoder */",i,"","/* worker */",r.substring(r.indexOf("{")+1,r.lastIndexOf("}"))].join(`
|
|
79
|
+
`);this.workerSourceURL=URL.createObjectURL(new Blob([s]))}),this.decoderPending}_getWorker(e,t){return this._initDecoder().then(()=>{if(this.workerPool.length<this.workerLimit){const i=new Worker(this.workerSourceURL);i._callbacks={},i._taskCosts={},i._taskLoad=0,i.postMessage({type:"init",decoderConfig:this.decoderConfig}),i.onmessage=function(r){const s=r.data;switch(s.type){case"decode":i._callbacks[s.id].resolve(s);break;case"error":i._callbacks[s.id].reject(s);break;default:console.error('THREE.DRACOLoader: Unexpected message, "'+s.type+'"')}},this.workerPool.push(i)}else this.workerPool.sort(function(i,r){return i._taskLoad>r._taskLoad?-1:1});const n=this.workerPool[this.workerPool.length-1];return n._taskCosts[e]=t,n._taskLoad+=t,n})}_releaseTask(e,t){e._taskLoad-=e._taskCosts[t],delete e._callbacks[t],delete e._taskCosts[t]}debug(){console.log("Task load: ",this.workerPool.map(e=>e._taskLoad))}dispose(){for(let e=0;e<this.workerPool.length;++e)this.workerPool[e].terminate();return this.workerPool.length=0,this}}function oa(){let o,e;onmessage=function(s){const a=s.data;switch(a.type){case"init":o=a.decoderConfig,e=new Promise(function(u){o.onModuleLoaded=function(d){u({draco:d})},DracoDecoderModule(o)});break;case"decode":const l=a.buffer,f=a.taskConfig;e.then(u=>{const d=u.draco,m=new d.Decoder,y=new d.DecoderBuffer;y.Init(new Int8Array(l),l.byteLength);try{const b=t(d,m,y,f),A=b.attributes.map(_=>_.array.buffer);b.index&&A.push(b.index.array.buffer),self.postMessage({type:"decode",id:a.id,geometry:b},A)}catch(b){console.error(b),self.postMessage({type:"error",id:a.id,error:b.message})}finally{d.destroy(y),d.destroy(m)}});break}};function t(s,a,l,f){const u=f.attributeIDs,d=f.attributeTypes;let m,y;const b=a.GetEncodedGeometryType(l);if(b===s.TRIANGULAR_MESH)m=new s.Mesh,y=a.DecodeBufferToMesh(l,m);else if(b===s.POINT_CLOUD)m=new s.PointCloud,y=a.DecodeBufferToPointCloud(l,m);else throw new Error("THREE.DRACOLoader: Unexpected geometry type.");if(!y.ok()||m.ptr===0)throw new Error("THREE.DRACOLoader: Decoding failed: "+y.error_msg());const A={index:null,attributes:[]};for(const _ in u){const L=self[d[_]];let I,S;if(f.useUniqueIDs)S=u[_],I=a.GetAttributeByUniqueId(m,S);else{if(S=a.GetAttributeId(m,s[u[_]]),S===-1)continue;I=a.GetAttribute(m,S)}A.attributes.push(i(s,a,m,_,L,I))}return b===s.TRIANGULAR_MESH&&(A.index=n(s,a,m)),s.destroy(m),A}function n(s,a,l){const u=l.num_faces()*3,d=u*4,m=s._malloc(d);a.GetTrianglesUInt32Array(l,d,m);const y=new Uint32Array(s.HEAPF32.buffer,m,u).slice();return s._free(m),{array:y,itemSize:1}}function i(s,a,l,f,u,d){const m=d.num_components(),b=l.num_points()*m,A=b*u.BYTES_PER_ELEMENT,_=r(s,u),L=s._malloc(A);a.GetAttributeDataArrayForAllPoints(l,d,_,A,L);const I=new u(s.HEAPF32.buffer,L,b).slice();return s._free(L),{name:f,array:I,itemSize:m}}function r(s,a){switch(a){case Float32Array:return s.DT_FLOAT32;case Int8Array:return s.DT_INT8;case Int16Array:return s.DT_INT16;case Int32Array:return s.DT_INT32;case Uint8Array:return s.DT_UINT8;case Uint16Array:return s.DT_UINT16;case Uint32Array:return s.DT_UINT32}}}class tr extends c.Line{constructor(e,t){const n=[1,1,0,-1,1,0,-1,-1,0,1,-1,0,1,1,0],i=new c.BufferGeometry;i.setAttribute("position",new c.Float32BufferAttribute(n,3)),i.computeBoundingSphere();const r=new c.LineBasicMaterial({fog:!1});super(i,r),this.light=e,this.color=t,this.type="RectAreaLightHelper";const s=[1,1,0,-1,1,0,-1,-1,0,1,1,0,-1,-1,0,1,-1,0],a=new c.BufferGeometry;a.setAttribute("position",new c.Float32BufferAttribute(s,3)),a.computeBoundingSphere(),this.add(new c.Mesh(a,new c.MeshBasicMaterial({side:c.BackSide,fog:!1})))}updateMatrixWorld(){if(this.scale.set(.5*this.light.width,.5*this.light.height,1),this.color!==void 0)this.material.color.set(this.color),this.children[0].material.color.set(this.color);else{this.material.color.copy(this.light.color).multiplyScalar(this.light.intensity);const e=this.material.color,t=Math.max(e.r,e.g,e.b);t>1&&e.multiplyScalar(1/t),this.children[0].material.color.copy(this.material.color)}this.matrixWorld.extractRotation(this.light.matrixWorld).scale(this.scale).copyPosition(this.light.matrixWorld),this.children[0].matrixWorld.copy(this.matrixWorld)}dispose(){this.geometry.dispose(),this.material.dispose(),this.children[0].geometry.dispose(),this.children[0].material.dispose()}}const aa=["args","center"],la=h.defineComponent({__name:"Text3D",props:{font:{},text:{},size:{default:.5},height:{default:.2},curveSegments:{default:5},bevelEnabled:{type:Boolean,default:!0},bevelThickness:{default:.05},bevelSize:{default:.02},bevelOffset:{default:0},bevelSegments:{default:4},center:{type:Boolean,default:!1},needUpdates:{type:Boolean,default:!1}},async setup(o,{expose:e}){let t,n;const i=o,{center:r,font:s,text:a,needUpdates:l,size:f,height:u,curveSegments:d,bevelEnabled:m,bevelThickness:y,bevelSize:b,bevelOffset:A,bevelSegments:_}=h.toRefs(i),{extend:L}=ae.useTresContext();L({TextGeometry:Yi});const I=new na,S=h.useSlots(),g=h.computed(()=>{var p;return a!=null&&a.value?a.value:S.default?(p=S.default()[0].children)==null?void 0:p.trim():l.value?"":"TresJS"}),O=h.shallowRef();e({value:O});const x=([t,n]=h.withAsyncContext(()=>new Promise((p,w)=>{try{typeof s.value=="string"?I.load(s.value,v=>{p(v)}):p(s.value)}catch(v){w(console.error("cientos",v))}})),t=await t,n(),t),C=h.computed(()=>({font:x,size:h.toValue(f),height:h.toValue(u),curveSegments:h.toValue(d),bevelEnabled:h.toValue(m),bevelThickness:h.toValue(y),bevelSize:h.toValue(b),bevelOffset:h.toValue(A),bevelSegments:h.toValue(_)}));return h.watchEffect(()=>{O.value&&l.value&&(O.value.geometry.dispose(),O.value.geometry=new Yi(g.value,C.value),r.value&&O.value.geometry.center())}),(p,w)=>h.unref(s)?(h.openBlock(),h.createElementBlock("TresMesh",{key:0,ref_key:"text3DRef",ref:O},[g.value?(h.openBlock(),h.createElementBlock("TresTextGeometry",{key:0,args:[g.value,C.value],center:h.unref(r)},null,8,aa)):h.createCommentVNode("",!0),h.renderSlot(p.$slots,"default")],512)):h.createCommentVNode("",!0)}});function ca(o,e){const t=h.ref(e),n=new c.AnimationMixer(t.value),i=h.shallowReactive({});o.forEach(s=>{const a=n.clipAction(s,t.value);i[s.name]=a});const{onLoop:r}=ae.useRenderLoop();return r(({delta:s})=>{n.update(s)}),{actions:i,mixer:n}}const ha=h.defineComponent({__name:"Levioso",props:{speed:{default:1},rotationFactor:{default:1},floatFactor:{default:1},range:{default:()=>[-.1,.1]}},setup(o,{expose:e}){const t=o,n=h.shallowRef();e({value:n});{const l=Math.random()*1e4,{onLoop:f}=ae.useRenderLoop();let u=l;f(({delta:d})=>{if(!n.value)return;u+=d*t.speed;const m=u*.25,y=n.value;y.rotation.x=Math.cos(m)*.125*t.rotationFactor,y.rotation.y=Math.sin(m)*.125*t.rotationFactor,y.rotation.z=Math.sin(m)*.05*t.rotationFactor,y.position.y=c.MathUtils.mapLinear(Math.sin(m),-1,1,t.range[0],t.range[1])*t.floatFactor})}return(i,r)=>(h.openBlock(),h.createElementBlock("TresGroup",h.mergeProps(i.$attrs,{ref_key:"groupRef",ref:n}),[h.renderSlot(i.$slots,"default")],16))}});class Et extends c.Mesh{constructor(e,t={}){super(e),this.isReflector=!0,this.type="Reflector",this.camera=new c.PerspectiveCamera;const n=this,i=t.color!==void 0?new c.Color(t.color):new c.Color(8355711),r=t.textureWidth||512,s=t.textureHeight||512,a=t.clipBias||0,l=t.shader||Et.ReflectorShader,f=t.multisample!==void 0?t.multisample:4,u=new c.Plane,d=new c.Vector3,m=new c.Vector3,y=new c.Vector3,b=new c.Matrix4,A=new c.Vector3(0,0,-1),_=new c.Vector4,L=new c.Vector3,I=new c.Vector3,S=new c.Vector4,g=new c.Matrix4,O=this.camera,x=new c.WebGLRenderTarget(r,s,{samples:f,type:c.HalfFloatType}),C=new c.ShaderMaterial({name:l.name!==void 0?l.name:"unspecified",uniforms:c.UniformsUtils.clone(l.uniforms),fragmentShader:l.fragmentShader,vertexShader:l.vertexShader});C.uniforms.tDiffuse.value=x.texture,C.uniforms.color.value=i,C.uniforms.textureMatrix.value=g,this.material=C,this.onBeforeRender=function(p,w,v){if(m.setFromMatrixPosition(n.matrixWorld),y.setFromMatrixPosition(v.matrixWorld),b.extractRotation(n.matrixWorld),d.set(0,0,1),d.applyMatrix4(b),L.subVectors(m,y),L.dot(d)>0)return;L.reflect(d).negate(),L.add(m),b.extractRotation(v.matrixWorld),A.set(0,0,-1),A.applyMatrix4(b),A.add(y),I.subVectors(m,A),I.reflect(d).negate(),I.add(m),O.position.copy(L),O.up.set(0,1,0),O.up.applyMatrix4(b),O.up.reflect(d),O.lookAt(I),O.far=v.far,O.updateMatrixWorld(),O.projectionMatrix.copy(v.projectionMatrix),g.set(.5,0,0,.5,0,.5,0,.5,0,0,.5,.5,0,0,0,1),g.multiply(O.projectionMatrix),g.multiply(O.matrixWorldInverse),g.multiply(n.matrixWorld),u.setFromNormalAndCoplanarPoint(d,m),u.applyMatrix4(O.matrixWorldInverse),_.set(u.normal.x,u.normal.y,u.normal.z,u.constant);const T=O.projectionMatrix;S.x=(Math.sign(_.x)+T.elements[8])/T.elements[0],S.y=(Math.sign(_.y)+T.elements[9])/T.elements[5],S.z=-1,S.w=(1+T.elements[10])/T.elements[14],_.multiplyScalar(2/_.dot(S)),T.elements[2]=_.x,T.elements[6]=_.y,T.elements[10]=_.z+1-a,T.elements[14]=_.w,n.visible=!1;const k=p.getRenderTarget(),Q=p.xr.enabled,Y=p.shadowMap.autoUpdate;p.xr.enabled=!1,p.shadowMap.autoUpdate=!1,p.setRenderTarget(x),p.state.buffers.depth.setMask(!0),p.autoClear===!1&&p.clear(),p.render(w,O),p.xr.enabled=Q,p.shadowMap.autoUpdate=Y,p.setRenderTarget(k);const $=v.viewport;$!==void 0&&p.state.viewport($),n.visible=!0},this.getRenderTarget=function(){return x},this.dispose=function(){x.dispose(),n.material.dispose()}}}Et.ReflectorShader={name:"ReflectorShader",uniforms:{color:{value:null},tDiffuse:{value:null},textureMatrix:{value:null}},vertexShader:`
|
|
80
|
+
uniform mat4 textureMatrix;
|
|
81
|
+
varying vec4 vUv;
|
|
82
|
+
|
|
83
|
+
#include <common>
|
|
84
|
+
#include <logdepthbuf_pars_vertex>
|
|
85
|
+
|
|
86
|
+
void main() {
|
|
87
|
+
|
|
88
|
+
vUv = textureMatrix * vec4( position, 1.0 );
|
|
89
|
+
|
|
90
|
+
gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );
|
|
91
|
+
|
|
92
|
+
#include <logdepthbuf_vertex>
|
|
93
|
+
|
|
94
|
+
}`,fragmentShader:`
|
|
95
|
+
uniform vec3 color;
|
|
96
|
+
uniform sampler2D tDiffuse;
|
|
97
|
+
varying vec4 vUv;
|
|
98
|
+
|
|
99
|
+
#include <logdepthbuf_pars_fragment>
|
|
100
|
+
|
|
101
|
+
float blendOverlay( float base, float blend ) {
|
|
102
|
+
|
|
103
|
+
return( base < 0.5 ? ( 2.0 * base * blend ) : ( 1.0 - 2.0 * ( 1.0 - base ) * ( 1.0 - blend ) ) );
|
|
104
|
+
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
vec3 blendOverlay( vec3 base, vec3 blend ) {
|
|
108
|
+
|
|
109
|
+
return vec3( blendOverlay( base.r, blend.r ), blendOverlay( base.g, blend.g ), blendOverlay( base.b, blend.b ) );
|
|
110
|
+
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
void main() {
|
|
114
|
+
|
|
115
|
+
#include <logdepthbuf_fragment>
|
|
116
|
+
|
|
117
|
+
vec4 base = texture2DProj( tDiffuse, vUv );
|
|
118
|
+
gl_FragColor = vec4( blendOverlay( base.rgb, color ), 1.0 );
|
|
119
|
+
|
|
120
|
+
#include <tonemapping_fragment>
|
|
121
|
+
#include <colorspace_fragment>
|
|
122
|
+
|
|
123
|
+
}`};const ua=["args","material-uniforms-color-value"],fa=h.createElementVNode("TresPlaneGeometry",{args:[5,5]},null,-1),da=h.defineComponent({__name:"Reflector",props:{color:{default:"#333"},textureWidth:{default:512},textureHeight:{default:512},clipBias:{default:0},multisample:{default:4},shader:{default:Et.ReflectorShader}},setup(o,{expose:e}){const t=o,{extend:n}=ae.useTresContext(),i=h.shallowRef();n({Reflector:Et});const{color:r,textureWidth:s,textureHeight:a,clipBias:l,multisample:f,shader:u}=h.toRefs(t);return e({reflectorRef:i}),(d,m)=>(h.openBlock(),h.createElementBlock("TresReflector",{ref_key:"reflectorRef",ref:i,args:[void 0,{textureWidth:h.unref(s),textureHeight:h.unref(a),clipBias:h.unref(l),multisample:h.unref(f),shader:h.unref(u)}],"material-uniforms-color-value":h.unref(r)},[h.renderSlot(d.$slots,"default",{},()=>[fa])],8,ua))}});function nr(o){return h.getCurrentScope()?(h.onScopeDispose(o),!0):!1}function Re(o){return typeof o=="function"?o():h.unref(o)}const pa=typeof window<"u"&&typeof document<"u";typeof WorkerGlobalScope<"u"&&globalThis instanceof WorkerGlobalScope;const ma=Object.prototype.toString,ga=o=>ma.call(o)==="[object Object]",wt=()=>{};function Wn(o,e){function t(...n){return new Promise((i,r)=>{Promise.resolve(o(()=>e.apply(this,n),{fn:e,thisArg:this,args:n})).then(i).catch(r)})}return t}const ya=o=>o();function _a(o,e={}){let t,n,i=wt;const r=a=>{clearTimeout(a),i(),i=wt};return a=>{const l=Re(o),f=Re(e.maxWait);return t&&r(t),l<=0||f!==void 0&&f<=0?(n&&(r(n),n=null),Promise.resolve(a())):new Promise((u,d)=>{i=e.rejectOnCancel?d:u,f&&!n&&(n=setTimeout(()=>{t&&r(t),n=null,u(a())},f)),t=setTimeout(()=>{n&&r(n),n=null,u(a())},l)})}}function ir(o,e=!0,t=!0,n=!1){let i=0,r,s=!0,a=wt,l;const f=()=>{r&&(clearTimeout(r),r=void 0,a(),a=wt)};return d=>{const m=Re(o),y=Date.now()-i,b=()=>l=d();return f(),m<=0?(i=Date.now(),b()):(y>m&&(t||!s)?(i=Date.now(),b()):e&&(l=new Promise((A,_)=>{a=n?_:A,r=setTimeout(()=>{i=Date.now(),s=!0,A(b()),f()},Math.max(0,m-y))})),!t&&!r&&(r=setTimeout(()=>s=!0,m)),s=!1,l)}}function va(o,e=200,t={}){return Wn(_a(e,t),o)}function wa(o,e=200,t=!1,n=!0,i=!1){return Wn(ir(e,t,n,i),o)}function xa(o,e,t={}){const{eventFilter:n=ya,...i}=t;return h.watch(o,Wn(n,e),i)}function rr(o,e=!0){h.getCurrentInstance()?h.onMounted(o):e?o():h.nextTick(o)}function ba(o,e,t={}){const{throttle:n=0,trailing:i=!0,leading:r=!0,...s}=t;return xa(o,e,{...s,eventFilter:ir(n,i,r)})}function Ma(o){var e;const t=Re(o);return(e=t==null?void 0:t.$el)!=null?e:t}const xt=pa?window:void 0;function Le(...o){let e,t,n,i;if(typeof o[0]=="string"||Array.isArray(o[0])?([t,n,i]=o,e=xt):[e,t,n,i]=o,!e)return wt;Array.isArray(t)||(t=[t]),Array.isArray(n)||(n=[n]);const r=[],s=()=>{r.forEach(u=>u()),r.length=0},a=(u,d,m,y)=>(u.addEventListener(d,m,y),()=>u.removeEventListener(d,m,y)),l=h.watch(()=>[Ma(e),Re(i)],([u,d])=>{if(s(),!u)return;const m=ga(d)?{...d}:d;r.push(...t.flatMap(y=>n.map(b=>a(u,y,b,m))))},{immediate:!0,flush:"post"}),f=()=>{l(),s()};return nr(f),f}function Aa(o){return typeof o=="function"?o:typeof o=="string"?e=>e.key===o:Array.isArray(o)?e=>o.includes(e.key):()=>!0}function bt(...o){let e,t,n={};o.length===3?(e=o[0],t=o[1],n=o[2]):o.length===2?typeof o[1]=="object"?(e=!0,t=o[0],n=o[1]):(e=o[0],t=o[1]):(e=!0,t=o[0]);const{target:i=xt,eventName:r="keydown",passive:s=!1,dedupe:a=!1}=n,l=Aa(e);return Le(i,r,u=>{u.repeat&&Re(a)||l(u)&&t(u)},s)}function Sa(){const o=h.ref(!1);return h.getCurrentInstance()&&h.onMounted(()=>{o.value=!0}),o}function Pa(o){const e=Sa();return h.computed(()=>(e.value,!!o()))}function Ca(o,e={}){const{window:t=xt}=e,n=Pa(()=>t&&"matchMedia"in t&&typeof t.matchMedia=="function");let i;const r=h.ref(!1),s=f=>{r.value=f.matches},a=()=>{i&&("removeEventListener"in i?i.removeEventListener("change",s):i.removeListener(s))},l=h.watchEffect(()=>{n.value&&(a(),i=t.matchMedia(Re(o)),"addEventListener"in i?i.addEventListener("change",s):i.addListener(s),r.value=i.matches)});return nr(()=>{l(),a(),i=void 0}),r}const sr=1;function La(o,e={}){const{throttle:t=0,idle:n=200,onStop:i=wt,onScroll:r=wt,offset:s={left:0,right:0,top:0,bottom:0},eventListenerOptions:a={capture:!1,passive:!0},behavior:l="auto",window:f=xt}=e,u=h.ref(0),d=h.ref(0),m=h.computed({get(){return u.value},set(x){b(x,void 0)}}),y=h.computed({get(){return d.value},set(x){b(void 0,x)}});function b(x,C){var p,w,v;if(!f)return;const T=Re(o);T&&((v=T instanceof Document?f.document.body:T)==null||v.scrollTo({top:(p=Re(C))!=null?p:y.value,left:(w=Re(x))!=null?w:m.value,behavior:Re(l)}))}const A=h.ref(!1),_=h.reactive({left:!0,right:!1,top:!0,bottom:!1}),L=h.reactive({left:!1,right:!1,top:!1,bottom:!1}),I=x=>{A.value&&(A.value=!1,L.left=!1,L.right=!1,L.top=!1,L.bottom=!1,i(x))},S=va(I,t+n),g=x=>{var C;if(!f)return;const p=x.document?x.document.documentElement:(C=x.documentElement)!=null?C:x,{display:w,flexDirection:v}=getComputedStyle(p),T=p.scrollLeft;L.left=T<u.value,L.right=T>u.value;const k=Math.abs(T)<=0+(s.left||0),Q=Math.abs(T)+p.clientWidth>=p.scrollWidth-(s.right||0)-sr;w==="flex"&&v==="row-reverse"?(_.left=Q,_.right=k):(_.left=k,_.right=Q),u.value=T;let Y=p.scrollTop;x===f.document&&!Y&&(Y=f.document.body.scrollTop),L.top=Y<d.value,L.bottom=Y>d.value;const $=Math.abs(Y)<=0+(s.top||0),ee=Math.abs(Y)+p.clientHeight>=p.scrollHeight-(s.bottom||0)-sr;w==="flex"&&v==="column-reverse"?(_.top=ee,_.bottom=$):(_.top=$,_.bottom=ee),d.value=Y},O=x=>{var C;if(!f)return;const p=(C=x.target.documentElement)!=null?C:x.target;g(p),A.value=!0,S(x),r(x)};return Le(o,"scroll",t?wa(O,t,!0,!1):O,a),rr(()=>{const x=Re(o);x&&g(x)}),Le(o,"scrollend",I,a),{x:m,y,isScrolling:A,arrivedState:_,directions:L,measure(){const x=Re(o);f&&x&&g(x)}}}const Ta={page:o=>[o.pageX,o.pageY],client:o=>[o.clientX,o.clientY],screen:o=>[o.screenX,o.screenY],movement:o=>o instanceof Touch?null:[o.movementX,o.movementY]};function Oa(o={}){const{type:e="page",touch:t=!0,resetOnTouchEnds:n=!1,initialValue:i={x:0,y:0},window:r=xt,target:s=r,scroll:a=!0,eventFilter:l}=o;let f=null;const u=h.ref(i.x),d=h.ref(i.y),m=h.ref(null),y=typeof e=="function"?e:Ta[e],b=O=>{const x=y(O);f=O,x&&([u.value,d.value]=x,m.value="mouse")},A=O=>{if(O.touches.length>0){const x=y(O.touches[0]);x&&([u.value,d.value]=x,m.value="touch")}},_=()=>{if(!f||!r)return;const O=y(f);f instanceof MouseEvent&&O&&(u.value=O[0]+r.scrollX,d.value=O[1]+r.scrollY)},L=()=>{u.value=i.x,d.value=i.y},I=l?O=>l(()=>b(O),{}):O=>b(O),S=l?O=>l(()=>A(O),{}):O=>A(O),g=l?()=>l(()=>_(),{}):()=>_();if(s){const O={passive:!0};Le(s,["mousemove","dragover"],I,O),t&&e!=="movement"&&(Le(s,["touchstart","touchmove"],S,O),n&&Le(s,"touchend",L,O)),a&&e==="page"&&Le(r,"scroll",g,{passive:!0})}return{x:u,y:d,sourceType:m}}function Ia(o={}){const{window:e=xt,behavior:t="auto"}=o;if(!e)return{x:h.ref(0),y:h.ref(0)};const n=h.ref(e.scrollX),i=h.ref(e.scrollY),r=h.computed({get(){return n.value},set(a){scrollTo({left:a,behavior:t})}}),s=h.computed({get(){return i.value},set(a){scrollTo({top:a,behavior:t})}});return Le(e,"scroll",()=>{n.value=e.scrollX,i.value=e.scrollY},{capture:!1,passive:!0}),{x:r,y:s}}function or(o={}){const{window:e=xt,initialWidth:t=Number.POSITIVE_INFINITY,initialHeight:n=Number.POSITIVE_INFINITY,listenOrientation:i=!0,includeScrollbar:r=!0}=o,s=h.ref(t),a=h.ref(n),l=()=>{e&&(r?(s.value=e.innerWidth,a.value=e.innerHeight):(s.value=e.document.documentElement.clientWidth,a.value=e.document.documentElement.clientHeight))};if(l(),rr(l),Le("resize",l,{passive:!0}),i){const f=Ca("(orientation: portrait)");h.watch(f,()=>l())}return{width:s,height:a}}const Da=h.defineComponent({__name:"MouseParallax",props:{disabled:{type:Boolean,default:!1},factor:{default:2.5},ease:{default:.1}},setup(o){const e=o,{camera:t}=ae.useTresContext(),{disabled:n,factor:i,ease:r}=h.toRefs(e),{x:s,y:a}=Oa(),{width:l,height:f}=or(),u=h.ref(),d=h.computed(()=>(s.value/l.value-.5)*i.value),m=h.computed(()=>-(a.value/f.value-.5)*i.value),{onLoop:y}=ae.useRenderLoop();return y(({delta:b})=>{n.value||!u.value||(u.value.position.x+=(d.value-u.value.position.x)*r.value*b,u.value.position.y+=(m.value-u.value.position.y)*r.value*b)}),h.watch(()=>u.value,b=>b==null?void 0:b.add(t.value)),(b,A)=>(h.openBlock(),h.createElementBlock("TresGroup",{ref_key:"cameraGroupRef",ref:u},null,512))}}),ka=h.defineComponent({name:"GlobalAudio",props:["src","loop","volume","playbackRate","playTrigger","stopTrigger"],async setup(o,{expose:e,emit:t}){var d;const{camera:n,renderer:i}=ae.useTresContext(),r=new c.AudioListener;(d=n.value)==null||d.add(r);const s=new c.Audio(r),a=new c.AudioLoader;e({sound:s}),h.onUnmounted(()=>{s&&s.disconnect()}),h.watch(()=>[o.playbackRate],()=>s.setPlaybackRate(o.playbackRate??1),{immediate:!0}),h.watch(()=>[o.volume],()=>s.setVolume(o.volume??.5),{immediate:!0}),h.watch(()=>[o.loop],()=>s.setLoop(o.loop??!1),{immediate:!0}),h.watch(()=>[o.src],async()=>{const m=await a.loadAsync(o.src);s.setBuffer(m)},{immediate:!0});const l=document.getElementById(o.playTrigger??""),f=l||i.value.domElement;Le(f,"click",()=>{s.isPlaying?s.pause():s.play(),t("isPlaying",s.isPlaying)});const u=document.getElementById(o.stopTrigger??"");return u&&Le(u,"click",()=>{s.stop(),t("isPlaying",s.isPlaying)}),null}});class Yt extends c.Mesh{constructor(){super(Yt.Geometry,new c.MeshBasicMaterial({opacity:0,transparent:!0})),this.isLensflare=!0,this.type="Lensflare",this.frustumCulled=!1,this.renderOrder=1/0;const e=new c.Vector3,t=new c.Vector3,n=new c.FramebufferTexture(16,16),i=new c.FramebufferTexture(16,16);let r=c.UnsignedByteType;const s=Yt.Geometry,a=new c.RawShaderMaterial({uniforms:{scale:{value:null},screenPosition:{value:null}},vertexShader:`
|
|
80
124
|
|
|
81
125
|
precision highp float;
|
|
82
126
|
|
|
@@ -127,7 +171,7 @@
|
|
|
127
171
|
|
|
128
172
|
gl_FragColor = texture2D( map, vUV );
|
|
129
173
|
|
|
130
|
-
}`,depthTest:!1,depthWrite:!1,transparent:!1}),f=new c.Mesh(
|
|
174
|
+
}`,depthTest:!1,depthWrite:!1,transparent:!1}),f=new c.Mesh(s,a),u=[],d=ar.Shader,m=new c.RawShaderMaterial({name:d.name,uniforms:{map:{value:null},occlusionMap:{value:i},color:{value:new c.Color(16777215)},scale:{value:new c.Vector2},screenPosition:{value:new c.Vector3}},vertexShader:d.vertexShader,fragmentShader:d.fragmentShader,blending:c.AdditiveBlending,transparent:!0,depthWrite:!1}),y=new c.Mesh(s,m);this.addElement=function(I){u.push(I)};const b=new c.Vector2,A=new c.Vector2,_=new c.Box2,L=new c.Vector4;this.onBeforeRender=function(I,S,g){I.getCurrentViewport(L);const O=I.getRenderTarget(),x=O!==null?O.texture.type:c.UnsignedByteType;r!==x&&(n.dispose(),i.dispose(),n.type=i.type=x,r=x);const C=L.w/L.z,p=L.z/2,w=L.w/2;let v=16/L.w;if(b.set(v*C,v),_.min.set(L.x,L.y),_.max.set(L.x+(L.z-16),L.y+(L.w-16)),t.setFromMatrixPosition(this.matrixWorld),t.applyMatrix4(g.matrixWorldInverse),!(t.z>0)&&(e.copy(t).applyMatrix4(g.projectionMatrix),A.x=L.x+e.x*p+p-8,A.y=L.y+e.y*w+w-8,_.containsPoint(A))){I.copyFramebufferToTexture(A,n);let T=a.uniforms;T.scale.value=b,T.screenPosition.value=e,I.renderBufferDirect(g,null,s,a,f,null),I.copyFramebufferToTexture(A,i),T=l.uniforms,T.scale.value=b,T.screenPosition.value=e,I.renderBufferDirect(g,null,s,l,f,null);const k=-e.x*2,Q=-e.y*2;for(let Y=0,$=u.length;Y<$;Y++){const ee=u[Y],q=m.uniforms;q.color.value.copy(ee.color),q.map.value=ee.texture,q.screenPosition.value.x=e.x+k*ee.distance,q.screenPosition.value.y=e.y+Q*ee.distance,v=ee.size/L.w;const Z=L.w/L.z;q.scale.value.set(v*Z,v),m.uniformsNeedUpdate=!0,I.renderBufferDirect(g,null,s,m,y,null)}}},this.dispose=function(){a.dispose(),l.dispose(),m.dispose(),n.dispose(),i.dispose();for(let I=0,S=u.length;I<S;I++)u[I].texture.dispose()}}}class ar{constructor(e,t=1,n=0,i=new c.Color(16777215)){this.texture=e,this.size=t,this.distance=n,this.color=i}}ar.Shader={name:"LensflareElementShader",uniforms:{map:{value:null},occlusionMap:{value:null},color:{value:null},scale:{value:null},screenPosition:{value:null}},vertexShader:`
|
|
131
175
|
|
|
132
176
|
precision highp float;
|
|
133
177
|
|
|
@@ -181,12 +225,12 @@
|
|
|
181
225
|
gl_FragColor = texture;
|
|
182
226
|
gl_FragColor.rgb *= color;
|
|
183
227
|
|
|
184
|
-
}`},Gt.Geometry=function(){const o=new c.BufferGeometry,e=new Float32Array([-1,-1,0,0,0,1,-1,0,1,0,1,1,0,1,1,-1,1,0,0,1]),t=new c.InterleavedBuffer(e,5);return o.setIndex([0,1,2,0,2,3]),o.setAttribute("position",new c.InterleavedBufferAttribute(t,3,0,!1)),o.setAttribute("uv",new c.InterleavedBufferAttribute(t,2,3,!1)),o}();function Aa(o){return o}function Pa(o){return o*o*o}function Ca(o){return o<.5?4*o*o*o:1-(-2*o+2)**3/2}function La(o){return o*o*o*o}function Ta(o){return o<1/2.75?7.5625*o*o:o<2/2.75?7.5625*(o-=1.5/2.75)*o+.75:o<2.5/2.75?7.5625*(o-=2.25/2.75)*o+.9375:7.5625*(o-=2.625/2.75)*o+.984375}const is=c.MathUtils.clamp;class ss{constructor(e=0,t){ye(this,"_getNext");ye(this,"_getGenerator");this._getGenerator=t??this.getMulberry32,this._getNext=this._getGenerator(e)}seed(e){this._getNext=this._getGenerator(e)}rand(){return this._getNext()}float(e,t){return e+this._getNext()*(t-e)}floatSpread(e){return this.float(-.5*e,.5*e)}int(e,t){return e+Math.floor(this._getNext()*(t-e+1))}choice(e){return e.length?e[Math.floor(this._getNext()*e.length)]:null}defaultChoice(e,t){return e.length?e[Math.floor(this._getNext()*e.length)]:t}sample(e,t,n){const i=e.length;t=is(t,0,i-1),n=is(n??i-1,0,i-1);const s=this.int(t,n),r=this.shuffle(e.map((l,f)=>f)),a=Math.min(e.length,s);return r.slice(0,a).sort().map(l=>e[l])}shuffle(e){return e.map(t=>({value:t,sort:this._getNext()})).sort((t,n)=>t.sort-n.sort).map(({value:t})=>t)}getMulberry32(e=0){return 0<e&&e<1&&(e=Math.floor(e*2**16)),()=>{e+=1831565813;let t=e;return t=Math.imul(t^t>>>15,t|1),t^=t+Math.imul(t^t>>>7,t|61),((t^t>>>14)>>>0)/4294967296}}}const tt="https://raw.githubusercontent.com/Tresjs/assets/93976c7d63ac83d4a254a41a10b2362bc17e90c9/textures/lensflare/",Yn=`${tt}circle.png`,on=`${tt}circleBlur.png`,Oa=`${tt}circleRainbow.png`,Ia=`${tt}line.png`,rs=`${tt}poly6.png`,os=`${tt}polyStroke6.png`,Da=`${tt}rays.png`,an=`${tt}ring.png`,ka=`${tt}starThin6.png`,Fa={texture:[Ia,an],color:["white"],distance:[0,0],size:[750,1024],length:[0,2]},Ba={texture:[on],color:["white"],distance:[0,0],size:[180,512],length:[1,1]},Ua={texture:[Da],color:["white"],distance:[0,0],size:[180,512],length:[1,1]},Na={texture:[Yn,Oa,an,ka],color:["white"],distance:[0,0],size:[180,512],length:[2,3]},[as,ls]=[3679071,132442],Xn=[Fa,Ba,Ua,Na,{texture:[on,Yn,an,rs,os],color:["dimgray","gray","darkgray",as,ls],distance:[.5,2.5],size:[20,180],length:[5,21]},{texture:[on,Yn,an,rs,os],color:["dimgray","gray","darkgray",as,ls],distance:[-.6,-.1],size:[180,360],length:[0,5]}],ln={color:"white",distance:0,size:512,texture:on},cs=(o,e,t=void 0,n=void 0,i=ln)=>{if(o!==void 0&&o.length>0&&(typeof t=="number"||typeof n<"u")){const a=us(t??0,n??Xn),l=a.length,f=o.length;return l>=f?a.map((h,d)=>Object.assign(h,e,d<f?o[d]:{})):o.map((h,d)=>Object.assign({},i,d<l?a[d]:{},e,h))}if(o!==void 0&&o.length>0){const a=Object.assign({},i,e);return o.map(l=>Object.assign({},a,l))}const s=n===void 0||n.length===0?Xn:n;return us(t??0,s).map(a=>Object.assign({},a,e))},za=[Aa,Pa,Ca,La,Ta],hs=c.MathUtils.lerp,us=(o=0,e=Xn)=>{const n=new ss(o).choice(za);return e.map((i,s)=>{const r=new ss(o*(s*7907+1)+(typeof i.seed=="number"?i.seed:0)),a=r.int(i.length[0],i.length[1]);return new Array(a).fill(0).map(()=>{const l=n(r.rand());return{texture:r.defaultChoice(i.texture,ln.texture),size:hs(i.size[0],i.size[1],n(1-l)),distance:hs(i.distance[0],i.distance[1],l),color:r.defaultChoice(i.color,ln.color)}})}).flat()};function Va(o){return ja(o,(e,t)=>t in ln&&e!==void 0)}function ja(o,e){const t={};return Object.keys(o).forEach(n=>{e(o[n],n)&&(t[n]=o[n])}),t}const Ga=u.defineComponent({__name:"component",props:{texture:{},size:{},distance:{},color:{},elements:{default:void 0},scale:{default:1},seed:{default:void 0},seedProps:{default:void 0}},setup(o,{expose:e}){const t=o,n=u.shallowRef(),i=u.shallowRef([]),s=u.shallowRef(Va(t));e({value:n});const r=new c.TextureLoader,a=new Gt,l=[],f=()=>{var y,M,S;for(;l.length;)l.pop();(y=n.value)==null||y.children.forEach(v=>{"dispose"in v&&v.dispose()}),(M=n.value)==null||M.remove(...n.value.children),(S=n.value)==null||S.dispose()},h=y=>{if(typeof y.texture=="string"){const M=y.texture;y.texture=r.load(M),y.texture.name=M}return y.color=ae.normalizeColor(y.color),y},d=()=>{for(;i.value.length>l.length;){const M={...h(i.value[l.length])};l.push(M),a.addElement(M)}i.value.forEach((y,M)=>{const S=l[M],{texture:v,size:L,distance:I,color:A}=y;if(typeof v=="string"){if(S.texture.name!==v){S.texture.dispose();const g=v;S.texture=r.load(g),S.texture.name=g}}else S.texture!==v&&(S.texture.dispose(),S.texture=v);S.size=L,S.distance=I,S.color=ae.normalizeColor(A)}),m()},m=()=>{for(let y=i.value.length-1;y<l.length;y++)l[y].size=0;i.value.forEach((y,M)=>{l[M].size=y.size*t.scale})};return u.onUnmounted(()=>{f()}),u.onMounted(()=>{var y;(y=n.value)==null||y.add(a),i.value=cs(t.elements,s.value,t.seed,t.seedProps)}),u.watch(()=>[t.color,t.distance,t.size,t.texture],()=>{s.value={color:t.color,distance:t.distance,size:t.size,texture:t.texture}}),u.watch(()=>[s.value,t.elements,t.seed,t.seedProps],()=>{i.value=cs(t.elements,s.value,t.seed,t.seedProps)}),u.watch(()=>t.scale,()=>{m()}),u.watch(()=>i.value,()=>{d()}),(y,M)=>(u.openBlock(),u.createElementBlock("TresGroup",{ref_key:"lensflareRef",ref:n},null,512))}});function fs(o){const e=u.ref(null),{height:t,width:n,settings:i,depth:s}=u.isReactive(o)?u.toRefs(o):u.toRefs(u.reactive(o)),{onLoop:r}=ae.useRenderLoop(),{camera:a,renderer:l,scene:f,sizes:h}=ae.useTresContext();return u.watchEffect(()=>{var d;(d=e.value)==null||d.dispose(),e.value=new c.WebGLRenderTarget((n==null?void 0:n.value)||h.width.value,(t==null?void 0:t.value)||h.height.value,{minFilter:c.LinearFilter,magFilter:c.LinearFilter,type:c.HalfFloatType,...i==null?void 0:i.value}),s!=null&&s.value&&(e.value.depthTexture=new c.DepthTexture((n==null?void 0:n.value)||h.width.value,(t==null?void 0:t.value)||h.height.value,c.FloatType))}),r(()=>{l.value.setRenderTarget(e.value),l.value.clear(),l.value.render(f.value,a.value),l.value.setRenderTarget(null)}),u.onBeforeUnmount(()=>{var d;(d=e.value)==null||d.dispose()}),e}const Ra=u.defineComponent({__name:"component",props:{width:{},height:{},depth:{type:Boolean,default:!1},settings:{default:void 0}},setup(o,{expose:e}){const n=fs(o);return e({value:n}),()=>{}}}),cn={sunset:"venice/venice_sunset_1k.hdr",studio:"studio/poly_haven_studio_1k.hdr",city:"city/canary_wharf_1k.hdr",umbrellas:"outdoor/outdoor_umbrellas_1k.hdr",night:"outdoor/satara_night_1k.hdr",forest:"outood/mossy_forest_1k.hdr",snow:"outdoor/snowy_forest_path_01_1k.hdr",dawn:"kiara/kiara_1_dawn_1k.hdr",hangar:"indoor/small_hangar_01_1k.hdr",urban:"indoor/abandoned_games_room_02_1k.hdr",modern:"city/modern_buildings_2_1k.hdr",shangai:"city/shanghai_bund_1k.hdr"},Ea="https://raw.githubusercontent.com/Tresjs/assets/main/textures/hdr/";async function ds(o){const{scene:e}=ae.useTresContext(),{preset:t,blur:n,files:i=[],path:s="",background:r}=u.toRefs(o),a=u.ref(),l=u.computed(()=>Array.isArray(i.value)),f=u.computed(()=>l.value?c.CubeTextureLoader:Ji),h=u.ref(null);return u.watch(()=>[i,s],async([d,m])=>{if(d.value.length>0&&!t.value){try{h.value=await ae.useLoader(u.unref(f),l.value?[u.unref(d)]:u.unref(d),y=>{m.value&&y.setPath(u.unref(m))})}catch(y){throw new Error(`Failed to load environment map: ${y}`)}h.value&&(a.value=l.value?h.value[0]:h.value,a.value.mapping=l.value?c.CubeReflectionMapping:c.EquirectangularReflectionMapping)}},{immediate:!0}),u.watch(()=>a.value,d=>{e.value&&(e.value.environment=d)},{immediate:!0}),u.watch(()=>[r.value,a.value],([d,m])=>{e.value&&(e.value.background=d?m:void 0)},{immediate:!0}),u.watch(()=>n==null?void 0:n.value,d=>{e.value&&(e.value.backgroundBlurriness=d)},{immediate:!0}),u.watch(t,async d=>{if(d&&d in cn){const m=Ea,y=cn[d];try{h.value=await ae.useLoader(Ji,y,M=>{m&&M.setPath(m)})}catch(M){throw new Error(`Failed to load environment map: ${M}`)}h.value&&(a.value=h.value,a.value.mapping=c.EquirectangularReflectionMapping)}else if(d&&!(d in cn))throw new Error(`Preset must be one of: ${Object.keys(cn).join(", ")}`)},{immediate:!0}),{texture:a}}let hn=null;function Ya(o,e){return t=>{e&&e(t),o.draco&&(hn||(hn=new Ho),hn.setDecoderPath(o.decoderPath||"https://www.gstatic.com/draco/versioned/decoders/1.4.3/"),t.setDRACOLoader(hn))}}async function ps(o,e={draco:!1},t){return await ae.useLoader(Wr,o,Ya(e,t))}const Xa=["object"],Wa=u.defineComponent({__name:"component",props:{path:{},draco:{type:Boolean,default:!1},decoderPath:{default:"https://www.gstatic.com/draco/versioned/decoders/1.4.1/"}},async setup(o,{expose:e}){let t,n;const i=o,s=u.ref();e({value:s});const{scene:r}=([t,n]=u.withAsyncContext(()=>ps(i.path,{draco:i.draco,decoderPath:i.decoderPath})),t=await t,n(),t);return(a,l)=>(u.openBlock(),u.createElementBlock("primitive",u.mergeProps({ref_key:"modelRef",ref:s,object:u.unref(r)},a.$attrs),null,16,Xa))}});async function ms(o){return await ae.useLoader(Bo,o)}const Za=["object"],qa=u.defineComponent({__name:"component",props:{path:{}},async setup(o,{expose:e}){let t,n;const i=o,s=u.ref();e({value:s});const r=([t,n]=u.withAsyncContext(()=>ms(i.path)),t=await t,n(),t);return(a,l)=>(u.openBlock(),u.createElementBlock("primitive",u.mergeProps({ref_key:"modelRef",ref:s,object:u.unref(r)},a.$attrs),null,16,Za))}}),Ka=["geometry","render-order"],Qa=u.defineComponent({__name:"component",props:{src:{},skipStrokes:{type:Boolean,default:!1},skipFills:{type:Boolean,default:!1},fillMaterial:{},strokeMaterial:{},fillMeshProps:{},strokeMeshProps:{},depth:{default:"renderOrder"}},setup(o,{expose:e}){const t=o,{src:n,skipStrokes:i,skipFills:s,fillMaterial:r,strokeMaterial:a,fillMeshProps:l,strokeMeshProps:f,depth:h}=u.toRefs(t),d=u.shallowRef(),m=u.shallowRef([]),y=u.shallowRef([]);e({value:d}),u.watchEffect(async()=>M(n.value).then(L=>y.value=L.paths)),u.watch([s,i,r,a,y],v);async function M(L){const I=L.startsWith("<svg")?encodeURI(`data:image/svg+xml;utf8,${L}`):L;return ae.useLoader(jt,I)}u.onUnmounted(S);function S(){m.value.forEach(L=>L.geometry.dispose())}function v(){var O,x,C;S();const L=[],[I,A]=(()=>{const p={flat:!1,renderOrder:!1,offsetZ:!0},w={flat:0,renderOrder:0,offsetZ:.025},_=h.value;return typeof _=="number"?[!0,_]:[p[_],w[_]]})();let g=0;for(const p of y.value){const w=((O=p.userData)==null?void 0:O.style)??{},_=Object.assign({color:w.fill,opacity:w.fillOpacity,transparent:!0,side:c.DoubleSide,depthWrite:I},t.fillMaterial);if(!s.value&&w.fill!==void 0&&w.fill!=="none")for(const T of jt.createShapes(p)){const F=new c.ShapeGeometry(T);F.scale(1,-1,1),A&&F.translate(0,0,g++*A),L.push({geometry:F,material:_,isStroke:!1})}if(!i.value&&w.stroke!==void 0&&w.stroke!=="none"){const T=Object.assign({color:(x=p.userData)==null?void 0:x.style.stroke,opacity:(C=p.userData)==null?void 0:C.style.strokeOpacity,transparent:!0,side:c.DoubleSide,depthWrite:I},t.strokeMaterial);for(const F of p.subPaths){const J=F.getPoints().map(ee=>new c.Vector2(ee.x,-ee.y)),X=jt.pointsToStroke(J,w||"none");A&&X.translate(0,0,g++*A),L.push({geometry:X,material:T,isStroke:!0})}}}m.value=L}return(L,I)=>(u.openBlock(),u.createElementBlock("TresGroup",{ref_key:"svgRef",ref:d},[(u.openBlock(!0),u.createElementBlock(u.Fragment,null,u.renderList(m.value,({geometry:A,material:g,isStroke:O},x)=>(u.openBlock(),u.createElementBlock("TresMesh",u.mergeProps({key:`${x}`},O?u.unref(f):u.unref(l),{geometry:A,"render-order":u.unref(h)==="renderOrder"?x:0}),[u.createElementVNode("TresMeshBasicMaterial",u.normalizeProps(u.guardReactiveProps(g)),null,16)],16,Ka))),128))],512))}}),gs="[TresJS - Cientos ▲ ■ ♥] ";function Wn(){function o(n,i){console.error(`${gs} ${n}`,i||"")}function e(n){console.warn(`${gs} ${n}`)}function t(n,i){}return{logError:o,logWarning:e,logMessage:t}}let Zn=0;function Ja(){const o=u.ref(!1),e=u.ref(0),t=u.ref([]),{logError:n}=Wn();return new Promise(i=>{c.DefaultLoadingManager.onStart=()=>{o.value=!1},c.DefaultLoadingManager.onLoad=()=>{o.value=!0},c.DefaultLoadingManager.onProgress=(s,r,a)=>{r===a&&(Zn=a,o.value=!0,t.value.push(s)),e.value=Math.round((r-Zn)/(a-Zn)*100||100,2)},c.DefaultLoadingManager.onError=s=>{n("Error loading assets",new Error(s)),o.value=!0},i({items:t,hasFinishLoading:o,progress:e})})}async function Ha(o,e){const{logError:t}=Wn();if(!o)return t("Error no path provided");const{unsuspend:n,start:i,crossOrigin:s,muted:r,loop:a,...l}={unsuspend:"loadedmetadata",crossOrigin:"Anonymous",muted:!0,loop:!0,start:!0,playsInline:!0,...e};function f(){return new Promise((h,d)=>{const m=Object.assign(document.createElement("video"),{src:typeof o=="string"&&o||void 0,crossOrigin:s,loop:a,muted:r,autoplay:!0,...l}),y=new c.VideoTexture(m);return m.addEventListener(n,()=>h(y)),m.addEventListener("error",()=>d()),y})}try{const h=await f();return i&&h.image&&h.image.play(),h}catch{t("Error loading resource")}}const $a=["target","auto-rotate","auto-rotate-speed","enable-damping","damping-factor","enable-pan","key-pan-speed","keys","max-azimuth-angle","min-azimuth-angle","max-polar-angle","min-polar-angle","min-distance","max-distance","min-zoom","max-zoom","touches","enable-zoom","zoom-speed","enable-rotate","rotate-speed","args"],el=u.defineComponent({__name:"OrbitControls",props:{makeDefault:{type:Boolean,default:!1},camera:{},domElement:{},target:{default:()=>[0,0,0]},enableDamping:{type:Boolean,default:!1},dampingFactor:{default:.05},autoRotate:{type:Boolean,default:!1},autoRotateSpeed:{default:2},enablePan:{type:Boolean,default:!0},keyPanSpeed:{default:7},keys:{},maxAzimuthAngle:{default:1/0},minAzimuthAngle:{default:-1/0},maxPolarAngle:{default:Math.PI},minPolarAngle:{default:0},minDistance:{default:0},maxDistance:{default:1/0},minZoom:{default:0},maxZoom:{default:1/0},touches:{default:()=>({ONE:c.TOUCH.ROTATE,TWO:c.TOUCH.DOLLY_PAN})},enableZoom:{type:Boolean,default:!0},zoomSpeed:{default:1},enableRotate:{type:Boolean,default:!0},rotateSpeed:{default:1}},emits:["change","start","end"],setup(o,{expose:e,emit:t}){const n=o,i=t,{makeDefault:s,autoRotate:r,autoRotateSpeed:a,enableDamping:l,dampingFactor:f,enablePan:h,keyPanSpeed:d,maxAzimuthAngle:m,minAzimuthAngle:y,maxPolarAngle:M,minPolarAngle:S,minDistance:v,maxDistance:L,minZoom:I,maxZoom:A,enableZoom:g,zoomSpeed:O,enableRotate:x,touches:C,rotateSpeed:p,target:w}=u.toRefs(n),{camera:_,renderer:T,extend:F,controls:J}=ae.useTresContext(),X=u.ref(null);F({OrbitControls:Fi}),u.watch(X,q=>{ee(),q&&s.value?J.value=q:J.value=null});function ee(){Le(X.value,"change",()=>i("change",X.value)),Le(X.value,"start",()=>i("start",X.value)),Le(X.value,"end",()=>i("end",X.value))}const{onLoop:$}=ae.useRenderLoop();return $(()=>{X.value&&(l.value||r.value)&&X.value.update()}),u.onUnmounted(()=>{X.value&&X.value.dispose()}),e({value:X}),(q,Z)=>(q.camera||u.unref(_))&&(q.domElement||u.unref(T))?(u.openBlock(),u.createElementBlock("TresOrbitControls",{key:0,ref_key:"controlsRef",ref:X,target:u.unref(w),"auto-rotate":u.unref(r),"auto-rotate-speed":u.unref(a),"enable-damping":u.unref(l),"damping-factor":u.unref(f),"enable-pan":u.unref(h),"key-pan-speed":u.unref(d),keys:q.keys,"max-azimuth-angle":u.unref(m),"min-azimuth-angle":u.unref(y),"max-polar-angle":u.unref(M),"min-polar-angle":u.unref(S),"min-distance":u.unref(v),"max-distance":u.unref(L),"min-zoom":u.unref(I),"max-zoom":u.unref(A),touches:u.unref(C),"enable-zoom":u.unref(g),"zoom-speed":u.unref(O),"enable-rotate":u.unref(x),"rotate-speed":u.unref(p),args:[q.camera||u.unref(_),q.domElement||u.unref(T).domElement]},null,8,$a)):u.createCommentVNode("",!0)}}),tl=5,nl=6,il=.3,sl=u.defineComponent({__name:"KeyboardControls",props:{forward:{default:()=>["w","W"]},back:{default:()=>["s","S"]},left:{default:()=>["a","A"]},right:{default:()=>["d","D"]},jump:{default:()=>[" "]},gravity:{default:9.8},moveSpeed:{default:.1},headBobbing:{type:Boolean,default:!1},is2D:{type:Boolean,default:!1}},setup(o){var _;const e=o,{forward:t,back:n,left:i,right:s,jump:r,gravity:a,moveSpeed:l,headBobbing:f,is2D:h}=u.toRefs(e),{camera:d,controls:m}=ae.useTresContext(),y=u.ref(0),M=u.ref(0),S=u.ref(!1),v=u.ref(!1),L=u.ref(0),I=u.shallowRef(),A=h.value?"y":"z",g=((_=d.value.position)==null?void 0:_.y)||0;xt(t.value,()=>{S.value=!0,M.value=l.value},{eventName:"keydown"}),xt(n.value,()=>{S.value=!0,M.value=-l.value},{eventName:"keydown"}),xt([...t.value,...n.value],()=>{S.value=!1,M.value=0},{eventName:"keyup"}),xt(i.value,()=>{S.value=!0,y.value=-l.value},{eventName:"keydown"}),xt(s.value,()=>{S.value=!0,y.value=l.value},{eventName:"keydown"}),xt([...i.value,...s.value],()=>{S.value=!1,y.value=0},{eventName:"keyup"}),xt(r.value,()=>{v.value||(L.value=Date.now()),v.value=!0});const O=T=>S.value?Math.sin(T*tl)*il+g:g,x=()=>(Date.now()-L.value)/1e3*3,C=T=>g+nl*T-.5*a.value*T**2,p=()=>{if(v.value){const T=C(x());return T<=g&&(v.value=!1),T}return 0},{onLoop:w}=ae.useRenderLoop();return w(({elapsed:T})=>{var F;m.value instanceof Dn&&((F=m.value)!=null&&F.isLocked)?(m.value.moveForward(M.value),m.value.moveRight(y.value),d.value.position&&(d.value.position.y=f.value?O(T):g,d.value.position.y+=p())):I.value.children.length>0&&!(m.value instanceof Dn)&&(I.value.position.x+=y.value,I.value.position[A]+=h.value?M.value:-M.value)}),(T,F)=>(u.openBlock(),u.createElementBlock("TresGroup",{ref_key:"wrapperRef",ref:I},[u.renderSlot(T.$slots,"default")],512))}}),rl=["object","args","mode","enabled","axis","translation-snap","rotation-snap","scale-snap","space","size","show-x","show-y","show-z"],ol=u.defineComponent({__name:"TransformControls",props:{object:{},mode:{default:"translate"},enabled:{type:Boolean,default:!0},axis:{default:"XYZ"},translationSnap:{},rotationSnap:{},scaleSnap:{},space:{default:"world"},size:{default:1},showX:{type:Boolean,default:!0},showY:{type:Boolean,default:!0},showZ:{type:Boolean,default:!0}},emits:["dragging","change","mouseDown","mouseUp","objectChange"],setup(o,{emit:e}){const t=o,n=e,{object:i,mode:s,enabled:r,axis:a,translationSnap:l,rotationSnap:f,scaleSnap:h,space:d,size:m,showX:y,showY:M,showZ:S}=u.toRefs(t),v=u.shallowRef(),{controls:L,camera:I,renderer:A,extend:g}=ae.useTresContext();g({TransformControls:Fr});const O=C=>{L.value&&(L.value.enabled=!C.value),n("dragging",C.value)};function x(){Le(v.value,"change",()=>n("change")),Le(v.value,"dragging-changed",O),Le(v.value,"mouseDown",()=>n("mouseDown")),Le(v.value,"mouseUp",()=>n("mouseUp")),Le(v.value,"objectChange",()=>n("objectChange"))}return u.watchEffect(()=>{v.value&&x()}),u.onUnmounted(()=>{v.value&&v.value.dispose()}),(C,p)=>u.unref(I)&&u.unref(A)?(u.openBlock(),u.createElementBlock("TresTransformControls",{key:0,ref_key:"controlsRef",ref:v,object:u.unref(i),args:[u.unref(I),u.unref(A).domElement],mode:u.unref(s),enabled:u.unref(r),axis:u.unref(a),"translation-snap":u.unref(l),"rotation-snap":u.unref(f),"scale-snap":u.unref(h),space:u.unref(d),size:u.unref(m),"show-x":u.unref(y),"show-y":u.unref(M),"show-z":u.unref(S),visible:!0},null,8,rl)):u.createCommentVNode("",!0)}}),al=["args"],ll=u.defineComponent({__name:"PointerLockControls",props:{makeDefault:{type:Boolean,default:!1},camera:{},domElement:{},selector:{}},emits:["isLock"],setup(o,{expose:e,emit:t}){const n=o,i=t,{camera:s,renderer:r,extend:a,controls:l}=ae.useTresContext(),f=u.ref(null);let h;a({PointerLockControls:Dn});const d=m=>{i("isLock",m)};return u.watch(f,m=>{m&&n.makeDefault?l.value=m:l.value=null;const y=document.getElementById(n.selector||"");h=y||r.value.domElement,Le(h,"click",()=>{var M,S,v;(M=l.value)==null||M.lock(),(S=l.value)==null||S.addEventListener("lock",()=>d(!0)),(v=l.value)==null||v.addEventListener("unlock",()=>d(!1))})}),u.onUnmounted(()=>{var m,y;(m=l.value)==null||m.removeEventListener("lock",()=>d(!0)),(y=l.value)==null||y.removeEventListener("unlock",()=>d(!1)),f.value&&f.value.dispose()}),e({value:l}),(m,y)=>(m.camera||u.unref(s))&&(m.domElement||u.unref(r))?(u.openBlock(),u.createElementBlock("TresPointerLockControls",{key:0,ref_key:"controlsRef",ref:f,args:[m.camera||u.unref(s),m.domElement||u.unref(r).domElement]},null,8,al)):u.createCommentVNode("",!0)}}),cl=["args"],hl=u.defineComponent({__name:"MapControls",props:{makeDefault:{type:Boolean,default:!1},camera:{},domElement:{}},setup(o){const e=o,{camera:t,renderer:n,extend:i,controls:s}=ae.useTresContext(),r=u.ref(null);return i({MapControls:Xr}),u.watch(s,a=>{a&&e.makeDefault?s.value=a:s.value=null}),u.onUnmounted(()=>{r.value&&r.value.dispose()}),(a,l)=>(a.camera||u.unref(t))&&(a.domElement||u.unref(n))?(u.openBlock(),u.createElementBlock("TresMapControls",{key:0,ref_key:"controlsRef",ref:r,args:[a.camera||u.unref(t),a.domElement||u.unref(n).domElement]},null,8,cl)):u.createCommentVNode("",!0)}}),ul=u.defineComponent({__name:"ScrollControls",props:{pages:{default:4},distance:{default:4},smoothScroll:{default:.1},horizontal:{type:Boolean,default:!1},htmlScroll:{type:Boolean,default:!1}},emits:["update:modelValue"],setup(o,{emit:e}){const t=o,n=e,{logWarning:i}=ae.useLogger();t.smoothScroll<0&&i("SmoothControl must be greater than zero"),t.pages<0&&i("Pages must be greater than zero");const{camera:s,controls:r,renderer:a}=ae.useTresContext(),l=u.shallowRef(),f=document.createElement("div"),{y:h}=ba(),{x:d,y:m,isScrolling:y}=va(f),{height:M,width:S}=ts();let v=0;const L=u.ref(!1),I=u.ref(0),A=u.ref(0),g=u.ref(0),O=t.horizontal?"x":"y",x=u.watch(s,p=>{if(L.value){x();return}v=t.horizontal?(p==null?void 0:p.position.x)||0:(p==null?void 0:p.position.y)||0,L.value=!0},{immediate:!0});u.watch(y,p=>{r.value&&(r.value.enabled=!p)},{immediate:!0}),u.watch(h,p=>{!y.value&&!t.htmlScroll||(A.value=p/M.value/(g.value/M.value-1),I.value=-1*A.value,n("update:modelValue",A.value))}),u.watch(m,p=>{A.value=p/M.value/(g.value/M.value),I.value=-1*A.value,n("update:modelValue",A.value)}),u.watch(d,p=>{A.value=p/S.value/(g.value/S.value-1),I.value=+A.value,n("update:modelValue",A.value)}),u.watch(a,p=>{var _,T;const w=p==null?void 0:p.domElement;if(t.htmlScroll&&(p!=null&&p.domElement))w!=null&&w.style.width&&(w!=null&&w.style.position)&&(w!=null&&w.style.top)&&(w!=null&&w.style.left)&&(w.style.width="100%",w.style.position="fixed",w.style.zIndex=" -99999",w.style.top="0",w.style.left="0"),g.value=document.body.scrollHeight;else{const F=document.createElement("div"),J=document.createElement("div");f.style[t.horizontal?"overflowX":"overflowY"]="auto",f.style[t.horizontal?"overflowY":"overflowX"]="hidden",f.style.position="absolute",f.style.width="100%",f.style.height=" 100%",f.style.top="0",f.style.left="0",f.classList.add("scrollContainer"),F.style.position="sticky",F.style.top="0px",F.style.left="0px",F.style.width="100%",F.style.height="100%",F.style.overflow="hidden",f.appendChild(F),J.style.height=t.horizontal?"100%":`${M.value*t.pages}px`,J.style.width=t.horizontal?`${S.value*t.pages}px`:"100vw",J.style.pointerEvents="none",w.style.position="fixed",w.style.zIndex="0",w!=null&&w.style.width&&(w.style.width="100%"),f.appendChild(J),p.domElement.parentNode.style.position="relative",(T=(_=p==null?void 0:p.domElement)==null?void 0:_.parentNode)==null||T.appendChild(f),g.value=t.horizontal?S.value*t.pages:M.value*t.pages}},{immediate:!0});const{onLoop:C}=ae.useRenderLoop();return C(()=>{var p;if((p=s.value)!=null&&p.position){const w=(I.value*t.distance-s.value.position[O]+v)*t.smoothScroll;s.value.position[O]+=w,l.value.children.length>0&&(l.value.position[O]+=w)}}),(p,w)=>(u.openBlock(),u.createElementBlock("TresGroup",{ref_key:"wrapperRef",ref:l},[u.renderSlot(p.$slots,"default")],512))}});/*!
|
|
228
|
+
}`},Yt.Geometry=function(){const o=new c.BufferGeometry,e=new Float32Array([-1,-1,0,0,0,1,-1,0,1,0,1,1,0,1,1,-1,1,0,0,1]),t=new c.InterleavedBuffer(e,5);return o.setIndex([0,1,2,0,2,3]),o.setAttribute("position",new c.InterleavedBufferAttribute(t,3,0,!1)),o.setAttribute("uv",new c.InterleavedBufferAttribute(t,2,3,!1)),o}();function Fa(o){return o}function Ba(o){return o*o*o}function Ua(o){return o<.5?4*o*o*o:1-(-2*o+2)**3/2}function Na(o){return o*o*o*o}function Va(o){return o<1/2.75?7.5625*o*o:o<2/2.75?7.5625*(o-=1.5/2.75)*o+.75:o<2.5/2.75?7.5625*(o-=2.25/2.75)*o+.9375:7.5625*(o-=2.625/2.75)*o+.984375}const lr=c.MathUtils.clamp;class cr{constructor(e=0,t){ye(this,"_getNext");ye(this,"_getGenerator");this._getGenerator=t??this.getMulberry32,this._getNext=this._getGenerator(e)}seed(e){this._getNext=this._getGenerator(e)}rand(){return this._getNext()}float(e,t){return e+this._getNext()*(t-e)}floatSpread(e){return this.float(-.5*e,.5*e)}int(e,t){return e+Math.floor(this._getNext()*(t-e+1))}choice(e){return e.length?e[Math.floor(this._getNext()*e.length)]:null}defaultChoice(e,t){return e.length?e[Math.floor(this._getNext()*e.length)]:t}sample(e,t,n){const i=e.length;t=lr(t,0,i-1),n=lr(n??i-1,0,i-1);const r=this.int(t,n),s=this.shuffle(e.map((l,f)=>f)),a=Math.min(e.length,r);return s.slice(0,a).sort().map(l=>e[l])}shuffle(e){return e.map(t=>({value:t,sort:this._getNext()})).sort((t,n)=>t.sort-n.sort).map(({value:t})=>t)}getMulberry32(e=0){return 0<e&&e<1&&(e=Math.floor(e*2**16)),()=>{e+=1831565813;let t=e;return t=Math.imul(t^t>>>15,t|1),t^=t+Math.imul(t^t>>>7,t|61),((t^t>>>14)>>>0)/4294967296}}}const nt="https://raw.githubusercontent.com/Tresjs/assets/93976c7d63ac83d4a254a41a10b2362bc17e90c9/textures/lensflare/",Zn=`${nt}circle.png`,cn=`${nt}circleBlur.png`,za=`${nt}circleRainbow.png`,ja=`${nt}line.png`,hr=`${nt}poly6.png`,ur=`${nt}polyStroke6.png`,Ga=`${nt}rays.png`,hn=`${nt}ring.png`,Ra=`${nt}starThin6.png`,Ea={texture:[ja,hn],color:["white"],distance:[0,0],size:[750,1024],length:[0,2]},Ya={texture:[cn],color:["white"],distance:[0,0],size:[180,512],length:[1,1]},Xa={texture:[Ga],color:["white"],distance:[0,0],size:[180,512],length:[1,1]},Wa={texture:[Zn,za,hn,Ra],color:["white"],distance:[0,0],size:[180,512],length:[2,3]},[fr,dr]=[3679071,132442],qn=[Ea,Ya,Xa,Wa,{texture:[cn,Zn,hn,hr,ur],color:["dimgray","gray","darkgray",fr,dr],distance:[.5,2.5],size:[20,180],length:[5,21]},{texture:[cn,Zn,hn,hr,ur],color:["dimgray","gray","darkgray",fr,dr],distance:[-.6,-.1],size:[180,360],length:[0,5]}],un={color:"white",distance:0,size:512,texture:cn},pr=(o,e,t=void 0,n=void 0,i=un)=>{if(o!==void 0&&o.length>0&&(typeof t=="number"||typeof n<"u")){const a=gr(t??0,n??qn),l=a.length,f=o.length;return l>=f?a.map((u,d)=>Object.assign(u,e,d<f?o[d]:{})):o.map((u,d)=>Object.assign({},i,d<l?a[d]:{},e,u))}if(o!==void 0&&o.length>0){const a=Object.assign({},i,e);return o.map(l=>Object.assign({},a,l))}const r=n===void 0||n.length===0?qn:n;return gr(t??0,r).map(a=>Object.assign({},a,e))},Za=[Fa,Ba,Ua,Na,Va],mr=c.MathUtils.lerp,gr=(o=0,e=qn)=>{const n=new cr(o).choice(Za);return e.map((i,r)=>{const s=new cr(o*(r*7907+1)+(typeof i.seed=="number"?i.seed:0)),a=s.int(i.length[0],i.length[1]);return new Array(a).fill(0).map(()=>{const l=n(s.rand());return{texture:s.defaultChoice(i.texture,un.texture),size:mr(i.size[0],i.size[1],n(1-l)),distance:mr(i.distance[0],i.distance[1],l),color:s.defaultChoice(i.color,un.color)}})}).flat()};function qa(o){return Ka(o,(e,t)=>t in un&&e!==void 0)}function Ka(o,e){const t={};return Object.keys(o).forEach(n=>{e(o[n],n)&&(t[n]=o[n])}),t}const Qa=h.defineComponent({__name:"component",props:{scale:{default:1},elements:{default:void 0},seed:{default:void 0},seedProps:{default:void 0},color:{default:void 0},distance:{default:void 0},size:{default:void 0},texture:{default:void 0}},setup(o,{expose:e}){const t=o,n=h.shallowRef(),i=h.shallowRef([]),r=h.shallowRef(qa(t));e({value:n});const s=new c.TextureLoader,a=new Yt,l=[],f=()=>{var y,b,A;for(;l.length;)l.pop();(y=n.value)==null||y.children.forEach(_=>{"dispose"in _&&_.dispose()}),(b=n.value)==null||b.remove(...n.value.children),(A=n.value)==null||A.dispose()},u=y=>{if(typeof y.texture=="string"){const b=y.texture;y.texture=s.load(b),y.texture.name=b}return y.color=ae.normalizeColor(y.color),y},d=()=>{for(;i.value.length>l.length;){const b={...u(i.value[l.length])};l.push(b),a.addElement(b)}i.value.forEach((y,b)=>{const A=l[b],{texture:_,size:L,distance:I,color:S}=y;if(typeof _=="string"){if(A.texture.name!==_){A.texture.dispose();const g=_;A.texture=s.load(g),A.texture.name=g}}else A.texture!==_&&(A.texture.dispose(),A.texture=_);A.size=L,A.distance=I,A.color=ae.normalizeColor(S)}),m()},m=()=>{for(let y=i.value.length-1;y<l.length;y++)l[y].size=0;i.value.forEach((y,b)=>{l[b].size=y.size*t.scale})};return h.onUnmounted(()=>{f()}),h.onMounted(()=>{var y;(y=n.value)==null||y.add(a),i.value=pr(t.elements,r.value,t.seed,t.seedProps)}),h.watch(()=>[t.color,t.distance,t.size,t.texture],()=>{r.value={color:t.color,distance:t.distance,size:t.size,texture:t.texture}}),h.watch(()=>[r.value,t.elements,t.seed,t.seedProps],()=>{i.value=pr(t.elements,r.value,t.seed,t.seedProps)}),h.watch(()=>t.scale,()=>{m()}),h.watch(()=>i.value,()=>{d()}),(y,b)=>(h.openBlock(),h.createElementBlock("TresGroup",{ref_key:"lensflareRef",ref:n},null,512))}});function yr(o){const e=h.ref(null),{height:t,width:n,settings:i,depth:r}=h.isReactive(o)?h.toRefs(o):h.toRefs(h.reactive(o)),{onLoop:s}=ae.useRenderLoop(),{camera:a,renderer:l,scene:f,sizes:u}=ae.useTresContext();return h.watchEffect(()=>{var d;(d=e.value)==null||d.dispose(),e.value=new c.WebGLRenderTarget((n==null?void 0:n.value)||u.width.value,(t==null?void 0:t.value)||u.height.value,{minFilter:c.LinearFilter,magFilter:c.LinearFilter,type:c.HalfFloatType,...i==null?void 0:i.value}),r!=null&&r.value&&(e.value.depthTexture=new c.DepthTexture((n==null?void 0:n.value)||u.width.value,(t==null?void 0:t.value)||u.height.value,c.FloatType))}),s(()=>{l.value.setRenderTarget(e.value),l.value.clear(),l.value.render(f.value,a.value),l.value.setRenderTarget(null)}),h.onBeforeUnmount(()=>{var d;(d=e.value)==null||d.dispose()}),e}const Ja=h.defineComponent({__name:"component",props:{width:{},height:{},depth:{type:Boolean,default:!1},settings:{default:void 0}},setup(o,{expose:e}){const n=yr(o);return e({value:n}),()=>{}}}),_r=(o,e=16,t,n,i)=>{const r=new Float32Array(e*16),s=h.ref(new c.InterleavedBuffer(r,16));return(()=>{if(!o)return;const l=new Vs(o);n&&l.setWeightAttribute(n),l.build();const f=new c.Vector3,u=new c.Vector3,d=new c.Color,m=new c.Object3D;o.updateMatrixWorld(!0);for(let y=0;y<e;y++)l.sample(f,u,d),typeof i=="function"?i({dummy:m,sampledMesh:o,position:f,normal:u,color:d},y):m.position.copy(f),m.updateMatrix(),t&&t.setMatrixAt(y,m.matrix),m.matrix.toArray(s.value.array,y*16);t&&(t.instanceMatrix.needsUpdate=!0),s.value.needsUpdate=!0})(),{buffer:s}},Ha=h.defineComponent({__name:"component",props:{transform:{type:Function},weight:{},count:{},mesh:{},instanceMesh:{}},setup(o,{expose:e}){const t=o,n=h.ref(),i=h.ref(),r=h.ref();return h.watchEffect(()=>{var s,a;i.value=t.instanceMesh??((s=n.value)==null?void 0:s.children.find(l=>l.hasOwnProperty("instanceMatrix"))),r.value=t.mesh??((a=n.value)==null?void 0:a.children.find(l=>l.type==="Mesh")),_r(r.value,t.count,i.value,t.weight,t.transform)}),e({samplerRef:n}),(s,a)=>(h.openBlock(),h.createElementBlock("TresGroup",{ref_key:"samplerRef",ref:n},[h.renderSlot(s.$slots,"default")],512))}}),fn={sunset:"venice/venice_sunset_1k.hdr",studio:"studio/poly_haven_studio_1k.hdr",city:"city/canary_wharf_1k.hdr",umbrellas:"outdoor/outdoor_umbrellas_1k.hdr",night:"outdoor/satara_night_1k.hdr",forest:"outood/mossy_forest_1k.hdr",snow:"outdoor/snowy_forest_path_01_1k.hdr",dawn:"kiara/kiara_1_dawn_1k.hdr",hangar:"indoor/small_hangar_01_1k.hdr",urban:"indoor/abandoned_games_room_02_1k.hdr",modern:"city/modern_buildings_2_1k.hdr",shangai:"city/shanghai_bund_1k.hdr"},$a="https://raw.githubusercontent.com/Tresjs/assets/main/textures/hdr/";async function vr(o){const{scene:e}=ae.useTresContext(),{preset:t,blur:n,files:i=[],path:r="",background:s}=h.toRefs(o),a=h.ref(),l=h.computed(()=>Array.isArray(i.value)),f=h.computed(()=>l.value?c.CubeTextureLoader:er),u=h.ref(null);return h.watch(()=>[i,r],async([d,m])=>{if(d.value.length>0&&!t.value){try{u.value=await ae.useLoader(h.unref(f),l.value?[h.unref(d)]:h.unref(d),y=>{m.value&&y.setPath(h.unref(m))})}catch(y){throw new Error(`Failed to load environment map: ${y}`)}u.value&&(a.value=l.value?u.value[0]:u.value,a.value.mapping=l.value?c.CubeReflectionMapping:c.EquirectangularReflectionMapping)}},{immediate:!0}),h.watch(()=>a.value,d=>{e.value&&(e.value.environment=d)},{immediate:!0}),h.watch(()=>[s.value,a.value],([d,m])=>{e.value&&(e.value.background=d?m:void 0)},{immediate:!0}),h.watch(()=>n==null?void 0:n.value,d=>{e.value&&(e.value.backgroundBlurriness=d)},{immediate:!0}),h.watch(t,async d=>{if(d&&d in fn){const m=$a,y=fn[d];try{u.value=await ae.useLoader(er,y,b=>{m&&b.setPath(m)})}catch(b){throw new Error(`Failed to load environment map: ${b}`)}u.value&&(a.value=u.value,a.value.mapping=c.EquirectangularReflectionMapping)}else if(d&&!(d in fn))throw new Error(`Preset must be one of: ${Object.keys(fn).join(", ")}`)},{immediate:!0}),{texture:a}}let dn=null;function el(o,e){return t=>{e&&e(t),o.draco&&(dn||(dn=new sa),dn.setDecoderPath(o.decoderPath||"https://www.gstatic.com/draco/versioned/decoders/1.4.3/"),t.setDRACOLoader(dn))}}async function wr(o,e={draco:!1},t){return await ae.useLoader($s,o,el(e,t))}const tl=["object"],nl=h.defineComponent({__name:"component",props:{path:{},draco:{type:Boolean,default:!1},decoderPath:{default:"https://www.gstatic.com/draco/versioned/decoders/1.4.1/"}},async setup(o,{expose:e}){let t,n;const i=o,r=h.ref();e({value:r});const{scene:s}=([t,n]=h.withAsyncContext(()=>wr(i.path,{draco:i.draco,decoderPath:i.decoderPath})),t=await t,n(),t);return(a,l)=>(h.openBlock(),h.createElementBlock("primitive",h.mergeProps({ref_key:"modelRef",ref:r,object:h.unref(s)},a.$attrs),null,16,tl))}});async function xr(o){return await ae.useLoader(Ro,o)}const il=["object"],rl=h.defineComponent({__name:"component",props:{path:{}},async setup(o,{expose:e}){let t,n;const i=o,r=h.ref();e({value:r});const s=([t,n]=h.withAsyncContext(()=>xr(i.path)),t=await t,n(),t);return(a,l)=>(h.openBlock(),h.createElementBlock("primitive",h.mergeProps({ref_key:"modelRef",ref:r,object:h.unref(s)},a.$attrs),null,16,il))}}),sl=["geometry","render-order"],ol=h.defineComponent({__name:"component",props:{src:{},skipStrokes:{type:Boolean,default:!1},skipFills:{type:Boolean,default:!1},fillMaterial:{},strokeMaterial:{},fillMeshProps:{},strokeMeshProps:{},depth:{default:"renderOrder"}},setup(o,{expose:e}){const t=o,{src:n,skipStrokes:i,skipFills:r,fillMaterial:s,strokeMaterial:a,fillMeshProps:l,strokeMeshProps:f,depth:u}=h.toRefs(t),d=h.shallowRef(),m=h.shallowRef([]),y=h.shallowRef([]);e({value:d}),h.watchEffect(async()=>b(n.value).then(L=>y.value=L.paths)),h.watch([r,i,s,a,y],_);async function b(L){const I=L.startsWith("<svg")?encodeURI(`data:image/svg+xml;utf8,${L}`):L;return ae.useLoader(Rt,I)}h.onUnmounted(A);function A(){m.value.forEach(L=>L.geometry.dispose())}function _(){var O,x,C;A();const L=[],[I,S]=(()=>{const p={flat:!1,renderOrder:!1,offsetZ:!0},w={flat:0,renderOrder:0,offsetZ:.025},v=u.value;return typeof v=="number"?[!0,v]:[p[v],w[v]]})();let g=0;for(const p of y.value){const w=((O=p.userData)==null?void 0:O.style)??{},v=Object.assign({color:w.fill,opacity:w.fillOpacity,transparent:!0,side:c.DoubleSide,depthWrite:I},t.fillMaterial);if(!r.value&&w.fill!==void 0&&w.fill!=="none")for(const T of Rt.createShapes(p)){const k=new c.ShapeGeometry(T);k.scale(1,-1,1),S&&k.translate(0,0,g++*S),L.push({geometry:k,material:v,isStroke:!1})}if(!i.value&&w.stroke!==void 0&&w.stroke!=="none"){const T=Object.assign({color:(x=p.userData)==null?void 0:x.style.stroke,opacity:(C=p.userData)==null?void 0:C.style.strokeOpacity,transparent:!0,side:c.DoubleSide,depthWrite:I},t.strokeMaterial);for(const k of p.subPaths){const Q=k.getPoints().map($=>new c.Vector2($.x,-$.y)),Y=Rt.pointsToStroke(Q,w||"none");S&&Y.translate(0,0,g++*S),L.push({geometry:Y,material:T,isStroke:!0})}}}m.value=L}return(L,I)=>(h.openBlock(),h.createElementBlock("TresGroup",{ref_key:"svgRef",ref:d},[(h.openBlock(!0),h.createElementBlock(h.Fragment,null,h.renderList(m.value,({geometry:S,material:g,isStroke:O},x)=>(h.openBlock(),h.createElementBlock("TresMesh",h.mergeProps({key:`${x}`},O?h.unref(f):h.unref(l),{geometry:S,"render-order":h.unref(u)==="renderOrder"?x:0}),[h.createElementVNode("TresMeshBasicMaterial",h.normalizeProps(h.guardReactiveProps(g)),null,16)],16,sl))),128))],512))}}),br="[TresJS - Cientos ▲ ■ ♥] ";function Kn(){function o(n,i){console.error(`${br} ${n}`,i||"")}function e(n){console.warn(`${br} ${n}`)}function t(n,i){}return{logError:o,logWarning:e,logMessage:t}}let Qn=0;function al(){const o=h.ref(!1),e=h.ref(0),t=h.ref([]),{logError:n}=Kn();return new Promise(i=>{c.DefaultLoadingManager.onStart=()=>{o.value=!1},c.DefaultLoadingManager.onLoad=()=>{o.value=!0},c.DefaultLoadingManager.onProgress=(r,s,a)=>{s===a&&(Qn=a,o.value=!0,t.value.push(r)),e.value=Math.round((s-Qn)/(a-Qn)*100||100,2)},c.DefaultLoadingManager.onError=r=>{n("Error loading assets",new Error(r)),o.value=!0},i({items:t,hasFinishLoading:o,progress:e})})}async function ll(o,e){const{logError:t}=Kn();if(!o)return t("Error no path provided");const{unsuspend:n,start:i,crossOrigin:r,muted:s,loop:a,...l}={unsuspend:"loadedmetadata",crossOrigin:"Anonymous",muted:!0,loop:!0,start:!0,playsInline:!0,...e};function f(){return new Promise((u,d)=>{const m=Object.assign(document.createElement("video"),{src:typeof o=="string"&&o||void 0,crossOrigin:r,loop:a,muted:s,autoplay:!0,...l}),y=new c.VideoTexture(m);return m.addEventListener(n,()=>u(y)),m.addEventListener("error",()=>d()),y})}try{const u=await f();return i&&u.image&&u.image.play(),u}catch{t("Error loading resource")}}const cl=["target","auto-rotate","auto-rotate-speed","enable-damping","damping-factor","enable-pan","key-pan-speed","keys","max-azimuth-angle","min-azimuth-angle","max-polar-angle","min-polar-angle","min-distance","max-distance","min-zoom","max-zoom","touches","enable-zoom","zoom-speed","enable-rotate","rotate-speed","args"],hl=h.defineComponent({__name:"OrbitControls",props:{makeDefault:{type:Boolean,default:!1},camera:{},domElement:{},target:{default:()=>[0,0,0]},enableDamping:{type:Boolean,default:!1},dampingFactor:{default:.05},autoRotate:{type:Boolean,default:!1},autoRotateSpeed:{default:2},enablePan:{type:Boolean,default:!0},keyPanSpeed:{default:7},keys:{},maxAzimuthAngle:{default:1/0},minAzimuthAngle:{default:-1/0},maxPolarAngle:{default:Math.PI},minPolarAngle:{default:0},minDistance:{default:0},maxDistance:{default:1/0},minZoom:{default:0},maxZoom:{default:1/0},touches:{default:()=>({ONE:c.TOUCH.ROTATE,TWO:c.TOUCH.DOLLY_PAN})},enableZoom:{type:Boolean,default:!0},zoomSpeed:{default:1},enableRotate:{type:Boolean,default:!0},rotateSpeed:{default:1}},emits:["change","start","end"],setup(o,{expose:e,emit:t}){const n=o,i=t,{makeDefault:r,autoRotate:s,autoRotateSpeed:a,enableDamping:l,dampingFactor:f,enablePan:u,keyPanSpeed:d,maxAzimuthAngle:m,minAzimuthAngle:y,maxPolarAngle:b,minPolarAngle:A,minDistance:_,maxDistance:L,minZoom:I,maxZoom:S,enableZoom:g,zoomSpeed:O,enableRotate:x,touches:C,rotateSpeed:p,target:w}=h.toRefs(n),{camera:v,renderer:T,extend:k,controls:Q}=ae.useTresContext(),Y=h.ref(null);k({OrbitControls:Ni}),h.watch(Y,q=>{$(),q&&r.value?Q.value=q:Q.value=null});function $(){Le(Y.value,"change",()=>i("change",Y.value)),Le(Y.value,"start",()=>i("start",Y.value)),Le(Y.value,"end",()=>i("end",Y.value))}const{onLoop:ee}=ae.useRenderLoop();return ee(()=>{Y.value&&(l.value||s.value)&&Y.value.update()}),h.onUnmounted(()=>{Y.value&&Y.value.dispose()}),e({value:Y}),(q,Z)=>(q.camera||h.unref(v))&&(q.domElement||h.unref(T))?(h.openBlock(),h.createElementBlock("TresOrbitControls",{key:0,ref_key:"controlsRef",ref:Y,target:h.unref(w),"auto-rotate":h.unref(s),"auto-rotate-speed":h.unref(a),"enable-damping":h.unref(l),"damping-factor":h.unref(f),"enable-pan":h.unref(u),"key-pan-speed":h.unref(d),keys:q.keys,"max-azimuth-angle":h.unref(m),"min-azimuth-angle":h.unref(y),"max-polar-angle":h.unref(b),"min-polar-angle":h.unref(A),"min-distance":h.unref(_),"max-distance":h.unref(L),"min-zoom":h.unref(I),"max-zoom":h.unref(S),touches:h.unref(C),"enable-zoom":h.unref(g),"zoom-speed":h.unref(O),"enable-rotate":h.unref(x),"rotate-speed":h.unref(p),args:[q.camera||h.unref(v),q.domElement||h.unref(T).domElement]},null,8,cl)):h.createCommentVNode("",!0)}}),ul=5,fl=6,dl=.3,pl=h.defineComponent({__name:"KeyboardControls",props:{forward:{default:()=>["w","W"]},back:{default:()=>["s","S"]},left:{default:()=>["a","A"]},right:{default:()=>["d","D"]},jump:{default:()=>[" "]},gravity:{default:9.8},moveSpeed:{default:.1},headBobbing:{type:Boolean,default:!1},is2D:{type:Boolean,default:!1}},setup(o){var v;const e=o,{forward:t,back:n,left:i,right:r,jump:s,gravity:a,moveSpeed:l,headBobbing:f,is2D:u}=h.toRefs(e),{camera:d,controls:m}=ae.useTresContext(),y=h.ref(0),b=h.ref(0),A=h.ref(!1),_=h.ref(!1),L=h.ref(0),I=h.shallowRef(),S=u.value?"y":"z",g=((v=d.value.position)==null?void 0:v.y)||0;bt(t.value,()=>{A.value=!0,b.value=l.value},{eventName:"keydown"}),bt(n.value,()=>{A.value=!0,b.value=-l.value},{eventName:"keydown"}),bt([...t.value,...n.value],()=>{A.value=!1,b.value=0},{eventName:"keyup"}),bt(i.value,()=>{A.value=!0,y.value=-l.value},{eventName:"keydown"}),bt(r.value,()=>{A.value=!0,y.value=l.value},{eventName:"keydown"}),bt([...i.value,...r.value],()=>{A.value=!1,y.value=0},{eventName:"keyup"}),bt(s.value,()=>{_.value||(L.value=Date.now()),_.value=!0});const O=T=>A.value?Math.sin(T*ul)*dl+g:g,x=()=>(Date.now()-L.value)/1e3*3,C=T=>g+fl*T-.5*a.value*T**2,p=()=>{if(_.value){const T=C(x());return T<=g&&(_.value=!1),T}return 0},{onLoop:w}=ae.useRenderLoop();return w(({elapsed:T})=>{var k;m.value instanceof Bn&&((k=m.value)!=null&&k.isLocked)?(m.value.moveForward(b.value),m.value.moveRight(y.value),d.value.position&&(d.value.position.y=f.value?O(T):g,d.value.position.y+=p())):I.value.children.length>0&&!(m.value instanceof Bn)&&(I.value.position.x+=y.value,I.value.position[S]+=u.value?b.value:-b.value)}),(T,k)=>(h.openBlock(),h.createElementBlock("TresGroup",{ref_key:"wrapperRef",ref:I},[h.renderSlot(T.$slots,"default")],512))}}),ml=["object","args","mode","enabled","axis","translation-snap","rotation-snap","scale-snap","space","size","show-x","show-y","show-z"],gl=h.defineComponent({__name:"TransformControls",props:{object:{},mode:{default:"translate"},enabled:{type:Boolean,default:!0},axis:{default:"XYZ"},translationSnap:{},rotationSnap:{},scaleSnap:{},space:{default:"world"},size:{default:1},showX:{type:Boolean,default:!0},showY:{type:Boolean,default:!0},showZ:{type:Boolean,default:!0}},emits:["dragging","change","mouseDown","mouseUp","objectChange"],setup(o,{emit:e}){const t=o,n=e,{object:i,mode:r,enabled:s,axis:a,translationSnap:l,rotationSnap:f,scaleSnap:u,space:d,size:m,showX:y,showY:b,showZ:A}=h.toRefs(t),_=h.shallowRef(),{controls:L,camera:I,renderer:S,extend:g}=ae.useTresContext();g({TransformControls:Gs});const O=C=>{L.value&&(L.value.enabled=!C.value),n("dragging",C.value)};function x(){Le(_.value,"change",()=>n("change")),Le(_.value,"dragging-changed",O),Le(_.value,"mouseDown",()=>n("mouseDown")),Le(_.value,"mouseUp",()=>n("mouseUp")),Le(_.value,"objectChange",()=>n("objectChange"))}return h.watchEffect(()=>{_.value&&x()}),h.onUnmounted(()=>{_.value&&_.value.dispose()}),(C,p)=>h.unref(I)&&h.unref(S)?(h.openBlock(),h.createElementBlock("TresTransformControls",{key:0,ref_key:"controlsRef",ref:_,object:h.unref(i),args:[h.unref(I),h.unref(S).domElement],mode:h.unref(r),enabled:h.unref(s),axis:h.unref(a),"translation-snap":h.unref(l),"rotation-snap":h.unref(f),"scale-snap":h.unref(u),space:h.unref(d),size:h.unref(m),"show-x":h.unref(y),"show-y":h.unref(b),"show-z":h.unref(A),visible:!0},null,8,ml)):h.createCommentVNode("",!0)}}),yl=["args"],_l=h.defineComponent({__name:"PointerLockControls",props:{makeDefault:{type:Boolean,default:!1},camera:{},domElement:{},selector:{}},emits:["isLock","change"],setup(o,{expose:e,emit:t}){const n=o,i=t,{camera:r,renderer:s,extend:a,controls:l}=ae.useTresContext(),f=h.ref(null);let u;a({PointerLockControls:Bn});const d=m=>{i("isLock",m)};return h.watch(f,m=>{m&&n.makeDefault?l.value=m:l.value=null;const y=document.getElementById(n.selector||"");u=y||s.value.domElement,Le(l.value,"change",()=>i("change",l.value)),Le(u,"click",()=>{var b,A,_;(b=l.value)==null||b.lock(),(A=l.value)==null||A.addEventListener("lock",()=>d(!0)),(_=l.value)==null||_.addEventListener("unlock",()=>d(!1))})}),h.onUnmounted(()=>{var m,y;(m=l.value)==null||m.removeEventListener("lock",()=>d(!0)),(y=l.value)==null||y.removeEventListener("unlock",()=>d(!1)),f.value&&f.value.dispose()}),e({value:l}),(m,y)=>(m.camera||h.unref(r))&&(m.domElement||h.unref(s))?(h.openBlock(),h.createElementBlock("TresPointerLockControls",{key:0,ref_key:"controlsRef",ref:f,args:[m.camera||h.unref(r),m.domElement||h.unref(s).domElement]},null,8,yl)):h.createCommentVNode("",!0)}}),vl=["args"],wl=h.defineComponent({__name:"MapControls",props:{makeDefault:{type:Boolean,default:!1},camera:{},domElement:{}},setup(o){const e=o,{camera:t,renderer:n,extend:i,controls:r}=ae.useTresContext(),s=h.ref(null);return i({MapControls:Hs}),h.watch(r,a=>{a&&e.makeDefault?r.value=a:r.value=null}),h.onUnmounted(()=>{s.value&&s.value.dispose()}),(a,l)=>(a.camera||h.unref(t))&&(a.domElement||h.unref(n))?(h.openBlock(),h.createElementBlock("TresMapControls",{key:0,ref_key:"controlsRef",ref:s,args:[a.camera||h.unref(t),a.domElement||h.unref(n).domElement]},null,8,vl)):h.createCommentVNode("",!0)}}),xl=h.defineComponent({__name:"ScrollControls",props:{pages:{default:4},distance:{default:4},smoothScroll:{default:.1},horizontal:{type:Boolean,default:!1},htmlScroll:{type:Boolean,default:!1}},emits:["update:modelValue"],setup(o,{emit:e}){const t=o,n=e,{logWarning:i}=ae.useLogger();t.smoothScroll<0&&i("SmoothControl must be greater than zero"),t.pages<0&&i("Pages must be greater than zero");const{camera:r,controls:s,renderer:a}=ae.useTresContext(),l=h.shallowRef(),f=document.createElement("div"),{y:u}=Ia(),{x:d,y:m,isScrolling:y}=La(f),{height:b,width:A}=or();let _=0;const L=h.ref(!1),I=h.ref(0),S=h.ref(0),g=h.ref(0),O=t.horizontal?"x":"y",x=h.watch(r,p=>{if(L.value){x();return}_=t.horizontal?(p==null?void 0:p.position.x)||0:(p==null?void 0:p.position.y)||0,L.value=!0},{immediate:!0});h.watch(y,p=>{s.value&&(s.value.enabled=!p)},{immediate:!0}),h.watch(u,p=>{!y.value&&!t.htmlScroll||(S.value=p/b.value/(g.value/b.value-1),I.value=-1*S.value,n("update:modelValue",S.value))}),h.watch(m,p=>{S.value=p/b.value/(g.value/b.value),I.value=-1*S.value,n("update:modelValue",S.value)}),h.watch(d,p=>{S.value=p/A.value/(g.value/A.value-1),I.value=+S.value,n("update:modelValue",S.value)}),h.watch(a,p=>{var v,T;const w=p==null?void 0:p.domElement;if(t.htmlScroll&&(p!=null&&p.domElement))w!=null&&w.style.width&&(w!=null&&w.style.position)&&(w!=null&&w.style.top)&&(w!=null&&w.style.left)&&(w.style.width="100%",w.style.position="fixed",w.style.zIndex=" -99999",w.style.top="0",w.style.left="0"),g.value=document.body.scrollHeight;else{const k=document.createElement("div"),Q=document.createElement("div");f.style[t.horizontal?"overflowX":"overflowY"]="auto",f.style[t.horizontal?"overflowY":"overflowX"]="hidden",f.style.position="absolute",f.style.width="100%",f.style.height=" 100%",f.style.top="0",f.style.left="0",f.classList.add("scrollContainer"),k.style.position="sticky",k.style.top="0px",k.style.left="0px",k.style.width="100%",k.style.height="100%",k.style.overflow="hidden",f.appendChild(k),Q.style.height=t.horizontal?"100%":`${b.value*t.pages}px`,Q.style.width=t.horizontal?`${A.value*t.pages}px`:"100vw",Q.style.pointerEvents="none",w.style.position="fixed",w.style.zIndex="0",w!=null&&w.style.width&&(w.style.width="100%"),f.appendChild(Q),p.domElement.parentNode.style.position="relative",(T=(v=p==null?void 0:p.domElement)==null?void 0:v.parentNode)==null||T.appendChild(f),g.value=t.horizontal?A.value*t.pages:b.value*t.pages}},{immediate:!0});const{onLoop:C}=ae.useRenderLoop();return C(()=>{var p;if((p=r.value)!=null&&p.position){const w=(I.value*t.distance-r.value.position[O]+_)*t.smoothScroll;r.value.position[O]+=w,l.value.children.length>0&&(l.value.position[O]+=w)}}),(p,w)=>(h.openBlock(),h.createElementBlock("TresGroup",{ref_key:"wrapperRef",ref:l},[h.renderSlot(p.$slots,"default")],512))}});/*!
|
|
185
229
|
* camera-controls
|
|
186
230
|
* https://github.com/yomotsu/camera-controls
|
|
187
231
|
* (c) 2017 @yomotsu
|
|
188
232
|
* Released under the MIT License.
|
|
189
|
-
*/const fe={LEFT:1,RIGHT:2,MIDDLE:4},Q=Object.freeze({NONE:0,ROTATE:1,TRUCK:2,OFFSET:4,DOLLY:8,ZOOM:16,TOUCH_ROTATE:32,TOUCH_TRUCK:64,TOUCH_OFFSET:128,TOUCH_DOLLY:256,TOUCH_ZOOM:512,TOUCH_DOLLY_TRUCK:1024,TOUCH_DOLLY_OFFSET:2048,TOUCH_DOLLY_ROTATE:4096,TOUCH_ZOOM_TRUCK:8192,TOUCH_ZOOM_OFFSET:16384,TOUCH_ZOOM_ROTATE:32768}),Tt={NONE:0,IN:1,OUT:-1};function bt(o){return o.isPerspectiveCamera}function ft(o){return o.isOrthographicCamera}const Ot=Math.PI*2,ys=Math.PI/2,_s=1e-5,Rt=Math.PI/180;function Ze(o,e,t){return Math.max(e,Math.min(t,o))}function Pe(o,e=_s){return Math.abs(o)<e}function Se(o,e,t=_s){return Pe(o-e,t)}function vs(o,e){return Math.round(o/e)*e}function Et(o){return isFinite(o)?o:o<0?-Number.MAX_VALUE:Number.MAX_VALUE}function Yt(o){return Math.abs(o)<Number.MAX_VALUE?o:o*(1/0)}function un(o,e,t,n,i=1/0,s){n=Math.max(1e-4,n);const r=2/n,a=r*s,l=1/(1+a+.48*a*a+.235*a*a*a);let f=o-e;const h=e,d=i*n;f=Ze(f,-d,d),e=o-f;const m=(t.value+r*f)*s;t.value=(t.value-r*m)*l;let y=e+(f+m)*l;return h-o>0==y>h&&(y=h,t.value=(y-h)/s),y}function ws(o,e,t,n,i=1/0,s,r){n=Math.max(1e-4,n);const a=2/n,l=a*s,f=1/(1+l+.48*l*l+.235*l*l*l);let h=e.x,d=e.y,m=e.z,y=o.x-h,M=o.y-d,S=o.z-m;const v=h,L=d,I=m,A=i*n,g=A*A,O=y*y+M*M+S*S;if(O>g){const ee=Math.sqrt(O);y=y/ee*A,M=M/ee*A,S=S/ee*A}h=o.x-y,d=o.y-M,m=o.z-S;const x=(t.x+a*y)*s,C=(t.y+a*M)*s,p=(t.z+a*S)*s;t.x=(t.x-a*x)*f,t.y=(t.y-a*C)*f,t.z=(t.z-a*p)*f,r.x=h+(y+x)*f,r.y=d+(M+C)*f,r.z=m+(S+p)*f;const w=v-o.x,_=L-o.y,T=I-o.z,F=r.x-v,J=r.y-L,X=r.z-I;return w*F+_*J+T*X>0&&(r.x=v,r.y=L,r.z=I,t.x=(r.x-v)/s,t.y=(r.y-L)/s,t.z=(r.z-I)/s),r}function qn(o,e){e.set(0,0),o.forEach(t=>{e.x+=t.clientX,e.y+=t.clientY}),e.x/=o.length,e.y/=o.length}function Kn(o,e){return ft(o)?(console.warn(`${e} is not supported in OrthographicCamera`),!0):!1}class fl{constructor(){this._listeners={}}addEventListener(e,t){const n=this._listeners;n[e]===void 0&&(n[e]=[]),n[e].indexOf(t)===-1&&n[e].push(t)}hasEventListener(e,t){const n=this._listeners;return n[e]!==void 0&&n[e].indexOf(t)!==-1}removeEventListener(e,t){const i=this._listeners[e];if(i!==void 0){const s=i.indexOf(t);s!==-1&&i.splice(s,1)}}removeAllEventListeners(e){if(!e){this._listeners={};return}Array.isArray(this._listeners[e])&&(this._listeners[e].length=0)}dispatchEvent(e){const n=this._listeners[e.type];if(n!==void 0){e.target=this;const i=n.slice(0);for(let s=0,r=i.length;s<r;s++)i[s].call(this,e)}}}const dl="2.7.3",fn=1/8,xs=typeof window<"u",pl=xs&&/Mac/.test(navigator.platform),ml=!(xs&&"PointerEvent"in window);let he,bs,dn,Qn,ze,ge,be,It,Xt,Qe,Je,Mt,Ms,Ss,Ye,Wt,Dt,As,Jn,Ps,Hn,$n,pn;class Zt extends fl{static install(e){he=e.THREE,bs=Object.freeze(new he.Vector3(0,0,0)),dn=Object.freeze(new he.Vector3(0,1,0)),Qn=Object.freeze(new he.Vector3(0,0,1)),ze=new he.Vector2,ge=new he.Vector3,be=new he.Vector3,It=new he.Vector3,Xt=new he.Vector3,Qe=new he.Vector3,Je=new he.Vector3,Mt=new he.Vector3,Ms=new he.Vector3,Ss=new he.Vector3,Ye=new he.Spherical,Wt=new he.Spherical,Dt=new he.Box3,As=new he.Box3,Jn=new he.Sphere,Ps=new he.Quaternion,Hn=new he.Quaternion,$n=new he.Matrix4,pn=new he.Raycaster}static get ACTION(){return Q}constructor(e,t){super(),this.minPolarAngle=0,this.maxPolarAngle=Math.PI,this.minAzimuthAngle=-1/0,this.maxAzimuthAngle=1/0,this.minDistance=Number.EPSILON,this.maxDistance=1/0,this.infinityDolly=!1,this.minZoom=.01,this.maxZoom=1/0,this.smoothTime=.25,this.draggingSmoothTime=.125,this.maxSpeed=1/0,this.azimuthRotateSpeed=1,this.polarRotateSpeed=1,this.dollySpeed=1,this.dollyDragInverted=!1,this.truckSpeed=2,this.dollyToCursor=!1,this.dragToOffset=!1,this.verticalDragToForward=!1,this.boundaryFriction=0,this.restThreshold=.01,this.colliderMeshes=[],this.cancel=()=>{},this._enabled=!0,this._state=Q.NONE,this._viewport=null,this._changedDolly=0,this._changedZoom=0,this._hasRested=!0,this._boundaryEnclosesCamera=!1,this._needsUpdate=!0,this._updatedLastTime=!1,this._elementRect=new DOMRect,this._isDragging=!1,this._dragNeedsUpdate=!0,this._activePointers=[],this._lockedPointer=null,this._interactiveArea=new DOMRect(0,0,1,1),this._isUserControllingRotate=!1,this._isUserControllingDolly=!1,this._isUserControllingTruck=!1,this._isUserControllingOffset=!1,this._isUserControllingZoom=!1,this._lastDollyDirection=Tt.NONE,this._thetaVelocity={value:0},this._phiVelocity={value:0},this._radiusVelocity={value:0},this._targetVelocity=new he.Vector3,this._focalOffsetVelocity=new he.Vector3,this._zoomVelocity={value:0},this._truckInternal=(g,O,x)=>{let C,p;if(bt(this._camera)){const w=ge.copy(this._camera.position).sub(this._target),_=this._camera.getEffectiveFOV()*Rt,T=w.length()*Math.tan(_*.5);C=this.truckSpeed*g*T/this._elementRect.height,p=this.truckSpeed*O*T/this._elementRect.height}else if(ft(this._camera)){const w=this._camera;C=g*(w.right-w.left)/w.zoom/this._elementRect.width,p=O*(w.top-w.bottom)/w.zoom/this._elementRect.height}else return;this.verticalDragToForward?(x?this.setFocalOffset(this._focalOffsetEnd.x+C,this._focalOffsetEnd.y,this._focalOffsetEnd.z,!0):this.truck(C,0,!0),this.forward(-p,!0)):x?this.setFocalOffset(this._focalOffsetEnd.x+C,this._focalOffsetEnd.y+p,this._focalOffsetEnd.z,!0):this.truck(C,p,!0)},this._rotateInternal=(g,O)=>{const x=Ot*this.azimuthRotateSpeed*g/this._elementRect.height,C=Ot*this.polarRotateSpeed*O/this._elementRect.height;this.rotate(x,C,!0)},this._dollyInternal=(g,O,x)=>{const C=Math.pow(.95,-g*this.dollySpeed),p=this._sphericalEnd.radius,w=this._sphericalEnd.radius*C,_=Ze(w,this.minDistance,this.maxDistance),T=_-w;this.infinityDolly&&this.dollyToCursor?this._dollyToNoClamp(w,!0):this.infinityDolly&&!this.dollyToCursor?(this.dollyInFixed(T,!0),this._dollyToNoClamp(_,!0)):this._dollyToNoClamp(_,!0),this.dollyToCursor&&(this._changedDolly+=(this.infinityDolly?w:_)-p,this._dollyControlCoord.set(O,x)),this._lastDollyDirection=Math.sign(-g)},this._zoomInternal=(g,O,x)=>{const C=Math.pow(.95,g*this.dollySpeed),p=this._zoom,w=this._zoom*C;this.zoomTo(w,!0),this.dollyToCursor&&(this._changedZoom+=w-p,this._dollyControlCoord.set(O,x))},typeof he>"u"&&console.error("camera-controls: `THREE` is undefined. You must first run `CameraControls.install( { THREE: THREE } )`. Check the docs for further information."),this._camera=e,this._yAxisUpSpace=new he.Quaternion().setFromUnitVectors(this._camera.up,dn),this._yAxisUpSpaceInverse=this._yAxisUpSpace.clone().invert(),this._state=Q.NONE,this._target=new he.Vector3,this._targetEnd=this._target.clone(),this._focalOffset=new he.Vector3,this._focalOffsetEnd=this._focalOffset.clone(),this._spherical=new he.Spherical().setFromVector3(ge.copy(this._camera.position).applyQuaternion(this._yAxisUpSpace)),this._sphericalEnd=this._spherical.clone(),this._lastDistance=this._spherical.radius,this._zoom=this._camera.zoom,this._zoomEnd=this._zoom,this._lastZoom=this._zoom,this._nearPlaneCorners=[new he.Vector3,new he.Vector3,new he.Vector3,new he.Vector3],this._updateNearPlaneCorners(),this._boundary=new he.Box3(new he.Vector3(-1/0,-1/0,-1/0),new he.Vector3(1/0,1/0,1/0)),this._cameraUp0=this._camera.up.clone(),this._target0=this._target.clone(),this._position0=this._camera.position.clone(),this._zoom0=this._zoom,this._focalOffset0=this._focalOffset.clone(),this._dollyControlCoord=new he.Vector2,this.mouseButtons={left:Q.ROTATE,middle:Q.DOLLY,right:Q.TRUCK,wheel:bt(this._camera)?Q.DOLLY:ft(this._camera)?Q.ZOOM:Q.NONE},this.touches={one:Q.TOUCH_ROTATE,two:bt(this._camera)?Q.TOUCH_DOLLY_TRUCK:ft(this._camera)?Q.TOUCH_ZOOM_TRUCK:Q.NONE,three:Q.TOUCH_TRUCK};const n=new he.Vector2,i=new he.Vector2,s=new he.Vector2,r=g=>{if(!this._enabled||!this._domElement)return;if(this._interactiveArea.left!==0||this._interactiveArea.top!==0||this._interactiveArea.width!==1||this._interactiveArea.height!==1){const C=this._domElement.getBoundingClientRect(),p=g.clientX/C.width,w=g.clientY/C.height;if(p<this._interactiveArea.left||p>this._interactiveArea.right||w<this._interactiveArea.top||w>this._interactiveArea.bottom)return}const O=g.pointerType!=="mouse"?null:(g.buttons&fe.LEFT)===fe.LEFT?fe.LEFT:(g.buttons&fe.MIDDLE)===fe.MIDDLE?fe.MIDDLE:(g.buttons&fe.RIGHT)===fe.RIGHT?fe.RIGHT:null;if(O!==null){const C=this._findPointerByMouseButton(O);C&&this._disposePointer(C)}if((g.buttons&fe.LEFT)===fe.LEFT&&this._lockedPointer)return;const x={pointerId:g.pointerId,clientX:g.clientX,clientY:g.clientY,deltaX:0,deltaY:0,mouseButton:O};this._activePointers.push(x),this._domElement.ownerDocument.removeEventListener("pointermove",l,{passive:!1}),this._domElement.ownerDocument.removeEventListener("pointerup",h),this._domElement.ownerDocument.addEventListener("pointermove",l,{passive:!1}),this._domElement.ownerDocument.addEventListener("pointerup",h),this._isDragging=!0,S(g)},a=g=>{if(!this._enabled||!this._domElement||this._lockedPointer)return;if(this._interactiveArea.left!==0||this._interactiveArea.top!==0||this._interactiveArea.width!==1||this._interactiveArea.height!==1){const C=this._domElement.getBoundingClientRect(),p=g.clientX/C.width,w=g.clientY/C.height;if(p<this._interactiveArea.left||p>this._interactiveArea.right||w<this._interactiveArea.top||w>this._interactiveArea.bottom)return}const O=(g.buttons&fe.LEFT)===fe.LEFT?fe.LEFT:(g.buttons&fe.MIDDLE)===fe.MIDDLE?fe.MIDDLE:(g.buttons&fe.RIGHT)===fe.RIGHT?fe.RIGHT:null;if(O!==null){const C=this._findPointerByMouseButton(O);C&&this._disposePointer(C)}const x={pointerId:1,clientX:g.clientX,clientY:g.clientY,deltaX:0,deltaY:0,mouseButton:(g.buttons&fe.LEFT)===fe.LEFT?fe.LEFT:(g.buttons&fe.MIDDLE)===fe.LEFT?fe.MIDDLE:(g.buttons&fe.RIGHT)===fe.LEFT?fe.RIGHT:null};this._activePointers.push(x),this._domElement.ownerDocument.removeEventListener("mousemove",f),this._domElement.ownerDocument.removeEventListener("mouseup",d),this._domElement.ownerDocument.addEventListener("mousemove",f),this._domElement.ownerDocument.addEventListener("mouseup",d),this._isDragging=!0,S(g)},l=g=>{g.cancelable&&g.preventDefault();const O=g.pointerId,x=this._lockedPointer||this._findPointerById(O);if(x){if(x.clientX=g.clientX,x.clientY=g.clientY,x.deltaX=g.movementX,x.deltaY=g.movementY,this._state=0,g.pointerType==="touch")switch(this._activePointers.length){case 1:this._state=this.touches.one;break;case 2:this._state=this.touches.two;break;case 3:this._state=this.touches.three;break}else(!this._isDragging&&this._lockedPointer||this._isDragging&&(g.buttons&fe.LEFT)===fe.LEFT)&&(this._state=this._state|this.mouseButtons.left),this._isDragging&&(g.buttons&fe.MIDDLE)===fe.MIDDLE&&(this._state=this._state|this.mouseButtons.middle),this._isDragging&&(g.buttons&fe.RIGHT)===fe.RIGHT&&(this._state=this._state|this.mouseButtons.right);v()}},f=g=>{const O=this._lockedPointer||this._findPointerById(1);O&&(O.clientX=g.clientX,O.clientY=g.clientY,O.deltaX=g.movementX,O.deltaY=g.movementY,this._state=0,(this._lockedPointer||(g.buttons&fe.LEFT)===fe.LEFT)&&(this._state=this._state|this.mouseButtons.left),(g.buttons&fe.MIDDLE)===fe.MIDDLE&&(this._state=this._state|this.mouseButtons.middle),(g.buttons&fe.RIGHT)===fe.RIGHT&&(this._state=this._state|this.mouseButtons.right),v())},h=g=>{const O=this._findPointerById(g.pointerId);if(!(O&&O===this._lockedPointer)){if(O&&this._disposePointer(O),g.pointerType==="touch")switch(this._activePointers.length){case 0:this._state=Q.NONE;break;case 1:this._state=this.touches.one;break;case 2:this._state=this.touches.two;break;case 3:this._state=this.touches.three;break}else this._state=Q.NONE;L()}},d=()=>{const g=this._findPointerById(1);g&&g===this._lockedPointer||(g&&this._disposePointer(g),this._state=Q.NONE,L())};let m=-1;const y=g=>{if(!this._domElement||!this._enabled||this.mouseButtons.wheel===Q.NONE)return;if(this._interactiveArea.left!==0||this._interactiveArea.top!==0||this._interactiveArea.width!==1||this._interactiveArea.height!==1){const w=this._domElement.getBoundingClientRect(),_=g.clientX/w.width,T=g.clientY/w.height;if(_<this._interactiveArea.left||_>this._interactiveArea.right||T<this._interactiveArea.top||T>this._interactiveArea.bottom)return}if(g.preventDefault(),this.dollyToCursor||this.mouseButtons.wheel===Q.ROTATE||this.mouseButtons.wheel===Q.TRUCK){const w=performance.now();m-w<1e3&&this._getClientRect(this._elementRect),m=w}const O=pl?-1:-3,x=g.deltaMode===1?g.deltaY/O:g.deltaY/(O*10),C=this.dollyToCursor?(g.clientX-this._elementRect.x)/this._elementRect.width*2-1:0,p=this.dollyToCursor?(g.clientY-this._elementRect.y)/this._elementRect.height*-2+1:0;switch(this.mouseButtons.wheel){case Q.ROTATE:{this._rotateInternal(g.deltaX,g.deltaY),this._isUserControllingRotate=!0;break}case Q.TRUCK:{this._truckInternal(g.deltaX,g.deltaY,!1),this._isUserControllingTruck=!0;break}case Q.OFFSET:{this._truckInternal(g.deltaX,g.deltaY,!0),this._isUserControllingOffset=!0;break}case Q.DOLLY:{this._dollyInternal(-x,C,p),this._isUserControllingDolly=!0;break}case Q.ZOOM:{this._zoomInternal(-x,C,p),this._isUserControllingZoom=!0;break}}this.dispatchEvent({type:"control"})},M=g=>{if(!(!this._domElement||!this._enabled)){if(this.mouseButtons.right===Zt.ACTION.NONE){const O=g instanceof PointerEvent?g.pointerId:(g instanceof MouseEvent,0),x=this._findPointerById(O);x&&this._disposePointer(x),this._domElement.ownerDocument.removeEventListener("pointermove",l,{passive:!1}),this._domElement.ownerDocument.removeEventListener("pointerup",h),this._domElement.ownerDocument.removeEventListener("mousemove",f),this._domElement.ownerDocument.removeEventListener("mouseup",d);return}g.preventDefault()}},S=g=>{if(!this._enabled)return;if(qn(this._activePointers,ze),this._getClientRect(this._elementRect),n.copy(ze),i.copy(ze),this._activePointers.length>=2){const x=ze.x-this._activePointers[1].clientX,C=ze.y-this._activePointers[1].clientY,p=Math.sqrt(x*x+C*C);s.set(0,p);const w=(this._activePointers[0].clientX+this._activePointers[1].clientX)*.5,_=(this._activePointers[0].clientY+this._activePointers[1].clientY)*.5;i.set(w,_)}if(this._state=0,!g)this._lockedPointer&&(this._state=this._state|this.mouseButtons.left);else if("pointerType"in g&&g.pointerType==="touch")switch(this._activePointers.length){case 1:this._state=this.touches.one;break;case 2:this._state=this.touches.two;break;case 3:this._state=this.touches.three;break}else!this._lockedPointer&&(g.buttons&fe.LEFT)===fe.LEFT&&(this._state=this._state|this.mouseButtons.left),(g.buttons&fe.MIDDLE)===fe.MIDDLE&&(this._state=this._state|this.mouseButtons.middle),(g.buttons&fe.RIGHT)===fe.RIGHT&&(this._state=this._state|this.mouseButtons.right);((this._state&Q.ROTATE)===Q.ROTATE||(this._state&Q.TOUCH_ROTATE)===Q.TOUCH_ROTATE||(this._state&Q.TOUCH_DOLLY_ROTATE)===Q.TOUCH_DOLLY_ROTATE||(this._state&Q.TOUCH_ZOOM_ROTATE)===Q.TOUCH_ZOOM_ROTATE)&&(this._sphericalEnd.theta=this._spherical.theta,this._sphericalEnd.phi=this._spherical.phi,this._thetaVelocity.value=0,this._phiVelocity.value=0),((this._state&Q.TRUCK)===Q.TRUCK||(this._state&Q.TOUCH_TRUCK)===Q.TOUCH_TRUCK||(this._state&Q.TOUCH_DOLLY_TRUCK)===Q.TOUCH_DOLLY_TRUCK||(this._state&Q.TOUCH_ZOOM_TRUCK)===Q.TOUCH_ZOOM_TRUCK)&&(this._targetEnd.copy(this._target),this._targetVelocity.set(0,0,0)),((this._state&Q.DOLLY)===Q.DOLLY||(this._state&Q.TOUCH_DOLLY)===Q.TOUCH_DOLLY||(this._state&Q.TOUCH_DOLLY_TRUCK)===Q.TOUCH_DOLLY_TRUCK||(this._state&Q.TOUCH_DOLLY_OFFSET)===Q.TOUCH_DOLLY_OFFSET||(this._state&Q.TOUCH_DOLLY_ROTATE)===Q.TOUCH_DOLLY_ROTATE)&&(this._sphericalEnd.radius=this._spherical.radius,this._radiusVelocity.value=0),((this._state&Q.ZOOM)===Q.ZOOM||(this._state&Q.TOUCH_ZOOM)===Q.TOUCH_ZOOM||(this._state&Q.TOUCH_ZOOM_TRUCK)===Q.TOUCH_ZOOM_TRUCK||(this._state&Q.TOUCH_ZOOM_OFFSET)===Q.TOUCH_ZOOM_OFFSET||(this._state&Q.TOUCH_ZOOM_ROTATE)===Q.TOUCH_ZOOM_ROTATE)&&(this._zoomEnd=this._zoom,this._zoomVelocity.value=0),((this._state&Q.OFFSET)===Q.OFFSET||(this._state&Q.TOUCH_OFFSET)===Q.TOUCH_OFFSET||(this._state&Q.TOUCH_DOLLY_OFFSET)===Q.TOUCH_DOLLY_OFFSET||(this._state&Q.TOUCH_ZOOM_OFFSET)===Q.TOUCH_ZOOM_OFFSET)&&(this._focalOffsetEnd.copy(this._focalOffset),this._focalOffsetVelocity.set(0,0,0)),this.dispatchEvent({type:"controlstart"})},v=()=>{if(!this._enabled||!this._dragNeedsUpdate)return;this._dragNeedsUpdate=!1,qn(this._activePointers,ze);const O=this._domElement&&document.pointerLockElement===this._domElement?this._lockedPointer||this._activePointers[0]:null,x=O?-O.deltaX:i.x-ze.x,C=O?-O.deltaY:i.y-ze.y;if(i.copy(ze),((this._state&Q.ROTATE)===Q.ROTATE||(this._state&Q.TOUCH_ROTATE)===Q.TOUCH_ROTATE||(this._state&Q.TOUCH_DOLLY_ROTATE)===Q.TOUCH_DOLLY_ROTATE||(this._state&Q.TOUCH_ZOOM_ROTATE)===Q.TOUCH_ZOOM_ROTATE)&&(this._rotateInternal(x,C),this._isUserControllingRotate=!0),(this._state&Q.DOLLY)===Q.DOLLY||(this._state&Q.ZOOM)===Q.ZOOM){const p=this.dollyToCursor?(n.x-this._elementRect.x)/this._elementRect.width*2-1:0,w=this.dollyToCursor?(n.y-this._elementRect.y)/this._elementRect.height*-2+1:0,_=this.dollyDragInverted?-1:1;(this._state&Q.DOLLY)===Q.DOLLY?(this._dollyInternal(_*C*fn,p,w),this._isUserControllingDolly=!0):(this._zoomInternal(_*C*fn,p,w),this._isUserControllingZoom=!0)}if((this._state&Q.TOUCH_DOLLY)===Q.TOUCH_DOLLY||(this._state&Q.TOUCH_ZOOM)===Q.TOUCH_ZOOM||(this._state&Q.TOUCH_DOLLY_TRUCK)===Q.TOUCH_DOLLY_TRUCK||(this._state&Q.TOUCH_ZOOM_TRUCK)===Q.TOUCH_ZOOM_TRUCK||(this._state&Q.TOUCH_DOLLY_OFFSET)===Q.TOUCH_DOLLY_OFFSET||(this._state&Q.TOUCH_ZOOM_OFFSET)===Q.TOUCH_ZOOM_OFFSET||(this._state&Q.TOUCH_DOLLY_ROTATE)===Q.TOUCH_DOLLY_ROTATE||(this._state&Q.TOUCH_ZOOM_ROTATE)===Q.TOUCH_ZOOM_ROTATE){const p=ze.x-this._activePointers[1].clientX,w=ze.y-this._activePointers[1].clientY,_=Math.sqrt(p*p+w*w),T=s.y-_;s.set(0,_);const F=this.dollyToCursor?(i.x-this._elementRect.x)/this._elementRect.width*2-1:0,J=this.dollyToCursor?(i.y-this._elementRect.y)/this._elementRect.height*-2+1:0;(this._state&Q.TOUCH_DOLLY)===Q.TOUCH_DOLLY||(this._state&Q.TOUCH_DOLLY_ROTATE)===Q.TOUCH_DOLLY_ROTATE||(this._state&Q.TOUCH_DOLLY_TRUCK)===Q.TOUCH_DOLLY_TRUCK||(this._state&Q.TOUCH_DOLLY_OFFSET)===Q.TOUCH_DOLLY_OFFSET?(this._dollyInternal(T*fn,F,J),this._isUserControllingDolly=!0):(this._zoomInternal(T*fn,F,J),this._isUserControllingZoom=!0)}((this._state&Q.TRUCK)===Q.TRUCK||(this._state&Q.TOUCH_TRUCK)===Q.TOUCH_TRUCK||(this._state&Q.TOUCH_DOLLY_TRUCK)===Q.TOUCH_DOLLY_TRUCK||(this._state&Q.TOUCH_ZOOM_TRUCK)===Q.TOUCH_ZOOM_TRUCK)&&(this._truckInternal(x,C,!1),this._isUserControllingTruck=!0),((this._state&Q.OFFSET)===Q.OFFSET||(this._state&Q.TOUCH_OFFSET)===Q.TOUCH_OFFSET||(this._state&Q.TOUCH_DOLLY_OFFSET)===Q.TOUCH_DOLLY_OFFSET||(this._state&Q.TOUCH_ZOOM_OFFSET)===Q.TOUCH_ZOOM_OFFSET)&&(this._truckInternal(x,C,!0),this._isUserControllingOffset=!0),this.dispatchEvent({type:"control"})},L=()=>{qn(this._activePointers,ze),i.copy(ze),this._dragNeedsUpdate=!1,(this._activePointers.length===0||this._activePointers.length===1&&this._activePointers[0]===this._lockedPointer)&&(this._isDragging=!1),this._activePointers.length===0&&this._domElement&&(this._domElement.ownerDocument.removeEventListener("pointermove",l,{passive:!1}),this._domElement.ownerDocument.removeEventListener("mousemove",f),this._domElement.ownerDocument.removeEventListener("pointerup",h),this._domElement.ownerDocument.removeEventListener("mouseup",d),this.dispatchEvent({type:"controlend"}))};this.lockPointer=()=>{!this._enabled||!this._domElement||(this.cancel(),this._lockedPointer={pointerId:-1,clientX:0,clientY:0,deltaX:0,deltaY:0,mouseButton:null},this._activePointers.push(this._lockedPointer),this._domElement.ownerDocument.removeEventListener("pointermove",l,{passive:!1}),this._domElement.ownerDocument.removeEventListener("pointerup",h),this._domElement.requestPointerLock(),this._domElement.ownerDocument.addEventListener("pointerlockchange",I),this._domElement.ownerDocument.addEventListener("pointerlockerror",A),this._domElement.ownerDocument.addEventListener("pointermove",l,{passive:!1}),this._domElement.ownerDocument.addEventListener("pointerup",h),S())},this.unlockPointer=()=>{this._lockedPointer!==null&&(this._disposePointer(this._lockedPointer),this._lockedPointer=null),document.exitPointerLock(),this.cancel(),this._domElement&&(this._domElement.ownerDocument.removeEventListener("pointerlockchange",I),this._domElement.ownerDocument.removeEventListener("pointerlockerror",A))};const I=()=>{this._domElement&&this._domElement.ownerDocument.pointerLockElement===this._domElement||this.unlockPointer()},A=()=>{this.unlockPointer()};this._addAllEventListeners=g=>{this._domElement=g,this._domElement.style.touchAction="none",this._domElement.style.userSelect="none",this._domElement.style.webkitUserSelect="none",this._domElement.addEventListener("pointerdown",r),ml&&this._domElement.addEventListener("mousedown",a),this._domElement.addEventListener("pointercancel",h),this._domElement.addEventListener("wheel",y,{passive:!1}),this._domElement.addEventListener("contextmenu",M)},this._removeAllEventListeners=()=>{this._domElement&&(this._domElement.style.touchAction="",this._domElement.style.userSelect="",this._domElement.style.webkitUserSelect="",this._domElement.removeEventListener("pointerdown",r),this._domElement.removeEventListener("mousedown",a),this._domElement.removeEventListener("pointercancel",h),this._domElement.removeEventListener("wheel",y,{passive:!1}),this._domElement.removeEventListener("contextmenu",M),this._domElement.ownerDocument.removeEventListener("pointermove",l,{passive:!1}),this._domElement.ownerDocument.removeEventListener("mousemove",f),this._domElement.ownerDocument.removeEventListener("pointerup",h),this._domElement.ownerDocument.removeEventListener("mouseup",d),this._domElement.ownerDocument.removeEventListener("pointerlockchange",I),this._domElement.ownerDocument.removeEventListener("pointerlockerror",A))},this.cancel=()=>{this._state!==Q.NONE&&(this._state=Q.NONE,this._activePointers.length=0,L())},t&&this.connect(t),this.update(0)}get camera(){return this._camera}set camera(e){this._camera=e,this.updateCameraUp(),this._camera.updateProjectionMatrix(),this._updateNearPlaneCorners(),this._needsUpdate=!0}get enabled(){return this._enabled}set enabled(e){this._enabled=e,this._domElement&&(e?(this._domElement.style.touchAction="none",this._domElement.style.userSelect="none",this._domElement.style.webkitUserSelect="none"):(this.cancel(),this._domElement.style.touchAction="",this._domElement.style.userSelect="",this._domElement.style.webkitUserSelect=""))}get active(){return!this._hasRested}get currentAction(){return this._state}get distance(){return this._spherical.radius}set distance(e){this._spherical.radius===e&&this._sphericalEnd.radius===e||(this._spherical.radius=e,this._sphericalEnd.radius=e,this._needsUpdate=!0)}get azimuthAngle(){return this._spherical.theta}set azimuthAngle(e){this._spherical.theta===e&&this._sphericalEnd.theta===e||(this._spherical.theta=e,this._sphericalEnd.theta=e,this._needsUpdate=!0)}get polarAngle(){return this._spherical.phi}set polarAngle(e){this._spherical.phi===e&&this._sphericalEnd.phi===e||(this._spherical.phi=e,this._sphericalEnd.phi=e,this._needsUpdate=!0)}get boundaryEnclosesCamera(){return this._boundaryEnclosesCamera}set boundaryEnclosesCamera(e){this._boundaryEnclosesCamera=e,this._needsUpdate=!0}set interactiveArea(e){this._interactiveArea.width=Ze(e.width,0,1),this._interactiveArea.height=Ze(e.height,0,1),this._interactiveArea.x=Ze(e.x,0,1-this._interactiveArea.width),this._interactiveArea.y=Ze(e.y,0,1-this._interactiveArea.height)}addEventListener(e,t){super.addEventListener(e,t)}removeEventListener(e,t){super.removeEventListener(e,t)}rotate(e,t,n=!1){return this.rotateTo(this._sphericalEnd.theta+e,this._sphericalEnd.phi+t,n)}rotateAzimuthTo(e,t=!1){return this.rotateTo(e,this._sphericalEnd.phi,t)}rotatePolarTo(e,t=!1){return this.rotateTo(this._sphericalEnd.theta,e,t)}rotateTo(e,t,n=!1){this._isUserControllingRotate=!1;const i=Ze(e,this.minAzimuthAngle,this.maxAzimuthAngle),s=Ze(t,this.minPolarAngle,this.maxPolarAngle);this._sphericalEnd.theta=i,this._sphericalEnd.phi=s,this._sphericalEnd.makeSafe(),this._needsUpdate=!0,n||(this._spherical.theta=this._sphericalEnd.theta,this._spherical.phi=this._sphericalEnd.phi);const r=!n||Se(this._spherical.theta,this._sphericalEnd.theta,this.restThreshold)&&Se(this._spherical.phi,this._sphericalEnd.phi,this.restThreshold);return this._createOnRestPromise(r)}dolly(e,t=!1){return this.dollyTo(this._sphericalEnd.radius-e,t)}dollyTo(e,t=!1){return this._isUserControllingDolly=!1,this._lastDollyDirection=Tt.NONE,this._changedDolly=0,this._dollyToNoClamp(Ze(e,this.minDistance,this.maxDistance),t)}_dollyToNoClamp(e,t=!1){const n=this._sphericalEnd.radius;if(this.colliderMeshes.length>=1){const r=this._collisionTest(),a=Se(r,this._spherical.radius);if(!(n>e)&&a)return Promise.resolve();this._sphericalEnd.radius=Math.min(e,r)}else this._sphericalEnd.radius=e;this._needsUpdate=!0,t||(this._spherical.radius=this._sphericalEnd.radius);const s=!t||Se(this._spherical.radius,this._sphericalEnd.radius,this.restThreshold);return this._createOnRestPromise(s)}dollyInFixed(e,t=!1){this._targetEnd.add(this._getCameraDirection(Xt).multiplyScalar(e)),t||this._target.copy(this._targetEnd);const n=!t||Se(this._target.x,this._targetEnd.x,this.restThreshold)&&Se(this._target.y,this._targetEnd.y,this.restThreshold)&&Se(this._target.z,this._targetEnd.z,this.restThreshold);return this._createOnRestPromise(n)}zoom(e,t=!1){return this.zoomTo(this._zoomEnd+e,t)}zoomTo(e,t=!1){this._isUserControllingZoom=!1,this._zoomEnd=Ze(e,this.minZoom,this.maxZoom),this._needsUpdate=!0,t||(this._zoom=this._zoomEnd);const n=!t||Se(this._zoom,this._zoomEnd,this.restThreshold);return this._changedZoom=0,this._createOnRestPromise(n)}pan(e,t,n=!1){return console.warn("`pan` has been renamed to `truck`"),this.truck(e,t,n)}truck(e,t,n=!1){this._camera.updateMatrix(),Qe.setFromMatrixColumn(this._camera.matrix,0),Je.setFromMatrixColumn(this._camera.matrix,1),Qe.multiplyScalar(e),Je.multiplyScalar(-t);const i=ge.copy(Qe).add(Je),s=be.copy(this._targetEnd).add(i);return this.moveTo(s.x,s.y,s.z,n)}forward(e,t=!1){ge.setFromMatrixColumn(this._camera.matrix,0),ge.crossVectors(this._camera.up,ge),ge.multiplyScalar(e);const n=be.copy(this._targetEnd).add(ge);return this.moveTo(n.x,n.y,n.z,t)}elevate(e,t=!1){return ge.copy(this._camera.up).multiplyScalar(e),this.moveTo(this._targetEnd.x+ge.x,this._targetEnd.y+ge.y,this._targetEnd.z+ge.z,t)}moveTo(e,t,n,i=!1){this._isUserControllingTruck=!1;const s=ge.set(e,t,n).sub(this._targetEnd);this._encloseToBoundary(this._targetEnd,s,this.boundaryFriction),this._needsUpdate=!0,i||this._target.copy(this._targetEnd);const r=!i||Se(this._target.x,this._targetEnd.x,this.restThreshold)&&Se(this._target.y,this._targetEnd.y,this.restThreshold)&&Se(this._target.z,this._targetEnd.z,this.restThreshold);return this._createOnRestPromise(r)}lookInDirectionOf(e,t,n,i=!1){const a=ge.set(e,t,n).sub(this._targetEnd).normalize().multiplyScalar(-this._sphericalEnd.radius);return this.setPosition(a.x,a.y,a.z,i)}fitToBox(e,t,{cover:n=!1,paddingLeft:i=0,paddingRight:s=0,paddingBottom:r=0,paddingTop:a=0}={}){const l=[],f=e.isBox3?Dt.copy(e):Dt.setFromObject(e);f.isEmpty()&&(console.warn("camera-controls: fitTo() cannot be used with an empty box. Aborting"),Promise.resolve());const h=vs(this._sphericalEnd.theta,ys),d=vs(this._sphericalEnd.phi,ys);l.push(this.rotateTo(h,d,t));const m=ge.setFromSpherical(this._sphericalEnd).normalize(),y=Ps.setFromUnitVectors(m,Qn),M=Se(Math.abs(m.y),1);M&&y.multiply(Hn.setFromAxisAngle(dn,h)),y.multiply(this._yAxisUpSpaceInverse);const S=As.makeEmpty();be.copy(f.min).applyQuaternion(y),S.expandByPoint(be),be.copy(f.min).setX(f.max.x).applyQuaternion(y),S.expandByPoint(be),be.copy(f.min).setY(f.max.y).applyQuaternion(y),S.expandByPoint(be),be.copy(f.max).setZ(f.min.z).applyQuaternion(y),S.expandByPoint(be),be.copy(f.min).setZ(f.max.z).applyQuaternion(y),S.expandByPoint(be),be.copy(f.max).setY(f.min.y).applyQuaternion(y),S.expandByPoint(be),be.copy(f.max).setX(f.min.x).applyQuaternion(y),S.expandByPoint(be),be.copy(f.max).applyQuaternion(y),S.expandByPoint(be),S.min.x-=i,S.min.y-=r,S.max.x+=s,S.max.y+=a,y.setFromUnitVectors(Qn,m),M&&y.premultiply(Hn.invert()),y.premultiply(this._yAxisUpSpace);const v=S.getSize(ge),L=S.getCenter(be).applyQuaternion(y);if(bt(this._camera)){const I=this.getDistanceToFitBox(v.x,v.y,v.z,n);l.push(this.moveTo(L.x,L.y,L.z,t)),l.push(this.dollyTo(I,t)),l.push(this.setFocalOffset(0,0,0,t))}else if(ft(this._camera)){const I=this._camera,A=I.right-I.left,g=I.top-I.bottom,O=n?Math.max(A/v.x,g/v.y):Math.min(A/v.x,g/v.y);l.push(this.moveTo(L.x,L.y,L.z,t)),l.push(this.zoomTo(O,t)),l.push(this.setFocalOffset(0,0,0,t))}return Promise.all(l)}fitToSphere(e,t){const n=[],s=e instanceof he.Sphere?Jn.copy(e):Zt.createBoundingSphere(e,Jn);if(n.push(this.moveTo(s.center.x,s.center.y,s.center.z,t)),bt(this._camera)){const r=this.getDistanceToFitSphere(s.radius);n.push(this.dollyTo(r,t))}else if(ft(this._camera)){const r=this._camera.right-this._camera.left,a=this._camera.top-this._camera.bottom,l=2*s.radius,f=Math.min(r/l,a/l);n.push(this.zoomTo(f,t))}return n.push(this.setFocalOffset(0,0,0,t)),Promise.all(n)}setLookAt(e,t,n,i,s,r,a=!1){this._isUserControllingRotate=!1,this._isUserControllingDolly=!1,this._isUserControllingTruck=!1,this._lastDollyDirection=Tt.NONE,this._changedDolly=0;const l=be.set(i,s,r),f=ge.set(e,t,n);this._targetEnd.copy(l),this._sphericalEnd.setFromVector3(f.sub(l).applyQuaternion(this._yAxisUpSpace)),this.normalizeRotations(),this._needsUpdate=!0,a||(this._target.copy(this._targetEnd),this._spherical.copy(this._sphericalEnd));const h=!a||Se(this._target.x,this._targetEnd.x,this.restThreshold)&&Se(this._target.y,this._targetEnd.y,this.restThreshold)&&Se(this._target.z,this._targetEnd.z,this.restThreshold)&&Se(this._spherical.theta,this._sphericalEnd.theta,this.restThreshold)&&Se(this._spherical.phi,this._sphericalEnd.phi,this.restThreshold)&&Se(this._spherical.radius,this._sphericalEnd.radius,this.restThreshold);return this._createOnRestPromise(h)}lerpLookAt(e,t,n,i,s,r,a,l,f,h,d,m,y,M=!1){this._isUserControllingRotate=!1,this._isUserControllingDolly=!1,this._isUserControllingTruck=!1,this._lastDollyDirection=Tt.NONE,this._changedDolly=0;const S=ge.set(i,s,r),v=be.set(e,t,n);Ye.setFromVector3(v.sub(S).applyQuaternion(this._yAxisUpSpace));const L=It.set(h,d,m),I=be.set(a,l,f);Wt.setFromVector3(I.sub(L).applyQuaternion(this._yAxisUpSpace)),this._targetEnd.copy(S.lerp(L,y));const A=Wt.theta-Ye.theta,g=Wt.phi-Ye.phi,O=Wt.radius-Ye.radius;this._sphericalEnd.set(Ye.radius+O*y,Ye.phi+g*y,Ye.theta+A*y),this.normalizeRotations(),this._needsUpdate=!0,M||(this._target.copy(this._targetEnd),this._spherical.copy(this._sphericalEnd));const x=!M||Se(this._target.x,this._targetEnd.x,this.restThreshold)&&Se(this._target.y,this._targetEnd.y,this.restThreshold)&&Se(this._target.z,this._targetEnd.z,this.restThreshold)&&Se(this._spherical.theta,this._sphericalEnd.theta,this.restThreshold)&&Se(this._spherical.phi,this._sphericalEnd.phi,this.restThreshold)&&Se(this._spherical.radius,this._sphericalEnd.radius,this.restThreshold);return this._createOnRestPromise(x)}setPosition(e,t,n,i=!1){return this.setLookAt(e,t,n,this._targetEnd.x,this._targetEnd.y,this._targetEnd.z,i)}setTarget(e,t,n,i=!1){const s=this.getPosition(ge),r=this.setLookAt(s.x,s.y,s.z,e,t,n,i);return this._sphericalEnd.phi=Ze(this._sphericalEnd.phi,this.minPolarAngle,this.maxPolarAngle),r}setFocalOffset(e,t,n,i=!1){this._isUserControllingOffset=!1,this._focalOffsetEnd.set(e,t,n),this._needsUpdate=!0,i||this._focalOffset.copy(this._focalOffsetEnd);const s=!i||Se(this._focalOffset.x,this._focalOffsetEnd.x,this.restThreshold)&&Se(this._focalOffset.y,this._focalOffsetEnd.y,this.restThreshold)&&Se(this._focalOffset.z,this._focalOffsetEnd.z,this.restThreshold);return this._createOnRestPromise(s)}setOrbitPoint(e,t,n){this._camera.updateMatrixWorld(),Qe.setFromMatrixColumn(this._camera.matrixWorldInverse,0),Je.setFromMatrixColumn(this._camera.matrixWorldInverse,1),Mt.setFromMatrixColumn(this._camera.matrixWorldInverse,2);const i=ge.set(e,t,n),s=i.distanceTo(this._camera.position),r=i.sub(this._camera.position);Qe.multiplyScalar(r.x),Je.multiplyScalar(r.y),Mt.multiplyScalar(r.z),ge.copy(Qe).add(Je).add(Mt),ge.z=ge.z+s,this.dollyTo(s,!1),this.setFocalOffset(-ge.x,ge.y,-ge.z,!1),this.moveTo(e,t,n,!1)}setBoundary(e){if(!e){this._boundary.min.set(-1/0,-1/0,-1/0),this._boundary.max.set(1/0,1/0,1/0),this._needsUpdate=!0;return}this._boundary.copy(e),this._boundary.clampPoint(this._targetEnd,this._targetEnd),this._needsUpdate=!0}setViewport(e,t,n,i){if(e===null){this._viewport=null;return}this._viewport=this._viewport||new he.Vector4,typeof e=="number"?this._viewport.set(e,t,n,i):this._viewport.copy(e)}getDistanceToFitBox(e,t,n,i=!1){if(Kn(this._camera,"getDistanceToFitBox"))return this._spherical.radius;const s=e/t,r=this._camera.getEffectiveFOV()*Rt,a=this._camera.aspect;return((i?s>a:s<a)?t:e/a)*.5/Math.tan(r*.5)+n*.5}getDistanceToFitSphere(e){if(Kn(this._camera,"getDistanceToFitSphere"))return this._spherical.radius;const t=this._camera.getEffectiveFOV()*Rt,n=Math.atan(Math.tan(t*.5)*this._camera.aspect)*2,i=1<this._camera.aspect?t:n;return e/Math.sin(i*.5)}getTarget(e,t=!0){return(e&&e.isVector3?e:new he.Vector3).copy(t?this._targetEnd:this._target)}getPosition(e,t=!0){return(e&&e.isVector3?e:new he.Vector3).setFromSpherical(t?this._sphericalEnd:this._spherical).applyQuaternion(this._yAxisUpSpaceInverse).add(t?this._targetEnd:this._target)}getSpherical(e,t=!0){return(e&&e instanceof he.Spherical?e:new he.Spherical).copy(t?this._sphericalEnd:this._spherical)}getFocalOffset(e,t=!0){return(e&&e.isVector3?e:new he.Vector3).copy(t?this._focalOffsetEnd:this._focalOffset)}normalizeRotations(){this._sphericalEnd.theta=this._sphericalEnd.theta%Ot,this._sphericalEnd.theta<0&&(this._sphericalEnd.theta+=Ot),this._spherical.theta+=Ot*Math.round((this._sphericalEnd.theta-this._spherical.theta)/Ot)}reset(e=!1){if(!Se(this._camera.up.x,this._cameraUp0.x)||!Se(this._camera.up.y,this._cameraUp0.y)||!Se(this._camera.up.z,this._cameraUp0.z)){this._camera.up.copy(this._cameraUp0);const n=this.getPosition(ge);this.updateCameraUp(),this.setPosition(n.x,n.y,n.z)}const t=[this.setLookAt(this._position0.x,this._position0.y,this._position0.z,this._target0.x,this._target0.y,this._target0.z,e),this.setFocalOffset(this._focalOffset0.x,this._focalOffset0.y,this._focalOffset0.z,e),this.zoomTo(this._zoom0,e)];return Promise.all(t)}saveState(){this._cameraUp0.copy(this._camera.up),this.getTarget(this._target0),this.getPosition(this._position0),this._zoom0=this._zoom,this._focalOffset0.copy(this._focalOffset)}updateCameraUp(){this._yAxisUpSpace.setFromUnitVectors(this._camera.up,dn),this._yAxisUpSpaceInverse.copy(this._yAxisUpSpace).invert()}applyCameraUp(){const e=ge.subVectors(this._target,this._camera.position).normalize(),t=be.crossVectors(e,this._camera.up);this._camera.up.crossVectors(t,e).normalize(),this._camera.updateMatrixWorld();const n=this.getPosition(ge);this.updateCameraUp(),this.setPosition(n.x,n.y,n.z)}update(e){const t=this._sphericalEnd.theta-this._spherical.theta,n=this._sphericalEnd.phi-this._spherical.phi,i=this._sphericalEnd.radius-this._spherical.radius,s=Ms.subVectors(this._targetEnd,this._target),r=Ss.subVectors(this._focalOffsetEnd,this._focalOffset),a=this._zoomEnd-this._zoom;if(Pe(t))this._thetaVelocity.value=0,this._spherical.theta=this._sphericalEnd.theta;else{const d=this._isUserControllingRotate?this.draggingSmoothTime:this.smoothTime;this._spherical.theta=un(this._spherical.theta,this._sphericalEnd.theta,this._thetaVelocity,d,1/0,e),this._needsUpdate=!0}if(Pe(n))this._phiVelocity.value=0,this._spherical.phi=this._sphericalEnd.phi;else{const d=this._isUserControllingRotate?this.draggingSmoothTime:this.smoothTime;this._spherical.phi=un(this._spherical.phi,this._sphericalEnd.phi,this._phiVelocity,d,1/0,e),this._needsUpdate=!0}if(Pe(i))this._radiusVelocity.value=0,this._spherical.radius=this._sphericalEnd.radius;else{const d=this._isUserControllingDolly?this.draggingSmoothTime:this.smoothTime;this._spherical.radius=un(this._spherical.radius,this._sphericalEnd.radius,this._radiusVelocity,d,this.maxSpeed,e),this._needsUpdate=!0}if(Pe(s.x)&&Pe(s.y)&&Pe(s.z))this._targetVelocity.set(0,0,0),this._target.copy(this._targetEnd);else{const d=this._isUserControllingTruck?this.draggingSmoothTime:this.smoothTime;ws(this._target,this._targetEnd,this._targetVelocity,d,this.maxSpeed,e,this._target),this._needsUpdate=!0}if(Pe(r.x)&&Pe(r.y)&&Pe(r.z))this._focalOffsetVelocity.set(0,0,0),this._focalOffset.copy(this._focalOffsetEnd);else{const d=this._isUserControllingOffset?this.draggingSmoothTime:this.smoothTime;ws(this._focalOffset,this._focalOffsetEnd,this._focalOffsetVelocity,d,this.maxSpeed,e,this._focalOffset),this._needsUpdate=!0}if(Pe(a))this._zoomVelocity.value=0,this._zoom=this._zoomEnd;else{const d=this._isUserControllingZoom?this.draggingSmoothTime:this.smoothTime;this._zoom=un(this._zoom,this._zoomEnd,this._zoomVelocity,d,1/0,e)}if(this.dollyToCursor){if(bt(this._camera)&&this._changedDolly!==0){const d=this._spherical.radius-this._lastDistance,m=this._camera,y=this._getCameraDirection(Xt),M=ge.copy(y).cross(m.up).normalize();M.lengthSq()===0&&(M.x=1);const S=be.crossVectors(M,y),v=this._sphericalEnd.radius*Math.tan(m.getEffectiveFOV()*Rt*.5),I=(this._sphericalEnd.radius-d-this._sphericalEnd.radius)/this._sphericalEnd.radius,A=It.copy(this._targetEnd).add(M.multiplyScalar(this._dollyControlCoord.x*v*m.aspect)).add(S.multiplyScalar(this._dollyControlCoord.y*v)),g=ge.copy(this._targetEnd).lerp(A,I),O=this._lastDollyDirection===Tt.IN&&this._spherical.radius<=this.minDistance,x=this._lastDollyDirection===Tt.OUT&&this.maxDistance<=this._spherical.radius;if(this.infinityDolly&&(O||x)){this._sphericalEnd.radius-=d,this._spherical.radius-=d;const p=be.copy(y).multiplyScalar(-d);g.add(p)}this._boundary.clampPoint(g,g);const C=be.subVectors(g,this._targetEnd);this._targetEnd.copy(g),this._target.add(C),this._changedDolly-=d,Pe(this._changedDolly)&&(this._changedDolly=0)}else if(ft(this._camera)&&this._changedZoom!==0){const d=this._zoom-this._lastZoom,m=this._camera,y=ge.set(this._dollyControlCoord.x,this._dollyControlCoord.y,(m.near+m.far)/(m.near-m.far)).unproject(m),M=be.set(0,0,-1).applyQuaternion(m.quaternion),S=It.copy(y).add(M.multiplyScalar(-y.dot(m.up))),L=-(this._zoom-d-this._zoom)/this._zoom,I=this._getCameraDirection(Xt),A=this._targetEnd.dot(I),g=ge.copy(this._targetEnd).lerp(S,L),O=g.dot(I),x=I.multiplyScalar(O-A);g.sub(x),this._boundary.clampPoint(g,g);const C=be.subVectors(g,this._targetEnd);this._targetEnd.copy(g),this._target.add(C),this._changedZoom-=d,Pe(this._changedZoom)&&(this._changedZoom=0)}}this._camera.zoom!==this._zoom&&(this._camera.zoom=this._zoom,this._camera.updateProjectionMatrix(),this._updateNearPlaneCorners(),this._needsUpdate=!0),this._dragNeedsUpdate=!0;const l=this._collisionTest();this._spherical.radius=Math.min(this._spherical.radius,l),this._spherical.makeSafe(),this._camera.position.setFromSpherical(this._spherical).applyQuaternion(this._yAxisUpSpaceInverse).add(this._target),this._camera.lookAt(this._target),(!Pe(this._focalOffset.x)||!Pe(this._focalOffset.y)||!Pe(this._focalOffset.z))&&(this._camera.updateMatrixWorld(),Qe.setFromMatrixColumn(this._camera.matrix,0),Je.setFromMatrixColumn(this._camera.matrix,1),Mt.setFromMatrixColumn(this._camera.matrix,2),Qe.multiplyScalar(this._focalOffset.x),Je.multiplyScalar(-this._focalOffset.y),Mt.multiplyScalar(this._focalOffset.z),ge.copy(Qe).add(Je).add(Mt),this._camera.position.add(ge)),this._boundaryEnclosesCamera&&this._encloseToBoundary(this._camera.position.copy(this._target),ge.setFromSpherical(this._spherical).applyQuaternion(this._yAxisUpSpaceInverse),1);const h=this._needsUpdate;return h&&!this._updatedLastTime?(this._hasRested=!1,this.dispatchEvent({type:"wake"}),this.dispatchEvent({type:"update"})):h?(this.dispatchEvent({type:"update"}),Pe(t,this.restThreshold)&&Pe(n,this.restThreshold)&&Pe(i,this.restThreshold)&&Pe(s.x,this.restThreshold)&&Pe(s.y,this.restThreshold)&&Pe(s.z,this.restThreshold)&&Pe(r.x,this.restThreshold)&&Pe(r.y,this.restThreshold)&&Pe(r.z,this.restThreshold)&&Pe(a,this.restThreshold)&&!this._hasRested&&(this._hasRested=!0,this.dispatchEvent({type:"rest"}))):!h&&this._updatedLastTime&&this.dispatchEvent({type:"sleep"}),this._lastDistance=this._spherical.radius,this._lastZoom=this._zoom,this._updatedLastTime=h,this._needsUpdate=!1,h}toJSON(){return JSON.stringify({enabled:this._enabled,minDistance:this.minDistance,maxDistance:Et(this.maxDistance),minZoom:this.minZoom,maxZoom:Et(this.maxZoom),minPolarAngle:this.minPolarAngle,maxPolarAngle:Et(this.maxPolarAngle),minAzimuthAngle:Et(this.minAzimuthAngle),maxAzimuthAngle:Et(this.maxAzimuthAngle),smoothTime:this.smoothTime,draggingSmoothTime:this.draggingSmoothTime,dollySpeed:this.dollySpeed,truckSpeed:this.truckSpeed,dollyToCursor:this.dollyToCursor,verticalDragToForward:this.verticalDragToForward,target:this._targetEnd.toArray(),position:ge.setFromSpherical(this._sphericalEnd).add(this._targetEnd).toArray(),zoom:this._zoomEnd,focalOffset:this._focalOffsetEnd.toArray(),target0:this._target0.toArray(),position0:this._position0.toArray(),zoom0:this._zoom0,focalOffset0:this._focalOffset0.toArray()})}fromJSON(e,t=!1){const n=JSON.parse(e);this.enabled=n.enabled,this.minDistance=n.minDistance,this.maxDistance=Yt(n.maxDistance),this.minZoom=n.minZoom,this.maxZoom=Yt(n.maxZoom),this.minPolarAngle=n.minPolarAngle,this.maxPolarAngle=Yt(n.maxPolarAngle),this.minAzimuthAngle=Yt(n.minAzimuthAngle),this.maxAzimuthAngle=Yt(n.maxAzimuthAngle),this.smoothTime=n.smoothTime,this.draggingSmoothTime=n.draggingSmoothTime,this.dollySpeed=n.dollySpeed,this.truckSpeed=n.truckSpeed,this.dollyToCursor=n.dollyToCursor,this.verticalDragToForward=n.verticalDragToForward,this._target0.fromArray(n.target0),this._position0.fromArray(n.position0),this._zoom0=n.zoom0,this._focalOffset0.fromArray(n.focalOffset0),this.moveTo(n.target[0],n.target[1],n.target[2],t),Ye.setFromVector3(ge.fromArray(n.position).sub(this._targetEnd).applyQuaternion(this._yAxisUpSpace)),this.rotateTo(Ye.theta,Ye.phi,t),this.dollyTo(Ye.radius,t),this.zoomTo(n.zoom,t),this.setFocalOffset(n.focalOffset[0],n.focalOffset[1],n.focalOffset[2],t),this._needsUpdate=!0}connect(e){if(this._domElement){console.warn("camera-controls is already connected.");return}e.setAttribute("data-camera-controls-version",dl),this._addAllEventListeners(e),this._getClientRect(this._elementRect)}disconnect(){this.cancel(),this._removeAllEventListeners(),this._domElement&&(this._domElement.removeAttribute("data-camera-controls-version"),this._domElement=void 0)}dispose(){this.removeAllEventListeners(),this.disconnect()}_getTargetDirection(e){return e.setFromSpherical(this._spherical).divideScalar(this._spherical.radius).applyQuaternion(this._yAxisUpSpaceInverse)}_getCameraDirection(e){return this._getTargetDirection(e).negate()}_findPointerById(e){return this._activePointers.find(t=>t.pointerId===e)}_findPointerByMouseButton(e){return this._activePointers.find(t=>t.mouseButton===e)}_disposePointer(e){this._activePointers.splice(this._activePointers.indexOf(e),1)}_encloseToBoundary(e,t,n){const i=t.lengthSq();if(i===0)return e;const s=be.copy(t).add(e),a=this._boundary.clampPoint(s,It).sub(s),l=a.lengthSq();if(l===0)return e.add(t);if(l===i)return e;if(n===0)return e.add(t).add(a);{const f=1+n*l/t.dot(a);return e.add(be.copy(t).multiplyScalar(f)).add(a.multiplyScalar(1-n))}}_updateNearPlaneCorners(){if(bt(this._camera)){const e=this._camera,t=e.near,n=e.getEffectiveFOV()*Rt,i=Math.tan(n*.5)*t,s=i*e.aspect;this._nearPlaneCorners[0].set(-s,-i,0),this._nearPlaneCorners[1].set(s,-i,0),this._nearPlaneCorners[2].set(s,i,0),this._nearPlaneCorners[3].set(-s,i,0)}else if(ft(this._camera)){const e=this._camera,t=1/e.zoom,n=e.left*t,i=e.right*t,s=e.top*t,r=e.bottom*t;this._nearPlaneCorners[0].set(n,s,0),this._nearPlaneCorners[1].set(i,s,0),this._nearPlaneCorners[2].set(i,r,0),this._nearPlaneCorners[3].set(n,r,0)}}_collisionTest(){let e=1/0;if(!(this.colliderMeshes.length>=1)||Kn(this._camera,"_collisionTest"))return e;const n=this._getTargetDirection(Xt);$n.lookAt(bs,n,this._camera.up);for(let i=0;i<4;i++){const s=be.copy(this._nearPlaneCorners[i]);s.applyMatrix4($n);const r=It.addVectors(this._target,s);pn.set(r,n),pn.far=this._spherical.radius+1;const a=pn.intersectObjects(this.colliderMeshes);a.length!==0&&a[0].distance<e&&(e=a[0].distance)}return e}_getClientRect(e){if(!this._domElement)return;const t=this._domElement.getBoundingClientRect();return e.x=t.left,e.y=t.top,this._viewport?(e.x+=this._viewport.x,e.y+=t.height-this._viewport.w-this._viewport.y,e.width=this._viewport.z,e.height=this._viewport.w):(e.width=t.width,e.height=t.height),e}_createOnRestPromise(e){return e?Promise.resolve():(this._hasRested=!1,this.dispatchEvent({type:"transitionstart"}),new Promise(t=>{const n=()=>{this.removeEventListener("rest",n),t()};this.addEventListener("rest",n)}))}_addAllEventListeners(e){}_removeAllEventListeners(){}get dampingFactor(){return console.warn(".dampingFactor has been deprecated. use smoothTime (in seconds) instead."),0}set dampingFactor(e){console.warn(".dampingFactor has been deprecated. use smoothTime (in seconds) instead.")}get draggingDampingFactor(){return console.warn(".draggingDampingFactor has been deprecated. use draggingSmoothTime (in seconds) instead."),0}set draggingDampingFactor(e){console.warn(".draggingDampingFactor has been deprecated. use draggingSmoothTime (in seconds) instead.")}static createBoundingSphere(e,t=new he.Sphere){const n=t,i=n.center;Dt.makeEmpty(),e.traverseVisible(r=>{r.isMesh&&Dt.expandByObject(r)}),Dt.getCenter(i);let s=0;return e.traverseVisible(r=>{if(!r.isMesh)return;const a=r,l=a.geometry.clone();l.applyMatrix4(a.matrixWorld);const h=l.attributes.position;for(let d=0,m=h.count;d<m;d++)ge.fromBufferAttribute(h,d),s=Math.max(s,i.distanceToSquared(ge))}),n.radius=Math.sqrt(s),n}}const gl=["min-polar-angle","max-polar-angle","min-azimuth-angle","max-azimuth-angle","distance","min-distance","max-distance","infinity-dolly","min-zoom","max-zoom","smooth-time","dragging-smooth-time","max-speed","azimuth-rotate-speed","polar-rotate-speed","dolly-speed","dolly-drag-inverted","truck-speed","dolly-to-cursor","drag-to-offset","vertical-drag-to-forward","boundary-friction","rest-threshold","collider-meshes","args"],yl=u.defineComponent({__name:"CameraControls",props:{makeDefault:{type:Boolean,default:!1},camera:{},domElement:{},minPolarAngle:{default:0},maxPolarAngle:{default:Math.PI},minAzimuthAngle:{default:-1/0},maxAzimuthAngle:{default:1/0},distance:{default:()=>ae.useTresContext().camera.value.position.z},minDistance:{default:Number.EPSILON},maxDistance:{default:1/0},infinityDolly:{type:Boolean,default:!1},minZoom:{default:.01},maxZoom:{default:1/0},smoothTime:{default:.25},draggingSmoothTime:{default:.125},maxSpeed:{default:1/0},azimuthRotateSpeed:{default:1},polarRotateSpeed:{default:1},dollySpeed:{default:1},dollyDragInverted:{type:Boolean,default:!1},truckSpeed:{default:2},dollyToCursor:{type:Boolean,default:!1},dragToOffset:{type:Boolean,default:!1},verticalDragToForward:{type:Boolean,default:!1},boundaryFriction:{default:0},restThreshold:{default:.01},colliderMeshes:{default:()=>[]},mouseButtons:{},touches:{}},emits:["change","start","end"],setup(o,{expose:e,emit:t}){const n=o,i=t,{makeDefault:s,minPolarAngle:r,maxPolarAngle:a,minAzimuthAngle:l,maxAzimuthAngle:f,distance:h,minDistance:d,maxDistance:m,infinityDolly:y,minZoom:M,maxZoom:S,smoothTime:v,draggingSmoothTime:L,maxSpeed:I,azimuthRotateSpeed:A,polarRotateSpeed:g,dollySpeed:O,dollyDragInverted:x,truckSpeed:C,dollyToCursor:p,dragToOffset:w,verticalDragToForward:_,boundaryFriction:T,restThreshold:F,colliderMeshes:J}=u.toRefs(n),X={Box3:c.Box3,MathUtils:{clamp:c.MathUtils.clamp},Matrix4:c.Matrix4,Quaternion:c.Quaternion,Raycaster:c.Raycaster,Sphere:c.Sphere,Spherical:c.Spherical,Vector2:c.Vector2,Vector3:c.Vector3,Vector4:c.Vector4};Zt.install({THREE:X});const{camera:ee,renderer:$,extend:q,controls:Z}=ae.useTresContext(),ie=u.ref(null);q({CameraControls:Zt}),u.watchEffect(()=>{ne(),ie.value&&s.value?Z.value=ie.value:Z.value=null});function ne(){Le(ie.value,"update",()=>i("change",ie.value)),Le(ie.value,"controlend",()=>i("end",ie.value)),Le(ie.value,"controlstart",()=>i("start",ie.value))}const{onLoop:ce}=ae.useRenderLoop();return ce(({delta:G})=>{var z,b;(z=ie.value)!=null&&z.enabled&&((b=ie.value)==null||b.update(G))}),u.onUnmounted(()=>{ie.value&&ie.value.disconnect()}),e({value:ie}),(G,z)=>(G.camera||u.unref(ee))&&(G.domElement||u.unref($))?(u.openBlock(),u.createElementBlock("TresCameraControls",{key:0,ref_key:"controlsRef",ref:ie,"min-polar-angle":u.unref(r),"max-polar-angle":u.unref(a),"min-azimuth-angle":u.unref(l),"max-azimuth-angle":u.unref(f),distance:u.unref(h),"min-distance":u.unref(d),"max-distance":u.unref(m),"infinity-dolly":u.unref(y),"min-zoom":u.unref(M),"max-zoom":u.unref(S),"smooth-time":u.unref(v),"dragging-smooth-time":u.unref(L),"max-speed":u.unref(I),"azimuth-rotate-speed":u.unref(A),"polar-rotate-speed":u.unref(g),"dolly-speed":u.unref(O),"dolly-drag-inverted":u.unref(x),"truck-speed":u.unref(C),"dolly-to-cursor":u.unref(p),"drag-to-offset":u.unref(w),"vertical-drag-to-forward":u.unref(_),"boundary-friction":u.unref(T),"rest-threshold":u.unref(F),"collider-meshes":u.unref(J),args:[G.camera||u.unref(ee),G.domElement||u.unref($).domElement]},null,8,gl)):u.createCommentVNode("",!0)}});class _l extends c.MeshStandardMaterial{constructor(t={}){super(t);ye(this,"_time");ye(this,"_factor");this.setValues(t),this._time={value:0},this._factor={value:1}}onBeforeCompile(t){t.uniforms||(t.uniforms={}),t.uniforms.time=this._time,t.uniforms.factor=this._factor,t.vertexShader=`
|
|
233
|
+
*/const fe={LEFT:1,RIGHT:2,MIDDLE:4},J=Object.freeze({NONE:0,ROTATE:1,TRUCK:2,OFFSET:4,DOLLY:8,ZOOM:16,TOUCH_ROTATE:32,TOUCH_TRUCK:64,TOUCH_OFFSET:128,TOUCH_DOLLY:256,TOUCH_ZOOM:512,TOUCH_DOLLY_TRUCK:1024,TOUCH_DOLLY_OFFSET:2048,TOUCH_DOLLY_ROTATE:4096,TOUCH_ZOOM_TRUCK:8192,TOUCH_ZOOM_OFFSET:16384,TOUCH_ZOOM_ROTATE:32768}),Ot={NONE:0,IN:1,OUT:-1};function Mt(o){return o.isPerspectiveCamera}function dt(o){return o.isOrthographicCamera}const It=Math.PI*2,Mr=Math.PI/2,Ar=1e-5,Xt=Math.PI/180;function qe(o,e,t){return Math.max(e,Math.min(t,o))}function Pe(o,e=Ar){return Math.abs(o)<e}function Ae(o,e,t=Ar){return Pe(o-e,t)}function Sr(o,e){return Math.round(o/e)*e}function Wt(o){return isFinite(o)?o:o<0?-Number.MAX_VALUE:Number.MAX_VALUE}function Zt(o){return Math.abs(o)<Number.MAX_VALUE?o:o*(1/0)}function pn(o,e,t,n,i=1/0,r){n=Math.max(1e-4,n);const s=2/n,a=s*r,l=1/(1+a+.48*a*a+.235*a*a*a);let f=o-e;const u=e,d=i*n;f=qe(f,-d,d),e=o-f;const m=(t.value+s*f)*r;t.value=(t.value-s*m)*l;let y=e+(f+m)*l;return u-o>0==y>u&&(y=u,t.value=(y-u)/r),y}function Pr(o,e,t,n,i=1/0,r,s){n=Math.max(1e-4,n);const a=2/n,l=a*r,f=1/(1+l+.48*l*l+.235*l*l*l);let u=e.x,d=e.y,m=e.z,y=o.x-u,b=o.y-d,A=o.z-m;const _=u,L=d,I=m,S=i*n,g=S*S,O=y*y+b*b+A*A;if(O>g){const $=Math.sqrt(O);y=y/$*S,b=b/$*S,A=A/$*S}u=o.x-y,d=o.y-b,m=o.z-A;const x=(t.x+a*y)*r,C=(t.y+a*b)*r,p=(t.z+a*A)*r;t.x=(t.x-a*x)*f,t.y=(t.y-a*C)*f,t.z=(t.z-a*p)*f,s.x=u+(y+x)*f,s.y=d+(b+C)*f,s.z=m+(A+p)*f;const w=_-o.x,v=L-o.y,T=I-o.z,k=s.x-_,Q=s.y-L,Y=s.z-I;return w*k+v*Q+T*Y>0&&(s.x=_,s.y=L,s.z=I,t.x=(s.x-_)/r,t.y=(s.y-L)/r,t.z=(s.z-I)/r),s}function Jn(o,e){e.set(0,0),o.forEach(t=>{e.x+=t.clientX,e.y+=t.clientY}),e.x/=o.length,e.y/=o.length}function Hn(o,e){return dt(o)?(console.warn(`${e} is not supported in OrthographicCamera`),!0):!1}class bl{constructor(){this._listeners={}}addEventListener(e,t){const n=this._listeners;n[e]===void 0&&(n[e]=[]),n[e].indexOf(t)===-1&&n[e].push(t)}hasEventListener(e,t){const n=this._listeners;return n[e]!==void 0&&n[e].indexOf(t)!==-1}removeEventListener(e,t){const i=this._listeners[e];if(i!==void 0){const r=i.indexOf(t);r!==-1&&i.splice(r,1)}}removeAllEventListeners(e){if(!e){this._listeners={};return}Array.isArray(this._listeners[e])&&(this._listeners[e].length=0)}dispatchEvent(e){const n=this._listeners[e.type];if(n!==void 0){e.target=this;const i=n.slice(0);for(let r=0,s=i.length;r<s;r++)i[r].call(this,e)}}}const Ml="2.7.3",mn=1/8,Cr=typeof window<"u",Al=Cr&&/Mac/.test(navigator.platform),Sl=!(Cr&&"PointerEvent"in window);let he,Lr,gn,$n,ze,ge,be,Dt,qt,Je,He,At,Tr,Or,Xe,Kt,kt,Ir,ei,Dr,ti,ni,yn;class Qt extends bl{static install(e){he=e.THREE,Lr=Object.freeze(new he.Vector3(0,0,0)),gn=Object.freeze(new he.Vector3(0,1,0)),$n=Object.freeze(new he.Vector3(0,0,1)),ze=new he.Vector2,ge=new he.Vector3,be=new he.Vector3,Dt=new he.Vector3,qt=new he.Vector3,Je=new he.Vector3,He=new he.Vector3,At=new he.Vector3,Tr=new he.Vector3,Or=new he.Vector3,Xe=new he.Spherical,Kt=new he.Spherical,kt=new he.Box3,Ir=new he.Box3,ei=new he.Sphere,Dr=new he.Quaternion,ti=new he.Quaternion,ni=new he.Matrix4,yn=new he.Raycaster}static get ACTION(){return J}constructor(e,t){super(),this.minPolarAngle=0,this.maxPolarAngle=Math.PI,this.minAzimuthAngle=-1/0,this.maxAzimuthAngle=1/0,this.minDistance=Number.EPSILON,this.maxDistance=1/0,this.infinityDolly=!1,this.minZoom=.01,this.maxZoom=1/0,this.smoothTime=.25,this.draggingSmoothTime=.125,this.maxSpeed=1/0,this.azimuthRotateSpeed=1,this.polarRotateSpeed=1,this.dollySpeed=1,this.dollyDragInverted=!1,this.truckSpeed=2,this.dollyToCursor=!1,this.dragToOffset=!1,this.verticalDragToForward=!1,this.boundaryFriction=0,this.restThreshold=.01,this.colliderMeshes=[],this.cancel=()=>{},this._enabled=!0,this._state=J.NONE,this._viewport=null,this._changedDolly=0,this._changedZoom=0,this._hasRested=!0,this._boundaryEnclosesCamera=!1,this._needsUpdate=!0,this._updatedLastTime=!1,this._elementRect=new DOMRect,this._isDragging=!1,this._dragNeedsUpdate=!0,this._activePointers=[],this._lockedPointer=null,this._interactiveArea=new DOMRect(0,0,1,1),this._isUserControllingRotate=!1,this._isUserControllingDolly=!1,this._isUserControllingTruck=!1,this._isUserControllingOffset=!1,this._isUserControllingZoom=!1,this._lastDollyDirection=Ot.NONE,this._thetaVelocity={value:0},this._phiVelocity={value:0},this._radiusVelocity={value:0},this._targetVelocity=new he.Vector3,this._focalOffsetVelocity=new he.Vector3,this._zoomVelocity={value:0},this._truckInternal=(g,O,x)=>{let C,p;if(Mt(this._camera)){const w=ge.copy(this._camera.position).sub(this._target),v=this._camera.getEffectiveFOV()*Xt,T=w.length()*Math.tan(v*.5);C=this.truckSpeed*g*T/this._elementRect.height,p=this.truckSpeed*O*T/this._elementRect.height}else if(dt(this._camera)){const w=this._camera;C=g*(w.right-w.left)/w.zoom/this._elementRect.width,p=O*(w.top-w.bottom)/w.zoom/this._elementRect.height}else return;this.verticalDragToForward?(x?this.setFocalOffset(this._focalOffsetEnd.x+C,this._focalOffsetEnd.y,this._focalOffsetEnd.z,!0):this.truck(C,0,!0),this.forward(-p,!0)):x?this.setFocalOffset(this._focalOffsetEnd.x+C,this._focalOffsetEnd.y+p,this._focalOffsetEnd.z,!0):this.truck(C,p,!0)},this._rotateInternal=(g,O)=>{const x=It*this.azimuthRotateSpeed*g/this._elementRect.height,C=It*this.polarRotateSpeed*O/this._elementRect.height;this.rotate(x,C,!0)},this._dollyInternal=(g,O,x)=>{const C=Math.pow(.95,-g*this.dollySpeed),p=this._sphericalEnd.radius,w=this._sphericalEnd.radius*C,v=qe(w,this.minDistance,this.maxDistance),T=v-w;this.infinityDolly&&this.dollyToCursor?this._dollyToNoClamp(w,!0):this.infinityDolly&&!this.dollyToCursor?(this.dollyInFixed(T,!0),this._dollyToNoClamp(v,!0)):this._dollyToNoClamp(v,!0),this.dollyToCursor&&(this._changedDolly+=(this.infinityDolly?w:v)-p,this._dollyControlCoord.set(O,x)),this._lastDollyDirection=Math.sign(-g)},this._zoomInternal=(g,O,x)=>{const C=Math.pow(.95,g*this.dollySpeed),p=this._zoom,w=this._zoom*C;this.zoomTo(w,!0),this.dollyToCursor&&(this._changedZoom+=w-p,this._dollyControlCoord.set(O,x))},typeof he>"u"&&console.error("camera-controls: `THREE` is undefined. You must first run `CameraControls.install( { THREE: THREE } )`. Check the docs for further information."),this._camera=e,this._yAxisUpSpace=new he.Quaternion().setFromUnitVectors(this._camera.up,gn),this._yAxisUpSpaceInverse=this._yAxisUpSpace.clone().invert(),this._state=J.NONE,this._target=new he.Vector3,this._targetEnd=this._target.clone(),this._focalOffset=new he.Vector3,this._focalOffsetEnd=this._focalOffset.clone(),this._spherical=new he.Spherical().setFromVector3(ge.copy(this._camera.position).applyQuaternion(this._yAxisUpSpace)),this._sphericalEnd=this._spherical.clone(),this._lastDistance=this._spherical.radius,this._zoom=this._camera.zoom,this._zoomEnd=this._zoom,this._lastZoom=this._zoom,this._nearPlaneCorners=[new he.Vector3,new he.Vector3,new he.Vector3,new he.Vector3],this._updateNearPlaneCorners(),this._boundary=new he.Box3(new he.Vector3(-1/0,-1/0,-1/0),new he.Vector3(1/0,1/0,1/0)),this._cameraUp0=this._camera.up.clone(),this._target0=this._target.clone(),this._position0=this._camera.position.clone(),this._zoom0=this._zoom,this._focalOffset0=this._focalOffset.clone(),this._dollyControlCoord=new he.Vector2,this.mouseButtons={left:J.ROTATE,middle:J.DOLLY,right:J.TRUCK,wheel:Mt(this._camera)?J.DOLLY:dt(this._camera)?J.ZOOM:J.NONE},this.touches={one:J.TOUCH_ROTATE,two:Mt(this._camera)?J.TOUCH_DOLLY_TRUCK:dt(this._camera)?J.TOUCH_ZOOM_TRUCK:J.NONE,three:J.TOUCH_TRUCK};const n=new he.Vector2,i=new he.Vector2,r=new he.Vector2,s=g=>{if(!this._enabled||!this._domElement)return;if(this._interactiveArea.left!==0||this._interactiveArea.top!==0||this._interactiveArea.width!==1||this._interactiveArea.height!==1){const C=this._domElement.getBoundingClientRect(),p=g.clientX/C.width,w=g.clientY/C.height;if(p<this._interactiveArea.left||p>this._interactiveArea.right||w<this._interactiveArea.top||w>this._interactiveArea.bottom)return}const O=g.pointerType!=="mouse"?null:(g.buttons&fe.LEFT)===fe.LEFT?fe.LEFT:(g.buttons&fe.MIDDLE)===fe.MIDDLE?fe.MIDDLE:(g.buttons&fe.RIGHT)===fe.RIGHT?fe.RIGHT:null;if(O!==null){const C=this._findPointerByMouseButton(O);C&&this._disposePointer(C)}if((g.buttons&fe.LEFT)===fe.LEFT&&this._lockedPointer)return;const x={pointerId:g.pointerId,clientX:g.clientX,clientY:g.clientY,deltaX:0,deltaY:0,mouseButton:O};this._activePointers.push(x),this._domElement.ownerDocument.removeEventListener("pointermove",l,{passive:!1}),this._domElement.ownerDocument.removeEventListener("pointerup",u),this._domElement.ownerDocument.addEventListener("pointermove",l,{passive:!1}),this._domElement.ownerDocument.addEventListener("pointerup",u),this._isDragging=!0,A(g)},a=g=>{if(!this._enabled||!this._domElement||this._lockedPointer)return;if(this._interactiveArea.left!==0||this._interactiveArea.top!==0||this._interactiveArea.width!==1||this._interactiveArea.height!==1){const C=this._domElement.getBoundingClientRect(),p=g.clientX/C.width,w=g.clientY/C.height;if(p<this._interactiveArea.left||p>this._interactiveArea.right||w<this._interactiveArea.top||w>this._interactiveArea.bottom)return}const O=(g.buttons&fe.LEFT)===fe.LEFT?fe.LEFT:(g.buttons&fe.MIDDLE)===fe.MIDDLE?fe.MIDDLE:(g.buttons&fe.RIGHT)===fe.RIGHT?fe.RIGHT:null;if(O!==null){const C=this._findPointerByMouseButton(O);C&&this._disposePointer(C)}const x={pointerId:1,clientX:g.clientX,clientY:g.clientY,deltaX:0,deltaY:0,mouseButton:(g.buttons&fe.LEFT)===fe.LEFT?fe.LEFT:(g.buttons&fe.MIDDLE)===fe.LEFT?fe.MIDDLE:(g.buttons&fe.RIGHT)===fe.LEFT?fe.RIGHT:null};this._activePointers.push(x),this._domElement.ownerDocument.removeEventListener("mousemove",f),this._domElement.ownerDocument.removeEventListener("mouseup",d),this._domElement.ownerDocument.addEventListener("mousemove",f),this._domElement.ownerDocument.addEventListener("mouseup",d),this._isDragging=!0,A(g)},l=g=>{g.cancelable&&g.preventDefault();const O=g.pointerId,x=this._lockedPointer||this._findPointerById(O);if(x){if(x.clientX=g.clientX,x.clientY=g.clientY,x.deltaX=g.movementX,x.deltaY=g.movementY,this._state=0,g.pointerType==="touch")switch(this._activePointers.length){case 1:this._state=this.touches.one;break;case 2:this._state=this.touches.two;break;case 3:this._state=this.touches.three;break}else(!this._isDragging&&this._lockedPointer||this._isDragging&&(g.buttons&fe.LEFT)===fe.LEFT)&&(this._state=this._state|this.mouseButtons.left),this._isDragging&&(g.buttons&fe.MIDDLE)===fe.MIDDLE&&(this._state=this._state|this.mouseButtons.middle),this._isDragging&&(g.buttons&fe.RIGHT)===fe.RIGHT&&(this._state=this._state|this.mouseButtons.right);_()}},f=g=>{const O=this._lockedPointer||this._findPointerById(1);O&&(O.clientX=g.clientX,O.clientY=g.clientY,O.deltaX=g.movementX,O.deltaY=g.movementY,this._state=0,(this._lockedPointer||(g.buttons&fe.LEFT)===fe.LEFT)&&(this._state=this._state|this.mouseButtons.left),(g.buttons&fe.MIDDLE)===fe.MIDDLE&&(this._state=this._state|this.mouseButtons.middle),(g.buttons&fe.RIGHT)===fe.RIGHT&&(this._state=this._state|this.mouseButtons.right),_())},u=g=>{const O=this._findPointerById(g.pointerId);if(!(O&&O===this._lockedPointer)){if(O&&this._disposePointer(O),g.pointerType==="touch")switch(this._activePointers.length){case 0:this._state=J.NONE;break;case 1:this._state=this.touches.one;break;case 2:this._state=this.touches.two;break;case 3:this._state=this.touches.three;break}else this._state=J.NONE;L()}},d=()=>{const g=this._findPointerById(1);g&&g===this._lockedPointer||(g&&this._disposePointer(g),this._state=J.NONE,L())};let m=-1;const y=g=>{if(!this._domElement||!this._enabled||this.mouseButtons.wheel===J.NONE)return;if(this._interactiveArea.left!==0||this._interactiveArea.top!==0||this._interactiveArea.width!==1||this._interactiveArea.height!==1){const w=this._domElement.getBoundingClientRect(),v=g.clientX/w.width,T=g.clientY/w.height;if(v<this._interactiveArea.left||v>this._interactiveArea.right||T<this._interactiveArea.top||T>this._interactiveArea.bottom)return}if(g.preventDefault(),this.dollyToCursor||this.mouseButtons.wheel===J.ROTATE||this.mouseButtons.wheel===J.TRUCK){const w=performance.now();m-w<1e3&&this._getClientRect(this._elementRect),m=w}const O=Al?-1:-3,x=g.deltaMode===1?g.deltaY/O:g.deltaY/(O*10),C=this.dollyToCursor?(g.clientX-this._elementRect.x)/this._elementRect.width*2-1:0,p=this.dollyToCursor?(g.clientY-this._elementRect.y)/this._elementRect.height*-2+1:0;switch(this.mouseButtons.wheel){case J.ROTATE:{this._rotateInternal(g.deltaX,g.deltaY),this._isUserControllingRotate=!0;break}case J.TRUCK:{this._truckInternal(g.deltaX,g.deltaY,!1),this._isUserControllingTruck=!0;break}case J.OFFSET:{this._truckInternal(g.deltaX,g.deltaY,!0),this._isUserControllingOffset=!0;break}case J.DOLLY:{this._dollyInternal(-x,C,p),this._isUserControllingDolly=!0;break}case J.ZOOM:{this._zoomInternal(-x,C,p),this._isUserControllingZoom=!0;break}}this.dispatchEvent({type:"control"})},b=g=>{if(!(!this._domElement||!this._enabled)){if(this.mouseButtons.right===Qt.ACTION.NONE){const O=g instanceof PointerEvent?g.pointerId:(g instanceof MouseEvent,0),x=this._findPointerById(O);x&&this._disposePointer(x),this._domElement.ownerDocument.removeEventListener("pointermove",l,{passive:!1}),this._domElement.ownerDocument.removeEventListener("pointerup",u),this._domElement.ownerDocument.removeEventListener("mousemove",f),this._domElement.ownerDocument.removeEventListener("mouseup",d);return}g.preventDefault()}},A=g=>{if(!this._enabled)return;if(Jn(this._activePointers,ze),this._getClientRect(this._elementRect),n.copy(ze),i.copy(ze),this._activePointers.length>=2){const x=ze.x-this._activePointers[1].clientX,C=ze.y-this._activePointers[1].clientY,p=Math.sqrt(x*x+C*C);r.set(0,p);const w=(this._activePointers[0].clientX+this._activePointers[1].clientX)*.5,v=(this._activePointers[0].clientY+this._activePointers[1].clientY)*.5;i.set(w,v)}if(this._state=0,!g)this._lockedPointer&&(this._state=this._state|this.mouseButtons.left);else if("pointerType"in g&&g.pointerType==="touch")switch(this._activePointers.length){case 1:this._state=this.touches.one;break;case 2:this._state=this.touches.two;break;case 3:this._state=this.touches.three;break}else!this._lockedPointer&&(g.buttons&fe.LEFT)===fe.LEFT&&(this._state=this._state|this.mouseButtons.left),(g.buttons&fe.MIDDLE)===fe.MIDDLE&&(this._state=this._state|this.mouseButtons.middle),(g.buttons&fe.RIGHT)===fe.RIGHT&&(this._state=this._state|this.mouseButtons.right);((this._state&J.ROTATE)===J.ROTATE||(this._state&J.TOUCH_ROTATE)===J.TOUCH_ROTATE||(this._state&J.TOUCH_DOLLY_ROTATE)===J.TOUCH_DOLLY_ROTATE||(this._state&J.TOUCH_ZOOM_ROTATE)===J.TOUCH_ZOOM_ROTATE)&&(this._sphericalEnd.theta=this._spherical.theta,this._sphericalEnd.phi=this._spherical.phi,this._thetaVelocity.value=0,this._phiVelocity.value=0),((this._state&J.TRUCK)===J.TRUCK||(this._state&J.TOUCH_TRUCK)===J.TOUCH_TRUCK||(this._state&J.TOUCH_DOLLY_TRUCK)===J.TOUCH_DOLLY_TRUCK||(this._state&J.TOUCH_ZOOM_TRUCK)===J.TOUCH_ZOOM_TRUCK)&&(this._targetEnd.copy(this._target),this._targetVelocity.set(0,0,0)),((this._state&J.DOLLY)===J.DOLLY||(this._state&J.TOUCH_DOLLY)===J.TOUCH_DOLLY||(this._state&J.TOUCH_DOLLY_TRUCK)===J.TOUCH_DOLLY_TRUCK||(this._state&J.TOUCH_DOLLY_OFFSET)===J.TOUCH_DOLLY_OFFSET||(this._state&J.TOUCH_DOLLY_ROTATE)===J.TOUCH_DOLLY_ROTATE)&&(this._sphericalEnd.radius=this._spherical.radius,this._radiusVelocity.value=0),((this._state&J.ZOOM)===J.ZOOM||(this._state&J.TOUCH_ZOOM)===J.TOUCH_ZOOM||(this._state&J.TOUCH_ZOOM_TRUCK)===J.TOUCH_ZOOM_TRUCK||(this._state&J.TOUCH_ZOOM_OFFSET)===J.TOUCH_ZOOM_OFFSET||(this._state&J.TOUCH_ZOOM_ROTATE)===J.TOUCH_ZOOM_ROTATE)&&(this._zoomEnd=this._zoom,this._zoomVelocity.value=0),((this._state&J.OFFSET)===J.OFFSET||(this._state&J.TOUCH_OFFSET)===J.TOUCH_OFFSET||(this._state&J.TOUCH_DOLLY_OFFSET)===J.TOUCH_DOLLY_OFFSET||(this._state&J.TOUCH_ZOOM_OFFSET)===J.TOUCH_ZOOM_OFFSET)&&(this._focalOffsetEnd.copy(this._focalOffset),this._focalOffsetVelocity.set(0,0,0)),this.dispatchEvent({type:"controlstart"})},_=()=>{if(!this._enabled||!this._dragNeedsUpdate)return;this._dragNeedsUpdate=!1,Jn(this._activePointers,ze);const O=this._domElement&&document.pointerLockElement===this._domElement?this._lockedPointer||this._activePointers[0]:null,x=O?-O.deltaX:i.x-ze.x,C=O?-O.deltaY:i.y-ze.y;if(i.copy(ze),((this._state&J.ROTATE)===J.ROTATE||(this._state&J.TOUCH_ROTATE)===J.TOUCH_ROTATE||(this._state&J.TOUCH_DOLLY_ROTATE)===J.TOUCH_DOLLY_ROTATE||(this._state&J.TOUCH_ZOOM_ROTATE)===J.TOUCH_ZOOM_ROTATE)&&(this._rotateInternal(x,C),this._isUserControllingRotate=!0),(this._state&J.DOLLY)===J.DOLLY||(this._state&J.ZOOM)===J.ZOOM){const p=this.dollyToCursor?(n.x-this._elementRect.x)/this._elementRect.width*2-1:0,w=this.dollyToCursor?(n.y-this._elementRect.y)/this._elementRect.height*-2+1:0,v=this.dollyDragInverted?-1:1;(this._state&J.DOLLY)===J.DOLLY?(this._dollyInternal(v*C*mn,p,w),this._isUserControllingDolly=!0):(this._zoomInternal(v*C*mn,p,w),this._isUserControllingZoom=!0)}if((this._state&J.TOUCH_DOLLY)===J.TOUCH_DOLLY||(this._state&J.TOUCH_ZOOM)===J.TOUCH_ZOOM||(this._state&J.TOUCH_DOLLY_TRUCK)===J.TOUCH_DOLLY_TRUCK||(this._state&J.TOUCH_ZOOM_TRUCK)===J.TOUCH_ZOOM_TRUCK||(this._state&J.TOUCH_DOLLY_OFFSET)===J.TOUCH_DOLLY_OFFSET||(this._state&J.TOUCH_ZOOM_OFFSET)===J.TOUCH_ZOOM_OFFSET||(this._state&J.TOUCH_DOLLY_ROTATE)===J.TOUCH_DOLLY_ROTATE||(this._state&J.TOUCH_ZOOM_ROTATE)===J.TOUCH_ZOOM_ROTATE){const p=ze.x-this._activePointers[1].clientX,w=ze.y-this._activePointers[1].clientY,v=Math.sqrt(p*p+w*w),T=r.y-v;r.set(0,v);const k=this.dollyToCursor?(i.x-this._elementRect.x)/this._elementRect.width*2-1:0,Q=this.dollyToCursor?(i.y-this._elementRect.y)/this._elementRect.height*-2+1:0;(this._state&J.TOUCH_DOLLY)===J.TOUCH_DOLLY||(this._state&J.TOUCH_DOLLY_ROTATE)===J.TOUCH_DOLLY_ROTATE||(this._state&J.TOUCH_DOLLY_TRUCK)===J.TOUCH_DOLLY_TRUCK||(this._state&J.TOUCH_DOLLY_OFFSET)===J.TOUCH_DOLLY_OFFSET?(this._dollyInternal(T*mn,k,Q),this._isUserControllingDolly=!0):(this._zoomInternal(T*mn,k,Q),this._isUserControllingZoom=!0)}((this._state&J.TRUCK)===J.TRUCK||(this._state&J.TOUCH_TRUCK)===J.TOUCH_TRUCK||(this._state&J.TOUCH_DOLLY_TRUCK)===J.TOUCH_DOLLY_TRUCK||(this._state&J.TOUCH_ZOOM_TRUCK)===J.TOUCH_ZOOM_TRUCK)&&(this._truckInternal(x,C,!1),this._isUserControllingTruck=!0),((this._state&J.OFFSET)===J.OFFSET||(this._state&J.TOUCH_OFFSET)===J.TOUCH_OFFSET||(this._state&J.TOUCH_DOLLY_OFFSET)===J.TOUCH_DOLLY_OFFSET||(this._state&J.TOUCH_ZOOM_OFFSET)===J.TOUCH_ZOOM_OFFSET)&&(this._truckInternal(x,C,!0),this._isUserControllingOffset=!0),this.dispatchEvent({type:"control"})},L=()=>{Jn(this._activePointers,ze),i.copy(ze),this._dragNeedsUpdate=!1,(this._activePointers.length===0||this._activePointers.length===1&&this._activePointers[0]===this._lockedPointer)&&(this._isDragging=!1),this._activePointers.length===0&&this._domElement&&(this._domElement.ownerDocument.removeEventListener("pointermove",l,{passive:!1}),this._domElement.ownerDocument.removeEventListener("mousemove",f),this._domElement.ownerDocument.removeEventListener("pointerup",u),this._domElement.ownerDocument.removeEventListener("mouseup",d),this.dispatchEvent({type:"controlend"}))};this.lockPointer=()=>{!this._enabled||!this._domElement||(this.cancel(),this._lockedPointer={pointerId:-1,clientX:0,clientY:0,deltaX:0,deltaY:0,mouseButton:null},this._activePointers.push(this._lockedPointer),this._domElement.ownerDocument.removeEventListener("pointermove",l,{passive:!1}),this._domElement.ownerDocument.removeEventListener("pointerup",u),this._domElement.requestPointerLock(),this._domElement.ownerDocument.addEventListener("pointerlockchange",I),this._domElement.ownerDocument.addEventListener("pointerlockerror",S),this._domElement.ownerDocument.addEventListener("pointermove",l,{passive:!1}),this._domElement.ownerDocument.addEventListener("pointerup",u),A())},this.unlockPointer=()=>{this._lockedPointer!==null&&(this._disposePointer(this._lockedPointer),this._lockedPointer=null),document.exitPointerLock(),this.cancel(),this._domElement&&(this._domElement.ownerDocument.removeEventListener("pointerlockchange",I),this._domElement.ownerDocument.removeEventListener("pointerlockerror",S))};const I=()=>{this._domElement&&this._domElement.ownerDocument.pointerLockElement===this._domElement||this.unlockPointer()},S=()=>{this.unlockPointer()};this._addAllEventListeners=g=>{this._domElement=g,this._domElement.style.touchAction="none",this._domElement.style.userSelect="none",this._domElement.style.webkitUserSelect="none",this._domElement.addEventListener("pointerdown",s),Sl&&this._domElement.addEventListener("mousedown",a),this._domElement.addEventListener("pointercancel",u),this._domElement.addEventListener("wheel",y,{passive:!1}),this._domElement.addEventListener("contextmenu",b)},this._removeAllEventListeners=()=>{this._domElement&&(this._domElement.style.touchAction="",this._domElement.style.userSelect="",this._domElement.style.webkitUserSelect="",this._domElement.removeEventListener("pointerdown",s),this._domElement.removeEventListener("mousedown",a),this._domElement.removeEventListener("pointercancel",u),this._domElement.removeEventListener("wheel",y,{passive:!1}),this._domElement.removeEventListener("contextmenu",b),this._domElement.ownerDocument.removeEventListener("pointermove",l,{passive:!1}),this._domElement.ownerDocument.removeEventListener("mousemove",f),this._domElement.ownerDocument.removeEventListener("pointerup",u),this._domElement.ownerDocument.removeEventListener("mouseup",d),this._domElement.ownerDocument.removeEventListener("pointerlockchange",I),this._domElement.ownerDocument.removeEventListener("pointerlockerror",S))},this.cancel=()=>{this._state!==J.NONE&&(this._state=J.NONE,this._activePointers.length=0,L())},t&&this.connect(t),this.update(0)}get camera(){return this._camera}set camera(e){this._camera=e,this.updateCameraUp(),this._camera.updateProjectionMatrix(),this._updateNearPlaneCorners(),this._needsUpdate=!0}get enabled(){return this._enabled}set enabled(e){this._enabled=e,this._domElement&&(e?(this._domElement.style.touchAction="none",this._domElement.style.userSelect="none",this._domElement.style.webkitUserSelect="none"):(this.cancel(),this._domElement.style.touchAction="",this._domElement.style.userSelect="",this._domElement.style.webkitUserSelect=""))}get active(){return!this._hasRested}get currentAction(){return this._state}get distance(){return this._spherical.radius}set distance(e){this._spherical.radius===e&&this._sphericalEnd.radius===e||(this._spherical.radius=e,this._sphericalEnd.radius=e,this._needsUpdate=!0)}get azimuthAngle(){return this._spherical.theta}set azimuthAngle(e){this._spherical.theta===e&&this._sphericalEnd.theta===e||(this._spherical.theta=e,this._sphericalEnd.theta=e,this._needsUpdate=!0)}get polarAngle(){return this._spherical.phi}set polarAngle(e){this._spherical.phi===e&&this._sphericalEnd.phi===e||(this._spherical.phi=e,this._sphericalEnd.phi=e,this._needsUpdate=!0)}get boundaryEnclosesCamera(){return this._boundaryEnclosesCamera}set boundaryEnclosesCamera(e){this._boundaryEnclosesCamera=e,this._needsUpdate=!0}set interactiveArea(e){this._interactiveArea.width=qe(e.width,0,1),this._interactiveArea.height=qe(e.height,0,1),this._interactiveArea.x=qe(e.x,0,1-this._interactiveArea.width),this._interactiveArea.y=qe(e.y,0,1-this._interactiveArea.height)}addEventListener(e,t){super.addEventListener(e,t)}removeEventListener(e,t){super.removeEventListener(e,t)}rotate(e,t,n=!1){return this.rotateTo(this._sphericalEnd.theta+e,this._sphericalEnd.phi+t,n)}rotateAzimuthTo(e,t=!1){return this.rotateTo(e,this._sphericalEnd.phi,t)}rotatePolarTo(e,t=!1){return this.rotateTo(this._sphericalEnd.theta,e,t)}rotateTo(e,t,n=!1){this._isUserControllingRotate=!1;const i=qe(e,this.minAzimuthAngle,this.maxAzimuthAngle),r=qe(t,this.minPolarAngle,this.maxPolarAngle);this._sphericalEnd.theta=i,this._sphericalEnd.phi=r,this._sphericalEnd.makeSafe(),this._needsUpdate=!0,n||(this._spherical.theta=this._sphericalEnd.theta,this._spherical.phi=this._sphericalEnd.phi);const s=!n||Ae(this._spherical.theta,this._sphericalEnd.theta,this.restThreshold)&&Ae(this._spherical.phi,this._sphericalEnd.phi,this.restThreshold);return this._createOnRestPromise(s)}dolly(e,t=!1){return this.dollyTo(this._sphericalEnd.radius-e,t)}dollyTo(e,t=!1){return this._isUserControllingDolly=!1,this._lastDollyDirection=Ot.NONE,this._changedDolly=0,this._dollyToNoClamp(qe(e,this.minDistance,this.maxDistance),t)}_dollyToNoClamp(e,t=!1){const n=this._sphericalEnd.radius;if(this.colliderMeshes.length>=1){const s=this._collisionTest(),a=Ae(s,this._spherical.radius);if(!(n>e)&&a)return Promise.resolve();this._sphericalEnd.radius=Math.min(e,s)}else this._sphericalEnd.radius=e;this._needsUpdate=!0,t||(this._spherical.radius=this._sphericalEnd.radius);const r=!t||Ae(this._spherical.radius,this._sphericalEnd.radius,this.restThreshold);return this._createOnRestPromise(r)}dollyInFixed(e,t=!1){this._targetEnd.add(this._getCameraDirection(qt).multiplyScalar(e)),t||this._target.copy(this._targetEnd);const n=!t||Ae(this._target.x,this._targetEnd.x,this.restThreshold)&&Ae(this._target.y,this._targetEnd.y,this.restThreshold)&&Ae(this._target.z,this._targetEnd.z,this.restThreshold);return this._createOnRestPromise(n)}zoom(e,t=!1){return this.zoomTo(this._zoomEnd+e,t)}zoomTo(e,t=!1){this._isUserControllingZoom=!1,this._zoomEnd=qe(e,this.minZoom,this.maxZoom),this._needsUpdate=!0,t||(this._zoom=this._zoomEnd);const n=!t||Ae(this._zoom,this._zoomEnd,this.restThreshold);return this._changedZoom=0,this._createOnRestPromise(n)}pan(e,t,n=!1){return console.warn("`pan` has been renamed to `truck`"),this.truck(e,t,n)}truck(e,t,n=!1){this._camera.updateMatrix(),Je.setFromMatrixColumn(this._camera.matrix,0),He.setFromMatrixColumn(this._camera.matrix,1),Je.multiplyScalar(e),He.multiplyScalar(-t);const i=ge.copy(Je).add(He),r=be.copy(this._targetEnd).add(i);return this.moveTo(r.x,r.y,r.z,n)}forward(e,t=!1){ge.setFromMatrixColumn(this._camera.matrix,0),ge.crossVectors(this._camera.up,ge),ge.multiplyScalar(e);const n=be.copy(this._targetEnd).add(ge);return this.moveTo(n.x,n.y,n.z,t)}elevate(e,t=!1){return ge.copy(this._camera.up).multiplyScalar(e),this.moveTo(this._targetEnd.x+ge.x,this._targetEnd.y+ge.y,this._targetEnd.z+ge.z,t)}moveTo(e,t,n,i=!1){this._isUserControllingTruck=!1;const r=ge.set(e,t,n).sub(this._targetEnd);this._encloseToBoundary(this._targetEnd,r,this.boundaryFriction),this._needsUpdate=!0,i||this._target.copy(this._targetEnd);const s=!i||Ae(this._target.x,this._targetEnd.x,this.restThreshold)&&Ae(this._target.y,this._targetEnd.y,this.restThreshold)&&Ae(this._target.z,this._targetEnd.z,this.restThreshold);return this._createOnRestPromise(s)}lookInDirectionOf(e,t,n,i=!1){const a=ge.set(e,t,n).sub(this._targetEnd).normalize().multiplyScalar(-this._sphericalEnd.radius);return this.setPosition(a.x,a.y,a.z,i)}fitToBox(e,t,{cover:n=!1,paddingLeft:i=0,paddingRight:r=0,paddingBottom:s=0,paddingTop:a=0}={}){const l=[],f=e.isBox3?kt.copy(e):kt.setFromObject(e);f.isEmpty()&&(console.warn("camera-controls: fitTo() cannot be used with an empty box. Aborting"),Promise.resolve());const u=Sr(this._sphericalEnd.theta,Mr),d=Sr(this._sphericalEnd.phi,Mr);l.push(this.rotateTo(u,d,t));const m=ge.setFromSpherical(this._sphericalEnd).normalize(),y=Dr.setFromUnitVectors(m,$n),b=Ae(Math.abs(m.y),1);b&&y.multiply(ti.setFromAxisAngle(gn,u)),y.multiply(this._yAxisUpSpaceInverse);const A=Ir.makeEmpty();be.copy(f.min).applyQuaternion(y),A.expandByPoint(be),be.copy(f.min).setX(f.max.x).applyQuaternion(y),A.expandByPoint(be),be.copy(f.min).setY(f.max.y).applyQuaternion(y),A.expandByPoint(be),be.copy(f.max).setZ(f.min.z).applyQuaternion(y),A.expandByPoint(be),be.copy(f.min).setZ(f.max.z).applyQuaternion(y),A.expandByPoint(be),be.copy(f.max).setY(f.min.y).applyQuaternion(y),A.expandByPoint(be),be.copy(f.max).setX(f.min.x).applyQuaternion(y),A.expandByPoint(be),be.copy(f.max).applyQuaternion(y),A.expandByPoint(be),A.min.x-=i,A.min.y-=s,A.max.x+=r,A.max.y+=a,y.setFromUnitVectors($n,m),b&&y.premultiply(ti.invert()),y.premultiply(this._yAxisUpSpace);const _=A.getSize(ge),L=A.getCenter(be).applyQuaternion(y);if(Mt(this._camera)){const I=this.getDistanceToFitBox(_.x,_.y,_.z,n);l.push(this.moveTo(L.x,L.y,L.z,t)),l.push(this.dollyTo(I,t)),l.push(this.setFocalOffset(0,0,0,t))}else if(dt(this._camera)){const I=this._camera,S=I.right-I.left,g=I.top-I.bottom,O=n?Math.max(S/_.x,g/_.y):Math.min(S/_.x,g/_.y);l.push(this.moveTo(L.x,L.y,L.z,t)),l.push(this.zoomTo(O,t)),l.push(this.setFocalOffset(0,0,0,t))}return Promise.all(l)}fitToSphere(e,t){const n=[],r=e instanceof he.Sphere?ei.copy(e):Qt.createBoundingSphere(e,ei);if(n.push(this.moveTo(r.center.x,r.center.y,r.center.z,t)),Mt(this._camera)){const s=this.getDistanceToFitSphere(r.radius);n.push(this.dollyTo(s,t))}else if(dt(this._camera)){const s=this._camera.right-this._camera.left,a=this._camera.top-this._camera.bottom,l=2*r.radius,f=Math.min(s/l,a/l);n.push(this.zoomTo(f,t))}return n.push(this.setFocalOffset(0,0,0,t)),Promise.all(n)}setLookAt(e,t,n,i,r,s,a=!1){this._isUserControllingRotate=!1,this._isUserControllingDolly=!1,this._isUserControllingTruck=!1,this._lastDollyDirection=Ot.NONE,this._changedDolly=0;const l=be.set(i,r,s),f=ge.set(e,t,n);this._targetEnd.copy(l),this._sphericalEnd.setFromVector3(f.sub(l).applyQuaternion(this._yAxisUpSpace)),this.normalizeRotations(),this._needsUpdate=!0,a||(this._target.copy(this._targetEnd),this._spherical.copy(this._sphericalEnd));const u=!a||Ae(this._target.x,this._targetEnd.x,this.restThreshold)&&Ae(this._target.y,this._targetEnd.y,this.restThreshold)&&Ae(this._target.z,this._targetEnd.z,this.restThreshold)&&Ae(this._spherical.theta,this._sphericalEnd.theta,this.restThreshold)&&Ae(this._spherical.phi,this._sphericalEnd.phi,this.restThreshold)&&Ae(this._spherical.radius,this._sphericalEnd.radius,this.restThreshold);return this._createOnRestPromise(u)}lerpLookAt(e,t,n,i,r,s,a,l,f,u,d,m,y,b=!1){this._isUserControllingRotate=!1,this._isUserControllingDolly=!1,this._isUserControllingTruck=!1,this._lastDollyDirection=Ot.NONE,this._changedDolly=0;const A=ge.set(i,r,s),_=be.set(e,t,n);Xe.setFromVector3(_.sub(A).applyQuaternion(this._yAxisUpSpace));const L=Dt.set(u,d,m),I=be.set(a,l,f);Kt.setFromVector3(I.sub(L).applyQuaternion(this._yAxisUpSpace)),this._targetEnd.copy(A.lerp(L,y));const S=Kt.theta-Xe.theta,g=Kt.phi-Xe.phi,O=Kt.radius-Xe.radius;this._sphericalEnd.set(Xe.radius+O*y,Xe.phi+g*y,Xe.theta+S*y),this.normalizeRotations(),this._needsUpdate=!0,b||(this._target.copy(this._targetEnd),this._spherical.copy(this._sphericalEnd));const x=!b||Ae(this._target.x,this._targetEnd.x,this.restThreshold)&&Ae(this._target.y,this._targetEnd.y,this.restThreshold)&&Ae(this._target.z,this._targetEnd.z,this.restThreshold)&&Ae(this._spherical.theta,this._sphericalEnd.theta,this.restThreshold)&&Ae(this._spherical.phi,this._sphericalEnd.phi,this.restThreshold)&&Ae(this._spherical.radius,this._sphericalEnd.radius,this.restThreshold);return this._createOnRestPromise(x)}setPosition(e,t,n,i=!1){return this.setLookAt(e,t,n,this._targetEnd.x,this._targetEnd.y,this._targetEnd.z,i)}setTarget(e,t,n,i=!1){const r=this.getPosition(ge),s=this.setLookAt(r.x,r.y,r.z,e,t,n,i);return this._sphericalEnd.phi=qe(this._sphericalEnd.phi,this.minPolarAngle,this.maxPolarAngle),s}setFocalOffset(e,t,n,i=!1){this._isUserControllingOffset=!1,this._focalOffsetEnd.set(e,t,n),this._needsUpdate=!0,i||this._focalOffset.copy(this._focalOffsetEnd);const r=!i||Ae(this._focalOffset.x,this._focalOffsetEnd.x,this.restThreshold)&&Ae(this._focalOffset.y,this._focalOffsetEnd.y,this.restThreshold)&&Ae(this._focalOffset.z,this._focalOffsetEnd.z,this.restThreshold);return this._createOnRestPromise(r)}setOrbitPoint(e,t,n){this._camera.updateMatrixWorld(),Je.setFromMatrixColumn(this._camera.matrixWorldInverse,0),He.setFromMatrixColumn(this._camera.matrixWorldInverse,1),At.setFromMatrixColumn(this._camera.matrixWorldInverse,2);const i=ge.set(e,t,n),r=i.distanceTo(this._camera.position),s=i.sub(this._camera.position);Je.multiplyScalar(s.x),He.multiplyScalar(s.y),At.multiplyScalar(s.z),ge.copy(Je).add(He).add(At),ge.z=ge.z+r,this.dollyTo(r,!1),this.setFocalOffset(-ge.x,ge.y,-ge.z,!1),this.moveTo(e,t,n,!1)}setBoundary(e){if(!e){this._boundary.min.set(-1/0,-1/0,-1/0),this._boundary.max.set(1/0,1/0,1/0),this._needsUpdate=!0;return}this._boundary.copy(e),this._boundary.clampPoint(this._targetEnd,this._targetEnd),this._needsUpdate=!0}setViewport(e,t,n,i){if(e===null){this._viewport=null;return}this._viewport=this._viewport||new he.Vector4,typeof e=="number"?this._viewport.set(e,t,n,i):this._viewport.copy(e)}getDistanceToFitBox(e,t,n,i=!1){if(Hn(this._camera,"getDistanceToFitBox"))return this._spherical.radius;const r=e/t,s=this._camera.getEffectiveFOV()*Xt,a=this._camera.aspect;return((i?r>a:r<a)?t:e/a)*.5/Math.tan(s*.5)+n*.5}getDistanceToFitSphere(e){if(Hn(this._camera,"getDistanceToFitSphere"))return this._spherical.radius;const t=this._camera.getEffectiveFOV()*Xt,n=Math.atan(Math.tan(t*.5)*this._camera.aspect)*2,i=1<this._camera.aspect?t:n;return e/Math.sin(i*.5)}getTarget(e,t=!0){return(e&&e.isVector3?e:new he.Vector3).copy(t?this._targetEnd:this._target)}getPosition(e,t=!0){return(e&&e.isVector3?e:new he.Vector3).setFromSpherical(t?this._sphericalEnd:this._spherical).applyQuaternion(this._yAxisUpSpaceInverse).add(t?this._targetEnd:this._target)}getSpherical(e,t=!0){return(e&&e instanceof he.Spherical?e:new he.Spherical).copy(t?this._sphericalEnd:this._spherical)}getFocalOffset(e,t=!0){return(e&&e.isVector3?e:new he.Vector3).copy(t?this._focalOffsetEnd:this._focalOffset)}normalizeRotations(){this._sphericalEnd.theta=this._sphericalEnd.theta%It,this._sphericalEnd.theta<0&&(this._sphericalEnd.theta+=It),this._spherical.theta+=It*Math.round((this._sphericalEnd.theta-this._spherical.theta)/It)}reset(e=!1){if(!Ae(this._camera.up.x,this._cameraUp0.x)||!Ae(this._camera.up.y,this._cameraUp0.y)||!Ae(this._camera.up.z,this._cameraUp0.z)){this._camera.up.copy(this._cameraUp0);const n=this.getPosition(ge);this.updateCameraUp(),this.setPosition(n.x,n.y,n.z)}const t=[this.setLookAt(this._position0.x,this._position0.y,this._position0.z,this._target0.x,this._target0.y,this._target0.z,e),this.setFocalOffset(this._focalOffset0.x,this._focalOffset0.y,this._focalOffset0.z,e),this.zoomTo(this._zoom0,e)];return Promise.all(t)}saveState(){this._cameraUp0.copy(this._camera.up),this.getTarget(this._target0),this.getPosition(this._position0),this._zoom0=this._zoom,this._focalOffset0.copy(this._focalOffset)}updateCameraUp(){this._yAxisUpSpace.setFromUnitVectors(this._camera.up,gn),this._yAxisUpSpaceInverse.copy(this._yAxisUpSpace).invert()}applyCameraUp(){const e=ge.subVectors(this._target,this._camera.position).normalize(),t=be.crossVectors(e,this._camera.up);this._camera.up.crossVectors(t,e).normalize(),this._camera.updateMatrixWorld();const n=this.getPosition(ge);this.updateCameraUp(),this.setPosition(n.x,n.y,n.z)}update(e){const t=this._sphericalEnd.theta-this._spherical.theta,n=this._sphericalEnd.phi-this._spherical.phi,i=this._sphericalEnd.radius-this._spherical.radius,r=Tr.subVectors(this._targetEnd,this._target),s=Or.subVectors(this._focalOffsetEnd,this._focalOffset),a=this._zoomEnd-this._zoom;if(Pe(t))this._thetaVelocity.value=0,this._spherical.theta=this._sphericalEnd.theta;else{const d=this._isUserControllingRotate?this.draggingSmoothTime:this.smoothTime;this._spherical.theta=pn(this._spherical.theta,this._sphericalEnd.theta,this._thetaVelocity,d,1/0,e),this._needsUpdate=!0}if(Pe(n))this._phiVelocity.value=0,this._spherical.phi=this._sphericalEnd.phi;else{const d=this._isUserControllingRotate?this.draggingSmoothTime:this.smoothTime;this._spherical.phi=pn(this._spherical.phi,this._sphericalEnd.phi,this._phiVelocity,d,1/0,e),this._needsUpdate=!0}if(Pe(i))this._radiusVelocity.value=0,this._spherical.radius=this._sphericalEnd.radius;else{const d=this._isUserControllingDolly?this.draggingSmoothTime:this.smoothTime;this._spherical.radius=pn(this._spherical.radius,this._sphericalEnd.radius,this._radiusVelocity,d,this.maxSpeed,e),this._needsUpdate=!0}if(Pe(r.x)&&Pe(r.y)&&Pe(r.z))this._targetVelocity.set(0,0,0),this._target.copy(this._targetEnd);else{const d=this._isUserControllingTruck?this.draggingSmoothTime:this.smoothTime;Pr(this._target,this._targetEnd,this._targetVelocity,d,this.maxSpeed,e,this._target),this._needsUpdate=!0}if(Pe(s.x)&&Pe(s.y)&&Pe(s.z))this._focalOffsetVelocity.set(0,0,0),this._focalOffset.copy(this._focalOffsetEnd);else{const d=this._isUserControllingOffset?this.draggingSmoothTime:this.smoothTime;Pr(this._focalOffset,this._focalOffsetEnd,this._focalOffsetVelocity,d,this.maxSpeed,e,this._focalOffset),this._needsUpdate=!0}if(Pe(a))this._zoomVelocity.value=0,this._zoom=this._zoomEnd;else{const d=this._isUserControllingZoom?this.draggingSmoothTime:this.smoothTime;this._zoom=pn(this._zoom,this._zoomEnd,this._zoomVelocity,d,1/0,e)}if(this.dollyToCursor){if(Mt(this._camera)&&this._changedDolly!==0){const d=this._spherical.radius-this._lastDistance,m=this._camera,y=this._getCameraDirection(qt),b=ge.copy(y).cross(m.up).normalize();b.lengthSq()===0&&(b.x=1);const A=be.crossVectors(b,y),_=this._sphericalEnd.radius*Math.tan(m.getEffectiveFOV()*Xt*.5),I=(this._sphericalEnd.radius-d-this._sphericalEnd.radius)/this._sphericalEnd.radius,S=Dt.copy(this._targetEnd).add(b.multiplyScalar(this._dollyControlCoord.x*_*m.aspect)).add(A.multiplyScalar(this._dollyControlCoord.y*_)),g=ge.copy(this._targetEnd).lerp(S,I),O=this._lastDollyDirection===Ot.IN&&this._spherical.radius<=this.minDistance,x=this._lastDollyDirection===Ot.OUT&&this.maxDistance<=this._spherical.radius;if(this.infinityDolly&&(O||x)){this._sphericalEnd.radius-=d,this._spherical.radius-=d;const p=be.copy(y).multiplyScalar(-d);g.add(p)}this._boundary.clampPoint(g,g);const C=be.subVectors(g,this._targetEnd);this._targetEnd.copy(g),this._target.add(C),this._changedDolly-=d,Pe(this._changedDolly)&&(this._changedDolly=0)}else if(dt(this._camera)&&this._changedZoom!==0){const d=this._zoom-this._lastZoom,m=this._camera,y=ge.set(this._dollyControlCoord.x,this._dollyControlCoord.y,(m.near+m.far)/(m.near-m.far)).unproject(m),b=be.set(0,0,-1).applyQuaternion(m.quaternion),A=Dt.copy(y).add(b.multiplyScalar(-y.dot(m.up))),L=-(this._zoom-d-this._zoom)/this._zoom,I=this._getCameraDirection(qt),S=this._targetEnd.dot(I),g=ge.copy(this._targetEnd).lerp(A,L),O=g.dot(I),x=I.multiplyScalar(O-S);g.sub(x),this._boundary.clampPoint(g,g);const C=be.subVectors(g,this._targetEnd);this._targetEnd.copy(g),this._target.add(C),this._changedZoom-=d,Pe(this._changedZoom)&&(this._changedZoom=0)}}this._camera.zoom!==this._zoom&&(this._camera.zoom=this._zoom,this._camera.updateProjectionMatrix(),this._updateNearPlaneCorners(),this._needsUpdate=!0),this._dragNeedsUpdate=!0;const l=this._collisionTest();this._spherical.radius=Math.min(this._spherical.radius,l),this._spherical.makeSafe(),this._camera.position.setFromSpherical(this._spherical).applyQuaternion(this._yAxisUpSpaceInverse).add(this._target),this._camera.lookAt(this._target),(!Pe(this._focalOffset.x)||!Pe(this._focalOffset.y)||!Pe(this._focalOffset.z))&&(this._camera.updateMatrixWorld(),Je.setFromMatrixColumn(this._camera.matrix,0),He.setFromMatrixColumn(this._camera.matrix,1),At.setFromMatrixColumn(this._camera.matrix,2),Je.multiplyScalar(this._focalOffset.x),He.multiplyScalar(-this._focalOffset.y),At.multiplyScalar(this._focalOffset.z),ge.copy(Je).add(He).add(At),this._camera.position.add(ge)),this._boundaryEnclosesCamera&&this._encloseToBoundary(this._camera.position.copy(this._target),ge.setFromSpherical(this._spherical).applyQuaternion(this._yAxisUpSpaceInverse),1);const u=this._needsUpdate;return u&&!this._updatedLastTime?(this._hasRested=!1,this.dispatchEvent({type:"wake"}),this.dispatchEvent({type:"update"})):u?(this.dispatchEvent({type:"update"}),Pe(t,this.restThreshold)&&Pe(n,this.restThreshold)&&Pe(i,this.restThreshold)&&Pe(r.x,this.restThreshold)&&Pe(r.y,this.restThreshold)&&Pe(r.z,this.restThreshold)&&Pe(s.x,this.restThreshold)&&Pe(s.y,this.restThreshold)&&Pe(s.z,this.restThreshold)&&Pe(a,this.restThreshold)&&!this._hasRested&&(this._hasRested=!0,this.dispatchEvent({type:"rest"}))):!u&&this._updatedLastTime&&this.dispatchEvent({type:"sleep"}),this._lastDistance=this._spherical.radius,this._lastZoom=this._zoom,this._updatedLastTime=u,this._needsUpdate=!1,u}toJSON(){return JSON.stringify({enabled:this._enabled,minDistance:this.minDistance,maxDistance:Wt(this.maxDistance),minZoom:this.minZoom,maxZoom:Wt(this.maxZoom),minPolarAngle:this.minPolarAngle,maxPolarAngle:Wt(this.maxPolarAngle),minAzimuthAngle:Wt(this.minAzimuthAngle),maxAzimuthAngle:Wt(this.maxAzimuthAngle),smoothTime:this.smoothTime,draggingSmoothTime:this.draggingSmoothTime,dollySpeed:this.dollySpeed,truckSpeed:this.truckSpeed,dollyToCursor:this.dollyToCursor,verticalDragToForward:this.verticalDragToForward,target:this._targetEnd.toArray(),position:ge.setFromSpherical(this._sphericalEnd).add(this._targetEnd).toArray(),zoom:this._zoomEnd,focalOffset:this._focalOffsetEnd.toArray(),target0:this._target0.toArray(),position0:this._position0.toArray(),zoom0:this._zoom0,focalOffset0:this._focalOffset0.toArray()})}fromJSON(e,t=!1){const n=JSON.parse(e);this.enabled=n.enabled,this.minDistance=n.minDistance,this.maxDistance=Zt(n.maxDistance),this.minZoom=n.minZoom,this.maxZoom=Zt(n.maxZoom),this.minPolarAngle=n.minPolarAngle,this.maxPolarAngle=Zt(n.maxPolarAngle),this.minAzimuthAngle=Zt(n.minAzimuthAngle),this.maxAzimuthAngle=Zt(n.maxAzimuthAngle),this.smoothTime=n.smoothTime,this.draggingSmoothTime=n.draggingSmoothTime,this.dollySpeed=n.dollySpeed,this.truckSpeed=n.truckSpeed,this.dollyToCursor=n.dollyToCursor,this.verticalDragToForward=n.verticalDragToForward,this._target0.fromArray(n.target0),this._position0.fromArray(n.position0),this._zoom0=n.zoom0,this._focalOffset0.fromArray(n.focalOffset0),this.moveTo(n.target[0],n.target[1],n.target[2],t),Xe.setFromVector3(ge.fromArray(n.position).sub(this._targetEnd).applyQuaternion(this._yAxisUpSpace)),this.rotateTo(Xe.theta,Xe.phi,t),this.dollyTo(Xe.radius,t),this.zoomTo(n.zoom,t),this.setFocalOffset(n.focalOffset[0],n.focalOffset[1],n.focalOffset[2],t),this._needsUpdate=!0}connect(e){if(this._domElement){console.warn("camera-controls is already connected.");return}e.setAttribute("data-camera-controls-version",Ml),this._addAllEventListeners(e),this._getClientRect(this._elementRect)}disconnect(){this.cancel(),this._removeAllEventListeners(),this._domElement&&(this._domElement.removeAttribute("data-camera-controls-version"),this._domElement=void 0)}dispose(){this.removeAllEventListeners(),this.disconnect()}_getTargetDirection(e){return e.setFromSpherical(this._spherical).divideScalar(this._spherical.radius).applyQuaternion(this._yAxisUpSpaceInverse)}_getCameraDirection(e){return this._getTargetDirection(e).negate()}_findPointerById(e){return this._activePointers.find(t=>t.pointerId===e)}_findPointerByMouseButton(e){return this._activePointers.find(t=>t.mouseButton===e)}_disposePointer(e){this._activePointers.splice(this._activePointers.indexOf(e),1)}_encloseToBoundary(e,t,n){const i=t.lengthSq();if(i===0)return e;const r=be.copy(t).add(e),a=this._boundary.clampPoint(r,Dt).sub(r),l=a.lengthSq();if(l===0)return e.add(t);if(l===i)return e;if(n===0)return e.add(t).add(a);{const f=1+n*l/t.dot(a);return e.add(be.copy(t).multiplyScalar(f)).add(a.multiplyScalar(1-n))}}_updateNearPlaneCorners(){if(Mt(this._camera)){const e=this._camera,t=e.near,n=e.getEffectiveFOV()*Xt,i=Math.tan(n*.5)*t,r=i*e.aspect;this._nearPlaneCorners[0].set(-r,-i,0),this._nearPlaneCorners[1].set(r,-i,0),this._nearPlaneCorners[2].set(r,i,0),this._nearPlaneCorners[3].set(-r,i,0)}else if(dt(this._camera)){const e=this._camera,t=1/e.zoom,n=e.left*t,i=e.right*t,r=e.top*t,s=e.bottom*t;this._nearPlaneCorners[0].set(n,r,0),this._nearPlaneCorners[1].set(i,r,0),this._nearPlaneCorners[2].set(i,s,0),this._nearPlaneCorners[3].set(n,s,0)}}_collisionTest(){let e=1/0;if(!(this.colliderMeshes.length>=1)||Hn(this._camera,"_collisionTest"))return e;const n=this._getTargetDirection(qt);ni.lookAt(Lr,n,this._camera.up);for(let i=0;i<4;i++){const r=be.copy(this._nearPlaneCorners[i]);r.applyMatrix4(ni);const s=Dt.addVectors(this._target,r);yn.set(s,n),yn.far=this._spherical.radius+1;const a=yn.intersectObjects(this.colliderMeshes);a.length!==0&&a[0].distance<e&&(e=a[0].distance)}return e}_getClientRect(e){if(!this._domElement)return;const t=this._domElement.getBoundingClientRect();return e.x=t.left,e.y=t.top,this._viewport?(e.x+=this._viewport.x,e.y+=t.height-this._viewport.w-this._viewport.y,e.width=this._viewport.z,e.height=this._viewport.w):(e.width=t.width,e.height=t.height),e}_createOnRestPromise(e){return e?Promise.resolve():(this._hasRested=!1,this.dispatchEvent({type:"transitionstart"}),new Promise(t=>{const n=()=>{this.removeEventListener("rest",n),t()};this.addEventListener("rest",n)}))}_addAllEventListeners(e){}_removeAllEventListeners(){}get dampingFactor(){return console.warn(".dampingFactor has been deprecated. use smoothTime (in seconds) instead."),0}set dampingFactor(e){console.warn(".dampingFactor has been deprecated. use smoothTime (in seconds) instead.")}get draggingDampingFactor(){return console.warn(".draggingDampingFactor has been deprecated. use draggingSmoothTime (in seconds) instead."),0}set draggingDampingFactor(e){console.warn(".draggingDampingFactor has been deprecated. use draggingSmoothTime (in seconds) instead.")}static createBoundingSphere(e,t=new he.Sphere){const n=t,i=n.center;kt.makeEmpty(),e.traverseVisible(s=>{s.isMesh&&kt.expandByObject(s)}),kt.getCenter(i);let r=0;return e.traverseVisible(s=>{if(!s.isMesh)return;const a=s,l=a.geometry.clone();l.applyMatrix4(a.matrixWorld);const u=l.attributes.position;for(let d=0,m=u.count;d<m;d++)ge.fromBufferAttribute(u,d),r=Math.max(r,i.distanceToSquared(ge))}),n.radius=Math.sqrt(r),n}}const Pl=["min-polar-angle","max-polar-angle","min-azimuth-angle","max-azimuth-angle","distance","min-distance","max-distance","infinity-dolly","min-zoom","max-zoom","smooth-time","dragging-smooth-time","max-speed","azimuth-rotate-speed","polar-rotate-speed","dolly-speed","dolly-drag-inverted","truck-speed","dolly-to-cursor","drag-to-offset","vertical-drag-to-forward","boundary-friction","rest-threshold","collider-meshes","args"],Cl=h.defineComponent({__name:"CameraControls",props:{makeDefault:{type:Boolean,default:!1},camera:{},domElement:{},minPolarAngle:{default:0},maxPolarAngle:{default:Math.PI},minAzimuthAngle:{default:-1/0},maxAzimuthAngle:{default:1/0},distance:{default:()=>ae.useTresContext().camera.value.position.z},minDistance:{default:Number.EPSILON},maxDistance:{default:1/0},infinityDolly:{type:Boolean,default:!1},minZoom:{default:.01},maxZoom:{default:1/0},smoothTime:{default:.25},draggingSmoothTime:{default:.125},maxSpeed:{default:1/0},azimuthRotateSpeed:{default:1},polarRotateSpeed:{default:1},dollySpeed:{default:1},dollyDragInverted:{type:Boolean,default:!1},truckSpeed:{default:2},dollyToCursor:{type:Boolean,default:!1},dragToOffset:{type:Boolean,default:!1},verticalDragToForward:{type:Boolean,default:!1},boundaryFriction:{default:0},restThreshold:{default:.01},colliderMeshes:{default:()=>[]},mouseButtons:{},touches:{}},emits:["change","start","end"],setup(o,{expose:e,emit:t}){const n=o,i=t,{makeDefault:r,minPolarAngle:s,maxPolarAngle:a,minAzimuthAngle:l,maxAzimuthAngle:f,distance:u,minDistance:d,maxDistance:m,infinityDolly:y,minZoom:b,maxZoom:A,smoothTime:_,draggingSmoothTime:L,maxSpeed:I,azimuthRotateSpeed:S,polarRotateSpeed:g,dollySpeed:O,dollyDragInverted:x,truckSpeed:C,dollyToCursor:p,dragToOffset:w,verticalDragToForward:v,boundaryFriction:T,restThreshold:k,colliderMeshes:Q}=h.toRefs(n),Y={Box3:c.Box3,MathUtils:{clamp:c.MathUtils.clamp},Matrix4:c.Matrix4,Quaternion:c.Quaternion,Raycaster:c.Raycaster,Sphere:c.Sphere,Spherical:c.Spherical,Vector2:c.Vector2,Vector3:c.Vector3,Vector4:c.Vector4};Qt.install({THREE:Y});const{camera:$,renderer:ee,extend:q,controls:Z}=ae.useTresContext(),ie=h.ref(null);q({CameraControls:Qt}),h.watchEffect(()=>{ne(),ie.value&&r.value?Z.value=ie.value:Z.value=null});function ne(){Le(ie.value,"update",()=>i("change",ie.value)),Le(ie.value,"controlend",()=>i("end",ie.value)),Le(ie.value,"controlstart",()=>i("start",ie.value))}const{onLoop:ce}=ae.useRenderLoop();return ce(({delta:G})=>{var V,M;(V=ie.value)!=null&&V.enabled&&((M=ie.value)==null||M.update(G))}),h.onUnmounted(()=>{ie.value&&ie.value.disconnect()}),e({value:ie}),(G,V)=>(G.camera||h.unref($))&&(G.domElement||h.unref(ee))?(h.openBlock(),h.createElementBlock("TresCameraControls",{key:0,ref_key:"controlsRef",ref:ie,"min-polar-angle":h.unref(s),"max-polar-angle":h.unref(a),"min-azimuth-angle":h.unref(l),"max-azimuth-angle":h.unref(f),distance:h.unref(u),"min-distance":h.unref(d),"max-distance":h.unref(m),"infinity-dolly":h.unref(y),"min-zoom":h.unref(b),"max-zoom":h.unref(A),"smooth-time":h.unref(_),"dragging-smooth-time":h.unref(L),"max-speed":h.unref(I),"azimuth-rotate-speed":h.unref(S),"polar-rotate-speed":h.unref(g),"dolly-speed":h.unref(O),"dolly-drag-inverted":h.unref(x),"truck-speed":h.unref(C),"dolly-to-cursor":h.unref(p),"drag-to-offset":h.unref(w),"vertical-drag-to-forward":h.unref(v),"boundary-friction":h.unref(T),"rest-threshold":h.unref(k),"collider-meshes":h.unref(Q),args:[G.camera||h.unref($),G.domElement||h.unref(ee).domElement]},null,8,Pl)):h.createCommentVNode("",!0)}});class Ll extends c.MeshStandardMaterial{constructor(t={}){super(t);ye(this,"_time");ye(this,"_factor");this.setValues(t),this._time={value:0},this._factor={value:1}}onBeforeCompile(t){t.uniforms||(t.uniforms={}),t.uniforms.time=this._time,t.uniforms.factor=this._factor,t.vertexShader=`
|
|
190
234
|
uniform float time;
|
|
191
235
|
uniform float factor;
|
|
192
236
|
${t.vertexShader}
|
|
@@ -195,22 +239,22 @@
|
|
|
195
239
|
float s = sin( theta );
|
|
196
240
|
mat3 m = mat3( c, 0, s, 0, 1, 0, -s, 0, c );
|
|
197
241
|
vec3 transformed = vec3( position ) * m;
|
|
198
|
-
vNormal = vNormal * m;`)}get time(){return this._time.value}set time(t){this._time.value=t}get factor(){return this._factor.value}set factor(t){this._factor.value=t}}const vl=["factor"],wl=u.defineComponent({__name:"index",props:{speed:{default:1},factor:{default:1}},setup(o){const e=o,t=u.shallowRef(),{extend:n}=ae.useTresContext();n({MeshWobbleMaterial:_l});const{onLoop:i}=ae.useRenderLoop();return i(({elapsed:s})=>{t.value&&(t.value.time=s*(e==null?void 0:e.speed))}),(s,r)=>(u.openBlock(),u.createElementBlock("TresMeshWobbleMaterial",u.mergeProps({ref_key:"materialRef",ref:t,factor:s.factor},s.$attrs),null,16,vl))}});function dt(o,e,t){return Math.max(e,Math.min(t,o))}function xl(o,e){return(o%e+e)%e}function bl(o,e,t,n,i){return n+(o-e)*(i-n)/(t-e)}function ei(o,e,t){return(1-t)*o+t*e}class ti{constructor(e=0,t=0){ti.prototype.isVector2=!0,this.x=e,this.y=t}get width(){return this.x}set width(e){this.x=e}get height(){return this.y}set height(e){this.y=e}set(e,t){return this.x=e,this.y=t,this}setScalar(e){return this.x=e,this.y=e,this}setX(e){return this.x=e,this}setY(e){return this.y=e,this}setComponent(e,t){switch(e){case 0:this.x=t;break;case 1:this.y=t;break;default:throw new Error("index is out of range: "+e)}return this}getComponent(e){switch(e){case 0:return this.x;case 1:return this.y;default:throw new Error("index is out of range: "+e)}}clone(){return new this.constructor(this.x,this.y)}copy(e){return this.x=e.x,this.y=e.y,this}add(e){return this.x+=e.x,this.y+=e.y,this}addScalar(e){return this.x+=e,this.y+=e,this}addVectors(e,t){return this.x=e.x+t.x,this.y=e.y+t.y,this}addScaledVector(e,t){return this.x+=e.x*t,this.y+=e.y*t,this}sub(e){return this.x-=e.x,this.y-=e.y,this}subScalar(e){return this.x-=e,this.y-=e,this}subVectors(e,t){return this.x=e.x-t.x,this.y=e.y-t.y,this}multiply(e){return this.x*=e.x,this.y*=e.y,this}multiplyScalar(e){return this.x*=e,this.y*=e,this}divide(e){return this.x/=e.x,this.y/=e.y,this}divideScalar(e){return this.multiplyScalar(1/e)}applyMatrix3(e){const t=this.x,n=this.y,i=e.elements;return this.x=i[0]*t+i[3]*n+i[6],this.y=i[1]*t+i[4]*n+i[7],this}min(e){return this.x=Math.min(this.x,e.x),this.y=Math.min(this.y,e.y),this}max(e){return this.x=Math.max(this.x,e.x),this.y=Math.max(this.y,e.y),this}clamp(e,t){return this.x=Math.max(e.x,Math.min(t.x,this.x)),this.y=Math.max(e.y,Math.min(t.y,this.y)),this}clampScalar(e,t){return this.x=Math.max(e,Math.min(t,this.x)),this.y=Math.max(e,Math.min(t,this.y)),this}clampLength(e,t){const n=this.length();return this.divideScalar(n||1).multiplyScalar(Math.max(e,Math.min(t,n)))}floor(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this}ceil(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this}round(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this}roundToZero(){return this.x=Math.trunc(this.x),this.y=Math.trunc(this.y),this}negate(){return this.x=-this.x,this.y=-this.y,this}dot(e){return this.x*e.x+this.y*e.y}cross(e){return this.x*e.y-this.y*e.x}lengthSq(){return this.x*this.x+this.y*this.y}length(){return Math.sqrt(this.x*this.x+this.y*this.y)}manhattanLength(){return Math.abs(this.x)+Math.abs(this.y)}normalize(){return this.divideScalar(this.length()||1)}angle(){return Math.atan2(-this.y,-this.x)+Math.PI}angleTo(e){const t=Math.sqrt(this.lengthSq()*e.lengthSq());if(t===0)return Math.PI/2;const n=this.dot(e)/t;return Math.acos(dt(n,-1,1))}distanceTo(e){return Math.sqrt(this.distanceToSquared(e))}distanceToSquared(e){const t=this.x-e.x,n=this.y-e.y;return t*t+n*n}manhattanDistanceTo(e){return Math.abs(this.x-e.x)+Math.abs(this.y-e.y)}setLength(e){return this.normalize().multiplyScalar(e)}lerp(e,t){return this.x+=(e.x-this.x)*t,this.y+=(e.y-this.y)*t,this}lerpVectors(e,t,n){return this.x=e.x+(t.x-e.x)*n,this.y=e.y+(t.y-e.y)*n,this}equals(e){return e.x===this.x&&e.y===this.y}fromArray(e,t=0){return this.x=e[t],this.y=e[t+1],this}toArray(e=[],t=0){return e[t]=this.x,e[t+1]=this.y,e}fromBufferAttribute(e,t){return this.x=e.getX(t),this.y=e.getY(t),this}rotateAround(e,t){const n=Math.cos(t),i=Math.sin(t),s=this.x-e.x,r=this.y-e.y;return this.x=s*n-r*i+e.x,this.y=s*i+r*n+e.y,this}random(){return this.x=Math.random(),this.y=Math.random(),this}*[Symbol.iterator](){yield this.x,yield this.y}}const Ml="",pt="srgb",ni="srgb-linear",Sl="display-p3",Cs="display-p3-linear",ii="linear",Ls="srgb",Ts="rec709",Os="p3";class qt{constructor(e,t,n,i,s,r,a,l,f){qt.prototype.isMatrix3=!0,this.elements=[1,0,0,0,1,0,0,0,1],e!==void 0&&this.set(e,t,n,i,s,r,a,l,f)}set(e,t,n,i,s,r,a,l,f){const h=this.elements;return h[0]=e,h[1]=i,h[2]=a,h[3]=t,h[4]=s,h[5]=l,h[6]=n,h[7]=r,h[8]=f,this}identity(){return this.set(1,0,0,0,1,0,0,0,1),this}copy(e){const t=this.elements,n=e.elements;return t[0]=n[0],t[1]=n[1],t[2]=n[2],t[3]=n[3],t[4]=n[4],t[5]=n[5],t[6]=n[6],t[7]=n[7],t[8]=n[8],this}extractBasis(e,t,n){return e.setFromMatrix3Column(this,0),t.setFromMatrix3Column(this,1),n.setFromMatrix3Column(this,2),this}setFromMatrix4(e){const t=e.elements;return this.set(t[0],t[4],t[8],t[1],t[5],t[9],t[2],t[6],t[10]),this}multiply(e){return this.multiplyMatrices(this,e)}premultiply(e){return this.multiplyMatrices(e,this)}multiplyMatrices(e,t){const n=e.elements,i=t.elements,s=this.elements,r=n[0],a=n[3],l=n[6],f=n[1],h=n[4],d=n[7],m=n[2],y=n[5],M=n[8],S=i[0],v=i[3],L=i[6],I=i[1],A=i[4],g=i[7],O=i[2],x=i[5],C=i[8];return s[0]=r*S+a*I+l*O,s[3]=r*v+a*A+l*x,s[6]=r*L+a*g+l*C,s[1]=f*S+h*I+d*O,s[4]=f*v+h*A+d*x,s[7]=f*L+h*g+d*C,s[2]=m*S+y*I+M*O,s[5]=m*v+y*A+M*x,s[8]=m*L+y*g+M*C,this}multiplyScalar(e){const t=this.elements;return t[0]*=e,t[3]*=e,t[6]*=e,t[1]*=e,t[4]*=e,t[7]*=e,t[2]*=e,t[5]*=e,t[8]*=e,this}determinant(){const e=this.elements,t=e[0],n=e[1],i=e[2],s=e[3],r=e[4],a=e[5],l=e[6],f=e[7],h=e[8];return t*r*h-t*a*f-n*s*h+n*a*l+i*s*f-i*r*l}invert(){const e=this.elements,t=e[0],n=e[1],i=e[2],s=e[3],r=e[4],a=e[5],l=e[6],f=e[7],h=e[8],d=h*r-a*f,m=a*l-h*s,y=f*s-r*l,M=t*d+n*m+i*y;if(M===0)return this.set(0,0,0,0,0,0,0,0,0);const S=1/M;return e[0]=d*S,e[1]=(i*f-h*n)*S,e[2]=(a*n-i*r)*S,e[3]=m*S,e[4]=(h*t-i*l)*S,e[5]=(i*s-a*t)*S,e[6]=y*S,e[7]=(n*l-f*t)*S,e[8]=(r*t-n*s)*S,this}transpose(){let e;const t=this.elements;return e=t[1],t[1]=t[3],t[3]=e,e=t[2],t[2]=t[6],t[6]=e,e=t[5],t[5]=t[7],t[7]=e,this}getNormalMatrix(e){return this.setFromMatrix4(e).invert().transpose()}transposeIntoArray(e){const t=this.elements;return e[0]=t[0],e[1]=t[3],e[2]=t[6],e[3]=t[1],e[4]=t[4],e[5]=t[7],e[6]=t[2],e[7]=t[5],e[8]=t[8],this}setUvTransform(e,t,n,i,s,r,a){const l=Math.cos(s),f=Math.sin(s);return this.set(n*l,n*f,-n*(l*r+f*a)+r+e,-i*f,i*l,-i*(-f*r+l*a)+a+t,0,0,1),this}scale(e,t){return this.premultiply(si.makeScale(e,t)),this}rotate(e){return this.premultiply(si.makeRotation(-e)),this}translate(e,t){return this.premultiply(si.makeTranslation(e,t)),this}makeTranslation(e,t){return e.isVector2?this.set(1,0,e.x,0,1,e.y,0,0,1):this.set(1,0,e,0,1,t,0,0,1),this}makeRotation(e){const t=Math.cos(e),n=Math.sin(e);return this.set(t,-n,0,n,t,0,0,0,1),this}makeScale(e,t){return this.set(e,0,0,0,t,0,0,0,1),this}equals(e){const t=this.elements,n=e.elements;for(let i=0;i<9;i++)if(t[i]!==n[i])return!1;return!0}fromArray(e,t=0){for(let n=0;n<9;n++)this.elements[n]=e[n+t];return this}toArray(e=[],t=0){const n=this.elements;return e[t]=n[0],e[t+1]=n[1],e[t+2]=n[2],e[t+3]=n[3],e[t+4]=n[4],e[t+5]=n[5],e[t+6]=n[6],e[t+7]=n[7],e[t+8]=n[8],e}clone(){return new this.constructor().fromArray(this.elements)}}const si=new qt,Is=new qt().set(.8224621,.177538,0,.0331941,.9668058,0,.0170827,.0723974,.9105199),Ds=new qt().set(1.2249401,-.2249404,0,-.0420569,1.0420571,0,-.0196376,-.0786361,1.0982735),mn={[ni]:{transfer:ii,primaries:Ts,toReference:o=>o,fromReference:o=>o},[pt]:{transfer:Ls,primaries:Ts,toReference:o=>o.convertSRGBToLinear(),fromReference:o=>o.convertLinearToSRGB()},[Cs]:{transfer:ii,primaries:Os,toReference:o=>o.applyMatrix3(Ds),fromReference:o=>o.applyMatrix3(Is)},[Sl]:{transfer:Ls,primaries:Os,toReference:o=>o.convertSRGBToLinear().applyMatrix3(Ds),fromReference:o=>o.applyMatrix3(Is).convertLinearToSRGB()}},Al=new Set([ni,Cs]),qe={enabled:!0,_workingColorSpace:ni,get legacyMode(){return console.warn("THREE.ColorManagement: .legacyMode=false renamed to .enabled=true in r150."),!this.enabled},set legacyMode(o){console.warn("THREE.ColorManagement: .legacyMode=false renamed to .enabled=true in r150."),this.enabled=!o},get workingColorSpace(){return this._workingColorSpace},set workingColorSpace(o){if(!Al.has(o))throw new Error(`Unsupported working color space, "${o}".`);this._workingColorSpace=o},convert:function(o,e,t){if(this.enabled===!1||e===t||!e||!t)return o;const n=mn[e].toReference,i=mn[t].fromReference;return i(n(o))},fromWorkingColorSpace:function(o,e){return this.convert(o,this._workingColorSpace,e)},toWorkingColorSpace:function(o,e){return this.convert(o,e,this._workingColorSpace)},getPrimaries:function(o){return mn[o].primaries},getTransfer:function(o){return o===Ml?ii:mn[o].transfer}};function ri(o){return o<.04045?o*.0773993808:Math.pow(o*.9478672986+.0521327014,2.4)}function oi(o){return o<.0031308?o*12.92:1.055*Math.pow(o,.41666)-.055}const ks={aliceblue:15792383,antiquewhite:16444375,aqua:65535,aquamarine:8388564,azure:15794175,beige:16119260,bisque:16770244,black:0,blanchedalmond:16772045,blue:255,blueviolet:9055202,brown:10824234,burlywood:14596231,cadetblue:6266528,chartreuse:8388352,chocolate:13789470,coral:16744272,cornflowerblue:6591981,cornsilk:16775388,crimson:14423100,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:12092939,darkgray:11119017,darkgreen:25600,darkgrey:11119017,darkkhaki:12433259,darkmagenta:9109643,darkolivegreen:5597999,darkorange:16747520,darkorchid:10040012,darkred:9109504,darksalmon:15308410,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkslategrey:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:16716947,deepskyblue:49151,dimgray:6908265,dimgrey:6908265,dodgerblue:2003199,firebrick:11674146,floralwhite:16775920,forestgreen:2263842,fuchsia:16711935,gainsboro:14474460,ghostwhite:16316671,gold:16766720,goldenrod:14329120,gray:8421504,green:32768,greenyellow:11403055,grey:8421504,honeydew:15794160,hotpink:16738740,indianred:13458524,indigo:4915330,ivory:16777200,khaki:15787660,lavender:15132410,lavenderblush:16773365,lawngreen:8190976,lemonchiffon:16775885,lightblue:11393254,lightcoral:15761536,lightcyan:14745599,lightgoldenrodyellow:16448210,lightgray:13882323,lightgreen:9498256,lightgrey:13882323,lightpink:16758465,lightsalmon:16752762,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:11584734,lightyellow:16777184,lime:65280,limegreen:3329330,linen:16445670,magenta:16711935,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:12211667,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:13047173,midnightblue:1644912,mintcream:16121850,mistyrose:16770273,moccasin:16770229,navajowhite:16768685,navy:128,oldlace:16643558,olive:8421376,olivedrab:7048739,orange:16753920,orangered:16729344,orchid:14315734,palegoldenrod:15657130,palegreen:10025880,paleturquoise:11529966,palevioletred:14381203,papayawhip:16773077,peachpuff:16767673,peru:13468991,pink:16761035,plum:14524637,powderblue:11591910,purple:8388736,rebeccapurple:6697881,red:16711680,rosybrown:12357519,royalblue:4286945,saddlebrown:9127187,salmon:16416882,sandybrown:16032864,seagreen:3050327,seashell:16774638,sienna:10506797,silver:12632256,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:16775930,springgreen:65407,steelblue:4620980,tan:13808780,teal:32896,thistle:14204888,tomato:16737095,turquoise:4251856,violet:15631086,wheat:16113331,white:16777215,whitesmoke:16119285,yellow:16776960,yellowgreen:10145074},mt={h:0,s:0,l:0},gn={h:0,s:0,l:0};function ai(o,e,t){return t<0&&(t+=1),t>1&&(t-=1),t<1/6?o+(e-o)*6*t:t<1/2?e:t<2/3?o+(e-o)*6*(2/3-t):o}class yn{constructor(e,t,n){return this.isColor=!0,this.r=1,this.g=1,this.b=1,this.set(e,t,n)}set(e,t,n){if(t===void 0&&n===void 0){const i=e;i&&i.isColor?this.copy(i):typeof i=="number"?this.setHex(i):typeof i=="string"&&this.setStyle(i)}else this.setRGB(e,t,n);return this}setScalar(e){return this.r=e,this.g=e,this.b=e,this}setHex(e,t=pt){return e=Math.floor(e),this.r=(e>>16&255)/255,this.g=(e>>8&255)/255,this.b=(e&255)/255,qe.toWorkingColorSpace(this,t),this}setRGB(e,t,n,i=qe.workingColorSpace){return this.r=e,this.g=t,this.b=n,qe.toWorkingColorSpace(this,i),this}setHSL(e,t,n,i=qe.workingColorSpace){if(e=xl(e,1),t=dt(t,0,1),n=dt(n,0,1),t===0)this.r=this.g=this.b=n;else{const s=n<=.5?n*(1+t):n+t-n*t,r=2*n-s;this.r=ai(r,s,e+1/3),this.g=ai(r,s,e),this.b=ai(r,s,e-1/3)}return qe.toWorkingColorSpace(this,i),this}setStyle(e,t=pt){function n(s){s!==void 0&&parseFloat(s)<1&&console.warn("THREE.Color: Alpha component of "+e+" will be ignored.")}let i;if(i=/^(\w+)\(([^\)]*)\)/.exec(e)){let s;const r=i[1],a=i[2];switch(r){case"rgb":case"rgba":if(s=/^\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(a))return n(s[4]),this.setRGB(Math.min(255,parseInt(s[1],10))/255,Math.min(255,parseInt(s[2],10))/255,Math.min(255,parseInt(s[3],10))/255,t);if(s=/^\s*(\d+)\%\s*,\s*(\d+)\%\s*,\s*(\d+)\%\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(a))return n(s[4]),this.setRGB(Math.min(100,parseInt(s[1],10))/100,Math.min(100,parseInt(s[2],10))/100,Math.min(100,parseInt(s[3],10))/100,t);break;case"hsl":case"hsla":if(s=/^\s*(\d*\.?\d+)\s*,\s*(\d*\.?\d+)\%\s*,\s*(\d*\.?\d+)\%\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(a))return n(s[4]),this.setHSL(parseFloat(s[1])/360,parseFloat(s[2])/100,parseFloat(s[3])/100,t);break;default:console.warn("THREE.Color: Unknown color model "+e)}}else if(i=/^\#([A-Fa-f\d]+)$/.exec(e)){const s=i[1],r=s.length;if(r===3)return this.setRGB(parseInt(s.charAt(0),16)/15,parseInt(s.charAt(1),16)/15,parseInt(s.charAt(2),16)/15,t);if(r===6)return this.setHex(parseInt(s,16),t);console.warn("THREE.Color: Invalid hex color "+e)}else if(e&&e.length>0)return this.setColorName(e,t);return this}setColorName(e,t=pt){const n=ks[e.toLowerCase()];return n!==void 0?this.setHex(n,t):console.warn("THREE.Color: Unknown color "+e),this}clone(){return new this.constructor(this.r,this.g,this.b)}copy(e){return this.r=e.r,this.g=e.g,this.b=e.b,this}copySRGBToLinear(e){return this.r=ri(e.r),this.g=ri(e.g),this.b=ri(e.b),this}copyLinearToSRGB(e){return this.r=oi(e.r),this.g=oi(e.g),this.b=oi(e.b),this}convertSRGBToLinear(){return this.copySRGBToLinear(this),this}convertLinearToSRGB(){return this.copyLinearToSRGB(this),this}getHex(e=pt){return qe.fromWorkingColorSpace(Ue.copy(this),e),Math.round(dt(Ue.r*255,0,255))*65536+Math.round(dt(Ue.g*255,0,255))*256+Math.round(dt(Ue.b*255,0,255))}getHexString(e=pt){return("000000"+this.getHex(e).toString(16)).slice(-6)}getHSL(e,t=qe.workingColorSpace){qe.fromWorkingColorSpace(Ue.copy(this),t);const n=Ue.r,i=Ue.g,s=Ue.b,r=Math.max(n,i,s),a=Math.min(n,i,s);let l,f;const h=(a+r)/2;if(a===r)l=0,f=0;else{const d=r-a;switch(f=h<=.5?d/(r+a):d/(2-r-a),r){case n:l=(i-s)/d+(i<s?6:0);break;case i:l=(s-n)/d+2;break;case s:l=(n-i)/d+4;break}l/=6}return e.h=l,e.s=f,e.l=h,e}getRGB(e,t=qe.workingColorSpace){return qe.fromWorkingColorSpace(Ue.copy(this),t),e.r=Ue.r,e.g=Ue.g,e.b=Ue.b,e}getStyle(e=pt){qe.fromWorkingColorSpace(Ue.copy(this),e);const t=Ue.r,n=Ue.g,i=Ue.b;return e!==pt?`color(${e} ${t.toFixed(3)} ${n.toFixed(3)} ${i.toFixed(3)})`:`rgb(${Math.round(t*255)},${Math.round(n*255)},${Math.round(i*255)})`}offsetHSL(e,t,n){return this.getHSL(mt),this.setHSL(mt.h+e,mt.s+t,mt.l+n)}add(e){return this.r+=e.r,this.g+=e.g,this.b+=e.b,this}addColors(e,t){return this.r=e.r+t.r,this.g=e.g+t.g,this.b=e.b+t.b,this}addScalar(e){return this.r+=e,this.g+=e,this.b+=e,this}sub(e){return this.r=Math.max(0,this.r-e.r),this.g=Math.max(0,this.g-e.g),this.b=Math.max(0,this.b-e.b),this}multiply(e){return this.r*=e.r,this.g*=e.g,this.b*=e.b,this}multiplyScalar(e){return this.r*=e,this.g*=e,this.b*=e,this}lerp(e,t){return this.r+=(e.r-this.r)*t,this.g+=(e.g-this.g)*t,this.b+=(e.b-this.b)*t,this}lerpColors(e,t,n){return this.r=e.r+(t.r-e.r)*n,this.g=e.g+(t.g-e.g)*n,this.b=e.b+(t.b-e.b)*n,this}lerpHSL(e,t){this.getHSL(mt),e.getHSL(gn);const n=ei(mt.h,gn.h,t),i=ei(mt.s,gn.s,t),s=ei(mt.l,gn.l,t);return this.setHSL(n,i,s),this}setFromVector3(e){return this.r=e.x,this.g=e.y,this.b=e.z,this}applyMatrix3(e){const t=this.r,n=this.g,i=this.b,s=e.elements;return this.r=s[0]*t+s[3]*n+s[6]*i,this.g=s[1]*t+s[4]*n+s[7]*i,this.b=s[2]*t+s[5]*n+s[8]*i,this}equals(e){return e.r===this.r&&e.g===this.g&&e.b===this.b}fromArray(e,t=0){return this.r=e[t],this.g=e[t+1],this.b=e[t+2],this}toArray(e=[],t=0){return e[t]=this.r,e[t+1]=this.g,e[t+2]=this.b,e}fromBufferAttribute(e,t){return this.r=e.getX(t),this.g=e.getY(t),this.b=e.getZ(t),this}toJSON(){return this.getHex()}*[Symbol.iterator](){yield this.r,yield this.g,yield this.b}}const Ue=new yn;yn.NAMES=ks;class Pl extends c.MeshStandardMaterial{constructor(t={}){super();ye(this,"isMeshPhysicalMaterial");ye(this,"clearcoatMap");ye(this,"clearcoatRoughness");ye(this,"clearcoatRoughnessMap");ye(this,"clearcoatNormalScale");ye(this,"clearcoatNormalMap");ye(this,"ior");ye(this,"transmissionMap");ye(this,"thickness");ye(this,"thicknessMap");ye(this,"attenuationDistance");ye(this,"attenuationColor");ye(this,"specularIntensity");ye(this,"specularIntensityMap");ye(this,"specularColor");ye(this,"specularColorMap");ye(this,"_clearcoat");ye(this,"_transmission");this.isMeshPhysicalMaterial=!0,this.defines={STANDARD:"",PHYSICAL:""},this.type="MeshPhysicalMaterial",this.clearcoatMap=null,this.clearcoatRoughness=0,this.clearcoatRoughnessMap=null,this.clearcoatNormalScale=new ti(1,1),this.clearcoatNormalMap=null,this.ior=1.5,Object.defineProperty(this,"reflectivity",{get(){return dt(2.5*(this.ior-1)/(this.ior+1),0,1)},set(n){this.ior=(1+.4*n)/(1-.4*n)}}),this.roughness=0,this.transmissionMap=null,this.thickness=.5,this.thicknessMap=null,this.attenuationDistance=1/0,this.attenuationColor=new yn(1,1,1),this.specularIntensity=1,this.specularIntensityMap=null,this.specularColor=new yn(1,1,1),this.specularColorMap=null,this._clearcoat=.5,this._transmission=1,this.setValues(t)}get clearcoat(){return this._clearcoat}set clearcoat(t){this._clearcoat>0!=t>0&&this.version++,this._clearcoat=t}get transmission(){return this._transmission}set transmission(t){this._transmission>0!=t>0&&this.version++,this._transmission=t}copy(t){return super.copy(t),this.defines={STANDARD:"",PHYSICAL:""},this.clearcoat=t.clearcoat,this.clearcoatMap=t.clearcoatMap,this.clearcoatRoughness=t.clearcoatRoughness,this.clearcoatRoughnessMap=t.clearcoatRoughnessMap,this.clearcoatNormalMap=t.clearcoatNormalMap,this.clearcoatNormalScale.copy(t.clearcoatNormalScale),this.ior=t.ior,this.transmission=t.transmission,this.transmissionMap=t.transmissionMap,this.thickness=t.thickness,this.thicknessMap=t.thicknessMap,this.attenuationDistance=t.attenuationDistance,this.attenuationColor.copy(t.attenuationColor),this.specularIntensity=t.specularIntensity,this.specularIntensityMap=t.specularIntensityMap,this.specularColor.copy(t.specularColor),this.specularColorMap=t.specularColorMap,this}}const Cl=Pl,Ll=u.defineComponent({__name:"index",setup(o,{expose:e}){const t=u.shallowRef(),{extend:n}=ae.useTresContext();return n({MeshGlassMaterial:Cl}),e({MeshGlassMaterialClass:t}),(i,s)=>(u.openBlock(),u.createElementBlock("TresMeshGlassMaterial",{ref_key:"MeshGlassMaterialClass",ref:t},null,512))}});var Tl=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function Kt(o){return o&&o.__esModule&&Object.prototype.hasOwnProperty.call(o,"default")?o.default:o}function _n(o){throw new Error('Could not dynamically require "'+o+'". Please configure the dynamicRequireTargets or/and ignoreDynamicRequires option of @rollup/plugin-commonjs appropriately for this require call to work.')}var Fs={exports:{}};(function(o,e){(function(t){o.exports=t()})(function(){return function t(n,i,s){function r(f,h){if(!i[f]){if(!n[f]){var d=typeof _n=="function"&&_n;if(!h&&d)return d(f,!0);if(a)return a(f,!0);throw new Error("Cannot find module '"+f+"'")}h=i[f]={exports:{}},n[f][0].call(h.exports,function(m){var y=n[f][1][m];return r(y||m)},h,h.exports,t,n,i,s)}return i[f].exports}for(var a=typeof _n=="function"&&_n,l=0;l<s.length;l++)r(s[l]);return r}({1:[function(t,n,i){(function(s,r,a,l,f,h,d,m,y){var M=t("crypto");function S(x,C){C=I(x,C);var p;return(p=C.algorithm!=="passthrough"?M.createHash(C.algorithm):new O).write===void 0&&(p.write=p.update,p.end=p.update),g(C,p).dispatch(x),p.update||p.end(""),p.digest?p.digest(C.encoding==="buffer"?void 0:C.encoding):(x=p.read(),C.encoding!=="buffer"?x.toString(C.encoding):x)}(i=n.exports=S).sha1=function(x){return S(x)},i.keys=function(x){return S(x,{excludeValues:!0,algorithm:"sha1",encoding:"hex"})},i.MD5=function(x){return S(x,{algorithm:"md5",encoding:"hex"})},i.keysMD5=function(x){return S(x,{algorithm:"md5",encoding:"hex",excludeValues:!0})};var v=M.getHashes?M.getHashes().slice():["sha1","md5"],L=(v.push("passthrough"),["buffer","hex","binary","base64"]);function I(x,C){var p={};if(p.algorithm=(C=C||{}).algorithm||"sha1",p.encoding=C.encoding||"hex",p.excludeValues=!!C.excludeValues,p.algorithm=p.algorithm.toLowerCase(),p.encoding=p.encoding.toLowerCase(),p.ignoreUnknown=C.ignoreUnknown===!0,p.respectType=C.respectType!==!1,p.respectFunctionNames=C.respectFunctionNames!==!1,p.respectFunctionProperties=C.respectFunctionProperties!==!1,p.unorderedArrays=C.unorderedArrays===!0,p.unorderedSets=C.unorderedSets!==!1,p.unorderedObjects=C.unorderedObjects!==!1,p.replacer=C.replacer||void 0,p.excludeKeys=C.excludeKeys||void 0,x===void 0)throw new Error("Object argument required.");for(var w=0;w<v.length;++w)v[w].toLowerCase()===p.algorithm.toLowerCase()&&(p.algorithm=v[w]);if(v.indexOf(p.algorithm)===-1)throw new Error('Algorithm "'+p.algorithm+'" not supported. supported values: '+v.join(", "));if(L.indexOf(p.encoding)===-1&&p.algorithm!=="passthrough")throw new Error('Encoding "'+p.encoding+'" not supported. supported values: '+L.join(", "));return p}function A(x){if(typeof x=="function")return/^function\s+\w*\s*\(\s*\)\s*{\s+\[native code\]\s+}$/i.exec(Function.prototype.toString.call(x))!=null}function g(x,C,p){p=p||[];function w(_){return C.update?C.update(_,"utf8"):C.write(_,"utf8")}return{dispatch:function(_){return this["_"+((_=x.replacer?x.replacer(_):_)===null?"null":typeof _)](_)},_object:function(_){var T,F=Object.prototype.toString.call(_),J=/\[object (.*)\]/i.exec(F);if(J=(J=J?J[1]:"unknown:["+F+"]").toLowerCase(),0<=(F=p.indexOf(_)))return this.dispatch("[CIRCULAR:"+F+"]");if(p.push(_),a!==void 0&&a.isBuffer&&a.isBuffer(_))return w("buffer:"),w(_);if(J==="object"||J==="function"||J==="asyncfunction")return F=Object.keys(_),x.unorderedObjects&&(F=F.sort()),x.respectType===!1||A(_)||F.splice(0,0,"prototype","__proto__","constructor"),x.excludeKeys&&(F=F.filter(function(X){return!x.excludeKeys(X)})),w("object:"+F.length+":"),T=this,F.forEach(function(X){T.dispatch(X),w(":"),x.excludeValues||T.dispatch(_[X]),w(",")});if(!this["_"+J]){if(x.ignoreUnknown)return w("["+J+"]");throw new Error('Unknown object type "'+J+'"')}this["_"+J](_)},_array:function(_,X){X=X!==void 0?X:x.unorderedArrays!==!1;var F=this;if(w("array:"+_.length+":"),!X||_.length<=1)return _.forEach(function(ee){return F.dispatch(ee)});var J=[],X=_.map(function(ee){var $=new O,q=p.slice();return g(x,$,q).dispatch(ee),J=J.concat(q.slice(p.length)),$.read().toString()});return p=p.concat(J),X.sort(),this._array(X,!1)},_date:function(_){return w("date:"+_.toJSON())},_symbol:function(_){return w("symbol:"+_.toString())},_error:function(_){return w("error:"+_.toString())},_boolean:function(_){return w("bool:"+_.toString())},_string:function(_){w("string:"+_.length+":"),w(_.toString())},_function:function(_){w("fn:"),A(_)?this.dispatch("[native]"):this.dispatch(_.toString()),x.respectFunctionNames!==!1&&this.dispatch("function-name:"+String(_.name)),x.respectFunctionProperties&&this._object(_)},_number:function(_){return w("number:"+_.toString())},_xml:function(_){return w("xml:"+_.toString())},_null:function(){return w("Null")},_undefined:function(){return w("Undefined")},_regexp:function(_){return w("regex:"+_.toString())},_uint8array:function(_){return w("uint8array:"),this.dispatch(Array.prototype.slice.call(_))},_uint8clampedarray:function(_){return w("uint8clampedarray:"),this.dispatch(Array.prototype.slice.call(_))},_int8array:function(_){return w("int8array:"),this.dispatch(Array.prototype.slice.call(_))},_uint16array:function(_){return w("uint16array:"),this.dispatch(Array.prototype.slice.call(_))},_int16array:function(_){return w("int16array:"),this.dispatch(Array.prototype.slice.call(_))},_uint32array:function(_){return w("uint32array:"),this.dispatch(Array.prototype.slice.call(_))},_int32array:function(_){return w("int32array:"),this.dispatch(Array.prototype.slice.call(_))},_float32array:function(_){return w("float32array:"),this.dispatch(Array.prototype.slice.call(_))},_float64array:function(_){return w("float64array:"),this.dispatch(Array.prototype.slice.call(_))},_arraybuffer:function(_){return w("arraybuffer:"),this.dispatch(new Uint8Array(_))},_url:function(_){return w("url:"+_.toString())},_map:function(_){return w("map:"),_=Array.from(_),this._array(_,x.unorderedSets!==!1)},_set:function(_){return w("set:"),_=Array.from(_),this._array(_,x.unorderedSets!==!1)},_file:function(_){return w("file:"),this.dispatch([_.name,_.size,_.type,_.lastModfied])},_blob:function(){if(x.ignoreUnknown)return w("[blob]");throw Error(`Hashing Blob objects is currently not supported
|
|
242
|
+
vNormal = vNormal * m;`)}get time(){return this._time.value}set time(t){this._time.value=t}get factor(){return this._factor.value}set factor(t){this._factor.value=t}}const Tl=["factor"],Ol=h.defineComponent({__name:"index",props:{speed:{default:1},factor:{default:1}},setup(o){const e=o,t=h.shallowRef(),{extend:n}=ae.useTresContext();n({MeshWobbleMaterial:Ll});const{onLoop:i}=ae.useRenderLoop();return i(({elapsed:r})=>{t.value&&(t.value.time=r*(e==null?void 0:e.speed))}),(r,s)=>(h.openBlock(),h.createElementBlock("TresMeshWobbleMaterial",h.mergeProps({ref_key:"materialRef",ref:t,factor:r.factor},r.$attrs),null,16,Tl))}});function pt(o,e,t){return Math.max(e,Math.min(t,o))}function Il(o,e){return(o%e+e)%e}function Dl(o,e,t,n,i){return n+(o-e)*(i-n)/(t-e)}function ii(o,e,t){return(1-t)*o+t*e}class ri{constructor(e=0,t=0){ri.prototype.isVector2=!0,this.x=e,this.y=t}get width(){return this.x}set width(e){this.x=e}get height(){return this.y}set height(e){this.y=e}set(e,t){return this.x=e,this.y=t,this}setScalar(e){return this.x=e,this.y=e,this}setX(e){return this.x=e,this}setY(e){return this.y=e,this}setComponent(e,t){switch(e){case 0:this.x=t;break;case 1:this.y=t;break;default:throw new Error("index is out of range: "+e)}return this}getComponent(e){switch(e){case 0:return this.x;case 1:return this.y;default:throw new Error("index is out of range: "+e)}}clone(){return new this.constructor(this.x,this.y)}copy(e){return this.x=e.x,this.y=e.y,this}add(e){return this.x+=e.x,this.y+=e.y,this}addScalar(e){return this.x+=e,this.y+=e,this}addVectors(e,t){return this.x=e.x+t.x,this.y=e.y+t.y,this}addScaledVector(e,t){return this.x+=e.x*t,this.y+=e.y*t,this}sub(e){return this.x-=e.x,this.y-=e.y,this}subScalar(e){return this.x-=e,this.y-=e,this}subVectors(e,t){return this.x=e.x-t.x,this.y=e.y-t.y,this}multiply(e){return this.x*=e.x,this.y*=e.y,this}multiplyScalar(e){return this.x*=e,this.y*=e,this}divide(e){return this.x/=e.x,this.y/=e.y,this}divideScalar(e){return this.multiplyScalar(1/e)}applyMatrix3(e){const t=this.x,n=this.y,i=e.elements;return this.x=i[0]*t+i[3]*n+i[6],this.y=i[1]*t+i[4]*n+i[7],this}min(e){return this.x=Math.min(this.x,e.x),this.y=Math.min(this.y,e.y),this}max(e){return this.x=Math.max(this.x,e.x),this.y=Math.max(this.y,e.y),this}clamp(e,t){return this.x=Math.max(e.x,Math.min(t.x,this.x)),this.y=Math.max(e.y,Math.min(t.y,this.y)),this}clampScalar(e,t){return this.x=Math.max(e,Math.min(t,this.x)),this.y=Math.max(e,Math.min(t,this.y)),this}clampLength(e,t){const n=this.length();return this.divideScalar(n||1).multiplyScalar(Math.max(e,Math.min(t,n)))}floor(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this}ceil(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this}round(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this}roundToZero(){return this.x=Math.trunc(this.x),this.y=Math.trunc(this.y),this}negate(){return this.x=-this.x,this.y=-this.y,this}dot(e){return this.x*e.x+this.y*e.y}cross(e){return this.x*e.y-this.y*e.x}lengthSq(){return this.x*this.x+this.y*this.y}length(){return Math.sqrt(this.x*this.x+this.y*this.y)}manhattanLength(){return Math.abs(this.x)+Math.abs(this.y)}normalize(){return this.divideScalar(this.length()||1)}angle(){return Math.atan2(-this.y,-this.x)+Math.PI}angleTo(e){const t=Math.sqrt(this.lengthSq()*e.lengthSq());if(t===0)return Math.PI/2;const n=this.dot(e)/t;return Math.acos(pt(n,-1,1))}distanceTo(e){return Math.sqrt(this.distanceToSquared(e))}distanceToSquared(e){const t=this.x-e.x,n=this.y-e.y;return t*t+n*n}manhattanDistanceTo(e){return Math.abs(this.x-e.x)+Math.abs(this.y-e.y)}setLength(e){return this.normalize().multiplyScalar(e)}lerp(e,t){return this.x+=(e.x-this.x)*t,this.y+=(e.y-this.y)*t,this}lerpVectors(e,t,n){return this.x=e.x+(t.x-e.x)*n,this.y=e.y+(t.y-e.y)*n,this}equals(e){return e.x===this.x&&e.y===this.y}fromArray(e,t=0){return this.x=e[t],this.y=e[t+1],this}toArray(e=[],t=0){return e[t]=this.x,e[t+1]=this.y,e}fromBufferAttribute(e,t){return this.x=e.getX(t),this.y=e.getY(t),this}rotateAround(e,t){const n=Math.cos(t),i=Math.sin(t),r=this.x-e.x,s=this.y-e.y;return this.x=r*n-s*i+e.x,this.y=r*i+s*n+e.y,this}random(){return this.x=Math.random(),this.y=Math.random(),this}*[Symbol.iterator](){yield this.x,yield this.y}}const kl="",mt="srgb",si="srgb-linear",Fl="display-p3",kr="display-p3-linear",oi="linear",Fr="srgb",Br="rec709",Ur="p3";class Jt{constructor(e,t,n,i,r,s,a,l,f){Jt.prototype.isMatrix3=!0,this.elements=[1,0,0,0,1,0,0,0,1],e!==void 0&&this.set(e,t,n,i,r,s,a,l,f)}set(e,t,n,i,r,s,a,l,f){const u=this.elements;return u[0]=e,u[1]=i,u[2]=a,u[3]=t,u[4]=r,u[5]=l,u[6]=n,u[7]=s,u[8]=f,this}identity(){return this.set(1,0,0,0,1,0,0,0,1),this}copy(e){const t=this.elements,n=e.elements;return t[0]=n[0],t[1]=n[1],t[2]=n[2],t[3]=n[3],t[4]=n[4],t[5]=n[5],t[6]=n[6],t[7]=n[7],t[8]=n[8],this}extractBasis(e,t,n){return e.setFromMatrix3Column(this,0),t.setFromMatrix3Column(this,1),n.setFromMatrix3Column(this,2),this}setFromMatrix4(e){const t=e.elements;return this.set(t[0],t[4],t[8],t[1],t[5],t[9],t[2],t[6],t[10]),this}multiply(e){return this.multiplyMatrices(this,e)}premultiply(e){return this.multiplyMatrices(e,this)}multiplyMatrices(e,t){const n=e.elements,i=t.elements,r=this.elements,s=n[0],a=n[3],l=n[6],f=n[1],u=n[4],d=n[7],m=n[2],y=n[5],b=n[8],A=i[0],_=i[3],L=i[6],I=i[1],S=i[4],g=i[7],O=i[2],x=i[5],C=i[8];return r[0]=s*A+a*I+l*O,r[3]=s*_+a*S+l*x,r[6]=s*L+a*g+l*C,r[1]=f*A+u*I+d*O,r[4]=f*_+u*S+d*x,r[7]=f*L+u*g+d*C,r[2]=m*A+y*I+b*O,r[5]=m*_+y*S+b*x,r[8]=m*L+y*g+b*C,this}multiplyScalar(e){const t=this.elements;return t[0]*=e,t[3]*=e,t[6]*=e,t[1]*=e,t[4]*=e,t[7]*=e,t[2]*=e,t[5]*=e,t[8]*=e,this}determinant(){const e=this.elements,t=e[0],n=e[1],i=e[2],r=e[3],s=e[4],a=e[5],l=e[6],f=e[7],u=e[8];return t*s*u-t*a*f-n*r*u+n*a*l+i*r*f-i*s*l}invert(){const e=this.elements,t=e[0],n=e[1],i=e[2],r=e[3],s=e[4],a=e[5],l=e[6],f=e[7],u=e[8],d=u*s-a*f,m=a*l-u*r,y=f*r-s*l,b=t*d+n*m+i*y;if(b===0)return this.set(0,0,0,0,0,0,0,0,0);const A=1/b;return e[0]=d*A,e[1]=(i*f-u*n)*A,e[2]=(a*n-i*s)*A,e[3]=m*A,e[4]=(u*t-i*l)*A,e[5]=(i*r-a*t)*A,e[6]=y*A,e[7]=(n*l-f*t)*A,e[8]=(s*t-n*r)*A,this}transpose(){let e;const t=this.elements;return e=t[1],t[1]=t[3],t[3]=e,e=t[2],t[2]=t[6],t[6]=e,e=t[5],t[5]=t[7],t[7]=e,this}getNormalMatrix(e){return this.setFromMatrix4(e).invert().transpose()}transposeIntoArray(e){const t=this.elements;return e[0]=t[0],e[1]=t[3],e[2]=t[6],e[3]=t[1],e[4]=t[4],e[5]=t[7],e[6]=t[2],e[7]=t[5],e[8]=t[8],this}setUvTransform(e,t,n,i,r,s,a){const l=Math.cos(r),f=Math.sin(r);return this.set(n*l,n*f,-n*(l*s+f*a)+s+e,-i*f,i*l,-i*(-f*s+l*a)+a+t,0,0,1),this}scale(e,t){return this.premultiply(ai.makeScale(e,t)),this}rotate(e){return this.premultiply(ai.makeRotation(-e)),this}translate(e,t){return this.premultiply(ai.makeTranslation(e,t)),this}makeTranslation(e,t){return e.isVector2?this.set(1,0,e.x,0,1,e.y,0,0,1):this.set(1,0,e,0,1,t,0,0,1),this}makeRotation(e){const t=Math.cos(e),n=Math.sin(e);return this.set(t,-n,0,n,t,0,0,0,1),this}makeScale(e,t){return this.set(e,0,0,0,t,0,0,0,1),this}equals(e){const t=this.elements,n=e.elements;for(let i=0;i<9;i++)if(t[i]!==n[i])return!1;return!0}fromArray(e,t=0){for(let n=0;n<9;n++)this.elements[n]=e[n+t];return this}toArray(e=[],t=0){const n=this.elements;return e[t]=n[0],e[t+1]=n[1],e[t+2]=n[2],e[t+3]=n[3],e[t+4]=n[4],e[t+5]=n[5],e[t+6]=n[6],e[t+7]=n[7],e[t+8]=n[8],e}clone(){return new this.constructor().fromArray(this.elements)}}const ai=new Jt,Nr=new Jt().set(.8224621,.177538,0,.0331941,.9668058,0,.0170827,.0723974,.9105199),Vr=new Jt().set(1.2249401,-.2249404,0,-.0420569,1.0420571,0,-.0196376,-.0786361,1.0982735),_n={[si]:{transfer:oi,primaries:Br,toReference:o=>o,fromReference:o=>o},[mt]:{transfer:Fr,primaries:Br,toReference:o=>o.convertSRGBToLinear(),fromReference:o=>o.convertLinearToSRGB()},[kr]:{transfer:oi,primaries:Ur,toReference:o=>o.applyMatrix3(Vr),fromReference:o=>o.applyMatrix3(Nr)},[Fl]:{transfer:Fr,primaries:Ur,toReference:o=>o.convertSRGBToLinear().applyMatrix3(Vr),fromReference:o=>o.applyMatrix3(Nr).convertLinearToSRGB()}},Bl=new Set([si,kr]),Ke={enabled:!0,_workingColorSpace:si,get legacyMode(){return console.warn("THREE.ColorManagement: .legacyMode=false renamed to .enabled=true in r150."),!this.enabled},set legacyMode(o){console.warn("THREE.ColorManagement: .legacyMode=false renamed to .enabled=true in r150."),this.enabled=!o},get workingColorSpace(){return this._workingColorSpace},set workingColorSpace(o){if(!Bl.has(o))throw new Error(`Unsupported working color space, "${o}".`);this._workingColorSpace=o},convert:function(o,e,t){if(this.enabled===!1||e===t||!e||!t)return o;const n=_n[e].toReference,i=_n[t].fromReference;return i(n(o))},fromWorkingColorSpace:function(o,e){return this.convert(o,this._workingColorSpace,e)},toWorkingColorSpace:function(o,e){return this.convert(o,e,this._workingColorSpace)},getPrimaries:function(o){return _n[o].primaries},getTransfer:function(o){return o===kl?oi:_n[o].transfer}};function li(o){return o<.04045?o*.0773993808:Math.pow(o*.9478672986+.0521327014,2.4)}function ci(o){return o<.0031308?o*12.92:1.055*Math.pow(o,.41666)-.055}const zr={aliceblue:15792383,antiquewhite:16444375,aqua:65535,aquamarine:8388564,azure:15794175,beige:16119260,bisque:16770244,black:0,blanchedalmond:16772045,blue:255,blueviolet:9055202,brown:10824234,burlywood:14596231,cadetblue:6266528,chartreuse:8388352,chocolate:13789470,coral:16744272,cornflowerblue:6591981,cornsilk:16775388,crimson:14423100,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:12092939,darkgray:11119017,darkgreen:25600,darkgrey:11119017,darkkhaki:12433259,darkmagenta:9109643,darkolivegreen:5597999,darkorange:16747520,darkorchid:10040012,darkred:9109504,darksalmon:15308410,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkslategrey:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:16716947,deepskyblue:49151,dimgray:6908265,dimgrey:6908265,dodgerblue:2003199,firebrick:11674146,floralwhite:16775920,forestgreen:2263842,fuchsia:16711935,gainsboro:14474460,ghostwhite:16316671,gold:16766720,goldenrod:14329120,gray:8421504,green:32768,greenyellow:11403055,grey:8421504,honeydew:15794160,hotpink:16738740,indianred:13458524,indigo:4915330,ivory:16777200,khaki:15787660,lavender:15132410,lavenderblush:16773365,lawngreen:8190976,lemonchiffon:16775885,lightblue:11393254,lightcoral:15761536,lightcyan:14745599,lightgoldenrodyellow:16448210,lightgray:13882323,lightgreen:9498256,lightgrey:13882323,lightpink:16758465,lightsalmon:16752762,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:11584734,lightyellow:16777184,lime:65280,limegreen:3329330,linen:16445670,magenta:16711935,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:12211667,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:13047173,midnightblue:1644912,mintcream:16121850,mistyrose:16770273,moccasin:16770229,navajowhite:16768685,navy:128,oldlace:16643558,olive:8421376,olivedrab:7048739,orange:16753920,orangered:16729344,orchid:14315734,palegoldenrod:15657130,palegreen:10025880,paleturquoise:11529966,palevioletred:14381203,papayawhip:16773077,peachpuff:16767673,peru:13468991,pink:16761035,plum:14524637,powderblue:11591910,purple:8388736,rebeccapurple:6697881,red:16711680,rosybrown:12357519,royalblue:4286945,saddlebrown:9127187,salmon:16416882,sandybrown:16032864,seagreen:3050327,seashell:16774638,sienna:10506797,silver:12632256,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:16775930,springgreen:65407,steelblue:4620980,tan:13808780,teal:32896,thistle:14204888,tomato:16737095,turquoise:4251856,violet:15631086,wheat:16113331,white:16777215,whitesmoke:16119285,yellow:16776960,yellowgreen:10145074},gt={h:0,s:0,l:0},vn={h:0,s:0,l:0};function hi(o,e,t){return t<0&&(t+=1),t>1&&(t-=1),t<1/6?o+(e-o)*6*t:t<1/2?e:t<2/3?o+(e-o)*6*(2/3-t):o}class wn{constructor(e,t,n){return this.isColor=!0,this.r=1,this.g=1,this.b=1,this.set(e,t,n)}set(e,t,n){if(t===void 0&&n===void 0){const i=e;i&&i.isColor?this.copy(i):typeof i=="number"?this.setHex(i):typeof i=="string"&&this.setStyle(i)}else this.setRGB(e,t,n);return this}setScalar(e){return this.r=e,this.g=e,this.b=e,this}setHex(e,t=mt){return e=Math.floor(e),this.r=(e>>16&255)/255,this.g=(e>>8&255)/255,this.b=(e&255)/255,Ke.toWorkingColorSpace(this,t),this}setRGB(e,t,n,i=Ke.workingColorSpace){return this.r=e,this.g=t,this.b=n,Ke.toWorkingColorSpace(this,i),this}setHSL(e,t,n,i=Ke.workingColorSpace){if(e=Il(e,1),t=pt(t,0,1),n=pt(n,0,1),t===0)this.r=this.g=this.b=n;else{const r=n<=.5?n*(1+t):n+t-n*t,s=2*n-r;this.r=hi(s,r,e+1/3),this.g=hi(s,r,e),this.b=hi(s,r,e-1/3)}return Ke.toWorkingColorSpace(this,i),this}setStyle(e,t=mt){function n(r){r!==void 0&&parseFloat(r)<1&&console.warn("THREE.Color: Alpha component of "+e+" will be ignored.")}let i;if(i=/^(\w+)\(([^\)]*)\)/.exec(e)){let r;const s=i[1],a=i[2];switch(s){case"rgb":case"rgba":if(r=/^\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(a))return n(r[4]),this.setRGB(Math.min(255,parseInt(r[1],10))/255,Math.min(255,parseInt(r[2],10))/255,Math.min(255,parseInt(r[3],10))/255,t);if(r=/^\s*(\d+)\%\s*,\s*(\d+)\%\s*,\s*(\d+)\%\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(a))return n(r[4]),this.setRGB(Math.min(100,parseInt(r[1],10))/100,Math.min(100,parseInt(r[2],10))/100,Math.min(100,parseInt(r[3],10))/100,t);break;case"hsl":case"hsla":if(r=/^\s*(\d*\.?\d+)\s*,\s*(\d*\.?\d+)\%\s*,\s*(\d*\.?\d+)\%\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(a))return n(r[4]),this.setHSL(parseFloat(r[1])/360,parseFloat(r[2])/100,parseFloat(r[3])/100,t);break;default:console.warn("THREE.Color: Unknown color model "+e)}}else if(i=/^\#([A-Fa-f\d]+)$/.exec(e)){const r=i[1],s=r.length;if(s===3)return this.setRGB(parseInt(r.charAt(0),16)/15,parseInt(r.charAt(1),16)/15,parseInt(r.charAt(2),16)/15,t);if(s===6)return this.setHex(parseInt(r,16),t);console.warn("THREE.Color: Invalid hex color "+e)}else if(e&&e.length>0)return this.setColorName(e,t);return this}setColorName(e,t=mt){const n=zr[e.toLowerCase()];return n!==void 0?this.setHex(n,t):console.warn("THREE.Color: Unknown color "+e),this}clone(){return new this.constructor(this.r,this.g,this.b)}copy(e){return this.r=e.r,this.g=e.g,this.b=e.b,this}copySRGBToLinear(e){return this.r=li(e.r),this.g=li(e.g),this.b=li(e.b),this}copyLinearToSRGB(e){return this.r=ci(e.r),this.g=ci(e.g),this.b=ci(e.b),this}convertSRGBToLinear(){return this.copySRGBToLinear(this),this}convertLinearToSRGB(){return this.copyLinearToSRGB(this),this}getHex(e=mt){return Ke.fromWorkingColorSpace(Ne.copy(this),e),Math.round(pt(Ne.r*255,0,255))*65536+Math.round(pt(Ne.g*255,0,255))*256+Math.round(pt(Ne.b*255,0,255))}getHexString(e=mt){return("000000"+this.getHex(e).toString(16)).slice(-6)}getHSL(e,t=Ke.workingColorSpace){Ke.fromWorkingColorSpace(Ne.copy(this),t);const n=Ne.r,i=Ne.g,r=Ne.b,s=Math.max(n,i,r),a=Math.min(n,i,r);let l,f;const u=(a+s)/2;if(a===s)l=0,f=0;else{const d=s-a;switch(f=u<=.5?d/(s+a):d/(2-s-a),s){case n:l=(i-r)/d+(i<r?6:0);break;case i:l=(r-n)/d+2;break;case r:l=(n-i)/d+4;break}l/=6}return e.h=l,e.s=f,e.l=u,e}getRGB(e,t=Ke.workingColorSpace){return Ke.fromWorkingColorSpace(Ne.copy(this),t),e.r=Ne.r,e.g=Ne.g,e.b=Ne.b,e}getStyle(e=mt){Ke.fromWorkingColorSpace(Ne.copy(this),e);const t=Ne.r,n=Ne.g,i=Ne.b;return e!==mt?`color(${e} ${t.toFixed(3)} ${n.toFixed(3)} ${i.toFixed(3)})`:`rgb(${Math.round(t*255)},${Math.round(n*255)},${Math.round(i*255)})`}offsetHSL(e,t,n){return this.getHSL(gt),this.setHSL(gt.h+e,gt.s+t,gt.l+n)}add(e){return this.r+=e.r,this.g+=e.g,this.b+=e.b,this}addColors(e,t){return this.r=e.r+t.r,this.g=e.g+t.g,this.b=e.b+t.b,this}addScalar(e){return this.r+=e,this.g+=e,this.b+=e,this}sub(e){return this.r=Math.max(0,this.r-e.r),this.g=Math.max(0,this.g-e.g),this.b=Math.max(0,this.b-e.b),this}multiply(e){return this.r*=e.r,this.g*=e.g,this.b*=e.b,this}multiplyScalar(e){return this.r*=e,this.g*=e,this.b*=e,this}lerp(e,t){return this.r+=(e.r-this.r)*t,this.g+=(e.g-this.g)*t,this.b+=(e.b-this.b)*t,this}lerpColors(e,t,n){return this.r=e.r+(t.r-e.r)*n,this.g=e.g+(t.g-e.g)*n,this.b=e.b+(t.b-e.b)*n,this}lerpHSL(e,t){this.getHSL(gt),e.getHSL(vn);const n=ii(gt.h,vn.h,t),i=ii(gt.s,vn.s,t),r=ii(gt.l,vn.l,t);return this.setHSL(n,i,r),this}setFromVector3(e){return this.r=e.x,this.g=e.y,this.b=e.z,this}applyMatrix3(e){const t=this.r,n=this.g,i=this.b,r=e.elements;return this.r=r[0]*t+r[3]*n+r[6]*i,this.g=r[1]*t+r[4]*n+r[7]*i,this.b=r[2]*t+r[5]*n+r[8]*i,this}equals(e){return e.r===this.r&&e.g===this.g&&e.b===this.b}fromArray(e,t=0){return this.r=e[t],this.g=e[t+1],this.b=e[t+2],this}toArray(e=[],t=0){return e[t]=this.r,e[t+1]=this.g,e[t+2]=this.b,e}fromBufferAttribute(e,t){return this.r=e.getX(t),this.g=e.getY(t),this.b=e.getZ(t),this}toJSON(){return this.getHex()}*[Symbol.iterator](){yield this.r,yield this.g,yield this.b}}const Ne=new wn;wn.NAMES=zr;class Ul extends c.MeshStandardMaterial{constructor(t={}){super();ye(this,"isMeshPhysicalMaterial");ye(this,"clearcoatMap");ye(this,"clearcoatRoughness");ye(this,"clearcoatRoughnessMap");ye(this,"clearcoatNormalScale");ye(this,"clearcoatNormalMap");ye(this,"ior");ye(this,"transmissionMap");ye(this,"thickness");ye(this,"thicknessMap");ye(this,"attenuationDistance");ye(this,"attenuationColor");ye(this,"specularIntensity");ye(this,"specularIntensityMap");ye(this,"specularColor");ye(this,"specularColorMap");ye(this,"_clearcoat");ye(this,"_transmission");this.isMeshPhysicalMaterial=!0,this.defines={STANDARD:"",PHYSICAL:""},this.type="MeshPhysicalMaterial",this.clearcoatMap=null,this.clearcoatRoughness=0,this.clearcoatRoughnessMap=null,this.clearcoatNormalScale=new ri(1,1),this.clearcoatNormalMap=null,this.ior=1.5,Object.defineProperty(this,"reflectivity",{get(){return pt(2.5*(this.ior-1)/(this.ior+1),0,1)},set(n){this.ior=(1+.4*n)/(1-.4*n)}}),this.roughness=0,this.transmissionMap=null,this.thickness=.5,this.thicknessMap=null,this.attenuationDistance=1/0,this.attenuationColor=new wn(1,1,1),this.specularIntensity=1,this.specularIntensityMap=null,this.specularColor=new wn(1,1,1),this.specularColorMap=null,this._clearcoat=.5,this._transmission=1,this.setValues(t)}get clearcoat(){return this._clearcoat}set clearcoat(t){this._clearcoat>0!=t>0&&this.version++,this._clearcoat=t}get transmission(){return this._transmission}set transmission(t){this._transmission>0!=t>0&&this.version++,this._transmission=t}copy(t){return super.copy(t),this.defines={STANDARD:"",PHYSICAL:""},this.clearcoat=t.clearcoat,this.clearcoatMap=t.clearcoatMap,this.clearcoatRoughness=t.clearcoatRoughness,this.clearcoatRoughnessMap=t.clearcoatRoughnessMap,this.clearcoatNormalMap=t.clearcoatNormalMap,this.clearcoatNormalScale.copy(t.clearcoatNormalScale),this.ior=t.ior,this.transmission=t.transmission,this.transmissionMap=t.transmissionMap,this.thickness=t.thickness,this.thicknessMap=t.thicknessMap,this.attenuationDistance=t.attenuationDistance,this.attenuationColor.copy(t.attenuationColor),this.specularIntensity=t.specularIntensity,this.specularIntensityMap=t.specularIntensityMap,this.specularColor.copy(t.specularColor),this.specularColorMap=t.specularColorMap,this}}const Nl=Ul,Vl=h.defineComponent({__name:"index",setup(o,{expose:e}){const t=h.shallowRef(),{extend:n}=ae.useTresContext();return n({MeshGlassMaterial:Nl}),e({MeshGlassMaterialClass:t}),(i,r)=>(h.openBlock(),h.createElementBlock("TresMeshGlassMaterial",{ref_key:"MeshGlassMaterialClass",ref:t},null,512))}});var zl=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function Ht(o){return o&&o.__esModule&&Object.prototype.hasOwnProperty.call(o,"default")?o.default:o}function xn(o){throw new Error('Could not dynamically require "'+o+'". Please configure the dynamicRequireTargets or/and ignoreDynamicRequires option of @rollup/plugin-commonjs appropriately for this require call to work.')}var jr={exports:{}};(function(o,e){(function(t){o.exports=t()})(function(){return function t(n,i,r){function s(f,u){if(!i[f]){if(!n[f]){var d=typeof xn=="function"&&xn;if(!u&&d)return d(f,!0);if(a)return a(f,!0);throw new Error("Cannot find module '"+f+"'")}u=i[f]={exports:{}},n[f][0].call(u.exports,function(m){var y=n[f][1][m];return s(y||m)},u,u.exports,t,n,i,r)}return i[f].exports}for(var a=typeof xn=="function"&&xn,l=0;l<r.length;l++)s(r[l]);return s}({1:[function(t,n,i){(function(r,s,a,l,f,u,d,m,y){var b=t("crypto");function A(x,C){C=I(x,C);var p;return(p=C.algorithm!=="passthrough"?b.createHash(C.algorithm):new O).write===void 0&&(p.write=p.update,p.end=p.update),g(C,p).dispatch(x),p.update||p.end(""),p.digest?p.digest(C.encoding==="buffer"?void 0:C.encoding):(x=p.read(),C.encoding!=="buffer"?x.toString(C.encoding):x)}(i=n.exports=A).sha1=function(x){return A(x)},i.keys=function(x){return A(x,{excludeValues:!0,algorithm:"sha1",encoding:"hex"})},i.MD5=function(x){return A(x,{algorithm:"md5",encoding:"hex"})},i.keysMD5=function(x){return A(x,{algorithm:"md5",encoding:"hex",excludeValues:!0})};var _=b.getHashes?b.getHashes().slice():["sha1","md5"],L=(_.push("passthrough"),["buffer","hex","binary","base64"]);function I(x,C){var p={};if(p.algorithm=(C=C||{}).algorithm||"sha1",p.encoding=C.encoding||"hex",p.excludeValues=!!C.excludeValues,p.algorithm=p.algorithm.toLowerCase(),p.encoding=p.encoding.toLowerCase(),p.ignoreUnknown=C.ignoreUnknown===!0,p.respectType=C.respectType!==!1,p.respectFunctionNames=C.respectFunctionNames!==!1,p.respectFunctionProperties=C.respectFunctionProperties!==!1,p.unorderedArrays=C.unorderedArrays===!0,p.unorderedSets=C.unorderedSets!==!1,p.unorderedObjects=C.unorderedObjects!==!1,p.replacer=C.replacer||void 0,p.excludeKeys=C.excludeKeys||void 0,x===void 0)throw new Error("Object argument required.");for(var w=0;w<_.length;++w)_[w].toLowerCase()===p.algorithm.toLowerCase()&&(p.algorithm=_[w]);if(_.indexOf(p.algorithm)===-1)throw new Error('Algorithm "'+p.algorithm+'" not supported. supported values: '+_.join(", "));if(L.indexOf(p.encoding)===-1&&p.algorithm!=="passthrough")throw new Error('Encoding "'+p.encoding+'" not supported. supported values: '+L.join(", "));return p}function S(x){if(typeof x=="function")return/^function\s+\w*\s*\(\s*\)\s*{\s+\[native code\]\s+}$/i.exec(Function.prototype.toString.call(x))!=null}function g(x,C,p){p=p||[];function w(v){return C.update?C.update(v,"utf8"):C.write(v,"utf8")}return{dispatch:function(v){return this["_"+((v=x.replacer?x.replacer(v):v)===null?"null":typeof v)](v)},_object:function(v){var T,k=Object.prototype.toString.call(v),Q=/\[object (.*)\]/i.exec(k);if(Q=(Q=Q?Q[1]:"unknown:["+k+"]").toLowerCase(),0<=(k=p.indexOf(v)))return this.dispatch("[CIRCULAR:"+k+"]");if(p.push(v),a!==void 0&&a.isBuffer&&a.isBuffer(v))return w("buffer:"),w(v);if(Q==="object"||Q==="function"||Q==="asyncfunction")return k=Object.keys(v),x.unorderedObjects&&(k=k.sort()),x.respectType===!1||S(v)||k.splice(0,0,"prototype","__proto__","constructor"),x.excludeKeys&&(k=k.filter(function(Y){return!x.excludeKeys(Y)})),w("object:"+k.length+":"),T=this,k.forEach(function(Y){T.dispatch(Y),w(":"),x.excludeValues||T.dispatch(v[Y]),w(",")});if(!this["_"+Q]){if(x.ignoreUnknown)return w("["+Q+"]");throw new Error('Unknown object type "'+Q+'"')}this["_"+Q](v)},_array:function(v,Y){Y=Y!==void 0?Y:x.unorderedArrays!==!1;var k=this;if(w("array:"+v.length+":"),!Y||v.length<=1)return v.forEach(function($){return k.dispatch($)});var Q=[],Y=v.map(function($){var ee=new O,q=p.slice();return g(x,ee,q).dispatch($),Q=Q.concat(q.slice(p.length)),ee.read().toString()});return p=p.concat(Q),Y.sort(),this._array(Y,!1)},_date:function(v){return w("date:"+v.toJSON())},_symbol:function(v){return w("symbol:"+v.toString())},_error:function(v){return w("error:"+v.toString())},_boolean:function(v){return w("bool:"+v.toString())},_string:function(v){w("string:"+v.length+":"),w(v.toString())},_function:function(v){w("fn:"),S(v)?this.dispatch("[native]"):this.dispatch(v.toString()),x.respectFunctionNames!==!1&&this.dispatch("function-name:"+String(v.name)),x.respectFunctionProperties&&this._object(v)},_number:function(v){return w("number:"+v.toString())},_xml:function(v){return w("xml:"+v.toString())},_null:function(){return w("Null")},_undefined:function(){return w("Undefined")},_regexp:function(v){return w("regex:"+v.toString())},_uint8array:function(v){return w("uint8array:"),this.dispatch(Array.prototype.slice.call(v))},_uint8clampedarray:function(v){return w("uint8clampedarray:"),this.dispatch(Array.prototype.slice.call(v))},_int8array:function(v){return w("int8array:"),this.dispatch(Array.prototype.slice.call(v))},_uint16array:function(v){return w("uint16array:"),this.dispatch(Array.prototype.slice.call(v))},_int16array:function(v){return w("int16array:"),this.dispatch(Array.prototype.slice.call(v))},_uint32array:function(v){return w("uint32array:"),this.dispatch(Array.prototype.slice.call(v))},_int32array:function(v){return w("int32array:"),this.dispatch(Array.prototype.slice.call(v))},_float32array:function(v){return w("float32array:"),this.dispatch(Array.prototype.slice.call(v))},_float64array:function(v){return w("float64array:"),this.dispatch(Array.prototype.slice.call(v))},_arraybuffer:function(v){return w("arraybuffer:"),this.dispatch(new Uint8Array(v))},_url:function(v){return w("url:"+v.toString())},_map:function(v){return w("map:"),v=Array.from(v),this._array(v,x.unorderedSets!==!1)},_set:function(v){return w("set:"),v=Array.from(v),this._array(v,x.unorderedSets!==!1)},_file:function(v){return w("file:"),this.dispatch([v.name,v.size,v.type,v.lastModfied])},_blob:function(){if(x.ignoreUnknown)return w("[blob]");throw Error(`Hashing Blob objects is currently not supported
|
|
199
243
|
(see https://github.com/puleos/object-hash/issues/26)
|
|
200
244
|
Use "options.replacer" or "options.ignoreUnknown"
|
|
201
|
-
`)},_domwindow:function(){return w("domwindow")},_bigint:function(
|
|
202
|
-
list should be an Array.`),P.length===0)return new v(0);if(P.length===1)return P[0];if(typeof D!="number")for(W=D=0;W<P.length;W++)D+=P[W].length;for(var k=new v(D),R=0,W=0;W<P.length;W++){var Y=P[W];Y.copy(k,R),R+=Y.length}return k},v.prototype.write=function(P,D,k,R){isFinite(D)?isFinite(k)||(R=k,k=void 0):(B=R,R=D,D=k,k=B),D=Number(D)||0;var W,Y,te,U,B=this.length-D;switch((!k||B<(k=Number(k)))&&(k=B),R=String(R||"utf8").toLowerCase()){case"hex":W=function(oe,le,me,_e){me=Number(me)||0;var we=oe.length-me;(!_e||we<(_e=Number(_e)))&&(_e=we),j((we=le.length)%2==0,"Invalid hex string"),we/2<_e&&(_e=we/2);for(var Ie=0;Ie<_e;Ie++){var st=parseInt(le.substr(2*Ie,2),16);j(!isNaN(st),"Invalid hex string"),oe[me+Ie]=st}return v._charsWritten=2*Ie,Ie}(this,P,D,k);break;case"utf8":case"utf-8":Y=this,te=D,U=k,W=v._charsWritten=z(ce(P),Y,te,U);break;case"ascii":case"binary":W=L(this,P,D,k);break;case"base64":Y=this,te=D,U=k,W=v._charsWritten=z(G(P),Y,te,U);break;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":W=I(this,P,D,k);break;default:throw new Error("Unknown encoding")}return W},v.prototype.toString=function(P,D,k){var R,W,Y,te,U=this;if(P=String(P||"utf8").toLowerCase(),D=Number(D)||0,(k=k!==void 0?Number(k):U.length)===D)return"";switch(P){case"hex":R=function(B,oe,le){var me=B.length;(!oe||oe<0)&&(oe=0),(!le||le<0||me<le)&&(le=me);for(var _e="",we=oe;we<le;we++)_e+=ne(B[we]);return _e}(U,D,k);break;case"utf8":case"utf-8":R=function(B,oe,le){var me="",_e="";le=Math.min(B.length,le);for(var we=oe;we<le;we++)B[we]<=127?(me+=b(_e)+String.fromCharCode(B[we]),_e=""):_e+="%"+B[we].toString(16);return me+b(_e)}(U,D,k);break;case"ascii":case"binary":R=A(U,D,k);break;case"base64":W=U,te=k,R=(Y=D)===0&&te===W.length?M.fromByteArray(W):M.fromByteArray(W.slice(Y,te));break;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":R=function(B,oe,le){for(var me=B.slice(oe,le),_e="",we=0;we<me.length;we+=2)_e+=String.fromCharCode(me[we]+256*me[we+1]);return _e}(U,D,k);break;default:throw new Error("Unknown encoding")}return R},v.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}},v.prototype.copy=function(P,D,k,R){if(D=D||0,(R=R||R===0?R:this.length)!==(k=k||0)&&P.length!==0&&this.length!==0){j(k<=R,"sourceEnd < sourceStart"),j(0<=D&&D<P.length,"targetStart out of bounds"),j(0<=k&&k<this.length,"sourceStart out of bounds"),j(0<=R&&R<=this.length,"sourceEnd out of bounds"),R>this.length&&(R=this.length);var W=(R=P.length-D<R-k?P.length-D+k:R)-k;if(W<100||!v._useTypedArrays)for(var Y=0;Y<W;Y++)P[Y+D]=this[Y+k];else P._set(this.subarray(k,k+W),D)}},v.prototype.slice=function(P,D){var k=this.length;if(P=q(P,k,0),D=q(D,k,k),v._useTypedArrays)return v._augment(this.subarray(P,D));for(var R=D-P,W=new v(R,void 0,!0),Y=0;Y<R;Y++)W[Y]=this[Y+P];return W},v.prototype.get=function(P){return console.log(".get() is deprecated. Access using array indexes instead."),this.readUInt8(P)},v.prototype.set=function(P,D){return console.log(".set() is deprecated. Access using array indexes instead."),this.writeUInt8(P,D)},v.prototype.readUInt8=function(P,D){if(D||(j(P!=null,"missing offset"),j(P<this.length,"Trying to read beyond buffer length")),!(P>=this.length))return this[P]},v.prototype.readUInt16LE=function(P,D){return g(this,P,!0,D)},v.prototype.readUInt16BE=function(P,D){return g(this,P,!1,D)},v.prototype.readUInt32LE=function(P,D){return O(this,P,!0,D)},v.prototype.readUInt32BE=function(P,D){return O(this,P,!1,D)},v.prototype.readInt8=function(P,D){if(D||(j(P!=null,"missing offset"),j(P<this.length,"Trying to read beyond buffer length")),!(P>=this.length))return 128&this[P]?-1*(255-this[P]+1):this[P]},v.prototype.readInt16LE=function(P,D){return x(this,P,!0,D)},v.prototype.readInt16BE=function(P,D){return x(this,P,!1,D)},v.prototype.readInt32LE=function(P,D){return C(this,P,!0,D)},v.prototype.readInt32BE=function(P,D){return C(this,P,!1,D)},v.prototype.readFloatLE=function(P,D){return p(this,P,!0,D)},v.prototype.readFloatBE=function(P,D){return p(this,P,!1,D)},v.prototype.readDoubleLE=function(P,D){return w(this,P,!0,D)},v.prototype.readDoubleBE=function(P,D){return w(this,P,!1,D)},v.prototype.writeUInt8=function(P,D,k){k||(j(P!=null,"missing value"),j(D!=null,"missing offset"),j(D<this.length,"trying to write beyond buffer length"),V(P,255)),D>=this.length||(this[D]=P)},v.prototype.writeUInt16LE=function(P,D,k){_(this,P,D,!0,k)},v.prototype.writeUInt16BE=function(P,D,k){_(this,P,D,!1,k)},v.prototype.writeUInt32LE=function(P,D,k){T(this,P,D,!0,k)},v.prototype.writeUInt32BE=function(P,D,k){T(this,P,D,!1,k)},v.prototype.writeInt8=function(P,D,k){k||(j(P!=null,"missing value"),j(D!=null,"missing offset"),j(D<this.length,"Trying to write beyond buffer length"),H(P,127,-128)),D>=this.length||(0<=P?this.writeUInt8(P,D,k):this.writeUInt8(255+P+1,D,k))},v.prototype.writeInt16LE=function(P,D,k){F(this,P,D,!0,k)},v.prototype.writeInt16BE=function(P,D,k){F(this,P,D,!1,k)},v.prototype.writeInt32LE=function(P,D,k){J(this,P,D,!0,k)},v.prototype.writeInt32BE=function(P,D,k){J(this,P,D,!1,k)},v.prototype.writeFloatLE=function(P,D,k){X(this,P,D,!0,k)},v.prototype.writeFloatBE=function(P,D,k){X(this,P,D,!1,k)},v.prototype.writeDoubleLE=function(P,D,k){ee(this,P,D,!0,k)},v.prototype.writeDoubleBE=function(P,D,k){ee(this,P,D,!1,k)},v.prototype.fill=function(P,D,k){if(D=D||0,k=k||this.length,j(typeof(P=typeof(P=P||0)=="string"?P.charCodeAt(0):P)=="number"&&!isNaN(P),"value is not a number"),j(D<=k,"end < start"),k!==D&&this.length!==0){j(0<=D&&D<this.length,"start out of bounds"),j(0<=k&&k<=this.length,"end out of bounds");for(var R=D;R<k;R++)this[R]=P}},v.prototype.inspect=function(){for(var P=[],D=this.length,k=0;k<D;k++)if(P[k]=ne(this[k]),k===i.INSPECT_MAX_BYTES){P[k+1]="...";break}return"<Buffer "+P.join(" ")+">"},v.prototype.toArrayBuffer=function(){if(typeof Uint8Array>"u")throw new Error("Buffer.toArrayBuffer not supported in this browser");if(v._useTypedArrays)return new v(this).buffer;for(var P=new Uint8Array(this.length),D=0,k=P.length;D<k;D+=1)P[D]=this[D];return P.buffer};var $=v.prototype;function q(P,D,k){return typeof P!="number"?k:D<=(P=~~P)?D:0<=P||0<=(P+=D)?P:0}function Z(P){return(P=~~Math.ceil(+P))<0?0:P}function ie(P){return(Array.isArray||function(D){return Object.prototype.toString.call(D)==="[object Array]"})(P)}function ne(P){return P<16?"0"+P.toString(16):P.toString(16)}function ce(P){for(var D=[],k=0;k<P.length;k++){var R=P.charCodeAt(k);if(R<=127)D.push(P.charCodeAt(k));else for(var W=k,Y=(55296<=R&&R<=57343&&k++,encodeURIComponent(P.slice(W,k+1)).substr(1).split("%")),te=0;te<Y.length;te++)D.push(parseInt(Y[te],16))}return D}function G(P){return M.toByteArray(P)}function z(P,D,k,R){for(var W=0;W<R&&!(W+k>=D.length||W>=P.length);W++)D[W+k]=P[W];return W}function b(P){try{return decodeURIComponent(P)}catch{return String.fromCharCode(65533)}}function V(P,D){j(typeof P=="number","cannot write a non-number as a number"),j(0<=P,"specified a negative value for writing an unsigned value"),j(P<=D,"value is larger than maximum value for type"),j(Math.floor(P)===P,"value has a fractional component")}function H(P,D,k){j(typeof P=="number","cannot write a non-number as a number"),j(P<=D,"value larger than maximum allowed value"),j(k<=P,"value smaller than minimum allowed value"),j(Math.floor(P)===P,"value has a fractional component")}function N(P,D,k){j(typeof P=="number","cannot write a non-number as a number"),j(P<=D,"value larger than maximum allowed value"),j(k<=P,"value smaller than minimum allowed value")}function j(P,D){if(!P)throw new Error(D||"Failed assertion")}v._augment=function(P){return P._isBuffer=!0,P._get=P.get,P._set=P.set,P.get=$.get,P.set=$.set,P.write=$.write,P.toString=$.toString,P.toLocaleString=$.toString,P.toJSON=$.toJSON,P.copy=$.copy,P.slice=$.slice,P.readUInt8=$.readUInt8,P.readUInt16LE=$.readUInt16LE,P.readUInt16BE=$.readUInt16BE,P.readUInt32LE=$.readUInt32LE,P.readUInt32BE=$.readUInt32BE,P.readInt8=$.readInt8,P.readInt16LE=$.readInt16LE,P.readInt16BE=$.readInt16BE,P.readInt32LE=$.readInt32LE,P.readInt32BE=$.readInt32BE,P.readFloatLE=$.readFloatLE,P.readFloatBE=$.readFloatBE,P.readDoubleLE=$.readDoubleLE,P.readDoubleBE=$.readDoubleBE,P.writeUInt8=$.writeUInt8,P.writeUInt16LE=$.writeUInt16LE,P.writeUInt16BE=$.writeUInt16BE,P.writeUInt32LE=$.writeUInt32LE,P.writeUInt32BE=$.writeUInt32BE,P.writeInt8=$.writeInt8,P.writeInt16LE=$.writeInt16LE,P.writeInt16BE=$.writeInt16BE,P.writeInt32LE=$.writeInt32LE,P.writeInt32BE=$.writeInt32BE,P.writeFloatLE=$.writeFloatLE,P.writeFloatBE=$.writeFloatBE,P.writeDoubleLE=$.writeDoubleLE,P.writeDoubleBE=$.writeDoubleBE,P.fill=$.fill,P.inspect=$.inspect,P.toArrayBuffer=$.toArrayBuffer,P}}).call(this,t("lYpoI2"),typeof self<"u"?self:typeof window<"u"?window:{},t("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/gulp-browserify/node_modules/buffer/index.js","/node_modules/gulp-browserify/node_modules/buffer")},{"base64-js":2,buffer:3,ieee754:10,lYpoI2:11}],4:[function(t,n,i){(function(s,r,M,l,f,h,d,m,y){var M=t("buffer").Buffer,S=4,v=new M(S);v.fill(0),n.exports={hash:function(L,I,A,g){for(var O=I(function(_,T){_.length%S!=0&&(F=_.length+(S-_.length%S),_=M.concat([_,v],F));for(var F,J=[],X=T?_.readInt32BE:_.readInt32LE,ee=0;ee<_.length;ee+=S)J.push(X.call(_,ee));return J}(L=M.isBuffer(L)?L:new M(L),g),8*L.length),I=g,x=new M(A),C=I?x.writeInt32BE:x.writeInt32LE,p=0;p<O.length;p++)C.call(x,O[p],4*p,!0);return x}}}).call(this,t("lYpoI2"),typeof self<"u"?self:typeof window<"u"?window:{},t("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/gulp-browserify/node_modules/crypto-browserify/helpers.js","/node_modules/gulp-browserify/node_modules/crypto-browserify")},{buffer:3,lYpoI2:11}],5:[function(t,n,i){(function(s,r,M,l,f,h,d,m,y){var M=t("buffer").Buffer,S=t("./sha"),v=t("./sha256"),L=t("./rng"),I={sha1:S,sha256:v,md5:t("./md5")},A=64,g=new M(A);function O(_,T){var F=I[_=_||"sha1"],J=[];return F||x("algorithm:",_,"is not yet supported"),{update:function(X){return M.isBuffer(X)||(X=new M(X)),J.push(X),X.length,this},digest:function(X){var ee=M.concat(J),ee=T?function($,q,Z){M.isBuffer(q)||(q=new M(q)),M.isBuffer(Z)||(Z=new M(Z)),q.length>A?q=$(q):q.length<A&&(q=M.concat([q,g],A));for(var ie=new M(A),ne=new M(A),ce=0;ce<A;ce++)ie[ce]=54^q[ce],ne[ce]=92^q[ce];return Z=$(M.concat([ie,Z])),$(M.concat([ne,Z]))}(F,T,ee):F(ee);return J=null,X?ee.toString(X):ee}}}function x(){var _=[].slice.call(arguments).join(" ");throw new Error([_,"we accept pull requests","http://github.com/dominictarr/crypto-browserify"].join(`
|
|
203
|
-
`))}g.fill(0),i.createHash=function(_){return O(_)},i.createHmac=O,i.randomBytes=function(_,T){if(!T||!T.call)return new M(L(_));try{T.call(this,void 0,new M(L(_)))}catch(F){T(F)}};var C,p=["createCredentials","createCipher","createCipheriv","createDecipher","createDecipheriv","createSign","createVerify","createDiffieHellman","pbkdf2"],w=function(_){i[_]=function(){x("sorry,",_,"is not implemented yet")}};for(C in p)w(p[C])}).call(this,t("lYpoI2"),typeof self<"u"?self:typeof window<"u"?window:{},t("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/gulp-browserify/node_modules/crypto-browserify/index.js","/node_modules/gulp-browserify/node_modules/crypto-browserify")},{"./md5":6,"./rng":7,"./sha":8,"./sha256":9,buffer:3,lYpoI2:11}],6:[function(t,n,i){(function(s,r,a,l,f,h,d,m,y){var M=t("./helpers");function S(x,C){x[C>>5]|=128<<C%32,x[14+(C+64>>>9<<4)]=C;for(var p=1732584193,w=-271733879,_=-1732584194,T=271733878,F=0;F<x.length;F+=16){var J=p,X=w,ee=_,$=T,p=L(p,w,_,T,x[F+0],7,-680876936),T=L(T,p,w,_,x[F+1],12,-389564586),_=L(_,T,p,w,x[F+2],17,606105819),w=L(w,_,T,p,x[F+3],22,-1044525330);p=L(p,w,_,T,x[F+4],7,-176418897),T=L(T,p,w,_,x[F+5],12,1200080426),_=L(_,T,p,w,x[F+6],17,-1473231341),w=L(w,_,T,p,x[F+7],22,-45705983),p=L(p,w,_,T,x[F+8],7,1770035416),T=L(T,p,w,_,x[F+9],12,-1958414417),_=L(_,T,p,w,x[F+10],17,-42063),w=L(w,_,T,p,x[F+11],22,-1990404162),p=L(p,w,_,T,x[F+12],7,1804603682),T=L(T,p,w,_,x[F+13],12,-40341101),_=L(_,T,p,w,x[F+14],17,-1502002290),p=I(p,w=L(w,_,T,p,x[F+15],22,1236535329),_,T,x[F+1],5,-165796510),T=I(T,p,w,_,x[F+6],9,-1069501632),_=I(_,T,p,w,x[F+11],14,643717713),w=I(w,_,T,p,x[F+0],20,-373897302),p=I(p,w,_,T,x[F+5],5,-701558691),T=I(T,p,w,_,x[F+10],9,38016083),_=I(_,T,p,w,x[F+15],14,-660478335),w=I(w,_,T,p,x[F+4],20,-405537848),p=I(p,w,_,T,x[F+9],5,568446438),T=I(T,p,w,_,x[F+14],9,-1019803690),_=I(_,T,p,w,x[F+3],14,-187363961),w=I(w,_,T,p,x[F+8],20,1163531501),p=I(p,w,_,T,x[F+13],5,-1444681467),T=I(T,p,w,_,x[F+2],9,-51403784),_=I(_,T,p,w,x[F+7],14,1735328473),p=A(p,w=I(w,_,T,p,x[F+12],20,-1926607734),_,T,x[F+5],4,-378558),T=A(T,p,w,_,x[F+8],11,-2022574463),_=A(_,T,p,w,x[F+11],16,1839030562),w=A(w,_,T,p,x[F+14],23,-35309556),p=A(p,w,_,T,x[F+1],4,-1530992060),T=A(T,p,w,_,x[F+4],11,1272893353),_=A(_,T,p,w,x[F+7],16,-155497632),w=A(w,_,T,p,x[F+10],23,-1094730640),p=A(p,w,_,T,x[F+13],4,681279174),T=A(T,p,w,_,x[F+0],11,-358537222),_=A(_,T,p,w,x[F+3],16,-722521979),w=A(w,_,T,p,x[F+6],23,76029189),p=A(p,w,_,T,x[F+9],4,-640364487),T=A(T,p,w,_,x[F+12],11,-421815835),_=A(_,T,p,w,x[F+15],16,530742520),p=g(p,w=A(w,_,T,p,x[F+2],23,-995338651),_,T,x[F+0],6,-198630844),T=g(T,p,w,_,x[F+7],10,1126891415),_=g(_,T,p,w,x[F+14],15,-1416354905),w=g(w,_,T,p,x[F+5],21,-57434055),p=g(p,w,_,T,x[F+12],6,1700485571),T=g(T,p,w,_,x[F+3],10,-1894986606),_=g(_,T,p,w,x[F+10],15,-1051523),w=g(w,_,T,p,x[F+1],21,-2054922799),p=g(p,w,_,T,x[F+8],6,1873313359),T=g(T,p,w,_,x[F+15],10,-30611744),_=g(_,T,p,w,x[F+6],15,-1560198380),w=g(w,_,T,p,x[F+13],21,1309151649),p=g(p,w,_,T,x[F+4],6,-145523070),T=g(T,p,w,_,x[F+11],10,-1120210379),_=g(_,T,p,w,x[F+2],15,718787259),w=g(w,_,T,p,x[F+9],21,-343485551),p=O(p,J),w=O(w,X),_=O(_,ee),T=O(T,$)}return Array(p,w,_,T)}function v(x,C,p,w,_,T){return O((C=O(O(C,x),O(w,T)))<<_|C>>>32-_,p)}function L(x,C,p,w,_,T,F){return v(C&p|~C&w,x,C,_,T,F)}function I(x,C,p,w,_,T,F){return v(C&w|p&~w,x,C,_,T,F)}function A(x,C,p,w,_,T,F){return v(C^p^w,x,C,_,T,F)}function g(x,C,p,w,_,T,F){return v(p^(C|~w),x,C,_,T,F)}function O(x,C){var p=(65535&x)+(65535&C);return(x>>16)+(C>>16)+(p>>16)<<16|65535&p}n.exports=function(x){return M.hash(x,S,16)}}).call(this,t("lYpoI2"),typeof self<"u"?self:typeof window<"u"?window:{},t("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/gulp-browserify/node_modules/crypto-browserify/md5.js","/node_modules/gulp-browserify/node_modules/crypto-browserify")},{"./helpers":4,buffer:3,lYpoI2:11}],7:[function(t,n,i){(function(s,r,a,l,f,h,d,m,y){n.exports=function(M){for(var S,v=new Array(M),L=0;L<M;L++)!(3&L)&&(S=4294967296*Math.random()),v[L]=S>>>((3&L)<<3)&255;return v}}).call(this,t("lYpoI2"),typeof self<"u"?self:typeof window<"u"?window:{},t("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/gulp-browserify/node_modules/crypto-browserify/rng.js","/node_modules/gulp-browserify/node_modules/crypto-browserify")},{buffer:3,lYpoI2:11}],8:[function(t,n,i){(function(s,r,a,l,f,h,d,m,y){var M=t("./helpers");function S(I,A){I[A>>5]|=128<<24-A%32,I[15+(A+64>>9<<4)]=A;for(var g,O,x,C=Array(80),p=1732584193,w=-271733879,_=-1732584194,T=271733878,F=-1009589776,J=0;J<I.length;J+=16){for(var X=p,ee=w,$=_,q=T,Z=F,ie=0;ie<80;ie++){C[ie]=ie<16?I[J+ie]:L(C[ie-3]^C[ie-8]^C[ie-14]^C[ie-16],1);var ne=v(v(L(p,5),(ne=w,O=_,x=T,(g=ie)<20?ne&O|~ne&x:!(g<40)&&g<60?ne&O|ne&x|O&x:ne^O^x)),v(v(F,C[ie]),(g=ie)<20?1518500249:g<40?1859775393:g<60?-1894007588:-899497514)),F=T,T=_,_=L(w,30),w=p,p=ne}p=v(p,X),w=v(w,ee),_=v(_,$),T=v(T,q),F=v(F,Z)}return Array(p,w,_,T,F)}function v(I,A){var g=(65535&I)+(65535&A);return(I>>16)+(A>>16)+(g>>16)<<16|65535&g}function L(I,A){return I<<A|I>>>32-A}n.exports=function(I){return M.hash(I,S,20,!0)}}).call(this,t("lYpoI2"),typeof self<"u"?self:typeof window<"u"?window:{},t("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/gulp-browserify/node_modules/crypto-browserify/sha.js","/node_modules/gulp-browserify/node_modules/crypto-browserify")},{"./helpers":4,buffer:3,lYpoI2:11}],9:[function(t,n,i){(function(s,r,a,l,f,h,d,m,y){function M(A,g){var O=(65535&A)+(65535&g);return(A>>16)+(g>>16)+(O>>16)<<16|65535&O}function S(A,g){var O,x=new Array(1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298),C=new Array(1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225),p=new Array(64);A[g>>5]|=128<<24-g%32,A[15+(g+64>>9<<4)]=g;for(var w,_,T=0;T<A.length;T+=16){for(var F=C[0],J=C[1],X=C[2],ee=C[3],$=C[4],q=C[5],Z=C[6],ie=C[7],ne=0;ne<64;ne++)p[ne]=ne<16?A[ne+T]:M(M(M((_=p[ne-2],L(_,17)^L(_,19)^I(_,10)),p[ne-7]),(_=p[ne-15],L(_,7)^L(_,18)^I(_,3))),p[ne-16]),O=M(M(M(M(ie,L(_=$,6)^L(_,11)^L(_,25)),$&q^~$&Z),x[ne]),p[ne]),w=M(L(w=F,2)^L(w,13)^L(w,22),F&J^F&X^J&X),ie=Z,Z=q,q=$,$=M(ee,O),ee=X,X=J,J=F,F=M(O,w);C[0]=M(F,C[0]),C[1]=M(J,C[1]),C[2]=M(X,C[2]),C[3]=M(ee,C[3]),C[4]=M($,C[4]),C[5]=M(q,C[5]),C[6]=M(Z,C[6]),C[7]=M(ie,C[7])}return C}var v=t("./helpers"),L=function(A,g){return A>>>g|A<<32-g},I=function(A,g){return A>>>g};n.exports=function(A){return v.hash(A,S,32,!0)}}).call(this,t("lYpoI2"),typeof self<"u"?self:typeof window<"u"?window:{},t("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/gulp-browserify/node_modules/crypto-browserify/sha256.js","/node_modules/gulp-browserify/node_modules/crypto-browserify")},{"./helpers":4,buffer:3,lYpoI2:11}],10:[function(t,n,i){(function(s,r,a,l,f,h,d,m,y){i.read=function(M,S,v,L,T){var A,g,O=8*T-L-1,x=(1<<O)-1,C=x>>1,p=-7,w=v?T-1:0,_=v?-1:1,T=M[S+w];for(w+=_,A=T&(1<<-p)-1,T>>=-p,p+=O;0<p;A=256*A+M[S+w],w+=_,p-=8);for(g=A&(1<<-p)-1,A>>=-p,p+=L;0<p;g=256*g+M[S+w],w+=_,p-=8);if(A===0)A=1-C;else{if(A===x)return g?NaN:1/0*(T?-1:1);g+=Math.pow(2,L),A-=C}return(T?-1:1)*g*Math.pow(2,A-L)},i.write=function(M,S,v,L,I,F){var g,O,x=8*F-I-1,C=(1<<x)-1,p=C>>1,w=I===23?Math.pow(2,-24)-Math.pow(2,-77):0,_=L?0:F-1,T=L?1:-1,F=S<0||S===0&&1/S<0?1:0;for(S=Math.abs(S),isNaN(S)||S===1/0?(O=isNaN(S)?1:0,g=C):(g=Math.floor(Math.log(S)/Math.LN2),S*(L=Math.pow(2,-g))<1&&(g--,L*=2),2<=(S+=1<=g+p?w/L:w*Math.pow(2,1-p))*L&&(g++,L/=2),C<=g+p?(O=0,g=C):1<=g+p?(O=(S*L-1)*Math.pow(2,I),g+=p):(O=S*Math.pow(2,p-1)*Math.pow(2,I),g=0));8<=I;M[v+_]=255&O,_+=T,O/=256,I-=8);for(g=g<<I|O,x+=I;0<x;M[v+_]=255&g,_+=T,g/=256,x-=8);M[v+_-T]|=128*F}}).call(this,t("lYpoI2"),typeof self<"u"?self:typeof window<"u"?window:{},t("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/gulp-browserify/node_modules/ieee754/index.js","/node_modules/gulp-browserify/node_modules/ieee754")},{buffer:3,lYpoI2:11}],11:[function(t,n,i){(function(s,r,a,l,f,h,d,m,y){var M,S,v;function L(){}(s=n.exports={}).nextTick=(S=typeof window<"u"&&window.setImmediate,v=typeof window<"u"&&window.postMessage&&window.addEventListener,S?function(I){return window.setImmediate(I)}:v?(M=[],window.addEventListener("message",function(I){var A=I.source;A!==window&&A!==null||I.data!=="process-tick"||(I.stopPropagation(),0<M.length&&M.shift()())},!0),function(I){M.push(I),window.postMessage("process-tick","*")}):function(I){setTimeout(I,0)}),s.title="browser",s.browser=!0,s.env={},s.argv=[],s.on=L,s.addListener=L,s.once=L,s.off=L,s.removeListener=L,s.removeAllListeners=L,s.emit=L,s.binding=function(I){throw new Error("process.binding is not supported")},s.cwd=function(){return"/"},s.chdir=function(I){throw new Error("process.chdir is not supported")}}).call(this,t("lYpoI2"),typeof self<"u"?self:typeof window<"u"?window:{},t("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/gulp-browserify/node_modules/process/browser.js","/node_modules/gulp-browserify/node_modules/process")},{buffer:3,lYpoI2:11}]},{},[1])(1)})})(Fs);var Ol=Fs.exports;const Il=Kt(Ol);var Bs=["precision","highp","mediump","lowp","attribute","const","uniform","varying","break","continue","do","for","while","if","else","in","out","inout","float","int","uint","void","bool","true","false","discard","return","mat2","mat3","mat4","vec2","vec3","vec4","ivec2","ivec3","ivec4","bvec2","bvec3","bvec4","sampler1D","sampler2D","sampler3D","samplerCube","sampler1DShadow","sampler2DShadow","struct","asm","class","union","enum","typedef","template","this","packed","goto","switch","default","inline","noinline","volatile","public","static","extern","external","interface","long","short","double","half","fixed","unsigned","input","output","hvec2","hvec3","hvec4","dvec2","dvec3","dvec4","fvec2","fvec3","fvec4","sampler2DRect","sampler3DRect","sampler2DRectShadow","sizeof","cast","namespace","using"],Dl=["<<=",">>=","++","--","<<",">>","<=",">=","==","!=","&&","||","+=","-=","*=","/=","%=","&=","^^","^=","|=","(",")","[","]",".","!","~","*","/","%","+","-","<",">","&","^","|","?",":","=",",",";","{","}"],Us=["abs","acos","all","any","asin","atan","ceil","clamp","cos","cross","dFdx","dFdy","degrees","distance","dot","equal","exp","exp2","faceforward","floor","fract","gl_BackColor","gl_BackLightModelProduct","gl_BackLightProduct","gl_BackMaterial","gl_BackSecondaryColor","gl_ClipPlane","gl_ClipVertex","gl_Color","gl_DepthRange","gl_DepthRangeParameters","gl_EyePlaneQ","gl_EyePlaneR","gl_EyePlaneS","gl_EyePlaneT","gl_Fog","gl_FogCoord","gl_FogFragCoord","gl_FogParameters","gl_FragColor","gl_FragCoord","gl_FragData","gl_FragDepth","gl_FragDepthEXT","gl_FrontColor","gl_FrontFacing","gl_FrontLightModelProduct","gl_FrontLightProduct","gl_FrontMaterial","gl_FrontSecondaryColor","gl_LightModel","gl_LightModelParameters","gl_LightModelProducts","gl_LightProducts","gl_LightSource","gl_LightSourceParameters","gl_MaterialParameters","gl_MaxClipPlanes","gl_MaxCombinedTextureImageUnits","gl_MaxDrawBuffers","gl_MaxFragmentUniformComponents","gl_MaxLights","gl_MaxTextureCoords","gl_MaxTextureImageUnits","gl_MaxTextureUnits","gl_MaxVaryingFloats","gl_MaxVertexAttribs","gl_MaxVertexTextureImageUnits","gl_MaxVertexUniformComponents","gl_ModelViewMatrix","gl_ModelViewMatrixInverse","gl_ModelViewMatrixInverseTranspose","gl_ModelViewMatrixTranspose","gl_ModelViewProjectionMatrix","gl_ModelViewProjectionMatrixInverse","gl_ModelViewProjectionMatrixInverseTranspose","gl_ModelViewProjectionMatrixTranspose","gl_MultiTexCoord0","gl_MultiTexCoord1","gl_MultiTexCoord2","gl_MultiTexCoord3","gl_MultiTexCoord4","gl_MultiTexCoord5","gl_MultiTexCoord6","gl_MultiTexCoord7","gl_Normal","gl_NormalMatrix","gl_NormalScale","gl_ObjectPlaneQ","gl_ObjectPlaneR","gl_ObjectPlaneS","gl_ObjectPlaneT","gl_Point","gl_PointCoord","gl_PointParameters","gl_PointSize","gl_Position","gl_ProjectionMatrix","gl_ProjectionMatrixInverse","gl_ProjectionMatrixInverseTranspose","gl_ProjectionMatrixTranspose","gl_SecondaryColor","gl_TexCoord","gl_TextureEnvColor","gl_TextureMatrix","gl_TextureMatrixInverse","gl_TextureMatrixInverseTranspose","gl_TextureMatrixTranspose","gl_Vertex","greaterThan","greaterThanEqual","inversesqrt","length","lessThan","lessThanEqual","log","log2","matrixCompMult","max","min","mix","mod","normalize","not","notEqual","pow","radians","reflect","refract","sign","sin","smoothstep","sqrt","step","tan","texture2D","texture2DLod","texture2DProj","texture2DProjLod","textureCube","textureCubeLod","texture2DLodEXT","texture2DProjLodEXT","textureCubeLodEXT","texture2DGradEXT","texture2DProjGradEXT","textureCubeGradEXT"],kl=Bs,Fl=kl.slice().concat(["layout","centroid","smooth","case","mat2x2","mat2x3","mat2x4","mat3x2","mat3x3","mat3x4","mat4x2","mat4x3","mat4x4","uvec2","uvec3","uvec4","samplerCubeShadow","sampler2DArray","sampler2DArrayShadow","isampler2D","isampler3D","isamplerCube","isampler2DArray","usampler2D","usampler3D","usamplerCube","usampler2DArray","coherent","restrict","readonly","writeonly","resource","atomic_uint","noperspective","patch","sample","subroutine","common","partition","active","filter","image1D","image2D","image3D","imageCube","iimage1D","iimage2D","iimage3D","iimageCube","uimage1D","uimage2D","uimage3D","uimageCube","image1DArray","image2DArray","iimage1DArray","iimage2DArray","uimage1DArray","uimage2DArray","image1DShadow","image2DShadow","image1DArrayShadow","image2DArrayShadow","imageBuffer","iimageBuffer","uimageBuffer","sampler1DArray","sampler1DArrayShadow","isampler1D","isampler1DArray","usampler1D","usampler1DArray","isampler2DRect","usampler2DRect","samplerBuffer","isamplerBuffer","usamplerBuffer","sampler2DMS","isampler2DMS","usampler2DMS","sampler2DMSArray","isampler2DMSArray","usampler2DMSArray"]),li=Us;li=li.slice().filter(function(o){return!/^(gl\_|texture)/.test(o)});var Bl=li.concat(["gl_VertexID","gl_InstanceID","gl_Position","gl_PointSize","gl_FragCoord","gl_FrontFacing","gl_FragDepth","gl_PointCoord","gl_MaxVertexAttribs","gl_MaxVertexUniformVectors","gl_MaxVertexOutputVectors","gl_MaxFragmentInputVectors","gl_MaxVertexTextureImageUnits","gl_MaxCombinedTextureImageUnits","gl_MaxTextureImageUnits","gl_MaxFragmentUniformVectors","gl_MaxDrawBuffers","gl_MinProgramTexelOffset","gl_MaxProgramTexelOffset","gl_DepthRangeParameters","gl_DepthRange","trunc","round","roundEven","isnan","isinf","floatBitsToInt","floatBitsToUint","intBitsToFloat","uintBitsToFloat","packSnorm2x16","unpackSnorm2x16","packUnorm2x16","unpackUnorm2x16","packHalf2x16","unpackHalf2x16","outerProduct","transpose","determinant","inverse","texture","textureSize","textureProj","textureLod","textureOffset","texelFetch","texelFetchOffset","textureProjOffset","textureLodOffset","textureProjLod","textureProjLodOffset","textureGrad","textureGradOffset","textureProjGrad","textureProjGradOffset"]),Ul=Wl,Nl=Bs,Ns=Dl,zl=Us,Vl=Fl,jl=Bl,Ke=999,zs=9999,ci=0,hi=1,Vs=2,js=3,Gs=4,Qt=5,Gl=6,Rl=7,El=8,Rs=9,Yl=10,Es=11,Xl=["block-comment","line-comment","preprocessor","operator","integer","float","ident","builtin","keyword","whitespace","eof","integer"];function Wl(o){var e=0,t=0,n=Ke,i,s,r=[],a=[],l=1,f=0,h=0,d=!1,m=!1,y="",M;o=o||{};var S=zl,v=Nl;o.version==="300 es"&&(S=jl,v=Vl);for(var L={},I={},e=0;e<S.length;e++)L[S[e]]=!0;for(var e=0;e<v.length;e++)I[v[e]]=!0;return function(q){return a=[],q!==null?g(q):O()};function A(q){q.length&&a.push({type:Xl[n],data:q,position:h,line:l,column:f})}function g(q){e=0,q.toString&&(q=q.toString()),y+=q.replace(/\r\n/g,`
|
|
204
|
-
`),
|
|
205
|
-
`:f=0,++l;break;default:++f;break}}return t+=e,y=y.slice(e),a}function O(q){return
|
|
206
|
-
`)&&
|
|
245
|
+
`)},_domwindow:function(){return w("domwindow")},_bigint:function(v){return w("bigint:"+v.toString())},_process:function(){return w("process")},_timer:function(){return w("timer")},_pipe:function(){return w("pipe")},_tcp:function(){return w("tcp")},_udp:function(){return w("udp")},_tty:function(){return w("tty")},_statwatcher:function(){return w("statwatcher")},_securecontext:function(){return w("securecontext")},_connection:function(){return w("connection")},_zlib:function(){return w("zlib")},_context:function(){return w("context")},_nodescript:function(){return w("nodescript")},_httpparser:function(){return w("httpparser")},_dataview:function(){return w("dataview")},_signal:function(){return w("signal")},_fsevent:function(){return w("fsevent")},_tlswrap:function(){return w("tlswrap")}}}function O(){return{buf:"",write:function(x){this.buf+=x},end:function(x){this.buf+=x},read:function(){return this.buf}}}i.writeToStream=function(x,C,p){return p===void 0&&(p=C,C={}),g(C=I(x,C),p).dispatch(x)}}).call(this,t("lYpoI2"),typeof self<"u"?self:typeof window<"u"?window:{},t("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/fake_9a5aa49d.js","/")},{buffer:3,crypto:5,lYpoI2:11}],2:[function(t,n,i){(function(r,s,a,l,f,u,d,m,y){(function(b){var A=typeof Uint8Array<"u"?Uint8Array:Array,_=43,L=47,I=48,S=97,g=65,O=45,x=95;function C(p){return p=p.charCodeAt(0),p===_||p===O?62:p===L||p===x?63:p<I?-1:p<I+10?p-I+26+26:p<g+26?p-g:p<S+26?p-S+26:void 0}b.toByteArray=function(p){var w,v;if(0<p.length%4)throw new Error("Invalid string. Length must be a multiple of 4");var T=p.length,T=p.charAt(T-2)==="="?2:p.charAt(T-1)==="="?1:0,k=new A(3*p.length/4-T),Q=0<T?p.length-4:p.length,Y=0;function $(ee){k[Y++]=ee}for(w=0;w<Q;w+=4,0)$((16711680&(v=C(p.charAt(w))<<18|C(p.charAt(w+1))<<12|C(p.charAt(w+2))<<6|C(p.charAt(w+3))))>>16),$((65280&v)>>8),$(255&v);return T==2?$(255&(v=C(p.charAt(w))<<2|C(p.charAt(w+1))>>4)):T==1&&($((v=C(p.charAt(w))<<10|C(p.charAt(w+1))<<4|C(p.charAt(w+2))>>2)>>8&255),$(255&v)),k},b.fromByteArray=function(p){var w,v,T,k,Q=p.length%3,Y="";function $(ee){return"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(ee)}for(w=0,T=p.length-Q;w<T;w+=3)v=(p[w]<<16)+(p[w+1]<<8)+p[w+2],Y+=$((k=v)>>18&63)+$(k>>12&63)+$(k>>6&63)+$(63&k);switch(Q){case 1:Y=(Y+=$((v=p[p.length-1])>>2))+$(v<<4&63)+"==";break;case 2:Y=(Y=(Y+=$((v=(p[p.length-2]<<8)+p[p.length-1])>>10))+$(v>>4&63))+$(v<<2&63)+"="}return Y}})(i===void 0?this.base64js={}:i)}).call(this,t("lYpoI2"),typeof self<"u"?self:typeof window<"u"?window:{},t("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/gulp-browserify/node_modules/base64-js/lib/b64.js","/node_modules/gulp-browserify/node_modules/base64-js/lib")},{buffer:3,lYpoI2:11}],3:[function(t,n,i){(function(r,s,_,l,f,u,d,m,y){var b=t("base64-js"),A=t("ieee754");function _(P,D,F){if(!(this instanceof _))return new _(P,D,F);var R,W,X,te,U=typeof P;if(D==="base64"&&U=="string")for(P=(te=P).trim?te.trim():te.replace(/^\s+|\s+$/g,"");P.length%4!=0;)P+="=";if(U=="number")R=Z(P);else if(U=="string")R=_.byteLength(P,D);else{if(U!="object")throw new Error("First argument needs to be a number, array or string.");R=Z(P.length)}if(_._useTypedArrays?W=_._augment(new Uint8Array(R)):((W=this).length=R,W._isBuffer=!0),_._useTypedArrays&&typeof P.byteLength=="number")W._set(P);else if(ie(te=P)||_.isBuffer(te)||te&&typeof te=="object"&&typeof te.length=="number")for(X=0;X<R;X++)_.isBuffer(P)?W[X]=P.readUInt8(X):W[X]=P[X];else if(U=="string")W.write(P,0,D);else if(U=="number"&&!_._useTypedArrays&&!F)for(X=0;X<R;X++)W[X]=0;return W}function L(P,D,F,R){return _._charsWritten=V(function(W){for(var X=[],te=0;te<W.length;te++)X.push(255&W.charCodeAt(te));return X}(D),P,F,R)}function I(P,D,F,R){return _._charsWritten=V(function(W){for(var X,te,U=[],B=0;B<W.length;B++)te=W.charCodeAt(B),X=te>>8,te=te%256,U.push(te),U.push(X);return U}(D),P,F,R)}function S(P,D,F){var R="";F=Math.min(P.length,F);for(var W=D;W<F;W++)R+=String.fromCharCode(P[W]);return R}function g(P,D,F,X){X||(j(typeof F=="boolean","missing or invalid endian"),j(D!=null,"missing offset"),j(D+1<P.length,"Trying to read beyond buffer length"));var W,X=P.length;if(!(X<=D))return F?(W=P[D],D+1<X&&(W|=P[D+1]<<8)):(W=P[D]<<8,D+1<X&&(W|=P[D+1])),W}function O(P,D,F,X){X||(j(typeof F=="boolean","missing or invalid endian"),j(D!=null,"missing offset"),j(D+3<P.length,"Trying to read beyond buffer length"));var W,X=P.length;if(!(X<=D))return F?(D+2<X&&(W=P[D+2]<<16),D+1<X&&(W|=P[D+1]<<8),W|=P[D],D+3<X&&(W+=P[D+3]<<24>>>0)):(D+1<X&&(W=P[D+1]<<16),D+2<X&&(W|=P[D+2]<<8),D+3<X&&(W|=P[D+3]),W+=P[D]<<24>>>0),W}function x(P,D,F,R){if(R||(j(typeof F=="boolean","missing or invalid endian"),j(D!=null,"missing offset"),j(D+1<P.length,"Trying to read beyond buffer length")),!(P.length<=D))return R=g(P,D,F,!0),32768&R?-1*(65535-R+1):R}function C(P,D,F,R){if(R||(j(typeof F=="boolean","missing or invalid endian"),j(D!=null,"missing offset"),j(D+3<P.length,"Trying to read beyond buffer length")),!(P.length<=D))return R=O(P,D,F,!0),2147483648&R?-1*(4294967295-R+1):R}function p(P,D,F,R){return R||(j(typeof F=="boolean","missing or invalid endian"),j(D+3<P.length,"Trying to read beyond buffer length")),A.read(P,D,F,23,4)}function w(P,D,F,R){return R||(j(typeof F=="boolean","missing or invalid endian"),j(D+7<P.length,"Trying to read beyond buffer length")),A.read(P,D,F,52,8)}function v(P,D,F,R,W){if(W||(j(D!=null,"missing value"),j(typeof R=="boolean","missing or invalid endian"),j(F!=null,"missing offset"),j(F+1<P.length,"trying to write beyond buffer length"),z(D,65535)),W=P.length,!(W<=F))for(var X=0,te=Math.min(W-F,2);X<te;X++)P[F+X]=(D&255<<8*(R?X:1-X))>>>8*(R?X:1-X)}function T(P,D,F,R,W){if(W||(j(D!=null,"missing value"),j(typeof R=="boolean","missing or invalid endian"),j(F!=null,"missing offset"),j(F+3<P.length,"trying to write beyond buffer length"),z(D,4294967295)),W=P.length,!(W<=F))for(var X=0,te=Math.min(W-F,4);X<te;X++)P[F+X]=D>>>8*(R?X:3-X)&255}function k(P,D,F,R,W){W||(j(D!=null,"missing value"),j(typeof R=="boolean","missing or invalid endian"),j(F!=null,"missing offset"),j(F+1<P.length,"Trying to write beyond buffer length"),H(D,32767,-32768)),P.length<=F||v(P,0<=D?D:65535+D+1,F,R,W)}function Q(P,D,F,R,W){W||(j(D!=null,"missing value"),j(typeof R=="boolean","missing or invalid endian"),j(F!=null,"missing offset"),j(F+3<P.length,"Trying to write beyond buffer length"),H(D,2147483647,-2147483648)),P.length<=F||T(P,0<=D?D:4294967295+D+1,F,R,W)}function Y(P,D,F,R,W){W||(j(D!=null,"missing value"),j(typeof R=="boolean","missing or invalid endian"),j(F!=null,"missing offset"),j(F+3<P.length,"Trying to write beyond buffer length"),N(D,34028234663852886e22,-34028234663852886e22)),P.length<=F||A.write(P,D,F,R,23,4)}function $(P,D,F,R,W){W||(j(D!=null,"missing value"),j(typeof R=="boolean","missing or invalid endian"),j(F!=null,"missing offset"),j(F+7<P.length,"Trying to write beyond buffer length"),N(D,17976931348623157e292,-17976931348623157e292)),P.length<=F||A.write(P,D,F,R,52,8)}i.Buffer=_,i.SlowBuffer=_,i.INSPECT_MAX_BYTES=50,_.poolSize=8192,_._useTypedArrays=function(){try{var P=new ArrayBuffer(0),D=new Uint8Array(P);return D.foo=function(){return 42},D.foo()===42&&typeof D.subarray=="function"}catch{return!1}}(),_.isEncoding=function(P){switch(String(P).toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"binary":case"base64":case"raw":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return!0;default:return!1}},_.isBuffer=function(P){return!(P==null||!P._isBuffer)},_.byteLength=function(P,D){var F;switch(P+="",D||"utf8"){case"hex":F=P.length/2;break;case"utf8":case"utf-8":F=ce(P).length;break;case"ascii":case"binary":case"raw":F=P.length;break;case"base64":F=G(P).length;break;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":F=2*P.length;break;default:throw new Error("Unknown encoding")}return F},_.concat=function(P,D){if(j(ie(P),`Usage: Buffer.concat(list, [totalLength])
|
|
246
|
+
list should be an Array.`),P.length===0)return new _(0);if(P.length===1)return P[0];if(typeof D!="number")for(W=D=0;W<P.length;W++)D+=P[W].length;for(var F=new _(D),R=0,W=0;W<P.length;W++){var X=P[W];X.copy(F,R),R+=X.length}return F},_.prototype.write=function(P,D,F,R){isFinite(D)?isFinite(F)||(R=F,F=void 0):(B=R,R=D,D=F,F=B),D=Number(D)||0;var W,X,te,U,B=this.length-D;switch((!F||B<(F=Number(F)))&&(F=B),R=String(R||"utf8").toLowerCase()){case"hex":W=function(oe,le,me,_e){me=Number(me)||0;var we=oe.length-me;(!_e||we<(_e=Number(_e)))&&(_e=we),j((we=le.length)%2==0,"Invalid hex string"),we/2<_e&&(_e=we/2);for(var Ie=0;Ie<_e;Ie++){var st=parseInt(le.substr(2*Ie,2),16);j(!isNaN(st),"Invalid hex string"),oe[me+Ie]=st}return _._charsWritten=2*Ie,Ie}(this,P,D,F);break;case"utf8":case"utf-8":X=this,te=D,U=F,W=_._charsWritten=V(ce(P),X,te,U);break;case"ascii":case"binary":W=L(this,P,D,F);break;case"base64":X=this,te=D,U=F,W=_._charsWritten=V(G(P),X,te,U);break;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":W=I(this,P,D,F);break;default:throw new Error("Unknown encoding")}return W},_.prototype.toString=function(P,D,F){var R,W,X,te,U=this;if(P=String(P||"utf8").toLowerCase(),D=Number(D)||0,(F=F!==void 0?Number(F):U.length)===D)return"";switch(P){case"hex":R=function(B,oe,le){var me=B.length;(!oe||oe<0)&&(oe=0),(!le||le<0||me<le)&&(le=me);for(var _e="",we=oe;we<le;we++)_e+=ne(B[we]);return _e}(U,D,F);break;case"utf8":case"utf-8":R=function(B,oe,le){var me="",_e="";le=Math.min(B.length,le);for(var we=oe;we<le;we++)B[we]<=127?(me+=M(_e)+String.fromCharCode(B[we]),_e=""):_e+="%"+B[we].toString(16);return me+M(_e)}(U,D,F);break;case"ascii":case"binary":R=S(U,D,F);break;case"base64":W=U,te=F,R=(X=D)===0&&te===W.length?b.fromByteArray(W):b.fromByteArray(W.slice(X,te));break;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":R=function(B,oe,le){for(var me=B.slice(oe,le),_e="",we=0;we<me.length;we+=2)_e+=String.fromCharCode(me[we]+256*me[we+1]);return _e}(U,D,F);break;default:throw new Error("Unknown encoding")}return R},_.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}},_.prototype.copy=function(P,D,F,R){if(D=D||0,(R=R||R===0?R:this.length)!==(F=F||0)&&P.length!==0&&this.length!==0){j(F<=R,"sourceEnd < sourceStart"),j(0<=D&&D<P.length,"targetStart out of bounds"),j(0<=F&&F<this.length,"sourceStart out of bounds"),j(0<=R&&R<=this.length,"sourceEnd out of bounds"),R>this.length&&(R=this.length);var W=(R=P.length-D<R-F?P.length-D+F:R)-F;if(W<100||!_._useTypedArrays)for(var X=0;X<W;X++)P[X+D]=this[X+F];else P._set(this.subarray(F,F+W),D)}},_.prototype.slice=function(P,D){var F=this.length;if(P=q(P,F,0),D=q(D,F,F),_._useTypedArrays)return _._augment(this.subarray(P,D));for(var R=D-P,W=new _(R,void 0,!0),X=0;X<R;X++)W[X]=this[X+P];return W},_.prototype.get=function(P){return console.log(".get() is deprecated. Access using array indexes instead."),this.readUInt8(P)},_.prototype.set=function(P,D){return console.log(".set() is deprecated. Access using array indexes instead."),this.writeUInt8(P,D)},_.prototype.readUInt8=function(P,D){if(D||(j(P!=null,"missing offset"),j(P<this.length,"Trying to read beyond buffer length")),!(P>=this.length))return this[P]},_.prototype.readUInt16LE=function(P,D){return g(this,P,!0,D)},_.prototype.readUInt16BE=function(P,D){return g(this,P,!1,D)},_.prototype.readUInt32LE=function(P,D){return O(this,P,!0,D)},_.prototype.readUInt32BE=function(P,D){return O(this,P,!1,D)},_.prototype.readInt8=function(P,D){if(D||(j(P!=null,"missing offset"),j(P<this.length,"Trying to read beyond buffer length")),!(P>=this.length))return 128&this[P]?-1*(255-this[P]+1):this[P]},_.prototype.readInt16LE=function(P,D){return x(this,P,!0,D)},_.prototype.readInt16BE=function(P,D){return x(this,P,!1,D)},_.prototype.readInt32LE=function(P,D){return C(this,P,!0,D)},_.prototype.readInt32BE=function(P,D){return C(this,P,!1,D)},_.prototype.readFloatLE=function(P,D){return p(this,P,!0,D)},_.prototype.readFloatBE=function(P,D){return p(this,P,!1,D)},_.prototype.readDoubleLE=function(P,D){return w(this,P,!0,D)},_.prototype.readDoubleBE=function(P,D){return w(this,P,!1,D)},_.prototype.writeUInt8=function(P,D,F){F||(j(P!=null,"missing value"),j(D!=null,"missing offset"),j(D<this.length,"trying to write beyond buffer length"),z(P,255)),D>=this.length||(this[D]=P)},_.prototype.writeUInt16LE=function(P,D,F){v(this,P,D,!0,F)},_.prototype.writeUInt16BE=function(P,D,F){v(this,P,D,!1,F)},_.prototype.writeUInt32LE=function(P,D,F){T(this,P,D,!0,F)},_.prototype.writeUInt32BE=function(P,D,F){T(this,P,D,!1,F)},_.prototype.writeInt8=function(P,D,F){F||(j(P!=null,"missing value"),j(D!=null,"missing offset"),j(D<this.length,"Trying to write beyond buffer length"),H(P,127,-128)),D>=this.length||(0<=P?this.writeUInt8(P,D,F):this.writeUInt8(255+P+1,D,F))},_.prototype.writeInt16LE=function(P,D,F){k(this,P,D,!0,F)},_.prototype.writeInt16BE=function(P,D,F){k(this,P,D,!1,F)},_.prototype.writeInt32LE=function(P,D,F){Q(this,P,D,!0,F)},_.prototype.writeInt32BE=function(P,D,F){Q(this,P,D,!1,F)},_.prototype.writeFloatLE=function(P,D,F){Y(this,P,D,!0,F)},_.prototype.writeFloatBE=function(P,D,F){Y(this,P,D,!1,F)},_.prototype.writeDoubleLE=function(P,D,F){$(this,P,D,!0,F)},_.prototype.writeDoubleBE=function(P,D,F){$(this,P,D,!1,F)},_.prototype.fill=function(P,D,F){if(D=D||0,F=F||this.length,j(typeof(P=typeof(P=P||0)=="string"?P.charCodeAt(0):P)=="number"&&!isNaN(P),"value is not a number"),j(D<=F,"end < start"),F!==D&&this.length!==0){j(0<=D&&D<this.length,"start out of bounds"),j(0<=F&&F<=this.length,"end out of bounds");for(var R=D;R<F;R++)this[R]=P}},_.prototype.inspect=function(){for(var P=[],D=this.length,F=0;F<D;F++)if(P[F]=ne(this[F]),F===i.INSPECT_MAX_BYTES){P[F+1]="...";break}return"<Buffer "+P.join(" ")+">"},_.prototype.toArrayBuffer=function(){if(typeof Uint8Array>"u")throw new Error("Buffer.toArrayBuffer not supported in this browser");if(_._useTypedArrays)return new _(this).buffer;for(var P=new Uint8Array(this.length),D=0,F=P.length;D<F;D+=1)P[D]=this[D];return P.buffer};var ee=_.prototype;function q(P,D,F){return typeof P!="number"?F:D<=(P=~~P)?D:0<=P||0<=(P+=D)?P:0}function Z(P){return(P=~~Math.ceil(+P))<0?0:P}function ie(P){return(Array.isArray||function(D){return Object.prototype.toString.call(D)==="[object Array]"})(P)}function ne(P){return P<16?"0"+P.toString(16):P.toString(16)}function ce(P){for(var D=[],F=0;F<P.length;F++){var R=P.charCodeAt(F);if(R<=127)D.push(P.charCodeAt(F));else for(var W=F,X=(55296<=R&&R<=57343&&F++,encodeURIComponent(P.slice(W,F+1)).substr(1).split("%")),te=0;te<X.length;te++)D.push(parseInt(X[te],16))}return D}function G(P){return b.toByteArray(P)}function V(P,D,F,R){for(var W=0;W<R&&!(W+F>=D.length||W>=P.length);W++)D[W+F]=P[W];return W}function M(P){try{return decodeURIComponent(P)}catch{return"�"}}function z(P,D){j(typeof P=="number","cannot write a non-number as a number"),j(0<=P,"specified a negative value for writing an unsigned value"),j(P<=D,"value is larger than maximum value for type"),j(Math.floor(P)===P,"value has a fractional component")}function H(P,D,F){j(typeof P=="number","cannot write a non-number as a number"),j(P<=D,"value larger than maximum allowed value"),j(F<=P,"value smaller than minimum allowed value"),j(Math.floor(P)===P,"value has a fractional component")}function N(P,D,F){j(typeof P=="number","cannot write a non-number as a number"),j(P<=D,"value larger than maximum allowed value"),j(F<=P,"value smaller than minimum allowed value")}function j(P,D){if(!P)throw new Error(D||"Failed assertion")}_._augment=function(P){return P._isBuffer=!0,P._get=P.get,P._set=P.set,P.get=ee.get,P.set=ee.set,P.write=ee.write,P.toString=ee.toString,P.toLocaleString=ee.toString,P.toJSON=ee.toJSON,P.copy=ee.copy,P.slice=ee.slice,P.readUInt8=ee.readUInt8,P.readUInt16LE=ee.readUInt16LE,P.readUInt16BE=ee.readUInt16BE,P.readUInt32LE=ee.readUInt32LE,P.readUInt32BE=ee.readUInt32BE,P.readInt8=ee.readInt8,P.readInt16LE=ee.readInt16LE,P.readInt16BE=ee.readInt16BE,P.readInt32LE=ee.readInt32LE,P.readInt32BE=ee.readInt32BE,P.readFloatLE=ee.readFloatLE,P.readFloatBE=ee.readFloatBE,P.readDoubleLE=ee.readDoubleLE,P.readDoubleBE=ee.readDoubleBE,P.writeUInt8=ee.writeUInt8,P.writeUInt16LE=ee.writeUInt16LE,P.writeUInt16BE=ee.writeUInt16BE,P.writeUInt32LE=ee.writeUInt32LE,P.writeUInt32BE=ee.writeUInt32BE,P.writeInt8=ee.writeInt8,P.writeInt16LE=ee.writeInt16LE,P.writeInt16BE=ee.writeInt16BE,P.writeInt32LE=ee.writeInt32LE,P.writeInt32BE=ee.writeInt32BE,P.writeFloatLE=ee.writeFloatLE,P.writeFloatBE=ee.writeFloatBE,P.writeDoubleLE=ee.writeDoubleLE,P.writeDoubleBE=ee.writeDoubleBE,P.fill=ee.fill,P.inspect=ee.inspect,P.toArrayBuffer=ee.toArrayBuffer,P}}).call(this,t("lYpoI2"),typeof self<"u"?self:typeof window<"u"?window:{},t("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/gulp-browserify/node_modules/buffer/index.js","/node_modules/gulp-browserify/node_modules/buffer")},{"base64-js":2,buffer:3,ieee754:10,lYpoI2:11}],4:[function(t,n,i){(function(r,s,b,l,f,u,d,m,y){var b=t("buffer").Buffer,A=4,_=new b(A);_.fill(0),n.exports={hash:function(L,I,S,g){for(var O=I(function(v,T){v.length%A!=0&&(k=v.length+(A-v.length%A),v=b.concat([v,_],k));for(var k,Q=[],Y=T?v.readInt32BE:v.readInt32LE,$=0;$<v.length;$+=A)Q.push(Y.call(v,$));return Q}(L=b.isBuffer(L)?L:new b(L),g),8*L.length),I=g,x=new b(S),C=I?x.writeInt32BE:x.writeInt32LE,p=0;p<O.length;p++)C.call(x,O[p],4*p,!0);return x}}}).call(this,t("lYpoI2"),typeof self<"u"?self:typeof window<"u"?window:{},t("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/gulp-browserify/node_modules/crypto-browserify/helpers.js","/node_modules/gulp-browserify/node_modules/crypto-browserify")},{buffer:3,lYpoI2:11}],5:[function(t,n,i){(function(r,s,b,l,f,u,d,m,y){var b=t("buffer").Buffer,A=t("./sha"),_=t("./sha256"),L=t("./rng"),I={sha1:A,sha256:_,md5:t("./md5")},S=64,g=new b(S);function O(v,T){var k=I[v=v||"sha1"],Q=[];return k||x("algorithm:",v,"is not yet supported"),{update:function(Y){return b.isBuffer(Y)||(Y=new b(Y)),Q.push(Y),Y.length,this},digest:function(Y){var $=b.concat(Q),$=T?function(ee,q,Z){b.isBuffer(q)||(q=new b(q)),b.isBuffer(Z)||(Z=new b(Z)),q.length>S?q=ee(q):q.length<S&&(q=b.concat([q,g],S));for(var ie=new b(S),ne=new b(S),ce=0;ce<S;ce++)ie[ce]=54^q[ce],ne[ce]=92^q[ce];return Z=ee(b.concat([ie,Z])),ee(b.concat([ne,Z]))}(k,T,$):k($);return Q=null,Y?$.toString(Y):$}}}function x(){var v=[].slice.call(arguments).join(" ");throw new Error([v,"we accept pull requests","http://github.com/dominictarr/crypto-browserify"].join(`
|
|
247
|
+
`))}g.fill(0),i.createHash=function(v){return O(v)},i.createHmac=O,i.randomBytes=function(v,T){if(!T||!T.call)return new b(L(v));try{T.call(this,void 0,new b(L(v)))}catch(k){T(k)}};var C,p=["createCredentials","createCipher","createCipheriv","createDecipher","createDecipheriv","createSign","createVerify","createDiffieHellman","pbkdf2"],w=function(v){i[v]=function(){x("sorry,",v,"is not implemented yet")}};for(C in p)w(p[C])}).call(this,t("lYpoI2"),typeof self<"u"?self:typeof window<"u"?window:{},t("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/gulp-browserify/node_modules/crypto-browserify/index.js","/node_modules/gulp-browserify/node_modules/crypto-browserify")},{"./md5":6,"./rng":7,"./sha":8,"./sha256":9,buffer:3,lYpoI2:11}],6:[function(t,n,i){(function(r,s,a,l,f,u,d,m,y){var b=t("./helpers");function A(x,C){x[C>>5]|=128<<C%32,x[14+(C+64>>>9<<4)]=C;for(var p=1732584193,w=-271733879,v=-1732584194,T=271733878,k=0;k<x.length;k+=16){var Q=p,Y=w,$=v,ee=T,p=L(p,w,v,T,x[k+0],7,-680876936),T=L(T,p,w,v,x[k+1],12,-389564586),v=L(v,T,p,w,x[k+2],17,606105819),w=L(w,v,T,p,x[k+3],22,-1044525330);p=L(p,w,v,T,x[k+4],7,-176418897),T=L(T,p,w,v,x[k+5],12,1200080426),v=L(v,T,p,w,x[k+6],17,-1473231341),w=L(w,v,T,p,x[k+7],22,-45705983),p=L(p,w,v,T,x[k+8],7,1770035416),T=L(T,p,w,v,x[k+9],12,-1958414417),v=L(v,T,p,w,x[k+10],17,-42063),w=L(w,v,T,p,x[k+11],22,-1990404162),p=L(p,w,v,T,x[k+12],7,1804603682),T=L(T,p,w,v,x[k+13],12,-40341101),v=L(v,T,p,w,x[k+14],17,-1502002290),p=I(p,w=L(w,v,T,p,x[k+15],22,1236535329),v,T,x[k+1],5,-165796510),T=I(T,p,w,v,x[k+6],9,-1069501632),v=I(v,T,p,w,x[k+11],14,643717713),w=I(w,v,T,p,x[k+0],20,-373897302),p=I(p,w,v,T,x[k+5],5,-701558691),T=I(T,p,w,v,x[k+10],9,38016083),v=I(v,T,p,w,x[k+15],14,-660478335),w=I(w,v,T,p,x[k+4],20,-405537848),p=I(p,w,v,T,x[k+9],5,568446438),T=I(T,p,w,v,x[k+14],9,-1019803690),v=I(v,T,p,w,x[k+3],14,-187363961),w=I(w,v,T,p,x[k+8],20,1163531501),p=I(p,w,v,T,x[k+13],5,-1444681467),T=I(T,p,w,v,x[k+2],9,-51403784),v=I(v,T,p,w,x[k+7],14,1735328473),p=S(p,w=I(w,v,T,p,x[k+12],20,-1926607734),v,T,x[k+5],4,-378558),T=S(T,p,w,v,x[k+8],11,-2022574463),v=S(v,T,p,w,x[k+11],16,1839030562),w=S(w,v,T,p,x[k+14],23,-35309556),p=S(p,w,v,T,x[k+1],4,-1530992060),T=S(T,p,w,v,x[k+4],11,1272893353),v=S(v,T,p,w,x[k+7],16,-155497632),w=S(w,v,T,p,x[k+10],23,-1094730640),p=S(p,w,v,T,x[k+13],4,681279174),T=S(T,p,w,v,x[k+0],11,-358537222),v=S(v,T,p,w,x[k+3],16,-722521979),w=S(w,v,T,p,x[k+6],23,76029189),p=S(p,w,v,T,x[k+9],4,-640364487),T=S(T,p,w,v,x[k+12],11,-421815835),v=S(v,T,p,w,x[k+15],16,530742520),p=g(p,w=S(w,v,T,p,x[k+2],23,-995338651),v,T,x[k+0],6,-198630844),T=g(T,p,w,v,x[k+7],10,1126891415),v=g(v,T,p,w,x[k+14],15,-1416354905),w=g(w,v,T,p,x[k+5],21,-57434055),p=g(p,w,v,T,x[k+12],6,1700485571),T=g(T,p,w,v,x[k+3],10,-1894986606),v=g(v,T,p,w,x[k+10],15,-1051523),w=g(w,v,T,p,x[k+1],21,-2054922799),p=g(p,w,v,T,x[k+8],6,1873313359),T=g(T,p,w,v,x[k+15],10,-30611744),v=g(v,T,p,w,x[k+6],15,-1560198380),w=g(w,v,T,p,x[k+13],21,1309151649),p=g(p,w,v,T,x[k+4],6,-145523070),T=g(T,p,w,v,x[k+11],10,-1120210379),v=g(v,T,p,w,x[k+2],15,718787259),w=g(w,v,T,p,x[k+9],21,-343485551),p=O(p,Q),w=O(w,Y),v=O(v,$),T=O(T,ee)}return Array(p,w,v,T)}function _(x,C,p,w,v,T){return O((C=O(O(C,x),O(w,T)))<<v|C>>>32-v,p)}function L(x,C,p,w,v,T,k){return _(C&p|~C&w,x,C,v,T,k)}function I(x,C,p,w,v,T,k){return _(C&w|p&~w,x,C,v,T,k)}function S(x,C,p,w,v,T,k){return _(C^p^w,x,C,v,T,k)}function g(x,C,p,w,v,T,k){return _(p^(C|~w),x,C,v,T,k)}function O(x,C){var p=(65535&x)+(65535&C);return(x>>16)+(C>>16)+(p>>16)<<16|65535&p}n.exports=function(x){return b.hash(x,A,16)}}).call(this,t("lYpoI2"),typeof self<"u"?self:typeof window<"u"?window:{},t("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/gulp-browserify/node_modules/crypto-browserify/md5.js","/node_modules/gulp-browserify/node_modules/crypto-browserify")},{"./helpers":4,buffer:3,lYpoI2:11}],7:[function(t,n,i){(function(r,s,a,l,f,u,d,m,y){n.exports=function(b){for(var A,_=new Array(b),L=0;L<b;L++)!(3&L)&&(A=4294967296*Math.random()),_[L]=A>>>((3&L)<<3)&255;return _}}).call(this,t("lYpoI2"),typeof self<"u"?self:typeof window<"u"?window:{},t("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/gulp-browserify/node_modules/crypto-browserify/rng.js","/node_modules/gulp-browserify/node_modules/crypto-browserify")},{buffer:3,lYpoI2:11}],8:[function(t,n,i){(function(r,s,a,l,f,u,d,m,y){var b=t("./helpers");function A(I,S){I[S>>5]|=128<<24-S%32,I[15+(S+64>>9<<4)]=S;for(var g,O,x,C=Array(80),p=1732584193,w=-271733879,v=-1732584194,T=271733878,k=-1009589776,Q=0;Q<I.length;Q+=16){for(var Y=p,$=w,ee=v,q=T,Z=k,ie=0;ie<80;ie++){C[ie]=ie<16?I[Q+ie]:L(C[ie-3]^C[ie-8]^C[ie-14]^C[ie-16],1);var ne=_(_(L(p,5),(ne=w,O=v,x=T,(g=ie)<20?ne&O|~ne&x:!(g<40)&&g<60?ne&O|ne&x|O&x:ne^O^x)),_(_(k,C[ie]),(g=ie)<20?1518500249:g<40?1859775393:g<60?-1894007588:-899497514)),k=T,T=v,v=L(w,30),w=p,p=ne}p=_(p,Y),w=_(w,$),v=_(v,ee),T=_(T,q),k=_(k,Z)}return Array(p,w,v,T,k)}function _(I,S){var g=(65535&I)+(65535&S);return(I>>16)+(S>>16)+(g>>16)<<16|65535&g}function L(I,S){return I<<S|I>>>32-S}n.exports=function(I){return b.hash(I,A,20,!0)}}).call(this,t("lYpoI2"),typeof self<"u"?self:typeof window<"u"?window:{},t("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/gulp-browserify/node_modules/crypto-browserify/sha.js","/node_modules/gulp-browserify/node_modules/crypto-browserify")},{"./helpers":4,buffer:3,lYpoI2:11}],9:[function(t,n,i){(function(r,s,a,l,f,u,d,m,y){function b(S,g){var O=(65535&S)+(65535&g);return(S>>16)+(g>>16)+(O>>16)<<16|65535&O}function A(S,g){var O,x=new Array(1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298),C=new Array(1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225),p=new Array(64);S[g>>5]|=128<<24-g%32,S[15+(g+64>>9<<4)]=g;for(var w,v,T=0;T<S.length;T+=16){for(var k=C[0],Q=C[1],Y=C[2],$=C[3],ee=C[4],q=C[5],Z=C[6],ie=C[7],ne=0;ne<64;ne++)p[ne]=ne<16?S[ne+T]:b(b(b((v=p[ne-2],L(v,17)^L(v,19)^I(v,10)),p[ne-7]),(v=p[ne-15],L(v,7)^L(v,18)^I(v,3))),p[ne-16]),O=b(b(b(b(ie,L(v=ee,6)^L(v,11)^L(v,25)),ee&q^~ee&Z),x[ne]),p[ne]),w=b(L(w=k,2)^L(w,13)^L(w,22),k&Q^k&Y^Q&Y),ie=Z,Z=q,q=ee,ee=b($,O),$=Y,Y=Q,Q=k,k=b(O,w);C[0]=b(k,C[0]),C[1]=b(Q,C[1]),C[2]=b(Y,C[2]),C[3]=b($,C[3]),C[4]=b(ee,C[4]),C[5]=b(q,C[5]),C[6]=b(Z,C[6]),C[7]=b(ie,C[7])}return C}var _=t("./helpers"),L=function(S,g){return S>>>g|S<<32-g},I=function(S,g){return S>>>g};n.exports=function(S){return _.hash(S,A,32,!0)}}).call(this,t("lYpoI2"),typeof self<"u"?self:typeof window<"u"?window:{},t("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/gulp-browserify/node_modules/crypto-browserify/sha256.js","/node_modules/gulp-browserify/node_modules/crypto-browserify")},{"./helpers":4,buffer:3,lYpoI2:11}],10:[function(t,n,i){(function(r,s,a,l,f,u,d,m,y){i.read=function(b,A,_,L,T){var S,g,O=8*T-L-1,x=(1<<O)-1,C=x>>1,p=-7,w=_?T-1:0,v=_?-1:1,T=b[A+w];for(w+=v,S=T&(1<<-p)-1,T>>=-p,p+=O;0<p;S=256*S+b[A+w],w+=v,p-=8);for(g=S&(1<<-p)-1,S>>=-p,p+=L;0<p;g=256*g+b[A+w],w+=v,p-=8);if(S===0)S=1-C;else{if(S===x)return g?NaN:1/0*(T?-1:1);g+=Math.pow(2,L),S-=C}return(T?-1:1)*g*Math.pow(2,S-L)},i.write=function(b,A,_,L,I,k){var g,O,x=8*k-I-1,C=(1<<x)-1,p=C>>1,w=I===23?Math.pow(2,-24)-Math.pow(2,-77):0,v=L?0:k-1,T=L?1:-1,k=A<0||A===0&&1/A<0?1:0;for(A=Math.abs(A),isNaN(A)||A===1/0?(O=isNaN(A)?1:0,g=C):(g=Math.floor(Math.log(A)/Math.LN2),A*(L=Math.pow(2,-g))<1&&(g--,L*=2),2<=(A+=1<=g+p?w/L:w*Math.pow(2,1-p))*L&&(g++,L/=2),C<=g+p?(O=0,g=C):1<=g+p?(O=(A*L-1)*Math.pow(2,I),g+=p):(O=A*Math.pow(2,p-1)*Math.pow(2,I),g=0));8<=I;b[_+v]=255&O,v+=T,O/=256,I-=8);for(g=g<<I|O,x+=I;0<x;b[_+v]=255&g,v+=T,g/=256,x-=8);b[_+v-T]|=128*k}}).call(this,t("lYpoI2"),typeof self<"u"?self:typeof window<"u"?window:{},t("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/gulp-browserify/node_modules/ieee754/index.js","/node_modules/gulp-browserify/node_modules/ieee754")},{buffer:3,lYpoI2:11}],11:[function(t,n,i){(function(r,s,a,l,f,u,d,m,y){var b,A,_;function L(){}(r=n.exports={}).nextTick=(A=typeof window<"u"&&window.setImmediate,_=typeof window<"u"&&window.postMessage&&window.addEventListener,A?function(I){return window.setImmediate(I)}:_?(b=[],window.addEventListener("message",function(I){var S=I.source;S!==window&&S!==null||I.data!=="process-tick"||(I.stopPropagation(),0<b.length&&b.shift()())},!0),function(I){b.push(I),window.postMessage("process-tick","*")}):function(I){setTimeout(I,0)}),r.title="browser",r.browser=!0,r.env={},r.argv=[],r.on=L,r.addListener=L,r.once=L,r.off=L,r.removeListener=L,r.removeAllListeners=L,r.emit=L,r.binding=function(I){throw new Error("process.binding is not supported")},r.cwd=function(){return"/"},r.chdir=function(I){throw new Error("process.chdir is not supported")}}).call(this,t("lYpoI2"),typeof self<"u"?self:typeof window<"u"?window:{},t("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/gulp-browserify/node_modules/process/browser.js","/node_modules/gulp-browserify/node_modules/process")},{buffer:3,lYpoI2:11}]},{},[1])(1)})})(jr);var jl=jr.exports;const Gl=Ht(jl);var Gr=["precision","highp","mediump","lowp","attribute","const","uniform","varying","break","continue","do","for","while","if","else","in","out","inout","float","int","uint","void","bool","true","false","discard","return","mat2","mat3","mat4","vec2","vec3","vec4","ivec2","ivec3","ivec4","bvec2","bvec3","bvec4","sampler1D","sampler2D","sampler3D","samplerCube","sampler1DShadow","sampler2DShadow","struct","asm","class","union","enum","typedef","template","this","packed","goto","switch","default","inline","noinline","volatile","public","static","extern","external","interface","long","short","double","half","fixed","unsigned","input","output","hvec2","hvec3","hvec4","dvec2","dvec3","dvec4","fvec2","fvec3","fvec4","sampler2DRect","sampler3DRect","sampler2DRectShadow","sizeof","cast","namespace","using"],Rl=["<<=",">>=","++","--","<<",">>","<=",">=","==","!=","&&","||","+=","-=","*=","/=","%=","&=","^^","^=","|=","(",")","[","]",".","!","~","*","/","%","+","-","<",">","&","^","|","?",":","=",",",";","{","}"],Rr=["abs","acos","all","any","asin","atan","ceil","clamp","cos","cross","dFdx","dFdy","degrees","distance","dot","equal","exp","exp2","faceforward","floor","fract","gl_BackColor","gl_BackLightModelProduct","gl_BackLightProduct","gl_BackMaterial","gl_BackSecondaryColor","gl_ClipPlane","gl_ClipVertex","gl_Color","gl_DepthRange","gl_DepthRangeParameters","gl_EyePlaneQ","gl_EyePlaneR","gl_EyePlaneS","gl_EyePlaneT","gl_Fog","gl_FogCoord","gl_FogFragCoord","gl_FogParameters","gl_FragColor","gl_FragCoord","gl_FragData","gl_FragDepth","gl_FragDepthEXT","gl_FrontColor","gl_FrontFacing","gl_FrontLightModelProduct","gl_FrontLightProduct","gl_FrontMaterial","gl_FrontSecondaryColor","gl_LightModel","gl_LightModelParameters","gl_LightModelProducts","gl_LightProducts","gl_LightSource","gl_LightSourceParameters","gl_MaterialParameters","gl_MaxClipPlanes","gl_MaxCombinedTextureImageUnits","gl_MaxDrawBuffers","gl_MaxFragmentUniformComponents","gl_MaxLights","gl_MaxTextureCoords","gl_MaxTextureImageUnits","gl_MaxTextureUnits","gl_MaxVaryingFloats","gl_MaxVertexAttribs","gl_MaxVertexTextureImageUnits","gl_MaxVertexUniformComponents","gl_ModelViewMatrix","gl_ModelViewMatrixInverse","gl_ModelViewMatrixInverseTranspose","gl_ModelViewMatrixTranspose","gl_ModelViewProjectionMatrix","gl_ModelViewProjectionMatrixInverse","gl_ModelViewProjectionMatrixInverseTranspose","gl_ModelViewProjectionMatrixTranspose","gl_MultiTexCoord0","gl_MultiTexCoord1","gl_MultiTexCoord2","gl_MultiTexCoord3","gl_MultiTexCoord4","gl_MultiTexCoord5","gl_MultiTexCoord6","gl_MultiTexCoord7","gl_Normal","gl_NormalMatrix","gl_NormalScale","gl_ObjectPlaneQ","gl_ObjectPlaneR","gl_ObjectPlaneS","gl_ObjectPlaneT","gl_Point","gl_PointCoord","gl_PointParameters","gl_PointSize","gl_Position","gl_ProjectionMatrix","gl_ProjectionMatrixInverse","gl_ProjectionMatrixInverseTranspose","gl_ProjectionMatrixTranspose","gl_SecondaryColor","gl_TexCoord","gl_TextureEnvColor","gl_TextureMatrix","gl_TextureMatrixInverse","gl_TextureMatrixInverseTranspose","gl_TextureMatrixTranspose","gl_Vertex","greaterThan","greaterThanEqual","inversesqrt","length","lessThan","lessThanEqual","log","log2","matrixCompMult","max","min","mix","mod","normalize","not","notEqual","pow","radians","reflect","refract","sign","sin","smoothstep","sqrt","step","tan","texture2D","texture2DLod","texture2DProj","texture2DProjLod","textureCube","textureCubeLod","texture2DLodEXT","texture2DProjLodEXT","textureCubeLodEXT","texture2DGradEXT","texture2DProjGradEXT","textureCubeGradEXT"],El=Gr,Yl=El.slice().concat(["layout","centroid","smooth","case","mat2x2","mat2x3","mat2x4","mat3x2","mat3x3","mat3x4","mat4x2","mat4x3","mat4x4","uvec2","uvec3","uvec4","samplerCubeShadow","sampler2DArray","sampler2DArrayShadow","isampler2D","isampler3D","isamplerCube","isampler2DArray","usampler2D","usampler3D","usamplerCube","usampler2DArray","coherent","restrict","readonly","writeonly","resource","atomic_uint","noperspective","patch","sample","subroutine","common","partition","active","filter","image1D","image2D","image3D","imageCube","iimage1D","iimage2D","iimage3D","iimageCube","uimage1D","uimage2D","uimage3D","uimageCube","image1DArray","image2DArray","iimage1DArray","iimage2DArray","uimage1DArray","uimage2DArray","image1DShadow","image2DShadow","image1DArrayShadow","image2DArrayShadow","imageBuffer","iimageBuffer","uimageBuffer","sampler1DArray","sampler1DArrayShadow","isampler1D","isampler1DArray","usampler1D","usampler1DArray","isampler2DRect","usampler2DRect","samplerBuffer","isamplerBuffer","usamplerBuffer","sampler2DMS","isampler2DMS","usampler2DMS","sampler2DMSArray","isampler2DMSArray","usampler2DMSArray"]),ui=Rr;ui=ui.slice().filter(function(o){return!/^(gl\_|texture)/.test(o)});var Xl=ui.concat(["gl_VertexID","gl_InstanceID","gl_Position","gl_PointSize","gl_FragCoord","gl_FrontFacing","gl_FragDepth","gl_PointCoord","gl_MaxVertexAttribs","gl_MaxVertexUniformVectors","gl_MaxVertexOutputVectors","gl_MaxFragmentInputVectors","gl_MaxVertexTextureImageUnits","gl_MaxCombinedTextureImageUnits","gl_MaxTextureImageUnits","gl_MaxFragmentUniformVectors","gl_MaxDrawBuffers","gl_MinProgramTexelOffset","gl_MaxProgramTexelOffset","gl_DepthRangeParameters","gl_DepthRange","trunc","round","roundEven","isnan","isinf","floatBitsToInt","floatBitsToUint","intBitsToFloat","uintBitsToFloat","packSnorm2x16","unpackSnorm2x16","packUnorm2x16","unpackUnorm2x16","packHalf2x16","unpackHalf2x16","outerProduct","transpose","determinant","inverse","texture","textureSize","textureProj","textureLod","textureOffset","texelFetch","texelFetchOffset","textureProjOffset","textureLodOffset","textureProjLod","textureProjLodOffset","textureGrad","textureGradOffset","textureProjGrad","textureProjGradOffset"]),Wl=nc,Zl=Gr,Er=Rl,ql=Rr,Kl=Yl,Ql=Xl,Qe=999,Yr=9999,fi=0,di=1,Xr=2,Wr=3,Zr=4,$t=5,Jl=6,Hl=7,$l=8,qr=9,ec=10,Kr=11,tc=["block-comment","line-comment","preprocessor","operator","integer","float","ident","builtin","keyword","whitespace","eof","integer"];function nc(o){var e=0,t=0,n=Qe,i,r,s=[],a=[],l=1,f=0,u=0,d=!1,m=!1,y="",b;o=o||{};var A=ql,_=Zl;o.version==="300 es"&&(A=Ql,_=Kl);for(var L={},I={},e=0;e<A.length;e++)L[A[e]]=!0;for(var e=0;e<_.length;e++)I[_[e]]=!0;return function(q){return a=[],q!==null?g(q):O()};function S(q){q.length&&a.push({type:tc[n],data:q,position:u,line:l,column:f})}function g(q){e=0,q.toString&&(q=q.toString()),y+=q.replace(/\r\n/g,`
|
|
248
|
+
`),b=y.length;for(var Z;i=y[e],e<b;){switch(Z=e,n){case fi:e=v();break;case di:e=w();break;case Xr:e=p();break;case Wr:e=T();break;case Zr:e=Y();break;case Kr:e=Q();break;case $t:e=$();break;case Yr:e=ee();break;case qr:e=C();break;case Qe:e=x();break}if(Z!==e)switch(y[Z]){case`
|
|
249
|
+
`:f=0,++l;break;default:++f;break}}return t+=e,y=y.slice(e),a}function O(q){return s.length&&S(s.join("")),n=ec,S("(eof)"),a}function x(){return s=s.length?[]:s,r==="/"&&i==="*"?(u=t+e-1,n=fi,r=i,e+1):r==="/"&&i==="/"?(u=t+e-1,n=di,r=i,e+1):i==="#"?(n=Xr,u=t+e,e):/\s/.test(i)?(n=qr,u=t+e,e):(d=/\d/.test(i),m=/[^\w_]/.test(i),u=t+e,n=d?Zr:m?Wr:Yr,e)}function C(){return/[^\s]/g.test(i)?(S(s.join("")),n=Qe,e):(s.push(i),r=i,e+1)}function p(){return(i==="\r"||i===`
|
|
250
|
+
`)&&r!=="\\"?(S(s.join("")),n=Qe,e):(s.push(i),r=i,e+1)}function w(){return p()}function v(){return i==="/"&&r==="*"?(s.push(i),S(s.join("")),n=Qe,e+1):(s.push(i),r=i,e+1)}function T(){if(r==="."&&/\d/.test(i))return n=$t,e;if(r==="/"&&i==="*")return n=fi,e;if(r==="/"&&i==="/")return n=di,e;if(i==="."&&s.length){for(;k(s););return n=$t,e}if(i===";"||i===")"||i==="("){if(s.length)for(;k(s););return S(i),n=Qe,e+1}var q=s.length===2&&i!=="=";if(/[\w_\d\s]/.test(i)||q){for(;k(s););return n=Qe,e}return s.push(i),r=i,e+1}function k(q){var Z=0,ie,ne;do{if(ie=Er.indexOf(q.slice(0,q.length+Z).join("")),ne=Er[ie],ie===-1){if(Z--+q.length>0)continue;ne=q.slice(0,1).join("")}return S(ne),u+=ne.length,s=s.slice(ne.length),s.length}while(!0)}function Q(){return/[^a-fA-F0-9]/.test(i)?(S(s.join("")),n=Qe,e):(s.push(i),r=i,e+1)}function Y(){return i==="."||/[eE]/.test(i)?(s.push(i),n=$t,r=i,e+1):i==="x"&&s.length===1&&s[0]==="0"?(n=Kr,s.push(i),r=i,e+1):/[^\d]/.test(i)?(S(s.join("")),n=Qe,e):(s.push(i),r=i,e+1)}function $(){return i==="f"&&(s.push(i),r=i,e+=1),/[eE]/.test(i)||(i==="-"||i==="+")&&/[eE]/.test(r)?(s.push(i),r=i,e+1):/[^\d]/.test(i)?(S(s.join("")),n=Qe,e):(s.push(i),r=i,e+1)}function ee(){if(/[^\d\w_]/.test(i)){var q=s.join("");return I[q]?n=$l:L[q]?n=Hl:n=Jl,S(s.join("")),n=Qe,e}return s.push(i),r=i,e+1}}var ic=Wl,rc=sc;function sc(o,e){var t=ic(e),n=[];return n=n.concat(t(o)),n=n.concat(t(null)),n}const oc=Ht(rc);var ac=lc;function lc(o){for(var e=[],t=0;t<o.length;t++)o[t].type!=="eof"&&e.push(o[t].data);return e.join("")}const Qr=Ht(ac);var cc=hc;function hc(o){var e=null,t=null,n=0,i=0,r=0,s=0,a=0,l=[],f,u,d;for(f=0,u;f<o.length;f++)if(d=o[f],d.data==="{"){if(n&&n++||(u=y(f,yt(")"),yt()),u<0)||(s=u,u=y(u,yt("("),yt(")")),u<0)||(a=u,u=y(u,en),u<0)||o[u].type!=="ident"||(t=o[u].data,u=y(u,en),u<0))continue;n=1,i=f,e=o[u].data,r=u;var m=y(u,en);switch(o[m]&&o[m].data){case"lowp":case"highp":case"mediump":r=m}}else if(n&&d.data==="}"){if(--n)continue;l.push({name:t,type:e,body:[i+1,f],args:[a,s+1],outer:[r,f+1]})}for(f=0;f<o.length;f++)if(d=o[f],d.data===";"){if(u=y(f,yt(")"),yt()),u<0||(s=u,u=y(u,yt("("),yt(")")),u<0)||(a=u,u=y(u,en),u<0)||o[u].type!=="ident"||(t=o[u].data,u=y(u,en),u<0)||o[u].type==="operator"||o[u].data==="return")continue;e=o[u].data,l.push({name:t,type:e,body:!1,args:[a,s+1],outer:[u,f+1]})}return l.sort(function(b,A){return b.outer[0]-A.outer[0]});function y(b,A,_){for(var L=b-1;L>=0;L--){if(A(o[L]))return L;if(_&&_(o[L]))return-1}return-1}}function yt(o){return function(e){return e.type==="operator"&&(!o||e.data===o)}}function en(o){return o.type!=="whitespace"}const uc=Ht(cc);function fc(o,e){if(typeof o!="object"||o===null)return o;var t=o[Symbol.toPrimitive];if(t!==void 0){var n=t.call(o,e||"default");if(typeof n!="object")return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return(e==="string"?String:Number)(o)}function Jr(o){var e=fc(o,"string");return typeof e=="symbol"?e:String(e)}function Se(o,e,t){return e=Jr(e),e in o?Object.defineProperty(o,e,{value:t,enumerable:!0,configurable:!0,writable:!0}):o[e]=t,o}function Hr(o,e){var t=Object.keys(o);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(o);e&&(n=n.filter(function(i){return Object.getOwnPropertyDescriptor(o,i).enumerable})),t.push.apply(t,n)}return t}function Ft(o){for(var e=1;e<arguments.length;e++){var t=arguments[e]!=null?arguments[e]:{};e%2?Hr(Object(t),!0).forEach(function(n){Se(o,n,t[n])}):Object.getOwnPropertyDescriptors?Object.defineProperties(o,Object.getOwnPropertyDescriptors(t)):Hr(Object(t)).forEach(function(n){Object.defineProperty(o,n,Object.getOwnPropertyDescriptor(t,n))})}return o}function dc(o,e){if(o==null)return{};var t={},n=Object.keys(o),i,r;for(r=0;r<n.length;r++)i=n[r],!(e.indexOf(i)>=0)&&(t[i]=o[i]);return t}function pc(o,e){if(o==null)return{};var t=dc(o,e),n,i;if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(o);for(i=0;i<r.length;i++)n=r[i],!(e.indexOf(n)>=0)&&Object.prototype.propertyIsEnumerable.call(o,n)&&(t[n]=o[n])}return t}function mc(o,e){if(!(o instanceof e))throw new TypeError("Cannot call a class as a function")}function $r(o,e){for(var t=0;t<e.length;t++){var n=e[t];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(o,Jr(n.key),n)}}function gc(o,e,t){return e&&$r(o.prototype,e),t&&$r(o,t),Object.defineProperty(o,"prototype",{writable:!1}),o}function es(o){if(o===void 0)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return o}function pi(o,e){return pi=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(n,i){return n.__proto__=i,n},pi(o,e)}function yc(o,e){if(typeof e!="function"&&e!==null)throw new TypeError("Super expression must either be null or a function");o.prototype=Object.create(e&&e.prototype,{constructor:{value:o,writable:!0,configurable:!0}}),Object.defineProperty(o,"prototype",{writable:!1}),e&&pi(o,e)}function bn(o){return bn=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(t){return t.__proto__||Object.getPrototypeOf(t)},bn(o)}function _c(){if(typeof Reflect>"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch{return!1}}function vc(o,e){if(e&&(typeof e=="object"||typeof e=="function"))return e;if(e!==void 0)throw new TypeError("Derived constructors may only return object or undefined");return es(o)}function wc(o){var e=_c();return function(){var n=bn(o),i;if(e){var r=bn(this).constructor;i=Reflect.construct(n,arguments,r)}else i=n.apply(this,arguments);return vc(this,i)}}var de={position:"csm_Position",positionRaw:"csm_PositionRaw",pointSize:"csm_PointSize",fragColor:"csm_FragColor",diffuseColor:"csm_DiffuseColor",normal:"csm_Normal",roughness:"csm_Roughness",metalness:"csm_Metalness",emissive:"csm_Emissive",ao:"csm_AO",bump:"csm_Bump",depthAlpha:"csm_DepthAlpha"},je,Bt,xc=(je={},Se(je,"".concat(de.normal),{"#include <beginnormal_vertex>":`
|
|
207
251
|
vec3 objectNormal = `.concat(de.normal,`;
|
|
208
252
|
#ifdef USE_TANGENT
|
|
209
253
|
vec3 objectTangent = vec3( tangent.xyz );
|
|
210
254
|
#endif
|
|
211
|
-
`)}),
|
|
255
|
+
`)}),Se(je,"".concat(de.position),{"#include <begin_vertex>":`
|
|
212
256
|
vec3 transformed = `.concat(de.position,`;
|
|
213
|
-
`)}),
|
|
257
|
+
`)}),Se(je,"".concat(de.positionRaw),{"#include <begin_vertex>":`
|
|
214
258
|
vec4 csm_internal_positionUnprojected = `.concat(de.positionRaw,`;
|
|
215
259
|
mat4x4 csm_internal_unprojectMatrix = projectionMatrix * modelViewMatrix;
|
|
216
260
|
#ifdef USE_INSTANCING
|
|
@@ -218,45 +262,45 @@ list should be an Array.`),P.length===0)return new v(0);if(P.length===1)return P
|
|
|
218
262
|
#endif
|
|
219
263
|
csm_internal_positionUnprojected = inverse(csm_internal_unprojectMatrix) * csm_internal_positionUnprojected;
|
|
220
264
|
vec3 transformed = csm_internal_positionUnprojected.xyz;
|
|
221
|
-
`)}),
|
|
265
|
+
`)}),Se(je,"".concat(de.pointSize),{"gl_PointSize = size;":`
|
|
222
266
|
gl_PointSize = `.concat(de.pointSize,`;
|
|
223
|
-
`)}),
|
|
267
|
+
`)}),Se(je,"".concat(de.diffuseColor),{"#include <color_fragment>":`
|
|
224
268
|
#include <color_fragment>
|
|
225
269
|
diffuseColor = `.concat(de.diffuseColor,`;
|
|
226
|
-
`)}),
|
|
270
|
+
`)}),Se(je,"".concat(de.fragColor),{"#include <dithering_fragment>":`
|
|
227
271
|
#include <dithering_fragment>
|
|
228
272
|
gl_FragColor = `.concat(de.fragColor,`;
|
|
229
|
-
`)}),
|
|
273
|
+
`)}),Se(je,"".concat(de.emissive),{"vec3 totalEmissiveRadiance = emissive;":`
|
|
230
274
|
vec3 totalEmissiveRadiance = `.concat(de.emissive,`;
|
|
231
|
-
`)}),
|
|
275
|
+
`)}),Se(je,"".concat(de.roughness),{"#include <roughnessmap_fragment>":`
|
|
232
276
|
#include <roughnessmap_fragment>
|
|
233
277
|
roughnessFactor = `.concat(de.roughness,`;
|
|
234
|
-
`)}),
|
|
278
|
+
`)}),Se(je,"".concat(de.metalness),{"#include <metalnessmap_fragment>":`
|
|
235
279
|
#include <metalnessmap_fragment>
|
|
236
280
|
metalnessFactor = `.concat(de.metalness,`;
|
|
237
|
-
`)}),
|
|
281
|
+
`)}),Se(je,"".concat(de.ao),{"#include <aomap_fragment>":`
|
|
238
282
|
#include <aomap_fragment>
|
|
239
283
|
reflectedLight.indirectDiffuse *= 1. - `.concat(de.ao,`;
|
|
240
|
-
`)}),
|
|
284
|
+
`)}),Se(je,"".concat(de.bump),{"#include <normal_fragment_maps>":`
|
|
241
285
|
#include <normal_fragment_maps>
|
|
242
286
|
|
|
243
287
|
vec3 csm_internal_orthogonal = `.concat(de.bump," - (dot(").concat(de.bump,`, normal) * normal);
|
|
244
288
|
vec3 csm_internal_projectedbump = mat3(csm_internal_vModelViewMatrix) * csm_internal_orthogonal;
|
|
245
289
|
normal = normalize(normal - csm_internal_projectedbump);
|
|
246
|
-
`)}),
|
|
290
|
+
`)}),Se(je,"".concat(de.depthAlpha),{"gl_FragColor = vec4( vec3( 1.0 - fragCoordZ ), opacity );":`
|
|
247
291
|
gl_FragColor = vec4( vec3( 1.0 - fragCoordZ ), opacity * `.concat(de.depthAlpha,` );
|
|
248
292
|
`),"gl_FragColor = packDepthToRGBA( fragCoordZ );":`
|
|
249
293
|
gl_FragColor = packDepthToRGBA( fragCoordZ );
|
|
250
294
|
gl_FragColor.a *= `.concat(de.depthAlpha,`;
|
|
251
|
-
`)}),
|
|
295
|
+
`)}),je),bc=(Bt={},Se(Bt,"".concat(de.position),{"gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );":`
|
|
252
296
|
gl_Position = projectionMatrix * modelViewMatrix * vec4( `.concat(de.position,`, 1.0 );
|
|
253
|
-
`)}),
|
|
297
|
+
`)}),Se(Bt,"".concat(de.positionRaw),{"gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );":`
|
|
254
298
|
gl_Position = `.concat(de.position,`;
|
|
255
|
-
`)}),
|
|
299
|
+
`)}),Se(Bt,"".concat(de.diffuseColor),{"gl_FragColor = vec4( 1.0, 0.0, 0.0, 1.0 );":`
|
|
256
300
|
gl_FragColor = `.concat(de.diffuseColor,`;
|
|
257
|
-
`)}),
|
|
301
|
+
`)}),Se(Bt,"".concat(de.fragColor),{"gl_FragColor = vec4( 1.0, 0.0, 0.0, 1.0 );":`
|
|
258
302
|
gl_FragColor = `.concat(de.fragColor,`;
|
|
259
|
-
`)}),
|
|
303
|
+
`)}),Bt),Mc=`
|
|
260
304
|
|
|
261
305
|
#ifdef IS_VERTEX
|
|
262
306
|
// csm_Position & csm_PositionRaw
|
|
@@ -315,18 +359,18 @@ list should be an Array.`),P.length===0)return new v(0);if(P.length===1)return P
|
|
|
315
359
|
|
|
316
360
|
float csm_DepthAlpha = 1.0;
|
|
317
361
|
#endif
|
|
318
|
-
`,
|
|
362
|
+
`,Ac=`
|
|
319
363
|
varying mat4 csm_internal_vModelViewMatrix;
|
|
320
|
-
`,
|
|
364
|
+
`,Sc=`
|
|
321
365
|
csm_internal_vModelViewMatrix = modelViewMatrix;
|
|
322
|
-
`,
|
|
366
|
+
`,Pc=`
|
|
323
367
|
varying mat4 csm_internal_vModelViewMatrix;
|
|
324
|
-
`,
|
|
368
|
+
`,Cc=`
|
|
325
369
|
|
|
326
|
-
`,
|
|
327
|
-
`+
|
|
370
|
+
`,Ge,Lc=(Ge={},Se(Ge,"".concat(de.position),"*"),Se(Ge,"".concat(de.positionRaw),"*"),Se(Ge,"".concat(de.normal),"*"),Se(Ge,"".concat(de.pointSize),["PointsMaterial"]),Se(Ge,"".concat(de.diffuseColor),"*"),Se(Ge,"".concat(de.fragColor),"*"),Se(Ge,"".concat(de.emissive),["MeshStandardMaterial","MeshPhysicalMaterial"]),Se(Ge,"".concat(de.roughness),["MeshStandardMaterial","MeshPhysicalMaterial"]),Se(Ge,"".concat(de.metalness),["MeshStandardMaterial","MeshPhysicalMaterial"]),Se(Ge,"".concat(de.ao),["MeshStandardMaterial","MeshPhysicalMaterial","MeshBasicMaterial","MeshLambertMaterial","MeshPhongMaterial","MeshToonMaterial"]),Se(Ge,"".concat(de.bump),["MeshLambertMaterial","MeshMatcapMaterial","MeshNormalMaterial","MeshPhongMaterial","MeshPhysicalMaterial","MeshStandardMaterial","MeshToonMaterial","ShadowMaterial"]),Se(Ge,"".concat(de.depthAlpha),"*"),Ge),Tc=["baseMaterial","fragmentShader","vertexShader","uniforms","patchMap","cacheKey","silent"],Oc=function(e,t,n){return e.split(t).join(n)},Ic=function(e){return e.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&")},Dc=function(e,t){return new RegExp("\\b".concat(Ic(t),"\\b")).test(e)};function kc(o){try{new o}catch(e){if(e.message.indexOf("is not a constructor")>=0)return!1}return!0}function Fc(o,e){var t=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!1;Object.assign(o,e);var n=Object.getPrototypeOf(e);Object.entries(Object.getOwnPropertyDescriptors(n)).filter(function(i){var r=typeof i[1].get=="function",s=typeof i[1].set=="function",a=typeof i[1].value=="function",l=i[0]==="constructor";return(r||s||a)&&!l}).forEach(function(i){if(typeof o[i[0]]=="function"){t||console.warn("Function ".concat(i[0]," already exists on CSM, renaming to base_").concat(i[0]));var r="base_".concat(i[0]);o[r]=i[1].value.bind(o);return}Object.defineProperty(o,i[0],i[1])})}function Bc(o){var e=o.toString().trim(),t=e.substring(e.indexOf("{")+1,e.lastIndexOf("}"));return t.trim().length===0}function ts(o){return o.replace(/\s/g,"")}function Uc(o,e,t){var n=o.lastIndexOf(e);return n===-1?o:o.substring(0,n)+t+o.substring(n+e.length)}var Nc=function(o){yc(t,o);var e=wc(t);function t(n){var i,r=n.baseMaterial,s=n.fragmentShader,a=n.vertexShader,l=n.uniforms,f=n.patchMap,u=n.cacheKey,d=n.silent,m=pc(n,Tc);mc(this,t);var y;if(kc(r)?y=new r(m):(y=r,Object.assign(y,m)),y.type==="RawShaderMaterial")throw new Error("CustomShaderMaterial does not support RawShaderMaterial");i=e.call(this),Fc(es(i),y,d),i.__csm={patchMap:f||{},fragmentShader:s||"",vertexShader:a||"",cacheKey:u,baseMaterial:r,instanceID:Pi.MathUtils.generateUUID(),type:y.type,isAlreadyExtended:!Bc(y.onBeforeCompile),cacheHash:"",silent:d},i.uniforms=Ft(Ft({},i.uniforms||{}),l||{});{var b=i.__csm,A=b.fragmentShader,_=b.vertexShader,L=i.uniforms;i.__csm.cacheHash=i.getCacheHash(),i.generateMaterial(A,_,L)}return i}return gc(t,[{key:"update",value:function(){var i=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};this.uniforms=i.uniforms||this.uniforms,Object.assign(this.__csm,i);var r=this.__csm,s=r.fragmentShader,a=r.vertexShader,l=this.uniforms,f=this.getCacheHash();this.__csm.cacheHash=f,this.generateMaterial(s,a,l)}},{key:"clone",value:function(){var i={baseMaterial:this.__csm.baseMaterial,fragmentShader:this.__csm.fragmentShader,vertexShader:this.__csm.vertexShader,uniforms:this.uniforms,silent:this.__csm.silent,patchMap:this.__csm.patchMap,cacheKey:this.__csm.cacheKey},r=new this.constructor(i);return Object.assign(this,r),r}},{key:"getCacheHash",value:function(){var i=this.__csm,r=i.fragmentShader,s=i.vertexShader,a=this.uniforms,l=Object.values(a).reduce(function(u,d){var m=d.value;return u+JSON.stringify(m)},""),f=ts(r)+ts(s)+l;return f.trim().length>0?Gl(f):this.customProgramCacheKey()}},{key:"generateMaterial",value:function(i,r,s){var a=this,l=this.parseShader(i),f=this.parseShader(r);this.uniforms=s||{},this.customProgramCacheKey=function(){return a.__csm.cacheHash};var u=function(y){try{if(l){var b=a.patchShader(l,y.fragmentShader,!0);y.fragmentShader=a.getMaterialDefine()+b}if(f){var A=a.patchShader(f,y.vertexShader);y.vertexShader=`#define IS_VERTEX;
|
|
371
|
+
`+A,y.vertexShader=a.getMaterialDefine()+y.vertexShader}y.uniforms=Ft(Ft({},y.uniforms),a.uniforms),a.uniforms=y.uniforms}catch(_){console.error(_)}};if(this.__csm.isAlreadyExtended){var d=this.onBeforeCompile;this.onBeforeCompile=function(m,y){d(m,y),u(m)}}else this.onBeforeCompile=u;this.needsUpdate=!0}},{key:"patchShader",value:function(i,r,s){var a=this,l=r,f=Ft(Ft({},this.getPatchMapForMaterial()),this.__csm.patchMap);Object.keys(f).forEach(function(m){Object.keys(f[m]).forEach(function(y){var b=Lc[m],A=a.__csm.type;if(m==="*"||Dc(i.main,m))if(!b||Array.isArray(b)&&b.includes(A)||b==="*")l=Oc(l,y,f[m][y]);else throw new Error("CSM: ".concat(m," is not available in ").concat(A,". Shader cannot compile."))})}),l=l.replace("void main() {",`
|
|
328
372
|
#ifndef CSM_IS_HEAD_DEFAULTS_DEFINED
|
|
329
|
-
`.concat(
|
|
373
|
+
`.concat(s?Pc:Ac,`
|
|
330
374
|
#define CSM_IS_HEAD_DEFAULTS_DEFINED 1
|
|
331
375
|
#endif
|
|
332
376
|
|
|
@@ -334,17 +378,17 @@ list should be an Array.`),P.length===0)return new v(0);if(P.length===1)return P
|
|
|
334
378
|
|
|
335
379
|
void main() {
|
|
336
380
|
#ifndef CSM_IS_DEFAULTS_DEFINED
|
|
337
|
-
`).concat(
|
|
381
|
+
`).concat(Mc,`
|
|
338
382
|
#define CSM_IS_DEFAULTS_DEFINED 1
|
|
339
383
|
#endif
|
|
340
384
|
|
|
341
385
|
#ifndef CSM_IS_MAIN_DEFAULTS_DEFINED
|
|
342
|
-
`).concat(
|
|
386
|
+
`).concat(s?Cc:Sc,`
|
|
343
387
|
#define CSM_IS_MAIN_DEFAULTS_DEFINED 1
|
|
344
388
|
#endif
|
|
345
389
|
|
|
346
390
|
// CSM_START
|
|
347
|
-
`));var
|
|
391
|
+
`));var u=this.__csm.isAlreadyExtended,d=l.includes("// CSM_END");return u&&d?l=Uc(l,"// CSM_END",`
|
|
348
392
|
// CSM_END
|
|
349
393
|
`.concat(i.main,`
|
|
350
394
|
// CSM_END
|
|
@@ -352,9 +396,9 @@ list should be an Array.`),P.length===0)return new v(0);if(P.length===1)return P
|
|
|
352
396
|
// CSM_START
|
|
353
397
|
`.concat(i.main,`
|
|
354
398
|
// CSM_END
|
|
355
|
-
`)),l=i.defines+l,l}},{key:"parseShader",value:function(i){if(i){var
|
|
399
|
+
`)),l=i.defines+l,l}},{key:"parseShader",value:function(i){if(i){var r=i.replace(/\/\*\*(.*?)\*\/|\/\/(.*?)\n/gm,""),s=oc(r),a=uc(s),l=a.map(function(d){return d.name}).indexOf("main"),f=Qr(s.slice(0,l>=0?a[l].outer[0]:void 0)),u=l>=0?this.getShaderFromIndex(s,a[l].body):"";return{defines:"",header:f,main:u}}}},{key:"getMaterialDefine",value:function(){var i=this.__csm.type;return i?"#define IS_".concat(i.toUpperCase(),`;
|
|
356
400
|
`):`#define IS_UNKNOWN;
|
|
357
|
-
`}},{key:"getPatchMapForMaterial",value:function(){switch(this.__csm.type){case"ShaderMaterial":return
|
|
401
|
+
`}},{key:"getPatchMapForMaterial",value:function(){switch(this.__csm.type){case"ShaderMaterial":return bc;default:return xc}}},{key:"getShaderFromIndex",value:function(i,r){return Qr(i.slice(r[0],r[1]))}}]),t}(Pi.Material);const Vc=["args"],zc=h.defineComponent({__name:"index",props:{baseMaterial:{type:Function},vertexShader:{},fragmentShader:{},silent:{type:Boolean},uniforms:{}},setup(o,{expose:e}){const t=o,n=h.shallowRef(null),{extend:i}=ae.useTresContext();return i({CustomShaderMaterial:Nc}),e({value:n}),(r,s)=>(h.openBlock(),h.createElementBlock("TresCustomShaderMaterial",{ref_key:"customShaderMaterialClass",ref:n,args:[t]},null,8,Vc))}}),jc=["args"],Gc=["color"],Rc=h.defineComponent({__name:"Box",props:{args:{default:()=>[1,1,1]},color:{default:"#ffffff"}},setup(o,{expose:e}){const t=o,{args:n,color:i}=h.toRefs(t),r=h.shallowRef();return e({value:r}),(s,a)=>(h.openBlock(),h.createElementBlock("TresMesh",h.mergeProps({ref_key:"boxRef",ref:r},s.$attrs),[h.createElementVNode("TresBoxGeometry",{args:h.unref(n)},null,8,jc),h.renderSlot(s.$slots,"default",{},()=>[h.createElementVNode("TresMeshBasicMaterial",{color:h.unref(i)},null,8,Gc)])],16))}}),ns=new c.Box3,Mn=new c.Vector3;class is extends c.InstancedBufferGeometry{constructor(){super(),this.isLineSegmentsGeometry=!0,this.type="LineSegmentsGeometry";const e=[-1,2,0,1,2,0,-1,1,0,1,1,0,-1,0,0,1,0,0,-1,-1,0,1,-1,0],t=[-1,2,1,2,-1,1,1,1,-1,-1,1,-1,-1,-2,1,-2],n=[0,2,1,2,3,1,2,4,3,4,5,3,4,6,5,6,7,5];this.setIndex(n),this.setAttribute("position",new c.Float32BufferAttribute(e,3)),this.setAttribute("uv",new c.Float32BufferAttribute(t,2))}applyMatrix4(e){const t=this.attributes.instanceStart,n=this.attributes.instanceEnd;return t!==void 0&&(t.applyMatrix4(e),n.applyMatrix4(e),t.needsUpdate=!0),this.boundingBox!==null&&this.computeBoundingBox(),this.boundingSphere!==null&&this.computeBoundingSphere(),this}setPositions(e){let t;e instanceof Float32Array?t=e:Array.isArray(e)&&(t=new Float32Array(e));const n=new c.InstancedInterleavedBuffer(t,6,1);return this.setAttribute("instanceStart",new c.InterleavedBufferAttribute(n,3,0)),this.setAttribute("instanceEnd",new c.InterleavedBufferAttribute(n,3,3)),this.computeBoundingBox(),this.computeBoundingSphere(),this}setColors(e){let t;e instanceof Float32Array?t=e:Array.isArray(e)&&(t=new Float32Array(e));const n=new c.InstancedInterleavedBuffer(t,6,1);return this.setAttribute("instanceColorStart",new c.InterleavedBufferAttribute(n,3,0)),this.setAttribute("instanceColorEnd",new c.InterleavedBufferAttribute(n,3,3)),this}fromWireframeGeometry(e){return this.setPositions(e.attributes.position.array),this}fromEdgesGeometry(e){return this.setPositions(e.attributes.position.array),this}fromMesh(e){return this.fromWireframeGeometry(new c.WireframeGeometry(e.geometry)),this}fromLineSegments(e){const t=e.geometry;return this.setPositions(t.attributes.position.array),this}computeBoundingBox(){this.boundingBox===null&&(this.boundingBox=new c.Box3);const e=this.attributes.instanceStart,t=this.attributes.instanceEnd;e!==void 0&&t!==void 0&&(this.boundingBox.setFromBufferAttribute(e),ns.setFromBufferAttribute(t),this.boundingBox.union(ns))}computeBoundingSphere(){this.boundingSphere===null&&(this.boundingSphere=new c.Sphere),this.boundingBox===null&&this.computeBoundingBox();const e=this.attributes.instanceStart,t=this.attributes.instanceEnd;if(e!==void 0&&t!==void 0){const n=this.boundingSphere.center;this.boundingBox.getCenter(n);let i=0;for(let r=0,s=e.count;r<s;r++)Mn.fromBufferAttribute(e,r),i=Math.max(i,n.distanceToSquared(Mn)),Mn.fromBufferAttribute(t,r),i=Math.max(i,n.distanceToSquared(Mn));this.boundingSphere.radius=Math.sqrt(i),isNaN(this.boundingSphere.radius)&&console.error("THREE.LineSegmentsGeometry.computeBoundingSphere(): Computed radius is NaN. The instanced position data is likely to have NaN values.",this)}}toJSON(){}applyMatrix(e){return console.warn("THREE.LineSegmentsGeometry: applyMatrix() has been renamed to applyMatrix4()."),this.applyMatrix4(e)}}c.UniformsLib.line={worldUnits:{value:1},linewidth:{value:1},resolution:{value:new c.Vector2(1,1)},dashOffset:{value:0},dashScale:{value:1},dashSize:{value:1},gapSize:{value:1}},c.ShaderLib.line={uniforms:c.UniformsUtils.merge([c.UniformsLib.common,c.UniformsLib.fog,c.UniformsLib.line]),vertexShader:`
|
|
358
402
|
#include <common>
|
|
359
403
|
#include <color_pars_vertex>
|
|
360
404
|
#include <fog_pars_vertex>
|
|
@@ -741,9 +785,9 @@ list should be an Array.`),P.length===0)return new v(0);if(P.length===1)return P
|
|
|
741
785
|
#include <premultiplied_alpha_fragment>
|
|
742
786
|
|
|
743
787
|
}
|
|
744
|
-
`};class fi extends c.ShaderMaterial{constructor(e){super({type:"LineMaterial",uniforms:c.UniformsUtils.clone(c.ShaderLib.line.uniforms),vertexShader:c.ShaderLib.line.vertexShader,fragmentShader:c.ShaderLib.line.fragmentShader,clipping:!0}),this.isLineMaterial=!0,this.setValues(e)}get color(){return this.uniforms.diffuse.value}set color(e){this.uniforms.diffuse.value=e}get worldUnits(){return"WORLD_UNITS"in this.defines}set worldUnits(e){e===!0?this.defines.WORLD_UNITS="":delete this.defines.WORLD_UNITS}get linewidth(){return this.uniforms.linewidth.value}set linewidth(e){this.uniforms.linewidth&&(this.uniforms.linewidth.value=e)}get dashed(){return"USE_DASH"in this.defines}set dashed(e){e===!0!==this.dashed&&(this.needsUpdate=!0),e===!0?this.defines.USE_DASH="":delete this.defines.USE_DASH}get dashScale(){return this.uniforms.dashScale.value}set dashScale(e){this.uniforms.dashScale.value=e}get dashSize(){return this.uniforms.dashSize.value}set dashSize(e){this.uniforms.dashSize.value=e}get dashOffset(){return this.uniforms.dashOffset.value}set dashOffset(e){this.uniforms.dashOffset.value=e}get gapSize(){return this.uniforms.gapSize.value}set gapSize(e){this.uniforms.gapSize.value=e}get opacity(){return this.uniforms.opacity.value}set opacity(e){this.uniforms&&(this.uniforms.opacity.value=e)}get resolution(){return this.uniforms.resolution.value}set resolution(e){this.uniforms.resolution.value.copy(e)}get alphaToCoverage(){return"USE_ALPHA_TO_COVERAGE"in this.defines}set alphaToCoverage(e){this.defines&&(e===!0!==this.alphaToCoverage&&(this.needsUpdate=!0),e===!0?(this.defines.USE_ALPHA_TO_COVERAGE="",this.extensions.derivatives=!0):(delete this.defines.USE_ALPHA_TO_COVERAGE,this.extensions.derivatives=!1))}}const Hs=new c.Vector3,$s=new c.Vector3,ke=new c.Vector4,Fe=new c.Vector4,He=new c.Vector4,di=new c.Vector3,pi=new c.Matrix4,Be=new c.Line3,er=new c.Vector3,xn=new c.Box3,bn=new c.Sphere,$e=new c.Vector4;let et,St;function tr(o,e,t){return $e.set(0,0,-e,1).applyMatrix4(o.projectionMatrix),$e.multiplyScalar(1/$e.w),$e.x=St/t.width,$e.y=St/t.height,$e.applyMatrix4(o.projectionMatrixInverse),$e.multiplyScalar(1/$e.w),Math.abs(Math.max($e.x,$e.y))}function kc(o,e){const t=o.matrixWorld,n=o.geometry,i=n.attributes.instanceStart,s=n.attributes.instanceEnd,r=Math.min(n.instanceCount,i.count);for(let a=0,l=r;a<l;a++){Be.start.fromBufferAttribute(i,a),Be.end.fromBufferAttribute(s,a),Be.applyMatrix4(t);const f=new c.Vector3,h=new c.Vector3;et.distanceSqToSegment(Be.start,Be.end,h,f),h.distanceTo(f)<St*.5&&e.push({point:h,pointOnLine:f,distance:et.origin.distanceTo(h),object:o,face:null,faceIndex:a,uv:null,uv1:null})}}function Fc(o,e,t){const n=e.projectionMatrix,s=o.material.resolution,r=o.matrixWorld,a=o.geometry,l=a.attributes.instanceStart,f=a.attributes.instanceEnd,h=Math.min(a.instanceCount,l.count),d=-e.near;et.at(1,He),He.w=1,He.applyMatrix4(e.matrixWorldInverse),He.applyMatrix4(n),He.multiplyScalar(1/He.w),He.x*=s.x/2,He.y*=s.y/2,He.z=0,di.copy(He),pi.multiplyMatrices(e.matrixWorldInverse,r);for(let m=0,y=h;m<y;m++){if(ke.fromBufferAttribute(l,m),Fe.fromBufferAttribute(f,m),ke.w=1,Fe.w=1,ke.applyMatrix4(pi),Fe.applyMatrix4(pi),ke.z>d&&Fe.z>d)continue;if(ke.z>d){const A=ke.z-Fe.z,g=(ke.z-d)/A;ke.lerp(Fe,g)}else if(Fe.z>d){const A=Fe.z-ke.z,g=(Fe.z-d)/A;Fe.lerp(ke,g)}ke.applyMatrix4(n),Fe.applyMatrix4(n),ke.multiplyScalar(1/ke.w),Fe.multiplyScalar(1/Fe.w),ke.x*=s.x/2,ke.y*=s.y/2,Fe.x*=s.x/2,Fe.y*=s.y/2,Be.start.copy(ke),Be.start.z=0,Be.end.copy(Fe),Be.end.z=0;const S=Be.closestPointToPointParameter(di,!0);Be.at(S,er);const v=c.MathUtils.lerp(ke.z,Fe.z,S),L=v>=-1&&v<=1,I=di.distanceTo(er)<St*.5;if(L&&I){Be.start.fromBufferAttribute(l,m),Be.end.fromBufferAttribute(f,m),Be.start.applyMatrix4(r),Be.end.applyMatrix4(r);const A=new c.Vector3,g=new c.Vector3;et.distanceSqToSegment(Be.start,Be.end,g,A),t.push({point:g,pointOnLine:A,distance:et.origin.distanceTo(g),object:o,face:null,faceIndex:m,uv:null,uv1:null})}}}class Bc extends c.Mesh{constructor(e=new Js,t=new fi({color:Math.random()*16777215})){super(e,t),this.isLineSegments2=!0,this.type="LineSegments2"}computeLineDistances(){const e=this.geometry,t=e.attributes.instanceStart,n=e.attributes.instanceEnd,i=new Float32Array(2*t.count);for(let r=0,a=0,l=t.count;r<l;r++,a+=2)Hs.fromBufferAttribute(t,r),$s.fromBufferAttribute(n,r),i[a]=a===0?0:i[a-1],i[a+1]=i[a]+Hs.distanceTo($s);const s=new c.InstancedInterleavedBuffer(i,2,1);return e.setAttribute("instanceDistanceStart",new c.InterleavedBufferAttribute(s,1,0)),e.setAttribute("instanceDistanceEnd",new c.InterleavedBufferAttribute(s,1,1)),this}raycast(e,t){const n=this.material.worldUnits,i=e.camera;i===null&&!n&&console.error('LineSegments2: "Raycaster.camera" needs to be set in order to raycast against LineSegments2 while worldUnits is set to false.');const s=e.params.Line2!==void 0&&e.params.Line2.threshold||0;et=e.ray;const r=this.matrixWorld,a=this.geometry,l=this.material;St=l.linewidth+s,a.boundingSphere===null&&a.computeBoundingSphere(),bn.copy(a.boundingSphere).applyMatrix4(r);let f;if(n)f=St*.5;else{const d=Math.max(i.near,bn.distanceToPoint(et.origin));f=tr(i,d,l.resolution)}if(bn.radius+=f,et.intersectsSphere(bn)===!1)return;a.boundingBox===null&&a.computeBoundingBox(),xn.copy(a.boundingBox).applyMatrix4(r);let h;if(n)h=St*.5;else{const d=Math.max(i.near,xn.distanceToPoint(et.origin));h=tr(i,d,l.resolution)}xn.expandByScalar(h),et.intersectsBox(xn)!==!1&&(n?kc(this,t):Fc(this,i,t))}}class nr extends Js{constructor(){super(),this.isLineGeometry=!0,this.type="LineGeometry"}setPositions(e){const t=e.length-3,n=new Float32Array(2*t);for(let i=0;i<t;i+=3)n[2*i]=e[i],n[2*i+1]=e[i+1],n[2*i+2]=e[i+2],n[2*i+3]=e[i+3],n[2*i+4]=e[i+4],n[2*i+5]=e[i+5];return super.setPositions(n),this}setColors(e){const t=e.length-3,n=new Float32Array(2*t);for(let i=0;i<t;i+=3)n[2*i]=e[i],n[2*i+1]=e[i+1],n[2*i+2]=e[i+2],n[2*i+3]=e[i+3],n[2*i+4]=e[i+4],n[2*i+5]=e[i+5];return super.setColors(n),this}fromLine(e){const t=e.geometry;return this.setPositions(t.attributes.position.array),this}}class Uc extends Bc{constructor(e=new nr,t=new fi({color:Math.random()*16777215})){super(e,t),this.isLine2=!0,this.type="Line2"}}const Nc=["object"],ir=u.defineComponent({__name:"Line2",props:{points:{},vertexColors:{default:null},color:{default:"white"},lineWidth:{default:1},worldUnits:{type:Boolean,default:!1},alphaToCoverage:{type:Boolean,default:!1},dashed:{type:Boolean,default:!1},dashSize:{default:1},gapSize:{default:1},dashScale:{default:1},dashOffset:{default:0}},setup(o){const e=o;function t(h,d){if(!h||h.length===0)return new Array(d).fill(ae.normalizeColor(e.color));if(h.length===1)return new Array(d).fill(ae.normalizeColor(h[0]));if(h.length===d)return h.map(ae.normalizeColor);const m=d-1,y=h.map(ae.normalizeColor);closed&&y.push(y[0].clone());const M=[y[0]],S=m/(y.length-1);for(let v=1;v<m;v++){const L=v%S/S,I=Math.floor(v/S);M.push(y[I].clone().lerp(y[I+1],L))}return M.push(y[y.length-1]),M}function n(h,d,m){const y=d.map(S=>S instanceof c.Vector3?[S.x,S.y,S.z]:S instanceof c.Vector2?[S.x,S.y,0]:Array.isArray(S)&&S.length===2?[S[0],S[1],0]:S).flat();h.setPositions(y.flat());const M=t(m,d.length).map(S=>S.toArray()).flat();h.setColors(M),a.computeLineDistances()}function i(h,d){h.color=ae.normalizeColor(d.color),h.linewidth=d.lineWidth,h.alphaToCoverage=d.alphaToCoverage,h.worldUnits=d.worldUnits,h.vertexColors=Array.isArray(d.vertexColors),h.dashed=d.dashed,h.dashScale=d.dashScale,h.dashSize=d.dashSize,h.dashOffset=d.dashOffset,h.gapSize=d.gapSize,h.needsUpdate=!0}const s=new fi,r=new nr,a=new Uc(r,s),l=ae.useTresContext().sizes,f=u.computed(()=>Array.isArray(e.vertexColors));return i(s,e),n(r,e.points,e.vertexColors),a.computeLineDistances(),u.watch(()=>[e.color,e.lineWidth,e.alphaToCoverage,e.worldUnits,f,e.dashed,e.dashScale,e.dashSize,e.dashOffset],()=>i(s,e)),u.watch([e.points,e.vertexColors],()=>n(r,e.points,e.vertexColors)),u.watch(()=>e.vertexColors,()=>n(r,e.points,e.vertexColors)),u.watch(()=>e.points,()=>n(r,e.points,e.vertexColors)),u.watch([l.height,l.width],()=>s.resolution=new c.Vector2(l.width.value,l.height.value)),u.onUnmounted(()=>{r.dispose(),s.dispose()}),(h,d)=>(u.openBlock(),u.createElementBlock("primitive",{object:u.unref(a)},null,8,Nc))}}),zc=u.defineComponent({__name:"CatmullRomCurve3",props:{segments:{default:20},closed:{type:Boolean,default:!1},curveType:{default:"centripetal"},tension:{default:.5},points:{},vertexColors:{},color:{},lineWidth:{},alphaToCoverage:{type:Boolean},dashed:{type:Boolean},dashSize:{},dashScale:{},dashOffset:{},gapSize:{},worldUnits:{type:Boolean}},setup(o){const e=o;function t(r,a,l,f){const h=r.map(d=>d instanceof c.Vector3?d:new c.Vector3(...d));return new c.CatmullRomCurve3(h,a,l,f)}function n(r,a){return r.getPoints(a)}const i=u.computed(()=>t(e.points,e.closed,e.curveType,e.tension)),s=u.computed(()=>n(i.value,e.segments));return(r,a)=>(u.openBlock(),u.createBlock(ir,{points:s.value,"vertex-colors":e.vertexColors,color:e.color,lineWidth:e.lineWidth,alphaToCoverage:e.alphaToCoverage,dashed:e.dashed,dashSize:e.dashSize,dashScale:e.dashScale,dashOffset:e.dashOffset,gapSize:e.gapSize,worldUnits:e.worldUnits},null,8,["points","vertex-colors","color","lineWidth","alphaToCoverage","dashed","dashSize","dashScale","dashOffset","gapSize","worldUnits"]))}}),Vc=["args"],jc=["color"],Gc=u.defineComponent({__name:"Circle",props:{args:{default:()=>[1,32,0,Math.PI*2]},color:{default:"#ffffff"}},setup(o,{expose:e}){const t=o,{args:n,color:i}=u.toRefs(t),s=u.shallowRef();return e({value:s}),(r,a)=>(u.openBlock(),u.createElementBlock("TresMesh",u.mergeProps({ref_key:"circleRef",ref:s},r.$attrs),[u.createElementVNode("TresCircleGeometry",{args:u.unref(n)},null,8,Vc),u.renderSlot(r.$slots,"default",{},()=>[u.createElementVNode("TresMeshBasicMaterial",{color:u.unref(i)},null,8,jc)])],16))}}),Rc=["args"],Ec=["color"],Yc=u.defineComponent({__name:"Cone",props:{args:{default:()=>[1,1,12,12,!1,0,Math.PI*2]},color:{default:"#ffffff"}},setup(o,{expose:e}){const t=o,{args:n,color:i}=u.toRefs(t),s=u.shallowRef();return e({value:s}),(r,a)=>(u.openBlock(),u.createElementBlock("TresMesh",u.mergeProps({ref_key:"coneRef",ref:s},r.$attrs),[u.createElementVNode("TresConeGeometry",{args:u.unref(n)},null,8,Rc),u.renderSlot(r.$slots,"default",{},()=>[u.createElementVNode("TresMeshBasicMaterial",{color:u.unref(i)},null,8,Ec)])],16))}}),Xc=["args"],Wc=["color"],Zc=u.defineComponent({__name:"Dodecahedron",props:{args:{default:()=>[1,0]},color:{default:"#ffffff"}},setup(o,{expose:e}){const t=o,{args:n,color:i}=u.toRefs(t),s=u.shallowRef();return e({value:s}),(r,a)=>(u.openBlock(),u.createElementBlock("TresMesh",u.mergeProps({ref_key:"dodecahedronRef",ref:s},r.$attrs),[u.createElementVNode("TresDodecahedronGeometry",{args:u.unref(n)},null,8,Xc),u.renderSlot(r.$slots,"default",{},()=>[u.createElementVNode("TresMeshBasicMaterial",{color:u.unref(i)},null,8,Wc)])],16))}}),qc=["args"],Kc=["color"],Qc=u.defineComponent({__name:"Icosahedron",props:{args:{default:()=>[1,0]},color:{default:"#ffffff"}},setup(o,{expose:e}){const t=o,{args:n,color:i}=u.toRefs(t),s=u.shallowRef();return e({value:s}),(r,a)=>(u.openBlock(),u.createElementBlock("TresMesh",u.mergeProps({ref_key:"icosahedronRef",ref:s},r.$attrs),[u.createElementVNode("TresIcosahedronGeometry",{args:u.unref(n)},null,8,qc),u.renderSlot(r.$slots,"default",{},()=>[u.createElementVNode("TresMeshBasicMaterial",{color:u.unref(i)},null,8,Kc)])],16))}}),Jc=["args"],Hc=["color"],$c=u.defineComponent({__name:"Octahedron",props:{args:{default:()=>[1,0]},color:{default:"#ffffff"}},setup(o,{expose:e}){const t=o,{args:n,color:i}=u.toRefs(t),s=u.shallowRef();return e({value:s}),(r,a)=>(u.openBlock(),u.createElementBlock("TresMesh",u.mergeProps({ref_key:"octahedronRef",ref:s},r.$attrs),[u.createElementVNode("TresOctahedronGeometry",{args:u.unref(n)},null,8,Jc),u.renderSlot(r.$slots,"default",{},()=>[u.createElementVNode("TresMeshBasicMaterial",{color:u.unref(i)},null,8,Hc)])],16))}}),eh=["rotation"],th=["args"],nh=["color"],ih=u.defineComponent({__name:"Plane",props:{args:{default:()=>[1,1]},color:{default:"#ffffff"}},setup(o,{expose:e}){const t=o,{args:n,color:i}=u.toRefs(t),s=u.shallowRef();return e({value:s}),(r,a)=>(u.openBlock(),u.createElementBlock("TresMesh",u.mergeProps({ref_key:"planeRef",ref:s,rotation:[-Math.PI/2,0,0]},r.$attrs),[u.createElementVNode("TresPlaneGeometry",{args:u.unref(n)},null,8,th),u.renderSlot(r.$slots,"default",{},()=>[u.createElementVNode("TresMeshBasicMaterial",{color:u.unref(i)},null,8,nh)])],16,eh))}}),sh=["args"],rh=["color"],oh=u.defineComponent({__name:"Ring",props:{args:{default:()=>[.5,1,32]},color:{default:"#ffffff"}},setup(o,{expose:e}){const t=o,{args:n,color:i}=u.toRefs(t),s=u.shallowRef();return e({value:s}),(r,a)=>(u.openBlock(),u.createElementBlock("TresMesh",u.mergeProps({ref_key:"ringRef",ref:s},r.$attrs),[u.createElementVNode("TresRingGeometry",{args:u.unref(n)},null,8,sh),u.renderSlot(r.$slots,"default",{},()=>[u.createElementVNode("TresMeshBasicMaterial",{color:u.unref(i)},null,8,rh)])],16))}}),ah=["args"],lh=["color"],ch=u.defineComponent({__name:"Sphere",props:{args:{default:()=>[2,32,16]},color:{default:"#ffffff"}},setup(o,{expose:e}){const t=o,{args:n,color:i}=u.toRefs(t),s=u.shallowRef();return e({value:s}),(r,a)=>(u.openBlock(),u.createElementBlock("TresMesh",u.mergeProps({ref_key:"sphereRef",ref:s},r.$attrs),[u.createElementVNode("TresSphereGeometry",{args:u.unref(n)},null,8,ah),u.renderSlot(r.$slots,"default",{},()=>[u.createElementVNode("TresMeshBasicMaterial",{color:u.unref(i)},null,8,lh)])],16))}}),hh=["geometry"],uh=["color"],fh=u.defineComponent({__name:"Superformula",props:{widthSegments:{default:32},heightSegments:{default:32},numArmsA:{default:4},expA:{default:()=>[40,1.3,.9]},numArmsB:{default:4},expB:{default:()=>[40,1.3,.9]},color:{default:"white"}},setup(o,{expose:e}){const t=o,{cos:n,sin:i,abs:s}=Math,r=u.shallowRef(),a=u.shallowRef(t.color);function l(m,y){const M=new c.BufferGeometry,S=m*y,v=new Float32Array(new Array(3*S).fill(0)),L=new Float32Array(new Array(3*S).fill(0)),I=[];for(let A=0;A<y-1;A++){for(let p=0;p<m-1;p++){const w=A*m+p,_=w+1,T=w+m,F=_+m;I.push(w,T,_),I.push(T,F,_)}const g=A*m+m-1,O=A*m,x=g+m,C=O+m;I.push(g,x,O),I.push(x,C,O)}return M.setIndex(I),M.setAttribute("position",new c.BufferAttribute(v,3)),M.setAttribute("normal",new c.BufferAttribute(L,3)),M}function f(m,y,M,S,v){return(s(n(y*m*.25))**S+s(i(y*m*.25))**v)**(-1/M)}function h(m,y,M,S,v,L,I,A,g,O,x){const C=2*Math.PI/O,p=-Math.PI,w=Math.PI/(x-1),_=-.5*Math.PI,T=m.getAttribute("position");let F=0,J=0,X=_;for(let ee=0;ee<x;ee++){J=p;for(let $=0;$<O;$++){const q=f(J,y,M,S,v),Z=f(X,L,I,A,g);T.setXYZ(F,q*n(J)*Z*n(X),Z*i(X),q*i(J)*Z*n(X)),F++,J+=C}X+=w}T.needsUpdate=!0,m.computeVertexNormals()}u.watch(()=>t.color,()=>a.value=t.color),u.watch(()=>[t.widthSegments,t.heightSegments],()=>{r.value&&r.value.dispose(),r.value=l(t.widthSegments,t.heightSegments)},{immediate:!0}),u.watch(()=>[t.numArmsA,t.expA[0],t.expA[1],t.expA[2],t.numArmsB,t.expB[0],t.expB[1],t.expB[2]],()=>h(r.value,t.numArmsA,t.expA[0],t.expA[1],t.expA[2],t.numArmsB,t.expB[0],t.expB[1],t.expB[2],t.widthSegments,t.heightSegments),{immediate:!0}),u.onUnmounted(()=>{r.value&&r.value.dispose()});const d=u.shallowRef();return e({value:d}),(m,y)=>(u.openBlock(),u.createElementBlock("TresMesh",u.mergeProps({ref_key:"superformulaRef",ref:d},m.$attrs,{geometry:r.value}),[u.renderSlot(m.$slots,"default",{},()=>[u.createElementVNode("TresMeshBasicMaterial",{color:a.value},null,8,uh)])],16,hh))}}),dh=["rotation"],ph=["args"],mh=["color"],gh=u.defineComponent({__name:"Tetrahedron",props:{args:{default:()=>[1,0]},color:{default:"#ffffff"}},setup(o,{expose:e}){const t=o,{args:n,color:i}=u.toRefs(t),s=u.shallowRef();return e({value:s}),(r,a)=>(u.openBlock(),u.createElementBlock("TresMesh",u.mergeProps({ref_key:"tetrahedronRef",ref:s,rotation:[-Math.PI/2,0,0]},r.$attrs),[u.createElementVNode("TresTetrahedronGeometry",{args:u.unref(n)},null,8,ph),u.renderSlot(r.$slots,"default",{},()=>[u.createElementVNode("TresMeshBasicMaterial",{color:u.unref(i)},null,8,mh)])],16,dh))}}),yh=["args"],_h=["color"],vh=u.defineComponent({__name:"Torus",props:{args:{default:()=>[1,1,16,80]},color:{default:"#ffffff"}},setup(o,{expose:e}){const t=o,{args:n,color:i}=u.toRefs(t),s=u.shallowRef();return e({value:s}),(r,a)=>(u.openBlock(),u.createElementBlock("TresMesh",u.mergeProps({ref_key:"torusRef",ref:s},r.$attrs),[u.createElementVNode("TresTorusGeometry",{args:u.unref(n)},null,8,yh),u.renderSlot(r.$slots,"default",{},()=>[u.createElementVNode("TresMeshBasicMaterial",{color:u.unref(i)},null,8,_h)])],16))}}),wh=["args"],xh=["color"],bh=u.defineComponent({__name:"TorusKnot",props:{args:{default:()=>[1,.4,64,8]},color:{default:"#ffffff"}},setup(o,{expose:e}){const t=o,{args:n,color:i}=u.toRefs(t),s=u.shallowRef();return e({value:s}),(r,a)=>(u.openBlock(),u.createElementBlock("TresMesh",u.mergeProps({ref_key:"torusKnotRef",ref:s},r.$attrs),[u.createElementVNode("TresTorusKnotGeometry",{args:u.unref(n)},null,8,wh),u.renderSlot(r.$slots,"default",{},()=>[u.createElementVNode("TresMeshBasicMaterial",{color:u.unref(i)},null,8,xh)])],16))}}),Mh=["args"],Sh=["color"],Ah=u.defineComponent({__name:"Tube",props:{args:{default:()=>[new c.QuadraticBezierCurve3(new c.Vector3(-1,0,0),new c.Vector3(0,1,0),new c.Vector3(1,0,0)),20,.2,8,!1]},color:{default:"#ffffff"}},setup(o,{expose:e}){const t=o,{args:n,color:i}=u.toRefs(t),s=u.shallowRef();return e({value:s}),(r,a)=>(u.openBlock(),u.createElementBlock("TresMesh",u.mergeProps({ref_key:"tubeRef",ref:s},r.$attrs),[u.createElementVNode("TresTubeGeometry",{args:u.unref(n)},null,8,Mh),u.renderSlot(r.$slots,"default",{},()=>[u.createElementVNode("TresMeshBasicMaterial",{color:u.unref(i)},null,8,Sh)])],16))}}),Ph=u.defineComponent({__name:"component",props:{background:{type:[Boolean,String],default:!1},blur:{default:0},files:{default:[]},path:{default:""},preset:{default:void 0}},async setup(o,{expose:e}){let t,n;const i=o,s=u.ref(null);return e(s),s.value=([t,n]=u.withAsyncContext(()=>ds(i).texture),t=await t,n(),t),()=>{}}}),Ch=["receive-shadow","rotation"],Lh=["args"],Th=u.createElementVNode("TresMeshStandardMaterial",{color:8421504,side:2},null,-1),Oh=u.defineComponent({__name:"Backdrop",props:{floor:{default:.25},segments:{default:20},receiveShadow:{type:Boolean,default:!1}},setup(o){const e=o,t=a=>a===0?0:2**(10*a-10),{floor:n,segments:i,receiveShadow:s}=u.toRefs(e),r=u.ref(null);return u.watch(()=>[i.value,n.value,r.value],([a,l,f])=>{if(!f||a===null)return;let h=0;const d=a/a/2,m=f.attributes.position;for(let y=0;y<a+1;y++)for(let M=0;M<a+1;M++)m.setXYZ(h++,y/a-d+(y===0?-l:0),M/a-d,t(y/a));m.needsUpdate=!0,f.computeVertexNormals()}),(a,l)=>(u.openBlock(),u.createElementBlock("TresGroup",u.normalizeProps(u.guardReactiveProps(a.$attrs)),[u.createElementVNode("TresMesh",{"receive-shadow":u.unref(s),rotation:[-Math.PI/2,0,Math.PI/2]},[u.createElementVNode("TresPlaneGeometry",{ref_key:"planeRef",ref:r,args:[1,1,u.unref(i),u.unref(i)]},null,8,Lh),u.renderSlot(a.$slots,"default",{},()=>[Th])],8,Ch)],16))}}),Ih=["geometry"],Dh=["map","opacity","depth-write"],kh=["object"],Fh=["args"],Bh=["rotation","args"],Uh=u.defineComponent({__name:"ContactShadows",props:{opacity:{default:1},width:{default:1},height:{default:1},blur:{default:1},far:{default:10},smooth:{type:Boolean,default:!0},resolution:{default:512},frames:{default:1/0},scale:{default:10},color:{default:"#000000"},depthWrite:{type:Boolean,default:!1},helper:{type:Boolean,default:!1}},setup(o,{expose:e}){const t=o,n=u.shallowRef(),i=u.shallowRef();e(n);let s,r,a,l,f;const{renderer:h,scene:d}=ae.useTresContext(),m=u.computed(()=>t.width*(Array.isArray(t.scale)?t.scale[0]:t.scale||1)),y=u.computed(()=>t.height*(Array.isArray(t.scale)?t.scale[1]:t.scale||1));u.watchEffect(()=>{s&&s.dispose(),r&&r.dispose(),a&&a.dispose(),l&&l.geometry.dispose(),s=new c.WebGLRenderTarget(t.resolution,t.resolution),r=new c.WebGLRenderTarget(t.resolution,t.resolution),r.texture.generateMipmaps=s.texture.generateMipmaps=!1,i.value=new c.OrthographicCamera(-m.value/2,m.value/2,y.value/2,-y.value/2,0,t.far),a=new c.PlaneGeometry(m.value,y.value).rotateX(Math.PI/2),l=new c.Mesh(a),l.visible=!1}),u.watchEffect(()=>{t.color&&(f&&f.dispose(),f=new c.MeshDepthMaterial,f.depthTest=f.depthWrite=!1,f.onBeforeCompile=O=>{O.uniforms={...O.uniforms,ucolor:{value:t.color?new c.Color(t.color):new c.Color}},O.fragmentShader=O.fragmentShader.replace("void main() {",`uniform vec3 ucolor;
|
|
788
|
+
`};class mi extends c.ShaderMaterial{constructor(e){super({type:"LineMaterial",uniforms:c.UniformsUtils.clone(c.ShaderLib.line.uniforms),vertexShader:c.ShaderLib.line.vertexShader,fragmentShader:c.ShaderLib.line.fragmentShader,clipping:!0}),this.isLineMaterial=!0,this.setValues(e)}get color(){return this.uniforms.diffuse.value}set color(e){this.uniforms.diffuse.value=e}get worldUnits(){return"WORLD_UNITS"in this.defines}set worldUnits(e){e===!0?this.defines.WORLD_UNITS="":delete this.defines.WORLD_UNITS}get linewidth(){return this.uniforms.linewidth.value}set linewidth(e){this.uniforms.linewidth&&(this.uniforms.linewidth.value=e)}get dashed(){return"USE_DASH"in this.defines}set dashed(e){e===!0!==this.dashed&&(this.needsUpdate=!0),e===!0?this.defines.USE_DASH="":delete this.defines.USE_DASH}get dashScale(){return this.uniforms.dashScale.value}set dashScale(e){this.uniforms.dashScale.value=e}get dashSize(){return this.uniforms.dashSize.value}set dashSize(e){this.uniforms.dashSize.value=e}get dashOffset(){return this.uniforms.dashOffset.value}set dashOffset(e){this.uniforms.dashOffset.value=e}get gapSize(){return this.uniforms.gapSize.value}set gapSize(e){this.uniforms.gapSize.value=e}get opacity(){return this.uniforms.opacity.value}set opacity(e){this.uniforms&&(this.uniforms.opacity.value=e)}get resolution(){return this.uniforms.resolution.value}set resolution(e){this.uniforms.resolution.value.copy(e)}get alphaToCoverage(){return"USE_ALPHA_TO_COVERAGE"in this.defines}set alphaToCoverage(e){this.defines&&(e===!0!==this.alphaToCoverage&&(this.needsUpdate=!0),e===!0?(this.defines.USE_ALPHA_TO_COVERAGE="",this.extensions.derivatives=!0):(delete this.defines.USE_ALPHA_TO_COVERAGE,this.extensions.derivatives=!1))}}const rs=new c.Vector3,ss=new c.Vector3,Fe=new c.Vector4,Be=new c.Vector4,$e=new c.Vector4,gi=new c.Vector3,yi=new c.Matrix4,Ue=new c.Line3,os=new c.Vector3,An=new c.Box3,Sn=new c.Sphere,et=new c.Vector4;let tt,St;function as(o,e,t){return et.set(0,0,-e,1).applyMatrix4(o.projectionMatrix),et.multiplyScalar(1/et.w),et.x=St/t.width,et.y=St/t.height,et.applyMatrix4(o.projectionMatrixInverse),et.multiplyScalar(1/et.w),Math.abs(Math.max(et.x,et.y))}function Ec(o,e){const t=o.matrixWorld,n=o.geometry,i=n.attributes.instanceStart,r=n.attributes.instanceEnd,s=Math.min(n.instanceCount,i.count);for(let a=0,l=s;a<l;a++){Ue.start.fromBufferAttribute(i,a),Ue.end.fromBufferAttribute(r,a),Ue.applyMatrix4(t);const f=new c.Vector3,u=new c.Vector3;tt.distanceSqToSegment(Ue.start,Ue.end,u,f),u.distanceTo(f)<St*.5&&e.push({point:u,pointOnLine:f,distance:tt.origin.distanceTo(u),object:o,face:null,faceIndex:a,uv:null,uv1:null})}}function Yc(o,e,t){const n=e.projectionMatrix,r=o.material.resolution,s=o.matrixWorld,a=o.geometry,l=a.attributes.instanceStart,f=a.attributes.instanceEnd,u=Math.min(a.instanceCount,l.count),d=-e.near;tt.at(1,$e),$e.w=1,$e.applyMatrix4(e.matrixWorldInverse),$e.applyMatrix4(n),$e.multiplyScalar(1/$e.w),$e.x*=r.x/2,$e.y*=r.y/2,$e.z=0,gi.copy($e),yi.multiplyMatrices(e.matrixWorldInverse,s);for(let m=0,y=u;m<y;m++){if(Fe.fromBufferAttribute(l,m),Be.fromBufferAttribute(f,m),Fe.w=1,Be.w=1,Fe.applyMatrix4(yi),Be.applyMatrix4(yi),Fe.z>d&&Be.z>d)continue;if(Fe.z>d){const S=Fe.z-Be.z,g=(Fe.z-d)/S;Fe.lerp(Be,g)}else if(Be.z>d){const S=Be.z-Fe.z,g=(Be.z-d)/S;Be.lerp(Fe,g)}Fe.applyMatrix4(n),Be.applyMatrix4(n),Fe.multiplyScalar(1/Fe.w),Be.multiplyScalar(1/Be.w),Fe.x*=r.x/2,Fe.y*=r.y/2,Be.x*=r.x/2,Be.y*=r.y/2,Ue.start.copy(Fe),Ue.start.z=0,Ue.end.copy(Be),Ue.end.z=0;const A=Ue.closestPointToPointParameter(gi,!0);Ue.at(A,os);const _=c.MathUtils.lerp(Fe.z,Be.z,A),L=_>=-1&&_<=1,I=gi.distanceTo(os)<St*.5;if(L&&I){Ue.start.fromBufferAttribute(l,m),Ue.end.fromBufferAttribute(f,m),Ue.start.applyMatrix4(s),Ue.end.applyMatrix4(s);const S=new c.Vector3,g=new c.Vector3;tt.distanceSqToSegment(Ue.start,Ue.end,g,S),t.push({point:g,pointOnLine:S,distance:tt.origin.distanceTo(g),object:o,face:null,faceIndex:m,uv:null,uv1:null})}}}class Xc extends c.Mesh{constructor(e=new is,t=new mi({color:Math.random()*16777215})){super(e,t),this.isLineSegments2=!0,this.type="LineSegments2"}computeLineDistances(){const e=this.geometry,t=e.attributes.instanceStart,n=e.attributes.instanceEnd,i=new Float32Array(2*t.count);for(let s=0,a=0,l=t.count;s<l;s++,a+=2)rs.fromBufferAttribute(t,s),ss.fromBufferAttribute(n,s),i[a]=a===0?0:i[a-1],i[a+1]=i[a]+rs.distanceTo(ss);const r=new c.InstancedInterleavedBuffer(i,2,1);return e.setAttribute("instanceDistanceStart",new c.InterleavedBufferAttribute(r,1,0)),e.setAttribute("instanceDistanceEnd",new c.InterleavedBufferAttribute(r,1,1)),this}raycast(e,t){const n=this.material.worldUnits,i=e.camera;i===null&&!n&&console.error('LineSegments2: "Raycaster.camera" needs to be set in order to raycast against LineSegments2 while worldUnits is set to false.');const r=e.params.Line2!==void 0&&e.params.Line2.threshold||0;tt=e.ray;const s=this.matrixWorld,a=this.geometry,l=this.material;St=l.linewidth+r,a.boundingSphere===null&&a.computeBoundingSphere(),Sn.copy(a.boundingSphere).applyMatrix4(s);let f;if(n)f=St*.5;else{const d=Math.max(i.near,Sn.distanceToPoint(tt.origin));f=as(i,d,l.resolution)}if(Sn.radius+=f,tt.intersectsSphere(Sn)===!1)return;a.boundingBox===null&&a.computeBoundingBox(),An.copy(a.boundingBox).applyMatrix4(s);let u;if(n)u=St*.5;else{const d=Math.max(i.near,An.distanceToPoint(tt.origin));u=as(i,d,l.resolution)}An.expandByScalar(u),tt.intersectsBox(An)!==!1&&(n?Ec(this,t):Yc(this,i,t))}}class ls extends is{constructor(){super(),this.isLineGeometry=!0,this.type="LineGeometry"}setPositions(e){const t=e.length-3,n=new Float32Array(2*t);for(let i=0;i<t;i+=3)n[2*i]=e[i],n[2*i+1]=e[i+1],n[2*i+2]=e[i+2],n[2*i+3]=e[i+3],n[2*i+4]=e[i+4],n[2*i+5]=e[i+5];return super.setPositions(n),this}setColors(e){const t=e.length-3,n=new Float32Array(2*t);for(let i=0;i<t;i+=3)n[2*i]=e[i],n[2*i+1]=e[i+1],n[2*i+2]=e[i+2],n[2*i+3]=e[i+3],n[2*i+4]=e[i+4],n[2*i+5]=e[i+5];return super.setColors(n),this}fromLine(e){const t=e.geometry;return this.setPositions(t.attributes.position.array),this}}class Wc extends Xc{constructor(e=new ls,t=new mi({color:Math.random()*16777215})){super(e,t),this.isLine2=!0,this.type="Line2"}}const Zc=["object"],cs=h.defineComponent({__name:"Line2",props:{points:{},vertexColors:{default:null},color:{default:"white"},lineWidth:{default:1},worldUnits:{type:Boolean,default:!1},alphaToCoverage:{type:Boolean,default:!1},dashed:{type:Boolean,default:!1},dashSize:{default:1},gapSize:{default:1},dashScale:{default:1},dashOffset:{default:0}},setup(o){const e=o;function t(u,d){if(!u||u.length===0)return new Array(d).fill(ae.normalizeColor(e.color));if(u.length===1)return new Array(d).fill(ae.normalizeColor(u[0]));if(u.length===d)return u.map(ae.normalizeColor);const m=d-1,y=u.map(ae.normalizeColor);closed&&y.push(y[0].clone());const b=[y[0]],A=m/(y.length-1);for(let _=1;_<m;_++){const L=_%A/A,I=Math.floor(_/A);b.push(y[I].clone().lerp(y[I+1],L))}return b.push(y[y.length-1]),b}function n(u,d,m){const y=d.map(A=>A instanceof c.Vector3?[A.x,A.y,A.z]:A instanceof c.Vector2?[A.x,A.y,0]:Array.isArray(A)&&A.length===2?[A[0],A[1],0]:A).flat();u.setPositions(y.flat());const b=t(m,d.length).map(A=>A.toArray()).flat();u.setColors(b),a.computeLineDistances()}function i(u,d){u.color=ae.normalizeColor(d.color),u.linewidth=d.lineWidth,u.alphaToCoverage=d.alphaToCoverage,u.worldUnits=d.worldUnits,u.vertexColors=Array.isArray(d.vertexColors),u.dashed=d.dashed,u.dashScale=d.dashScale,u.dashSize=d.dashSize,u.dashOffset=d.dashOffset,u.gapSize=d.gapSize,u.needsUpdate=!0}const r=new mi,s=new ls,a=new Wc(s,r),l=ae.useTresContext().sizes,f=h.computed(()=>Array.isArray(e.vertexColors));return i(r,e),n(s,e.points,e.vertexColors),a.computeLineDistances(),h.watch(()=>[e.color,e.lineWidth,e.alphaToCoverage,e.worldUnits,f,e.dashed,e.dashScale,e.dashSize,e.dashOffset],()=>i(r,e)),h.watch([e.points,e.vertexColors],()=>n(s,e.points,e.vertexColors)),h.watch(()=>e.vertexColors,()=>n(s,e.points,e.vertexColors)),h.watch(()=>e.points,()=>n(s,e.points,e.vertexColors)),h.watch([l.height,l.width],()=>r.resolution=new c.Vector2(l.width.value,l.height.value)),h.onUnmounted(()=>{s.dispose(),r.dispose()}),(u,d)=>(h.openBlock(),h.createElementBlock("primitive",{object:h.unref(a)},null,8,Zc))}}),qc=h.defineComponent({__name:"CatmullRomCurve3",props:{segments:{default:20},closed:{type:Boolean,default:!1},curveType:{default:"centripetal"},tension:{default:.5},points:{},vertexColors:{},color:{},lineWidth:{},alphaToCoverage:{type:Boolean},dashed:{type:Boolean},dashSize:{},dashScale:{},dashOffset:{},gapSize:{},worldUnits:{type:Boolean}},setup(o){const e=o;function t(s,a,l,f){const u=s.map(d=>d instanceof c.Vector3?d:new c.Vector3(...d));return new c.CatmullRomCurve3(u,a,l,f)}function n(s,a){return s.getPoints(a)}const i=h.computed(()=>t(e.points,e.closed,e.curveType,e.tension)),r=h.computed(()=>n(i.value,e.segments));return(s,a)=>(h.openBlock(),h.createBlock(cs,{points:r.value,"vertex-colors":e.vertexColors,color:e.color,lineWidth:e.lineWidth,alphaToCoverage:e.alphaToCoverage,dashed:e.dashed,dashSize:e.dashSize,dashScale:e.dashScale,dashOffset:e.dashOffset,gapSize:e.gapSize,worldUnits:e.worldUnits},null,8,["points","vertex-colors","color","lineWidth","alphaToCoverage","dashed","dashSize","dashScale","dashOffset","gapSize","worldUnits"]))}}),Kc=["args"],Qc=["color"],Jc=h.defineComponent({__name:"Circle",props:{args:{default:()=>[1,32,0,Math.PI*2]},color:{default:"#ffffff"}},setup(o,{expose:e}){const t=o,{args:n,color:i}=h.toRefs(t),r=h.shallowRef();return e({value:r}),(s,a)=>(h.openBlock(),h.createElementBlock("TresMesh",h.mergeProps({ref_key:"circleRef",ref:r},s.$attrs),[h.createElementVNode("TresCircleGeometry",{args:h.unref(n)},null,8,Kc),h.renderSlot(s.$slots,"default",{},()=>[h.createElementVNode("TresMeshBasicMaterial",{color:h.unref(i)},null,8,Qc)])],16))}}),Hc=["args"],$c=["color"],eh=h.defineComponent({__name:"Cone",props:{args:{default:()=>[1,1,12,12,!1,0,Math.PI*2]},color:{default:"#ffffff"}},setup(o,{expose:e}){const t=o,{args:n,color:i}=h.toRefs(t),r=h.shallowRef();return e({value:r}),(s,a)=>(h.openBlock(),h.createElementBlock("TresMesh",h.mergeProps({ref_key:"coneRef",ref:r},s.$attrs),[h.createElementVNode("TresConeGeometry",{args:h.unref(n)},null,8,Hc),h.renderSlot(s.$slots,"default",{},()=>[h.createElementVNode("TresMeshBasicMaterial",{color:h.unref(i)},null,8,$c)])],16))}}),th=["args"],nh=["color"],ih=h.defineComponent({__name:"Dodecahedron",props:{args:{default:()=>[1,0]},color:{default:"#ffffff"}},setup(o,{expose:e}){const t=o,{args:n,color:i}=h.toRefs(t),r=h.shallowRef();return e({value:r}),(s,a)=>(h.openBlock(),h.createElementBlock("TresMesh",h.mergeProps({ref_key:"dodecahedronRef",ref:r},s.$attrs),[h.createElementVNode("TresDodecahedronGeometry",{args:h.unref(n)},null,8,th),h.renderSlot(s.$slots,"default",{},()=>[h.createElementVNode("TresMeshBasicMaterial",{color:h.unref(i)},null,8,nh)])],16))}}),rh=["args"],sh=["color"],oh=h.defineComponent({__name:"Icosahedron",props:{args:{default:()=>[1,0]},color:{default:"#ffffff"}},setup(o,{expose:e}){const t=o,{args:n,color:i}=h.toRefs(t),r=h.shallowRef();return e({value:r}),(s,a)=>(h.openBlock(),h.createElementBlock("TresMesh",h.mergeProps({ref_key:"icosahedronRef",ref:r},s.$attrs),[h.createElementVNode("TresIcosahedronGeometry",{args:h.unref(n)},null,8,rh),h.renderSlot(s.$slots,"default",{},()=>[h.createElementVNode("TresMeshBasicMaterial",{color:h.unref(i)},null,8,sh)])],16))}}),ah=["args"],lh=["color"],ch=h.defineComponent({__name:"Octahedron",props:{args:{default:()=>[1,0]},color:{default:"#ffffff"}},setup(o,{expose:e}){const t=o,{args:n,color:i}=h.toRefs(t),r=h.shallowRef();return e({value:r}),(s,a)=>(h.openBlock(),h.createElementBlock("TresMesh",h.mergeProps({ref_key:"octahedronRef",ref:r},s.$attrs),[h.createElementVNode("TresOctahedronGeometry",{args:h.unref(n)},null,8,ah),h.renderSlot(s.$slots,"default",{},()=>[h.createElementVNode("TresMeshBasicMaterial",{color:h.unref(i)},null,8,lh)])],16))}}),hh=["rotation"],uh=["args"],fh=["color"],dh=h.defineComponent({__name:"Plane",props:{args:{default:()=>[1,1]},color:{default:"#ffffff"}},setup(o,{expose:e}){const t=o,{args:n,color:i}=h.toRefs(t),r=h.shallowRef();return e({value:r}),(s,a)=>(h.openBlock(),h.createElementBlock("TresMesh",h.mergeProps({ref_key:"planeRef",ref:r,rotation:[-Math.PI/2,0,0]},s.$attrs),[h.createElementVNode("TresPlaneGeometry",{args:h.unref(n)},null,8,uh),h.renderSlot(s.$slots,"default",{},()=>[h.createElementVNode("TresMeshBasicMaterial",{color:h.unref(i)},null,8,fh)])],16,hh))}}),ph=["args"],mh=["color"],gh=h.defineComponent({__name:"Ring",props:{args:{default:()=>[.5,1,32]},color:{default:"#ffffff"}},setup(o,{expose:e}){const t=o,{args:n,color:i}=h.toRefs(t),r=h.shallowRef();return e({value:r}),(s,a)=>(h.openBlock(),h.createElementBlock("TresMesh",h.mergeProps({ref_key:"ringRef",ref:r},s.$attrs),[h.createElementVNode("TresRingGeometry",{args:h.unref(n)},null,8,ph),h.renderSlot(s.$slots,"default",{},()=>[h.createElementVNode("TresMeshBasicMaterial",{color:h.unref(i)},null,8,mh)])],16))}}),yh=["args"],_h=["color"],vh=h.defineComponent({__name:"Sphere",props:{args:{default:()=>[2,32,16]},color:{default:"#ffffff"}},setup(o,{expose:e}){const t=o,{args:n,color:i}=h.toRefs(t),r=h.shallowRef();return e({value:r}),(s,a)=>(h.openBlock(),h.createElementBlock("TresMesh",h.mergeProps({ref_key:"sphereRef",ref:r},s.$attrs),[h.createElementVNode("TresSphereGeometry",{args:h.unref(n)},null,8,yh),h.renderSlot(s.$slots,"default",{},()=>[h.createElementVNode("TresMeshBasicMaterial",{color:h.unref(i)},null,8,_h)])],16))}}),wh=["geometry"],xh=["color"],bh=h.defineComponent({__name:"Superformula",props:{widthSegments:{default:32},heightSegments:{default:32},numArmsA:{default:4},expA:{default:()=>[40,1.3,.9]},numArmsB:{default:4},expB:{default:()=>[40,1.3,.9]},color:{default:"white"}},setup(o,{expose:e}){const t=o,{cos:n,sin:i,abs:r}=Math,s=h.shallowRef(),a=h.shallowRef(t.color);function l(m,y){const b=new c.BufferGeometry,A=m*y,_=new Float32Array(new Array(3*A).fill(0)),L=new Float32Array(new Array(3*A).fill(0)),I=[];for(let S=0;S<y-1;S++){for(let p=0;p<m-1;p++){const w=S*m+p,v=w+1,T=w+m,k=v+m;I.push(w,T,v),I.push(T,k,v)}const g=S*m+m-1,O=S*m,x=g+m,C=O+m;I.push(g,x,O),I.push(x,C,O)}return b.setIndex(I),b.setAttribute("position",new c.BufferAttribute(_,3)),b.setAttribute("normal",new c.BufferAttribute(L,3)),b}function f(m,y,b,A,_){return(r(n(y*m*.25))**A+r(i(y*m*.25))**_)**(-1/b)}function u(m,y,b,A,_,L,I,S,g,O,x){const C=2*Math.PI/O,p=-Math.PI,w=Math.PI/(x-1),v=-.5*Math.PI,T=m.getAttribute("position");let k=0,Q=0,Y=v;for(let $=0;$<x;$++){Q=p;for(let ee=0;ee<O;ee++){const q=f(Q,y,b,A,_),Z=f(Y,L,I,S,g);T.setXYZ(k,q*n(Q)*Z*n(Y),Z*i(Y),q*i(Q)*Z*n(Y)),k++,Q+=C}Y+=w}T.needsUpdate=!0,m.computeVertexNormals()}h.watch(()=>t.color,()=>a.value=t.color),h.watch(()=>[t.widthSegments,t.heightSegments],()=>{s.value&&s.value.dispose(),s.value=l(t.widthSegments,t.heightSegments)},{immediate:!0}),h.watch(()=>[t.numArmsA,t.expA[0],t.expA[1],t.expA[2],t.numArmsB,t.expB[0],t.expB[1],t.expB[2]],()=>u(s.value,t.numArmsA,t.expA[0],t.expA[1],t.expA[2],t.numArmsB,t.expB[0],t.expB[1],t.expB[2],t.widthSegments,t.heightSegments),{immediate:!0}),h.onUnmounted(()=>{s.value&&s.value.dispose()});const d=h.shallowRef();return e({value:d}),(m,y)=>(h.openBlock(),h.createElementBlock("TresMesh",h.mergeProps({ref_key:"superformulaRef",ref:d},m.$attrs,{geometry:s.value}),[h.renderSlot(m.$slots,"default",{},()=>[h.createElementVNode("TresMeshBasicMaterial",{color:a.value},null,8,xh)])],16,wh))}}),Mh=["rotation"],Ah=["args"],Sh=["color"],Ph=h.defineComponent({__name:"Tetrahedron",props:{args:{default:()=>[1,0]},color:{default:"#ffffff"}},setup(o,{expose:e}){const t=o,{args:n,color:i}=h.toRefs(t),r=h.shallowRef();return e({value:r}),(s,a)=>(h.openBlock(),h.createElementBlock("TresMesh",h.mergeProps({ref_key:"tetrahedronRef",ref:r,rotation:[-Math.PI/2,0,0]},s.$attrs),[h.createElementVNode("TresTetrahedronGeometry",{args:h.unref(n)},null,8,Ah),h.renderSlot(s.$slots,"default",{},()=>[h.createElementVNode("TresMeshBasicMaterial",{color:h.unref(i)},null,8,Sh)])],16,Mh))}}),Ch=["args"],Lh=["color"],Th=h.defineComponent({__name:"Torus",props:{args:{default:()=>[1,1,16,80]},color:{default:"#ffffff"}},setup(o,{expose:e}){const t=o,{args:n,color:i}=h.toRefs(t),r=h.shallowRef();return e({value:r}),(s,a)=>(h.openBlock(),h.createElementBlock("TresMesh",h.mergeProps({ref_key:"torusRef",ref:r},s.$attrs),[h.createElementVNode("TresTorusGeometry",{args:h.unref(n)},null,8,Ch),h.renderSlot(s.$slots,"default",{},()=>[h.createElementVNode("TresMeshBasicMaterial",{color:h.unref(i)},null,8,Lh)])],16))}}),Oh=["args"],Ih=["color"],Dh=h.defineComponent({__name:"TorusKnot",props:{args:{default:()=>[1,.4,64,8]},color:{default:"#ffffff"}},setup(o,{expose:e}){const t=o,{args:n,color:i}=h.toRefs(t),r=h.shallowRef();return e({value:r}),(s,a)=>(h.openBlock(),h.createElementBlock("TresMesh",h.mergeProps({ref_key:"torusKnotRef",ref:r},s.$attrs),[h.createElementVNode("TresTorusKnotGeometry",{args:h.unref(n)},null,8,Oh),h.renderSlot(s.$slots,"default",{},()=>[h.createElementVNode("TresMeshBasicMaterial",{color:h.unref(i)},null,8,Ih)])],16))}}),kh=["args"],Fh=["color"],Bh=h.defineComponent({__name:"Tube",props:{args:{default:()=>[new c.QuadraticBezierCurve3(new c.Vector3(-1,0,0),new c.Vector3(0,1,0),new c.Vector3(1,0,0)),20,.2,8,!1]},color:{default:"#ffffff"}},setup(o,{expose:e}){const t=o,{args:n,color:i}=h.toRefs(t),r=h.shallowRef();return e({value:r}),(s,a)=>(h.openBlock(),h.createElementBlock("TresMesh",h.mergeProps({ref_key:"tubeRef",ref:r},s.$attrs),[h.createElementVNode("TresTubeGeometry",{args:h.unref(n)},null,8,kh),h.renderSlot(s.$slots,"default",{},()=>[h.createElementVNode("TresMeshBasicMaterial",{color:h.unref(i)},null,8,Fh)])],16))}}),Uh=h.defineComponent({__name:"component",props:{background:{type:[Boolean,String],default:!1},blur:{default:0},files:{default:[]},path:{default:""},preset:{default:void 0}},async setup(o,{expose:e}){let t,n;const i=o,r=h.ref(null);return e(r),r.value=([t,n]=h.withAsyncContext(()=>vr(i).texture),t=await t,n(),t),()=>{}}}),Nh=["receive-shadow","rotation"],Vh=["args"],zh=h.createElementVNode("TresMeshStandardMaterial",{color:8421504,side:2},null,-1),jh=h.defineComponent({__name:"Backdrop",props:{floor:{default:.25},segments:{default:20},receiveShadow:{type:Boolean,default:!1}},setup(o){const e=o,t=a=>a===0?0:2**(10*a-10),{floor:n,segments:i,receiveShadow:r}=h.toRefs(e),s=h.ref(null);return h.watch(()=>[i.value,n.value,s.value],([a,l,f])=>{if(!f||a===null)return;let u=0;const d=a/a/2,m=f.attributes.position;for(let y=0;y<a+1;y++)for(let b=0;b<a+1;b++)m.setXYZ(u++,y/a-d+(y===0?-l:0),b/a-d,t(y/a));m.needsUpdate=!0,f.computeVertexNormals()}),(a,l)=>(h.openBlock(),h.createElementBlock("TresGroup",h.normalizeProps(h.guardReactiveProps(a.$attrs)),[h.createElementVNode("TresMesh",{"receive-shadow":h.unref(r),rotation:[-Math.PI/2,0,Math.PI/2]},[h.createElementVNode("TresPlaneGeometry",{ref_key:"planeRef",ref:s,args:[1,1,h.unref(i),h.unref(i)]},null,8,Vh),h.renderSlot(a.$slots,"default",{},()=>[zh])],8,Nh)],16))}}),Gh=["geometry"],Rh=["map","opacity","depth-write"],Eh=["object"],Yh=["args"],Xh=["rotation","args"],Wh=h.defineComponent({__name:"ContactShadows",props:{opacity:{default:1},width:{default:1},height:{default:1},blur:{default:1},far:{default:10},smooth:{type:Boolean,default:!0},resolution:{default:512},frames:{default:1/0},scale:{default:10},color:{default:"#000000"},depthWrite:{type:Boolean,default:!1},helper:{type:Boolean,default:!1}},setup(o,{expose:e}){const t=o,n=h.shallowRef(),i=h.shallowRef();e(n);let r,s,a,l,f;const{renderer:u,scene:d}=ae.useTresContext(),m=h.computed(()=>t.width*(Array.isArray(t.scale)?t.scale[0]:t.scale||1)),y=h.computed(()=>t.height*(Array.isArray(t.scale)?t.scale[1]:t.scale||1));h.watchEffect(()=>{r&&r.dispose(),s&&s.dispose(),a&&a.dispose(),l&&l.geometry.dispose(),r=new c.WebGLRenderTarget(t.resolution,t.resolution),s=new c.WebGLRenderTarget(t.resolution,t.resolution),s.texture.generateMipmaps=r.texture.generateMipmaps=!1,i.value=new c.OrthographicCamera(-m.value/2,m.value/2,y.value/2,-y.value/2,0,t.far),a=new c.PlaneGeometry(m.value,y.value).rotateX(Math.PI/2),l=new c.Mesh(a),l.visible=!1}),h.watchEffect(()=>{t.color&&(f&&f.dispose(),f=new c.MeshDepthMaterial,f.depthTest=f.depthWrite=!1,f.onBeforeCompile=O=>{O.uniforms={...O.uniforms,ucolor:{value:t.color?new c.Color(t.color):new c.Color}},O.fragmentShader=O.fragmentShader.replace("void main() {",`uniform vec3 ucolor;
|
|
745
789
|
void main() {
|
|
746
|
-
`),O.fragmentShader=O.fragmentShader.replace("vec4( vec3( 1.0 - fragCoordZ ), opacity );","vec4( ucolor * fragCoordZ * 2.0, ( 1.0 - fragCoordZ ) * 1.0 );")})});const
|
|
790
|
+
`),O.fragmentShader=O.fragmentShader.replace("vec4( vec3( 1.0 - fragCoordZ ), opacity );","vec4( ucolor * fragCoordZ * 2.0, ( 1.0 - fragCoordZ ) * 1.0 );")})});const b=new c.ShaderMaterial(ko),A=new c.ShaderMaterial(Fo);A.depthTest=b.depthTest=!1;function _(O){!u.value||!i.value||(l.visible=!0,l.material=b,b.uniforms.tDiffuse.value=r.texture,b.uniforms.h.value=O/256,u.value.setRenderTarget(s),u.value.render(l,i.value),l.material=A,A.uniforms.tDiffuse.value=s.texture,A.uniforms.v.value=O/256,u.value.setRenderTarget(r),u.value.render(l,i.value),l.visible=!1)}const{onLoop:L}=ae.useRenderLoop();let I=0,S,g;return L(()=>{!i.value||d.value===void 0||u.value===void 0||(t.frames===1/0||I<t.frames)&&(I++,S=d.value.background,g=d.value.overrideMaterial,n.value.visible=!1,d.value.background=null,d.value.overrideMaterial=f,u.value.setRenderTarget(r),u.value.render(d.value,i.value),_(t.blur),t.smooth&&_(t.blur*.4),u.value.setRenderTarget(null),n.value.visible=!0,d.value.background=S,d.value.overrideMaterial=g)}),(O,x)=>(h.openBlock(),h.createElementBlock("TresGroup",h.mergeProps({ref_key:"groupRef",ref:n},O.$attrs),[h.createElementVNode("TresMesh",{scale:[1,-1,1],geometry:h.unref(a)},[h.createElementVNode("TresMeshBasicMaterial",{map:h.unref(r).texture,opacity:O.opacity,"depth-write":O.depthWrite,transparent:!0},null,8,Rh)],8,Gh),h.createElementVNode("primitive",{object:h.unref(l)},null,8,Eh),i.value&&O.helper?(h.openBlock(),h.createElementBlock("TresCameraHelper",{key:0,args:[i.value]},null,8,Yh)):h.createCommentVNode("",!0),h.createElementVNode("TresOrthographicCamera",{ref_key:"shadowCamera",ref:i,position:[0,0,0],rotation:[Math.PI/2,0,0],args:[-m.value/2,m.value/2,y.value/2,-y.value/2,0,O.far]},null,8,Xh)],16))}}),Zh=["size","color","alpha-map","map","opacity","alpha-test","depth-write","transparent","size-attenuation"],qh=["position","velocity"],Kh=h.defineComponent({__name:"Precipitation",props:{size:{default:.1},area:{default:()=>[10,10,20]},color:{default:16777215},map:{},alphaMap:{},alphaTest:{default:.01},opacity:{default:.8},count:{default:5e3},speed:{default:.1},randomness:{default:.5},depthWrite:{type:Boolean,default:!1},transparent:{type:Boolean,default:!0},sizeAttenuation:{type:Boolean,default:!0}},setup(o){const e=o,{size:t,area:n,color:i,alphaMap:r,map:s,opacity:a,alphaTest:l,depthWrite:f,transparent:u,sizeAttenuation:d,count:m,speed:y,randomness:b}=h.toRefs(e),A=h.shallowRef();let _=[],L=[];const I=()=>{_=new Float32Array(m.value*3);for(let O=0;O<m.value;O++){const x=O*3;_[x]=(Math.random()-.5)*n.value[0],_[x+1]=(Math.random()-.5)*n.value[1],_[x+2]=(Math.random()-.5)*n.value[2]}},S=()=>{L=new Float32Array(m.value*2);for(let O=0;O<m.value*2;O+=2)L[O]=(Math.random()-.5)/5*y.value*b.value,L[O+1]=Math.random()/5*y.value+.01};S(),I(),h.watchEffect(()=>{S(),I()});const{onLoop:g}=ae.useRenderLoop();return g(()=>{var O,x;if((O=A.value)!=null&&O.attributes.position.array&&((x=A.value)!=null&&x.attributes.position.count)){const C=A.value.attributes.position.array;for(let p=0;p<A.value.attributes.position.count;p++){const w=L[p*2],v=L[p*2+1];C[p*3]+=w,C[p*3+1]-=v,(C[p*3]<=-n.value[0]/2||C[p*3]>=n.value[0]/2)&&(C[p*3]=C[p*3]*-1),(C[p*3+1]<=-n.value[1]/2||C[p*3+1]>=n.value[1]/2)&&(C[p*3+1]=C[p*3+1]*-1)}A.value.attributes.position.needsUpdate=!0}}),(O,x)=>(h.openBlock(),h.createElementBlock("TresPoints",null,[h.createElementVNode("TresPointsMaterial",{size:h.unref(t),color:h.unref(i),"alpha-map":h.unref(r),map:h.unref(s),opacity:h.unref(a),"alpha-test":h.unref(l),"depth-write":h.unref(f),transparent:h.unref(u),"size-attenuation":h.unref(d)},null,8,Zh),h.createElementVNode("TresBufferGeometry",{ref_key:"geometryRef",ref:A,position:[h.unref(_),3],velocity:[h.unref(L)]},null,8,qh)]))}});class Pn extends c.Mesh{constructor(){const e=Pn.SkyShader,t=new c.ShaderMaterial({name:e.name,uniforms:c.UniformsUtils.clone(e.uniforms),vertexShader:e.vertexShader,fragmentShader:e.fragmentShader,side:c.BackSide,depthWrite:!1});super(new c.BoxGeometry(1,1,1),t),this.isSky=!0}}Pn.SkyShader={name:"SkyShader",uniforms:{turbidity:{value:2},rayleigh:{value:1},mieCoefficient:{value:.005},mieDirectionalG:{value:.8},sunPosition:{value:new c.Vector3},up:{value:new c.Vector3(0,1,0)}},vertexShader:`
|
|
747
791
|
uniform vec3 sunPosition;
|
|
748
792
|
uniform float rayleigh;
|
|
749
793
|
uniform float turbidity;
|
|
@@ -896,7 +940,7 @@ list should be an Array.`),P.length===0)return new v(0);if(P.length===1)return P
|
|
|
896
940
|
#include <tonemapping_fragment>
|
|
897
941
|
#include <colorspace_fragment>
|
|
898
942
|
|
|
899
|
-
}`};const jh=["object","material-uniforms-turbidity-value","material-uniforms-rayleigh-value","material-uniforms-mieCoefficient-value","material-uniforms-mieDirectionalG-value","material-uniforms-sunPosition-value","scale"],Gh=u.defineComponent({__name:"Sky",props:{turbidity:{default:3.4},rayleigh:{default:3},mieCoefficient:{default:.005},mieDirectionalG:{default:.7},elevation:{default:.6},azimuth:{default:180},distance:{default:45e4}},setup(o){const e=o,t=new Mn,n=u.computed(()=>i(e.azimuth,e.elevation));function i(s,r){const a=c.MathUtils.degToRad(90-r),l=c.MathUtils.degToRad(s);return new c.Vector3().setFromSphericalCoords(1,a,l)}return(s,r)=>(u.openBlock(),u.createElementBlock("primitive",{object:u.unref(t),"material-uniforms-turbidity-value":e.turbidity,"material-uniforms-rayleigh-value":e.rayleigh,"material-uniforms-mieCoefficient-value":e.mieCoefficient,"material-uniforms-mieDirectionalG-value":e.mieDirectionalG,"material-uniforms-sunPosition-value":n.value,scale:e.distance},null,8,jh))}}),Rh=["position"],Eh=["position"],Yh=["scale"],Xh=["map","depth-test","color-space","color","opacity"],Wh=u.defineComponent({__name:"Smoke",props:{color:{default:"#ffffff"},opacity:{default:.5},speed:{default:.4},width:{default:10},depth:{default:1.5},segments:{default:20},texture:{default:"https://raw.githubusercontent.com/Tresjs/assets/main/textures/clouds/defaultCloud.png"},depthTest:{type:Boolean,default:!0}},async setup(o,{expose:e}){let t,n;const i=o,{width:s,depth:r,segments:a,texture:l,color:f,depthTest:h,opacity:d,speed:m}=u.toRefs(i),y=u.shallowRef(),M=u.shallowRef();e({value:y});const S=[...new Array(a)].map((x,C)=>({x:s.value/2-Math.random()*s.value,y:s.value/2-Math.random()*s.value,scale:.4+Math.sin((C+1)/a.value*Math.PI)*((.2+Math.random())*10),density:Math.max(.2,Math.random()),rotation:Math.max(.002,.005*Math.random())*m.value})),v=(x,C)=>x/6*C*d.value,{map:L}=([t,n]=u.withAsyncContext(()=>ae.useTexture({map:l.value})),t=await t,n(),t),{renderer:I,camera:A}=ae.useTresContext(),g=u.computed(()=>{var x;return(x=I.value)==null?void 0:x.outputColorSpace}),{onLoop:O}=ae.useRenderLoop();return O(()=>{var x,C;y.value&&A.value&&M.value&&((x=M.value)==null||x.children.forEach((p,w)=>{p.rotation.z+=S[w].rotation}),y.value.lookAt((C=A.value)==null?void 0:C.position))}),(x,C)=>(u.openBlock(),u.createElementBlock("TresGroup",u.mergeProps({ref_key:"smokeRef",ref:y},x.$attrs),[u.createElementVNode("TresGroup",{ref_key:"groupRef",ref:M,position:[0,0,u.unref(a)/2*u.unref(r)]},[(u.openBlock(!0),u.createElementBlock(u.Fragment,null,u.renderList(u.unref(S),({scale:p,x:w,y:_,density:T},F)=>(u.openBlock(),u.createElementBlock("TresMesh",{key:`${F}`,position:[w,_,-F*u.unref(r)]},[u.createElementVNode("TresPlaneGeometry",{scale:[p,p,p],rotation:[0,0,0]},null,8,Yh),u.createElementVNode("TresMeshStandardMaterial",{map:u.unref(L),"depth-test":u.unref(h),"color-space":g.value,color:u.unref(f),"depth-write":!1,transparent:"",opacity:v(p,T)},null,8,Xh)],8,Eh))),128))],8,Rh)],16))}});function Zh(o){return gi(o,{normalizeValue:e=>ae.normalizeColor(e),getDefaultValue:()=>new c.Color(0,0,0),isSingleValue:e=>!Array.isArray(e),isMultipleValues:e=>Array.isArray(e)&&(e.length===0||!Array.isArray(e[0])),isMultipleValuesWithStops:e=>Array.isArray(e)&&e.length>0&&Array.isArray(e[0]),isEmpty:e=>Array.isArray(e)&&e.length===0})}function mi(o){return"isVector3"in o||Array.isArray(o)&&o.length>0&&o.every(e=>typeof e=="number")}function qh(o){return gi(o,{normalizeValue:e=>ae.normalizeVectorFlexibleParam(e),getDefaultValue:()=>[0,0,0],isSingleValue:e=>mi(e),isMultipleValues:e=>Array.isArray(e)&&e.length>0&&mi(e[0]),isMultipleValuesWithStops:e=>Array.isArray(e)&&e.length>0&&Array.isArray(e[0])&&e[0].length===2&&mi(e[0][1]),isEmpty:e=>Array.isArray(e)&&e.length===0})}function Kh(o){return gi(o,{normalizeValue:e=>e,getDefaultValue:()=>1,isSingleValue:e=>!Array.isArray(e)&&typeof e<"u",isMultipleValues:e=>Array.isArray(e)&&(e.length===0||!Array.isArray(e[0])),isMultipleValuesWithStops:e=>Array.isArray(e)&&e.length>0&&Array.isArray(e[0]),isEmpty:e=>Array.isArray(e)&&e.length===0})}function gi(o,e){const{normalizeValue:t,getDefaultValue:n,isEmpty:i}=e,s=l=>e.isSingleValue(l),r=l=>e.isMultipleValues(l),a=l=>e.isMultipleValuesWithStops(l);if(i(o))return[[0,n()]];if(s(o))return[[0,t(o)]];if(r(o)){const l=o.length>1?1/(o.length-1):1;return o.map((f,h)=>[l*h,t(f)])}else if(a(o))return o.map(([l,f],h)=>[l,t(f)]);return[[0,n()]]}class Qh{constructor(e,t){ye(this,"entries");ye(this,"resolution");this.entries=e,this.resolution=t}useTexture(){return new $h(this.entries,this.resolution).use()}}class yi{constructor(e,t,n,i,s,r){ye(this,"data");ye(this,"ref");ye(this,"name");ye(this,"valueMin");ye(this,"valueMax");ye(this,"suffix");ye(this,"renderToCanvasGradient");this.data=u.isRef(e)?e.value:e,this.ref=u.isRef(e)?e:null,this.name=t,this.valueMin=n,this.valueMax=i,this.suffix=s,this.renderToCanvasGradient=r}}class Jh extends yi{constructor(e,t="color",n=0,i=1,s="rgba",r=eu){super(e,t,n,i,s,r)}}class sr extends yi{constructor(e,t="scalar",n=0,i=1,s="x",r=tu){super(e,t,n,i,s,r)}}class Hh extends yi{constructor(e,t="scalar3",n=0,i=1,s="xyz",r=nu){super(e,t,n,i,s,r)}}class $h{constructor(e,t){ye(this,"entries");ye(this,"size");ye(this,"dirty",u.shallowRef(0));ye(this,"context");this.entries=e,this.size=Math.max(t,e.length);const n=document.createElement("canvas");n.height=this.size,n.width=this.size,this.context=n.getContext("2d")}use(){const e=this.build(),t=u.shallowRef(e);for(const n of this.entries)n.ref&&u.watch(n.ref,()=>{var i;n.data=(i=n.ref)==null?void 0:i.value,u.triggerRef(this.dirty)});return da(this.dirty,()=>{this.build(e),t.value=e},{throttle:1e3/60}),{texture:t,dispose:()=>e.dispose(),yFor:this.entries.reduce((n,i,s)=>(n[i.name]=(s+.5)/this.size,n),{})}}build(e){this.entries.forEach((n,i)=>{const s=this.context.createLinearGradient(0,i,this.size,i);n.renderToCanvasGradient(s,n),this.context.fillStyle=s,this.context.fillRect(0,i,this.size,1)}),e&&(e.source.data=this.context.getImageData(0,0,this.size,this.size));const t=e??new c.DataTexture(this.context.getImageData(0,0,this.size,this.size).data,this.size,this.size,c.RGBAFormat,c.UnsignedByteType,c.UVMapping,c.ClampToEdgeWrapping,c.ClampToEdgeWrapping);return t.needsUpdate=!0,t}}function rr(o,e,t,n,i){return bl(dt(o,e,t),e,t,n,i)}function eu(o,e){return Zh(e.data).forEach(([t,n])=>o.addColorStop(t,`rgb(${n.r*255}, ${n.g*255}, ${n.b*255})`))}function tu(o,e){return Kh(e.data).forEach(([t,n])=>{o.addColorStop(t,`rgb(${rr(n,e.valueMin,e.valueMax,0,255)}, 0, 0)`)})}function nu(o,e){return qh(e.data).forEach(([t,n])=>o.addColorStop(t,`rgb(${n.map(i=>rr(i,e.valueMin,e.valueMax,0,255))})`))}class iu{constructor(e=256){ye(this,"entries");ye(this,"resolution");this.resolution=e,this.entries=[]}withResolution(e){return this.resolution=e,this}get add(){return new ru(e=>this.onAdd(e))}build(){return new Qh(this.entries,this.resolution)}onAdd(e){return this.entries.push(e),new su(e,this)}}class su{constructor(e,t){ye(this,"entry");ye(this,"parent");this.entry=e,this.parent=t}id(e){return this.entry.name=e,this}range(e,t){return this.entry.valueMin=e,this.entry.valueMax=t,this}suffix(e){return this.entry.suffix=e,this}canvasGradientRenderer(e){return this.entry.renderToCanvasGradient=e,this}get add(){return this.parent.add}build(){return this.parent.build()}}class ru{constructor(e){ye(this,"onAdd");this.onAdd=e}GradientTresColor(e){return this.onAdd(new Jh(e))}Gradient01(e){return this.onAdd(new sr(e,"zeroOne",0,1))}GradientScalar(e,t,n){return this.onAdd(new sr(e,"scalar",t,n))}GradientXyz(e,t,n){return this.onAdd(new Hh(e,"position",t,n))}}let _i=null;function ou(){return _i===null&&(_i=new c.DataTexture(new Uint8Array([0,0,0,0]),1,1)),_i}const au=["object"],lu=u.defineComponent({__name:"component",props:{map:{default:"https://raw.githubusercontent.com/Tresjs/assets/e41a93c56ec7cb5ac2d241f309e23582a5fe1fc6/textures/sparkles/particle.png"},geometry:{default:void 0},directionalLight:{default:void 0},lifetimeSec:{default:.4},cooldownSec:{default:2},normalThreshold:{default:.7},noiseScale:{default:3},scaleNoise:{default:1},offsetNoise:{default:.1},lifetimeNoise:{default:0},size:{default:1},alpha:{default:1},offset:{default:1},surfaceDistance:{default:1},sequenceColor:{default:()=>[[.7,"#82dbc5"],[.8,"#fbb03b"]]},sequenceAlpha:{default:()=>[[0,0],[.1,1],[.5,1],[.9,0]]},sequenceOffset:{default:()=>[0,0,0]},sequenceNoise:{default:()=>[.1,.1,.1]},sequenceSize:{default:()=>[0,1]},sequenceSurfaceDistance:{default:()=>[.05,.08,.1]},mixColor:{default:.5},mixAlpha:{default:1},mixOffset:{default:1},mixSize:{default:0},mixSurfaceDistance:{default:1},mixNoise:{default:1},blending:{default:c.AdditiveBlending},transparent:{type:Boolean,default:!0},depthWrite:{type:Boolean,default:!1}},setup(o){const e=o,t=parseInt(c.REVISION.replace(/\D+/g,"")),n=u.toRefs(e),i=typeof e.map=="string"?ou():e.map,{texture:s,yFor:r}=new iu(256).add.GradientTresColor(n.sequenceColor).id("sequenceColor").add.Gradient01(n.sequenceAlpha).id("sequenceAlpha").add.Gradient01(n.sequenceSurfaceDistance).id("sequenceSurfaceDistance").add.Gradient01(n.sequenceSize).id("sequenceSize").add.GradientXyz(n.sequenceOffset,-1,1).id("sequenceOffset").add.GradientXyz(n.sequenceNoise,0,1).id("sequenceNoise").build().useTexture(),a={blending:e.blending,transparent:e.transparent,depthWrite:e.depthWrite,uniforms:{uMap:new c.Uniform(i),uPixelRatio:new c.Uniform(1),uNormal:new c.Uniform(c.Object3D.DEFAULT_UP),uNormalThreshold:new c.Uniform(e.normalThreshold),uTime:new c.Uniform(0),uCooldownRatio:new c.Uniform(1),uSize:new c.Uniform(e.size),uAlpha:new c.Uniform(e.alpha),uOffset:new c.Uniform(e.offset),uSurfaceDistance:new c.Uniform(e.surfaceDistance),uNoiseScale:new c.Uniform(e.noiseScale),uScaleNoise:new c.Uniform(e.scaleNoise),uOffsetNoise:new c.Uniform(e.offsetNoise),uLifetimeNoise:new c.Uniform(e.lifetimeNoise),uMixColor:new c.Uniform(e.mixColor),uMixAlpha:new c.Uniform(e.mixAlpha),uMixOffset:new c.Uniform(e.mixOffset),uMixSize:new c.Uniform(e.mixSize),uMixSurfaceDistance:new c.Uniform(e.mixSurfaceDistance),uMixNoise:new c.Uniform(e.mixNoise),uInfoTexture:new c.Uniform(s.value)},vertexShader:`
|
|
943
|
+
}`};const Qh=["object","material-uniforms-turbidity-value","material-uniforms-rayleigh-value","material-uniforms-mieCoefficient-value","material-uniforms-mieDirectionalG-value","material-uniforms-sunPosition-value","scale"],Jh=h.defineComponent({__name:"Sky",props:{turbidity:{default:3.4},rayleigh:{default:3},mieCoefficient:{default:.005},mieDirectionalG:{default:.7},elevation:{default:.6},azimuth:{default:180},distance:{default:45e4}},setup(o){const e=o,t=new Pn,n=h.computed(()=>i(e.azimuth,e.elevation));function i(r,s){const a=c.MathUtils.degToRad(90-s),l=c.MathUtils.degToRad(r);return new c.Vector3().setFromSphericalCoords(1,a,l)}return(r,s)=>(h.openBlock(),h.createElementBlock("primitive",{object:h.unref(t),"material-uniforms-turbidity-value":e.turbidity,"material-uniforms-rayleigh-value":e.rayleigh,"material-uniforms-mieCoefficient-value":e.mieCoefficient,"material-uniforms-mieDirectionalG-value":e.mieDirectionalG,"material-uniforms-sunPosition-value":n.value,scale:e.distance},null,8,Qh))}}),Hh=["position"],$h=["position"],eu=["scale"],tu=["map","depth-test","color-space","color","opacity"],nu=h.defineComponent({__name:"Smoke",props:{color:{default:"#ffffff"},opacity:{default:.5},speed:{default:.4},width:{default:10},depth:{default:1.5},segments:{default:20},texture:{default:"https://raw.githubusercontent.com/Tresjs/assets/main/textures/clouds/defaultCloud.png"},depthTest:{type:Boolean,default:!0}},async setup(o,{expose:e}){let t,n;const i=o,{width:r,depth:s,segments:a,texture:l,color:f,depthTest:u,opacity:d,speed:m}=h.toRefs(i),y=h.shallowRef(),b=h.shallowRef();e({value:y});const A=[...new Array(a)].map((x,C)=>({x:r.value/2-Math.random()*r.value,y:r.value/2-Math.random()*r.value,scale:.4+Math.sin((C+1)/a.value*Math.PI)*((.2+Math.random())*10),density:Math.max(.2,Math.random()),rotation:Math.max(.002,.005*Math.random())*m.value})),_=(x,C)=>x/6*C*d.value,{map:L}=([t,n]=h.withAsyncContext(()=>ae.useTexture({map:l.value})),t=await t,n(),t),{renderer:I,camera:S}=ae.useTresContext(),g=h.computed(()=>{var x;return(x=I.value)==null?void 0:x.outputColorSpace}),{onLoop:O}=ae.useRenderLoop();return O(()=>{var x,C;y.value&&S.value&&b.value&&((x=b.value)==null||x.children.forEach((p,w)=>{p.rotation.z+=A[w].rotation}),y.value.lookAt((C=S.value)==null?void 0:C.position))}),(x,C)=>(h.openBlock(),h.createElementBlock("TresGroup",h.mergeProps({ref_key:"smokeRef",ref:y},x.$attrs),[h.createElementVNode("TresGroup",{ref_key:"groupRef",ref:b,position:[0,0,h.unref(a)/2*h.unref(s)]},[(h.openBlock(!0),h.createElementBlock(h.Fragment,null,h.renderList(h.unref(A),({scale:p,x:w,y:v,density:T},k)=>(h.openBlock(),h.createElementBlock("TresMesh",{key:`${k}`,position:[w,v,-k*h.unref(s)]},[h.createElementVNode("TresPlaneGeometry",{scale:[p,p,p],rotation:[0,0,0]},null,8,eu),h.createElementVNode("TresMeshStandardMaterial",{map:h.unref(L),"depth-test":h.unref(u),"color-space":g.value,color:h.unref(f),"depth-write":!1,transparent:"",opacity:_(p,T)},null,8,tu)],8,$h))),128))],8,Hh)],16))}});function iu(o){return vi(o,{normalizeValue:e=>ae.normalizeColor(e),getDefaultValue:()=>new c.Color(0,0,0),isSingleValue:e=>!Array.isArray(e),isMultipleValues:e=>Array.isArray(e)&&(e.length===0||!Array.isArray(e[0])),isMultipleValuesWithStops:e=>Array.isArray(e)&&e.length>0&&Array.isArray(e[0]),isEmpty:e=>Array.isArray(e)&&e.length===0})}function _i(o){return"isVector3"in o||Array.isArray(o)&&o.length>0&&o.every(e=>typeof e=="number")}function ru(o){return vi(o,{normalizeValue:e=>ae.normalizeVectorFlexibleParam(e),getDefaultValue:()=>[0,0,0],isSingleValue:e=>_i(e),isMultipleValues:e=>Array.isArray(e)&&e.length>0&&_i(e[0]),isMultipleValuesWithStops:e=>Array.isArray(e)&&e.length>0&&Array.isArray(e[0])&&e[0].length===2&&_i(e[0][1]),isEmpty:e=>Array.isArray(e)&&e.length===0})}function su(o){return vi(o,{normalizeValue:e=>e,getDefaultValue:()=>1,isSingleValue:e=>!Array.isArray(e)&&typeof e<"u",isMultipleValues:e=>Array.isArray(e)&&(e.length===0||!Array.isArray(e[0])),isMultipleValuesWithStops:e=>Array.isArray(e)&&e.length>0&&Array.isArray(e[0]),isEmpty:e=>Array.isArray(e)&&e.length===0})}function vi(o,e){const{normalizeValue:t,getDefaultValue:n,isEmpty:i}=e,r=l=>e.isSingleValue(l),s=l=>e.isMultipleValues(l),a=l=>e.isMultipleValuesWithStops(l);if(i(o))return[[0,n()]];if(r(o))return[[0,t(o)]];if(s(o)){const l=o.length>1?1/(o.length-1):1;return o.map((f,u)=>[l*u,t(f)])}else if(a(o))return o.map(([l,f],u)=>[l,t(f)]);return[[0,n()]]}class ou{constructor(e,t){ye(this,"entries");ye(this,"resolution");this.entries=e,this.resolution=t}useTexture(){return new cu(this.entries,this.resolution).use()}}class wi{constructor(e,t,n,i,r,s){ye(this,"data");ye(this,"ref");ye(this,"name");ye(this,"valueMin");ye(this,"valueMax");ye(this,"suffix");ye(this,"renderToCanvasGradient");this.data=h.isRef(e)?e.value:e,this.ref=h.isRef(e)?e:null,this.name=t,this.valueMin=n,this.valueMax=i,this.suffix=r,this.renderToCanvasGradient=s}}class au extends wi{constructor(e,t="color",n=0,i=1,r="rgba",s=hu){super(e,t,n,i,r,s)}}class hs extends wi{constructor(e,t="scalar",n=0,i=1,r="x",s=uu){super(e,t,n,i,r,s)}}class lu extends wi{constructor(e,t="scalar3",n=0,i=1,r="xyz",s=fu){super(e,t,n,i,r,s)}}class cu{constructor(e,t){ye(this,"entries");ye(this,"size");ye(this,"dirty",h.shallowRef(0));ye(this,"context");this.entries=e,this.size=Math.max(t,e.length);const n=document.createElement("canvas");n.height=this.size,n.width=this.size,this.context=n.getContext("2d")}use(){const e=this.build(),t=h.shallowRef(e);for(const n of this.entries)n.ref&&h.watch(n.ref,()=>{var i;n.data=(i=n.ref)==null?void 0:i.value,h.triggerRef(this.dirty)});return ba(this.dirty,()=>{this.build(e),t.value=e},{throttle:1e3/60}),{texture:t,dispose:()=>e.dispose(),yFor:this.entries.reduce((n,i,r)=>(n[i.name]=(r+.5)/this.size,n),{})}}build(e){this.entries.forEach((n,i)=>{const r=this.context.createLinearGradient(0,i,this.size,i);n.renderToCanvasGradient(r,n),this.context.fillStyle=r,this.context.fillRect(0,i,this.size,1)}),e&&(e.source.data=this.context.getImageData(0,0,this.size,this.size));const t=e??new c.DataTexture(this.context.getImageData(0,0,this.size,this.size).data,this.size,this.size,c.RGBAFormat,c.UnsignedByteType,c.UVMapping,c.ClampToEdgeWrapping,c.ClampToEdgeWrapping);return t.needsUpdate=!0,t}}function us(o,e,t,n,i){return Dl(pt(o,e,t),e,t,n,i)}function hu(o,e){return iu(e.data).forEach(([t,n])=>o.addColorStop(t,`rgb(${n.r*255}, ${n.g*255}, ${n.b*255})`))}function uu(o,e){return su(e.data).forEach(([t,n])=>{o.addColorStop(t,`rgb(${us(n,e.valueMin,e.valueMax,0,255)}, 0, 0)`)})}function fu(o,e){return ru(e.data).forEach(([t,n])=>o.addColorStop(t,`rgb(${n.map(i=>us(i,e.valueMin,e.valueMax,0,255))})`))}class du{constructor(e=256){ye(this,"entries");ye(this,"resolution");this.resolution=e,this.entries=[]}withResolution(e){return this.resolution=e,this}get add(){return new mu(e=>this.onAdd(e))}build(){return new ou(this.entries,this.resolution)}onAdd(e){return this.entries.push(e),new pu(e,this)}}class pu{constructor(e,t){ye(this,"entry");ye(this,"parent");this.entry=e,this.parent=t}id(e){return this.entry.name=e,this}range(e,t){return this.entry.valueMin=e,this.entry.valueMax=t,this}suffix(e){return this.entry.suffix=e,this}canvasGradientRenderer(e){return this.entry.renderToCanvasGradient=e,this}get add(){return this.parent.add}build(){return this.parent.build()}}class mu{constructor(e){ye(this,"onAdd");this.onAdd=e}GradientTresColor(e){return this.onAdd(new au(e))}Gradient01(e){return this.onAdd(new hs(e,"zeroOne",0,1))}GradientScalar(e,t,n){return this.onAdd(new hs(e,"scalar",t,n))}GradientXyz(e,t,n){return this.onAdd(new lu(e,"position",t,n))}}let xi=null;function gu(){return xi===null&&(xi=new c.DataTexture(new Uint8Array([0,0,0,0]),1,1)),xi}const yu=["object"],_u=h.defineComponent({__name:"component",props:{map:{default:"https://raw.githubusercontent.com/Tresjs/assets/e41a93c56ec7cb5ac2d241f309e23582a5fe1fc6/textures/sparkles/particle.png"},geometry:{default:void 0},directionalLight:{default:void 0},lifetimeSec:{default:.4},cooldownSec:{default:2},normalThreshold:{default:.7},noiseScale:{default:3},scaleNoise:{default:1},offsetNoise:{default:.1},lifetimeNoise:{default:0},size:{default:1},alpha:{default:1},offset:{default:1},surfaceDistance:{default:1},sequenceColor:{default:()=>[[.7,"#82dbc5"],[.8,"#fbb03b"]]},sequenceAlpha:{default:()=>[[0,0],[.1,1],[.5,1],[.9,0]]},sequenceOffset:{default:()=>[0,0,0]},sequenceNoise:{default:()=>[.1,.1,.1]},sequenceSize:{default:()=>[0,1]},sequenceSurfaceDistance:{default:()=>[.05,.08,.1]},mixColor:{default:.5},mixAlpha:{default:1},mixOffset:{default:1},mixSize:{default:0},mixSurfaceDistance:{default:1},mixNoise:{default:1},blending:{default:c.AdditiveBlending},transparent:{type:Boolean,default:!0},depthWrite:{type:Boolean,default:!1}},setup(o){const e=o,t=parseInt(c.REVISION.replace(/\D+/g,"")),n=h.toRefs(e),i=typeof e.map=="string"?gu():e.map,{texture:r,yFor:s}=new du(256).add.GradientTresColor(n.sequenceColor).id("sequenceColor").add.Gradient01(n.sequenceAlpha).id("sequenceAlpha").add.Gradient01(n.sequenceSurfaceDistance).id("sequenceSurfaceDistance").add.Gradient01(n.sequenceSize).id("sequenceSize").add.GradientXyz(n.sequenceOffset,-1,1).id("sequenceOffset").add.GradientXyz(n.sequenceNoise,0,1).id("sequenceNoise").build().useTexture(),a={blending:e.blending,transparent:e.transparent,depthWrite:e.depthWrite,uniforms:{uMap:new c.Uniform(i),uPixelRatio:new c.Uniform(1),uNormal:new c.Uniform(c.Object3D.DEFAULT_UP),uNormalThreshold:new c.Uniform(e.normalThreshold),uTime:new c.Uniform(0),uCooldownRatio:new c.Uniform(1),uSize:new c.Uniform(e.size),uAlpha:new c.Uniform(e.alpha),uOffset:new c.Uniform(e.offset),uSurfaceDistance:new c.Uniform(e.surfaceDistance),uNoiseScale:new c.Uniform(e.noiseScale),uScaleNoise:new c.Uniform(e.scaleNoise),uOffsetNoise:new c.Uniform(e.offsetNoise),uLifetimeNoise:new c.Uniform(e.lifetimeNoise),uMixColor:new c.Uniform(e.mixColor),uMixAlpha:new c.Uniform(e.mixAlpha),uMixOffset:new c.Uniform(e.mixOffset),uMixSize:new c.Uniform(e.mixSize),uMixSurfaceDistance:new c.Uniform(e.mixSurfaceDistance),uMixNoise:new c.Uniform(e.mixNoise),uInfoTexture:new c.Uniform(r.value)},vertexShader:`
|
|
900
944
|
uniform float uPixelRatio;
|
|
901
945
|
uniform vec3 uNormal;
|
|
902
946
|
uniform float uNormalThreshold;
|
|
@@ -931,15 +975,15 @@ list should be an Array.`),P.length===0)return new v(0);if(P.length===1)return P
|
|
|
931
975
|
float lifetimeP = max(-0.0001, mix(-uCooldownRatio, 1. + cos(t) * lifetimeNoise, fract(t)));
|
|
932
976
|
float surfaceDistance = texture2D(uInfoTexture, vec2(
|
|
933
977
|
mix(normalP, lifetimeP, uMixSurfaceDistance),
|
|
934
|
-
${
|
|
978
|
+
${s.sequenceSurfaceDistance})).x * uSurfaceDistance;
|
|
935
979
|
|
|
936
980
|
vec4 modelPosition = modelMatrix * (vec4(position, 1.0) + vec4(normal * surfaceDistance, 0.0));
|
|
937
981
|
vec3 noise = texture2D(uInfoTexture, vec2(
|
|
938
982
|
mix(normalP, lifetimeP, uMixNoise),
|
|
939
|
-
${
|
|
983
|
+
${s.sequenceNoise})).xyz;
|
|
940
984
|
vec3 offset = uOffset * (texture2D(uInfoTexture, vec2(
|
|
941
985
|
mix(normalP, lifetimeP, uMixOffset),
|
|
942
|
-
${
|
|
986
|
+
${s.sequenceOffset})).xyz * 2.0 - vec3(1.0, 1.0, 1.0));
|
|
943
987
|
modelPosition.x += cos(t * uNoiseScale * 10.0) * 0.2 * uOffsetNoise * noise.x + offset.x;
|
|
944
988
|
modelPosition.y += sin(t * uNoiseScale * 10.0) * 0.2 * uOffsetNoise * noise.y + offset.y;
|
|
945
989
|
modelPosition.z += cos(t * uNoiseScale * 10.0) * 0.2 * uOffsetNoise * noise.z + offset.z;
|
|
@@ -949,14 +993,14 @@ list should be an Array.`),P.length===0)return new v(0);if(P.length===1)return P
|
|
|
949
993
|
gl_Position = projectionPostion;
|
|
950
994
|
|
|
951
995
|
gl_PointSize = 2.
|
|
952
|
-
* texture2D(uInfoTexture, vec2(mix(normalP, lifetimeP, uMixSize), ${
|
|
996
|
+
* texture2D(uInfoTexture, vec2(mix(normalP, lifetimeP, uMixSize), ${s.sequenceSize})).x
|
|
953
997
|
* mix(1., abs(sin(t * uNoiseScale + position.x * 13.9 + position.y * 73.1)), uScaleNoise)
|
|
954
998
|
* uSize * (100.0 / -viewPosition.z) * uPixelRatio;
|
|
955
999
|
|
|
956
1000
|
if (gl_PointSize < 0.6 || lifetimeP < 0.0) { gl_Position = vec4(2, 2, 2, 1); }
|
|
957
1001
|
|
|
958
|
-
vColor = texture2D(uInfoTexture, vec2(mix(normalP, lifetimeP, uMixColor), ${
|
|
959
|
-
* texture2D(uInfoTexture, vec2(mix(normalP, lifetimeP, uMixAlpha), ${
|
|
1002
|
+
vColor = texture2D(uInfoTexture, vec2(mix(normalP, lifetimeP, uMixColor), ${s.sequenceColor}))
|
|
1003
|
+
* texture2D(uInfoTexture, vec2(mix(normalP, lifetimeP, uMixAlpha), ${s.sequenceAlpha})).x * uAlpha;
|
|
960
1004
|
}`,fragmentShader:`
|
|
961
1005
|
varying vec4 vColor;
|
|
962
1006
|
|
|
@@ -967,7 +1011,7 @@ list should be an Array.`),P.length===0)return new v(0);if(P.length===1)return P
|
|
|
967
1011
|
gl_FragColor = vColor * texture2D(uMap, gl_PointCoord);
|
|
968
1012
|
#include <tonemapping_fragment>
|
|
969
1013
|
#include <${t>=154?"colorspace_fragment":"encodings_fragment"}>
|
|
970
|
-
}`},l=new c.ShaderMaterial(a),f=new c.Points(void 0,l),h=l.uniforms,d={immediate:!0};[[h.uPixelRatio,ae.useTresContext().sizes.aspectRatio],[h.uSize,n.size],[h.uNormalThreshold,n.normalThreshold],[h.uAlpha,n.alpha],[h.uOffset,n.offset],[h.uOffsetNoise,n.offsetNoise],[h.uMixColor,n.mixColor],[h.uMixAlpha,n.mixAlpha],[h.uMixOffset,n.mixOffset],[h.uMixSize,n.mixSize],[h.uMixSurfaceDistance,n.mixSurfaceDistance],[h.uMixNoise,n.mixNoise],[h.uInfoTexture,s]].forEach(([I,A])=>u.watch(A,()=>{I.value=A.value},d)),u.watch([n.noiseScale,n.lifetimeSec],()=>{h.uNoiseScale.value=n.noiseScale.value*n.lifetimeSec.value},d),u.watch([n.lifetimeSec,n.cooldownSec],()=>{h.uCooldownRatio.value=n.cooldownSec.value/n.lifetimeSec.value},d),u.watch(n.map,()=>{typeof n.map.value=="string"?ae.useTexture([n.map.value]).then(I=>l.uniforms.uMap.value=I):l.uniforms.uMap.value=n.map.value});const y=new c.Quaternion,M=new c.Vector3;ae.useRenderLoop().onLoop(({elapsed:I})=>{f.getWorldQuaternion(y),M.copy(e.directionalLight?e.directionalLight.position:c.Object3D.DEFAULT_UP).normalize(),M.applyQuaternion(y.invert()),l.uniforms.uNormal.value=M,l.uniforms.uTime.value=I/(e.cooldownSec+e.lifetimeSec)});function S(I){return I&&"isObject3D"in I}function v(I){return I&&"isBufferGeometry"in I}u.onMounted(()=>{e.geometry?v(e.geometry)?f.geometry.copy(e.geometry):S(e.geometry)&&"geometry"in e.geometry&&v(e.geometry.geometry)&&f.geometry.copy(e.geometry.geometry):S(f.parent)&&"geometry"in f.parent&&v(f.parent.geometry)?f.geometry.copy(f.parent.geometry):f.geometry=new c.IcosahedronGeometry(1,16),typeof e.map=="string"&&ae.useTexture([e.map]).then(I=>l.uniforms.uMap.value=I)}),u.onUnmounted(()=>{var I;(I=l.uniforms.uMap.value)==null||I.dispose(),s.value.dispose(),l.dispose()});const L=u.shallowRef();return(I,A)=>(u.openBlock(),u.createElementBlock("primitive",{ref_key:"sparkleRef",ref:L,object:u.unref(f)},null,8,au))}}),cu=["position","a-scale"],hu=["size","size-attenuation","transparent","alpha-test","alpha-map"],uu=u.defineComponent({__name:"Stars",props:{size:{default:.1},sizeAttenuation:{type:Boolean,default:!0},transparent:{type:Boolean,default:!0},alphaTest:{default:.01},count:{default:5e3},depth:{default:50},radius:{default:100},alphaMap:{default:null}},setup(o,{expose:e}){const t=o,n=u.ref(),i=u.ref(),{radius:s,depth:r,count:a,size:l,sizeAttenuation:f,transparent:h,alphaMap:d,alphaTest:m}=u.toRefs(t),y=()=>{let S=s.value+r.value;const v=u.computed(()=>r.value/a.value),L=[],I=Array.from({length:a.value},()=>(.5+.5*Math.random())*4),A=g=>new c.Vector3().setFromSpherical(new c.Spherical(g,Math.acos(1-Math.random()*2),Math.random()*2*Math.PI)).toArray();for(let g=0;g<a.value;g++)S-=v.value*Math.random(),L.push(...A(S));n.value=new Float32Array(L),i.value=new Float32Array(I)};u.watchEffect(()=>{y()});const M=u.shallowRef();return e({value:M}),(S,v)=>(u.openBlock(),u.createElementBlock("TresPoints",{ref_key:"starsRef",ref:M},[u.createElementVNode("TresBufferGeometry",{position:[n.value,3],"a-scale":[i.value,1]},null,8,cu),u.createElementVNode("TresPointsMaterial",{size:u.unref(l),"size-attenuation":u.unref(f),transparent:u.unref(h),"alpha-test":u.unref(m),"alpha-map":u.unref(d)},null,8,hu)],512))}});let nt;const fu=(o="body")=>{nt||(nt=new mr.Pane({container:document.querySelector(o)}),nt.element.style.position="absolute",nt.element.style.top="1rem",nt.element.style.right="1rem",nt.element.style.zIndex="9999");const{logWarning:e}=Wn();e("useTweakPane is going to be deprecated soon and will no longer be part of this package, please start migrating to @tresjs/leches package https://github.com/Tresjs/leches or v-tweakpane https://github.com/vinayakkulkarni/v-tweakpane instead.");function t(){nt&&nt.dispose()}return u.onMounted(()=>{const{resume:n}=ae.useRenderLoop();n()}),u.onUnmounted(()=>{t()}),{pane:nt,disposeTweakPane:t}};var or={exports:{}};(function(o,e){(function(t,n){o.exports=n()})(Tl,function(){var t=function(){function n(y){return r.appendChild(y.dom),y}function i(y){for(var M=0;M<r.children.length;M++)r.children[M].style.display=M===y?"block":"none";s=y}var s=0,r=document.createElement("div");r.style.cssText="position:fixed;top:0;left:0;cursor:pointer;opacity:0.9;z-index:10000",r.addEventListener("click",function(y){y.preventDefault(),i(++s%r.children.length)},!1);var a=(performance||Date).now(),l=a,f=0,h=n(new t.Panel("FPS","#0ff","#002")),d=n(new t.Panel("MS","#0f0","#020"));if(self.performance&&self.performance.memory)var m=n(new t.Panel("MB","#f08","#201"));return i(0),{REVISION:16,dom:r,addPanel:n,showPanel:i,begin:function(){a=(performance||Date).now()},end:function(){f++;var y=(performance||Date).now();if(d.update(y-a,200),y>l+1e3&&(h.update(1e3*f/(y-l),100),l=y,f=0,m)){var M=performance.memory;m.update(M.usedJSHeapSize/1048576,M.jsHeapSizeLimit/1048576)}return y},update:function(){a=this.end()},domElement:r,setMode:i}};return t.Panel=function(n,i,s){var r=1/0,a=0,l=Math.round,f=l(window.devicePixelRatio||1),h=80*f,d=48*f,m=3*f,y=2*f,M=3*f,S=15*f,v=74*f,L=30*f,I=document.createElement("canvas");I.width=h,I.height=d,I.style.cssText="width:80px;height:48px";var A=I.getContext("2d");return A.font="bold "+9*f+"px Helvetica,Arial,sans-serif",A.textBaseline="top",A.fillStyle=s,A.fillRect(0,0,h,d),A.fillStyle=i,A.fillText(n,m,y),A.fillRect(M,S,v,L),A.fillStyle=s,A.globalAlpha=.9,A.fillRect(M,S,v,L),{dom:I,update:function(g,O){r=Math.min(r,g),a=Math.max(a,g),A.fillStyle=s,A.globalAlpha=1,A.fillRect(0,0,h,S),A.fillStyle=i,A.fillText(l(g)+" "+n+" ("+l(r)+"-"+l(a)+")",m,y),A.drawImage(I,M+f,S,v-f,L,M,S,v-f,L),A.fillRect(M+v-f,S,f,L),A.fillStyle=s,A.globalAlpha=.9,A.fillRect(M+v-f,S,f,l((1-g/O)*L))}}},t})})(or);var du=or.exports;const pu=Kt(du),mu=u.defineComponent({name:"Stats",props:{showPanel:{type:Number,default:0}},setup(o,{expose:e}){const t=new pu;e({stats:t});const n=document.body;t.showPanel(o.showPanel||0),n==null||n.appendChild(t.dom);const{onBeforeLoop:i,onAfterLoop:s,resume:r}=ae.useRenderLoop();return r(),i(()=>t.begin()),s(()=>t.end()),u.onUnmounted(()=>{n==null||n.removeChild(t.dom)}),null}});class gu{constructor(e,t,n){this.name=e,this.fg=t,this.bg=n,this.PR=Math.round(window.devicePixelRatio||1),this.WIDTH=90*this.PR,this.HEIGHT=48*this.PR,this.TEXT_X=3*this.PR,this.TEXT_Y=2*this.PR,this.GRAPH_X=3*this.PR,this.GRAPH_Y=15*this.PR,this.GRAPH_WIDTH=84*this.PR,this.GRAPH_HEIGHT=30*this.PR,this.canvas=document.createElement("canvas"),this.canvas.width=90*this.PR,this.canvas.height=48*this.PR,this.canvas.style.width="90px",this.canvas.style.position="absolute",this.canvas.style.height="48px",this.canvas.style.cssText="width:90px;height:48px",this.context=this.canvas.getContext("2d"),this.context&&(this.context.font="bold "+9*this.PR+"px Helvetica,Arial,sans-serif",this.context.textBaseline="top",this.context.fillStyle=this.bg,this.context.fillRect(0,0,this.WIDTH,this.HEIGHT),this.context.fillStyle=this.fg,this.context.fillText(this.name,this.TEXT_X,this.TEXT_Y),this.context.fillRect(this.GRAPH_X,this.GRAPH_Y,this.GRAPH_WIDTH,this.GRAPH_HEIGHT),this.context.fillStyle=this.bg,this.context.globalAlpha=.9,this.context.fillRect(this.GRAPH_X,this.GRAPH_Y,this.GRAPH_WIDTH,this.GRAPH_HEIGHT))}update(e,t,n,i,s=0){let r=1/0,a=0;this.context&&(r=Math.min(r,e),a=Math.max(n,e),i=Math.max(i,t),this.context.fillStyle=this.bg,this.context.globalAlpha=1,this.context.fillRect(0,0,this.WIDTH,this.GRAPH_Y),this.context.fillStyle=this.fg,this.context.fillText(e.toFixed(s)+" "+this.name+" ("+r.toFixed(s)+"-"+parseFloat(a.toFixed(s))+")",this.TEXT_X,this.TEXT_Y),this.context.drawImage(this.canvas,this.GRAPH_X+this.PR,this.GRAPH_Y,this.GRAPH_WIDTH-this.PR,this.GRAPH_HEIGHT,this.GRAPH_X,this.GRAPH_Y,this.GRAPH_WIDTH-this.PR,this.GRAPH_HEIGHT),this.context.fillRect(this.GRAPH_X+this.GRAPH_WIDTH-this.PR,this.GRAPH_Y,this.PR,this.GRAPH_HEIGHT),this.context.fillStyle=this.bg,this.context.globalAlpha=.9,this.context.fillRect(this.GRAPH_X+this.GRAPH_WIDTH-this.PR,this.GRAPH_Y,this.PR,(1-t/i)*this.GRAPH_HEIGHT))}}const ar=class Cn{constructor({logsPerSecond:e=20,samplesLog:t=100,samplesGraph:n=10,precision:i=2,minimal:s=!1,horizontal:r=!0,mode:a=0}={}){this.mode=a,this.horizontal=r,this.container=document.createElement("div"),this.container.style.cssText="position:fixed;top:0;left:0;opacity:0.9;z-index:10000;",s&&(this.container.style.cssText+="cursor:pointer"),this.canvasGpu=null,this.gl=null,this.query=null,this.minimal=s,this.beginTime=(performance||Date).now(),this.prevTime=this.beginTime,this.prevCpuTime=this.beginTime,this.frames=0,this.averageCpu={logs:[],graph:[]},this.averageGpu={logs:[],graph:[]},this.queryCreated=!1,this.fpsPanel=this.addPanel(new Cn.Panel("FPS","#0ff","#002"),0),this.msPanel=this.addPanel(new Cn.Panel("CPU","#0f0","#020"),1),this.gpuPanel=null,this.samplesLog=t,this.samplesGraph=n,this.precision=i,this.logsPerSecond=e,this.minimal?(this.container.addEventListener("click",l=>{l.preventDefault(),this.showPanel(++this.mode%this.container.children.length)},!1),this.mode=a,this.showPanel(this.mode)):window.addEventListener("resize",()=>{this.resizePanel(this.fpsPanel,0),this.resizePanel(this.msPanel,1),this.gpuPanel&&this.resizePanel(this.gpuPanel,2)})}resizePanel(e,t){e.canvas.style.position="absolute",this.minimal?e.canvas.style.display="none":(e.canvas.style.display="block",this.horizontal?(e.canvas.style.top="0px",e.canvas.style.left=t*e.WIDTH/e.PR+"px"):(e.canvas.style.left="0px",e.canvas.style.top=t*e.HEIGHT/e.PR+"px"))}addPanel(e,t){return e.canvas&&(this.container.appendChild(e.canvas),this.resizePanel(e,t)),e}showPanel(e){for(let t=0;t<this.container.children.length;t++){const n=this.container.children[t];n.style.display=t===e?"block":"none"}this.mode=e}init(e){this.canvasGpu=e,this.canvasGpu&&(this.gl=this.canvasGpu.getContext("webgl2"),this.ext=this.gl?this.gl.getExtension("EXT_disjoint_timer_query_webgl2"):null,this.ext&&(this.gpuPanel=this.addPanel(new Cn.Panel("GPU","#ff0","#220"),2)))}begin(){if(this.beginProfiling("cpu-started"),!(!this.gl||!this.ext)){if(this.query){const e=this.gl.getQueryParameter(this.query,this.gl.QUERY_RESULT_AVAILABLE);if(this.disjoint=this.gl.getParameter(this.ext.GPU_DISJOINT_EXT),e&&!this.disjoint){this.ns=this.gl.getQueryParameter(this.query,this.gl.QUERY_RESULT);const t=this.ns*1e-6;(e||this.disjoint)&&(this.gl.deleteQuery(this.query),this.query=null),e&&this.addToAverage(t,this.averageGpu)}}this.query||(this.queryCreated=!0,this.query=this.gl.createQuery(),this.query&&this.gl.beginQuery(this.ext.TIME_ELAPSED_EXT,this.query))}}end(){this.beginTime=this.endInternal(),this.endProfiling("cpu-started","cpu-finished","cpu-duration",this.averageCpu),!(!this.gl||!this.ext)&&this.queryCreated&&this.gl.getQuery(this.ext.TIME_ELAPSED_EXT,this.gl.CURRENT_QUERY)&&this.gl.endQuery(this.ext.TIME_ELAPSED_EXT)}endInternal(){this.frames++;const e=(performance||Date).now();if(e>=this.prevCpuTime+1e3/this.logsPerSecond&&(this.updatePanel(this.msPanel,this.averageCpu),this.updatePanel(this.gpuPanel,this.averageGpu),this.prevCpuTime=e),e>=this.prevTime+1e3){const t=this.frames*1e3/(e-this.prevTime);this.fpsPanel.update(t,t,100,100,0),this.prevTime=e,this.frames=0}return e}addToAverage(e,t){t.logs.push(e),t.logs.length>this.samplesLog&&t.logs.shift(),t.graph.push(e),t.graph.length>this.samplesGraph&&t.graph.shift()}beginProfiling(e){window.performance&&window.performance.mark(e)}endProfiling(e,t,n,i){if(window.performance&&t){window.performance.mark(t);const s=performance.measure(n,e,t);this.addToAverage(s.duration,i)}}updatePanel(e,t){if(t.logs.length>0){let n=0,i=.01;for(let a=0;a<t.logs.length;a++)n+=t.logs[a],t.logs[a]>i&&(i=t.logs[a]);let s=0,r=.01;for(let a=0;a<t.graph.length;a++)s+=t.graph[a],t.graph[a]>r&&(r=t.graph[a]);e&&e.update(n/Math.min(t.logs.length,this.samplesLog),s/Math.min(t.graph.length,this.samplesGraph),i,r,this.precision)}}};ar.Panel=gu;let yu=ar;const _u=u.defineComponent({name:"StatsGl",props:["logsPerSecond","samplesLog","samplesGraph","precision","horizontal","minimal","mode"],async setup(o,{expose:e}){const t=new yu({logsPerSecond:o.logsPerSecond,samplesLog:o.samplesLog,samplesGraph:o.samplesGraph,precision:o.precision,horizontal:o.horizontal,minimal:o.minimal,mode:o.mode});e({statsGl:t});const n=document.body;n==null||n.appendChild(t.container);const{renderer:i}=ae.useTresContext(),{onBeforeLoop:s,onAfterLoop:r,resume:a}=ae.useRenderLoop();return t.init(i.value.domElement),a(),s(()=>t.begin()),r(()=>t.end()),u.onUnmounted(()=>{n==null||n.removeChild(t.container)}),null}});var vu=`#include <common>
|
|
1014
|
+
}`},l=new c.ShaderMaterial(a),f=new c.Points(void 0,l),u=l.uniforms,d={immediate:!0};[[u.uPixelRatio,ae.useTresContext().sizes.aspectRatio],[u.uSize,n.size],[u.uNormalThreshold,n.normalThreshold],[u.uAlpha,n.alpha],[u.uOffset,n.offset],[u.uOffsetNoise,n.offsetNoise],[u.uMixColor,n.mixColor],[u.uMixAlpha,n.mixAlpha],[u.uMixOffset,n.mixOffset],[u.uMixSize,n.mixSize],[u.uMixSurfaceDistance,n.mixSurfaceDistance],[u.uMixNoise,n.mixNoise],[u.uInfoTexture,r]].forEach(([I,S])=>h.watch(S,()=>{I.value=S.value},d)),h.watch([n.noiseScale,n.lifetimeSec],()=>{u.uNoiseScale.value=n.noiseScale.value*n.lifetimeSec.value},d),h.watch([n.lifetimeSec,n.cooldownSec],()=>{u.uCooldownRatio.value=n.cooldownSec.value/n.lifetimeSec.value},d),h.watch(n.map,()=>{typeof n.map.value=="string"?ae.useTexture([n.map.value]).then(I=>l.uniforms.uMap.value=I):l.uniforms.uMap.value=n.map.value});const y=new c.Quaternion,b=new c.Vector3;ae.useRenderLoop().onLoop(({elapsed:I})=>{f.getWorldQuaternion(y),b.copy(e.directionalLight?e.directionalLight.position:c.Object3D.DEFAULT_UP).normalize(),b.applyQuaternion(y.invert()),l.uniforms.uNormal.value=b,l.uniforms.uTime.value=I/(e.cooldownSec+e.lifetimeSec)});function A(I){return I&&"isObject3D"in I}function _(I){return I&&"isBufferGeometry"in I}h.onMounted(()=>{e.geometry?_(e.geometry)?f.geometry.copy(e.geometry):A(e.geometry)&&"geometry"in e.geometry&&_(e.geometry.geometry)&&f.geometry.copy(e.geometry.geometry):A(f.parent)&&"geometry"in f.parent&&_(f.parent.geometry)?f.geometry.copy(f.parent.geometry):f.geometry=new c.IcosahedronGeometry(1,16),typeof e.map=="string"&&ae.useTexture([e.map]).then(I=>l.uniforms.uMap.value=I)}),h.onUnmounted(()=>{var I;(I=l.uniforms.uMap.value)==null||I.dispose(),r.value.dispose(),l.dispose()});const L=h.shallowRef();return(I,S)=>(h.openBlock(),h.createElementBlock("primitive",{ref_key:"sparkleRef",ref:L,object:h.unref(f)},null,8,yu))}}),vu=["position","a-scale"],wu=["size","size-attenuation","transparent","alpha-test","alpha-map"],xu=h.defineComponent({__name:"Stars",props:{size:{default:.1},sizeAttenuation:{type:Boolean,default:!0},transparent:{type:Boolean,default:!0},alphaTest:{default:.01},count:{default:5e3},depth:{default:50},radius:{default:100},alphaMap:{default:null}},setup(o,{expose:e}){const t=o,n=h.ref(),i=h.ref(),{radius:r,depth:s,count:a,size:l,sizeAttenuation:f,transparent:u,alphaMap:d,alphaTest:m}=h.toRefs(t),y=()=>{let A=r.value+s.value;const _=h.computed(()=>s.value/a.value),L=[],I=Array.from({length:a.value},()=>(.5+.5*Math.random())*4),S=g=>new c.Vector3().setFromSpherical(new c.Spherical(g,Math.acos(1-Math.random()*2),Math.random()*2*Math.PI)).toArray();for(let g=0;g<a.value;g++)A-=_.value*Math.random(),L.push(...S(A));n.value=new Float32Array(L),i.value=new Float32Array(I)};h.watchEffect(()=>{y()});const b=h.shallowRef();return e({value:b}),(A,_)=>(h.openBlock(),h.createElementBlock("TresPoints",{ref_key:"starsRef",ref:b},[h.createElementVNode("TresBufferGeometry",{position:[n.value,3],"a-scale":[i.value,1]},null,8,vu),h.createElementVNode("TresPointsMaterial",{size:h.unref(l),"size-attenuation":h.unref(f),transparent:h.unref(u),"alpha-test":h.unref(m),"alpha-map":h.unref(d)},null,8,wu)],512))}});let it;const bu=(o="body")=>{it||(it=new xs.Pane({container:document.querySelector(o)}),it.element.style.position="absolute",it.element.style.top="1rem",it.element.style.right="1rem",it.element.style.zIndex="9999");const{logWarning:e}=Kn();e("useTweakPane is going to be deprecated soon and will no longer be part of this package, please start migrating to @tresjs/leches package https://github.com/Tresjs/leches or v-tweakpane https://github.com/vinayakkulkarni/v-tweakpane instead.");function t(){it&&it.dispose()}return h.onMounted(()=>{const{resume:n}=ae.useRenderLoop();n()}),h.onUnmounted(()=>{t()}),{pane:it,disposeTweakPane:t}};var fs={exports:{}};(function(o,e){(function(t,n){o.exports=n()})(zl,function(){var t=function(){function n(y){return s.appendChild(y.dom),y}function i(y){for(var b=0;b<s.children.length;b++)s.children[b].style.display=b===y?"block":"none";r=y}var r=0,s=document.createElement("div");s.style.cssText="position:fixed;top:0;left:0;cursor:pointer;opacity:0.9;z-index:10000",s.addEventListener("click",function(y){y.preventDefault(),i(++r%s.children.length)},!1);var a=(performance||Date).now(),l=a,f=0,u=n(new t.Panel("FPS","#0ff","#002")),d=n(new t.Panel("MS","#0f0","#020"));if(self.performance&&self.performance.memory)var m=n(new t.Panel("MB","#f08","#201"));return i(0),{REVISION:16,dom:s,addPanel:n,showPanel:i,begin:function(){a=(performance||Date).now()},end:function(){f++;var y=(performance||Date).now();if(d.update(y-a,200),y>l+1e3&&(u.update(1e3*f/(y-l),100),l=y,f=0,m)){var b=performance.memory;m.update(b.usedJSHeapSize/1048576,b.jsHeapSizeLimit/1048576)}return y},update:function(){a=this.end()},domElement:s,setMode:i}};return t.Panel=function(n,i,r){var s=1/0,a=0,l=Math.round,f=l(window.devicePixelRatio||1),u=80*f,d=48*f,m=3*f,y=2*f,b=3*f,A=15*f,_=74*f,L=30*f,I=document.createElement("canvas");I.width=u,I.height=d,I.style.cssText="width:80px;height:48px";var S=I.getContext("2d");return S.font="bold "+9*f+"px Helvetica,Arial,sans-serif",S.textBaseline="top",S.fillStyle=r,S.fillRect(0,0,u,d),S.fillStyle=i,S.fillText(n,m,y),S.fillRect(b,A,_,L),S.fillStyle=r,S.globalAlpha=.9,S.fillRect(b,A,_,L),{dom:I,update:function(g,O){s=Math.min(s,g),a=Math.max(a,g),S.fillStyle=r,S.globalAlpha=1,S.fillRect(0,0,u,A),S.fillStyle=i,S.fillText(l(g)+" "+n+" ("+l(s)+"-"+l(a)+")",m,y),S.drawImage(I,b+f,A,_-f,L,b,A,_-f,L),S.fillRect(b+_-f,A,f,L),S.fillStyle=r,S.globalAlpha=.9,S.fillRect(b+_-f,A,f,l((1-g/O)*L))}}},t})})(fs);var Mu=fs.exports;const Au=Ht(Mu),Su=h.defineComponent({name:"Stats",props:{showPanel:{type:Number,default:0}},setup(o,{expose:e}){const t=new Au;e({stats:t});const n=document.body;t.showPanel(o.showPanel||0),n==null||n.appendChild(t.dom);const{onBeforeLoop:i,onAfterLoop:r,resume:s}=ae.useRenderLoop();return s(),i(()=>t.begin()),r(()=>t.end()),h.onUnmounted(()=>{n==null||n.removeChild(t.dom)}),null}});class Pu{constructor(e,t,n){this.name=e,this.fg=t,this.bg=n,this.PR=Math.round(window.devicePixelRatio||1),this.WIDTH=90*this.PR,this.HEIGHT=48*this.PR,this.TEXT_X=3*this.PR,this.TEXT_Y=2*this.PR,this.GRAPH_X=3*this.PR,this.GRAPH_Y=15*this.PR,this.GRAPH_WIDTH=84*this.PR,this.GRAPH_HEIGHT=30*this.PR,this.canvas=document.createElement("canvas"),this.canvas.width=90*this.PR,this.canvas.height=48*this.PR,this.canvas.style.width="90px",this.canvas.style.position="absolute",this.canvas.style.height="48px",this.canvas.style.cssText="width:90px;height:48px",this.context=this.canvas.getContext("2d"),this.context&&(this.context.font="bold "+9*this.PR+"px Helvetica,Arial,sans-serif",this.context.textBaseline="top",this.context.fillStyle=this.bg,this.context.fillRect(0,0,this.WIDTH,this.HEIGHT),this.context.fillStyle=this.fg,this.context.fillText(this.name,this.TEXT_X,this.TEXT_Y),this.context.fillRect(this.GRAPH_X,this.GRAPH_Y,this.GRAPH_WIDTH,this.GRAPH_HEIGHT),this.context.fillStyle=this.bg,this.context.globalAlpha=.9,this.context.fillRect(this.GRAPH_X,this.GRAPH_Y,this.GRAPH_WIDTH,this.GRAPH_HEIGHT))}update(e,t,n,i,r=0){let s=1/0,a=0;this.context&&(s=Math.min(s,e),a=Math.max(n,e),i=Math.max(i,t),this.context.fillStyle=this.bg,this.context.globalAlpha=1,this.context.fillRect(0,0,this.WIDTH,this.GRAPH_Y),this.context.fillStyle=this.fg,this.context.fillText(e.toFixed(r)+" "+this.name+" ("+s.toFixed(r)+"-"+parseFloat(a.toFixed(r))+")",this.TEXT_X,this.TEXT_Y),this.context.drawImage(this.canvas,this.GRAPH_X+this.PR,this.GRAPH_Y,this.GRAPH_WIDTH-this.PR,this.GRAPH_HEIGHT,this.GRAPH_X,this.GRAPH_Y,this.GRAPH_WIDTH-this.PR,this.GRAPH_HEIGHT),this.context.fillRect(this.GRAPH_X+this.GRAPH_WIDTH-this.PR,this.GRAPH_Y,this.PR,this.GRAPH_HEIGHT),this.context.fillStyle=this.bg,this.context.globalAlpha=.9,this.context.fillRect(this.GRAPH_X+this.GRAPH_WIDTH-this.PR,this.GRAPH_Y,this.PR,(1-t/i)*this.GRAPH_HEIGHT))}}const ds=class On{constructor({logsPerSecond:e=20,samplesLog:t=100,samplesGraph:n=10,precision:i=2,minimal:r=!1,horizontal:s=!0,mode:a=0}={}){this.mode=a,this.horizontal=s,this.container=document.createElement("div"),this.container.style.cssText="position:fixed;top:0;left:0;opacity:0.9;z-index:10000;",r&&(this.container.style.cssText+="cursor:pointer"),this.gl=null,this.query=null,this.minimal=r,this.beginTime=(performance||Date).now(),this.prevTime=this.beginTime,this.prevCpuTime=this.beginTime,this.frames=0,this.averageCpu={logs:[],graph:[]},this.averageGpu={logs:[],graph:[]},this.queryCreated=!1,this.fpsPanel=this.addPanel(new On.Panel("FPS","#0ff","#002"),0),this.msPanel=this.addPanel(new On.Panel("CPU","#0f0","#020"),1),this.gpuPanel=null,this.samplesLog=t,this.samplesGraph=n,this.precision=i,this.logsPerSecond=e,this.minimal?(this.container.addEventListener("click",l=>{l.preventDefault(),this.showPanel(++this.mode%this.container.children.length)},!1),this.mode=a,this.showPanel(this.mode)):window.addEventListener("resize",()=>{this.resizePanel(this.fpsPanel,0),this.resizePanel(this.msPanel,1),this.gpuPanel&&this.resizePanel(this.gpuPanel,2)})}resizePanel(e,t){e.canvas.style.position="absolute",this.minimal?e.canvas.style.display="none":(e.canvas.style.display="block",this.horizontal?(e.canvas.style.top="0px",e.canvas.style.left=t*e.WIDTH/e.PR+"px"):(e.canvas.style.left="0px",e.canvas.style.top=t*e.HEIGHT/e.PR+"px"))}addPanel(e,t){return e.canvas&&(this.container.appendChild(e.canvas),this.resizePanel(e,t)),e}showPanel(e){for(let t=0;t<this.container.children.length;t++){const n=this.container.children[t];n.style.display=t===e?"block":"none"}this.mode=e}init(e){if(!e){console.error('Stats: The "canvas" parameter is undefined.');return}if(e instanceof WebGL2RenderingContext)this.gl=e;else if(e instanceof HTMLCanvasElement||e instanceof OffscreenCanvas){if(this.gl=e.getContext("webgl2"),!this.gl){console.error("Stats: Unable to obtain WebGL2 context.");return}}else{console.error("Stats: Invalid input type. Expected WebGL2RenderingContext, HTMLCanvasElement, or OffscreenCanvas.");return}this.ext=this.gl.getExtension("EXT_disjoint_timer_query_webgl2"),this.ext&&(this.gpuPanel=this.addPanel(new On.Panel("GPU","#ff0","#220"),2))}begin(){if(this.beginProfiling("cpu-started"),!(!this.gl||!this.ext)){if(this.query){const e=this.gl.getQueryParameter(this.query,this.gl.QUERY_RESULT_AVAILABLE);if(this.disjoint=this.gl.getParameter(this.ext.GPU_DISJOINT_EXT),e&&!this.disjoint){this.ns=this.gl.getQueryParameter(this.query,this.gl.QUERY_RESULT);const t=this.ns*1e-6;(e||this.disjoint)&&(this.gl.deleteQuery(this.query),this.query=null),e&&this.addToAverage(t,this.averageGpu)}}this.query||(this.queryCreated=!0,this.query=this.gl.createQuery(),this.query&&this.gl.beginQuery(this.ext.TIME_ELAPSED_EXT,this.query))}}end(){this.beginTime=this.endInternal(),this.endProfiling("cpu-started","cpu-finished","cpu-duration",this.averageCpu),!(!this.gl||!this.ext)&&this.queryCreated&&this.gl.getQuery(this.ext.TIME_ELAPSED_EXT,this.gl.CURRENT_QUERY)&&this.gl.endQuery(this.ext.TIME_ELAPSED_EXT)}endInternal(){this.frames++;const e=(performance||Date).now();if(e>=this.prevCpuTime+1e3/this.logsPerSecond&&(this.updatePanel(this.msPanel,this.averageCpu),this.updatePanel(this.gpuPanel,this.averageGpu),this.prevCpuTime=e),e>=this.prevTime+1e3){const t=this.frames*1e3/(e-this.prevTime);this.fpsPanel.update(t,t,100,100,0),this.prevTime=e,this.frames=0}return e}addToAverage(e,t){t.logs.push(e),t.logs.length>this.samplesLog&&t.logs.shift(),t.graph.push(e),t.graph.length>this.samplesGraph&&t.graph.shift()}beginProfiling(e){window.performance&&window.performance.mark(e)}endProfiling(e,t,n,i){if(window.performance&&t){window.performance.mark(t);const r=performance.measure(n,e,t);this.addToAverage(r.duration,i)}}updatePanel(e,t){if(t.logs.length>0){let n=0,i=.01;for(let a=0;a<t.logs.length;a++)n+=t.logs[a],t.logs[a]>i&&(i=t.logs[a]);let r=0,s=.01;for(let a=0;a<t.graph.length;a++)r+=t.graph[a],t.graph[a]>s&&(s=t.graph[a]);e&&e.update(n/Math.min(t.logs.length,this.samplesLog),r/Math.min(t.graph.length,this.samplesGraph),i,s,this.precision)}}};ds.Panel=Pu;let Cu=ds;const Lu=h.defineComponent({name:"StatsGl",props:["logsPerSecond","samplesLog","samplesGraph","precision","horizontal","minimal","mode"],async setup(o,{expose:e}){const t=new Cu({logsPerSecond:o.logsPerSecond,samplesLog:o.samplesLog,samplesGraph:o.samplesGraph,precision:o.precision,horizontal:o.horizontal,minimal:o.minimal,mode:o.mode});e({statsGl:t});const n=document.body;n==null||n.appendChild(t.dom);const{renderer:i}=ae.useTresContext(),{onAfterLoop:r,resume:s}=ae.useRenderLoop();return t.init(i.value),s(),r(()=>{t.update()}),h.onUnmounted(()=>{n==null||n.removeChild(t.dom)}),null}});var Tu=`#include <common>
|
|
971
1015
|
|
|
972
1016
|
void main() {
|
|
973
1017
|
vec2 center = vec2(0., 1.);
|
|
@@ -992,6 +1036,6 @@ void main() {
|
|
|
992
1036
|
mvPosition.xy += rotatedPosition;
|
|
993
1037
|
|
|
994
1038
|
gl_Position = projectionMatrix * mvPosition;
|
|
995
|
-
}`,
|
|
1039
|
+
}`,Ou=`void main() {
|
|
996
1040
|
gl_FragColor = vec4(0.0, 0.0, 0.0, 0.0);
|
|
997
|
-
}`;const Ht=new c.Vector3(0,0,0),vi=new c.Vector3(0,0,0),xu=new c.Vector3(0,0,0);function lr(o,e,t){const n=Ht.setFromMatrixPosition(o.matrixWorld);n.project(e);const i=t.width/2,s=t.height/2;return[(Number.isNaN(n.x)?0:n.x)*i+i,-(n.y*s)+s]}function bu(o,e){const t=Ht.setFromMatrixPosition(o.matrixWorld),n=vi.setFromMatrixPosition(e.matrixWorld),i=t.sub(n),s=e.getWorldDirection(xu);return i.angleTo(s)>Math.PI/2}function Mu(o,e,t,n){const i=Ht.setFromMatrixPosition(o.matrixWorld),s=i.clone();s.project(e),t.setFromCamera(new c.Vector2(s.x,s.y),e);const r=t.intersectObjects(n,!0);if(r.length>0){const a=r[0].distance;return i.distanceTo(t.ray.origin)<a}return!0}function Su(o,e){if(e instanceof c.OrthographicCamera)return e.zoom;if(e instanceof c.PerspectiveCamera){const t=Ht.setFromMatrixPosition(o.matrixWorld),n=vi.setFromMatrixPosition(e.matrixWorld),i=e.fov*Math.PI/180,s=t.distanceTo(n);return 1/(2*Math.tan(i/2)*s)}else return 1}function Au(o,e,t){if(e instanceof c.PerspectiveCamera||e instanceof c.OrthographicCamera){const n=Ht.setFromMatrixPosition(o.matrixWorld),i=vi.setFromMatrixPosition(e.matrixWorld),s=n.distanceTo(i),r=(t[1]-t[0])/(e.far-e.near),a=t[1]-r*e.far;return Math.round(r*s+a)}}const wi=o=>Math.abs(o)<1e-10?0:o;function cr(o,e,t=""){let n="matrix3d(";for(let i=0;i!==16;i++)n+=wi(e[i]*o.elements[i])+(i!==15?",":")");return t+n}const Pu=(o=>e=>cr(e,o))([1,-1,1,1,1,-1,1,1,1,-1,1,1,1,-1,1,1]),Cu=(o=>(e,t)=>cr(e,o(t),"translate(-50%,-50%)"))(o=>[1/o,1/o,1/o,1,-1/o,-1/o,-1/o,-1,1/o,1/o,1/o,1,1,1,1,1]),Lu=["geometry","material"],Tu=u.defineComponent({__name:"HTML",props:{geometry:{default:new c.PlaneGeometry},material:{},as:{default:"div"},transform:{type:Boolean,default:!1},portal:{},wrapperClass:{},eps:{default:1e-4},distanceFactor:{},fullscreen:{type:Boolean},center:{type:Boolean},pointerEvents:{default:"auto"},sprite:{type:Boolean,default:!1},zIndexRange:{default:()=>[16777271,0]},occlude:{type:[Array,Boolean,String]}},emits:["onOcclude"],setup(o,{emit:e}){const t=o,n=e,i=u.useAttrs(),s=u.useSlots(),r=u.ref(),a=u.ref(),{geometry:l,material:f,as:h,transform:d,portal:m,wrapperClass:y,eps:M,distanceFactor:S,fullscreen:v,center:L,pointerEvents:I,sprite:A,occlude:g,zIndexRange:O}=u.toRefs(t),{renderer:x,scene:C,camera:p,raycaster:w,sizes:_}=ae.useTresContext(),T=u.computed(()=>document.createElement(h.value)),F=u.ref([0,0]),J=u.ref(0),X=u.ref(),ee=u.computed(()=>d.value?{position:"absolute",top:0,left:0,width:`${_.width.value}px`,height:`${_.height.value}px`,transformStyle:"preserve-3d",pointerEvents:"none",zIndex:2,willChange:"transform"}:{position:"absolute",transform:L.value?"translate3d(-50%,-50%,0)":"none",...v.value&&{top:-_.height.value/2,left:-_.width.value/2,width:`${_.width.value}px`,height:`${_.height.value}px`},zIndex:2,...i.style,willChange:"transform"}),$=u.computed(()=>({position:"absolute",pointerEvents:I.value})),q=u.ref(null),Z=u.ref(!1),ie=u.computed(()=>(g==null?void 0:g.value)&&(g==null?void 0:g.value)!=="blending"||Array.isArray(g==null?void 0:g.value)&&(g==null?void 0:g.value.length)&&u.isRef(g.value[0]));u.watch(()=>g,b=>{b&&b==="blending"?(T.value.style.zIndex=`${Math.floor(O.value[0]/2)}`,T.value.style.position="absolute",T.value.style.pointerEvents="none"):(T.value.style.zIndex=null,T.value.style.position=null,T.value.style.pointerEvents=null)}),u.watch(()=>{var b;return[r.value,x.value,_.width.value,_.height.value,(b=s.default)==null?void 0:b.call(s)]},([b,V])=>{var H,N,j,P,D,k;if(b&&V){const R=(m==null?void 0:m.value)||V.domElement;if((H=C.value)==null||H.updateMatrixWorld(),d.value)T.value.style.cssText="position:absolute;top:0;left:0;pointer-events:none;overflow:hidden;";else{const W=lr(b,p.value,{width:_.width.value,height:_.height.value});T.value.style.cssText=`position:absolute;top:0;left:0;transform:translate3d(${W[0]}px,${W[1]}px,0);transform-origin:0 0;`}R&&!T.value.parentNode&&((N=R.parentNode)==null||N.appendChild(T.value)),d.value?X.value=u.createVNode("div",{id:"outer",style:ee.value},[u.createVNode("div",{id:"inner",style:$.value},[u.createVNode("div",{key:(j=a.value)==null?void 0:j.uuid,id:C==null?void 0:C.value.uuid,class:i.class,style:i.style},(P=s.default)==null?void 0:P.call(s))])]):X.value=u.createVNode("div",{key:(D=a.value)==null?void 0:D.uuid,id:C==null?void 0:C.value.uuid,style:ee.value},(k=s.default)==null?void 0:k.call(s)),u.render(X.value,T.value)}}),u.watchEffect(()=>{y!=null&&y.value&&(T.value.className=y.value)});const ne=u.ref(!0),{onLoop:ce}=ae.useRenderLoop();ce(()=>{var b,V,H,N,j,P,D;if(r.value&&p.value&&x.value){(b=p.value)==null||b.updateMatrixWorld(),r.value.updateWorldMatrix(!0,!1);const k=d.value?F.value:lr(r.value,p.value,{width:_.width.value||0,height:_.height.value||0});if(d.value||Math.abs(J.value-p.value.zoom)>M.value||Math.abs(F.value[0]-k[0])>M.value||Math.abs(F.value[1]-k[1])>M.value){const R=bu(r.value,p.value);let W=!1;ie.value&&(Array.isArray(g==null?void 0:g.value)?W=g==null?void 0:g.value:(g==null?void 0:g.value)!=="blending"&&(W=[C.value]));const Y=ne.value;if(W){const B=Mu(r.value,p.value,w.value,W);ne.value=B&&!R}else ne.value=!R;Y!==ne.value&&(n("onOcclude",!ne.value),T.value.style.display=ne.value?"block":"none");const te=Math.floor(O.value[0]/2),U=g!=null&&g.value?ie.value?[O.value[0],te]:[te-1,0]:O.value;if(T.value.style.zIndex=`${Au(r.value,p.value,U)}`,T.value.style.willChange="transform",d.value){const[B,oe]=[_.width.value/2,_.height.value/2],le=p.value.projectionMatrix.elements[5]*oe,{isOrthographicCamera:me,top:_e,left:we,bottom:Ie,right:st}=p.value,en=Pu(p.value.matrixWorldInverse),Bt=me?`scale(${le})translate(${wi(-(st+we)/2)}px,${wi((_e+Ie)/2)}px)`:`translateZ(${le}px)`;let Xe=r.value.matrixWorld;A.value&&(Xe=p.value.matrixWorldInverse.clone().transpose().copyPosition(Xe).scale(r.value.scale),Xe.elements[3]=Xe.elements[7]=Xe.elements[11]=0,Xe.elements[15]=1),T.value.style.width=`${_.width.value}px`,T.value.style.height=`${_.height.value}px`,T.value.style.perspective=me?"":`${le}px`,(V=X.value)!=null&&V.el&&((H=X.value)!=null&&H.children)&&(X.value.el.style.willChange="transform",X.value.el.style.transform=`${Bt}${en}translate(${B}px,${oe}px)`,X.value.children[0].willChange="transform",X.value.children[0].el.style.transform=Cu(Xe,1/(((S==null?void 0:S.value)||10)/400)))}else{const B=(S==null?void 0:S.value)===void 0?1:Su(r.value,p.value)*(S==null?void 0:S.value);T.value.style.transform=`translate3d(${k[0]}px,${k[1]}px,0) scale(${B})`}}F.value=k,J.value=p.value.zoom}if(!ie.value&&a.value&&!Z.value)if(d.value){if((N=X.value)!=null&&N.el&&((j=X.value)!=null&&j.children)){const k=(P=X.value)==null?void 0:P.children[0];if(k!=null&&k.clientWidth&&(k!=null&&k.clientHeight)){const{isOrthographicCamera:R}=p.value;if(R||l)i.scale&&(Array.isArray(i.scale)?i.scale instanceof c.Vector3?a.value.scale.copy(i.scale.clone().divideScalar(1)):a.value.scale.set(1/i.scale[0],1/i.scale[1],1/i.scale[2]):a.value.scale.setScalar(1/i.scale));else{const W=((S==null?void 0:S.value)||10)/400,Y=k.clientWidth*W,te=k.clientHeight*W;a.value.scale.set(Y,te,1)}Z.value=!0}}}else{const k=T.value.children[0];if(k!=null&&k.clientWidth&&(k!=null&&k.clientHeight)){const W=k.clientWidth*1,Y=k.clientHeight*1;a.value.scale.set(W,Y,1),Z.value=!0}q.value.lookAt((D=p.value)==null?void 0:D.position)}});const G=u.computed(()=>({vertexShader:d.value?void 0:vu,fragmentShader:wu})),z=u.computed(()=>{const b=G.value;return f.value||new c.ShaderMaterial({vertexShader:b.vertexShader,fragmentShader:b.fragmentShader,side:c.DoubleSide})});return u.onUnmounted(()=>{z.value&&z.value.dispose()}),(b,V)=>(u.openBlock(),u.createElementBlock("TresGroup",{ref_key:"groupRef",ref:r},[u.unref(g)&&!ie.value?(u.openBlock(),u.createElementBlock("TresMesh",{key:0,ref_key:"meshRef",ref:a,geometry:u.unref(l),material:z.value},null,8,Lu)):u.createCommentVNode("",!0)],512))}}),Ou={mounted:(o,e)=>{if(e.arg){console.log(`v-log:${e.arg}`,o[e.arg]);return}console.log("v-log",o)}},{logWarning:hr}=ae.useLogger(),Iu={mounted:o=>{if(!o.isLight){hr(`${o.type} is not a light`);return}Sn=Du[o.type],o.parent.add(new Sn(o))},updated:o=>{$t=o.parent.children.find(e=>e instanceof Sn),$t.update()},unmounted:o=>{if(!o.isLight){hr(`${o.type} is not a light`);return}$t=o.parent.children.find(e=>e instanceof Sn),$t.dispose(),o.parent.remove($t)}};let Sn,$t;const Du={DirectionalLight:c.DirectionalLightHelper,PointLight:c.PointLightHelper,SpotLight:c.SpotLightHelper,HemisphereLight:c.HemisphereLightHelper};function ku(o,e){const t={};for(const n of e)Object.prototype.hasOwnProperty.call(o,n)&&(t[n]=o[n]);return t}function Fu(o,e){const t=`set${e[0].toUpperCase()}${e.slice(1)}`;return o[t]!==void 0}function xi(o){var t,n;let e=o.value;return o.value&&((n=(t=o.value)==null?void 0:t.value)!=null&&n.isMesh)&&(e=o.value.value.position),Array.isArray(o.value)&&(e=new c.Vector3(...e)),e}const{logWarning:Bu}=ae.useLogger(),Uu={updated:(o,e)=>{const t=xi(e);if(!t){Bu(`v-always-look-at: problem with binding value: ${e.value}`);return}const{onLoop:n}=ae.useRenderLoop();n(()=>{o.lookAt(t)})}},{logWarning:Nu}=ae.useLogger(),zu={updated:(o,e)=>{var i;const t=xi(e);if(!t){Nu(`v-distance-to: problem with binding value: ${e.value}`);return}it&&(it.dispose(),o.parent.remove(it));const n=t.clone().sub(o.position);n.normalize(),it=new c.ArrowHelper(n,o.position,o.position.distanceTo(t)/1.5,16776960),o.parent.add(it),console.table([["Distance:",o.position.distanceTo(t)],[`origin: ${o.name||o.type}`,`x:${o.position.x}, y:${o.position.y}, z:${(i=o.position)==null?void 0:i.z}`],[`Destiny: ${o.name||o.type}`,`x:${t.x}, y:${t.y}, z:${t==null?void 0:t.z}`]])},unmounted:o=>{it==null||it.dispose(),o.parent.remove(it)}};let it=null;re.Backdrop=Oh,re.Box=Dc,re.CameraControls=yl,re.CatmullRomCurve3=zc,re.Circle=Gc,re.Cone=Yc,re.ContactShadows=Uh,re.CustomShaderMaterial=Tc,re.Dodecahedron=Zc,re.Environment=Ph,re.FBXModel=qa,re.Fbo=Ra,re.GLTFModel=Wa,re.GlobalAudio=Sa,re.Html=Tu,re.Icosahedron=Qc,re.KeyboardControls=sl,re.Lensflare=Ga,re.Levioso=ia,re.Line2=ir,re.MapControls=hl,re.MeshGlassMaterial=Ll,re.MeshWobbleMaterial=wl,re.MouseParallax=Ma,re.Octahedron=$c,re.OrbitControls=el,re.Plane=ih,re.PointerLockControls=ll,re.Precipitation=Vh,re.Ring=oh,re.SVG=Qa,re.ScrollControls=ul,re.Sky=Gh,re.Smoke=Wh,re.Sparkles=lu,re.Sphere=ch,re.Stars=uu,re.Stats=mu,re.StatsGl=_u,re.Superformula=fh,re.Tetrahedron=gh,re.Text3D=ta,re.Torus=vh,re.TorusKnot=bh,re.TransformControls=ol,re.Tube=Ah,re.extractBindingPosition=xi,re.hasSetter=Fu,re.pick=ku,re.useAnimations=na,re.useEnvironment=ds,re.useFBO=fs,re.useFBX=ms,re.useGLTF=ps,re.useProgress=Ja,re.useTweakPane=fu,re.useVideoTexture=Ha,re.vAlwaysLookAt=Uu,re.vDistanceTo=zu,re.vLightHelper=Iu,re.vLog=Ou,Object.defineProperty(re,Symbol.toStringTag,{value:"Module"})});
|
|
1041
|
+
}`;const tn=new c.Vector3(0,0,0),bi=new c.Vector3(0,0,0),Iu=new c.Vector3(0,0,0);function ps(o,e,t){const n=tn.setFromMatrixPosition(o.matrixWorld);n.project(e);const i=t.width/2,r=t.height/2;return[(Number.isNaN(n.x)?0:n.x)*i+i,-(n.y*r)+r]}function Du(o,e){const t=tn.setFromMatrixPosition(o.matrixWorld),n=bi.setFromMatrixPosition(e.matrixWorld),i=t.sub(n),r=e.getWorldDirection(Iu);return i.angleTo(r)>Math.PI/2}function ku(o,e,t,n){const i=tn.setFromMatrixPosition(o.matrixWorld),r=i.clone();r.project(e),t.setFromCamera(new c.Vector2(r.x,r.y),e);const s=t.intersectObjects(n,!0);if(s.length>0){const a=s[0].distance;return i.distanceTo(t.ray.origin)<a}return!0}function Fu(o,e){if(e instanceof c.OrthographicCamera)return e.zoom;if(e instanceof c.PerspectiveCamera){const t=tn.setFromMatrixPosition(o.matrixWorld),n=bi.setFromMatrixPosition(e.matrixWorld),i=e.fov*Math.PI/180,r=t.distanceTo(n);return 1/(2*Math.tan(i/2)*r)}else return 1}function Bu(o,e,t){if(e instanceof c.PerspectiveCamera||e instanceof c.OrthographicCamera){const n=tn.setFromMatrixPosition(o.matrixWorld),i=bi.setFromMatrixPosition(e.matrixWorld),r=n.distanceTo(i),s=(t[1]-t[0])/(e.far-e.near),a=t[1]-s*e.far;return Math.round(s*r+a)}}const Mi=o=>Math.abs(o)<1e-10?0:o;function ms(o,e,t=""){let n="matrix3d(";for(let i=0;i!==16;i++)n+=Mi(e[i]*o.elements[i])+(i!==15?",":")");return t+n}const Uu=(o=>e=>ms(e,o))([1,-1,1,1,1,-1,1,1,1,-1,1,1,1,-1,1,1]),Nu=(o=>(e,t)=>ms(e,o(t),"translate(-50%,-50%)"))(o=>[1/o,1/o,1/o,1,-1/o,-1/o,-1/o,-1,1/o,1/o,1/o,1,1,1,1,1]),Vu=["geometry","material"],zu=h.defineComponent({__name:"HTML",props:{geometry:{default:new c.PlaneGeometry},material:{},as:{default:"div"},transform:{type:Boolean,default:!1},portal:{},wrapperClass:{},eps:{default:1e-4},distanceFactor:{},fullscreen:{type:Boolean},center:{type:Boolean},pointerEvents:{default:"auto"},sprite:{type:Boolean,default:!1},zIndexRange:{default:()=>[16777271,0]},occlude:{type:[Array,Boolean,String]}},emits:["onOcclude"],setup(o,{emit:e}){const t=o,n=e,i=h.useAttrs(),r=h.useSlots(),s=h.ref(),a=h.ref(),{geometry:l,material:f,as:u,transform:d,portal:m,wrapperClass:y,eps:b,distanceFactor:A,fullscreen:_,center:L,pointerEvents:I,sprite:S,occlude:g,zIndexRange:O}=h.toRefs(t),{renderer:x,scene:C,camera:p,raycaster:w,sizes:v}=ae.useTresContext(),T=h.computed(()=>document.createElement(u.value)),k=h.ref([0,0]),Q=h.ref(0),Y=h.ref(),$=h.computed(()=>d.value?{position:"absolute",top:0,left:0,width:`${v.width.value}px`,height:`${v.height.value}px`,transformStyle:"preserve-3d",pointerEvents:"none",zIndex:2,willChange:"transform"}:{position:"absolute",transform:L.value?"translate3d(-50%,-50%,0)":"none",..._.value&&{top:-v.height.value/2,left:-v.width.value/2,width:`${v.width.value}px`,height:`${v.height.value}px`},zIndex:2,...i.style,willChange:"transform"}),ee=h.computed(()=>({position:"absolute",pointerEvents:I.value})),q=h.ref(null),Z=h.ref(!1),ie=h.computed(()=>(g==null?void 0:g.value)&&(g==null?void 0:g.value)!=="blending"||Array.isArray(g==null?void 0:g.value)&&(g==null?void 0:g.value.length)&&h.isRef(g.value[0]));h.watch(()=>g,M=>{M&&M==="blending"?(T.value.style.zIndex=`${Math.floor(O.value[0]/2)}`,T.value.style.position="absolute",T.value.style.pointerEvents="none"):(T.value.style.zIndex=null,T.value.style.position=null,T.value.style.pointerEvents=null)}),h.watch(()=>{var M;return[s.value,x.value,v.width.value,v.height.value,(M=r.default)==null?void 0:M.call(r)]},([M,z])=>{var H,N,j,P,D,F;if(M&&z){const R=(m==null?void 0:m.value)||z.domElement;if((H=C.value)==null||H.updateMatrixWorld(),d.value)T.value.style.cssText="position:absolute;top:0;left:0;pointer-events:none;overflow:hidden;";else{const W=ps(M,p.value,{width:v.width.value,height:v.height.value});T.value.style.cssText=`position:absolute;top:0;left:0;transform:translate3d(${W[0]}px,${W[1]}px,0);transform-origin:0 0;`}R&&!T.value.parentNode&&((N=R.parentNode)==null||N.appendChild(T.value)),d.value?Y.value=h.createVNode("div",{id:"outer",style:$.value},[h.createVNode("div",{id:"inner",style:ee.value},[h.createVNode("div",{key:(j=a.value)==null?void 0:j.uuid,id:C==null?void 0:C.value.uuid,class:i.class,style:i.style},(P=r.default)==null?void 0:P.call(r))])]):Y.value=h.createVNode("div",{key:(D=a.value)==null?void 0:D.uuid,id:C==null?void 0:C.value.uuid,style:$.value},(F=r.default)==null?void 0:F.call(r)),h.render(Y.value,T.value)}}),h.watchEffect(()=>{y!=null&&y.value&&(T.value.className=y.value)});const ne=h.ref(!0),{onLoop:ce}=ae.useRenderLoop();ce(()=>{var M,z,H,N,j,P,D;if(s.value&&p.value&&x.value){(M=p.value)==null||M.updateMatrixWorld(),s.value.updateWorldMatrix(!0,!1);const F=d.value?k.value:ps(s.value,p.value,{width:v.width.value||0,height:v.height.value||0});if(d.value||Math.abs(Q.value-p.value.zoom)>b.value||Math.abs(k.value[0]-F[0])>b.value||Math.abs(k.value[1]-F[1])>b.value){const R=Du(s.value,p.value);let W=!1;ie.value&&(Array.isArray(g==null?void 0:g.value)?W=g==null?void 0:g.value:(g==null?void 0:g.value)!=="blending"&&(W=[C.value]));const X=ne.value;if(W){const B=ku(s.value,p.value,w.value,W);ne.value=B&&!R}else ne.value=!R;X!==ne.value&&(n("onOcclude",!ne.value),T.value.style.display=ne.value?"block":"none");const te=Math.floor(O.value[0]/2),U=g!=null&&g.value?ie.value?[O.value[0],te]:[te-1,0]:O.value;if(T.value.style.zIndex=`${Bu(s.value,p.value,U)}`,T.value.style.willChange="transform",d.value){const[B,oe]=[v.width.value/2,v.height.value/2],le=p.value.projectionMatrix.elements[5]*oe,{isOrthographicCamera:me,top:_e,left:we,bottom:Ie,right:st}=p.value,nn=Uu(p.value.matrixWorldInverse),Nt=me?`scale(${le})translate(${Mi(-(st+we)/2)}px,${Mi((_e+Ie)/2)}px)`:`translateZ(${le}px)`;let We=s.value.matrixWorld;S.value&&(We=p.value.matrixWorldInverse.clone().transpose().copyPosition(We).scale(s.value.scale),We.elements[3]=We.elements[7]=We.elements[11]=0,We.elements[15]=1),T.value.style.width=`${v.width.value}px`,T.value.style.height=`${v.height.value}px`,T.value.style.perspective=me?"":`${le}px`,(z=Y.value)!=null&&z.el&&((H=Y.value)!=null&&H.children)&&(Y.value.el.style.willChange="transform",Y.value.el.style.transform=`${Nt}${nn}translate(${B}px,${oe}px)`,Y.value.children[0].willChange="transform",Y.value.children[0].el.style.transform=Nu(We,1/(((A==null?void 0:A.value)||10)/400)))}else{const B=(A==null?void 0:A.value)===void 0?1:Fu(s.value,p.value)*(A==null?void 0:A.value);T.value.style.transform=`translate3d(${F[0]}px,${F[1]}px,0) scale(${B})`}}k.value=F,Q.value=p.value.zoom}if(!ie.value&&a.value&&!Z.value)if(d.value){if((N=Y.value)!=null&&N.el&&((j=Y.value)!=null&&j.children)){const F=(P=Y.value)==null?void 0:P.children[0];if(F!=null&&F.clientWidth&&(F!=null&&F.clientHeight)){const{isOrthographicCamera:R}=p.value;if(R||l)i.scale&&(Array.isArray(i.scale)?i.scale instanceof c.Vector3?a.value.scale.copy(i.scale.clone().divideScalar(1)):a.value.scale.set(1/i.scale[0],1/i.scale[1],1/i.scale[2]):a.value.scale.setScalar(1/i.scale));else{const W=((A==null?void 0:A.value)||10)/400,X=F.clientWidth*W,te=F.clientHeight*W;a.value.scale.set(X,te,1)}Z.value=!0}}}else{const F=T.value.children[0];if(F!=null&&F.clientWidth&&(F!=null&&F.clientHeight)){const W=F.clientWidth*1,X=F.clientHeight*1;a.value.scale.set(W,X,1),Z.value=!0}q.value.lookAt((D=p.value)==null?void 0:D.position)}});const G=h.computed(()=>({vertexShader:d.value?void 0:Tu,fragmentShader:Ou})),V=h.computed(()=>{const M=G.value;return f.value||new c.ShaderMaterial({vertexShader:M.vertexShader,fragmentShader:M.fragmentShader,side:c.DoubleSide})});return h.onUnmounted(()=>{V.value&&V.value.dispose(),T.value.remove()}),(M,z)=>(h.openBlock(),h.createElementBlock("TresGroup",{ref_key:"groupRef",ref:s},[h.unref(g)&&!ie.value?(h.openBlock(),h.createElementBlock("TresMesh",{key:0,ref_key:"meshRef",ref:a,geometry:h.unref(l),material:V.value},null,8,Vu)):h.createCommentVNode("",!0)],512))}}),ju={mounted:(o,e)=>{if(e.arg){console.log(`v-log:${e.arg}`,o[e.arg]);return}console.log("v-log",o)}},{logWarning:gs}=ae.useLogger(),Gu={mounted:o=>{if(!o.isLight){gs(`${o.type} is not a light`);return}Cn=Ru[o.type],o.parent.add(new Cn(o))},updated:o=>{Ut=o.parent.children.find(e=>e instanceof Cn),!(Ut instanceof tr)&&Ut.update()},unmounted:o=>{if(!o.isLight){gs(`${o.type} is not a light`);return}Ut=o.parent.children.find(e=>e instanceof Cn),Ut.dispose(),o.parent.remove(Ut)}};let Cn,Ut;const Ru={DirectionalLight:c.DirectionalLightHelper,PointLight:c.PointLightHelper,SpotLight:c.SpotLightHelper,HemisphereLight:c.HemisphereLightHelper,RectAreaLight:tr};function Eu(o,e){const t={};for(const n of e)Object.prototype.hasOwnProperty.call(o,n)&&(t[n]=o[n]);return t}function Yu(o,e){const t=`set${e[0].toUpperCase()}${e.slice(1)}`;return o[t]!==void 0}function Ai(o){var t,n;let e=o.value;return o.value&&((n=(t=o.value)==null?void 0:t.value)!=null&&n.isMesh)&&(e=o.value.value.position),Array.isArray(o.value)&&(e=new c.Vector3(...e)),e}const{logWarning:Xu}=ae.useLogger(),Wu={updated:(o,e)=>{const t=Ai(e);if(!t){Xu(`v-always-look-at: problem with binding value: ${e.value}`);return}const{onLoop:n}=ae.useRenderLoop();n(()=>{o.lookAt(t)})}},{logWarning:Zu}=ae.useLogger(),qu={updated:(o,e)=>{var i;const t=Ai(e);if(!t){Zu(`v-distance-to: problem with binding value: ${e.value}`);return}rt&&(rt.dispose(),o.parent.remove(rt));const n=t.clone().sub(o.position);n.normalize(),rt=new c.ArrowHelper(n,o.position,o.position.distanceTo(t)/1.5,16776960),o.parent.add(rt),console.table([["Distance:",o.position.distanceTo(t)],[`origin: ${o.name||o.type}`,`x:${o.position.x}, y:${o.position.y}, z:${(i=o.position)==null?void 0:i.z}`],[`Destiny: ${o.name||o.type}`,`x:${t.x}, y:${t.y}, z:${t==null?void 0:t.z}`]])},unmounted:o=>{rt==null||rt.dispose(),o.parent.remove(rt)}};let rt=null;re.Backdrop=jh,re.Box=Rc,re.CameraControls=Cl,re.CatmullRomCurve3=qc,re.Circle=Jc,re.Cone=eh,re.ContactShadows=Wh,re.CustomShaderMaterial=zc,re.Dodecahedron=ih,re.Environment=Uh,re.FBXModel=rl,re.Fbo=Ja,re.GLTFModel=nl,re.GlobalAudio=ka,re.Html=zu,re.Icosahedron=oh,re.KeyboardControls=pl,re.Lensflare=Qa,re.Levioso=ha,re.Line2=cs,re.MapControls=wl,re.MeshGlassMaterial=Vl,re.MeshWobbleMaterial=Ol,re.MouseParallax=Da,re.Octahedron=ch,re.OrbitControls=hl,re.Plane=dh,re.PointerLockControls=_l,re.Precipitation=Kh,re.Reflector=da,re.Ring=gh,re.SVG=ol,re.Sampler=Ha,re.ScrollControls=xl,re.Sky=Jh,re.Smoke=nu,re.Sparkles=_u,re.Sphere=vh,re.Stars=xu,re.Stats=Su,re.StatsGl=Lu,re.Superformula=bh,re.Tetrahedron=Ph,re.Text3D=la,re.Torus=Th,re.TorusKnot=Dh,re.TransformControls=gl,re.Tube=Bh,re.extractBindingPosition=Ai,re.hasSetter=Yu,re.pick=Eu,re.useAnimations=ca,re.useEnvironment=vr,re.useFBO=yr,re.useFBX=xr,re.useGLTF=wr,re.useProgress=al,re.useSurfaceSampler=_r,re.useTweakPane=bu,re.useVideoTexture=ll,re.vAlwaysLookAt=Wu,re.vDistanceTo=qu,re.vLightHelper=Gu,re.vLog=ju,Object.defineProperty(re,Symbol.toStringTag,{value:"Module"})});
|