Source: fontScale.mjs

/** @module fontScale */

/**
 * Scale an element's font size to fit inside the given width.
 * @param {HTMLElement} element 
 * @param {Int} width defaults to `window.innerWidth`
 * @returns {Promise<Int>} resulting font size in px
 */
export function fontScale(element,width=innerWidth){
    return new Promise(function(resolve){
        let fontSize=0
        element.style.fontSize=fontSize+'px'
        width-=element.clientWidth
        function down(){
            if(element.clientWidth>=width){
                fontSize-=1
                element.style.fontSize=fontSize+'px'
                requestAnimationFrame(down)
            }else{
                resolve(fontSize)
            }
        }
        function up(){
            if(element.clientWidth<width){
                fontSize+=10
                element.style.fontSize=fontSize+'px'
                requestAnimationFrame(up)
            }else{
                requestAnimationFrame(down)
            }
        }
        requestAnimationFrame(up)
    })
}

export default fontScale