1 export function debounce<T extends any[], R>(
6 let timeout: NodeJS.Timeout | null;
9 const args = arguments;
10 const callNow = immediate && !timeout;
12 clearTimeout(timeout ?? undefined);
14 timeout = setTimeout(function () {
18 func.apply(this, args);
22 if (callNow) func.apply(this, args);