framer-motion
Version:
A simple and powerful JavaScript animation library
2 lines (1 loc) • 9.79 kB
JavaScript
const t=(t,r,e)=>e>r?r:e<t?t:e;function r(t){return null!==t&&"object"==typeof t&&"function"==typeof t.start}function e(t){return"string"==typeof t||Array.isArray(t)}const s=["animate","whileInView","whileFocus","whileHover","whileTap","whileDrag","exit"],n=["initial",...s];function a(t){return r(t.animate)||n.some(r=>e(t[r]))}function o(t){return Boolean(a(t)||t.variants)}const i=t=>r=>"string"==typeof r&&r.startsWith(t),f=i("--"),l=i("var(--"),d=t=>!!l(t)&&c.test(t.split("/*")[0].trim()),c=/var\(--(?:[\w-]+\s*|[\w-]+\s*,(?:\s*[^)(\s]|\s*\((?:[^)(]|\([^)(]*\))*\))+\s*)\)$/iu;function p(t){return"string"==typeof t&&t.split("/*")[0].includes("var(--")}const u={test:t=>"number"==typeof t,parse:parseFloat,transform:t=>t},g={...u,transform:r=>t(0,1,r)},m={...u,default:1},h=t=>Math.round(1e5*t)/1e5,y=/-?(?:\d+(?:\.\d+)?|\.\d+)/gu;const b=/^(?:#[\da-f]{3,8}|(?:rgb|hsl)a?\((?:-?[\d.]+%?[,\s]+){2}-?[\d.]+%?\s*(?:[,/]\s*)?(?:\b\d+(?:\.\d+)?|\.\d+)?%?\))$/iu,v=(t,r)=>e=>Boolean("string"==typeof e&&b.test(e)&&e.startsWith(t)||r&&!function(t){return null==t}(e)&&Object.prototype.hasOwnProperty.call(e,r)),w=(t,r,e)=>s=>{if("string"!=typeof s)return s;const[n,a,o,i]=s.match(y);return{[t]:parseFloat(n),[r]:parseFloat(a),[e]:parseFloat(o),alpha:void 0!==i?parseFloat(i):1}},x={...u,transform:r=>Math.round((r=>t(0,255,r))(r))},B={test:v("rgb","red"),parse:w("red","green","blue"),transform:({red:t,green:r,blue:e,alpha:s=1})=>"rgba("+x.transform(t)+", "+x.transform(r)+", "+x.transform(e)+", "+h(g.transform(s))+")"};const k={test:v("#"),parse:function(t){let r="",e="",s="",n="";return t.length>5?(r=t.substring(1,3),e=t.substring(3,5),s=t.substring(5,7),n=t.substring(7,9)):(r=t.substring(1,2),e=t.substring(2,3),s=t.substring(3,4),n=t.substring(4,5),r+=r,e+=e,s+=s,n+=n),{red:parseInt(r,16),green:parseInt(e,16),blue:parseInt(s,16),alpha:n?parseInt(n,16)/255:1}},transform:B.transform},R=t=>({test:r=>"string"==typeof r&&r.endsWith(t)&&1===r.split(" ").length,parse:parseFloat,transform:r=>`${r}${t}`}),I=R("deg"),S=R("%"),T=R("px"),$=R("vh"),L=R("vw"),O=(()=>({...S,parse:t=>S.parse(t)/100,transform:t=>S.transform(100*t)}))(),F={test:v("hsl","hue"),parse:w("hue","saturation","lightness"),transform:({hue:t,saturation:r,lightness:e,alpha:s=1})=>"hsla("+Math.round(t)+", "+S.transform(h(r))+", "+S.transform(h(e))+", "+h(g.transform(s))+")"},W={test:t=>B.test(t)||k.test(t)||F.test(t),parse:t=>B.test(t)?B.parse(t):F.test(t)?F.parse(t):k.parse(t),transform:t=>"string"==typeof t?t:t.hasOwnProperty("red")?B.transform(t):F.transform(t),getAnimatableNone:t=>{const r=W.parse(t);return r.alpha=0,W.transform(r)}},X=/(?:#[\da-f]{3,8}|(?:rgb|hsl)a?\((?:-?[\d.]+%?[,\s]+){2}-?[\d.]+%?\s*(?:[,/]\s*)?(?:\b\d+(?:\.\d+)?|\.\d+)?%?\))/giu;const Y="number",E="color",P=/var\s*\(\s*--(?:[\w-]+\s*|[\w-]+\s*,(?:\s*[^)(\s]|\s*\((?:[^)(]|\([^)(]*\))*\))+\s*)\)|#[\da-f]{3,8}|(?:rgb|hsl)a?\((?:-?[\d.]+%?[,\s]+){2}-?[\d.]+%?\s*(?:[,/]\s*)?(?:\b\d+(?:\.\d+)?|\.\d+)?%?\)|-?(?:\d+(?:\.\d+)?|\.\d+)/giu;function A(t){const r=t.toString(),e=[],s={color:[],number:[],var:[]},n=[];let a=0;const o=r.replace(P,t=>(W.test(t)?(s.color.push(a),n.push(E),e.push(W.parse(t))):t.startsWith("var(")?(s.var.push(a),n.push("var"),e.push(t)):(s.number.push(a),n.push(Y),e.push(parseFloat(t))),++a,"${}")).split("${}");return{values:e,split:o,indexes:s,types:n}}function Z(t){return A(t).values}function V(t){const{split:r,types:e}=A(t),s=r.length;return t=>{let n="";for(let a=0;a<s;a++)if(n+=r[a],void 0!==t[a]){const r=e[a];n+=r===Y?h(t[a]):r===E?W.transform(t[a]):t[a]}return n}}const D=t=>"number"==typeof t?0:W.test(t)?W.getAnimatableNone(t):t;const H={test:function(t){return isNaN(t)&&"string"==typeof t&&(t.match(y)?.length||0)+(t.match(X)?.length||0)>0},parse:Z,createTransformer:V,getAnimatableNone:function(t){const r=Z(t);return V(t)(r.map(D))}},z=(t,r,e)=>t+(r-t)*e,C=["transformPerspective","x","y","z","translateX","translateY","translateZ","scale","scaleX","scaleY","rotate","rotateX","rotateY","rotateZ","skew","skewX","skewY"],N=(()=>new Set(C))(),M={...u,transform:Math.round},j={borderWidth:T,borderTopWidth:T,borderRightWidth:T,borderBottomWidth:T,borderLeftWidth:T,borderRadius:T,radius:T,borderTopLeftRadius:T,borderTopRightRadius:T,borderBottomRightRadius:T,borderBottomLeftRadius:T,width:T,maxWidth:T,height:T,maxHeight:T,top:T,right:T,bottom:T,left:T,inset:T,insetBlock:T,insetBlockStart:T,insetBlockEnd:T,insetInline:T,insetInlineStart:T,insetInlineEnd:T,padding:T,paddingTop:T,paddingRight:T,paddingBottom:T,paddingLeft:T,paddingBlock:T,paddingBlockStart:T,paddingBlockEnd:T,paddingInline:T,paddingInlineStart:T,paddingInlineEnd:T,margin:T,marginTop:T,marginRight:T,marginBottom:T,marginLeft:T,marginBlock:T,marginBlockStart:T,marginBlockEnd:T,marginInline:T,marginInlineStart:T,marginInlineEnd:T,backgroundPositionX:T,backgroundPositionY:T,...{rotate:I,rotateX:I,rotateY:I,rotateZ:I,scale:m,scaleX:m,scaleY:m,scaleZ:m,skew:I,skewX:I,skewY:I,distance:T,translateX:T,translateY:T,translateZ:T,x:T,y:T,z:T,perspective:T,transformPerspective:T,opacity:g,originX:O,originY:O,originZ:T},zIndex:M,fillOpacity:g,strokeOpacity:g,numOctaves:M},q=(t,r)=>r&&"number"==typeof t?r.transform(t):t,G=t=>Boolean(t&&t.getVelocity);function J(t,r){return r.max===r.min?0:t/(r.max-r.min)*100}const K={correct:(t,r)=>{if(!r.target)return t;if("string"==typeof t){if(!T.test(t))return t;t=parseFloat(t)}return`${J(t,r.target.x)}% ${J(t,r.target.y)}%`}},U={correct:(t,{treeScale:r,projectionDelta:e})=>{const s=t,n=H.parse(t);if(n.length>5)return s;const a=H.createTransformer(t),o="number"!=typeof n[0]?1:0,i=e.x.scale*r.x,f=e.y.scale*r.y;n[0+o]/=i,n[1+o]/=f;const l=z(i,f,.5);return"number"==typeof n[2+o]&&(n[2+o]/=l),"number"==typeof n[3+o]&&(n[3+o]/=l),a(n)}},Q={borderRadius:{...K,applyTo:["borderTopLeftRadius","borderTopRightRadius","borderBottomLeftRadius","borderBottomRightRadius"]},borderTopLeftRadius:K,borderTopRightRadius:K,borderBottomLeftRadius:K,borderBottomRightRadius:K,boxShadow:U};function _(t,{layout:r,layoutId:e}){return N.has(t)||t.startsWith("origin")||(r||void 0!==e)&&(!!Q[t]||"opacity"===t)}const tt={x:"translateX",y:"translateY",z:"translateZ",transformPerspective:"perspective"},rt=C.length;function et(t,r,e){const{style:s,vars:n,transformOrigin:a}=t;let o=!1,i=!1;for(const t in r){const e=r[t];if(N.has(t))o=!0;else if(f(t))n[t]=e;else{const r=q(e,j[t]);t.startsWith("origin")?(i=!0,a[t]=r):s[t]=r}}if(r.transform||(o||e?s.transform=function(t,r,e){let s="",n=!0;for(let a=0;a<rt;a++){const o=C[a],i=t[o];if(void 0===i)continue;let f=!0;if(f="number"==typeof i?i===(o.startsWith("scale")?1:0):0===parseFloat(i),!f||e){const t=q(i,j[o]);f||(n=!1,s+=`${tt[o]||o}(${t}) `),e&&(r[o]=t)}}return s=s.trim(),e?s=e(r,n?"":s):n&&(s="none"),s}(r,t.transform,e):s.transform&&(s.transform="none")),i){const{originX:t="50%",originY:r="50%",originZ:e=0}=a;s.transformOrigin=`${t} ${r} ${e}`}}const st={offset:"stroke-dashoffset",array:"stroke-dasharray"},nt={offset:"strokeDashoffset",array:"strokeDasharray"};const at=["offsetDistance","offsetPath","offsetRotate","offsetAnchor"];function ot(t,{attrX:r,attrY:e,attrScale:s,pathLength:n,pathSpacing:a=1,pathOffset:o=0,...i},f,l,d){if(et(t,i,l),f)return void(t.style.viewBox&&(t.attrs.viewBox=t.style.viewBox));t.attrs=t.style,t.style={};const{attrs:c,style:p}=t;c.transform&&(p.transform=c.transform,delete c.transform),(p.transform||c.transformOrigin)&&(p.transformOrigin=c.transformOrigin??"50% 50%",delete c.transformOrigin),p.transform&&(p.transformBox=d?.transformBox??"fill-box",delete c.transformBox);for(const t of at)void 0!==c[t]&&(p[t]=c[t],delete c[t]);void 0!==r&&(c.x=r),void 0!==e&&(c.y=e),void 0!==s&&(c.scale=s),void 0!==n&&function(t,r,e=1,s=0,n=!0){t.pathLength=1;const a=n?st:nt;t[a.offset]=T.transform(-s);const o=T.transform(r),i=T.transform(e);t[a.array]=`${o} ${i}`}(c,n,a,o,!1)}const it=t=>"string"==typeof t&&"svg"===t.toLowerCase(),ft=["animate","circle","defs","desc","ellipse","g","image","line","filter","marker","mask","metadata","path","pattern","polygon","polyline","rect","stop","switch","symbol","svg","text","tspan","use","view"];function lt(t){return"string"==typeof t&&!t.includes("-")&&!!(ft.indexOf(t)>-1||/[A-Z]/u.test(t))}function dt(t){const r=[{},{}];return t?.values.forEach((t,e)=>{r[0][e]=t.get(),r[1][e]=t.getVelocity()}),r}function ct(t,r,e,s){if("function"==typeof r){const[n,a]=dt(s);r=r(void 0!==e?e:t.custom,n,a)}if("string"==typeof r&&(r=t.variants&&t.variants[r]),"function"==typeof r){const[n,a]=dt(s);r=r(void 0!==e?e:t.custom,n,a)}return r}function pt(t,r,e){const{style:s}=t,n={};for(const a in s)(G(s[a])||r.style&&G(r.style[a])||_(a,t)||void 0!==e?.getValue(a)?.liveStyle)&&(n[a]=s[a]);return n}function ut(t,r,e){const s=pt(t,r,e);for(const e in t)if(G(t[e])||G(r[e])){s[-1!==C.indexOf(e)?"attr"+e.charAt(0).toUpperCase()+e.substring(1):e]=t[e]}return s}const gt="undefined"!=typeof window,mt={animation:["animate","variants","whileHover","whileTap","exit","whileInView","whileFocus","whileDrag"],exit:["exit"],drag:["drag","dragControls"],focus:["whileFocus"],hover:["whileHover","onHoverStart","onHoverEnd"],tap:["whileTap","onTap","onTapStart","onTapCancel"],pan:["onPan","onPanStart","onPanSessionStart","onPanEnd"],inView:["whileInView","onViewportEnter","onViewportLeave"],layout:["layout","layoutId"]},ht={};for(const t in mt)ht[t]={isEnabled:r=>mt[t].some(t=>!!r[t])};const yt=t=>t.replace(/([a-z])([A-Z])/gu,"$1-$2").toLowerCase(),bt="data-"+yt("framerAppearId");export{T as A,C as B,S as C,I as D,L as E,$ as F,y as G,j as H,p as I,N as J,n as K,s as L,f as M,yt as N,e as a,G as b,_ as c,et as d,ot as e,it as f,lt as g,o as h,a as i,r as j,ut as k,gt as l,ht as m,z as n,bt as o,B as p,F as q,ct as r,pt as s,k as t,d as u,W as v,H as w,A as x,t as y,u as z};