@pinuts/bsr-uikit-relaunch
Version:
BSR UI-KIT Relaunch
25 lines (24 loc) • 1.02 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _react = require("react");
// verzögert eine Funktion für debounceTime Millisekunden.
// Falls die Funktion in der Zwischenzeit neu getriggert wurde, wird der veraltete Aufruf gecancelled
const useDebounceFunc = function (func) {
let debounceTime = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 100;
const timeoutRef = (0, _react.useRef)();
const debouncedFunc = (0, _react.useCallback)(function () {
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
args[_key] = arguments[_key];
}
if (timeoutRef.current) {
window.clearTimeout(timeoutRef.current);
}
timeoutRef.current = setTimeout(() => func(...args), debounceTime);
}, [func, debounceTime]);
(0, _react.useEffect)(() => () => window.clearTimeout(timeoutRef.current), []);
return debouncedFunc;
};
var _default = exports.default = useDebounceFunc;