File: /home/adventp/www/wp-content/themes/brooklyn/js/noise/swirl.min.js
!function(t){"use strict";let{PI:i,cos:s,sin:e,abs:a,random:h}=Math,c=2*i,r=t=>t*h(),n=(t,i,s)=>(1-s)*t+s*i;window.UT_Swirl_Effect=class{constructor(i,s){this.container=i,this.config=JSON.parse(this.container.dataset.effectConfig),this.canvas="",this.ctx="",this.center=[],this.tick=0,this.simplex="",this.particleProps="",t(this.container).css("mix-blend-mode",this.config.blend_mode),this.createCanvas(),this.resize(),this.initParticles(),this.draw(),s&&"function"==typeof s&&s(this)}createCanvas(){this.canvas={a:document.createElement("canvas"),b:document.createElement("canvas")},this.canvas.b.style="\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n ",this.container.appendChild(this.canvas.a),this.ctx={a:this.canvas.a.getContext("2d"),b:this.canvas.b.getContext("2d")}}initParticles(){this.simplex=new SimplexNoise,this.particleProps=new Float32Array(6300);let t;for(t=0;t<6300;t+=9)this.initParticle(t)}initParticle(t){let i,s,e,a,h,c,n,o,l;i=r(this.canvas.a.width),s=this.center[1]+(t=>t-r(2*t))(100),e=0,a=0,h=0,c=50+r(150),n=.1+r(2),o=1+r(4),l=this.config.hue.H+r(this.config.rangeHue),this.particleProps.set([i,s,0,0,0,c,n,o,l],t)}drawParticles(){let t;for(t=0;t<6300;t+=9)this.updateParticle(t)}updateParticle(t){let i,a,h,r,o,l,p,d,x,b,g,v,P=1+t,w=2+t,f=3+t,u=4+t,m=5+t,C=6+t,k=7+t,S=8+t;a=this.particleProps[t],h=this.particleProps[P],i=8*this.simplex.noise3D(.00125*a,.00125*h,5e-4*this.tick)*c,r=n(this.particleProps[w],s(i),.5),o=n(this.particleProps[f],e(i),.5),l=this.particleProps[u],p=this.particleProps[m],x=a+r*(d=this.particleProps[C]),b=h+o*d,g=this.particleProps[k],v=this.particleProps[S],this.drawParticle(a,h,x,b,l,p,g,v),l++,this.particleProps[t]=x,this.particleProps[P]=b,this.particleProps[w]=r,this.particleProps[f]=o,this.particleProps[u]=l,(this.checkBounds(a,h)||l>p)&&this.initParticle(t)}drawParticle(t,i,s,e,h,c,r,n){this.ctx.a.save(),this.ctx.a.lineCap="round",this.ctx.a.lineWidth=r,this.ctx.a.strokeStyle=`hsla(${n},${this.config.hue.S}%,${this.config.hue.L}%,${((t,i)=>{let s=.5*i;return a((t+s)%i-s)/s})(h,c)})`,this.ctx.a.beginPath(),this.ctx.a.moveTo(t,i),this.ctx.a.lineTo(s,e),this.ctx.a.stroke(),this.ctx.a.closePath(),this.ctx.a.restore()}checkBounds(t,i){return t>this.canvas.a.width||t<0||i>this.canvas.a.height||i<0}resize(){const{clientWidth:t,clientHeight:i}=this.container;this.canvas.a.width=t,this.canvas.a.height=i,this.ctx.a.drawImage(this.canvas.b,0,0),this.canvas.b.width=t,this.canvas.b.height=i,this.ctx.b.drawImage(this.canvas.a,0,0),this.center[0]=.5*this.canvas.a.width,this.center[1]=.5*this.canvas.a.height}renderGlow(){this.ctx.b.save(),this.ctx.b.filter="blur(8px) brightness(200%)",this.ctx.b.globalCompositeOperation="lighter",this.ctx.b.drawImage(this.canvas.a,0,0),this.ctx.b.restore(),this.ctx.b.save(),this.ctx.b.filter="blur(4px) brightness(200%)",this.ctx.b.globalCompositeOperation="lighter",this.ctx.b.drawImage(this.canvas.a,0,0),this.ctx.b.restore()}renderToScreen(){this.ctx.b.save(),this.ctx.b.globalCompositeOperation="lighter",this.ctx.b.drawImage(this.canvas.a,0,0),this.ctx.b.restore()}draw(){this.tick++,this.ctx.a.clearRect(0,0,this.canvas.a.width,this.canvas.a.height),this.ctx.b.fillStyle=this.config.backgroundColor,this.ctx.b.fillRect(0,0,this.canvas.a.width,this.canvas.a.height),this.drawParticles(),this.renderGlow(),this.renderToScreen()}}}(jQuery);