first change

This commit is contained in:
2025-07-27 17:40:56 +05:45
commit f8b9a6725b
3152 changed files with 229528 additions and 0 deletions

View File

@@ -0,0 +1 @@
!function($){"use strict";const t="liquidAnimatedBlob";let e={id:"lqd-blob-"+100*Math.random().toFixed(2),width:512,height:512,radius:120,speed:1,amplitude:2,anchorPoints:4,gradientType:"linear",colors:["#50F6C2","#80FFF2"]};class n{constructor(n,i){this._defaults=e,this._name=t,this.options={...e,...i},this.DOM={},this.DOM.element=n,this.DOM.svg=this.DOM.element.querySelector("svg"),this.DOM.svg&&(this.gradientPath=`lqd-blob-gradient-${this.options.id}`,fastdomPromised.mutate((()=>{this.init()})))}init(){const{width:t,height:e,radius:n,anchorPoints:i}=this.options,a="http://www.w3.org/2000/svg",s=this.DOM.svg,o=undefined,h=undefined,r=t/2-.95*n,d=e/2-1.5*n,c=document.createElementNS(a,"defs");s.appendChild(c),c.appendChild(this.createGradient(a));const l=document.createElementNS(a,"g");s.appendChild(l);const u=document.createElementNS(a,"path");u.setAttributeNS(null,"fill",`url(${window.location.href}#${this.gradientPath})`),l.appendChild(u);const p=s&&i*n===s.hash&&s.nodes||this.createNodes(n,r,d),m=s&&i*n===s.hash&&s.controlPoints||this.createControlPoints(p,n,r,d);this.drawBlobPath(p,m,u),s.nodes=p,s.controlPoints=m,s.hash=i*n,this.update(p,m),this.drawBlobPath(p,m,u)}createGradient(t){const{colors:e}=this.options,n=document.createElementNS(t,`${this.options.gradientType}Gradient`);return n.setAttributeNS(null,"id",this.gradientPath),e.forEach(((i,a)=>{const s=document.createElementNS(t,"stop");s.setAttributeNS(null,"offset",a/(e.length-1)*100+"%"),s.setAttributeNS(null,"stop-color",i),n.appendChild(s)})),n}createNodes(t,e,n){let i=this.options.anchorPoints,a=[],s=2*t,o=2*t,h,r,d;for(let o=0;o<i;o++)h=o/(i/2)*Math.PI,r=t*Math.cos(h)+s/2,d=t*Math.sin(h)+s/2,a.push({id:o,x:r+e,y:d+n,prevX:r+e,prevY:d+n,nextX:r+e,nextY:d+n,baseX:r+e,baseY:d+n,angle:h});return a}createControlPoints(t,e,n,i){const a=4/3*Math.tan(Math.PI/(2*this.options.anchorPoints))*e,s={c1x:t[0].x,c1y:t[0].y-a,c2x:t[0].x,c2y:t[0].y+a};return t.map(((t,a)=>{if(0===a)return s;{const a=-t.angle,o=this.rotate(e+n,e+i,s.c1x,s.c1y,a),h=this.rotate(e+n,e+i,s.c2x,s.c2y,a);return{c1x:o[0],c1y:o[1],c2x:h[0],c2y:h[1]}}}))}update(t,e){const{radius:n,amplitude:i,anchorPoints:a}=this.options,s=n/Math.max(Math.min(a,7),4)*i;t.forEach(((n,i)=>{if(Math.abs(t[i].nextX-t[i].x)<10){const e=(~~(5*Math.random())-2)*Math.random()*s/2;t[i].prevX=t[i].x,t[i].nextX=t[i].baseX+e}if(Math.abs(t[i].nextY-t[i].y)<10){const e=(~~(5*Math.random())-2)*Math.random()*s/2;t[i].prevY=t[i].y,t[i].nextY=t[i].baseY+e}const a=t[i].nextX-t[i].prevX,o=t[i].nextY-t[i].prevY,h=undefined,r=undefined;let d=1-(t[i].nextX-t[i].x)/a,c=1-(t[i].nextY-t[i].y)/o;const l=this.ease(d>0?d:.2)*a,u=this.ease(c>0?c:.2)*o;t[i].x+=l,t[i].y+=u,e[i].c1x+=l,e[i].c1y+=u,e[i].c2x+=l,e[i].c2y+=u})),this.updateAF=requestAnimationFrame(this.update.bind(this,t,e))}drawBlobPath(t,e,n){n.setAttributeNS(null,"d",`\n\t\t\t\tM${t[t.length-1].x} ${t[t.length-1].y}\n\t\t\t\t${t.map(((t,n)=>`\n\t\t\t\tC ${0===n?e[e.length-1].c2x:e[n-1].c2x} ${0===n?e[e.length-1].c2y:e[n-1].c2y}, ${e[n].c1x} ${e[n].c1y}, ${t.x} ${t.y}\n\t\t\t\t`)).join("")}\n\t\t\t\tZ\n\t\t\t`),this.drawBlobPathAF=requestAnimationFrame(this.drawBlobPath.bind(this,t,e,n))}ease(t){return-(Math.cos(Math.PI/2*t*5)-2)/256*this.options.speed}rotate(t,e,n,i,a){const s=Math.cos(a),o=Math.sin(a),h=undefined,r=undefined;return[s*(n-t)+o*(i-e)+t,s*(i-e)-o*(n-t)+e]}destroy(){this.updateAF&&cancelAnimationFrame(this.updateAF),this.drawBlobPathAF&&cancelAnimationFrame(this.drawBlobPathAF)}}$.fn[t]=function(e){return this.each((function(){const i={...$(this).data("blob-options"),...e};$.data(this,"plugin_"+t)||$.data(this,"plugin_"+t,new n(this,i))}))}}(jQuery),jQuery(document).ready((function($){$("[data-lqd-animated-blob]").liquidAnimatedBlob()}));