mirror of
https://github.com/Tria-plc/emaui.git
synced 2026-08-27 15:30:57 +00:00
35 lines
1003 B
JavaScript
35 lines
1003 B
JavaScript
'use client';
|
|
'use strict';
|
|
|
|
var React = require('react');
|
|
|
|
function useDebouncedValue(value, wait, options = { leading: false }) {
|
|
const [_value, setValue] = React.useState(value);
|
|
const mountedRef = React.useRef(false);
|
|
const timeoutRef = React.useRef(null);
|
|
const cooldownRef = React.useRef(false);
|
|
const cancel = React.useCallback(() => window.clearTimeout(timeoutRef.current), []);
|
|
React.useEffect(() => {
|
|
if (mountedRef.current) {
|
|
if (!cooldownRef.current && options.leading) {
|
|
cooldownRef.current = true;
|
|
setValue(value);
|
|
} else {
|
|
cancel();
|
|
timeoutRef.current = window.setTimeout(() => {
|
|
cooldownRef.current = false;
|
|
setValue(value);
|
|
}, wait);
|
|
}
|
|
}
|
|
}, [value, options.leading, wait]);
|
|
React.useEffect(() => {
|
|
mountedRef.current = true;
|
|
return cancel;
|
|
}, []);
|
|
return [_value, cancel];
|
|
}
|
|
|
|
exports.useDebouncedValue = useDebouncedValue;
|
|
//# sourceMappingURL=use-debounced-value.cjs.map
|