diff options
Diffstat (limited to 'static/assets/js')
-rw-r--r-- | static/assets/js/fuji.js | 127 | ||||
-rw-r--r-- | static/assets/js/fuji.min.js | 2 | ||||
-rw-r--r-- | static/assets/js/fuji.min.js.map | 1 |
3 files changed, 3 insertions, 127 deletions
diff --git a/static/assets/js/fuji.js b/static/assets/js/fuji.js deleted file mode 100644 index 0a81db2..0000000 --- a/static/assets/js/fuji.js +++ /dev/null @@ -1,127 +0,0 @@ -'use strict'; - -// toggle theme -function toggleTheme() { - $('body').attr('data-theme', (index, attr) => { - if (attr === 'light') { - localStorage.setItem('fuji_theme', 'dark'); - return 'dark'; - } else { - localStorage.setItem('fuji_theme', 'light'); - return 'light'; - } - }); -} - -// update medium-zoom theme -// @params targetTheme, mediumInst -function updateMeidumTheme(targetTheme, mediumInst) { - if (targetTheme && mediumInst) { - mediumInst.detach(); - if (targetTheme === 'dark') { - mediumInst = mediumZoom('.img-zoomable', { - background: '#2f3136', - }); - } else { - mediumInst = mediumZoom('.img-zoomable', { - background: '#fffffd', - }); - } - } -} - -// update utterances theme -// @params targetTheme, utterancesFrame -function updateUtterancesTheme(targetTheme, utterancesFrame) { - if (targetTheme && utterancesFrame) { - if (targetTheme === 'dark') { - utterancesFrame.contentWindow.postMessage( - { - type: 'set-theme', - theme: 'photon-dark', - }, - 'https://utteranc.es' - ); - } else { - utterancesFrame.contentWindow.postMessage( - { - type: 'set-theme', - theme: 'github-light', - }, - 'https://utteranc.es' - ); - } - } -} - -// to-top button -$('.btn .btn-scroll-top').on('click', () => { - $('html, body').animate({ - scrollTop: 0, - }); -}); - -// toc anchors -$('.sidebar-toc a').on('click', (event) => { - $('html, body').animate({ - scrollTop: $($(event.currentTarget).attr('href')).offset().top, - }); -}); - -// remove empty ul in toc if article only have ## and ### -if ($('.sidebar-toc ul ul').length > 0 && $('.sidebar-toc ul ul li').text() === '') { - $('.sidebar-toc ul ul').hide(); -} - -// init medium-zoom -var mediumInst; // medium-zoom instance -if ($('body').attr('data-theme') === 'dark') { - mediumInst = mediumZoom('.img-zoomable', { - background: '#2f3136', - }); -} else { - mediumInst = mediumZoom('.img-zoomable', { - background: '#fffffd', - }); -} - -// if in post page and using utterances -// add utterances comment loading indicator -if ($('.post-loading').length >= 1) { - var commentStatus; // utterence status - var commentLoadingTime = 0; // loading time passed - var commentCheckInterval = self.setInterval(checkUtterances, 500); - - function checkUtterances() { - commentStatus = $('.post-comment .utterances').attr('style'); - if (commentStatus) { - clearInterval(commentCheckInterval); - updateUtterancesTheme($('body').attr('data-theme'), $('.post-comment iframe')[0]); - $('.post-loading').hide(); - } else { - if (++commentLoadingTime > 20) { - clearInterval(commentCheckInterval); - $('.post-comment').hide(); - $('.post-loading i').attr('class', 'far fa-times-circle'); - } - } - } -} - -// init theme switch button -$('.btn .btn-toggle-mode').on('click', () => { - // toggle theme - toggleTheme(); - // update medium background - updateMeidumTheme($('body').attr('data-theme'), mediumInst); - // switch comment area theme - // only works after comment area are initialized - if ($('.post-loading').length >= 1 && commentStatus) { - updateUtterancesTheme($('body').attr('data-theme'), $('.post-comment iframe')[0]); - } - if ($('#disqus_thread').length >= 1 && typeof DISQUS !== 'undefined') { - DISQUS.reset({ - reload: true, - }); - } -}); diff --git a/static/assets/js/fuji.min.js b/static/assets/js/fuji.min.js new file mode 100644 index 0000000..474d550 --- /dev/null +++ b/static/assets/js/fuji.min.js @@ -0,0 +1,2 @@ +"use strict";function getNowTheme(){var e=document.body.getAttribute("data-theme");return"auto"===e?window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light":"dark"===e?"dark":"light"}function updateMeidumTheme(e){var t=getNowTheme();e&&(e.detach(),e="dark"===t?mediumZoom(".img-zoomable",{background:"#2f3136"}):mediumZoom(".img-zoomable",{background:"#fffffd"}))}function updateUtterancesTheme(e){var t=getNowTheme();e&&("dark"===t?e.contentWindow.postMessage({type:"set-theme",theme:"photon-dark"},"https://utteranc.es"):e.contentWindow.postMessage({type:"set-theme",theme:"github-light"},"https://utteranc.es"))}var mediumInst,checkUtterances,commentStatus,commentLoadingTime,commentCheckInterval;0<document.querySelectorAll(".sidebar-toc ul ul").length&&document.querySelectorAll(".sidebar-toc ul ul").forEach(function(e,t,o){e.setAttribute("style","display: none;")}),document.querySelector(".btn .btn-scroll-top").addEventListener("click",function(){document.documentElement.scrollTop=0}),mediumInst="dark"===getNowTheme()?mediumZoom(".img-zoomable",{background:"#2f3136"}):mediumZoom(".img-zoomable",{background:"#fffffd"}),document.querySelector(".post-loading")&&(checkUtterances=function(){document.querySelector(".post-comment .utterances")&&(commentStatus=document.querySelector(".post-comment .utterances").getAttribute("style")),commentStatus?(clearInterval(commentCheckInterval),updateUtterancesTheme(document.querySelector(".post-comment iframe")),document.querySelector(".post-loading").setAttribute("style","display: none;")):20<++commentLoadingTime&&(clearInterval(commentCheckInterval),document.querySelector(".post-comment").setAttribute("style","display: none;"),document.querySelector(".post-loading i").className="far fa-times-circle")},commentLoadingTime=0,commentCheckInterval=self.setInterval(checkUtterances,500)),document.querySelector(".btn .btn-toggle-mode").addEventListener("click",function(){var e=getNowTheme(),t=document.body.getAttribute("data-theme"),o=window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light";"auto"===t?(document.body.setAttribute("data-theme","light"===e?"dark":"light"),localStorage.setItem("fuji_data-theme","light"===e?"dark":"light")):"light"===t?(document.body.setAttribute("data-theme","dark"),localStorage.setItem("fuji_data-theme","dark"==o?"auto":"dark")):(document.body.setAttribute("data-theme","light"),localStorage.setItem("fuji_data-theme","light"==o?"auto":"light")),updateMeidumTheme(mediumInst),document.querySelector(".post-loading")&&commentStatus&&updateUtterancesTheme(document.querySelector(".post-comment iframe")),document.querySelector("#disqus_thread")&&"undefined"!=typeof DISQUS&&DISQUS.reset({reload:!0})}); +//# sourceMappingURL=fuji.min.js.map diff --git a/static/assets/js/fuji.min.js.map b/static/assets/js/fuji.min.js.map new file mode 100644 index 0000000..867d547 --- /dev/null +++ b/static/assets/js/fuji.min.js.map @@ -0,0 +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"]}
\ No newline at end of file |