{"version":3,"file":"Floating_Animation.C_Fa4e7l.mjs","names":["useRef"],"sources":["https:/ga.jspm.io/npm:ogl@0.0.117/src/index.mjs","https:/framerusercontent.com/modules/IsKDof7BWJwVXL8N0XFg/x8jcTPDbDsy9e56ChMUz/Floating_Animation.js"],"sourcesContent":["/**\n * Calculates the length of a vec3\n *\n * @param {vec3} a vector to calculate length of\n * @returns {Number} length of a\n */\nfunction length$3(t){let e=t[0];let s=t[1];let i=t[2];return Math.sqrt(e*e+s*s+i*i)}\n/**\n * Copy the values from one vec3 to another\n *\n * @param {vec3} out the receiving vector\n * @param {vec3} a the source vector\n * @returns {vec3} out\n */function copy$5(t,e){t[0]=e[0];t[1]=e[1];t[2]=e[2];return t}\n/**\n * Set the components of a vec3 to the given values\n *\n * @param {vec3} out the receiving vector\n * @param {Number} x X component\n * @param {Number} y Y component\n * @param {Number} z Z component\n * @returns {vec3} out\n */function set$5(t,e,s,i){t[0]=e;t[1]=s;t[2]=i;return t}\n/**\n * Adds two vec3's\n *\n * @param {vec3} out the receiving vector\n * @param {vec3} a the first operand\n * @param {vec3} b the second operand\n * @returns {vec3} out\n */function add$5(t,e,s){t[0]=e[0]+s[0];t[1]=e[1]+s[1];t[2]=e[2]+s[2];return t}\n/**\n * Subtracts vector b from vector a\n *\n * @param {vec3} out the receiving vector\n * @param {vec3} a the first operand\n * @param {vec3} b the second operand\n * @returns {vec3} out\n */function subtract$3(t,e,s){t[0]=e[0]-s[0];t[1]=e[1]-s[1];t[2]=e[2]-s[2];return t}\n/**\n * Multiplies two vec3's\n *\n * @param {vec3} out the receiving vector\n * @param {vec3} a the first operand\n * @param {vec3} b the second operand\n * @returns {vec3} out\n */function multiply$4(t,e,s){t[0]=e[0]*s[0];t[1]=e[1]*s[1];t[2]=e[2]*s[2];return t}\n/**\n * Divides two vec3's\n *\n * @param {vec3} out the receiving vector\n * @param {vec3} a the first operand\n * @param {vec3} b the second operand\n * @returns {vec3} out\n */function divide$1(t,e,s){t[0]=e[0]/s[0];t[1]=e[1]/s[1];t[2]=e[2]/s[2];return t}\n/**\n * Scales a vec3 by a scalar number\n *\n * @param {vec3} out the receiving vector\n * @param {vec3} a the vector to scale\n * @param {Number} b amount to scale the vector by\n * @returns {vec3} out\n */function scale$5(t,e,s){t[0]=e[0]*s;t[1]=e[1]*s;t[2]=e[2]*s;return t}\n/**\n * Calculates the euclidian distance between two vec3's\n *\n * @param {vec3} a the first operand\n * @param {vec3} b the second operand\n * @returns {Number} distance between a and b\n */function distance$1(t,e){let s=e[0]-t[0];let i=e[1]-t[1];let r=e[2]-t[2];return Math.sqrt(s*s+i*i+r*r)}\n/**\n * Calculates the squared euclidian distance between two vec3's\n *\n * @param {vec3} a the first operand\n * @param {vec3} b the second operand\n * @returns {Number} squared distance between a and b\n */function squaredDistance$1(t,e){let s=e[0]-t[0];let i=e[1]-t[1];let r=e[2]-t[2];return s*s+i*i+r*r}\n/**\n * Calculates the squared length of a vec3\n *\n * @param {vec3} a vector to calculate squared length of\n * @returns {Number} squared length of a\n */function squaredLength$1(t){let e=t[0];let s=t[1];let i=t[2];return e*e+s*s+i*i}\n/**\n * Negates the components of a vec3\n *\n * @param {vec3} out the receiving vector\n * @param {vec3} a vector to negate\n * @returns {vec3} out\n */function negate$1(t,e){t[0]=-e[0];t[1]=-e[1];t[2]=-e[2];return t}\n/**\n * Returns the inverse of the components of a vec3\n *\n * @param {vec3} out the receiving vector\n * @param {vec3} a vector to invert\n * @returns {vec3} out\n */function inverse$1(t,e){t[0]=1/e[0];t[1]=1/e[1];t[2]=1/e[2];return t}\n/**\n * Normalize a vec3\n *\n * @param {vec3} out the receiving vector\n * @param {vec3} a vector to normalize\n * @returns {vec3} out\n */function normalize$3(t,e){let s=e[0];let i=e[1];let r=e[2];let n=s*s+i*i+r*r;n>0&&(n=1/Math.sqrt(n));t[0]=e[0]*n;t[1]=e[1]*n;t[2]=e[2]*n;return t}\n/**\n * Calculates the dot product of two vec3's\n *\n * @param {vec3} a the first operand\n * @param {vec3} b the second operand\n * @returns {Number} dot product of a and b\n */function dot$3(t,e){return t[0]*e[0]+t[1]*e[1]+t[2]*e[2]}\n/**\n * Computes the cross product of two vec3's\n *\n * @param {vec3} out the receiving vector\n * @param {vec3} a the first operand\n * @param {vec3} b the second operand\n * @returns {vec3} out\n */function cross$1(t,e,s){let i=e[0],r=e[1],n=e[2];let a=s[0],o=s[1],h=s[2];t[0]=r*h-n*o;t[1]=n*a-i*h;t[2]=i*o-r*a;return t}\n/**\n * Performs a linear interpolation between two vec3's\n *\n * @param {vec3} out the receiving vector\n * @param {vec3} a the first operand\n * @param {vec3} b the second operand\n * @param {Number} t interpolation amount between the two inputs\n * @returns {vec3} out\n */function lerp$4(t,e,s,i){let r=e[0];let n=e[1];let a=e[2];t[0]=r+i*(s[0]-r);t[1]=n+i*(s[1]-n);t[2]=a+i*(s[2]-a);return t}\n/**\n * Transforms the vec3 with a mat4.\n * 4th vector component is implicitly '1'\n *\n * @param {vec3} out the receiving vector\n * @param {vec3} a the vector to transform\n * @param {mat4} m matrix to transform with\n * @returns {vec3} out\n */function transformMat4$1(t,e,s){let i=e[0],r=e[1],n=e[2];let a=s[3]*i+s[7]*r+s[11]*n+s[15];a=a||1;t[0]=(s[0]*i+s[4]*r+s[8]*n+s[12])/a;t[1]=(s[1]*i+s[5]*r+s[9]*n+s[13])/a;t[2]=(s[2]*i+s[6]*r+s[10]*n+s[14])/a;return t}function scaleRotateMat4(t,e,s){let i=e[0],r=e[1],n=e[2];let a=s[3]*i+s[7]*r+s[11]*n+s[15];a=a||1;t[0]=(s[0]*i+s[4]*r+s[8]*n)/a;t[1]=(s[1]*i+s[5]*r+s[9]*n)/a;t[2]=(s[2]*i+s[6]*r+s[10]*n)/a;return t}\n/**\n * Transforms the vec3 with a mat3.\n *\n * @param {vec3} out the receiving vector\n * @param {vec3} a the vector to transform\n * @param {mat3} m the 3x3 matrix to transform with\n * @returns {vec3} out\n */function transformMat3$1(t,e,s){let i=e[0],r=e[1],n=e[2];t[0]=i*s[0]+r*s[3]+n*s[6];t[1]=i*s[1]+r*s[4]+n*s[7];t[2]=i*s[2]+r*s[5]+n*s[8];return t}\n/**\n * Transforms the vec3 with a quat\n *\n * @param {vec3} out the receiving vector\n * @param {vec3} a the vector to transform\n * @param {quat} q quaternion to transform with\n * @returns {vec3} out\n */function transformQuat(t,e,s){let i=e[0],r=e[1],n=e[2];let a=s[0],o=s[1],h=s[2],l=s[3];let c=o*n-h*r;let u=h*i-a*n;let d=a*r-o*i;let m=o*d-h*u;let g=h*c-a*d;let p=a*u-o*c;let f=2*l;c*=f;u*=f;d*=f;m*=2;g*=2;p*=2;t[0]=i+c+m;t[1]=r+u+g;t[2]=n+d+p;return t}\n/**\n * Get the angle between two 3D vectors\n * @param {vec3} a The first operand\n * @param {vec3} b The second operand\n * @returns {Number} The angle in radians\n */const t=function(){const t=[0,0,0];const e=[0,0,0];return function(s,i){copy$5(t,s);copy$5(e,i);normalize$3(t,t);normalize$3(e,e);let r=dot$3(t,e);return r>1?0:r<-1?Math.PI:Math.acos(r)}}();\n/**\n * Returns whether or not the vectors have exactly the same elements in the same position (when compared with ===)\n *\n * @param {vec3} a The first vector.\n * @param {vec3} b The second vector.\n * @returns {Boolean} True if the vectors are equal, false otherwise.\n */function exactEquals$1(t,e){return t[0]===e[0]&&t[1]===e[1]&&t[2]===e[2]}class Vec3 extends Array{constructor(t=0,e=t,s=t){super(t,e,s);return this}get x(){return this[0]}get y(){return this[1]}get z(){return this[2]}set x(t){this[0]=t}set y(t){this[1]=t}set z(t){this[2]=t}set(t,e=t,s=t){if(t.length)return this.copy(t);set$5(this,t,e,s);return this}copy(t){copy$5(this,t);return this}add(t,e){e?add$5(this,t,e):add$5(this,this,t);return this}sub(t,e){e?subtract$3(this,t,e):subtract$3(this,this,t);return this}multiply(t){t.length?multiply$4(this,this,t):scale$5(this,this,t);return this}divide(t){t.length?divide$1(this,this,t):scale$5(this,this,1/t);return this}inverse(t=this){inverse$1(this,t);return this}len(){return length$3(this)}distance(t){return t?distance$1(this,t):length$3(this)}squaredLen(){return squaredLength$1(this)}squaredDistance(t){return t?squaredDistance$1(this,t):squaredLength$1(this)}negate(t=this){negate$1(this,t);return this}cross(t,e){e?cross$1(this,t,e):cross$1(this,this,t);return this}scale(t){scale$5(this,this,t);return this}normalize(){normalize$3(this,this);return this}dot(t){return dot$3(this,t)}equals(t){return exactEquals$1(this,t)}applyMatrix3(t){transformMat3$1(this,this,t);return this}applyMatrix4(t){transformMat4$1(this,this,t);return this}scaleRotateMatrix4(t){scaleRotateMat4(this,this,t);return this}applyQuaternion(t){transformQuat(this,this,t);return this}angle(e){return t(this,e)}lerp(t,e){lerp$4(this,this,t,e);return this}clone(){return new Vec3(this[0],this[1],this[2])}fromArray(t,e=0){this[0]=t[e];this[1]=t[e+1];this[2]=t[e+2];return this}toArray(t=[],e=0){t[e]=this[0];t[e+1]=this[1];t[e+2]=this[2];return t}transformDirection(t){const e=this[0];const s=this[1];const i=this[2];this[0]=t[0]*e+t[4]*s+t[8]*i;this[1]=t[1]*e+t[5]*s+t[9]*i;this[2]=t[2]*e+t[6]*s+t[10]*i;return this.normalize()}}const e=new Vec3;let s=1;let i=1;let r=false;class Geometry{constructor(t,e={}){t.canvas||console.error(\"gl not passed as first argument to Geometry\");this.gl=t;this.attributes=e;this.id=s++;this.VAOs={};this.drawRange={start:0,count:0};this.instancedCount=0;this.gl.renderer.bindVertexArray(null);this.gl.renderer.currentGeometry=null;this.glState=this.gl.renderer.state;for(let t in e)this.addAttribute(t,e[t])}addAttribute(t,e){this.attributes[t]=e;e.id=i++;e.size=e.size||1;e.type=e.type||(e.data.constructor===Float32Array?this.gl.FLOAT:e.data.constructor===Uint16Array?this.gl.UNSIGNED_SHORT:this.gl.UNSIGNED_INT);e.target=\"index\"===t?this.gl.ELEMENT_ARRAY_BUFFER:this.gl.ARRAY_BUFFER;e.normalized=e.normalized||false;e.stride=e.stride||0;e.offset=e.offset||0;e.count=e.count||(e.stride?e.data.byteLength/e.stride:e.data.length/e.size);e.divisor=e.instanced||0;e.needsUpdate=false;e.usage=e.usage||this.gl.STATIC_DRAW;e.buffer||this.updateAttribute(e);if(e.divisor){this.isInstanced=true;if(this.instancedCount&&this.instancedCount!==e.count*e.divisor){console.warn(\"geometry has multiple instanced buffers of different length\");return this.instancedCount=Math.min(this.instancedCount,e.count*e.divisor)}this.instancedCount=e.count*e.divisor}else\"index\"===t?this.drawRange.count=e.count:this.attributes.index||(this.drawRange.count=Math.max(this.drawRange.count,e.count))}updateAttribute(t){const e=!t.buffer;e&&(t.buffer=this.gl.createBuffer());if(this.glState.boundBuffer!==t.buffer){this.gl.bindBuffer(t.target,t.buffer);this.glState.boundBuffer=t.buffer}e?this.gl.bufferData(t.target,t.data,t.usage):this.gl.bufferSubData(t.target,0,t.data);t.needsUpdate=false}setIndex(t){this.addAttribute(\"index\",t)}setDrawRange(t,e){this.drawRange.start=t;this.drawRange.count=e}setInstancedCount(t){this.instancedCount=t}createVAO(t){this.VAOs[t.attributeOrder]=this.gl.renderer.createVertexArray();this.gl.renderer.bindVertexArray(this.VAOs[t.attributeOrder]);this.bindAttributes(t)}bindAttributes(t){t.attributeLocations.forEach(((t,{name:e,type:s})=>{if(!this.attributes[e]){console.warn(`active attribute ${e} not being supplied`);return}const i=this.attributes[e];this.gl.bindBuffer(i.target,i.buffer);this.glState.boundBuffer=i.buffer;let r=1;35674===s&&(r=2);35675===s&&(r=3);35676===s&&(r=4);const n=i.size/r;const a=1===r?0:r*r*4;const o=1===r?0:4*r;for(let e=0;e<r;e++){this.gl.vertexAttribPointer(t+e,n,i.type,i.normalized,i.stride+a,i.offset+e*o);this.gl.enableVertexAttribArray(t+e);this.gl.renderer.vertexAttribDivisor(t+e,i.divisor)}}));this.attributes.index&&this.gl.bindBuffer(this.gl.ELEMENT_ARRAY_BUFFER,this.attributes.index.buffer)}draw({program:t,mode:e=this.gl.TRIANGLES}){if(this.gl.renderer.currentGeometry!==`${this.id}_${t.attributeOrder}`){this.VAOs[t.attributeOrder]||this.createVAO(t);this.gl.renderer.bindVertexArray(this.VAOs[t.attributeOrder]);this.gl.renderer.currentGeometry=`${this.id}_${t.attributeOrder}`}t.attributeLocations.forEach(((t,{name:e})=>{const s=this.attributes[e];s.needsUpdate&&this.updateAttribute(s)}));let s=2;this.attributes.index?.type===this.gl.UNSIGNED_INT&&(s=4);this.isInstanced?this.attributes.index?this.gl.renderer.drawElementsInstanced(e,this.drawRange.count,this.attributes.index.type,this.attributes.index.offset+this.drawRange.start*s,this.instancedCount):this.gl.renderer.drawArraysInstanced(e,this.drawRange.start,this.drawRange.count,this.instancedCount):this.attributes.index?this.gl.drawElements(e,this.drawRange.count,this.attributes.index.type,this.attributes.index.offset+this.drawRange.start*s):this.gl.drawArrays(e,this.drawRange.start,this.drawRange.count)}getPosition(){const t=this.attributes.position;if(t.data)return t;if(!r){console.warn(\"No position buffer data found to compute bounds\");return r=true}}computeBoundingBox(t){t||(t=this.getPosition());const e=t.data;const s=t.size;this.bounds||(this.bounds={min:new Vec3,max:new Vec3,center:new Vec3,scale:new Vec3,radius:Infinity});const i=this.bounds.min;const r=this.bounds.max;const n=this.bounds.center;const a=this.bounds.scale;i.set(Infinity);r.set(-Infinity);for(let t=0,n=e.length;t<n;t+=s){const s=e[t];const n=e[t+1];const a=e[t+2];i.x=Math.min(s,i.x);i.y=Math.min(n,i.y);i.z=Math.min(a,i.z);r.x=Math.max(s,r.x);r.y=Math.max(n,r.y);r.z=Math.max(a,r.z)}a.sub(r,i);n.add(i,r).divide(2)}computeBoundingSphere(t){t||(t=this.getPosition());const s=t.data;const i=t.size;this.bounds||this.computeBoundingBox(t);let r=0;for(let t=0,n=s.length;t<n;t+=i){e.fromArray(s,t);r=Math.max(r,this.bounds.center.squaredDistance(e))}this.bounds.radius=Math.sqrt(r)}remove(){for(let t in this.VAOs){this.gl.renderer.deleteVertexArray(this.VAOs[t]);delete this.VAOs[t]}for(let t in this.attributes){this.gl.deleteBuffer(this.attributes[t].buffer);delete this.attributes[t]}}}let n=1;const a={};class Program{constructor(t,{vertex:e,fragment:s,uniforms:i={},transparent:r=false,cullFace:a=t.BACK,frontFace:o=t.CCW,depthTest:h=true,depthWrite:l=true,depthFunc:c=t.LESS}={}){t.canvas||console.error(\"gl not passed as first argument to Program\");this.gl=t;this.uniforms=i;this.id=n++;e||console.warn(\"vertex shader not supplied\");s||console.warn(\"fragment shader not supplied\");this.transparent=r;this.cullFace=a;this.frontFace=o;this.depthTest=h;this.depthWrite=l;this.depthFunc=c;this.blendFunc={};this.blendEquation={};this.transparent&&!this.blendFunc.src&&(this.gl.renderer.premultipliedAlpha?this.setBlendFunc(this.gl.ONE,this.gl.ONE_MINUS_SRC_ALPHA):this.setBlendFunc(this.gl.SRC_ALPHA,this.gl.ONE_MINUS_SRC_ALPHA));const u=t.createShader(t.VERTEX_SHADER);t.shaderSource(u,e);t.compileShader(u);\"\"!==t.getShaderInfoLog(u)&&console.warn(`${t.getShaderInfoLog(u)}\\nVertex Shader\\n${addLineNumbers(e)}`);const d=t.createShader(t.FRAGMENT_SHADER);t.shaderSource(d,s);t.compileShader(d);\"\"!==t.getShaderInfoLog(d)&&console.warn(`${t.getShaderInfoLog(d)}\\nFragment Shader\\n${addLineNumbers(s)}`);this.program=t.createProgram();t.attachShader(this.program,u);t.attachShader(this.program,d);t.linkProgram(this.program);if(!t.getProgramParameter(this.program,t.LINK_STATUS))return console.warn(t.getProgramInfoLog(this.program));t.deleteShader(u);t.deleteShader(d);this.uniformLocations=new Map;let m=t.getProgramParameter(this.program,t.ACTIVE_UNIFORMS);for(let e=0;e<m;e++){let s=t.getActiveUniform(this.program,e);this.uniformLocations.set(s,t.getUniformLocation(this.program,s.name));const i=s.name.match(/(\\w+)/g);s.uniformName=i[0];s.nameComponents=i.slice(1)}this.attributeLocations=new Map;const g=[];const p=t.getProgramParameter(this.program,t.ACTIVE_ATTRIBUTES);for(let e=0;e<p;e++){const s=t.getActiveAttrib(this.program,e);const i=t.getAttribLocation(this.program,s.name);if(-1!==i){g[i]=s.name;this.attributeLocations.set(s,i)}}this.attributeOrder=g.join(\"\")}setBlendFunc(t,e,s,i){this.blendFunc.src=t;this.blendFunc.dst=e;this.blendFunc.srcAlpha=s;this.blendFunc.dstAlpha=i;t&&(this.transparent=true)}setBlendEquation(t,e){this.blendEquation.modeRGB=t;this.blendEquation.modeAlpha=e}applyState(){this.depthTest?this.gl.renderer.enable(this.gl.DEPTH_TEST):this.gl.renderer.disable(this.gl.DEPTH_TEST);this.cullFace?this.gl.renderer.enable(this.gl.CULL_FACE):this.gl.renderer.disable(this.gl.CULL_FACE);this.blendFunc.src?this.gl.renderer.enable(this.gl.BLEND):this.gl.renderer.disable(this.gl.BLEND);this.cullFace&&this.gl.renderer.setCullFace(this.cullFace);this.gl.renderer.setFrontFace(this.frontFace);this.gl.renderer.setDepthMask(this.depthWrite);this.gl.renderer.setDepthFunc(this.depthFunc);this.blendFunc.src&&this.gl.renderer.setBlendFunc(this.blendFunc.src,this.blendFunc.dst,this.blendFunc.srcAlpha,this.blendFunc.dstAlpha);this.gl.renderer.setBlendEquation(this.blendEquation.modeRGB,this.blendEquation.modeAlpha)}use({flipFaces:t=false}={}){let e=-1;const s=this.gl.renderer.state.currentProgram===this.id;if(!s){this.gl.useProgram(this.program);this.gl.renderer.state.currentProgram=this.id}this.uniformLocations.forEach(((t,s)=>{let i=this.uniforms[s.uniformName];for(const t of s.nameComponents){if(!i)break;if(!(t in i)){if(Array.isArray(i.value))break;i=void 0;break}i=i[t]}if(!i)return warn(`Active uniform ${s.name} has not been supplied`);if(i&&void 0===i.value)return warn(`${s.name} uniform is missing a value parameter`);if(i.value.texture){e+=1;i.value.update(e);return setUniform(this.gl,s.type,t,e)}if(i.value.length&&i.value[0].texture){const r=[];i.value.forEach((t=>{e+=1;t.update(e);r.push(e)}));return setUniform(this.gl,s.type,t,r)}setUniform(this.gl,s.type,t,i.value)}));this.applyState();t&&this.gl.renderer.setFrontFace(this.frontFace===this.gl.CCW?this.gl.CW:this.gl.CCW)}remove(){this.gl.deleteProgram(this.program)}}function setUniform(t,e,s,i){i=i.length?flatten(i):i;const r=t.renderer.state.uniformLocations.get(s);if(i.length)if(void 0===r||r.length!==i.length)t.renderer.state.uniformLocations.set(s,i.slice(0));else{if(arraysEqual(r,i))return;r.set?r.set(i):setArray(r,i);t.renderer.state.uniformLocations.set(s,r)}else{if(r===i)return;t.renderer.state.uniformLocations.set(s,i)}switch(e){case 5126:return i.length?t.uniform1fv(s,i):t.uniform1f(s,i);case 35664:return t.uniform2fv(s,i);case 35665:return t.uniform3fv(s,i);case 35666:return t.uniform4fv(s,i);case 35670:case 5124:case 35678:case 35680:return i.length?t.uniform1iv(s,i):t.uniform1i(s,i);case 35671:case 35667:return t.uniform2iv(s,i);case 35672:case 35668:return t.uniform3iv(s,i);case 35673:case 35669:return t.uniform4iv(s,i);case 35674:return t.uniformMatrix2fv(s,false,i);case 35675:return t.uniformMatrix3fv(s,false,i);case 35676:return t.uniformMatrix4fv(s,false,i)}}function addLineNumbers(t){let e=t.split(\"\\n\");for(let t=0;t<e.length;t++)e[t]=t+1+\": \"+e[t];return e.join(\"\\n\")}function flatten(t){const e=t.length;const s=t[0].length;if(void 0===s)return t;const i=e*s;let r=a[i];r||(a[i]=r=new Float32Array(i));for(let i=0;i<e;i++)r.set(t[i],i*s);return r}function arraysEqual(t,e){if(t.length!==e.length)return false;for(let s=0,i=t.length;s<i;s++)if(t[s]!==e[s])return false;return true}function setArray(t,e){for(let s=0,i=t.length;s<i;s++)t[s]=e[s]}let o=0;function warn(t){if(!(o>100)){console.warn(t);o++;o>100&&console.warn(\"More than 100 program warnings - stopping logs.\")}}const h=new Vec3;let l=1;class Renderer{constructor({canvas:t=document.createElement(\"canvas\"),width:e=300,height:s=150,dpr:i=1,alpha:r=false,depth:n=true,stencil:a=false,antialias:o=false,premultipliedAlpha:h=false,preserveDrawingBuffer:c=false,powerPreference:u=\"default\",autoClear:d=true,webgl:m=2}={}){const g={alpha:r,depth:n,stencil:a,antialias:o,premultipliedAlpha:h,preserveDrawingBuffer:c,powerPreference:u};this.dpr=i;this.alpha=r;this.color=true;this.depth=n;this.stencil=a;this.premultipliedAlpha=h;this.autoClear=d;this.id=l++;2===m&&(this.gl=t.getContext(\"webgl2\",g));this.isWebgl2=!!this.gl;this.gl||(this.gl=t.getContext(\"webgl\",g));this.gl||console.error(\"unable to create webgl context\");this.gl.renderer=this;this.setSize(e,s);this.state={};this.state.blendFunc={src:this.gl.ONE,dst:this.gl.ZERO};this.state.blendEquation={modeRGB:this.gl.FUNC_ADD};this.state.cullFace=null;this.state.frontFace=this.gl.CCW;this.state.depthMask=true;this.state.depthFunc=this.gl.LESS;this.state.premultiplyAlpha=false;this.state.flipY=false;this.state.unpackAlignment=4;this.state.framebuffer=null;this.state.viewport={x:0,y:0,width:null,height:null};this.state.textureUnits=[];this.state.activeTextureUnit=0;this.state.boundBuffer=null;this.state.uniformLocations=new Map;this.state.currentProgram=null;this.extensions={};if(this.isWebgl2){this.getExtension(\"EXT_color_buffer_float\");this.getExtension(\"OES_texture_float_linear\")}else{this.getExtension(\"OES_texture_float\");this.getExtension(\"OES_texture_float_linear\");this.getExtension(\"OES_texture_half_float\");this.getExtension(\"OES_texture_half_float_linear\");this.getExtension(\"OES_element_index_uint\");this.getExtension(\"OES_standard_derivatives\");this.getExtension(\"EXT_sRGB\");this.getExtension(\"WEBGL_depth_texture\");this.getExtension(\"WEBGL_draw_buffers\")}this.getExtension(\"WEBGL_compressed_texture_astc\");this.getExtension(\"EXT_texture_compression_bptc\");this.getExtension(\"WEBGL_compressed_texture_s3tc\");this.getExtension(\"WEBGL_compressed_texture_etc1\");this.getExtension(\"WEBGL_compressed_texture_pvrtc\");this.getExtension(\"WEBKIT_WEBGL_compressed_texture_pvrtc\");this.vertexAttribDivisor=this.getExtension(\"ANGLE_instanced_arrays\",\"vertexAttribDivisor\",\"vertexAttribDivisorANGLE\");this.drawArraysInstanced=this.getExtension(\"ANGLE_instanced_arrays\",\"drawArraysInstanced\",\"drawArraysInstancedANGLE\");this.drawElementsInstanced=this.getExtension(\"ANGLE_instanced_arrays\",\"drawElementsInstanced\",\"drawElementsInstancedANGLE\");this.createVertexArray=this.getExtension(\"OES_vertex_array_object\",\"createVertexArray\",\"createVertexArrayOES\");this.bindVertexArray=this.getExtension(\"OES_vertex_array_object\",\"bindVertexArray\",\"bindVertexArrayOES\");this.deleteVertexArray=this.getExtension(\"OES_vertex_array_object\",\"deleteVertexArray\",\"deleteVertexArrayOES\");this.drawBuffers=this.getExtension(\"WEBGL_draw_buffers\",\"drawBuffers\",\"drawBuffersWEBGL\");this.parameters={};this.parameters.maxTextureUnits=this.gl.getParameter(this.gl.MAX_COMBINED_TEXTURE_IMAGE_UNITS);this.parameters.maxAnisotropy=this.getExtension(\"EXT_texture_filter_anisotropic\")?this.gl.getParameter(this.getExtension(\"EXT_texture_filter_anisotropic\").MAX_TEXTURE_MAX_ANISOTROPY_EXT):0}setSize(t,e){this.width=t;this.height=e;this.gl.canvas.width=t*this.dpr;this.gl.canvas.height=e*this.dpr;this.gl.canvas.style&&Object.assign(this.gl.canvas.style,{width:t+\"px\",height:e+\"px\"})}setViewport(t,e,s=0,i=0){if(this.state.viewport.width!==t||this.state.viewport.height!==e){this.state.viewport.width=t;this.state.viewport.height=e;this.state.viewport.x=s;this.state.viewport.y=i;this.gl.viewport(s,i,t,e)}}setScissor(t,e,s=0,i=0){this.gl.scissor(s,i,t,e)}enable(t){if(true!==this.state[t]){this.gl.enable(t);this.state[t]=true}}disable(t){if(false!==this.state[t]){this.gl.disable(t);this.state[t]=false}}setBlendFunc(t,e,s,i){if(this.state.blendFunc.src!==t||this.state.blendFunc.dst!==e||this.state.blendFunc.srcAlpha!==s||this.state.blendFunc.dstAlpha!==i){this.state.blendFunc.src=t;this.state.blendFunc.dst=e;this.state.blendFunc.srcAlpha=s;this.state.blendFunc.dstAlpha=i;void 0!==s?this.gl.blendFuncSeparate(t,e,s,i):this.gl.blendFunc(t,e)}}setBlendEquation(t,e){t=t||this.gl.FUNC_ADD;if(this.state.blendEquation.modeRGB!==t||this.state.blendEquation.modeAlpha!==e){this.state.blendEquation.modeRGB=t;this.state.blendEquation.modeAlpha=e;void 0!==e?this.gl.blendEquationSeparate(t,e):this.gl.blendEquation(t)}}setCullFace(t){if(this.state.cullFace!==t){this.state.cullFace=t;this.gl.cullFace(t)}}setFrontFace(t){if(this.state.frontFace!==t){this.state.frontFace=t;this.gl.frontFace(t)}}setDepthMask(t){if(this.state.depthMask!==t){this.state.depthMask=t;this.gl.depthMask(t)}}setDepthFunc(t){if(this.state.depthFunc!==t){this.state.depthFunc=t;this.gl.depthFunc(t)}}activeTexture(t){if(this.state.activeTextureUnit!==t){this.state.activeTextureUnit=t;this.gl.activeTexture(this.gl.TEXTURE0+t)}}bindFramebuffer({target:t=this.gl.FRAMEBUFFER,buffer:e=null}={}){if(this.state.framebuffer!==e){this.state.framebuffer=e;this.gl.bindFramebuffer(t,e)}}getExtension(t,e,s){if(e&&this.gl[e])return this.gl[e].bind(this.gl);this.extensions[t]||(this.extensions[t]=this.gl.getExtension(t));return e?this.extensions[t]?this.extensions[t][s].bind(this.extensions[t]):null:this.extensions[t]}sortOpaque(t,e){return t.renderOrder!==e.renderOrder?t.renderOrder-e.renderOrder:t.program.id!==e.program.id?t.program.id-e.program.id:t.zDepth!==e.zDepth?t.zDepth-e.zDepth:e.id-t.id}sortTransparent(t,e){return t.renderOrder!==e.renderOrder?t.renderOrder-e.renderOrder:t.zDepth!==e.zDepth?e.zDepth-t.zDepth:e.id-t.id}sortUI(t,e){return t.renderOrder!==e.renderOrder?t.renderOrder-e.renderOrder:t.program.id!==e.program.id?t.program.id-e.program.id:e.id-t.id}getRenderList({scene:t,camera:e,frustumCull:s,sort:i}){let r=[];e&&s&&e.updateFrustum();t.traverse((t=>{if(!t.visible)return true;t.draw&&(s&&t.frustumCulled&&e&&!e.frustumIntersectsMesh(t)||r.push(t))}));if(i){const t=[];const s=[];const i=[];r.forEach((r=>{r.program.transparent?r.program.depthTest?s.push(r):i.push(r):t.push(r);r.zDepth=0;if(0===r.renderOrder&&r.program.depthTest&&e){r.worldMatrix.getTranslation(h);h.applyMatrix4(e.projectionViewMatrix);r.zDepth=h.z}}));t.sort(this.sortOpaque);s.sort(this.sortTransparent);i.sort(this.sortUI);r=t.concat(s,i)}return r}render({scene:t,camera:e,target:s=null,update:i=true,sort:r=true,frustumCull:n=true,clear:a}){if(null===s){this.bindFramebuffer();this.setViewport(this.width*this.dpr,this.height*this.dpr)}else{this.bindFramebuffer(s);this.setViewport(s.width,s.height)}if(a||this.autoClear&&false!==a){if(this.depth&&(!s||s.depth)){this.enable(this.gl.DEPTH_TEST);this.setDepthMask(true)}this.gl.clear((this.color?this.gl.COLOR_BUFFER_BIT:0)|(this.depth?this.gl.DEPTH_BUFFER_BIT:0)|(this.stencil?this.gl.STENCIL_BUFFER_BIT:0))}i&&t.updateMatrixWorld();e&&e.updateMatrixWorld();const o=this.getRenderList({scene:t,camera:e,frustumCull:n,sort:r});o.forEach((t=>{t.draw({camera:e})}))}}\n/**\n * Copy the values from one vec4 to another\n *\n * @param {vec4} out the receiving vector\n * @param {vec4} a the source vector\n * @returns {vec4} out\n */\nfunction copy$4(t,e){t[0]=e[0];t[1]=e[1];t[2]=e[2];t[3]=e[3];return t}\n/**\n * Set the components of a vec4 to the given values\n *\n * @param {vec4} out the receiving vector\n * @param {Number} x X component\n * @param {Number} y Y component\n * @param {Number} z Z component\n * @param {Number} w W component\n * @returns {vec4} out\n */function set$4(t,e,s,i,r){t[0]=e;t[1]=s;t[2]=i;t[3]=r;return t}\n/**\n * Adds two vec4's\n *\n * @param {vec4} out the receiving vector\n * @param {vec4} a the first operand\n * @param {vec4} b the second operand\n * @returns {vec4} out\n */\n/**\n * Scales a vec4 by a scalar number\n *\n * @param {vec4} out the receiving vector\n * @param {vec4} a the vector to scale\n * @param {Number} b amount to scale the vector by\n * @returns {vec4} out\n */\nfunction scale$4(t,e,s){t[0]=e[0]*s;t[1]=e[1]*s;t[2]=e[2]*s;t[3]=e[3]*s;return t}\n/**\n * Calculates the length of a vec4\n *\n * @param {vec4} a vector to calculate length of\n * @returns {Number} length of a\n */\n/**\n * Normalize a vec4\n *\n * @param {vec4} out the receiving vector\n * @param {vec4} a vector to normalize\n * @returns {vec4} out\n */\nfunction normalize$2(t,e){let s=e[0];let i=e[1];let r=e[2];let n=e[3];let a=s*s+i*i+r*r+n*n;a>0&&(a=1/Math.sqrt(a));t[0]=s*a;t[1]=i*a;t[2]=r*a;t[3]=n*a;return t}\n/**\n * Calculates the dot product of two vec4's\n *\n * @param {vec4} a the first operand\n * @param {vec4} b the second operand\n * @returns {Number} dot product of a and b\n */function dot$2(t,e){return t[0]*e[0]+t[1]*e[1]+t[2]*e[2]+t[3]*e[3]}\n/**\n * Performs a linear interpolation between two vec4's\n *\n * @param {vec4} out the receiving vector\n * @param {vec4} a the first operand\n * @param {vec4} b the second operand\n * @param {Number} t interpolation amount between the two inputs\n * @returns {vec4} out\n */\n/**\n * Set a quat to the identity quaternion\n *\n * @param {quat} out the receiving quaternion\n * @returns {quat} out\n */\nfunction identity$3(t){t[0]=0;t[1]=0;t[2]=0;t[3]=1;return t}\n/**\n * Sets a quat from the given angle and rotation axis,\n * then returns it.\n *\n * @param {quat} out the receiving quaternion\n * @param {vec3} axis the axis around which to rotate\n * @param {Number} rad the angle in radians\n * @returns {quat} out\n **/function setAxisAngle(t,e,s){s*=.5;let i=Math.sin(s);t[0]=i*e[0];t[1]=i*e[1];t[2]=i*e[2];t[3]=Math.cos(s);return t}\n/**\n * Multiplies two quats\n *\n * @param {quat} out the receiving quaternion\n * @param {quat} a the first operand\n * @param {quat} b the second operand\n * @returns {quat} out\n */function multiply$3(t,e,s){let i=e[0],r=e[1],n=e[2],a=e[3];let o=s[0],h=s[1],l=s[2],c=s[3];t[0]=i*c+a*o+r*l-n*h;t[1]=r*c+a*h+n*o-i*l;t[2]=n*c+a*l+i*h-r*o;t[3]=a*c-i*o-r*h-n*l;return t}\n/**\n * Rotates a quaternion by the given angle about the X axis\n *\n * @param {quat} out quat receiving operation result\n * @param {quat} a quat to rotate\n * @param {number} rad angle (in radians) to rotate\n * @returns {quat} out\n */function rotateX(t,e,s){s*=.5;let i=e[0],r=e[1],n=e[2],a=e[3];let o=Math.sin(s),h=Math.cos(s);t[0]=i*h+a*o;t[1]=r*h+n*o;t[2]=n*h-r*o;t[3]=a*h-i*o;return t}\n/**\n * Rotates a quaternion by the given angle about the Y axis\n *\n * @param {quat} out quat receiving operation result\n * @param {quat} a quat to rotate\n * @param {number} rad angle (in radians) to rotate\n * @returns {quat} out\n */function rotateY(t,e,s){s*=.5;let i=e[0],r=e[1],n=e[2],a=e[3];let o=Math.sin(s),h=Math.cos(s);t[0]=i*h-n*o;t[1]=r*h+a*o;t[2]=n*h+i*o;t[3]=a*h-r*o;return t}\n/**\n * Rotates a quaternion by the given angle about the Z axis\n *\n * @param {quat} out quat receiving operation result\n * @param {quat} a quat to rotate\n * @param {number} rad angle (in radians) to rotate\n * @returns {quat} out\n */function rotateZ(t,e,s){s*=.5;let i=e[0],r=e[1],n=e[2],a=e[3];let o=Math.sin(s),h=Math.cos(s);t[0]=i*h+r*o;t[1]=r*h-i*o;t[2]=n*h+a*o;t[3]=a*h-n*o;return t}\n/**\n * Performs a spherical linear interpolation between two quat\n *\n * @param {quat} out the receiving quaternion\n * @param {quat} a the first operand\n * @param {quat} b the second operand\n * @param {Number} t interpolation amount between the two inputs\n * @returns {quat} out\n */function slerp(t,e,s,i){let r=e[0],n=e[1],a=e[2],o=e[3];let h=s[0],l=s[1],c=s[2],u=s[3];let d,m,g,p,f;m=r*h+n*l+a*c+o*u;if(m<0){m=-m;h=-h;l=-l;c=-c;u=-u}if(1-m>1e-6){d=Math.acos(m);g=Math.sin(d);p=Math.sin((1-i)*d)/g;f=Math.sin(i*d)/g}else{p=1-i;f=i}t[0]=p*r+f*h;t[1]=p*n+f*l;t[2]=p*a+f*c;t[3]=p*o+f*u;return t}\n/**\n * Calculates the inverse of a quat\n *\n * @param {quat} out the receiving quaternion\n * @param {quat} a quat to calculate inverse of\n * @returns {quat} out\n */function invert$2(t,e){let s=e[0],i=e[1],r=e[2],n=e[3];let a=s*s+i*i+r*r+n*n;let o=a?1/a:0;t[0]=-s*o;t[1]=-i*o;t[2]=-r*o;t[3]=n*o;return t}\n/**\n * Calculates the conjugate of a quat\n * If the quaternion is normalized, this function is faster than quat.inverse and produces the same result.\n *\n * @param {quat} out the receiving quaternion\n * @param {quat} a quat to calculate conjugate of\n * @returns {quat} out\n */function conjugate(t,e){t[0]=-e[0];t[1]=-e[1];t[2]=-e[2];t[3]=e[3];return t}\n/**\n * Creates a quaternion from the given 3x3 rotation matrix.\n *\n * NOTE: The resultant quaternion is not normalized, so you should be sure\n * to renormalize the quaternion yourself where necessary.\n *\n * @param {quat} out the receiving quaternion\n * @param {mat3} m rotation matrix\n * @returns {quat} out\n * @function\n */function fromMat3(t,e){let s=e[0]+e[4]+e[8];let i;if(s>0){i=Math.sqrt(s+1);t[3]=.5*i;i=.5/i;t[0]=(e[5]-e[7])*i;t[1]=(e[6]-e[2])*i;t[2]=(e[1]-e[3])*i}else{let s=0;e[4]>e[0]&&(s=1);e[8]>e[3*s+s]&&(s=2);let r=(s+1)%3;let n=(s+2)%3;i=Math.sqrt(e[3*s+s]-e[3*r+r]-e[3*n+n]+1);t[s]=.5*i;i=.5/i;t[3]=(e[3*r+n]-e[3*n+r])*i;t[r]=(e[3*r+s]+e[3*s+r])*i;t[n]=(e[3*n+s]+e[3*s+n])*i}return t}\n/**\n * Creates a quaternion from the given euler angle x, y, z.\n *\n * @param {quat} out the receiving quaternion\n * @param {vec3} euler Angles to rotate around each axis in degrees.\n * @param {String} order detailing order of operations. Default 'XYZ'.\n * @returns {quat} out\n * @function\n */function fromEuler(t,e,s=\"YXZ\"){let i=Math.sin(.5*e[0]);let r=Math.cos(.5*e[0]);let n=Math.sin(.5*e[1]);let a=Math.cos(.5*e[1]);let o=Math.sin(.5*e[2]);let h=Math.cos(.5*e[2]);if(\"XYZ\"===s){t[0]=i*a*h+r*n*o;t[1]=r*n*h-i*a*o;t[2]=r*a*o+i*n*h;t[3]=r*a*h-i*n*o}else if(\"YXZ\"===s){t[0]=i*a*h+r*n*o;t[1]=r*n*h-i*a*o;t[2]=r*a*o-i*n*h;t[3]=r*a*h+i*n*o}else if(\"ZXY\"===s){t[0]=i*a*h-r*n*o;t[1]=r*n*h+i*a*o;t[2]=r*a*o+i*n*h;t[3]=r*a*h-i*n*o}else if(\"ZYX\"===s){t[0]=i*a*h-r*n*o;t[1]=r*n*h+i*a*o;t[2]=r*a*o-i*n*h;t[3]=r*a*h+i*n*o}else if(\"YZX\"===s){t[0]=i*a*h+r*n*o;t[1]=r*n*h+i*a*o;t[2]=r*a*o-i*n*h;t[3]=r*a*h-i*n*o}else if(\"XZY\"===s){t[0]=i*a*h-r*n*o;t[1]=r*n*h-i*a*o;t[2]=r*a*o+i*n*h;t[3]=r*a*h+i*n*o}return t}\n/**\n * Copy the values from one quat to another\n *\n * @param {quat} out the receiving quaternion\n * @param {quat} a the source quaternion\n * @returns {quat} out\n * @function\n */const c=copy$4;\n/**\n * Set the components of a quat to the given values\n *\n * @param {quat} out the receiving quaternion\n * @param {Number} x X component\n * @param {Number} y Y component\n * @param {Number} z Z component\n * @param {Number} w W component\n * @returns {quat} out\n * @function\n */const u=set$4;\n/**\n * Adds two quat's\n *\n * @param {quat} out the receiving quaternion\n * @param {quat} a the first operand\n * @param {quat} b the second operand\n * @returns {quat} out\n * @function\n */\n/**\n * Calculates the dot product of two quat's\n *\n * @param {quat} a the first operand\n * @param {quat} b the second operand\n * @returns {Number} dot product of a and b\n * @function\n */\nconst d=dot$2;\n/**\n * Performs a linear interpolation between two quat's\n *\n * @param {quat} out the receiving quaternion\n * @param {quat} a the first operand\n * @param {quat} b the second operand\n * @param {Number} t interpolation amount between the two inputs\n * @returns {quat} out\n * @function\n */\n/**\n * Normalize a quat\n *\n * @param {quat} out the receiving quaternion\n * @param {quat} a quaternion to normalize\n * @returns {quat} out\n * @function\n */\nconst m=normalize$2;class Quat extends Array{constructor(t=0,e=0,s=0,i=1){super(t,e,s,i);this.onChange=()=>{};return this}get x(){return this[0]}get y(){return this[1]}get z(){return this[2]}get w(){return this[3]}set x(t){this[0]=t;this.onChange()}set y(t){this[1]=t;this.onChange()}set z(t){this[2]=t;this.onChange()}set w(t){this[3]=t;this.onChange()}identity(){identity$3(this);this.onChange();return this}set(t,e,s,i){if(t.length)return this.copy(t);u(this,t,e,s,i);this.onChange();return this}rotateX(t){rotateX(this,this,t);this.onChange();return this}rotateY(t){rotateY(this,this,t);this.onChange();return this}rotateZ(t){rotateZ(this,this,t);this.onChange();return this}inverse(t=this){invert$2(this,t);this.onChange();return this}conjugate(t=this){conjugate(this,t);this.onChange();return this}copy(t){c(this,t);this.onChange();return this}normalize(t=this){m(this,t);this.onChange();return this}multiply(t,e){e?multiply$3(this,t,e):multiply$3(this,this,t);this.onChange();return this}dot(t){return d(this,t)}fromMatrix3(t){fromMat3(this,t);this.onChange();return this}fromEuler(t){fromEuler(this,t,t.order);return this}fromAxisAngle(t,e){setAxisAngle(this,t,e);this.onChange();return this}slerp(t,e){slerp(this,this,t,e);this.onChange();return this}fromArray(t,e=0){this[0]=t[e];this[1]=t[e+1];this[2]=t[e+2];this[3]=t[e+3];this.onChange();return this}toArray(t=[],e=0){t[e]=this[0];t[e+1]=this[1];t[e+2]=this[2];t[e+3]=this[3];return t}}const g=1e-6;\n/**\n * Copy the values from one mat4 to another\n *\n * @param {mat4} out the receiving matrix\n * @param {mat4} a the source matrix\n * @returns {mat4} out\n */function copy$2(t,e){t[0]=e[0];t[1]=e[1];t[2]=e[2];t[3]=e[3];t[4]=e[4];t[5]=e[5];t[6]=e[6];t[7]=e[7];t[8]=e[8];t[9]=e[9];t[10]=e[10];t[11]=e[11];t[12]=e[12];t[13]=e[13];t[14]=e[14];t[15]=e[15];return t}\n/**\n * Set the components of a mat4 to the given values\n *\n * @param {mat4} out the receiving matrix\n * @returns {mat4} out\n */function set$2(t,e,s,i,r,n,a,o,h,l,c,u,d,m,g,p,f){t[0]=e;t[1]=s;t[2]=i;t[3]=r;t[4]=n;t[5]=a;t[6]=o;t[7]=h;t[8]=l;t[9]=c;t[10]=u;t[11]=d;t[12]=m;t[13]=g;t[14]=p;t[15]=f;return t}\n/**\n * Set a mat4 to the identity matrix\n *\n * @param {mat4} out the receiving matrix\n * @returns {mat4} out\n */function identity$2(t){t[0]=1;t[1]=0;t[2]=0;t[3]=0;t[4]=0;t[5]=1;t[6]=0;t[7]=0;t[8]=0;t[9]=0;t[10]=1;t[11]=0;t[12]=0;t[13]=0;t[14]=0;t[15]=1;return t}\n/**\n * Transpose the values of a mat4\n *\n * @param {mat4} out the receiving matrix\n * @param {mat4} a the source matrix\n * @returns {mat4} out\n */\n/**\n * Inverts a mat4\n *\n * @param {mat4} out the receiving matrix\n * @param {mat4} a the source matrix\n * @returns {mat4} out\n */\nfunction invert$1(t,e){let s=e[0],i=e[1],r=e[2],n=e[3];let a=e[4],o=e[5],h=e[6],l=e[7];let c=e[8],u=e[9],d=e[10],m=e[11];let g=e[12],p=e[13],f=e[14],x=e[15];let w=s*o-i*a;let y=s*h-r*a;let b=s*l-n*a;let M=i*h-r*o;let v=i*l-n*o;let A=r*l-n*h;let E=c*p-u*g;let T=c*f-d*g;let _=c*x-m*g;let F=u*f-d*p;let S=u*x-m*p;let R=d*x-m*f;let P=w*R-y*S+b*F+M*_-v*T+A*E;if(!P)return null;P=1/P;t[0]=(o*R-h*S+l*F)*P;t[1]=(r*S-i*R-n*F)*P;t[2]=(p*A-f*v+x*M)*P;t[3]=(d*v-u*A-m*M)*P;t[4]=(h*_-a*R-l*T)*P;t[5]=(s*R-r*_+n*T)*P;t[6]=(f*b-g*A-x*y)*P;t[7]=(c*A-d*b+m*y)*P;t[8]=(a*S-o*_+l*E)*P;t[9]=(i*_-s*S-n*E)*P;t[10]=(g*v-p*b+x*w)*P;t[11]=(u*b-c*v-m*w)*P;t[12]=(o*T-a*F-h*E)*P;t[13]=(s*F-i*T+r*E)*P;t[14]=(p*y-g*M-f*w)*P;t[15]=(c*M-u*y+d*w)*P;return t}\n/**\n * Calculates the determinant of a mat4\n *\n * @param {mat4} a the source matrix\n * @returns {Number} determinant of a\n */function determinant$1(t){let e=t[0],s=t[1],i=t[2],r=t[3];let n=t[4],a=t[5],o=t[6],h=t[7];let l=t[8],c=t[9],u=t[10],d=t[11];let m=t[12],g=t[13],p=t[14],f=t[15];let x=e*a-s*n;let w=e*o-i*n;let y=e*h-r*n;let b=s*o-i*a;let M=s*h-r*a;let v=i*h-r*o;let A=l*g-c*m;let E=l*p-u*m;let T=l*f-d*m;let _=c*p-u*g;let F=c*f-d*g;let S=u*f-d*p;return x*S-w*F+y*_+b*T-M*E+v*A}\n/**\n * Multiplies two mat4s\n *\n * @param {mat4} out the receiving matrix\n * @param {mat4} a the first operand\n * @param {mat4} b the second operand\n * @returns {mat4} out\n */function multiply$2(t,e,s){let i=e[0],r=e[1],n=e[2],a=e[3];let o=e[4],h=e[5],l=e[6],c=e[7];let u=e[8],d=e[9],m=e[10],g=e[11];let p=e[12],f=e[13],x=e[14],w=e[15];let y=s[0],b=s[1],M=s[2],v=s[3];t[0]=y*i+b*o+M*u+v*p;t[1]=y*r+b*h+M*d+v*f;t[2]=y*n+b*l+M*m+v*x;t[3]=y*a+b*c+M*g+v*w;y=s[4];b=s[5];M=s[6];v=s[7];t[4]=y*i+b*o+M*u+v*p;t[5]=y*r+b*h+M*d+v*f;t[6]=y*n+b*l+M*m+v*x;t[7]=y*a+b*c+M*g+v*w;y=s[8];b=s[9];M=s[10];v=s[11];t[8]=y*i+b*o+M*u+v*p;t[9]=y*r+b*h+M*d+v*f;t[10]=y*n+b*l+M*m+v*x;t[11]=y*a+b*c+M*g+v*w;y=s[12];b=s[13];M=s[14];v=s[15];t[12]=y*i+b*o+M*u+v*p;t[13]=y*r+b*h+M*d+v*f;t[14]=y*n+b*l+M*m+v*x;t[15]=y*a+b*c+M*g+v*w;return t}\n/**\n * Translate a mat4 by the given vector\n *\n * @param {mat4} out the receiving matrix\n * @param {mat4} a the matrix to translate\n * @param {vec3} v vector to translate by\n * @returns {mat4} out\n */function translate$1(t,e,s){let i=s[0],r=s[1],n=s[2];let a,o,h,l;let c,u,d,m;let g,p,f,x;if(e===t){t[12]=e[0]*i+e[4]*r+e[8]*n+e[12];t[13]=e[1]*i+e[5]*r+e[9]*n+e[13];t[14]=e[2]*i+e[6]*r+e[10]*n+e[14];t[15]=e[3]*i+e[7]*r+e[11]*n+e[15]}else{a=e[0];o=e[1];h=e[2];l=e[3];c=e[4];u=e[5];d=e[6];m=e[7];g=e[8];p=e[9];f=e[10];x=e[11];t[0]=a;t[1]=o;t[2]=h;t[3]=l;t[4]=c;t[5]=u;t[6]=d;t[7]=m;t[8]=g;t[9]=p;t[10]=f;t[11]=x;t[12]=a*i+c*r+g*n+e[12];t[13]=o*i+u*r+p*n+e[13];t[14]=h*i+d*r+f*n+e[14];t[15]=l*i+m*r+x*n+e[15]}return t}\n/**\n * Scales the mat4 by the dimensions in the given vec3 not using vectorization\n *\n * @param {mat4} out the receiving matrix\n * @param {mat4} a the matrix to scale\n * @param {vec3} v the vec3 to scale the matrix by\n * @returns {mat4} out\n **/function scale$2(t,e,s){let i=s[0],r=s[1],n=s[2];t[0]=e[0]*i;t[1]=e[1]*i;t[2]=e[2]*i;t[3]=e[3]*i;t[4]=e[4]*r;t[5]=e[5]*r;t[6]=e[6]*r;t[7]=e[7]*r;t[8]=e[8]*n;t[9]=e[9]*n;t[10]=e[10]*n;t[11]=e[11]*n;t[12]=e[12];t[13]=e[13];t[14]=e[14];t[15]=e[15];return t}\n/**\n * Rotates a mat4 by the given angle around the given axis\n *\n * @param {mat4} out the receiving matrix\n * @param {mat4} a the matrix to rotate\n * @param {Number} rad the angle to rotate the matrix by\n * @param {vec3} axis the axis to rotate around\n * @returns {mat4} out\n */function rotate$1(t,e,s,i){let r=i[0],n=i[1],a=i[2];let o=Math.hypot(r,n,a);let h,l,c;let u,d,m,p;let f,x,w,y;let b,M,v,A;let E,T,_;let F,S,R;let P,L,C;if(Math.abs(o)<g)return null;o=1/o;r*=o;n*=o;a*=o;h=Math.sin(s);l=Math.cos(s);c=1-l;u=e[0];d=e[1];m=e[2];p=e[3];f=e[4];x=e[5];w=e[6];y=e[7];b=e[8];M=e[9];v=e[10];A=e[11];E=r*r*c+l;T=n*r*c+a*h;_=a*r*c-n*h;F=r*n*c-a*h;S=n*n*c+l;R=a*n*c+r*h;P=r*a*c+n*h;L=n*a*c-r*h;C=a*a*c+l;t[0]=u*E+f*T+b*_;t[1]=d*E+x*T+M*_;t[2]=m*E+w*T+v*_;t[3]=p*E+y*T+A*_;t[4]=u*F+f*S+b*R;t[5]=d*F+x*S+M*R;t[6]=m*F+w*S+v*R;t[7]=p*F+y*S+A*R;t[8]=u*P+f*L+b*C;t[9]=d*P+x*L+M*C;t[10]=m*P+w*L+v*C;t[11]=p*P+y*L+A*C;if(e!==t){t[12]=e[12];t[13]=e[13];t[14]=e[14];t[15]=e[15]}return t}\n/**\n * Returns the translation vector component of a transformation\n *  matrix. If a matrix is built with fromRotationTranslation,\n *  the returned vector will be the same as the translation vector\n *  originally supplied.\n * @param  {vec3} out Vector to receive translation component\n * @param  {mat4} mat Matrix to be decomposed (input)\n * @return {vec3} out\n */function getTranslation(t,e){t[0]=e[12];t[1]=e[13];t[2]=e[14];return t}\n/**\n * Returns the scaling factor component of a transformation\n *  matrix. If a matrix is built with fromRotationTranslationScale\n *  with a normalized Quaternion paramter, the returned vector will be\n *  the same as the scaling vector\n *  originally supplied.\n * @param  {vec3} out Vector to receive scaling factor component\n * @param  {mat4} mat Matrix to be decomposed (input)\n * @return {vec3} out\n */function getScaling(t,e){let s=e[0];let i=e[1];let r=e[2];let n=e[4];let a=e[5];let o=e[6];let h=e[8];let l=e[9];let c=e[10];t[0]=Math.hypot(s,i,r);t[1]=Math.hypot(n,a,o);t[2]=Math.hypot(h,l,c);return t}function getMaxScaleOnAxis(t){let e=t[0];let s=t[1];let i=t[2];let r=t[4];let n=t[5];let a=t[6];let o=t[8];let h=t[9];let l=t[10];const c=e*e+s*s+i*i;const u=r*r+n*n+a*a;const d=o*o+h*h+l*l;return Math.sqrt(Math.max(c,u,d))}\n/**\n * Returns a quaternion representing the rotational component\n *  of a transformation matrix. If a matrix is built with\n *  fromRotationTranslation, the returned quaternion will be the\n *  same as the quaternion originally supplied.\n * @param {quat} out Quaternion to receive the rotation component\n * @param {mat4} mat Matrix to be decomposed (input)\n * @return {quat} out\n */const p=function(){const t=[0,0,0];return function(e,s){let i=t;getScaling(i,s);let r=1/i[0];let n=1/i[1];let a=1/i[2];let o=s[0]*r;let h=s[1]*n;let l=s[2]*a;let c=s[4]*r;let u=s[5]*n;let d=s[6]*a;let m=s[8]*r;let g=s[9]*n;let p=s[10]*a;let f=o+u+p;let x=0;if(f>0){x=2*Math.sqrt(f+1);e[3]=.25*x;e[0]=(d-g)/x;e[1]=(m-l)/x;e[2]=(h-c)/x}else if(o>u&&o>p){x=2*Math.sqrt(1+o-u-p);e[3]=(d-g)/x;e[0]=.25*x;e[1]=(h+c)/x;e[2]=(m+l)/x}else if(u>p){x=2*Math.sqrt(1+u-o-p);e[3]=(m-l)/x;e[0]=(h+c)/x;e[1]=.25*x;e[2]=(d+g)/x}else{x=2*Math.sqrt(1+p-o-u);e[3]=(h-c)/x;e[0]=(m+l)/x;e[1]=(d+g)/x;e[2]=.25*x}return e}}();\n/**\n * Creates a matrix from a quaternion rotation, vector translation and vector scale\n * This is equivalent to (but much faster than):\n *\n *     mat4.identity(dest);\n *     mat4.translate(dest, vec);\n *     let quatMat = mat4.create();\n *     quat4.toMat4(quat, quatMat);\n *     mat4.multiply(dest, quatMat);\n *     mat4.scale(dest, scale)\n *\n * @param {mat4} out mat4 receiving operation result\n * @param {quat4} q Rotation quaternion\n * @param {vec3} v Translation vector\n * @param {vec3} s Scaling vector\n * @returns {mat4} out\n */function fromRotationTranslationScale(t,e,s,i){let r=e[0],n=e[1],a=e[2],o=e[3];let h=r+r;let l=n+n;let c=a+a;let u=r*h;let d=r*l;let m=r*c;let g=n*l;let p=n*c;let f=a*c;let x=o*h;let w=o*l;let y=o*c;let b=i[0];let M=i[1];let v=i[2];t[0]=(1-(g+f))*b;t[1]=(d+y)*b;t[2]=(m-w)*b;t[3]=0;t[4]=(d-y)*M;t[5]=(1-(u+f))*M;t[6]=(p+x)*M;t[7]=0;t[8]=(m+w)*v;t[9]=(p-x)*v;t[10]=(1-(u+g))*v;t[11]=0;t[12]=s[0];t[13]=s[1];t[14]=s[2];t[15]=1;return t}\n/**\n * Calculates a 4x4 matrix from the given quaternion\n *\n * @param {mat4} out mat4 receiving operation result\n * @param {quat} q Quaternion to create matrix from\n *\n * @returns {mat4} out\n */function fromQuat$1(t,e){let s=e[0],i=e[1],r=e[2],n=e[3];let a=s+s;let o=i+i;let h=r+r;let l=s*a;let c=i*a;let u=i*o;let d=r*a;let m=r*o;let g=r*h;let p=n*a;let f=n*o;let x=n*h;t[0]=1-u-g;t[1]=c+x;t[2]=d-f;t[3]=0;t[4]=c-x;t[5]=1-l-g;t[6]=m+p;t[7]=0;t[8]=d+f;t[9]=m-p;t[10]=1-l-u;t[11]=0;t[12]=0;t[13]=0;t[14]=0;t[15]=1;return t}\n/**\n * Generates a perspective projection matrix with the given bounds\n *\n * @param {mat4} out mat4 frustum matrix will be written into\n * @param {number} fovy Vertical field of view in radians\n * @param {number} aspect Aspect ratio. typically viewport width/height\n * @param {number} near Near bound of the frustum\n * @param {number} far Far bound of the frustum\n * @returns {mat4} out\n */function perspective(t,e,s,i,r){let n=1/Math.tan(e/2);let a=1/(i-r);t[0]=n/s;t[1]=0;t[2]=0;t[3]=0;t[4]=0;t[5]=n;t[6]=0;t[7]=0;t[8]=0;t[9]=0;t[10]=(r+i)*a;t[11]=-1;t[12]=0;t[13]=0;t[14]=2*r*i*a;t[15]=0;return t}\n/**\n * Generates a orthogonal projection matrix with the given bounds\n *\n * @param {mat4} out mat4 frustum matrix will be written into\n * @param {number} left Left bound of the frustum\n * @param {number} right Right bound of the frustum\n * @param {number} bottom Bottom bound of the frustum\n * @param {number} top Top bound of the frustum\n * @param {number} near Near bound of the frustum\n * @param {number} far Far bound of the frustum\n * @returns {mat4} out\n */function ortho(t,e,s,i,r,n,a){let o=1/(e-s);let h=1/(i-r);let l=1/(n-a);t[0]=-2*o;t[1]=0;t[2]=0;t[3]=0;t[4]=0;t[5]=-2*h;t[6]=0;t[7]=0;t[8]=0;t[9]=0;t[10]=2*l;t[11]=0;t[12]=(e+s)*o;t[13]=(r+i)*h;t[14]=(a+n)*l;t[15]=1;return t}\n/**\n * Generates a matrix that makes something look at something else.\n *\n * @param {mat4} out mat4 frustum matrix will be written into\n * @param {vec3} eye Position of the viewer\n * @param {vec3} target Point the viewer is looking at\n * @param {vec3} up vec3 pointing up\n * @returns {mat4} out\n */function targetTo(t,e,s,i){let r=e[0],n=e[1],a=e[2],o=i[0],h=i[1],l=i[2];let c=r-s[0],u=n-s[1],d=a-s[2];let m=c*c+u*u+d*d;if(0===m)d=1;else{m=1/Math.sqrt(m);c*=m;u*=m;d*=m}let g=h*d-l*u,p=l*c-o*d,f=o*u-h*c;m=g*g+p*p+f*f;if(0===m){l?o+=1e-6:h?l+=1e-6:h+=1e-6;g=h*d-l*u,p=l*c-o*d,f=o*u-h*c;m=g*g+p*p+f*f}m=1/Math.sqrt(m);g*=m;p*=m;f*=m;t[0]=g;t[1]=p;t[2]=f;t[3]=0;t[4]=u*f-d*p;t[5]=d*g-c*f;t[6]=c*p-u*g;t[7]=0;t[8]=c;t[9]=u;t[10]=d;t[11]=0;t[12]=r;t[13]=n;t[14]=a;t[15]=1;return t}\n/**\n * Adds two mat4's\n *\n * @param {mat4} out the receiving matrix\n * @param {mat4} a the first operand\n * @param {mat4} b the second operand\n * @returns {mat4} out\n */function add$2(t,e,s){t[0]=e[0]+s[0];t[1]=e[1]+s[1];t[2]=e[2]+s[2];t[3]=e[3]+s[3];t[4]=e[4]+s[4];t[5]=e[5]+s[5];t[6]=e[6]+s[6];t[7]=e[7]+s[7];t[8]=e[8]+s[8];t[9]=e[9]+s[9];t[10]=e[10]+s[10];t[11]=e[11]+s[11];t[12]=e[12]+s[12];t[13]=e[13]+s[13];t[14]=e[14]+s[14];t[15]=e[15]+s[15];return t}\n/**\n * Subtracts matrix b from matrix a\n *\n * @param {mat4} out the receiving matrix\n * @param {mat4} a the first operand\n * @param {mat4} b the second operand\n * @returns {mat4} out\n */function subtract$2(t,e,s){t[0]=e[0]-s[0];t[1]=e[1]-s[1];t[2]=e[2]-s[2];t[3]=e[3]-s[3];t[4]=e[4]-s[4];t[5]=e[5]-s[5];t[6]=e[6]-s[6];t[7]=e[7]-s[7];t[8]=e[8]-s[8];t[9]=e[9]-s[9];t[10]=e[10]-s[10];t[11]=e[11]-s[11];t[12]=e[12]-s[12];t[13]=e[13]-s[13];t[14]=e[14]-s[14];t[15]=e[15]-s[15];return t}\n/**\n * Multiply each element of the matrix by a scalar.\n *\n * @param {mat4} out the receiving matrix\n * @param {mat4} a the matrix to scale\n * @param {Number} b amount to scale the matrix's elements by\n * @returns {mat4} out\n */function multiplyScalar$1(t,e,s){t[0]=e[0]*s;t[1]=e[1]*s;t[2]=e[2]*s;t[3]=e[3]*s;t[4]=e[4]*s;t[5]=e[5]*s;t[6]=e[6]*s;t[7]=e[7]*s;t[8]=e[8]*s;t[9]=e[9]*s;t[10]=e[10]*s;t[11]=e[11]*s;t[12]=e[12]*s;t[13]=e[13]*s;t[14]=e[14]*s;t[15]=e[15]*s;return t}class Mat4 extends Array{constructor(t=1,e=0,s=0,i=0,r=0,n=1,a=0,o=0,h=0,l=0,c=1,u=0,d=0,m=0,g=0,p=1){super(t,e,s,i,r,n,a,o,h,l,c,u,d,m,g,p);return this}get x(){return this[12]}get y(){return this[13]}get z(){return this[14]}get w(){return this[15]}set x(t){this[12]=t}set y(t){this[13]=t}set z(t){this[14]=t}set w(t){this[15]=t}set(t,e,s,i,r,n,a,o,h,l,c,u,d,m,g,p){if(t.length)return this.copy(t);set$2(this,t,e,s,i,r,n,a,o,h,l,c,u,d,m,g,p);return this}translate(t,e=this){translate$1(this,e,t);return this}rotate(t,e,s=this){rotate$1(this,s,t,e);return this}scale(t,e=this){scale$2(this,e,\"number\"===typeof t?[t,t,t]:t);return this}add(t,e){e?add$2(this,t,e):add$2(this,this,t);return this}sub(t,e){e?subtract$2(this,t,e):subtract$2(this,this,t);return this}multiply(t,e){t.length?e?multiply$2(this,t,e):multiply$2(this,this,t):multiplyScalar$1(this,this,t);return this}identity(){identity$2(this);return this}copy(t){copy$2(this,t);return this}fromPerspective({fov:t,aspect:e,near:s,far:i}={}){perspective(this,t,e,s,i);return this}fromOrthogonal({left:t,right:e,bottom:s,top:i,near:r,far:n}){ortho(this,t,e,s,i,r,n);return this}fromQuaternion(t){fromQuat$1(this,t);return this}setPosition(t){this.x=t[0];this.y=t[1];this.z=t[2];return this}inverse(t=this){invert$1(this,t);return this}compose(t,e,s){fromRotationTranslationScale(this,t,e,s);return this}getRotation(t){p(t,this);return this}getTranslation(t){getTranslation(t,this);return this}getScaling(t){getScaling(t,this);return this}getMaxScaleOnAxis(){return getMaxScaleOnAxis(this)}lookAt(t,e,s){targetTo(this,t,e,s);return this}determinant(){return determinant$1(this)}fromArray(t,e=0){this[0]=t[e];this[1]=t[e+1];this[2]=t[e+2];this[3]=t[e+3];this[4]=t[e+4];this[5]=t[e+5];this[6]=t[e+6];this[7]=t[e+7];this[8]=t[e+8];this[9]=t[e+9];this[10]=t[e+10];this[11]=t[e+11];this[12]=t[e+12];this[13]=t[e+13];this[14]=t[e+14];this[15]=t[e+15];return this}toArray(t=[],e=0){t[e]=this[0];t[e+1]=this[1];t[e+2]=this[2];t[e+3]=this[3];t[e+4]=this[4];t[e+5]=this[5];t[e+6]=this[6];t[e+7]=this[7];t[e+8]=this[8];t[e+9]=this[9];t[e+10]=this[10];t[e+11]=this[11];t[e+12]=this[12];t[e+13]=this[13];t[e+14]=this[14];t[e+15]=this[15];return t}}function fromRotationMatrix(t,e,s=\"YXZ\"){if(\"XYZ\"===s){t[1]=Math.asin(Math.min(Math.max(e[8],-1),1));if(Math.abs(e[8])<.99999){t[0]=Math.atan2(-e[9],e[10]);t[2]=Math.atan2(-e[4],e[0])}else{t[0]=Math.atan2(e[6],e[5]);t[2]=0}}else if(\"YXZ\"===s){t[0]=Math.asin(-Math.min(Math.max(e[9],-1),1));if(Math.abs(e[9])<.99999){t[1]=Math.atan2(e[8],e[10]);t[2]=Math.atan2(e[1],e[5])}else{t[1]=Math.atan2(-e[2],e[0]);t[2]=0}}else if(\"ZXY\"===s){t[0]=Math.asin(Math.min(Math.max(e[6],-1),1));if(Math.abs(e[6])<.99999){t[1]=Math.atan2(-e[2],e[10]);t[2]=Math.atan2(-e[4],e[5])}else{t[1]=0;t[2]=Math.atan2(e[1],e[0])}}else if(\"ZYX\"===s){t[1]=Math.asin(-Math.min(Math.max(e[2],-1),1));if(Math.abs(e[2])<.99999){t[0]=Math.atan2(e[6],e[10]);t[2]=Math.atan2(e[1],e[0])}else{t[0]=0;t[2]=Math.atan2(-e[4],e[5])}}else if(\"YZX\"===s){t[2]=Math.asin(Math.min(Math.max(e[1],-1),1));if(Math.abs(e[1])<.99999){t[0]=Math.atan2(-e[9],e[5]);t[1]=Math.atan2(-e[2],e[0])}else{t[0]=0;t[1]=Math.atan2(e[8],e[10])}}else if(\"XZY\"===s){t[2]=Math.asin(-Math.min(Math.max(e[4],-1),1));if(Math.abs(e[4])<.99999){t[0]=Math.atan2(e[6],e[5]);t[1]=Math.atan2(e[8],e[0])}else{t[0]=Math.atan2(-e[9],e[10]);t[1]=0}}return t}const f=new Mat4;class Euler extends Array{constructor(t=0,e=t,s=t,i=\"YXZ\"){super(t,e,s);this.order=i;this.onChange=()=>{};return this}get x(){return this[0]}get y(){return this[1]}get z(){return this[2]}set x(t){this[0]=t;this.onChange()}set y(t){this[1]=t;this.onChange()}set z(t){this[2]=t;this.onChange()}set(t,e=t,s=t){if(t.length)return this.copy(t);this[0]=t;this[1]=e;this[2]=s;this.onChange();return this}copy(t){this[0]=t[0];this[1]=t[1];this[2]=t[2];this.onChange();return this}reorder(t){this.order=t;this.onChange();return this}fromRotationMatrix(t,e=this.order){fromRotationMatrix(this,t,e);this.onChange();return this}fromQuaternion(t,e=this.order){f.fromQuaternion(t);return this.fromRotationMatrix(f,e)}fromArray(t,e=0){this[0]=t[e];this[1]=t[e+1];this[2]=t[e+2];return this}toArray(t=[],e=0){t[e]=this[0];t[e+1]=this[1];t[e+2]=this[2];return t}}class Transform{constructor(){this.parent=null;this.children=[];this.visible=true;this.matrix=new Mat4;this.worldMatrix=new Mat4;this.matrixAutoUpdate=true;this.position=new Vec3;this.quaternion=new Quat;this.scale=new Vec3(1);this.rotation=new Euler;this.up=new Vec3(0,1,0);this.rotation.onChange=()=>this.quaternion.fromEuler(this.rotation);this.quaternion.onChange=()=>this.rotation.fromQuaternion(this.quaternion)}setParent(t,e=true){this.parent&&t!==this.parent&&this.parent.removeChild(this,false);this.parent=t;e&&t&&t.addChild(this,false)}addChild(t,e=true){~this.children.indexOf(t)||this.children.push(t);e&&t.setParent(this,false)}removeChild(t,e=true){!~this.children.indexOf(t)||this.children.splice(this.children.indexOf(t),1);e&&t.setParent(null,false)}updateMatrixWorld(t){this.matrixAutoUpdate&&this.updateMatrix();if(this.worldMatrixNeedsUpdate||t){null===this.parent?this.worldMatrix.copy(this.matrix):this.worldMatrix.multiply(this.parent.worldMatrix,this.matrix);this.worldMatrixNeedsUpdate=false;t=true}for(let e=0,s=this.children.length;e<s;e++)this.children[e].updateMatrixWorld(t)}updateMatrix(){this.matrix.compose(this.quaternion,this.position,this.scale);this.worldMatrixNeedsUpdate=true}traverse(t){if(!t(this))for(let e=0,s=this.children.length;e<s;e++)this.children[e].traverse(t)}decompose(){this.matrix.getTranslation(this.position);this.matrix.getRotation(this.quaternion);this.matrix.getScaling(this.scale);this.rotation.fromQuaternion(this.quaternion)}lookAt(t,e=false){e?this.matrix.lookAt(this.position,t,this.up):this.matrix.lookAt(t,this.position,this.up);this.matrix.getRotation(this.quaternion);this.rotation.fromQuaternion(this.quaternion)}}const x=new Mat4;const w=new Vec3;const y=new Vec3;class Camera extends Transform{constructor(t,{near:e=.1,far:s=100,fov:i=45,aspect:r=1,left:n,right:a,bottom:o,top:h,zoom:l=1}={}){super();Object.assign(this,{near:e,far:s,fov:i,aspect:r,left:n,right:a,bottom:o,top:h,zoom:l});this.projectionMatrix=new Mat4;this.viewMatrix=new Mat4;this.projectionViewMatrix=new Mat4;this.worldPosition=new Vec3;this.type=n||a?\"orthographic\":\"perspective\";\"orthographic\"===this.type?this.orthographic():this.perspective()}perspective({near:t=this.near,far:e=this.far,fov:s=this.fov,aspect:i=this.aspect}={}){Object.assign(this,{near:t,far:e,fov:s,aspect:i});this.projectionMatrix.fromPerspective({fov:s*(Math.PI/180),aspect:i,near:t,far:e});this.type=\"perspective\";return this}orthographic({near:t=this.near,far:e=this.far,left:s=this.left||-1,right:i=this.right||1,bottom:r=this.bottom||-1,top:n=this.top||1,zoom:a=this.zoom}={}){Object.assign(this,{near:t,far:e,left:s,right:i,bottom:r,top:n,zoom:a});s/=a;i/=a;r/=a;n/=a;this.projectionMatrix.fromOrthogonal({left:s,right:i,bottom:r,top:n,near:t,far:e});this.type=\"orthographic\";return this}updateMatrixWorld(){super.updateMatrixWorld();this.viewMatrix.inverse(this.worldMatrix);this.worldMatrix.getTranslation(this.worldPosition);this.projectionViewMatrix.multiply(this.projectionMatrix,this.viewMatrix);return this}lookAt(t){super.lookAt(t,true);return this}project(t){t.applyMatrix4(this.viewMatrix);t.applyMatrix4(this.projectionMatrix);return this}unproject(t){t.applyMatrix4(x.inverse(this.projectionMatrix));t.applyMatrix4(this.worldMatrix);return this}updateFrustum(){this.frustum||(this.frustum=[new Vec3,new Vec3,new Vec3,new Vec3,new Vec3,new Vec3]);const t=this.projectionViewMatrix;this.frustum[0].set(t[3]-t[0],t[7]-t[4],t[11]-t[8]).constant=t[15]-t[12];this.frustum[1].set(t[3]+t[0],t[7]+t[4],t[11]+t[8]).constant=t[15]+t[12];this.frustum[2].set(t[3]+t[1],t[7]+t[5],t[11]+t[9]).constant=t[15]+t[13];this.frustum[3].set(t[3]-t[1],t[7]-t[5],t[11]-t[9]).constant=t[15]-t[13];this.frustum[4].set(t[3]-t[2],t[7]-t[6],t[11]-t[10]).constant=t[15]-t[14];this.frustum[5].set(t[3]+t[2],t[7]+t[6],t[11]+t[10]).constant=t[15]+t[14];for(let t=0;t<6;t++){const e=1/this.frustum[t].distance();this.frustum[t].multiply(e);this.frustum[t].constant*=e}}frustumIntersectsMesh(t,e=t.worldMatrix){if(!t.geometry.attributes.position)return true;t.geometry.bounds&&Infinity!==t.geometry.bounds.radius||t.geometry.computeBoundingSphere();if(!t.geometry.bounds)return true;const s=w;s.copy(t.geometry.bounds.center);s.applyMatrix4(e);const i=t.geometry.bounds.radius*e.getMaxScaleOnAxis();return this.frustumIntersectsSphere(s,i)}frustumIntersectsSphere(t,e){const s=y;for(let i=0;i<6;i++){const r=this.frustum[i];const n=s.copy(r).dot(t)+r.constant;if(n<-e)return false}return true}}\n/**\n * Copies the upper-left 3x3 values into the given mat3.\n *\n * @param {mat3} out the receiving 3x3 matrix\n * @param {mat4} a   the source 4x4 matrix\n * @returns {mat3} out\n */\nfunction fromMat4(t,e){t[0]=e[0];t[1]=e[1];t[2]=e[2];t[3]=e[4];t[4]=e[5];t[5]=e[6];t[6]=e[8];t[7]=e[9];t[8]=e[10];return t}\n/**\n * Calculates a 3x3 matrix from the given quaternion\n *\n * @param {mat3} out mat3 receiving operation result\n * @param {quat} q Quaternion to create matrix from\n *\n * @returns {mat3} out\n */function fromQuat(t,e){let s=e[0],i=e[1],r=e[2],n=e[3];let a=s+s;let o=i+i;let h=r+r;let l=s*a;let c=i*a;let u=i*o;let d=r*a;let m=r*o;let g=r*h;let p=n*a;let f=n*o;let x=n*h;t[0]=1-u-g;t[3]=c-x;t[6]=d+f;t[1]=c+x;t[4]=1-l-g;t[7]=m-p;t[2]=d-f;t[5]=m+p;t[8]=1-l-u;return t}\n/**\n * Copy the values from one mat3 to another\n *\n * @param {mat3} out the receiving matrix\n * @param {mat3} a the source matrix\n * @returns {mat3} out\n */function copy$1(t,e){t[0]=e[0];t[1]=e[1];t[2]=e[2];t[3]=e[3];t[4]=e[4];t[5]=e[5];t[6]=e[6];t[7]=e[7];t[8]=e[8];return t}\n/**\n * Set the components of a mat3 to the given values\n *\n * @param {mat3} out the receiving matrix\n * @returns {mat3} out\n */function set$1(t,e,s,i,r,n,a,o,h,l){t[0]=e;t[1]=s;t[2]=i;t[3]=r;t[4]=n;t[5]=a;t[6]=o;t[7]=h;t[8]=l;return t}\n/**\n * Set a mat3 to the identity matrix\n *\n * @param {mat3} out the receiving matrix\n * @returns {mat3} out\n */function identity$1(t){t[0]=1;t[1]=0;t[2]=0;t[3]=0;t[4]=1;t[5]=0;t[6]=0;t[7]=0;t[8]=1;return t}\n/**\n * Transpose the values of a mat3\n *\n * @param {mat3} out the receiving matrix\n * @param {mat3} a the source matrix\n * @returns {mat3} out\n */\n/**\n * Inverts a mat3\n *\n * @param {mat3} out the receiving matrix\n * @param {mat3} a the source matrix\n * @returns {mat3} out\n */\nfunction invert(t,e){let s=e[0],i=e[1],r=e[2];let n=e[3],a=e[4],o=e[5];let h=e[6],l=e[7],c=e[8];let u=c*a-o*l;let d=-c*n+o*h;let m=l*n-a*h;let g=s*u+i*d+r*m;if(!g)return null;g=1/g;t[0]=u*g;t[1]=(-c*i+r*l)*g;t[2]=(o*i-r*a)*g;t[3]=d*g;t[4]=(c*s-r*h)*g;t[5]=(-o*s+r*n)*g;t[6]=m*g;t[7]=(-l*s+i*h)*g;t[8]=(a*s-i*n)*g;return t}\n/**\n * Calculates the determinant of a mat3\n *\n * @param {mat3} a the source matrix\n * @returns {Number} determinant of a\n */\n/**\n * Multiplies two mat3's\n *\n * @param {mat3} out the receiving matrix\n * @param {mat3} a the first operand\n * @param {mat3} b the second operand\n * @returns {mat3} out\n */\nfunction multiply$1(t,e,s){let i=e[0],r=e[1],n=e[2];let a=e[3],o=e[4],h=e[5];let l=e[6],c=e[7],u=e[8];let d=s[0],m=s[1],g=s[2];let p=s[3],f=s[4],x=s[5];let w=s[6],y=s[7],b=s[8];t[0]=d*i+m*a+g*l;t[1]=d*r+m*o+g*c;t[2]=d*n+m*h+g*u;t[3]=p*i+f*a+x*l;t[4]=p*r+f*o+x*c;t[5]=p*n+f*h+x*u;t[6]=w*i+y*a+b*l;t[7]=w*r+y*o+b*c;t[8]=w*n+y*h+b*u;return t}\n/**\n * Translate a mat3 by the given vector\n *\n * @param {mat3} out the receiving matrix\n * @param {mat3} a the matrix to translate\n * @param {vec2} v vector to translate by\n * @returns {mat3} out\n */function translate(t,e,s){let i=e[0],r=e[1],n=e[2],a=e[3],o=e[4],h=e[5],l=e[6],c=e[7],u=e[8],d=s[0],m=s[1];t[0]=i;t[1]=r;t[2]=n;t[3]=a;t[4]=o;t[5]=h;t[6]=d*i+m*a+l;t[7]=d*r+m*o+c;t[8]=d*n+m*h+u;return t}\n/**\n * Rotates a mat3 by the given angle\n *\n * @param {mat3} out the receiving matrix\n * @param {mat3} a the matrix to rotate\n * @param {Number} rad the angle to rotate the matrix by\n * @returns {mat3} out\n */function rotate(t,e,s){let i=e[0],r=e[1],n=e[2],a=e[3],o=e[4],h=e[5],l=e[6],c=e[7],u=e[8],d=Math.sin(s),m=Math.cos(s);t[0]=m*i+d*a;t[1]=m*r+d*o;t[2]=m*n+d*h;t[3]=m*a-d*i;t[4]=m*o-d*r;t[5]=m*h-d*n;t[6]=l;t[7]=c;t[8]=u;return t}\n/**\n * Scales the mat3 by the dimensions in the given vec2\n *\n * @param {mat3} out the receiving matrix\n * @param {mat3} a the matrix to rotate\n * @param {vec2} v the vec2 to scale the matrix by\n * @returns {mat3} out\n **/function scale$1(t,e,s){let i=s[0],r=s[1];t[0]=i*e[0];t[1]=i*e[1];t[2]=i*e[2];t[3]=r*e[3];t[4]=r*e[4];t[5]=r*e[5];t[6]=e[6];t[7]=e[7];t[8]=e[8];return t}\n/**\n * Calculates a 3x3 normal matrix (transpose inverse) from the 4x4 matrix\n *\n * @param {mat3} out mat3 receiving operation result\n * @param {mat4} a Mat4 to derive the normal matrix from\n *\n * @returns {mat3} out\n */function normalFromMat4(t,e){let s=e[0],i=e[1],r=e[2],n=e[3];let a=e[4],o=e[5],h=e[6],l=e[7];let c=e[8],u=e[9],d=e[10],m=e[11];let g=e[12],p=e[13],f=e[14],x=e[15];let w=s*o-i*a;let y=s*h-r*a;let b=s*l-n*a;let M=i*h-r*o;let v=i*l-n*o;let A=r*l-n*h;let E=c*p-u*g;let T=c*f-d*g;let _=c*x-m*g;let F=u*f-d*p;let S=u*x-m*p;let R=d*x-m*f;let P=w*R-y*S+b*F+M*_-v*T+A*E;if(!P)return null;P=1/P;t[0]=(o*R-h*S+l*F)*P;t[1]=(h*_-a*R-l*T)*P;t[2]=(a*S-o*_+l*E)*P;t[3]=(r*S-i*R-n*F)*P;t[4]=(s*R-r*_+n*T)*P;t[5]=(i*_-s*S-n*E)*P;t[6]=(p*A-f*v+x*M)*P;t[7]=(f*b-g*A-x*y)*P;t[8]=(g*v-p*b+x*w)*P;return t}\n/**\n * Generates a 2D projection matrix with the given bounds\n *\n * @param {mat3} out mat3 frustum matrix will be written into\n * @param {number} width Width of your gl context\n * @param {number} height Height of gl context\n * @returns {mat3} out\n */class Mat3 extends Array{constructor(t=1,e=0,s=0,i=0,r=1,n=0,a=0,o=0,h=1){super(t,e,s,i,r,n,a,o,h);return this}set(t,e,s,i,r,n,a,o,h){if(t.length)return this.copy(t);set$1(this,t,e,s,i,r,n,a,o,h);return this}translate(t,e=this){translate(this,e,t);return this}rotate(t,e=this){rotate(this,e,t);return this}scale(t,e=this){scale$1(this,e,t);return this}multiply(t,e){e?multiply$1(this,t,e):multiply$1(this,this,t);return this}identity(){identity$1(this);return this}copy(t){copy$1(this,t);return this}fromMatrix4(t){fromMat4(this,t);return this}fromQuaternion(t){fromQuat(this,t);return this}fromBasis(t,e,s){this.set(t[0],t[1],t[2],e[0],e[1],e[2],s[0],s[1],s[2]);return this}inverse(t=this){invert(this,t);return this}getNormalMatrix(t){normalFromMat4(this,t);return this}}let b=0;class Mesh extends Transform{constructor(t,{geometry:e,program:s,mode:i=t.TRIANGLES,frustumCulled:r=true,renderOrder:n=0}={}){super();t.canvas||console.error(\"gl not passed as first argument to Mesh\");this.gl=t;this.id=b++;this.geometry=e;this.program=s;this.mode=i;this.frustumCulled=r;this.renderOrder=n;this.modelViewMatrix=new Mat4;this.normalMatrix=new Mat3;this.beforeRenderCallbacks=[];this.afterRenderCallbacks=[]}onBeforeRender(t){this.beforeRenderCallbacks.push(t);return this}onAfterRender(t){this.afterRenderCallbacks.push(t);return this}draw({camera:t}={}){if(t){this.program.uniforms.modelMatrix||Object.assign(this.program.uniforms,{modelMatrix:{value:null},viewMatrix:{value:null},modelViewMatrix:{value:null},normalMatrix:{value:null},projectionMatrix:{value:null},cameraPosition:{value:null}});this.program.uniforms.projectionMatrix.value=t.projectionMatrix;this.program.uniforms.cameraPosition.value=t.worldPosition;this.program.uniforms.viewMatrix.value=t.viewMatrix;this.modelViewMatrix.multiply(t.viewMatrix,this.worldMatrix);this.normalMatrix.getNormalMatrix(this.modelViewMatrix);this.program.uniforms.modelMatrix.value=this.worldMatrix;this.program.uniforms.modelViewMatrix.value=this.modelViewMatrix;this.program.uniforms.normalMatrix.value=this.normalMatrix}this.beforeRenderCallbacks.forEach((e=>e&&e({mesh:this,camera:t})));let e=this.program.cullFace&&this.worldMatrix.determinant()<0;this.program.use({flipFaces:e});this.geometry.draw({mode:this.mode,program:this.program});this.afterRenderCallbacks.forEach((e=>e&&e({mesh:this,camera:t})))}}const M=new Uint8Array(4);function isPowerOf2(t){return 0===(t&t-1)}let v=1;class Texture{constructor(t,{image:e,target:s=t.TEXTURE_2D,type:i=t.UNSIGNED_BYTE,format:r=t.RGBA,internalFormat:n=r,wrapS:a=t.CLAMP_TO_EDGE,wrapT:o=t.CLAMP_TO_EDGE,generateMipmaps:h=true,minFilter:l=(h?t.NEAREST_MIPMAP_LINEAR:t.LINEAR),magFilter:c=t.LINEAR,premultiplyAlpha:u=false,unpackAlignment:d=4,flipY:m=s==t.TEXTURE_2D,anisotropy:g=0,level:p=0,width:f,height:x=f}={}){this.gl=t;this.id=v++;this.image=e;this.target=s;this.type=i;this.format=r;this.internalFormat=n;this.minFilter=l;this.magFilter=c;this.wrapS=a;this.wrapT=o;this.generateMipmaps=h;this.premultiplyAlpha=u;this.unpackAlignment=d;this.flipY=m;this.anisotropy=Math.min(g,this.gl.renderer.parameters.maxAnisotropy);this.level=p;this.width=f;this.height=x;this.texture=this.gl.createTexture();this.store={image:null};this.glState=this.gl.renderer.state;this.state={};this.state.minFilter=this.gl.NEAREST_MIPMAP_LINEAR;this.state.magFilter=this.gl.LINEAR;this.state.wrapS=this.gl.REPEAT;this.state.wrapT=this.gl.REPEAT;this.state.anisotropy=0}bind(){if(this.glState.textureUnits[this.glState.activeTextureUnit]!==this.id){this.gl.bindTexture(this.target,this.texture);this.glState.textureUnits[this.glState.activeTextureUnit]=this.id}}update(t=0){const e=!(this.image===this.store.image&&!this.needsUpdate);if(e||this.glState.textureUnits[t]!==this.id){this.gl.renderer.activeTexture(t);this.bind()}if(e){this.needsUpdate=false;if(this.flipY!==this.glState.flipY){this.gl.pixelStorei(this.gl.UNPACK_FLIP_Y_WEBGL,this.flipY);this.glState.flipY=this.flipY}if(this.premultiplyAlpha!==this.glState.premultiplyAlpha){this.gl.pixelStorei(this.gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL,this.premultiplyAlpha);this.glState.premultiplyAlpha=this.premultiplyAlpha}if(this.unpackAlignment!==this.glState.unpackAlignment){this.gl.pixelStorei(this.gl.UNPACK_ALIGNMENT,this.unpackAlignment);this.glState.unpackAlignment=this.unpackAlignment}if(this.minFilter!==this.state.minFilter){this.gl.texParameteri(this.target,this.gl.TEXTURE_MIN_FILTER,this.minFilter);this.state.minFilter=this.minFilter}if(this.magFilter!==this.state.magFilter){this.gl.texParameteri(this.target,this.gl.TEXTURE_MAG_FILTER,this.magFilter);this.state.magFilter=this.magFilter}if(this.wrapS!==this.state.wrapS){this.gl.texParameteri(this.target,this.gl.TEXTURE_WRAP_S,this.wrapS);this.state.wrapS=this.wrapS}if(this.wrapT!==this.state.wrapT){this.gl.texParameteri(this.target,this.gl.TEXTURE_WRAP_T,this.wrapT);this.state.wrapT=this.wrapT}if(this.anisotropy&&this.anisotropy!==this.state.anisotropy){this.gl.texParameterf(this.target,this.gl.renderer.getExtension(\"EXT_texture_filter_anisotropic\").TEXTURE_MAX_ANISOTROPY_EXT,this.anisotropy);this.state.anisotropy=this.anisotropy}if(this.image){if(this.image.width){this.width=this.image.width;this.height=this.image.height}if(this.target===this.gl.TEXTURE_CUBE_MAP)for(let t=0;t<6;t++)this.gl.texImage2D(this.gl.TEXTURE_CUBE_MAP_POSITIVE_X+t,this.level,this.internalFormat,this.format,this.type,this.image[t]);else if(ArrayBuffer.isView(this.image))this.gl.texImage2D(this.target,this.level,this.internalFormat,this.width,this.height,0,this.format,this.type,this.image);else if(this.image.isCompressedTexture)for(let t=0;t<this.image.length;t++)this.gl.compressedTexImage2D(this.target,t,this.internalFormat,this.image[t].width,this.image[t].height,0,this.image[t].data);else this.gl.texImage2D(this.target,this.level,this.internalFormat,this.format,this.type,this.image);if(this.generateMipmaps)if(this.gl.renderer.isWebgl2||isPowerOf2(this.image.width)&&isPowerOf2(this.image.height))this.gl.generateMipmap(this.target);else{this.generateMipmaps=false;this.wrapS=this.wrapT=this.gl.CLAMP_TO_EDGE;this.minFilter=this.gl.LINEAR}this.onUpdate&&this.onUpdate()}else if(this.target===this.gl.TEXTURE_CUBE_MAP)for(let t=0;t<6;t++)this.gl.texImage2D(this.gl.TEXTURE_CUBE_MAP_POSITIVE_X+t,0,this.gl.RGBA,1,1,0,this.gl.RGBA,this.gl.UNSIGNED_BYTE,M);else this.width?this.gl.texImage2D(this.target,this.level,this.internalFormat,this.width,this.height,0,this.format,this.type,null):this.gl.texImage2D(this.target,0,this.gl.RGBA,1,1,0,this.gl.RGBA,this.gl.UNSIGNED_BYTE,M);this.store.image=this.image}}}class RenderTarget{constructor(t,{width:e=t.canvas.width,height:s=t.canvas.height,target:i=t.FRAMEBUFFER,color:r=1,depth:n=true,stencil:a=false,depthTexture:o=false,wrapS:h=t.CLAMP_TO_EDGE,wrapT:l=t.CLAMP_TO_EDGE,minFilter:c=t.LINEAR,magFilter:u=c,type:d=t.UNSIGNED_BYTE,format:m=t.RGBA,internalFormat:g=m,unpackAlignment:p,premultiplyAlpha:f}={}){this.gl=t;this.width=e;this.height=s;this.depth=n;this.buffer=this.gl.createFramebuffer();this.target=i;this.gl.renderer.bindFramebuffer(this);this.textures=[];const x=[];for(let i=0;i<r;i++){this.textures.push(new Texture(t,{width:e,height:s,wrapS:h,wrapT:l,minFilter:c,magFilter:u,type:d,format:m,internalFormat:g,unpackAlignment:p,premultiplyAlpha:f,flipY:false,generateMipmaps:false}));this.textures[i].update();this.gl.framebufferTexture2D(this.target,this.gl.COLOR_ATTACHMENT0+i,this.gl.TEXTURE_2D,this.textures[i].texture,0);x.push(this.gl.COLOR_ATTACHMENT0+i)}x.length>1&&this.gl.renderer.drawBuffers(x);this.texture=this.textures[0];if(o&&(this.gl.renderer.isWebgl2||this.gl.renderer.getExtension(\"WEBGL_depth_texture\"))){this.depthTexture=new Texture(t,{width:e,height:s,minFilter:this.gl.NEAREST,magFilter:this.gl.NEAREST,format:this.gl.DEPTH_COMPONENT,internalFormat:t.renderer.isWebgl2?this.gl.DEPTH_COMPONENT16:this.gl.DEPTH_COMPONENT,type:this.gl.UNSIGNED_INT});this.depthTexture.update();this.gl.framebufferTexture2D(this.target,this.gl.DEPTH_ATTACHMENT,this.gl.TEXTURE_2D,this.depthTexture.texture,0)}else{if(n&&!a){this.depthBuffer=this.gl.createRenderbuffer();this.gl.bindRenderbuffer(this.gl.RENDERBUFFER,this.depthBuffer);this.gl.renderbufferStorage(this.gl.RENDERBUFFER,this.gl.DEPTH_COMPONENT16,e,s);this.gl.framebufferRenderbuffer(this.target,this.gl.DEPTH_ATTACHMENT,this.gl.RENDERBUFFER,this.depthBuffer)}if(a&&!n){this.stencilBuffer=this.gl.createRenderbuffer();this.gl.bindRenderbuffer(this.gl.RENDERBUFFER,this.stencilBuffer);this.gl.renderbufferStorage(this.gl.RENDERBUFFER,this.gl.STENCIL_INDEX8,e,s);this.gl.framebufferRenderbuffer(this.target,this.gl.STENCIL_ATTACHMENT,this.gl.RENDERBUFFER,this.stencilBuffer)}if(n&&a){this.depthStencilBuffer=this.gl.createRenderbuffer();this.gl.bindRenderbuffer(this.gl.RENDERBUFFER,this.depthStencilBuffer);this.gl.renderbufferStorage(this.gl.RENDERBUFFER,this.gl.DEPTH_STENCIL,e,s);this.gl.framebufferRenderbuffer(this.target,this.gl.DEPTH_STENCIL_ATTACHMENT,this.gl.RENDERBUFFER,this.depthStencilBuffer)}}this.gl.renderer.bindFramebuffer({target:this.target})}setSize(t,e){if(this.width!==t||this.height!==e){this.width=t;this.height=e;this.gl.renderer.bindFramebuffer(this);for(let s=0;s<this.textures.length;s++){this.textures[s].width=t;this.textures[s].height=e;this.textures[s].needsUpdate=true;this.textures[s].update();this.gl.framebufferTexture2D(this.target,this.gl.COLOR_ATTACHMENT0+s,this.gl.TEXTURE_2D,this.textures[s].texture,0)}if(this.depthTexture){this.depthTexture.width=t;this.depthTexture.height=e;this.depthTexture.needsUpdate=true;this.depthTexture.update();this.gl.framebufferTexture2D(this.target,this.gl.DEPTH_ATTACHMENT,this.gl.TEXTURE_2D,this.depthTexture.texture,0)}else{if(this.depthBuffer){this.gl.bindRenderbuffer(this.gl.RENDERBUFFER,this.depthBuffer);this.gl.renderbufferStorage(this.gl.RENDERBUFFER,this.gl.DEPTH_COMPONENT16,t,e)}if(this.stencilBuffer){this.gl.bindRenderbuffer(this.gl.RENDERBUFFER,this.stencilBuffer);this.gl.renderbufferStorage(this.gl.RENDERBUFFER,this.gl.STENCIL_INDEX8,t,e)}if(this.depthStencilBuffer){this.gl.bindRenderbuffer(this.gl.RENDERBUFFER,this.depthStencilBuffer);this.gl.renderbufferStorage(this.gl.RENDERBUFFER,this.gl.DEPTH_STENCIL,t,e)}}this.gl.renderer.bindFramebuffer({target:this.target})}}}const A={black:\"#000000\",white:\"#ffffff\",red:\"#ff0000\",green:\"#00ff00\",blue:\"#0000ff\",fuchsia:\"#ff00ff\",cyan:\"#00ffff\",yellow:\"#ffff00\",orange:\"#ff8000\"};function hexToRGB(t){4===t.length&&(t=t[0]+t[1]+t[1]+t[2]+t[2]+t[3]+t[3]);const e=/^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(t);e||console.warn(`Unable to convert hex string ${t} to rgb values`);return[parseInt(e[1],16)/255,parseInt(e[2],16)/255,parseInt(e[3],16)/255]}function numberToRGB(t){t=parseInt(t);return[(t>>16&255)/255,(t>>8&255)/255,(255&t)/255]}function parseColor(t){if(void 0===t)return[0,0,0];if(3===arguments.length)return arguments;if(!isNaN(t))return numberToRGB(t);if(\"#\"===t[0])return hexToRGB(t);if(A[t.toLowerCase()])return hexToRGB(A[t.toLowerCase()]);console.warn(\"Color format not recognised\");return[0,0,0]}class Color extends Array{constructor(t){return Array.isArray(t)?super(...t):super(...parseColor(...arguments))}get r(){return this[0]}get g(){return this[1]}get b(){return this[2]}set r(t){this[0]=t}set g(t){this[1]=t}set b(t){this[2]=t}set(t){return Array.isArray(t)?this.copy(t):this.copy(parseColor(...arguments))}copy(t){this[0]=t[0];this[1]=t[1];this[2]=t[2];return this}}\n/**\n * Copy the values from one vec2 to another\n *\n * @param {vec2} out the receiving vector\n * @param {vec2} a the source vector\n * @returns {vec2} out\n */\nfunction copy(t,e){t[0]=e[0];t[1]=e[1];return t}\n/**\n * Set the components of a vec2 to the given values\n *\n * @param {vec2} out the receiving vector\n * @param {Number} x X component\n * @param {Number} y Y component\n * @returns {vec2} out\n */function set(t,e,s){t[0]=e;t[1]=s;return t}\n/**\n * Adds two vec2's\n *\n * @param {vec2} out the receiving vector\n * @param {vec2} a the first operand\n * @param {vec2} b the second operand\n * @returns {vec2} out\n */function add(t,e,s){t[0]=e[0]+s[0];t[1]=e[1]+s[1];return t}\n/**\n * Subtracts vector b from vector a\n *\n * @param {vec2} out the receiving vector\n * @param {vec2} a the first operand\n * @param {vec2} b the second operand\n * @returns {vec2} out\n */function subtract(t,e,s){t[0]=e[0]-s[0];t[1]=e[1]-s[1];return t}\n/**\n * Multiplies two vec2's\n *\n * @param {vec2} out the receiving vector\n * @param {vec2} a the first operand\n * @param {vec2} b the second operand\n * @returns {vec2} out\n */function multiply(t,e,s){t[0]=e[0]*s[0];t[1]=e[1]*s[1];return t}\n/**\n * Divides two vec2's\n *\n * @param {vec2} out the receiving vector\n * @param {vec2} a the first operand\n * @param {vec2} b the second operand\n * @returns {vec2} out\n */function divide(t,e,s){t[0]=e[0]/s[0];t[1]=e[1]/s[1];return t}\n/**\n * Scales a vec2 by a scalar number\n *\n * @param {vec2} out the receiving vector\n * @param {vec2} a the vector to scale\n * @param {Number} b amount to scale the vector by\n * @returns {vec2} out\n */function scale(t,e,s){t[0]=e[0]*s;t[1]=e[1]*s;return t}\n/**\n * Calculates the euclidian distance between two vec2's\n *\n * @param {vec2} a the first operand\n * @param {vec2} b the second operand\n * @returns {Number} distance between a and b\n */function distance(t,e){var s=e[0]-t[0],i=e[1]-t[1];return Math.sqrt(s*s+i*i)}\n/**\n * Calculates the squared euclidian distance between two vec2's\n *\n * @param {vec2} a the first operand\n * @param {vec2} b the second operand\n * @returns {Number} squared distance between a and b\n */function squaredDistance(t,e){var s=e[0]-t[0],i=e[1]-t[1];return s*s+i*i}\n/**\n * Calculates the length of a vec2\n *\n * @param {vec2} a vector to calculate length of\n * @returns {Number} length of a\n */function length(t){var e=t[0],s=t[1];return Math.sqrt(e*e+s*s)}\n/**\n * Calculates the squared length of a vec2\n *\n * @param {vec2} a vector to calculate squared length of\n * @returns {Number} squared length of a\n */function squaredLength(t){var e=t[0],s=t[1];return e*e+s*s}\n/**\n * Negates the components of a vec2\n *\n * @param {vec2} out the receiving vector\n * @param {vec2} a vector to negate\n * @returns {vec2} out\n */function negate(t,e){t[0]=-e[0];t[1]=-e[1];return t}\n/**\n * Returns the inverse of the components of a vec2\n *\n * @param {vec2} out the receiving vector\n * @param {vec2} a vector to invert\n * @returns {vec2} out\n */function inverse(t,e){t[0]=1/e[0];t[1]=1/e[1];return t}\n/**\n * Normalize a vec2\n *\n * @param {vec2} out the receiving vector\n * @param {vec2} a vector to normalize\n * @returns {vec2} out\n */function normalize(t,e){var s=e[0],i=e[1];var r=s*s+i*i;r>0&&(r=1/Math.sqrt(r));t[0]=e[0]*r;t[1]=e[1]*r;return t}\n/**\n * Calculates the dot product of two vec2's\n *\n * @param {vec2} a the first operand\n * @param {vec2} b the second operand\n * @returns {Number} dot product of a and b\n */function dot(t,e){return t[0]*e[0]+t[1]*e[1]}\n/**\n * Computes the cross product of two vec2's\n * Note that the cross product returns a scalar\n *\n * @param {vec2} a the first operand\n * @param {vec2} b the second operand\n * @returns {Number} cross product of a and b\n */function cross(t,e){return t[0]*e[1]-t[1]*e[0]}\n/**\n * Performs a linear interpolation between two vec2's\n *\n * @param {vec2} out the receiving vector\n * @param {vec2} a the first operand\n * @param {vec2} b the second operand\n * @param {Number} t interpolation amount between the two inputs\n * @returns {vec2} out\n */function lerp$1(t,e,s,i){var r=e[0],n=e[1];t[0]=r+i*(s[0]-r);t[1]=n+i*(s[1]-n);return t}\n/**\n * Transforms the vec2 with a mat2\n *\n * @param {vec2} out the receiving vector\n * @param {vec2} a the vector to transform\n * @param {mat2} m matrix to transform with\n * @returns {vec2} out\n */\n/**\n * Transforms the vec2 with a mat3\n * 3rd vector component is implicitly '1'\n *\n * @param {vec2} out the receiving vector\n * @param {vec2} a the vector to transform\n * @param {mat3} m matrix to transform with\n * @returns {vec2} out\n */\nfunction transformMat3(t,e,s){var i=e[0],r=e[1];t[0]=s[0]*i+s[3]*r+s[6];t[1]=s[1]*i+s[4]*r+s[7];return t}\n/**\n * Transforms the vec2 with a mat4\n * 3rd vector component is implicitly '0'\n * 4th vector component is implicitly '1'\n *\n * @param {vec2} out the receiving vector\n * @param {vec2} a the vector to transform\n * @param {mat4} m matrix to transform with\n * @returns {vec2} out\n */function transformMat4(t,e,s){let i=e[0];let r=e[1];t[0]=s[0]*i+s[4]*r+s[12];t[1]=s[1]*i+s[5]*r+s[13];return t}\n/**\n * Returns whether or not the vectors exactly have the same elements in the same position (when compared with ===)\n *\n * @param {vec2} a The first vector.\n * @param {vec2} b The second vector.\n * @returns {Boolean} True if the vectors are equal, false otherwise.\n */function exactEquals(t,e){return t[0]===e[0]&&t[1]===e[1]}class Vec2 extends Array{constructor(t=0,e=t){super(t,e);return this}get x(){return this[0]}get y(){return this[1]}set x(t){this[0]=t}set y(t){this[1]=t}set(t,e=t){if(t.length)return this.copy(t);set(this,t,e);return this}copy(t){copy(this,t);return this}add(t,e){e?add(this,t,e):add(this,this,t);return this}sub(t,e){e?subtract(this,t,e):subtract(this,this,t);return this}multiply(t){t.length?multiply(this,this,t):scale(this,this,t);return this}divide(t){t.length?divide(this,this,t):scale(this,this,1/t);return this}inverse(t=this){inverse(this,t);return this}len(){return length(this)}distance(t){return t?distance(this,t):length(this)}squaredLen(){return this.squaredDistance()}squaredDistance(t){return t?squaredDistance(this,t):squaredLength(this)}negate(t=this){negate(this,t);return this}cross(t,e){return e?cross(t,e):cross(this,t)}scale(t){scale(this,this,t);return this}normalize(){normalize(this,this);return this}dot(t){return dot(this,t)}equals(t){return exactEquals(this,t)}applyMatrix3(t){transformMat3(this,this,t);return this}applyMatrix4(t){transformMat4(this,this,t);return this}lerp(t,e){lerp$1(this,this,t,e);return this}clone(){return new Vec2(this[0],this[1])}fromArray(t,e=0){this[0]=t[e];this[1]=t[e+1];return this}toArray(t=[],e=0){t[e]=this[0];t[e+1]=this[1];return t}}class Vec4 extends Array{constructor(t=0,e=t,s=t,i=t){super(t,e,s,i);return this}get x(){return this[0]}get y(){return this[1]}get z(){return this[2]}get w(){return this[3]}set x(t){this[0]=t}set y(t){this[1]=t}set z(t){this[2]=t}set w(t){this[3]=t}set(t,e=t,s=t,i=t){if(t.length)return this.copy(t);set$4(this,t,e,s,i);return this}copy(t){copy$4(this,t);return this}normalize(){normalize$2(this,this);return this}multiply(t){scale$4(this,this,t);return this}dot(t){return dot$2(this,t)}fromArray(t,e=0){this[0]=t[e];this[1]=t[e+1];this[2]=t[e+2];this[3]=t[e+3];return this}toArray(t=[],e=0){t[e]=this[0];t[e+1]=this[1];t[e+2]=this[2];t[e+3]=this[3];return t}}class Plane extends Geometry{constructor(t,{width:e=1,height:s=1,widthSegments:i=1,heightSegments:r=1,attributes:n={}}={}){const a=i;const o=r;const h=(a+1)*(o+1);const l=a*o*6;const c=new Float32Array(3*h);const u=new Float32Array(3*h);const d=new Float32Array(2*h);const m=l>65536?new Uint32Array(l):new Uint16Array(l);Plane.buildPlane(c,u,d,m,e,s,0,a,o);Object.assign(n,{position:{size:3,data:c},normal:{size:3,data:u},uv:{size:2,data:d},index:{data:m}});super(t,n)}static buildPlane(t,e,s,i,r,n,a,o,h,l=0,c=1,u=2,d=1,m=-1,g=0,p=0){const f=g;const x=r/o;const w=n/h;for(let y=0;y<=h;y++){let b=y*w-n/2;for(let n=0;n<=o;n++,g++){let w=n*x-r/2;t[3*g+l]=w*d;t[3*g+c]=b*m;t[3*g+u]=a/2;e[3*g+l]=0;e[3*g+c]=0;e[3*g+u]=a>=0?1:-1;s[2*g]=n/o;s[2*g+1]=1-y/h;if(y===h||n===o)continue;let M=f+n+y*(o+1);let v=f+n+(y+1)*(o+1);let A=f+n+(y+1)*(o+1)+1;let E=f+n+y*(o+1)+1;i[6*p]=M;i[6*p+1]=v;i[6*p+2]=E;i[6*p+3]=v;i[6*p+4]=A;i[6*p+5]=E;p++}}}}class Box extends Geometry{constructor(t,{width:e=1,height:s=1,depth:i=1,widthSegments:r=1,heightSegments:n=1,depthSegments:a=1,attributes:o={}}={}){const h=r;const l=n;const c=a;const u=(h+1)*(l+1)*2+(h+1)*(c+1)*2+(l+1)*(c+1)*2;const d=6*(h*l*2+h*c*2+l*c*2);const m=new Float32Array(3*u);const g=new Float32Array(3*u);const p=new Float32Array(2*u);const f=u>65536?new Uint32Array(d):new Uint16Array(d);let x=0;let w=0;Plane.buildPlane(m,g,p,f,i,s,e,c,l,2,1,0,-1,-1,x,w);x+=(c+1)*(l+1);w+=c*l;Plane.buildPlane(m,g,p,f,i,s,-e,c,l,2,1,0,1,-1,x,w);x+=(c+1)*(l+1);w+=c*l;Plane.buildPlane(m,g,p,f,e,i,s,c,h,0,2,1,1,1,x,w);x+=(h+1)*(c+1);w+=h*c;Plane.buildPlane(m,g,p,f,e,i,-s,c,h,0,2,1,1,-1,x,w);x+=(h+1)*(c+1);w+=h*c;Plane.buildPlane(m,g,p,f,e,s,-i,h,l,0,1,2,-1,-1,x,w);x+=(h+1)*(l+1);w+=h*l;Plane.buildPlane(m,g,p,f,e,s,i,h,l,0,1,2,1,-1,x,w);Object.assign(o,{position:{size:3,data:m},normal:{size:3,data:g},uv:{size:2,data:p},index:{data:f}});super(t,o)}}class Sphere extends Geometry{constructor(t,{radius:e=.5,widthSegments:s=16,heightSegments:i=Math.ceil(.5*s),phiStart:r=0,phiLength:n=2*Math.PI,thetaStart:a=0,thetaLength:o=Math.PI,attributes:h={}}={}){const l=s;const c=i;const u=r;const d=n;const m=a;const g=o;const p=(l+1)*(c+1);const f=l*c*6;const x=new Float32Array(3*p);const w=new Float32Array(3*p);const y=new Float32Array(2*p);const b=p>65536?new Uint32Array(f):new Uint16Array(f);let M=0;let v=0;let A=0;let E=m+g;const T=[];let _=new Vec3;for(let t=0;t<=c;t++){let s=[];let i=t/c;for(let t=0;t<=l;t++,M++){let r=t/l;let n=-e*Math.cos(u+r*d)*Math.sin(m+i*g);let a=e*Math.cos(m+i*g);let o=e*Math.sin(u+r*d)*Math.sin(m+i*g);x[3*M]=n;x[3*M+1]=a;x[3*M+2]=o;_.set(n,a,o).normalize();w[3*M]=_.x;w[3*M+1]=_.y;w[3*M+2]=_.z;y[2*M]=r;y[2*M+1]=1-i;s.push(v++)}T.push(s)}for(let t=0;t<c;t++)for(let e=0;e<l;e++){let s=T[t][e+1];let i=T[t][e];let r=T[t+1][e];let n=T[t+1][e+1];if(0!==t||m>0){b[3*A]=s;b[3*A+1]=i;b[3*A+2]=n;A++}if(t!==c-1||E<Math.PI){b[3*A]=i;b[3*A+1]=r;b[3*A+2]=n;A++}}Object.assign(h,{position:{size:3,data:x},normal:{size:3,data:w},uv:{size:2,data:y},index:{data:b}});super(t,h)}}class Cylinder extends Geometry{constructor(t,{radiusTop:e=.5,radiusBottom:s=.5,height:i=1,radialSegments:r=8,heightSegments:n=1,openEnded:a=false,thetaStart:o=0,thetaLength:h=2*Math.PI,attributes:l={}}={}){const c=r;const u=n;const d=o;const m=h;const g=a?0:s&&e?2:1;const p=(c+1)*(u+1+g)+g;const f=c*u*6+g*c*3;const x=new Float32Array(3*p);const w=new Float32Array(3*p);const y=new Float32Array(2*p);const b=p>65536?new Uint32Array(f):new Uint16Array(f);let M=0;let v=0;const A=[];addHeight();if(!a){e&&addCap(true);s&&addCap(false)}function addHeight(){let t,r;const n=new Vec3;const a=(s-e)/i;for(r=0;r<=u;r++){const o=[];const h=r/u;const l=h*(s-e)+e;for(t=0;t<=c;t++){const e=t/c;const s=e*m+d;const r=Math.sin(s);const u=Math.cos(s);x.set([l*r,(.5-h)*i,l*u],3*M);n.set(r,a,u).normalize();w.set([n.x,n.y,n.z],3*M);y.set([e,1-h],2*M);o.push(M++)}A.push(o)}for(t=0;t<c;t++)for(r=0;r<u;r++){const e=A[r][t];const s=A[r+1][t];const i=A[r+1][t+1];const n=A[r][t+1];b.set([e,s,n,s,i,n],3*v);v+=2}}function addCap(t){let r;const n=true===t?e:s;const a=true===t?1:-1;const o=M;x.set([0,.5*i*a,0],3*M);w.set([0,a,0],3*M);y.set([.5,.5],2*M);M++;for(r=0;r<=c;r++){const t=r/c;const e=t*m+d;const s=Math.cos(e);const o=Math.sin(e);x.set([n*o,.5*i*a,n*s],3*M);w.set([0,a,0],3*M);y.set([.5*s+.5,.5*o*a+.5],2*M);M++}for(r=0;r<c;r++){const e=o+r+1;t?b.set([e,e+1,o],3*v):b.set([e+1,e,o],3*v);v++}}Object.assign(l,{position:{size:3,data:x},normal:{size:3,data:w},uv:{size:2,data:y},index:{data:b}});super(t,l)}}class Triangle extends Geometry{constructor(t,{attributes:e={}}={}){Object.assign(e,{position:{size:2,data:new Float32Array([-1,-1,3,-1,-1,3])},uv:{size:2,data:new Float32Array([0,0,2,0,0,2])}});super(t,e)}}class Torus extends Geometry{constructor(t,{radius:e=.5,tube:s=.2,radialSegments:i=8,tubularSegments:r=6,arc:n=2*Math.PI,attributes:a={}}={}){const o=(i+1)*(r+1);const h=i*r*6;const l=new Float32Array(3*o);const c=new Float32Array(3*o);const u=new Float32Array(2*o);const d=o>65536?new Uint32Array(h):new Uint16Array(h);const m=new Vec3;const g=new Vec3;const p=new Vec3;let f=0;for(let t=0;t<=i;t++)for(let a=0;a<=r;a++,f++){const o=a/r*n;const h=t/i*Math.PI*2;g.x=(e+s*Math.cos(h))*Math.cos(o);g.y=(e+s*Math.cos(h))*Math.sin(o);g.z=s*Math.sin(h);l.set([g.x,g.y,g.z],3*f);m.x=e*Math.cos(o);m.y=e*Math.sin(o);p.sub(g,m).normalize();c.set([p.x,p.y,p.z],3*f);u.set([a/r,t/i],2*f)}f=0;for(let t=1;t<=i;t++)for(let e=1;e<=r;e++,f++){const s=(r+1)*t+e-1;const i=(r+1)*(t-1)+e-1;const n=(r+1)*(t-1)+e;const a=(r+1)*t+e;d.set([s,i,a,i,n,a],6*f)}Object.assign(a,{position:{size:3,data:l},normal:{size:3,data:c},uv:{size:2,data:u},index:{data:d}});super(t,a)}}const E={NONE:-1,ROTATE:0,DOLLY:1,PAN:2,DOLLY_PAN:3};const T=new Vec3;const _=new Vec2;const F=new Vec2;function Orbit(t,{element:e=document,enabled:s=true,target:i=new Vec3,ease:r=.25,inertia:n=.85,enableRotate:a=true,rotateSpeed:o=.1,autoRotate:h=false,autoRotateSpeed:l=1,enableZoom:c=true,zoomSpeed:u=1,zoomStyle:d=\"dolly\",enablePan:m=true,panSpeed:g=.1,minPolarAngle:p=0,maxPolarAngle:f=Math.PI,minAzimuthAngle:x=-Infinity,maxAzimuthAngle:w=Infinity,minDistance:y=0,maxDistance:b=Infinity}={}){this.enabled=s;this.target=i;this.zoomStyle=d;r=r||1;n=n||0;this.minDistance=y;this.maxDistance=b;const M={radius:1,phi:0,theta:0};const v={radius:1,phi:0,theta:0};const A={radius:1,phi:0,theta:0};const S=new Vec3;const R=new Vec3;R.copy(t.position).sub(this.target);A.radius=v.radius=R.distance();A.theta=v.theta=Math.atan2(R.x,R.z);A.phi=v.phi=Math.acos(Math.min(Math.max(R.y/v.radius,-1),1));this.offset=R;this.update=()=>{h&&handleAutoRotate();v.radius*=M.radius;v.theta+=M.theta;v.phi+=M.phi;v.theta=Math.max(x,Math.min(w,v.theta));v.phi=Math.max(p,Math.min(f,v.phi));v.radius=Math.max(this.minDistance,Math.min(this.maxDistance,v.radius));A.phi+=(v.phi-A.phi)*r;A.theta+=(v.theta-A.theta)*r;A.radius+=(v.radius-A.radius)*r;this.target.add(S);let e=A.radius*Math.sin(Math.max(1e-6,A.phi));R.x=e*Math.sin(A.theta);R.y=A.radius*Math.cos(A.phi);R.z=e*Math.cos(A.theta);t.position.copy(this.target).add(R);t.lookAt(this.target);M.theta*=n;M.phi*=n;S.multiply(n);M.radius=1};this.forcePosition=()=>{R.copy(t.position).sub(this.target);A.radius=v.radius=R.distance();A.theta=v.theta=Math.atan2(R.x,R.z);A.phi=v.phi=Math.acos(Math.min(Math.max(R.y/v.radius,-1),1));t.lookAt(this.target)};const P=new Vec2;const L=new Vec2;const C=new Vec2;let z=E.NONE;this.mouseButtons={ORBIT:0,ZOOM:1,PAN:2};function getZoomScale(){return Math.pow(.95,u)}function panLeft(t,e){T.set(e[0],e[1],e[2]);T.multiply(-t);S.add(T)}function panUp(t,e){T.set(e[4],e[5],e[6]);T.multiply(t);S.add(T)}const pan=(s,i)=>{let r=e===document?document.body:e;T.copy(t.position).sub(this.target);let n=T.distance();n*=Math.tan((t.fov||45)/2*Math.PI/180);panLeft(2*s*n/r.clientHeight,t.matrix);panUp(2*i*n/r.clientHeight,t.matrix)};const dolly=e=>{if(\"dolly\"===this.zoomStyle)M.radius/=e;else{t.fov/=e;\"orthographic\"===t.type?t.orthographic():t.perspective()}};function handleAutoRotate(){const t=2*Math.PI/60/60*l;M.theta-=t}function handleMoveRotate(t,s){_.set(t,s);F.sub(_,P).multiply(o);let i=e===document?document.body:e;M.theta-=2*Math.PI*F.x/i.clientHeight;M.phi-=2*Math.PI*F.y/i.clientHeight;P.copy(_)}function handleMouseMoveDolly(t){_.set(t.clientX,t.clientY);F.sub(_,C);F.y>0?dolly(getZoomScale()):F.y<0&&dolly(1/getZoomScale());C.copy(_)}function handleMovePan(t,e){_.set(t,e);F.sub(_,L).multiply(g);pan(F.x,F.y);L.copy(_)}function handleTouchStartDollyPan(t){if(c){let e=t.touches[0].pageX-t.touches[1].pageX;let s=t.touches[0].pageY-t.touches[1].pageY;let i=Math.sqrt(e*e+s*s);C.set(0,i)}if(m){let e=.5*(t.touches[0].pageX+t.touches[1].pageX);let s=.5*(t.touches[0].pageY+t.touches[1].pageY);L.set(e,s)}}function handleTouchMoveDollyPan(t){if(c){let e=t.touches[0].pageX-t.touches[1].pageX;let s=t.touches[0].pageY-t.touches[1].pageY;let i=Math.sqrt(e*e+s*s);_.set(0,i);F.set(0,Math.pow(_.y/C.y,u));dolly(F.y);C.copy(_)}if(m){let e=.5*(t.touches[0].pageX+t.touches[1].pageX);let s=.5*(t.touches[0].pageY+t.touches[1].pageY);handleMovePan(e,s)}}const onMouseDown=t=>{if(this.enabled){switch(t.button){case this.mouseButtons.ORBIT:if(false===a)return;P.set(t.clientX,t.clientY);z=E.ROTATE;break;case this.mouseButtons.ZOOM:if(false===c)return;C.set(t.clientX,t.clientY);z=E.DOLLY;break;case this.mouseButtons.PAN:if(false===m)return;L.set(t.clientX,t.clientY);z=E.PAN;break}if(z!==E.NONE){window.addEventListener(\"mousemove\",onMouseMove,false);window.addEventListener(\"mouseup\",onMouseUp,false)}}};const onMouseMove=t=>{if(this.enabled)switch(z){case E.ROTATE:if(false===a)return;handleMoveRotate(t.clientX,t.clientY);break;case E.DOLLY:if(false===c)return;handleMouseMoveDolly(t);break;case E.PAN:if(false===m)return;handleMovePan(t.clientX,t.clientY);break}};const onMouseUp=()=>{window.removeEventListener(\"mousemove\",onMouseMove,false);window.removeEventListener(\"mouseup\",onMouseUp,false);z=E.NONE};const onMouseWheel=t=>{if(this.enabled&&c&&(z===E.NONE||z===E.ROTATE)){t.stopPropagation();t.preventDefault();t.deltaY<0?dolly(1/getZoomScale()):t.deltaY>0&&dolly(getZoomScale())}};const onTouchStart=t=>{if(this.enabled){t.preventDefault();switch(t.touches.length){case 1:if(false===a)return;P.set(t.touches[0].pageX,t.touches[0].pageY);z=E.ROTATE;break;case 2:if(false===c&&false===m)return;handleTouchStartDollyPan(t);z=E.DOLLY_PAN;break;default:z=E.NONE}}};const onTouchMove=t=>{if(this.enabled){t.preventDefault();t.stopPropagation();switch(t.touches.length){case 1:if(false===a)return;handleMoveRotate(t.touches[0].pageX,t.touches[0].pageY);break;case 2:if(false===c&&false===m)return;handleTouchMoveDollyPan(t);break;default:z=E.NONE}}};const onTouchEnd=()=>{this.enabled&&(z=E.NONE)};const onContextMenu=t=>{this.enabled&&t.preventDefault()};function addHandlers(){e.addEventListener(\"contextmenu\",onContextMenu,false);e.addEventListener(\"mousedown\",onMouseDown,false);e.addEventListener(\"wheel\",onMouseWheel,{passive:false});e.addEventListener(\"touchstart\",onTouchStart,{passive:false});e.addEventListener(\"touchend\",onTouchEnd,false);e.addEventListener(\"touchmove\",onTouchMove,{passive:false})}this.remove=function(){e.removeEventListener(\"contextmenu\",onContextMenu);e.removeEventListener(\"mousedown\",onMouseDown);e.removeEventListener(\"wheel\",onMouseWheel);e.removeEventListener(\"touchstart\",onTouchStart);e.removeEventListener(\"touchend\",onTouchEnd);e.removeEventListener(\"touchmove\",onTouchMove);window.removeEventListener(\"mousemove\",onMouseMove);window.removeEventListener(\"mouseup\",onMouseUp)};addHandlers()}const S=new Vec2;const R=new Vec2;const P=new Vec2;const L=new Vec3;const C=new Vec3;const z=new Vec3;const B=new Vec3;const N=new Vec3;const O=new Vec3;const I=new Vec3;const V=new Vec3;const U=new Vec3;const D=new Vec3;const G=new Vec3;const $=new Mat4;class Raycast{constructor(){this.origin=new Vec3;this.direction=new Vec3}castMouse(t,e=[0,0]){if(\"orthographic\"===t.type){const{left:s,right:i,bottom:r,top:n,zoom:a}=t;const o=s/a+(i-s)/a*(.5*e[0]+.5);const h=r/a+(n-r)/a*(.5*e[1]+.5);this.origin.set(o,h,0);this.origin.applyMatrix4(t.worldMatrix);this.direction.x=-t.worldMatrix[8];this.direction.y=-t.worldMatrix[9];this.direction.z=-t.worldMatrix[10]}else{t.worldMatrix.getTranslation(this.origin);this.direction.set(e[0],e[1],.5);t.unproject(this.direction);this.direction.sub(this.origin).normalize()}}intersectBounds(t,{maxDistance:e,output:s=[]}={}){Array.isArray(t)||(t=[t]);const i=$;const r=L;const n=C;const a=s;a.length=0;t.forEach((t=>{t.geometry.bounds&&Infinity!==t.geometry.bounds.radius||t.geometry.computeBoundingSphere();const s=t.geometry.bounds;i.inverse(t.worldMatrix);let o;if(e){n.copy(this.direction).scaleRotateMatrix4(i);o=e*n.len()}r.copy(this.origin).applyMatrix4(i);n.copy(this.direction).transformDirection(i);if(e&&r.distance(s.center)-s.radius>o)return;let h=0;if(\"sphere\"===t.geometry.raycast){if(r.distance(s.center)>s.radius){h=this.intersectSphere(s,r,n);if(!h)return}}else if(r.x<s.min.x||r.x>s.max.x||r.y<s.min.y||r.y>s.max.y||r.z<s.min.z||r.z>s.max.z){h=this.intersectBox(s,r,n);if(!h)return}if(!(e&&h>o)){t.hit||(t.hit={localPoint:new Vec3,point:new Vec3});t.hit.localPoint.copy(n).multiply(h).add(r);t.hit.point.copy(t.hit.localPoint).applyMatrix4(t.worldMatrix);t.hit.distance=t.hit.point.distance(this.origin);a.push(t)}}));a.sort(((t,e)=>t.hit.distance-e.hit.distance));return a}intersectMeshes(t,{cullFace:e=true,maxDistance:s,includeUV:i=true,includeNormal:r=true,output:n=[]}={}){const a=this.intersectBounds(t,{maxDistance:s,output:n});if(!a.length)return a;const o=$;const h=L;const l=C;const c=z;const u=B;const d=N;const m=O;const g=I;const p=V;const f=S;const x=R;const w=P;for(let t=a.length-1;t>=0;t--){const n=a[t];o.inverse(n.worldMatrix);let y;if(s){l.copy(this.direction).scaleRotateMatrix4(o);y=s*l.len()}h.copy(this.origin).applyMatrix4(o);l.copy(this.direction).transformDirection(o);let b=0;let M,v,A;const E=n.geometry;const T=E.attributes;const _=T.index;const F=T.position;const S=Math.max(0,E.drawRange.start);const R=Math.min(_?_.count:F.count,E.drawRange.start+E.drawRange.count);const P=F.size;for(let t=S;t<R;t+=3){const i=_?_.data[t]:t;const r=_?_.data[t+1]:t+1;const n=_?_.data[t+2]:t+2;c.fromArray(F.data,i*P);u.fromArray(F.data,r*P);d.fromArray(F.data,n*P);const a=this.intersectTriangle(c,u,d,e,h,l,g);if(a&&(!(s&&a>y)&&(!b||a<b))){b=a;M=i;v=r;A=n;m.copy(g)}}b||a.splice(t,1);n.hit.localPoint.copy(l).multiply(b).add(h);n.hit.point.copy(n.hit.localPoint).applyMatrix4(n.worldMatrix);n.hit.distance=n.hit.point.distance(this.origin);if(!n.hit.faceNormal){n.hit.localFaceNormal=new Vec3;n.hit.faceNormal=new Vec3;n.hit.uv=new Vec2;n.hit.localNormal=new Vec3;n.hit.normal=new Vec3}n.hit.localFaceNormal.copy(m);n.hit.faceNormal.copy(n.hit.localFaceNormal).transformDirection(n.worldMatrix);if(i||r){c.fromArray(F.data,3*M);u.fromArray(F.data,3*v);d.fromArray(F.data,3*A);this.getBarycoord(n.hit.localPoint,c,u,d,p)}if(i&&T.uv){f.fromArray(T.uv.data,2*M);x.fromArray(T.uv.data,2*v);w.fromArray(T.uv.data,2*A);n.hit.uv.set(f.x*p.x+x.x*p.y+w.x*p.z,f.y*p.x+x.y*p.y+w.y*p.z)}if(r&&T.normal){c.fromArray(T.normal.data,3*M);u.fromArray(T.normal.data,3*v);d.fromArray(T.normal.data,3*A);n.hit.localNormal.set(c.x*p.x+u.x*p.y+d.x*p.z,c.y*p.x+u.y*p.y+d.y*p.z,c.z*p.x+u.z*p.y+d.z*p.z);n.hit.normal.copy(n.hit.localNormal).transformDirection(n.worldMatrix)}}a.sort(((t,e)=>t.hit.distance-e.hit.distance));return a}intersectPlane(t,e=this.origin,s=this.direction){const i=L;i.sub(t.origin,e);const r=i.dot(t.normal);const n=s.dot(t.normal);if(0==n)return 0;const a=r/n;return a<=0?0:e.add(s.scale(a))}intersectSphere(t,e=this.origin,s=this.direction){const i=z;i.sub(t.center,e);const r=i.dot(s);const n=i.dot(i)-r*r;const a=t.radius*t.radius;if(n>a)return 0;const o=Math.sqrt(a-n);const h=r-o;const l=r+o;return h<0&&l<0?0:h<0?l:h}intersectBox(t,e=this.origin,s=this.direction){let i,r,n,a,o,h;const l=1/s.x;const c=1/s.y;const u=1/s.z;const d=t.min;const m=t.max;i=((l>=0?d.x:m.x)-e.x)*l;r=((l>=0?m.x:d.x)-e.x)*l;n=((c>=0?d.y:m.y)-e.y)*c;a=((c>=0?m.y:d.y)-e.y)*c;if(i>a||n>r)return 0;n>i&&(i=n);a<r&&(r=a);o=((u>=0?d.z:m.z)-e.z)*u;h=((u>=0?m.z:d.z)-e.z)*u;if(i>h||o>r)return 0;o>i&&(i=o);h<r&&(r=h);return r<0?0:i>=0?i:r}intersectTriangle(t,e,s,i=true,r=this.origin,n=this.direction,a=I){const o=V;const h=U;const l=D;o.sub(e,t);h.sub(s,t);a.cross(o,h);let c=n.dot(a);if(!c)return 0;let u;if(c>0){if(i)return 0;u=1}else{u=-1;c=-c}l.sub(r,t);let d=u*n.dot(h.cross(l,h));if(d<0)return 0;let m=u*n.dot(o.cross(l));if(m<0)return 0;if(d+m>c)return 0;let g=-u*l.dot(a);return g<0?0:g/c}getBarycoord(t,e,s,i,r=V){const n=U;const a=D;const o=G;n.sub(i,e);a.sub(s,e);o.sub(t,e);const h=n.dot(n);const l=n.dot(a);const c=n.dot(o);const u=a.dot(a);const d=a.dot(o);const m=h*u-l*l;if(0===m)return r.set(-2,-1,-1);const g=1/m;const p=(u*c-l*d)*g;const f=(h*d-l*c)*g;return r.set(1-p-f,f,p)}}const k=\"catmullrom\";const q=\"cubicbezier\";const j=\"quadraticbezier\";const W=new Vec3,X=new Vec3,Y=new Vec3,H=new Vec3;\n/**\n * Get the control points of cubic bezier curve.\n * @param {*} i\n * @param {*} a\n * @param {*} b\n */function getCtrlPoint(t,e,s=.168,i=.168){e<1?W.sub(t[1],t[0]).scale(s).add(t[0]):W.sub(t[e+1],t[e-1]).scale(s).add(t[e]);if(e>t.length-3){const e=t.length-1;X.sub(t[e-1],t[e]).scale(i).add(t[e])}else X.sub(t[e],t[e+2]).scale(i).add(t[e+1]);return[W.clone(),X.clone()]}function getQuadraticBezierPoint(t,e,s,i){const r=1-t;W.copy(e).scale(r**2);X.copy(s).scale(2*r*t);Y.copy(i).scale(t**2);const n=new Vec3;n.add(W,X).add(Y);return n}function getCubicBezierPoint(t,e,s,i,r){const n=1-t;W.copy(e).scale(n**3);X.copy(s).scale(3*n**2*t);Y.copy(i).scale(3*n*t**2);H.copy(r).scale(t**3);const a=new Vec3;a.add(W,X).add(Y).add(H);return a}class Curve{constructor({points:t=[new Vec3(0,0,0),new Vec3(0,1,0),new Vec3(1,1,0),new Vec3(1,0,0)],divisions:e=12,type:s=k}={}){this.points=t;this.divisions=e;this.type=s}_getQuadraticBezierPoints(t=this.divisions){const e=[];const s=this.points.length;if(s<3){console.warn(\"Not enough points provided.\");return[]}const i=this.points[0];let r=this.points[1],n=this.points[2];for(let s=0;s<=t;s++){const a=getQuadraticBezierPoint(s/t,i,r,n);e.push(a)}let a=3;while(s-a>0){i.copy(n);r=n.scale(2).sub(r);n=this.points[a];for(let s=1;s<=t;s++){const a=getQuadraticBezierPoint(s/t,i,r,n);e.push(a)}a++}return e}_getCubicBezierPoints(t=this.divisions){const e=[];const s=this.points.length;if(s<4){console.warn(\"Not enough points provided.\");return[]}let i=this.points[0],r=this.points[1],n=this.points[2],a=this.points[3];for(let s=0;s<=t;s++){const o=getCubicBezierPoint(s/t,i,r,n,a);e.push(o)}let o=4;while(s-o>1){i.copy(a);r=a.scale(2).sub(n);n=this.points[o];a=this.points[o+1];for(let s=1;s<=t;s++){const o=getCubicBezierPoint(s/t,i,r,n,a);e.push(o)}o+=2}return e}_getCatmullRomPoints(t=this.divisions,e=.168,s=.168){const i=[];const r=this.points.length;if(r<=2)return this.points;let n;this.points.forEach(((r,a)=>{if(0===a)n=r;else{const[o,h]=getCtrlPoint(this.points,a-1,e,s);const l=new Curve({points:[n,o,h,r],type:q});i.pop();i.push(...l.getPoints(t));n=r}}));return i}getPoints(t=this.divisions,e=.168,s=.168){const i=this.type;return i===j?this._getQuadraticBezierPoints(t):i===q?this._getCubicBezierPoints(t):i===k?this._getCatmullRomPoints(t,e,s):this.points}}Curve.CATMULLROM=k;Curve.CUBICBEZIER=q;Curve.QUADRATICBEZIER=j;class BaseSegment{constructor(){this._len=-1;this.tiltStart=0;this.tiltEnd=0}\n/**\n     * Get segment length.\n     * @returns {number} segment length\n     */getLength(){this._len<0&&this.updateLength();return this._len}\n/**\n     * Get tilt angle at t\n     * @param {number} t Distance at time t in range [0 .. 1]\n     * @returns {number} Tilt angle at t\n     */getTiltAt(t){return this.tiltStart*(1-t)*this.tiltEnd*t}\n/**\n     * Creates a clone of this instance\n     * @returns {BaseSegment} cloned instance\n     */clone(){return(new this.constructor).copy(this)}\n/**\n     * Copies another segment object to this instance.\n     * @param {BaseSegment} source reference object\n     * @returns {BaseSegment} copy of source object\n     */copy(t){this._len=t._len;this.tiltStart=t.tiltStart;this.tiltEnd=t.tiltEnd;return this}}const Q=[-.06405689286260563,.06405689286260563,-.1911188674736163,.1911188674736163,-.3150426796961634,.3150426796961634,-.4337935076260451,.4337935076260451,-.5454214713888396,.5454214713888396,-.6480936519369755,.6480936519369755,-.7401241915785544,.7401241915785544,-.820001985973903,.820001985973903,-.8864155270044011,.8864155270044011,-.9382745520027328,.9382745520027328,-.9747285559713095,.9747285559713095,-.9951872199970213,.9951872199970213];const Z=[.12793819534675216,.12793819534675216,.1258374563468283,.1258374563468283,.12167047292780339,.12167047292780339,.1155056680537256,.1155056680537256,.10744427011596563,.10744427011596563,.09761865210411388,.09761865210411388,.08619016153195327,.08619016153195327,.0733464814110803,.0733464814110803,.05929858491543678,.05929858491543678,.04427743881741981,.04427743881741981,.028531388628933663,.028531388628933663,.0123412297999872,.0123412297999872];\n/**\n * Convert Degree To Radian\n * @param {number} a Angle in Degrees\n * @returns {number} a Angle in Radians\n */const toRadian=t=>t*Math.PI/180\n/**\n * Convert Radian To Degree\n * @param {number} a Angle in Radians\n * @returns {number} a Angle in Radian\n */;const toDegrees=t=>180*t/Math.PI;const clamp=(t,e,s)=>Math.max(e,Math.min(t,s));\n/**\n * Fills a rotation matrix with the given sine and cosine of the angle around the given axis\n * This function helps to avoid inverse trigonometry\n * @param {Mat4} out mat4 receiving operation result\n * @param {Vec3} axis the axis to rotate around. Should be normalized\n * @param {number} sin sine of rotation angle\n * @param {number} cos cosine of rotation angle\n * @returns {Mat4} out\n */\nfunction mat4fromRotationSinCos(t,e,s,i){const r=e[0];const n=e[1];const a=e[2];const o=1-i;t[0]=r*r*o+i;t[1]=n*r*o+a*s;t[2]=a*r*o-n*s;t[3]=0;t[4]=r*n*o-a*s;t[5]=n*n*o+i;t[6]=a*n*o+r*s;t[7]=0;t[8]=r*a*o+n*s;t[9]=n*a*o-r*s;t[10]=a*a*o+i;t[11]=0;t[12]=0;t[13]=0;t[14]=0;t[15]=1;return t}\n/**\n * Rotates the normal and binormal around its tangent by the given angle.\n *\n * see: https://en.wikipedia.org/wiki/Rodrigues%27_rotation_formula\n * @param {number} angle rotation angle\n * @param {Vec3} norm unit normal vector\n * @param {Vec3} binorm unit binormal vector\n * @param {Vec3} outNorm optional normal output vector. If not present then normal vector changes in place\n * @param {Vec3} outBinorm optional binormal output vector. If not present then binormal vector changes in place\n */function rotateNormalBinormal(t,e,s,i=e,r=s){const n=Math.sin(t);const a=Math.cos(t);const o=a*e.x+n*s.x;const h=a*e.y+n*s.y;const l=a*e.z+n*s.z;const c=a*s.x-n*e.x;const u=a*s.y-n*e.y;const d=a*s.z-n*e.z;i.set(o,h,l);r.set(c,u,d)}const K=new Vec3;function cubicBezier(t,e,s,i,r){const n=1-t;return n*n*n*e+3*n*n*t*s+3*n*t*t*i+t*t*t*r}function cubicBezierDeriv(t,e,s,i,r){const n=1-t;return 3*n*n*(s-e)+6*n*t*(i-s)+3*t*t*(r-i)}class CubicBezierSegment extends BaseSegment{constructor(t,e,s,i,r=0,n=0){super();this.p0=t;this.p1=e;this.p2=s;this.p3=i;this.tiltStart=r;this.tiltEnd=n;this._len=-1}updateLength(){const t=.5;const e=Q.length;let s=0;for(let i,r=0;r<e;r++){i=t*Q[r]+t;s+=Z[r]*this.getDerivativeAt(i,K).len()}this._len=t*s}\n/**\n     * Get point at relative position in curve according to segment length.\n     * @param {number} t Distance at time t in range [0 .. 1]\n     * @param {Vec3} out Optional Vec3 to output\n     * @returns {Vec3} Point at relative position\n     */getPointAt(t,e=new Vec3){e.x=cubicBezier(t,this.p0.x,this.p1.x,this.p2.x,this.p3.x);e.y=cubicBezier(t,this.p0.y,this.p1.y,this.p2.y,this.p3.y);e.z=cubicBezier(t,this.p0.z,this.p1.z,this.p2.z,this.p3.z);return e}getDerivativeAt(t,e=new Vec3){e.x=cubicBezierDeriv(t,this.p0.x,this.p1.x,this.p2.x,this.p3.x);e.y=cubicBezierDeriv(t,this.p0.y,this.p1.y,this.p2.y,this.p3.y);e.z=cubicBezierDeriv(t,this.p0.z,this.p1.z,this.p2.z,this.p3.z);return e}\n/**\n     * Returns a unit vector tangent at t\n     * @param {number} t Distance at time t in range [0 .. 1]\n     * @param {Vec3} out Optional Vec3 to output\n     * @returns {Vec3} A unit vector\n     */getTangentAt(t,e=new Vec3){return this.getDerivativeAt(t,e).normalize()}lastPoint(){return this.p3}}const J=new Vec3;function quadraticBezier(t,e,s,i){const r=1-t;return r*r*e+2*r*t*s+t*t*i}function quadraticBezierDeriv(t,e,s,i){const r=1-t;return 2*r*(s-e)+2*t*(i-s)}class QuadraticBezierSegment extends BaseSegment{constructor(t,e,s,i=0,r=0){super();this.p0=t;this.p1=e;this.p2=s;this.tiltStart=i;this.tiltEnd=r;this._len=-1}updateLength(){const t=.5;const e=Q.length;let s=0;for(let i,r=0;r<e;r++){i=t*Q[r]+t;s+=Z[r]*this.getDerivativeAt(i,J).len()}this._len=t*s}\n/**\n     * Get point at relative position in curve according to segment length.\n     * @param {number} t Distance at time t in range [0 .. 1]\n     * @param {Vec3} out Optional Vec3 to output\n     * @returns {Vec3} Point at relative position\n     */getPointAt(t,e=new Vec3){e.x=quadraticBezier(t,this.p0.x,this.p1.x,this.p2.x);e.y=quadraticBezier(t,this.p0.y,this.p1.y,this.p2.y);e.z=quadraticBezier(t,this.p0.z,this.p1.z,this.p2.z);return e}getDerivativeAt(t,e=new Vec3){e.x=quadraticBezierDeriv(t,this.p0.x,this.p1.x,this.p2.x);e.y=quadraticBezierDeriv(t,this.p0.y,this.p1.y,this.p2.y);e.z=quadraticBezierDeriv(t,this.p0.z,this.p1.z,this.p2.z);return e}\n/**\n     * Returns a unit vector tangent at t\n     * @param {number} t Distance at time t in range [0 .. 1]\n     * @param {Vec3} out Optional Vec3 to output\n     * @returns {Vec3} A unit vector\n     */getTangentAt(t,e=new Vec3){return this.getDerivativeAt(t,e).normalize()}lastPoint(){return this.p2}}const tt=new Vec3;class LineSegment extends BaseSegment{constructor(t,e,s=0,i=0){super();this.p0=t;this.p1=e;this.tiltStart=s;this.tiltEnd=i;this._len=-1}updateLength(){this._len=tt.sub(this.p1,this.p0).len()}\n/**\n     * Get point at relative position in curve according to segment length.\n     * @param {number} t Distance at time t in range [0 .. 1]\n     * @param {Vec3} out Optional Vec3 to output\n     * @returns {Vec3} Point at relative position\n     */getPointAt(t,e=new Vec3){lerp$4(e,this.p0,this.p1,t);return e}\n/**\n     * Returns a unit vector tangent at t\n     * @param {number} t Distance at time t in range [0 .. 1]\n     * @param {Vec3} out Optional Vec3 to output\n     * @returns {Vec3} A unit vector\n     */getTangentAt(t,e=new Vec3){return e.sub(this.p1,this.p0).normalize()}lastPoint(){return this.p1}}const et=new Vec3;const st=new Mat4;function throwIfNullProperty(t,e){if(null==this[t])throw new Error(e)}class Path{constructor(){this._segments=[];this._lengthOffsets=null;this._totalLength=-1;this._lastPoint=null;this._lastTilt=0;this._assertLastPoint=throwIfNullProperty.bind(this,\"_lastPoint\",\"Can`t get previous point of curve. Did you forget moveTo command?\");this.tiltFunction=null}moveTo(t,e=0){this._totalLength=-1;this._lastPoint=t;this._lastTilt=e}bezierCurveTo(t,e,s,i=0){this._assertLastPoint();const r=new CubicBezierSegment(this._lastPoint,t,e,s,this._lastTilt,i);this.addSegment(r);return this}quadraticCurveTo(t,e,s=0){this._assertLastPoint();const i=new QuadraticBezierSegment(this._lastPoint,t,e,this._lastTilt,s);this.addSegment(i);return this}lineTo(t,e=0){this._assertLastPoint();const s=new LineSegment(this._lastPoint,t,this._lastTilt,e);this.addSegment(s);return this}addSegment(t){this._totalLength=-1;this._lastPoint=t.lastPoint();this._lastTilt=t.tiltEnd;this._segments.push(t);return this}getSegments(){return this._segments}updateLength(){const t=this._segments.length;this._lengthOffsets=new Array(t);let e=0;for(let s=0;s<t;s++){this._lengthOffsets[s]=e;e+=this._segments[s].getLength()}this._totalLength=e}getLength(){this._totalLength<0&&this.updateLength();return this._totalLength}\n/**\n     * Finding a path segment at a given absolute length distance\n     * @param {number} len absolute length distance\n     * @returns {[number, number]} [_segment index_, _relative segment distance_]\n     */findSegmentIndexAtLength(t){const e=this.getLength();if(t<=0)return[0,0];if(t>=e)return[this._segments.length-1,1];let s=0;let i=this._lengthOffsets.length-1;let r=-1;let n;while(s<=i){n=Math.ceil((s+i)/2);if(0===n||n===this._lengthOffsets.length-1||t>=this._lengthOffsets[n]&&t<this._lengthOffsets[n+1]){r=n;break}t<this._lengthOffsets[n]?i=n-1:s=n+1}const a=this._segments[r];const o=a.getLength();const h=(t-this._lengthOffsets[r])/o;return[r,h]}getPointAtLength(t,e=new Vec3){const[s,i]=this.findSegmentIndexAtLength(t);return this._segments[s].getPointAt(i,e)}getPointAt(t,e=new Vec3){const s=this.getLength();return this.getPointAtLength(t*s,e)}getTangentAtLength(t,e=new Vec3){const[s,i]=this.findSegmentIndexAtLength(t);return this._segments[s].getTangentAt(i,e)}getTangentAt(t,e=new Vec3){const s=this.getLength();return this.getTangentAtLength(t*s,e)}getTiltAtLength(t){const[e,s]=this.findSegmentIndexAtLength(t);return this._segments[e].getTiltAt(s)}getTiltAt(t){const e=this.getLength();return this.getTiltAtLength(t*e)}\n/**\n     * Get sequence of points using `getPointAt(t)`\n     * @param {number} divisions number of subdivisions\n     * @returns {Vec3[]} array of points\n     */getPoints(t=64){const e=new Array(t+1);for(let s=0;s<=t;s++)e[s]=this.getPointAt(s/t);return e}\n/**\n     * Generates the Frenet Frames.\n     * See http://www.cs.indiana.edu/pub/techreports/TR425.pdf\n     * @param {number} divisions number of subdivisions\n     * @returns {{tangents: Vec3[], normals: Vec3[], binormals: Vec3[]}} Object with tangents, normals and binormals arrays\n     */computeFrenetFrames(t=64,e=false){const s=new Array(t+1);const i=new Array(t+1);const r=this.tiltFunction??(t=>t);const n=this.getLength();for(let e=0;e<=t;e++){const[a,o]=this.findSegmentIndexAtLength(n*e/t);const h=this._segments[a];s[e]=h.getTangentAt(o);i[e]=r(h.getTiltAt(o),e/t,this)}const a=Math.abs(s[0].x);const o=Math.abs(s[0].y);const h=Math.abs(s[0].z);const l=new Vec3;a<o&&a<h?l.set(1,0,0):o<a&&o<h?l.set(0,1,0):l.set(0,0,1);const c=new Array(t+1);const u=new Array(t+1);c[0]=new Vec3;u[0]=new Vec3;et.cross(s[0],l).normalize();c[0].cross(s[0],et);u[0].cross(s[0],c[0]);for(let t=1;t<s.length;t++){c[t]=c[t-1].clone();u[t]=new Vec3;et.cross(s[t-1],s[t]);const e=et.len();if(e>Number.EPSILON){et.scale(1/e);const i=clamp(s[t-1].dot(s[t]),-1,1);const r=clamp(e,-1,1);mat4fromRotationSinCos(st,et,r,i);c[t].applyMatrix4(st)}u[t].cross(s[t],c[t])}for(let t=0;t<i.length;t++)rotateNormalBinormal(toRadian(i[t]),c[t],u[t]);if(true===e){const t=c[c.length-1];let e=Math.acos(clamp(c[0].dot(t),-1,1))/(c.length-1);s[0].dot(et.cross(c[0],t))>0&&(e=-e);for(let t=1;t<c.length-1;t++){const s=e*t;rotateNormalBinormal(s,c[t],u[t]);i[t]+=toDegrees(s)}c[c.length-1]=c[0].clone();u[u.length-1]=u[0].clone()}return{tangents:s,normals:c,binormals:u,tilts:i}}}const it=new Vec3;const rt=new Vec3;const nt=new Vec2;const at=new Vec3;class Tube extends Geometry{constructor(t,{path:e,radius:s=1,tubularSegments:i=64,radialSegments:r=8,closed:n=false,attributes:a={}}={}){super(t,a);this.path=e;this.radius=s;this.tubularSegments=i;this.radialSegments=r;this.closed=n;this.frenetFrames=e.computeFrenetFrames(i,n);const o=(i+1)*(r+1);const h=i*r*6;this.positions=new Float32Array(3*o);this.normals=new Float32Array(3*o);this.uvs=new Float32Array(2*o);this.indices=o>65536?new Uint32Array(h):new Uint16Array(h);this._generateAttributes();this._generateIndices();this.addAttribute(\"position\",{size:3,data:this.positions});this.addAttribute(\"normal\",{size:3,data:this.normals});this.addAttribute(\"uv\",{size:2,data:this.uvs});this.setIndex({data:this.indices})}_generateAttributes(){for(let t=0;t<=this.tubularSegments;t++){let e=t;t===this.tubularSegments&&(e=this.closed?0:this.tubularSegments);this.path.getPointAt(e/this.tubularSegments,at);const s=this.frenetFrames.normals[e];const i=this.frenetFrames.binormals[e];for(let e=0;e<=this.radialSegments;e++){const r=e/this.radialSegments*Math.PI*2;const n=Math.sin(r);const a=-Math.cos(r);const o=t*(this.radialSegments+1)+e;rt.x=a*s.x+n*i.x;rt.y=a*s.y+n*i.y;rt.z=a*s.z+n*i.z;this.normals.set(rt,3*o);it.x=at.x+this.radius*rt.x;it.y=at.y+this.radius*rt.y;it.z=at.z+this.radius*rt.z;this.positions.set(it,3*o);nt.x=t/this.tubularSegments;nt.y=e/this.radialSegments;this.uvs.set(nt,2*o)}}}_generateIndices(){for(let t=1;t<=this.tubularSegments;t++)for(let e=1;e<=this.radialSegments;e++){const s=(this.radialSegments+1)*(t-1)+(e-1);const i=(this.radialSegments+1)*t+(e-1);const r=(this.radialSegments+1)*t+e;const n=(this.radialSegments+1)*(t-1)+e;const a=(t-1)*this.radialSegments+(e-1);this.indices.set([s,i,n,i,r,n],6*a)}}}class Post{constructor(t,{width:e,height:s,dpr:i,wrapS:r=t.CLAMP_TO_EDGE,wrapT:n=t.CLAMP_TO_EDGE,minFilter:a=t.LINEAR,magFilter:o=t.LINEAR,geometry:h=new Triangle(t),targetOnly:l=null}={}){this.gl=t;this.passes=[];this.geometry=h;this.uniform={value:null};this.targetOnly=l;i&&(this.dpr=i);e&&(this.width=e);s&&(this.height=s);i=this.dpr||this.gl.renderer.dpr;this.resolutionWidth=Math.floor(this.width||this.gl.renderer.width*i);this.resolutionHeight=Math.floor(this.height||this.gl.renderer.height*i);let c={dpr:this.dpr,width:this.resolutionWidth,height:this.resolutionHeight,wrapS:r,wrapT:n,minFilter:a,magFilter:o};const u=this.fbo={read:new RenderTarget(this.gl,c),write:new RenderTarget(this.gl,c),swap:()=>{let t=u.read;u.read=u.write;u.write=t}}}addPass({vertex:t=ot,fragment:e=ht,uniforms:s={},textureUniform:i=\"tMap\",enabled:r=true}={}){s[i]={value:this.fbo.read.texture};const n=new Program(this.gl,{vertex:t,fragment:e,uniforms:s});const a=new Mesh(this.gl,{geometry:this.geometry,program:n});const o={mesh:a,program:n,uniforms:s,enabled:r,textureUniform:i};this.passes.push(o);return o}resize({width:t,height:e,dpr:s}={}){s&&(this.dpr=s);t&&(this.width=t);e&&(this.height=e);s=this.dpr||this.gl.renderer.dpr;this.resolutionWidth=Math.floor(this.width||this.gl.renderer.width*s);this.resolutionHeight=Math.floor(this.height||this.gl.renderer.height*s);this.fbo.read.setSize(this.resolutionWidth,this.resolutionHeight);this.fbo.write.setSize(this.resolutionWidth,this.resolutionHeight)}render({scene:t,camera:e,texture:s,target:i=null,update:r=true,sort:n=true,frustumCull:a=true,beforePostCallbacks:o}){const h=this.passes.filter((t=>t.enabled));if(!s){this.gl.renderer.render({scene:t,camera:e,target:h.length||!i&&this.targetOnly?this.fbo.write:i,update:r,sort:n,frustumCull:a});this.fbo.swap();o&&o.forEach((t=>t&&t()))}h.forEach(((t,e)=>{t.mesh.program.uniforms[t.textureUniform].value=!e&&s?s:this.fbo.read.texture;this.gl.renderer.render({scene:t.mesh,target:e!==h.length-1||!i&&this.targetOnly?this.fbo.write:i,clear:true});this.fbo.swap()}));this.uniform.value=this.fbo.read.texture}}const ot=\"\\n    attribute vec2 uv;\\n    attribute vec2 position;\\n\\n    varying vec2 vUv;\\n\\n    void main() {\\n        vUv = uv;\\n        gl_Position = vec4(position, 0, 1);\\n    }\\n\";const ht=\"\\n    precision highp float;\\n\\n    uniform sampler2D tMap;\\n    varying vec2 vUv;\\n\\n    void main() {\\n        gl_FragColor = texture2D(tMap, vUv);\\n    }\\n\";const lt=new Vec3;const ct=new Quat;const ut=new Vec3;const dt=new Vec3;const mt=new Quat;const gt=new Vec3;class Animation{constructor({objects:t,data:e}){this.objects=t;this.data=e;this.elapsed=0;this.weight=1;this.duration=e.frames.length-1}update(t=1,e){const s=e?1:this.weight/t;const i=this.elapsed%this.duration;const r=Math.floor(i);const n=i-r;const a=this.data.frames[r];const o=this.data.frames[(r+1)%this.duration];this.objects.forEach(((t,e)=>{lt.fromArray(a.position,3*e);ct.fromArray(a.quaternion,4*e);ut.fromArray(a.scale,3*e);dt.fromArray(o.position,3*e);mt.fromArray(o.quaternion,4*e);gt.fromArray(o.scale,3*e);lt.lerp(dt,n);ct.slerp(mt,n);ut.lerp(gt,n);t.position.lerp(lt,s);t.quaternion.slerp(ct,s);t.scale.lerp(ut,s)}))}}const pt=new Mat4;class Skin extends Mesh{constructor(t,{rig:e,geometry:s,program:i,mode:r=t.TRIANGLES}={}){super(t,{geometry:s,program:i,mode:r});this.createBones(e);this.createBoneTexture();this.animations=[];Object.assign(this.program.uniforms,{boneTexture:{value:this.boneTexture},boneTextureSize:{value:this.boneTextureSize}})}createBones(t){this.root=new Transform;this.bones=[];if(t.bones&&t.bones.length){for(let e=0;e<t.bones.length;e++){const s=new Transform;s.position.fromArray(t.bindPose.position,3*e);s.quaternion.fromArray(t.bindPose.quaternion,4*e);s.scale.fromArray(t.bindPose.scale,3*e);this.bones.push(s)}t.bones.forEach(((t,e)=>{this.bones[e].name=t.name;if(-1===t.parent)return this.bones[e].setParent(this.root);this.bones[e].setParent(this.bones[t.parent])}));this.root.updateMatrixWorld(true);this.bones.forEach((t=>{t.bindInverse=new Mat4(...t.worldMatrix).inverse()}))}}createBoneTexture(){if(!this.bones.length)return;const t=Math.max(4,Math.pow(2,Math.ceil(Math.log(Math.sqrt(4*this.bones.length))/Math.LN2)));this.boneMatrices=new Float32Array(t*t*4);this.boneTextureSize=t;this.boneTexture=new Texture(this.gl,{image:this.boneMatrices,generateMipmaps:false,type:this.gl.FLOAT,internalFormat:this.gl.renderer.isWebgl2?this.gl.RGBA32F:this.gl.RGBA,minFilter:this.gl.NEAREST,magFilter:this.gl.NEAREST,flipY:false,width:t})}addAnimation(t){const e=new Animation({objects:this.bones,data:t});this.animations.push(e);return e}update(){let t=0;this.animations.forEach((e=>t+=e.weight));this.animations.forEach(((e,s)=>{e.update(t,0===s)}))}draw({camera:t}={}){this.root.updateMatrixWorld(true);this.bones.forEach(((t,e)=>{pt.multiply(t.worldMatrix,t.bindInverse);this.boneMatrices.set(pt,16*e)}));this.boneTexture&&(this.boneTexture.needsUpdate=true);super.draw({camera:t})}}function Text({font:t,text:e,width:s=Infinity,align:i=\"left\",size:r=1,letterSpacing:n=0,lineHeight:a=1.4,wordSpacing:o=0,wordBreak:h=false}){const l=this;let c,u;let d,m,g;const p=/\\n/;const f=/\\s/;parseFont();createGeometry();function parseFont(){c={};t.chars.forEach((t=>c[t.char]=t))}function createGeometry(){d=t.common.lineHeight;m=t.common.base;g=r/m;let s=e.replace(/[ \\n]/g,\"\");let i=s.length;u={position:new Float32Array(4*i*3),uv:new Float32Array(4*i*2),id:new Float32Array(4*i),index:new Uint16Array(6*i)};for(let t=0;t<i;t++){u.id.set([t,t,t,t],4*t);u.index.set([4*t,4*t+2,4*t+1,4*t+1,4*t+2,4*t+3],6*t)}layout()}function layout(){const t=[];let i=0;let a=0;let l=0;let u=newLine();function newLine(){const e={width:0,glyphs:[]};t.push(e);a=i;l=0;return e}let d=100;let m=0;while(i<e.length&&m<d){m++;const t=e[i];if(!u.width&&f.test(t)){i++;a=i;l=0;continue}if(p.test(t)){i++;u=newLine();continue}const d=c[t]||c[\" \"];if(u.glyphs.length){const t=u.glyphs[u.glyphs.length-1][0];let e=getKernPairOffset(d.id,t.id)*g;u.width+=e;l+=e}u.glyphs.push([d,u.width]);let x=0;if(f.test(t)){a=i;l=0;x+=o*r}else x+=n*r;x+=d.xadvance*g;u.width+=x;l+=x;if(u.width>s){if(h&&u.glyphs.length>1){u.width-=x;u.glyphs.pop();u=newLine();continue}if(!h&&l!==u.width){let t=i-a+1;u.glyphs.splice(-t,t);i=a;u.width-=l;u=newLine();continue}}i++;m=0}u.width||t.pop();populateBuffers(t)}function populateBuffers(e){const s=t.common.scaleW;const n=t.common.scaleH;let o=.07*r;let h=0;for(let t=0;t<e.length;t++){let l=e[t];for(let t=0;t<l.glyphs.length;t++){const e=l.glyphs[t][0];let r=l.glyphs[t][1];\"center\"===i?r-=.5*l.width:\"right\"===i&&(r-=l.width);if(f.test(e.char))continue;r+=e.xoffset*g;o-=e.yoffset*g;let a=e.width*g;let c=e.height*g;u.position.set([r,o-c,0,r,o,0,r+a,o-c,0,r+a,o,0],4*h*3);let d=e.x/s;let m=e.width/s;let p=1-e.y/n;let x=e.height/n;u.uv.set([d,p-x,d,p,d+m,p-x,d+m,p],4*h*2);o+=e.yoffset*g;h++}o-=r*a}l.buffers=u;l.numLines=e.length;l.height=l.numLines*r*a;l.width=Math.max(...e.map((t=>t.width)))}function getKernPairOffset(e,s){for(let i=0;i<t.kernings.length;i++){let r=t.kernings[i];if(!(r.first<e)&&!(r.second<s))return r.first>e||r.first===e&&r.second>s?0:r.amount}return 0}this.resize=function(t){({width:s}=t);layout()};this.update=function(t){({text:e}=t);createGeometry()}}const ft=\"\\n    precision highp float;\\n    precision highp int;\\n\\n    attribute vec3 position;\\n    attribute vec3 normal;\\n\\n    uniform mat3 normalMatrix;\\n    uniform mat4 modelViewMatrix;\\n    uniform mat4 projectionMatrix;\\n\\n    varying vec3 vNormal;\\n\\n    void main() {\\n        vNormal = normalize(normalMatrix * normal);\\n        gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);\\n    }\\n\";const xt=\"\\n    precision highp float;\\n    precision highp int;\\n\\n    varying vec3 vNormal;\\n\\n    void main() {\\n        gl_FragColor.rgb = normalize(vNormal);\\n        gl_FragColor.a = 1.0;\\n    }\\n\";function NormalProgram(t){return new Program(t,{vertex:ft,fragment:xt,cullFace:null})}class Flowmap{constructor(t,{size:e=128,falloff:s=.3,alpha:i=1,dissipation:r=.98,type:n}={}){const a=this;this.gl=t;this.uniform={value:null};this.mask={read:null,write:null,swap:()=>{let t=a.mask.read;a.mask.read=a.mask.write;a.mask.write=t;a.uniform.value=a.mask.read.texture}};createFBOs();this.aspect=1;this.mouse=new Vec2;this.velocity=new Vec2;this.mesh=initProgram();function createFBOs(){n||(n=t.HALF_FLOAT||t.renderer.extensions.OES_texture_half_float.HALF_FLOAT_OES);let s=(()=>t.renderer.isWebgl2||t.renderer.extensions[`OES_texture_${n===t.FLOAT?\"\":\"half_\"}float_linear`]?t.LINEAR:t.NEAREST)();const i={width:e,height:e,type:n,format:t.RGBA,internalFormat:t.renderer.isWebgl2?n===t.FLOAT?t.RGBA32F:t.RGBA16F:t.RGBA,minFilter:s,depth:false};a.mask.read=new RenderTarget(t,i);a.mask.write=new RenderTarget(t,i);a.mask.swap()}function initProgram(){return new Mesh(t,{geometry:new Triangle(t),program:new Program(t,{vertex:wt,fragment:yt,uniforms:{tMap:a.uniform,uFalloff:{value:.5*s},uAlpha:{value:i},uDissipation:{value:r},uAspect:{value:1},uMouse:{value:a.mouse},uVelocity:{value:a.velocity}},depthTest:false})})}}update(){this.mesh.program.uniforms.uAspect.value=this.aspect;this.gl.renderer.render({scene:this.mesh,target:this.mask.write,clear:false});this.mask.swap()}}const wt=\"\\n    attribute vec2 uv;\\n    attribute vec2 position;\\n\\n    varying vec2 vUv;\\n\\n    void main() {\\n        vUv = uv;\\n        gl_Position = vec4(position, 0, 1);\\n    }\\n\";const yt=\"\\n    precision highp float;\\n\\n    uniform sampler2D tMap;\\n\\n    uniform float uFalloff;\\n    uniform float uAlpha;\\n    uniform float uDissipation;\\n    \\n    uniform float uAspect;\\n    uniform vec2 uMouse;\\n    uniform vec2 uVelocity;\\n\\n    varying vec2 vUv;\\n\\n    void main() {\\n        vec4 color = texture2D(tMap, vUv) * uDissipation;\\n\\n        vec2 cursor = vUv - uMouse;\\n        cursor.x *= uAspect;\\n\\n        vec3 stamp = vec3(uVelocity * vec2(1, -1), 1.0 - pow(1.0 - min(1.0, length(uVelocity)), 3.0));\\n        float falloff = smoothstep(uFalloff, 0.0, length(cursor)) * uAlpha;\\n\\n        color.rgb = mix(color.rgb, stamp, vec3(falloff));\\n\\n        gl_FragColor = color;\\n    }\\n\";class GPGPU{constructor(t,{data:e=new Float32Array(16),geometry:s=new Triangle(t),type:i}){this.gl=t;const r=e;this.passes=[];this.geometry=s;this.dataLength=r.length/4;this.size=Math.pow(2,Math.ceil(Math.log(Math.ceil(Math.sqrt(this.dataLength)))/Math.LN2));this.coords=new Float32Array(2*this.dataLength);for(let t=0;t<this.dataLength;t++){const e=t%this.size/this.size;const s=Math.floor(t/this.size)/this.size;this.coords.set([e,s],2*t)}const n=(()=>{if(r.length===this.size*this.size*4)return r;{const t=new Float32Array(this.size*this.size*4);t.set(r);return t}})();this.uniform={value:new Texture(t,{image:n,target:t.TEXTURE_2D,type:t.FLOAT,format:t.RGBA,internalFormat:t.renderer.isWebgl2?t.RGBA32F:t.RGBA,wrapS:t.CLAMP_TO_EDGE,wrapT:t.CLAMP_TO_EDGE,generateMipmaps:false,minFilter:t.NEAREST,magFilter:t.NEAREST,width:this.size,flipY:false})};const a={width:this.size,height:this.size,type:i||t.HALF_FLOAT||t.renderer.extensions.OES_texture_half_float.HALF_FLOAT_OES,format:t.RGBA,internalFormat:t.renderer.isWebgl2?i===t.FLOAT?t.RGBA32F:t.RGBA16F:t.RGBA,minFilter:t.NEAREST,depth:false,unpackAlignment:1};this.fbo={read:new RenderTarget(t,a),write:new RenderTarget(t,a),swap:()=>{let t=this.fbo.read;this.fbo.read=this.fbo.write;this.fbo.write=t;this.uniform.value=this.fbo.read.texture}}}addPass({vertex:t=bt,fragment:e=Mt,uniforms:s={},textureUniform:i=\"tMap\",enabled:r=true}={}){s[i]=this.uniform;const n=new Program(this.gl,{vertex:t,fragment:e,uniforms:s});const a=new Mesh(this.gl,{geometry:this.geometry,program:n});const o={mesh:a,program:n,uniforms:s,enabled:r,textureUniform:i};this.passes.push(o);return o}render(){const t=this.passes.filter((t=>t.enabled));t.forEach(((t,e)=>{this.gl.renderer.render({scene:t.mesh,target:this.fbo.write,clear:false});this.fbo.swap()}))}}const bt=\"\\n    attribute vec2 uv;\\n    attribute vec2 position;\\n\\n    varying vec2 vUv;\\n\\n    void main() {\\n        vUv = uv;\\n        gl_Position = vec4(position, 0, 1);\\n    }\\n\";const Mt=\"\\n    precision highp float;\\n\\n    uniform sampler2D tMap;\\n    varying vec2 vUv;\\n\\n    void main() {\\n        gl_FragColor = texture2D(tMap, vUv);\\n    }\\n\";const vt=new Vec3;class Polyline{constructor(t,{points:e,vertex:s=At,fragment:i=Et,uniforms:r={},attributes:n={}}){this.gl=t;this.points=e;this.count=e.length;this.position=new Float32Array(3*this.count*2);this.prev=new Float32Array(3*this.count*2);this.next=new Float32Array(3*this.count*2);const a=new Float32Array(1*this.count*2);const o=new Float32Array(2*this.count*2);const h=new Uint16Array(3*(this.count-1)*2);for(let t=0;t<this.count;t++){a.set([-1,1],2*t);const e=t/(this.count-1);o.set([0,e,1,e],4*t);if(t===this.count-1)continue;const s=2*t;h.set([s+0,s+1,s+2],3*(s+0));h.set([s+2,s+1,s+3],3*(s+1))}const l=this.geometry=new Geometry(t,Object.assign(n,{position:{size:3,data:this.position},prev:{size:3,data:this.prev},next:{size:3,data:this.next},side:{size:1,data:a},uv:{size:2,data:o},index:{size:1,data:h}}));this.updateGeometry();r.uResolution||(this.resolution=r.uResolution={value:new Vec2});r.uDPR||(this.dpr=r.uDPR={value:1});r.uThickness||(this.thickness=r.uThickness={value:1});r.uColor||(this.color=r.uColor={value:new Color(\"#000\")});r.uMiter||(this.miter=r.uMiter={value:1});this.resize();const c=this.program=new Program(t,{vertex:s,fragment:i,uniforms:r});this.mesh=new Mesh(t,{geometry:l,program:c})}updateGeometry(){this.points.forEach(((t,e)=>{t.toArray(this.position,3*e*2);t.toArray(this.position,3*e*2+3);if(e){t.toArray(this.next,3*(e-1)*2);t.toArray(this.next,3*(e-1)*2+3)}else{vt.copy(t).sub(this.points[e+1]).add(t);vt.toArray(this.prev,3*e*2);vt.toArray(this.prev,3*e*2+3)}if(e===this.points.length-1){vt.copy(t).sub(this.points[e-1]).add(t);vt.toArray(this.next,3*e*2);vt.toArray(this.next,3*e*2+3)}else{t.toArray(this.prev,3*(e+1)*2);t.toArray(this.prev,3*(e+1)*2+3)}}));this.geometry.attributes.position.needsUpdate=true;this.geometry.attributes.prev.needsUpdate=true;this.geometry.attributes.next.needsUpdate=true}resize(){this.resolution&&this.resolution.value.set(this.gl.canvas.width,this.gl.canvas.height);this.dpr&&(this.dpr.value=this.gl.renderer.dpr)}}const At=\"\\n    precision highp float;\\n\\n    attribute vec3 position;\\n    attribute vec3 next;\\n    attribute vec3 prev;\\n    attribute vec2 uv;\\n    attribute float side;\\n\\n    uniform mat4 modelViewMatrix;\\n    uniform mat4 projectionMatrix;\\n    uniform vec2 uResolution;\\n    uniform float uDPR;\\n    uniform float uThickness;\\n    uniform float uMiter;\\n\\n    varying vec2 vUv;\\n\\n    vec4 getPosition() {\\n        mat4 mvp = projectionMatrix * modelViewMatrix;\\n        vec4 current = mvp * vec4(position, 1);\\n        vec4 nextPos = mvp * vec4(next, 1);\\n        vec4 prevPos = mvp * vec4(prev, 1);\\n\\n        vec2 aspect = vec2(uResolution.x / uResolution.y, 1);    \\n        vec2 currentScreen = current.xy / current.w * aspect;\\n        vec2 nextScreen = nextPos.xy / nextPos.w * aspect;\\n        vec2 prevScreen = prevPos.xy / prevPos.w * aspect;\\n    \\n        vec2 dir1 = normalize(currentScreen - prevScreen);\\n        vec2 dir2 = normalize(nextScreen - currentScreen);\\n        vec2 dir = normalize(dir1 + dir2);\\n    \\n        vec2 normal = vec2(-dir.y, dir.x);\\n        normal /= mix(1.0, max(0.3, dot(normal, vec2(-dir1.y, dir1.x))), uMiter);\\n        normal /= aspect;\\n\\n        float pixelWidthRatio = 1.0 / (uResolution.y / uDPR);\\n        float pixelWidth = current.w * pixelWidthRatio;\\n        normal *= pixelWidth * uThickness;\\n        current.xy -= normal * side;\\n    \\n        return current;\\n    }\\n\\n    void main() {\\n        vUv = uv;\\n        gl_Position = getPosition();\\n    }\\n\";const Et=\"\\n    precision highp float;\\n\\n    uniform vec3 uColor;\\n    \\n    varying vec2 vUv;\\n\\n    void main() {\\n        gl_FragColor.rgb = uColor;\\n        gl_FragColor.a = 1.0;\\n    }\\n\";class Shadow{constructor(t,{light:e=new Camera(t),width:s=1024,height:i=s}){this.gl=t;this.light=e;this.target=new RenderTarget(t,{width:s,height:i});this.targetUniform={value:this.target.texture};this.depthProgram=new Program(t,{vertex:Tt,fragment:_t,cullFace:null});this.castMeshes=[]}add({mesh:t,receive:e=true,cast:s=true,vertex:i=Tt,fragment:r=_t,uniformProjection:n=\"shadowProjectionMatrix\",uniformView:a=\"shadowViewMatrix\",uniformTexture:o=\"tShadow\"}){if(e&&!t.program.uniforms[n]){t.program.uniforms[n]={value:this.light.projectionMatrix};t.program.uniforms[a]={value:this.light.viewMatrix};t.program.uniforms[o]=this.targetUniform}if(s){this.castMeshes.push(t);t.colorProgram=t.program;t.depthProgram||(t.depthProgram=i!==Tt||r!==_t?new Program(this.gl,{vertex:i,fragment:r,cullFace:null}):this.depthProgram)}}setSize({width:t=1024,height:e=t}){this.target=new RenderTarget(this.gl,{width:t,height:e});this.targetUniform.value=this.target.texture}render({scene:t}){t.traverse((t=>{if(t.draw)if(!~this.castMeshes.indexOf(t)){t.isForceVisibility=t.visible;t.visible=false}else t.program=t.depthProgram}));this.gl.renderer.render({scene:t,camera:this.light,target:this.target});t.traverse((t=>{t.draw&&(~this.castMeshes.indexOf(t)?t.program=t.colorProgram:t.visible=t.isForceVisibility)}))}}const Tt=\"\\n    attribute vec3 position;\\n    attribute vec2 uv;\\n\\n    uniform mat4 modelViewMatrix;\\n    uniform mat4 projectionMatrix;\\n\\n    void main() {\\n        gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);\\n    }\\n\";const _t=\"\\n    precision highp float;\\n\\n    vec4 packRGBA (float v) {\\n        vec4 pack = fract(vec4(1.0, 255.0, 65025.0, 16581375.0) * v);\\n        pack -= pack.yzww * vec2(1.0 / 255.0, 0.0).xxxy;\\n        return pack;\\n    }\\n\\n    void main() {\\n        gl_FragColor = packRGBA(gl_FragCoord.z);\\n    }\\n\";class KTXTexture extends Texture{constructor(t,{buffer:e,wrapS:s=t.CLAMP_TO_EDGE,wrapT:i=t.CLAMP_TO_EDGE,anisotropy:r=0,minFilter:n,magFilter:a}={}){super(t,{generateMipmaps:false,wrapS:s,wrapT:i,anisotropy:r,minFilter:n,magFilter:a});if(e)return this.parseBuffer(e)}parseBuffer(t){const e=new KhronosTextureContainer(t);e.mipmaps.isCompressedTexture=true;this.image=e.mipmaps;this.internalFormat=e.glInternalFormat;e.numberOfMipmapLevels>1?this.minFilter===this.gl.LINEAR&&(this.minFilter=this.gl.NEAREST_MIPMAP_LINEAR):this.minFilter===this.gl.NEAREST_MIPMAP_LINEAR&&(this.minFilter=this.gl.LINEAR)}}function KhronosTextureContainer(t){const e=[171,75,84,88,32,49,49,187,13,10,26,10];const s=new Uint8Array(t,0,12);for(let t=0;t<s.length;t++)if(s[t]!==e[t])return console.error(\"File missing KTX identifier\");const i=Uint32Array.BYTES_PER_ELEMENT;const r=new DataView(t,12,13*i);const n=67305985===r.getUint32(0,true);const a=r.getUint32(1*i,n);if(0!==a)return console.warn(\"only compressed formats currently supported\");this.glInternalFormat=r.getUint32(4*i,n);let o=r.getUint32(6*i,n);let h=r.getUint32(7*i,n);this.numberOfFaces=r.getUint32(10*i,n);this.numberOfMipmapLevels=Math.max(1,r.getUint32(11*i,n));const l=r.getUint32(12*i,n);this.mipmaps=[];let c=64+l;for(let e=0;e<this.numberOfMipmapLevels;e++){const e=new Int32Array(t,c,1)[0];c+=4;for(let s=0;s<this.numberOfFaces;s++){const s=new Uint8Array(t,c,e);this.mipmaps.push({data:s,width:o,height:h});c+=e;c+=3-(e+3)%4}o>>=1;h>>=1}}let Ft={};const St=[];class TextureLoader{static load(t,{src:e,wrapS:s=t.CLAMP_TO_EDGE,wrapT:i=t.CLAMP_TO_EDGE,anisotropy:r=0,format:n=t.RGBA,internalFormat:a=n,generateMipmaps:o=true,minFilter:h=(o?t.NEAREST_MIPMAP_LINEAR:t.LINEAR),magFilter:l=t.LINEAR,premultiplyAlpha:c=false,unpackAlignment:u=4,flipY:d=true}={}){const m=this.getSupportedExtensions(t);let g=\"none\";\"string\"===typeof e&&(g=e.split(\".\").pop().split(\"?\")[0].toLowerCase());if(\"object\"===typeof e)for(const t in e)if(m.includes(t.toLowerCase())){g=t.toLowerCase();e=e[t];break}const p=e+s+i+r+n+a+o+h+l+c+u+d+t.renderer.id;if(Ft[p])return Ft[p];let f;switch(g){case\"ktx\":case\"pvrtc\":case\"s3tc\":case\"etc\":case\"etc1\":case\"astc\":f=new KTXTexture(t,{src:e,wrapS:s,wrapT:i,anisotropy:r,minFilter:h,magFilter:l});f.loaded=this.loadKTX(e,f);break;case\"webp\":case\"jpg\":case\"jpeg\":case\"png\":f=new Texture(t,{wrapS:s,wrapT:i,anisotropy:r,format:n,internalFormat:a,generateMipmaps:o,minFilter:h,magFilter:l,premultiplyAlpha:c,unpackAlignment:u,flipY:d});f.loaded=this.loadImage(t,e,f,d);break;default:console.warn(\"No supported format supplied\");f=new Texture(t)}f.ext=g;Ft[p]=f;return f}static getSupportedExtensions(t){if(St.length)return St;const e={pvrtc:t.renderer.getExtension(\"WEBGL_compressed_texture_pvrtc\")||t.renderer.getExtension(\"WEBKIT_WEBGL_compressed_texture_pvrtc\"),s3tc:t.renderer.getExtension(\"WEBGL_compressed_texture_s3tc\"),etc1:t.renderer.getExtension(\"WEBGL_compressed_texture_etc1\"),astc:t.renderer.getExtension(\"WEBGL_compressed_texture_astc\"),bc7:t.renderer.getExtension(\"EXT_texture_compression_bptc\")};for(const t in e)e[t]&&St.push(t);St.push(\"png\",\"jpg\",\"webp\");return St}static loadKTX(t,e){return fetch(t).then((t=>t.arrayBuffer())).then((t=>e.parseBuffer(t)))}static loadImage(t,e,s,i){return decodeImage(e,i).then((e=>{if(!powerOfTwo(e.width)||!powerOfTwo(e.height)){s.generateMipmaps&&(s.generateMipmaps=false);s.minFilter===t.NEAREST_MIPMAP_LINEAR&&(s.minFilter=t.LINEAR);s.wrapS===t.REPEAT&&(s.wrapS=s.wrapT=t.CLAMP_TO_EDGE)}s.image=e;s.onUpdate=()=>{e.close&&e.close();s.onUpdate=null};return e}))}static clearCache(){Ft={}}}function powerOfTwo(t){return Math.log2(t)%1===0}function decodeImage(t,e){return new Promise((s=>{if(isCreateImageBitmap())fetch(t,{mode:\"cors\"}).then((t=>t.blob())).then((t=>createImageBitmap(t,{imageOrientation:e?\"flipY\":\"none\",premultiplyAlpha:\"none\"}))).then(s);else{const e=new Image;e.crossOrigin=\"\";e.src=t;e.onload=()=>s(e)}}))}function isCreateImageBitmap(){const t=navigator.userAgent.toLowerCase().includes(\"chrome\");if(!t)return false;try{createImageBitmap}catch(t){return false}return true}const Rt=new Vec3;const Pt=new Vec3;const Lt=new Vec3;const Ct=new Vec3;const zt=new Quat;const Bt=new Quat;const Nt=new Quat;const Ot=new Quat;class GLTFAnimation{constructor(t,e=1){this.data=t;this.elapsed=0;this.weight=e;this.loop=true;this.startTime=t.reduce(((t,{times:e})=>Math.min(t,e[0])),Infinity);this.endTime=t.reduce(((t,{times:e})=>Math.max(t,e[e.length-1])),0);this.duration=this.endTime-this.startTime}update(t=1,e){const s=e?1:this.weight/t;const i=this.duration?(this.loop?this.elapsed%this.duration:Math.min(this.elapsed,this.duration-.001))+this.startTime:0;this.data.forEach((({node:t,transform:e,interpolation:r,times:n,values:a})=>{if(!this.duration){let i=Rt;let r=3;if(\"quaternion\"===e){i=zt;r=4}i.fromArray(a,0);4===r?t[e].slerp(i,s):t[e].lerp(i,s);return}const o=Math.max(1,n.findIndex((t=>t>i)))-1;const h=o+1;let l=(i-n[o])/(n[h]-n[o]);\"STEP\"===r&&(l=0);let c=Rt;let u=Pt;let d=Lt;let m=Ct;let g=3;if(\"quaternion\"===e){c=zt;u=Bt;d=Nt;m=Ot;g=4}if(\"CUBICSPLINE\"===r){c.fromArray(a,o*g*3+1*g);u.fromArray(a,o*g*3+2*g);d.fromArray(a,h*g*3+0*g);m.fromArray(a,h*g*3+1*g);c=this.cubicSplineInterpolate(l,c,u,d,m);4===g&&c.normalize()}else{c.fromArray(a,o*g);m.fromArray(a,h*g);4===g?c.slerp(m,l):c.lerp(m,l)}4===g?t[e].slerp(c,s):t[e].lerp(c,s)}))}cubicSplineInterpolate(t,e,s,i,r){const n=t*t;const a=n*t;const o=3*n-2*a;const h=a-n;const l=1-o;const c=h-n+t;for(let n=0;n<e.length;n++)e[n]=l*e[n]+c*(1-t)*s[n]+o*r[n]+h*t*i[n];return e}}const It=new Mat4;const Vt=new Mat4;class GLTFSkin extends Mesh{constructor(t,{skeleton:e,geometry:s,program:i,mode:r=t.TRIANGLES}={}){super(t,{geometry:s,program:i,mode:r});this.skeleton=e;this.program=i;this.createBoneTexture()}createBoneTexture(){if(!this.skeleton.joints.length)return;const t=Math.max(4,Math.pow(2,Math.ceil(Math.log(Math.sqrt(4*this.skeleton.joints.length))/Math.LN2)));this.boneMatrices=new Float32Array(t*t*4);this.boneTextureSize=t;this.boneTexture=new Texture(this.gl,{image:this.boneMatrices,generateMipmaps:false,type:this.gl.FLOAT,internalFormat:this.gl.renderer.isWebgl2?this.gl.RGBA32F:this.gl.RGBA,minFilter:this.gl.NEAREST,magFilter:this.gl.NEAREST,flipY:false,width:t})}updateUniforms(){this.skeleton.joints.forEach(((t,e)=>{It.multiply(t.worldMatrix,t.bindInverse);this.boneMatrices.set(It,16*e)}));this.boneTexture&&(this.boneTexture.needsUpdate=true)}draw({camera:t}={}){this.program.uniforms.boneTexture||Object.assign(this.program.uniforms,{boneTexture:{value:this.boneTexture},boneTextureSize:{value:this.boneTextureSize}});this.updateUniforms();const e=this.worldMatrix;this.worldMatrix=Vt;super.draw({camera:t});this.worldMatrix=e}}class InstancedMesh extends Mesh{constructor(...t){super(...t);this.frustumCulled=false;this.isInstancedMesh=true}addFrustumCull(){this.instanceTransforms=null;this.instanceLightmapScaleOffset=null;this.totalInstanceCount=0;this.frustumCullFunction=null;this.instanceRenderList=null;this.geometry.attributes.instanceMatrix||console.error(`mesh ${this.name?`\"${this.name}\" `:\"\"}missing instanceMatrix attribute; unable to frustum cull`);const t=this.geometry.attributes.instanceMatrix.data;this.instanceTransforms=[];for(let e=0,s=0;e<t.length;e+=16,s++){const i=new Transform;i.index=s;i.matrix.fromArray(t,e);i.decompose();this.instanceTransforms.push(i);i.setParent(this.parent)}this.totalInstanceCount=this.instanceTransforms.length;if(!!this.geometry.attributes.lightmapScaleOffset){const t=this.geometry.attributes.lightmapScaleOffset.data;for(let e=0,s=0;e<t.length;e+=4,s++)this.instanceTransforms[s].lightmapData=(new Vec4).fromArray(t,e)}this.frustumCullFunction=({camera:t})=>{this.instanceRenderList=[];this.instanceTransforms.forEach((e=>{t.frustumIntersectsMesh(this,e.worldMatrix)&&this.instanceRenderList.push(e)}));this.instanceRenderList.forEach(((t,e)=>{t.matrix.toArray(this.geometry.attributes.instanceMatrix.data,16*e);if(t.lightmapData){t.lightmapData.toArray(this.geometry.attributes.lightmapScaleOffset.data,4*e);this.geometry.attributes.lightmapScaleOffset.needsUpdate=true}}));this.geometry.instancedCount=this.instanceRenderList.length;this.geometry.attributes.instanceMatrix.needsUpdate=true};this.onBeforeRender(this.frustumCullFunction)}removeFrustumCull(){this.offBeforeRender(this.frustumCullFunction);this.geometry.instancedCount=this.totalInstanceCount;this.instanceTransforms.forEach(((t,e)=>{t.matrix.toArray(this.geometry.attributes.instanceMatrix.data,16*e);if(t.lightmapData){t.lightmapData.toArray(this.geometry.attributes.lightmapScaleOffset.data,4*e);this.geometry.attributes.lightmapScaleOffset.needsUpdate=true}}));this.geometry.attributes.instanceMatrix.needsUpdate=true}}const Ut={5121:Uint8Array,5122:Int16Array,5123:Uint16Array,5125:Uint32Array,5126:Float32Array,\"image/jpeg\":Uint8Array,\"image/png\":Uint8Array};const Dt={SCALAR:1,VEC2:2,VEC3:3,VEC4:4,MAT2:4,MAT3:9,MAT4:16};const Gt={POSITION:\"position\",NORMAL:\"normal\",TANGENT:\"tangent\",TEXCOORD_0:\"uv\",TEXCOORD_1:\"uv2\",COLOR_0:\"color\",WEIGHTS_0:\"skinWeight\",JOINTS_0:\"skinIndex\"};const $t={translation:\"position\",rotation:\"quaternion\",scale:\"scale\"};class GLTFLoader{static setBasisManager(t){this.basisManager=t}static async load(t,e){const s=e.split(\"/\").slice(0,-1).join(\"/\")+\"/\";const i=await this.parseDesc(e);return await this.parse(t,i,s)}static async parse(t,e,s){(void 0===e.asset||e.asset.version[0]<2)&&console.warn(\"Only GLTF >=2.0 supported. Attempting to parse.\");e.extensionsRequired?.includes(\"KHR_texture_basisu\")&&!this.basisManager&&console.warn(\"KHR_texture_basisu extension required but no manager supplied. Use .setBasisManager()\");const i=await this.loadBuffers(e,s);t.renderer.bindVertexArray(null);const r=this.parseBufferViews(t,e,i);const n=await this.parseImages(t,e,s,r);const a=this.parseTextures(t,e,n);const o=this.parseMaterials(t,e,a);const h=this.parseSkins(t,e,r);const l=this.parseMeshes(t,e,r,o,h);const c=this.parseNodes(t,e,l,h,n);this.populateSkins(h,c);const u=this.parseAnimations(t,e,c,r);const d=this.parseScenes(e,c);const m=d[e.scene];const g=this.parseLights(t,e,c,d);for(let t=c.length;t>=0;t--)c[t]||c.splice(t,1);return{json:e,buffers:i,bufferViews:r,images:n,textures:a,materials:o,meshes:l,nodes:c,lights:g,animations:u,scenes:d,scene:m}}static async parseDesc(t){return t.match(/\\.glb/)?await fetch(t).then((t=>t.arrayBuffer())).then((t=>this.unpackGLB(t))):await fetch(t).then((t=>t.json()))}static unpackGLB(t){const e=new Uint32Array(t,0,3);if(1179937895!==e[0])throw new Error(\"Invalid glTF asset.\");if(2!==e[1])throw new Error(`Unsupported glTF binary version, \"${e[1]}\".`);const s=new Uint32Array(t,12,2);const i=20;const r=s[0];if(1313821514!==s[1])throw new Error(\"Unexpected GLB layout.\");const n=(new TextDecoder).decode(t.slice(i,i+r));const a=JSON.parse(n);if(i+r===t.byteLength)return a;const o=new Uint32Array(t,i+r,2);if(5130562!==o[1])throw new Error(\"Unexpected GLB layout.\");const h=i+r+8;const l=o[0];const c=t.slice(h,h+l);a.buffers[0].binary=c;return a}static resolveURI(t,e){if(\"string\"!==typeof t||\"\"===t)return\"\";/^https?:\\/\\//i.test(e)&&/^\\//.test(t)&&(e=e.replace(/(^https?:\\/\\/[^\\/]+).*/i,\"$1\"));return/^(https?:)?\\/\\//i.test(t)||/^data:.*,.*$/i.test(t)||/^blob:.*$/i.test(t)?t:e+t}static async loadBuffers(t,e){return t.buffers?await Promise.all(t.buffers.map((t=>{if(t.binary)return t.binary;const s=this.resolveURI(t.uri,e);return fetch(s).then((t=>t.arrayBuffer()))}))):null}static parseBufferViews(t,e,s){if(!e.bufferViews)return null;const i=e.bufferViews.map((t=>Object.assign({},t)));e.meshes&&e.meshes.forEach((({primitives:s})=>{s.forEach((({attributes:s,indices:r})=>{for(let t in s)i[e.accessors[s[t]].bufferView].isAttribute=true;if(void 0!==r){i[e.accessors[r].bufferView].isAttribute=true;i[e.accessors[r].bufferView].target=t.ELEMENT_ARRAY_BUFFER}}))}));e.accessors.forEach((({bufferView:t,componentType:e})=>{i[t].componentType=e}));e.images&&e.images.forEach((({uri:t,bufferView:e,mimeType:s})=>{void 0!==e&&(i[e].mimeType=s)}));i.forEach((({buffer:e,byteOffset:r=0,byteLength:n,byteStride:a,target:o=t.ARRAY_BUFFER,name:h,extensions:l,extras:c,componentType:u,mimeType:d,isAttribute:m},g)=>{i[g].data=s[e].slice(r,r+n);if(!m)return;const p=t.createBuffer();t.bindBuffer(o,p);t.renderer.state.boundBuffer=p;t.bufferData(o,i[g].data,t.STATIC_DRAW);i[g].buffer=p}));return i}static async parseImages(t,e,s,i){return e.images?await Promise.all(e.images.map((async({uri:t,bufferView:e,mimeType:r,name:n})=>{if(\"image/ktx2\"===r){const{data:t}=i[e];const s=await this.basisManager.parseTexture(t);return s}const a=new Image;a.name=n;if(t)a.src=this.resolveURI(t,s);else if(void 0!==e){const{data:t}=i[e];const s=new Blob([t],{type:r});a.src=URL.createObjectURL(s)}a.ready=new Promise((t=>{a.onload=()=>t()}));return a}))):null}static parseTextures(t,e,s){return e.textures?e.textures.map((i=>this.createTexture(t,e,s,i))):null}static createTexture(t,e,s,{sampler:i,source:r,name:n,extensions:a,extras:o}){void 0!==r||!a||a.KHR_texture_basisu&&(r=a.KHR_texture_basisu.source);const h=s[r];if(h.texture)return h.texture;const l={flipY:false,wrapS:t.REPEAT,wrapT:t.REPEAT};const c=void 0!==i?e.samplers[i]:null;c&&[\"magFilter\",\"minFilter\",\"wrapS\",\"wrapT\"].forEach((t=>{c[t]&&(l[t]=c[t])}));if(h.isBasis){l.image=h;l.internalFormat=h.internalFormat;if(h.isCompressedTexture){l.generateMipmaps=false;h.length>1&&(this.minFilter=t.NEAREST_MIPMAP_LINEAR)}const e=new Texture(t,l);e.name=n;h.texture=e;return e}const u=new Texture(t,l);u.name=n;h.texture=u;h.ready.then((()=>{u.image=h}));return u}static parseMaterials(t,e,s){return e.materials?e.materials.map((({name:t,extensions:e,extras:i,pbrMetallicRoughness:r={},normalTexture:n,occlusionTexture:a,emissiveTexture:o,emissiveFactor:h=[0,0,0],alphaMode:l=\"OPAQUE\",alphaCutoff:c=.5,doubleSided:u=false})=>{const{baseColorFactor:d=[1,1,1,1],baseColorTexture:m,metallicFactor:g=1,roughnessFactor:p=1,metallicRoughnessTexture:f}=r;m&&(m.texture=s[m.index]);n&&(n.texture=s[n.index]);f&&(f.texture=s[f.index]);a&&(a.texture=s[a.index]);o&&(o.texture=s[o.index]);return{name:t,extensions:e,extras:i,baseColorFactor:d,baseColorTexture:m,metallicFactor:g,roughnessFactor:p,metallicRoughnessTexture:f,normalTexture:n,occlusionTexture:a,emissiveTexture:o,emissiveFactor:h,alphaMode:l,alphaCutoff:c,doubleSided:u}})):null}static parseSkins(t,e,s){return e.skins?e.skins.map((({inverseBindMatrices:t,skeleton:i,joints:r})=>({inverseBindMatrices:this.parseAccessor(t,e,s),skeleton:i,joints:r}))):null}static parseMeshes(t,e,s,i,r){return e.meshes?e.meshes.map((({primitives:n,weights:a,name:o,extensions:h,extras:l},c)=>{let u=0;let d=[];let m=false;e.nodes&&e.nodes.forEach((({mesh:t,skin:e,extras:s})=>{if(t===c){u++;void 0!==e&&d.push(e);s&&s.lightmap_scale_offset&&(m=true)}}));let g=!!d.length;if(g){n=d.map((a=>this.parsePrimitives(t,n,e,s,i,1,m).map((({geometry:e,program:s,mode:i})=>{const n=new GLTFSkin(t,{skeleton:r[a],geometry:e,program:s,mode:i});n.name=o;n.frustumCulled=false;return n}))));n.instanceCount=0;n.numInstances=u}else n=this.parsePrimitives(t,n,e,s,i,u,m).map((({geometry:e,program:s,mode:i})=>{const r=e.attributes.instanceMatrix?InstancedMesh:Mesh;const n=new r(t,{geometry:e,program:s,mode:i});n.name=o;n.numInstances=u;return n}));return{primitives:n,weights:a,name:o}})):null}static parsePrimitives(t,e,s,i,r,n,a){return e.map((({attributes:e,indices:o,material:h,mode:l=4,targets:c,extensions:u,extras:d})=>{const m=new NormalProgram(t);void 0!==h&&(m.gltfMaterial=r[h]);const g=new Geometry(t);for(let t in e)g.addAttribute(Gt[t],this.parseAccessor(e[t],s,i));void 0!==o&&g.addAttribute(\"index\",this.parseAccessor(o,s,i));n>1&&g.addAttribute(\"instanceMatrix\",{instanced:1,size:16,data:new Float32Array(16*n)});a&&g.addAttribute(\"lightmapScaleOffset\",{instanced:1,size:4,data:new Float32Array(4*n)});return{geometry:g,program:m,mode:l}}))}static parseAccessor(t,e,s){const{bufferView:i,byteOffset:r=0,componentType:n,normalized:a=false,count:o,type:h,min:l,max:c,sparse:u}=e.accessors[t];const{data:d,buffer:m,byteOffset:g=0,byteStride:p=0,target:f}=s[i];const x=Dt[h];const w=Ut[n];const y=w.BYTES_PER_ELEMENT;const b=p/y;const M=!!p&&b!==x;let v;if(M){const t=new w(d,r);v=new w(o*x);for(let e=0;e<o;e++){const s=b*e;const i=s+x;v.set(t.slice(s,i),e*x)}}else v=new w(d,r,o*x);return{data:v,size:x,type:n,normalized:a,buffer:m,stride:p,offset:r,count:o,min:l,max:c}}static parseNodes(t,e,s,i,r){if(!e.nodes)return null;const n=e.nodes.map((({camera:i,children:n,skin:a,matrix:o,mesh:h,rotation:l,scale:c,translation:u,weights:d,name:m,extensions:g,extras:p})=>{const f=new Transform;m&&(f.name=m);f.extras=p;f.extensions=g;p&&void 0!==p.lightmapTexture&&(p.lightmapTexture.texture=this.createTexture(t,e,r,{source:p.lightmapTexture.index}));if(o){f.matrix.copy(o);f.decompose()}else{l&&f.quaternion.copy(l);c&&f.scale.copy(c);u&&f.position.copy(u);f.updateMatrix()}let x=false;let w=true;let y=false;let b=void 0!==a;if(void 0!==h)if(b){s[h].primitives[s[h].primitives.instanceCount].forEach((t=>{t.extras=p;t.setParent(f)}));s[h].primitives.instanceCount++;if(s[h].primitives.instanceCount===s[h].primitives.numInstances){delete s[h].primitives.numInstances;delete s[h].primitives.instanceCount}}else s[h].primitives.forEach((t=>{t.extras=p;if(t.geometry.isInstanced){x=true;t.instanceCount?w=false:t.instanceCount=0;if(t.geometry.attributes.instanceMatrix){y=true;f.matrix.toArray(t.geometry.attributes.instanceMatrix.data,16*t.instanceCount)}t.geometry.attributes.lightmapScaleOffset&&t.geometry.attributes.lightmapScaleOffset.data.set(p.lightmap_scale_offset,4*t.instanceCount);t.instanceCount++;if(t.instanceCount===t.numInstances){delete t.numInstances;delete t.instanceCount;t.geometry.attributes.instanceMatrix&&(t.geometry.attributes.instanceMatrix.needsUpdate=true);t.geometry.attributes.lightmapScaleOffset&&(t.geometry.attributes.lightmapScaleOffset.needsUpdate=true)}}x?w&&t.setParent(f):t.setParent(f)}));if(y){if(!w)return null;f.matrix.identity();f.decompose()}return f}));e.nodes.forEach((({children:t=[]},e)=>{t.forEach((t=>{n[t]&&n[t].setParent(n[e])}))}));s.forEach((({primitives:t},e)=>{t.forEach(((t,e)=>{t.isInstancedMesh&&t.addFrustumCull()}))}));return n}static populateSkins(t,e){t&&t.forEach((t=>{t.joints=t.joints.map(((s,i)=>{const r=e[s];r.skin=t;r.bindInverse=new Mat4(...t.inverseBindMatrices.data.slice(16*i,16*(i+1)));return r}));t.skeleton&&(t.skeleton=e[t.skeleton])}))}static parseAnimations(t,e,s,i){return e.animations?e.animations.map((({channels:t,samplers:r,name:n},a)=>{const o=t.map((({sampler:t,target:n})=>{const{input:o,interpolation:h=\"LINEAR\",output:l}=r[t];const{node:c,path:u}=n;const d=s[c];const m=$t[u];const g=this.parseAccessor(o,e,i).data;const p=this.parseAccessor(l,e,i).data;d.animations||(d.animations=[]);d.animations.includes(a)||d.animations.push(a);return{node:d,transform:m,interpolation:h,times:g,values:p}}));return{name:n,animation:new GLTFAnimation(o)}})):null}static parseScenes(t,e){return t.scenes?t.scenes.map((({nodes:t=[],name:s,extensions:i,extras:r})=>{const n=t.reduce(((t,s)=>{e[s]&&t.push(e[s]);return t}),[]);n.extras=r;return n})):null}static parseLights(t,e,s,i){const r={directional:[],point:[],spot:[]};i.forEach((t=>t.forEach((t=>t.updateMatrixWorld()))));const n=e.extensions?.KHR_lights_punctual?.lights||[];s.forEach((t=>{if(!t?.extensions?.KHR_lights_punctual)return;const e=t.extensions.KHR_lights_punctual.light;const s=n[e];const i={name:s.name||\"\",color:{value:(new Vec3).set(s.color||1)}};void 0!==s.intensity&&i.color.value.multiply(s.intensity);switch(s.type){case\"directional\":i.direction={value:new Vec3(0,0,1).transformDirection(t.worldMatrix)};break;case\"point\":i.position={value:(new Vec3).applyMatrix4(t.worldMatrix)};i.distance={value:s.range};i.decay={value:2};break;case\"spot\":Object.assign(i,s);break}r[s.type].push(i)}));return r}}let kt;let qt=0;class BasisManager{constructor(t,e){kt||(kt=this.getSupportedFormat(e));this.onMessage=this.onMessage.bind(this);this.queue=new Map;this.initWorker(t)}getSupportedFormat(t=document.createElement(\"canvas\").getContext(\"webgl\")){return t.getExtension(\"WEBGL_compressed_texture_astc\")?\"astc\":t.getExtension(\"EXT_texture_compression_bptc\")?\"bptc\":t.getExtension(\"WEBGL_compressed_texture_s3tc\")?\"s3tc\":t.getExtension(\"WEBGL_compressed_texture_etc1\")?\"etc1\":t.getExtension(\"WEBGL_compressed_texture_pvrtc\")||t.getExtension(\"WEBKIT_WEBGL_compressed_texture_pvrtc\")?\"pvrtc\":\"none\"}initWorker(t){this.worker=new Worker(t);this.worker.onmessage=this.onMessage}onMessage({data:t}){const{id:e,error:s,image:i}=t;if(s){console.log(s,e);return}const r=this.queue.get(e);this.queue.delete(e);i.isBasis=true;r(i)}parseTexture(t){qt++;this.worker.postMessage({id:qt,buffer:t,supportedFormat:kt});let e;const s=new Promise((t=>e=t));this.queue.set(qt,e);return s}}class WireMesh extends Mesh{constructor(t,{geometry:e,wireColor:s=new Vec3(0,.75,.5),...i}={}){const r=new Program(t,{vertex:jt,fragment:Wt,uniforms:{wireColor:{value:s}}});const n=e.attributes.position.data;const a=[];const o=new Set;function addUniqueIndices(t){for(let e=0;e<t.length;e+=2)isUniqueEdgePosition(3*t[e],3*t[e+1],n,o)&&a.push(t[e],t[e+1])}if(e.attributes.index){const t=e.attributes.index.data;for(let e=0;e<t.length;e+=3)addUniqueIndices([t[e],t[e+1],t[e+1],t[e+2],t[e+2],t[e]])}else{const t=Math.floor(n.length/3);for(let e=0;e<t;e+=3)addUniqueIndices([e,e+1,e+1,e+2,e+2,e])}const h=a.length>65536?new Uint32Array(a):new Uint16Array(a);const l=new Geometry(t,{position:{...e.attributes.position},index:{data:h}});super(t,{...i,mode:t.LINES,geometry:l,program:r})}}function isUniqueEdgePosition(t,e,s,i){const r=[s[t],s[t+1],s[t+2],s[e],s[e+1],s[e+2]].join(\"#\");const n=[s[e],s[e+1],s[e+2],s[t],s[t+1],s[t+2]].join(\"#\");const a=i.size;i.add(r);i.add(n);return i.size-a===2}const jt=\"\\nattribute vec3 position;\\nuniform mat4 modelViewMatrix;\\nuniform mat4 projectionMatrix;\\n\\nvoid main() {    \\n    gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);\\n}\\n\";const Wt=\"\\nprecision highp float;\\nuniform vec3 wireColor;\\n\\nvoid main() {    \\n    gl_FragColor = vec4(wireColor, 1.0);\\n}\\n\";class AxesHelper extends Mesh{constructor(t,{size:e=1,symmetric:s=false,xColor:i=new Vec3(.96,.21,.32),yColor:r=new Vec3(.44,.64,.11),zColor:n=new Vec3(.18,.52,.89),...a}={}){const o=s?-e:0;const h=e;const l=new Float32Array([o,0,0,h,0,0,0,o,0,0,h,0,0,0,o,0,0,h]);const c=new Float32Array([...i,...i,...r,...r,...n,...n]);const u=new Geometry(t,{position:{size:3,data:l},color:{size:3,data:c}});const d=new Program(t,{vertex:Xt,fragment:Yt});super(t,{...a,mode:t.LINES,geometry:u,program:d})}}const Xt=\"\\nattribute vec3 position;\\nattribute vec3 color;\\nuniform mat4 modelViewMatrix;\\nuniform mat4 projectionMatrix;\\n\\nvarying vec3 vColor;\\n\\nvoid main() {    \\n    vColor = color;\\n    gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);\\n}\\n\";const Yt=\"\\nprecision highp float;\\nvarying vec3 vColor;\\n\\nvoid main() {    \\n    gl_FragColor = vec4(vColor, 1.0);\\n}\\n\";class GridHelper extends Mesh{constructor(t,{size:e=10,divisions:s=10,color:i=new Vec3(.75,.75,.75),...r}={}){const n=2*(e+1)*2;const a=new Float32Array(3*n);const o=e/2;for(let t=0;t<=s;t++){const i=t/s;const r=i*e-o;a.set([r,0,-o,r,0,o],12*t);a.set([-o,0,r,o,0,r],12*t+6)}const h=new Geometry(t,{position:{size:3,data:a}});const l=new Program(t,{vertex:Ht,fragment:Qt,uniforms:{color:{value:i}}});super(t,{...r,mode:t.LINES,geometry:h,program:l})}}const Ht=\"\\nattribute vec3 position;\\nuniform mat4 modelViewMatrix;\\nuniform mat4 projectionMatrix;\\n\\nvoid main() {    \\n    gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);\\n}\\n\";const Qt=\"\\nprecision highp float;\\nuniform vec3 color;\\n\\nvoid main() {    \\n    gl_FragColor = vec4(color, 1.0);\\n}\\n\";class VertexNormalsHelper extends Mesh{constructor(t,{size:e=.1,color:s=new Vec3(.86,.16,.86),...i}={}){const r=t.gl;const n=t.geometry.attributes.normal.count;const a=new Float32Array(2*n*3);const o=new Float32Array(2*n*3);const h=new Float32Array(2*n);const l=t.geometry.attributes.normal.data;const c=t.geometry.attributes.position.data;const u=new Float32Array([0,e]);for(let t=0;t<n;t++){const e=6*t;const s=3*t;const i=c.subarray(s,s+3);a.set(i,e);a.set(i,e+3);const r=l.subarray(s,s+3);o.set(r,e);o.set(r,e+3);h.set(u,2*t)}const d=new Geometry(r,{position:{size:3,data:a},normal:{size:3,data:o},size:{size:1,data:h}});const m=new Program(r,{vertex:Zt,fragment:Kt,uniforms:{color:{value:s},worldNormalMatrix:{value:new Mat3},objectWorldMatrix:{value:t.worldMatrix}}});super(r,{...i,mode:r.LINES,geometry:d,program:m});this.object=t}draw(t){this.program.uniforms.worldNormalMatrix.value.getNormalMatrix(this.object.worldMatrix);super.draw(t)}}const Zt=\"\\nattribute vec3 position;\\nattribute vec3 normal;\\nattribute float size;\\n\\nuniform mat4 viewMatrix;\\nuniform mat4 projectionMatrix;\\nuniform mat4 objectWorldMatrix;\\nuniform mat3 worldNormalMatrix;\\n\\nvoid main() {\\n    vec3 n = normalize(worldNormalMatrix * normal) * size;\\n    vec3 p = (objectWorldMatrix * vec4(position, 1.0)).xyz;\\n    gl_Position = projectionMatrix * viewMatrix * vec4(p + n, 1.0);\\n}\\n\";const Kt=\"\\nprecision highp float;\\nuniform vec3 color;\\n\\nvoid main() {    \\n    gl_FragColor = vec4(color, 1.0);\\n}\\n\";const Jt=new Vec3;const te=new Vec3;const ee=new Vec3;const se=new Vec3;const ie=new Vec3;class FaceNormalsHelper extends Mesh{constructor(t,{size:e=.1,color:s=new Vec3(.15,.86,.86),...i}={}){const r=t.gl;const n=t.geometry.attributes.position.data;const a=new Float32Array([0,e]);const o=t.geometry.attributes.index;const h=o?t=>o.data[t]:t=>t;const l=o?o.data.length:Math.floor(n.length/3);const c=Math.floor(l/3);const u=new Float32Array(2*c*3);const d=new Float32Array(2*c*3);const m=new Float32Array(2*c);for(let t=0;t<l;t+=3){Jt.fromArray(n,3*h(t+0));te.fromArray(n,3*h(t+1));ee.fromArray(n,3*h(t+2));se.add(Jt,te).add(ee).multiply(1/3);Jt.sub(Jt,te);ee.sub(ee,te);ie.cross(ee,Jt).normalize();const e=2*t;u.set(se,e);u.set(se,e+3);d.set(ie,e);d.set(ie,e+3);m.set(a,t/3*2)}const g=new Geometry(r,{position:{size:3,data:u},normal:{size:3,data:d},size:{size:1,data:m}});const p=new Program(r,{vertex:re,fragment:ne,uniforms:{color:{value:s},worldNormalMatrix:{value:new Mat3},objectWorldMatrix:{value:t.worldMatrix}}});super(r,{...i,mode:r.LINES,geometry:g,program:p});this.object=t}draw(t){this.program.uniforms.worldNormalMatrix.value.getNormalMatrix(this.object.worldMatrix);super.draw(t)}}const re=\"\\nattribute vec3 position;\\nattribute vec3 normal;\\nattribute float size;\\n\\nuniform mat4 viewMatrix;\\nuniform mat4 projectionMatrix;\\nuniform mat4 objectWorldMatrix;\\nuniform mat3 worldNormalMatrix;\\n\\nvoid main() {\\n    vec3 n = normalize(worldNormalMatrix * normal) * size;\\n    vec3 p = (objectWorldMatrix * vec4(position, 1.0)).xyz;\\n    gl_Position = projectionMatrix * viewMatrix * vec4(p + n, 1.0);\\n}\\n\";const ne=\"\\nprecision highp float;\\nuniform vec3 color;\\n\\nvoid main() {    \\n    gl_FragColor = vec4(color, 1.0);\\n}\\n\";export{Animation,AxesHelper,BasisManager,Box,Camera,Color,Curve,Cylinder,Euler,FaceNormalsHelper,Flowmap,GLTFLoader,GLTFSkin,GPGPU,Geometry,GridHelper,InstancedMesh,KTXTexture,Mat3,Mat4,Mesh,NormalProgram,Orbit,Path,Plane,Polyline,Post,Program,Quat,Raycast,RenderTarget,Renderer,Shadow,Skin,Sphere,Text,Texture,TextureLoader,Torus,Transform,Triangle,Tube,Vec2,Vec3,Vec4,VertexNormalsHelper,WireMesh};\n\n//# sourceMappingURL=index.mjs.map","import{jsx as _jsx}from\"react/jsx-runtime\";import{useEffect,useRef}from\"react\";import{Renderer,Program,Mesh,Triangle}from\"ogl\";import{addPropertyControls,ControlType}from\"framer\";const VERT=`#version 300 es\nin vec2 position;\nvoid main() {\n  gl_Position = vec4(position, 0.0, 1.0);\n}\n`;const FRAG=`#version 300 es\nprecision highp float;\n\nuniform float uTime;\nuniform float uAmplitude;\nuniform vec3 uColorStops[3];\nuniform vec2 uResolution;\nuniform float uBlend;\n\nout vec4 fragColor;\n\nvec3 permute(vec3 x) {\n  return mod(((x * 34.0) + 1.0) * x, 289.0);\n}\n\nfloat snoise(vec2 v){\n  const vec4 C = vec4(\n      0.211324865405187, 0.366025403784439,\n      -0.577350269189626, 0.024390243902439\n  );\n  vec2 i  = floor(v + dot(v, C.yy));\n  vec2 x0 = v - i + dot(i, C.xx);\n  vec2 i1 = (x0.x > x0.y) ? vec2(1.0, 0.0) : vec2(0.0, 1.0);\n  vec4 x12 = x0.xyxy + C.xxzz;\n  x12.xy -= i1;\n  i = mod(i, 289.0);\n\n  vec3 p = permute(\n      permute(i.y + vec3(0.0, i1.y, 1.0))\n    + i.x + vec3(0.0, i1.x, 1.0)\n  );\n\n  vec3 m = max(\n      0.5 - vec3(\n          dot(x0, x0),\n          dot(x12.xy, x12.xy),\n          dot(x12.zw, x12.zw)\n      ), \n      0.0\n  );\n  m = m * m;\n  m = m * m;\n\n  vec3 x = 2.0 * fract(p * C.www) - 1.0;\n  vec3 h = abs(x) - 0.5;\n  vec3 ox = floor(x + 0.5);\n  vec3 a0 = x - ox;\n  m *= 1.79284291400159 - 0.85373472095314 * (a0*a0 + h*h);\n\n  vec3 g;\n  g.x  = a0.x  * x0.x  + h.x  * x0.y;\n  g.yz = a0.yz * x12.xz + h.yz * x12.yw;\n  return 130.0 * dot(m, g);\n}\n\nstruct ColorStop {\n  vec3 color;\n  float position;\n};\n\n#define COLOR_RAMP(colors, factor, finalColor) {              \\\n  int index = 0;                                            \\\n  for (int i = 0; i < 2; i++) {                               \\\n     ColorStop currentColor = colors[i];                    \\\n     bool isInBetween = currentColor.position <= factor;    \\\n     index = int(mix(float(index), float(i), float(isInBetween))); \\\n  }                                                         \\\n  ColorStop currentColor = colors[index];                   \\\n  ColorStop nextColor = colors[index + 1];                  \\\n  float range = nextColor.position - currentColor.position; \\\n  float lerpFactor = (factor - currentColor.position) / range; \\\n  finalColor = mix(currentColor.color, nextColor.color, lerpFactor); \\\n}\n\nvoid main() {\n  vec2 uv = gl_FragCoord.xy / uResolution;\n  \n  ColorStop colors[3];\n  colors[0] = ColorStop(uColorStops[0], 0.0);\n  colors[1] = ColorStop(uColorStops[1], 0.5);\n  colors[2] = ColorStop(uColorStops[2], 1.0);\n  \n  vec3 rampColor;\n  COLOR_RAMP(colors, uv.x, rampColor);\n  \n  float height = snoise(vec2(uv.x * 2.0 + uTime * 0.1, uTime * 0.25)) * 0.5 * uAmplitude;\n  height = exp(height);\n  height = (uv.y * 2.0 - height + 0.2);\n  float intensity = 0.6 * height;\n  \n  float midPoint = 0.20;\n  float animationAlpha = smoothstep(midPoint - uBlend * 0.5, midPoint + uBlend * 0.5, intensity);\n  \n  vec3 finalColor = rampColor;\n  \n  fragColor = vec4(finalColor * animationAlpha, animationAlpha);\n}\n`;function parseColor(color,defaultColor=[1,0,0]){if(color===undefined||color===null||color===\"\"){return defaultColor;}if(typeof color===\"object\"){if(\"r\"in color&&\"g\"in color&&\"b\"in color){return[(color.r||0)/255,(color.g||0)/255,(color.b||0)/255];}if(\"r\"in color&&color.r<=1&&color.g<=1&&color.b<=1){return[color.r||0,color.g||0,color.b||0];}const values=Object.values(color).filter(v=>typeof v===\"number\");if(values.length>=3){const maxVal=Math.max(...values);if(maxVal>1){return[values[0]/255,values[1]/255,values[2]/255];}return[values[0],values[1],values[2]];}return defaultColor;}if(typeof color===\"string\"){const cleanColor=color.trim();if(cleanColor.startsWith(\"#\")){const hex=cleanColor.length===4?\"#\"+cleanColor[1]+cleanColor[1]+cleanColor[2]+cleanColor[2]+cleanColor[3]+cleanColor[3]:cleanColor;const result=/^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hex);if(result){return[parseInt(result[1],16)/255,parseInt(result[2],16)/255,parseInt(result[3],16)/255];}}const rgbMatch=cleanColor.match(/rgba?\\(\\s*(\\d+)\\s*,\\s*(\\d+)\\s*,\\s*(\\d+)/i);if(rgbMatch){return[parseInt(rgbMatch[1])/255,parseInt(rgbMatch[2])/255,parseInt(rgbMatch[3])/255];}}return defaultColor;}export default function FloatingAnimation(props){const{colorStops=[\"#FF2638\",\"#7cff67\",\"#5227FF\"],amplitude=1,blend=.5,speed=1,height=\"100%\"}=props;const propsRef=useRef(props);propsRef.current=props;const ctnDom=useRef(null);useEffect(()=>{const ctn=ctnDom.current;if(!ctn)return;const renderer=new Renderer({alpha:true,premultipliedAlpha:true,antialias:true});const gl=renderer.gl;gl.clearColor(0,0,0,0);gl.enable(gl.BLEND);gl.blendFunc(gl.ONE,gl.ONE_MINUS_SRC_ALPHA);gl.canvas.style.width=\"100%\";gl.canvas.style.height=\"100%\";gl.canvas.style.display=\"block\";gl.canvas.style.backgroundColor=\"transparent\";// Declare variables here so they can be used in resize()\nlet program;let mesh;const geometry=new Triangle(gl);if(geometry.attributes.uv){delete geometry.attributes.uv;}const defaultColors=[[1,.15,.22],[.49,1,.4],[.32,.15,1]];const colorStopsArray=(colorStops||[]).map((color,index)=>{return parseColor(color,defaultColors[index]||[1,0,0]);});program=new Program(gl,{vertex:VERT,fragment:FRAG,uniforms:{uTime:{value:0},uAmplitude:{value:amplitude},uColorStops:{value:colorStopsArray},uResolution:{value:[ctn.offsetWidth,ctn.offsetHeight]},uBlend:{value:blend}}});mesh=new Mesh(gl,{geometry,program});ctn.appendChild(gl.canvas);// 🔴 FIX: Define resize function AFTER mesh is created\nfunction resize(){if(!ctn)return;const width=ctn.offsetWidth;const height=ctn.offsetHeight;// 1. Resize the canvas buffer (this clears the canvas!)\nrenderer.setSize(width,height);// 2. Update uniforms\nif(program){program.uniforms.uResolution.value=[width,height];// Recalculate amplitude scaling instantly\nconst baseHeight=800;const currentHeight=height||1;const scaleFactor=baseHeight/currentHeight;const baseAmp=propsRef.current.amplitude??amplitude;program.uniforms.uAmplitude.value=baseAmp*scaleFactor;}// 3. 🔴 FORCE RENDER IMMEDIATELY\n// This fills the canvas with pixels before the browser can show the black frame\nrenderer.render({scene:mesh});}const resizeObserver=new ResizeObserver(()=>{resize();});resizeObserver.observe(ctn);// Initial resize\nresize();let animateId=0;const update=t=>{animateId=requestAnimationFrame(update);const currentProps=propsRef.current;const time=t*.001*(currentProps.speed??speed);if(program&&ctn){program.uniforms.uTime.value=time;// Keep amplitude logic in the loop too for smooth property updates\nconst baseHeight=800;const currentHeight=ctn.offsetHeight||1;const scaleFactor=baseHeight/currentHeight;const baseAmp=currentProps.amplitude??amplitude;program.uniforms.uAmplitude.value=baseAmp*scaleFactor;program.uniforms.uBlend.value=currentProps.blend??blend;const stops=currentProps.colorStops||colorStops;if(stops&&Array.isArray(stops)&&stops.length>=3){const newColorStops=stops.map((color,index)=>{return parseColor(color,defaultColors[index]||[1,0,0]);});program.uniforms.uColorStops.value=newColorStops;}renderer.render({scene:mesh});}};animateId=requestAnimationFrame(update);return()=>{cancelAnimationFrame(animateId);resizeObserver.disconnect();if(ctn&&gl.canvas.parentNode===ctn){ctn.removeChild(gl.canvas);}gl.getExtension(\"WEBGL_lose_context\")?.loseContext();};},[]);return /*#__PURE__*/_jsx(\"div\",{ref:ctnDom,style:{width:\"100%\",height,position:\"relative\",overflow:\"hidden\",background:\"transparent\"}});}addPropertyControls(FloatingAnimation,{colorStops:{type:ControlType.Array,title:\"Color Stops\",control:{type:ControlType.Color},defaultValue:[\"#FF2638\",\"#7cff67\",\"#5227FF\"],maxCount:3},amplitude:{type:ControlType.Number,title:\"Wave Height\",defaultValue:1,min:0,max:5,step:.1,displayStepper:true},blend:{type:ControlType.Number,title:\"Softness\",defaultValue:.5,min:0,max:1,step:.05,displayStepper:true},speed:{type:ControlType.Number,title:\"Speed\",defaultValue:1,min:0,max:5,step:.1,displayStepper:true},height:{type:ControlType.String,title:\"Animation height\",defaultValue:\"100%\"}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"FloatingAnimation\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./Floating_Animation.map"],"mappings":"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"}