mirror of
https://github.com/Tria-plc/emaui.git
synced 2026-08-27 20:10:58 +00:00
32 lines
927 B
JavaScript
32 lines
927 B
JavaScript
'use client';
|
|
'use strict';
|
|
|
|
var React = require('react');
|
|
|
|
function useDebouncedState(defaultValue, wait, options = { leading: false }) {
|
|
const [value, setValue] = React.useState(defaultValue);
|
|
const timeoutRef = React.useRef(null);
|
|
const leadingRef = React.useRef(true);
|
|
const clearTimeout = () => window.clearTimeout(timeoutRef.current);
|
|
React.useEffect(() => clearTimeout, []);
|
|
const debouncedSetValue = React.useCallback(
|
|
(newValue) => {
|
|
clearTimeout();
|
|
if (leadingRef.current && options.leading) {
|
|
setValue(newValue);
|
|
} else {
|
|
timeoutRef.current = window.setTimeout(() => {
|
|
leadingRef.current = true;
|
|
setValue(newValue);
|
|
}, wait);
|
|
}
|
|
leadingRef.current = false;
|
|
},
|
|
[options.leading]
|
|
);
|
|
return [value, debouncedSetValue];
|
|
}
|
|
|
|
exports.useDebouncedState = useDebouncedState;
|
|
//# sourceMappingURL=use-debounced-state.cjs.map
|