巴哈編輯器與留言區圖片網址格式化

貼上 Twitter 圖片連結時,改成巴哈能認出來的格式

// ==UserScript==
// @name         巴哈編輯器與留言區圖片網址格式化
// @namespace    https://home.gamer.com.tw/homeindex.php?owner=qwert535286
// @version      0.0.6
// @description  貼上 Twitter 圖片連結時,改成巴哈能認出來的格式
// @author       笑翠鳥
// @icon         https://www.google.com/s2/favicons?domain=gamer.com.tw
// @match        https://forum.gamer.com.tw/C.php?*
// @match        https://forum.gamer.com.tw/Co.php?*
// @match        https://forum.gamer.com.tw/post1.php?*
// @match        https://home.gamer.com.tw/artwork_new.php?*
// @match        https://home.gamer.com.tw/artwork_edit.php?*
// @license      MIT
// ==/UserScript==

(() => {
    function fmtImgUrl(url) {
        switch(true) {
            case /pbs\.twimg\.com\/media\/[a-zA-Z0-9\-\_]+\?format=(jpg|jpeg|png|webp)/.test(url):
                return url.split('&')[0].replace('?format=', '.').replace('webp', 'jpg')
        }
    }

    window.addEventListener('load', () => {
        const $iframeEditor = document.getElementById('editor').contentWindow.document.body

        $iframeEditor.addEventListener('paste', e => {
            const clipboardTxt = e.clipboardData.getData('text')
            const fmtUrl = fmtImgUrl(clipboardTxt)

            if (fmtUrl) {
                const $img = document.createElement('img')
                $img.src = fmtUrl
                $iframeEditor.querySelector(`[href="${clipboardTxt}"]`).replaceWith($img)
            }
        })

        document.querySelectorAll('textarea').forEach($area => {
            $area.addEventListener('paste', e => {
                const fmtUrl = fmtImgUrl(e.clipboardData.getData('text'))

                if (fmtUrl) {
                    e.preventDefault()
                    e.target.value = `${e.target.value.trim()} ${fmtUrl}`.trim()
                }
            })
        })
    })
})()