🚀 Big News: Socket Acquires Coana to Bring Reachability Analysis to Every Appsec Team.Learn more
Socket
Book a DemoInstallSign in
Socket

motion

Package Overview
Dependencies
Maintainers
1
Versions
343
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

motion - npm Package Compare versions

Comparing version

to
6.0.1-alpha.30

dist/es/targets/dom/animate-style.js

3

dist/es/index.js
export { animate } from './targets/dom/animate.js';
export { animateValue } from './targets/dom/animate-value.js';
export { animated } from './targets/react/index.js';
export { animateStyle } from './targets/dom/animate-style.js';
import { __rest } from 'tslib';
import { stopAnimation } from './utils/stop-animation.js';
import { animateValue } from './animate-value.js';
import { animateStyle } from './animate-style.js';
import { getOptions } from './utils/options.js';

@@ -18,3 +18,3 @@

}
const animation = animateValue(element, key, keyframes[key], valueOptions);
const animation = animateStyle(element, key, keyframes[key], valueOptions);
animation && animations.push(animation);

@@ -21,0 +21,0 @@ }

@@ -7,27 +7,3 @@ 'use strict';

var popmotion = require('popmotion');
var React = require('react');
var framerMotion = require('framer-motion');
function _interopNamespace(e) {
if (e && e.__esModule) return e;
var n = Object.create(null);
if (e) {
Object.keys(e).forEach(function (k) {
if (k !== 'default') {
var d = Object.getOwnPropertyDescriptor(e, k);
Object.defineProperty(n, k, d.get ? d : {
enumerable: true,
get: function () {
return e[k];
}
});
}
});
}
n['default'] = e;
return Object.freeze(n);
}
var React__namespace = /*#__PURE__*/_interopNamespace(React);
function stopAnimation(animation) {

@@ -422,3 +398,3 @@ animation.commitStyles();

function animateValue(element, name, keyframes, options = {}) {
function animateStyle(element, name, keyframes, options = {}) {
let { duration = 0.3, delay = 0, endDelay = 0, repeat = 0, easing = "ease", direction, offset, } = options;

@@ -556,3 +532,3 @@ const data = getAnimationData(element);

}
const animation = animateValue(element, key, keyframes[key], valueOptions);
const animation = animateStyle(element, key, keyframes[key], valueOptions);
animation && animations.push(animation);

@@ -610,281 +586,3 @@ }

function hasChanged(a, b) {
if (typeof a !== typeof b)
return true;
if (Array.isArray(a) && Array.isArray(b))
return !shallowCompare(a, b);
return a !== b;
}
function shallowCompare(next, prev) {
const prevLength = prev.length;
if (prevLength !== next.length)
return false;
for (let i = 0; i < prevLength; i++) {
if (prev[i] !== next[i])
return false;
}
return true;
}
function useAnimation(ref, initial, target, options, onStart, onComplete) {
const prevTarget = React.useRef(initial);
React.useEffect(() => {
const targetKeyframe = {};
const allKeys = new Set([
...Object.keys(target),
...Object.keys(prevTarget.current),
]);
allKeys.forEach((key) => {
let next = target[key];
if (!hasChanged(next, prevTarget.current[key]))
return;
/**
* TODO: If next is undefined, throw error or record a "base value"
* to animate back down to
*/
targetKeyframe[key] = next;
});
if (Object.keys(targetKeyframe).length && ref.current) {
onStart === null || onStart === void 0 ? void 0 : onStart(targetKeyframe);
const animations = [];
for (const key in targetKeyframe) {
const animation = animateValue(ref.current, key, targetKeyframe[key], options);
animation && animations.push(animation);
}
Promise.all(animations.map((animation) => animation.finished))
.then(() => onComplete === null || onComplete === void 0 ? void 0 : onComplete(targetKeyframe))
.catch(noop);
}
prevTarget.current = target;
});
}
function resolveVariant(definition, inheritedDefinition, variants = {}) {
if (definition) {
return typeof definition === "string" ? variants[definition] : definition;
}
else if (inheritedDefinition) {
return variants[inheritedDefinition];
}
}
function useGestureState(target, stylesToApply, inheritedVariant, variants) {
const [isGestureActive, setGestureState] = React.useState(false);
if (isGestureActive || inheritedVariant) {
Object.assign(target, resolveVariant(stylesToApply, inheritedVariant, variants));
}
return [isGestureActive || Boolean(inheritedVariant), setGestureState];
}
function useHover(target, { hover, onPointerEnter, onPointerLeave, variants, } = {}, { hover: inheritedHover }, isVariantActive) {
const [isHoverActive, setHoverState] = useGestureState(target, hover, inheritedHover, variants);
isVariantActive.hover = isHoverActive;
return hover
? {
onPointerEnter: (e) => {
onPointerEnter === null || onPointerEnter === void 0 ? void 0 : onPointerEnter(e);
setHoverState(true);
},
onPointerLeave: (e) => {
onPointerLeave === null || onPointerLeave === void 0 ? void 0 : onPointerLeave(e);
setHoverState(false);
},
}
: {};
}
function usePress(target, { press, onPointerDown, variants } = {}, { press: inheritedPress }, isVariantActive) {
const [isPressActive, setPressState] = useGestureState(target, press, inheritedPress, variants);
isVariantActive.press = isPressActive;
if (!press)
return {};
const onPointerUp = () => {
setPressState(false);
window.removeEventListener("pointerup", onPointerUp);
};
return {
onPointerDown: (e) => {
onPointerDown === null || onPointerDown === void 0 ? void 0 : onPointerDown(e);
setPressState(true);
window.addEventListener("pointerup", onPointerUp);
},
};
}
function useExit(target, { exit, variants }, { exit: inheritedExit }) {
const [isPresent, onExitComplete] = framerMotion.usePresence();
/**
* In case we don't have an exit animation defined we still need to
* call onExitComplete if it exits so AnimatePresence knows it
* can remove this component.
*/
React.useEffect(() => {
if (!exit)
onExitComplete === null || onExitComplete === void 0 ? void 0 : onExitComplete();
}, [isPresent]);
if (exit && !isPresent) {
Object.assign(target, resolveVariant(exit, inheritedExit, variants));
return onExitComplete;
}
}
function useViewport(ref, target, { inViewport, variants, viewport = {}, onViewportEnter, onViewportLeave, }, { inViewport: inheritedInViewport }, isVariantActive) {
const { root, margin: rootMargin, once, threshold } = viewport;
const [isInViewport, setViewportState] = useGestureState(target, inViewport, inheritedInViewport, variants);
isVariantActive.inViewport = isInViewport;
let shouldObserve = !!inViewport || !!onViewportEnter || !!onViewportLeave;
if (once && isInViewport)
shouldObserve = false;
React.useEffect(() => {
if (!shouldObserve || typeof IntersectionObserver === "undefined")
return;
const observer = new IntersectionObserver(([entry]) => {
setViewportState(entry.isIntersecting);
const callback = entry.isIntersecting
? onViewportEnter
: onViewportLeave;
callback && callback(entry);
}, { root: root === null || root === void 0 ? void 0 : root.current, rootMargin, threshold });
observer.observe(ref.current);
return () => observer.disconnect();
}, [
inViewport,
onViewportEnter,
onViewportLeave,
root,
rootMargin,
threshold,
]);
}
function convertKeyframesToStyles(keyframes) {
const initialKeyframes = {};
const transformKeys = [];
for (let key in keyframes) {
const value = keyframes[key];
if (isTransform(key)) {
if (transformAlias[key])
key = transformAlias[key];
transformKeys.push(key);
key = asTransformCssVar(key);
}
let initialKeyframe = Array.isArray(value) ? value[0] : value;
/**
* If this is a number and we have a default value type, convert the number
* to this type.
*/
const definition = transformPropertyDefinitions.get(key);
if (definition) {
initialKeyframe =
typeof value === "number" ? definition.toDefaultUnit(value) : value;
}
initialKeyframes[key] = initialKeyframe;
}
if (transformKeys.length) {
initialKeyframes.transform = buildTransformTemplate(transformKeys);
}
return initialKeyframes;
}
const AnimationContext = React.createContext({});
function createAnimatedComponent(Component) {
function Animated(props, _externalRef) {
// TODO: Support externalRef if provided
const ref = React.useRef(null);
const { options = {}, style, initial, hover, press, exit, inViewport, viewport, variants, onStart, onComplete, inherit = true } = props, forwardProps = tslib.__rest(props
/**
* Track throughout the render which variants are considered active and should
* be passed to children.
*/
, ["options", "style", "initial", "hover", "press", "exit", "inViewport", "viewport", "variants", "onStart", "onComplete", "inherit"]);
/**
* Track throughout the render which variants are considered active and should
* be passed to children.
*/
const isVariantActive = { initial: true, style: true };
/**
* Inherit variants from the parent context,
*/
let inherited = React.useContext(AnimationContext);
if (!inherit)
inherited = {};
const resolvedStyle = resolveVariant(style, inherited.style, variants);
const resolvedInitial = resolveVariant(initial, inherited.initial, variants);
const initialTarget = Object.assign(Object.assign({}, resolvedStyle), resolvedInitial);
const target = Object.assign(Object.assign({}, resolvedInitial), resolvedStyle);
/**
* If we haven't created a style prop for SSR yet (this is the initial render)
* make one. We provide this to React every render as beyond that with manage style
* via animations.
*/
const styleProp = React.useRef(null);
styleProp.current || (styleProp.current = convertKeyframesToStyles(initialTarget));
/**
* Attach animation event handlers (gestures/exit/viewport appearance).
* This are called in reverse order of which styles should take priority when
* active, for example if there's a hover and press gesture active the press
* gesture will take precedence.
*/
const hoverProps = useHover(target, props, inherited, isVariantActive);
const pressProps = usePress(target, props, inherited, isVariantActive);
useViewport(ref, target, props, inherited, isVariantActive);
const onExitComplete = useExit(target, props, inherited);
/**
* Compare our final calculated style target with the one from the previous render
* and trigger any necessary animations.
*/
useAnimation(ref, initialTarget, target, options, onStart, (animation) => {
onComplete && onComplete(animation);
onExitComplete && onExitComplete();
});
const element = React.createElement(Component, Object.assign({}, forwardProps, hoverProps, pressProps, {
style: styleProp.current,
ref,
}));
/**
* Create a variant context to pass forward to child components.
*/
const context = variantProps.reduce((acc, key) => {
acc[key] = undefined;
if (props[key]) {
if (typeof props[key] === "string" && isVariantActive[key]) {
acc[key] = props[key];
}
}
else if (inherited[key]) {
acc[key] = inherited[key];
}
return acc;
}, {});
/**
* Memoize the context so we only trigger a re-render in children if the values
* within it change.
*/
const memoizedContext = React.useMemo(() => context, Object.values(context));
return (React__namespace.createElement(AnimationContext.Provider, { value: memoizedContext }, element));
}
return React.forwardRef(Animated);
}
const variantProps = [
"initial",
"style",
"hover",
"press",
"inViewport",
"exit",
];
const components = new Map();
const animated = new Proxy({}, {
get: (_, key) => {
if (!components.has(key)) {
components.set(key, createAnimatedComponent(key));
}
return components.get(key);
},
});
exports.animate = animate;
exports.animateValue = animateValue;
exports.animated = animated;
exports.animateStyle = animateStyle;

@@ -1,1 +0,1 @@

!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports,require("react")):"function"==typeof define&&define.amd?define(["exports","react"],e):e((t="undefined"!=typeof globalThis?globalThis:t||self).Motion={},t.React)}(this,(function(t,e){"use strict";function n(t){if(t&&t.__esModule)return t;var e=Object.create(null);return t&&Object.keys(t).forEach((function(n){if("default"!==n){var r=Object.getOwnPropertyDescriptor(t,n);Object.defineProperty(e,n,r.get?r:{enumerable:!0,get:function(){return t[n]}})}})),e.default=t,Object.freeze(e)}var r=n(e);function i(t,e){var n={};for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&e.indexOf(r)<0&&(n[r]=t[r]);if(null!=t&&"function"==typeof Object.getOwnPropertySymbols){var i=0;for(r=Object.getOwnPropertySymbols(t);i<r.length;i++)e.indexOf(r[i])<0&&Object.prototype.propertyIsEnumerable.call(t,r[i])&&(n[r[i]]=t[r[i]])}return n}function s(t){t.commitStyles();try{t.cancel()}catch(t){}}const a=new WeakMap;function o(t){return a.has(t)||a.set(t,{activeTransforms:[],activeAnimations:{}}),a.get(t)}const c=()=>{},u=t=>t,l=["","X","Y","Z"],f={x:"translateX",y:"translateY",z:"translateZ"},h={syntax:"<angle>",initialValue:"0deg",toDefaultUnit:t=>t+"deg"},p={translate:{syntax:"<length-percentage>",initialValue:"0px",toDefaultUnit:t=>t+"px"},rotate:h,scale:{syntax:"<number>",initialValue:1,toDefaultUnit:u},skew:h},y=new Map,m=t=>`--motion-${t}`,d=["x","y","z"];["translate","scale","rotate","skew"].forEach((t=>{l.forEach((e=>{d.push(t+e),y.set(m(t+e),p[t])}))}));const v=(t,e)=>d.indexOf(t)-d.indexOf(e),g=new Set(d),b=t=>g.has(t),w=t=>t.sort(v).reduce(O,"").trim(),O=(t,e)=>`${t} ${e}(var(${m(e)}))`,x=t=>t.startsWith("--"),j=new Set;const P=t=>1e3*t,T=t=>Array.isArray(t)&&"number"!=typeof t[0],S=t=>(t=>Array.isArray(t)&&"number"==typeof t[0])(t)?A(t):t,A=([t,e,n,r])=>`cubic-bezier(${t}, ${e}, ${n}, ${r})`,E=t=>document.createElement("div").animate(t,{duration:.001}),M={cssRegisterProperty:()=>"undefined"!=typeof CSS&&Object.hasOwnProperty.call(CSS,"registerProperty"),waapi:()=>Object.hasOwnProperty.call(Element.prototype,"animate"),partialKeyframes:()=>{try{E({opacity:[1]})}catch(t){return!1}return!0},finished:()=>Boolean(E({opacity:[0,1]}).finished)},k={},V=Object.keys(M).reduce(((t,e)=>(t[e]=()=>(void 0===k[e]&&(k[e]=M[e]()),k[e]),t)),{}),D=(t,e,n)=>(((1-3*n+3*e)*t+(3*n-6*e))*t+3*e)*t;function R(t,e,n,r){if(t===e&&n===r)return u;const i=e=>function(t,e,n,r,i){let s,a,o=0;do{a=e+(n-e)/2,s=D(a,r,i)-t,s>0?n=a:e=a}while(Math.abs(s)>1e-7&&++o<12);return a}(e,0,1,t,n);return t=>0===t||1===t?t:D(i(t),e,r)}var C=function(t,e,n){var r=e-t;return 0===r?1:(n-t)/r},$=function(t,e,n){return-n*t+n*e+t},U=function(t,e){return void 0===e&&(e="end"),function(n){var r,i,s,a=(n="end"===e?Math.min(n,.999):Math.max(n,.001))*t,o="end"===e?Math.floor(a):Math.ceil(a);return r=0,i=1,s=o/t,Math.min(Math.max(s,r),i)}};const I={ease:R(.25,.1,.25,1),"ease-in":R(.42,0,1,1),"ease-in-out":R(.42,0,.58,1),"ease-out":R(0,0,.58,1)},L=/\((.*?)\)/;function q(t){if("function"==typeof t)return t;if(Array.isArray(t))return R(...t);if(I[t])return I[t];if(t.startsWith("steps")){const e=L.exec(t);if(e){const t=e[1].split(",");return U(parseFloat(t[0]),t[1].trim())}}return u}function z(t,e){const n=t[t.length-1];for(let r=1;r<=e;r++){const i=C(0,e,r);t.push($(n,1,i))}}function _(t,e=function(t){const e=[0];return z(e,t-1),e}(t.length),n=u){const r=t.length,i=r-e.length;return i>0&&z(e,i),i=>{let s=0;for(;s<r-2&&!(i<e[s+1]);s++);let a=(o=C(e[s],e[s+1],i),Math.min(1,Math.max(o,0)));var o,c,u,l;if(Array.isArray(n)){const t=(c=0,u=n.length-1,((s-c)%(l=u-c)+l)%l+c);a=n[t](a)}else a=n(a);return $(t[s],t[s+1],a)}}class F{constructor(t,e,{easing:n="ease",duration:r=.3,delay:i=0,endDelay:s=0,offset:a,repeat:o=0,direction:c="normal"}){this.startTime=0,this.rate=1,this.t=0,this.cancelT=0,this.playState="idle",this.finished=new Promise(((t,e)=>{this.resolve=t,this.reject=e}));const u=r*(o+1),l=_(e,a,T(n)?n.map(q):q(n));this.tick=e=>{if("finished"===this.playState){const e=l(1);return t(e),void this.resolve(e)}let n=this.pauseTime?this.pauseTime:(e-this.startTime)*this.rate;this.t=n,n/=1e3,n=Math.max(n-i,0);const a=n/r;let o=Math.floor(a),f=a%1;!f&&a>=1&&(f=1),1===f&&o--;const h=o%2;("reverse"===c||"alternate"===c&&h||"alternate-reverse"===c&&!h)&&(f=1-f);const p=n>=u?1:Math.min(f,1),y=l(p);t(y);n>=u+s?(this.playState="finished",this.resolve(y)):"idle"!==this.playState&&requestAnimationFrame(this.tick)},this.play()}play(){const t=performance.now();this.playState="running",this.pauseTime?this.startTime=t-(this.pauseTime-this.startTime):this.startTime||(this.startTime=t),this.pauseTime=void 0,requestAnimationFrame(this.tick)}pause(){this.playState="paused",this.pauseTime=performance.now()}finish(){this.playState="finished",this.tick(0)}cancel(){this.playState="idle",this.tick(this.cancelT),this.reject(!1)}reverse(){this.rate*=-1}commitStyles(){this.cancelT=this.t}get currentTime(){return this.currentTime}set currentTime(t){this.pauseTime||0===this.rate?this.pauseTime=P(t):this.startTime=performance.now()-P(t)/this.rate}get playbackRate(){return this.rate}set playbackRate(t){this.rate=t}}function W(t,e,n,r={}){let{duration:i=.3,delay:a=0,endDelay:u=0,repeat:l=0,easing:h="ease",direction:p,offset:d}=r;const v=o(t);let g=V.waapi(),O=c;const A=b(e);n=Array.isArray(n)?n:[n],A&&(f[e]&&(e=f[e]),((t,e)=>{const{activeTransforms:n}=o(t);var r,i;i=e,-1===(r=n).indexOf(i)&&r.push(i),t.style.transform=w(n)})(t,e),e=m(e)),function(t,e){t.activeAnimations[e]&&(s(t.activeAnimations[e]),t.activeAnimations[e]=void 0)}(v,e);const E=y.get(e);if(x(e)?(O=((t,e)=>n=>t.style.setProperty(e,n))(t,e),V.cssRegisterProperty()?function(t){if(!j.has(t)){j.add(t);try{const{syntax:e,initialValue:n}=y.has(t)?y.get(t):{};CSS.registerProperty({name:t,inherits:!1,syntax:e,initialValue:n})}catch(t){}}}(e):g=!1):O=((t,e)=>n=>t.style[e]=n)(t,e),g){if(E&&(n=n.map((t=>"number"==typeof t?E.toDefaultUnit(t):t))),!V.partialKeyframes()&&1===n.length){const r=x(e)?t.style.getPropertyValue(e):getComputedStyle(t)[e];n.unshift(r)}const r={delay:P(a),duration:P(i),endDelay:P(u),easing:T(h)?void 0:S(h),direction:p,iterations:l+1},s=t.animate({[e]:n,offset:d,easing:T(h)?h.map(S):void 0},r);v.activeAnimations[e]=s,s.finished||(s.finished=new Promise(((t,e)=>{s.onfinish=t,s.oncancel=e})));const o=n[n.length-1];return s.finished.then((()=>O(o))).catch(c),s}if(A&&n.every(B)){if(E){const t=O;O=e=>t(E.toDefaultUnit(e))}return function(t,e=[0,1],n={}){return new F(t,e,n)}(O,n,r)}{const t=n[n.length-1];O(E&&"number"==typeof t?E.toDefaultUnit(t):t)}}const B=t=>"number"==typeof t,K=(t,e)=>t[e]?Object.assign(Object.assign({},t),t[e]):t;const X={get:(t,e)=>{var n,r;switch(e){case"finished":return t.finished;case"currentTime":const i=(null===(n=t.animations[0])||void 0===n?void 0:n[e])||0;return i?i/1e3:0;case"playbackRate":return null===(r=t.animations[0])||void 0===r?void 0:r[e];case"stop":return()=>t.animations.forEach(s);default:return()=>t.animations.forEach((t=>t[e]()))}},set:(t,e,n)=>{switch(e){case"currentTime":n*=1e3;case"currentTime":case"playbackRate":for(let r=0;r<t.animations.length;r++)t.animations[r][e]=n;return!0}return!1}};function Y(t,n,r,i,s,a){const o=e.useRef(n);e.useEffect((()=>{const e={};if(new Set([...Object.keys(r),...Object.keys(o.current)]).forEach((t=>{let n=r[t];var i,s;(i=n,s=o.current[t],typeof i==typeof s&&(Array.isArray(i)&&Array.isArray(s)?function(t,e){const n=e.length;if(n!==t.length)return!1;for(let r=0;r<n;r++)if(e[r]!==t[r])return!1;return!0}(i,s):i===s))||(e[t]=n)})),Object.keys(e).length&&t.current){null==s||s(e);const n=[];for(const r in e){const s=W(t.current,r,e[r],i);s&&n.push(s)}Promise.all(n.map((t=>t.finished))).then((()=>null==a?void 0:a(e))).catch(c)}o.current=r}))}function Z(t,e,n={}){return t?"string"==typeof t?n[t]:t:e?n[e]:void 0}function G(t,n,r,i){const[s,a]=e.useState(!1);return(s||r)&&Object.assign(t,Z(n,r,i)),[s||Boolean(r),a]}var H=e.createContext(null);var J=0,N=function(){return J++},Q=function(){return t=N,null===(n=e.useRef(null)).current&&(n.current=t()),n.current;var t,n};function tt(t,{exit:n,variants:r},{exit:i}){const[s,a]=function(){var t=e.useContext(H);if(null===t)return[!0,null];var n=t.isPresent,r=t.onExitComplete,i=t.register,s=Q();return e.useEffect((function(){return i(s)}),[]),!n&&r?[!1,function(){return null==r?void 0:r(s)}]:[!0]}();if(e.useEffect((()=>{n||null==a||a()}),[s]),n&&!s)return Object.assign(t,Z(n,i,r)),a}const et=e.createContext({});function nt(t){return e.forwardRef((function(n,s){const a=e.useRef(null),{options:o={},style:c,initial:u,hover:l,press:h,exit:p,inViewport:d,viewport:v,variants:g,onStart:O,onComplete:x,inherit:j=!0}=n,P=i(n,["options","style","initial","hover","press","exit","inViewport","viewport","variants","onStart","onComplete","inherit"]),T={initial:!0,style:!0};let S=e.useContext(et);j||(S={});const A=Z(c,S.style,g),E=Z(u,S.initial,g),M=Object.assign(Object.assign({},A),E),k=Object.assign(Object.assign({},E),A),V=e.useRef(null);V.current||(V.current=function(t){const e={},n=[];for(let r in t){const i=t[r];b(r)&&(f[r]&&(r=f[r]),n.push(r),r=m(r));let s=Array.isArray(i)?i[0]:i;const a=y.get(r);a&&(s="number"==typeof i?a.toDefaultUnit(i):i),e[r]=s}return n.length&&(e.transform=w(n)),e}(M));const D=function(t,{hover:e,onPointerEnter:n,onPointerLeave:r,variants:i}={},{hover:s},a){const[o,c]=G(t,e,s,i);return a.hover=o,e?{onPointerEnter:t=>{null==n||n(t),c(!0)},onPointerLeave:t=>{null==r||r(t),c(!1)}}:{}}(k,n,S,T),R=function(t,{press:e,onPointerDown:n,variants:r}={},{press:i},s){const[a,o]=G(t,e,i,r);if(s.press=a,!e)return{};const c=()=>{o(!1),window.removeEventListener("pointerup",c)};return{onPointerDown:t=>{null==n||n(t),o(!0),window.addEventListener("pointerup",c)}}}(k,n,S,T);!function(t,n,{inViewport:r,variants:i,viewport:s={},onViewportEnter:a,onViewportLeave:o},{inViewport:c},u){const{root:l,margin:f,once:h,threshold:p}=s,[y,m]=G(n,r,c,i);u.inViewport=y;let d=!!r||!!a||!!o;h&&y&&(d=!1),e.useEffect((()=>{if(!d||"undefined"==typeof IntersectionObserver)return;const e=new IntersectionObserver((([t])=>{m(t.isIntersecting);const e=t.isIntersecting?a:o;e&&e(t)}),{root:null==l?void 0:l.current,rootMargin:f,threshold:p});return e.observe(t.current),()=>e.disconnect()}),[r,a,o,l,f,p])}(a,k,n,S,T);const C=tt(k,n,S);Y(a,M,k,o,O,(t=>{x&&x(t),C&&C()}));const $=e.createElement(t,Object.assign({},P,D,R,{style:V.current,ref:a})),U=rt.reduce(((t,e)=>(t[e]=void 0,n[e]?"string"==typeof n[e]&&T[e]&&(t[e]=n[e]):S[e]&&(t[e]=S[e]),t)),{}),I=e.useMemo((()=>U),Object.values(U));return r.createElement(et.Provider,{value:I},$)}))}const rt=["initial","style","hover","press","inViewport","exit"],it=new Map,st=new Proxy({},{get:(t,e)=>(it.has(e)||it.set(e,nt(e)),it.get(e))});t.animate=function(t,e,n){var{stagger:r=0}=n,s=i(n,["stagger"]);t=function(t){"string"==typeof t?t=document.querySelectorAll(t):t instanceof Element&&(t=[t]);return Array.from(t)}(t);const a=[];for(let n=0;n<t.length;n++){const i=t[n];for(const t in e){const o=K(s,t);r&&(o.delay||(o.delay=0),o.delay+=r*n);const c=W(i,t,e[t],o);c&&a.push(c)}}const o={animations:a,finished:Promise.all(a.map((t=>t.finished)))};return new Proxy(o,X)},t.animateValue=W,t.animated=st,Object.defineProperty(t,"__esModule",{value:!0})}));
!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){t.commitStyles();try{t.cancel()}catch(t){}}const n=new WeakMap;function i(t){return n.has(t)||n.set(t,{activeTransforms:[],activeAnimations:{}}),n.get(t)}const a=()=>{},r=t=>t,s=["","X","Y","Z"],o={x:"translateX",y:"translateY",z:"translateZ"},c={syntax:"<angle>",initialValue:"0deg",toDefaultUnit:t=>t+"deg"},l={translate:{syntax:"<length-percentage>",initialValue:"0px",toDefaultUnit:t=>t+"px"},rotate:c,scale:{syntax:"<number>",initialValue:1,toDefaultUnit:r},skew:c},u=new Map,h=t=>`--motion-${t}`,f=["x","y","z"];["translate","scale","rotate","skew"].forEach((t=>{s.forEach((e=>{f.push(t+e),u.set(h(t+e),l[t])}))}));const m=(t,e)=>f.indexOf(t)-f.indexOf(e),y=new Set(f),p=t=>t.sort(m).reduce(d,"").trim(),d=(t,e)=>`${t} ${e}(var(${h(e)}))`,g=t=>t.startsWith("--"),v=new Set;const b=t=>1e3*t,T=t=>Array.isArray(t)&&"number"!=typeof t[0],w=t=>(t=>Array.isArray(t)&&"number"==typeof t[0])(t)?x(t):t,x=([t,e,n,i])=>`cubic-bezier(${t}, ${e}, ${n}, ${i})`,S=t=>document.createElement("div").animate(t,{duration:.001}),O={cssRegisterProperty:()=>"undefined"!=typeof CSS&&Object.hasOwnProperty.call(CSS,"registerProperty"),waapi:()=>Object.hasOwnProperty.call(Element.prototype,"animate"),partialKeyframes:()=>{try{S({opacity:[1]})}catch(t){return!1}return!0},finished:()=>Boolean(S({opacity:[0,1]}).finished)},A={},M=Object.keys(O).reduce(((t,e)=>(t[e]=()=>(void 0===A[e]&&(A[e]=O[e]()),A[e]),t)),{}),P=(t,e,n)=>(((1-3*n+3*e)*t+(3*n-6*e))*t+3*e)*t;function j(t,e,n,i){if(t===e&&n===i)return r;const a=e=>function(t,e,n,i,a){let r,s,o=0;do{s=e+(n-e)/2,r=P(s,i,a)-t,r>0?n=s:e=s}while(Math.abs(r)>1e-7&&++o<12);return s}(e,0,1,t,n);return t=>0===t||1===t?t:P(a(t),e,i)}var k=function(t,e,n){var i=e-t;return 0===i?1:(n-t)/i},D=function(t,e,n){return-n*t+n*e+t},E=function(t,e){return void 0===e&&(e="end"),function(n){var i,a,r,s=(n="end"===e?Math.min(n,.999):Math.max(n,.001))*t,o="end"===e?Math.floor(s):Math.ceil(s);return i=0,a=1,r=o/t,Math.min(Math.max(r,i),a)}};const $={ease:j(.25,.1,.25,1),"ease-in":j(.42,0,1,1),"ease-in-out":j(.42,0,.58,1),"ease-out":j(0,0,.58,1)},R=/\((.*?)\)/;function U(t){if("function"==typeof t)return t;if(Array.isArray(t))return j(...t);if($[t])return $[t];if(t.startsWith("steps")){const e=R.exec(t);if(e){const t=e[1].split(",");return E(parseFloat(t[0]),t[1].trim())}}return r}function V(t,e){const n=t[t.length-1];for(let i=1;i<=e;i++){const a=k(0,e,i);t.push(D(n,1,a))}}function C(t,e=function(t){const e=[0];return V(e,t-1),e}(t.length),n=r){const i=t.length,a=i-e.length;return a>0&&V(e,a),a=>{let r=0;for(;r<i-2&&!(a<e[r+1]);r++);let s=(o=k(e[r],e[r+1],a),Math.min(1,Math.max(o,0)));var o,c,l,u;if(Array.isArray(n)){const t=(c=0,l=n.length-1,((r-c)%(u=l-c)+u)%u+c);s=n[t](s)}else s=n(s);return D(t[r],t[r+1],s)}}class q{constructor(t,e,{easing:n="ease",duration:i=.3,delay:a=0,endDelay:r=0,offset:s,repeat:o=0,direction:c="normal"}){this.startTime=0,this.rate=1,this.t=0,this.cancelT=0,this.playState="idle",this.finished=new Promise(((t,e)=>{this.resolve=t,this.reject=e}));const l=i*(o+1),u=C(e,s,T(n)?n.map(U):U(n));this.tick=e=>{if("finished"===this.playState){const e=u(1);return t(e),void this.resolve(e)}let n=this.pauseTime?this.pauseTime:(e-this.startTime)*this.rate;this.t=n,n/=1e3,n=Math.max(n-a,0);const s=n/i;let o=Math.floor(s),h=s%1;!h&&s>=1&&(h=1),1===h&&o--;const f=o%2;("reverse"===c||"alternate"===c&&f||"alternate-reverse"===c&&!f)&&(h=1-h);const m=n>=l?1:Math.min(h,1),y=u(m);t(y);n>=l+r?(this.playState="finished",this.resolve(y)):"idle"!==this.playState&&requestAnimationFrame(this.tick)},this.play()}play(){const t=performance.now();this.playState="running",this.pauseTime?this.startTime=t-(this.pauseTime-this.startTime):this.startTime||(this.startTime=t),this.pauseTime=void 0,requestAnimationFrame(this.tick)}pause(){this.playState="paused",this.pauseTime=performance.now()}finish(){this.playState="finished",this.tick(0)}cancel(){this.playState="idle",this.tick(this.cancelT),this.reject(!1)}reverse(){this.rate*=-1}commitStyles(){this.cancelT=this.t}get currentTime(){return this.currentTime}set currentTime(t){this.pauseTime||0===this.rate?this.pauseTime=b(t):this.startTime=performance.now()-b(t)/this.rate}get playbackRate(){return this.rate}set playbackRate(t){this.rate=t}}function z(t,n,r,s={}){let{duration:c=.3,delay:l=0,endDelay:f=0,repeat:m=0,easing:d="ease",direction:x,offset:S}=s;const O=i(t);let A=M.waapi(),P=a;const j=(t=>y.has(t))(n);r=Array.isArray(r)?r:[r],j&&(o[n]&&(n=o[n]),((t,e)=>{const{activeTransforms:n}=i(t);var a,r;r=e,-1===(a=n).indexOf(r)&&a.push(r),t.style.transform=p(n)})(t,n),n=h(n)),function(t,n){t.activeAnimations[n]&&(e(t.activeAnimations[n]),t.activeAnimations[n]=void 0)}(O,n);const k=u.get(n);if(g(n)?(P=((t,e)=>n=>t.style.setProperty(e,n))(t,n),M.cssRegisterProperty()?function(t){if(!v.has(t)){v.add(t);try{const{syntax:e,initialValue:n}=u.has(t)?u.get(t):{};CSS.registerProperty({name:t,inherits:!1,syntax:e,initialValue:n})}catch(t){}}}(n):A=!1):P=((t,e)=>n=>t.style[e]=n)(t,n),A){if(k&&(r=r.map((t=>"number"==typeof t?k.toDefaultUnit(t):t))),!M.partialKeyframes()&&1===r.length){const e=g(n)?t.style.getPropertyValue(n):getComputedStyle(t)[n];r.unshift(e)}const e={delay:b(l),duration:b(c),endDelay:b(f),easing:T(d)?void 0:w(d),direction:x,iterations:m+1},i=t.animate({[n]:r,offset:S,easing:T(d)?d.map(w):void 0},e);O.activeAnimations[n]=i,i.finished||(i.finished=new Promise(((t,e)=>{i.onfinish=t,i.oncancel=e})));const s=r[r.length-1];return i.finished.then((()=>P(s))).catch(a),i}if(j&&r.every(F)){if(k){const t=P;P=e=>t(k.toDefaultUnit(e))}return function(t,e=[0,1],n={}){return new q(t,e,n)}(P,r,s)}{const t=r[r.length-1];P(k&&"number"==typeof t?k.toDefaultUnit(t):t)}}const F=t=>"number"==typeof t,W=(t,e)=>t[e]?Object.assign(Object.assign({},t),t[e]):t;const K={get:(t,n)=>{var i,a;switch(n){case"finished":return t.finished;case"currentTime":const r=(null===(i=t.animations[0])||void 0===i?void 0:i[n])||0;return r?r/1e3:0;case"playbackRate":return null===(a=t.animations[0])||void 0===a?void 0:a[n];case"stop":return()=>t.animations.forEach(e);default:return()=>t.animations.forEach((t=>t[n]()))}},set:(t,e,n)=>{switch(e){case"currentTime":n*=1e3;case"currentTime":case"playbackRate":for(let i=0;i<t.animations.length;i++)t.animations[i][e]=n;return!0}return!1}};t.animate=function(t,e,n){var{stagger:i=0}=n,a=function(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 a=0;for(i=Object.getOwnPropertySymbols(t);a<i.length;a++)e.indexOf(i[a])<0&&Object.prototype.propertyIsEnumerable.call(t,i[a])&&(n[i[a]]=t[i[a]])}return n}(n,["stagger"]);t=function(t){"string"==typeof t?t=document.querySelectorAll(t):t instanceof Element&&(t=[t]);return Array.from(t)}(t);const r=[];for(let n=0;n<t.length;n++){const s=t[n];for(const t in e){const o=W(a,t);i&&(o.delay||(o.delay=0),o.delay+=i*n);const c=z(s,t,e[t],o);c&&r.push(c)}}const s={animations:r,finished:Promise.all(r.map((t=>t.finished)))};return new Proxy(s,K)},t.animateStyle=z,Object.defineProperty(t,"__esModule",{value:!0})}));
(function (global, factory) {
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('react')) :
typeof define === 'function' && define.amd ? define(['exports', 'react'], factory) :
(global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.Motion = {}, global.React));
}(this, (function (exports, React) { 'use strict';
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :
typeof define === 'function' && define.amd ? define(['exports'], factory) :
(global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.Motion = {}));
}(this, (function (exports) { 'use strict';
function _interopNamespace(e) {
if (e && e.__esModule) return e;
var n = Object.create(null);
if (e) {
Object.keys(e).forEach(function (k) {
if (k !== 'default') {
var d = Object.getOwnPropertyDescriptor(e, k);
Object.defineProperty(n, k, d.get ? d : {
enumerable: true,
get: function () {
return e[k];
}
});
}
});
}
n['default'] = e;
return Object.freeze(n);
}
var React__namespace = /*#__PURE__*/_interopNamespace(React);
/*! *****************************************************************************

@@ -474,3 +452,3 @@ Copyright (c) Microsoft Corporation.

function animateValue(element, name, keyframes, options = {}) {
function animateStyle(element, name, keyframes, options = {}) {
let { duration = 0.3, delay = 0, endDelay = 0, repeat = 0, easing = "ease", direction, offset, } = options;

@@ -608,3 +586,3 @@ const data = getAnimationData(element);

}
const animation = animateValue(element, key, keyframes[key], valueOptions);
const animation = animateStyle(element, key, keyframes[key], valueOptions);
animation && animations.push(animation);

@@ -662,342 +640,4 @@ }

function hasChanged(a, b) {
if (typeof a !== typeof b)
return true;
if (Array.isArray(a) && Array.isArray(b))
return !shallowCompare(a, b);
return a !== b;
}
function shallowCompare(next, prev) {
const prevLength = prev.length;
if (prevLength !== next.length)
return false;
for (let i = 0; i < prevLength; i++) {
if (prev[i] !== next[i])
return false;
}
return true;
}
function useAnimation(ref, initial, target, options, onStart, onComplete) {
const prevTarget = React.useRef(initial);
React.useEffect(() => {
const targetKeyframe = {};
const allKeys = new Set([
...Object.keys(target),
...Object.keys(prevTarget.current),
]);
allKeys.forEach((key) => {
let next = target[key];
if (!hasChanged(next, prevTarget.current[key]))
return;
/**
* TODO: If next is undefined, throw error or record a "base value"
* to animate back down to
*/
targetKeyframe[key] = next;
});
if (Object.keys(targetKeyframe).length && ref.current) {
onStart === null || onStart === void 0 ? void 0 : onStart(targetKeyframe);
const animations = [];
for (const key in targetKeyframe) {
const animation = animateValue(ref.current, key, targetKeyframe[key], options);
animation && animations.push(animation);
}
Promise.all(animations.map((animation) => animation.finished))
.then(() => onComplete === null || onComplete === void 0 ? void 0 : onComplete(targetKeyframe))
.catch(noop);
}
prevTarget.current = target;
});
}
function resolveVariant(definition, inheritedDefinition, variants = {}) {
if (definition) {
return typeof definition === "string" ? variants[definition] : definition;
}
else if (inheritedDefinition) {
return variants[inheritedDefinition];
}
}
function useGestureState(target, stylesToApply, inheritedVariant, variants) {
const [isGestureActive, setGestureState] = React.useState(false);
if (isGestureActive || inheritedVariant) {
Object.assign(target, resolveVariant(stylesToApply, inheritedVariant, variants));
}
return [isGestureActive || Boolean(inheritedVariant), setGestureState];
}
function useHover(target, { hover, onPointerEnter, onPointerLeave, variants, } = {}, { hover: inheritedHover }, isVariantActive) {
const [isHoverActive, setHoverState] = useGestureState(target, hover, inheritedHover, variants);
isVariantActive.hover = isHoverActive;
return hover
? {
onPointerEnter: (e) => {
onPointerEnter === null || onPointerEnter === void 0 ? void 0 : onPointerEnter(e);
setHoverState(true);
},
onPointerLeave: (e) => {
onPointerLeave === null || onPointerLeave === void 0 ? void 0 : onPointerLeave(e);
setHoverState(false);
},
}
: {};
}
function usePress(target, { press, onPointerDown, variants } = {}, { press: inheritedPress }, isVariantActive) {
const [isPressActive, setPressState] = useGestureState(target, press, inheritedPress, variants);
isVariantActive.press = isPressActive;
if (!press)
return {};
const onPointerUp = () => {
setPressState(false);
window.removeEventListener("pointerup", onPointerUp);
};
return {
onPointerDown: (e) => {
onPointerDown === null || onPointerDown === void 0 ? void 0 : onPointerDown(e);
setPressState(true);
window.addEventListener("pointerup", onPointerUp);
},
};
}
/**
* @public
*/
var PresenceContext = React.createContext(null);
/**
* Creates a constant value over the lifecycle of a component.
*
* Even if `useMemo` is provided an empty array as its final argument, it doesn't offer
* a guarantee that it won't re-run for performance reasons later on. By using `useConstant`
* you can ensure that initialisers don't execute twice or more.
*/
function useConstant(init) {
var ref = React.useRef(null);
if (ref.current === null) {
ref.current = init();
}
return ref.current;
}
/**
* When a component is the child of `AnimatePresence`, it can use `usePresence`
* to access information about whether it's still present in the React tree.
*
* ```jsx
* import { usePresence } from "framer-motion"
*
* export const Component = () => {
* const [isPresent, safeToRemove] = usePresence()
*
* useEffect(() => {
* !isPresent && setTimeout(safeToRemove, 1000)
* }, [isPresent])
*
* return <div />
* }
* ```
*
* If `isPresent` is `false`, it means that a component has been removed the tree, but
* `AnimatePresence` won't really remove it until `safeToRemove` has been called.
*
* @public
*/
function usePresence() {
var context = React.useContext(PresenceContext);
if (context === null)
return [true, null];
var isPresent = context.isPresent, onExitComplete = context.onExitComplete, register = context.register;
// It's safe to call the following hooks conditionally (after an early return) because the context will always
// either be null or non-null for the lifespan of the component.
// Replace with useOpaqueId when released in React
var id = useUniqueId();
React.useEffect(function () { return register(id); }, []);
var safeToRemove = function () { return onExitComplete === null || onExitComplete === void 0 ? void 0 : onExitComplete(id); };
return !isPresent && onExitComplete ? [false, safeToRemove] : [true];
}
var counter = 0;
var incrementId = function () { return counter++; };
var useUniqueId = function () { return useConstant(incrementId); };
function useExit(target, { exit, variants }, { exit: inheritedExit }) {
const [isPresent, onExitComplete] = usePresence();
/**
* In case we don't have an exit animation defined we still need to
* call onExitComplete if it exits so AnimatePresence knows it
* can remove this component.
*/
React.useEffect(() => {
if (!exit)
onExitComplete === null || onExitComplete === void 0 ? void 0 : onExitComplete();
}, [isPresent]);
if (exit && !isPresent) {
Object.assign(target, resolveVariant(exit, inheritedExit, variants));
return onExitComplete;
}
}
function useViewport(ref, target, { inViewport, variants, viewport = {}, onViewportEnter, onViewportLeave, }, { inViewport: inheritedInViewport }, isVariantActive) {
const { root, margin: rootMargin, once, threshold } = viewport;
const [isInViewport, setViewportState] = useGestureState(target, inViewport, inheritedInViewport, variants);
isVariantActive.inViewport = isInViewport;
let shouldObserve = !!inViewport || !!onViewportEnter || !!onViewportLeave;
if (once && isInViewport)
shouldObserve = false;
React.useEffect(() => {
if (!shouldObserve || typeof IntersectionObserver === "undefined")
return;
const observer = new IntersectionObserver(([entry]) => {
setViewportState(entry.isIntersecting);
const callback = entry.isIntersecting
? onViewportEnter
: onViewportLeave;
callback && callback(entry);
}, { root: root === null || root === void 0 ? void 0 : root.current, rootMargin, threshold });
observer.observe(ref.current);
return () => observer.disconnect();
}, [
inViewport,
onViewportEnter,
onViewportLeave,
root,
rootMargin,
threshold,
]);
}
function convertKeyframesToStyles(keyframes) {
const initialKeyframes = {};
const transformKeys = [];
for (let key in keyframes) {
const value = keyframes[key];
if (isTransform(key)) {
if (transformAlias[key])
key = transformAlias[key];
transformKeys.push(key);
key = asTransformCssVar(key);
}
let initialKeyframe = Array.isArray(value) ? value[0] : value;
/**
* If this is a number and we have a default value type, convert the number
* to this type.
*/
const definition = transformPropertyDefinitions.get(key);
if (definition) {
initialKeyframe =
typeof value === "number" ? definition.toDefaultUnit(value) : value;
}
initialKeyframes[key] = initialKeyframe;
}
if (transformKeys.length) {
initialKeyframes.transform = buildTransformTemplate(transformKeys);
}
return initialKeyframes;
}
const AnimationContext = React.createContext({});
function createAnimatedComponent(Component) {
function Animated(props, _externalRef) {
// TODO: Support externalRef if provided
const ref = React.useRef(null);
const { options = {}, style, initial, hover, press, exit, inViewport, viewport, variants, onStart, onComplete, inherit = true } = props, forwardProps = __rest(props
/**
* Track throughout the render which variants are considered active and should
* be passed to children.
*/
, ["options", "style", "initial", "hover", "press", "exit", "inViewport", "viewport", "variants", "onStart", "onComplete", "inherit"]);
/**
* Track throughout the render which variants are considered active and should
* be passed to children.
*/
const isVariantActive = { initial: true, style: true };
/**
* Inherit variants from the parent context,
*/
let inherited = React.useContext(AnimationContext);
if (!inherit)
inherited = {};
const resolvedStyle = resolveVariant(style, inherited.style, variants);
const resolvedInitial = resolveVariant(initial, inherited.initial, variants);
const initialTarget = Object.assign(Object.assign({}, resolvedStyle), resolvedInitial);
const target = Object.assign(Object.assign({}, resolvedInitial), resolvedStyle);
/**
* If we haven't created a style prop for SSR yet (this is the initial render)
* make one. We provide this to React every render as beyond that with manage style
* via animations.
*/
const styleProp = React.useRef(null);
styleProp.current || (styleProp.current = convertKeyframesToStyles(initialTarget));
/**
* Attach animation event handlers (gestures/exit/viewport appearance).
* This are called in reverse order of which styles should take priority when
* active, for example if there's a hover and press gesture active the press
* gesture will take precedence.
*/
const hoverProps = useHover(target, props, inherited, isVariantActive);
const pressProps = usePress(target, props, inherited, isVariantActive);
useViewport(ref, target, props, inherited, isVariantActive);
const onExitComplete = useExit(target, props, inherited);
/**
* Compare our final calculated style target with the one from the previous render
* and trigger any necessary animations.
*/
useAnimation(ref, initialTarget, target, options, onStart, (animation) => {
onComplete && onComplete(animation);
onExitComplete && onExitComplete();
});
const element = React.createElement(Component, Object.assign({}, forwardProps, hoverProps, pressProps, {
style: styleProp.current,
ref,
}));
/**
* Create a variant context to pass forward to child components.
*/
const context = variantProps.reduce((acc, key) => {
acc[key] = undefined;
if (props[key]) {
if (typeof props[key] === "string" && isVariantActive[key]) {
acc[key] = props[key];
}
}
else if (inherited[key]) {
acc[key] = inherited[key];
}
return acc;
}, {});
/**
* Memoize the context so we only trigger a re-render in children if the values
* within it change.
*/
const memoizedContext = React.useMemo(() => context, Object.values(context));
return (React__namespace.createElement(AnimationContext.Provider, { value: memoizedContext }, element));
}
return React.forwardRef(Animated);
}
const variantProps = [
"initial",
"style",
"hover",
"press",
"inViewport",
"exit",
];
const components = new Map();
const animated = new Proxy({}, {
get: (_, key) => {
if (!components.has(key)) {
components.set(key, createAnimatedComponent(key));
}
return components.get(key);
},
});
exports.animate = animate;
exports.animateValue = animateValue;
exports.animated = animated;
exports.animateStyle = animateStyle;

