framer-motion
Version:
A simple and powerful JavaScript animation library
3 lines (2 loc) • 15.9 kB
JavaScript
import{jsxs as t,jsx as n}from"react/jsx-runtime";import{createContext as r,useContext as e,useMemo as o,Fragment as a,createElement as s,useRef as i,useInsertionEffect as l,useCallback as c,useLayoutEffect as u,useEffect as f,forwardRef as d}from"react";const p=(t,n,r)=>r>n?n:r<t?t:r,m=r({}),g=r({strict:!1}),h=r({transformPagePoint:t=>t,isStatic:!1,reducedMotion:"never"}),y=r({}),v=(t=>n=>"string"==typeof n&&n.startsWith(t))("--"),b={test:t=>"number"==typeof t,parse:parseFloat,transform:t=>t},w={...b,transform:t=>p(0,1,t)},S={...b,default:1},x=t=>Math.round(1e5*t)/1e5,k=/-?(?:\d+(?:\.\d+)?|\.\d+)/gu;const B=/^(?:#[\da-f]{3,8}|(?:rgb|hsl)a?\((?:-?[\d.]+%?[,\s]+){2}-?[\d.]+%?\s*(?:[,/]\s*)?(?:\b\d+(?:\.\d+)?|\.\d+)?%?\))$/iu,R=(t,n)=>r=>Boolean("string"==typeof r&&B.test(r)&&r.startsWith(t)||n&&!function(t){return null==t}(r)&&Object.prototype.hasOwnProperty.call(r,n)),T=(t,n,r)=>e=>{if("string"!=typeof e)return e;const[o,a,s,i]=e.match(k);return{[t]:parseFloat(o),[n]:parseFloat(a),[r]:parseFloat(s),alpha:void 0!==i?parseFloat(i):1}},I={...b,transform:t=>Math.round((t=>p(0,255,t))(t))},M={test:R("rgb","red"),parse:T("red","green","blue"),transform:({red:t,green:n,blue:r,alpha:e=1})=>"rgba("+I.transform(t)+", "+I.transform(n)+", "+I.transform(r)+", "+x(w.transform(e))+")"};const O={test:R("#"),parse:function(t){let n="",r="",e="",o="";return t.length>5?(n=t.substring(1,3),r=t.substring(3,5),e=t.substring(5,7),o=t.substring(7,9)):(n=t.substring(1,2),r=t.substring(2,3),e=t.substring(3,4),o=t.substring(4,5),n+=n,r+=r,e+=e,o+=o),{red:parseInt(n,16),green:parseInt(r,16),blue:parseInt(e,16),alpha:o?parseInt(o,16)/255:1}},transform:M.transform},P=t=>({test:n=>"string"==typeof n&&n.endsWith(t)&&1===n.split(" ").length,parse:parseFloat,transform:n=>`${n}${t}`}),E=P("deg"),W=P("%"),A=P("px"),L=(()=>({...W,parse:t=>W.parse(t)/100,transform:t=>W.transform(100*t)}))(),C={test:R("hsl","hue"),parse:T("hue","saturation","lightness"),transform:({hue:t,saturation:n,lightness:r,alpha:e=1})=>"hsla("+Math.round(t)+", "+W.transform(x(n))+", "+W.transform(x(r))+", "+x(w.transform(e))+")"},j={test:t=>M.test(t)||O.test(t)||C.test(t),parse:t=>M.test(t)?M.parse(t):C.test(t)?C.parse(t):O.parse(t),transform:t=>"string"==typeof t?t:t.hasOwnProperty("red")?M.transform(t):C.transform(t),getAnimatableNone:t=>{const n=j.parse(t);return n.alpha=0,j.transform(n)}},V=/(?:#[\da-f]{3,8}|(?:rgb|hsl)a?\((?:-?[\d.]+%?[,\s]+){2}-?[\d.]+%?\s*(?:[,/]\s*)?(?:\b\d+(?:\.\d+)?|\.\d+)?%?\))/giu;const $="number",F="color",X=/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 Y(t){const n=t.toString(),r=[],e={color:[],number:[],var:[]},o=[];let a=0;const s=n.replace(X,t=>(j.test(t)?(e.color.push(a),o.push(F),r.push(j.parse(t))):t.startsWith("var(")?(e.var.push(a),o.push("var"),r.push(t)):(e.number.push(a),o.push($),r.push(parseFloat(t))),++a,"${}")).split("${}");return{values:r,split:s,indexes:e,types:o}}function D(t){return Y(t).values}function H(t){const{split:n,types:r}=Y(t),e=n.length;return t=>{let o="";for(let a=0;a<e;a++)if(o+=n[a],void 0!==t[a]){const n=r[a];o+=n===$?x(t[a]):n===F?j.transform(t[a]):t[a]}return o}}const N=t=>"number"==typeof t?0:j.test(t)?j.getAnimatableNone(t):t;const Z={test:function(t){return isNaN(t)&&"string"==typeof t&&(t.match(k)?.length||0)+(t.match(V)?.length||0)>0},parse:D,createTransformer:H,getAnimatableNone:function(t){const n=D(t);return H(t)(n.map(N))}},z=["transformPerspective","x","y","z","translateX","translateY","translateZ","scale","scaleX","scaleY","rotate","rotateX","rotateY","rotateZ","skew","skewX","skewY"],U=(()=>new Set(z))();function q(t,n,r,e){if("function"==typeof n){const[r,e]=[{},{}];n=n(t.custom,r,e)}if("string"==typeof n&&(n=t.variants&&t.variants[n]),"function"==typeof n){const[r,e]=[{},{}];n=n(t.custom,r,e)}return n}const _=t=>Boolean(t&&t.getVelocity);const G="data-"+"framerAppearId".replace(/([A-Z])/g,t=>`-${t.toLowerCase()}`);const J={...b,transform:Math.round},K={borderWidth:A,borderTopWidth:A,borderRightWidth:A,borderBottomWidth:A,borderLeftWidth:A,borderRadius:A,borderTopLeftRadius:A,borderTopRightRadius:A,borderBottomRightRadius:A,borderBottomLeftRadius:A,width:A,maxWidth:A,height:A,maxHeight:A,top:A,right:A,bottom:A,left:A,inset:A,insetBlock:A,insetBlockStart:A,insetBlockEnd:A,insetInline:A,insetInlineStart:A,insetInlineEnd:A,padding:A,paddingTop:A,paddingRight:A,paddingBottom:A,paddingLeft:A,paddingBlock:A,paddingBlockStart:A,paddingBlockEnd:A,paddingInline:A,paddingInlineStart:A,paddingInlineEnd:A,margin:A,marginTop:A,marginRight:A,marginBottom:A,marginLeft:A,marginBlock:A,marginBlockStart:A,marginBlockEnd:A,marginInline:A,marginInlineStart:A,marginInlineEnd:A,fontSize:A,backgroundPositionX:A,backgroundPositionY:A,...{rotate:E,rotateX:E,rotateY:E,rotateZ:E,scale:S,scaleX:S,scaleY:S,scaleZ:S,skew:E,skewX:E,skewY:E,distance:A,translateX:A,translateY:A,translateZ:A,x:A,y:A,z:A,perspective:A,transformPerspective:A,opacity:w,originX:L,originY:L,originZ:A},zIndex:J,fillOpacity:w,strokeOpacity:w,numOctaves:J},Q=(t,n)=>n&&"number"==typeof t?n.transform(t):t;function tt(t){return null!==t&&"object"==typeof t&&"function"==typeof t.start}function nt(t){return"string"==typeof t||Array.isArray(t)}const rt=["initial","animate","whileInView","whileFocus","whileHover","whileTap","whileDrag","exit"];function et(t){return tt(t.animate)||rt.some(n=>nt(t[n]))}let ot={};const at={x:"translateX",y:"translateY",z:"translateZ",transformPerspective:"perspective"},st=z.length;function it(t,n,r){const{style:e,vars:o,transformOrigin:a}=t;let s=!1,i=!1;for(const t in n){const r=n[t];if(U.has(t))s=!0;else if(v(t))o[t]=r;else{const n=Q(r,K[t]);t.startsWith("origin")?(i=!0,a[t]=n):e[t]=n}}if(n.transform||(s||r?e.transform=function(t,n,r){let e="",o=!0;for(let a=0;a<st;a++){const s=z[a],i=t[s];if(void 0===i)continue;let l=!0;if("number"==typeof i)l=i===(s.startsWith("scale")?1:0);else{const t=parseFloat(i);l=s.startsWith("scale")?1===t:0===t}if(!l||r){const t=Q(i,K[s]);l||(o=!1,e+=`${at[s]||s}(${t}) `),r&&(n[s]=t)}}return e=e.trim(),r?e=r(n,o?"":e):o&&(e="none"),e}(n,t.transform,r):e.transform&&(e.transform="none")),i){const{originX:t="50%",originY:n="50%",originZ:r=0}=a;e.transformOrigin=`${t} ${n} ${r}`}}function lt(t,n){return n.max===n.min?0:t/(n.max-n.min)*100}const ct={correct:(t,n)=>{if(!n.target)return t;if("string"==typeof t){if(!A.test(t))return t;t=parseFloat(t)}return`${lt(t,n.target.x)}% ${lt(t,n.target.y)}%`}},ut={correct:(t,{treeScale:n,projectionDelta:r})=>{const e=t,o=Z.parse(t);if(o.length>5)return e;const a=Z.createTransformer(t),s="number"!=typeof o[0]?1:0,i=r.x.scale*n.x,l=r.y.scale*n.y;o[0+s]/=i,o[1+s]/=l;const c=(u=i)+(l-u)*.5;var u;return"number"==typeof o[2+s]&&(o[2+s]/=c),"number"==typeof o[3+s]&&(o[3+s]/=c),a(o)}},ft={borderRadius:{...ct,applyTo:["borderTopLeftRadius","borderTopRightRadius","borderBottomLeftRadius","borderBottomRightRadius"]},borderTopLeftRadius:ct,borderTopRightRadius:ct,borderBottomLeftRadius:ct,borderBottomRightRadius:ct,boxShadow:ut};function dt(t,{layout:n,layoutId:r}){return U.has(t)||t.startsWith("origin")||(n||void 0!==r)&&(!!ft[t]||"opacity"===t)}function pt(t,n,r){const e=t.style,o=n?.style,a={};if(!e)return a;for(const n in e)(_(e[n])||o&&_(o[n])||dt(n,t)||void 0!==r?.getValue(n)?.liveStyle)&&(a[n]=e[n]);return a}const mt={offset:"stroke-dashoffset",array:"stroke-dasharray"},gt={offset:"strokeDashoffset",array:"strokeDasharray"};const ht=["offsetDistance","offsetPath","offsetRotate","offsetAnchor"];function yt(t,{attrX:n,attrY:r,attrScale:e,pathLength:o,pathSpacing:a=1,pathOffset:s=0,...i},l,c,u){if(it(t,i,c),l)return void(t.style.viewBox&&(t.attrs.viewBox=t.style.viewBox));t.attrs=t.style,t.style={};const{attrs:f,style:d}=t;f.transform&&(d.transform=f.transform,delete f.transform),(d.transform||f.transformOrigin)&&(d.transformOrigin=f.transformOrigin??"50% 50%",delete f.transformOrigin),d.transform&&(d.transformBox=u?.transformBox??"fill-box",delete f.transformBox);for(const t of ht)void 0!==f[t]&&(d[t]=f[t],delete f[t]);void 0!==n&&(f.x=n),void 0!==r&&(f.y=r),void 0!==e&&(f.scale=e),void 0!==o&&function(t,n,r=1,e=0,o=!0){t.pathLength=1;const a=o?mt:gt;t[a.offset]=""+-e,t[a.array]=`${n} ${r}`}(f,o,a,s,!1)}function vt(t){return _(t)?t.get():t}function bt(t){const{initial:n,animate:r}=function(t,n){if(et(t)){const{initial:n,animate:r}=t;return{initial:!1===n||nt(n)?n:void 0,animate:nt(r)?r:void 0}}return!1!==t.inherit?n:{}}(t,e(y));return o(()=>({initial:n,animate:r}),[wt(n),wt(r)])}function wt(t){return Array.isArray(t)?t.join(" "):t}const St=()=>({style:{},transform:{},transformOrigin:{},vars:{}});function xt(t,n,r){for(const e in n)_(n[e])||dt(e,r)||(t[e]=n[e])}function kt(t,n){const r={};return xt(r,t.style||{},t),Object.assign(r,function({transformTemplate:t},n){return o(()=>{const r={style:{},transform:{},transformOrigin:{},vars:{}};return it(r,n,t),Object.assign({},r.vars,r.style)},[n])}(t,n)),r}function Bt(t,n){const r={},e=kt(t,n);return t.drag&&!1!==t.dragListener&&(r.draggable=!1,e.userSelect=e.WebkitUserSelect=e.WebkitTouchCallout="none",e.touchAction=!0===t.drag?"none":"pan-"+("x"===t.drag?"y":"x")),void 0===t.tabIndex&&(t.onTap||t.onTapStart||t.whileTap)&&(r.tabIndex=0),r.style=e,r}const Rt=()=>({style:{},transform:{},transformOrigin:{},vars:{},attrs:{}});function Tt(t,n,r,e){const a=o(()=>{const r={style:{},transform:{},transformOrigin:{},vars:{},attrs:{}};var o;return yt(r,n,"string"==typeof(o=e)&&"svg"===o.toLowerCase(),t.transformTemplate,t.style),{...r.attrs,style:{...r.style}}},[n]);if(t.style){const n={};xt(n,t.style,t),a.style={...n,...a.style}}return a}const It=new Set(["animate","exit","variants","initial","style","values","variants","transition","transformTemplate","custom","inherit","onBeforeLayoutMeasure","onAnimationStart","onAnimationComplete","onUpdate","onDragStart","onDrag","onDragEnd","onMeasureDragConstraints","onDirectionLock","onDragTransitionEnd","_dragX","_dragY","onHoverStart","onHoverEnd","onViewportEnter","onViewportLeave","globalTapTarget","ignoreStrict","viewport"]);function Mt(t){return t.startsWith("while")||t.startsWith("drag")&&"draggable"!==t||t.startsWith("layout")||t.startsWith("onTap")||t.startsWith("onPan")||t.startsWith("onLayout")||It.has(t)}let Ot=t=>!Mt(t);try{"function"==typeof(Pt=require("@emotion/is-prop-valid").default)&&(Ot=t=>t.startsWith("on")?!Mt(t):Pt(t))}catch{}var Pt;const Et=["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 Wt(t){return"string"==typeof t&&!t.includes("-")&&!!(Et.indexOf(t)>-1||/[A-Z]/u.test(t))}function At(t,n,r,{latestValues:e},i,l=!1,c){const u=(c??Wt(t)?Tt:Bt)(n,e,i,t),f=function(t,n,r){const e={};for(const o in t)"values"===o&&"object"==typeof t.values||(Ot(o)||!0===r&&Mt(o)||!n&&!Mt(o)||t.draggable&&o.startsWith("onDrag"))&&(e[o]=t[o]);return e}(n,"string"==typeof t,l),d=t!==a?{...f,...u,ref:r}:{},{children:p}=n,m=o(()=>_(p)?p.get():p,[p]);return s(t,{...d,children:m})}const Lt=r(null);function Ct(t,n,r,e){const o={},a=e(t,{});for(const t in a)o[t]=vt(a[t]);let{initial:s,animate:i}=t;const l=et(t),c=function(t){return Boolean(et(t)||t.variants)}(t);n&&c&&!l&&!1!==t.inherit&&(void 0===s&&(s=n.initial),void 0===i&&(i=n.animate));let u=!!r&&!1===r.initial;u=u||!1===s;const f=u?i:s;if(f&&"boolean"!=typeof f&&!tt(f)){const n=Array.isArray(f)?f:[f];for(let r=0;r<n.length;r++){const e=q(t,n[r]);if(e){const{transitionEnd:t,transition:n,...r}=e;for(const t in r){let n=r[t];if(Array.isArray(n)){n=n[u?n.length-1:0]}null!==n&&(o[t]=n)}for(const n in t)o[n]=t[n]}}}return o}const jt=t=>(n,r)=>{const o=e(y),a=e(Lt),s=()=>function({scrapeMotionValuesFromProps:t,createRenderState:n},r,e,o){return{latestValues:Ct(r,e,o,t),renderState:n()}}(t,n,o,a);return r?s():function(t){const n=i(null);return null===n.current&&(n.current=t()),n.current}(s)},Vt=jt({scrapeMotionValuesFromProps:pt,createRenderState:St}),$t=jt({scrapeMotionValuesFromProps:function(t,n,r){const e=pt(t,n,r);for(const r in t)if(_(t[r])||_(n[r])){e[-1!==z.indexOf(r)?"attr"+r.charAt(0).toUpperCase()+r.substring(1):r]=t[r]}return e},createRenderState:Rt}),Ft="undefined"!=typeof window,Xt={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"]};let Yt=!1;function Dt(){if(Yt)return;const t={};for(const n in Xt)t[n]={isEnabled:t=>Xt[n].some(n=>!!t[n])};ot=t,Yt=!0}function Ht(){return Dt(),ot}const Nt=Symbol.for("motionComponentSymbol");function Zt(t,n,r){const e=i(r);l(()=>{e.current=r});const o=i(null);return c(r=>{r&&t.onMount?.(r),n&&(r?n.mount(r):n.unmount());const a=e.current;if("function"==typeof a)if(r){const t=a(r);"function"==typeof t&&(o.current=t)}else o.current?(o.current(),o.current=null):a(r);else a&&(a.current=r)},[n])}const zt=r({});function Ut(t){return t&&"object"==typeof t&&Object.prototype.hasOwnProperty.call(t,"current")}const qt=Ft?u:f;function _t(t,n,r,o,a,s){const{visualElement:c}=e(y),u=e(g),d=e(Lt),p=e(h).reducedMotion,m=i(null),v=i(!1);o=o||u.renderer,!m.current&&o&&(m.current=o(t,{visualState:n,parent:c,props:r,presenceContext:d,blockInitialAnimation:!!d&&!1===d.initial,reducedMotionConfig:p,isSVG:s}),v.current&&m.current&&(m.current.manuallyAnimateOnMount=!0));const b=m.current,w=e(zt);!b||b.projection||!a||"html"!==b.type&&"svg"!==b.type||function(t,n,r,e){const{layoutId:o,layout:a,drag:s,dragConstraints:i,layoutScroll:l,layoutRoot:c,layoutCrossfade:u}=n;t.projection=new r(t.latestValues,n["data-framer-portal-id"]?void 0:Gt(t.parent)),t.projection.setOptions({layoutId:o,layout:a,alwaysMeasureLayout:Boolean(s)||i&&Ut(i),visualElement:t,animationType:"string"==typeof a?a:"both",initialPromotionConfig:e,crossfade:u,layoutScroll:l,layoutRoot:c})}(m.current,r,a,w);const S=i(!1);l(()=>{b&&S.current&&b.update(r,d)});const x=r[G],k=i(Boolean(x)&&!window.MotionHandoffIsComplete?.(x)&&window.MotionHasOptimisedAnimation?.(x));return qt(()=>{v.current=!0,b&&(S.current=!0,window.MotionIsMounted=!0,b.updateFeatures(),b.scheduleRenderMicrotask(),k.current&&b.animationState&&b.animationState.animateChanges())}),f(()=>{b&&(!k.current&&b.animationState&&b.animationState.animateChanges(),k.current&&(queueMicrotask(()=>{window.MotionHandoffMarkAsComplete?.(x)}),k.current=!1),b.enteringChildren=void 0)}),b}function Gt(t){if(t)return!1!==t.options.allowProjection?t.projection:Gt(t.parent)}function Jt(r,{forwardMotionProps:o=!1,type:a}={},s,i){const l=a?"svg"===a:Wt(r),c=l?$t:Vt;function u(a,s){let u;const f={...e(h),...a,layoutId:Kt(a)},{isStatic:d}=f,p=bt(a),m=c(a,d);if(!d&&Ft){e(g).strict;const t=function(t){const n=Ht(),{drag:r,layout:e}=n;if(!r&&!e)return{};const o={...r,...e};return{MeasureLayout:r?.isEnabled(t)||e?.isEnabled(t)?o.MeasureLayout:void 0,ProjectionNode:o.ProjectionNode}}(f);u=t.MeasureLayout,p.visualElement=_t(r,m,f,i,t.ProjectionNode,l)}return t(y.Provider,{value:p,children:[u&&p.visualElement?n(u,{visualElement:p.visualElement,...f}):null,At(r,a,Zt(m,p.visualElement,s),m,d,o,l)]})}u.displayName=`motion.${"string"==typeof r?r:`create(${r.displayName??r.name??""})`}`;const f=d(u);return f[Nt]=r,f}function Kt({layoutId:t}){const n=e(m).id;return n&&void 0!==t?n+"-"+t:t}function Qt(t,n){return Jt(t,n)}const tn=Qt("div");export{tn as MotionDiv};
//# sourceMappingURL=size-rollup-m.js.map