UNPKG

framer-motion

Version:

A simple and powerful React animation library

76 lines (75 loc) 2.48 kB
/** * @public */ export interface LayoutProps { /** * If `true`, this component will automatically animate to its new position when * its layout changes. * * ```jsx * <motion.div layout /> * ``` * * This will perform a layout animation using performant transforms. Part of this technique * involved animating an element's scale. This can introduce visual distortions on children, * `boxShadow` and `borderRadius`. * * To correct distortion on immediate children, add `layout` to those too. * * `boxShadow` and `borderRadius` will automatically be corrected if they are already being * animated on this component. Otherwise, set them directly via the `initial` prop. * * If `layout` is set to `"position"`, the size of the component will change instantly and * only its position will animate. If `layout` is set to `"size"`, the position of the * component will change instantly but its size will animate. * * If `layout` is set to `"size"`, the position of the component will change instantly and * only its size will animate. * * @public */ layout?: boolean | "position" | "size"; /** * Enable shared layout transitions between different components with the same `layoutId`. * * When a component with a layoutId is removed from the React tree, and then * added elsewhere, it will visually animate from the previous component's bounding box * and its latest animated values. * * ```jsx * {items.map(item => ( * <motion.li layout> * {item.name} * {item.isSelected && <motion.div layoutId="underline" />} * </motion.li> * ))} * ``` * * If the previous component remains in the tree it will crossfade with the new component. * * @public */ layoutId?: string; /** * A callback that will fire when a layout animation on this component starts. * * @public */ onLayoutAnimationStart?(): void; /** * A callback that will fire when a layout animation on this component completes. * * @public */ onLayoutAnimationComplete?(): void; /** * @public */ layoutDependency?: any; /** * Wether a projection node should measure its scroll when it or its descendants update their layout. * * @public */ layoutScroll?: boolean; }