UNPKG

webdev-power-kit

Version:

A powerful toolkit that simplifies access to browser features like clipboard, notifications, battery, vibration, and more — perfect for modern web developers.

32 lines (31 loc) 1.04 kB
/** * @fileoverview Debounce utility — delays function execution until after a pause. * Useful for input events, search bars, resize listeners, etc. */ /** * Creates a debounced version of the given function. * @param fn - The function to debounce * @param delay - Delay in milliseconds * @returns A debounced function */ export function debounce(fn, delay) { if (typeof fn !== 'function') { throw new TypeError('[webdev-power-kit][debounce] First argument must be a function.'); } if (typeof delay !== 'number' || delay < 0) { throw new TypeError('[webdev-power-kit][debounce] Delay must be a non-negative number.'); } let timer = null; return function debouncedFn(...args) { if (timer) clearTimeout(timer); timer = setTimeout(() => { try { fn(...args); } catch (err) { console.error('[webdev-power-kit][debounce] Function threw an error:', err); } }, delay); }; }