use-debounce-loader
Version:
React hook that exposes the pending state of a debounced value
34 lines (33 loc) • 1.19 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.useDebounceLoader = exports.DEFAULT_DEBOUNCE_TIME_MS = void 0;
var react_1 = require("react");
var use_debounce_1 = require("use-debounce");
exports.DEFAULT_DEBOUNCE_TIME_MS = 1000;
function useDebounceLoader(_a) {
var _b = _a === void 0 ? {
debounceTime: exports.DEFAULT_DEBOUNCE_TIME_MS,
} : _a, debounceTime = _b.debounceTime, initialValue = _b.initialValue, onFinish = _b.onFinish;
var _c = react_1.useState(false), isLoading = _c[0], setIsLoading = _c[1];
var _d = react_1.useState(initialValue), value = _d[0], setValue = _d[1];
var onDebounceFinish = function () {
if (onFinish) {
onFinish(value);
}
setIsLoading(false);
};
var debounceOnChange = use_debounce_1.useDebouncedCallback(onDebounceFinish, debounceTime || 1000)[0];
var onChange = function (newValue) {
setIsLoading(true);
setValue(newValue);
debounceOnChange();
};
return [
onChange,
{
isLoading: isLoading,
value: value,
},
];
}
exports.useDebounceLoader = useDebounceLoader;