'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 () { infoElements[2].removeAttribute('style'); }; xhr.ontimeout = function () { infoElements[2].removeAttribute('style'); }; xhr.onreadystatechange = 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 { infoElements[2].removeAttribute('style'); } } }; xhr.send(null); } //# sourceMappingURL=fuji.min.js.map