motion 10.13.3 → 10.14.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -2,6 +2,24 @@
2
2
 
3
3
  Motion One adheres to [Semantic Versioning](http://semver.org/).
4
4
 
5
+ ## [10.14.2] [2022-09-07]
6
+
7
+ ### Fixed
8
+
9
+ - Fixed exit animations in Solid 1.5.
10
+
11
+ ## [10.14.1] [2022-08-23]
12
+
13
+ ### Added
14
+
15
+ - `createAnimate` export for creating `animate()` without the `Animation` polyfill. This is not a public API.
16
+
17
+ ## [10.14.0] [2022-08-17]
18
+
19
+ ### Added
20
+
21
+ - Support for animating transforms as unit values.
22
+
5
23
  ## [10.13.3] [2022-08-12]
6
24
 
7
25
  ### Fixed
@@ -1 +1 @@
1
- !function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports):"function"==typeof define&&define.amd?define(["exports"],e):e((t="undefined"!=typeof globalThis?globalThis:t||self).Motion={})}(this,(function(t){"use strict";class e{setAnimation(t){this.animation=t,null==t||t.finished.then((()=>this.clearAnimation())).catch((()=>{}))}clearAnimation(){this.animation=this.generator=void 0}}const n=new WeakMap;function i(t){return n.has(t)||n.set(t,{transforms:[],values:new Map}),n.get(t)}function r(t,e){-1===t.indexOf(e)&&t.push(e)}function o(t,e){const n=t.indexOf(e);n>-1&&t.splice(n,1)}const s=(t,e,n)=>Math.min(Math.max(n,t),e),a={duration:.3,delay:0,endDelay:0,repeat:0,easing:"ease"},c=t=>"number"==typeof t,l=t=>Array.isArray(t)&&!c(t[0]);function u(t,e){return l(t)?t[((t,e,n)=>{const i=e-t;return((n-t)%i+i)%i+t})(0,t.length,e)]:t}const f=(t,e,n)=>-n*t+n*e+t,h=()=>{},d=t=>t,g=(t,e,n)=>e-t==0?1:(n-t)/(e-t);function p(t,e){const n=t[t.length-1];for(let i=1;i<=e;i++){const r=g(0,e,i);t.push(f(n,1,r))}}function m(t){const e=[0];return p(e,t-1),e}function y(t,e=m(t.length),n=d){const i=t.length,r=i-e.length;return r>0&&p(e,r),r=>{let o=0;for(;o<i-2&&!(r<e[o+1]);o++);let a=s(0,1,g(e[o],e[o+1],r));return a=u(n,o)(a),f(t[o],t[o+1],a)}}const v=t=>Array.isArray(t)&&c(t[0]),w=t=>"object"==typeof t&&Boolean(t.createAnimation),b=t=>"function"==typeof t,E=t=>"string"==typeof t,x=t=>1e3*t,O=t=>t/1e3;function S(t,e){return e?t*(1e3/e):0}const M=["","X","Y","Z"],T={x:"translateX",y:"translateY",z:"translateZ"},A={syntax:"<angle>",initialValue:"0deg",toDefaultUnit:t=>t+"deg"},D={translate:{syntax:"<length-percentage>",initialValue:"0px",toDefaultUnit:t=>t+"px"},rotate:A,scale:{syntax:"<number>",initialValue:1,toDefaultUnit:d},skew:A},L=new Map,k=t=>`--motion-${t}`,W=["x","y","z"];["translate","scale","rotate","skew"].forEach((t=>{M.forEach((e=>{W.push(t+e),L.set(k(t+e),D[t])}))}));const j=(t,e)=>W.indexOf(t)-W.indexOf(e),R=new Set(W),z=t=>R.has(t),B=t=>t.sort(j).reduce(P,"").trim(),P=(t,e)=>`${t} ${e}(var(${k(e)}))`,V=t=>t.startsWith("--"),$=new Set;const q=(t,e,n)=>(((1-3*n+3*e)*t+(3*n-6*e))*t+3*e)*t;function C(t,e,n,i){if(t===e&&n===i)return d;const r=e=>function(t,e,n,i,r){let o,s,a=0;do{s=e+(n-e)/2,o=q(s,i,r)-t,o>0?n=s:e=s}while(Math.abs(o)>1e-7&&++a<12);return s}(e,0,1,t,n);return t=>0===t||1===t?t:q(r(t),e,i)}const F={ease:C(.25,.1,.25,1),"ease-in":C(.42,0,1,1),"ease-in-out":C(.42,0,.58,1),"ease-out":C(0,0,.58,1)},H=/\((.*?)\)/;function I(t){if(b(t))return t;if(v(t))return C(...t);if(F[t])return F[t];if(t.startsWith("steps")){const e=H.exec(t);if(e){const t=e[1].split(",");return((t,e="end")=>n=>{const i=(n="end"===e?Math.min(n,.999):Math.max(n,.001))*t,r="end"===e?Math.floor(i):Math.ceil(i);return s(0,1,r/t)})(parseFloat(t[0]),t[1].trim())}}return d}class U{constructor(t,e=[0,1],{easing:n,duration:i=a.duration,delay:r=a.delay,endDelay:o=a.endDelay,repeat:s=a.repeat,offset:c,direction:u="normal"}={}){if(this.startTime=null,this.rate=1,this.t=0,this.cancelTimestamp=null,this.easing=d,this.duration=0,this.totalDuration=0,this.repeat=0,this.playState="idle",this.finished=new Promise(((t,e)=>{this.resolve=t,this.reject=e})),n=n||a.easing,w(n)){const t=n.createAnimation(e,(()=>"0"),!0);n=t.easing,void 0!==t.keyframes&&(e=t.keyframes),void 0!==t.duration&&(i=t.duration)}this.repeat=s,this.easing=l(n)?d:I(n),this.updateDuration(i);const f=y(e,c,l(n)?n.map(I):d);this.tick=e=>{var n;let i=0;i=void 0!==this.pauseTime?this.pauseTime:(e-this.startTime)*this.rate,this.t=i,i/=1e3,i=Math.max(i-r,0),"finished"===this.playState&&void 0===this.pauseTime&&(i=this.totalDuration);const s=i/this.duration;let a=Math.floor(s),c=s%1;!c&&s>=1&&(c=1),1===c&&a--;const l=a%2;("reverse"===u||"alternate"===u&&l||"alternate-reverse"===u&&!l)&&(c=1-c);const h=i>=this.totalDuration?1:Math.min(c,1),d=f(this.easing(h));t(d);void 0===this.pauseTime&&("finished"===this.playState||i>=this.totalDuration+o)?(this.playState="finished",null===(n=this.resolve)||void 0===n||n.call(this,d)):"idle"!==this.playState&&(this.frameRequestId=requestAnimationFrame(this.tick))},this.play()}play(){const t=performance.now();this.playState="running",void 0!==this.pauseTime?this.startTime=t-this.pauseTime:this.startTime||(this.startTime=t),this.cancelTimestamp=this.startTime,this.pauseTime=void 0,this.frameRequestId=requestAnimationFrame(this.tick)}pause(){this.playState="paused",this.pauseTime=this.t}finish(){this.playState="finished",this.tick(0)}stop(){var t;this.playState="idle",void 0!==this.frameRequestId&&cancelAnimationFrame(this.frameRequestId),null===(t=this.reject)||void 0===t||t.call(this,!1)}cancel(){this.stop(),this.tick(this.cancelTimestamp)}reverse(){this.rate*=-1}commitStyles(){}updateDuration(t){this.duration=t,this.totalDuration=t*(this.repeat+1)}get currentTime(){return this.t}set currentTime(t){void 0!==this.pauseTime||0===this.rate?this.pauseTime=t:this.startTime=performance.now()-t/this.rate}get playbackRate(){return this.rate}set playbackRate(t){this.rate=t}}const _=(t,e)=>document.createElement("div").animate(t,e),N={cssRegisterProperty:()=>"undefined"!=typeof CSS&&Object.hasOwnProperty.call(CSS,"registerProperty"),waapi:()=>Object.hasOwnProperty.call(Element.prototype,"animate"),partialKeyframes:()=>{try{_({opacity:[1]})}catch(t){return!1}return!0},finished:()=>Boolean(_({opacity:[0,1]},{duration:.001}).finished),linearEasing:()=>{try{_({opacity:0},{easing:"linear(0, 1)"})}catch(t){return!1}return!0}},G={},Z={};for(const t in N)Z[t]=()=>(void 0===G[t]&&(G[t]=N[t]()),G[t]);const K=(t,e)=>b(t)?Z.linearEasing()?`linear(${((t,e)=>{let n="";const i=Math.round(e/.015);for(let e=0;e<i;e++)n+=t(g(0,i-1,e))+", ";return n.substring(0,n.length-2)})(t,e)})`:a.easing:v(t)?X(t):t,X=([t,e,n,i])=>`cubic-bezier(${t}, ${e}, ${n}, ${i})`;const Y=t=>Array.isArray(t)?t:[t];function J(t){return T[t]&&(t=T[t]),z(t)?k(t):t}const Q={get:(t,e)=>{e=J(e);let n=V(e)?t.style.getPropertyValue(e):getComputedStyle(t)[e];if(!n&&0!==n){const t=L.get(e);t&&(n=t.initialValue)}return n},set:(t,e,n)=>{e=J(e),V(e)?t.style.setProperty(e,n):t.style[e]=n}};function tt(t,e=!0){if(t&&"finished"!==t.playState)try{t.stop?t.stop():(e&&t.commitStyles(),t.cancel())}catch(t){}}function et(t,n,o,s={}){const u=window.__MOTION_DEV_TOOLS_RECORD,f=!1!==s.record&&u;let d,{duration:g=a.duration,delay:p=a.delay,endDelay:m=a.endDelay,repeat:y=a.repeat,easing:v=a.easing,direction:E,offset:O,allowWebkitAcceleration:S=!1}=s;const M=i(t),A=z(n);let D=Z.waapi();A&&((t,e)=>{T[e]&&(e=T[e]);const{transforms:n}=i(t);r(n,e),t.style.transform=B(n)})(t,n);const k=J(n),W=function(t,n){return t.has(n)||t.set(n,new e),t.get(n)}(M.values,k),j=L.get(k);return tt(W.animation,!(w(v)&&W.generator)&&!1!==s.record),()=>{const e=()=>{var e,n;return null!==(n=null!==(e=Q.get(t,k))&&void 0!==e?e:null==j?void 0:j.initialValue)&&void 0!==n?n:0};let i=function(t,e){for(let n=0;n<t.length;n++)null===t[n]&&(t[n]=n?t[n-1]:e());return t}(Y(o),e);if(w(v)){const t=v.createAnimation(i,e,A,k,W);v=t.easing,void 0!==t.keyframes&&(i=t.keyframes),void 0!==t.duration&&(g=t.duration)}if(V(k)&&(Z.cssRegisterProperty()?function(t){if(!$.has(t)){$.add(t);try{const{syntax:e,initialValue:n}=L.has(t)?L.get(t):{};CSS.registerProperty({name:t,inherits:!1,syntax:e,initialValue:n})}catch(t){}}}(k):D=!1),A&&!Z.linearEasing()&&(b(v)||l(v)&&v.some(b))&&(D=!1),D){j&&(i=i.map((t=>c(t)?j.toDefaultUnit(t):t))),1!==i.length||Z.partialKeyframes()&&!f||i.unshift(e());const n={delay:x(p),duration:x(g),endDelay:x(m),easing:l(v)?void 0:K(v,g),direction:E,iterations:y+1,fill:"both"};d=t.animate({[k]:i,offset:O,easing:l(v)?v.map((t=>K(t,g))):void 0},n),d.finished||(d.finished=new Promise(((t,e)=>{d.onfinish=t,d.oncancel=e})));const r=i[i.length-1];d.finished.then((()=>{Q.set(t,k,r),d.cancel()})).catch(h),S||(d.playbackRate=1.000001)}else if(A){i=i.map((t=>"string"==typeof t?parseFloat(t):t)),1===i.length&&i.unshift(parseFloat(e()));d=new U((e=>{j&&(e=j.toDefaultUnit(e)),Q.set(t,k,e)}),i,Object.assign(Object.assign({},s),{duration:g,easing:v}))}else{const e=i[i.length-1];Q.set(t,k,j&&c(e)?j.toDefaultUnit(e):e)}return f&&u(t,n,i,{duration:g,delay:p,easing:v,repeat:y,offset:O},"motion-one"),W.setAnimation(d),d}}const nt=(t,e)=>t[e]?Object.assign(Object.assign({},t),t[e]):Object.assign({},t);function it(t,e){var n;return"string"==typeof t?e?(null!==(n=e[t])&&void 0!==n||(e[t]=document.querySelectorAll(t)),t=e[t]):t=document.querySelectorAll(t):t instanceof Element&&(t=[t]),Array.from(t||[])}const rt=t=>t(),ot=(t,e,n=a.duration)=>new Proxy({animations:t.map(rt).filter(Boolean),duration:n,options:e},st),st={get:(t,e)=>{const n=t.animations[0];switch(e){case"duration":return t.duration;case"currentTime":return O((null==n?void 0:n[e])||0);case"playbackRate":case"playState":return null==n?void 0:n[e];case"finished":return t.finished||(t.finished=Promise.all(t.animations.map(at)).catch(h)),t.finished;case"stop":return()=>{t.animations.forEach((t=>tt(t)))};case"forEachNative":return e=>{t.animations.forEach((n=>e(n,t)))};default:return void 0===(null==n?void 0:n[e])?void 0:()=>t.animations.forEach((t=>t[e]()))}},set:(t,e,n)=>{switch(e){case"currentTime":n=x(n);case"currentTime":case"playbackRate":for(let i=0;i<t.animations.length;i++)t.animations[i][e]=n;return!0}return!1}},at=t=>t.finished;function ct(t,e,n){return b(t)?t(e,n):t}function lt(t,e,n={}){const i=(t=it(t)).length,r=[];for(let o=0;o<i;o++){const s=t[o];for(const t in e){const a=nt(n,t);a.delay=ct(a.delay,o,i);const c=et(s,t,e[t],a);r.push(c)}}return ot(r,n,n.duration)}function ut(t,e){var n={};for(var i in t)Object.prototype.hasOwnProperty.call(t,i)&&e.indexOf(i)<0&&(n[i]=t[i]);if(null!=t&&"function"==typeof Object.getOwnPropertySymbols){var r=0;for(i=Object.getOwnPropertySymbols(t);r<i.length;r++)e.indexOf(i[r])<0&&Object.prototype.propertyIsEnumerable.call(t,i[r])&&(n[i[r]]=t[i[r]])}return n}function ft(t,e,n,i){var r;return c(e)?e:e.startsWith("-")||e.startsWith("+")?Math.max(0,t+parseFloat(e)):"<"===e?n:null!==(r=i.get(e))&&void 0!==r?r:t}function ht(t,e,n,i,r,s){!function(t,e,n){for(let i=0;i<t.length;i++){const r=t[i];r.at>e&&r.at<n&&(o(t,r),i--)}}(t,r,s);for(let o=0;o<e.length;o++)t.push({value:e[o],at:f(r,s,i[o]),easing:u(n,o)})}function dt(t,e){return t.at===e.at?null===t.value?1:-1:t.at-e.at}function gt(t,e){return!e.has(t)&&e.set(t,{}),e.get(t)}function pt(t,e){return e[t]||(e[t]=[]),e[t]}function mt(t,e,n){const i=Math.max(e-5,0);return S(n-t(i),e-i)}const yt=100,vt=10,wt=1;const bt=({stiffness:t=yt,damping:e=vt,mass:n=wt,from:i=0,to:r=1,velocity:o=0,restSpeed:s=2,restDistance:a=.5}={})=>{o=o?O(o):0;const c={done:!1,hasReachedTarget:!1,current:i,target:r},l=r-i,u=Math.sqrt(t/n)/1e3,f=((t=yt,e=vt,n=wt)=>e/(2*Math.sqrt(t*n)))(t,e,n);let h;if(f<1){const t=u*Math.sqrt(1-f*f);h=e=>r-Math.exp(-f*u*e)*((f*u*l-o)/t*Math.sin(t*e)+l*Math.cos(t*e))}else h=t=>r-Math.exp(-u*t)*(l+(u*l-o)*t);return t=>{c.current=h(t);const e=0===t?o:mt(h,t,c.current),n=Math.abs(e)<=s,l=Math.abs(r-c.current)<=a;var u,f,d;return c.done=n&&l,c.hasReachedTarget=(u=i,f=r,d=c.current,u<f&&d>=f||u>f&&d<=f),c}};function Et(t){const e=new WeakMap;return(n={})=>{const i=new Map,r=(e=0,r=100,o=0,s=!1)=>{const a=`${e}-${r}-${o}-${s}`;return i.has(a)||i.set(a,t(Object.assign({from:e,to:r,velocity:o,restSpeed:s?.05:2,restDistance:s?.01:.5},n))),i.get(a)},o=t=>(e.has(t)||e.set(t,function(t){let e,n=10,i=t(0);const r=[i.current];for(;!i.done&&n<1e4;)i=t(n),r.push(i.done?i.target:i.current),void 0===e&&i.hasReachedTarget&&(e=n),n+=10;const o=n-10;return 1===r.length&&r.push(i.current),{keyframes:r,duration:o/1e3,overshootDuration:(null!=e?e:o)/1e3}}(t)),e.get(t));return{createAnimation:(t,e,n,i,s)=>{var a,c;let l;const u=t.length;if(n&&u<=2&&t.every(xt)){const n=t[u-1],f=1===u?null:t[0];let h=0,d=0;const g=null==s?void 0:s.generator;if(g){const{animation:e,generatorStartTime:n}=s,i=(null==e?void 0:e.startTime)||n||0,r=(null==e?void 0:e.currentTime)||performance.now()-i,o=g(r).current;d=null!==(a=f)&&void 0!==a?a:o,(1===u||2===u&&null===t[0])&&(h=mt((t=>g(t).current),r,o))}else d=null!==(c=f)&&void 0!==c?c:parseFloat(e());const p=r(d,n,h,null==i?void 0:i.includes("scale")),m=o(p);l=Object.assign(Object.assign({},m),{easing:"linear"}),s&&(s.generator=p,s.generatorStartTime=performance.now())}else{l={easing:"ease",duration:o(r(0,100)).overshootDuration}}return l}}}}const xt=t=>"string"!=typeof t,Ot=Et(bt),St=Et((({from:t=0,velocity:e=0,power:n=.8,decay:i=.325,bounceDamping:r,bounceStiffness:o,changeTarget:s,min:a,max:c,restDistance:l=.5,restSpeed:u})=>{i=x(i);const f={hasReachedTarget:!1,done:!1,current:t,target:t},h=t=>void 0===a?c:void 0===c||Math.abs(a-t)<Math.abs(c-t)?a:c;let d=n*e;const g=t+d,p=void 0===s?g:s(g);f.target=p,p!==g&&(d=p-t);const m=t=>-d*Math.exp(-t/i),y=t=>p+m(t),v=t=>{const e=m(t),n=y(t);f.done=Math.abs(e)<=l,f.current=f.done?p:n};let w,b;const E=t=>{var e;(e=f.current,void 0!==a&&e<a||void 0!==c&&e>c)&&(w=t,b=bt({from:f.current,to:h(f.current),velocity:mt(y,t,f.current),damping:r,stiffness:o,restDistance:l,restSpeed:u}))};return E(0),t=>{let e=!1;return b||void 0!==w||(e=!0,v(t),E(t)),void 0!==w&&t>w?(f.hasReachedTarget=!0,b(t-w)):(f.hasReachedTarget=!1,!e&&v(t),f)}})),Mt={any:0,all:1};function Tt(t,e,{root:n,margin:i,amount:r="any"}={}){if("undefined"==typeof IntersectionObserver)return()=>{};const o=it(t),s=new WeakMap,a=new IntersectionObserver((t=>{t.forEach((t=>{const n=s.get(t.target);if(t.isIntersecting!==Boolean(n))if(t.isIntersecting){const n=e(t);b(n)?s.set(t.target,n):a.unobserve(t.target)}else n&&(n(t),s.delete(t.target))}))}),{root:n,rootMargin:i,threshold:"number"==typeof r?r:Mt[r]});return o.forEach((t=>a.observe(t))),()=>a.disconnect()}const At=new WeakMap;let Dt;function Lt({target:t,contentRect:e,borderBoxSize:n}){var i;null===(i=At.get(t))||void 0===i||i.forEach((i=>{i({target:t,contentSize:e,get size(){return function(t,e){if(e){const{inlineSize:t,blockSize:n}=e[0];return{width:t,height:n}}return t instanceof SVGElement&&"getBBox"in t?t.getBBox():{width:t.offsetWidth,height:t.offsetHeight}}(t,n)}})}))}function kt(t){t.forEach(Lt)}function Wt(t,e){Dt||"undefined"!=typeof ResizeObserver&&(Dt=new ResizeObserver(kt));const n=it(t);return n.forEach((t=>{let n=At.get(t);n||(n=new Set,At.set(t,n)),n.add(e),null==Dt||Dt.observe(t)})),()=>{n.forEach((t=>{const n=At.get(t);null==n||n.delete(e),(null==n?void 0:n.size)||null==Dt||Dt.unobserve(t)}))}}const jt=new Set;let Rt;function zt(t){return jt.add(t),Rt||(Rt=()=>{const t={width:window.innerWidth,height:window.innerHeight},e={target:window,size:t,contentSize:t};jt.forEach((t=>t(e)))},window.addEventListener("resize",Rt)),()=>{jt.delete(t),!jt.size&&Rt&&(Rt=void 0)}}function Bt(t,e){return b(t)?zt(t):Wt(t,e)}const Pt={x:{length:"Width",position:"Left"},y:{length:"Height",position:"Top"}};function Vt(t,e,n,i){const r=n[e],{length:o,position:s}=Pt[e],a=r.current,c=n.time;r.current=t["scroll"+s],r.scrollLength=t["scroll"+o]-t["client"+o],r.offset.length=0,r.offset[0]=0,r.offset[1]=r.scrollLength,r.progress=g(0,r.scrollLength,r.current);const l=i-c;r.velocity=l>50?0:S(r.current-a,l)}const $t={Enter:[[0,1],[1,1]],Exit:[[0,0],[1,0]],Any:[[1,0],[0,1]],All:[[0,0],[1,1]]},qt={start:0,center:.5,end:1};function Ct(t,e,n=0){let i=0;if(void 0!==qt[t]&&(t=qt[t]),E(t)){const e=parseFloat(t);t.endsWith("px")?i=e:t.endsWith("%")?t=e/100:t.endsWith("vw")?i=e/100*document.documentElement.clientWidth:t.endsWith("vh")?i=e/100*document.documentElement.clientHeight:t=e}return c(t)&&(i=e*t),n+i}const Ft=[0,0];function Ht(t,e,n,i){let r=Array.isArray(t)?t:Ft,o=0,s=0;return c(t)?r=[t,t]:E(t)&&(r=(t=t.trim()).includes(" ")?t.split(" "):[t,qt[t]?t:"0"]),o=Ct(r[0],n,i),s=Ct(r[1],e),o-s}const It={x:0,y:0};function Ut(t,e,n){let{offset:i=$t.All}=n;const{target:r=t,axis:o="y"}=n,s="y"===o?"height":"width",a=r!==t?function(t,e){let n={x:0,y:0},i=t;for(;i&&i!==e;)if(i instanceof HTMLElement)n.x+=i.offsetLeft,n.y+=i.offsetTop,i=i.offsetParent;else if(i instanceof SVGGraphicsElement&&"getBBox"in i){const{top:t,left:e}=i.getBBox();for(n.x+=e,n.y+=t;i&&"svg"!==i.tagName;)i=i.parentNode}return n}(r,t):It,c=r===t?{width:t.scrollWidth,height:t.scrollHeight}:{width:r.clientWidth,height:r.clientHeight},l={width:t.clientWidth,height:t.clientHeight};e[o].offset.length=0;let u=!e[o].interpolate;const f=i.length;for(let t=0;t<f;t++){const n=Ht(i[t],l[s],c[s],a[o]);u||n===e[o].interpolatorOffsets[t]||(u=!0),e[o].offset[t]=n}u&&(e[o].interpolate=y(m(f),e[o].offset),e[o].interpolatorOffsets=[...e[o].offset]),e[o].progress=e[o].interpolate(e[o].current)}function _t(t,e,n,i={}){const r=i.axis||"y";return{measure:()=>function(t,e=t,n){if(n.x.targetOffset=0,n.y.targetOffset=0,e!==t){let i=e;for(;i&&i!=t;)n.x.targetOffset+=i.offsetLeft,n.y.targetOffset+=i.offsetTop,i=i.offsetParent}n.x.targetLength=e===t?e.scrollWidth:e.clientWidth,n.y.targetLength=e===t?e.scrollHeight:e.clientHeight,n.x.containerLength=t.clientWidth,n.y.containerLength=t.clientHeight}(t,i.target,n),update:e=>{!function(t,e,n){Vt(t,"x",e,n),Vt(t,"y",e,n),e.time=n}(t,n,e),(i.offset||i.target)&&Ut(t,n,i)},notify:b(e)?()=>e(n):Nt(e,n[r])}}function Nt(t,e){return t.pause(),t.forEachNative(((t,{easing:e})=>{var n,i;if(t.updateDuration)e||(t.easing=d),t.updateDuration(1);else{const r={duration:1e3};e||(r.easing="linear"),null===(i=null===(n=t.effect)||void 0===n?void 0:n.updateTiming)||void 0===i||i.call(n,r)}})),()=>{t.currentTime=e.progress}}const Gt=new WeakMap,Zt=new WeakMap,Kt=new WeakMap,Xt=t=>t===document.documentElement?window:t;function Yt(t,e){return function(t){return"object"==typeof t}(t)?t:t&&e?e[t]:void 0}let Jt;function Qt(){if(!Jt)return;const t=Jt.sort(ee).map(ne);t.forEach(ie),t.forEach(ie),Jt=void 0}function te(t){Jt?r(Jt,t):(Jt=[t],requestAnimationFrame(Qt))}const ee=(t,e)=>t.getDepth()-e.getDepth(),ne=t=>t.animateUpdates(),ie=t=>t.next(),re=(t,e)=>new CustomEvent(t,{detail:{target:e}});function oe(t,e,n){t.dispatchEvent(new CustomEvent(e,{detail:{originalEvent:n}}))}function se(t,e,n){t.dispatchEvent(new CustomEvent(e,{detail:{originalEntry:n}}))}const ae=(t,e,n)=>i=>{i.pointerType&&"mouse"!==i.pointerType||(n(),oe(t,e,i))},ce={inView:{isActive:t=>Boolean(t.inView),subscribe:(t,{enable:e,disable:n},{inViewOptions:i={}})=>{const{once:r}=i,o=ut(i,["once"]);return Tt(t,(i=>{if(e(),se(t,"viewenter",i),!r)return e=>{n(),se(t,"viewleave",e)}}),o)}},hover:{isActive:t=>Boolean(t.hover),subscribe:(t,{enable:e,disable:n})=>{const i=ae(t,"hoverstart",e),r=ae(t,"hoverend",n);return t.addEventListener("pointerenter",i),t.addEventListener("pointerleave",r),()=>{t.removeEventListener("pointerenter",i),t.removeEventListener("pointerleave",r)}}},press:{isActive:t=>Boolean(t.press),subscribe:(t,{enable:e,disable:n})=>{const i=e=>{n(),oe(t,"pressend",e),window.removeEventListener("pointerup",i)},r=n=>{e(),oe(t,"pressstart",n),window.addEventListener("pointerup",i)};return t.addEventListener("pointerdown",r),()=>{t.removeEventListener("pointerdown",r),window.removeEventListener("pointerup",i)}}}},le=["initial","animate",...Object.keys(ce),"exit"],ue=new WeakMap;function fe(t){const e={},n=[];for(let i in t){const r=t[i];z(i)&&(T[i]&&(i=T[i]),n.push(i),i=k(i));let o=Array.isArray(r)?r[0]:r;const s=L.get(i);s&&(o=c(r)?s.toDefaultUnit(r):r),e[i]=o}return n.length&&(e.transform=B(n)),e}const he=t=>`-${t.toLowerCase()}`;function de(t,e={}){return ot([()=>{const n=new U(t,[0,1],e);return n.finished.catch((()=>{})),n}],e,e.duration)}t.MotionValue=e,t.ScrollOffset=$t,t.animate=function(t,e,n){return(b(t)?de:lt)(t,e,n)},t.animateStyle=et,t.createMotionState=function(t={},e){let n,i=e?e.getDepth()+1:0;const r={initial:!0,animate:!0},s={},a={};for(const n of le)a[n]="string"==typeof t[n]?t[n]:null==e?void 0:e.getContext()[n];const c=!1===t.initial?"animate":"initial";let l=ut(Yt(t[c]||a[c],t.variants)||{},["transition"]);const u=Object.assign({},l),f=(t,e)=>()=>{r[t]=e,te(g)},d=()=>{for(const e in ce){const i=ce[e].isActive(t),r=s[e];i&&!r?s[e]=ce[e].subscribe(n,{enable:f(e,!0),disable:f(e,!1)},t):!i&&r&&(r(),delete s[e])}},g={update:e=>{n&&(t=e,d(),te(g))},setActive:(t,e)=>{n&&(r[t]=e,te(g))},animateUpdates:function*(){var e,i;const o=l;l={};const s={};for(const n of le){if(!r[n])continue;const o=Yt(t[n]);if(o)for(const n in o)"transition"!==n&&(l[n]=o[n],s[n]=nt(null!==(i=null!==(e=o.transition)&&void 0!==e?e:t.transition)&&void 0!==i?i:{},n))}const a=new Set([...Object.keys(l),...Object.keys(o)]),c=[];a.forEach((t=>{var e,i,r;void 0===l[t]&&(l[t]=u[t]),i=o[t],r=l[t],typeof i==typeof r&&(Array.isArray(i)&&Array.isArray(r)?function(t,e){const n=e.length;if(n!==t.length)return!1;for(let i=0;i<n;i++)if(e[i]!==t[i])return!1;return!0}(i,r):i===r)||(null!==(e=u[t])&&void 0!==e||(u[t]=Q.get(n,t)),c.push(et(n,t,l[t],s[t])))})),yield;const f=c.map((t=>t())).filter(Boolean);if(!f.length)return;const d=l;n.dispatchEvent(re("motionstart",d)),Promise.all(f.map((t=>t.finished))).then((()=>{n.dispatchEvent(re("motioncomplete",d))})).catch(h)},getDepth:()=>i,getTarget:()=>l,getOptions:()=>t,getContext:()=>a,mount:t=>(n=t,ue.set(n,g),d(),()=>{ue.delete(n),function(t){Jt&&o(Jt,t)}(g);for(const t in s)s[t]()}),isMounted:()=>Boolean(n)};return g},t.createStyleString=function(t={}){const e=fe(t);let n="";for(const t in e)n+=t.startsWith("--")?t:t.replace(/[A-Z]/g,he),n+=`: ${e[t]}; `;return n},t.createStyles=fe,t.getAnimationData=i,t.getStyleName=J,t.glide=St,t.inView=Tt,t.mountedStates=ue,t.resize=Bt,t.scroll=function(t,e={}){var{container:n=document.documentElement}=e,i=ut(e,["container"]);let r=Kt.get(n);r||(r=new Set,Kt.set(n,r));const o=_t(n,t,{time:0,x:{current:0,offset:[],progress:0,scrollLength:0,targetOffset:0,targetLength:0,containerLength:0,velocity:0},y:{current:0,offset:[],progress:0,scrollLength:0,targetOffset:0,targetLength:0,containerLength:0,velocity:0}},i);if(r.add(o),!Gt.has(n)){const t=()=>{const t=performance.now();for(const t of r)t.measure();for(const e of r)e.update(t);for(const t of r)t.notify()};Gt.set(n,t);const e=Xt(n);window.addEventListener("resize",t,{passive:!0}),n!==document.documentElement&&Zt.set(n,Bt(n,t)),e.addEventListener("scroll",t,{passive:!0})}const s=Gt.get(n),a=requestAnimationFrame(s);return()=>{var e;"function"!=typeof t&&t.stop(),cancelAnimationFrame(a);const i=Kt.get(n);if(!i)return;if(i.delete(o),i.size)return;const r=Gt.get(n);Gt.delete(n),r&&(Xt(n).removeEventListener("scroll",r),null===(e=Zt.get(n))||void 0===e||e(),window.removeEventListener("resize",r))}},t.spring=Ot,t.stagger=function(t=.1,{start:e=0,from:n=0,easing:i}={}){return(r,o)=>{const s=c(n)?n:function(t,e){if("first"===t)return 0;{const n=e-1;return"last"===t?n:n/2}}(n,o),a=Math.abs(s-r);let l=t*a;if(i){const e=o*t;l=I(i)(l/e)*e}return e+l}},t.style=Q,t.timeline=function(t,e={}){var n;const i=function(t,e={}){var{defaultOptions:n={}}=e,i=ut(e,["defaultOptions"]);const r=[],o=new Map,s={},c=new Map;let l=0,u=0,f=0;for(let e=0;e<t.length;e++){const i=t[e];if(E(i)){c.set(i,u);continue}if(!Array.isArray(i)){c.set(i.name,ft(u,i.at,l,c));continue}const[r,h,d={}]=i;void 0!==d.at&&(u=ft(u,d.at,l,c));let g=0;const y=it(r,s),v=y.length;for(let t=0;t<v;t++){const e=gt(y[t],o);for(const i in h){const r=pt(i,e);let o=Y(h[i]);const s=nt(d,i);let{duration:c=n.duration||a.duration,easing:l=n.easing||a.easing}=s;if(w(l)){const t=z(i);o.length;const e=l.createAnimation(o,(()=>"0"),t);l=e.easing,void 0!==e.keyframes&&(o=e.keyframes),void 0!==e.duration&&(c=e.duration)}const y=ct(d.delay,t,v)||0,b=u+y,E=b+c;let{offset:x=m(o.length)}=s;1===x.length&&0===x[0]&&(x[1]=1);const O=length-o.length;O>0&&p(x,O),1===o.length&&o.unshift(null),ht(r,o,l,x,b,E),g=Math.max(y+c,g),f=Math.max(E,f)}}l=u,u+=g}return o.forEach(((t,e)=>{for(const o in t){const s=t[o];s.sort(dt);const c=[],l=[],u=[];for(let t=0;t<s.length;t++){const{at:e,value:n,easing:i}=s[t];c.push(n),l.push(g(0,f,e)),u.push(i||a.easing)}0!==l[0]&&(l.unshift(0),c.unshift(c[0]),u.unshift("linear")),1!==l[l.length-1]&&(l.push(1),c.push(null)),r.push([e,o,c,Object.assign(Object.assign(Object.assign({},n),{duration:f,easing:u,offset:l}),i)])}})),r}(t,e),r=i.map((t=>et(...t))).filter(Boolean);return ot(r,e,null===(n=i[0])||void 0===n?void 0:n[3].duration)},t.withControls=ot,Object.defineProperty(t,"__esModule",{value:!0})}));
1
+ !function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports):"function"==typeof define&&define.amd?define(["exports"],e):e((t="undefined"!=typeof globalThis?globalThis:t||self).Motion={})}(this,(function(t){"use strict";function e(t,e){-1===t.indexOf(e)&&t.push(e)}function n(t,e){const n=t.indexOf(e);n>-1&&t.splice(n,1)}const i=(t,e,n)=>Math.min(Math.max(n,t),e),r={duration:.3,delay:0,endDelay:0,repeat:0,easing:"ease"},o=t=>"number"==typeof t,s=t=>Array.isArray(t)&&!o(t[0]);function a(t,e){return s(t)?t[((t,e,n)=>{const i=e-t;return((n-t)%i+i)%i+t})(0,t.length,e)]:t}const c=(t,e,n)=>-n*t+n*e+t,l=()=>{},u=t=>t,f=(t,e,n)=>e-t==0?1:(n-t)/(e-t);function h(t,e){const n=t[t.length-1];for(let i=1;i<=e;i++){const r=f(0,e,i);t.push(c(n,1,r))}}function d(t){const e=[0];return h(e,t-1),e}function g(t,e=d(t.length),n=u){const r=t.length,o=r-e.length;return o>0&&h(e,o),o=>{let s=0;for(;s<r-2&&!(o<e[s+1]);s++);let l=i(0,1,f(e[s],e[s+1],o));return l=a(n,s)(l),c(t[s],t[s+1],l)}}const p=t=>Array.isArray(t)&&o(t[0]),m=t=>"object"==typeof t&&Boolean(t.createAnimation),y=t=>"function"==typeof t,v=t=>"string"==typeof t,w=t=>1e3*t,b=t=>t/1e3;function E(t,e){return e?t*(1e3/e):0}const x=(t,e,n)=>(((1-3*n+3*e)*t+(3*n-6*e))*t+3*e)*t;function O(t,e,n,i){if(t===e&&n===i)return u;const r=e=>function(t,e,n,i,r){let o,s,a=0;do{s=e+(n-e)/2,o=x(s,i,r)-t,o>0?n=s:e=s}while(Math.abs(o)>1e-7&&++a<12);return s}(e,0,1,t,n);return t=>0===t||1===t?t:x(r(t),e,i)}const S={ease:O(.25,.1,.25,1),"ease-in":O(.42,0,1,1),"ease-in-out":O(.42,0,.58,1),"ease-out":O(0,0,.58,1)},M=/\((.*?)\)/;function T(t){if(y(t))return t;if(p(t))return O(...t);if(S[t])return S[t];if(t.startsWith("steps")){const e=M.exec(t);if(e){const t=e[1].split(",");return((t,e="end")=>n=>{const r=(n="end"===e?Math.min(n,.999):Math.max(n,.001))*t,o="end"===e?Math.floor(r):Math.ceil(r);return i(0,1,o/t)})(parseFloat(t[0]),t[1].trim())}}return u}class A{constructor(t,e=[0,1],{easing:n,duration:i=r.duration,delay:o=r.delay,endDelay:a=r.endDelay,repeat:c=r.repeat,offset:l,direction:f="normal"}={}){if(this.startTime=null,this.rate=1,this.t=0,this.cancelTimestamp=null,this.easing=u,this.duration=0,this.totalDuration=0,this.repeat=0,this.playState="idle",this.finished=new Promise(((t,e)=>{this.resolve=t,this.reject=e})),n=n||r.easing,m(n)){const t=n.createAnimation(e);n=t.easing,e=t.keyframes||e,i=t.duration||i}this.repeat=c,this.easing=s(n)?u:T(n),this.updateDuration(i);const h=g(e,l,s(n)?n.map(T):u);this.tick=e=>{var n;let i=0;i=void 0!==this.pauseTime?this.pauseTime:(e-this.startTime)*this.rate,this.t=i,i/=1e3,i=Math.max(i-o,0),"finished"===this.playState&&void 0===this.pauseTime&&(i=this.totalDuration);const r=i/this.duration;let s=Math.floor(r),c=r%1;!c&&r>=1&&(c=1),1===c&&s--;const l=s%2;("reverse"===f||"alternate"===f&&l||"alternate-reverse"===f&&!l)&&(c=1-c);const u=i>=this.totalDuration?1:Math.min(c,1),d=h(this.easing(u));t(d);void 0===this.pauseTime&&("finished"===this.playState||i>=this.totalDuration+a)?(this.playState="finished",null===(n=this.resolve)||void 0===n||n.call(this,d)):"idle"!==this.playState&&(this.frameRequestId=requestAnimationFrame(this.tick))},this.play()}play(){const t=performance.now();this.playState="running",void 0!==this.pauseTime?this.startTime=t-this.pauseTime:this.startTime||(this.startTime=t),this.cancelTimestamp=this.startTime,this.pauseTime=void 0,this.frameRequestId=requestAnimationFrame(this.tick)}pause(){this.playState="paused",this.pauseTime=this.t}finish(){this.playState="finished",this.tick(0)}stop(){var t;this.playState="idle",void 0!==this.frameRequestId&&cancelAnimationFrame(this.frameRequestId),null===(t=this.reject)||void 0===t||t.call(this,!1)}cancel(){this.stop(),this.tick(this.cancelTimestamp)}reverse(){this.rate*=-1}commitStyles(){}updateDuration(t){this.duration=t,this.totalDuration=t*(this.repeat+1)}get currentTime(){return this.t}set currentTime(t){void 0!==this.pauseTime||0===this.rate?this.pauseTime=t:this.startTime=performance.now()-t/this.rate}get playbackRate(){return this.rate}set playbackRate(t){this.rate=t}}class D{setAnimation(t){this.animation=t,null==t||t.finished.then((()=>this.clearAnimation())).catch((()=>{}))}clearAnimation(){this.animation=this.generator=void 0}}const L=new WeakMap;function k(t){return L.has(t)||L.set(t,{transforms:[],values:new Map}),L.get(t)}const W=["","X","Y","Z"],j={x:"translateX",y:"translateY",z:"translateZ"},R={syntax:"<angle>",initialValue:"0deg",toDefaultUnit:t=>t+"deg"},z={translate:{syntax:"<length-percentage>",initialValue:"0px",toDefaultUnit:t=>t+"px"},rotate:R,scale:{syntax:"<number>",initialValue:1,toDefaultUnit:u},skew:R},B=new Map,P=t=>`--motion-${t}`,V=["x","y","z"];["translate","scale","rotate","skew"].forEach((t=>{W.forEach((e=>{V.push(t+e),B.set(P(t+e),z[t])}))}));const $=(t,e)=>V.indexOf(t)-V.indexOf(e),q=new Set(V),C=t=>q.has(t),F=t=>t.sort($).reduce(H,"").trim(),H=(t,e)=>`${t} ${e}(var(${P(e)}))`,I=t=>t.startsWith("--"),U=new Set;const N=(t,e)=>document.createElement("div").animate(t,e),_={cssRegisterProperty:()=>"undefined"!=typeof CSS&&Object.hasOwnProperty.call(CSS,"registerProperty"),waapi:()=>Object.hasOwnProperty.call(Element.prototype,"animate"),partialKeyframes:()=>{try{N({opacity:[1]})}catch(t){return!1}return!0},finished:()=>Boolean(N({opacity:[0,1]},{duration:.001}).finished),linearEasing:()=>{try{N({opacity:0},{easing:"linear(0, 1)"})}catch(t){return!1}return!0}},G={},Z={};for(const t in _)Z[t]=()=>(void 0===G[t]&&(G[t]=_[t]()),G[t]);const K=(t,e)=>y(t)?Z.linearEasing()?`linear(${((t,e)=>{let n="";const i=Math.round(e/.015);for(let e=0;e<i;e++)n+=t(f(0,i-1,e))+", ";return n.substring(0,n.length-2)})(t,e)})`:r.easing:p(t)?X(t):t,X=([t,e,n,i])=>`cubic-bezier(${t}, ${e}, ${n}, ${i})`;const Y=t=>Array.isArray(t)?t:[t];function J(t){return j[t]&&(t=j[t]),C(t)?P(t):t}const Q={get:(t,e)=>{e=J(e);let n=I(e)?t.style.getPropertyValue(e):getComputedStyle(t)[e];if(!n&&0!==n){const t=B.get(e);t&&(n=t.initialValue)}return n},set:(t,e,n)=>{e=J(e),I(e)?t.style.setProperty(e,n):t.style[e]=n}};function tt(t,e=!0){if(t&&"finished"!==t.playState)try{t.stop?t.stop():(e&&t.commitStyles(),t.cancel())}catch(t){}}function et(t,e){var n;let i=(null==e?void 0:e.toDefaultUnit)||u;const r=t[t.length-1];if(v(r)){const t=(null===(n=r.match(/(-?[\d.]+)([a-z%]*)/))||void 0===n?void 0:n[2])||"";t&&(i=e=>e+t)}return i}function nt(t,n,i,a={},c){const u=window.__MOTION_DEV_TOOLS_RECORD,f=!1!==a.record&&u;let h,{duration:d=r.duration,delay:g=r.delay,endDelay:p=r.endDelay,repeat:v=r.repeat,easing:b=r.easing,direction:E,offset:x,allowWebkitAcceleration:O=!1}=a;const S=k(t),M=C(n);let T=Z.waapi();M&&((t,n)=>{j[n]&&(n=j[n]);const{transforms:i}=k(t);e(i,n),t.style.transform=F(i)})(t,n);const A=J(n),L=function(t,e){return t.has(e)||t.set(e,new D),t.get(e)}(S.values,A),W=B.get(A);return tt(L.animation,!(m(b)&&L.generator)&&!1!==a.record),()=>{const e=()=>{var e,n;return null!==(n=null!==(e=Q.get(t,A))&&void 0!==e?e:null==W?void 0:W.initialValue)&&void 0!==n?n:0};let r=function(t,e){for(let n=0;n<t.length;n++)null===t[n]&&(t[n]=n?t[n-1]:e());return t}(Y(i),e);const S=et(r,W);if(m(b)){const t=b.createAnimation(r,"opacity"!==n,e,A,L);b=t.easing,r=t.keyframes||r,d=t.duration||d}if(I(A)&&(Z.cssRegisterProperty()?function(t){if(!U.has(t)){U.add(t);try{const{syntax:e,initialValue:n}=B.has(t)?B.get(t):{};CSS.registerProperty({name:t,inherits:!1,syntax:e,initialValue:n})}catch(t){}}}(A):T=!1),M&&!Z.linearEasing()&&(y(b)||s(b)&&b.some(y))&&(T=!1),T){W&&(r=r.map((t=>o(t)?W.toDefaultUnit(t):t))),1!==r.length||Z.partialKeyframes()&&!f||r.unshift(e());const n={delay:w(g),duration:w(d),endDelay:w(p),easing:s(b)?void 0:K(b,d),direction:E,iterations:v+1,fill:"both"};h=t.animate({[A]:r,offset:x,easing:s(b)?b.map((t=>K(t,d))):void 0},n),h.finished||(h.finished=new Promise(((t,e)=>{h.onfinish=t,h.oncancel=e})));const i=r[r.length-1];h.finished.then((()=>{Q.set(t,A,i),h.cancel()})).catch(l),O||(h.playbackRate=1.000001)}else if(c&&M)r=r.map((t=>"string"==typeof t?parseFloat(t):t)),1===r.length&&r.unshift(parseFloat(e())),h=new c((e=>{Q.set(t,A,S?S(e):e)}),r,Object.assign(Object.assign({},a),{duration:d,easing:b}));else{const e=r[r.length-1];Q.set(t,A,W&&o(e)?W.toDefaultUnit(e):e)}return f&&u(t,n,r,{duration:d,delay:g,easing:b,repeat:v,offset:x},"motion-one"),L.setAnimation(h),h}}const it=(t,e)=>t[e]?Object.assign(Object.assign({},t),t[e]):Object.assign({},t);function rt(t,e){var n;return"string"==typeof t?e?(null!==(n=e[t])&&void 0!==n||(e[t]=document.querySelectorAll(t)),t=e[t]):t=document.querySelectorAll(t):t instanceof Element&&(t=[t]),Array.from(t||[])}const ot=t=>t(),st=(t,e,n=r.duration)=>new Proxy({animations:t.map(ot).filter(Boolean),duration:n,options:e},at),at={get:(t,e)=>{const n=t.animations[0];switch(e){case"duration":return t.duration;case"currentTime":return b((null==n?void 0:n[e])||0);case"playbackRate":case"playState":return null==n?void 0:n[e];case"finished":return t.finished||(t.finished=Promise.all(t.animations.map(ct)).catch(l)),t.finished;case"stop":return()=>{t.animations.forEach((t=>tt(t)))};case"forEachNative":return e=>{t.animations.forEach((n=>e(n,t)))};default:return void 0===(null==n?void 0:n[e])?void 0:()=>t.animations.forEach((t=>t[e]()))}},set:(t,e,n)=>{switch(e){case"currentTime":n=w(n);case"currentTime":case"playbackRate":for(let i=0;i<t.animations.length;i++)t.animations[i][e]=n;return!0}return!1}},ct=t=>t.finished;function lt(t,e,n){return y(t)?t(e,n):t}function ut(t){return function(e,n,i={}){const r=(e=rt(e)).length,o=[];for(let s=0;s<r;s++){const a=e[s];for(const e in n){const c=it(i,e);c.delay=lt(c.delay,s,r);const l=nt(a,e,n[e],c,t);o.push(l)}}return st(o,i,i.duration)}}const ft=ut(A);function ht(t,e){var n={};for(var i in t)Object.prototype.hasOwnProperty.call(t,i)&&e.indexOf(i)<0&&(n[i]=t[i]);if(null!=t&&"function"==typeof Object.getOwnPropertySymbols){var r=0;for(i=Object.getOwnPropertySymbols(t);r<i.length;r++)e.indexOf(i[r])<0&&Object.prototype.propertyIsEnumerable.call(t,i[r])&&(n[i[r]]=t[i[r]])}return n}function dt(t,e,n,i){var r;return o(e)?e:e.startsWith("-")||e.startsWith("+")?Math.max(0,t+parseFloat(e)):"<"===e?n:null!==(r=i.get(e))&&void 0!==r?r:t}function gt(t,e,i,r,o,s){!function(t,e,i){for(let r=0;r<t.length;r++){const o=t[r];o.at>e&&o.at<i&&(n(t,o),r--)}}(t,o,s);for(let n=0;n<e.length;n++)t.push({value:e[n],at:c(o,s,r[n]),easing:a(i,n)})}function pt(t,e){return t.at===e.at?null===t.value?1:-1:t.at-e.at}function mt(t,e){return!e.has(t)&&e.set(t,{}),e.get(t)}function yt(t,e){return e[t]||(e[t]=[]),e[t]}function vt(t,e,n){const i=Math.max(e-5,0);return E(n-t(i),e-i)}const wt=100,bt=10,Et=1;const xt=({stiffness:t=wt,damping:e=bt,mass:n=Et,from:i=0,to:r=1,velocity:o=0,restSpeed:s=2,restDistance:a=.5}={})=>{o=o?b(o):0;const c={done:!1,hasReachedTarget:!1,current:i,target:r},l=r-i,u=Math.sqrt(t/n)/1e3,f=((t=wt,e=bt,n=Et)=>e/(2*Math.sqrt(t*n)))(t,e,n);let h;if(f<1){const t=u*Math.sqrt(1-f*f);h=e=>r-Math.exp(-f*u*e)*((f*u*l-o)/t*Math.sin(t*e)+l*Math.cos(t*e))}else h=t=>r-Math.exp(-u*t)*(l+(u*l-o)*t);return t=>{c.current=h(t);const e=0===t?o:vt(h,t,c.current),n=Math.abs(e)<=s,l=Math.abs(r-c.current)<=a;var u,f,d;return c.done=n&&l,c.hasReachedTarget=(u=i,f=r,d=c.current,u<f&&d>=f||u>f&&d<=f),c}};function Ot(t){return o(t)&&!isNaN(t)}function St(t){return v(t)?parseFloat(t):t}function Mt(t){const e=new WeakMap;return(n={})=>{const i=new Map,r=(e=0,r=100,o=0,s=!1)=>{const a=`${e}-${r}-${o}-${s}`;return i.has(a)||i.set(a,t(Object.assign({from:e,to:r,velocity:o,restSpeed:s?.05:2,restDistance:s?.01:.5},n))),i.get(a)},o=(t,n)=>(e.has(t)||e.set(t,function(t,e=u){let n,i=10,r=t(0);const o=[e(r.current)];for(;!r.done&&i<1e4;)r=t(i),o.push(e(r.done?r.target:r.current)),void 0===n&&r.hasReachedTarget&&(n=i),i+=10;const s=i-10;return 1===o.length&&o.push(r.current),{keyframes:o,duration:s/1e3,overshootDuration:(null!=n?n:s)/1e3}}(t,n)),e.get(t));return{createAnimation:(t,e=!0,n,i,s)=>{let a,c,l,f=0,h=u;const d=t.length;if(e){h=et(t,i?B.get(J(i)):void 0);if(l=St(t[d-1]),d>1&&null!==t[0])c=St(t[0]);else{const t=null==s?void 0:s.generator;if(t){const{animation:e,generatorStartTime:n}=s,i=(null==e?void 0:e.startTime)||n||0,r=(null==e?void 0:e.currentTime)||performance.now()-i,o=t(r).current;c=o,f=vt((e=>t(e).current),r,o)}else n&&(c=St(n()))}}if(Ot(c)&&Ot(l)){const t=r(c,l,f,null==i?void 0:i.includes("scale"));a=Object.assign(Object.assign({},o(t,h)),{easing:"linear"}),s&&(s.generator=t,s.generatorStartTime=performance.now())}if(!a){a={easing:"ease",duration:o(r(0,100)).overshootDuration}}return a}}}}const Tt=Mt(xt),At=Mt((({from:t=0,velocity:e=0,power:n=.8,decay:i=.325,bounceDamping:r,bounceStiffness:o,changeTarget:s,min:a,max:c,restDistance:l=.5,restSpeed:u})=>{i=w(i);const f={hasReachedTarget:!1,done:!1,current:t,target:t},h=t=>void 0===a?c:void 0===c||Math.abs(a-t)<Math.abs(c-t)?a:c;let d=n*e;const g=t+d,p=void 0===s?g:s(g);f.target=p,p!==g&&(d=p-t);const m=t=>-d*Math.exp(-t/i),y=t=>p+m(t),v=t=>{const e=m(t),n=y(t);f.done=Math.abs(e)<=l,f.current=f.done?p:n};let b,E;const x=t=>{var e;(e=f.current,void 0!==a&&e<a||void 0!==c&&e>c)&&(b=t,E=xt({from:f.current,to:h(f.current),velocity:vt(y,t,f.current),damping:r,stiffness:o,restDistance:l,restSpeed:u}))};return x(0),t=>{let e=!1;return E||void 0!==b||(e=!0,v(t),x(t)),void 0!==b&&t>b?(f.hasReachedTarget=!0,E(t-b)):(f.hasReachedTarget=!1,!e&&v(t),f)}})),Dt={any:0,all:1};function Lt(t,e,{root:n,margin:i,amount:r="any"}={}){if("undefined"==typeof IntersectionObserver)return()=>{};const o=rt(t),s=new WeakMap,a=new IntersectionObserver((t=>{t.forEach((t=>{const n=s.get(t.target);if(t.isIntersecting!==Boolean(n))if(t.isIntersecting){const n=e(t);y(n)?s.set(t.target,n):a.unobserve(t.target)}else n&&(n(t),s.delete(t.target))}))}),{root:n,rootMargin:i,threshold:"number"==typeof r?r:Dt[r]});return o.forEach((t=>a.observe(t))),()=>a.disconnect()}const kt=new WeakMap;let Wt;function jt({target:t,contentRect:e,borderBoxSize:n}){var i;null===(i=kt.get(t))||void 0===i||i.forEach((i=>{i({target:t,contentSize:e,get size(){return function(t,e){if(e){const{inlineSize:t,blockSize:n}=e[0];return{width:t,height:n}}return t instanceof SVGElement&&"getBBox"in t?t.getBBox():{width:t.offsetWidth,height:t.offsetHeight}}(t,n)}})}))}function Rt(t){t.forEach(jt)}function zt(t,e){Wt||"undefined"!=typeof ResizeObserver&&(Wt=new ResizeObserver(Rt));const n=rt(t);return n.forEach((t=>{let n=kt.get(t);n||(n=new Set,kt.set(t,n)),n.add(e),null==Wt||Wt.observe(t)})),()=>{n.forEach((t=>{const n=kt.get(t);null==n||n.delete(e),(null==n?void 0:n.size)||null==Wt||Wt.unobserve(t)}))}}const Bt=new Set;let Pt;function Vt(t){return Bt.add(t),Pt||(Pt=()=>{const t={width:window.innerWidth,height:window.innerHeight},e={target:window,size:t,contentSize:t};Bt.forEach((t=>t(e)))},window.addEventListener("resize",Pt)),()=>{Bt.delete(t),!Bt.size&&Pt&&(Pt=void 0)}}function $t(t,e){return y(t)?Vt(t):zt(t,e)}const qt={x:{length:"Width",position:"Left"},y:{length:"Height",position:"Top"}};function Ct(t,e,n,i){const r=n[e],{length:o,position:s}=qt[e],a=r.current,c=n.time;r.current=t["scroll"+s],r.scrollLength=t["scroll"+o]-t["client"+o],r.offset.length=0,r.offset[0]=0,r.offset[1]=r.scrollLength,r.progress=f(0,r.scrollLength,r.current);const l=i-c;r.velocity=l>50?0:E(r.current-a,l)}const Ft={Enter:[[0,1],[1,1]],Exit:[[0,0],[1,0]],Any:[[1,0],[0,1]],All:[[0,0],[1,1]]},Ht={start:0,center:.5,end:1};function It(t,e,n=0){let i=0;if(void 0!==Ht[t]&&(t=Ht[t]),v(t)){const e=parseFloat(t);t.endsWith("px")?i=e:t.endsWith("%")?t=e/100:t.endsWith("vw")?i=e/100*document.documentElement.clientWidth:t.endsWith("vh")?i=e/100*document.documentElement.clientHeight:t=e}return o(t)&&(i=e*t),n+i}const Ut=[0,0];function Nt(t,e,n,i){let r=Array.isArray(t)?t:Ut,s=0,a=0;return o(t)?r=[t,t]:v(t)&&(r=(t=t.trim()).includes(" ")?t.split(" "):[t,Ht[t]?t:"0"]),s=It(r[0],n,i),a=It(r[1],e),s-a}const _t={x:0,y:0};function Gt(t,e,n){let{offset:i=Ft.All}=n;const{target:r=t,axis:o="y"}=n,s="y"===o?"height":"width",a=r!==t?function(t,e){let n={x:0,y:0},i=t;for(;i&&i!==e;)if(i instanceof HTMLElement)n.x+=i.offsetLeft,n.y+=i.offsetTop,i=i.offsetParent;else if(i instanceof SVGGraphicsElement&&"getBBox"in i){const{top:t,left:e}=i.getBBox();for(n.x+=e,n.y+=t;i&&"svg"!==i.tagName;)i=i.parentNode}return n}(r,t):_t,c=r===t?{width:t.scrollWidth,height:t.scrollHeight}:{width:r.clientWidth,height:r.clientHeight},l={width:t.clientWidth,height:t.clientHeight};e[o].offset.length=0;let u=!e[o].interpolate;const f=i.length;for(let t=0;t<f;t++){const n=Nt(i[t],l[s],c[s],a[o]);u||n===e[o].interpolatorOffsets[t]||(u=!0),e[o].offset[t]=n}u&&(e[o].interpolate=g(d(f),e[o].offset),e[o].interpolatorOffsets=[...e[o].offset]),e[o].progress=e[o].interpolate(e[o].current)}function Zt(t,e,n,i={}){const r=i.axis||"y";return{measure:()=>function(t,e=t,n){if(n.x.targetOffset=0,n.y.targetOffset=0,e!==t){let i=e;for(;i&&i!=t;)n.x.targetOffset+=i.offsetLeft,n.y.targetOffset+=i.offsetTop,i=i.offsetParent}n.x.targetLength=e===t?e.scrollWidth:e.clientWidth,n.y.targetLength=e===t?e.scrollHeight:e.clientHeight,n.x.containerLength=t.clientWidth,n.y.containerLength=t.clientHeight}(t,i.target,n),update:e=>{!function(t,e,n){Ct(t,"x",e,n),Ct(t,"y",e,n),e.time=n}(t,n,e),(i.offset||i.target)&&Gt(t,n,i)},notify:y(e)?()=>e(n):Kt(e,n[r])}}function Kt(t,e){return t.pause(),t.forEachNative(((t,{easing:e})=>{var n,i;if(t.updateDuration)e||(t.easing=u),t.updateDuration(1);else{const r={duration:1e3};e||(r.easing="linear"),null===(i=null===(n=t.effect)||void 0===n?void 0:n.updateTiming)||void 0===i||i.call(n,r)}})),()=>{t.currentTime=e.progress}}const Xt=new WeakMap,Yt=new WeakMap,Jt=new WeakMap,Qt=t=>t===document.documentElement?window:t;function te(t,e){return function(t){return"object"==typeof t}(t)?t:t&&e?e[t]:void 0}let ee;function ne(){if(!ee)return;const t=ee.sort(re).map(oe);t.forEach(se),t.forEach(se),ee=void 0}function ie(t){ee?e(ee,t):(ee=[t],requestAnimationFrame(ne))}const re=(t,e)=>t.getDepth()-e.getDepth(),oe=t=>t.animateUpdates(),se=t=>t.next(),ae=(t,e)=>new CustomEvent(t,{detail:{target:e}});function ce(t,e,n){t.dispatchEvent(new CustomEvent(e,{detail:{originalEvent:n}}))}function le(t,e,n){t.dispatchEvent(new CustomEvent(e,{detail:{originalEntry:n}}))}const ue=(t,e,n)=>i=>{i.pointerType&&"mouse"!==i.pointerType||(n(),ce(t,e,i))},fe={inView:{isActive:t=>Boolean(t.inView),subscribe:(t,{enable:e,disable:n},{inViewOptions:i={}})=>{const{once:r}=i,o=ht(i,["once"]);return Lt(t,(i=>{if(e(),le(t,"viewenter",i),!r)return e=>{n(),le(t,"viewleave",e)}}),o)}},hover:{isActive:t=>Boolean(t.hover),subscribe:(t,{enable:e,disable:n})=>{const i=ue(t,"hoverstart",e),r=ue(t,"hoverend",n);return t.addEventListener("pointerenter",i),t.addEventListener("pointerleave",r),()=>{t.removeEventListener("pointerenter",i),t.removeEventListener("pointerleave",r)}}},press:{isActive:t=>Boolean(t.press),subscribe:(t,{enable:e,disable:n})=>{const i=e=>{n(),ce(t,"pressend",e),window.removeEventListener("pointerup",i)},r=n=>{e(),ce(t,"pressstart",n),window.addEventListener("pointerup",i)};return t.addEventListener("pointerdown",r),()=>{t.removeEventListener("pointerdown",r),window.removeEventListener("pointerup",i)}}}},he=["initial","animate",...Object.keys(fe),"exit"],de=new WeakMap;function ge(t){const e={},n=[];for(let i in t){const r=t[i];C(i)&&(j[i]&&(i=j[i]),n.push(i),i=P(i));let s=Array.isArray(r)?r[0]:r;const a=B.get(i);a&&(s=o(r)?a.toDefaultUnit(r):r),e[i]=s}return n.length&&(e.transform=F(n)),e}const pe=t=>`-${t.toLowerCase()}`;function me(t,e={}){return st([()=>{const n=new A(t,[0,1],e);return n.finished.catch((()=>{})),n}],e,e.duration)}t.MotionValue=D,t.ScrollOffset=Ft,t.animate=function(t,e,n){return(y(t)?me:ft)(t,e,n)},t.animateStyle=nt,t.createAnimate=ut,t.createMotionState=function(t={},e){let i,r=e?e.getDepth()+1:0;const o={initial:!0,animate:!0},s={},a={};for(const n of he)a[n]="string"==typeof t[n]?t[n]:null==e?void 0:e.getContext()[n];const c=!1===t.initial?"animate":"initial";let u=ht(te(t[c]||a[c],t.variants)||{},["transition"]);const f=Object.assign({},u),h=(t,e)=>()=>{o[t]=e,ie(g)},d=()=>{for(const e in fe){const n=fe[e].isActive(t),r=s[e];n&&!r?s[e]=fe[e].subscribe(i,{enable:h(e,!0),disable:h(e,!1)},t):!n&&r&&(r(),delete s[e])}},g={update:e=>{i&&(t=e,d(),ie(g))},setActive:(t,e)=>{i&&(o[t]=e,ie(g))},animateUpdates:function*(){var e,n;const r=u;u={};const s={};for(const i of he){if(!o[i])continue;const r=te(t[i]);if(r)for(const i in r)"transition"!==i&&(u[i]=r[i],s[i]=it(null!==(n=null!==(e=r.transition)&&void 0!==e?e:t.transition)&&void 0!==n?n:{},i))}const a=new Set([...Object.keys(u),...Object.keys(r)]),c=[];a.forEach((t=>{var e,n,o;void 0===u[t]&&(u[t]=f[t]),n=r[t],o=u[t],typeof n==typeof o&&(Array.isArray(n)&&Array.isArray(o)?function(t,e){const n=e.length;if(n!==t.length)return!1;for(let i=0;i<n;i++)if(e[i]!==t[i])return!1;return!0}(n,o):n===o)||(null!==(e=f[t])&&void 0!==e||(f[t]=Q.get(i,t)),c.push(nt(i,t,u[t],s[t],A)))})),yield;const h=c.map((t=>t())).filter(Boolean);if(!h.length)return;const d=u;i.dispatchEvent(ae("motionstart",d)),Promise.all(h.map((t=>t.finished))).then((()=>{i.dispatchEvent(ae("motioncomplete",d))})).catch(l)},getDepth:()=>r,getTarget:()=>u,getOptions:()=>t,getContext:()=>a,mount:t=>(i=t,de.set(i,g),d(),()=>{de.delete(i),function(t){ee&&n(ee,t)}(g);for(const t in s)s[t]()}),isMounted:()=>Boolean(i)};return g},t.createStyleString=function(t={}){const e=ge(t);let n="";for(const t in e)n+=t.startsWith("--")?t:t.replace(/[A-Z]/g,pe),n+=`: ${e[t]}; `;return n},t.createStyles=ge,t.getAnimationData=k,t.getStyleName=J,t.glide=At,t.inView=Lt,t.mountedStates=de,t.resize=$t,t.scroll=function(t,e={}){var{container:n=document.documentElement}=e,i=ht(e,["container"]);let r=Jt.get(n);r||(r=new Set,Jt.set(n,r));const o=Zt(n,t,{time:0,x:{current:0,offset:[],progress:0,scrollLength:0,targetOffset:0,targetLength:0,containerLength:0,velocity:0},y:{current:0,offset:[],progress:0,scrollLength:0,targetOffset:0,targetLength:0,containerLength:0,velocity:0}},i);if(r.add(o),!Xt.has(n)){const t=()=>{const t=performance.now();for(const t of r)t.measure();for(const e of r)e.update(t);for(const t of r)t.notify()};Xt.set(n,t);const e=Qt(n);window.addEventListener("resize",t,{passive:!0}),n!==document.documentElement&&Yt.set(n,$t(n,t)),e.addEventListener("scroll",t,{passive:!0})}const s=Xt.get(n),a=requestAnimationFrame(s);return()=>{var e;"function"!=typeof t&&t.stop(),cancelAnimationFrame(a);const i=Jt.get(n);if(!i)return;if(i.delete(o),i.size)return;const r=Xt.get(n);Xt.delete(n),r&&(Qt(n).removeEventListener("scroll",r),null===(e=Yt.get(n))||void 0===e||e(),window.removeEventListener("resize",r))}},t.spring=Tt,t.stagger=function(t=.1,{start:e=0,from:n=0,easing:i}={}){return(r,s)=>{const a=o(n)?n:function(t,e){if("first"===t)return 0;{const n=e-1;return"last"===t?n:n/2}}(n,s),c=Math.abs(a-r);let l=t*c;if(i){const e=s*t;l=T(i)(l/e)*e}return e+l}},t.style=Q,t.timeline=function(t,e={}){var n;const i=function(t,e={}){var{defaultOptions:n={}}=e,i=ht(e,["defaultOptions"]);const o=[],s=new Map,a={},c=new Map;let l=0,u=0,g=0;for(let e=0;e<t.length;e++){const i=t[e];if(v(i)){c.set(i,u);continue}if(!Array.isArray(i)){c.set(i.name,dt(u,i.at,l,c));continue}const[o,f,p={}]=i;void 0!==p.at&&(u=dt(u,p.at,l,c));let y=0;const w=rt(o,a),b=w.length;for(let t=0;t<b;t++){const e=mt(w[t],s);for(const i in f){const o=yt(i,e);let s=Y(f[i]);const a=it(p,i);let{duration:c=n.duration||r.duration,easing:l=n.easing||r.easing}=a;if(m(l)){"opacity"===i||s.length;const t=l.createAnimation(s,"opacity"!==i,(()=>0),i);l=t.easing,s=t.keyframes||s,c=t.duration||c}const v=lt(p.delay,t,b)||0,w=u+v,E=w+c;let{offset:x=d(s.length)}=a;1===x.length&&0===x[0]&&(x[1]=1);const O=length-s.length;O>0&&h(x,O),1===s.length&&s.unshift(null),gt(o,s,l,x,w,E),y=Math.max(v+c,y),g=Math.max(E,g)}}l=u,u+=y}return s.forEach(((t,e)=>{for(const s in t){const a=t[s];a.sort(pt);const c=[],l=[],u=[];for(let t=0;t<a.length;t++){const{at:e,value:n,easing:i}=a[t];c.push(n),l.push(f(0,g,e)),u.push(i||r.easing)}0!==l[0]&&(l.unshift(0),c.unshift(c[0]),u.unshift("linear")),1!==l[l.length-1]&&(l.push(1),c.push(null)),o.push([e,s,c,Object.assign(Object.assign(Object.assign({},n),{duration:g,easing:u,offset:l}),i)])}})),o}(t,e),o=i.map((t=>nt(...t,A))).filter(Boolean);return st(o,e,null===(n=i[0])||void 0===n?void 0:n[3].duration)},t.withControls=st,Object.defineProperty(t,"__esModule",{value:!0})}));
@@ -4,39 +4,6 @@
4
4
  (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.Motion = {}));
