summaryrefslogtreecommitdiffstats
path: root/static/assets/js/fuji.min.js
diff options
context:
space:
mode:
authoramzrk22020-06-16 15:39:13 +0800
committeramzrk22020-06-16 15:39:13 +0800
commitf44c0d05b1a5308afce8c61e9aef7658b72b42ed (patch)
tree77d1667837fa8291c49809b30fe67530e74e06bc /static/assets/js/fuji.min.js
parentc42924047c6f654c4723746790e041f8907ed378 (diff)
downloadhugo-theme-fuji-f44c0d05b1a5308afce8c61e9aef7658b72b42ed.tar.gz
hugo-theme-fuji-f44c0d05b1a5308afce8c61e9aef7658b72b42ed.tar.bz2
hugo-theme-fuji-f44c0d05b1a5308afce8c61e9aef7658b72b42ed.zip
Update cfga
Diffstat (limited to 'static/assets/js/fuji.min.js')
-rw-r--r--static/assets/js/fuji.min.js151
1 files changed, 150 insertions, 1 deletions
diff --git a/static/assets/js/fuji.min.js b/static/assets/js/fuji.min.js
index 79d66c5..295ee61 100644
--- a/static/assets/js/fuji.min.js
+++ b/static/assets/js/fuji.min.js
@@ -1 +1,150 @@
-"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 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"))}function searchAll(e,t,n){var o=new Fuse(t,{shouldSort:!0,distance:1e4,keys:[{name:"title",weight:2},{name:"tags",weight:1.5},{name:"content",weight:1}]}).search(e);return console.log(o),0<o.length?(document.getElementById("search-result").innerHTML=template("search-result-template",o),[(new Date).getTime()-n,o.length]):"notFound"}document.querySelector("span.post-comment-notloaded")&&document.querySelector("span.post-comment-notloaded").addEventListener("click",loadComment),document.querySelector(".btn .btn-scroll-top").addEventListener("click",function(){document.documentElement.scrollTop=0}),document.querySelector(".btn .btn-toggle-mode").addEventListener("click",function(){var e=getNowTheme(),t=document.body.getAttribute("data-theme"),n=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"==n?"auto":"dark")):(document.body.setAttribute("data-theme","light"),localStorage.setItem("fuji_data-theme","light"==n?"auto":"light"));var o=document.querySelector(".post-comment");o&&document.querySelector("span.post-comment-notloaded").getAttribute("style")&&("utterances"===o.getAttribute("data-comment")&&updateUtterancesTheme(document.querySelector(".post-comment iframe")),"disqus"===o.getAttribute("data-comment")&&DISQUS.reset({reload:!0}))});var counter,infoElements,key,xhr,urlParams=new URLSearchParams(window.location.search);urlParams.has("s")&&(counter=(new Date).getTime(),infoElements=document.querySelectorAll(".search-result-info"),key=urlParams.get("s"),document.querySelector(".search-input input").setAttribute("value",key),(xhr=new XMLHttpRequest).open("GET","/index.json",!0),xhr.responseType="json",xhr.onerror=function(e){infoElements[2].removeAttribute("style")},xhr.onload=function(){4===xhr.readyState&&(200===xhr.status?(console.log(xhr.response),counter=searchAll(key,xhr.response,counter),console.log(counter),"notFound"===counter?infoElements[1].removeAttribute("style"):(infoElements[0].innerHTML=infoElements[0].innerHTML.replace("[TIME]",counter[0]),infoElements[0].innerHTML=infoElements[0].innerHTML.replace("[NUM]",counter[1]),infoElements[0].removeAttribute("style"))):(console.error("Failed to get index.json, ".concat(xhr.status," ").concat(xhr.statusText)),infoElements[2].removeAttribute("style")))},xhr.send(null)); \ No newline at end of file
+'use strict'; // get current theme
+
+function getNowTheme() {
+ var nowTheme = document.body.getAttribute('data-theme');
+
+ if (nowTheme === 'auto') {
+ return window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light';
+ } else {
+ return nowTheme === 'dark' ? 'dark' : 'light';
+ }
+} // update utterances theme
+
+
+function updateUtterancesTheme(utterancesFrame) {
+ var targetTheme = getNowTheme();
+
+ if (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');
+ }
+ }
+} // load comment button only when comment area exist
+
+
+if (document.querySelector('span.post-comment-notloaded')) {
+ document.querySelector('span.post-comment-notloaded').addEventListener('click', loadComment);
+} // to-top button
+
+
+document.querySelector('.btn .btn-scroll-top').addEventListener('click', function () {
+ document.documentElement.scrollTop = 0;
+}); // theme switch button
+
+document.querySelector('.btn .btn-toggle-mode').addEventListener('click', function () {
+ var nowTheme = getNowTheme();
+ var domTheme = document.body.getAttribute('data-theme');
+ var systemTheme = window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light';
+
+ if (domTheme === 'auto') {
+ // if now in auto mode, switch to user mode
+ document.body.setAttribute('data-theme', nowTheme === 'light' ? 'dark' : 'light');
+ localStorage.setItem('fuji_data-theme', nowTheme === 'light' ? 'dark' : 'light');
+ } else if (domTheme === 'light') {
+ // if now in user mode and light mode
+ document.body.setAttribute('data-theme', 'dark'); // if the theme want to switch is system theme
+
+ localStorage.setItem('fuji_data-theme', systemTheme === 'dark' ? 'auto' : 'dark');
+ } else {
+ // if now in user mode and dark mode
+ document.body.setAttribute('data-theme', 'light'); // if the theme want to switch is system theme
+
+ localStorage.setItem('fuji_data-theme', systemTheme === 'light' ? 'auto' : 'light');
+ } // switch comment area theme
+ // if this page has comment area
+
+
+ var commentArea = document.querySelector('.post-comment');
+
+ if (commentArea) {
+ // if comment area loaded
+ if (document.querySelector('span.post-comment-notloaded').getAttribute('style')) {
+ if (commentArea.getAttribute('data-comment') === 'utterances') {
+ updateUtterancesTheme(document.querySelector('.post-comment iframe'));
+ }
+
+ if (commentArea.getAttribute('data-comment') === 'disqus') {
+ DISQUS.reset({
+ reload: true
+ });
+ }
+ }
+ }
+}); // search by fuse.js
+
+function searchAll(key, index, counter) {
+ var fuse = new Fuse(index, {
+ shouldSort: true,
+ distance: 10000,
+ keys: [{
+ name: 'title',
+ weight: 2.0
+ }, {
+ name: 'tags',
+ weight: 1.5
+ }, {
+ name: 'content',
+ weight: 1.0
+ }]
+ });
+ var result = fuse.search(key);
+ console.log(result);
+
+ if (result.length > 0) {
+ document.getElementById('search-result').innerHTML = template('search-result-template', result);
+ return [new Date().getTime() - counter, result.length];
+ } else {
+ return 'notFound';
+ }
+}
+
+var urlParams = new URLSearchParams(window.location.search); // get params from URL
+
+if (urlParams.has('s')) {
+ var counter = new Date().getTime();
+ var infoElements = document.querySelectorAll('.search-result-info');
+ var key = urlParams.get('s'); // get search keyword, divided by space
+
+ document.querySelector('.search-input input').setAttribute('value', key); // get search index from json
+
+ var xhr = new XMLHttpRequest();
+ xhr.open('GET', '/index.json', true);
+ xhr.responseType = 'json';
+
+ xhr.onerror = function (e) {
+ infoElements[2].removeAttribute('style');
+ };
+
+ xhr.onload = function () {
+ if (xhr.readyState === 4) {
+ if (xhr.status === 200) {
+ // use index json to search
+ console.log(xhr.response);
+ counter = searchAll(key, xhr.response, counter);
+ console.log(counter);
+
+ if (counter === 'notFound') {
+ infoElements[1].removeAttribute('style');
+ } else {
+ infoElements[0].innerHTML = infoElements[0].innerHTML.replace('[TIME]', counter[0]);
+ infoElements[0].innerHTML = infoElements[0].innerHTML.replace('[NUM]', counter[1]);
+ infoElements[0].removeAttribute('style');
+ }
+ } else {
+ console.error("Failed to get index.json, ".concat(xhr.status, " ").concat(xhr.statusText));
+ infoElements[2].removeAttribute('style');
+ }
+ }
+ };
+
+ xhr.send(null);
+}
+//# sourceMappingURL=fuji.min.js.map