DEV Community

Discussion on: The Power of Proxy Pattern in JavaScript

Collapse
 
nijojoseph profile image
nikijoe

for clipboard this is working

    const str = "Text"

    const withClipboardPolyfill = (obj, prop, cond, copyFnIfCond)=>{
        const copyToClipboard = () => {
            if(cond()){
                copyFnIfCond()
            } else {
                const textarea = document.createElement('textarea')
                textarea.value = str
                textarea.style.visibility = 'hidden'
                document.body.appendChild(textarea)
                textarea.select()
                document.execCommand('copy')
                document.body.removeChild(textarea)
            }
        }
        obj[prop] = copyToClipboard
        return obj
    }

    const api = (function() {
        const o = {
            copyToClipboard(){
                return navigator.clipboard.writeText(str)
            }
        }
        return o
    })()

    let copyBtn = document.createElement('button')
    copyBtn.id = 'copy-to-clipboard'
    document.body.appendChild(copyBtn)
    copyBtn.onclick = api.copyToClipboard()

    copyBtn = withClipboardPolyfill(
        copyBtn, 'onclick', ()=> 'clipboard' in navigator,
        api.copyToClipboard
    )

    copyBtn.click()
Enter fullscreen mode Exit fullscreen mode

The example shown here, I am not sure.