@gfazioli/mantine-text-animate
Version:
The TextAnimate component allows you to animate text with various effects.
37 lines (34 loc) • 1.01 kB
JavaScript
'use client';
import { useState, useRef, useCallback } from 'react';
function useTextAnimate(initialDirection = void 0) {
const [animate, setAnimate] = useState(initialDirection);
const [isAnimating, setIsAnimating] = useState(false);
const [key, setKey] = useState(0);
const animatingRef = useRef(false);
const replay = useCallback(() => {
setKey((prev) => prev + 1);
animatingRef.current = true;
setIsAnimating(true);
}, []);
const handleSetAnimate = useCallback((direction) => {
setAnimate(direction);
if (direction === "in" || direction === "out" || direction === "loop") {
animatingRef.current = true;
setIsAnimating(true);
}
}, []);
const onAnimationComplete = useCallback(() => {
animatingRef.current = false;
setIsAnimating(false);
}, []);
return {
animate,
setAnimate: handleSetAnimate,
replay,
isAnimating,
key,
onAnimationComplete
};
}
export { useTextAnimate };
//# sourceMappingURL=use-text-animate.mjs.map