| 1234567891011121314151617181920212223242526272829303132333435363738394041 |
- import { animationControls } from './animation-controls.mjs';
- import { useConstant } from '../../utils/use-constant.mjs';
- import { useIsomorphicLayoutEffect } from '../../utils/use-isomorphic-effect.mjs';
- /**
- * Creates `AnimationControls`, which can be used to manually start, stop
- * and sequence animations on one or more components.
- *
- * The returned `AnimationControls` should be passed to the `animate` property
- * of the components you want to animate.
- *
- * These components can then be animated with the `start` method.
- *
- * ```jsx
- * import * as React from 'react'
- * import { motion, useAnimation } from 'framer-motion'
- *
- * export function MyComponent(props) {
- * const controls = useAnimation()
- *
- * controls.start({
- * x: 100,
- * transition: { duration: 0.5 },
- * })
- *
- * return <motion.div animate={controls} />
- * }
- * ```
- *
- * @returns Animation controller with `start` and `stop` methods
- *
- * @public
- */
- function useAnimationControls() {
- const controls = useConstant(animationControls);
- useIsomorphicLayoutEffect(controls.mount, []);
- return controls;
- }
- const useAnimation = useAnimationControls;
- export { useAnimation, useAnimationControls };
|