export function debounce(func: Function, timeout: number = 300) { let timer: ReturnType; return (...args: any[]) => { clearTimeout(timer); timer = setTimeout(() => { func.apply(this, args); }, timeout); }; }