summaryrefslogtreecommitdiffstats
path: root/dist/fuji.min.js.map
blob: 444bf1116703944967a8bc02c33ed7ae768d85f2 (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","querySelector","addEventListener","loadComment","scrollTop","systemTheme","domTheme","setItem","localStorage","setAttribute","commentArea","reset","DISQUS","reload"],"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,wBAiBGN,IAAAA,WAbJZ,SAASmB,cAAc,gCACvBnB,SAASmB,cAAc,+BAA+BC,iBAAiB,QAASC,aAIpFrB,SAASmB,cAAc,wBAAwBC,iBAAiB,QAAS,WAKrEb,SAAAA,gBAAYe,UAAA,IAChBf,WACI,SAAAE,cAGGE,WAAA,gBAAA,CACHJ,WAAaI,YAKjBA,WAAA,gBAAA,CAJQC,WAAY,YAQhBZ,SAAIuB,cAAcpB,yBAAkBiB,iBAAA,QAAgCf,WAFpE,IAAIN,EAAWU,cAIXe,EAAaxB,SAAQC,KAAAC,aAAA,cACrBqB,EAAApB,OAAAC,WAAA,gCAAAC,QAAA,OAAA,QAEaoB,SAAbC,GAEA1B,SAAAC,KAAA0B,aAAA,aAAA,UAAA5B,EAAA,OAAA,SACAC,aAAc2B,QAAAA,kBACd,UADyC5B,EACzC,OAAA,UAHoB,UAAbyB,GAAJxB,SAKAC,KAAA0B,aAAA,aAAA,QAEH3B,aAAc2B,QAAAA,kBACd,QADyCJ,EACzC,OAAA,UAIJvB,SAAAC,KAAA0B,aAAA,aAAA,SAHID,aAAaD,QAAQ,kBAAmC,SAAhBF,EAA0B,OAAS,UAO/EjB,kBAAkBN,YAEd,IAAA4B,EAAA5B,SAAAmB,cAAA,iBACInB,GAEIa,SAAAA,cAAsBb,+BAAuBE,aAA7C,WACH,eAAA0B,EAAA1B,aAAA,iBADGW,sBAAsBb,SAASmB,cAAc,yBAGhC,WAANU,EAAM3B,aAAA,iBACH4B,OAAED,MAAA,CADZE,QAAA","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// load comment button only when comment area exist\r\nif (document.querySelector('span.post-comment-notloaded')) {\r\n    document.querySelector('span.post-comment-notloaded').addEventListener('click', loadComment);\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// 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    // if this page has comment area\r\n    let commentArea = document.querySelector('.post-comment');\r\n    if (commentArea) {\r\n        // if comment area loaded\r\n        if (document.querySelector('span.post-comment-notloaded').getAttribute('style')) {\r\n            if (commentArea.getAttribute('data-comment') === 'utterances') {\r\n                updateUtterancesTheme(document.querySelector('.post-comment iframe'));\r\n            }\r\n            if (commentArea.getAttribute('data-comment') === 'disqus') {\r\n                DISQUS.reset({\r\n                    reload: true,\r\n                });\r\n            }\r\n        }\r\n    }\r\n});\r\n"]}