1"use strict";(self.webpackChunkbezlimit=self.webpackChunkbezlimit||[]).push([[4258],{14258:function(e,t,i){i.r(t),i.d(t,{Animation:function(){return R}});var s=i(39437);let r="#define GLSLIFY 1\nuniform vec2 center;\nuniform vec2 size;\nvarying vec2 vUv;\n\nvoid main(){\n vUv = uv;\n gl_Position = vec4(position.xy * size + center, 0.0, 1.0);\n}\n",n="#define GLSLIFY 1\nuniform sampler2D grad;\nuniform float opacity;\nuniform float time;\nuniform float colorChange;\nvarying vec2 vUv;\n\nvoid main() {\n vec2 circle = (vUv - 0.5) * 2.0;\n float d = 1.0 - min(length(circle), 1.0);\n d *= d;\n // d = step(0.5, d);\n float c = (cos(time * colorChange) + 1.0) * 0.5;\n vec3 col = texture2D(grad, vec2(c, 0.0)).rgb;\n float a = d * opacity;\n gl_FragColor = vec4(col, a);\n // gl_FragColor = vec4(col, 0.01);\n}\n",a="#define GLSLIFY 1\nvarying vec2 vUv;\n\nvoid main(){\n vUv = vec2(0.5)+(position.xy)*0.5;\n gl_Position = vec4(position, 1.0);\n}\n";var l=2e4*Math.random();let h=class{setTexture(e){this.mesh.material.uniforms.grad.value=e}update(e,t){this.mesh.material.uniforms.time.value=l+e,this.mesh.material.uniforms.opacity.value=this.stage.pointerOpacity,this.stage.renderer.setRenderTarget(t),this.stage.renderer.render(this.scene,this.stage.camera),this.stage.renderer.setRenderTarget(null)}constructor(e,t){this.fluid=e,this.stage=t,this.scene=new s.Scene,this.mesh=new s.Mesh(new s.PlaneGeometry(1,1),new s.ShaderMaterial({vertexShader:r,fragmentShader:n,transparent:!0,blending:s.AdditiveBlending,uniforms:{time:{value:0},opacity:{value:this.stage.pointerOpacity},colorChange:{value:5e-4},grad:{value:null},size:{value:this.stage.pointerSize},center:{value:this.stage.pointer}}})),this.scene.add(this.mesh)}};function createNoise2D(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:Math.random,t=function(e){let t=new Uint8Array(512);for(let e=0;e<256;e++)t[e]=e;for(let i=0;i<255;i++){let s=i+~~(e()*(256-i)),r=t[i];t[i]=t[s],t[s]=r}for(let e=256;e<512;e++)t[e]=t[e-256];return t}(e),i=new Float64Array(t).map(e=>o[e%12*2]),s=new Float64Array(t).map(e=>o[e%12*2+1]);return function(e,r){let n,a,l=0,h=0,o=0,v=(e+r)*c,u=fastFloor(e+v),m=fastFloor(r+v),p=(u+m)*d,g=e-(u-p),f=r-(m-p);g>f?(n=1,a=0):(n=0,a=1);let y=g-n+d,w=f-a+d,S=g-1+2*d,x=f-1+2*d,z=255&u,T=255&m,M=.5-g*g-f*f;if(M>=0){let e=z+t[T],r=i[e],n=s[e];M*=M,l=M*M*(r*g+n*f)}let A=.5-y*y-w*w;if(A>=0){let e=z+n+t[T+a],r=i[e],l=s[e];A*=A,h=A*A*(r*y+l*w)}let D=.5-S*S-x*x;if(D>=0){let e=z+1+t[T+1],r=i[e],n=s[e];D*=D,o=D*D*(r*S+n*x)}return 70*(l+h+o)}}let o=new Float64Array([1,1,-1,1,1,-1,-1,-1,1,0,-1,0,1,0,-1,0,0,1,0,-1,0,1,0,-1]),c=.5*(Math.sqrt(3)-1),d=(3-Math.sqrt(3))/6,fastFloor=e=>0|Math.floor(e);var v=2e4*Math.random();let u=class{setTexture(e){this.mesh.material.uniforms.grad.value=e}update(e,t){let{landscape:i,aspect:s}=this.stage,r=.00125*e,n=i?.35:.75,a=this.noise(0,r)*n,l=this.noise(1,r)*n*s,h=i?1.25:2;this.mesh.material.uniforms.time.value=v+e,this.mesh.material.uniforms.opacity.value=(1-this.stage.elapsed)*.1,this.mesh.material.uniforms.center.value.set(a,l),this.mesh.material.uniforms.size.value.set(i?h/s:h,i?h:h*s),this.stage.renderer.setRenderTarget(t),this.stage.renderer.render(this.scene,this.stage.camera),this.stage.renderer.setRenderTarget(null)}constructor(e,t){this.fluid=e,this.stage=t,this.noise=createNoise2D(),this.scene=new s.Scene,this.mesh=new s.Mesh(new s.PlaneGeometry(1,1),new s.ShaderMaterial({vertexShader:r,fragmentShader:n,transparent:!0,blending:s.AdditiveBlending,uniforms:{time:{value:0},opacity:{value:1},colorChange:{value:8e-4},grad:{value:null},size:{value:new s.Vector2(.25,.25)},center:{value:new s.Vector2}}})),this.scene.add(this.mesh)}},m=class{update(){this.material.uniforms.delta.value=this.stage.delta,this.stage.renderer.setRenderTarget(this.velocity2),this.stage.renderer.render(this.scene,this.stage.camera),this.stage.renderer.setRenderTarget(null)}constructor(e,t,i,r){this.fluid=e,this.stage=t,this.velocity1=i,this.velocity2=r,this.scene=new s.Scene,this.material=new s.ShaderMaterial({vertexShader:a,fragmentShader:"#define GLSLIFY 1\nuniform sampler2D velocity;\nuniform vec2 size;\nuniform float delta;\n\nvarying vec2 vUv;\n\nvoid main() {\n vec2 ratio = max(size.x, size.y) / size;\n vec2 spot_new = vUv;\n vec2 vel_old = texture2D(velocity, vUv).xy;\n // back trace\n vec2 spot_old = spot_new - vel_old * delta * ratio;\n vec2 vel_new1 = texture2D(velocity, spot_old).xy;\n\n // forward trace\n vec2 spot_new2 = spot_old + vel_new1 * delta * ratio;\n\n vec2 error = spot_new2 - spot_new;\n\n vec2 spot_new3 = spot_new - error / 2.0;\n vec2 vel_2 = texture2D(velocity, spot_new3).xy;\n\n // back trace 2\n vec2 spot_old2 = spot_new3 - vel_2 * delta * ratio;\n vec2 newVel2 = texture2D(velocity, spot_old2).xy * 0.997;\n gl_FragColor = vec4(newVel2, 0.0, 1.0);\n}\n",uniforms:{size:{value:e.size},cellSize:{value:e.cellSize},velocity:{value:this.velocity1.texture},delta:{value:this.stage.delta}}}),this.geometry=new s.PlaneGeometry(2,2),this.plane=new s.Mesh(this.geometry,this.material),this.scene.add(this.plane)}}
1,p=class{update(){this.mesh.material.uniforms.center.value.copy(this.stage.pointer),this.stage.renderer.setRenderTarget(this.velocity2),this.stage.renderer.render(this.scene,this.stage.camera)}constructor(e,t,i){this.fluid=e,this.stage=t,this.velocity2=i,this.scene=new s.Scene,this.mesh=new s.Mesh(new s.PlaneGeometry(1,1),new s.ShaderMaterial({vertexShader:r,fragmentShader:"#define GLSLIFY 1\nuniform vec2 force;\nuniform vec2 center;\nuniform vec2 scale;\nvarying vec2 vUv;\n\nvoid main(){\n vec2 circle = (vUv - 0.5) * 2.0;\n float d = 1.0 - min(length(circle), 1.0);\n d *= d;\n gl_FragColor = vec4(force, 0.0, d);\n}\n",transparent:!0,blending:s.AdditiveBlending,uniforms:{size:{value:this.stage.pointerSize},force:{value:this.stage.pointerForce},center:{value:new s.Vector2}}})),this.scene.add(this.mesh)}},g=class{update(){this.material.uniforms.delta.value=this.stage.delta,this.stage.renderer.setRenderTarget(this.divergence),this.stage.renderer.render(this.scene,this.stage.camera),this.stage.renderer.setRenderTarget(null)}constructor(e,t,i,r){this.fluid=e,this.stage=t,this.velocity2=i,this.divergence=r,this.scene=new s.Scene,this.material=new s.ShaderMaterial({vertexShader:a,fragmentShader:"#define GLSLIFY 1\nuniform sampler2D velocity;\nuniform float delta;\nuniform vec2 cellSize;\nvarying vec2 vUv;\n\nvoid main(){\n float x0 = texture2D(velocity, vUv-vec2(cellSize.x, 0)).x;\n float x1 = texture2D(velocity, vUv+vec2(cellSize.x, 0)).x;\n float y0 = texture2D(velocity, vUv-vec2(0, cellSize.y)).y;\n float y1 = texture2D(velocity, vUv+vec2(0, cellSize.y)).y;\n float divergence = (x1-x0 + y1-y0) / 2.0;\n\n gl_FragColor = vec4(divergence / delta);\n}\n",uniforms:{size:{value:e.size},cellSize:{value:e.cellSize},delta:{value:this.stage.delta},velocity:{value:this.velocity2.texture}}}),this.geometry=new s.PlaneGeometry(2,2),this.plane=new s.Mesh(this.geometry,this.material),this.scene.add(this.plane)}},f=class{update(e,t){this.material.uniforms.dye.value=e.texture,this.material.uniforms.delta.value=this.stage.delta,this.material.uniforms.decay.value=this.stage.fluidDecay,this.stage.renderer.setRenderTarget(t),this.stage.renderer.render(this.scene,this.stage.camera),this.stage.renderer.setRenderTarget(null)}constructor(e,t,i,r,n){this.fluid=e,this.stage=t,this.dye1=i,this.dye2=r,this.velocity=n,this.scene=new s.Scene,this.material=new s.ShaderMaterial({vertexShader:a,fragmentShader:"#define GLSLIFY 1\nuniform sampler2D dye;\nuniform sampler2D velocity;\nuniform vec2 size;\nuniform float delta;\nuniform float decay;\n\nvarying vec2 vUv;\n\nvoid main() {\n vec2 ratio = max(size.x, size.y) / size;\n vec2 spot_new = vUv;\n vec2 vel_old = texture2D(velocity, vUv).xy;\n // back trace\n vec2 spot_old = spot_new - vel_old * delta * ratio;\n vec2 vel_new1 = texture2D(velocity, spot_old).xy;\n\n // forward trace\n vec2 spot_new2 = spot_old + vel_new1 * delta * ratio;\n\n vec2 error = spot_new2 - spot_new;\n\n vec2 spot_new3 = spot_new - error / 2.0;\n vec2 vel_2 = texture2D(velocity, spot_new3).xy;\n\n // back trace 2\n vec2 spot_old2 = spot_new3 - vel_2 * delta * ratio;\n\n vec3 color = texture2D(dye, spot_old2).rgb * decay;\n gl_FragColor = vec4(color, 1.0);\n}\n",uniforms:{size:{value:e.size},cellSize:{value:e.cellSize},dye:{value:this.dye1.texture},velocity:{value:this.velocity.texture},decay:{value:this.stage.fluidDecay},delta:{value:this.stage.delta}}}),this.geometry=new s.PlaneGeometry(2,2),this.plane=new s.Mesh(this.geometry,this.material),this.scene.add(this.plane)}},y=class{update(){let e,t;for(let i=0;i<16;i++)i%2==0?(e=this.pressure1,t=this.pressure2):(e=this.pressure2,t=this.pressure1),this.material.uniforms.pressure.value=e.texture,this.pressure=t,this.stage.renderer.setRenderTarget(t),this.stage.renderer.render(this.scene,this.stage.camera),this.stage.renderer.setRenderTarget(null)}constructor(e,t,i,r,n){this.fluid=e,this.stage=t,this.divergence=i,this.pressure1=r,this.pressure2=n,this.scene=new s.Scene,this.material=new s.ShaderMaterial({vertexShader:a,fragmentShader:"#define GLSLIFY 1\nuniform sampler2D pressure;\nuniform sampler2D divergence;\nuniform vec2 cellSize;\nvarying vec2 vUv;\n\nvoid main(){ \n // poisson equation\n float p0 = texture2D(pressure, vUv+vec2(cellSize.x * 2.0, 0)).r;\n float p1 = texture2D(pressure, vUv-vec2(cellSize.x * 2.0, 0)).r;\n float p2 = texture2D(pressure, vUv+vec2(0, cellSize.y * 2.0 )).r;\n float p3 = texture2D(pressure, vUv-vec2(0, cellSize.y * 2.0 )).r;\n float div = texture2D(divergence, vUv).r;\n\n float newP = (p0 + p1 + p2 + p3) / 4.0 - div;\n gl_FragColor = vec4(newP);\n}\n",uniforms:{cellSize:{value:this.fluid.cellSize},divergence:{value:this.divergence.texture},pressure:{value:this.pressure1.texture}}}),this.pressure=this.pressure2,this.geometry=new s.PlaneGeometry(2,2),this.plane=new s.Mesh(this.geometry,this.material),this.scene.add(this.plane)}},w=class{update(e){this.material.uniforms.delta.value=this.stage.delta,this.material.uniforms.pressure.value=e.texture,this.stage.renderer.setRenderTarget(this.velocity1),this.stage.renderer.render(this.scene,this.stage.camera),this.stage.renderer.setRenderTarget(null)}constructor(e,t,i,r,n){this.fluid=e,this.stage=t,this.velocity1=i,this.velocity2=r,this.pressure=n,this.scene=new s.Scene,this.material=new s.ShaderMaterial({vertexShader:a,fragmentShader:"#define GLSLIFY 1\nuniform sampler2D pressure;\nuniform sampler2D velocity;\nuniform vec2 cellSize;\nuniform float delta;\nvarying vec2 vUv;\n\nvoid main(){\n float step = 1.0;\n\n float p0 = texture2D(pressure, vUv+vec2(cellSize.x * step, 0)).r;\n float p1 = texture2D(pressure, vUv-vec2(cellSize.x * step, 0)).r;\n float p2 = texture2D(pressure, vUv+vec2(0, cellSize.y * step)).r;\n float p3 = texture2D(pressure, vUv-vec2(0, cellSize.y * step)).r;\n\n vec2 v = texture2D(velocity, vUv).xy;\n vec2 gradP = vec2(p0 - p1, p2 - p3) * 0.5;\n v = v - gradP * delta;\n gl_FragColor = vec4(v, 0.0, 1.0);\n}\n",uniforms:{cellSize:{value:this.fluid.cellSize},velocity:{value:this.velocity2.texture},pressure:{value:this.pressure.texture},delta:{value:this.stage.delta}}}),this.geometry=new s.PlaneGeometry(2,2),this.plane=new s.Mesh(this.geometry,this.material),this.scene.add(this.plane)}};
1var S=new s.OrthographicCamera(-1,1,1,-1,0,1),x=new s.BufferGeometry;x.setAttribute("position",new s.Float32BufferAttribute([-1,3,0,-1,-1,0,3,-1,0],3)),x.setAttribute("uv",new s.Float32BufferAttribute([0,2,0,0,2,0],2));let z=class{get material(){return this._mesh.material}set material(e){this._mesh.material=e}dispose(){this._mesh.geometry.dispose()}render(e){e.render(this._mesh,S)}constructor(){this._mesh=new s.Mesh(x)}},T=class{resize(){this.startScale=.3,this.endScale=1.25,this.stage.renderer.getDrawingBufferSize(this.material.uniforms.resolution.value),this.material.uniforms.elapsed.value=1,this.material.uniforms.smoothAmount.value=1}update(e,t){this.material.uniforms.elapsed.value=s.MathUtils.lerp(this.startScale,this.endScale,this.stage.elapsed),this.material.uniforms.diffuse.value=t,this.fsQuad.render(this.stage.renderer)}constructor(e){this.startScale=0,this.endScale=1,this.stage=e,this.fsQuad=new z,this.material=new s.ShaderMaterial({vertexShader:"#define GLSLIFY 1\nvarying vec2 vUv;\n\nvoid main(){\n vUv = vec2(0.5)+(position.xy)*0.5;\n\n gl_Position = vec4(position, 1.0);\n}\n",fragmentShader:"#define GLSLIFY 1\nuniform sampler2D diffuse;\nuniform float amount;
1\nuniform float smoothAmount;\nuniform float elapsed;\nuniform vec2 resolution;\n\nvarying vec2 vUv;\n\nfloat sdCircle(vec2 p, float r) {\n return length(p) - r;\n}\n\nfloat random(vec2 p) {\n vec2 K1 = vec2(\n 23.14069263277926, // e^pi (Gelfond's constant)\n 2.665144142690225 // 2^sqrt(2) (GelfondâSchneider constant)\n );\n return fract(cos(dot(p, K1)) * 12345.6789);\n}\n\nvec3 black = vec3(0.0);\n\nvoid main() {\n vec4 color = texture2D(diffuse, vUv);\n vec2 uvRandom = vUv;\n float aspect = resolution.y / resolution.x;\n vec2 center = (vUv * 2.0 - 1.0) * vec2(1.0, resolution.y / resolution.x);\n\n float d = sdCircle(center, elapsed);\n float c = smoothstep(0.0, smoothAmount, d);\n\n uvRandom.y *= random(vec2(uvRandom.y));\n color.rgb += random(uvRandom) * 0.00009;\n\n gl_FragColor = vec4(mix(color.rgb, black, c), amount);\n}\n",depthWrite:!1,uniforms:{diffuse:{value:null},amount:{value:.1},smoothAmount:{value:.3},elapsed:{value:this.startScale},resolution:{value:new s.Vector2}}}),this.fsQuad.material=this.material}},M=class{async load(){let e=await new s.TextureLoader().loadAsync("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAgAAAAABCAIAAAAn2YEhAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDcuMi1jMDAwIDc5LjFiNjVhNzliNCwgMjAyMi8wNi8xMy0yMjowMTowMSAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIDIzLjUgKFdpbmRvd3MpIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOjgwOEE3NjE2QjkyRDExRUU5REQ2OTcyRTQxNTQ4NDEyIiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOjgwOEE3NjE3QjkyRDExRUU5REQ2OTcyRTQxNTQ4NDEyIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6ODA4QTc2MTRCOTJEMTFFRTlERDY5NzJFNDE1NDg0MTIiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6ODA4QTc2MTVCOTJEMTFFRTlERDY5NzJFNDE1NDg0MTIiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz5Xllw2AAABE0lEQVR42oxSiRHDMAgTHqsTdOtOVlMDwQY/Se9yPkUgIZzQ+/UhgJgBJujJAg4kKwnFtWP0qqjqRWaVN1zNrSeoeMxiNZn8c6rVSs9aBGZVGI2wEeXRfUQXlrF7UG2ijq09dkjFuoU2YKOy0Uiei2q+yfMFTh/IruKQalghJ5lVPduWzBcYvl1sQL7hRUW6Ck0PIb5CmZJe3X1W1R159LfRJbeZf0HeOfSUHRkeZehIIjjr6Bv/Byt/lS9bUWo72997g1kxBmavRsz3bpwcHnE7vw1vVPLXND8SmuVsWFK07aqec9UA0cBD0hkKuFs9VCP/d/W6M88ZsS7qJqNqDsZvPA1fkm3mNU9Unas5s8f7CTAAcjoVaNXAfP4AAAAASUVORK5CYII=");this.startDye.setTexture(e),this.addDye.setTexture(e),this.initial=!0}show(){this.showGradient=!1}createRenderTarget(){let e=/(iPad|iPhone|iPod)/g.test(navigator.userAgent)?s.HalfFloatType:s.FloatType;return new s.WebGLRenderTarget(this.size.x,this.size.y,{type:e})}setSize(){let e=Math.round(.05*this.stage.width),t=Math.round(.05*this.stage.height),i=1/e,s=1/t;this.cellSize.set(i,s),this.size.set(e,t)}resize(){this.setSize(),Object.values(this.renderTargets).forEach(e=>e.setSize(this.size.x,this.size.y)),this.output.resize()}update(e){this.step++;let t=this.step%2==0;this.stage.elapsed<1&&this.startDye.update(e,t?this.renderTargets.dye1:this.renderTargets.dye2),this.advection.update(),this.addVelocity.update(),this.addDye.update(e,t?this.renderTargets.dye1:this.renderTargets.dye2),this.divergence.update(),this.poisson.update(),this.pressure.update(this.poisson.pressure),this.dye.update(t?this.renderTargets.dye1:this.renderTargets.dye2,t?this.renderTargets.dye2:this.renderTargets.dye1),this.outputTexture=t?this.renderTargets.dye2.texture:this.renderTargets.dye1.texture,this.output.update(e,this.outputTexture)}constructor(e){this.initial=!1,this.step=0,this.outputTexture=null,this.size=new s.Vector2,this.cellSize=new s.Vector2,this.showGradient=!0,this.stage=e,this.setSize(),this.renderTargets={velocity1:this.createRenderTarget(),velocity2:this.createRenderTarget(),divergence:this.createRenderTarget(),pressure1:this.createRenderTarget(),pressure2:this.createRenderTarget(),dye1:this.createRenderTarget(),dye2:this.createRenderTarget()},this.startDye=new u(this,this.stage),this.advection=new m(this,e,this.renderTargets.velocity1,this.renderTargets.velocity2),this.addVelocity=new p(this,this.stage,this.renderTargets.velocity2),this.addDye=new h(this,this.stage),this.divergence=new g(this,this.stage,this.renderTargets.velocity2,this.renderTargets.divergence),this.dye=new f(this,this.stage,this.renderTargets.dye1,this.renderTargets.dye2,this.renderTargets.velocity2),this.poisson=new y(this,this.stage,this.renderTargets.divergence,this.renderTargets.pressure1,this.renderTargets.pressure2),this.pressure=new w(this,e,this.renderTargets.velocity1,this.renderTargets.velocity2,this.renderTargets.pressure1),this.output=new T(e),this.resize(),this.load()}},A=class{update(e){let{aspect:t}=this.stage,i=3e-4*e;this.size=.0025+(Math.sin(i)+1)*.5;let r=s.MathUtils.lerp(.9,1,this.stage.elapsed),n=this.noise(0,i)*r,a=this.noise(1,i)*r/t;this.pointer.set(n,a)}constructor(e){this.pointer=new s.Vector2,this.size=.0025,this.opacity=3,this.force=3,this.stage=e,this.noise=createNoise2D()}},D=class{resize(){let{left:e,top:t,width:i,height:s}=this.node.getBoundingClientRect();this.left=e,this.top=t,this.width=i,this.height=s,this.landscape=i>s,this.aspect=this.width/this.height,this.camera.aspect=this.aspect,this.camera.updateProjectionMatrix(),this.renderer.setSize(i,s),this.camera.position.z=1/this.camera.aspect*this.camera.getFocalLength()/this.camera.getFilmHeight(),this.vFov=this.camera.position.z*this.camera.getFilmHeight()/this.camera.getFocalLength(),this.hFov=this.vFov*this.camera.aspect,this.fluid.resize()}onTouchMove(e){this.pointerMixTarget=1;let{clientX:t,clientY:i}=e.touches[0];this.onMove(t,i)}onMouseMove(e){this.pointerMixTarget=1;let{x:t,y:i}=e;this.onMove(t,i)}onMove(e,t){let i=(e-this.left)/this.width*2-1,s=-(2*((t-this.top)/this.height))+1;this.devicePointer.set(i,s)}update(e){this.pointerMixTarget*=.995,this.pointerMix+=(this.pointerMixTarget-this.pointerMix)*.01,this.pointer.lerpVectors(this.fakePointer.pointer,this.devicePointer,this.pointerMix),this.movement.subVectors(this.pointer,this.lastPointer),this.lastPointer.copy(this.pointer),this.delta=s.MathUtils.lerp(1/180,1/60,this.pointerMix),this.fluidDecay=s.MathUtils.lerp(.995,.99,this.pointerMix),this.pointerOpacity=s.MathUtils.lerp(this.fakePointer.opacity,4,this.pointerMix)*this.movement.length(),this.pointerForce.copy(this.movement).multiplyScalar(s.MathUtils.lerp(this.fakePointer.force,2,this.pointerMix));let t=s.MathUtils.lerp(this.fakePointer.size,1.25,this.pointerMix);this.pointerSize.set(this.landscape?t/this.aspect:t,this.landscape?t:t*this.aspect),this.fluid.update(e),this.fakePointer.update(e),this.renderer.render(this.scene,this.camera)}constructor(e,t){this.movement=new s.Vector2,this.pointer=new s.Vector2,this.devicePointer=new s.Vector2,this.lastPointer=new s.Vector2,this.pointerSize=new s.Vector2,this.pointerForce=new s.Vector2,this.width=0,this.height=0,this.left=0,this.top=0,this.hFov=1,this.vFov=1,this.aspect=1,this.elapsed=0,this.pointerOpacity=.4,this.landscape=!1,this.pointerMix=1,this.pointerMixTarget=1,this.fluidDecay=.99,this.delta=1/60,this.node=e,this.scene=new s.Scene,this.camera=new s.PerspectiveCamera,this.camera.position.z=10,this.renderer=new s.WebGLRenderer({antialias:!0}),this.fakePointer=new A(this),this.renderer.setPixelRatio(Math.min(2,window.devicePixelRatio)),this.renderer.autoClear=!1,this.renderer.setClearColor(0),this.dpr=this.renderer.getPixelRatio(),this.node.appendChild(this.renderer.domElement),document.addEventListener("mousemove",this.onMouseMove.bind(this)),document.addEventListener("touchstart",this.onTouchMove.bind(this)),document.addEventListener("touchmove",this.onTouchMove.bind(this),{passive:!1}),this.fluid=new M(this);let i=new ResizeObserver(this.resize.bind(this));i.observe(this.node),this.resize()}}
1,R=class{async init(){requestAnimationFrame(this.update)}update(e){var t;requestAnimationFrame(this.update),null===(t=this.stage)||void 0===t||t.update(e)}constructor(e){this.update=this.update.bind(this);let t=document.querySelector(e);t.style.cssText="width: 100vx; height: 100vh;",this.stage=new D(t,this),this.init()}}}}]);
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.