import { useEffect, useState } from '@wordpress/element' function useDelayUnmount(isMounted: boolean, delayTime: number) { const [shouldRender, setShouldRender] = useState(false) useEffect(() => { let timeoutId: ReturnType if (isMounted && !shouldRender) { setShouldRender(true) } else if (!isMounted && shouldRender) { timeoutId = setTimeout(() => setShouldRender(false), delayTime) } return () => clearTimeout(timeoutId) }, [isMounted, delayTime, shouldRender]) return shouldRender } export default useDelayUnmount