// I know; bite me. Date.prototype.toDisplay = function() { let month = `${this.getMonth() + 1}` if ( month.length < 2 ) month = `0${month}` let date = `${this.getDate()}` if ( date.length < 2 ) date = `0${date}` return `${this.getFullYear()}-${month}-${date}` } Date.prototype.toInputString = function() { let month = `${this.getMonth() + 1}` if ( month.length < 2 ) month = `0${month}` let date = `${this.getDate()}` if ( date.length < 2 ) date = `0${date}` let hours = `${this.getHours()}` if ( hours.length < 2 ) hours = `0${date}` let minutes = `${this.getMinutes()}` if ( minutes.length < 2 ) minutes = `0${date}` return `${this.getFullYear()}-${month}-${date}T${hours}:${minutes}` } export function uuid() { return ([1e7]+-1e3+-4e3+-8e3+-1e11).replace(/[018]/g, c => (c ^ crypto.getRandomValues(new Uint8Array(1))[0] & 15 >> c / 4).toString(16) ) } export function debounce(handler = () => {}, delay = 500) { let timeout = null return (...args) => { clearTimeout(timeout) timeout = setTimeout(() => { handler(...args) }, delay) } }