summaryrefslogtreecommitdiffstats
path: root/static/assets/js/fuji.min.js.map
blob: b854d251da4bf79d7618ffa9d1cf779798cb2211 (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","querySelectorAll","forEach","value","parent","length","key","setAttribute","addEventListener","documentElement","scrollTop","querySelector","domTheme","localStorage","setItem","systemTheme","commentArea","reload","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,wBAqBwC,IAAzCX,WAbAP,SAAAA,cAASmB,+BAAuCC,iBAASC,QAAYC,aAKzE,EAAAtB,SAAAmB,iBAAA,sBAAAI,QALIvB,SAASmB,iBAAiB,sBAAsBC,QAAQ,SAACC,EAAOG,EAAKF,GACjED,EAAMI,aAAa,QAAS,oBAUpCzB,SAAIO,cAAY,wBAAAmB,iBAAA,QAAA,WAJZ1B,SAAS2B,gBAAgBC,UAAY,IAUrCrB,WADG,SAJPE,cAKiBE,WAAW,gBAAiB,CACrCC,WAAY,YADHD,WAAW,gBAAiB,CACrCC,WAAY,YAKpBZ,SAAS6B,cAAc,yBAAyBH,iBAAiB,QAAS,WAKtE,IAAII,EAAarB,cACbqB,EAAA9B,SAAAC,KAAAC,aAAA,cACAF,EAAcyB,OAAAA,WAAa,gCAAqCpB,QAAS,OAAzE,QAEe,SAJnByB,GAMI9B,SAAAC,KAAcwB,aAAa,aAC3B,UADyC1B,EACzC,OAAA,SAJAgC,aAAaC,QAAQ,kBAAgC,UAAbjC,EAAuB,OAAS,UAKnD,UAArBgC,GAEA/B,SAAAC,KAAAwB,aAAA,aAAA,QAFAM,aAAaC,QAAQ,kBAAmC,QAAhBC,EAAyB,OAAS,UAG1EjC,SAASC,KAAKwB,aAAa,aAAc,SAM7CnB,aAAkBC,QAAAA,kBAClB,SAAA0B,EAAA,OAAA,UAGA3B,kBAAoBN,YAEhB,IAAIkC,EAAYhC,SAAAA,cAAa,iBACzBW,SAAsBb,cAAS6B,+BAA/B3B,aAAA,WAD6C,eAA7CgC,EAAYhC,aAAa,iBAGzBgC,sBAAyBlC,SAAA6B,cAAoB,yBAEjC,WAARM,EAAQjC,aAAA,iBADZkC,OAAAC,MAAA,CAGHF,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\r\ndocument.querySelector('span.post-comment-notloaded').addEventListener('click', loadComment);\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// 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    let commentArea = document.querySelector('.post-comment');\r\n    let commentStatus = document.querySelector('span.post-comment-notloaded').getAttribute('style');\r\n    if (commentStatus) {\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"]}