All files / views/webviews/hooks use-debounced-value.ts

0% Statements 0/7
0% Branches 0/1
0% Functions 0/4
0% Lines 0/5

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23                                             
import { useEffect, useState } from 'react';
 
/**
 * Returns the value delayed until it has stopped changing for `delayMs`.
 *
 * Used to keep host round-trips off the keystroke path: match-count previews
 * are computed by walking every workspace file, so requesting one per
 * keystroke would flood the extension host while the user is still typing.
 * @param value The live value.
 * @param delayMs The trailing delay in milliseconds.
 */
export function useDebouncedValue<T>(value: T, delayMs = 250): T {
	const [debounced, setDebounced] = useState(value);
 
	useEffect(() => {
		const timer = setTimeout(() => setDebounced(value), delayMs);
 
		return () => clearTimeout(timer);
	}, [value, delayMs]);
 
	return debounced;
}