@spaced-out/ui-design-system
Version:
Sense UI components library
28 lines (21 loc) • 635 B
Flow
// @flow strict
import {useEffect, useState} from 'react';
const useMountTransition = (
isMounted: boolean,
unmountDelay: number,
): boolean => {
const [isTransitioning, setIsTransitioning] = useState(false);
useEffect(() => {
let timeoutId;
if (isMounted && !isTransitioning) {
setIsTransitioning(true);
} else if (!isMounted && isTransitioning) {
timeoutId = setTimeout(() => setIsTransitioning(false), unmountDelay);
}
return () => {
clearTimeout(timeoutId);
};
}, [unmountDelay, isMounted, isTransitioning]);
return isTransitioning;
};
export default useMountTransition;