react-terminal-viewer
Version:
<h1 align="center"> react-terminal-viewer </h1>
26 lines (25 loc) • 760 B
JavaScript
import { useRef, useEffect, useCallback } from 'react';
// eslint-disable-next-line @typescript-eslint/ban-types
function useDebounceInput(cb) {
var delay = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 800;
var cbRef = useRef(cb);
var timerRef = useRef();
useEffect(function () {
cbRef.current = cb;
});
useEffect(function () {
return function () {
clearTimeout(timerRef.current);
};
}, []);
return useCallback(
// eslint-disable-next-line @typescript-eslint/no-explicit-any
function (e) {
var value = e.target.value;
clearTimeout(timerRef.current);
timerRef.current = setTimeout(function () {
cbRef.current(value);
}, delay);
}, [delay]);
}
export default useDebounceInput;