import { useEffect, useRef } from 'preact/hooks' export default function useTimeout(callback: Function, delay?: number) { const timeoutRef = useRef | null>(null) const savedCallback = useRef(callback) useEffect(() => { savedCallback.current = callback }, [callback]) useEffect(() => { if (typeof delay !== 'number') return () => undefined timeoutRef.current = setTimeout(() => savedCallback.current(), delay) return () => { if (timeoutRef.current) clearTimeout(timeoutRef.current) } }, [delay]) return timeoutRef }