class UtilityService { _debounce_timeouts = {} uuid() { return ([1e7]+-1e3+-4e3+-8e3+-1e11).replace(/[018]/g, c => (c ^ crypto.getRandomValues(new Uint8Array(1))[0] & 15 >> c / 4).toString(16) ) } debounce(handler = () => {}, delay = 500) { let timeout = null return (...args) => { clearTimeout(timeout) timeout = setTimeout(() => { handler(...args) }, delay) } } } const utility = new UtilityService() export { utility }