UNPKG

@helpwave/hightide

Version:

helpwave's component and theming library

43 lines 904 B
// src/hooks/useDelay.ts import { useEffect, useState } from "react"; var defaultOptions = { delay: 3e3, disabled: false }; function useDelay(options) { const [timer, setTimer] = useState(void 0); const { delay, disabled } = { ...defaultOptions, ...options }; const clearTimer = () => { clearTimeout(timer); setTimer(void 0); }; const restartTimer = (onDelayFinish) => { if (disabled) { return; } clearTimeout(timer); setTimer(setTimeout(() => { onDelayFinish(); setTimer(void 0); }, delay)); }; useEffect(() => { return () => { clearTimeout(timer); }; }, [timer]); useEffect(() => { if (disabled) { clearTimeout(timer); setTimer(void 0); } }, [disabled, timer]); return { restartTimer, clearTimer, hasActiveTimer: !!timer }; } export { useDelay }; //# sourceMappingURL=useDelay.mjs.map