UNPKG

@spaced-out/ui-design-system

Version:
28 lines (21 loc) 635 B
// @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;