@splinetool/runtime 0.9.60 → 0.9.61

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.
Files changed (2) hide show
  1. package/build/runtime.js +1 -1
  2. package/package.json +1 -1
package/build/runtime.js CHANGED
@@ -3923,7 +3923,7 @@ vec4 getIBLVolumeRefraction( vec3 n, vec3 v, float roughness, vec3 position, mat
3923
3923
  outgoingLight = spe_blend( diffuseColor, outgoingLight, ${l.result}, ${c.result} );
3924
3924
  }
3925
3925
  `),h&&d.push(h.code,`outgoingLight = spe_blend(outgoingLight, ${h.result}, 1.0, SPE_BLENDING_NORMAL);`),u?d.push(`gl_FragColor = vec4( outgoingLight, accumAlpha * ${u.result} );`):d.push("gl_FragColor = vec4( outgoingLight, 1.0 );"),d.push("#include <encodings_fragment>","#include <fog_fragment>","#include <dithering_fragment>"),r=d.join(`
3926
- `)}return r}copy(t){return super.copy(t),t.color&&(this.color=t.color.clone()),this.roughness=t.roughness.clone(),this.metalness=t.metalness.clone(),t.position&&(this.position=t.position.clone()),t.afterColor&&(this.afterColor=t.afterColor.clone()),t.alpha&&(this.alpha=t.alpha.clone()),t.reflectivity&&(this.reflectivity=t.reflectivity.clone()),t.shadingAlpha&&(this.shadingAlpha=t.shadingAlpha.clone()),t.shadingBlend&&(this.shadingBlend=t.shadingBlend.clone()),this}};var Rp=class extends Rn{constructor(t=new Ip,r){super(t,t,r);this.type="StandardNodeMaterial",this.fragment=t}get color(){return this.fragment.color}set color(t){this.fragment.color=t}get afterColor(){return this.fragment.afterColor}set afterColor(t){this.fragment.afterColor=t}get alpha(){return this.fragment.alpha}set alpha(t){this.fragment.alpha=t}get shadingAlpha(){return this.fragment.shadingAlpha}set shadingAlpha(t){this.fragment.shadingAlpha=t}get shadingBlend(){return this.fragment.shadingBlend}set shadingBlend(t){this.fragment.shadingBlend=t}get position(){return this.fragment.position}set position(t){this.fragment.position=t}get roughness(){return this.fragment.roughness}set roughness(t){this.fragment.roughness=t}get metalness(){return this.fragment.metalness}set metalness(t){this.fragment.metalness=t}get reflectivity(){return this.fragment.reflectivity}set reflectivity(t){this.fragment.reflectivity=t}};var Xl=class extends Rp{constructor(e,t,r){super(t,e),this.userData.type="PhysicalMaterial",this.userData.category="Physical",this.userData.layers=r!=null?r:this._getLayerStack(e==null?void 0:e.map)}get layersList(){return this.userData.layers}set layersList(e){this.userData.layers=e}equals(e){return this.userData.type===e.userData.type&&this.userData.layers.uuid==e.userData.layers.uuid}copy(e){if(e.userData.layers!==void 0&&e.userData.layers instanceof Zr){let t=e.userData.layers,r=e.fragment;super.copy(e);let n=r.clone();this.fragment=n,this.vertex=n;let s=t.clone(this);this.userData.layers=s,n.shadingAlpha.value=r.shadingAlpha.value,n.shadingBlend.value=r.shadingBlend.value}else super.copy(e);return this}static fromJSON(e,t,r){let n=r.getNode(t.vertex),s=new Xl(void 0,n);return s.fromJSON(t,r),s}dispose(){super.dispose()}};function pr(i,e){let t;if(typeof i=="string"){let r=e==null?void 0:e.getColor(i);r?t=r:(console.warn("Tried to create color layer params with a color key that does not exist in the assets manager"),t=new Wr(0,0,0,0))}else return"a"in i?new Wr(i.r,i.g,i.b,i.a):new Wr(i.r,i.g,i.b,1);return t}function Bp(i,e){switch(i.data.type){case"light":return gi(i);case"fresnel":return IF(i,e);case"gradient":return RF(i);case"depth":return BF(i);case"normal":return NF(i);case"noise":return OF(i,e);case"texture":return FF(i,e);case"rainbow":return UF(i);case"transmission":return zF(i,e);case"matcap":return GF(i,e);case"displace":return kF(i);case"color":default:return LF(i,e)}}function F1(i){return{type:i.data.type}}function gi(i){let{alpha:e,mode:t}=i.data;return xe(se({},F1(i)),{alpha:e,mode:t})}function LF(i,e){return xe(se({},gi(i)),{color:pr(i.data.color,e)})}function IF(i,e){let{bias:t,scale:r,intensity:n,factor:s,color:o}=i.data;return xe(se({},gi(i)),{color:pr(o,e),bias:t,scale:r,intensity:n,factor:s})}function RF(i){let{gradientType:e,smooth:t,colors:r,steps:n,angle:s,offset:o,morph:a}=i.data;return xe(se({},gi(i)),{gradientType:e,smooth:t,colors:r.map(l=>new Je(l[0],l[1],l[2],l[3])),num:r.length,steps:n,offset:new B(...o),morph:new B(...a),angle:s})}function BF(i){let{gradientType:e,near:t,far:r,isVector:n,isWorldSpace:s,origin:o,direction:a,colors:l,steps:c,smooth:h,num:u}=i.data;return xe(se({},gi(i)),{gradientType:e,near:t,far:r,isVector:n,isWorldSpace:s,origin:new M(...o),direction:a?new M(...a):new M(1,0,0),num:u,colors:l.map(f=>new Je(f[0],f[1],f[2],f[3])),steps:c,smooth:h})}function NF(i){let{cnormal:e}=i.data;return xe(se({},gi(i)),{cnormal:new M(e[0],e[1],e[2])})}function OF(i,e){let{data:t}=i;return xe(se({},gi(i)),{scale:t.scale,move:t.move,fA:new B(...t.fA),fB:new B(...t.fB),size:new M(...t.size),distortion:new B(...t.distortion),colorA:pr(t.colorA,e),colorB:pr(t.colorB,e),colorC:pr(t.colorC,e),colorD:pr(t.colorD,e),noiseType:t.noiseType})}function FF(i,e){let{projection:t,axis:r,side:n,crop:s,size:o}=i.data,{image:a,wrapping:l,repeat:c,offset:h}=i.data.texture,u=new Pt,f;if(typeof a=="string")f=e==null?void 0:e.getImage(a);else{let d=new Image;d.src=co(a.data),d.onload=()=>{e!=null&&e.onImageLoad&&(e==null||e.onImageLoad())},f=d}return u.image=f,u.repeat.set(c[0],c[1]),u.offset.set(h[0],h[1]),u.wrapS=u.wrapT=l,xe(se({},gi(i)),{texture:u,mat:new Ft().setUvTransform(h[0],h[1],c[0],c[1],0,0,0),crop:s,projection:t,axis:["x","y","z"].indexOf(r),side:[2,0,1].indexOf(n),size:o})}function UF(i){let{data:e}=i;return xe(se({},gi(i)),{filmThickness:e.filmThickness,movement:e.movement,wavelengths:new M(...e.wavelengths),noiseStrength:e.noiseStrength,noiseScale:e.noiseScale,offset:new M(...e.offset)})}function zF(i,e){let{data:t}=i;return xe(se({},gi(i)),{thickness:t.thickness,ior:t.ior,roughness:t.roughness,transmissionSamplerMap:e.transmissionSamplerMap,transmissionDepthMap:e.transmissionDepthMap})}function GF(i,e){let t=new Pt,{image:r}=i.data.texture,n;if(typeof r=="string")n=e==null?void 0:e.getImage(r);else{let o=new Image;o.src=co(r.data),o.onload=()=>{e!=null&&e.onImageLoad&&(e==null||e.onImageLoad())},n=o}t.image=n;let s=16777215;return xe(se({},gi(i)),{color:s,texture:t})}function kF(i){let{data:e}=i,t=xe(se({},F1(i)),{intensity:e.intensity});if(e.displacementType==="noise")return xe(se({},t),{offset:new M(...e.offset),scale:e.scale,movement:e.movement,noiseType:e.noiseType});{let r=new Pt,n=new Ft().setUvTransform(0,0,1,1,0,0,0);return xe(se({},t),{texture:r,mat:n,crop:e.crop})}}function Np(i,e,t){if(t.type==="displace"&&(i==="intensity"||i==="visible")){let r=e.uniforms[`f${e.id}_intensity`];return r?(r.value=t.intensity*(t.visible?1:0),r):void 0}if(t.type!=="displace"&&(i==="alpha"||i==="visible")){let r=e.uniforms[`f${e.id}_alpha`];return r?(r.value=t.alpha*(t.visible?1:0),r):void 0}}var Ql;(e=>{function i(t){return new be(t.x,t.y,t.z).getHex()}e.getHex=i})(Ql||(Ql={}));var U1;(e=>{function i(t){return new Je(t.r,t.g,t.b,t.a)}e.getThreeVector4=i})(U1||(U1={}));var z1;(t=>{function i(r,n){r.setRGB(n.r,n.g,n.b)}t.setThreeColor=i;function e(r){return new be(r.r,r.g,r.b).getHex()}t.getHex=e})(z1||(z1={}));function uu(i,e){return typeof i=="string"?e.getMaterialOrDeletedPlaceholder(i):_v(i,e)}function G1(i,e){return i.map(t=>uu(t,e))}function _v(i,e){var o,a;let t=(o=i.layers)!=null?o:ui.defaultTwoLayerData("phong").layers,r=VF(t),n;switch(r.category){case"basic":n=new Yr;break;case"lambert":{n=new ql;break}case"toon":{n=new Yl;break}case"physical":n=new Xl;break;case"phong":default:{n=new pn;break}}n.name=(a=i.name)!=null?a:"Untitled Material";let s=n.userData.layers;HF(s);for(let l=t.length-1;l>=0;l--)WF(s,t[l],e);switch(r.category){case"basic":break;case"lambert":{let h=n,f=pr(r.emissive,e);f instanceof be?h.emissive.value=f:h.emissive.value.setHex(Ql.getHex(f));break}case"toon":{let h=n,u=r;h.shininess.value=u.shininess;let f=pr(u.specular,e);f instanceof be?h.specular.value=f:h.specular.value.setHex(Ql.getHex(f));break}case"physical":let l=n,c=r;l.metalness.value=c.metalness,l.roughness.value=c.roughness,l.reflectivity.value=c.reflectivity;break;case"phong":default:{let h=n,u=r;h.shininess.value=u.shininess;let f=pr(u.specular,e);f instanceof be?h.specular.value=f:h.specular.value.setHex(Ql.getHex(f));break}}return s.blendColors(),s.blendAfterColors(),s.blendPositions(),n}function VF(i){for(let e of i)if(e.data.type==="light")return e.data;return{type:"light",category:"basic",visible:!0,alpha:1,mode:0}}function HF(i){for(let e of i.getLayers())i.removeLayer(e.id)}function WF(i,e,t){let r=Bp(e,t);r.type==="transmission"&&(r.transmissionSamplerMap=t==null?void 0:t.transmissionSamplerMap,r.transmissionDepthMap=t==null?void 0:t.transmissionDepthMap);let n=i.addLayer(r);n.uuid=e.id;for(let s in e.data)Np(s,n,e.data)}var Zo=i=>"isEntity"in i,er=i=>"isAbstractMesh"in i,Lt=i=>i!==null&&i.isBooleanMesh,k1=i=>i.objectType==="CombinedCamera",V1=i=>Zo(i)&&(i.objectType==="LightDirectional"||i.objectType==="LightSpot"||i.objectType==="LightPoint");var ms=i=>"objectHelper"in i;function Ev(i,e){var r;let t=!1;e.position&&(i.position.fromArray(e.position),t=!0),e.rotation&&(i.rotation.fromArray(e.rotation),t=!0),e.scale&&(t=!0,i.scale.fromArray(e.scale)),e.hiddenMatrix!==void 0&&"hiddenMatrix"in i&&(t=!0,i.hiddenMatrix.fromArray((r=e.hiddenMatrix)!=null?r:Di.identity)),t&&(i.updateMatrix(),Lt(i.parent)&&er(i)&&i.invalidateDownstreamBooleanData(!0).recomputeBoolean()),e.position&&e.rotation&&e.scale&&e.hiddenMatrix!==void 0&&i.updateWorldMatrix(!1,!0),i.objectType==="CombinedCamera"&&(e.isUpVectorFlipped!==void 0&&(i.isUpVectorFlipped=e.isUpVectorFlipped),i.updateUp())}function jF(i,e){Ev(i,e),e.name!==void 0&&(i.name=e.name),e.visible!==void 0&&(i.isEntity?i.visibility=e.visible:i.visible=e.visible)}function H1(i,e,t){jF(i,e),e.color!==void 0&&(i.color=pr(e.color,t)),e.intensity!==void 0&&(i.intensity=e.intensity),e.shadows!==void 0&&!(i instanceof Hs)&&(i.castShadow=e.shadows),i.shadow&&!(i instanceof Hs)&&e.depth!==void 0&&(i.shadow.camera.far=e.depth,i.shadow.needsUpdate=!0),e.helper!==void 0&&ms(i)&&(i.enableHelper=e.helper,i.gizmos.shadowmap.visible=e.helper)}function W1(i,e){i.shadow.camera.right=e/2,i.shadow.camera.left=-e/2,i.shadow.camera.top=e/2,i.shadow.camera.bottom=-e/2,i.shadow.needsUpdate=!0}var Jl=new Kt,Xr=new M,Ge=new M,wr=new Ae;function qF(i,e,t=0,r=e.count){let n=1/0,s=1/0,o=1/0,a=-1/0,l=-1/0,c=-1/0;for(let h=t;h<r;h++){let u=e.getX(h),f=e.getY(h),d=e.getZ(h);u<n&&(n=u),f<s&&(s=f),d<o&&(o=d),u>a&&(a=u),f>l&&(l=f),d>c&&(c=d)}return i.min.set(n,s,o),i.max.set(a,l,c),i}var j1=(i,e,t,r)=>{var n;if(er(i)){let s=i.geometry.userData.parameters,o=i.geometry.getAttribute("position");i.geometry.userData.type==="SubdivGeometry"?Xr.copy(i.originalGeometry.boundingSphere.center):o!==void 0&&(qF(Jl,o,i.geometry.drawRange.start,i.geometry.drawRange.count<1/0?i.geometry.drawRange.count:o.count),Jl.getCenter(Xr)),i.forceComputeSize?Jl.getSize(Ge).multiplyScalar(.5):Ge.set(s.width,s.height,(n=s.depth)!=null?n:0).multiplyScalar(.5)}else if(ms(i)&&r===!0){let s=i.geometryHelper.getAttribute("position");Jl.setFromArray(s.array),Jl.getCenter(Xr),Jl.getSize(Ge).multiplyScalar(.5)}else Xr.setScalar(0),Ge.setScalar(0);wr.copy(e).multiply(i.matrixWorld),Ge.x===0&&Ge.y===0&&Ge.z===0?t.push(new M(Xr.x,Xr.y,Xr.z).applyMatrix4(wr)):t.push(new M(-Ge.x,Ge.y,Ge.z).add(Xr).applyMatrix4(wr),new M(-Ge.x,-Ge.y,Ge.z).add(Xr).applyMatrix4(wr),new M(Ge.x,-Ge.y,Ge.z).add(Xr).applyMatrix4(wr),new M(Ge.x,Ge.y,Ge.z).add(Xr).applyMatrix4(wr),new M(-Ge.x,Ge.y,-Ge.z).add(Xr).applyMatrix4(wr),new M(-Ge.x,-Ge.y,-Ge.z).add(Xr).applyMatrix4(wr),new M(Ge.x,-Ge.y,-Ge.z).add(Xr).applyMatrix4(wr),new M(Ge.x,Ge.y,-Ge.z).add(Xr).applyMatrix4(wr))},fu=class extends Kt{constructor(){super(...arguments);this.matrix=new Ae;this.vertices=[];this.faces=[];this.edges=[];this.centerEdges=[]}copy(t){return super.copy(t),this.matrix.copy(t.matrix),this.vertices=t.vertices.map(r=>r.clone()),this.faces=t.faces.map(r=>r.clone()),this.edges=t.edges.map(r=>r.clone()),this.centerEdges=t.centerEdges.map(r=>r.clone()),this}setFromObjectSize(t,r=!1){t.updateWorldMatrix(!1,r),this.makeEmpty(),this.matrix.copy(t.matrixWorld);let n=new Ae().copy(t.matrixWorld).invert();return this.expandByObjectSize(t,n,r)}expandByObjectSize(t,r,n=!1){let s=[];return n===!0?t.traverseEntity(o=>{o.visible&&j1(o,r,s,t.enableHelper===!0)}):j1(t,r,s,t.enableHelper===!0),this.setFromPoints(s)}getCenter(t){return t=super.getCenter(t),t.applyMatrix4(this.matrix),t}getPositionToCenter(t){return t=super.getCenter(t),t.applyMatrix4(wr.copy(this.matrix).setPosition(0,0,0)),t}computeVertices(){this.getSize(Ge).multiplyScalar(.5),this.getCenter(Xr),wr.copy(this.matrix).setPosition(Xr),this.vertices=[new M(-Ge.x,Ge.y,Ge.z).applyMatrix4(wr),new M(-Ge.x,-Ge.y,Ge.z).applyMatrix4(wr),new M(Ge.x,-Ge.y,Ge.z).applyMatrix4(wr),new M(Ge.x,Ge.y,Ge.z).applyMatrix4(wr),new M(-Ge.x,Ge.y,-Ge.z).applyMatrix4(wr),new M(-Ge.x,-Ge.y,-Ge.z).applyMatrix4(wr),new M(Ge.x,-Ge.y,-Ge.z).applyMatrix4(wr),new M(Ge.x,Ge.y,-Ge.z).applyMatrix4(wr)]}computeEdges(){this.vertices.length>0&&this.computeVertices(),this.edges=[new Jr(this.vertices[0],this.vertices[3]),new Jr(this.vertices[1],this.vertices[2]),new Jr(this.vertices[5],this.vertices[6]),new Jr(this.vertices[4],this.vertices[7]),new Jr(this.vertices[0],this.vertices[1]),new Jr(this.vertices[3],this.vertices[2]),new Jr(this.vertices[7],this.vertices[6]),new Jr(this.vertices[4],this.vertices[5]),new Jr(this.vertices[0],this.vertices[4]),new Jr(this.vertices[1],this.vertices[5]),new Jr(this.vertices[2],this.vertices[6]),new Jr(this.vertices[3],this.vertices[7])],this.centerEdges=this.edges.map(t=>t.getCenter(new M))}computeFaces(){this.vertices.length>0&&this.computeVertices(),this.faces=[new M().copy(this.vertices[0]).sub(this.vertices[2]).multiplyScalar(.5).add(this.vertices[2]),new M().copy(this.vertices[7]).sub(this.vertices[5]).multiplyScalar(.5).add(this.vertices[5]),new M().copy(this.vertices[4]).sub(this.vertices[1]).multiplyScalar(.5).add(this.vertices[1]),new M().copy(this.vertices[3]).sub(this.vertices[6]).multiplyScalar(.5).add(this.vertices[6]),new M().copy(this.vertices[4]).sub(this.vertices[3]).multiplyScalar(.5).add(this.vertices[3]),new M().copy(this.vertices[1]).sub(this.vertices[6]).multiplyScalar(.5).add(this.vertices[6])]}};function du(i){let e=[];for(let t in i){let r=i[t];delete r.metadata,e.push(r)}return e}function YF(i){let e=[];for(let t in i)e.push(i[t]);return e}var Op=i=>class extends i{hasEntityChild(){return this.children.some(t=>Zo(t))}isDescendantOf(t){t instanceof ot&&(t=t.uuid);let r=this;for(;r.parent;){if(r.parent.uuid===t)return!0;r=r.parent}return!1}attach(t,r){this.updateWorldMatrix(!0,!1);let n=new Ae().copy(this.matrixWorld).invert();return t.parent!==null&&(t.parent.updateWorldMatrix(!0,!1),n.multiply(t.parent.matrixWorld)),Zo(t)?t.hiddenMatrix.premultiply(n):t.applyMatrix4(n),t.updateWorldMatrix(!1,!1),this.add(t),r!==void 0&&(this.children.pop(),this.children.splice(r,0,t)),this}copy(t,r=!0){if(this.name=t.name,this.up.copy(t.up),this.position.copy(t.position),this.rotation.order=t.rotation.order,this.quaternion.copy(t.quaternion),this.scale.copy(t.scale),this.matrix.copy(t.matrix),this.matrixWorld.copy(t.matrixWorld),this.matrixAutoUpdate=t.matrixAutoUpdate,this.matrixWorldNeedsUpdate=t.matrixWorldNeedsUpdate,this.layers.mask=t.layers.mask,this.visible=t.visible,this.castShadow=t.castShadow,this.receiveShadow=t.receiveShadow,this.frustumCulled=t.frustumCulled,this.renderOrder=t.renderOrder,this.userData=JSON.parse(JSON.stringify(t.userData)),r===!0)for(let n=0;n<t.children.length;n++){let s=t.children[n];this.add(s.clone())}return this}toJSON(t){let r=t===void 0,n={object:{uuid:"",objectType:""}};t===void 0&&(t={geometries:{},materials:{},textures:{},images:{},interactionStates:{},nodes:{}},n.metadata={version:1.5,type:"Object",generator:"Object3D.toJSON"});let s={uuid:this.uuid,objectType:this.type};if(this.name!==""&&(s.name=this.name),s.matrix=this.matrix.toArray(),this.castShadow===!0&&(s.castShadow=!0),this.receiveShadow===!0&&(s.receiveShadow=!0),this.visible===!1&&(s.visible=!1),this.frustumCulled===!1&&(s.frustumCulled=!1),this.renderOrder!==0&&(s.renderOrder=this.renderOrder),s.layers=this.layers.mask,JSON.stringify(this.userData)!=="{}"&&(s.userData=this.userData),this.children.length>0){s.children=[];for(let o of this.children)(Zo(o)||o instanceof bn)&&s.children.push(o.toJSON(t).object)}if(r){let o=du(t.geometries),a=du(t.materials),l=du(t.textures),c=du(t.images),h=du(t.interactionStates),u=YF(t.nodes);o.length>0&&(n.geometries=o),a.length>0&&(n.materials=a),l.length>0&&(n.textures=l),c.length>0&&(n.images=c),h.length>0&&(n.interactionStates=h),u.length>0&&(n.nodes=u)}return n.object=s,n}fromJSON(t){return this.uuid=t.uuid,t.name!==void 0&&(this.name=t.name),t.matrix!==void 0?(this.matrix.fromArray(t.matrix),t.matrixAutoUpdate!==void 0&&(this.matrixAutoUpdate=t.matrixAutoUpdate),this.matrixAutoUpdate&&this.matrix.decompose(this.position,this.quaternion,this.scale)):(t.position!==void 0&&this.position.fromArray(t.position),t.rotation!==void 0&&this.rotation.fromArray(t.rotation),t.quaternion!==void 0&&this.quaternion.fromArray(t.quaternion),t.scale!==void 0&&this.scale.fromArray(t.scale)),this.castShadow=t.castShadow!==void 0,this.receiveShadow=t.receiveShadow!==void 0,t.visible!==void 0&&(this.visible=t.visible),t.frustumCulled!==void 0&&(this.frustumCulled=t.frustumCulled),t.renderOrder!==void 0&&(this.renderOrder=t.renderOrder),t.layers!==void 0&&(this.layers.mask=t.layers),t.userData!==void 0&&(this.userData=t.userData),this}};var Xn=i=>"isEntity"in i,q1=i=>"isAbstractMesh"in i,Qn=i=>class extends Op(i){constructor(){super(...arguments);this.objectType="";this.isEntity=!0;this.raycastLock=!1;this.scaleLock=!1;this.hiddenMatrix=new Ae;this._singleBBox=new fu;this._recursiveBBox=new fu;this.singleBBoxNeedsUpdate=!0;this.recursiveBBoxNeedsUpdate=!0;this.forceComputeSize=!1}set visibility(r){this.visible=r;for(let n of this.children)Xn(n)&&n.traverseEntity(s=>{ms(s)&&s.visible&&(s.objectHelper.visible=r)})}get visibility(){return this.visible}get singleBBox(){return this.singleBBoxNeedsUpdate&&(this.singleBBoxNeedsUpdate=!1,this._singleBBox.setFromObjectSize(this,!1),this._singleBBox.computeVertices(),this._singleBBox.computeEdges(),this._singleBBox.computeFaces()),this._singleBBox}get recursiveBBox(){return this.recursiveBBoxNeedsUpdate&&(this.recursiveBBoxNeedsUpdate=!1,this._recursiveBBox.setFromObjectSize(this,!0),this._recursiveBBox.computeVertices(),this._recursiveBBox.computeEdges(),this._recursiveBBox.computeFaces()),this._recursiveBBox}resetBBoxNeedsUpdate(){this.singleBBoxNeedsUpdate=!0,this.recursiveBBoxNeedsUpdate=!0,this.traverseAncestors(r=>{Xn(r)&&(r.singleBBoxNeedsUpdate=!0,r.recursiveBBoxNeedsUpdate=!0)}),this.traverseEntity(r=>{r.singleBBoxNeedsUpdate=!0,r.recursiveBBoxNeedsUpdate=!0})}traverseEntity(r){r(this);for(let n of this.children)Xn(n)&&n.traverseEntity(r)}updateMatrixWorld(r){this.matrixAutoUpdate&&this.updateMatrix(),(this.matrixWorldNeedsUpdate||r)&&(this.parent===null?this.matrixWorld.multiplyMatrices(this.hiddenMatrix,this.matrix):(this.matrixWorld.multiplyMatrices(this.parent.matrixWorld,this.hiddenMatrix),this.matrixWorld.multiplyMatrices(this.matrixWorld,this.matrix)),this.matrixWorldNeedsUpdate=!1,r=!0);for(let n of this.children)n.updateMatrixWorld(r)}updateWorldMatrix(r,n){let s=this.parent;if(r&&s!==null&&s.updateWorldMatrix(!0,!1),this.matrixAutoUpdate&&this.updateMatrix(),this.parent===null?this.matrixWorld.multiplyMatrices(this.hiddenMatrix,this.matrix):(this.matrixWorld.multiplyMatrices(this.parent.matrixWorld,this.hiddenMatrix),this.matrixWorld.multiplyMatrices(this.matrixWorld,this.matrix)),n)for(let o of this.children)o.updateWorldMatrix(!1,!0)}shallowClone(r){return new this.constructor().shallowCopy(this,r)}shallowCopy(r,n=!0){if(super.copy(r,!1),this.raycastLock=r.raycastLock,this.scaleLock=r.scaleLock,this.hiddenMatrix.copy(r.hiddenMatrix),n===!0)for(let s of r.children)Xn(s)&&this.add(s.shallowClone());return this}clone(r){return new this.constructor().copy(this,r)}copy(r,n=!0){if(super.copy(r,!1),this.raycastLock=r.raycastLock,this.scaleLock=r.scaleLock,this.hiddenMatrix.copy(r.hiddenMatrix),n===!0)for(let s of r.children)Xn(s)&&this.add(s.clone());return this}keepChildrenMatrixWorld(){let r=new Ae,n=this.matrixWorld.clone();this.updateWorldMatrix(!1,!1),r.copy(this.matrixWorld).invert(),r.multiply(n);for(let s of this.children)Xn(s)&&s.hiddenMatrix.premultiply(r)}toJSON(r){let n=super.toJSON(r),s=n.object;return this.raycastLock===!0&&(s.raycastLock=!0),this.scaleLock===!0&&(s.scaleLock=!0),s.hiddenMatrix=this.hiddenMatrix.toArray(),n}fromJSON(r){return super.fromJSON(r),r.raycastLock!==void 0&&(this.raycastLock=r.raycastLock),r.scaleLock!==void 0&&(this.scaleLock=r.scaleLock),this.hiddenMatrix.fromArray(r.hiddenMatrix),this}fromObject3D(r){let n=r.children;return r.children=[],Object.assign(r,{raycastLock:!1,scaleLock:!1,hiddenMatrix:new Ae}),this.copy(r),r.children=n,this}toObjectTransformState(r=[]){this.updateWorldMatrix(!0,!1);let n={position:this.position.toArray(),rotation:[this.rotation.x,this.rotation.y,this.rotation.z],scale:this.scale.toArray(),hiddenMatrix:this.hiddenMatrix.toArray()};return wl(n,r)}fromObjectTransformState(r){return r.position&&this.position.fromArray(r.position),r.rotation&&this.rotation.fromArray(r.rotation),r.scale&&this.scale.fromArray(r.scale),r.hiddenMatrix&&this.hiddenMatrix.fromArray(r.hiddenMatrix),this.updateMatrix(),this}toState(r=[]){let n=se({name:this.name,visible:this.visible,raycastLock:this.raycastLock},this.toObjectTransformState(r));return wl(n,r)}fromState(r,n){return r.name&&(this.name=r.name),r.raycastLock!==void 0&&(this.raycastLock=r.raycastLock),r.type!=="OrthographicCamera"&&r.type!=="PerspectiveCamera"&&(this.matrixAutoUpdate=!1),r.visible!==void 0&&(this.visibility=r.visible),this.fromObjectTransformState(r),this}};var pu=class extends ot{constructor(t,r={}){super();this.object=t;let n=t.recursiveBBox.getSize(new M),s=.1;this.parameters=Fd.defaultData(n.toArray(),s),Vo(this.parameters,r),this.update(),this.setHideBase(this.parameters.hideBase)}refreshMaterial(){if("material"in this.object)for(let t of this.children)t.material=this.object.material}setHideBase(t){if("material"in this.object){if(Array.isArray(this.object.material)){if(this.children.length>0){for(let r of this.object.material)r.visible=!0;if(t){let r=this.object.material.map(n=>n.clone());for(let n of this.children)n.material=r}else for(let r of this.children)r.material=this.object.material}for(let r of this.object.material)r.visible=!t}else{if(this.children.length>0)if(this.object.material.visible=!0,t){let r=this.object.material.clone();for(let n of this.children)n.material=r}else for(let r of this.children)r.material=this.object.material;this.object.material.visible=!t}this.parameters.hideBase=t}}update(){switch(this._updateCount(),this.parameters.type){case"radial":this._updateRadial(this.parameters);break;case"linear":this._updateLinear(this.parameters);break;case"grid":this._updateGrid(this.parameters)}this.children.forEach(t=>t.updateMatrix())}_updateCount(){let t=this.parameters.type==="grid"?this.parameters.grid.count[0]*this.parameters.grid.count[1]*this.parameters.grid.count[2]:this.parameters.count;if(this.children.length!==t)if(this.children.length<t)for(let r=0,n=t-this.children.length;r<n;++r){let s=this.object.shallowClone(!1);s.visible=!0,this.add(s),this.parameters.hideBase&&this.setHideBase(!0)}else for(let r=0,n=this.children.length-t;r<n;++r)this.remove(this.children[0])}_updateRadial(t){let r=t.radial,n=r.start*et.DEG2RAD,s=r.end*et.DEG2RAD,o=n-s,a=new yn(r.rotation[0]*et.DEG2RAD,r.rotation[1]*et.DEG2RAD,r.rotation[2]*et.DEG2RAD),l;switch(r.axis){case"z":l=new M(0,0,1);break;case"y":l=new M(0,1,0);break;default:case"x":l=new M(1,0,0);break}for(let[c,h]of this.children.entries()){h.hiddenMatrix.identity(),h.scale.x=r.scale[0],h.scale.y=r.scale[1],h.scale.z=r.scale[2],h.position.setScalar(0);let u=o/t.count*c-n;switch(r.axis){case"x":h.rotation.set(0,u,0);break;case"y":h.rotation.set(0,0,u);break;case"z":h.rotation.set(u,0,0);break}h.translateOnAxis(l,r.radius),h.position.x+=r.position[0],h.position.y+=r.position[1],h.position.z+=r.position[2],r.alignment===!0?(h.rotation.x+=a.x,h.rotation.y+=a.y,h.rotation.z+=a.z):h.rotation.copy(a)}}_updateLinear(t){if(t.type!=="linear")throw new Error;let r=t.linear,n=new yn(r.rotation[0]*et.DEG2RAD,r.rotation[1]*et.DEG2RAD,r.rotation[2]*et.DEG2RAD);for(let[s,o]of this.children.entries())o.hiddenMatrix.identity(),o.scale.x=1+(r.scale[0]-1)*s,o.scale.y=1+(r.scale[1]-1)*s,o.scale.z=1+(r.scale[2]-1)*s,o.rotation.x=n.x*s,o.rotation.y=n.y*s,o.rotation.z=n.z*s,o.position.x=r.position[0]*s,o.position.y=r.position[1]*s,o.position.z=r.position[2]*s}_updateGrid(t){let r=0,n=t.grid;if(n.useCenter===!0){let s={x:n.count[0]%2===0?2:1,y:n.count[1]%2===0?2:1,z:n.count[2]%2===0?2:1},o=new M(n.size[0]*(n.count[0]-s.x)*.5,n.size[1]*(n.count[1]-s.y)*.5,n.size[2]*(n.count[2]-s.z)*.5);for(let a=0;a<n.count[0];a++)for(let l=0;l<n.count[1];l++)for(let c=0;c<n.count[2];c++){let h=this.children[r++];h.hiddenMatrix.identity(),h.scale.setScalar(1),h.rotation.set(0,0,0),h.position.x=n.size[0]*a-o.x,h.position.y=n.size[1]*l-o.y,h.position.z=n.size[2]*c-o.z}}else for(let s=0;s<n.count[0];s++)for(let o=0;o<n.count[1];o++)for(let a=0;a<n.count[2];a++){let l=this.children[r++];l.hiddenMatrix.identity(),l.scale.setScalar(1),l.rotation.set(0,0,0),l.position.x=n.size[0]*s,l.position.y=-n.size[1]*o,l.position.z=-n.size[2]*a}}fromJSON(t){return this}toJSON(){return{}}fromClonerState(t){return t.hideBase!==void 0&&this.setHideBase(t.hideBase),Vo(this.parameters,t),this.update(),this}};var kt=class extends Qn(Vt){constructor(t,r){super(t,r);this.isAbstractMesh=!0;this.isBooleanMesh=!1;this.booleanMeshSetAddress=-1;this.booleanWasTransformed=!1;this.booleanMatrixInvOld=new Ae;this.booleanExclude=null;Array.isArray(r)&&(this.selectedMaterial=0,t.groups.length===0&&t.addGroup(0,t.getAttribute("position").count,0))}get cloner(){return this._cloner}set cloner(t){this._cloner&&this.remove(this._cloner),t&&this.add(t),this._cloner=t}getSelectedMaterial(t){return Array.isArray(this.material)?(this.selectedMaterial===void 0&&(this.selectedMaterial=t!=null?t:0),this.material[t!=null?t:this.selectedMaterial]):this.material}setSelectedMaterial(t,r){Array.isArray(this.material)?(this.selectedMaterial===void 0&&(this.selectedMaterial=r!=null?r:0),r=r!=null?r:this.selectedMaterial,this.material[r].dispose(),this.material[r]=t):(this.material.dispose(),this.material=t)}updateGeometry(t){let r=this.geometry,n=Cv[r.userData.type],s=this.objectType==="NonParametric"?Object.assign({},r.userData,{geometry:r}):r.userData,o=n.build(n.normalizeInputs(t,s)),a=r.uuid;if(this.geometry.dispose(),this.geometry=o,this.geometry.uuid=a,this.geometry.computeBoundingSphere(),this.cloner)for(let l of this.cloner.children)l.geometry=this.geometry}resizeGeometry(t,r,n){Xh.resizeGeometry(this.geometry,{width:t,height:r,depth:n})}shallowClone(t){return new this.constructor(this.geometry,this.material).shallowCopy(this,t)}clone(t){let r=this.objectType==="NonParametric"?Object.assign({},this.geometry.userData,{geometry:this.geometry.clone()}):this.geometry.userData,n=mu(r),s=Array.isArray(this.material)?this.material.map(o=>o.clone()):this.material.clone();return new this.constructor(n,s).copy(this,t)}copy(t,r=!0){return super.copy(t,r),t.cloner&&(this.cloner=new pu(t,t.cloner.parameters),this.add(this.cloner)),this}setFromClonerState(t){t===null?this.cloner=void 0:(this.cloner===void 0&&(this.cloner=new pu(this)),this.cloner.fromClonerState(t))}fromState(t,r){var n,s,o;return super.fromState(t),t.type==="Mesh"&&(this.setFromClonerState(t.cloner),this.castShadow=(n=t.castShadow)!=null?n:!0,this.receiveShadow=(s=t.receiveShadow)!=null?s:!0,this.booleanExclude=(o=t.booleanExclude)!=null?o:null),this}freeBooleanPointer(){this.booleanMeshSetAddress!==-1&&(Jn.freeMeshSet(this.booleanMeshSetAddress),this.booleanMeshSetAddress=-1)}invalidateDownstreamBooleanData(t=!1){return t?this.booleanWasTransformed=!0:this.freeBooleanPointer(),Lt(this.parent)?this.parent.invalidateDownstreamBooleanData():this}invalidateUpstreamBooleanData(){this.freeBooleanPointer();for(let t of this.children)er(t)&&(t.freeBooleanPointer(),Lt(t)&&t.invalidateUpstreamBooleanData())}};var XF=new M(0,0,1),Y1=new M,X1=new M,Q1=new Ft,ho=class extends kt{constructor(t=Hr.create({}),r=new Yr({side:or})){var n;super(t,r);this.recursiveSelection=!1;this.objectType="VectorObject";this.eventDispatcher=new Yt;this._onShapeUpdate=()=>{this.updateGeometry({}),this.geometry.computeBoundingSphere(),this.geometry.computeBoundingBox()};this.castShadow=!0,this.receiveShadow=!0,this.forceComputeSize=!0,this.shape=t.userData.shape,(n=this.shape.eventDispatcher)==null||n.addEventListener("update",this._onShapeUpdate)}toJSON(t){let r=super.toJSON(t);return r.object.objectType="VectorObject",r}fromState(t){return super.fromState(t),this.shape.update(),this}setHelperVisibility(){}updateGeometry(t){if(super.updateGeometry(t),"userData"in this.geometry){let r=this.geometry.userData.parameters;this.eventDispatcher.dispatchEvent({type:"geometryUpdate",parameters:r})}}setShape(t){var r,n;this.shape&&((r=this.shape.eventDispatcher)==null||r.removeEventListener("update",this._onShapeUpdate)),this.shape=t,(n=this.shape.eventDispatcher)==null||n.addEventListener("update",this._onShapeUpdate)}updateWorldMatrix(t,r){super.updateWorldMatrix(t,r),Q1.getNormalMatrix(this.matrixWorld),Y1.copy(XF).applyMatrix3(Q1).normalize(),X1.setFromMatrixPosition(this.matrixWorld),this.shape.plane.setFromNormalAndCoplanarPoint(Y1,X1)}clone(t){let r=this.shape.clone(),n=this.material.clone(),s=this.geometry.userData,o=Hr.create(Object.assign({},s,{shape:r})),a=new ho(o,n).copy(this,t);return a.shape=r,r.update(),a}raycast(t,r){kt.prototype.raycast.call(this,t,r)}};function Fp(i,e){return QF(i)}function QF(i){let e={parameters:i,type:i.type};if(i.type==="VectorGeometry"){let r=Tt.createFromState(i.shape,i.width,i.height);e.shape=r}else i.type==="NonParametricGeometry"&&(i.data.groups&&i.data.groups.forEach(r=>{var n;return r.materialIndex=Math.max((n=r.materialIndex)!=null?n:0,0)}),e.geometry=new Ws().parse(i));let t;try{t=mu(e)}catch(r){console.error(r)}if(!t){let r=Tt.createFromState(El.defaultData(),100,100);e.shape=r,t=mu(e)}return t}var Ke;bp.then(i=>{Ke=i});var J1=new Float32Array([10,10,0,-10,10,0,-10,-10,0,10,-10,0]),K1=new Uint32Array([0,1,2,3]),Z1=new Uint8Array([4]),Kn=class{static build(i,e,t,r,n){var c,h;let s,o,a,l=(h=(c=i==null?void 0:i.phongAngle)!=null?c:e==null?void 0:e.phongAngle)!=null?h:35;if(r===!1&&(l=-1),i.positionWASM!==void 0){t&&t!==0&&(Ke.free_bvh(t),Ke.free_subdivision_surface(t));try{s=Kn.allocate(i,n)}catch(u){console.error(u,i),s=Kn.allocate({positionWASM:J1,indexWASM:K1,verticesPerFaceWASM:Z1},n)}Ke.set_destination_refinement_level(s,0),o=Kn.buildLevel(s,!0,l)}else s=t,i.phongAngle!==void 0&&(o=Kn.buildLevel(s,!0,l));return i.subdivisions!==void 0&&(Ke.set_destination_refinement_level(s,i.subdivisions),i.subdivisions>0?a=Kn.buildLevel(s,!1,l):a=null),{subdivPointer:s,originalGeometry:o,subdividedGeometry:a}}static primitiveToQuads(i,e){i.widthSegments>16&&(i.widthSegments=16),i.heightSegments>16&&(i.heightSegments=16),i.depthSegments>16&&(i.depthSegments=16),i.radialSegments>16&&(i.radialSegments=16),i.type==="DodecahedronGeometry"&&(i.detail=0);let t=i.shape!==void 0?e.geometry:Fp(i),r,n,s,o;return{positions:r,triIndices:o}=Iv(t.getAttribute("position"),t.getIndex()),{indices:n,verticesPerFace:s}=Rv(r,o,t),{positions:r,indices:n,verticesPerFace:s}}static allocate(i,e){var b;let t,r,n,s=[],o=[];i.positionWASM&&i.positionWASM.length>0?(t=i.positionWASM,r=i.indexWASM,n=i.verticesPerFaceWASM):(t=J1,r=K1,n=Z1);let a=t.length,l=r.length,c=n.length,h=t.length+s.length+o.length,u=r.length+n.length,f=h*Float32Array.BYTES_PER_ELEMENT+u*Uint32Array.BYTES_PER_ELEMENT,d=h*Float32Array.BYTES_PER_ELEMENT,p=u*Uint32Array.BYTES_PER_ELEMENT,m=Ke._malloc(f),g=new Float32Array(Ke.HEAPF32.buffer,m,h),v=new Uint32Array(Ke.HEAPU32.buffer,m+d,u);g.set(t,0),g.set(s,t.length),g.set(o,t.length+s.length),v.set(r,0),v.set(n,r.length);let y;(b=i==null?void 0:i.scaleBaked)!=null&&b.some(S=>S!==1)&&(y=new Ae().makeScale(...i.scaleBaked)),e&&(y?y.premultiply(e):y=e);let w=y?Ke.alloc_subdivision_surface2(m,a,m+d,l,m+d+r.length*Uint32Array.BYTES_PER_ELEMENT,c,y.elements):Ke.alloc_subdivision_surface(m,a,m+d,l,m+d+r.length*Uint32Array.BYTES_PER_ELEMENT,c);return Ke._free(m),w}static buildLevel(i,e,t,r,n){let s=n?Ke.get_mesh_data2(i,e?Ke.Level.CONTROL:Ke.Level.REFINED,t,n.elements):Ke.get_mesh_data(i,e?Ke.Level.CONTROL:Ke.Level.REFINED,t),o=8,a=Ke.HEAPU32.subarray(s>>2,(s>>2)+o),l=a.subarray(4,4+4),c=0,h=Ke.HEAPU32[a[c]>>2],u=Ke.HEAPF32.subarray(h>>2,(h>>2)+l[c]);c++;let f=Ke.HEAPU32[a[c]>>2],d=Ke.HEAPF32.subarray(f>>2,(f>>2)+l[c]);c++;let p=Ke.HEAPU32[a[c]>>2],m=Ke.HEAPU32.subarray(p>>2,(p>>2)+l[c]);c++;let g=Ke.HEAPU32[a[c]>>2],v=Ke.HEAPU32.subarray(g>>2,(g>>2)+l[c]);if(c++,r===void 0){let y=new De;if(y.setIndex(new Os(v,1)),y.setAttribute("position",new Te(u,3)),y.setAttribute("normal",new Te(d,3)),e){y.setAttribute("faceMap",new Os(m,1));let w=new Float32Array(d.length/3*4).fill(0);y.setAttribute("color",new Ve(w,4))}return Ke.free_mesh_data(s),y.userData.type="SubdivGeometry",y}r.getAttribute("position").copyArray(u),r.getAttribute("normal").copyArray(d),r.attributes.position.needsUpdate=!0,r.attributes.normal.needsUpdate=!0,Ke.free_mesh_data(s)}static buildControlCageWireframe(i,e,t){let r=Ke.get_wireframe_data_for_base_level(i),n=4,s=Ke.HEAPU32.subarray(r>>2,(r>>2)+n),o=s.subarray(2,2+2),a=0,l=Ke.HEAPU32[s[a]>>2],c=Ke.HEAPF32.subarray(l>>2,(l>>2)+o[a]);a++;let h=Ke.HEAPU32[s[a]>>2],u=Ke.HEAPU32.subarray(h>>2,(h>>2)+o[a]);if(e===void 0){let f=new De;f.setAttribute("position",new Te(c,3));let d=new Float32Array(c.length);for(let p=0,m=c.length;p<m;)d[p++]=t.r,d[p++]=t.g,d[p++]=t.b;return f.setAttribute("color",new Ve(d,3)),f.setIndex(new Os(u,1)),Ke.free_wireframe_data_for_base_level(r),f}e.getAttribute("position").copyArray(c),e.attributes.position.needsUpdate=!0,Ke.free_wireframe_data_for_base_level(r)}static updateCollabMesh(i,e,t){e||Ke.set_destination_refinement_level(i,1);let r=t?Ke.get_topological_data2(i,e?Ke.Level.CONTROL:Ke.Level.REFINED,t.elements):Ke.get_topological_data(i,e?Ke.Level.CONTROL:Ke.Level.REFINED),n=6,s=Ke.HEAPU32.subarray(r>>2,(r>>2)+n),o=s.subarray(3,3+3),a=0,l=Ke.HEAPU32[s[a]>>2],c=new Float32Array(Ke.HEAPF32.subarray(l>>2,(l>>2)+o[a]));a++;let h=Ke.HEAPU32[s[a]>>2],u=new Uint32Array(Ke.HEAPU32.subarray(h>>2,(h>>2)+o[a]));a++;let f=Ke.HEAPU32[s[a]>>2],d=new Uint8Array(Ke.HEAPU32.subarray(f>>2,(f>>2)+o[a]));return Ke.free_topological_data(r),{positions:c,indices:u,verticesPerFace:d}}};var $1=["getX","getY","getZ"];function Iv(i,e){let t={},r=e?e.count:i.count,n=0,s=[],o=[],a=1e4;for(let c=0;c<r;c++){let h=e?e.getX(c):c,u="";for(let f=0;f<3;f++)u+=`${~~(i[$1[f]](h)*a)},`;if(u in t)s.push(t[u]);else{for(let f=0;f<3;f++)o.push(i[$1[f]](h));t[u]=n,s.push(n),n++}}let l=[];for(let c=0;c<s.length;c+=3)s[c]===s[c+1]||s[c]===s[c+2]||s[c+1]===s[c+2]||l.push(s[c],s[c+1],s[c+2]);return{positions:o,triIndices:l}}var Up=new M,Pv=new M,Dv=new M,Lv=new M;function Rv(i,e,t){var s;let r=[],n=[];if(t.userData.shape!==void 0&&t.userData.parameters.depth===0){let o=t.userData.shape.extractShapePointsToFlatArray([]),a=0;for(let c=0;c<o.length;c+=2)a+=(o[c]-o[(c===0?o.length:c)-2])*(o[c+1]+o[(c===0?o.length:c)-1]);i.length=0;let l=0;if(a<0)for(let c=0;c<o.length;c+=2)i.push(o[c],o[c+1],0),r.push(l++);else for(let c=o.length-2;c>=0;c-=2)i.push(o[c],o[c+1],0),r.push(l++);return n.push(l),{indices:r,verticesPerFace:n}}for(let o=0,a=(s=t.capStartIndex)!=null?s:e.length;o<a;)if(e[o+1]===e[o+3]&&e[o+2]===e[o+5]||e[o+0]===e[o+3]&&e[o+2]===e[o+4]){Up.set(i[e[o]*3],i[e[o]*3+1],i[e[o]*3+2]),Pv.set(i[e[o+1]*3],i[e[o+1]*3+1],i[e[o+1]*3+2]),Dv.set(i[e[o+4]*3],i[e[o+4]*3+1],i[e[o+4]*3+2]),Lv.set(i[e[o+5]*3],i[e[o+5]*3+1],i[e[o+5]*3+2]),Pv.sub(Up).normalize(),Dv.sub(Up).normalize(),Lv.sub(Up).normalize();let l=Pv.cross(Dv).dot(Lv);Math.abs(l)>.005?(r.push(e[o],e[o+1],e[o+2]),n.push(3),o+=3):(r.push(e[o],e[o+1],e[o+4],e[o+5]),n.push(4),o+=6)}else r.push(e[o],e[o+1],e[o+2]),n.push(3),o+=3;if(t.capStartIndex!==void 0){let o=[],a=[],l=0;for(let c=0,h=0;c<i.length;c+=3,h++)i[c+2]===0&&(o.push(h),l++),i[c+2]===t.userData.parameters.depth&&a.push(h);if(t.userData.parameters.extrudeBevelSize===0){let c=a[0];a[0]=a[1],a[1]=c}o.reverse(),r.push(...o,...a),n.push(l,l)}return{indices:r,verticesPerFace:n}}var Jn={};_x(Jn,{calcBoolean:()=>ZF,calcBooleanTopological:()=>KF,freeMeshSet:()=>tU,getMeshSet:()=>$F,transformMeshSet:()=>eU});var tA,rA=new Promise(i=>{tA=i}),eA=!1;async function nA(){if(eA)return;let e=!1?".":"https://unpkg.com/@splinetool/boolean-wasm@0.9.60/build",[t,r]=await Promise.all([import("./boolean.js"),fetch(`${e}/boolean.wasm`).then(o=>o.arrayBuffer())]),s=await t.default({wasmBinary:r});tA(s),eA=!0}var gt,Kl;rA.then(i=>gt=i);function JF(i,e){let t,{positions:r,triIndices:n}=Iv(i.getAttribute("position"),i.getIndex()),s;if(e){let{indices:o,verticesPerFace:a}=Rv(r,n,i);s=a.length,t=[];for(let l=0,c=0;l<s;l++){t.push(a[l]);for(let h=0;h<a[l];h++)t.push(o[c++])}}else{let o=n.length;t=Array(o+o/3),s=0;for(let a=0,l=0;l<t.length;)t[l++]=3,s++,t[l++]=n[a++],t[l++]=n[a++],t[l++]=n[a++]}return{positions:r,faceIndices:t,nFaces:s}}function iA(i){let e=i.length,t=e*Uint32Array.BYTES_PER_ELEMENT,r=e*Float32Array.BYTES_PER_ELEMENT,n=Number.isInteger(i[0])?t:r,s=gt._malloc(n);return(Number.isInteger(i[0])?new Uint32Array(gt.HEAPU32.buffer,s,e):new Float32Array(gt.HEAPF32.buffer,s,e)).set(i,0),s}function sA(i){switch(i){case 0:return gt.OP.UNION;case 1:return gt.OP.INTERSECTION;case 2:return gt.OP.A_MINUS_B;case 3:return gt.OP.B_MINUS_A;case 4:return gt.OP.SYMMETRIC_DIFFERENCE;case 5:return gt.OP.ALL;default:throw new Error("Unknown boolean operation "+i)}}function KF(i,e){Kl===void 0&&(Kl=gt.init_csg());let t=iA(i),r=gt.csg_calc_topological(Kl,t,i.length,sA(e));gt._free(t);let n=6,s=gt.HEAPU32.subarray(r>>2,(r>>2)+n),o=s.subarray(3,3+3),a=0,l=gt.HEAPU32[s[a]>>2],c=new Float32Array(gt.HEAPF32.subarray(l>>2,(l>>2)+o[a]));a++;let h=gt.HEAPU32[s[a]>>2],u=new Uint32Array(gt.HEAPU32.subarray(h>>2,(h>>2)+o[a]));a++;let f=gt.HEAPU32[s[a]>>2],d=new Uint8Array(gt.HEAPU32.subarray(f>>2,(f>>2)+o[a]));return gt.free_mesh_data(r),{positions:c,indices:u,verticesPerFace:d}}function ZF(i,e,t,r){Kl===void 0&&(Kl=gt.init_csg());let n=iA(i),s=gt.csg_calc(Kl,n,i.length,r,sA(e));gt._free(n);let o=5,a=gt.HEAPU32.subarray(s>>2,(s>>2)+o),l=a.subarray(2,2+3),c=0,h=gt.HEAPU32[a[c]>>2],u=gt.HEAPF32.subarray(h>>2,(h>>2)+l[c]);c++;let f=gt.HEAPU32[a[c]>>2],d=gt.HEAPF32.subarray(f>>2,(f>>2)+l[c]);c++;let p=l[c];t.setAttribute("position",new Te(u,3)),t.setAttribute("normal",new Te(d,3));let m=gt.HEAPF32.subarray((s>>2)+5,(s>>2)+5+6);return t.boundingSphere===null&&(t.boundingSphere=new Lr),t.boundingSphere.center.set(m[0],m[1],m[2]),t.boundingSphere.radius=(m[3]**2+m[4]**2+m[5]**2)**.5,t.userData.parameters={width:m[3]*2,height:m[4]*2,depth:m[5]*2},gt.free_mesh_data(s),p}function $F(i,e){if(gt===void 0)return-1;let t,r,n;if(e&&i.userData.positions!==void 0){let m=i.userData;n=m.verticesPerFace.length,t=m.positions,r=Array(m.verticesPerFace.reduce((g,v)=>g+v,0)+n);for(let g=0,v=0,y=0;g<m.verticesPerFace.length;g++){r[y++]=m.verticesPerFace[g];for(let w=0;w<m.verticesPerFace[g];w++)r[y++]=m.indices[v++]}}else({positions:t,faceIndices:r,nFaces:n}=JF(i,e));let s=t.length,o=r.length,a=t.length,l=r.length,c=a*Float32Array.BYTES_PER_ELEMENT+l*Uint32Array.BYTES_PER_ELEMENT,h=a*Float32Array.BYTES_PER_ELEMENT,u=l*Uint32Array.BYTES_PER_ELEMENT,f=gt._malloc(c),d=new Float32Array(gt.HEAPF32.buffer,f,a),p=new Uint32Array(gt.HEAPU32.buffer,f+h,l);return d.set(t,0),p.set(r,0),gt.get_csg_mesh(f,s,f+h,o,n)}function eU(i,e){gt.transform_csg_mesh(i,e.elements)}function tU(i){gt.free_csg_mesh(i)}var Cv={ConeGeometry:WM,CubeGeometry:jM,CylinderGeometry:HM,DodecahedronGeometry:qM,EllipseGeometry:p1,HelixGeometry:v1,IcosahedronGeometry:x1,LatheGeometry:b1,NonParametricGeometry:w1,PolygonGeometry:S1,PyramidGeometry:M1,RectangleGeometry:vp,SphereGeometry:A1,PlaneGeometry:T1,BackdropGeometry:_1,StarGeometry:E1,TextFrameGeometry:xp,TorusGeometry:C1,TorusKnotGeometry:P1,TriangleGeometry:D1,VectorGeometry:Hr},mu=i=>Cv[i.type].create(i);var oA=new Ae;function Bv(i){let e=!1;return i.scene.objects.traverse((t,r)=>{var n;((n=r.geometry)==null?void 0:n.type)==="BooleanGeometry"&&(e=!0)}),e}var zp=class extends kt{constructor(t=new De,r=new pn){super(t,r);this.booleanOp=2;this.phongAngle=35;this.meshSetAddresses=[];this.needsTransformForDownstream=!1;this.isBooleanMesh=!0,this.castShadow=!0,this.receiveShadow=!0,this.geometry.userData.parameters={width:0,height:0,depth:0},this.onAfterRender=this.recomputeBoolean.bind(this)}reInit(){this.isBooleanMesh=!0,this.meshSetAddresses=[],this.needsTransformForDownstream=!1,this.geometry.userData.parameters={width:0,height:0,depth:0},this.onAfterRender=this.recomputeBoolean.bind(this)}recomputeBoolean(t){var n;if(this.booleanMeshSetAddress!==-1)return;for(let s=0;s<this.children.length;s++){let o=this.children[s];Lt(o)&&o.recomputeBoolean(t===!0)}this.meshSetAddresses=[];for(let s=0;s<this.children.length;s++){let o=this.children[s];if(q1(o)&&o.booleanExclude===!1&&((n=o.geometry.attributes.position)==null?void 0:n.count)>0&&o.geometry.drawRange.count>0){if(o.booleanMeshSetAddress===-1){if(o.booleanMeshSetAddress=Jn.getMeshSet(o.geometry,t===!0),o.booleanMeshSetAddress===-1)return;Jn.transformMeshSet(o.booleanMeshSetAddress,o.matrix),o.booleanMatrixInvOld.copy(o.matrix).invert(),o.booleanWasTransformed=!1}else Lt(o)&&o.needsTransformForDownstream===!0?(Jn.transformMeshSet(o.booleanMeshSetAddress,o.matrix),o.needsTransformForDownstream=!1):o.booleanWasTransformed===!0&&(oA.multiplyMatrices(o.matrix,o.booleanMatrixInvOld),Jn.transformMeshSet(o.booleanMeshSetAddress,oA),o.booleanMatrixInvOld.copy(o.matrix).invert(),o.booleanWasTransformed=!1);this.meshSetAddresses.push(o.booleanMeshSetAddress)}}if(this.meshSetAddresses.length===0){this.geometry.setDrawRange(0,0);return}if(t===!0)return Jn.calcBooleanTopological(this.meshSetAddresses,this.booleanOp);let r=this.geometry;r.dispose(),this.geometry=new De,this.geometry.userData=r.userData,this.geometry.boundingSphere=r.boundingSphere;try{this.booleanMeshSetAddress=Jn.calcBoolean(this.meshSetAddresses,this.booleanOp,this.geometry,this.phongAngle)}catch(s){this.booleanMeshSetAddress=0,console.error(s)}this.booleanMatrixInvOld.copy(this.matrix).invert(),this.needsTransformForDownstream=!0}toJSON(t){let r=super.toJSON(t);return r.object.objectType="Mesh3D",r}updateGeometry(t){let r=t.parameters;r.operation!==void 0&&(this.booleanOp=r.operation),r.phongAngle!==void 0&&(this.phongAngle=r.phongAngle),this.invalidateDownstreamBooleanData().recomputeBoolean()}};var Gi=i=>{var e;return e=class extends i{constructor(){super(...arguments);this.isObjectHelper=!0}},e.geometryHelper=new vn(30,30,30),e};var Gp=new oi,Nv=new Lr,aA=new Ae,ki=(i,e,t,r,n=!1)=>{let s=e,o=i.matrixWorld;if(s.boundingSphere===null&&s.computeBoundingSphere(),Nv.copy(s.boundingSphere),Nv.applyMatrix4(o),t.ray.intersectsSphere(Nv)===!1||(aA.copy(o).invert(),Gp.copy(t.ray).applyMatrix4(aA),s.boundingBox!==null&&Gp.intersectsBox(s.boundingBox)===!1))return;let a,l,c,h,u=s.index,f=s.attributes.position,d=s.drawRange,p,m;if(n===!1){let v=Math.max(0,d.start),y=Math.min(u.count,d.start+d.count);for(p=v,m=y;p<m;p+=3)if(l=u.getX(p),c=u.getX(p+1),h=u.getX(p+2),a=g(i,t,Gp,f,l,c,h),a){a.faceIndex=Math.floor(p/3),r.push(a);return}}else{let y=s.attributes.position,w=new M,b=new M,S=new M,T=new M,A=2,_=1/((i.scale.x+i.scale.y+i.scale.z)/3),E=_*_,C=Math.max(0,d.start),I=Math.min(y.count,d.start+d.count);for(let N=C,R=I-1;N<R;N+=A){if(w.fromBufferAttribute(y,N),b.fromBufferAttribute(y,N+1),Gp.distanceSqToSegment(w,b,T,S)>E)continue;T.applyMatrix4(i.matrixWorld);let G=t.ray.origin.distanceTo(T);G<t.near||G>t.far||r.push({distance:G,point:S.clone().applyMatrix4(i.matrixWorld),object:i})}}function g(v,y,w,b,S,T,A){let x=new M,_=new M,E=new M,C=new M,I=new M;if(x.fromBufferAttribute(b,S),_.fromBufferAttribute(b,T),E.fromBufferAttribute(b,A),w.intersectTriangle(x,_,E,!1,C)===null)return null;I.copy(C),I.applyMatrix4(v.matrixWorld);let R=y.ray.origin.distanceTo(I);return R<y.near||R>y.far?null:{faceIndex:1,distance:R,point:I.clone(),object:v}}};var kp=new M,Zn=new Gn,Ov=class extends li{constructor(t){let r=new De,n=new kr({color:16777215,vertexColors:!0,toneMapped:!1}),s=[],o=[],a={},l=new be(15711266),c=new be(15711266),h=new be(2857471);u("n1","n2",l),u("n2","n4",l),u("n4","n3",l),u("n3","n1",l),u("f1","f2",l),u("f2","f4",l),u("f4","f3",l),u("f3","f1",l),u("n1","f1",l),u("n2","f2",l),u("n3","f3",l),u("n4","f4",l),u("p","n1",c),u("p","n2",c),u("p","n3",c),u("p","n4",c),u("u1","u2",h),u("u2","u3",h),u("u3","u1",h);function u(d,p,m){f(d,m),f(p,m)}function f(d,p){s.push(0,0,0),o.push(p.r,p.g,p.b),a[d]===void 0&&(a[d]=[]),a[d].push(s.length/3-1)}r.setAttribute("position",new Te(s,3)),r.setAttribute("color",new Te(o,3));super(r,n);this.type="CameraHelper",this.camera=t,this.camera.updateProjectionMatrix&&this.camera.updateProjectionMatrix(),this.matrix=t.matrixWorld,this.matrixAutoUpdate=!1,this.pointMap=a,this.update()}update(){let t=this.geometry,r=this.pointMap,n=!0;Zn.projectionMatrixInverse.elements=[.5112609807824982,-0,-0,-0,-0,.41421356237309503,-0,-0,-0,-0,-0,-.099999,-0,-0,-1.0000000000000002,.100001];let s=1,o=1,a=n?.8:1e-4;yi("n1",r,t,Zn,-s,-o,a),yi("n2",r,t,Zn,s,-o,a),yi("n3",r,t,Zn,-s,o,a),yi("n4",r,t,Zn,s,o,a);let l=a;yi("f1",r,t,Zn,-s,-o,l),yi("f2",r,t,Zn,s,-o,l),yi("f3",r,t,Zn,-s,o,l),yi("f4",r,t,Zn,s,o,l);let c=l,h=.5;yi("u1",r,t,Zn,s*.7*h,o*1.1,c),yi("u2",r,t,Zn,-s*.7*h,o*1.1,c),yi("u3",r,t,Zn,0,o*(1.1+.9*h),c),t.getAttribute("position").needsUpdate=!0}dispose(){this.geometry.dispose(),this.material.dispose()}};function yi(i,e,t,r,n,s,o){kp.set(n,s,o).unproject(r);let a=e[i];if(a!==void 0){let l=t.getAttribute("position");for(let c=0,h=a.length;c<h;c++)l.setXYZ(a[c],kp.x,kp.y,kp.z)}}var Vp=class extends Gi(Ov){constructor(t){super(t);this.object=t;this.object=t,this.name=`CombinedCameraHelper: ${t.uuid}`}updateMatrixWorld(t){super.updateMatrixWorld(t),this.updateTarget()}updateTarget(){let t=this.object.getTarget();this.updateWorldMatrix(!0,!1),this.worldToLocal(t)}raycast(t,r){ki(this.object,this.geometry,t,r,!0)}};var Zl=class extends Gi(Xf){constructor(t,r=15,n=10066329){super(t,r,n);this.object=t;this.name=`DirectionalLightHelper: ${t.uuid}`}raycast(t,r){ki(this.object,Zl.geometryHelper,t,r)}};var $l=class extends Gi(Qf){constructor(t,r=15){super(r);this.object=t;this.object.updateMatrixWorld(),this.name=`EmptyObjectHelper: ${t.uuid}`,this.matrix=t.matrixWorld,this.matrixAutoUpdate=!1}raycast(t,r){ki(this.object,$l.geometryHelper,t,r)}update(){}};var ec=class extends Gi(Yf){constructor(t,r=15,n=6710886){super(t,r,n);this.object=t;this.name=`PointLightHelper: ${t.uuid}`}raycast(t,r){ki(this.object,ec.geometryHelper,t,r)}};var Hp=class extends Gi(qf){constructor(t,r=6710886){super(t,r);this.object=t;this.name=`SpotLightHelper: ${t.uuid}`}raycast(t,r){ki(this.object,Hp.geometryHelper,t,r)}update(){if(this.object!==void 0){let t=Hp._vector,r=this.object.distance?this.object.distance:1e3,n=r*Math.tan(this.object.angle);this.cone.scale.set(n,n,r),t.setFromMatrixPosition(this.object.target.matrixWorld),this.cone.lookAt(t);let s=this.color!==void 0?this.color:this.light.color;if(this.cone.material instanceof Array)for(let o=0,a=this.cone.material.length;o<a;o++)this.cone.material[o].color.set(s);else this.cone.material.color.set(s)}}},gu=Hp;gu._vector=new M;var Vi=(i,e)=>class extends i{constructor(){super(...arguments);this.objectHelper=new e(this);this.enableHelper=!1}set visibility(n){this.visible=n,this.setHelperVisibility(n),this.setHelperChildrenVisibility(n)}get visibility(){return this.visible}get geometryHelper(){return e.geometryHelper}setHelperVisibility(n){this.objectHelper.visible=n}setHelperChildrenVisibility(n){for(let s of this.children)Xn(s)&&s.traverseEntity(o=>{ms(o)&&o.visible&&(o.objectHelper.visible=n)})}raycast(n,s){this.objectHelper.raycast(n,s)}copy(n,s=!0){return super.copy(n,s),n.enableHelper!==void 0&&(this.enableHelper=n.enableHelper),n.objectHelper!==void 0&&(this.objectHelper.visible=n.objectHelper.visible),this}toJSON(n){let s=super.toJSON(n),o=s.object;return o.enableHelper=this.enableHelper,s}fromJSON(n){return super.fromJSON(n),n.enableHelper!==void 0&&(this.enableHelper=!0),this}fromLightState(n,s){if(this.objectType==="LightDirectional"||this.objectType==="LightPoint"||this.objectType==="LightSpot"){let o=this;n.color!==void 0&&(o.color=pr(n.color,s)),n.intensity!==void 0&&(o.intensity=n.intensity),n.depth!==void 0&&(o.shadow.camera.far=n.depth,o.shadow.needsUpdate=!0),n.shadows!==void 0&&(this.castShadow=n.shadows),n.helper!==void 0&&(this.enableHelper=n.helper,o.gizmos.shadowmap.visible=n.helper)}return this}};var tc=new M,Fv=new M,Bn=class extends Vi(Qn(Gn),Vp){constructor(t=window.innerWidth,r=window.innerHeight,n=45,s,o=1e5){super();this.objectType="CombinedCamera";this._cameraType="OrthographicCamera";this.targetOffset=Wo.DefaultTargetOffset;this.isUpVectorFlipped=!1;this.angleOffsetFromUp=0;this.width=t,this.height=r,this.orthoCamera=new Co(t*-.5,t*.5,r*.5,r*-.5,s!=null?s:-5e4,o),this.perspCamera=new sr(n,t/r,s!=null?s:50,o),this.left=this.orthoCamera.left,this.right=this.orthoCamera.right,this.top=this.orthoCamera.top,this.bottom=this.orthoCamera.bottom,this.far=this.orthoCamera.far,this.view=this.orthoCamera.view,this.aspect=this.perspCamera.aspect,this.fov=this.perspCamera.fov,this.focus=this.perspCamera.focus,this.filmGauge=this.perspCamera.filmGauge,this.filmOffset=this.perspCamera.filmOffset,this.toOrthographic(!0)}static createFromState(t,r){let n=new Bn().fromState(r);return n.enableHelper=!0,n.objectHelper.update(),n.uuid=t,n}get isPerspectiveCamera(){return this.cameraType==="PerspectiveCamera"}get isOrthographicCamera(){return!this.isPerspectiveCamera}get cameraType(){return this._cameraType}setNear(t,r){t==="PerspectiveCamera"?this.perspCamera.near=r:this.orthoCamera.near=r}setZoom(t,r){r>=0&&(t==="PerspectiveCamera"?this.perspCamera.zoom=r:this.orthoCamera.zoom=r)}set cameraType(t){t==="PerspectiveCamera"?this.toPerspective():t==="OrthographicCamera"&&this.toOrthographic()}get near(){return this._cameraType==="PerspectiveCamera"?this.perspCamera.near:this.orthoCamera.near}set near(t){this._cameraType==="PerspectiveCamera"?this.perspCamera.near=t:this.orthoCamera.near=t}get zoom(){return this._cameraType==="PerspectiveCamera"?this.perspCamera.zoom:this.orthoCamera.zoom}set zoom(t){t>=0&&(this._cameraType==="PerspectiveCamera"?this.perspCamera.zoom=t:this.orthoCamera.zoom=t)}lookAt(t){super.lookAt(t),this.getWorldPosition(tc),this.targetOffset=tc.distanceTo(t)}getTarget(t=new M){return this.getWorldDirection(Fv),this.getWorldPosition(tc),Fv.multiplyScalar(this.targetOffset),t.copy(tc).add(Fv),t}getDistanceToTarget(){let t=this.getTarget();return this.getWorldPosition(tc),tc.distanceTo(t)}updateUp(){let t=this.getWorldQuaternion(new zt),r=new M(0,0,1).applyQuaternion(t),n=new M().copy(ot.DefaultUp);this.isUpVectorFlipped&&n.negate(),n.applyQuaternion(t);let s=new M().copy(ot.DefaultUp).projectOnPlane(r),o=new M().crossVectors(s,n).dot(r)>=0?1:-1;this.angleOffsetFromUp=s.angleTo(n)*o}getViewFrontToObject(t){let r=t.getWorldPosition(new M),s=t.getWorldDirection(new M).multiplyScalar(this.targetOffset);return{position:r.clone().add(s),target:r}}getViewToObject(t){let r=t.getWorldPosition(new M),s=this.getWorldDirection(new M).multiplyScalar(this.targetOffset);return{position:r.clone().sub(s),target:r}}setViewplaneSize(t,r){this.left=-t*.5,this.right=t*.5,this.top=r*.5,this.bottom=-r*.5,this.aspect=t/r,this.updateProjectionMatrix()}toOrthographic(t){this.orthoCamera.left=this.left,this.orthoCamera.right=this.right,this.orthoCamera.top=this.top,this.orthoCamera.bottom=this.bottom,this.orthoCamera.view=this.view,this.orthoCamera.far=this.far,this.orthoCamera.updateProjectionMatrix(),this.projectionMatrix=this.orthoCamera.projectionMatrix,this.projectionMatrixInverse=this.orthoCamera.projectionMatrixInverse,this._cameraType="OrthographicCamera",(this.enableHelper===!0||t===!0)&&this.objectHelper.update()}toPerspective(t){this.perspCamera.aspect=this.aspect,this.perspCamera.fov=this.fov,this.perspCamera.view=this.view,this.perspCamera.far=this.far,this.perspCamera.updateProjectionMatrix(),this.projectionMatrix=this.perspCamera.projectionMatrix,this.projectionMatrixInverse=this.perspCamera.projectionMatrixInverse,this._cameraType="PerspectiveCamera",(this.enableHelper===!0||t===!0)&&this.objectHelper.update()}setFocalLength(t){this.perspCamera.setFocalLength(t),this.toPerspective()}getFocalLength(){return this.perspCamera.getFocalLength()}getEffectiveFOV(){return this.perspCamera.getEffectiveFOV()}getFilmWidth(){return this.perspCamera.getFilmWidth()}getFilmHeight(){return this.perspCamera.getFilmHeight()}setViewOffset(t,r,n,s,o,a){this._cameraType==="PerspectiveCamera"?this.perspCamera.setViewOffset(t,r,n,s,o,a):this.orthoCamera.setViewOffset(t,r,n,s,o,a)}clearViewOffset(){this._cameraType==="PerspectiveCamera"?(this.perspCamera.clearViewOffset(),this.toPerspective()):(this.orthoCamera.clearViewOffset(),this.toOrthographic())}updateProjectionMatrix(t){this._cameraType==="PerspectiveCamera"?this.toPerspective(t):this._cameraType==="OrthographicCamera"&&this.toOrthographic(t)}updateMatrixWorld(t){super.updateMatrixWorld(t),this.matrixWorldInverse.copy(this.matrixWorld).invert()}updateWorldMatrix(t,r){super.updateWorldMatrix(t,r),this.matrixWorldInverse.copy(this.matrixWorld).invert()}copy(t,r){return super.copy(t,r),this.orthoCamera.copy(t.orthoCamera),this.perspCamera.copy(t.perspCamera),this.left=t.left,this.right=t.right,this.top=t.top,this.bottom=t.bottom,this.far=t.far,this.view=t.view===null?null:Object.assign({},t.view),this._cameraType=t._cameraType,this.aspect=t.aspect,this.fov=t.fov,this.focus=t.focus,this.filmGauge=t.filmGauge,this.filmOffset=t.filmOffset,this.targetOffset=t.targetOffset,this.updateProjectionMatrix(),this}fromCameraRender(t){let r={near:this.orthoCamera.near,far:this.orthoCamera.far},n={near:this.perspCamera.near,far:this.perspCamera.far};return this.copy(t),this.name="",this.enableHelper=!0,this.objectHelper.visible=!0,this.orthoCamera.near=r.near,this.orthoCamera.far=r.far,this.perspCamera.near=n.near,this.perspCamera.far=n.far,this.updateProjectionMatrix(),this}toJSON(t){let r=super.toJSON(t),n=r.object;return n.objectType="CombinedCamera",n.cameraType=this.cameraType,n.targetOffset=this.targetOffset,n.isUpVectorFlipped=this.isUpVectorFlipped,n.angleOffsetFromUp=this.angleOffsetFromUp,n.left=this.left,n.right=this.right,n.top=this.top,n.bottom=this.bottom,this.view!==null&&(n.view=Object.assign({},this.view)),n.zoomOrtho=this.orthoCamera.zoom,n.nearOrtho=this.orthoCamera.near,n.far=this.far,n.aspect=this.aspect,n.fov=this.fov,n.focus=this.focus,n.filmGauge=this.filmGauge,n.filmOffset=this.filmOffset,n.zoomPersp=this.perspCamera.zoom,n.nearPersp=this.perspCamera.near,r}fromJSON(t){var r;if(super.fromJSON(t),this.cameraType=t.cameraType,t.targetOffset!==void 0&&(this.targetOffset=t.targetOffset),t.orbitControlsTarget!==void 0){let n=this.getWorldPosition(new M),s=new M().fromArray(t.orbitControlsTarget);this.targetOffset=s.distanceTo(n)}else t.targetOffset!==void 0&&(this.targetOffset=t.targetOffset);return this.isUpVectorFlipped=!1,this.angleOffsetFromUp=(r=t.angleOffsetFromUp)!=null?r:0,t.left!==void 0&&(this.left=t.left),t.right!==void 0&&(this.right=t.right),t.top!==void 0&&(this.top=t.top),t.bottom!==void 0&&(this.bottom=t.bottom),t.view!==void 0&&(this.view=Object.assign({},t.view)),t.zoomOrtho!==void 0&&(this.orthoCamera.zoom=t.zoomOrtho),t.nearOrtho!==void 0&&(this.orthoCamera.near=t.nearOrtho),t.far!==void 0&&(this.far=t.far),t.aspect!==void 0&&(this.aspect=t.aspect),t.fov!==void 0&&(this.fov=t.fov),t.focus!==void 0&&(this.focus=t.focus),t.filmGauge!==void 0&&(this.filmGauge=t.filmGauge),t.filmOffset!==void 0&&(this.filmOffset=t.filmOffset),t.zoomPersp!==void 0&&(this.perspCamera.zoom=t.zoomPersp),t.nearPersp!==void 0&&(this.perspCamera.near=t.nearPersp),this.updateProjectionMatrix(),this}toCameraState(t=[]){let r={type:this.cameraType,far:this.far,orthographic:{near:this.orthoCamera.near,zoom:this.orthoCamera.zoom},perspective:{near:this.perspCamera.near,fov:this.perspCamera.fov,zoom:this.perspCamera.zoom},up:this.up.toArray(),targetOffset:this.targetOffset,isUpVectorFlipped:this.isUpVectorFlipped};return wl(r,t)}fromCameraState(t){let{orthographic:r,perspective:n}=t;return t.type!==void 0&&(this.cameraType=t.type),t.far!==void 0&&(this.far=t.far),r!==void 0&&(r.near!==void 0&&(this.orthoCamera.near=r.near),r.zoom!==void 0&&(this.orthoCamera.zoom=r.zoom)),n!==void 0&&(n.near!==void 0&&(this.perspCamera.near=n.near),n.fov!==void 0&&(this.perspCamera.fov=n.fov),n.zoom!==void 0&&(this.perspCamera.zoom=n.zoom)),t.up!==void 0&&this.up.fromArray(t.up),t.targetOffset!==void 0&&(this.targetOffset=t.targetOffset),t.isUpVectorFlipped!==void 0&&(this.isUpVectorFlipped=t.isUpVectorFlipped),this.updateProjectionMatrix(),this}toState(t){return xe(se(se({},super.toState(t)),this.toCameraState(t)),{type:this.cameraType})}fromState(t){return super.fromState(t),this.fromCameraState(t),this}};var gs=class extends Vi(Qn(ts),$l){constructor(){super(...arguments);this.objectType="EmptyObject"}static createFromState(t,r){let n=new gs().fromState(r);return n.uuid=t,n.enableHelper=!0,n.objectHelper.update(),n}toJSON(t){let r=super.toJSON(t);return r.object.objectType="EmptyObject",r}};var rc=class extends Vi(Qn(hh),Zl){constructor(...t){super(...t);this.objectType="LightDirectional";this._gizmos={};this.castShadow=!0,this.shadow.mapSize.width=1024,this.shadow.mapSize.height=1024;let n=this.shadow.camera;n.top=1250,n.bottom=-1250,n.right=1250,n.left=-1250,n.near=1,n.far=2500;let s=new Hn(this.shadow.camera);s.visible=!1,this._gizmos.shadowmap=s,this.update()}static createFromState(t,r,n){let s=new rc().fromState(r,n);return s.uuid=t,s}get gizmos(){return this._gizmos}showGizmos(){for(let t in this._gizmos){let r=this._gizmos[t];r instanceof Hn&&(r.visible=!0)}}hideGizmos(){for(let t in this._gizmos){let r=this._gizmos[t];r instanceof Hn&&(r.visible=!1)}}update(){this.shadow.camera.updateProjectionMatrix();for(let t in this._gizmos){let r=this._gizmos[t];r instanceof Hn&&r.update()}}updateMatrixWorld(t){super.updateMatrixWorld(t),this.enableHelper===!0&&this.objectHelper.visible===!0&&this.objectHelper.update()}copy(t,r=!0){return super.copy(t,r),this.color.copy(t.color),this.intensity=t.intensity,this.target=t.target.clone(),this.shadow=t.shadow.clone(),this}toJSON(t){let r=super.toJSON(t),n=r.object;return n.objectType="LightDirectional",n.color=this.color.getHex(),n.intensity=this.intensity,n.shadow=this.shadow.toJSON(),r}fromJSON(t){var s;super.fromJSON(t),this.color.set(t.color),this.intensity=t.intensity,this.shadow.normalBias=(s=t.shadow.normalBias)!=null?s:0,this.shadow.radius=t.shadow.radius,this.shadow.mapSize.fromArray(t.shadow.mapSize);let r=this.shadow.camera,n=t.shadow.camera;return r.near=n.near,r.far=n.far,r.zoom=n.zoom,r.left=n.left,r.right=n.right,r.top=n.top,r.bottom=n.bottom,n.view!==void 0&&(r.view=Object.assign({},n.view)),this}fromDirectionalLightState(t,r){let n=t.depth!==void 0&&t.depth!==this.shadow.camera.far||t.size!==void 0&&t.size/2!==this.shadow.camera.right;return super.fromLightState(t,r),t.size!==void 0&&W1(this,t.size),n&&this.update(),this}fromState(t,r){return super.fromState(t),this.fromDirectionalLightState(t,r),this}};var nc=class extends Vi(Qn(ch),ec){constructor(...t){super(...t);this.objectType="LightPoint";this._gizmos={};this.castShadow=!0,this.shadow.mapSize.width=1024,this.shadow.mapSize.height=1024;let n=this.shadow.camera;n.fov=90,n.aspect=1,n.near=100,n.far=2500;let s=new M(-n.far+this.position.x,-n.far+this.position.y,-n.far+this.position.z),o=new M(n.far+this.position.x,n.far+this.position.y,n.far+this.position.z),a=new Kt(s,o),l=new Fo(a,new be(16755200));l.visible=!1,this._gizmos.shadowmap=l,this.update()}static createFromState(t,r,n){let s=new nc().fromState(r,n);return s.uuid=t,s}get gizmos(){return this._gizmos}showGizmos(){for(let t in this._gizmos){let r=this._gizmos[t];r instanceof Fo&&(r.visible=!0)}}hideGizmos(){for(let t in this._gizmos){let r=this._gizmos[t];r instanceof Fo&&(r.visible=!1)}}update(){if(this.shadow&&(this.shadow.camera.updateProjectionMatrix(),this._gizmos))for(let t in this._gizmos){let r=this._gizmos[t];if(r instanceof Fo){let n=this.shadow.camera,s=new M(-n.far+this.position.x,-n.far+this.position.y,-n.far+this.position.z),o=new M(n.far+this.position.x,n.far+this.position.y,n.far+this.position.z);r.box.set(s,o),r.updateMatrixWorld(!0)}}}updateMatrixWorld(t){super.updateMatrixWorld(t),this.enableHelper===!0&&this.objectHelper.visible===!0&&this.objectHelper.update()}copy(t,r=!0){return super.copy(t,r),this.color.copy(t.color),this.intensity=t.intensity,this.distance=t.distance,this.decay=t.decay,this.shadow=t.shadow.clone(),this}toJSON(t){let r=super.toJSON(t),n=r.object;return n.objectType="LightPoint",n.color=this.color.getHex(),n.intensity=this.intensity,n.distance=this.distance,n.decay=this.decay,n.shadow=this.shadow.toJSON(),r}fromJSON(t){var s,o;super.fromJSON(t),this.color.set(t.color),this.intensity=t.intensity,this.distance=t.distance,this.decay=t.decay,this.shadow.normalBias=(s=t.shadow.normalBias)!=null?s:0,this.shadow.radius=t.shadow.radius,this.shadow.mapSize.fromArray((o=t.shadow.mapSize)!=null?o:[512,512]),this.shadow.map&&(this.shadow.map.dispose(),this.shadow.map=null);let r=this.shadow.camera,n=t.shadow.camera;return r.near=n.near,r.far=n.far,r.zoom=n.zoom,r.fov=n.fov,r.focus=n.focus,r.aspect=n.aspect,r.filmGauge=n.filmGauge,r.filmOffset=n.filmOffset,n.view!==void 0&&(r.view=Object.assign({},n.view)),this}fromPointLightState(t,r){return super.fromLightState(t,r),t.distance!==void 0&&(this.distance=t.distance),t.decay!==void 0&&(this.decay=t.decay),t.shadowRadius!==void 0&&(this.shadow.radius=t.shadowRadius),t.shadowResolution!==void 0&&(this.shadow.mapSize.set(t.shadowResolution,t.shadowResolution),this.shadow.map&&(this.shadow.map.dispose(),this.shadow.map=null)),this}fromState(t,r){return super.fromState(t),this.fromPointLightState(t,r),this}};var lA=new M,cA=new M,hA=new zt,ic=class extends Vi(Qn(lh),gu){constructor(...t){super(...t);this.objectType="LightSpot";this._gizmos={};this.castShadow=!0,this.shadow.mapSize.width=1024,this.shadow.mapSize.height=1024;let n=this.shadow.camera;n.fov=et.RAD2DEG*2*this.angle,n.aspect=1,n.near=100,n.far=2500;let s=new Hn(this.shadow.camera);s.visible=!1,this._gizmos.shadowmap=s,this.update()}static createFromState(t,r,n){let s=new ic().fromState(r,n);return s.uuid=t,s}get gizmos(){return this._gizmos}showGizmos(){for(let t in this._gizmos){let r=this._gizmos[t];r instanceof Hn&&(r.visible=!0)}}hideGizmos(){for(let t in this._gizmos){let r=this._gizmos[t];r instanceof Hn&&(r.visible=!1)}}update(){this.shadow.camera.updateProjectionMatrix();for(let t in this._gizmos){let r=this._gizmos[t];r instanceof Hn&&r.update()}}updateMatrixWorld(t){super.updateMatrixWorld(t),cA.setFromMatrixPosition(this.matrixWorld),hA.setFromRotationMatrix(this.matrixWorld),lA.copy(this.up).applyQuaternion(hA).negate().multiplyScalar(this.distance),this.target.position.copy(cA).add(lA),this.target.updateMatrixWorld(),this.enableHelper===!0&&this.objectHelper.visible===!0&&this.objectHelper.update()}copy(t,r=!0){return super.copy(t,r),this.color.copy(t.color),this.intensity=t.intensity,this.distance=t.distance,this.angle=t.angle,this.penumbra=t.penumbra,this.decay=t.decay,this.target=t.target.clone(),this.shadow=t.shadow.clone(),this}toJSON(t){let r=super.toJSON(t),n=r.object;return n.objectType="LightSpot",n.color=this.color.getHex(),n.intensity=this.intensity,n.distance=this.distance,n.angle=this.angle,n.decay=this.decay,n.penumbra=this.penumbra,n.shadow=this.shadow.toJSON(),r}fromJSON(t){var s;super.fromJSON(t),this.color.set(t.color),this.intensity=t.intensity,this.distance=t.distance,this.angle=t.angle,this.decay=t.decay,this.penumbra=t.penumbra,this.shadow.normalBias=(s=t.shadow.normalBias)!=null?s:0,this.shadow.radius=t.shadow.radius,this.shadow.mapSize.fromArray(t.shadow.mapSize);let r=this.shadow.camera,n=t.shadow.camera;return r.near=n.near,r.far=n.far,r.zoom=n.zoom,r.fov=n.fov,r.focus=n.focus,r.aspect=n.aspect,r.filmGauge=n.filmGauge,r.filmOffset=n.filmOffset,n.view!==void 0&&(r.view=Object.assign({},n.view)),this}fromSpotLightState(t,r){return super.fromLightState(t,r),t.distance!==void 0&&(this.distance=t.distance),t.decay!==void 0&&(this.decay=t.decay),t.angle!==void 0&&(this.angle=t.angle),t.penumbra!==void 0&&(this.penumbra=t.penumbra),this}fromState(t,r){return super.fromState(t),this.fromSpotLightState(t,r),this}};var uA=i=>i.tagName==="VIDEO",$o=class{static resize(e,t,r){let n=e/t,s;if(!r.image)return;let o=r.image;uA(o)?s=o.videoWidth/o.videoHeight:s=o.width/o.height,n>s&&(r.imageType=="WEBCAM"?r.repeat.set(-1,1*s/n):r.repeat.set(1,1*s/n)),n<s&&(r.imageType=="WEBCAM"?r.repeat.set(1*n/s*-1,1):r.repeat.set(1*n/s,1)),n==s&&(r.imageType=="WEBCAM"?r.repeat.set(-1,1):r.repeat.set(1,1))}static resizeTextureLayer(e,t,r){let n=e/t,s=r.image!==void 0?r.image.width/r.image.height:1,o;n>s?o={x:1,y:s/n}:n<s?o={x:n/s,y:1}:o={x:1,y:1},r.repeat.set(o.x,o.y),r.updateMatrix()}static resizeTextureLayers(e,t,r){let n=r.userData.layers,s=n.getLayers();for(let o=0;o<s.length;o++){let a=s[o];N1(a)&&($o.resizeTextureLayer(e,t,a.uniforms[`f${a.id}_texture`].value),n.updateLayerUniform())}}static resizeComplex(e,t,r,n){let s=e/t,o,a=r.image;uA(a)?o=a.videoWidth/a.videoHeight:o=a.width/a.height,n.geometry.type.includes("Shape")?(s>o&&(r.imageType=="WEBCAM"?r.repeat.set(1/e*-1,1/t*o/s):r.repeat.set(1/e,1/t*o/s)),s<o&&(r.imageType=="WEBCAM"?r.repeat.set(1/e*s/o*-1,1/t):r.repeat.set(1/e*s/o,1/t)),s==o&&(r.imageType=="WEBCAM"?r.repeat.set(1/e*-1,1/t):r.repeat.set(1/e,1/t))):(s>o&&(r.imageType=="WEBCAM"?r.repeat.set(-1,1*o/s):r.repeat.set(1,1*o/s)),s<o&&(r.imageType=="WEBCAM"?r.repeat.set(1*s/o*-1,1):r.repeat.set(1*s/o,1)),s==o&&(r.imageType=="WEBCAM"?r.repeat.set(-1,1):r.repeat.set(1,1)))}};var sc=class extends kt{constructor(t,r=new Yr){super(t,r);this.objectType="Mesh2D";this.castShadow=!0,this.receiveShadow=!0}updateGeometry(t){super.updateGeometry(t),this.material.userData.layers&&$o.resizeTextureLayers(this.geometry.userData.parameters.width,this.geometry.userData.parameters.height,this.material)}resizeGeometry(t,r){super.resizeGeometry(t,r,0),this.material.userData.layers&&$o.resizeTextureLayers(this.geometry.userData.parameters.width,this.geometry.userData.parameters.height,this.material)}toJSON(t){let r=super.toJSON(t);return r.object.objectType="Mesh2D",r}clone(){let t=super.clone();return t.updateGeometry({}),t}static fromTexture(t){let r,n;if(t instanceof th){let a=t.image;r=a.videoWidth*.5,n=a.videoHeight*.5}else{let a=t.image;r=a.width*.5,n=a.height*.5}let s=vp.create({parameters:{width:r,height:n}}),o=new Yr;return o.layersList.changeLayer(0,{type:"texture",texture:t}),o.layersList.moveLayer(0,1),o.dispose(),new sc(s,o)}};var oc=class extends kt{constructor(t,r=new pn){super(t,r);this.objectType="Mesh3D";this.castShadow=!0,this.receiveShadow=!0}toJSON(t){let r=super.toJSON(t);return r.object.objectType="Mesh3D",r}};var ac=class extends oc{constructor(t,r=new pn){super(t,r);this.objectType="NonParametric"}toJSON(t){let r=super.toJSON(t);return r.object.objectType="NonParametric",r}};var Wp=class extends cn{constructor(e){super(e)}load(e,t,r,n){let s=this,o=new as(this.manager);o.setPath(this.path),o.setRequestHeader(this.requestHeader),o.setWithCredentials(s.withCredentials),o.load(e,function(a){let l;try{l=JSON.parse(a)}catch{console.warn("THREE.FontLoader: typeface.js support is being deprecated. Use typeface.json instead."),l=JSON.parse(a.substring(65,a.length-2))}let c=s.parse(l);t&&t(c)},r,n)}parse(e){return new jp(e)}},jp=class{constructor(e){this.type="Font",this.data=e}generateShapes(e,t=100){let r=[],n=nU(e,t,this.data);for(let s=0,o=n.length;s<o;s++)Array.prototype.push.apply(r,n[s].toShapes());return r}};function nU(i,e,t){let r=Array.from(i),n=e/t.resolution,s=(t.boundingBox.yMax-t.boundingBox.yMin+t.underlineThickness)*n,o=[],a=0,l=0;for(let c=0;c<r.length;c++){let h=r[c];if(h===`
3926
+ `)}return r}copy(t){return super.copy(t),t.color&&(this.color=t.color.clone()),this.roughness=t.roughness.clone(),this.metalness=t.metalness.clone(),t.position&&(this.position=t.position.clone()),t.afterColor&&(this.afterColor=t.afterColor.clone()),t.alpha&&(this.alpha=t.alpha.clone()),t.reflectivity&&(this.reflectivity=t.reflectivity.clone()),t.shadingAlpha&&(this.shadingAlpha=t.shadingAlpha.clone()),t.shadingBlend&&(this.shadingBlend=t.shadingBlend.clone()),this}};var Rp=class extends Rn{constructor(t=new Ip,r){super(t,t,r);this.type="StandardNodeMaterial",this.fragment=t}get color(){return this.fragment.color}set color(t){this.fragment.color=t}get afterColor(){return this.fragment.afterColor}set afterColor(t){this.fragment.afterColor=t}get alpha(){return this.fragment.alpha}set alpha(t){this.fragment.alpha=t}get shadingAlpha(){return this.fragment.shadingAlpha}set shadingAlpha(t){this.fragment.shadingAlpha=t}get shadingBlend(){return this.fragment.shadingBlend}set shadingBlend(t){this.fragment.shadingBlend=t}get position(){return this.fragment.position}set position(t){this.fragment.position=t}get roughness(){return this.fragment.roughness}set roughness(t){this.fragment.roughness=t}get metalness(){return this.fragment.metalness}set metalness(t){this.fragment.metalness=t}get reflectivity(){return this.fragment.reflectivity}set reflectivity(t){this.fragment.reflectivity=t}};var Xl=class extends Rp{constructor(e,t,r){super(t,e),this.userData.type="PhysicalMaterial",this.userData.category="Physical",this.userData.layers=r!=null?r:this._getLayerStack(e==null?void 0:e.map)}get layersList(){return this.userData.layers}set layersList(e){this.userData.layers=e}equals(e){return this.userData.type===e.userData.type&&this.userData.layers.uuid==e.userData.layers.uuid}copy(e){if(e.userData.layers!==void 0&&e.userData.layers instanceof Zr){let t=e.userData.layers,r=e.fragment;super.copy(e);let n=r.clone();this.fragment=n,this.vertex=n;let s=t.clone(this);this.userData.layers=s,n.shadingAlpha.value=r.shadingAlpha.value,n.shadingBlend.value=r.shadingBlend.value}else super.copy(e);return this}static fromJSON(e,t,r){let n=r.getNode(t.vertex),s=new Xl(void 0,n);return s.fromJSON(t,r),s}dispose(){super.dispose()}};function pr(i,e){let t;if(typeof i=="string"){let r=e==null?void 0:e.getColor(i);r?t=r:(console.warn("Tried to create color layer params with a color key that does not exist in the assets manager"),t=new Wr(0,0,0,0))}else return"a"in i?new Wr(i.r,i.g,i.b,i.a):new Wr(i.r,i.g,i.b,1);return t}function Bp(i,e){switch(i.data.type){case"light":return gi(i);case"fresnel":return IF(i,e);case"gradient":return RF(i);case"depth":return BF(i);case"normal":return NF(i);case"noise":return OF(i,e);case"texture":return FF(i,e);case"rainbow":return UF(i);case"transmission":return zF(i,e);case"matcap":return GF(i,e);case"displace":return kF(i);case"color":default:return LF(i,e)}}function F1(i){return{type:i.data.type}}function gi(i){let{alpha:e,mode:t}=i.data;return xe(se({},F1(i)),{alpha:e,mode:t})}function LF(i,e){return xe(se({},gi(i)),{color:pr(i.data.color,e)})}function IF(i,e){let{bias:t,scale:r,intensity:n,factor:s,color:o}=i.data;return xe(se({},gi(i)),{color:pr(o,e),bias:t,scale:r,intensity:n,factor:s})}function RF(i){let{gradientType:e,smooth:t,colors:r,steps:n,angle:s,offset:o,morph:a}=i.data;return xe(se({},gi(i)),{gradientType:e,smooth:t,colors:r.map(l=>new Je(l[0],l[1],l[2],l[3])),num:r.length,steps:n,offset:new B(...o),morph:new B(...a),angle:s})}function BF(i){let{gradientType:e,near:t,far:r,isVector:n,isWorldSpace:s,origin:o,direction:a,colors:l,steps:c,smooth:h,num:u}=i.data;return xe(se({},gi(i)),{gradientType:e,near:t,far:r,isVector:n,isWorldSpace:s,origin:new M(...o),direction:a?new M(...a):new M(1,0,0),num:u,colors:l.map(f=>new Je(f[0],f[1],f[2],f[3])),steps:c,smooth:h})}function NF(i){let{cnormal:e}=i.data;return xe(se({},gi(i)),{cnormal:new M(e[0],e[1],e[2])})}function OF(i,e){let{data:t}=i;return xe(se({},gi(i)),{scale:t.scale,move:t.move,fA:new B(...t.fA),fB:new B(...t.fB),size:new M(...t.size),distortion:new B(...t.distortion),colorA:pr(t.colorA,e),colorB:pr(t.colorB,e),colorC:pr(t.colorC,e),colorD:pr(t.colorD,e),noiseType:t.noiseType})}function FF(i,e){let{projection:t,axis:r,side:n,crop:s,size:o}=i.data,{image:a,wrapping:l,repeat:c,offset:h}=i.data.texture,u=new Pt,f;if(typeof a=="string")f=e==null?void 0:e.getImage(a);else{let d=new Image;d.src=co(a.data),d.onload=()=>{e!=null&&e.onImageLoad&&(e==null||e.onImageLoad())},f=d}return u.image=f,u.repeat.set(c[0],c[1]),u.offset.set(h[0],h[1]),u.wrapS=u.wrapT=l,xe(se({},gi(i)),{texture:u,mat:new Ft().setUvTransform(h[0],h[1],c[0],c[1],0,0,0),crop:s,projection:t,axis:["x","y","z"].indexOf(r),side:[2,0,1].indexOf(n),size:o})}function UF(i){let{data:e}=i;return xe(se({},gi(i)),{filmThickness:e.filmThickness,movement:e.movement,wavelengths:new M(...e.wavelengths),noiseStrength:e.noiseStrength,noiseScale:e.noiseScale,offset:new M(...e.offset)})}function zF(i,e){let{data:t}=i;return xe(se({},gi(i)),{thickness:t.thickness,ior:t.ior,roughness:t.roughness,transmissionSamplerMap:e.transmissionSamplerMap,transmissionDepthMap:e.transmissionDepthMap})}function GF(i,e){let t=new Pt,{image:r}=i.data.texture,n;if(typeof r=="string")n=e==null?void 0:e.getImage(r);else{let o=new Image;o.src=co(r.data),o.onload=()=>{e!=null&&e.onImageLoad&&(e==null||e.onImageLoad())},n=o}t.image=n;let s=16777215;return xe(se({},gi(i)),{color:s,texture:t})}function kF(i){let{data:e}=i,t=xe(se({},F1(i)),{intensity:e.intensity});if(e.displacementType==="noise")return xe(se({},t),{offset:new M(...e.offset),scale:e.scale,movement:e.movement,noiseType:e.noiseType});{let r=new Pt,n=new Ft().setUvTransform(0,0,1,1,0,0,0);return xe(se({},t),{texture:r,mat:n,crop:e.crop})}}function Np(i,e,t){if(t.type==="displace"&&(i==="intensity"||i==="visible")){let r=e.uniforms[`f${e.id}_intensity`];return r?(r.value=t.intensity*(t.visible?1:0),r):void 0}if(t.type!=="displace"&&(i==="alpha"||i==="visible")){let r=e.uniforms[`f${e.id}_alpha`];return r?(r.value=t.alpha*(t.visible?1:0),r):void 0}}var Ql;(e=>{function i(t){return new be(t.x,t.y,t.z).getHex()}e.getHex=i})(Ql||(Ql={}));var U1;(e=>{function i(t){return new Je(t.r,t.g,t.b,t.a)}e.getThreeVector4=i})(U1||(U1={}));var z1;(t=>{function i(r,n){r.setRGB(n.r,n.g,n.b)}t.setThreeColor=i;function e(r){return new be(r.r,r.g,r.b).getHex()}t.getHex=e})(z1||(z1={}));function uu(i,e){return typeof i=="string"?e.getMaterialOrDeletedPlaceholder(i):_v(i,e)}function G1(i,e){return i.map(t=>uu(t,e))}function _v(i,e){var o,a;let t=(o=i.layers)!=null?o:ui.defaultTwoLayerData("phong").layers,r=VF(t),n;switch(r.category){case"basic":n=new Yr;break;case"lambert":{n=new ql;break}case"toon":{n=new Yl;break}case"physical":n=new Xl;break;case"phong":default:{n=new pn;break}}n.name=(a=i.name)!=null?a:"Untitled Material";let s=n.userData.layers;HF(s);for(let l=t.length-1;l>=0;l--)WF(s,t[l],e);switch(r.category){case"basic":break;case"lambert":{let h=n,f=pr(r.emissive,e);f instanceof be?h.emissive.value=f:h.emissive.value.setHex(Ql.getHex(f));break}case"toon":{let h=n,u=r;h.shininess.value=u.shininess;let f=pr(u.specular,e);f instanceof be?h.specular.value=f:h.specular.value.setHex(Ql.getHex(f));break}case"physical":let l=n,c=r;l.metalness.value=c.metalness,l.roughness.value=c.roughness,l.reflectivity.value=c.reflectivity;break;case"phong":default:{let h=n,u=r;h.shininess.value=u.shininess;let f=pr(u.specular,e);f instanceof be?h.specular.value=f:h.specular.value.setHex(Ql.getHex(f));break}}return s.blendColors(),s.blendAfterColors(),s.blendPositions(),n}function VF(i){for(let e of i)if(e.data.type==="light")return e.data;return{type:"light",category:"basic",visible:!0,alpha:1,mode:0}}function HF(i){for(let e of i.getLayers())i.removeLayer(e.id)}function WF(i,e,t){let r=Bp(e,t);r.type==="transmission"&&(r.transmissionSamplerMap=t==null?void 0:t.transmissionSamplerMap,r.transmissionDepthMap=t==null?void 0:t.transmissionDepthMap);let n=i.addLayer(r);n.uuid=e.id;for(let s in e.data)Np(s,n,e.data)}var Zo=i=>"isEntity"in i,er=i=>"isAbstractMesh"in i,Lt=i=>i!==null&&i.isBooleanMesh,k1=i=>i.objectType==="CombinedCamera",V1=i=>Zo(i)&&(i.objectType==="LightDirectional"||i.objectType==="LightSpot"||i.objectType==="LightPoint");var ms=i=>"objectHelper"in i;function Ev(i,e){var r;let t=!1;e.position&&(i.position.fromArray(e.position),t=!0),e.rotation&&(i.rotation.fromArray(e.rotation),t=!0),e.scale&&(t=!0,i.scale.fromArray(e.scale)),e.hiddenMatrix!==void 0&&"hiddenMatrix"in i&&(t=!0,i.hiddenMatrix.fromArray((r=e.hiddenMatrix)!=null?r:Di.identity)),t&&(i.updateMatrix(),Lt(i.parent)&&er(i)&&i.invalidateDownstreamBooleanData(!0).recomputeBoolean()),e.position&&e.rotation&&e.scale&&e.hiddenMatrix!==void 0&&i.updateWorldMatrix(!1,!0),i.objectType==="CombinedCamera"&&(e.isUpVectorFlipped!==void 0&&(i.isUpVectorFlipped=e.isUpVectorFlipped),i.updateUp())}function jF(i,e){Ev(i,e),e.name!==void 0&&(i.name=e.name),e.visible!==void 0&&(i.isEntity?i.visibility=e.visible:i.visible=e.visible)}function H1(i,e,t){jF(i,e),e.color!==void 0&&(i.color=pr(e.color,t)),e.intensity!==void 0&&(i.intensity=e.intensity),e.shadows!==void 0&&!(i instanceof Hs)&&(i.castShadow=e.shadows),i.shadow&&!(i instanceof Hs)&&e.depth!==void 0&&(i.shadow.camera.far=e.depth,i.shadow.needsUpdate=!0),e.helper!==void 0&&ms(i)&&(i.enableHelper=e.helper,i.gizmos.shadowmap.visible=e.helper)}function W1(i,e){i.shadow.camera.right=e/2,i.shadow.camera.left=-e/2,i.shadow.camera.top=e/2,i.shadow.camera.bottom=-e/2,i.shadow.needsUpdate=!0}var Jl=new Kt,Xr=new M,Ge=new M,wr=new Ae;function qF(i,e,t=0,r=e.count){let n=1/0,s=1/0,o=1/0,a=-1/0,l=-1/0,c=-1/0;for(let h=t;h<r;h++){let u=e.getX(h),f=e.getY(h),d=e.getZ(h);u<n&&(n=u),f<s&&(s=f),d<o&&(o=d),u>a&&(a=u),f>l&&(l=f),d>c&&(c=d)}return i.min.set(n,s,o),i.max.set(a,l,c),i}var j1=(i,e,t,r)=>{var n;if(er(i)){let s=i.geometry.userData.parameters,o=i.geometry.getAttribute("position");i.geometry.userData.type==="SubdivGeometry"?Xr.copy(i.originalGeometry.boundingSphere.center):o!==void 0&&(qF(Jl,o,i.geometry.drawRange.start,i.geometry.drawRange.count<1/0?i.geometry.drawRange.count:o.count),Jl.getCenter(Xr)),i.forceComputeSize?Jl.getSize(Ge).multiplyScalar(.5):Ge.set(s.width,s.height,(n=s.depth)!=null?n:0).multiplyScalar(.5)}else if(ms(i)&&r===!0){let s=i.geometryHelper.getAttribute("position");Jl.setFromArray(s.array),Jl.getCenter(Xr),Jl.getSize(Ge).multiplyScalar(.5)}else Xr.setScalar(0),Ge.setScalar(0);wr.copy(e).multiply(i.matrixWorld),Ge.x===0&&Ge.y===0&&Ge.z===0?t.push(new M(Xr.x,Xr.y,Xr.z).applyMatrix4(wr)):t.push(new M(-Ge.x,Ge.y,Ge.z).add(Xr).applyMatrix4(wr),new M(-Ge.x,-Ge.y,Ge.z).add(Xr).applyMatrix4(wr),new M(Ge.x,-Ge.y,Ge.z).add(Xr).applyMatrix4(wr),new M(Ge.x,Ge.y,Ge.z).add(Xr).applyMatrix4(wr),new M(-Ge.x,Ge.y,-Ge.z).add(Xr).applyMatrix4(wr),new M(-Ge.x,-Ge.y,-Ge.z).add(Xr).applyMatrix4(wr),new M(Ge.x,-Ge.y,-Ge.z).add(Xr).applyMatrix4(wr),new M(Ge.x,Ge.y,-Ge.z).add(Xr).applyMatrix4(wr))},fu=class extends Kt{constructor(){super(...arguments);this.matrix=new Ae;this.vertices=[];this.faces=[];this.edges=[];this.centerEdges=[]}copy(t){return super.copy(t),this.matrix.copy(t.matrix),this.vertices=t.vertices.map(r=>r.clone()),this.faces=t.faces.map(r=>r.clone()),this.edges=t.edges.map(r=>r.clone()),this.centerEdges=t.centerEdges.map(r=>r.clone()),this}setFromObjectSize(t,r=!1){t.updateWorldMatrix(!1,r),this.makeEmpty(),this.matrix.copy(t.matrixWorld);let n=new Ae().copy(t.matrixWorld).invert();return this.expandByObjectSize(t,n,r)}expandByObjectSize(t,r,n=!1){let s=[];return n===!0?t.traverseEntity(o=>{o.visible&&j1(o,r,s,t.enableHelper===!0)}):j1(t,r,s,t.enableHelper===!0),this.setFromPoints(s)}getCenter(t){return t=super.getCenter(t),t.applyMatrix4(this.matrix),t}getPositionToCenter(t){return t=super.getCenter(t),t.applyMatrix4(wr.copy(this.matrix).setPosition(0,0,0)),t}computeVertices(){this.getSize(Ge).multiplyScalar(.5),this.getCenter(Xr),wr.copy(this.matrix).setPosition(Xr),this.vertices=[new M(-Ge.x,Ge.y,Ge.z).applyMatrix4(wr),new M(-Ge.x,-Ge.y,Ge.z).applyMatrix4(wr),new M(Ge.x,-Ge.y,Ge.z).applyMatrix4(wr),new M(Ge.x,Ge.y,Ge.z).applyMatrix4(wr),new M(-Ge.x,Ge.y,-Ge.z).applyMatrix4(wr),new M(-Ge.x,-Ge.y,-Ge.z).applyMatrix4(wr),new M(Ge.x,-Ge.y,-Ge.z).applyMatrix4(wr),new M(Ge.x,Ge.y,-Ge.z).applyMatrix4(wr)]}computeEdges(){this.vertices.length>0&&this.computeVertices(),this.edges=[new Jr(this.vertices[0],this.vertices[3]),new Jr(this.vertices[1],this.vertices[2]),new Jr(this.vertices[5],this.vertices[6]),new Jr(this.vertices[4],this.vertices[7]),new Jr(this.vertices[0],this.vertices[1]),new Jr(this.vertices[3],this.vertices[2]),new Jr(this.vertices[7],this.vertices[6]),new Jr(this.vertices[4],this.vertices[5]),new Jr(this.vertices[0],this.vertices[4]),new Jr(this.vertices[1],this.vertices[5]),new Jr(this.vertices[2],this.vertices[6]),new Jr(this.vertices[3],this.vertices[7])],this.centerEdges=this.edges.map(t=>t.getCenter(new M))}computeFaces(){this.vertices.length>0&&this.computeVertices(),this.faces=[new M().copy(this.vertices[0]).sub(this.vertices[2]).multiplyScalar(.5).add(this.vertices[2]),new M().copy(this.vertices[7]).sub(this.vertices[5]).multiplyScalar(.5).add(this.vertices[5]),new M().copy(this.vertices[4]).sub(this.vertices[1]).multiplyScalar(.5).add(this.vertices[1]),new M().copy(this.vertices[3]).sub(this.vertices[6]).multiplyScalar(.5).add(this.vertices[6]),new M().copy(this.vertices[4]).sub(this.vertices[3]).multiplyScalar(.5).add(this.vertices[3]),new M().copy(this.vertices[1]).sub(this.vertices[6]).multiplyScalar(.5).add(this.vertices[6])]}};function du(i){let e=[];for(let t in i){let r=i[t];delete r.metadata,e.push(r)}return e}function YF(i){let e=[];for(let t in i)e.push(i[t]);return e}var Op=i=>class extends i{hasEntityChild(){return this.children.some(t=>Zo(t))}isDescendantOf(t){t instanceof ot&&(t=t.uuid);let r=this;for(;r.parent;){if(r.parent.uuid===t)return!0;r=r.parent}return!1}attach(t,r){this.updateWorldMatrix(!0,!1);let n=new Ae().copy(this.matrixWorld).invert();return t.parent!==null&&(t.parent.updateWorldMatrix(!0,!1),n.multiply(t.parent.matrixWorld)),Zo(t)?t.hiddenMatrix.premultiply(n):t.applyMatrix4(n),t.updateWorldMatrix(!1,!1),this.add(t),r!==void 0&&(this.children.pop(),this.children.splice(r,0,t)),this}copy(t,r=!0){if(this.name=t.name,this.up.copy(t.up),this.position.copy(t.position),this.rotation.order=t.rotation.order,this.quaternion.copy(t.quaternion),this.scale.copy(t.scale),this.matrix.copy(t.matrix),this.matrixWorld.copy(t.matrixWorld),this.matrixAutoUpdate=t.matrixAutoUpdate,this.matrixWorldNeedsUpdate=t.matrixWorldNeedsUpdate,this.layers.mask=t.layers.mask,this.visible=t.visible,this.castShadow=t.castShadow,this.receiveShadow=t.receiveShadow,this.frustumCulled=t.frustumCulled,this.renderOrder=t.renderOrder,this.userData=JSON.parse(JSON.stringify(t.userData)),r===!0)for(let n=0;n<t.children.length;n++){let s=t.children[n];this.add(s.clone())}return this}toJSON(t){let r=t===void 0,n={object:{uuid:"",objectType:""}};t===void 0&&(t={geometries:{},materials:{},textures:{},images:{},interactionStates:{},nodes:{}},n.metadata={version:1.5,type:"Object",generator:"Object3D.toJSON"});let s={uuid:this.uuid,objectType:this.type};if(this.name!==""&&(s.name=this.name),s.matrix=this.matrix.toArray(),this.castShadow===!0&&(s.castShadow=!0),this.receiveShadow===!0&&(s.receiveShadow=!0),this.visible===!1&&(s.visible=!1),this.frustumCulled===!1&&(s.frustumCulled=!1),this.renderOrder!==0&&(s.renderOrder=this.renderOrder),s.layers=this.layers.mask,JSON.stringify(this.userData)!=="{}"&&(s.userData=this.userData),this.children.length>0){s.children=[];for(let o of this.children)(Zo(o)||o instanceof bn)&&s.children.push(o.toJSON(t).object)}if(r){let o=du(t.geometries),a=du(t.materials),l=du(t.textures),c=du(t.images),h=du(t.interactionStates),u=YF(t.nodes);o.length>0&&(n.geometries=o),a.length>0&&(n.materials=a),l.length>0&&(n.textures=l),c.length>0&&(n.images=c),h.length>0&&(n.interactionStates=h),u.length>0&&(n.nodes=u)}return n.object=s,n}fromJSON(t){return this.uuid=t.uuid,t.name!==void 0&&(this.name=t.name),t.matrix!==void 0?(this.matrix.fromArray(t.matrix),t.matrixAutoUpdate!==void 0&&(this.matrixAutoUpdate=t.matrixAutoUpdate),this.matrixAutoUpdate&&this.matrix.decompose(this.position,this.quaternion,this.scale)):(t.position!==void 0&&this.position.fromArray(t.position),t.rotation!==void 0&&this.rotation.fromArray(t.rotation),t.quaternion!==void 0&&this.quaternion.fromArray(t.quaternion),t.scale!==void 0&&this.scale.fromArray(t.scale)),this.castShadow=t.castShadow!==void 0,this.receiveShadow=t.receiveShadow!==void 0,t.visible!==void 0&&(this.visible=t.visible),t.frustumCulled!==void 0&&(this.frustumCulled=t.frustumCulled),t.renderOrder!==void 0&&(this.renderOrder=t.renderOrder),t.layers!==void 0&&(this.layers.mask=t.layers),t.userData!==void 0&&(this.userData=t.userData),this}};var Xn=i=>"isEntity"in i,q1=i=>"isAbstractMesh"in i,Qn=i=>class extends Op(i){constructor(){super(...arguments);this.objectType="";this.isEntity=!0;this.raycastLock=!1;this.scaleLock=!1;this.hiddenMatrix=new Ae;this._singleBBox=new fu;this._recursiveBBox=new fu;this.singleBBoxNeedsUpdate=!0;this.recursiveBBoxNeedsUpdate=!0;this.forceComputeSize=!1}set visibility(r){this.visible=r;for(let n of this.children)Xn(n)&&n.traverseEntity(s=>{ms(s)&&s.visible&&(s.objectHelper.visible=r)})}get visibility(){return this.visible}get singleBBox(){return this.singleBBoxNeedsUpdate&&(this.singleBBoxNeedsUpdate=!1,this._singleBBox.setFromObjectSize(this,!1),this._singleBBox.computeVertices(),this._singleBBox.computeEdges(),this._singleBBox.computeFaces()),this._singleBBox}get recursiveBBox(){return this.recursiveBBoxNeedsUpdate&&(this.recursiveBBoxNeedsUpdate=!1,this._recursiveBBox.setFromObjectSize(this,!0),this._recursiveBBox.computeVertices(),this._recursiveBBox.computeEdges(),this._recursiveBBox.computeFaces()),this._recursiveBBox}resetBBoxNeedsUpdate(){this.singleBBoxNeedsUpdate=!0,this.recursiveBBoxNeedsUpdate=!0,this.traverseAncestors(r=>{Xn(r)&&(r.singleBBoxNeedsUpdate=!0,r.recursiveBBoxNeedsUpdate=!0)}),this.traverseEntity(r=>{r.singleBBoxNeedsUpdate=!0,r.recursiveBBoxNeedsUpdate=!0})}traverseEntity(r){r(this);for(let n of this.children)Xn(n)&&n.traverseEntity(r)}updateMatrixWorld(r){this.matrixAutoUpdate&&this.updateMatrix(),(this.matrixWorldNeedsUpdate||r)&&(this.parent===null?this.matrixWorld.multiplyMatrices(this.hiddenMatrix,this.matrix):(this.matrixWorld.multiplyMatrices(this.parent.matrixWorld,this.hiddenMatrix),this.matrixWorld.multiplyMatrices(this.matrixWorld,this.matrix)),this.matrixWorldNeedsUpdate=!1,r=!0);for(let n of this.children)n.updateMatrixWorld(r)}updateWorldMatrix(r,n){let s=this.parent;if(r&&s!==null&&s.updateWorldMatrix(!0,!1),this.matrixAutoUpdate&&this.updateMatrix(),this.parent===null?this.matrixWorld.multiplyMatrices(this.hiddenMatrix,this.matrix):(this.matrixWorld.multiplyMatrices(this.parent.matrixWorld,this.hiddenMatrix),this.matrixWorld.multiplyMatrices(this.matrixWorld,this.matrix)),n)for(let o of this.children)o.updateWorldMatrix(!1,!0)}shallowClone(r){return new this.constructor().shallowCopy(this,r)}shallowCopy(r,n=!0){if(super.copy(r,!1),this.raycastLock=r.raycastLock,this.scaleLock=r.scaleLock,this.hiddenMatrix.copy(r.hiddenMatrix),n===!0)for(let s of r.children)Xn(s)&&this.add(s.shallowClone());return this}clone(r){return new this.constructor().copy(this,r)}copy(r,n=!0){if(super.copy(r,!1),this.raycastLock=r.raycastLock,this.scaleLock=r.scaleLock,this.hiddenMatrix.copy(r.hiddenMatrix),n===!0)for(let s of r.children)Xn(s)&&this.add(s.clone());return this}keepChildrenMatrixWorld(){let r=new Ae,n=this.matrixWorld.clone();this.updateWorldMatrix(!1,!1),r.copy(this.matrixWorld).invert(),r.multiply(n);for(let s of this.children)Xn(s)&&s.hiddenMatrix.premultiply(r)}toJSON(r){let n=super.toJSON(r),s=n.object;return this.raycastLock===!0&&(s.raycastLock=!0),this.scaleLock===!0&&(s.scaleLock=!0),s.hiddenMatrix=this.hiddenMatrix.toArray(),n}fromJSON(r){return super.fromJSON(r),r.raycastLock!==void 0&&(this.raycastLock=r.raycastLock),r.scaleLock!==void 0&&(this.scaleLock=r.scaleLock),this.hiddenMatrix.fromArray(r.hiddenMatrix),this}fromObject3D(r){let n=r.children;return r.children=[],Object.assign(r,{raycastLock:!1,scaleLock:!1,hiddenMatrix:new Ae}),this.copy(r),r.children=n,this}toObjectTransformState(r=[]){this.updateWorldMatrix(!0,!1);let n={position:this.position.toArray(),rotation:[this.rotation.x,this.rotation.y,this.rotation.z],scale:this.scale.toArray(),hiddenMatrix:this.hiddenMatrix.toArray()};return wl(n,r)}fromObjectTransformState(r){return r.position&&this.position.fromArray(r.position),r.rotation&&this.rotation.fromArray(r.rotation),r.scale&&this.scale.fromArray(r.scale),r.hiddenMatrix&&this.hiddenMatrix.fromArray(r.hiddenMatrix),this.updateMatrix(),this}toState(r=[]){let n=se({name:this.name,visible:this.visible,raycastLock:this.raycastLock},this.toObjectTransformState(r));return wl(n,r)}fromState(r,n){return r.name&&(this.name=r.name),r.raycastLock!==void 0&&(this.raycastLock=r.raycastLock),r.type!=="OrthographicCamera"&&r.type!=="PerspectiveCamera"&&(this.matrixAutoUpdate=!1),r.visible!==void 0&&(this.visibility=r.visible),this.fromObjectTransformState(r),this}};var pu=class extends ot{constructor(t,r={}){super();this.object=t;let n=t.recursiveBBox.getSize(new M),s=.1;this.parameters=Fd.defaultData(n.toArray(),s),Vo(this.parameters,r),this.update(),this.setHideBase(this.parameters.hideBase)}refreshMaterial(){if("material"in this.object)for(let t of this.children)t.material=this.object.material}setHideBase(t){if("material"in this.object){if(Array.isArray(this.object.material)){if(this.children.length>0){for(let r of this.object.material)r.visible=!0;if(t){let r=this.object.material.map(n=>n.clone());for(let n of this.children)n.material=r}else for(let r of this.children)r.material=this.object.material}for(let r of this.object.material)r.visible=!t}else{if(this.children.length>0)if(this.object.material.visible=!0,t){let r=this.object.material.clone();for(let n of this.children)n.material=r}else for(let r of this.children)r.material=this.object.material;this.object.material.visible=!t}this.parameters.hideBase=t}}update(){switch(this._updateCount(),this.parameters.type){case"radial":this._updateRadial(this.parameters);break;case"linear":this._updateLinear(this.parameters);break;case"grid":this._updateGrid(this.parameters)}this.children.forEach(t=>t.updateMatrix())}_updateCount(){let t=this.parameters.type==="grid"?this.parameters.grid.count[0]*this.parameters.grid.count[1]*this.parameters.grid.count[2]:this.parameters.count;if(this.children.length!==t)if(this.children.length<t)for(let r=0,n=t-this.children.length;r<n;++r){let s=this.object.shallowClone(!1);s.visible=!0,this.add(s),this.parameters.hideBase&&this.setHideBase(!0)}else for(let r=0,n=this.children.length-t;r<n;++r)this.remove(this.children[0])}_updateRadial(t){let r=t.radial,n=r.start*et.DEG2RAD,s=r.end*et.DEG2RAD,o=n-s,a=new yn(r.rotation[0]*et.DEG2RAD,r.rotation[1]*et.DEG2RAD,r.rotation[2]*et.DEG2RAD),l;switch(r.axis){case"z":l=new M(0,0,1);break;case"y":l=new M(0,1,0);break;default:case"x":l=new M(1,0,0);break}for(let[c,h]of this.children.entries()){h.hiddenMatrix.identity(),h.scale.x=r.scale[0],h.scale.y=r.scale[1],h.scale.z=r.scale[2],h.position.setScalar(0);let u=o/t.count*c-n;switch(r.axis){case"x":h.rotation.set(0,u,0);break;case"y":h.rotation.set(0,0,u);break;case"z":h.rotation.set(u,0,0);break}h.translateOnAxis(l,r.radius),h.position.x+=r.position[0],h.position.y+=r.position[1],h.position.z+=r.position[2],r.alignment===!0?(h.rotation.x+=a.x,h.rotation.y+=a.y,h.rotation.z+=a.z):h.rotation.copy(a)}}_updateLinear(t){if(t.type!=="linear")throw new Error;let r=t.linear,n=new yn(r.rotation[0]*et.DEG2RAD,r.rotation[1]*et.DEG2RAD,r.rotation[2]*et.DEG2RAD);for(let[s,o]of this.children.entries())o.hiddenMatrix.identity(),o.scale.x=1+(r.scale[0]-1)*s,o.scale.y=1+(r.scale[1]-1)*s,o.scale.z=1+(r.scale[2]-1)*s,o.rotation.x=n.x*s,o.rotation.y=n.y*s,o.rotation.z=n.z*s,o.position.x=r.position[0]*s,o.position.y=r.position[1]*s,o.position.z=r.position[2]*s}_updateGrid(t){let r=0,n=t.grid;if(n.useCenter===!0){let s={x:n.count[0]%2===0?2:1,y:n.count[1]%2===0?2:1,z:n.count[2]%2===0?2:1},o=new M(n.size[0]*(n.count[0]-s.x)*.5,n.size[1]*(n.count[1]-s.y)*.5,n.size[2]*(n.count[2]-s.z)*.5);for(let a=0;a<n.count[0];a++)for(let l=0;l<n.count[1];l++)for(let c=0;c<n.count[2];c++){let h=this.children[r++];h.hiddenMatrix.identity(),h.scale.setScalar(1),h.rotation.set(0,0,0),h.position.x=n.size[0]*a-o.x,h.position.y=n.size[1]*l-o.y,h.position.z=n.size[2]*c-o.z}}else for(let s=0;s<n.count[0];s++)for(let o=0;o<n.count[1];o++)for(let a=0;a<n.count[2];a++){let l=this.children[r++];l.hiddenMatrix.identity(),l.scale.setScalar(1),l.rotation.set(0,0,0),l.position.x=n.size[0]*s,l.position.y=-n.size[1]*o,l.position.z=-n.size[2]*a}}fromJSON(t){return this}toJSON(){return{}}fromClonerState(t){return t.hideBase!==void 0&&this.setHideBase(t.hideBase),Vo(this.parameters,t),this.update(),this}};var kt=class extends Qn(Vt){constructor(t,r){super(t,r);this.isAbstractMesh=!0;this.isBooleanMesh=!1;this.booleanMeshSetAddress=-1;this.booleanWasTransformed=!1;this.booleanMatrixInvOld=new Ae;this.booleanExclude=null;Array.isArray(r)&&(this.selectedMaterial=0,t.groups.length===0&&t.addGroup(0,t.getAttribute("position").count,0))}get cloner(){return this._cloner}set cloner(t){this._cloner&&this.remove(this._cloner),t&&this.add(t),this._cloner=t}getSelectedMaterial(t){return Array.isArray(this.material)?(this.selectedMaterial===void 0&&(this.selectedMaterial=t!=null?t:0),this.material[t!=null?t:this.selectedMaterial]):this.material}setSelectedMaterial(t,r){Array.isArray(this.material)?(this.selectedMaterial===void 0&&(this.selectedMaterial=r!=null?r:0),r=r!=null?r:this.selectedMaterial,this.material[r].dispose(),this.material[r]=t):(this.material.dispose(),this.material=t)}updateGeometry(t){let r=this.geometry,n=Cv[r.userData.type],s=this.objectType==="NonParametric"?Object.assign({},r.userData,{geometry:r}):r.userData,o=n.build(n.normalizeInputs(t,s)),a=r.uuid;if(this.geometry.dispose(),this.geometry=o,this.geometry.uuid=a,this.geometry.computeBoundingSphere(),this.cloner)for(let l of this.cloner.children)l.geometry=this.geometry}resizeGeometry(t,r,n){Xh.resizeGeometry(this.geometry,{width:t,height:r,depth:n})}shallowClone(t){return new this.constructor(this.geometry,this.material).shallowCopy(this,t)}clone(t){let r=this.objectType==="NonParametric"?Object.assign({},this.geometry.userData,{geometry:this.geometry.clone()}):this.geometry.userData,n=mu(r),s=Array.isArray(this.material)?this.material.map(o=>o.clone()):this.material.clone();return new this.constructor(n,s).copy(this,t)}copy(t,r=!0){return super.copy(t,r),t.cloner&&(this.cloner=new pu(t,t.cloner.parameters),this.add(this.cloner)),this}setFromClonerState(t){t===null?this.cloner=void 0:(this.cloner===void 0&&(this.cloner=new pu(this)),this.cloner.fromClonerState(t))}fromState(t,r){var n,s,o;return super.fromState(t),t.type==="Mesh"&&(this.setFromClonerState(t.cloner),this.castShadow=(n=t.castShadow)!=null?n:!0,this.receiveShadow=(s=t.receiveShadow)!=null?s:!0,this.booleanExclude=(o=t.booleanExclude)!=null?o:null),this}freeBooleanPointer(){this.booleanMeshSetAddress!==-1&&(Jn.freeMeshSet(this.booleanMeshSetAddress),this.booleanMeshSetAddress=-1)}invalidateDownstreamBooleanData(t=!1){return t?this.booleanWasTransformed=!0:this.freeBooleanPointer(),Lt(this.parent)?this.parent.invalidateDownstreamBooleanData():this}invalidateUpstreamBooleanData(){this.freeBooleanPointer();for(let t of this.children)er(t)&&(t.freeBooleanPointer(),Lt(t)&&t.invalidateUpstreamBooleanData())}};var XF=new M(0,0,1),Y1=new M,X1=new M,Q1=new Ft,ho=class extends kt{constructor(t=Hr.create({}),r=new Yr({side:or})){var n;super(t,r);this.recursiveSelection=!1;this.objectType="VectorObject";this.eventDispatcher=new Yt;this._onShapeUpdate=()=>{this.updateGeometry({}),this.geometry.computeBoundingSphere(),this.geometry.computeBoundingBox()};this.castShadow=!0,this.receiveShadow=!0,this.forceComputeSize=!0,this.shape=t.userData.shape,(n=this.shape.eventDispatcher)==null||n.addEventListener("update",this._onShapeUpdate)}toJSON(t){let r=super.toJSON(t);return r.object.objectType="VectorObject",r}fromState(t){return super.fromState(t),this.shape.update(),this}setHelperVisibility(){}updateGeometry(t){if(super.updateGeometry(t),"userData"in this.geometry){let r=this.geometry.userData.parameters;this.eventDispatcher.dispatchEvent({type:"geometryUpdate",parameters:r})}}setShape(t){var r,n;this.shape&&((r=this.shape.eventDispatcher)==null||r.removeEventListener("update",this._onShapeUpdate)),this.shape=t,(n=this.shape.eventDispatcher)==null||n.addEventListener("update",this._onShapeUpdate)}updateWorldMatrix(t,r){super.updateWorldMatrix(t,r),Q1.getNormalMatrix(this.matrixWorld),Y1.copy(XF).applyMatrix3(Q1).normalize(),X1.setFromMatrixPosition(this.matrixWorld),this.shape.plane.setFromNormalAndCoplanarPoint(Y1,X1)}clone(t){let r=this.shape.clone(),n=this.material.clone(),s=this.geometry.userData,o=Hr.create(Object.assign({},s,{shape:r})),a=new ho(o,n).copy(this,t);return a.shape=r,r.update(),a}raycast(t,r){kt.prototype.raycast.call(this,t,r)}};function Fp(i,e){return QF(i)}function QF(i){let e={parameters:i,type:i.type};if(i.type==="VectorGeometry"){let r=Tt.createFromState(i.shape,i.width,i.height);e.shape=r}else i.type==="NonParametricGeometry"&&(i.data.groups&&i.data.groups.forEach(r=>{var n;return r.materialIndex=Math.max((n=r.materialIndex)!=null?n:0,0)}),e.geometry=new Ws().parse(i));let t;try{t=mu(e)}catch(r){console.error(r)}if(!t){let r=Tt.createFromState(El.defaultData(),100,100);e.shape=r,t=mu(e)}return t}var Ke;bp.then(i=>{Ke=i});var J1=new Float32Array([10,10,0,-10,10,0,-10,-10,0,10,-10,0]),K1=new Uint32Array([0,1,2,3]),Z1=new Uint8Array([4]),Kn=class{static build(i,e,t,r,n){var c,h;let s,o,a,l=(h=(c=i==null?void 0:i.phongAngle)!=null?c:e==null?void 0:e.phongAngle)!=null?h:35;if(r===!1&&(l=-1),i.positionWASM!==void 0){t&&t!==0&&(Ke.free_bvh(t),Ke.free_subdivision_surface(t));try{s=Kn.allocate(i,n)}catch(u){console.error(u,i),s=Kn.allocate({positionWASM:J1,indexWASM:K1,verticesPerFaceWASM:Z1},n)}Ke.set_destination_refinement_level(s,0),o=Kn.buildLevel(s,!0,l)}else s=t,i.phongAngle!==void 0&&(o=Kn.buildLevel(s,!0,l));return i.subdivisions!==void 0&&(Ke.set_destination_refinement_level(s,i.subdivisions),i.subdivisions>0?a=Kn.buildLevel(s,!1,l):a=null),{subdivPointer:s,originalGeometry:o,subdividedGeometry:a}}static primitiveToQuads(i,e){i.widthSegments>16&&(i.widthSegments=16),i.heightSegments>16&&(i.heightSegments=16),i.depthSegments>16&&(i.depthSegments=16),i.radialSegments>16&&(i.radialSegments=16),i.type==="DodecahedronGeometry"&&(i.detail=0);let t=i.shape!==void 0?e.geometry:Fp(i),r,n,s,o;return{positions:r,triIndices:o}=Iv(t.getAttribute("position"),t.getIndex()),{indices:n,verticesPerFace:s}=Rv(r,o,t),{positions:r,indices:n,verticesPerFace:s}}static allocate(i,e){var b;let t,r,n,s=[],o=[];i.positionWASM&&i.positionWASM.length>0?(t=i.positionWASM,r=i.indexWASM,n=i.verticesPerFaceWASM):(t=J1,r=K1,n=Z1);let a=t.length,l=r.length,c=n.length,h=t.length+s.length+o.length,u=r.length+n.length,f=h*Float32Array.BYTES_PER_ELEMENT+u*Uint32Array.BYTES_PER_ELEMENT,d=h*Float32Array.BYTES_PER_ELEMENT,p=u*Uint32Array.BYTES_PER_ELEMENT,m=Ke._malloc(f),g=new Float32Array(Ke.HEAPF32.buffer,m,h),v=new Uint32Array(Ke.HEAPU32.buffer,m+d,u);g.set(t,0),g.set(s,t.length),g.set(o,t.length+s.length),v.set(r,0),v.set(n,r.length);let y;(b=i==null?void 0:i.scaleBaked)!=null&&b.some(S=>S!==1)&&(y=new Ae().makeScale(...i.scaleBaked)),e&&(y?y.premultiply(e):y=e);let w=y?Ke.alloc_subdivision_surface2(m,a,m+d,l,m+d+r.length*Uint32Array.BYTES_PER_ELEMENT,c,y.elements):Ke.alloc_subdivision_surface(m,a,m+d,l,m+d+r.length*Uint32Array.BYTES_PER_ELEMENT,c);return Ke._free(m),w}static buildLevel(i,e,t,r,n){let s=n?Ke.get_mesh_data2(i,e?Ke.Level.CONTROL:Ke.Level.REFINED,t,n.elements):Ke.get_mesh_data(i,e?Ke.Level.CONTROL:Ke.Level.REFINED,t),o=8,a=Ke.HEAPU32.subarray(s>>2,(s>>2)+o),l=a.subarray(4,4+4),c=0,h=Ke.HEAPU32[a[c]>>2],u=Ke.HEAPF32.subarray(h>>2,(h>>2)+l[c]);c++;let f=Ke.HEAPU32[a[c]>>2],d=Ke.HEAPF32.subarray(f>>2,(f>>2)+l[c]);c++;let p=Ke.HEAPU32[a[c]>>2],m=Ke.HEAPU32.subarray(p>>2,(p>>2)+l[c]);c++;let g=Ke.HEAPU32[a[c]>>2],v=Ke.HEAPU32.subarray(g>>2,(g>>2)+l[c]);if(c++,r===void 0){let y=new De;if(y.setIndex(new Os(v,1)),y.setAttribute("position",new Te(u,3)),y.setAttribute("normal",new Te(d,3)),e){y.setAttribute("faceMap",new Os(m,1));let w=new Float32Array(d.length/3*4).fill(0);y.setAttribute("color",new Ve(w,4))}return Ke.free_mesh_data(s),y.userData.type="SubdivGeometry",y}r.getAttribute("position").copyArray(u),r.getAttribute("normal").copyArray(d),r.attributes.position.needsUpdate=!0,r.attributes.normal.needsUpdate=!0,Ke.free_mesh_data(s)}static buildControlCageWireframe(i,e,t){let r=Ke.get_wireframe_data_for_base_level(i),n=4,s=Ke.HEAPU32.subarray(r>>2,(r>>2)+n),o=s.subarray(2,2+2),a=0,l=Ke.HEAPU32[s[a]>>2],c=Ke.HEAPF32.subarray(l>>2,(l>>2)+o[a]);a++;let h=Ke.HEAPU32[s[a]>>2],u=Ke.HEAPU32.subarray(h>>2,(h>>2)+o[a]);if(e===void 0){let f=new De;f.setAttribute("position",new Te(c,3));let d=new Float32Array(c.length);for(let p=0,m=c.length;p<m;)d[p++]=t.r,d[p++]=t.g,d[p++]=t.b;return f.setAttribute("color",new Ve(d,3)),f.setIndex(new Os(u,1)),Ke.free_wireframe_data_for_base_level(r),f}e.getAttribute("position").copyArray(c),e.attributes.position.needsUpdate=!0,Ke.free_wireframe_data_for_base_level(r)}static updateCollabMesh(i,e,t){e||Ke.set_destination_refinement_level(i,1);let r=t?Ke.get_topological_data2(i,e?Ke.Level.CONTROL:Ke.Level.REFINED,t.elements):Ke.get_topological_data(i,e?Ke.Level.CONTROL:Ke.Level.REFINED),n=6,s=Ke.HEAPU32.subarray(r>>2,(r>>2)+n),o=s.subarray(3,3+3),a=0,l=Ke.HEAPU32[s[a]>>2],c=new Float32Array(Ke.HEAPF32.subarray(l>>2,(l>>2)+o[a]));a++;let h=Ke.HEAPU32[s[a]>>2],u=new Uint32Array(Ke.HEAPU32.subarray(h>>2,(h>>2)+o[a]));a++;let f=Ke.HEAPU32[s[a]>>2],d=new Uint8Array(Ke.HEAPU32.subarray(f>>2,(f>>2)+o[a]));return Ke.free_topological_data(r),{positions:c,indices:u,verticesPerFace:d}}};var $1=["getX","getY","getZ"];function Iv(i,e){let t={},r=e?e.count:i.count,n=0,s=[],o=[],a=1e4;for(let c=0;c<r;c++){let h=e?e.getX(c):c,u="";for(let f=0;f<3;f++)u+=`${~~(i[$1[f]](h)*a)},`;if(u in t)s.push(t[u]);else{for(let f=0;f<3;f++)o.push(i[$1[f]](h));t[u]=n,s.push(n),n++}}let l=[];for(let c=0;c<s.length;c+=3)s[c]===s[c+1]||s[c]===s[c+2]||s[c+1]===s[c+2]||l.push(s[c],s[c+1],s[c+2]);return{positions:o,triIndices:l}}var Up=new M,Pv=new M,Dv=new M,Lv=new M;function Rv(i,e,t){var s;let r=[],n=[];if(t.userData.shape!==void 0&&t.userData.parameters.depth===0){let o=t.userData.shape.extractShapePointsToFlatArray([]),a=0;for(let c=0;c<o.length;c+=2)a+=(o[c]-o[(c===0?o.length:c)-2])*(o[c+1]+o[(c===0?o.length:c)-1]);i.length=0;let l=0;if(a<0)for(let c=0;c<o.length;c+=2)i.push(o[c],o[c+1],0),r.push(l++);else for(let c=o.length-2;c>=0;c-=2)i.push(o[c],o[c+1],0),r.push(l++);return n.push(l),{indices:r,verticesPerFace:n}}for(let o=0,a=(s=t.capStartIndex)!=null?s:e.length;o<a;)if(e[o+1]===e[o+3]&&e[o+2]===e[o+5]||e[o+0]===e[o+3]&&e[o+2]===e[o+4]){Up.set(i[e[o]*3],i[e[o]*3+1],i[e[o]*3+2]),Pv.set(i[e[o+1]*3],i[e[o+1]*3+1],i[e[o+1]*3+2]),Dv.set(i[e[o+4]*3],i[e[o+4]*3+1],i[e[o+4]*3+2]),Lv.set(i[e[o+5]*3],i[e[o+5]*3+1],i[e[o+5]*3+2]),Pv.sub(Up).normalize(),Dv.sub(Up).normalize(),Lv.sub(Up).normalize();let l=Pv.cross(Dv).dot(Lv);Math.abs(l)>.005?(r.push(e[o],e[o+1],e[o+2]),n.push(3),o+=3):(r.push(e[o],e[o+1],e[o+4],e[o+5]),n.push(4),o+=6)}else r.push(e[o],e[o+1],e[o+2]),n.push(3),o+=3;if(t.capStartIndex!==void 0){let o=[],a=[],l=0;for(let c=0,h=0;c<i.length;c+=3,h++)i[c+2]===0&&(o.push(h),l++),i[c+2]===t.userData.parameters.depth&&a.push(h);if(t.userData.parameters.extrudeBevelSize===0){let c=a[0];a[0]=a[1],a[1]=c}o.reverse(),r.push(...o,...a),n.push(l,l)}return{indices:r,verticesPerFace:n}}var Jn={};_x(Jn,{calcBoolean:()=>ZF,calcBooleanTopological:()=>KF,freeMeshSet:()=>tU,getMeshSet:()=>$F,transformMeshSet:()=>eU});var tA,rA=new Promise(i=>{tA=i}),eA=!1;async function nA(){if(eA)return;let e=!1?".":"https://unpkg.com/@splinetool/boolean-wasm@0.9.61/build",[t,r]=await Promise.all([import("./boolean.js"),fetch(`${e}/boolean.wasm`).then(o=>o.arrayBuffer())]),s=await t.default({wasmBinary:r});tA(s),eA=!0}var gt,Kl;rA.then(i=>gt=i);function JF(i,e){let t,{positions:r,triIndices:n}=Iv(i.getAttribute("position"),i.getIndex()),s;if(e){let{indices:o,verticesPerFace:a}=Rv(r,n,i);s=a.length,t=[];for(let l=0,c=0;l<s;l++){t.push(a[l]);for(let h=0;h<a[l];h++)t.push(o[c++])}}else{let o=n.length;t=Array(o+o/3),s=0;for(let a=0,l=0;l<t.length;)t[l++]=3,s++,t[l++]=n[a++],t[l++]=n[a++],t[l++]=n[a++]}return{positions:r,faceIndices:t,nFaces:s}}function iA(i){let e=i.length,t=e*Uint32Array.BYTES_PER_ELEMENT,r=e*Float32Array.BYTES_PER_ELEMENT,n=Number.isInteger(i[0])?t:r,s=gt._malloc(n);return(Number.isInteger(i[0])?new Uint32Array(gt.HEAPU32.buffer,s,e):new Float32Array(gt.HEAPF32.buffer,s,e)).set(i,0),s}function sA(i){switch(i){case 0:return gt.OP.UNION;case 1:return gt.OP.INTERSECTION;case 2:return gt.OP.A_MINUS_B;case 3:return gt.OP.B_MINUS_A;case 4:return gt.OP.SYMMETRIC_DIFFERENCE;case 5:return gt.OP.ALL;default:throw new Error("Unknown boolean operation "+i)}}function KF(i,e){Kl===void 0&&(Kl=gt.init_csg());let t=iA(i),r=gt.csg_calc_topological(Kl,t,i.length,sA(e));gt._free(t);let n=6,s=gt.HEAPU32.subarray(r>>2,(r>>2)+n),o=s.subarray(3,3+3),a=0,l=gt.HEAPU32[s[a]>>2],c=new Float32Array(gt.HEAPF32.subarray(l>>2,(l>>2)+o[a]));a++;let h=gt.HEAPU32[s[a]>>2],u=new Uint32Array(gt.HEAPU32.subarray(h>>2,(h>>2)+o[a]));a++;let f=gt.HEAPU32[s[a]>>2],d=new Uint8Array(gt.HEAPU32.subarray(f>>2,(f>>2)+o[a]));return gt.free_mesh_data(r),{positions:c,indices:u,verticesPerFace:d}}function ZF(i,e,t,r){Kl===void 0&&(Kl=gt.init_csg());let n=iA(i),s=gt.csg_calc(Kl,n,i.length,r,sA(e));gt._free(n);let o=5,a=gt.HEAPU32.subarray(s>>2,(s>>2)+o),l=a.subarray(2,2+3),c=0,h=gt.HEAPU32[a[c]>>2],u=gt.HEAPF32.subarray(h>>2,(h>>2)+l[c]);c++;let f=gt.HEAPU32[a[c]>>2],d=gt.HEAPF32.subarray(f>>2,(f>>2)+l[c]);c++;let p=l[c];t.setAttribute("position",new Te(u,3)),t.setAttribute("normal",new Te(d,3));let m=gt.HEAPF32.subarray((s>>2)+5,(s>>2)+5+6);return t.boundingSphere===null&&(t.boundingSphere=new Lr),t.boundingSphere.center.set(m[0],m[1],m[2]),t.boundingSphere.radius=(m[3]**2+m[4]**2+m[5]**2)**.5,t.userData.parameters={width:m[3]*2,height:m[4]*2,depth:m[5]*2},gt.free_mesh_data(s),p}function $F(i,e){if(gt===void 0)return-1;let t,r,n;if(e&&i.userData.positions!==void 0){let m=i.userData;n=m.verticesPerFace.length,t=m.positions,r=Array(m.verticesPerFace.reduce((g,v)=>g+v,0)+n);for(let g=0,v=0,y=0;g<m.verticesPerFace.length;g++){r[y++]=m.verticesPerFace[g];for(let w=0;w<m.verticesPerFace[g];w++)r[y++]=m.indices[v++]}}else({positions:t,faceIndices:r,nFaces:n}=JF(i,e));let s=t.length,o=r.length,a=t.length,l=r.length,c=a*Float32Array.BYTES_PER_ELEMENT+l*Uint32Array.BYTES_PER_ELEMENT,h=a*Float32Array.BYTES_PER_ELEMENT,u=l*Uint32Array.BYTES_PER_ELEMENT,f=gt._malloc(c),d=new Float32Array(gt.HEAPF32.buffer,f,a),p=new Uint32Array(gt.HEAPU32.buffer,f+h,l);return d.set(t,0),p.set(r,0),gt.get_csg_mesh(f,s,f+h,o,n)}function eU(i,e){gt.transform_csg_mesh(i,e.elements)}function tU(i){gt.free_csg_mesh(i)}var Cv={ConeGeometry:WM,CubeGeometry:jM,CylinderGeometry:HM,DodecahedronGeometry:qM,EllipseGeometry:p1,HelixGeometry:v1,IcosahedronGeometry:x1,LatheGeometry:b1,NonParametricGeometry:w1,PolygonGeometry:S1,PyramidGeometry:M1,RectangleGeometry:vp,SphereGeometry:A1,PlaneGeometry:T1,BackdropGeometry:_1,StarGeometry:E1,TextFrameGeometry:xp,TorusGeometry:C1,TorusKnotGeometry:P1,TriangleGeometry:D1,VectorGeometry:Hr},mu=i=>Cv[i.type].create(i);var oA=new Ae;function Bv(i){let e=!1;return i.scene.objects.traverse((t,r)=>{var n;((n=r.geometry)==null?void 0:n.type)==="BooleanGeometry"&&(e=!0)}),e}var zp=class extends kt{constructor(t=new De,r=new pn){super(t,r);this.booleanOp=2;this.phongAngle=35;this.meshSetAddresses=[];this.needsTransformForDownstream=!1;this.isBooleanMesh=!0,this.castShadow=!0,this.receiveShadow=!0,this.geometry.userData.parameters={width:0,height:0,depth:0},this.onAfterRender=this.recomputeBoolean.bind(this)}reInit(){this.isBooleanMesh=!0,this.meshSetAddresses=[],this.needsTransformForDownstream=!1,this.geometry.userData.parameters={width:0,height:0,depth:0},this.onAfterRender=this.recomputeBoolean.bind(this)}recomputeBoolean(t){var n;if(this.booleanMeshSetAddress!==-1)return;for(let s=0;s<this.children.length;s++){let o=this.children[s];Lt(o)&&o.recomputeBoolean(t===!0)}this.meshSetAddresses=[];for(let s=0;s<this.children.length;s++){let o=this.children[s];if(q1(o)&&o.booleanExclude===!1&&((n=o.geometry.attributes.position)==null?void 0:n.count)>0&&o.geometry.drawRange.count>0){if(o.booleanMeshSetAddress===-1){if(o.booleanMeshSetAddress=Jn.getMeshSet(o.geometry,t===!0),o.booleanMeshSetAddress===-1)return;Jn.transformMeshSet(o.booleanMeshSetAddress,o.matrix),o.booleanMatrixInvOld.copy(o.matrix).invert(),o.booleanWasTransformed=!1}else Lt(o)&&o.needsTransformForDownstream===!0?(Jn.transformMeshSet(o.booleanMeshSetAddress,o.matrix),o.needsTransformForDownstream=!1):o.booleanWasTransformed===!0&&(oA.multiplyMatrices(o.matrix,o.booleanMatrixInvOld),Jn.transformMeshSet(o.booleanMeshSetAddress,oA),o.booleanMatrixInvOld.copy(o.matrix).invert(),o.booleanWasTransformed=!1);this.meshSetAddresses.push(o.booleanMeshSetAddress)}}if(this.meshSetAddresses.length===0){this.geometry.setDrawRange(0,0);return}if(t===!0)return Jn.calcBooleanTopological(this.meshSetAddresses,this.booleanOp);let r=this.geometry;r.dispose(),this.geometry=new De,this.geometry.userData=r.userData,this.geometry.boundingSphere=r.boundingSphere;try{this.booleanMeshSetAddress=Jn.calcBoolean(this.meshSetAddresses,this.booleanOp,this.geometry,this.phongAngle)}catch(s){this.booleanMeshSetAddress=0,console.error(s)}this.booleanMatrixInvOld.copy(this.matrix).invert(),this.needsTransformForDownstream=!0}toJSON(t){let r=super.toJSON(t);return r.object.objectType="Mesh3D",r}updateGeometry(t){let r=t.parameters;r.operation!==void 0&&(this.booleanOp=r.operation),r.phongAngle!==void 0&&(this.phongAngle=r.phongAngle),this.invalidateDownstreamBooleanData().recomputeBoolean()}};var Gi=i=>{var e;return e=class extends i{constructor(){super(...arguments);this.isObjectHelper=!0}},e.geometryHelper=new vn(30,30,30),e};var Gp=new oi,Nv=new Lr,aA=new Ae,ki=(i,e,t,r,n=!1)=>{let s=e,o=i.matrixWorld;if(s.boundingSphere===null&&s.computeBoundingSphere(),Nv.copy(s.boundingSphere),Nv.applyMatrix4(o),t.ray.intersectsSphere(Nv)===!1||(aA.copy(o).invert(),Gp.copy(t.ray).applyMatrix4(aA),s.boundingBox!==null&&Gp.intersectsBox(s.boundingBox)===!1))return;let a,l,c,h,u=s.index,f=s.attributes.position,d=s.drawRange,p,m;if(n===!1){let v=Math.max(0,d.start),y=Math.min(u.count,d.start+d.count);for(p=v,m=y;p<m;p+=3)if(l=u.getX(p),c=u.getX(p+1),h=u.getX(p+2),a=g(i,t,Gp,f,l,c,h),a){a.faceIndex=Math.floor(p/3),r.push(a);return}}else{let y=s.attributes.position,w=new M,b=new M,S=new M,T=new M,A=2,_=1/((i.scale.x+i.scale.y+i.scale.z)/3),E=_*_,C=Math.max(0,d.start),I=Math.min(y.count,d.start+d.count);for(let N=C,R=I-1;N<R;N+=A){if(w.fromBufferAttribute(y,N),b.fromBufferAttribute(y,N+1),Gp.distanceSqToSegment(w,b,T,S)>E)continue;T.applyMatrix4(i.matrixWorld);let G=t.ray.origin.distanceTo(T);G<t.near||G>t.far||r.push({distance:G,point:S.clone().applyMatrix4(i.matrixWorld),object:i})}}function g(v,y,w,b,S,T,A){let x=new M,_=new M,E=new M,C=new M,I=new M;if(x.fromBufferAttribute(b,S),_.fromBufferAttribute(b,T),E.fromBufferAttribute(b,A),w.intersectTriangle(x,_,E,!1,C)===null)return null;I.copy(C),I.applyMatrix4(v.matrixWorld);let R=y.ray.origin.distanceTo(I);return R<y.near||R>y.far?null:{faceIndex:1,distance:R,point:I.clone(),object:v}}};var kp=new M,Zn=new Gn,Ov=class extends li{constructor(t){let r=new De,n=new kr({color:16777215,vertexColors:!0,toneMapped:!1}),s=[],o=[],a={},l=new be(15711266),c=new be(15711266),h=new be(2857471);u("n1","n2",l),u("n2","n4",l),u("n4","n3",l),u("n3","n1",l),u("f1","f2",l),u("f2","f4",l),u("f4","f3",l),u("f3","f1",l),u("n1","f1",l),u("n2","f2",l),u("n3","f3",l),u("n4","f4",l),u("p","n1",c),u("p","n2",c),u("p","n3",c),u("p","n4",c),u("u1","u2",h),u("u2","u3",h),u("u3","u1",h);function u(d,p,m){f(d,m),f(p,m)}function f(d,p){s.push(0,0,0),o.push(p.r,p.g,p.b),a[d]===void 0&&(a[d]=[]),a[d].push(s.length/3-1)}r.setAttribute("position",new Te(s,3)),r.setAttribute("color",new Te(o,3));super(r,n);this.type="CameraHelper",this.camera=t,this.camera.updateProjectionMatrix&&this.camera.updateProjectionMatrix(),this.matrix=t.matrixWorld,this.matrixAutoUpdate=!1,this.pointMap=a,this.update()}update(){let t=this.geometry,r=this.pointMap,n=!0;Zn.projectionMatrixInverse.elements=[.5112609807824982,-0,-0,-0,-0,.41421356237309503,-0,-0,-0,-0,-0,-.099999,-0,-0,-1.0000000000000002,.100001];let s=1,o=1,a=n?.8:1e-4;yi("n1",r,t,Zn,-s,-o,a),yi("n2",r,t,Zn,s,-o,a),yi("n3",r,t,Zn,-s,o,a),yi("n4",r,t,Zn,s,o,a);let l=a;yi("f1",r,t,Zn,-s,-o,l),yi("f2",r,t,Zn,s,-o,l),yi("f3",r,t,Zn,-s,o,l),yi("f4",r,t,Zn,s,o,l);let c=l,h=.5;yi("u1",r,t,Zn,s*.7*h,o*1.1,c),yi("u2",r,t,Zn,-s*.7*h,o*1.1,c),yi("u3",r,t,Zn,0,o*(1.1+.9*h),c),t.getAttribute("position").needsUpdate=!0}dispose(){this.geometry.dispose(),this.material.dispose()}};function yi(i,e,t,r,n,s,o){kp.set(n,s,o).unproject(r);let a=e[i];if(a!==void 0){let l=t.getAttribute("position");for(let c=0,h=a.length;c<h;c++)l.setXYZ(a[c],kp.x,kp.y,kp.z)}}var Vp=class extends Gi(Ov){constructor(t){super(t);this.object=t;this.object=t,this.name=`CombinedCameraHelper: ${t.uuid}`}updateMatrixWorld(t){super.updateMatrixWorld(t),this.updateTarget()}updateTarget(){let t=this.object.getTarget();this.updateWorldMatrix(!0,!1),this.worldToLocal(t)}raycast(t,r){ki(this.object,this.geometry,t,r,!0)}};var Zl=class extends Gi(Xf){constructor(t,r=15,n=10066329){super(t,r,n);this.object=t;this.name=`DirectionalLightHelper: ${t.uuid}`}raycast(t,r){ki(this.object,Zl.geometryHelper,t,r)}};var $l=class extends Gi(Qf){constructor(t,r=15){super(r);this.object=t;this.object.updateMatrixWorld(),this.name=`EmptyObjectHelper: ${t.uuid}`,this.matrix=t.matrixWorld,this.matrixAutoUpdate=!1}raycast(t,r){ki(this.object,$l.geometryHelper,t,r)}update(){}};var ec=class extends Gi(Yf){constructor(t,r=15,n=6710886){super(t,r,n);this.object=t;this.name=`PointLightHelper: ${t.uuid}`}raycast(t,r){ki(this.object,ec.geometryHelper,t,r)}};var Hp=class extends Gi(qf){constructor(t,r=6710886){super(t,r);this.object=t;this.name=`SpotLightHelper: ${t.uuid}`}raycast(t,r){ki(this.object,Hp.geometryHelper,t,r)}update(){if(this.object!==void 0){let t=Hp._vector,r=this.object.distance?this.object.distance:1e3,n=r*Math.tan(this.object.angle);this.cone.scale.set(n,n,r),t.setFromMatrixPosition(this.object.target.matrixWorld),this.cone.lookAt(t);let s=this.color!==void 0?this.color:this.light.color;if(this.cone.material instanceof Array)for(let o=0,a=this.cone.material.length;o<a;o++)this.cone.material[o].color.set(s);else this.cone.material.color.set(s)}}},gu=Hp;gu._vector=new M;var Vi=(i,e)=>class extends i{constructor(){super(...arguments);this.objectHelper=new e(this);this.enableHelper=!1}set visibility(n){this.visible=n,this.setHelperVisibility(n),this.setHelperChildrenVisibility(n)}get visibility(){return this.visible}get geometryHelper(){return e.geometryHelper}setHelperVisibility(n){this.objectHelper.visible=n}setHelperChildrenVisibility(n){for(let s of this.children)Xn(s)&&s.traverseEntity(o=>{ms(o)&&o.visible&&(o.objectHelper.visible=n)})}raycast(n,s){this.objectHelper.raycast(n,s)}copy(n,s=!0){return super.copy(n,s),n.enableHelper!==void 0&&(this.enableHelper=n.enableHelper),n.objectHelper!==void 0&&(this.objectHelper.visible=n.objectHelper.visible),this}toJSON(n){let s=super.toJSON(n),o=s.object;return o.enableHelper=this.enableHelper,s}fromJSON(n){return super.fromJSON(n),n.enableHelper!==void 0&&(this.enableHelper=!0),this}fromLightState(n,s){if(this.objectType==="LightDirectional"||this.objectType==="LightPoint"||this.objectType==="LightSpot"){let o=this;n.color!==void 0&&(o.color=pr(n.color,s)),n.intensity!==void 0&&(o.intensity=n.intensity),n.depth!==void 0&&(o.shadow.camera.far=n.depth,o.shadow.needsUpdate=!0),n.shadows!==void 0&&(this.castShadow=n.shadows),n.helper!==void 0&&(this.enableHelper=n.helper,o.gizmos.shadowmap.visible=n.helper)}return this}};var tc=new M,Fv=new M,Bn=class extends Vi(Qn(Gn),Vp){constructor(t=window.innerWidth,r=window.innerHeight,n=45,s,o=1e5){super();this.objectType="CombinedCamera";this._cameraType="OrthographicCamera";this.targetOffset=Wo.DefaultTargetOffset;this.isUpVectorFlipped=!1;this.angleOffsetFromUp=0;this.width=t,this.height=r,this.orthoCamera=new Co(t*-.5,t*.5,r*.5,r*-.5,s!=null?s:-5e4,o),this.perspCamera=new sr(n,t/r,s!=null?s:50,o),this.left=this.orthoCamera.left,this.right=this.orthoCamera.right,this.top=this.orthoCamera.top,this.bottom=this.orthoCamera.bottom,this.far=this.orthoCamera.far,this.view=this.orthoCamera.view,this.aspect=this.perspCamera.aspect,this.fov=this.perspCamera.fov,this.focus=this.perspCamera.focus,this.filmGauge=this.perspCamera.filmGauge,this.filmOffset=this.perspCamera.filmOffset,this.toOrthographic(!0)}static createFromState(t,r){let n=new Bn().fromState(r);return n.enableHelper=!0,n.objectHelper.update(),n.uuid=t,n}get isPerspectiveCamera(){return this.cameraType==="PerspectiveCamera"}get isOrthographicCamera(){return!this.isPerspectiveCamera}get cameraType(){return this._cameraType}setNear(t,r){t==="PerspectiveCamera"?this.perspCamera.near=r:this.orthoCamera.near=r}setZoom(t,r){r>=0&&(t==="PerspectiveCamera"?this.perspCamera.zoom=r:this.orthoCamera.zoom=r)}set cameraType(t){t==="PerspectiveCamera"?this.toPerspective():t==="OrthographicCamera"&&this.toOrthographic()}get near(){return this._cameraType==="PerspectiveCamera"?this.perspCamera.near:this.orthoCamera.near}set near(t){this._cameraType==="PerspectiveCamera"?this.perspCamera.near=t:this.orthoCamera.near=t}get zoom(){return this._cameraType==="PerspectiveCamera"?this.perspCamera.zoom:this.orthoCamera.zoom}set zoom(t){t>=0&&(this._cameraType==="PerspectiveCamera"?this.perspCamera.zoom=t:this.orthoCamera.zoom=t)}lookAt(t){super.lookAt(t),this.getWorldPosition(tc),this.targetOffset=tc.distanceTo(t)}getTarget(t=new M){return this.getWorldDirection(Fv),this.getWorldPosition(tc),Fv.multiplyScalar(this.targetOffset),t.copy(tc).add(Fv),t}getDistanceToTarget(){let t=this.getTarget();return this.getWorldPosition(tc),tc.distanceTo(t)}updateUp(){let t=this.getWorldQuaternion(new zt),r=new M(0,0,1).applyQuaternion(t),n=new M().copy(ot.DefaultUp);this.isUpVectorFlipped&&n.negate(),n.applyQuaternion(t);let s=new M().copy(ot.DefaultUp).projectOnPlane(r),o=new M().crossVectors(s,n).dot(r)>=0?1:-1;this.angleOffsetFromUp=s.angleTo(n)*o}getViewFrontToObject(t){let r=t.getWorldPosition(new M),s=t.getWorldDirection(new M).multiplyScalar(this.targetOffset);return{position:r.clone().add(s),target:r}}getViewToObject(t){let r=t.getWorldPosition(new M),s=this.getWorldDirection(new M).multiplyScalar(this.targetOffset);return{position:r.clone().sub(s),target:r}}setViewplaneSize(t,r){this.left=-t*.5,this.right=t*.5,this.top=r*.5,this.bottom=-r*.5,this.aspect=t/r,this.updateProjectionMatrix()}toOrthographic(t){this.orthoCamera.left=this.left,this.orthoCamera.right=this.right,this.orthoCamera.top=this.top,this.orthoCamera.bottom=this.bottom,this.orthoCamera.view=this.view,this.orthoCamera.far=this.far,this.orthoCamera.updateProjectionMatrix(),this.projectionMatrix=this.orthoCamera.projectionMatrix,this.projectionMatrixInverse=this.orthoCamera.projectionMatrixInverse,this._cameraType="OrthographicCamera",(this.enableHelper===!0||t===!0)&&this.objectHelper.update()}toPerspective(t){this.perspCamera.aspect=this.aspect,this.perspCamera.fov=this.fov,this.perspCamera.view=this.view,this.perspCamera.far=this.far,this.perspCamera.updateProjectionMatrix(),this.projectionMatrix=this.perspCamera.projectionMatrix,this.projectionMatrixInverse=this.perspCamera.projectionMatrixInverse,this._cameraType="PerspectiveCamera",(this.enableHelper===!0||t===!0)&&this.objectHelper.update()}setFocalLength(t){this.perspCamera.setFocalLength(t),this.toPerspective()}getFocalLength(){return this.perspCamera.getFocalLength()}getEffectiveFOV(){return this.perspCamera.getEffectiveFOV()}getFilmWidth(){return this.perspCamera.getFilmWidth()}getFilmHeight(){return this.perspCamera.getFilmHeight()}setViewOffset(t,r,n,s,o,a){this._cameraType==="PerspectiveCamera"?this.perspCamera.setViewOffset(t,r,n,s,o,a):this.orthoCamera.setViewOffset(t,r,n,s,o,a)}clearViewOffset(){this._cameraType==="PerspectiveCamera"?(this.perspCamera.clearViewOffset(),this.toPerspective()):(this.orthoCamera.clearViewOffset(),this.toOrthographic())}updateProjectionMatrix(t){this._cameraType==="PerspectiveCamera"?this.toPerspective(t):this._cameraType==="OrthographicCamera"&&this.toOrthographic(t)}updateMatrixWorld(t){super.updateMatrixWorld(t),this.matrixWorldInverse.copy(this.matrixWorld).invert()}updateWorldMatrix(t,r){super.updateWorldMatrix(t,r),this.matrixWorldInverse.copy(this.matrixWorld).invert()}copy(t,r){return super.copy(t,r),this.orthoCamera.copy(t.orthoCamera),this.perspCamera.copy(t.perspCamera),this.left=t.left,this.right=t.right,this.top=t.top,this.bottom=t.bottom,this.far=t.far,this.view=t.view===null?null:Object.assign({},t.view),this._cameraType=t._cameraType,this.aspect=t.aspect,this.fov=t.fov,this.focus=t.focus,this.filmGauge=t.filmGauge,this.filmOffset=t.filmOffset,this.targetOffset=t.targetOffset,this.updateProjectionMatrix(),this}fromCameraRender(t){let r={near:this.orthoCamera.near,far:this.orthoCamera.far},n={near:this.perspCamera.near,far:this.perspCamera.far};return this.copy(t),this.name="",this.enableHelper=!0,this.objectHelper.visible=!0,this.orthoCamera.near=r.near,this.orthoCamera.far=r.far,this.perspCamera.near=n.near,this.perspCamera.far=n.far,this.updateProjectionMatrix(),this}toJSON(t){let r=super.toJSON(t),n=r.object;return n.objectType="CombinedCamera",n.cameraType=this.cameraType,n.targetOffset=this.targetOffset,n.isUpVectorFlipped=this.isUpVectorFlipped,n.angleOffsetFromUp=this.angleOffsetFromUp,n.left=this.left,n.right=this.right,n.top=this.top,n.bottom=this.bottom,this.view!==null&&(n.view=Object.assign({},this.view)),n.zoomOrtho=this.orthoCamera.zoom,n.nearOrtho=this.orthoCamera.near,n.far=this.far,n.aspect=this.aspect,n.fov=this.fov,n.focus=this.focus,n.filmGauge=this.filmGauge,n.filmOffset=this.filmOffset,n.zoomPersp=this.perspCamera.zoom,n.nearPersp=this.perspCamera.near,r}fromJSON(t){var r;if(super.fromJSON(t),this.cameraType=t.cameraType,t.targetOffset!==void 0&&(this.targetOffset=t.targetOffset),t.orbitControlsTarget!==void 0){let n=this.getWorldPosition(new M),s=new M().fromArray(t.orbitControlsTarget);this.targetOffset=s.distanceTo(n)}else t.targetOffset!==void 0&&(this.targetOffset=t.targetOffset);return this.isUpVectorFlipped=!1,this.angleOffsetFromUp=(r=t.angleOffsetFromUp)!=null?r:0,t.left!==void 0&&(this.left=t.left),t.right!==void 0&&(this.right=t.right),t.top!==void 0&&(this.top=t.top),t.bottom!==void 0&&(this.bottom=t.bottom),t.view!==void 0&&(this.view=Object.assign({},t.view)),t.zoomOrtho!==void 0&&(this.orthoCamera.zoom=t.zoomOrtho),t.nearOrtho!==void 0&&(this.orthoCamera.near=t.nearOrtho),t.far!==void 0&&(this.far=t.far),t.aspect!==void 0&&(this.aspect=t.aspect),t.fov!==void 0&&(this.fov=t.fov),t.focus!==void 0&&(this.focus=t.focus),t.filmGauge!==void 0&&(this.filmGauge=t.filmGauge),t.filmOffset!==void 0&&(this.filmOffset=t.filmOffset),t.zoomPersp!==void 0&&(this.perspCamera.zoom=t.zoomPersp),t.nearPersp!==void 0&&(this.perspCamera.near=t.nearPersp),this.updateProjectionMatrix(),this}toCameraState(t=[]){let r={type:this.cameraType,far:this.far,orthographic:{near:this.orthoCamera.near,zoom:this.orthoCamera.zoom},perspective:{near:this.perspCamera.near,fov:this.perspCamera.fov,zoom:this.perspCamera.zoom},up:this.up.toArray(),targetOffset:this.targetOffset,isUpVectorFlipped:this.isUpVectorFlipped};return wl(r,t)}fromCameraState(t){let{orthographic:r,perspective:n}=t;return t.type!==void 0&&(this.cameraType=t.type),t.far!==void 0&&(this.far=t.far),r!==void 0&&(r.near!==void 0&&(this.orthoCamera.near=r.near),r.zoom!==void 0&&(this.orthoCamera.zoom=r.zoom)),n!==void 0&&(n.near!==void 0&&(this.perspCamera.near=n.near),n.fov!==void 0&&(this.perspCamera.fov=n.fov),n.zoom!==void 0&&(this.perspCamera.zoom=n.zoom)),t.up!==void 0&&this.up.fromArray(t.up),t.targetOffset!==void 0&&(this.targetOffset=t.targetOffset),t.isUpVectorFlipped!==void 0&&(this.isUpVectorFlipped=t.isUpVectorFlipped),this.updateProjectionMatrix(),this}toState(t){return xe(se(se({},super.toState(t)),this.toCameraState(t)),{type:this.cameraType})}fromState(t){return super.fromState(t),this.fromCameraState(t),this}};var gs=class extends Vi(Qn(ts),$l){constructor(){super(...arguments);this.objectType="EmptyObject"}static createFromState(t,r){let n=new gs().fromState(r);return n.uuid=t,n.enableHelper=!0,n.objectHelper.update(),n}toJSON(t){let r=super.toJSON(t);return r.object.objectType="EmptyObject",r}};var rc=class extends Vi(Qn(hh),Zl){constructor(...t){super(...t);this.objectType="LightDirectional";this._gizmos={};this.castShadow=!0,this.shadow.mapSize.width=1024,this.shadow.mapSize.height=1024;let n=this.shadow.camera;n.top=1250,n.bottom=-1250,n.right=1250,n.left=-1250,n.near=1,n.far=2500;let s=new Hn(this.shadow.camera);s.visible=!1,this._gizmos.shadowmap=s,this.update()}static createFromState(t,r,n){let s=new rc().fromState(r,n);return s.uuid=t,s}get gizmos(){return this._gizmos}showGizmos(){for(let t in this._gizmos){let r=this._gizmos[t];r instanceof Hn&&(r.visible=!0)}}hideGizmos(){for(let t in this._gizmos){let r=this._gizmos[t];r instanceof Hn&&(r.visible=!1)}}update(){this.shadow.camera.updateProjectionMatrix();for(let t in this._gizmos){let r=this._gizmos[t];r instanceof Hn&&r.update()}}updateMatrixWorld(t){super.updateMatrixWorld(t),this.enableHelper===!0&&this.objectHelper.visible===!0&&this.objectHelper.update()}copy(t,r=!0){return super.copy(t,r),this.color.copy(t.color),this.intensity=t.intensity,this.target=t.target.clone(),this.shadow=t.shadow.clone(),this}toJSON(t){let r=super.toJSON(t),n=r.object;return n.objectType="LightDirectional",n.color=this.color.getHex(),n.intensity=this.intensity,n.shadow=this.shadow.toJSON(),r}fromJSON(t){var s;super.fromJSON(t),this.color.set(t.color),this.intensity=t.intensity,this.shadow.normalBias=(s=t.shadow.normalBias)!=null?s:0,this.shadow.radius=t.shadow.radius,this.shadow.mapSize.fromArray(t.shadow.mapSize);let r=this.shadow.camera,n=t.shadow.camera;return r.near=n.near,r.far=n.far,r.zoom=n.zoom,r.left=n.left,r.right=n.right,r.top=n.top,r.bottom=n.bottom,n.view!==void 0&&(r.view=Object.assign({},n.view)),this}fromDirectionalLightState(t,r){let n=t.depth!==void 0&&t.depth!==this.shadow.camera.far||t.size!==void 0&&t.size/2!==this.shadow.camera.right;return super.fromLightState(t,r),t.size!==void 0&&W1(this,t.size),n&&this.update(),this}fromState(t,r){return super.fromState(t),this.fromDirectionalLightState(t,r),this}};var nc=class extends Vi(Qn(ch),ec){constructor(...t){super(...t);this.objectType="LightPoint";this._gizmos={};this.castShadow=!0,this.shadow.mapSize.width=1024,this.shadow.mapSize.height=1024;let n=this.shadow.camera;n.fov=90,n.aspect=1,n.near=100,n.far=2500;let s=new M(-n.far+this.position.x,-n.far+this.position.y,-n.far+this.position.z),o=new M(n.far+this.position.x,n.far+this.position.y,n.far+this.position.z),a=new Kt(s,o),l=new Fo(a,new be(16755200));l.visible=!1,this._gizmos.shadowmap=l,this.update()}static createFromState(t,r,n){let s=new nc().fromState(r,n);return s.uuid=t,s}get gizmos(){return this._gizmos}showGizmos(){for(let t in this._gizmos){let r=this._gizmos[t];r instanceof Fo&&(r.visible=!0)}}hideGizmos(){for(let t in this._gizmos){let r=this._gizmos[t];r instanceof Fo&&(r.visible=!1)}}update(){if(this.shadow&&(this.shadow.camera.updateProjectionMatrix(),this._gizmos))for(let t in this._gizmos){let r=this._gizmos[t];if(r instanceof Fo){let n=this.shadow.camera,s=new M(-n.far+this.position.x,-n.far+this.position.y,-n.far+this.position.z),o=new M(n.far+this.position.x,n.far+this.position.y,n.far+this.position.z);r.box.set(s,o),r.updateMatrixWorld(!0)}}}updateMatrixWorld(t){super.updateMatrixWorld(t),this.enableHelper===!0&&this.objectHelper.visible===!0&&this.objectHelper.update()}copy(t,r=!0){return super.copy(t,r),this.color.copy(t.color),this.intensity=t.intensity,this.distance=t.distance,this.decay=t.decay,this.shadow=t.shadow.clone(),this}toJSON(t){let r=super.toJSON(t),n=r.object;return n.objectType="LightPoint",n.color=this.color.getHex(),n.intensity=this.intensity,n.distance=this.distance,n.decay=this.decay,n.shadow=this.shadow.toJSON(),r}fromJSON(t){var s,o;super.fromJSON(t),this.color.set(t.color),this.intensity=t.intensity,this.distance=t.distance,this.decay=t.decay,this.shadow.normalBias=(s=t.shadow.normalBias)!=null?s:0,this.shadow.radius=t.shadow.radius,this.shadow.mapSize.fromArray((o=t.shadow.mapSize)!=null?o:[512,512]),this.shadow.map&&(this.shadow.map.dispose(),this.shadow.map=null);let r=this.shadow.camera,n=t.shadow.camera;return r.near=n.near,r.far=n.far,r.zoom=n.zoom,r.fov=n.fov,r.focus=n.focus,r.aspect=n.aspect,r.filmGauge=n.filmGauge,r.filmOffset=n.filmOffset,n.view!==void 0&&(r.view=Object.assign({},n.view)),this}fromPointLightState(t,r){return super.fromLightState(t,r),t.distance!==void 0&&(this.distance=t.distance),t.decay!==void 0&&(this.decay=t.decay),t.shadowRadius!==void 0&&(this.shadow.radius=t.shadowRadius),t.shadowResolution!==void 0&&(this.shadow.mapSize.set(t.shadowResolution,t.shadowResolution),this.shadow.map&&(this.shadow.map.dispose(),this.shadow.map=null)),this}fromState(t,r){return super.fromState(t),this.fromPointLightState(t,r),this}};var lA=new M,cA=new M,hA=new zt,ic=class extends Vi(Qn(lh),gu){constructor(...t){super(...t);this.objectType="LightSpot";this._gizmos={};this.castShadow=!0,this.shadow.mapSize.width=1024,this.shadow.mapSize.height=1024;let n=this.shadow.camera;n.fov=et.RAD2DEG*2*this.angle,n.aspect=1,n.near=100,n.far=2500;let s=new Hn(this.shadow.camera);s.visible=!1,this._gizmos.shadowmap=s,this.update()}static createFromState(t,r,n){let s=new ic().fromState(r,n);return s.uuid=t,s}get gizmos(){return this._gizmos}showGizmos(){for(let t in this._gizmos){let r=this._gizmos[t];r instanceof Hn&&(r.visible=!0)}}hideGizmos(){for(let t in this._gizmos){let r=this._gizmos[t];r instanceof Hn&&(r.visible=!1)}}update(){this.shadow.camera.updateProjectionMatrix();for(let t in this._gizmos){let r=this._gizmos[t];r instanceof Hn&&r.update()}}updateMatrixWorld(t){super.updateMatrixWorld(t),cA.setFromMatrixPosition(this.matrixWorld),hA.setFromRotationMatrix(this.matrixWorld),lA.copy(this.up).applyQuaternion(hA).negate().multiplyScalar(this.distance),this.target.position.copy(cA).add(lA),this.target.updateMatrixWorld(),this.enableHelper===!0&&this.objectHelper.visible===!0&&this.objectHelper.update()}copy(t,r=!0){return super.copy(t,r),this.color.copy(t.color),this.intensity=t.intensity,this.distance=t.distance,this.angle=t.angle,this.penumbra=t.penumbra,this.decay=t.decay,this.target=t.target.clone(),this.shadow=t.shadow.clone(),this}toJSON(t){let r=super.toJSON(t),n=r.object;return n.objectType="LightSpot",n.color=this.color.getHex(),n.intensity=this.intensity,n.distance=this.distance,n.angle=this.angle,n.decay=this.decay,n.penumbra=this.penumbra,n.shadow=this.shadow.toJSON(),r}fromJSON(t){var s;super.fromJSON(t),this.color.set(t.color),this.intensity=t.intensity,this.distance=t.distance,this.angle=t.angle,this.decay=t.decay,this.penumbra=t.penumbra,this.shadow.normalBias=(s=t.shadow.normalBias)!=null?s:0,this.shadow.radius=t.shadow.radius,this.shadow.mapSize.fromArray(t.shadow.mapSize);let r=this.shadow.camera,n=t.shadow.camera;return r.near=n.near,r.far=n.far,r.zoom=n.zoom,r.fov=n.fov,r.focus=n.focus,r.aspect=n.aspect,r.filmGauge=n.filmGauge,r.filmOffset=n.filmOffset,n.view!==void 0&&(r.view=Object.assign({},n.view)),this}fromSpotLightState(t,r){return super.fromLightState(t,r),t.distance!==void 0&&(this.distance=t.distance),t.decay!==void 0&&(this.decay=t.decay),t.angle!==void 0&&(this.angle=t.angle),t.penumbra!==void 0&&(this.penumbra=t.penumbra),this}fromState(t,r){return super.fromState(t),this.fromSpotLightState(t,r),this}};var uA=i=>i.tagName==="VIDEO",$o=class{static resize(e,t,r){let n=e/t,s;if(!r.image)return;let o=r.image;uA(o)?s=o.videoWidth/o.videoHeight:s=o.width/o.height,n>s&&(r.imageType=="WEBCAM"?r.repeat.set(-1,1*s/n):r.repeat.set(1,1*s/n)),n<s&&(r.imageType=="WEBCAM"?r.repeat.set(1*n/s*-1,1):r.repeat.set(1*n/s,1)),n==s&&(r.imageType=="WEBCAM"?r.repeat.set(-1,1):r.repeat.set(1,1))}static resizeTextureLayer(e,t,r){let n=e/t,s=r.image!==void 0?r.image.width/r.image.height:1,o;n>s?o={x:1,y:s/n}:n<s?o={x:n/s,y:1}:o={x:1,y:1},r.repeat.set(o.x,o.y),r.updateMatrix()}static resizeTextureLayers(e,t,r){let n=r.userData.layers,s=n.getLayers();for(let o=0;o<s.length;o++){let a=s[o];N1(a)&&($o.resizeTextureLayer(e,t,a.uniforms[`f${a.id}_texture`].value),n.updateLayerUniform())}}static resizeComplex(e,t,r,n){let s=e/t,o,a=r.image;uA(a)?o=a.videoWidth/a.videoHeight:o=a.width/a.height,n.geometry.type.includes("Shape")?(s>o&&(r.imageType=="WEBCAM"?r.repeat.set(1/e*-1,1/t*o/s):r.repeat.set(1/e,1/t*o/s)),s<o&&(r.imageType=="WEBCAM"?r.repeat.set(1/e*s/o*-1,1/t):r.repeat.set(1/e*s/o,1/t)),s==o&&(r.imageType=="WEBCAM"?r.repeat.set(1/e*-1,1/t):r.repeat.set(1/e,1/t))):(s>o&&(r.imageType=="WEBCAM"?r.repeat.set(-1,1*o/s):r.repeat.set(1,1*o/s)),s<o&&(r.imageType=="WEBCAM"?r.repeat.set(1*s/o*-1,1):r.repeat.set(1*s/o,1)),s==o&&(r.imageType=="WEBCAM"?r.repeat.set(-1,1):r.repeat.set(1,1)))}};var sc=class extends kt{constructor(t,r=new Yr){super(t,r);this.objectType="Mesh2D";this.castShadow=!0,this.receiveShadow=!0}updateGeometry(t){super.updateGeometry(t),this.material.userData.layers&&$o.resizeTextureLayers(this.geometry.userData.parameters.width,this.geometry.userData.parameters.height,this.material)}resizeGeometry(t,r){super.resizeGeometry(t,r,0),this.material.userData.layers&&$o.resizeTextureLayers(this.geometry.userData.parameters.width,this.geometry.userData.parameters.height,this.material)}toJSON(t){let r=super.toJSON(t);return r.object.objectType="Mesh2D",r}clone(){let t=super.clone();return t.updateGeometry({}),t}static fromTexture(t){let r,n;if(t instanceof th){let a=t.image;r=a.videoWidth*.5,n=a.videoHeight*.5}else{let a=t.image;r=a.width*.5,n=a.height*.5}let s=vp.create({parameters:{width:r,height:n}}),o=new Yr;return o.layersList.changeLayer(0,{type:"texture",texture:t}),o.layersList.moveLayer(0,1),o.dispose(),new sc(s,o)}};var oc=class extends kt{constructor(t,r=new pn){super(t,r);this.objectType="Mesh3D";this.castShadow=!0,this.receiveShadow=!0}toJSON(t){let r=super.toJSON(t);return r.object.objectType="Mesh3D",r}};var ac=class extends oc{constructor(t,r=new pn){super(t,r);this.objectType="NonParametric"}toJSON(t){let r=super.toJSON(t);return r.object.objectType="NonParametric",r}};var Wp=class extends cn{constructor(e){super(e)}load(e,t,r,n){let s=this,o=new as(this.manager);o.setPath(this.path),o.setRequestHeader(this.requestHeader),o.setWithCredentials(s.withCredentials),o.load(e,function(a){let l;try{l=JSON.parse(a)}catch{console.warn("THREE.FontLoader: typeface.js support is being deprecated. Use typeface.json instead."),l=JSON.parse(a.substring(65,a.length-2))}let c=s.parse(l);t&&t(c)},r,n)}parse(e){return new jp(e)}},jp=class{constructor(e){this.type="Font",this.data=e}generateShapes(e,t=100){let r=[],n=nU(e,t,this.data);for(let s=0,o=n.length;s<o;s++)Array.prototype.push.apply(r,n[s].toShapes());return r}};function nU(i,e,t){let r=Array.from(i),n=e/t.resolution,s=(t.boundingBox.yMax-t.boundingBox.yMin+t.underlineThickness)*n,o=[],a=0,l=0;for(let c=0;c<r.length;c++){let h=r[c];if(h===`
3927
3927
  `)a=0,l-=s;else{let u=iU(h,n,a,l,t);a+=u.offsetX,o.push(u.path)}}return o}function iU(i,e,t,r,n){let s=n.glyphs[i]||n.glyphs["?"];if(!s){console.error('THREE.Font: character "'+i+'" does not exists in font family '+n.familyName+".");return}let o=new Jf,a,l,c,h,u,f,d,p;if(s.o){let m=s._cachedOutline||(s._cachedOutline=s.o.split(" "));for(let g=0,v=m.length;g<v;)switch(m[g++]){case"m":a=m[g++]*e+t,l=m[g++]*e+r,o.moveTo(a,l);break;case"l":a=m[g++]*e+t,l=m[g++]*e+r,o.lineTo(a,l);break;case"q":c=m[g++]*e+t,h=m[g++]*e+r,u=m[g++]*e+t,f=m[g++]*e+r,o.quadraticCurveTo(u,f,c,h);break;case"b":c=m[g++]*e+t,h=m[g++]*e+r,u=m[g++]*e+t,f=m[g++]*e+r,d=m[g++]*e+t,p=m[g++]*e+r,o.bezierCurveTo(u,f,d,p,c,h);break}}return{offsetX:s.ha*e,path:o}}jp.prototype.isFont=!0;var mr=class extends Vt{constructor({char:t,originalChar:r,fontFamily:n,letterSpacing:s,fontSize:o,LOD:a=16},l=new zn({color:0,opacity:1,visible:!0,transparent:!0,side:or})){let c=mr.loadChar(t,n,a);super(c.geometry,l);this.char=t,this.originalChar=r!=null?r:t,this.fontFamily=n,this.letterSpacing=s,this.fontSize=o,this.LOD=a,this.resolution=c.resolution,this.glyphsHa=c.glyphsHa,this.localPosition=new B,this.charSize=0,this.geometry.userData={type:"CharacterGeometry",parameters:{char:this.char,fontFamily:this.fontFamily,letterSpacing:this.letterSpacing,fontSize:this.fontSize,lod:this.LOD,resolution:this.resolution,charSize:this.charSize,localPosition:this.localPosition}},this.updateFontSize(this.fontSize)}static get FONTS_PATH(){return mr._fontPath}static set FONTS_PATH(t){mr._fontPath=t}updatePosition(t,r){this.localPosition.copy(t);let n=new M(this.localPosition.x,-this.localPosition.y,0);this.position.copy(n).add(r)}updateFontSize(t){let r=t/this.resolution;this.fontSize=t,this.scale.set(this.fontSize,this.fontSize,1),this.charSize=this.glyphsHa*r*this.letterSpacing}updateFontFamily(t){if(this.fontFamily===t)return;this.fontFamily=t;let r=mr.loadChar(this.char,t,this.LOD);this.geometry=r.geometry,this.resolution=r.resolution,this.glyphsHa=r.glyphsHa,this.geometry.userData={type:"CharacterGeometry",parameters:{char:this.char,fontFamily:this.fontFamily,letterSpacing:this.letterSpacing,fontSize:this.fontSize,lod:this.LOD,resolution:this.resolution,charSize:this.charSize,localPosition:this.localPosition}},this.updateFontSize(this.fontSize)}updateChar(t){if(this.char===t)return;this.char=t;let r=mr.loadChar(t,this.fontFamily,this.LOD);this.geometry=r.geometry,this.resolution=r.resolution,this.glyphsHa=r.glyphsHa,this.geometry.userData={type:"CharacterGeometry",parameters:{char:this.char,fontFamily:this.fontFamily,letterSpacing:this.letterSpacing,fontSize:this.fontSize,lod:this.LOD,resolution:this.resolution,charSize:this.charSize,localPosition:this.localPosition}},this.updateFontSize(this.fontSize)}updateLetterSpacing(t){this.letterSpacing!==t&&(this.letterSpacing=t,this.updateFontSize(this.fontSize))}updateLOD(t){if(this.LOD===t)return;this.LOD=t;let r=mr.loadChar(this.char,this.fontFamily,this.LOD);this.geometry=r.geometry,this.resolution=r.resolution,this.glyphsHa=r.glyphsHa,this.geometry.userData={type:"CharacterGeometry",parameters:{char:this.char,fontFamily:this.fontFamily,letterSpacing:this.letterSpacing,fontSize:this.fontSize,lod:this.LOD,resolution:this.resolution,charSize:this.charSize,localPosition:this.localPosition}},this.updateFontSize(this.fontSize)}clone(){let t={char:this.char,originalChar:this.originalChar,fontFamily:this.fontFamily,letterSpacing:this.letterSpacing,fontSize:this.fontSize,LOD:this.LOD};return new mr(t).copy(this)}static loadFont(t){return new Promise(function(r,n){mr.fontCache[t]?r(mr.fontCache[t]):new Wp().load(mr.FONTS_PATH+t+".json",o=>{mr.fontCache[t]=o,r(o)},void 0,n)})}static loadChar(t,r,n){if(mr.charCache[t]){if(mr.charCache[t][n]&&mr.charCache[t][n].fontFamily===r)return mr.charCache[t][n]}else mr.charCache[t]={};let s=mr.fontCache[r],o=s.generateShapes(t,1);return mr.charCache[t][n]={geometry:new Io(o,n),fontFamily:r,resolution:s.data.resolution,glyphsHa:s.data.glyphs[t].ha},mr.charCache[t][n]}},mn=mr;mn.charCache={},mn.fontCache={},mn._fontPath="/_assets/_fonts/";var qp=new B,uo=class{constructor(e,t,r){this.message=[];this.endLine=!0;this.yLinePos=e,this.lineHeight=t,this.maxCharSize=r,this.nextChar3DPos=new B(0,this.yLinePos+this.maxCharSize*this.lineHeight),this.align=1}addChar3D(e,t,r=this.message.length){this.message.splice(r,0,e),e.fontSize>this.maxCharSize?(this.maxCharSize=e.fontSize,this.nextChar3DPos.y=this.yLinePos+this.maxCharSize*this.lineHeight,this.fullUpdate(t)):(e.updatePosition(this.nextChar3DPos,t),this.nextChar3DPos.x+=e.charSize)}deleteChar3D(e=this.message.length-1){let t=this.message[e];if(t)return this.message.splice(e,1),this.nextChar3DPos.x-=t.charSize,t}isEndLine(e){this.endLine=e}fullUpdate(e,t=0){this.nextChar3DPos.x=0;for(let r=t,n=this.message.length;r<n;r+=1)this.message[r].updatePosition(this.nextChar3DPos,e),this.nextChar3DPos.x+=this.message[r].charSize}checkOverFlow(e){let t,r=this.message.length-1;if(r<=0)return!1;for(;r>=0;){if(this.message[r].char!==" "){t=this.message[r];break}r-=1}return!!(r>=0&&t&&t.localPosition.x+t.charSize>e)}containSpaceOverFlow(e=this.message.length-1){for(let t=e;t>=0;t-=1)if(this.message[t].char===" ")return!0;return!1}containSpace(e=this.message.length-1){if(this.endLine)return!0;for(let t=e;t>=0;t-=1)if(this.message[t].char===" ")return!0;return!1}popWord(e=this.message.length-1){let t=[],r=!0,n;for(n=e;n>=0;n-=1)if(this.message[n].char===" "){r=!1,t.length===0&&(n-=1,t.splice(0,0,this.message[n]));break}else t.splice(0,0,this.message[n]);return r?t=[]:this.message.splice(n+1,t.length),t}getWord(e=0,t=1){let r=[],n=e;for(n=e;;n+=t){if(!this.message[n]||this.message[n].char===" "){r.length===0&&this.message[n]&&(r.push(this.message[n]),this.message.splice(n,1));break}t>0?(r.push(this.message[n]),this.message.splice(n,1),n-=t):(r.splice(0,0,this.message[n]),this.message.splice(n,1))}return r}getWordAtIndex(e){let t=[];for(let r=e;r<this.message.length&&this.message[r].char!==" ";r++)t.push(this.message[r]);for(let r=e-1;r>=0&&this.message[r].char!==" ";r--)t.splice(0,0,this.message[r]);return t}wordSize(e=0,t=-1){let r=0,n=e;for(;n>=0&&n<this.message.length;){if(this.message[n].char===" "){r===0&&(r=this.message[n].charSize);break}r+=this.message[n].charSize,n+=t}return(n<0||n>=this.message.length)&&!this.endLine?this.message[e]?this.message[e].charSize:999999999:r===0?999999999:r}spaceLeft(e){return e-this.nextChar3DPos.x}popChar(e=this.message.length-1){return this.nextChar3DPos.x-=this.message[e].charSize,this.message.splice(e,1)}isEmpty(){return!this.message.length}updateNextCharPosY(){this.nextChar3DPos.y=this.yLinePos+this.maxCharSize*this.lineHeight}updateYLinePos(e){this.yLinePos=e,this.updateNextCharPosY()}updatelineHeight(e){this.lineHeight=e,this.updateNextCharPosY()}updateFontSize(e,t=0,r=this.message.length-1){for(let n=t;n<=r;n+=1)this.message[n].updateFontSize(e);this.maxCharSize=e,this.nextChar3DPos.y=this.yLinePos+this.maxCharSize*this.lineHeight}countSpaces(){let e=0;for(let t=0;t<this.message.length;t++)this.message[t].char===" "&&(e+=1);return e}alignText(e,t,r,n,s){switch(r){case 1:this.leftAlign(e,s);break;case 3:this.centerAlign(this.spaceLeft(t),e,s);break;case 2:this.rightAlign(this.spaceLeft(t),e,s);break;case 4:this.justifyAlign(this.spaceLeft(t),e,s);break}}offsetCharacters(e,t,r){qp.set(t,r);let n=this.message.length;for(let s=0;s<n;s++)this.message[s].updatePosition(this.message[s].localPosition.add(qp),e)}leftAlign(e,t){this.align=1,this.offsetCharacters(e,0,t)}centerAlign(e,t,r){this.align=3,this.offsetCharacters(t,e/2,r)}rightAlign(e,t,r){this.align=2,this.offsetCharacters(t,e,r)}justifyAlign(e,t,r){if(this.align=4,this.endLine){this.offsetCharacters(t,0,r);return}let n=this.countSpaces();if(n===0){this.offsetCharacters(t,0,r);return}let s=e/n,o=0;for(let a=0;a<this.message.length;a++)this.message[a].char===" "&&(o+=s),qp.set(o,r),this.message[a].updatePosition(this.message[a].localPosition.add(qp),t)}clone(){let e=new uo(this.yLinePos,this.lineHeight,this.maxCharSize);e.nextChar3DPos=this.nextChar3DPos.clone(),e.align=this.align,e.endLine=this.endLine;for(let t=0;t<this.message.length;t++)e.message.push(this.message[t].clone());return e}};var Uv=class extends kt{constructor(t,r=new Yr({transparent:!0,opacity:1,visible:!1,side:or})){super(t,r);this.objectType="TextFrame";this.charContainer=new ot,this.add(this.charContainer),this.material.visible=!1,this._geometryUserData=t.userData,this.userData.textFrame={hexColor:null,opacity:1,visible:!0,text:"",fontSize:16,lineHeight:1.5,letterSpacing:1,fontFamily:"roboto_regular",textTransform:1,horizontalAlignment:1,verticalAlignment:1,LOD:16,maxLineSize:this._geometryUserData.parameters.width,textOrigin:new M(this._geometryUserData.parameters.width*-.5,this._geometryUserData.parameters.height*.5,0),textLines:[]},this.createTextLine()}static createFromState(t,r,n){let s=xp.create({parameters:{width:r.width,height:r.height}}),o=new Uv(s).fromState(r,n);return o.uuid=t,o}async updateText(t){this.clearText();let r=this.userData.textFrame,n=r.fontFamily;await mn.loadFont(n),r.text=t;let s=r.textOrigin,o=new zn({visible:r.visible,transparent:!0,side:or}),a=t.split(`
