summaryrefslogtreecommitdiffstats
path: root/dist/fuji.min.js.map
blob: 86ddfe38ff73d8faa6cd2ca6316e5e16ff7af899 (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","secondQueryOfToc","forEach","querySelectorAll","parent","innerText","value","setAttribute","key","documentElement","scrollTop","domTheme","systemTheme","localStorage","setItem","commentArea","DISQUS","reset","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,wBAIDlB,SAASmB,cAAc,gCACvBnB,SAASmB,cAAc,+BAA+BC,iBAAiB,QAASC,aAMhFC,IAeAf,WAfAe,iBAAiBC,SAAQC,iBAAaC,sBAClC,EAAAH,iBAAUI,QACNC,iBAAMC,QAAa,SAAAD,EAASE,EAAAJ,GAC/B,KAAAE,EAAAD,WAHLC,EAAAC,aAAA,QAAA,oBAUH5B,SAEDmB,cAAA,wBAAAC,iBAAA,QAAA,WAHIpB,SAAS8B,gBAAgBC,UAAY,IAMrCxB,WACgB,SAAZK,cADJD,WAAA,gBAAA,CAGGC,WAAA,YACHD,WAAA,gBAAA,CAKJC,WAAA,YAGIZ,SAAIgC,cAAWhC,yBAA2BoB,iBAA1C,QAAA,WACA,IAAIa,EAAWxB,cADXuB,EAAWhC,SAASC,KAAKC,aAAa,cAGtC8B,EAAa7B,OAAQC,WAAA,gCAAAC,QAAA,OAAA,QAEPuB,SAAd5B,GAFJA,SAIWgC,KAAQJ,aAAc,aAAA,UAAA7B,EAAA,OAAA,SAC7BmC,aAAAC,QAAA,kBAAA,UAAApC,EAAA,OAAA,UACc6B,UAAL3B,GAETiC,SAAaC,KAAAA,aAAQ,aAAmBF,QAExCC,aAAAC,QAAA,kBAAA,QAAAF,EAAA,OAAA,UAGAC,SAAaC,KAAAA,aAAQ,aAAmBF,SAAxCC,aAAaC,QAAQ,kBAAmC,SAAhBF,EAA0B,OAAS,UAI/E3B,kBAAkBC,YAGlB,IAAI6B,EAAcpC,SAASmB,cAAc,iBAEtBnB,SAAAmB,cAAA,+BAAAjB,aAAA,WAEkC,eAA7CW,EAAAA,aAA+BM,iBAClCN,sBAAAb,SAAAmB,cAAA,yBACgD,WAA7CiB,EAAYlC,aAAa,iBACnBmC,OAAOC,MAAA,CACDC,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// remove empty ul in toc if article only have ## and ###\r\nvar secondQueryOfToc = document.querySelectorAll('.sidebar-toc ul ul');\r\nif (secondQueryOfToc.length > 0) {\r\n    secondQueryOfToc.forEach((value, key, parent) => {\r\n        if (value.innerText === '') {\r\n            value.setAttribute('style', 'display: none;');\r\n        }\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"]}