// eslint-disable-next-line @typescript-eslint/no-explicit-any export function debounce(fn: (...args: any[]) => void, delay = 500) { let timer: ReturnType; // eslint-disable-next-line @typescript-eslint/no-explicit-any const result = function (...args: any[]) { clearTimeout(timer); timer = setTimeout(() => fn(...args), delay); }; result.cancel = function () { clearTimeout(timer); }; return result; }