@@ -1004,0 +644,0 @@ Object.defineProperty(exports, '__esModule', { value: true });

@@ -1,1 +0,1 @@

import*as t from"react";import{useRef as e,useEffect as n,useState as r,createContext as i,useContext as s,forwardRef as a,createElement as o,useMemo as c}from"react";const l=new WeakMap;function u(t){return l.has(t)||l.set(t,{activeTransforms:[],activeAnimations:{}}),l.get(t)}const f=()=>{},h=t=>t,p=["","X","Y","Z"],y={x:"translateX",y:"translateY",z:"translateZ"},m={syntax:"<angle>",initialValue:"0deg",toDefaultUnit:t=>t+"deg"},d={translate:{syntax:"<length-percentage>",initialValue:"0px",toDefaultUnit:t=>t+"px"},rotate:m,scale:{syntax:"<number>",initialValue:1,toDefaultUnit:h},skew:m},v=new Map,g=t=>`--motion-${t}`,w=["x","y","z"];["translate","scale","rotate","skew"].forEach((t=>{p.forEach((e=>{w.push(t+e),v.set(g(t+e),d[t])}))}));const b=(t,e)=>w.indexOf(t)-w.indexOf(e),O=new Set(w),x=t=>O.has(t),S=t=>t.sort(b).reduce(A,"").trim(),A=(t,e)=>`${t} ${e}(var(${g(e)}))`,P=t=>t.startsWith("--"),T=new Set;const j=t=>1e3*t;const M=t=>Array.isArray(t)&&"number"!=typeof t[0],k=t=>(t=>Array.isArray(t)&&"number"==typeof t[0])(t)?V(t):t,V=([t,e,n,r])=>`cubic-bezier(${t}, ${e}, ${n}, ${r})`,E=t=>document.createElement("div").animate(t,{duration:.001}),D={cssRegisterProperty:()=>"undefined"!=typeof CSS&&Object.hasOwnProperty.call(CSS,"registerProperty"),waapi:()=>Object.hasOwnProperty.call(Element.prototype,"animate"),partialKeyframes:()=>{try{E({opacity:[1]})}catch(t){return!1}return!0},finished:()=>Boolean(E({opacity:[0,1]}).finished)},$={},C=Object.keys(D).reduce(((t,e)=>(t[e]=()=>(void 0===$[e]&&($[e]=D[e]()),$[e]),t)),{}),U=(t,e,n)=>(((1-3*n+3*e)*t+(3*n-6*e))*t+3*e)*t;function I(t,e,n,r){if(t===e&&n===r)return h;const i=e=>function(t,e,n,r,i){let s,a,o=0;do{a=e+(n-e)/2,s=U(a,r,i)-t,s>0?n=a:e=a}while(Math.abs(s)>1e-7&&++o<12);return a}(e,0,1,t,n);return t=>0===t||1===t?t:U(i(t),e,r)}var L=function(t,e,n){var r=e-t;return 0===r?1:(n-t)/r},R=function(t,e,n){return-n*t+n*e+t},z=function(t,e){return void 0===e&&(e="end"),function(n){var r,i,s,a=(n="end"===e?Math.min(n,.999):Math.max(n,.001))*t,o="end"===e?Math.floor(a):Math.ceil(a);return r=0,i=1,s=o/t,Math.min(Math.max(s,r),i)}};const F={ease:I(.25,.1,.25,1),"ease-in":I(.42,0,1,1),"ease-in-out":I(.42,0,.58,1),"ease-out":I(0,0,.58,1)},W=/\((.*?)\)/;function q(t){if("function"==typeof t)return t;if(Array.isArray(t))return I(...t);if(F[t])return F[t];if(t.startsWith("steps")){const e=W.exec(t);if(e){const t=e[1].split(",");return z(parseFloat(t[0]),t[1].trim())}}return h}function B(t,e){const n=t[t.length-1];for(let r=1;r<=e;r++){const i=L(0,e,r);t.push(R(n,1,i))}}function K(t,e=function(t){const e=[0];return B(e,t-1),e}(t.length),n=h){const r=t.length,i=r-e.length;return i>0&&B(e,i),i=>{let s=0;for(;s<r-2&&!(i<e[s+1]);s++);let a=(o=L(e[s],e[s+1],i),Math.min(1,Math.max(o,0)));var o,c,l,u;if(Array.isArray(n)){const t=(c=0,l=n.length-1,((s-c)%(u=l-c)+u)%u+c);a=n[t](a)}else a=n(a);return R(t[s],t[s+1],a)}}class X{constructor(t,e,{easing:n="ease",duration:r=.3,delay:i=0,endDelay:s=0,offset:a,repeat:o=0,direction:c="normal"}){this.startTime=0,this.rate=1,this.t=0,this.cancelT=0,this.playState="idle",this.finished=new Promise(((t,e)=>{this.resolve=t,this.reject=e}));const l=r*(o+1),u=K(e,a,M(n)?n.map(q):q(n));this.tick=e=>{if("finished"===this.playState){const e=u(1);return t(e),void this.resolve(e)}let n=this.pauseTime?this.pauseTime:(e-this.startTime)*this.rate;this.t=n,n/=1e3,n=Math.max(n-i,0);const a=n/r;let o=Math.floor(a),f=a%1;!f&&a>=1&&(f=1),1===f&&o--;const h=o%2;("reverse"===c||"alternate"===c&&h||"alternate-reverse"===c&&!h)&&(f=1-f);const p=n>=l?1:Math.min(f,1),y=u(p);t(y);n>=l+s?(this.playState="finished",this.resolve(y)):"idle"!==this.playState&&requestAnimationFrame(this.tick)},this.play()}play(){const t=performance.now();this.playState="running",this.pauseTime?this.startTime=t-(this.pauseTime-this.startTime):this.startTime||(this.startTime=t),this.pauseTime=void 0,requestAnimationFrame(this.tick)}pause(){this.playState="paused",this.pauseTime=performance.now()}finish(){this.playState="finished",this.tick(0)}cancel(){this.playState="idle",this.tick(this.cancelT),this.reject(!1)}reverse(){this.rate*=-1}commitStyles(){this.cancelT=this.t}get currentTime(){return this.currentTime}set currentTime(t){this.pauseTime||0===this.rate?this.pauseTime=j(t):this.startTime=performance.now()-j(t)/this.rate}get playbackRate(){return this.rate}set playbackRate(t){this.rate=t}}function Y(t,e,n,r={}){let{duration:i=.3,delay:s=0,endDelay:a=0,repeat:o=0,easing:c="ease",direction:l,offset:h}=r;const p=u(t);let m=C.waapi(),d=f;const w=x(e);n=Array.isArray(n)?n:[n],w&&(y[e]&&(e=y[e]),((t,e)=>{const{activeTransforms:n}=u(t);var r,i;i=e,-1===(r=n).indexOf(i)&&r.push(i),t.style.transform=S(n)})(t,e),e=g(e)),function(t,e){t.activeAnimations[e]&&(!function(t){t.commitStyles();try{t.cancel()}catch(t){}}(t.activeAnimations[e]),t.activeAnimations[e]=void 0)}(p,e);const b=v.get(e);if(P(e)?(d=((t,e)=>n=>t.style.setProperty(e,n))(t,e),C.cssRegisterProperty()?function(t){if(!T.has(t)){T.add(t);try{const{syntax:e,initialValue:n}=v.has(t)?v.get(t):{};CSS.registerProperty({name:t,inherits:!1,syntax:e,initialValue:n})}catch(t){}}}(e):m=!1):d=((t,e)=>n=>t.style[e]=n)(t,e),m){if(b&&(n=n.map((t=>"number"==typeof t?b.toDefaultUnit(t):t))),!C.partialKeyframes()&&1===n.length){const r=P(e)?t.style.getPropertyValue(e):getComputedStyle(t)[e];n.unshift(r)}const r={delay:j(s),duration:j(i),endDelay:j(a),easing:M(c)?void 0:k(c),direction:l,iterations:o+1},u=t.animate({[e]:n,offset:h,easing:M(c)?c.map(k):void 0},r);p.activeAnimations[e]=u,u.finished||(u.finished=new Promise(((t,e)=>{u.onfinish=t,u.oncancel=e})));const y=n[n.length-1];return u.finished.then((()=>d(y))).catch(f),u}if(w&&n.every(Z)){if(b){const t=d;d=e=>t(b.toDefaultUnit(e))}return function(t,e=[0,1],n={}){return new X(t,e,n)}(d,n,r)}{const t=n[n.length-1];d(b&&"number"==typeof t?b.toDefaultUnit(t):t)}}const Z=t=>"number"==typeof t;function G(t,r,i,s,a,o){const c=e(r);n((()=>{const e={};if(new Set([...Object.keys(i),...Object.keys(c.current)]).forEach((t=>{let n=i[t];var r,s;(r=n,s=c.current[t],typeof r==typeof s&&(Array.isArray(r)&&Array.isArray(s)?function(t,e){const n=e.length;if(n!==t.length)return!1;for(let r=0;r<n;r++)if(e[r]!==t[r])return!1;return!0}(r,s):r===s))||(e[t]=n)})),Object.keys(e).length&&t.current){null==a||a(e);const n=[];for(const r in e){const i=Y(t.current,r,e[r],s);i&&n.push(i)}Promise.all(n.map((t=>t.finished))).then((()=>null==o?void 0:o(e))).catch(f)}c.current=i}))}function H(t,e,n={}){return t?"string"==typeof t?n[t]:t:e?n[e]:void 0}function J(t,e,n,i){const[s,a]=r(!1);return(s||n)&&Object.assign(t,H(e,n,i)),[s||Boolean(n),a]}var N=i(null);var Q=0,_=function(){return Q++},tt=function(){return t=_,null===(n=e(null)).current&&(n.current=t()),n.current;var t,n};function et(t,{exit:e,variants:r},{exit:i}){const[a,o]=function(){var t=s(N);if(null===t)return[!0,null];var e=t.isPresent,r=t.onExitComplete,i=t.register,a=tt();return n((function(){return i(a)}),[]),!e&&r?[!1,function(){return null==r?void 0:r(a)}]:[!0]}();if(n((()=>{e||null==o||o()}),[a]),e&&!a)return Object.assign(t,H(e,i,r)),o}const nt=i({});function rt(r){return a((function(i,a){const l=e(null),{options:u={},style:f,initial:h,hover:p,press:m,exit:d,inViewport:w,viewport:b,variants:O,onStart:A,onComplete:P,inherit:T=!0}=i,j=function(t,e){var n={};for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&e.indexOf(r)<0&&(n[r]=t[r]);if(null!=t&&"function"==typeof Object.getOwnPropertySymbols){var i=0;for(r=Object.getOwnPropertySymbols(t);i<r.length;i++)e.indexOf(r[i])<0&&Object.prototype.propertyIsEnumerable.call(t,r[i])&&(n[r[i]]=t[r[i]])}return n}(i,["options","style","initial","hover","press","exit","inViewport","viewport","variants","onStart","onComplete","inherit"]),M={initial:!0,style:!0};let k=s(nt);T||(k={});const V=H(f,k.style,O),E=H(h,k.initial,O),D=Object.assign(Object.assign({},V),E),$=Object.assign(Object.assign({},E),V),C=e(null);C.current||(C.current=function(t){const e={},n=[];for(let r in t){const i=t[r];x(r)&&(y[r]&&(r=y[r]),n.push(r),r=g(r));let s=Array.isArray(i)?i[0]:i;const a=v.get(r);a&&(s="number"==typeof i?a.toDefaultUnit(i):i),e[r]=s}return n.length&&(e.transform=S(n)),e}(D));const U=function(t,{hover:e,onPointerEnter:n,onPointerLeave:r,variants:i}={},{hover:s},a){const[o,c]=J(t,e,s,i);return a.hover=o,e?{onPointerEnter:t=>{null==n||n(t),c(!0)},onPointerLeave:t=>{null==r||r(t),c(!1)}}:{}}($,i,k,M),I=function(t,{press:e,onPointerDown:n,variants:r}={},{press:i},s){const[a,o]=J(t,e,i,r);if(s.press=a,!e)return{};const c=()=>{o(!1),window.removeEventListener("pointerup",c)};return{onPointerDown:t=>{null==n||n(t),o(!0),window.addEventListener("pointerup",c)}}}($,i,k,M);!function(t,e,{inViewport:r,variants:i,viewport:s={},onViewportEnter:a,onViewportLeave:o},{inViewport:c},l){const{root:u,margin:f,once:h,threshold:p}=s,[y,m]=J(e,r,c,i);l.inViewport=y;let d=!!r||!!a||!!o;h&&y&&(d=!1),n((()=>{if(!d||"undefined"==typeof IntersectionObserver)return;const e=new IntersectionObserver((([t])=>{m(t.isIntersecting);const e=t.isIntersecting?a:o;e&&e(t)}),{root:null==u?void 0:u.current,rootMargin:f,threshold:p});return e.observe(t.current),()=>e.disconnect()}),[r,a,o,u,f,p])}(l,$,i,k,M);const L=et($,i,k);G(l,D,$,u,A,(t=>{P&&P(t),L&&L()}));const R=o(r,Object.assign({},j,U,I,{style:C.current,ref:l})),z=it.reduce(((t,e)=>(t[e]=void 0,i[e]?"string"==typeof i[e]&&M[e]&&(t[e]=i[e]):k[e]&&(t[e]=k[e]),t)),{}),F=c((()=>z),Object.values(z));return t.createElement(nt.Provider,{value:F},R)}))}const it=["initial","style","hover","press","inViewport","exit"],st=new Map,at=new Proxy({},{get:(t,e)=>(st.has(e)||st.set(e,rt(e)),st.get(e))});export{at as animated};
import*as t from"react";import{useRef as e,useEffect as n,useState as r,createContext as i,useContext as s,forwardRef as o,createElement as a,useMemo as c}from"react";const l=new WeakMap;function u(t){return l.has(t)||l.set(t,{activeTransforms:[],activeAnimations:{}}),l.get(t)}const f=()=>{},h=t=>t,p=["","X","Y","Z"],y={x:"translateX",y:"translateY",z:"translateZ"},m={syntax:"<angle>",initialValue:"0deg",toDefaultUnit:t=>t+"deg"},d={translate:{syntax:"<length-percentage>",initialValue:"0px",toDefaultUnit:t=>t+"px"},rotate:m,scale:{syntax:"<number>",initialValue:1,toDefaultUnit:h},skew:m},v=new Map,g=t=>`--motion-${t}`,w=["x","y","z"];["translate","scale","rotate","skew"].forEach((t=>{p.forEach((e=>{w.push(t+e),v.set(g(t+e),d[t])}))}));const b=(t,e)=>w.indexOf(t)-w.indexOf(e),O=new Set(w),x=t=>O.has(t),S=t=>t.sort(b).reduce(A,"").trim(),A=(t,e)=>`${t} ${e}(var(${g(e)}))`,P=t=>t.startsWith("--"),T=new Set;const j=t=>1e3*t;const M=t=>Array.isArray(t)&&"number"!=typeof t[0],k=t=>(t=>Array.isArray(t)&&"number"==typeof t[0])(t)?V(t):t,V=([t,e,n,r])=>`cubic-bezier(${t}, ${e}, ${n}, ${r})`,E=t=>document.createElement("div").animate(t,{duration:.001}),D={cssRegisterProperty:()=>"undefined"!=typeof CSS&&Object.hasOwnProperty.call(CSS,"registerProperty"),waapi:()=>Object.hasOwnProperty.call(Element.prototype,"animate"),partialKeyframes:()=>{try{E({opacity:[1]})}catch(t){return!1}return!0},finished:()=>Boolean(E({opacity:[0,1]}).finished)},$={},C=Object.keys(D).reduce(((t,e)=>(t[e]=()=>(void 0===$[e]&&($[e]=D[e]()),$[e]),t)),{}),U=(t,e,n)=>(((1-3*n+3*e)*t+(3*n-6*e))*t+3*e)*t;function I(t,e,n,r){if(t===e&&n===r)return h;const i=e=>function(t,e,n,r,i){let s,o,a=0;do{o=e+(n-e)/2,s=U(o,r,i)-t,s>0?n=o:e=o}while(Math.abs(s)>1e-7&&++a<12);return o}(e,0,1,t,n);return t=>0===t||1===t?t:U(i(t),e,r)}var L=function(t,e,n){var r=e-t;return 0===r?1:(n-t)/r},R=function(t,e,n){return-n*t+n*e+t},z=function(t,e){return void 0===e&&(e="end"),function(n){var r,i,s,o=(n="end"===e?Math.min(n,.999):Math.max(n,.001))*t,a="end"===e?Math.floor(o):Math.ceil(o);return r=0,i=1,s=a/t,Math.min(Math.max(s,r),i)}};const F={ease:I(.25,.1,.25,1),"ease-in":I(.42,0,1,1),"ease-in-out":I(.42,0,.58,1),"ease-out":I(0,0,.58,1)},W=/\((.*?)\)/;function q(t){if("function"==typeof t)return t;if(Array.isArray(t))return I(...t);if(F[t])return F[t];if(t.startsWith("steps")){const e=W.exec(t);if(e){const t=e[1].split(",");return z(parseFloat(t[0]),t[1].trim())}}return h}function B(t,e){const n=t[t.length-1];for(let r=1;r<=e;r++){const i=L(0,e,r);t.push(R(n,1,i))}}function K(t,e=function(t){const e=[0];return B(e,t-1),e}(t.length),n=h){const r=t.length,i=r-e.length;return i>0&&B(e,i),i=>{let s=0;for(;s<r-2&&!(i<e[s+1]);s++);let o=(a=L(e[s],e[s+1],i),Math.min(1,Math.max(a,0)));var a,c,l,u;if(Array.isArray(n)){const t=(c=0,l=n.length-1,((s-c)%(u=l-c)+u)%u+c);o=n[t](o)}else o=n(o);return R(t[s],t[s+1],o)}}class X{constructor(t,e,{easing:n="ease",duration:r=.3,delay:i=0,endDelay:s=0,offset:o,repeat:a=0,direction:c="normal"}){this.startTime=0,this.rate=1,this.t=0,this.cancelT=0,this.playState="idle",this.finished=new Promise(((t,e)=>{this.resolve=t,this.reject=e}));const l=r*(a+1),u=K(e,o,M(n)?n.map(q):q(n));this.tick=e=>{if("finished"===this.playState){const e=u(1);return t(e),void this.resolve(e)}let n=this.pauseTime?this.pauseTime:(e-this.startTime)*this.rate;this.t=n,n/=1e3,n=Math.max(n-i,0);const o=n/r;let a=Math.floor(o),f=o%1;!f&&o>=1&&(f=1),1===f&&a--;const h=a%2;("reverse"===c||"alternate"===c&&h||"alternate-reverse"===c&&!h)&&(f=1-f);const p=n>=l?1:Math.min(f,1),y=u(p);t(y);n>=l+s?(this.playState="finished",this.resolve(y)):"idle"!==this.playState&&requestAnimationFrame(this.tick)},this.play()}play(){const t=performance.now();this.playState="running",this.pauseTime?this.startTime=t-(this.pauseTime-this.startTime):this.startTime||(this.startTime=t),this.pauseTime=void 0,requestAnimationFrame(this.tick)}pause(){this.playState="paused",this.pauseTime=performance.now()}finish(){this.playState="finished",this.tick(0)}cancel(){this.playState="idle",this.tick(this.cancelT),this.reject(!1)}reverse(){this.rate*=-1}commitStyles(){this.cancelT=this.t}get currentTime(){return this.currentTime}set currentTime(t){this.pauseTime||0===this.rate?this.pauseTime=j(t):this.startTime=performance.now()-j(t)/this.rate}get playbackRate(){return this.rate}set playbackRate(t){this.rate=t}}function Y(t,e,n,r={}){let{duration:i=.3,delay:s=0,endDelay:o=0,repeat:a=0,easing:c="ease",direction:l,offset:h}=r;const p=u(t);let m=C.waapi(),d=f;const w=x(e);n=Array.isArray(n)?n:[n],w&&(y[e]&&(e=y[e]),((t,e)=>{const{activeTransforms:n}=u(t);var r,i;i=e,-1===(r=n).indexOf(i)&&r.push(i),t.style.transform=S(n)})(t,e),e=g(e)),function(t,e){t.activeAnimations[e]&&(!function(t){t.commitStyles();try{t.cancel()}catch(t){}}(t.activeAnimations[e]),t.activeAnimations[e]=void 0)}(p,e);const b=v.get(e);if(P(e)?(d=((t,e)=>n=>t.style.setProperty(e,n))(t,e),C.cssRegisterProperty()?function(t){if(!T.has(t)){T.add(t);try{const{syntax:e,initialValue:n}=v.has(t)?v.get(t):{};CSS.registerProperty({name:t,inherits:!1,syntax:e,initialValue:n})}catch(t){}}}(e):m=!1):d=((t,e)=>n=>t.style[e]=n)(t,e),m){if(b&&(n=n.map((t=>"number"==typeof t?b.toDefaultUnit(t):t))),!C.partialKeyframes()&&1===n.length){const r=P(e)?t.style.getPropertyValue(e):getComputedStyle(t)[e];n.unshift(r)}const r={delay:j(s),duration:j(i),endDelay:j(o),easing:M(c)?void 0:k(c),direction:l,iterations:a+1},u=t.animate({[e]:n,offset:h,easing:M(c)?c.map(k):void 0},r);p.activeAnimations[e]=u,u.finished||(u.finished=new Promise(((t,e)=>{u.onfinish=t,u.oncancel=e})));const y=n[n.length-1];return u.finished.then((()=>d(y))).catch(f),u}if(w&&n.every(Z)){if(b){const t=d;d=e=>t(b.toDefaultUnit(e))}return function(t,e=[0,1],n={}){return new X(t,e,n)}(d,n,r)}{const t=n[n.length-1];d(b&&"number"==typeof t?b.toDefaultUnit(t):t)}}const Z=t=>"number"==typeof t;const G=(t,e)=>t[e]?Object.assign(Object.assign({},t),t[e]):t;function H(t,r,i,s,o,a){const c=e(r);n((()=>{const e={};if(new Set([...Object.keys(i),...Object.keys(c.current)]).forEach((t=>{let n=i[t];var r,s;(r=n,s=c.current[t],typeof r==typeof s&&(Array.isArray(r)&&Array.isArray(s)?function(t,e){const n=e.length;if(n!==t.length)return!1;for(let r=0;r<n;r++)if(e[r]!==t[r])return!1;return!0}(r,s):r===s))||(e[t]=n)})),Object.keys(e).length&&t.current){null==o||o(e);const n=[];for(const r in e){const i=Y(t.current,r,e[r],G(s,r));i&&n.push(i)}Promise.all(n.map((t=>t.finished))).then((()=>null==a?void 0:a(e))).catch(f)}c.current=i}))}function J(t,e,n={}){return t?"string"==typeof t?n[t]:t:e?n[e]:void 0}function N(t,e,n){if(n)for(const r in n)"options"!==r&&(t[r]=n[r],n.options&&(e[r]=G(n.options,r)))}function Q(t,e,n,i,s){const[o,a]=r(!1);return(o||i)&&N(t,e,J(n,i,s)),[o||Boolean(i),a]}var _=i(null);var tt=0,et=function(){return tt++},nt=function(){return t=et,null===(n=e(null)).current&&(n.current=t()),n.current;var t,n};function rt(t,e,{exit:r,poses:i},{exit:o}){const[a,c]=function(){var t=s(_);if(null===t)return[!0,null];var e=t.isPresent,r=t.onExitComplete,i=t.register,o=nt();return n((function(){return i(o)}),[]),!e&&r?[!1,function(){return null==r?void 0:r(o)}]:[!0]}();if(n((()=>{r||null==c||c()}),[a]),r&&!a)return N(t,e,J(r,o,i)),c}const it=i({});function st(r){return o((function(i,o){const l=e(null),{options:u,style:f,initial:h,hover:p,press:m,exit:d,inViewport:w,viewport:b,poses:O,onStart:A,onComplete:P,inherit:T=!0}=i,j=function(t,e){var n={};for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&e.indexOf(r)<0&&(n[r]=t[r]);if(null!=t&&"function"==typeof Object.getOwnPropertySymbols){var i=0;for(r=Object.getOwnPropertySymbols(t);i<r.length;i++)e.indexOf(r[i])<0&&Object.prototype.propertyIsEnumerable.call(t,r[i])&&(n[r[i]]=t[r[i]])}return n}(i,["options","style","initial","hover","press","exit","inViewport","viewport","poses","onStart","onComplete","inherit"]),M={initial:!0,style:!0};let k=s(it);T||(k={});const V=J(f,k.style,O),E=J(h,k.initial,O),D=Object.assign(Object.assign({},V),E),$=Object.assign(Object.assign({},E),V),C=Object.assign(Object.assign({},u),null==V?void 0:V.options),U=e(null);U.current||(U.current=function(t){const e={},n=[];for(let r in t){const i=t[r];x(r)&&(y[r]&&(r=y[r]),n.push(r),r=g(r));let s=Array.isArray(i)?i[0]:i;const o=v.get(r);o&&(s="number"==typeof i?o.toDefaultUnit(i):i),e[r]=s}return n.length&&(e.transform=S(n)),e}(D));const I=function(t,e,{hover:n,onPointerEnter:r,onPointerLeave:i,poses:s}={},{hover:o},a){const[c,l]=Q(t,e,n,o,s);return a.hover=c,n?{onPointerEnter:t=>{null==r||r(t),l(!0)},onPointerLeave:t=>{null==i||i(t),l(!1)}}:{}}($,C,i,k,M),L=function(t,e,{press:n,onPointerDown:r,poses:i}={},{press:s},o){const[a,c]=Q(t,e,n,s,i);if(o.press=a,!n)return{};const l=()=>{c(!1),window.removeEventListener("pointerup",l)};return{onPointerDown:t=>{null==r||r(t),c(!0),window.addEventListener("pointerup",l)}}}($,C,i,k,M);!function(t,e,r,{inViewport:i,poses:s,viewport:o={},onViewportEnter:a,onViewportLeave:c},{inViewport:l},u){const{root:f,margin:h,once:p,threshold:y}=o,[m,d]=Q(e,r,i,l,s);u.inViewport=m;let v=!!i||!!a||!!c;p&&m&&(v=!1),n((()=>{if(!v||"undefined"==typeof IntersectionObserver)return;const e=new IntersectionObserver((([t])=>{d(t.isIntersecting);const e=t.isIntersecting?a:c;e&&e(t)}),{root:null==f?void 0:f.current,rootMargin:h,threshold:y});return e.observe(t.current),()=>e.disconnect()}),[i,a,c,f,h,y])}(l,$,C,i,k,M);const R=rt($,C,i,k);H(l,D,$,C,A,(t=>{P&&P(t),R&&R()}));const z=a(r,Object.assign({},j,I,L,{style:U.current,ref:l})),F=ot.reduce(((t,e)=>(t[e]=void 0,i[e]?"string"==typeof i[e]&&M[e]&&(t[e]=i[e]):k[e]&&(t[e]=k[e]),t)),{}),W=c((()=>F),Object.values(F));return t.createElement(it.Provider,{value:W},z)}))}const ot=["initial","style","hover","press","inViewport","exit"],at=new Map,ct=new Proxy({},{get:(t,e)=>(at.has(e)||at.set(e,st(e)),at.get(e))});export{ct as animated};
{
"name": "motion",
"version": "6.0.1-alpha.29",
"version": "6.0.1-alpha.30",
"description": "The Motion library for the web",

@@ -10,3 +10,3 @@ "author": "Matt Perry",

"license": "MIT",
"repository": "https://github.com/mattgperry/motion",
"repository": "https://github.com/motiondivision/motion",
"sideEffects": false,

@@ -18,3 +18,4 @@ "keywords": [

"cubic bezier",
"easing"
"easing",
"waapi"
],

@@ -135,5 +136,5 @@ "scripts": {

"path": "./dist/size-react.js",
"maxSize": "4.1 kB"
"maxSize": "4.2 kB"
}
]
}
export { animate } from "./targets/dom/animate"
export { animateValue } from "./targets/dom/animate-value"
export { animateStyle } from "./targets/dom/animate-style"
export * from "./targets/dom/types"
// TODO Move to seperate motion/react entry point
export { animated } from "./targets/react/index"
export * from "./targets/react/types"

