UNPKG

next-loaders

Version:
24 lines (23 loc) 868 B
/* eslint-disable @typescript-eslint/no-explicit-any */ import { useCallback, useEffect, useRef } from "react"; export default function useDebounce(callback, delay) { var timeoutRef = useRef(); var callbackRef = useRef(callback); useEffect(function () { callbackRef.current = callback; }, [callback]); return useCallback(function () { var args = []; for (var _i = 0; _i < arguments.length; _i++) { args[_i] = arguments[_i]; } timeoutRef.current && clearTimeout(timeoutRef.current); if (delay <= 0 || Number.isNaN(delay) || !Number.isFinite(delay)) { callbackRef.current.apply(callbackRef, args); return; } timeoutRef.current = setTimeout(function () { callbackRef.current.apply(callbackRef, args); }, delay); }, [delay]); }