
// 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)
    }
}