5
5
  })(this, (function (exports) { 'use strict';
6
6
 
7
- /**
8
- * The MotionValue tracks the state of a single animatable
9
- * value. Currently, updatedAt and current are unused. The
10
- * long term idea is to use this to minimise the number
11
- * of DOM reads, and to abstract the DOM interactions here.
12
- */
13
- class MotionValue {
14
- setAnimation(animation) {
15
- this.animation = animation;
16
- animation === null || animation === void 0 ? void 0 : animation.finished.then(() => this.clearAnimation()).catch(() => { });
17
- }
18
- clearAnimation() {
19
- this.animation = this.generator = undefined;
20
- }
21
- }
22
-
23
- const data = new WeakMap();
24
- function getAnimationData(element) {
25
- if (!data.has(element)) {
26
- data.set(element, {
27
- transforms: [],
28
- values: new Map(),
29
- });
30
- }
31
- return data.get(element);
32
- }
33
- function getMotionValue(motionValues, name) {
34
- if (!motionValues.has(name)) {
35
- motionValues.set(name, new MotionValue());
36
- }
37
- return motionValues.get(name);
38
- }
39
-
40
7
  function addUniqueItem(array, item) {
41
8
  array.indexOf(item) === -1 && array.push(item);
42
9
  }
@@ -137,99 +104,6 @@
137
104
  return frameDuration ? velocity * (1000 / frameDuration) : 0;
138
105
  }
139
106
 
140
- /**
141
- * A list of all transformable axes. We'll use this list to generated a version
142
- * of each axes for each transform.
143
- */
144
- const axes = ["", "X", "Y", "Z"];
145
- /**
146
- * An ordered array of each transformable value. By default, transform values
147
- * will be sorted to this order.
148
- */
149
- const order = ["translate", "scale", "rotate", "skew"];
150
- const transformAlias = {
151
- x: "translateX",
152
- y: "translateY",
153
- z: "translateZ",
154
- };
155
- const rotation = {
156
- syntax: "<angle>",
157
- initialValue: "0deg",
158
- toDefaultUnit: (v) => v + "deg",
159
- };
160
- const baseTransformProperties = {
161
- translate: {
162
- syntax: "<length-percentage>",
163
- initialValue: "0px",
164
- toDefaultUnit: (v) => v + "px",
165
- },
166
- rotate: rotation,
167
- scale: {
168
- syntax: "<number>",
169
- initialValue: 1,
170
- toDefaultUnit: noopReturn,
171
- },
172
- skew: rotation,
173
- };
174
- const transformDefinitions = new Map();
175
- const asTransformCssVar = (name) => `--motion-${name}`;
176
- /**
177
- * Generate a list of every possible transform key
178
- */
179
- const transforms = ["x", "y", "z"];
180
- order.forEach((name) => {
181
- axes.forEach((axis) => {
182
- transforms.push(name + axis);
183
- transformDefinitions.set(asTransformCssVar(name + axis), baseTransformProperties[name]);
184
- });
185
- });
186
- /**
187
- * A function to use with Array.sort to sort transform keys by their default order.
188
- */
189
- const compareTransformOrder = (a, b) => transforms.indexOf(a) - transforms.indexOf(b);
190
- /**
191
- * Provide a quick way to check if a string is the name of a transform
192
- */
193
- const transformLookup = new Set(transforms);
194
- const isTransform = (name) => transformLookup.has(name);
195
- const addTransformToElement = (element, name) => {
196
- // Map x to translateX etc
197
- if (transformAlias[name])
198
- name = transformAlias[name];
199
- const { transforms } = getAnimationData(element);
200
- addUniqueItem(transforms, name);
201
- /**
202
- * TODO: An optimisation here could be to cache the transform in element data
203
- * and only update if this has changed.
204
- */
205
- element.style.transform = buildTransformTemplate(transforms);
206
- };
207
- const buildTransformTemplate = (transforms) => transforms
208
- .sort(compareTransformOrder)
209
- .reduce(transformListToString, "")
210
- .trim();
211
- const transformListToString = (template, name) => `${template} ${name}(var(${asTransformCssVar(name)}))`;
212
-
213
- const isCssVar = (name) => name.startsWith("--");
214
- const registeredProperties = new Set();
215
- function registerCssVariable(name) {
216
- if (registeredProperties.has(name))
217
- return;
218
- registeredProperties.add(name);
219
- try {
220
- const { syntax, initialValue } = transformDefinitions.has(name)
221
- ? transformDefinitions.get(name)
222
- : {};
223
- CSS.registerProperty({
224
- name,
225
- inherits: false,
226
- syntax,
227
- initialValue,
228
- });
229
- }
230
- catch (e) { }
231
- }
232
-
233
107
  /*
234
108
  Bezier function generator
235
109
 
@@ -335,12 +209,10 @@
335
209
  });
336
210
  easing = easing || defaults$1.easing;
337
211
  if (isEasingGenerator(easing)) {
338
- const custom = easing.createAnimation(keyframes, () => "0", true);
212
+ const custom = easing.createAnimation(keyframes);
339
213
  easing = custom.easing;
340
- if (custom.keyframes !== undefined)
341
- keyframes = custom.keyframes;
342
- if (custom.duration !== undefined)
343
- initialDuration = custom.duration;
214
+ keyframes = custom.keyframes || keyframes;
215
+ initialDuration = custom.duration || initialDuration;
344
216
  }
345
217
  this.repeat = repeat;
346
218
  this.easing = isEasingList(easing) ? noopReturn : getEasingFunction(easing);
@@ -478,6 +350,132 @@
478
350
  }
479
351
  }
480
352
 
353
+ /**
354
+ * The MotionValue tracks the state of a single animatable
355
+ * value. Currently, updatedAt and current are unused. The
356
+ * long term idea is to use this to minimise the number
357
+ * of DOM reads, and to abstract the DOM interactions here.
358
+ */
359
+ class MotionValue {
360
+ setAnimation(animation) {
361
+ this.animation = animation;
362
+ animation === null || animation === void 0 ? void 0 : animation.finished.then(() => this.clearAnimation()).catch(() => { });
363
+ }
364
+ clearAnimation() {
365
+ this.animation = this.generator = undefined;
366
+ }
367
+ }
368
+
369
+ const data = new WeakMap();
370
+ function getAnimationData(element) {
371
+ if (!data.has(element)) {
372
+ data.set(element, {
373
+ transforms: [],
374
+ values: new Map(),
375
+ });
376
+ }
377
+ return data.get(element);
378
+ }
379
+ function getMotionValue(motionValues, name) {
380
+ if (!motionValues.has(name)) {
381
+ motionValues.set(name, new MotionValue());
382
+ }
383
+ return motionValues.get(name);
384
+ }
385
+
386
+ /**
387
+ * A list of all transformable axes. We'll use this list to generated a version
388
+ * of each axes for each transform.
389
+ */
390
+ const axes = ["", "X", "Y", "Z"];
391
+ /**
392
+ * An ordered array of each transformable value. By default, transform values
393
+ * will be sorted to this order.
394
+ */
395
+ const order = ["translate", "scale", "rotate", "skew"];
396
+ const transformAlias = {
397
+ x: "translateX",
398
+ y: "translateY",
399
+ z: "translateZ",
400
+ };
401
+ const rotation = {
402
+ syntax: "<angle>",
403
+ initialValue: "0deg",
404
+ toDefaultUnit: (v) => v + "deg",
405
+ };
406
+ const baseTransformProperties = {
407
+ translate: {
408
+ syntax: "<length-percentage>",
409
+ initialValue: "0px",
410
+ toDefaultUnit: (v) => v + "px",
411
+ },
412
+ rotate: rotation,
413
+ scale: {
414
+ syntax: "<number>",
415
+ initialValue: 1,
416
+ toDefaultUnit: noopReturn,
417
+ },
418
+ skew: rotation,
419
+ };
420
+ const transformDefinitions = new Map();
421
+ const asTransformCssVar = (name) => `--motion-${name}`;
422
+ /**
423
+ * Generate a list of every possible transform key
424
+ */
425
+ const transforms = ["x", "y", "z"];
426
+ order.forEach((name) => {
427
+ axes.forEach((axis) => {
428
+ transforms.push(name + axis);
429
+ transformDefinitions.set(asTransformCssVar(name + axis), baseTransformProperties[name]);
430
+ });
431
+ });
432
+ /**
433
+ * A function to use with Array.sort to sort transform keys by their default order.
434
+ */
435
+ const compareTransformOrder = (a, b) => transforms.indexOf(a) - transforms.indexOf(b);
436
+ /**
437
+ * Provide a quick way to check if a string is the name of a transform
438
+ */
439
+ const transformLookup = new Set(transforms);
440
+ const isTransform = (name) => transformLookup.has(name);
441
+ const addTransformToElement = (element, name) => {
442
+ // Map x to translateX etc
443
+ if (transformAlias[name])
444
+ name = transformAlias[name];
445
+ const { transforms } = getAnimationData(element);
446
+ addUniqueItem(transforms, name);
447
+ /**
448
+ * TODO: An optimisation here could be to cache the transform in element data
449
+ * and only update if this has changed.
450
+ */
451
+ element.style.transform = buildTransformTemplate(transforms);
452
+ };
453
+ const buildTransformTemplate = (transforms) => transforms
454
+ .sort(compareTransformOrder)
455
+ .reduce(transformListToString, "")
456
+ .trim();
457
+ const transformListToString = (template, name) => `${template} ${name}(var(${asTransformCssVar(name)}))`;
458
+
459
+ const isCssVar = (name) => name.startsWith("--");
460
+ const registeredProperties = new Set();
461
+ function registerCssVariable(name) {
462
+ if (registeredProperties.has(name))
463
+ return;
464
+ registeredProperties.add(name);
465
+ try {
466
+ const { syntax, initialValue } = transformDefinitions.has(name)
467
+ ? transformDefinitions.get(name)
468
+ : {};
469
+ CSS.registerProperty({
470
+ name,
471
+ inherits: false,
472
+ syntax,
473
+ initialValue,
474
+ });
475
+ }
476
+ catch (e) { }
477
+ }
478
+
481
479
  const testAnimation = (keyframes, options) => document.createElement("div").animate(keyframes, options);
482
480
  const featureTests = {
483
481
  cssRegisterProperty: () => typeof CSS !== "undefined" &&
@@ -591,10 +589,22 @@
591
589
  catch (e) { }
592
590
  }
593
591
 
592
+ function getUnitConverter(keyframes, definition) {
593
+ var _a;
594
+ let toUnit = (definition === null || definition === void 0 ? void 0 : definition.toDefaultUnit) || noopReturn;
595
+ const finalKeyframe = keyframes[keyframes.length - 1];
596
+ if (isString(finalKeyframe)) {
597
+ const unit = ((_a = finalKeyframe.match(/(-?[\d.]+)([a-z%]*)/)) === null || _a === void 0 ? void 0 : _a[2]) || "";
598
+ if (unit)
599
+ toUnit = (value) => value + unit;
600
+ }
601
+ return toUnit;
602
+ }
603
+
594
604
  function getDevToolsRecord() {
595
605
  return window.__MOTION_DEV_TOOLS_RECORD;
596
606
  }
597
- function animateStyle(element, key, keyframesDefinition, options = {}) {
607
+ function animateStyle(element, key, keyframesDefinition, options = {}, AnimationPolyfill) {
598
608
  const record = getDevToolsRecord();
599
609
  const isRecording = options.record !== false && record;
600
610
  let animation;
@@ -632,13 +642,15 @@
632
642
  * it from the DOM if it's the first keyframe.
633
643
  */
634
644
  let keyframes = hydrateKeyframes(keyframesList(keyframesDefinition), readInitialValue);
645
+ /**
646
+ * Detect unit type of keyframes.
647
+ */
648
+ const toUnit = getUnitConverter(keyframes, definition);
635
649
  if (isEasingGenerator(easing)) {
636
- const custom = easing.createAnimation(keyframes, readInitialValue, valueIsTransform, name, motionValue);
650
+ const custom = easing.createAnimation(keyframes, key !== "opacity", readInitialValue, name, motionValue);
637
651
  easing = custom.easing;
638
- if (custom.keyframes !== undefined)
639
- keyframes = custom.keyframes;
640
- if (custom.duration !== undefined)
641
- duration = custom.duration;
652
+ keyframes = custom.keyframes || keyframes;
653
+ duration = custom.duration || duration;
642
654
  }
643
655
  /**
644
656
  * If this is a CSS variable we need to register it with the browser
@@ -735,7 +747,7 @@
735
747
  * polyfill for transforms.
736
748
  */
737
749
  }
738
- else if (valueIsTransform) {
750
+ else if (AnimationPolyfill && valueIsTransform) {
739
751
  /**
740
752
  * If any keyframe is a string (because we measured it from the DOM), we need to convert
741
753
  * it into a number before passing to the Animation polyfill.
@@ -748,12 +760,9 @@
748
760
  if (keyframes.length === 1) {
749
761
  keyframes.unshift(parseFloat(readInitialValue()));
750
762
  }
751
- const render = (latest) => {
752
- if (definition)
753
- latest = definition.toDefaultUnit(latest);
754
- style.set(element, name, latest);
755
- };
756
- animation = new Animation(render, keyframes, Object.assign(Object.assign({}, options), { duration,
763
+ animation = new AnimationPolyfill((latest) => {
764
+ style.set(element, name, toUnit ? toUnit(latest) : latest);
765
+ }, keyframes, Object.assign(Object.assign({}, options), { duration,
757
766
  easing }));
758
767
  }
759
768
  else {
@@ -894,35 +903,39 @@
894
903
  return isFunction(option) ? option(i, total) : option;
895
904
  }
896
905
 
897
- function animate$1(elements, keyframes, options = {}) {
898
- elements = resolveElements(elements);
899
- const numElements = elements.length;
900
- /**
901
- * Create and start new animations
902
- */
903
- const animationFactories = [];
904
- for (let i = 0; i < numElements; i++) {
905
- const element = elements[i];
906
- for (const key in keyframes) {
907
- const valueOptions = getOptions(options, key);
908
- valueOptions.delay = resolveOption(valueOptions.delay, i, numElements);
909
- const animation = animateStyle(element, key, keyframes[key], valueOptions);
910
- animationFactories.push(animation);
906
+ function createAnimate(AnimatePolyfill) {
907
+ return function animate(elements, keyframes, options = {}) {
908
+ elements = resolveElements(elements);
909
+ const numElements = elements.length;
910
+ /**
911
+ * Create and start new animations
912
+ */
913
+ const animationFactories = [];
914
+ for (let i = 0; i < numElements; i++) {
915
+ const element = elements[i];
916
+ for (const key in keyframes) {
917
+ const valueOptions = getOptions(options, key);
918
+ valueOptions.delay = resolveOption(valueOptions.delay, i, numElements);
919
+ const animation = animateStyle(element, key, keyframes[key], valueOptions, AnimatePolyfill);
920
+ animationFactories.push(animation);
921
+ }
911
922
  }
912
- }
913
- return withControls(animationFactories, options,
914
- /**
915
- * TODO:
916
- * If easing is set to spring or glide, duration will be dynamically
917
- * generated. Ideally we would dynamically generate this from
918
- * animation.effect.getComputedTiming().duration but this isn't
919
- * supported in iOS13 or our number polyfill. Perhaps it's possible
920
- * to Proxy animations returned from animateStyle that has duration
921
- * as a getter.
922
- */
923
- options.duration);
923
+ return withControls(animationFactories, options,
924
+ /**
925
+ * TODO:
926
+ * If easing is set to spring or glide, duration will be dynamically
927
+ * generated. Ideally we would dynamically generate this from
928
+ * animation.effect.getComputedTiming().duration but this isn't
929
+ * supported in iOS13 or our number polyfill. Perhaps it's possible
930
+ * to Proxy animations returned from animateStyle that has duration
931
+ * as a getter.
932
+ */
933
+ options.duration);
934
+ };
924
935
  }
925
936
 
937
+ const animate$1 = createAnimate(Animation);
938
+
926
939
  /******************************************************************************
927
940
  Copyright (c) Microsoft Corporation.
928
941
 
@@ -1017,7 +1030,7 @@
1017
1030
  * Create and start animations
1018
1031
  */
1019
1032
  const animationFactories = animationDefinitions
1020
- .map((definition) => animateStyle(...definition))
1033
+ .map((definition) => animateStyle(...definition, Animation))
1021
1034
  .filter(Boolean);
1022
1035
  return withControls(animationFactories, options,
1023
1036
  // Get the duration from the first animation definition
@@ -1078,17 +1091,11 @@
1078
1091
  const valueOptions = getOptions(options, key);
1079
1092
  let { duration = defaultOptions.duration || defaults$1.duration, easing = defaultOptions.easing || defaults$1.easing, } = valueOptions;
1080
1093
  if (isEasingGenerator(easing)) {
1081
- const valueIsTransform = isTransform(key);
1082
- invariant(valueKeyframes.length === 2 || !valueIsTransform, "spring must be provided 2 keyframes within timeline");
1083
- const custom = easing.createAnimation(valueKeyframes,
1084
- // TODO We currently only support explicit keyframes
1085
- // so this doesn't currently read from the DOM
1086
- () => "0", valueIsTransform);
1094
+ invariant(key === "opacity" || valueKeyframes.length > 1, "spring must be provided 2 keyframes within timeline()");
1095
+ const custom = easing.createAnimation(valueKeyframes, key !== "opacity", () => 0, key);
1087
1096
  easing = custom.easing;
1088
- if (custom.keyframes !== undefined)
1089
- valueKeyframes = custom.keyframes;
1090
- if (custom.duration !== undefined)
1091
- duration = custom.duration;
1097
+ valueKeyframes = custom.keyframes || valueKeyframes;
1098
+ duration = custom.duration || duration;
1092
1099
  }
1093
1100
  const delay = resolveOption(options.delay, elementIndex, numElements) || 0;
1094
1101
  const startTime = currentTime + delay;
@@ -1339,14 +1346,14 @@
1339
1346
 
1340
1347
  const timeStep = 10;
1341
1348
  const maxDuration = 10000;
1342
- function pregenerateKeyframes(generator) {
1349
+ function pregenerateKeyframes(generator, toUnit = noopReturn) {
1343
1350
  let overshootDuration = undefined;
1344
1351
  let timestamp = timeStep;
1345
1352
  let state = generator(0);
1346
- const keyframes = [state.current];
1353
+ const keyframes = [toUnit(state.current)];
1347
1354
  while (!state.done && timestamp < maxDuration) {
1348
1355
  state = generator(timestamp);
1349
- keyframes.push(state.done ? state.target : state.current);
1356
+ keyframes.push(toUnit(state.done ? state.target : state.current));
1350
1357
  if (overshootDuration === undefined && state.hasReachedTarget) {
1351
1358
  overshootDuration = timestamp;
1352
1359
  }
@@ -1366,6 +1373,12 @@
1366
1373
  };
1367
1374
  }
1368
1375
 
1376
+ function canGenerate(value) {
1377
+ return isNumber(value) && !isNaN(value);
1378
+ }
1379
+ function getAsNumber(value) {
1380
+ return isString(value) ? parseFloat(value) : value;
1381
+ }
1369
1382
  function createGeneratorEasing(createGenerator) {
1370
1383
  const keyframesCache = new WeakMap();
1371
1384
  return (options = {}) => {
@@ -1379,54 +1392,80 @@
1379
1392
  }
1380
1393
  return generatorCache.get(key);
1381
1394
  };
1382
- const getKeyframes = (generator) => {
1395
+ const getKeyframes = (generator, toUnit) => {
1383
1396
  if (!keyframesCache.has(generator)) {
1384
- keyframesCache.set(generator, pregenerateKeyframes(generator));
1397
+ keyframesCache.set(generator, pregenerateKeyframes(generator, toUnit));
1385
1398
  }
1386
1399
  return keyframesCache.get(generator);
1387
1400
  };
1388
1401
  return {
1389
- createAnimation: (keyframes, getOrigin, canUseGenerator, name, motionValue) => {
1390
- var _a, _b;
1402
+ createAnimation: (keyframes, shouldGenerate = true, getOrigin, name, motionValue) => {
1391
1403
  let settings;
1404
+ let origin;
1405
+ let target;
1406
+ let velocity = 0;
1407
+ let toUnit = noopReturn;
1392
1408
  const numKeyframes = keyframes.length;
1393
- let shouldUseGenerator = canUseGenerator &&
1394
- numKeyframes <= 2 &&
1395
- keyframes.every(isNumberOrNull);
1396
- if (shouldUseGenerator) {
1397
- const target = keyframes[numKeyframes - 1];
1398
- const unresolvedOrigin = numKeyframes === 1 ? null : keyframes[0];
1399
- let velocity = 0;
1400
- let origin = 0;
1401
- const prevGenerator = motionValue === null || motionValue === void 0 ? void 0 : motionValue.generator;
1402
- if (prevGenerator) {
1409
+ /**
1410
+ * If we should generate an animation for this value, run some preperation
1411
+ * like resolving target/origin, finding a unit (if any) and determine if
1412
+ * it is actually possible to generate.
1413
+ */
1414
+ if (shouldGenerate) {
1415
+ toUnit = getUnitConverter(keyframes, name ? transformDefinitions.get(getStyleName(name)) : undefined);
1416
+ const targetDefinition = keyframes[numKeyframes - 1];
1417
+ target = getAsNumber(targetDefinition);
1418
+ if (numKeyframes > 1 && keyframes[0] !== null) {
1403
1419
  /**
1404
- * If we have a generator for this value we can use it to resolve
1405
- * the animations's current value and velocity.
1420
+ * If we have multiple keyframes, take the initial keyframe as the origin.
1406
1421
  */
1407
- const { animation, generatorStartTime } = motionValue;
1408
- const startTime = (animation === null || animation === void 0 ? void 0 : animation.startTime) || generatorStartTime || 0;
1409
- const currentTime = (animation === null || animation === void 0 ? void 0 : animation.currentTime) || performance.now() - startTime;
1410
- const prevGeneratorCurrent = prevGenerator(currentTime).current;
1411
- origin = (_a = unresolvedOrigin) !== null && _a !== void 0 ? _a : prevGeneratorCurrent;
1412
- if (numKeyframes === 1 ||
1413
- (numKeyframes === 2 && keyframes[0] === null)) {
1414
- velocity = calcGeneratorVelocity((t) => prevGenerator(t).current, currentTime, prevGeneratorCurrent);
1415
- }
1422
+ origin = getAsNumber(keyframes[0]);
1416
1423
  }
1417
1424
  else {
1418
- origin = (_b = unresolvedOrigin) !== null && _b !== void 0 ? _b : parseFloat(getOrigin());
1425
+ const prevGenerator = motionValue === null || motionValue === void 0 ? void 0 : motionValue.generator;
1426
+ /**
1427
+ * If we have an existing generator for this value we can use it to resolve
1428
+ * the animation's current value and velocity.
1429
+ */
1430
+ if (prevGenerator) {
1431
+ /**
1432
+ * If we have a generator for this value we can use it to resolve
1433
+ * the animations's current value and velocity.
1434
+ */
1435
+ const { animation, generatorStartTime } = motionValue;
1436
+ const startTime = (animation === null || animation === void 0 ? void 0 : animation.startTime) || generatorStartTime || 0;
1437
+ const currentTime = (animation === null || animation === void 0 ? void 0 : animation.currentTime) || performance.now() - startTime;
1438
+ const prevGeneratorCurrent = prevGenerator(currentTime).current;
1439
+ origin = prevGeneratorCurrent;
1440
+ velocity = calcGeneratorVelocity((t) => prevGenerator(t).current, currentTime, prevGeneratorCurrent);
1441
+ }
1442
+ else if (getOrigin) {
1443
+ /**
1444
+ * As a last resort, read the origin from the DOM.
1445
+ */
1446
+ origin = getAsNumber(getOrigin());
1447
+ }
1419
1448
  }
1449
+ }
1450
+ /**
1451
+ * If we've determined it is possible to generate an animation, do so.
1452
+ */
1453
+ if (canGenerate(origin) && canGenerate(target)) {
1420
1454
  const generator = getGenerator(origin, target, velocity, name === null || name === void 0 ? void 0 : name.includes("scale"));
1421
- const keyframesMetadata = getKeyframes(generator);
1422
- settings = Object.assign(Object.assign({}, keyframesMetadata), { easing: "linear" });
1455
+ settings = Object.assign(Object.assign({}, getKeyframes(generator, toUnit)), { easing: "linear" });
1423
1456
  // TODO Add test for this
1424
1457
  if (motionValue) {
1425
1458
  motionValue.generator = generator;
1426
1459
  motionValue.generatorStartTime = performance.now();
1427
1460
  }
1428
1461
  }
1429
- else {
1462
+ /**
1463
+ * If by now we haven't generated a set of keyframes, create a generic generator
1464
+ * based on the provided props that animates from 0-100 to fetch a rough
1465
+ * "overshootDuration" - the moment when the generator first hits the animation target.
1466
+ * Then return animation settings that will run a normal animation for that duration.
1467
+ */
1468
+ if (!settings) {
1430
1469
  const keyframesMetadata = getKeyframes(getGenerator(0, 100));
1431
1470
  settings = {
1432
1471
  easing: "ease",
@@ -1438,7 +1477,6 @@
1438
1477
  };
1439
1478
  };
1440
1479
  }
1441
- const isNumberOrNull = (value) => typeof value !== "string";
1442
1480
 
1443
1481
  const spring = createGeneratorEasing(spring$1);
1444
1482
 
@@ -2149,7 +2187,7 @@
2149
2187
  }
2150
2188
  if (hasChanged(prevTarget[key], target[key])) {
2151
2189
  (_a = baseTarget[key]) !== null && _a !== void 0 ? _a : (baseTarget[key] = style.get(element, key));
2152
- animationFactories.push(animateStyle(element, key, target[key], animationOptions[key]));
2190
+ animationFactories.push(animateStyle(element, key, target[key], animationOptions[key], Animation));
2153
2191
  }
2154
2192
  });
2155
2193
  // Wait for all animation states to read from the DOM
@@ -2284,6 +2322,7 @@
2284
2322
  exports.ScrollOffset = ScrollOffset;
2285
2323
  exports.animate = animate;
2286
2324
  exports.animateStyle = animateStyle;
2325
+ exports.createAnimate = createAnimate;
2287
2326
  exports.createMotionState = createMotionState;
2288
2327
  exports.createStyleString = createStyleString;
2289
2328
  exports.createStyles = createStyles;
@@ -1 +1 @@
1
- class t{setAnimation(t){this.animation=t,null==t||t.finished.then((()=>this.clearAnimation())).catch((()=>{}))}clearAnimation(){this.animation=this.generator=void 0}}const e=new WeakMap;function n(t){return e.has(t)||e.set(t,{transforms:[],values:new Map}),e.get(t)}function i(t,e){-1===t.indexOf(e)&&t.push(e)}function r(t,e){const n=t.indexOf(e);n>-1&&t.splice(n,1)}const o=(t,e,n)=>Math.min(Math.max(n,t),e),s={duration:.3,delay:0,endDelay:0,repeat:0,easing:"ease"},a=t=>"number"==typeof t,c=t=>Array.isArray(t)&&!a(t[0]);function l(t,e){return c(t)?t[((t,e,n)=>{const i=e-t;return((n-t)%i+i)%i+t})(0,t.length,e)]:t}const u=(t,e,n)=>-n*t+n*e+t,f=()=>{},h=t=>t,d=(t,e,n)=>e-t==0?1:(n-t)/(e-t);function p(t,e){const n=t[t.length-1];for(let i=1;i<=e;i++){const r=d(0,e,i);t.push(u(n,1,r))}}function g(t){const e=[0];return p(e,t-1),e}function m(t,e=g(t.length),n=h){const i=t.length,r=i-e.length;return r>0&&p(e,r),r=>{let s=0;for(;s<i-2&&!(r<e[s+1]);s++);let a=o(0,1,d(e[s],e[s+1],r));return a=l(n,s)(a),u(t[s],t[s+1],a)}}const v=t=>Array.isArray(t)&&a(t[0]),y=t=>"object"==typeof t&&Boolean(t.createAnimation),w=t=>"function"==typeof t,b=t=>"string"==typeof t,E=t=>1e3*t,O=t=>t/1e3;function x(t,e){return e?t*(1e3/e):0}const T=["","X","Y","Z"],M={x:"translateX",y:"translateY",z:"translateZ"},A={syntax:"<angle>",initialValue:"0deg",toDefaultUnit:t=>t+"deg"},S={translate:{syntax:"<length-percentage>",initialValue:"0px",toDefaultUnit:t=>t+"px"},rotate:A,scale:{syntax:"<number>",initialValue:1,toDefaultUnit:h},skew:A},D=new Map,k=t=>`--motion-${t}`,L=["x","y","z"];["translate","scale","rotate","skew"].forEach((t=>{T.forEach((e=>{L.push(t+e),D.set(k(t+e),S[t])}))}));const W=(t,e)=>L.indexOf(t)-L.indexOf(e),j=new Set(L),R=t=>j.has(t),B=t=>t.sort(W).reduce(z,"").trim(),z=(t,e)=>`${t} ${e}(var(${k(e)}))`,P=t=>t.startsWith("--"),V=new Set;const $=(t,e,n)=>(((1-3*n+3*e)*t+(3*n-6*e))*t+3*e)*t;function q(t,e,n,i){if(t===e&&n===i)return h;const r=e=>function(t,e,n,i,r){let o,s,a=0;do{s=e+(n-e)/2,o=$(s,i,r)-t,o>0?n=s:e=s}while(Math.abs(o)>1e-7&&++a<12);return s}(e,0,1,t,n);return t=>0===t||1===t?t:$(r(t),e,i)}const F={ease:q(.25,.1,.25,1),"ease-in":q(.42,0,1,1),"ease-in-out":q(.42,0,.58,1),"ease-out":q(0,0,.58,1)},C=/\((.*?)\)/;function H(t){if(w(t))return t;if(v(t))return q(...t);if(F[t])return F[t];if(t.startsWith("steps")){const e=C.exec(t);if(e){const t=e[1].split(",");return((t,e="end")=>n=>{const i=(n="end"===e?Math.min(n,.999):Math.max(n,.001))*t,r="end"===e?Math.floor(i):Math.ceil(i);return o(0,1,r/t)})(parseFloat(t[0]),t[1].trim())}}return h}class I{constructor(t,e=[0,1],{easing:n,duration:i=s.duration,delay:r=s.delay,endDelay:o=s.endDelay,repeat:a=s.repeat,offset:l,direction:u="normal"}={}){if(this.startTime=null,this.rate=1,this.t=0,this.cancelTimestamp=null,this.easing=h,this.duration=0,this.totalDuration=0,this.repeat=0,this.playState="idle",this.finished=new Promise(((t,e)=>{this.resolve=t,this.reject=e})),n=n||s.easing,y(n)){const t=n.createAnimation(e,(()=>"0"),!0);n=t.easing,void 0!==t.keyframes&&(e=t.keyframes),void 0!==t.duration&&(i=t.duration)}this.repeat=a,this.easing=c(n)?h:H(n),this.updateDuration(i);const f=m(e,l,c(n)?n.map(H):h);this.tick=e=>{var n;let i=0;i=void 0!==this.pauseTime?this.pauseTime:(e-this.startTime)*this.rate,this.t=i,i/=1e3,i=Math.max(i-r,0),"finished"===this.playState&&void 0===this.pauseTime&&(i=this.totalDuration);const s=i/this.duration;let a=Math.floor(s),c=s%1;!c&&s>=1&&(c=1),1===c&&a--;const l=a%2;("reverse"===u||"alternate"===u&&l||"alternate-reverse"===u&&!l)&&(c=1-c);const h=i>=this.totalDuration?1:Math.min(c,1),d=f(this.easing(h));t(d);void 0===this.pauseTime&&("finished"===this.playState||i>=this.totalDuration+o)?(this.playState="finished",null===(n=this.resolve)||void 0===n||n.call(this,d)):"idle"!==this.playState&&(this.frameRequestId=requestAnimationFrame(this.tick))},this.play()}play(){const t=performance.now();this.playState="running",void 0!==this.pauseTime?this.startTime=t-this.pauseTime:this.startTime||(this.startTime=t),this.cancelTimestamp=this.startTime,this.pauseTime=void 0,this.frameRequestId=requestAnimationFrame(this.tick)}pause(){this.playState="paused",this.pauseTime=this.t}finish(){this.playState="finished",this.tick(0)}stop(){var t;this.playState="idle",void 0!==this.frameRequestId&&cancelAnimationFrame(this.frameRequestId),null===(t=this.reject)||void 0===t||t.call(this,!1)}cancel(){this.stop(),this.tick(this.cancelTimestamp)}reverse(){this.rate*=-1}commitStyles(){}updateDuration(t){this.duration=t,this.totalDuration=t*(this.repeat+1)}get currentTime(){return this.t}set currentTime(t){void 0!==this.pauseTime||0===this.rate?this.pauseTime=t:this.startTime=performance.now()-t/this.rate}get playbackRate(){return this.rate}set playbackRate(t){this.rate=t}}const U=(t,e)=>document.createElement("div").animate(t,e),N={cssRegisterProperty:()=>"undefined"!=typeof CSS&&Object.hasOwnProperty.call(CSS,"registerProperty"),waapi:()=>Object.hasOwnProperty.call(Element.prototype,"animate"),partialKeyframes:()=>{try{U({opacity:[1]})}catch(t){return!1}return!0},finished:()=>Boolean(U({opacity:[0,1]},{duration:.001}).finished),linearEasing:()=>{try{U({opacity:0},{easing:"linear(0, 1)"})}catch(t){return!1}return!0}},_={},G={};for(const t in N)G[t]=()=>(void 0===_[t]&&(_[t]=N[t]()),_[t]);const Z=(t,e)=>w(t)?G.linearEasing()?`linear(${((t,e)=>{let n="";const i=Math.round(e/.015);for(let e=0;e<i;e++)n+=t(d(0,i-1,e))+", ";return n.substring(0,n.length-2)})(t,e)})`:s.easing:v(t)?K(t):t,K=([t,e,n,i])=>`cubic-bezier(${t}, ${e}, ${n}, ${i})`;const X=t=>Array.isArray(t)?t:[t];function Y(t){return M[t]&&(t=M[t]),R(t)?k(t):t}const J={get:(t,e)=>{e=Y(e);let n=P(e)?t.style.getPropertyValue(e):getComputedStyle(t)[e];if(!n&&0!==n){const t=D.get(e);t&&(n=t.initialValue)}return n},set:(t,e,n)=>{e=Y(e),P(e)?t.style.setProperty(e,n):t.style[e]=n}};function Q(t,e=!0){if(t&&"finished"!==t.playState)try{t.stop?t.stop():(e&&t.commitStyles(),t.cancel())}catch(t){}}function tt(e,r,o,l={}){const u=window.__MOTION_DEV_TOOLS_RECORD,h=!1!==l.record&&u;let d,{duration:p=s.duration,delay:g=s.delay,endDelay:m=s.endDelay,repeat:v=s.repeat,easing:b=s.easing,direction:O,offset:x,allowWebkitAcceleration:T=!1}=l;const A=n(e),S=R(r);let k=G.waapi();S&&((t,e)=>{M[e]&&(e=M[e]);const{transforms:r}=n(t);i(r,e),t.style.transform=B(r)})(e,r);const L=Y(r),W=function(e,n){return e.has(n)||e.set(n,new t),e.get(n)}(A.values,L),j=D.get(L);return Q(W.animation,!(y(b)&&W.generator)&&!1!==l.record),()=>{const t=()=>{var t,n;return null!==(n=null!==(t=J.get(e,L))&&void 0!==t?t:null==j?void 0:j.initialValue)&&void 0!==n?n:0};let n=function(t,e){for(let n=0;n<t.length;n++)null===t[n]&&(t[n]=n?t[n-1]:e());return t}(X(o),t);if(y(b)){const e=b.createAnimation(n,t,S,L,W);b=e.easing,void 0!==e.keyframes&&(n=e.keyframes),void 0!==e.duration&&(p=e.duration)}if(P(L)&&(G.cssRegisterProperty()?function(t){if(!V.has(t)){V.add(t);try{const{syntax:e,initialValue:n}=D.has(t)?D.get(t):{};CSS.registerProperty({name:t,inherits:!1,syntax:e,initialValue:n})}catch(t){}}}(L):k=!1),S&&!G.linearEasing()&&(w(b)||c(b)&&b.some(w))&&(k=!1),k){j&&(n=n.map((t=>a(t)?j.toDefaultUnit(t):t))),1!==n.length||G.partialKeyframes()&&!h||n.unshift(t());const i={delay:E(g),duration:E(p),endDelay:E(m),easing:c(b)?void 0:Z(b,p),direction:O,iterations:v+1,fill:"both"};d=e.animate({[L]:n,offset:x,easing:c(b)?b.map((t=>Z(t,p))):void 0},i),d.finished||(d.finished=new Promise(((t,e)=>{d.onfinish=t,d.oncancel=e})));const r=n[n.length-1];d.finished.then((()=>{J.set(e,L,r),d.cancel()})).catch(f),T||(d.playbackRate=1.000001)}else if(S){n=n.map((t=>"string"==typeof t?parseFloat(t):t)),1===n.length&&n.unshift(parseFloat(t()));d=new I((t=>{j&&(t=j.toDefaultUnit(t)),J.set(e,L,t)}),n,Object.assign(Object.assign({},l),{duration:p,easing:b}))}else{const t=n[n.length-1];J.set(e,L,j&&a(t)?j.toDefaultUnit(t):t)}return h&&u(e,r,n,{duration:p,delay:g,easing:b,repeat:v,offset:x},"motion-one"),W.setAnimation(d),d}}const et=(t,e)=>t[e]?Object.assign(Object.assign({},t),t[e]):Object.assign({},t);function nt(t,e){var n;return"string"==typeof t?e?(null!==(n=e[t])&&void 0!==n||(e[t]=document.querySelectorAll(t)),t=e[t]):t=document.querySelectorAll(t):t instanceof Element&&(t=[t]),Array.from(t||[])}const it=t=>t(),rt=(t,e,n=s.duration)=>new Proxy({animations:t.map(it).filter(Boolean),duration:n,options:e},ot),ot={get:(t,e)=>{const n=t.animations[0];switch(e){case"duration":return t.duration;case"currentTime":return O((null==n?void 0:n[e])||0);case"playbackRate":case"playState":return null==n?void 0:n[e];case"finished":return t.finished||(t.finished=Promise.all(t.animations.map(st)).catch(f)),t.finished;case"stop":return()=>{t.animations.forEach((t=>Q(t)))};case"forEachNative":return e=>{t.animations.forEach((n=>e(n,t)))};default:return void 0===(null==n?void 0:n[e])?void 0:()=>t.animations.forEach((t=>t[e]()))}},set:(t,e,n)=>{switch(e){case"currentTime":n=E(n);case"currentTime":case"playbackRate":for(let i=0;i<t.animations.length;i++)t.animations[i][e]=n;return!0}return!1}},st=t=>t.finished;function at(t=.1,{start:e=0,from:n=0,easing:i}={}){return(r,o)=>{const s=a(n)?n:function(t,e){if("first"===t)return 0;{const n=e-1;return"last"===t?n:n/2}}(n,o),c=Math.abs(s-r);let l=t*c;if(i){const e=o*t;l=H(i)(l/e)*e}return e+l}}function ct(t,e,n){return w(t)?t(e,n):t}function lt(t,e,n={}){const i=(t=nt(t)).length,r=[];for(let o=0;o<i;o++){const s=t[o];for(const t in e){const a=et(n,t);a.delay=ct(a.delay,o,i);const c=tt(s,t,e[t],a);r.push(c)}}return rt(r,n,n.duration)}function ut(t,e){var n={};for(var i in t)Object.prototype.hasOwnProperty.call(t,i)&&e.indexOf(i)<0&&(n[i]=t[i]);if(null!=t&&"function"==typeof Object.getOwnPropertySymbols){var r=0;for(i=Object.getOwnPropertySymbols(t);r<i.length;r++)e.indexOf(i[r])<0&&Object.prototype.propertyIsEnumerable.call(t,i[r])&&(n[i[r]]=t[i[r]])}return n}var ft=function(){};function ht(t,e,n,i){var r;return a(e)?e:e.startsWith("-")||e.startsWith("+")?Math.max(0,t+parseFloat(e)):"<"===e?n:null!==(r=i.get(e))&&void 0!==r?r:t}function dt(t,e,n,i,o,s){!function(t,e,n){for(let i=0;i<t.length;i++){const o=t[i];o.at>e&&o.at<n&&(r(t,o),i--)}}(t,o,s);for(let r=0;r<e.length;r++)t.push({value:e[r],at:u(o,s,i[r]),easing:l(n,r)})}function pt(t,e){return t.at===e.at?null===t.value?1:-1:t.at-e.at}function gt(t,e={}){var n;const i=function(t,e={}){var{defaultOptions:n={}}=e,i=ut(e,["defaultOptions"]);const r=[],o=new Map,a={},c=new Map;let l=0,u=0,f=0;for(let e=0;e<t.length;e++){const i=t[e];if(b(i)){c.set(i,u);continue}if(!Array.isArray(i)){c.set(i.name,ht(u,i.at,l,c));continue}const[r,h,d={}]=i;void 0!==d.at&&(u=ht(u,d.at,l,c));let m=0;const v=nt(r,a),w=v.length;for(let t=0;t<w;t++){const e=mt(v[t],o);for(const i in h){const r=vt(i,e);let o=X(h[i]);const a=et(d,i);let{duration:c=n.duration||s.duration,easing:l=n.easing||s.easing}=a;if(y(l)){const t=R(i);ft(2===o.length||!t,"spring must be provided 2 keyframes within timeline");const e=l.createAnimation(o,(()=>"0"),t);l=e.easing,void 0!==e.keyframes&&(o=e.keyframes),void 0!==e.duration&&(c=e.duration)}const v=ct(d.delay,t,w)||0,b=u+v,E=b+c;let{offset:O=g(o.length)}=a;1===O.length&&0===O[0]&&(O[1]=1);const x=length-o.length;x>0&&p(O,x),1===o.length&&o.unshift(null),dt(r,o,l,O,b,E),m=Math.max(v+c,m),f=Math.max(E,f)}}l=u,u+=m}return o.forEach(((t,e)=>{for(const o in t){const a=t[o];a.sort(pt);const c=[],l=[],u=[];for(let t=0;t<a.length;t++){const{at:e,value:n,easing:i}=a[t];c.push(n),l.push(d(0,f,e)),u.push(i||s.easing)}0!==l[0]&&(l.unshift(0),c.unshift(c[0]),u.unshift("linear")),1!==l[l.length-1]&&(l.push(1),c.push(null)),r.push([e,o,c,Object.assign(Object.assign(Object.assign({},n),{duration:f,easing:u,offset:l}),i)])}})),r}(t,e),r=i.map((t=>tt(...t))).filter(Boolean);return rt(r,e,null===(n=i[0])||void 0===n?void 0:n[3].duration)}function mt(t,e){return!e.has(t)&&e.set(t,{}),e.get(t)}function vt(t,e){return e[t]||(e[t]=[]),e[t]}"production"!==process.env.NODE_ENV&&(ft=function(t,e){if(!t)throw new Error(e)});function yt(t,e,n){const i=Math.max(e-5,0);return x(n-t(i),e-i)}const wt=100,bt=10,Et=1;const Ot=({stiffness:t=wt,damping:e=bt,mass:n=Et,from:i=0,to:r=1,velocity:o=0,restSpeed:s=2,restDistance:a=.5}={})=>{o=o?O(o):0;const c={done:!1,hasReachedTarget:!1,current:i,target:r},l=r-i,u=Math.sqrt(t/n)/1e3,f=((t=wt,e=bt,n=Et)=>e/(2*Math.sqrt(t*n)))(t,e,n);let h;if(f<1){const t=u*Math.sqrt(1-f*f);h=e=>r-Math.exp(-f*u*e)*((f*u*l-o)/t*Math.sin(t*e)+l*Math.cos(t*e))}else h=t=>r-Math.exp(-u*t)*(l+(u*l-o)*t);return t=>{c.current=h(t);const e=0===t?o:yt(h,t,c.current),n=Math.abs(e)<=s,l=Math.abs(r-c.current)<=a;var u,f,d;return c.done=n&&l,c.hasReachedTarget=(u=i,f=r,d=c.current,u<f&&d>=f||u>f&&d<=f),c}};function xt(t){const e=new WeakMap;return(n={})=>{const i=new Map,r=(e=0,r=100,o=0,s=!1)=>{const a=`${e}-${r}-${o}-${s}`;return i.has(a)||i.set(a,t(Object.assign({from:e,to:r,velocity:o,restSpeed:s?.05:2,restDistance:s?.01:.5},n))),i.get(a)},o=t=>(e.has(t)||e.set(t,function(t){let e,n=10,i=t(0);const r=[i.current];for(;!i.done&&n<1e4;)i=t(n),r.push(i.done?i.target:i.current),void 0===e&&i.hasReachedTarget&&(e=n),n+=10;const o=n-10;return 1===r.length&&r.push(i.current),{keyframes:r,duration:o/1e3,overshootDuration:(null!=e?e:o)/1e3}}(t)),e.get(t));return{createAnimation:(t,e,n,i,s)=>{var a,c;let l;const u=t.length;if(n&&u<=2&&t.every(Tt)){const n=t[u-1],f=1===u?null:t[0];let h=0,d=0;const p=null==s?void 0:s.generator;if(p){const{animation:e,generatorStartTime:n}=s,i=(null==e?void 0:e.startTime)||n||0,r=(null==e?void 0:e.currentTime)||performance.now()-i,o=p(r).current;d=null!==(a=f)&&void 0!==a?a:o,(1===u||2===u&&null===t[0])&&(h=yt((t=>p(t).current),r,o))}else d=null!==(c=f)&&void 0!==c?c:parseFloat(e());const g=r(d,n,h,null==i?void 0:i.includes("scale")),m=o(g);l=Object.assign(Object.assign({},m),{easing:"linear"}),s&&(s.generator=g,s.generatorStartTime=performance.now())}else{l={easing:"ease",duration:o(r(0,100)).overshootDuration}}return l}}}}const Tt=t=>"string"!=typeof t,Mt=xt(Ot),At=xt((({from:t=0,velocity:e=0,power:n=.8,decay:i=.325,bounceDamping:r,bounceStiffness:o,changeTarget:s,min:a,max:c,restDistance:l=.5,restSpeed:u})=>{i=E(i);const f={hasReachedTarget:!1,done:!1,current:t,target:t},h=t=>void 0===a?c:void 0===c||Math.abs(a-t)<Math.abs(c-t)?a:c;let d=n*e;const p=t+d,g=void 0===s?p:s(p);f.target=g,g!==p&&(d=g-t);const m=t=>-d*Math.exp(-t/i),v=t=>g+m(t),y=t=>{const e=m(t),n=v(t);f.done=Math.abs(e)<=l,f.current=f.done?g:n};let w,b;const O=t=>{var e;(e=f.current,void 0!==a&&e<a||void 0!==c&&e>c)&&(w=t,b=Ot({from:f.current,to:h(f.current),velocity:yt(v,t,f.current),damping:r,stiffness:o,restDistance:l,restSpeed:u}))};return O(0),t=>{let e=!1;return b||void 0!==w||(e=!0,y(t),O(t)),void 0!==w&&t>w?(f.hasReachedTarget=!0,b(t-w)):(f.hasReachedTarget=!1,!e&&y(t),f)}})),St={any:0,all:1};function Dt(t,e,{root:n,margin:i,amount:r="any"}={}){if("undefined"==typeof IntersectionObserver)return()=>{};const o=nt(t),s=new WeakMap,a=new IntersectionObserver((t=>{t.forEach((t=>{const n=s.get(t.target);if(t.isIntersecting!==Boolean(n))if(t.isIntersecting){const n=e(t);w(n)?s.set(t.target,n):a.unobserve(t.target)}else n&&(n(t),s.delete(t.target))}))}),{root:n,rootMargin:i,threshold:"number"==typeof r?r:St[r]});return o.forEach((t=>a.observe(t))),()=>a.disconnect()}const kt=new WeakMap;let Lt;function Wt({target:t,contentRect:e,borderBoxSize:n}){var i;null===(i=kt.get(t))||void 0===i||i.forEach((i=>{i({target:t,contentSize:e,get size(){return function(t,e){if(e){const{inlineSize:t,blockSize:n}=e[0];return{width:t,height:n}}return t instanceof SVGElement&&"getBBox"in t?t.getBBox():{width:t.offsetWidth,height:t.offsetHeight}}(t,n)}})}))}function jt(t){t.forEach(Wt)}function Rt(t,e){Lt||"undefined"!=typeof ResizeObserver&&(Lt=new ResizeObserver(jt));const n=nt(t);return n.forEach((t=>{let n=kt.get(t);n||(n=new Set,kt.set(t,n)),n.add(e),null==Lt||Lt.observe(t)})),()=>{n.forEach((t=>{const n=kt.get(t);null==n||n.delete(e),(null==n?void 0:n.size)||null==Lt||Lt.unobserve(t)}))}}const Bt=new Set;let zt;function Pt(t){return Bt.add(t),zt||(zt=()=>{const t={width:window.innerWidth,height:window.innerHeight},e={target:window,size:t,contentSize:t};Bt.forEach((t=>t(e)))},window.addEventListener("resize",zt)),()=>{Bt.delete(t),!Bt.size&&zt&&(zt=void 0)}}function Vt(t,e){return w(t)?Pt(t):Rt(t,e)}const $t={x:{length:"Width",position:"Left"},y:{length:"Height",position:"Top"}};function qt(t,e,n,i){const r=n[e],{length:o,position:s}=$t[e],a=r.current,c=n.time;r.current=t["scroll"+s],r.scrollLength=t["scroll"+o]-t["client"+o],r.offset.length=0,r.offset[0]=0,r.offset[1]=r.scrollLength,r.progress=d(0,r.scrollLength,r.current);const l=i-c;r.velocity=l>50?0:x(r.current-a,l)}const Ft={Enter:[[0,1],[1,1]],Exit:[[0,0],[1,0]],Any:[[1,0],[0,1]],All:[[0,0],[1,1]]},Ct={start:0,center:.5,end:1};function Ht(t,e,n=0){let i=0;if(void 0!==Ct[t]&&(t=Ct[t]),b(t)){const e=parseFloat(t);t.endsWith("px")?i=e:t.endsWith("%")?t=e/100:t.endsWith("vw")?i=e/100*document.documentElement.clientWidth:t.endsWith("vh")?i=e/100*document.documentElement.clientHeight:t=e}return a(t)&&(i=e*t),n+i}const It=[0,0];function Ut(t,e,n,i){let r=Array.isArray(t)?t:It,o=0,s=0;return a(t)?r=[t,t]:b(t)&&(r=(t=t.trim()).includes(" ")?t.split(" "):[t,Ct[t]?t:"0"]),o=Ht(r[0],n,i),s=Ht(r[1],e),o-s}const Nt={x:0,y:0};function _t(t,e,n){let{offset:i=Ft.All}=n;const{target:r=t,axis:o="y"}=n,s="y"===o?"height":"width",a=r!==t?function(t,e){let n={x:0,y:0},i=t;for(;i&&i!==e;)if(i instanceof HTMLElement)n.x+=i.offsetLeft,n.y+=i.offsetTop,i=i.offsetParent;else if(i instanceof SVGGraphicsElement&&"getBBox"in i){const{top:t,left:e}=i.getBBox();for(n.x+=e,n.y+=t;i&&"svg"!==i.tagName;)i=i.parentNode}return n}(r,t):Nt,c=r===t?{width:t.scrollWidth,height:t.scrollHeight}:{width:r.clientWidth,height:r.clientHeight},l={width:t.clientWidth,height:t.clientHeight};e[o].offset.length=0;let u=!e[o].interpolate;const f=i.length;for(let t=0;t<f;t++){const n=Ut(i[t],l[s],c[s],a[o]);u||n===e[o].interpolatorOffsets[t]||(u=!0),e[o].offset[t]=n}u&&(e[o].interpolate=m(g(f),e[o].offset),e[o].interpolatorOffsets=[...e[o].offset]),e[o].progress=e[o].interpolate(e[o].current)}function Gt(t,e,n,i={}){const r=i.axis||"y";return{measure:()=>function(t,e=t,n){if(n.x.targetOffset=0,n.y.targetOffset=0,e!==t){let i=e;for(;i&&i!=t;)n.x.targetOffset+=i.offsetLeft,n.y.targetOffset+=i.offsetTop,i=i.offsetParent}n.x.targetLength=e===t?e.scrollWidth:e.clientWidth,n.y.targetLength=e===t?e.scrollHeight:e.clientHeight,n.x.containerLength=t.clientWidth,n.y.containerLength=t.clientHeight}(t,i.target,n),update:e=>{!function(t,e,n){qt(t,"x",e,n),qt(t,"y",e,n),e.time=n}(t,n,e),(i.offset||i.target)&&_t(t,n,i)},notify:w(e)?()=>e(n):Zt(e,n[r])}}function Zt(t,e){return t.pause(),t.forEachNative(((t,{easing:e})=>{var n,i;if(t.updateDuration)e||(t.easing=h),t.updateDuration(1);else{const r={duration:1e3};e||(r.easing="linear"),null===(i=null===(n=t.effect)||void 0===n?void 0:n.updateTiming)||void 0===i||i.call(n,r)}})),()=>{t.currentTime=e.progress}}const Kt=new WeakMap,Xt=new WeakMap,Yt=new WeakMap,Jt=t=>t===document.documentElement?window:t;function Qt(t,e={}){var{container:n=document.documentElement}=e,i=ut(e,["container"]);let r=Yt.get(n);r||(r=new Set,Yt.set(n,r));const o=Gt(n,t,{time:0,x:{current:0,offset:[],progress:0,scrollLength:0,targetOffset:0,targetLength:0,containerLength:0,velocity:0},y:{current:0,offset:[],progress:0,scrollLength:0,targetOffset:0,targetLength:0,containerLength:0,velocity:0}},i);if(r.add(o),!Kt.has(n)){const t=()=>{const t=performance.now();for(const t of r)t.measure();for(const e of r)e.update(t);for(const t of r)t.notify()};Kt.set(n,t);const e=Jt(n);window.addEventListener("resize",t,{passive:!0}),n!==document.documentElement&&Xt.set(n,Vt(n,t)),e.addEventListener("scroll",t,{passive:!0})}const s=Kt.get(n),a=requestAnimationFrame(s);return()=>{var e;"function"!=typeof t&&t.stop(),cancelAnimationFrame(a);const i=Yt.get(n);if(!i)return;if(i.delete(o),i.size)return;const r=Kt.get(n);Kt.delete(n),r&&(Jt(n).removeEventListener("scroll",r),null===(e=Xt.get(n))||void 0===e||e(),window.removeEventListener("resize",r))}}function te(t,e){return function(t){return"object"==typeof t}(t)?t:t&&e?e[t]:void 0}let ee;function ne(){if(!ee)return;const t=ee.sort(re).map(oe);t.forEach(se),t.forEach(se),ee=void 0}function ie(t){ee?i(ee,t):(ee=[t],requestAnimationFrame(ne))}const re=(t,e)=>t.getDepth()-e.getDepth(),oe=t=>t.animateUpdates(),se=t=>t.next(),ae=(t,e)=>new CustomEvent(t,{detail:{target:e}});function ce(t,e,n){t.dispatchEvent(new CustomEvent(e,{detail:{originalEvent:n}}))}function le(t,e,n){t.dispatchEvent(new CustomEvent(e,{detail:{originalEntry:n}}))}const ue=(t,e,n)=>i=>{i.pointerType&&"mouse"!==i.pointerType||(n(),ce(t,e,i))},fe={inView:{isActive:t=>Boolean(t.inView),subscribe:(t,{enable:e,disable:n},{inViewOptions:i={}})=>{const{once:r}=i,o=ut(i,["once"]);return Dt(t,(i=>{if(e(),le(t,"viewenter",i),!r)return e=>{n(),le(t,"viewleave",e)}}),o)}},hover:{isActive:t=>Boolean(t.hover),subscribe:(t,{enable:e,disable:n})=>{const i=ue(t,"hoverstart",e),r=ue(t,"hoverend",n);return t.addEventListener("pointerenter",i),t.addEventListener("pointerleave",r),()=>{t.removeEventListener("pointerenter",i),t.removeEventListener("pointerleave",r)}}},press:{isActive:t=>Boolean(t.press),subscribe:(t,{enable:e,disable:n})=>{const i=e=>{n(),ce(t,"pressend",e),window.removeEventListener("pointerup",i)},r=n=>{e(),ce(t,"pressstart",n),window.addEventListener("pointerup",i)};return t.addEventListener("pointerdown",r),()=>{t.removeEventListener("pointerdown",r),window.removeEventListener("pointerup",i)}}}},he=["initial","animate",...Object.keys(fe),"exit"],de=new WeakMap;function pe(t={},e){let n,i=e?e.getDepth()+1:0;const o={initial:!0,animate:!0},s={},a={};for(const n of he)a[n]="string"==typeof t[n]?t[n]:null==e?void 0:e.getContext()[n];const c=!1===t.initial?"animate":"initial";let l=ut(te(t[c]||a[c],t.variants)||{},["transition"]);const u=Object.assign({},l);const h=(t,e)=>()=>{o[t]=e,ie(p)},d=()=>{for(const e in fe){const i=fe[e].isActive(t),r=s[e];i&&!r?s[e]=fe[e].subscribe(n,{enable:h(e,!0),disable:h(e,!1)},t):!i&&r&&(r(),delete s[e])}},p={update:e=>{n&&(t=e,d(),ie(p))},setActive:(t,e)=>{n&&(o[t]=e,ie(p))},animateUpdates:function*(){var e,i;const r=l;l={};const s={};for(const n of he){if(!o[n])continue;const r=te(t[n]);if(r)for(const n in r)"transition"!==n&&(l[n]=r[n],s[n]=et(null!==(i=null!==(e=r.transition)&&void 0!==e?e:t.transition)&&void 0!==i?i:{},n))}const a=new Set([...Object.keys(l),...Object.keys(r)]),c=[];a.forEach((t=>{var e,i,o;void 0===l[t]&&(l[t]=u[t]),i=r[t],o=l[t],typeof i==typeof o&&(Array.isArray(i)&&Array.isArray(o)?function(t,e){const n=e.length;if(n!==t.length)return!1;for(let i=0;i<n;i++)if(e[i]!==t[i])return!1;return!0}(i,o):i===o)||(null!==(e=u[t])&&void 0!==e||(u[t]=J.get(n,t)),c.push(tt(n,t,l[t],s[t])))})),yield;const h=c.map((t=>t())).filter(Boolean);if(!h.length)return;const d=l;n.dispatchEvent(ae("motionstart",d)),Promise.all(h.map((t=>t.finished))).then((()=>{n.dispatchEvent(ae("motioncomplete",d))})).catch(f)},getDepth:()=>i,getTarget:()=>l,getOptions:()=>t,getContext:()=>a,mount:t=>(ft(Boolean(t),"Animation state must be mounted with valid Element"),n=t,de.set(n,p),d(),()=>{de.delete(n),function(t){ee&&r(ee,t)}(p);for(const t in s)s[t]()}),isMounted:()=>Boolean(n)};return p}function ge(t){const e={},n=[];for(let i in t){const r=t[i];R(i)&&(M[i]&&(i=M[i]),n.push(i),i=k(i));let o=Array.isArray(r)?r[0]:r;const s=D.get(i);s&&(o=a(r)?s.toDefaultUnit(r):r),e[i]=o}return n.length&&(e.transform=B(n)),e}const me=t=>`-${t.toLowerCase()}`;function ve(t={}){const e=ge(t);let n="";for(const t in e)n+=t.startsWith("--")?t:t.replace(/[A-Z]/g,me),n+=`: ${e[t]}; `;return n}function ye(t,e={}){return rt([()=>{const n=new I(t,[0,1],e);return n.finished.catch((()=>{})),n}],e,e.duration)}function we(t,e,n){return(w(t)?ye:lt)(t,e,n)}export{t as MotionValue,Ft as ScrollOffset,we as animate,tt as animateStyle,pe as createMotionState,ve as createStyleString,ge as createStyles,n as getAnimationData,Y as getStyleName,At as glide,Dt as inView,de as mountedStates,Vt as resize,Qt as scroll,Mt as spring,at as stagger,J as style,gt as timeline,rt as withControls};
1
+ function t(t,e){-1===t.indexOf(e)&&t.push(e)}function e(t,e){const n=t.indexOf(e);n>-1&&t.splice(n,1)}const n=(t,e,n)=>Math.min(Math.max(n,t),e),i={duration:.3,delay:0,endDelay:0,repeat:0,easing:"ease"},r=t=>"number"==typeof t,o=t=>Array.isArray(t)&&!r(t[0]);function s(t,e){return o(t)?t[((t,e,n)=>{const i=e-t;return((n-t)%i+i)%i+t})(0,t.length,e)]:t}const a=(t,e,n)=>-n*t+n*e+t,c=()=>{},l=t=>t,u=(t,e,n)=>e-t==0?1:(n-t)/(e-t);function f(t,e){const n=t[t.length-1];for(let i=1;i<=e;i++){const r=u(0,e,i);t.push(a(n,1,r))}}function h(t){const e=[0];return f(e,t-1),e}function d(t,e=h(t.length),i=l){const r=t.length,o=r-e.length;return o>0&&f(e,o),o=>{let c=0;for(;c<r-2&&!(o<e[c+1]);c++);let l=n(0,1,u(e[c],e[c+1],o));return l=s(i,c)(l),a(t[c],t[c+1],l)}}const p=t=>Array.isArray(t)&&r(t[0]),g=t=>"object"==typeof t&&Boolean(t.createAnimation),m=t=>"function"==typeof t,v=t=>"string"==typeof t,y=t=>1e3*t,w=t=>t/1e3;function b(t,e){return e?t*(1e3/e):0}const E=(t,e,n)=>(((1-3*n+3*e)*t+(3*n-6*e))*t+3*e)*t;function O(t,e,n,i){if(t===e&&n===i)return l;const r=e=>function(t,e,n,i,r){let o,s,a=0;do{s=e+(n-e)/2,o=E(s,i,r)-t,o>0?n=s:e=s}while(Math.abs(o)>1e-7&&++a<12);return s}(e,0,1,t,n);return t=>0===t||1===t?t:E(r(t),e,i)}const x={ease:O(.25,.1,.25,1),"ease-in":O(.42,0,1,1),"ease-in-out":O(.42,0,.58,1),"ease-out":O(0,0,.58,1)},T=/\((.*?)\)/;function M(t){if(m(t))return t;if(p(t))return O(...t);if(x[t])return x[t];if(t.startsWith("steps")){const e=T.exec(t);if(e){const t=e[1].split(",");return((t,e="end")=>i=>{const r=(i="end"===e?Math.min(i,.999):Math.max(i,.001))*t,o="end"===e?Math.floor(r):Math.ceil(r);return n(0,1,o/t)})(parseFloat(t[0]),t[1].trim())}}return l}class A{constructor(t,e=[0,1],{easing:n,duration:r=i.duration,delay:s=i.delay,endDelay:a=i.endDelay,repeat:c=i.repeat,offset:u,direction:f="normal"}={}){if(this.startTime=null,this.rate=1,this.t=0,this.cancelTimestamp=null,this.easing=l,this.duration=0,this.totalDuration=0,this.repeat=0,this.playState="idle",this.finished=new Promise(((t,e)=>{this.resolve=t,this.reject=e})),n=n||i.easing,g(n)){const t=n.createAnimation(e);n=t.easing,e=t.keyframes||e,r=t.duration||r}this.repeat=c,this.easing=o(n)?l:M(n),this.updateDuration(r);const h=d(e,u,o(n)?n.map(M):l);this.tick=e=>{var n;let i=0;i=void 0!==this.pauseTime?this.pauseTime:(e-this.startTime)*this.rate,this.t=i,i/=1e3,i=Math.max(i-s,0),"finished"===this.playState&&void 0===this.pauseTime&&(i=this.totalDuration);const r=i/this.duration;let o=Math.floor(r),c=r%1;!c&&r>=1&&(c=1),1===c&&o--;const l=o%2;("reverse"===f||"alternate"===f&&l||"alternate-reverse"===f&&!l)&&(c=1-c);const u=i>=this.totalDuration?1:Math.min(c,1),d=h(this.easing(u));t(d);void 0===this.pauseTime&&("finished"===this.playState||i>=this.totalDuration+a)?(this.playState="finished",null===(n=this.resolve)||void 0===n||n.call(this,d)):"idle"!==this.playState&&(this.frameRequestId=requestAnimationFrame(this.tick))},this.play()}play(){const t=performance.now();this.playState="running",void 0!==this.pauseTime?this.startTime=t-this.pauseTime:this.startTime||(this.startTime=t),this.cancelTimestamp=this.startTime,this.pauseTime=void 0,this.frameRequestId=requestAnimationFrame(this.tick)}pause(){this.playState="paused",this.pauseTime=this.t}finish(){this.playState="finished",this.tick(0)}stop(){var t;this.playState="idle",void 0!==this.frameRequestId&&cancelAnimationFrame(this.frameRequestId),null===(t=this.reject)||void 0===t||t.call(this,!1)}cancel(){this.stop(),this.tick(this.cancelTimestamp)}reverse(){this.rate*=-1}commitStyles(){}updateDuration(t){this.duration=t,this.totalDuration=t*(this.repeat+1)}get currentTime(){return this.t}set currentTime(t){void 0!==this.pauseTime||0===this.rate?this.pauseTime=t:this.startTime=performance.now()-t/this.rate}get playbackRate(){return this.rate}set playbackRate(t){this.rate=t}}class S{setAnimation(t){this.animation=t,null==t||t.finished.then((()=>this.clearAnimation())).catch((()=>{}))}clearAnimation(){this.animation=this.generator=void 0}}const D=new WeakMap;function L(t){return D.has(t)||D.set(t,{transforms:[],values:new Map}),D.get(t)}const k=["","X","Y","Z"],W={x:"translateX",y:"translateY",z:"translateZ"},j={syntax:"<angle>",initialValue:"0deg",toDefaultUnit:t=>t+"deg"},R={translate:{syntax:"<length-percentage>",initialValue:"0px",toDefaultUnit:t=>t+"px"},rotate:j,scale:{syntax:"<number>",initialValue:1,toDefaultUnit:l},skew:j},B=new Map,z=t=>`--motion-${t}`,P=["x","y","z"];["translate","scale","rotate","skew"].forEach((t=>{k.forEach((e=>{P.push(t+e),B.set(z(t+e),R[t])}))}));const V=(t,e)=>P.indexOf(t)-P.indexOf(e),$=new Set(P),q=t=>$.has(t),F=t=>t.sort(V).reduce(C,"").trim(),C=(t,e)=>`${t} ${e}(var(${z(e)}))`,H=t=>t.startsWith("--"),I=new Set;const N=(t,e)=>document.createElement("div").animate(t,e),U={cssRegisterProperty:()=>"undefined"!=typeof CSS&&Object.hasOwnProperty.call(CSS,"registerProperty"),waapi:()=>Object.hasOwnProperty.call(Element.prototype,"animate"),partialKeyframes:()=>{try{N({opacity:[1]})}catch(t){return!1}return!0},finished:()=>Boolean(N({opacity:[0,1]},{duration:.001}).finished),linearEasing:()=>{try{N({opacity:0},{easing:"linear(0, 1)"})}catch(t){return!1}return!0}},_={},G={};for(const t in U)G[t]=()=>(void 0===_[t]&&(_[t]=U[t]()),_[t]);const Z=(t,e)=>m(t)?G.linearEasing()?`linear(${((t,e)=>{let n="";const i=Math.round(e/.015);for(let e=0;e<i;e++)n+=t(u(0,i-1,e))+", ";return n.substring(0,n.length-2)})(t,e)})`:i.easing:p(t)?K(t):t,K=([t,e,n,i])=>`cubic-bezier(${t}, ${e}, ${n}, ${i})`;const X=t=>Array.isArray(t)?t:[t];function Y(t){return W[t]&&(t=W[t]),q(t)?z(t):t}const J={get:(t,e)=>{e=Y(e);let n=H(e)?t.style.getPropertyValue(e):getComputedStyle(t)[e];if(!n&&0!==n){const t=B.get(e);t&&(n=t.initialValue)}return n},set:(t,e,n)=>{e=Y(e),H(e)?t.style.setProperty(e,n):t.style[e]=n}};function Q(t,e=!0){if(t&&"finished"!==t.playState)try{t.stop?t.stop():(e&&t.commitStyles(),t.cancel())}catch(t){}}function tt(t,e){var n;let i=(null==e?void 0:e.toDefaultUnit)||l;const r=t[t.length-1];if(v(r)){const t=(null===(n=r.match(/(-?[\d.]+)([a-z%]*)/))||void 0===n?void 0:n[2])||"";t&&(i=e=>e+t)}return i}function et(e,n,s,a={},l){const u=window.__MOTION_DEV_TOOLS_RECORD,f=!1!==a.record&&u;let h,{duration:d=i.duration,delay:p=i.delay,endDelay:v=i.endDelay,repeat:w=i.repeat,easing:b=i.easing,direction:E,offset:O,allowWebkitAcceleration:x=!1}=a;const T=L(e),M=q(n);let A=G.waapi();M&&((e,n)=>{W[n]&&(n=W[n]);const{transforms:i}=L(e);t(i,n),e.style.transform=F(i)})(e,n);const D=Y(n),k=function(t,e){return t.has(e)||t.set(e,new S),t.get(e)}(T.values,D),j=B.get(D);return Q(k.animation,!(g(b)&&k.generator)&&!1!==a.record),()=>{const t=()=>{var t,n;return null!==(n=null!==(t=J.get(e,D))&&void 0!==t?t:null==j?void 0:j.initialValue)&&void 0!==n?n:0};let i=function(t,e){for(let n=0;n<t.length;n++)null===t[n]&&(t[n]=n?t[n-1]:e());return t}(X(s),t);const T=tt(i,j);if(g(b)){const e=b.createAnimation(i,"opacity"!==n,t,D,k);b=e.easing,i=e.keyframes||i,d=e.duration||d}if(H(D)&&(G.cssRegisterProperty()?function(t){if(!I.has(t)){I.add(t);try{const{syntax:e,initialValue:n}=B.has(t)?B.get(t):{};CSS.registerProperty({name:t,inherits:!1,syntax:e,initialValue:n})}catch(t){}}}(D):A=!1),M&&!G.linearEasing()&&(m(b)||o(b)&&b.some(m))&&(A=!1),A){j&&(i=i.map((t=>r(t)?j.toDefaultUnit(t):t))),1!==i.length||G.partialKeyframes()&&!f||i.unshift(t());const n={delay:y(p),duration:y(d),endDelay:y(v),easing:o(b)?void 0:Z(b,d),direction:E,iterations:w+1,fill:"both"};h=e.animate({[D]:i,offset:O,easing:o(b)?b.map((t=>Z(t,d))):void 0},n),h.finished||(h.finished=new Promise(((t,e)=>{h.onfinish=t,h.oncancel=e})));const s=i[i.length-1];h.finished.then((()=>{J.set(e,D,s),h.cancel()})).catch(c),x||(h.playbackRate=1.000001)}else if(l&&M)i=i.map((t=>"string"==typeof t?parseFloat(t):t)),1===i.length&&i.unshift(parseFloat(t())),h=new l((t=>{J.set(e,D,T?T(t):t)}),i,Object.assign(Object.assign({},a),{duration:d,easing:b}));else{const t=i[i.length-1];J.set(e,D,j&&r(t)?j.toDefaultUnit(t):t)}return f&&u(e,n,i,{duration:d,delay:p,easing:b,repeat:w,offset:O},"motion-one"),k.setAnimation(h),h}}const nt=(t,e)=>t[e]?Object.assign(Object.assign({},t),t[e]):Object.assign({},t);function it(t,e){var n;return"string"==typeof t?e?(null!==(n=e[t])&&void 0!==n||(e[t]=document.querySelectorAll(t)),t=e[t]):t=document.querySelectorAll(t):t instanceof Element&&(t=[t]),Array.from(t||[])}const rt=t=>t(),ot=(t,e,n=i.duration)=>new Proxy({animations:t.map(rt).filter(Boolean),duration:n,options:e},st),st={get:(t,e)=>{const n=t.animations[0];switch(e){case"duration":return t.duration;case"currentTime":return w((null==n?void 0:n[e])||0);case"playbackRate":case"playState":return null==n?void 0:n[e];case"finished":return t.finished||(t.finished=Promise.all(t.animations.map(at)).catch(c)),t.finished;case"stop":return()=>{t.animations.forEach((t=>Q(t)))};case"forEachNative":return e=>{t.animations.forEach((n=>e(n,t)))};default:return void 0===(null==n?void 0:n[e])?void 0:()=>t.animations.forEach((t=>t[e]()))}},set:(t,e,n)=>{switch(e){case"currentTime":n=y(n);case"currentTime":case"playbackRate":for(let i=0;i<t.animations.length;i++)t.animations[i][e]=n;return!0}return!1}},at=t=>t.finished;function ct(t=.1,{start:e=0,from:n=0,easing:i}={}){return(o,s)=>{const a=r(n)?n:function(t,e){if("first"===t)return 0;{const n=e-1;return"last"===t?n:n/2}}(n,s),c=Math.abs(a-o);let l=t*c;if(i){const e=s*t;l=M(i)(l/e)*e}return e+l}}function lt(t,e,n){return m(t)?t(e,n):t}function ut(t){return function(e,n,i={}){const r=(e=it(e)).length,o=[];for(let s=0;s<r;s++){const a=e[s];for(const e in n){const c=nt(i,e);c.delay=lt(c.delay,s,r);const l=et(a,e,n[e],c,t);o.push(l)}}return ot(o,i,i.duration)}}const ft=ut(A);function ht(t,e){var n={};for(var i in t)Object.prototype.hasOwnProperty.call(t,i)&&e.indexOf(i)<0&&(n[i]=t[i]);if(null!=t&&"function"==typeof Object.getOwnPropertySymbols){var r=0;for(i=Object.getOwnPropertySymbols(t);r<i.length;r++)e.indexOf(i[r])<0&&Object.prototype.propertyIsEnumerable.call(t,i[r])&&(n[i[r]]=t[i[r]])}return n}var dt=function(){};function pt(t,e,n,i){var o;return r(e)?e:e.startsWith("-")||e.startsWith("+")?Math.max(0,t+parseFloat(e)):"<"===e?n:null!==(o=i.get(e))&&void 0!==o?o:t}function gt(t,n,i,r,o,c){!function(t,n,i){for(let r=0;r<t.length;r++){const o=t[r];o.at>n&&o.at<i&&(e(t,o),r--)}}(t,o,c);for(let e=0;e<n.length;e++)t.push({value:n[e],at:a(o,c,r[e]),easing:s(i,e)})}function mt(t,e){return t.at===e.at?null===t.value?1:-1:t.at-e.at}function vt(t,e={}){var n;const r=function(t,e={}){var{defaultOptions:n={}}=e,r=ht(e,["defaultOptions"]);const o=[],s=new Map,a={},c=new Map;let l=0,d=0,p=0;for(let e=0;e<t.length;e++){const r=t[e];if(v(r)){c.set(r,d);continue}if(!Array.isArray(r)){c.set(r.name,pt(d,r.at,l,c));continue}const[o,u,m={}]=r;void 0!==m.at&&(d=pt(d,m.at,l,c));let y=0;const w=it(o,a),b=w.length;for(let t=0;t<b;t++){const e=yt(w[t],s);for(const r in u){const o=wt(r,e);let s=X(u[r]);const a=nt(m,r);let{duration:c=n.duration||i.duration,easing:l=n.easing||i.easing}=a;if(g(l)){dt("opacity"===r||s.length>1,"spring must be provided 2 keyframes within timeline()");const t=l.createAnimation(s,"opacity"!==r,(()=>0),r);l=t.easing,s=t.keyframes||s,c=t.duration||c}const v=lt(m.delay,t,b)||0,w=d+v,E=w+c;let{offset:O=h(s.length)}=a;1===O.length&&0===O[0]&&(O[1]=1);const x=length-s.length;x>0&&f(O,x),1===s.length&&s.unshift(null),gt(o,s,l,O,w,E),y=Math.max(v+c,y),p=Math.max(E,p)}}l=d,d+=y}return s.forEach(((t,e)=>{for(const s in t){const a=t[s];a.sort(mt);const c=[],l=[],f=[];for(let t=0;t<a.length;t++){const{at:e,value:n,easing:r}=a[t];c.push(n),l.push(u(0,p,e)),f.push(r||i.easing)}0!==l[0]&&(l.unshift(0),c.unshift(c[0]),f.unshift("linear")),1!==l[l.length-1]&&(l.push(1),c.push(null)),o.push([e,s,c,Object.assign(Object.assign(Object.assign({},n),{duration:p,easing:f,offset:l}),r)])}})),o}(t,e),o=r.map((t=>et(...t,A))).filter(Boolean);return ot(o,e,null===(n=r[0])||void 0===n?void 0:n[3].duration)}function yt(t,e){return!e.has(t)&&e.set(t,{}),e.get(t)}function wt(t,e){return e[t]||(e[t]=[]),e[t]}"production"!==process.env.NODE_ENV&&(dt=function(t,e){if(!t)throw new Error(e)});function bt(t,e,n){const i=Math.max(e-5,0);return b(n-t(i),e-i)}const Et=100,Ot=10,xt=1;const Tt=({stiffness:t=Et,damping:e=Ot,mass:n=xt,from:i=0,to:r=1,velocity:o=0,restSpeed:s=2,restDistance:a=.5}={})=>{o=o?w(o):0;const c={done:!1,hasReachedTarget:!1,current:i,target:r},l=r-i,u=Math.sqrt(t/n)/1e3,f=((t=Et,e=Ot,n=xt)=>e/(2*Math.sqrt(t*n)))(t,e,n);let h;if(f<1){const t=u*Math.sqrt(1-f*f);h=e=>r-Math.exp(-f*u*e)*((f*u*l-o)/t*Math.sin(t*e)+l*Math.cos(t*e))}else h=t=>r-Math.exp(-u*t)*(l+(u*l-o)*t);return t=>{c.current=h(t);const e=0===t?o:bt(h,t,c.current),n=Math.abs(e)<=s,l=Math.abs(r-c.current)<=a;var u,f,d;return c.done=n&&l,c.hasReachedTarget=(u=i,f=r,d=c.current,u<f&&d>=f||u>f&&d<=f),c}};function Mt(t){return r(t)&&!isNaN(t)}function At(t){return v(t)?parseFloat(t):t}function St(t){const e=new WeakMap;return(n={})=>{const i=new Map,r=(e=0,r=100,o=0,s=!1)=>{const a=`${e}-${r}-${o}-${s}`;return i.has(a)||i.set(a,t(Object.assign({from:e,to:r,velocity:o,restSpeed:s?.05:2,restDistance:s?.01:.5},n))),i.get(a)},o=(t,n)=>(e.has(t)||e.set(t,function(t,e=l){let n,i=10,r=t(0);const o=[e(r.current)];for(;!r.done&&i<1e4;)r=t(i),o.push(e(r.done?r.target:r.current)),void 0===n&&r.hasReachedTarget&&(n=i),i+=10;const s=i-10;return 1===o.length&&o.push(r.current),{keyframes:o,duration:s/1e3,overshootDuration:(null!=n?n:s)/1e3}}(t,n)),e.get(t));return{createAnimation:(t,e=!0,n,i,s)=>{let a,c,u,f=0,h=l;const d=t.length;if(e){h=tt(t,i?B.get(Y(i)):void 0);if(u=At(t[d-1]),d>1&&null!==t[0])c=At(t[0]);else{const t=null==s?void 0:s.generator;if(t){const{animation:e,generatorStartTime:n}=s,i=(null==e?void 0:e.startTime)||n||0,r=(null==e?void 0:e.currentTime)||performance.now()-i,o=t(r).current;c=o,f=bt((e=>t(e).current),r,o)}else n&&(c=At(n()))}}if(Mt(c)&&Mt(u)){const t=r(c,u,f,null==i?void 0:i.includes("scale"));a=Object.assign(Object.assign({},o(t,h)),{easing:"linear"}),s&&(s.generator=t,s.generatorStartTime=performance.now())}if(!a){a={easing:"ease",duration:o(r(0,100)).overshootDuration}}return a}}}}const Dt=St(Tt),Lt=St((({from:t=0,velocity:e=0,power:n=.8,decay:i=.325,bounceDamping:r,bounceStiffness:o,changeTarget:s,min:a,max:c,restDistance:l=.5,restSpeed:u})=>{i=y(i);const f={hasReachedTarget:!1,done:!1,current:t,target:t},h=t=>void 0===a?c:void 0===c||Math.abs(a-t)<Math.abs(c-t)?a:c;let d=n*e;const p=t+d,g=void 0===s?p:s(p);f.target=g,g!==p&&(d=g-t);const m=t=>-d*Math.exp(-t/i),v=t=>g+m(t),w=t=>{const e=m(t),n=v(t);f.done=Math.abs(e)<=l,f.current=f.done?g:n};let b,E;const O=t=>{var e;(e=f.current,void 0!==a&&e<a||void 0!==c&&e>c)&&(b=t,E=Tt({from:f.current,to:h(f.current),velocity:bt(v,t,f.current),damping:r,stiffness:o,restDistance:l,restSpeed:u}))};return O(0),t=>{let e=!1;return E||void 0!==b||(e=!0,w(t),O(t)),void 0!==b&&t>b?(f.hasReachedTarget=!0,E(t-b)):(f.hasReachedTarget=!1,!e&&w(t),f)}})),kt={any:0,all:1};function Wt(t,e,{root:n,margin:i,amount:r="any"}={}){if("undefined"==typeof IntersectionObserver)return()=>{};const o=it(t),s=new WeakMap,a=new IntersectionObserver((t=>{t.forEach((t=>{const n=s.get(t.target);if(t.isIntersecting!==Boolean(n))if(t.isIntersecting){const n=e(t);m(n)?s.set(t.target,n):a.unobserve(t.target)}else n&&(n(t),s.delete(t.target))}))}),{root:n,rootMargin:i,threshold:"number"==typeof r?r:kt[r]});return o.forEach((t=>a.observe(t))),()=>a.disconnect()}const jt=new WeakMap;let Rt;function Bt({target:t,contentRect:e,borderBoxSize:n}){var i;null===(i=jt.get(t))||void 0===i||i.forEach((i=>{i({target:t,contentSize:e,get size(){return function(t,e){if(e){const{inlineSize:t,blockSize:n}=e[0];return{width:t,height:n}}return t instanceof SVGElement&&"getBBox"in t?t.getBBox():{width:t.offsetWidth,height:t.offsetHeight}}(t,n)}})}))}function zt(t){t.forEach(Bt)}function Pt(t,e){Rt||"undefined"!=typeof ResizeObserver&&(Rt=new ResizeObserver(zt));const n=it(t);return n.forEach((t=>{let n=jt.get(t);n||(n=new Set,jt.set(t,n)),n.add(e),null==Rt||Rt.observe(t)})),()=>{n.forEach((t=>{const n=jt.get(t);null==n||n.delete(e),(null==n?void 0:n.size)||null==Rt||Rt.unobserve(t)}))}}const Vt=new Set;let $t;function qt(t){return Vt.add(t),$t||($t=()=>{const t={width:window.innerWidth,height:window.innerHeight},e={target:window,size:t,contentSize:t};Vt.forEach((t=>t(e)))},window.addEventListener("resize",$t)),()=>{Vt.delete(t),!Vt.size&&$t&&($t=void 0)}}function Ft(t,e){return m(t)?qt(t):Pt(t,e)}const Ct={x:{length:"Width",position:"Left"},y:{length:"Height",position:"Top"}};function Ht(t,e,n,i){const r=n[e],{length:o,position:s}=Ct[e],a=r.current,c=n.time;r.current=t["scroll"+s],r.scrollLength=t["scroll"+o]-t["client"+o],r.offset.length=0,r.offset[0]=0,r.offset[1]=r.scrollLength,r.progress=u(0,r.scrollLength,r.current);const l=i-c;r.velocity=l>50?0:b(r.current-a,l)}const It={Enter:[[0,1],[1,1]],Exit:[[0,0],[1,0]],Any:[[1,0],[0,1]],All:[[0,0],[1,1]]},Nt={start:0,center:.5,end:1};function Ut(t,e,n=0){let i=0;if(void 0!==Nt[t]&&(t=Nt[t]),v(t)){const e=parseFloat(t);t.endsWith("px")?i=e:t.endsWith("%")?t=e/100:t.endsWith("vw")?i=e/100*document.documentElement.clientWidth:t.endsWith("vh")?i=e/100*document.documentElement.clientHeight:t=e}return r(t)&&(i=e*t),n+i}const _t=[0,0];function Gt(t,e,n,i){let o=Array.isArray(t)?t:_t,s=0,a=0;return r(t)?o=[t,t]:v(t)&&(o=(t=t.trim()).includes(" ")?t.split(" "):[t,Nt[t]?t:"0"]),s=Ut(o[0],n,i),a=Ut(o[1],e),s-a}const Zt={x:0,y:0};function Kt(t,e,n){let{offset:i=It.All}=n;const{target:r=t,axis:o="y"}=n,s="y"===o?"height":"width",a=r!==t?function(t,e){let n={x:0,y:0},i=t;for(;i&&i!==e;)if(i instanceof HTMLElement)n.x+=i.offsetLeft,n.y+=i.offsetTop,i=i.offsetParent;else if(i instanceof SVGGraphicsElement&&"getBBox"in i){const{top:t,left:e}=i.getBBox();for(n.x+=e,n.y+=t;i&&"svg"!==i.tagName;)i=i.parentNode}return n}(r,t):Zt,c=r===t?{width:t.scrollWidth,height:t.scrollHeight}:{width:r.clientWidth,height:r.clientHeight},l={width:t.clientWidth,height:t.clientHeight};e[o].offset.length=0;let u=!e[o].interpolate;const f=i.length;for(let t=0;t<f;t++){const n=Gt(i[t],l[s],c[s],a[o]);u||n===e[o].interpolatorOffsets[t]||(u=!0),e[o].offset[t]=n}u&&(e[o].interpolate=d(h(f),e[o].offset),e[o].interpolatorOffsets=[...e[o].offset]),e[o].progress=e[o].interpolate(e[o].current)}function Xt(t,e,n,i={}){const r=i.axis||"y";return{measure:()=>function(t,e=t,n){if(n.x.targetOffset=0,n.y.targetOffset=0,e!==t){let i=e;for(;i&&i!=t;)n.x.targetOffset+=i.offsetLeft,n.y.targetOffset+=i.offsetTop,i=i.offsetParent}n.x.targetLength=e===t?e.scrollWidth:e.clientWidth,n.y.targetLength=e===t?e.scrollHeight:e.clientHeight,n.x.containerLength=t.clientWidth,n.y.containerLength=t.clientHeight}(t,i.target,n),update:e=>{!function(t,e,n){Ht(t,"x",e,n),Ht(t,"y",e,n),e.time=n}(t,n,e),(i.offset||i.target)&&Kt(t,n,i)},notify:m(e)?()=>e(n):Yt(e,n[r])}}function Yt(t,e){return t.pause(),t.forEachNative(((t,{easing:e})=>{var n,i;if(t.updateDuration)e||(t.easing=l),t.updateDuration(1);else{const r={duration:1e3};e||(r.easing="linear"),null===(i=null===(n=t.effect)||void 0===n?void 0:n.updateTiming)||void 0===i||i.call(n,r)}})),()=>{t.currentTime=e.progress}}const Jt=new WeakMap,Qt=new WeakMap,te=new WeakMap,ee=t=>t===document.documentElement?window:t;function ne(t,e={}){var{container:n=document.documentElement}=e,i=ht(e,["container"]);let r=te.get(n);r||(r=new Set,te.set(n,r));const o=Xt(n,t,{time:0,x:{current:0,offset:[],progress:0,scrollLength:0,targetOffset:0,targetLength:0,containerLength:0,velocity:0},y:{current:0,offset:[],progress:0,scrollLength:0,targetOffset:0,targetLength:0,containerLength:0,velocity:0}},i);if(r.add(o),!Jt.has(n)){const t=()=>{const t=performance.now();for(const t of r)t.measure();for(const e of r)e.update(t);for(const t of r)t.notify()};Jt.set(n,t);const e=ee(n);window.addEventListener("resize",t,{passive:!0}),n!==document.documentElement&&Qt.set(n,Ft(n,t)),e.addEventListener("scroll",t,{passive:!0})}const s=Jt.get(n),a=requestAnimationFrame(s);return()=>{var e;"function"!=typeof t&&t.stop(),cancelAnimationFrame(a);const i=te.get(n);if(!i)return;if(i.delete(o),i.size)return;const r=Jt.get(n);Jt.delete(n),r&&(ee(n).removeEventListener("scroll",r),null===(e=Qt.get(n))||void 0===e||e(),window.removeEventListener("resize",r))}}function ie(t,e){return function(t){return"object"==typeof t}(t)?t:t&&e?e[t]:void 0}let re;function oe(){if(!re)return;const t=re.sort(ae).map(ce);t.forEach(le),t.forEach(le),re=void 0}function se(e){re?t(re,e):(re=[e],requestAnimationFrame(oe))}const ae=(t,e)=>t.getDepth()-e.getDepth(),ce=t=>t.animateUpdates(),le=t=>t.next(),ue=(t,e)=>new CustomEvent(t,{detail:{target:e}});function fe(t,e,n){t.dispatchEvent(new CustomEvent(e,{detail:{originalEvent:n}}))}function he(t,e,n){t.dispatchEvent(new CustomEvent(e,{detail:{originalEntry:n}}))}const de=(t,e,n)=>i=>{i.pointerType&&"mouse"!==i.pointerType||(n(),fe(t,e,i))},pe={inView:{isActive:t=>Boolean(t.inView),subscribe:(t,{enable:e,disable:n},{inViewOptions:i={}})=>{const{once:r}=i,o=ht(i,["once"]);return Wt(t,(i=>{if(e(),he(t,"viewenter",i),!r)return e=>{n(),he(t,"viewleave",e)}}),o)}},hover:{isActive:t=>Boolean(t.hover),subscribe:(t,{enable:e,disable:n})=>{const i=de(t,"hoverstart",e),r=de(t,"hoverend",n);return t.addEventListener("pointerenter",i),t.addEventListener("pointerleave",r),()=>{t.removeEventListener("pointerenter",i),t.removeEventListener("pointerleave",r)}}},press:{isActive:t=>Boolean(t.press),subscribe:(t,{enable:e,disable:n})=>{const i=e=>{n(),fe(t,"pressend",e),window.removeEventListener("pointerup",i)},r=n=>{e(),fe(t,"pressstart",n),window.addEventListener("pointerup",i)};return t.addEventListener("pointerdown",r),()=>{t.removeEventListener("pointerdown",r),window.removeEventListener("pointerup",i)}}}},ge=["initial","animate",...Object.keys(pe),"exit"],me=new WeakMap;function ve(t={},n){let i,r=n?n.getDepth()+1:0;const o={initial:!0,animate:!0},s={},a={};for(const e of ge)a[e]="string"==typeof t[e]?t[e]:null==n?void 0:n.getContext()[e];const l=!1===t.initial?"animate":"initial";let u=ht(ie(t[l]||a[l],t.variants)||{},["transition"]);const f=Object.assign({},u);const h=(t,e)=>()=>{o[t]=e,se(p)},d=()=>{for(const e in pe){const n=pe[e].isActive(t),r=s[e];n&&!r?s[e]=pe[e].subscribe(i,{enable:h(e,!0),disable:h(e,!1)},t):!n&&r&&(r(),delete s[e])}},p={update:e=>{i&&(t=e,d(),se(p))},setActive:(t,e)=>{i&&(o[t]=e,se(p))},animateUpdates:function*(){var e,n;const r=u;u={};const s={};for(const i of ge){if(!o[i])continue;const r=ie(t[i]);if(r)for(const i in r)"transition"!==i&&(u[i]=r[i],s[i]=nt(null!==(n=null!==(e=r.transition)&&void 0!==e?e:t.transition)&&void 0!==n?n:{},i))}const a=new Set([...Object.keys(u),...Object.keys(r)]),l=[];a.forEach((t=>{var e,n,o;void 0===u[t]&&(u[t]=f[t]),n=r[t],o=u[t],typeof n==typeof o&&(Array.isArray(n)&&Array.isArray(o)?function(t,e){const n=e.length;if(n!==t.length)return!1;for(let i=0;i<n;i++)if(e[i]!==t[i])return!1;return!0}(n,o):n===o)||(null!==(e=f[t])&&void 0!==e||(f[t]=J.get(i,t)),l.push(et(i,t,u[t],s[t],A)))})),yield;const h=l.map((t=>t())).filter(Boolean);if(!h.length)return;const d=u;i.dispatchEvent(ue("motionstart",d)),Promise.all(h.map((t=>t.finished))).then((()=>{i.dispatchEvent(ue("motioncomplete",d))})).catch(c)},getDepth:()=>r,getTarget:()=>u,getOptions:()=>t,getContext:()=>a,mount:t=>(dt(Boolean(t),"Animation state must be mounted with valid Element"),i=t,me.set(i,p),d(),()=>{me.delete(i),function(t){re&&e(re,t)}(p);for(const t in s)s[t]()}),isMounted:()=>Boolean(i)};return p}function ye(t){const e={},n=[];for(let i in t){const o=t[i];q(i)&&(W[i]&&(i=W[i]),n.push(i),i=z(i));let s=Array.isArray(o)?o[0]:o;const a=B.get(i);a&&(s=r(o)?a.toDefaultUnit(o):o),e[i]=s}return n.length&&(e.transform=F(n)),e}const we=t=>`-${t.toLowerCase()}`;function be(t={}){const e=ye(t);let n="";for(const t in e)n+=t.startsWith("--")?t:t.replace(/[A-Z]/g,we),n+=`: ${e[t]}; `;return n}function Ee(t,e={}){return ot([()=>{const n=new A(t,[0,1],e);return n.finished.catch((()=>{})),n}],e,e.duration)}function Oe(t,e,n){return(m(t)?Ee:ft)(t,e,n)}export{S as MotionValue,It as ScrollOffset,Oe as animate,et as animateStyle,ut as createAnimate,ve as createMotionState,be as createStyleString,ye as createStyles,L as getAnimationData,Y as getStyleName,Lt as glide,Wt as inView,me as mountedStates,Ft as resize,ne as scroll,Dt as spring,ct as stagger,J as style,vt as timeline,ot as withControls};
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "motion",
3
3
  "description": "A tiny, performant animation library for the web",
4
- "version": "10.13.3",
4
+ "version": "10.14.2",
5
5
  "license": "MIT",
6
6
  "author": "Matt Perry",
7
7
  "main": "dist/main.cjs.js",
@@ -23,12 +23,12 @@
23
23
  "dev": "concurrently -c blue,red -n tsc,rollup --kill-others \"tsc --watch -p . --preserveWatchOutput\" \"rollup --c --watch --no-watch.clearScreen\""
24
24
  },
25
25
  "dependencies": {
26
- "@motionone/animation": "^10.13.2",
27
- "@motionone/dom": "^10.13.2",
28
- "@motionone/svelte": "^10.13.2",
29
- "@motionone/types": "^10.13.2",
30
- "@motionone/utils": "^10.13.2",
31
- "@motionone/vue": "^10.13.2"
26
+ "@motionone/animation": "^10.14.0",
27
+ "@motionone/dom": "^10.14.2",
28
+ "@motionone/svelte": "^10.14.2",
29
+ "@motionone/types": "^10.14.0",
30
+ "@motionone/utils": "^10.14.0",
31
+ "@motionone/vue": "^10.14.2"
32
32
  },
33
- "gitHead": "199b1277a109148b837c3559ef634de11ecf8c95"
33
+ "gitHead": "1e7de058e678b02fd77aff9f9fb239f84788feb5"
34
34
  }