import { useEffect, useRef, useState } from 'preact/hooks' const useDebounce = (value: T, delay = 20): T => { const [debouncedValue, setDebouncedValue] = useState(value) const timeoutRef = useRef | null>(null) useEffect(() => { timeoutRef.current = setTimeout(() => setDebouncedValue(value), delay) return () => { if (timeoutRef.current) clearTimeout(timeoutRef.current) } }, [value, delay]) return debouncedValue } export default useDebounce