@@ -8,3 +8,3 @@ import {

import { stopAnimation } from "./utils/stop-animation"
import { animateValue } from "./animate-value"
import { animateStyle } from "./animate-style"
import { getOptions } from "./utils/options"

@@ -40,3 +40,3 @@

const animation = animateValue(
const animation = animateStyle(
element,

@@ -43,0 +43,0 @@ key,

@@ -8,3 +8,6 @@ import { getOptions } from "../options"

).toEqual({ duration: 1, easing: "ease", x: { easing: "ease" } })
expect(
getOptions({ duration: 1, opacity: { duration: 0.0001 } }, "opacity")
).toEqual({ duration: 0.0001, opacity: { duration: 0.0001 } })
})
})

@@ -1,7 +0,8 @@

import { AnimationOptions, MotionKeyframes } from "../../dom/types"
import { AnimationOptionsWithOverrides, MotionKeyframes } from "../../dom/types"
import { AnimationCallback, MotionCSSProperties } from "../types"
import { RefObject, useEffect, useRef } from "react"
import { animateValue } from "../../dom/animate-value"
import { animateStyle } from "../../dom/animate-style"
import { noop } from "../../../utils/noop"
import { hasChanged } from "../utils/has-changed"
import { getOptions } from "../../dom/utils/options"