3928
3928
  `),l=0;this.userData.textFrame.textLines=a.map((c,h)=>{let u=new uo(l,r.lineHeight,r.fontSize);return u.message=c.split("").map(f=>{let d={char:f,fontFamily:n,letterSpacing:r.letterSpacing,fontSize:r.fontSize,LOD:16},p=o.clone();p.color=r.hexColor,p.opacity=r.opacity;let m=new mn(d,p);return u.addChar3D(m,s),this.charContainer.add(m),m}),l+=u.maxCharSize*u.lineHeight,u}),this.textFullUpdate(),this.checkOverFlow()}clearText(){let t=this.userData.textFrame.textLines;for(;this.charContainer.children.length;){let r=this.charContainer.children[0];this.charContainer.remove(r)}for(;t.length;)t.pop()}raycast(t,r){let n=[];if(super.raycast(t,n),n.length>0){r.push(n[0]);return}let s=[];for(let o=0,a=this.charContainer.children.length;o<a;++o)if(this.charContainer.children[o]instanceof mn&&(t.intersectObject(this.charContainer.children[o],!1,s),s.length>0)){s[0].object=this,r.push(s[0]);return}}updateGeometry(t){var h,u,f,d;let r=this.userData,n=this.geometry.userData,s=n.parameters.width,o=n.parameters.height,a=(u=(h=t.parameters)==null?void 0:h.width)!=null?u:s,l=(d=(f=t.parameters)==null?void 0:f.height)!=null?d:o,c=r.textFrame;super.updateGeometry(t),c.maxLineSize=a,c.textOrigin.set(-.5*a,.5*l,0),l!==o?(this.checkOverFlow(),this.checkCapacity()):a!==s&&(s<a?this.checkCapacity():s>a&&this.checkOverFlow())}checkOverFlow(t=0){let r=this.userData,n=r.textFrame.textOrigin,s=r.textFrame.textLines;for(let o=t;o<s.length;o++){s[o].updateYLinePos(this.getNewLinePosition(o)),s[o].fullUpdate(n);let a=[];for(;s[o].checkOverFlow(r.textFrame.maxLineSize);)s[o].containSpaceOverFlow()?a.unshift(s[o].getWord(s[o].message.length-1,-1)):a.unshift(s[o].popChar());if(a.length>0){s[o+1]===void 0?(s[o].isEndLine(!1),this.createTextLine()):s[o].endLine&&(this.createTextLine(o+1),s[o].isEndLine(!1),s[o+1].isEndLine(!0));let l=0;for(let c=0;c<a.length;c+=1)for(let h=0;h<a[c].length;h+=1)s[o+1].addChar3D(a[c][h],n,l),l+=1;s[o+1].fullUpdate(n)}s[o].fullUpdate(n)}this.textFullUpdate(t)}checkCapacity(t=0){let r=this.userData,n=r.textFrame.textOrigin,s=r.textFrame.maxLineSize,o=r.textFrame.textLines;for(let a=t;a<o.length;a+=1)if(o[a].updateYLinePos(this.getNewLinePosition(a)),o[a].fullUpdate(n),!!o[a-1])for(;!o[a-1].endLine;){let l,c=o[a-1].spaceLeft(s);if(o[a].wordSize(0,1)<=c){o[a].containSpace()?l=o[a].getWord(0,1):l=o[a].popChar(0);for(let h=0;h<l.length;h+=1)l[h]&&o[a-1].addChar3D(l[h],n)}else{o[a].isEmpty()?(o[a].endLine&&o[a-1].isEndLine(!0),o.splice(a,1),a-=1):(o[a].updateYLinePos(this.getNewLinePosition(a)),o[a].fullUpdate(n));break}}this.textFullUpdate(t)}createTextLine(t=this.userData.textFrame.textLines.length){let n=this.userData.textFrame;n.textLines.splice(t,0,new uo(this.getNewLinePosition(t),n.lineHeight,n.fontSize))}textFullUpdate(t=0){let n=this.userData.textFrame,s=n.textLines,o=this.getVerticalAlignmentOffSet();for(let a=t;a<s.length;a++)s[a].updateYLinePos(this.getNewLinePosition(a)),s[a].fullUpdate(n.textOrigin),s[a].alignText(n.textOrigin,n.maxLineSize,n.horizontalAlignment,n.verticalAlignment,o)}getVerticalAlignmentOffSet(){switch(this.userData.textFrame.verticalAlignment){case 1:return 0;case 2:return this.getRemainingVerticalSpace()/2;case 3:return this.getRemainingVerticalSpace();default:return 0}}getRemainingVerticalSpace(){let r=this.userData.textFrame.textLines;return this.geometry.userData.parameters.height-this.getNewLinePosition(r.length)}getNewLinePosition(t){let n=this.userData.textFrame.textLines,s=0;for(let o=0;o<t;o+=1)s+=n[o].maxCharSize*n[o].lineHeight;return s}updateColor(t){var s;let r=this.userData;r.textFrame.hexColor=t;let n=r.textFrame.textLines;for(let o=0;o<n.length;o++){let a=n[o].message;for(let l=0;l<a.length;l++){let c=a[l].material;(s=c.color)!=null&&s.isColor&&(c.color=t)}}}updateOpacity(t){let r=this.userData;r.textFrame.opacity=t;let n=r.textFrame.textLines;for(let s=0;s<n.length;s++){let o=n[s].message;for(let a=0;a<o.length;a++){let l=o[a].material;l.opacity=t}}}updateVisible(t){let r=this.userData;r.textFrame.visible=t;let n=r.textFrame.textLines;for(let s=0;s<n.length;s++){let o=n[s].message;for(let a=0;a<o.length;a++){let l=o[a].material;l.visible=t}}}async updateFontFamily(t){await mn.loadFont(t);let n=this.userData.textFrame,s=n.textLines;n.fontFamily=t;for(let o=0;o<s.length;o++){let a=s[o].message;for(let l=0;l<a.length;l++)a[l].updateFontFamily(t)}this.textFullUpdate(),this.checkOverFlow(),this.checkCapacity()}updateFontSize(t){let n=this.userData.textFrame,s=n.textLines,o=n.fontSize;n.fontSize=t;for(let a=0;a<s.length;a++)s[a].updateFontSize(t);this.textFullUpdate(),t>o?this.checkOverFlow():t<o&&this.checkCapacity()}async updateTextTransform(t){let n=this.userData.textFrame;await mn.loadFont(n.fontFamily);let s=n.textLines;switch(n.textTransform=t,t){case 2:for(let o=0;o<s.length;o++){let a=s[o].message;for(let l=0;l<a.length;l++)s[o].message[l].updateChar(a[l].char.toUpperCase())}break;case 3:for(let o=0;o<s.length;o++){let a=s[o].message;for(let l=0;l<a.length;l++)s[o].message[l].updateChar(a[l].char.toLowerCase())}break;default:for(let o=0;o<s.length;o++){let a=s[o].message;for(let l=0;l<a.length;l++)s[o].message[l].updateChar(a[l].originalChar)}}this.textFullUpdate(),this.checkOverFlow(),this.checkCapacity()}updateLetterSpacing(t){let r=this.userData,n=r.textFrame.textLines;r.textFrame.letterSpacing=t;for(let s=0;s<n.length;s++){let o=n[s].message;for(let a=0;a<o.length;a++)o[a].updateLetterSpacing(t)}this.textFullUpdate(),this.checkOverFlow(),this.checkCapacity()}updateLOD(t){let r=this.userData;r.textFrame.LOD=t;let n=r.textFrame.textLines;for(let s=0;s<n.length;s++);this.textFullUpdate(),this.checkOverFlow(),this.checkCapacity()}updateLineHeight(t){let r=this.userData,n=r.textFrame.textLines;r.textFrame.lineHeight=t;for(let s=0;s<n.length;s++)n[s].updatelineHeight(t);this.textFullUpdate()}updateVerticalAlignment(t){let r=this.userData;r.textFrame.verticalAlignment=t,this.textFullUpdate()}updateHorizontalAlignment(t){let r=this.userData;r.textFrame.horizontalAlignment=t,this.textFullUpdate()}toJSON(t){let r=super.toJSON(t),n=r.object;n.objectType="TextFrame";let o=this.userData.textFrame.textLines.map(a=>{let l=a.message.map(c=>({char:c.char,originalChar:c.originalChar,fontFamily:c.fontFamily,letterSpacing:c.letterSpacing,fontSize:c.fontSize,LOD:c.LOD}));return{align:a.align,endLine:a.endLine,lineHeight:a.lineHeight,maxCharSize:a.maxCharSize,yLinePos:a.yLinePos,message:l}});return n.userData.textFrame.textLinesData=o,r}async fromJSONasync(t){if(super.fromJSON(t),t.userData!==void 0){let r=t.userData.textFrame;await mn.loadFont(r.fontFamily),r.textOrigin=new M(r.textOrigin.x,r.textOrigin.y,r.textOrigin.z);let n=new zn({color:r.hexColor,opacity:r.opacity,visible:r.visible,transparent:!0,side:or});r.textLinesData&&(r.textLines=r.textLinesData.map((s,o)=>{let a=new uo(Number(s.yLinePos),Number(s.lineHeight),Number(s.maxCharSize)),l=s.message.map((c,h)=>{if(c.char===void 0){let d=r.textLines[o].message[h];if("geometries"in d){let p=d.geometries[0].userData.parameters;Object.assign(c,{LOD:p.lod,char:p.char,fontFamily:p.fontFamily,fontSize:p.fontSize,letterSpacing:p.letterSpacing,originalChar:p.char})}}let u={char:c.char,fontFamily:c.fontFamily,letterSpacing:Number(c.letterSpacing),fontSize:Number(c.fontSize),LOD:c.LOD},f=new mn(u,n.clone());return a.addChar3D(f,r.textOrigin),this.charContainer.add(f),f});return a.message=l,a}),this.userData.textFrame=r),this.textFullUpdate()}return this}fromTextFrameData(t,r){if(t.color!==void 0){let n=pr(t.color,r);this.updateColor(n),this.updateOpacity(n.a)}t.alpha!==void 0&&this.updateOpacity(t.alpha),t.font!==void 0&&this.updateFontFamily(t.font),t.horizontalAlign!==void 0&&this.updateHorizontalAlignment(t.horizontalAlign),t.verticalAlign!==void 0&&this.updateVerticalAlignment(t.verticalAlign),t.textTransform!==void 0&&this.updateTextTransform(t.textTransform),t.fontSize!==void 0&&this.updateFontSize(t.fontSize),t.lineHeight!==void 0&&this.updateLineHeight(t.lineHeight),t.letterSpacing!==void 0&&this.updateLetterSpacing(t.letterSpacing),t.text!==void 0&&t.text!==""&&this.updateText(t.text),(t.width!==void 0||t.height!==void 0)&&this.updateGeometry({parameters:{width:t.width,height:t.height}})}fromState(t,r){return super.fromState(t),this.fromTextFrameData(t,r),this}convertToVector(){let{fontFamily:t,hexColor:r}=this.userData.textFrame,n=new gs;n.name="Text Shape";let s=mn.fontCache[t];for(let o of this.charContainer.children)o instanceof mn&&s.generateShapes(o.char,1).forEach(a=>{let l=new Tt().fromShape(a);l.applyScale(o.scale.x,o.scale.y);let c=Hr.create({shape:l}),h=new Yr({side:or});h.color=r;let u=new ho(c,h);u.name=o.char,u.position.copy(o.position),u.rotation.copy(o.rotation),n.attach(u)});return n}},ea=Uv;ea.VerticalAlign=ky,ea.HorizontalAlign=Gy,ea.TextTransform=Vy;var mA=WT(dA());var zv;bp.then(i=>{zv=i});var gA=new Ae,sU=new Ae,oU=new Ae,vi=new Kt,fo=new M,aU=new Ae,lU=new Ae,po=class extends kt{constructor(t,r,n,s=new pn){super(n!=null?n:r,s);this.subdivPointer=t;this.originalGeometry=r;this.subdividedGeometry=n;this.objectType="SubdivObject";this.hiddenMatrixOld=new Ae;this.smoothShading=!0;this.phongAngle=35;this.matrixWorldRigid=new Ae;this.castShadow=!0,this.receiveShadow=!0,this.forceComputeSize=!1}static createFromState(t,r,n){let{subdivPointer:s,originalGeometry:o,subdividedGeometry:a}=Kn.build(r.geometry,void 0,void 0,!r.flatShading),l=uu(r.material,n),c=new po(s,o,a||void 0,l);return r.geometry.phongAngle!==void 0&&(c.phongAngle=r.geometry.phongAngle),c.calcBoundingBox(),c.freeSubdivPointer(),c.uuid=t,c.fromState(r),c}shallowClone(t){return new ac(this.geometry,this.material).shallowCopy(this,t)}toJSON(t){let r=super.toJSON(t);return r.object.objectType="SubdivObject",r}buildFromStore(t,r){var a,l,c;let{originalGeometry:n,subdividedGeometry:s,subdivPointer:o}=Kn.build(t,r,this.subdivPointer,this.smoothShading,this.shearScale);if(t.phongAngle!==void 0&&(this.phongAngle=t.phongAngle),this.subdivPointer=o,n!==void 0&&((a=this.originalGeometry)==null||a.dispose(),this.originalGeometry=n),s!==void 0&&((l=this.subdividedGeometry)==null||l.dispose(),this.subdividedGeometry=s!=null?s:void 0),this.geometry=(c=this.subdividedGeometry)!=null?c:this.originalGeometry,this.cloner)for(let h of this.cloner.children)h.geometry=this.geometry;t.width&&(this.geometry.userData.parameters={width:t.width,height:t.height,depth:t.depth})}updateMesh(t=!1){Kn.buildLevel(this.subdivPointer,!0,this.smoothShading?this.phongAngle:-1,this.originalGeometry,t?this.shearScaleInv:void 0),this.subdividedGeometry&&Kn.buildLevel(this.subdivPointer,!1,this.smoothShading?this.phongAngle:-1,this.subdividedGeometry,t?this.shearScaleInv:void 0)}updateTopology(){var t;this.originalGeometry.dispose(),this.originalGeometry=Kn.buildLevel(this.subdivPointer,!0,this.smoothShading?this.phongAngle:-1),this.subdividedGeometry&&(this.subdividedGeometry.dispose(),this.subdividedGeometry=Kn.buildLevel(this.subdivPointer,!1,this.smoothShading?this.phongAngle:-1)),this.geometry=(t=this.subdividedGeometry)!=null?t:this.originalGeometry}raycast(t,r){var n;this.geometry=this.originalGeometry,kt.prototype.raycast.call(this,t,r),this.geometry=(n=this.subdividedGeometry)!=null?n:this.originalGeometry}updateMatrixWorldSVD(){let t=this.matrixWorld.elements,r=[[t[0],t[4],t[8]],[t[1],t[5],t[9]],[t[2],t[6],t[10]]],{u:n,v:s,q:o}=(0,mA.SVD)(r),a=gA.set(n[0][0],n[0][1],n[0][2],0,n[1][0],n[1][1],n[1][2],0,n[2][0],n[2][1],n[2][2],0,0,0,0,1),l=sU.set(s[0][0],s[0][1],s[0][2],0,s[1][0],s[1][1],s[1][2],0,s[2][0],s[2][1],s[2][2],0,0,0,0,1),c=oU.copy(l).transpose();this.shearScale=aU.makeScale(o[0],o[1],o[2]).multiply(c).premultiply(l),this.shearScaleInv=lU.copy(this.shearScale).invert(),this.matrixWorldRigid.multiplyMatrices(a,c),o.every(h=>Math.abs(o[0]-h)<.01)&&(this.shearScale=void 0,this.shearScaleInv=void 0)}activateSVDCompensation(){this.shearScale!==void 0&&(this.matrixAutoUpdate=!1,this.matrix.copy(this.matrixWorldRigid).copyPosition(this.matrixWorld),this.hiddenMatrixOld.copy(this.hiddenMatrix),this.hiddenMatrix.copy(this.parent.matrixWorld).invert())}deactivateSVDCompensation(){this.shearScale!==void 0&&(this.shearScale=void 0,this.shearScaleInv=void 0,this.matrixAutoUpdate=!0,this.hiddenMatrix.copy(this.hiddenMatrixOld))}calcBoundingBox(){let t=this.originalGeometry;t.boundingSphere===null&&(t.boundingSphere=new Lr);let r=t.attributes.position,n=t.boundingSphere.center;vi.setFromBufferAttribute(r),vi.getCenter(n),t.boundingSphere.radius=n.distanceTo(vi.max),isNaN(t.boundingSphere.radius)&&console.error('THREE.BufferGeometry.computeBoundingSphere(): Computed radius is NaN. The "position" attribute is likely to have NaN values.',this),vi.getSize(fo);let s={width:fo.x,height:fo.y,depth:fo.z};return this.geometry.userData.parameters=s,s}updateBoundingBox(t){let r=this.originalGeometry;vi.min.set(t[0],t[2],t[4]),vi.max.set(t[1],t[3],t[5]),this.shearScaleInv&&(vi.min.applyMatrix4(this.shearScaleInv),vi.max.applyMatrix4(this.shearScaleInv)),r.boundingSphere===null&&(r.boundingSphere=new Lr);let n=r.boundingSphere.center;vi.getCenter(n),r.boundingSphere.radius=n.distanceTo(vi.max),isNaN(r.boundingSphere.radius)&&console.error('THREE.BufferGeometry.computeBoundingSphere(): Computed radius is NaN. The "position" attribute is likely to have NaN values.',this),vi.getSize(fo);let s={width:fo.x,height:fo.y,depth:fo.z};return this.geometry.userData.parameters=s,s}freeSubdivPointer(){this.subdivPointer&&(zv.free_bvh(this.subdivPointer),zv.free_subdivision_surface(this.subdivPointer),this.subdivPointer=0)}updateGeometry(t){this.geometry.userData.scale||(this.geometry.userData.scale=Array(3)),this.geometry.userData.scale[0]=this.geometry.userData.parameters.width===0?1:t.parameters.width/this.geometry.userData.parameters.width,this.geometry.userData.scale[1]=this.geometry.userData.parameters.height===0?1:t.parameters.height/this.geometry.userData.parameters.height,this.geometry.userData.scale[2]=this.geometry.userData.parameters.depth===0?1:t.parameters.depth/this.geometry.userData.parameters.depth,pA(this.originalGeometry.attributes,...this.geometry.userData.scale),this.originalGeometry.attributes.position.needsUpdate=!0,this.originalGeometry.attributes.normal.needsUpdate=!0,this.subdividedGeometry&&(pA(this.subdividedGeometry.attributes,...this.subdividedGeometry.userData.scale),this.subdividedGeometry.attributes.position.needsUpdate=!0,this.subdividedGeometry.attributes.normal.needsUpdate=!0),this.geometry.userData.parameters=se({},t.parameters)}};function pA(i,e,t,r){let n=i.position.array,s=i.normal.array,o=gA.makeScale(e,t,r).invert().elements,a,l,c;for(var h=0,u=n.length;h<u;h+=3)n[h]*=e,n[h+1]*=t,n[h+2]*=r,a=s[h],l=s[h+1],c=s[h+2],s[h]=o[0]*a+o[4]*l+o[8]*c,s[h+1]=o[1]*a+o[5]*l+o[9]*c,s[h+2]=o[2]*a+o[6]*l+o[10]*c}function yA(i,e){e.flatShading!==void 0&&(i.flatShading=e.flatShading,i.needsUpdate=!0),e.wireframe!==void 0&&(i.wireframe=e.wireframe),e.side!==void 0&&(e.side===0?i.side=si:e.side===1?i.side=Dr:i.side=or)}function cU(i,e){if(Array.isArray(i.material))for(let t of i.material)yA(t,e);else{let t=i.material;yA(t,e)}i.objectType==="SubdivObject"&&e.flatShading!==void 0&&(i.material.flatShading=!1,i.smoothShading=!e.flatShading,i.updateMesh())}function vA(i,e,t){let r;if(e.geometry.type==="SubdivGeometry")r=po.createFromState(i,e,t);else{let n=e.geometry.type==="BooleanGeometry"?new De:Fp(e.geometry,t),s="materials"in e?G1(e.materials,t):uu(e.material,t);sp.is2DParametricMesh(n.userData.type)?r=new sc(n,s):(n==null?void 0:n.userData.type)==="VectorGeometry"?r=new ho(n,s):e.geometry.type==="NonParametricGeometry"?r=new ac(n,s):e.geometry.type==="BooleanGeometry"?(r=new zp(void 0,s),r.booleanOp=e.geometry.operation,e.geometry.phongAngle!==void 0&&(r.phongAngle=e.geometry.phongAngle)):r=new oc(n,s),r.uuid=i,r.fromState(e)}return cU(r,e),r}function xA(i,e,t){return e.type==="Mesh"?vA(i,e,t):e.type==="TextFrame"?ea.createFromState(i,e,t):e.type==="Empty"?gs.createFromState(i,e):e.type==="PointLight"?nc.createFromState(i,e,t):e.type==="SpotLight"?ic.createFromState(i,e,t):e.type==="DirectionalLight"?rc.createFromState(i,e,t):eo.is(e.type)?Bn.createFromState(i,e):(console.error(e),new gs)}function hU(i,e){e.uniforms[`f${e.id}_transmissionSamplerMap`].value=i.texture,e.uniforms[`f${e.id}_transmissionDepthMap`].value=i.depthTexture}function bA(i,e,t){if(!t.userData.layers)return!1;let r=!1,n=t.userData.layers.getLayersOfType("transmission");return n.length>0?(e.layers.set(3),r=!0,i!==void 0&&n.forEach(s=>hU(i,s))):e.layers.set(0),r}function wA(i,e){let t=!1;return e.traverseEntity(r=>{if(r instanceof kt)if(Array.isArray(r.material))for(let n=0;n<r.material.length;n++)bA(i,r,r.material[n])&&(t=!0);else bA(i,r,r.material)&&(t=!0)}),t}function SA(i,e){"material"in i&&uU(i.material,e),"geometry"in i&&i.geometry.dispose()}function uU(i,e){eM(i).forEach(t=>{e.isSharedMaterial(t)||t.dispose()})}var MA=new M,Gv=class extends Op(on){constructor(t,r){super();this.objectType="Scene";this.alpha=1;this.backupFog=new Po(16777215,.1,2e3);this.fogUseBGColor=!1;this.wireframeState=!1;this.needsTransmissionDirty=!0;this._needsTransmission=!1;this._color=new be(1,0,0);this.bgColor=new be(1,1,1);this.entityByUuid={};this.ambientLight=new Hs(13882323,8553090,.75),this.ambientLight.name="Default Ambient Light",this.personalCamera=this.createPersonalCamera(),this.activeCamera=this.personalCamera,this.sharedAssetManager=r,this.init(t,r)}needsTransmission(t){return this.needsTransmissionDirty&&(this._needsTransmission=wA(t,this),t!==void 0&&(this.needsTransmissionDirty=!1)),this._needsTransmission}find(t){if(t===""||t===void 0)return;let r=this.entityByUuid[t];return r===void 0?this.getObjectByProperty("uuid",t):r}get color(){return this._color}set color(t){this.fogUseBGColor===!0&&this.backupFog.color.copy(t),this._color.copy(t)}get enableFog(){return this.fog!==null}set enableFog(t){this.fog=t===!0?this.backupFog:null}init(t,r){if(this.createChildrenObjects(t.objects,this,r),this.personalCamera.removeFromParent(),this.add(this.personalCamera),this.ambientLight.removeFromParent(),this.add(this.ambientLight),this.setBackgroundColor(pr(t.backgroundColor,r)),this.updateFog(t.fog,r),this.updateAmbientLight(t.environment.ambientLight,r),this.activeCamera=this.personalCamera,t.publish.playCamera!==null){let n=this.find(t.publish.playCamera);n instanceof Bn&&this.switchActiveCamera(n)}this.traverse(n=>{Lt(n)&&n.recomputeBoolean()})}clearScene(t){this.traverseEntity(r=>{SA(r,t)});for(let r of this.children)Xn(r)&&r.removeFromParent()}resetAfterClear(t,r){this.init(t,r)}createPersonalCamera(){let t=Bn.createFromState(Gv.PERSONAL_CAMERA_ID,xe(se({},ap.defaultData),{name:"Personal Camera"}));return t.enableHelper=!1,t.objectHelper.visible=!1,delete t.isEntity,this.registerObjectCreatedInLegacy(t),t}raycast(t){let r=[],n=s=>{for(let o of s.children)Xn(o)&&!o.raycastLock&&o.visible&&((er(o)||ms(o)&&o.enableHelper&&o.objectHelper.parent)&&t.intersectObject(o,!1,r),n(o))};return n(this),r}traverseEntity(t){for(let r of this.children)Xn(r)&&r.traverseEntity(t)}updateFog(t,r){this.enableFog=t.enabled,this.fogUseBGColor=t.useBackgroundColor,t.useBackgroundColor?this.backupFog.color.set(this.bgColor):this.backupFog.color=pr(t.color,r),this.backupFog.near=t.near,this.backupFog.far=t.far}toJSON(t){return{}}fromJSON(t){return this}dispose(){this.clearScene(this.sharedAssetManager),this.sharedAssetManager.dispose()}updateAmbientLight(t,r){H1(this.ambientLight,t,r),t.groundColor!==void 0&&(this.ambientLight.groundColor=pr(t.groundColor,r)),t.enabled!==void 0&&(this.ambientLight.visible=t.enabled)}switchActiveCamera(t){this.activeCamera!==this.personalCamera&&(this.activeCamera.enableHelper=!0),this.activeCamera=t,t.enableHelper=!1}setBackgroundColor(t){this.bgColor=t,this.alpha=t.a}createChildrenObjects(t,r,n){for(let s of t)this.createChildObject(s.id,s.data,s.children,r,n)}registerObjectCreatedInLegacy(t){this.entityByUuid[t.uuid]=t}unregisterObject(t){delete this.entityByUuid[t.uuid];for(let r of t.children)this.unregisterObject(r)}createChildObject(t,r,n,s,o){let a=xA(t,r,o);return a&&(this.entityByUuid[t]=a,s.add(a),Lt(s)&&er(a)&&(a.prevBooleanObjectParent=s),this.createChildrenObjects(n,a,o)),a}getCenter(t){let r=[];for(let s=0,o=t.length;s<o;++s){let{id:a,recursive:l}=t[s],c=this.find(a),h=l?c.recursiveBBox:c.singleBBox;r.push(...h.vertices)}let n=new Kt;return n.setFromPoints(r),n.getCenter(MA),MA}copyMatrixWorld(t,r){if(t===null){r.identity();return}let n=this.find(t);n?r.copy(n.matrixWorld):r.identity()}copyParentMatrixWorld(t,r){var s;if(t===null){r.identity();return}let n=(s=this.find(t))==null?void 0:s.parent;n?r.copy(n.matrixWorld):r.identity()}traverseMaterial(t){this.traverseEntity(r=>{if(r instanceof kt)if(Array.isArray(r.material))for(let n=0;n<r.material.length;n++)t(r.material[n]);else t(r.material)})}updateCanvasSize(t,r){this.activeCamera.setViewplaneSize(t,r);let n,s;t>=r?(n=r/t,s=1):(n=1,s=t/r),this.traverseMaterial(o=>{o.layersList.getLayersOfType("transmission").forEach(l=>{l.uniforms[`f${l.id}_aspectRatio`].value.x=n,l.uniforms[`f${l.id}_aspectRatio`].value.y=s})})}},yu=Gv;yu.PERSONAL_CAMERA_ID="f23858d0-4a3b-4bd8-8173-66ed0af7f6fb-personalCamera";var DA={RED:0,GREEN:1,BLUE:2,ALPHA:3};var vu="varying vec2 vUv;void main(){vUv=position.xy*0.5+0.5;gl_Position=vec4(position.xy,1.0,1.0);}";var fU=`#ifdef FRAMEBUFFER_PRECISION_HIGH
3929
3929
  uniform mediump sampler2D inputBuffer;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@splinetool/runtime",
3
- "version": "0.9.60",
3
+ "version": "0.9.61",
4
4
  "main": "build/runtime.js",
5
5
  "files": [
6
6
  "build",