summaryrefslogtreecommitdiffstats
path: root/static/assets/js/fuji.min.js.map
blob: 265496b82bfe8316f9791c04a3ee20470a169813 (plain) (blame)
1
{"version":3,"sources":["fuji.js"],"names":["getNowTheme","nowTheme","document","body","getAttribute","window","matchMedia","matches","updateUtterancesTheme","utterancesFrame","targetTheme","contentWindow","postMessage","type","theme","querySelector","addEventListener","loadComment","documentElement","scrollTop","domTheme","systemTheme","setAttribute","localStorage","setItem","commentArea","DISQUS","reset","reload","searchAll","key","index","counter","fuse","Fuse","shouldSort","distance","keys","name","weight","result","search","console","log","length","getElementById","innerHTML","template","Date","getTime","urlParams","URLSearchParams","location","has","infoElements","querySelectorAll","get","xhr","XMLHttpRequest","open","responseType","onerror","e","removeAttribute","onload","readyState","status","response","replace","error","statusText","send"],"mappings":"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","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 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// to-top button\r\ndocument.querySelector('.btn .btn-scroll-top').addEventListener('click', () => {\r\n    document.documentElement.scrollTop = 0;\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    // switch comment area theme\r\n    // if this page has comment area\r\n    let commentArea = document.querySelector('.post-comment');\r\n    if (commentArea) {\r\n        // if comment area loaded\r\n        if (document.querySelector('span.post-comment-notloaded').getAttribute('style')) {\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});\r\n\r\n// search by fuse.js\r\nfunction searchAll(key, index, counter) {\r\n    let fuse = new Fuse(index, {\r\n        shouldSort: true,\r\n        distance: 10000,\r\n        keys: [\r\n            {\r\n                name: 'title',\r\n                weight: 2.0,\r\n            },\r\n            {\r\n                name: 'tags',\r\n                weight: 1.5,\r\n            },\r\n            {\r\n                name: 'content',\r\n                weight: 1.0,\r\n            },\r\n        ],\r\n    });\r\n    let result = fuse.search(key);\r\n    console.log(result);\r\n    if (result.length > 0) {\r\n        document.getElementById('search-result').innerHTML = template('search-result-template', result);\r\n        return [new Date().getTime() - counter, result.length];\r\n    } else {\r\n        return 'notFound';\r\n    }\r\n}\r\n\r\nlet urlParams = new URLSearchParams(window.location.search); // get params from URL\r\nif (urlParams.has('s')) {\r\n    let counter = new Date().getTime();\r\n    let infoElements = document.querySelectorAll('.search-result-info');\r\n    let key = urlParams.get('s'); // get search keyword, divided by space\r\n    document.querySelector('.search-input input').setAttribute('value', key);\r\n    // get search index from json\r\n    let xhr = new XMLHttpRequest();\r\n    xhr.open('GET', '/index.json', true);\r\n    xhr.responseType = 'json';\r\n    xhr.onerror = (e) => {\r\n        infoElements[2].removeAttribute('style');\r\n    };\r\n    xhr.onload = () => {\r\n        if (xhr.readyState === 4) {\r\n            if (xhr.status === 200) {\r\n                // use index json to search\r\n                console.log(xhr.response);\r\n                counter = searchAll(key, xhr.response, counter);\r\n                console.log(counter);\r\n                if (counter === 'notFound') {\r\n                    infoElements[1].removeAttribute('style');\r\n                } else {\r\n                    infoElements[0].innerHTML = infoElements[0].innerHTML.replace('[TIME]', counter[0]);\r\n                    infoElements[0].innerHTML = infoElements[0].innerHTML.replace('[NUM]', counter[1]);\r\n                    infoElements[0].removeAttribute('style');\r\n                }\r\n            } else {\r\n                console.error(`Failed to get index.json, ${xhr.status} ${xhr.statusText}`);\r\n                infoElements[2].removeAttribute('style');\r\n            }\r\n        }\r\n    };\r\n    xhr.send(null);\r\n}\r\n"],"file":"fuji.min.js"}