@@ -12,3 +13,3 @@ export function useAnimation(

target: MotionKeyframes,
options?: AnimationOptions,
options: AnimationOptionsWithOverrides,
onStart?: AnimationCallback,

@@ -42,7 +43,7 @@ onComplete?: AnimationCallback

for (const key in targetKeyframe) {
const animation = animateValue(
const animation = animateStyle(
ref.current,
key,
targetKeyframe[key]!,
options
getOptions(options, key)
)

@@ -49,0 +50,0 @@ animation && animations.push(animation)

@@ -1,10 +0,12 @@

import { MotionKeyframes } from "../../dom/types"
import { AnimationOptionsWithOverrides, MotionKeyframes } from "../../dom/types"
import { usePresence } from "framer-motion"
import { useEffect } from "react"
import { AnimatedProps, AnimationContextProps } from "../types"
import { resolveVariant } from "../utils/variants"
import { resolvePose } from "../utils/poses"
import { updateTargetAndOptions } from "../utils/update-target"
export function useExit(
target: MotionKeyframes,
{ exit, variants }: AnimatedProps,
options: AnimationOptionsWithOverrides,
{ exit, poses }: AnimatedProps,
{ exit: inheritedExit }: AnimationContextProps

@@ -24,5 +26,9 @@ ) {

if (exit && !isPresent) {
Object.assign(target, resolveVariant(exit, inheritedExit, variants))
updateTargetAndOptions(
target,
options,
resolvePose(exit, inheritedExit, poses)
)
return onExitComplete
}
}
import { Dispatch, SetStateAction, useState } from "react"
import { MotionKeyframes } from "../../dom/types"
import { Variants } from "../types"
import { resolveVariant } from "../utils/variants"
import { AnimationOptionsWithOverrides, MotionKeyframes } from "../../dom/types"
import { Poses } from "../types"
import { resolvePose } from "../utils/poses"
import { updateTargetAndOptions } from "../utils/update-target"
export function useGestureState(
target: MotionKeyframes,
options: AnimationOptionsWithOverrides,
stylesToApply?: MotionKeyframes | string,
inheritedVariant?: string,
variants?: Variants
inheritedPose?: string,
poses?: Poses
): [boolean, Dispatch<SetStateAction<boolean>>] {
const [isGestureActive, setGestureState] = useState(false)
if (isGestureActive || inheritedVariant) {
Object.assign(
if (isGestureActive || inheritedPose) {
updateTargetAndOptions(
target,
resolveVariant(stylesToApply, inheritedVariant, variants)
options,
resolvePose(stylesToApply, inheritedPose, poses)
)
}
return [isGestureActive || Boolean(inheritedVariant), setGestureState]
return [isGestureActive || Boolean(inheritedPose), setGestureState]
}
import { HTMLProps } from "react"
import { MotionKeyframes } from "../../dom/types"
import {
AnimatedProps,
AnimationContextProps,
VariantActiveState,
} from "../types"
import { AnimationOptionsWithOverrides, MotionKeyframes } from "../../dom/types"
import { AnimatedProps, AnimationContextProps, PoseActiveState } from "../types"
import { useGestureState } from "./use-gesture-state"

@@ -12,2 +8,3 @@

target: MotionKeyframes,
options: AnimationOptionsWithOverrides,
{

@@ -17,15 +14,16 @@ hover,

onPointerLeave,
variants,
poses,
}: AnimatedProps & HTMLProps<any> = {},
{ hover: inheritedHover }: AnimationContextProps,
isVariantActive: VariantActiveState
isPoseActive: PoseActiveState
): HTMLProps<any> {
const [isHoverActive, setHoverState] = useGestureState(
target,
options,
hover,
inheritedHover,
variants
poses
)
isVariantActive.hover = isHoverActive
isPoseActive.hover = isHoverActive

@@ -32,0 +30,0 @@ return hover

import { HTMLProps } from "react"
import { MotionKeyframes } from "../../dom/types"
import {
AnimatedProps,
AnimationContextProps,
VariantActiveState,
} from "../types"
import { AnimationOptionsWithOverrides, MotionKeyframes } from "../../dom/types"
import { AnimatedProps, AnimationContextProps, PoseActiveState } from "../types"
import { useGestureState } from "./use-gesture-state"

@@ -12,13 +8,15 @@

target: MotionKeyframes,
{ press, onPointerDown, variants }: AnimatedProps & HTMLProps<any> = {},
options: AnimationOptionsWithOverrides,
{ press, onPointerDown, poses }: AnimatedProps & HTMLProps<any> = {},
{ press: inheritedPress }: AnimationContextProps,
isVariantActive: VariantActiveState
isPoseActive: PoseActiveState
): HTMLProps<any> {
const [isPressActive, setPressState] = useGestureState(
target,
options,
press,
inheritedPress,
variants
poses
)
isVariantActive.press = isPressActive
isPoseActive.press = isPressActive

@@ -25,0 +23,0 @@ if (!press) return {}

import { RefObject, useEffect } from "react"
import { MotionKeyframes } from "../../dom/types"
import {
AnimatedProps,
AnimationContextProps,
VariantActiveState,
} from "../types"
import { AnimationOptionsWithOverrides, MotionKeyframes } from "../../dom/types"
import { AnimatedProps, AnimationContextProps, PoseActiveState } from "../types"
import { useGestureState } from "./use-gesture-state"

@@ -13,5 +9,6 @@

target: MotionKeyframes,
options: AnimationOptionsWithOverrides,
{
inViewport,
variants,
poses,
viewport = {},

@@ -22,3 +19,3 @@ onViewportEnter,

{ inViewport: inheritedInViewport }: AnimationContextProps,
isVariantActive: VariantActiveState
isPoseActive: PoseActiveState
) {

@@ -29,7 +26,8 @@ const { root, margin: rootMargin, once, threshold } = viewport

target,
options,
inViewport,
inheritedInViewport,
variants
poses
)
isVariantActive.inViewport = isInViewport
isPoseActive.inViewport = isInViewport

@@ -36,0 +34,0 @@ let shouldObserve = !!inViewport || !!onViewportEnter || !!onViewportLeave

@@ -12,4 +12,9 @@ import {

} from "react"
import { AnimationOptions, MotionKeyframes } from "../dom/types"
import {
AnimationOptions,
AnimationOptionsWithOverrides,
MotionKeyframes,
} from "../dom/types"
import { svgElements, htmlElements } from "./utils/supported-elements"
export type AnimationCallback = (target: MotionKeyframes) => void

@@ -35,5 +40,9 @@

export type MotionKeyframesWithOptions = MotionKeyframes & {
options?: AnimationOptionsWithOverrides
}
export type MotionCSSProperties = CSSPropertiesWithTransform & CSSVariables
export type Variants = { [key: string]: MotionKeyframes }
export type Poses = { [key: string]: MotionKeyframesWithOptions }

@@ -49,9 +58,9 @@ export interface ViewportOptions {

initial?: MotionCSSProperties | string
style?: MotionKeyframes | string
hover?: MotionKeyframes | string
press?: MotionKeyframes | string
exit?: MotionKeyframes | string
inViewport?: MotionKeyframes | string
style?: MotionKeyframesWithOptions | string
hover?: MotionKeyframesWithOptions | string
press?: MotionKeyframesWithOptions | string
exit?: MotionKeyframesWithOptions | string
inViewport?: MotionKeyframesWithOptions | string
inherit?: boolean
variants?: Variants
poses?: Poses
viewport?: ViewportOptions

@@ -65,3 +74,3 @@ options?: AnimationOptions

export type VariantProps = {
export type PoseProps = {
initial?: boolean

@@ -76,7 +85,7 @@ style?: boolean

export type AnimationContextProps = {
[K in keyof VariantProps]?: string
[K in keyof PoseProps]?: string
}
export type VariantActiveState = {
[K in keyof VariantProps]?: boolean
export type PoseActiveState = {
[K in keyof PoseProps]?: boolean
}

@@ -83,0 +92,0 @@

export { animate } from "./targets/dom/animate";
export { animateValue } from "./targets/dom/animate-value";
export { animateStyle } from "./targets/dom/animate-style";
export * from "./targets/dom/types";
export { animated } from "./targets/react/index";
export * from "./targets/react/types";

@@ -1,4 +0,4 @@

import { AnimationOptions, MotionKeyframes } from "../../dom/types";
import { AnimationOptionsWithOverrides, MotionKeyframes } from "../../dom/types";
import { AnimationCallback, MotionCSSProperties } from "../types";
import { RefObject } from "react";
export declare function useAnimation(ref: RefObject<HTMLElement>, initial: MotionKeyframes | MotionCSSProperties, target: MotionKeyframes, options?: AnimationOptions, onStart?: AnimationCallback, onComplete?: AnimationCallback): void;
export declare function useAnimation(ref: RefObject<HTMLElement>, initial: MotionKeyframes | MotionCSSProperties, target: MotionKeyframes, options: AnimationOptionsWithOverrides, onStart?: AnimationCallback, onComplete?: AnimationCallback): void;

@@ -1,3 +0,3 @@

import { MotionKeyframes } from "../../dom/types";
import { AnimationOptionsWithOverrides, MotionKeyframes } from "../../dom/types";
import { AnimatedProps, AnimationContextProps } from "../types";
export declare function useExit(target: MotionKeyframes, { exit, variants }: AnimatedProps, { exit: inheritedExit }: AnimationContextProps): import("framer-motion/types/components/AnimatePresence/use-presence").SafeToRemove | null | undefined;
export declare function useExit(target: MotionKeyframes, options: AnimationOptionsWithOverrides, { exit, poses }: AnimatedProps, { exit: inheritedExit }: AnimationContextProps): import("framer-motion/types/components/AnimatePresence/use-presence").SafeToRemove | null | undefined;
import { Dispatch, SetStateAction } from "react";
import { MotionKeyframes } from "../../dom/types";
import { Variants } from "../types";
export declare function useGestureState(target: MotionKeyframes, stylesToApply?: MotionKeyframes | string, inheritedVariant?: string, variants?: Variants): [boolean, Dispatch<SetStateAction<boolean>>];
import { AnimationOptionsWithOverrides, MotionKeyframes } from "../../dom/types";
import { Poses } from "../types";
export declare function useGestureState(target: MotionKeyframes, options: AnimationOptionsWithOverrides, stylesToApply?: MotionKeyframes | string, inheritedPose?: string, poses?: Poses): [boolean, Dispatch<SetStateAction<boolean>>];
import { HTMLProps } from "react";
import { MotionKeyframes } from "../../dom/types";
import { AnimatedProps, AnimationContextProps, VariantActiveState } from "../types";
export declare function useHover(target: MotionKeyframes, { hover, onPointerEnter, onPointerLeave, variants, }: (AnimatedProps & HTMLProps<any>) | undefined, { hover: inheritedHover }: AnimationContextProps, isVariantActive: VariantActiveState): HTMLProps<any>;
import { AnimationOptionsWithOverrides, MotionKeyframes } from "../../dom/types";
import { AnimatedProps, AnimationContextProps, PoseActiveState } from "../types";
export declare function useHover(target: MotionKeyframes, options: AnimationOptionsWithOverrides, { hover, onPointerEnter, onPointerLeave, poses, }: (AnimatedProps & HTMLProps<any>) | undefined, { hover: inheritedHover }: AnimationContextProps, isPoseActive: PoseActiveState): HTMLProps<any>;
import { HTMLProps } from "react";
import { MotionKeyframes } from "../../dom/types";
import { AnimatedProps, AnimationContextProps, VariantActiveState } from "../types";
export declare function usePress(target: MotionKeyframes, { press, onPointerDown, variants }: (AnimatedProps & HTMLProps<any>) | undefined, { press: inheritedPress }: AnimationContextProps, isVariantActive: VariantActiveState): HTMLProps<any>;
import { AnimationOptionsWithOverrides, MotionKeyframes } from "../../dom/types";
import { AnimatedProps, AnimationContextProps, PoseActiveState } from "../types";
export declare function usePress(target: MotionKeyframes, options: AnimationOptionsWithOverrides, { press, onPointerDown, poses }: (AnimatedProps & HTMLProps<any>) | undefined, { press: inheritedPress }: AnimationContextProps, isPoseActive: PoseActiveState): HTMLProps<any>;
import { RefObject } from "react";
import { MotionKeyframes } from "../../dom/types";
import { AnimatedProps, AnimationContextProps, VariantActiveState } from "../types";
export declare function useViewport(ref: RefObject<Element>, target: MotionKeyframes, { inViewport, variants, viewport, onViewportEnter, onViewportLeave, }: AnimatedProps, { inViewport: inheritedInViewport }: AnimationContextProps, isVariantActive: VariantActiveState): void;
import { AnimationOptionsWithOverrides, MotionKeyframes } from "../../dom/types";
import { AnimatedProps, AnimationContextProps, PoseActiveState } from "../types";
export declare function useViewport(ref: RefObject<Element>, target: MotionKeyframes, options: AnimationOptionsWithOverrides, { inViewport, poses, viewport, onViewportEnter, onViewportLeave, }: AnimatedProps, { inViewport: inheritedInViewport }: AnimationContextProps, isPoseActive: PoseActiveState): void;
import { CSSProperties, DetailedHTMLFactory, ForwardRefExoticComponent, HTMLAttributes, PropsWithoutRef, ReactHTML, RefAttributes, RefObject, SVGAttributes } from "react";
import { AnimationOptions, MotionKeyframes } from "../dom/types";
import { AnimationOptions, AnimationOptionsWithOverrides, MotionKeyframes } from "../dom/types";
import { svgElements, htmlElements } from "./utils/supported-elements";

@@ -21,5 +21,8 @@ export declare type AnimationCallback = (target: MotionKeyframes) => void;

};
export declare type MotionKeyframesWithOptions = MotionKeyframes & {
options?: AnimationOptionsWithOverrides;
};
export declare type MotionCSSProperties = CSSPropertiesWithTransform & CSSVariables;
export declare type Variants = {
[key: string]: MotionKeyframes;
export declare type Poses = {
[key: string]: MotionKeyframesWithOptions;
};

@@ -34,9 +37,9 @@ export interface ViewportOptions {

initial?: MotionCSSProperties | string;
style?: MotionKeyframes | string;
hover?: MotionKeyframes | string;
press?: MotionKeyframes | string;
exit?: MotionKeyframes | string;
inViewport?: MotionKeyframes | string;
style?: MotionKeyframesWithOptions | string;
hover?: MotionKeyframesWithOptions | string;
press?: MotionKeyframesWithOptions | string;
exit?: MotionKeyframesWithOptions | string;
inViewport?: MotionKeyframesWithOptions | string;
inherit?: boolean;
variants?: Variants;
poses?: Poses;
viewport?: ViewportOptions;

@@ -49,3 +52,3 @@ options?: AnimationOptions;

}
export declare type VariantProps = {
export declare type PoseProps = {
initial?: boolean;

@@ -59,6 +62,6 @@ style?: boolean;

export declare type AnimationContextProps = {
[K in keyof VariantProps]?: string;
[K in keyof PoseProps]?: string;
};
export declare type VariantActiveState = {
[K in keyof VariantProps]?: boolean;
export declare type PoseActiveState = {
[K in keyof PoseProps]?: boolean;
};

@@ -65,0 +68,0 @@ declare type UnionStringArray<T extends Readonly<string[]>> = T[number];

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet