summaryrefslogtreecommitdiffstats
path: root/dist/fuji.min.js.map
blob: 867d54738c1e964cdc89e9c8e704a318a67d0068 (plain) (blame)
1
{"version":3,"sources":["fuji.js"],"names":["nowTheme","document","body","getAttribute","window","matchMedia","matches","updateMeidumTheme","mediumInst","targetTheme","getNowTheme","detach","mediumZoom","background","updateUtterancesTheme","utterancesFrame","contentWindow","postMessage","type","theme","commentStatus","commentLoadingTime","querySelectorAll","length","forEach","value","key","parent","setAttribute","querySelector","addEventListener","scrollTop","clearInterval","className","commentCheckInterval","self","setInterval","checkUtterances","domTheme","systemTheme","localStorage","setItem","DISQUS","reset"],"mappings":"aAII,SAAIA,cAAJ,IAAIA,EAAWC,SAASC,KAAKC,aAAa,cAC1C,MAAiB,SAAbH,EACOI,OAAOC,WAAW,gCAAgCC,QAAU,OAAS,QAExD,SAAbN,EAAsB,OAAS,QAK9C,SAASO,kBAAkBC,GACvB,IAAIC,EAAcC,cACdF,IAAAA,EAAYG,SAGRH,EAFJ,SAAAA,EAEiBI,WAAW,gBAAiB,CADzCH,WAAgB,YAChBG,WAAA,gBAAA,CAGGC,WAAA,aASf,SAASC,sBAAsBC,GAC3B,IAAIN,EAAcC,cADtBK,IACsBL,SAAdD,EAGIM,EAAgBC,cAAcC,YAFlCF,CACeG,KAAK,YAChBH,MAAgBC,eAGD,uBAKfD,EAAgBC,cAAcC,YAEhB,CACCC,KAAA,YAEXC,MAAA,gBAGX,wBAmBGN,IAAAA,WAqBIC,gBAHHM,cANDC,mBAOID,qBAjCR,EAAAnB,SAAAqB,iBAAA,sBAAAC,QAKJtB,SAAAqB,iBAAA,sBAAAE,QAAA,SAAAC,EAAAC,EAAAC,GAJQF,EAAMG,aAAa,QAAS,oBAKpC3B,SAAS4B,cAAc,wBAAwBC,iBAAiB,QAAS,WAKrEtB,SAAAA,gBAAYuB,UAAA,IAChBvB,WACI,SAAAE,cAGGE,WAAA,gBAAA,CACHJ,WAAaI,YAKjBA,WAAA,gBAAA,CACAC,WAAA,YAQYO,SAAAA,cAAgBnB,mBAIhBa,gBAAAA,WACAb,SAAS4B,cAAc,+BACpBT,cAAAnB,SAAA4B,cAAA,6BAAA1B,aAAA,UAEC6B,eACA/B,cAAS4B,sBACT5B,sBAAuBA,SAAA4B,cAAmBI,yBAC7ChC,SAAA4B,cAAA,iBAAAD,aAAA,QAAA,mBAlBgC,KAAAP,qBAe7BW,cAAcE,sBAdtBd,SAAeS,cAAA,iBAAAD,aAAA,QAAA,kBAgBP3B,SAAS4B,cAAc,mBAAmBI,UAAY,wBAf9DZ,mBAAqB,EAOjBD,qBAAee,KAAAC,YAAAC,gBAAA,MAe3BpC,SAAS4B,cAAc,yBAAyBC,iBAAiB,QAAS,WACtE,IAAI9B,EAAWU,cACX4B,EAAWrC,SAASC,KAAKC,aAAa,cACtCoC,EAAcnC,OAAOC,WAAW,gCAAgCC,QAAU,OAAS,QAEtE,SAAbgC,GAEArC,SAAAC,KAAc0B,aAAa,aAA2B,UAAb5B,EAAuB,OAAS,SACzEwC,aAAaC,QAAQ,kBAAgC,UAAbzC,EAAuB,OAAS,UACpD,UAAbsC,GAEPrC,SAAAC,KAAc0B,aAAa,aAAc,QAEzCY,aAAaC,QAAQ,kBAAmC,QAAhBF,EAAyB,OAAS,UAG1EtC,SAAAC,KAAc0B,aAAa,aAAc,SAEzCY,aAAaC,QAAQ,kBAAmC,SAAhBF,EAA0B,OAAS,UAI/EhC,kBAAkBC,YAGdP,SAAS4B,cAAc,kBAAoBT,eAC3CN,sBAAsBb,SAAS4B,cAAc,yBAE7C5B,SAAS4B,cAAc,mBAAuC,oBAAXa,QAAnDzC,OAAS4B,MAAAA,CACFc,QAAM","file":"fuji.min.js","sourcesContent":["'use strict';\r\n\r\n// get current theme\r\nfunction getNowTheme() {\r\n    let nowTheme = document.body.getAttribute('data-theme');\r\n    if (nowTheme === 'auto') {\r\n        return window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light';\r\n    } else {\r\n        return nowTheme === 'dark' ? 'dark' : 'light';\r\n    }\r\n}\r\n\r\n// update medium-zoom theme\r\nfunction updateMeidumTheme(mediumInst) {\r\n    let targetTheme = getNowTheme();\r\n    if (mediumInst) {\r\n        mediumInst.detach();\r\n        if (targetTheme === 'dark') {\r\n            mediumInst = mediumZoom('.img-zoomable', {\r\n                background: '#2f3136',\r\n            });\r\n        } else {\r\n            mediumInst = mediumZoom('.img-zoomable', {\r\n                background: '#fffffd',\r\n            });\r\n        }\r\n    }\r\n}\r\n\r\n// update utterances theme\r\nfunction updateUtterancesTheme(utterancesFrame) {\r\n    let targetTheme = getNowTheme();\r\n    if (utterancesFrame) {\r\n        if (targetTheme === 'dark') {\r\n            utterancesFrame.contentWindow.postMessage(\r\n                {\r\n                    type: 'set-theme',\r\n                    theme: 'photon-dark',\r\n                },\r\n                'https://utteranc.es'\r\n            );\r\n        } else {\r\n            utterancesFrame.contentWindow.postMessage(\r\n                {\r\n                    type: 'set-theme',\r\n                    theme: 'github-light',\r\n                },\r\n                'https://utteranc.es'\r\n            );\r\n        }\r\n    }\r\n}\r\n\r\n// remove empty ul in toc if article only have ## and ###\r\nif (document.querySelectorAll('.sidebar-toc ul ul').length > 0) {\r\n    document.querySelectorAll('.sidebar-toc ul ul').forEach((value, key, parent) => {\r\n        value.setAttribute('style', 'display: none;');\r\n    });\r\n}\r\n\r\n// to-top button\r\ndocument.querySelector('.btn .btn-scroll-top').addEventListener('click', () => {\r\n    document.documentElement.scrollTop = 0;\r\n});\r\n\r\n// init medium-zoom\r\nvar mediumInst; // medium-zoom instance\r\nif (getNowTheme() === 'dark') {\r\n    mediumInst = mediumZoom('.img-zoomable', {\r\n        background: '#2f3136',\r\n    });\r\n} else {\r\n    mediumInst = mediumZoom('.img-zoomable', {\r\n        background: '#fffffd',\r\n    });\r\n}\r\n\r\n// if in post page and using utterances\r\n// add utterances comment loading indicator\r\nif (document.querySelector('.post-loading')) {\r\n    var commentStatus; // utterence status\r\n    var commentLoadingTime = 0; // loading time passed\r\n    var commentCheckInterval = self.setInterval(checkUtterances, 500);\r\n\r\n    function checkUtterances() {\r\n        if (document.querySelector('.post-comment .utterances')) {\r\n            commentStatus = document.querySelector('.post-comment .utterances').getAttribute('style');\r\n        }\r\n        if (commentStatus) {\r\n            clearInterval(commentCheckInterval);\r\n            updateUtterancesTheme(document.querySelector('.post-comment iframe'));\r\n            document.querySelector('.post-loading').setAttribute('style', 'display: none;');\r\n        } else {\r\n            if (++commentLoadingTime > 20) {\r\n                clearInterval(commentCheckInterval);\r\n                document.querySelector('.post-comment').setAttribute('style', 'display: none;');\r\n                document.querySelector('.post-loading i').className = 'far fa-times-circle';\r\n            }\r\n        }\r\n    }\r\n}\r\n\r\n// theme switch button\r\ndocument.querySelector('.btn .btn-toggle-mode').addEventListener('click', () => {\r\n    let nowTheme = getNowTheme();\r\n    let domTheme = document.body.getAttribute('data-theme');\r\n    let systemTheme = window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light';\r\n\r\n    if (domTheme === 'auto') {\r\n        // if now in auto mode, switch to user mode\r\n        document.body.setAttribute('data-theme', nowTheme === 'light' ? 'dark' : 'light');\r\n        localStorage.setItem('fuji_data-theme', nowTheme === 'light' ? 'dark' : 'light');\r\n    } else if (domTheme === 'light') {\r\n        // if now in user mode and light mode\r\n        document.body.setAttribute('data-theme', 'dark');\r\n        // if the theme want to switch is system theme\r\n        localStorage.setItem('fuji_data-theme', systemTheme === 'dark' ? 'auto' : 'dark');\r\n    } else {\r\n        // if now in user mode and dark mode\r\n        document.body.setAttribute('data-theme', 'light');\r\n        // if the theme want to switch is system theme\r\n        localStorage.setItem('fuji_data-theme', systemTheme === 'light' ? 'auto' : 'light');\r\n    }\r\n\r\n    // update medium background\r\n    updateMeidumTheme(mediumInst);\r\n    // switch comment area theme\r\n    // only works after comment area are initialized\r\n    if (document.querySelector('.post-loading') && commentStatus) {\r\n        updateUtterancesTheme(document.querySelector('.post-comment iframe'));\r\n    }\r\n    if (document.querySelector('#disqus_thread') && typeof DISQUS !== 'undefined') {\r\n        DISQUS.reset({\r\n            reload: true,\r\n        });\r\n    }\r\n});\r\n"]}