UNPKG

gsap

Version:

GSAP is a framework-agnostic JavaScript animation library that turns developers into animation superheroes. Build high-performance animations that work in **every** major browser. Animate CSS, SVG, canvas, React, Vue, WebGL, colors, strings, motion paths,

12 lines (9 loc) 7.14 kB
/*! * CustomEase 3.14.2 * https://gsap.com * * @license Copyright 2025, GreenSock. All rights reserved. * Subject to the terms at https://gsap.com/standard-license. * @author: Jack Doyle, jack@greensock.com */ !function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e=e||self).window=e.window||{})}(this,function(e){"use strict";function m(e){return Math.round(1e5*e)/1e5||0}function n(e){return e.closed=Math.abs(e[0]-e[e.length-2])<.001&&Math.abs(e[1]-e[e.length-1])<.001}var w=/[achlmqstvz]|(-?\d*\.?\d*(?:e[\-+]?\d+)?)[0-9]/gi,P=/[\+\-]?\d*\.?\d+e[\+\-]?\d+/gi,Y=Math.PI/180,k=Math.sin,B=Math.cos,F=Math.abs,J=Math.sqrt;function arcToSegment(e,t,n,s,a,r,i,o,h){if(e!==o||t!==h){n=F(n),s=F(s);var u=a%360*Y,f=B(u),c=k(u),l=Math.PI,g=2*l,m=(e-o)/2,x=(t-h)/2,d=f*m+c*x,y=-c*m+f*x,p=d*d,M=y*y,v=p/(n*n)+M/(s*s);1<v&&(n=J(v)*n,s=J(v)*s);var C=n*n,E=s*s,b=(C*E-C*M-E*p)/(C*M+E*p);b<0&&(b=0);var w=(r===i?-1:1)*J(b),P=n*y/s*w,S=-s*d/n*w,N=f*P-c*S+(e+o)/2,D=c*P+f*S+(t+h)/2,T=(d-P)/n,V=(y-S)/s,_=(-d-P)/n,q=(-y-S)/s,A=T*T+V*V,R=(V<0?-1:1)*Math.acos(T/J(A)),G=(T*q-V*_<0?-1:1)*Math.acos((T*_+V*q)/J(A*(_*_+q*q)));isNaN(G)&&(G=l),!i&&0<G?G-=g:i&&G<0&&(G+=g),R%=g,G%=g;var L,O=Math.ceil(F(G)/(g/4)),j=[],z=G/O,I=4/3*k(z/2)/(1+B(z/2)),H=f*n,Q=c*n,Z=c*-s,U=f*s;for(L=0;L<O;L++)d=B(a=R+L*z),y=k(a),T=B(a+=z),V=k(a),j.push(d-I*y,y+I*d,T+I*V,V-I*T,T,V);for(L=0;L<j.length;L+=2)d=j[L],y=j[L+1],j[L]=d*H+y*Z+N,j[L+1]=d*Q+y*U+D;return j[L-2]=o,j[L-1]=h,j}}function stringToRawPath(e){function fb(e,t,n,s){c=(n-e)/3,l=(s-t)/3,h.push(e+c,t+l,n-c,s-l,n,s)}var t,s,a,r,i,o,h,u,f,c,l,g,m,x,d,y=(e+"").replace(P,function(e){var t=+e;return t<1e-4&&-1e-4<t?0:t}).match(w)||[],p=[],M=0,v=0,C=y.length,E=0,b="ERROR: malformed path: "+e;if(!e||!isNaN(y[0])||isNaN(y[1]))return console.log(b),p;for(t=0;t<C;t++)if(m=i,isNaN(y[t])?o=(i=y[t].toUpperCase())!==y[t]:t--,a=+y[t+1],r=+y[t+2],o&&(a+=M,r+=v),t||(u=a,f=r),"M"===i)h&&(h.length<8?--p.length:E+=h.length,n(h)),M=u=a,v=f=r,h=[a,r],p.push(h),t+=2,i="L";else if("C"===i)o||(M=v=0),(h=h||[0,0]).push(a,r,M+1*y[t+3],v+1*y[t+4],M+=1*y[t+5],v+=1*y[t+6]),t+=6;else if("S"===i)c=M,l=v,"C"!==m&&"S"!==m||(c+=M-h[h.length-4],l+=v-h[h.length-3]),o||(M=v=0),h.push(c,l,a,r,M+=1*y[t+3],v+=1*y[t+4]),t+=4;else if("Q"===i)c=M+2/3*(a-M),l=v+2/3*(r-v),o||(M=v=0),M+=1*y[t+3],v+=1*y[t+4],h.push(c,l,M+2/3*(a-M),v+2/3*(r-v),M,v),t+=4;else if("T"===i)c=M-h[h.length-4],l=v-h[h.length-3],h.push(M+c,v+l,a+2/3*(M+1.5*c-a),r+2/3*(v+1.5*l-r),M=a,v=r),t+=2;else if("H"===i)fb(M,v,M=a,v),t+=1;else if("V"===i)fb(M,v,M,v=a+(o?v-M:0)),t+=1;else if("L"===i||"Z"===i)"Z"===i&&(a=u,r=f,h.closed=!0),("L"===i||.5<F(M-a)||.5<F(v-r))&&(fb(M,v,a,r),"L"===i&&(t+=2)),M=a,v=r;else if("A"===i){if(x=y[t+4],d=y[t+5],c=y[t+6],l=y[t+7],s=7,1<x.length&&(x.length<3?(l=c,c=d,s--):(l=d,c=x.substr(2),s-=2),d=x.charAt(1),x=x.charAt(0)),g=arcToSegment(M,v,+y[t+1],+y[t+2],+y[t+3],+x,+d,(o?M:0)+1*c,(o?v:0)+1*l),t+=s,g)for(s=0;s<g.length;s++)h.push(g[s]);M=h[h.length-2],v=h[h.length-1]}else console.log(b);return(t=h.length)<6?(p.pop(),t=0):n(h),p.totalPoints=E+t,p}function q(){return M||"undefined"!=typeof window&&(M=window.gsap)&&M.registerPlugin&&M}function r(){(M=q())?(M.registerEase("_CE",i.create),s=1):console.warn("Please gsap.registerPlugin(CustomEase)")}function t(e){return~~(1e3*e+(e<0?-.5:.5))/1e3}function y(e,t,n,s,a,r,i,o,h,u,f){var c,l=(e+n)/2,g=(t+s)/2,m=(n+a)/2,x=(s+r)/2,d=(a+i)/2,p=(r+o)/2,M=(l+m)/2,v=(g+x)/2,C=(m+d)/2,E=(x+p)/2,b=(M+C)/2,w=(v+E)/2,P=i-e,S=o-t,N=Math.abs((n-i)*S-(s-o)*P),D=Math.abs((a-i)*S-(r-o)*P);return u||(u=[{x:e,y:t},{x:i,y:o}],f=1),u.splice(f||u.length-1,0,{x:b,y:w}),h*(P*P+S*S)<(N+D)*(N+D)&&(c=u.length,y(e,t,l,g,M,v,b,w,h,u,f),y(b,w,C,E,d,p,i,o,h,u,f+1+(u.length-c))),u}var M,s,a,p=/[-+=.]*\d+[.e\-+]*\d*[e\-+]*\d*/gi,v=/[cLlsSaAhHvVtTqQ]/g,i=((a=CustomEase.prototype).setData=function setData(e,t){t=t||{};var n,s,a,r,i,o,h,u,f,c=(e=e||"0,0,1,1").match(p),l=1,g=[],m=[],x=t.precision||1,d=x<=1;if(this.data=e,(v.test(e)||~e.indexOf("M")&&e.indexOf("C")<0)&&(c=stringToRawPath(e)[0]),4===(n=c.length))c.unshift(0,0),c.push(1,1),n=8;else if((n-2)%6)throw"Invalid CustomEase";for(0==+c[0]&&1==+c[n-2]||function _normalize(e,t,n){n||0===n||(n=Math.max(+e[e.length-1],+e[1]));var s,a=-1*e[0],r=-n,i=e.length,o=1/(+e[i-2]+a),h=-t||(Math.abs(e[i-1]-e[1])<.01*(e[i-2]-e[0])?function _findMinimum(e){var t,n=e.length,s=1e20;for(t=1;t<n;t+=6)+e[t]<s&&(s=+e[t]);return s}(e)+r:+e[i-1]+r);for(h=h?1/h:-o,s=0;s<i;s+=2)e[s]=(+e[s]+a)*o,e[s+1]=(+e[s+1]+r)*h}(c,t.height,t.originY),this.segment=c,r=2;r<n;r+=6)s={x:+c[r-2],y:+c[r-1]},a={x:+c[r+4],y:+c[r+5]},g.push(s,a),y(s.x,s.y,+c[r],+c[r+1],+c[r+2],+c[r+3],a.x,a.y,1/(2e5*x),g,g.length-1);for(n=g.length,r=0;r<n;r++)h=g[r],u=g[r-1]||h,(h.x>u.x||u.y!==h.y&&u.x===h.x||h===u)&&h.x<=1?(u.cx=h.x-u.x,u.cy=h.y-u.y,u.n=h,u.nx=h.x,d&&1<r&&2<Math.abs(u.cy/u.cx-g[r-2].cy/g[r-2].cx)&&(d=0),u.cx<l&&(u.cx?l=u.cx:(u.cx=.001,r===n-1&&(u.x-=.001,l=Math.min(l,.001),d=0)))):(g.splice(r--,1),n--);if(i=1/(n=1/l+1|0),h=g[o=0],d){for(r=0;r<n;r++)f=r*i,h.nx<f&&(h=g[++o]),s=h.y+(f-h.x)/h.cx*h.cy,m[r]={x:f,cx:i,y:s,cy:0,nx:9},r&&(m[r-1].cy=s-m[r-1].y);o=g[g.length-1],m[n-1].cy=o.y-s,m[n-1].cx=o.x-m[m.length-1].x}else{for(r=0;r<n;r++)h.nx<r*i&&(h=g[++o]),m[r]=h;o<g.length-1&&(m[r-1]=g[g.length-2])}return this.ease=function(e){var t=m[e*n|0]||m[n-1];return t.nx<e&&(t=t.n),t.y+(e-t.x)/t.cx*t.cy},(this.ease.custom=this).id&&M&&M.registerEase(this.id,this.ease),this},a.getSVGData=function getSVGData(e){return CustomEase.getSVGData(this,e)},CustomEase.create=function create(e,t,n){return new CustomEase(e,t,n).ease},CustomEase.register=function register(e){M=e,r()},CustomEase.get=function get(e){return M.parseEase(e)},CustomEase.getSVGData=function getSVGData(e,n){var s,a,r,i,o,h,u,f,c,l,g=(n=n||{}).width||100,x=n.height||100,d=n.x||0,y=(n.y||0)+x,p=M.utils.toArray(n.path)[0];if(n.invert&&(x=-x,y=0),"string"==typeof e&&(e=M.parseEase(e)),e.custom&&(e=e.custom),e instanceof CustomEase)s=function rawPathToString(e){!function _isNumber(e){return"number"==typeof e}(e[0])||(e=[e]);var t,n,s,a,r="",i=e.length;for(n=0;n<i;n++){for(a=e[n],r+="M"+m(a[0])+","+m(a[1])+" C",t=a.length,s=2;s<t;s++)r+=m(a[s++])+","+m(a[s++])+" "+m(a[s++])+","+m(a[s++])+" "+m(a[s++])+","+m(a[s])+" ";a.closed&&(r+="z")}return r}(function transformRawPath(e,t,n,s,a,r,i){for(var o,h,u,f,c,l=e.length;-1<--l;)for(h=(o=e[l]).length,u=0;u<h;u+=2)f=o[u],c=o[u+1],o[u]=f*t+c*s+r,o[u+1]=f*n+c*a+i;return e._dirty=1,e}([e.segment.slice(0)],g,0,0,-x,d,y));else{for(s=[d,y],i=1/(u=Math.max(5,200*(n.precision||1))),f=5/(u+=2),c=t(d+i*g),a=((l=t(y+e(i)*-x))-y)/(c-d),r=2;r<u;r++)o=t(d+r*i*g),h=t(y+e(r*i)*-x),(Math.abs((h-l)/(o-c)-a)>f||r===u-1)&&(s.push(c,l),a=(h-l)/(o-c)),c=o,l=h;s="M"+s.join(",")}return p&&p.setAttribute("d",s),s},CustomEase);function CustomEase(e,t,n){s||r(),this.id=e,this.setData(t,n)}i.version="3.14.2",i.headless=!0,q()&&M.registerPlugin(i),e.CustomEase=i,e.default=i;if (typeof(window)==="undefined"||window!==e){Object.defineProperty(e,"__esModule",{value:!0})} else {delete e.default}});