diff --git a/assets/js/theme.min.js.map b/assets/js/theme.min.js.map index 3fdfc0a3..ad106832 100644 --- a/assets/js/theme.min.js.map +++ b/assets/js/theme.min.js.map @@ -1 +1 @@ -{"version":3,"file":"theme.min.js","names":["Util","elements","handler","i","length","document","documentElement","body","scrollTop","window","matchMedia","matches","element","animation","reserved","callback","Array","isArray","classList","add","addEventListener","remove","once","date","Date","isNaN","getTime","selector","startsWith","getElementById","slice","querySelector","scrollIntoView","behavior","FixIt","now","run","config","siteTime","$runTimes","util","isValidDate","clearInterval","parentNode","runTime","days","Math","floor","hours","minutes","seconds","innerHTML","String","padStart","data","isDark","dataset","theme","newScrollTop","getScrollTop","oldScrollTop","scrollEventSet","Set","resizeEventSet","switchThemeEventSet","clickMaskEventSet","disableScrollEvent","objectFitImages","$meta","_themeColorOnSwitchTheme","content","dark","light","forEach","querySelectorAll","$icon","fetch","svgSrc","then","response","text","svg","$temp","createElement","insertAdjacentHTML","$svg","firstChild","$titleElements","getElementsByTagName","removeChild","parentElement","replaceChild","catch","err","console","error","twemoji","parse","initMenuDesktop","initMenuMobile","$item","style","minWidth","offsetWidth","$menuToggleMobile","$menuMobile","event","toggle","contains","_menuMobileOnClickMask","$nestedItem","getElementsByClassName","$themeSwitch","localStorage","setItem","searchConfig","search","isMobile","_searchMobileOnce","_searchDesktopOnce","maxResultLength","snippetLength","highlightTag","isCaseSensitive","minMatchCharLength","findAllMatches","location","threshold","distance","ignoreLocation","useExtendedSearch","ignoreFieldNorm","suffix","$header","$searchInput","$searchToggle","$searchLoading","$searchClear","display","_searchMobile","autocomplete","setVal","_searchMobileOnClickMask","focus","_searchDesktop","_searchDesktopOnClickMask","value","initAutosearch","autosearch","hint","autoselect","dropdownMenuContainer","clearOnSelected","cssClasses","noPrefix","debug","name","source","query","finish","results","type","lunr","queryHandler","_index","ref","metadata","matchData","_indexData","uri","title","context","position","Object","values","matchPosition","substr","lastIndexOf","keys","key","replace","RegExp","lunrIndexURL","json","indexData","lunrLanguageCode","use","field","boost","metadataWhitelist","record","objectID","_algoliaIndex","algoliasearch","algoliaAppID","algoliaSearchKey","initIndex","algoliaIndex","offset","attributesToHighlight","attributesToSnippet","highlightPreTag","highlightPostTag","hits","_highlightResult","_snippetResult","item","refIndex","indices","substring","tag","fuseIndexURL","options","includeScore","shouldSort","includeMatches","Fuse","templates","suggestion","empty","noResultsFound","footer","searchType","icon","href","on","_event","_dataset","_context","assign","lunrSegmentitURL","script","id","src","async","readyState","onreadystatechange","onload","appendChild","$details","$summary","lightgallery","lightGallery","plugins","lgThumbnail","lgZoom","speed","hideBarsDelay","allowMediaOverlap","exThumbImage","toggleThumb","thumbWidth","thumbHeight","actualSize","showZoomInOutIcons","licenseKey","$preChroma","$chroma","className","$table","$tbody","$tr","$td","$codeElements","$code","toLowerCase","$title","$ellipses","code","editable","$edit","editUnLockTitle","$iconKey","$iconLock","$preChromas","editLockTitle","setAttribute","blur","copyTitle","$copy","innerText","trim","maxShownLines","split","navigator","clipboard","writeText","animateCSS","insertBefore","$wrapper","num","$tocCore","APlayer","$newTocCore","cloneNode","kept","isTocStatic","$tocContentStatic","_tocOnScroll","delete","$tocContentAuto","$toc","visibility","$postMeta","marginTop","offsetTop","clientHeight","$tocLinkElements","$tocLiElements","$headerLinkElements","headerIsFixed","headerDesktop","headerHeight","offsetHeight","marginBottom","$tocLink","$tocLi","INDEX_SPACING","activeTocIndex","thisTop","getBoundingClientRect","top","nextTop","$parent","tocHidden","push","math","renderMathInElement","_mermaidOnSwitchTheme","$mermaidElements","themes","mermaid","initialize","startOnLoad","securityLevel","$mermaid","render","svgCode","echarts","registerTheme","lightTheme","darkTheme","_echartsOnSwitchTheme","_echartsArr","dispose","$echarts","chart","init","renderer","setOption","JSON","_echartsOnResize","resize","mapbox","mapboxgl","accessToken","setRTLTextPlugin","RTLTextPlugin","_mapboxArr","$mapbox","lng","lat","zoom","lightStyle","darkStyle","marked","navigation","geolocate","scale","fullscreen","Map","container","center","minZoom","attributionControl","Marker","setLngLat","addTo","addControl","NavigationControl","GeolocateControl","positionOptions","enableHighAccuracy","showUserLocation","trackUserLocation","ScaleControl","FullscreenControl","MapboxLanguage","_mapboxOnSwitchTheme","getContainer","setStyle","typeit","typeitConfig","cursorSpeed","cursorChar","group","typeone","instance","TypeIt","strings","lifeLike","waitUntilVisible","afterComplete","duration","setTimeout","destroy","go","comments","images","$content","$imgs","$img","$link","append","replaceWith","comment","enable","$viewCommentsBtn","expired","artalk","Artalk","LoadCountWidget","server","site","pvEl","countEl","setDarkMode","initCommentLightGallery","gitalk","decodeURI","Gitalk","valine","Valine","waline","pageview","Waline","pageviewCount","serverURL","path","pathname","utterances","utterancesConfig","repo","issueTerm","label","crossOrigin","_utterancesOnSwitchTheme","message","contentWindow","postMessage","twikoo","twikooConfig","onCommentLoaded","commentCount","getCommentsCount","envId","region","urls","includeReply","twikooCommentCount","count","giscus","giscusConfig","_giscusOnSwitchTheme","setConfig","_this","giscus2parentMsg","$script","removeEventListener","cookieconsent","initialise","setInterval","getSiteTime","hidden","enablePWA","serviceWorker","register","scope","registration","ready","watermark","Watermark","outerHTML","appendTo","appendto","opacity","width","height","rowSpacing","rowspacing","colSpacing","colspacing","rotate","fontSize","fontsize","fontFamily","fontfamily","pangu","spacingElementById","spacingElementByClassName","spacingElementByTagName","autoSpacingPage","$tocNodes","decryptor","FixItDecryptor","decrypted","initTwemoji","initDetails","initLightGallery","initHighlight","initTable","initHeaderLink","initMath","initMermaid","initEcharts","initTypeit","initMapbox","$element","initToc","initTocListener","initPangu","reset","encryption","shortcode","initShortcodes","all","mDevtools","orientation","vConsole","VConsole","target","_vConsoleOnSwitchTheme","eruda","defaults","_erudaOnSwitchTheme","evalCss","setTheme","autoBookmark","Number","getItem","hash","scrollTo","$headers","ACCURACY","$fixedButtons","$backToTop","$readingProgressBar","headerMobile","preventDefault","$mask","scroll","click","contentHeight","scrollHeight","innerHeight","scrollPercent","max","min","setProperty","toFixed","round","resizeBefore","_resizeTimeout","initSearch","initFixItDecryptor","initThemeColor","initSVGIcon","initMenu","initSwitchTheme","initCookieconsent","initSiteTime","initServiceWorker","initWatermark","initMDevtools","initAutoMark","initComment","onScroll","onResize","onClickMask","themeInit","fixit"],"sources":["../../src/js/theme.js"],"sourcesContent":["class Util {\n forEach(elements, handler) {\n elements = elements || [];\n for (let i = 0; i < elements.length; i++) {\n handler(elements[i]);\n }\n }\n\n getScrollTop() {\n return (document.documentElement ?? document.body).scrollTop;\n }\n\n isMobile() {\n return window.matchMedia('only screen and (max-width: 680px)').matches;\n }\n\n isTocStatic() {\n return window.matchMedia('only screen and (max-width: 960px)').matches;\n }\n\n /**\n * add animate to element\n * @param {Element} element animate element\n * @param {String|Array} animation animation name\n * @param {Boolean} reserved reserved animation\n * @param {Function} callback remove callback\n */\n animateCSS(element, animation, reserved, callback) {\n !Array.isArray(animation) && (animation = [animation]);\n element.classList.add('animate__animated', ...animation);\n element.addEventListener('animationend', () => {\n !reserved && element.classList.remove('animate__animated', ...animation);\n typeof callback === 'function' && callback();\n }, { once: true });\n }\n\n /**\n * date validator\n * @param {*} date may be date or not\n * @returns {Boolean}\n */\n isValidDate(date) {\n return date instanceof Date && !isNaN(date.getTime());\n }\n \n /**\n * scroll some element into view\n * @param {String} selector element to scroll\n */\n scrollIntoView(selector) {\n const element = selector.startsWith('#')\n ? document.getElementById(selector.slice(1))\n : document.querySelector(selector);\n element?.scrollIntoView({\n behavior: 'smooth'\n });\n }\n}\n\nclass FixIt {\n constructor() {\n this.config = window.config;\n this.data = this.config.data;\n this.isDark = document.body.dataset.theme === 'dark';\n this.util = new Util();\n this.newScrollTop = this.util.getScrollTop();\n this.oldScrollTop = this.newScrollTop;\n this.scrollEventSet = new Set();\n this.resizeEventSet = new Set();\n this.switchThemeEventSet = new Set();\n this.clickMaskEventSet = new Set();\n this.disableScrollEvent = false;\n window.objectFitImages && objectFitImages();\n }\n\n initThemeColor() {\n const $meta = document.querySelector('[name=\"theme-color\"]');\n if (!$meta) {\n return;\n }\n this._themeColorOnSwitchTheme = this._themeColorOnSwitchTheme || (() => {\n $meta.content = this.isDark ? $meta.dataset.dark : $meta.dataset.light;\n });\n this.switchThemeEventSet.add(this._themeColorOnSwitchTheme);\n this._themeColorOnSwitchTheme();\n }\n\n initSVGIcon() {\n this.util.forEach(document.querySelectorAll('[data-svg-src]'), ($icon) => {\n fetch($icon.dataset.svgSrc)\n .then((response) => response.text())\n .then((svg) => {\n const $temp = document.createElement('div');\n $temp.insertAdjacentHTML('afterbegin', svg);\n const $svg = $temp.firstChild;\n $svg.dataset.svgSrc = $icon.dataset.svgSrc\n $svg.classList.add('icon');\n const $titleElements = $svg.getElementsByTagName('title');\n $titleElements.length && $svg.removeChild($titleElements[0]);\n $icon.parentElement.replaceChild($svg, $icon);\n })\n .catch((err) => {\n console.error(err);\n });\n });\n }\n\n initTwemoji() {\n this.config.twemoji && twemoji.parse(document.body);\n }\n\n initMenu() {\n this.initMenuDesktop();\n this.initMenuMobile();\n }\n\n initMenuDesktop() {\n this.util.forEach(document.querySelectorAll('.has-children, #header-desktop .language'), ($item) => {\n $item.querySelector('.sub-menu').style.minWidth = `${$item.offsetWidth - 8}px`;\n });\n }\n\n initMenuMobile() {\n const $menuToggleMobile = document.getElementById('menu-toggle-mobile');\n const $menuMobile = document.getElementById('menu-mobile');\n $menuToggleMobile.addEventListener('click', (event) => {\n document.body.classList.toggle('blur');\n $menuToggleMobile.classList.toggle('active');\n $menuMobile.classList.toggle('active');\n this.disableScrollEvent = document.body.classList.contains('blur');\n }, false);\n this._menuMobileOnClickMask = this._menuMobileOnClickMask || (() => {\n $menuToggleMobile.classList.remove('active');\n $menuMobile.classList.remove('active');\n });\n this.clickMaskEventSet.add(this._menuMobileOnClickMask);\n // add nested menu toggler\n this.util.forEach(document.querySelectorAll('.menu-item>.nested-item'), ($nestedItem) => {\n $nestedItem.addEventListener('click', function () {\n this.parentNode.querySelector('.sub-menu').classList.toggle('open');\n this.querySelector('.dropdown-icon').classList.toggle('open');\n });\n });\n }\n\n initSwitchTheme() {\n this.util.forEach(document.getElementsByClassName('theme-switch'), ($themeSwitch) => {\n $themeSwitch.addEventListener('click', () => {\n document.body.dataset.theme = document.body.dataset.theme === 'dark' ? 'light' : 'dark';\n this.isDark = !this.isDark;\n window.localStorage?.setItem('theme', this.isDark ? 'dark' : 'light');\n for (let event of this.switchThemeEventSet) {\n event();\n }\n }, false);\n });\n }\n\n initSearch() {\n const searchConfig = this.config.search;\n const isMobile = this.util.isMobile();\n if (!searchConfig || (isMobile && this._searchMobileOnce) || (!isMobile && this._searchDesktopOnce)) {\n return;\n }\n // Initialize default search config\n const maxResultLength = searchConfig.maxResultLength ?? 10;\n const snippetLength = searchConfig.snippetLength ?? 50;\n const highlightTag = searchConfig.highlightTag ?? 'em';\n const isCaseSensitive = searchConfig.isCaseSensitive ?? false;\n const minMatchCharLength = searchConfig.minMatchCharLength ?? 1;\n const findAllMatches = searchConfig.findAllMatches ?? false;\n const location = searchConfig.location ?? 0;\n const threshold = searchConfig.threshold ?? 0.3;\n const distance = searchConfig.distance ?? 100;\n const ignoreLocation = searchConfig.ignoreLocation ?? false;\n const useExtendedSearch = searchConfig.useExtendedSearch ?? false;\n const ignoreFieldNorm = searchConfig.ignoreFieldNorm ?? false;\n const suffix = isMobile ? 'mobile' : 'desktop';\n const $header = document.getElementById(`header-${suffix}`);\n const $searchInput = document.getElementById(`search-input-${suffix}`);\n const $searchToggle = document.getElementById(`search-toggle-${suffix}`);\n const $searchLoading = document.getElementById(`search-loading-${suffix}`);\n const $searchClear = document.getElementById(`search-clear-${suffix}`);\n\n if (isMobile) {\n this._searchMobileOnce = true;\n $searchInput.addEventListener('focus', () => {\n this.disableScrollEvent = true;\n document.body.classList.add('blur');\n $header.classList.add('open');\n }, false);\n document.getElementById('search-cancel-mobile').addEventListener('click', () => {\n this.disableScrollEvent = false;\n $header.classList.remove('open');\n document.body.classList.remove('blur');\n document.getElementById('menu-toggle-mobile').classList.remove('active');\n document.getElementById('menu-mobile').classList.remove('active');\n $searchLoading.style.display = 'none';\n $searchClear.style.display = 'none';\n this._searchMobile && this._searchMobile.autocomplete.setVal('');\n }, false);\n $searchClear.addEventListener('click', () => {\n $searchClear.style.display = 'none';\n this._searchMobile && this._searchMobile.autocomplete.setVal('');\n }, false);\n this._searchMobileOnClickMask = this._searchMobileOnClickMask || (() => {\n $header.classList.remove('open');\n $searchLoading.style.display = 'none';\n $searchClear.style.display = 'none';\n this._searchMobile && this._searchMobile.autocomplete.setVal('');\n });\n this.clickMaskEventSet.add(this._searchMobileOnClickMask);\n } else {\n this._searchDesktopOnce = true;\n $searchToggle.addEventListener('click', () => {\n document.body.classList.add('blur');\n $header.classList.add('open');\n $searchInput.focus();\n }, false);\n $searchClear.addEventListener('click', () => {\n $searchClear.style.display = 'none';\n this._searchDesktop && this._searchDesktop.autocomplete.setVal('');\n }, false);\n this._searchDesktopOnClickMask = this._searchDesktopOnClickMask ||(() => {\n $header.classList.remove('open');\n $searchLoading.style.display = 'none';\n $searchClear.style.display = 'none';\n this._searchDesktop && this._searchDesktop.autocomplete.setVal('');\n });\n this.clickMaskEventSet.add(this._searchDesktopOnClickMask);\n }\n $searchInput.addEventListener('input', () => {\n if ($searchInput.value === '') $searchClear.style.display = 'none';\n else $searchClear.style.display = 'inline';\n }, false);\n\n const initAutosearch = () => {\n const autosearch = autocomplete(`#search-input-${suffix}`,\n {\n hint: false,\n autoselect: true,\n dropdownMenuContainer: `#search-dropdown-${suffix}`,\n clearOnSelected: true,\n cssClasses: { noPrefix: true },\n debug: true\n },\n {\n name: 'search',\n source: (query, callback) => {\n $searchLoading.style.display = 'inline';\n $searchClear.style.display = 'none';\n const finish = (results) => {\n $searchLoading.style.display = 'none';\n $searchClear.style.display = 'inline';\n callback(results);\n };\n if (searchConfig.type === 'lunr') {\n const search = () => {\n if (lunr.queryHandler) {\n query = lunr.queryHandler(query);\n }\n const results = {};\n this._index.search(query).forEach(({ ref, matchData: { metadata } }) => {\n const matchData = this._indexData[ref];\n let { uri, title, content: context } = matchData;\n if (results[uri]) {\n return;\n }\n let position = 0;\n Object.values(metadata).forEach(({ content }) => {\n if (content) {\n const matchPosition = content.position[0][0];\n if (matchPosition < position || position === 0) {\n position = matchPosition;\n }\n }\n });\n position -= snippetLength / 5;\n if (position > 0) {\n position += context.substr(position, 20).lastIndexOf(' ') + 1;\n context = '...' + context.substr(position, snippetLength);\n } else {\n context = context.substr(0, snippetLength);\n }\n Object.keys(metadata).forEach((key) => {\n title = title.replace(new RegExp(`(${key})`, 'gi'), `<${highlightTag}>$1`);\n context = context.replace(new RegExp(`(${key})`, 'gi'), `<${highlightTag}>$1`);\n });\n results[uri] = {\n uri: uri,\n title: title,\n date: matchData.date,\n context: context\n };\n });\n return Object.values(results).slice(0, maxResultLength);\n };\n if (!this._index) {\n fetch(searchConfig.lunrIndexURL)\n .then((response) => response.json())\n .then((data) => {\n const indexData = {};\n this._index = lunr(function () {\n if (searchConfig.lunrLanguageCode) this.use(lunr[searchConfig.lunrLanguageCode]);\n this.ref('objectID');\n this.field('title', { boost: 50 });\n this.field('tags', { boost: 20 });\n this.field('categories', { boost: 20 });\n this.field('content', { boost: 10 });\n this.metadataWhitelist = ['position'];\n data.forEach((record) => {\n indexData[record.objectID] = record;\n this.add(record);\n });\n });\n this._indexData = indexData;\n finish(search());\n })\n .catch((err) => {\n console.error(err);\n finish([]);\n });\n } else finish(search());\n } else if (searchConfig.type === 'algolia') {\n this._algoliaIndex =\n this._algoliaIndex || algoliasearch(searchConfig.algoliaAppID, searchConfig.algoliaSearchKey).initIndex(searchConfig.algoliaIndex);\n this._algoliaIndex\n .search(query, {\n offset: 0,\n length: maxResultLength * 8,\n attributesToHighlight: ['title'],\n attributesToSnippet: [`content:${snippetLength}`],\n highlightPreTag: `<${highlightTag}>`,\n highlightPostTag: ``\n })\n .then(({ hits }) => {\n const results = {};\n hits.forEach(({ uri, date, _highlightResult: { title }, _snippetResult: { content } }) => {\n if (results[uri] && results[uri].context.length > content.value) {\n return;\n }\n results[uri] = {\n uri: uri,\n title: title.value,\n date: date,\n context: content.value\n };\n });\n finish(Object.values(results).slice(0, maxResultLength));\n })\n .catch((err) => {\n console.error(err);\n finish([]);\n });\n } else if (searchConfig.type === 'fuse') {\n const search = () => {\n const results = {};\n window._index.search(query).forEach(({ item, refIndex, matches }) => {\n let title = item.title;\n let content = item.content;\n matches.forEach(({ indices, value, key }) => {\n if (key === 'content') {\n let offset = 0;\n for (let i = 0; i < indices.length; i++) {\n const substr = content.substring(indices[i][0] + offset, indices[i][1] + 1 + offset);\n const tag = `<${highlightTag}>` + substr + ``;\n content = content.substring(0, indices[i][0] + offset) + tag + content.substring(indices[i][1] + 1 + offset, content.length);\n offset += highlightTag.length * 2 + 5;\n }\n } else if (key === 'title') {\n let offset = 0;\n for (let i = 0; i < indices.length; i++) {\n const substr = title.substring(indices[i][0] + offset, indices[i][1] + 1 + offset);\n const tag = `<${highlightTag}>` + substr + ``;\n title = title.substring(0, indices[i][0] + offset) + tag + title.substring(indices[i][1] + 1 + offset, content.length);\n offset += highlightTag.length * 2 + 5;\n }\n }\n });\n results[item.uri] = {\n uri: item.uri,\n title: title,\n date: item.date,\n context: content\n };\n });\n return Object.values(results).slice(0, maxResultLength);\n };\n if (!window._index) {\n fetch(searchConfig.fuseIndexURL)\n .then((response) => response.json())\n .then((data) => {\n const options = {\n isCaseSensitive: isCaseSensitive,\n findAllMatches: findAllMatches,\n minMatchCharLength: minMatchCharLength,\n location: location,\n threshold: threshold,\n distance: distance,\n ignoreLocation: ignoreLocation,\n useExtendedSearch: useExtendedSearch,\n ignoreFieldNorm: ignoreFieldNorm,\n includeScore: false,\n shouldSort: true,\n includeMatches: true,\n keys: ['content', 'title']\n };\n window._index = new Fuse(data, options);\n finish(search());\n })\n .catch((err) => {\n console.error(err);\n finish([]);\n });\n } else finish(search());\n } \n },\n templates: {\n suggestion: ({ title, date, context }) =>\n `
${title}${date}
${context}
`,\n empty: ({ query }) => `
${searchConfig.noResultsFound}: \"${query}\"
`,\n footer: ({}) => {\n const { searchType, icon, href } =\n searchConfig.type === 'algolia'\n ? {\n searchType: 'algolia',\n icon: '',\n href: 'https://www.algolia.com/'\n }\n : (searchConfig.type === 'lunr'\n ? {\n searchType: 'Lunr.js',\n icon: '',\n href: 'https://lunrjs.com/'\n }\n : {\n searchType: 'Fuse.js',\n icon: '',\n href: 'https://fusejs.io/'\n })\n return `
Search by ${icon} ${searchType}
`;\n }\n }\n }\n );\n autosearch.on('autocomplete:selected', (_event, suggestion, _dataset, _context) => {\n window.location.assign(suggestion.uri);\n });\n if (isMobile) {\n this._searchMobile = autosearch;\n } else {\n this._searchDesktop = autosearch;\n }\n };\n if (searchConfig.lunrSegmentitURL && !document.getElementById('lunr-segmentit')) {\n const script = document.createElement('script');\n script.id = 'lunr-segmentit';\n script.src = searchConfig.lunrSegmentitURL;\n script.async = true;\n if (script.readyState) {\n script.onreadystatechange = () => {\n if (script.readyState == 'loaded' || script.readyState == 'complete') {\n script.onreadystatechange = null;\n initAutosearch();\n }\n };\n } else {\n script.onload = () => {\n initAutosearch();\n };\n }\n document.body.appendChild(script);\n } else {\n initAutosearch();\n }\n }\n\n initDetails() {\n this.util.forEach(document.getElementsByClassName('details'), ($details) => {\n const $summary = $details.querySelector('.details-summary');\n $summary.addEventListener('click', () => {\n $details.classList.toggle('open');\n }, false);\n });\n }\n\n initLightGallery() {\n if (this.config.lightgallery) {\n lightGallery(document.getElementById('content'), {\n plugins: [lgThumbnail, lgZoom],\n selector: '.lightgallery',\n speed: 400,\n hideBarsDelay: 2000,\n allowMediaOverlap: true,\n exThumbImage: 'data-thumbnail',\n toggleThumb: true,\n thumbWidth: 80,\n thumbHeight: '60px',\n actualSize: false,\n showZoomInOutIcons: true,\n licenseKey: 'none'\n });\n }\n }\n\n initHighlight() {\n this.util.forEach(document.querySelectorAll('.highlight > pre.chroma'), ($preChroma) => {\n const $chroma = document.createElement('div');\n $chroma.className = $preChroma.className;\n const $table = document.createElement('table');\n $chroma.appendChild($table);\n const $tbody = document.createElement('tbody');\n $table.appendChild($tbody);\n const $tr = document.createElement('tr');\n $tbody.appendChild($tr);\n const $td = document.createElement('td');\n $tr.appendChild($td);\n $preChroma.parentElement.replaceChild($chroma, $preChroma);\n $td.appendChild($preChroma);\n });\n this.util.forEach(document.querySelectorAll('.highlight > .chroma'), ($chroma) => {\n const $codeElements = $chroma.querySelectorAll('pre.chroma > code');\n if ($codeElements.length) {\n const $code = $codeElements[$codeElements.length - 1];\n const $header = document.createElement('div');\n $header.className = 'code-header ' + $code.className.toLowerCase();\n // code title\n const $title = document.createElement('span');\n $title.classList.add('code-title');\n $title.insertAdjacentHTML('afterbegin', '');\n $title.addEventListener('click', () => {\n $chroma.classList.toggle('open');\n }, false);\n $header.appendChild($title);\n // ellipses icon\n const $ellipses = document.createElement('span');\n $ellipses.insertAdjacentHTML('afterbegin', '');\n $ellipses.classList.add('ellipses');\n $ellipses.addEventListener('click', () => {\n $chroma.classList.add('open');\n }, false);\n $header.appendChild($ellipses);\n // edit button\n if (this.config.code.editable) {\n const $edit = document.createElement('span');\n $edit.classList.add('edit');\n $edit.insertAdjacentHTML('afterbegin', ``);\n $edit.addEventListener('click', () => {\n const $iconKey = $edit.querySelector('.fa-key');\n const $iconLock = $edit.querySelector('.fa-lock');\n const $preChromas = $edit.parentElement.parentElement.querySelectorAll('pre.chroma');\n const $preChroma = $preChromas.length === 2 ? $preChromas[1] : $preChromas[0];\n if ($iconKey) {\n $iconKey.classList.add('fa-lock');\n $iconKey.classList.remove('fa-key');\n $iconKey.title = this.config.code.editLockTitle;\n $preChroma.setAttribute('contenteditable', true);\n $preChroma.focus();\n } else {\n $iconLock.classList.add('fa-key');\n $iconLock.classList.remove('fa-lock');\n $iconLock.title = this.config.code.editUnLockTitle;\n $preChroma.setAttribute('contenteditable', false);\n $preChroma.blur();\n }\n }, false);\n $header.appendChild($edit);\n }\n // copy button\n if (this.config.code.copyTitle) {\n const $copy = document.createElement('span');\n $copy.insertAdjacentHTML('afterbegin', '');\n $copy.classList.add('copy');\n // remove the leading and trailing whitespace of the code string\n const code = $code.innerText.trim();\n if (this.config.code.maxShownLines < 0 || code.split('\\n').length < this.config.code.maxShownLines + 2) {\n $chroma.classList.add('open');\n }\n $copy.title = this.config.code.copyTitle;\n $copy.addEventListener('click', () => {\n navigator.clipboard.writeText(code).then(() => {\n this.util.animateCSS($code, 'animate__flash');\n }, () => {\n console.error('Clipboard write failed!', 'Your browser does not support clipboard API!');\n });\n }, false);\n $header.appendChild($copy);\n }\n $chroma.insertBefore($header, $chroma.firstChild);\n }\n });\n }\n\n initTable() {\n this.util.forEach(document.querySelectorAll('.content table'), ($table) => {\n const $wrapper = document.createElement('div');\n $wrapper.className = 'table-wrapper';\n $table.parentElement.replaceChild($wrapper, $table);\n $wrapper.appendChild($table);\n });\n }\n\n initHeaderLink() {\n for (let num = 1; num <= 6; num++) {\n this.util.forEach(document.querySelectorAll('.single .content > h' + num), ($header) => {\n $header.classList.add('header-link');\n $header.insertAdjacentHTML('afterbegin', ``);\n });\n }\n }\n /**\n * init table of contents\n */\n initToc() {\n let $tocCore = document.getElementById('TableOfContents');\n if ($tocCore === null) {\n return;\n }\n // It's a dirty hack to fix scroll bug of APlayer, see https://github.com/hugo-fixit/FixIt/issues/292\n if (typeof APlayer === 'function') {\n const $newTocCore = $tocCore.cloneNode(true);\n $tocCore.parentElement.replaceChild($newTocCore, $tocCore);\n $tocCore = $newTocCore;\n }\n if (document.getElementById('toc-static').dataset.kept === true || this.util.isTocStatic()) {\n const $tocContentStatic = document.getElementById('toc-content-static');\n if ($tocCore.parentElement !== $tocContentStatic) {\n $tocCore.parentElement.removeChild($tocCore);\n $tocContentStatic.appendChild($tocCore);\n }\n this._tocOnScroll && this.scrollEventSet.delete(this._tocOnScroll);\n } else {\n const $tocContentAuto = document.getElementById('toc-content-auto');\n if ($tocCore.parentElement !== $tocContentAuto) {\n $tocCore.parentElement.removeChild($tocCore);\n $tocContentAuto.appendChild($tocCore);\n }\n const $toc = document.getElementById('toc-auto');\n $toc.style.visibility = 'visible';\n this.util.animateCSS($toc, ['animate__fadeIn', 'animate__faster'], true);\n const $postMeta = document.querySelector('.post-meta');\n $toc.style.marginTop = `${$postMeta.offsetTop + $postMeta.clientHeight}px`;\n const $tocLinkElements = $tocCore.querySelectorAll('a:first-child');\n const $tocLiElements = $tocCore.getElementsByTagName('li');\n const $headerLinkElements = document.getElementsByClassName('header-link');\n const headerIsFixed = document.body.dataset.headerDesktop !== 'normal';\n const headerHeight = document.getElementById('header-desktop').offsetHeight;\n document.querySelector('.container').addEventListener('resize', () => {\n $toc.style.marginBottom = `${document.querySelector('.container').clientHeight - document.querySelector('.post-footer').offsetTop}px`;\n });\n this._tocOnScroll = this._tocOnScroll || (() => {\n $toc.style.marginBottom = `${document.querySelector('.container').clientHeight - document.querySelector('.post-footer').offsetTop}px`;\n this.util.forEach($tocLinkElements, ($tocLink) => {\n $tocLink.classList.remove('active');\n });\n this.util.forEach($tocLiElements, ($tocLi) => {\n $tocLi.classList.remove('has-active');\n });\n const INDEX_SPACING = 20 + (headerIsFixed ? headerHeight : 0);\n let activeTocIndex = $headerLinkElements.length - 1;\n for (let i = 0; i < $headerLinkElements.length - 1; i++) {\n const thisTop = $headerLinkElements[i].getBoundingClientRect().top;\n const nextTop = $headerLinkElements[i + 1].getBoundingClientRect().top;\n if ((i == 0 && thisTop > INDEX_SPACING) || (thisTop <= INDEX_SPACING && nextTop > INDEX_SPACING)) {\n activeTocIndex = i;\n break;\n }\n }\n if (activeTocIndex !== -1) {\n $tocLinkElements[activeTocIndex].classList.add('active');\n let $parent = $tocLinkElements[activeTocIndex].parentElement;\n while ($parent !== $tocCore) {\n $parent.classList.add('has-active');\n $parent = $parent.parentElement.parentElement;\n }\n }\n });\n this._tocOnScroll();\n this.scrollEventSet.add(this._tocOnScroll);\n }\n }\n\n initTocListener() {\n const $toc = document.getElementById('toc-auto');\n const $tocContentAuto = document.getElementById('toc-content-auto');\n document.querySelector('#toc-auto>.toc-title')?.addEventListener('click', () => {\n const animation = ['animate__faster'];\n const tocHidden = $toc.classList.contains('toc-hidden');\n animation.push(tocHidden ? 'animate__fadeIn' : 'animate__fadeOut');\n $tocContentAuto.classList.remove(tocHidden ? 'animate__fadeOut' : 'animate__fadeIn');\n this.util.animateCSS($tocContentAuto, animation, true);\n $toc.classList.toggle('toc-hidden');\n }, false);\n }\n\n initMath() {\n if (this.config.math) {\n renderMathInElement(document.body, this.config.math);\n }\n }\n\n initMermaid() {\n this._mermaidOnSwitchTheme = this._mermaidOnSwitchTheme || (() => {\n const $mermaidElements = document.getElementsByClassName('mermaid');\n if ($mermaidElements.length) {\n const themes = this.config.mermaid.themes ?? ['neutral', 'dark'];\n mermaid.initialize({startOnLoad: false, theme: this.isDark ? themes[1] : themes[0], securityLevel: 'loose'});\n this.util.forEach($mermaidElements, $mermaid => {\n mermaid.render('svg-' + $mermaid.id, this.data[$mermaid.id], svgCode => {\n $mermaid.innerHTML = svgCode;\n }, $mermaid);\n });\n }\n });\n this.switchThemeEventSet.add(this._mermaidOnSwitchTheme);\n this._mermaidOnSwitchTheme();\n }\n\n initEcharts() {\n if (!this.config.echarts) {\n return;\n }\n echarts.registerTheme('light', this.config.echarts.lightTheme);\n echarts.registerTheme('dark', this.config.echarts.darkTheme);\n this._echartsOnSwitchTheme = this._echartsOnSwitchTheme || (() => {\n this._echartsArr = this._echartsArr || [];\n for (let i = 0; i < this._echartsArr.length; i++) {\n this._echartsArr[i].dispose();\n }\n this._echartsArr = [];\n this.util.forEach(document.getElementsByClassName('echarts'), ($echarts) => {\n const chart = echarts.init($echarts, this.isDark ? 'dark' : 'light', { renderer: 'svg' });\n chart.setOption(JSON.parse(this.data[$echarts.id]));\n this._echartsArr.push(chart);\n });\n });\n this.switchThemeEventSet.add(this._echartsOnSwitchTheme);\n this._echartsOnSwitchTheme();\n this._echartsOnResize = this._echartsOnResize || (() => {\n for (let i = 0; i < this._echartsArr.length; i++) {\n this._echartsArr[i].resize();\n }\n });\n this.resizeEventSet.add(this._echartsOnResize);\n }\n\n initMapbox() {\n if (this.config.mapbox) {\n mapboxgl.accessToken = this.config.mapbox.accessToken;\n mapboxgl.setRTLTextPlugin(this.config.mapbox.RTLTextPlugin);\n this._mapboxArr = this._mapboxArr || [];\n this.util.forEach(document.getElementsByClassName('mapbox'), ($mapbox) => {\n const { lng, lat, zoom, lightStyle, darkStyle, marked, navigation, geolocate, scale, fullscreen } = this.data[$mapbox.id];\n const mapbox = new mapboxgl.Map({\n container: $mapbox,\n center: [lng, lat],\n zoom: zoom,\n minZoom: 0.2,\n style: this.isDark ? darkStyle : lightStyle,\n attributionControl: false\n });\n if (marked) {\n new mapboxgl.Marker().setLngLat([lng, lat]).addTo(mapbox);\n }\n if (navigation) {\n mapbox.addControl(new mapboxgl.NavigationControl(), 'bottom-right');\n }\n if (geolocate) {\n mapbox.addControl(\n new mapboxgl.GeolocateControl({\n positionOptions: {\n enableHighAccuracy: true\n },\n showUserLocation: true,\n trackUserLocation: true\n }),\n 'bottom-right'\n );\n }\n if (scale) {\n mapbox.addControl(new mapboxgl.ScaleControl());\n }\n if (fullscreen) {\n mapbox.addControl(new mapboxgl.FullscreenControl());\n }\n mapbox.addControl(new MapboxLanguage());\n this._mapboxArr.push(mapbox);\n });\n this._mapboxOnSwitchTheme = this._mapboxOnSwitchTheme || (() => {\n this.util.forEach(this._mapboxArr, (mapbox) => {\n const $mapbox = mapbox.getContainer();\n const { lightStyle, darkStyle } = this.data[$mapbox.id];\n mapbox.setStyle(this.isDark ? darkStyle : lightStyle);\n mapbox.addControl(new MapboxLanguage());\n });\n });\n this.switchThemeEventSet.add(this._mapboxOnSwitchTheme);\n }\n }\n\n initTypeit() {\n if (this.config.typeit) {\n const typeitConfig = this.config.typeit;\n const speed = typeitConfig.speed || 100;\n const cursorSpeed = typeitConfig.cursorSpeed || 1000;\n const cursorChar = typeitConfig.cursorChar || '|';\n Object.values(typeitConfig.data).forEach((group) => {\n const typeone = (i) => {\n const id = group[i];\n const instance = new TypeIt(`#${id}`, {\n strings: this.data[id],\n speed: speed,\n lifeLike: true,\n cursorSpeed: cursorSpeed,\n cursorChar: cursorChar,\n waitUntilVisible: true,\n afterComplete: () => {\n if (i === group.length - 1) {\n if (typeitConfig.duration >= 0) {\n window.setTimeout(() => {\n instance.destroy();\n }, typeitConfig.duration);\n }\n return;\n }\n instance.destroy();\n typeone(i + 1);\n }\n }).go();\n };\n typeone(0);\n });\n }\n }\n\n initCommentLightGallery(comments, images) {\n document.querySelectorAll(comments).forEach(($content) => {\n const $imgs = $content.querySelectorAll(images + ':not([lightgallery-loaded])');\n $imgs.forEach(($img) => {\n $img.setAttribute('lightgallery-loaded', '');\n const $link = document.createElement('a');\n $link.setAttribute('class', 'comment-lightgallery');\n $link.setAttribute('href', $img.src);\n $link.append($img.cloneNode());\n $img.replaceWith($link);\n });\n if ($imgs.length) {\n lightGallery($content, {\n selector: '.comment-lightgallery',\n actualSize: false,\n hideBarsDelay: 2000,\n speed: 400\n });\n }\n });\n }\n\n initComment() {\n if (!this.config.comment?.enable) {\n return;\n }\n // whether to show the view comments button\n if (document.querySelector('#comments')) {\n const $viewCommentsBtn = document.querySelector('.view-comments');\n $viewCommentsBtn.classList.remove('d-none');\n // view comments button click event\n $viewCommentsBtn.addEventListener('click', () => {\n this.util.scrollIntoView('#comments');\n }, false);\n }\n this.config.comment.expired && document.querySelector('#comments').remove();\n if (this.config.comment.artalk) {\n if (this.config.comment.expired) {\n return Artalk.LoadCountWidget({\n server: this.config.comment.artalk.server,\n site: this.config.comment.artalk.site,\n pvEl: this.config.comment.artalk.pvEl,\n countEl: this.config.comment.artalk.countEl\n })\n }\n const artalk = new Artalk(this.config.comment.artalk);\n artalk.setDarkMode(this.isDark);\n this.switchThemeEventSet.add(() => {\n artalk.setDarkMode(this.isDark);\n });\n artalk.on('comments-loaded', () => {\n this.config.comment.artalk.lightgallery && this.initCommentLightGallery('.atk-comment .atk-content', 'img:not([atk-emoticon])');\n });\n return artalk;\n }\n if (this.config.comment.gitalk) {\n this.config.comment.gitalk.body = decodeURI(window.location.href);\n const gitalk = new Gitalk(this.config.comment.gitalk);\n gitalk.render('gitalk');\n return gitalk;\n }\n if (this.config.comment.valine) {\n return new Valine(this.config.comment.valine);\n }\n if (this.config.comment.waline) {\n if (this.config.comment.expired) {\n this.config.comment.waline.pageview && Waline.pageviewCount({\n serverURL: this.config.comment.waline.serverURL,\n path: window.location.pathname\n });\n return;\n }\n return Waline.init(this.config.comment.waline);\n }\n if (this.config.comment.utterances) {\n const utterancesConfig = this.config.comment.utterances;\n const script = document.createElement('script');\n script.src = 'https://utteranc.es/client.js';\n script.setAttribute('repo', utterancesConfig.repo);\n script.setAttribute('issue-term', utterancesConfig.issueTerm);\n if (utterancesConfig.label) script.setAttribute('label', utterancesConfig.label);\n script.setAttribute('theme', this.isDark ? utterancesConfig.darkTheme : utterancesConfig.lightTheme);\n script.crossOrigin = 'anonymous';\n script.async = true;\n document.getElementById('utterances').appendChild(script);\n this._utterancesOnSwitchTheme = this._utterancesOnSwitchTheme || (() => {\n const message = {\n type: 'set-theme',\n theme: this.isDark ? utterancesConfig.darkTheme : utterancesConfig.lightTheme\n };\n document.querySelector('.utterances-frame')?.contentWindow.postMessage(message, 'https://utteranc.es');\n });\n this.switchThemeEventSet.add(this._utterancesOnSwitchTheme);\n return;\n }\n if (this.config.comment.twikoo) {\n const twikooConfig = this.config.comment.twikoo;\n if (twikooConfig.lightgallery) {\n twikooConfig.onCommentLoaded = () => {\n this.initCommentLightGallery('.tk-comments .tk-content', 'img:not(.tk-owo-emotion)');\n };\n }\n twikoo.init(twikooConfig);\n if (twikooConfig.commentCount) {\n // https://twikoo.js.org/api.html#get-comments-count\n twikoo\n .getCommentsCount({\n envId: twikooConfig.envId,\n region: twikooConfig.region,\n urls: [window.location.pathname],\n includeReply: false\n })\n .then(function (response) {\n const twikooCommentCount = document.getElementById('twikoo-comment-count');\n if (twikooCommentCount) twikooCommentCount.innerHTML = response[0].count;\n });\n }\n return;\n }\n if (this.config.comment.giscus) {\n const giscusConfig = this.config.comment.giscus;\n this._giscusOnSwitchTheme = this._giscusOnSwitchTheme || (() => {\n const message = { setConfig: { theme: this.isDark ? giscusConfig.darkTheme : giscusConfig.lightTheme }};\n document.querySelector('.giscus-frame')?.contentWindow.postMessage({ giscus: message }, 'https://giscus.app');\n });\n this.switchThemeEventSet.add(this._giscusOnSwitchTheme);\n const _this = this;\n _this.giscus2parentMsg = window.addEventListener('message', (event) => {\n const $script = document.querySelector('#giscus>script');\n if ($script){\n _this._giscusOnSwitchTheme();\n $script.parentElement.removeChild($script);\n }\n window.removeEventListener('message', _this.giscus2parentMsg);\n });\n return;\n }\n }\n\n initCookieconsent() {\n this.config.cookieconsent && cookieconsent.initialise(this.config.cookieconsent);\n }\n\n getSiteTime = () => {\n let now = new Date();\n let run = new Date(this.config.siteTime);\n let $runTimes = document.querySelector('.run-times');\n if (!this.util.isValidDate(run) || !$runTimes) {\n clearInterval(this.siteTime);\n $runTimes && $runTimes.parentNode.remove();\n return;\n }\n let runTime = (now - run) / 1000,\n days = Math.floor(runTime / 60 / 60 / 24),\n hours = Math.floor(runTime / 60 / 60 - 24 * days),\n minutes = Math.floor(runTime / 60 - 24 * 60 * days - 60 * hours),\n seconds = Math.floor((now - run) / 1000 - 24 * 60 * 60 * days - 60 * 60 * hours - 60 * minutes);\n $runTimes.innerHTML = `${days}, ${String(hours).padStart(2, 0)}:${String(minutes).padStart(2, 0)}:${String(seconds).padStart(2, 0)}`;\n document.querySelector('.site-time .d-none')?.classList.remove('d-none');\n };\n\n initSiteTime() {\n if (this.config.siteTime) {\n this.siteTime = setInterval(this.getSiteTime, 500);\n document.addEventListener('visibilitychange', () => {\n if (document.hidden) {\n return clearInterval(this.siteTime);\n }\n this.siteTime = setInterval(this.getSiteTime, 500);\n }, false);\n }\n }\n\n initServiceWorker() {\n if (this.config.enablePWA && 'serviceWorker' in navigator) {\n navigator.serviceWorker\n .register('/service-worker.min.js', { scope: '/' })\n .then(function (registration) {\n // console.log('Service Worker Registered');\n })\n .catch(function (error) {\n console.error('error: ', error);\n });\n navigator.serviceWorker\n .ready\n .then(function (registration) {\n // console.log('Service Worker Ready');\n });\n }\n }\n\n initWatermark() {\n this.config.watermark?.enable &&\n new Watermark({\n content: this.config.watermark.content || `${document.querySelector('footer .fixit-icon')?.outerHTML ?? ''} FixIt Theme`,\n appendTo: this.config.watermark.appendto || '.wrapper>main',\n opacity: this.config.watermark.opacity,\n width: this.config.watermark.width,\n height: this.config.watermark.height,\n rowSpacing: this.config.watermark.rowspacing,\n colSpacing: this.config.watermark.colspacing,\n rotate: this.config.watermark.rotate,\n fontSize: this.config.watermark.fontsize,\n fontFamily: this.config.watermark.fontfamily\n });\n }\n\n initPangu() {\n if (!this.config.pangu?.enable) {\n return;\n }\n const selector = this.config.pangu.selector;\n if (selector) {\n if (selector.startsWith('#')) {\n pangu.spacingElementById(selector.slice(1));\n } else if (selector.startsWith('.')) {\n pangu.spacingElementByClassName(selector.slice(1));\n } else {\n pangu.spacingElementByTagName(selector)\n }\n return;\n }\n pangu.autoSpacingPage();\n }\n\n initFixItDecryptor() {\n const $tocNodes = document.querySelectorAll('#toc-auto>.d-none, #toc-static.d-none');\n this.decryptor = new FixItDecryptor({\n decrypted: () => {\n this.initTwemoji();\n this.initDetails();\n this.initLightGallery();\n this.initHighlight();\n this.initTable();\n this.initHeaderLink();\n this.initMath();\n this.initMermaid();\n this.initEcharts();\n this.initTypeit();\n this.initMapbox();\n this.util.forEach($tocNodes, ($element) => {\n $element.classList.remove('d-none');\n });\n this.initToc();\n this.initTocListener();\n this.initPangu();\n },\n reset: () => {\n this.util.forEach($tocNodes, ($element) => {\n $element.classList.add('d-none');\n });\n }\n });\n if (this.config.encryption?.shortcode) {\n this.decryptor.addEventListener('decrypted', () => {\n this.decryptor.initShortcodes();\n })\n this.decryptor.initShortcodes();\n }\n this.config.encryption?.all && this.decryptor.init();\n }\n\n initMDevtools() {\n const type = this.config?.mDevtools;\n if (typeof window.orientation === 'undefined') {\n return;\n }\n if (type === 'vConsole') {\n const vConsole = new VConsole({\n target: '.widgets',\n theme: this.isDark ? 'dark' : 'light'\n });\n this._vConsoleOnSwitchTheme = this._vConsoleOnSwitchTheme || (() => {\n vConsole.setOption('theme', this.isDark ? 'dark' : 'light');\n });\n this.switchThemeEventSet.add(this._vConsoleOnSwitchTheme);\n }\n if(type === 'eruda') {\n eruda.init({\n defaults: { theme: this.isDark ? 'Dark' : 'Light' }\n });\n this._erudaOnSwitchTheme = this._erudaOnSwitchTheme || (() => {\n eruda.util.evalCss.setTheme(this.isDark ? 'Dark' : 'Light');\n });\n this.switchThemeEventSet.add(this._erudaOnSwitchTheme);\n }\n }\n\n initAutoMark() {\n if (!this.config.autoBookmark) {\n return;\n }\n window.addEventListener('beforeunload', () => {\n window.localStorage?.setItem(`fixit-bookmark/#${location.pathname}`, this.util.getScrollTop());\n });\n const scrollTop = Number(window.localStorage?.getItem(`fixit-bookmark/#${location.pathname}`));\n // If the page opens with a specific hash, just jump out\n if (scrollTop && location.hash === '') {\n window.scrollTo({ \n top: scrollTop,\n behavior: 'smooth'\n });\n }\n }\n\n onScroll() {\n const $headers = [];\n const ACCURACY = 20;\n const $fixedButtons = document.querySelector('.fixed-buttons');\n const $backToTop = document.querySelector('.back-to-top');\n const $readingProgressBar = document.querySelector('.reading-progress-bar');\n if (document.body.dataset.headerDesktop === 'auto') {\n $headers.push(document.getElementById('header-desktop'));\n }\n if (document.body.dataset.headerMobile === 'auto') {\n $headers.push(document.getElementById('header-mobile'));\n }\n // b2t button click event\n $backToTop?.addEventListener('click', () => {\n this.util.scrollIntoView('body');\n });\n window.addEventListener('scroll', (event) => {\n if (this.disableScrollEvent) {\n event.preventDefault();\n return;\n }\n const $mask = document.getElementById('mask');\n this.newScrollTop = this.util.getScrollTop();\n const scroll = this.newScrollTop - this.oldScrollTop;\n // header animation\n this.util.forEach($headers, ($header) => {\n if (scroll > ACCURACY) {\n $header.classList.remove('animate__fadeInDown');\n this.util.animateCSS($header, ['animate__fadeOutUp'], true);\n $mask.click();\n } else if (scroll < -ACCURACY) {\n $header.classList.remove('animate__fadeOutUp');\n this.util.animateCSS($header, ['animate__fadeInDown'], true);\n $mask.click();\n }\n });\n const contentHeight = document.body.scrollHeight - window.innerHeight;\n const scrollPercent = Math.max(Math.min(100 * Math.max(this.newScrollTop, 0) / contentHeight, 100), 0);\n if ($readingProgressBar) {\n $readingProgressBar.style.setProperty('--progress', `${scrollPercent.toFixed(2)}%`);\n }\n // whether to show fixed buttons\n if ($fixedButtons) {\n if (scrollPercent > 1) {\n $fixedButtons.classList.remove('d-none', 'animate__fadeOut');\n this.util.animateCSS($fixedButtons, ['animate__fadeIn'], true);\n } else {\n $fixedButtons.classList.remove('animate__fadeIn');\n this.util.animateCSS($fixedButtons, ['animate__fadeOut'], true, () => {\n $fixedButtons.classList.contains('animate__fadeOut') && $fixedButtons.classList.add('d-none');\n });\n }\n if ($backToTop) {\n $backToTop.querySelector('span').innerText = `${Math.round(scrollPercent)}%`;\n }\n }\n for (let event of this.scrollEventSet) {\n event();\n }\n this.oldScrollTop = this.newScrollTop;\n }, false);\n }\n\n onResize() {\n let resizeBefore = this.util.isMobile();\n window.addEventListener('resize', () => {\n if (!this._resizeTimeout) {\n this._resizeTimeout = window.setTimeout(() => {\n this._resizeTimeout = null;\n for (let event of this.resizeEventSet) {\n event();\n }\n this.initToc();\n this.initMermaid();\n this.initSearch();\n\n const isMobile = this.util.isMobile()\n if (isMobile !== resizeBefore) {\n document.getElementById('mask').click();\n resizeBefore = isMobile;\n }\n }, 100);\n }\n }, false);\n }\n\n onClickMask() {\n document.getElementById('mask').addEventListener('click', () => {\n if (!document.body.classList.contains('blur')) {\n return;\n }\n for (let event of this.clickMaskEventSet) {\n event();\n }\n this.disableScrollEvent = false;\n document.body.classList.remove('blur');\n }, false);\n }\n\n init() {\n try {\n if (this.config.encryption) {\n this.initFixItDecryptor();\n } else if (!this.config.encryption?.all) {\n this.initTwemoji();\n this.initDetails();\n this.initLightGallery();\n this.initHighlight();\n this.initTable();\n this.initHeaderLink();\n this.initMath();\n this.initMermaid();\n this.initEcharts();\n this.initTypeit();\n this.initMapbox();\n this.initPangu();\n }\n this.initThemeColor();\n this.initSVGIcon();\n this.initMenu();\n this.initSwitchTheme();\n this.initSearch();\n this.initCookieconsent();\n this.initSiteTime();\n this.initServiceWorker();\n this.initWatermark();\n this.initMDevtools();\n this.initAutoMark();\n\n window.setTimeout(() => {\n this.initComment();\n if (!this.config.encryption?.all) {\n this.initToc();\n this.initTocListener();\n }\n this.onScroll();\n this.onResize();\n this.onClickMask();\n }, 100);\n } catch (err) {\n console.error(err);\n }\n }\n}\n\nconst themeInit = () => {\n window.fixit = new FixIt();\n window.fixit.init();\n};\n\nif (document.readyState !== 'loading') {\n themeInit();\n} else {\n document.addEventListener('DOMContentLoaded', themeInit, false);\n}\n"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"theme.min.js","names":["Util","elements","handler","i","length","document","documentElement","body","scrollTop","window","matchMedia","matches","element","animation","reserved","callback","Array","isArray","classList","add","addEventListener","remove","once","date","Date","isNaN","getTime","selector","startsWith","getElementById","slice","querySelector","scrollIntoView","behavior","FixIt","now","run","config","siteTime","$runTimes","util","isValidDate","clearInterval","parentNode","runTime","days","Math","floor","hours","minutes","seconds","innerHTML","String","padStart","data","isDark","dataset","theme","newScrollTop","getScrollTop","oldScrollTop","scrollEventSet","Set","resizeEventSet","switchThemeEventSet","clickMaskEventSet","disableScrollEvent","objectFitImages","$meta","_themeColorOnSwitchTheme","content","dark","light","forEach","querySelectorAll","$icon","fetch","svgSrc","then","response","text","svg","$temp","createElement","insertAdjacentHTML","$svg","firstChild","$titleElements","getElementsByTagName","removeChild","parentElement","replaceChild","catch","err","console","error","twemoji","parse","initMenuDesktop","initMenuMobile","$item","style","minWidth","offsetWidth","$menuToggleMobile","$menuMobile","event","toggle","contains","_menuMobileOnClickMask","$nestedItem","getElementsByClassName","$themeSwitch","localStorage","setItem","searchConfig","search","isMobile","_searchMobileOnce","_searchDesktopOnce","maxResultLength","snippetLength","highlightTag","isCaseSensitive","minMatchCharLength","findAllMatches","location","threshold","distance","ignoreLocation","useExtendedSearch","ignoreFieldNorm","suffix","$header","$searchInput","$searchToggle","$searchLoading","$searchClear","display","_searchMobile","autocomplete","setVal","_searchMobileOnClickMask","focus","_searchDesktop","_searchDesktopOnClickMask","value","initAutosearch","autosearch","hint","autoselect","dropdownMenuContainer","clearOnSelected","cssClasses","noPrefix","debug","name","source","query","finish","results","type","lunr","queryHandler","_index","ref","metadata","matchData","_indexData","uri","title","context","position","Object","values","matchPosition","substr","lastIndexOf","keys","key","replace","RegExp","lunrIndexURL","json","indexData","lunrLanguageCode","use","field","boost","metadataWhitelist","record","objectID","_algoliaIndex","algoliasearch","algoliaAppID","algoliaSearchKey","initIndex","algoliaIndex","offset","attributesToHighlight","attributesToSnippet","highlightPreTag","highlightPostTag","hits","_highlightResult","_snippetResult","item","refIndex","indices","substring","tag","fuseIndexURL","options","includeScore","shouldSort","includeMatches","Fuse","templates","suggestion","empty","noResultsFound","footer","searchType","icon","href","on","_event","_dataset","_context","assign","lunrSegmentitURL","script","id","src","async","readyState","onreadystatechange","onload","appendChild","$details","$summary","lightgallery","lightGallery","plugins","lgThumbnail","lgZoom","speed","hideBarsDelay","allowMediaOverlap","exThumbImage","toggleThumb","thumbWidth","thumbHeight","actualSize","showZoomInOutIcons","licenseKey","$preChroma","$chroma","className","$table","$tbody","$tr","$td","$codeElements","$code","toLowerCase","$title","$ellipses","code","editable","$edit","editUnLockTitle","$iconKey","$iconLock","$preChromas","editLockTitle","setAttribute","blur","copyTitle","$copy","innerText","trim","maxShownLines","split","navigator","clipboard","writeText","animateCSS","insertBefore","$wrapper","num","$tocCore","APlayer","$newTocCore","cloneNode","kept","isTocStatic","$tocContentStatic","_tocOnScroll","delete","$tocContentAuto","$toc","visibility","$postMeta","marginTop","offsetTop","clientHeight","$tocLinkElements","$tocLiElements","$headerLinkElements","headerIsFixed","headerDesktop","headerHeight","offsetHeight","marginBottom","$tocLink","$tocLi","INDEX_SPACING","activeTocIndex","thisTop","getBoundingClientRect","top","nextTop","$parent","tocHidden","push","math","renderMathInElement","_mermaidOnSwitchTheme","$mermaidElements","themes","mermaid","initialize","startOnLoad","securityLevel","$mermaid","render","svgCode","echarts","registerTheme","lightTheme","darkTheme","_echartsOnSwitchTheme","_echartsArr","dispose","$echarts","chart","init","renderer","setOption","JSON","_echartsOnResize","resize","mapbox","mapboxgl","accessToken","setRTLTextPlugin","RTLTextPlugin","_mapboxArr","$mapbox","lng","lat","zoom","lightStyle","darkStyle","marked","navigation","geolocate","scale","fullscreen","Map","container","center","minZoom","attributionControl","Marker","setLngLat","addTo","addControl","NavigationControl","GeolocateControl","positionOptions","enableHighAccuracy","showUserLocation","trackUserLocation","ScaleControl","FullscreenControl","MapboxLanguage","_mapboxOnSwitchTheme","getContainer","setStyle","typeit","typeitConfig","cursorSpeed","cursorChar","group","typeone","instance","TypeIt","strings","lifeLike","waitUntilVisible","afterComplete","duration","setTimeout","destroy","go","comments","images","$content","$imgs","$img","$link","append","replaceWith","comment","enable","$viewCommentsBtn","expired","artalk","Artalk","LoadCountWidget","server","site","pvEl","countEl","setDarkMode","initCommentLightGallery","gitalk","decodeURI","Gitalk","valine","Valine","waline","pageview","Waline","pageviewCount","serverURL","path","pathname","utterances","utterancesConfig","repo","issueTerm","label","crossOrigin","_utterancesOnSwitchTheme","message","contentWindow","postMessage","twikoo","twikooConfig","onCommentLoaded","commentCount","getCommentsCount","envId","region","urls","includeReply","twikooCommentCount","count","giscus","giscusConfig","_giscusOnSwitchTheme","setConfig","_this","giscus2parentMsg","$script","removeEventListener","cookieconsent","initialise","setInterval","getSiteTime","hidden","enablePWA","serviceWorker","register","scope","registration","ready","watermark","Watermark","outerHTML","appendTo","appendto","opacity","width","height","rowSpacing","rowspacing","colSpacing","colspacing","rotate","fontSize","fontsize","fontFamily","fontfamily","pangu","spacingElementById","spacingElementByClassName","spacingElementByTagName","autoSpacingPage","$tocNodes","decryptor","FixItDecryptor","decrypted","initTwemoji","initDetails","initLightGallery","initHighlight","initTable","initHeaderLink","initMath","initMermaid","initEcharts","initTypeit","initMapbox","$element","initToc","initTocListener","initPangu","reset","encryption","shortcode","initShortcodes","all","mDevtools","orientation","vConsole","VConsole","target","_vConsoleOnSwitchTheme","eruda","defaults","_erudaOnSwitchTheme","evalCss","setTheme","autoBookmark","Number","getItem","hash","scrollTo","$headers","ACCURACY","$fixedButtons","$backToTop","$readingProgressBar","headerMobile","preventDefault","$mask","scroll","click","contentHeight","scrollHeight","innerHeight","scrollPercent","max","min","setProperty","toFixed","round","resizeBefore","_resizeTimeout","initSearch","initFixItDecryptor","initThemeColor","initSVGIcon","initMenu","initSwitchTheme","initCookieconsent","initSiteTime","initServiceWorker","initWatermark","initMDevtools","initAutoMark","initComment","onScroll","onResize","onClickMask","themeInit","fixit"],"sources":["../../src/js/theme.js"],"sourcesContent":["class Util {\n forEach(elements, handler) {\n elements = elements || [];\n for (let i = 0; i < elements.length; i++) {\n handler(elements[i]);\n }\n }\n\n getScrollTop() {\n return (document.documentElement ?? document.body).scrollTop;\n }\n\n isMobile() {\n return window.matchMedia('only screen and (max-width: 680px)').matches;\n }\n\n isTocStatic() {\n return window.matchMedia('only screen and (max-width: 960px)').matches;\n }\n\n /**\n * add animate to element\n * @param {Element} element animate element\n * @param {String|Array} animation animation name\n * @param {Boolean} reserved reserved animation\n * @param {Function} callback remove callback\n */\n animateCSS(element, animation, reserved, callback) {\n !Array.isArray(animation) && (animation = [animation]);\n element.classList.add('animate__animated', ...animation);\n element.addEventListener('animationend', () => {\n !reserved && element.classList.remove('animate__animated', ...animation);\n typeof callback === 'function' && callback();\n }, { once: true });\n }\n\n /**\n * date validator\n * @param {*} date may be date or not\n * @returns {Boolean}\n */\n isValidDate(date) {\n return date instanceof Date && !isNaN(date.getTime());\n }\n \n /**\n * scroll some element into view\n * @param {String} selector element to scroll\n */\n scrollIntoView(selector) {\n const element = selector.startsWith('#')\n ? document.getElementById(selector.slice(1))\n : document.querySelector(selector);\n element?.scrollIntoView({\n behavior: 'smooth'\n });\n }\n}\n\nclass FixIt {\n constructor() {\n this.config = window.config;\n this.data = this.config.data;\n this.isDark = document.body.dataset.theme === 'dark';\n this.util = new Util();\n this.newScrollTop = this.util.getScrollTop();\n this.oldScrollTop = this.newScrollTop;\n this.scrollEventSet = new Set();\n this.resizeEventSet = new Set();\n this.switchThemeEventSet = new Set();\n this.clickMaskEventSet = new Set();\n this.disableScrollEvent = false;\n window.objectFitImages && objectFitImages();\n }\n\n initThemeColor() {\n const $meta = document.querySelector('[name=\"theme-color\"]');\n if (!$meta) {\n return;\n }\n this._themeColorOnSwitchTheme = this._themeColorOnSwitchTheme || (() => {\n $meta.content = this.isDark ? $meta.dataset.dark : $meta.dataset.light;\n });\n this.switchThemeEventSet.add(this._themeColorOnSwitchTheme);\n this._themeColorOnSwitchTheme();\n }\n\n initSVGIcon() {\n this.util.forEach(document.querySelectorAll('[data-svg-src]'), ($icon) => {\n fetch($icon.dataset.svgSrc)\n .then((response) => response.text())\n .then((svg) => {\n const $temp = document.createElement('div');\n $temp.insertAdjacentHTML('afterbegin', svg);\n const $svg = $temp.firstChild;\n $svg.dataset.svgSrc = $icon.dataset.svgSrc\n $svg.classList.add('icon');\n const $titleElements = $svg.getElementsByTagName('title');\n $titleElements.length && $svg.removeChild($titleElements[0]);\n $icon.parentElement.replaceChild($svg, $icon);\n })\n .catch((err) => {\n console.error(err);\n });\n });\n }\n\n initTwemoji() {\n this.config.twemoji && twemoji.parse(document.body);\n }\n\n initMenu() {\n this.initMenuDesktop();\n this.initMenuMobile();\n }\n\n initMenuDesktop() {\n this.util.forEach(document.querySelectorAll('.has-children, #header-desktop .language'), ($item) => {\n $item.querySelector('.sub-menu').style.minWidth = `${$item.offsetWidth - 8}px`;\n });\n }\n\n initMenuMobile() {\n const $menuToggleMobile = document.getElementById('menu-toggle-mobile');\n const $menuMobile = document.getElementById('menu-mobile');\n $menuToggleMobile.addEventListener('click', (event) => {\n document.body.classList.toggle('blur');\n $menuToggleMobile.classList.toggle('active');\n $menuMobile.classList.toggle('active');\n this.disableScrollEvent = document.body.classList.contains('blur');\n }, false);\n this._menuMobileOnClickMask = this._menuMobileOnClickMask || (() => {\n $menuToggleMobile.classList.remove('active');\n $menuMobile.classList.remove('active');\n });\n this.clickMaskEventSet.add(this._menuMobileOnClickMask);\n // add nested menu toggler\n this.util.forEach(document.querySelectorAll('.menu-item>.nested-item'), ($nestedItem) => {\n $nestedItem.addEventListener('click', function () {\n this.parentNode.querySelector('.sub-menu').classList.toggle('open');\n this.querySelector('.dropdown-icon').classList.toggle('open');\n });\n });\n }\n\n initSwitchTheme() {\n this.util.forEach(document.getElementsByClassName('theme-switch'), ($themeSwitch) => {\n $themeSwitch.addEventListener('click', () => {\n document.body.dataset.theme = document.body.dataset.theme === 'dark' ? 'light' : 'dark';\n this.isDark = !this.isDark;\n window.localStorage?.setItem('theme', this.isDark ? 'dark' : 'light');\n for (let event of this.switchThemeEventSet) {\n event();\n }\n }, false);\n });\n }\n\n initSearch() {\n const searchConfig = this.config.search;\n const isMobile = this.util.isMobile();\n if (!searchConfig || (isMobile && this._searchMobileOnce) || (!isMobile && this._searchDesktopOnce)) {\n return;\n }\n // Initialize default search config\n const maxResultLength = searchConfig.maxResultLength ?? 10;\n const snippetLength = searchConfig.snippetLength ?? 50;\n const highlightTag = searchConfig.highlightTag ?? 'em';\n const isCaseSensitive = searchConfig.isCaseSensitive ?? false;\n const minMatchCharLength = searchConfig.minMatchCharLength ?? 1;\n const findAllMatches = searchConfig.findAllMatches ?? false;\n const location = searchConfig.location ?? 0;\n const threshold = searchConfig.threshold ?? 0.3;\n const distance = searchConfig.distance ?? 100;\n const ignoreLocation = searchConfig.ignoreLocation ?? false;\n const useExtendedSearch = searchConfig.useExtendedSearch ?? false;\n const ignoreFieldNorm = searchConfig.ignoreFieldNorm ?? false;\n const suffix = isMobile ? 'mobile' : 'desktop';\n const $header = document.getElementById(`header-${suffix}`);\n const $searchInput = document.getElementById(`search-input-${suffix}`);\n const $searchToggle = document.getElementById(`search-toggle-${suffix}`);\n const $searchLoading = document.getElementById(`search-loading-${suffix}`);\n const $searchClear = document.getElementById(`search-clear-${suffix}`);\n\n if (isMobile) {\n this._searchMobileOnce = true;\n $searchInput.addEventListener('focus', () => {\n this.disableScrollEvent = true;\n document.body.classList.add('blur');\n $header.classList.add('open');\n }, false);\n document.getElementById('search-cancel-mobile').addEventListener('click', () => {\n this.disableScrollEvent = false;\n $header.classList.remove('open');\n document.body.classList.remove('blur');\n document.getElementById('menu-toggle-mobile').classList.remove('active');\n document.getElementById('menu-mobile').classList.remove('active');\n $searchLoading.style.display = 'none';\n $searchClear.style.display = 'none';\n this._searchMobile && this._searchMobile.autocomplete.setVal('');\n }, false);\n $searchClear.addEventListener('click', () => {\n $searchClear.style.display = 'none';\n this._searchMobile && this._searchMobile.autocomplete.setVal('');\n }, false);\n this._searchMobileOnClickMask = this._searchMobileOnClickMask || (() => {\n $header.classList.remove('open');\n $searchLoading.style.display = 'none';\n $searchClear.style.display = 'none';\n this._searchMobile && this._searchMobile.autocomplete.setVal('');\n });\n this.clickMaskEventSet.add(this._searchMobileOnClickMask);\n } else {\n this._searchDesktopOnce = true;\n $searchToggle.addEventListener('click', () => {\n document.body.classList.add('blur');\n $header.classList.add('open');\n $searchInput.focus();\n }, false);\n $searchClear.addEventListener('click', () => {\n $searchClear.style.display = 'none';\n this._searchDesktop && this._searchDesktop.autocomplete.setVal('');\n }, false);\n this._searchDesktopOnClickMask = this._searchDesktopOnClickMask ||(() => {\n $header.classList.remove('open');\n $searchLoading.style.display = 'none';\n $searchClear.style.display = 'none';\n this._searchDesktop && this._searchDesktop.autocomplete.setVal('');\n });\n this.clickMaskEventSet.add(this._searchDesktopOnClickMask);\n }\n $searchInput.addEventListener('input', () => {\n if ($searchInput.value === '') $searchClear.style.display = 'none';\n else $searchClear.style.display = 'inline';\n }, false);\n\n const initAutosearch = () => {\n const autosearch = autocomplete(`#search-input-${suffix}`,\n {\n hint: false,\n autoselect: true,\n dropdownMenuContainer: `#search-dropdown-${suffix}`,\n clearOnSelected: true,\n cssClasses: { noPrefix: true },\n debug: true\n },\n {\n name: 'search',\n source: (query, callback) => {\n $searchLoading.style.display = 'inline';\n $searchClear.style.display = 'none';\n const finish = (results) => {\n $searchLoading.style.display = 'none';\n $searchClear.style.display = 'inline';\n callback(results);\n };\n if (searchConfig.type === 'lunr') {\n const search = () => {\n if (lunr.queryHandler) {\n query = lunr.queryHandler(query);\n }\n const results = {};\n this._index.search(query).forEach(({ ref, matchData: { metadata } }) => {\n const matchData = this._indexData[ref];\n let { uri, title, content: context } = matchData;\n if (results[uri]) {\n return;\n }\n let position = 0;\n Object.values(metadata).forEach(({ content }) => {\n if (content) {\n const matchPosition = content.position[0][0];\n if (matchPosition < position || position === 0) {\n position = matchPosition;\n }\n }\n });\n position -= snippetLength / 5;\n if (position > 0) {\n position += context.substr(position, 20).lastIndexOf(' ') + 1;\n context = '...' + context.substr(position, snippetLength);\n } else {\n context = context.substr(0, snippetLength);\n }\n Object.keys(metadata).forEach((key) => {\n title = title.replace(new RegExp(`(${key})`, 'gi'), `<${highlightTag}>$1`);\n context = context.replace(new RegExp(`(${key})`, 'gi'), `<${highlightTag}>$1`);\n });\n results[uri] = {\n uri: uri,\n title: title,\n date: matchData.date,\n context: context\n };\n });\n return Object.values(results).slice(0, maxResultLength);\n };\n if (!this._index) {\n fetch(searchConfig.lunrIndexURL)\n .then((response) => response.json())\n .then((data) => {\n const indexData = {};\n this._index = lunr(function () {\n if (searchConfig.lunrLanguageCode) this.use(lunr[searchConfig.lunrLanguageCode]);\n this.ref('objectID');\n this.field('title', { boost: 50 });\n this.field('tags', { boost: 20 });\n this.field('categories', { boost: 20 });\n this.field('content', { boost: 10 });\n this.metadataWhitelist = ['position'];\n data.forEach((record) => {\n indexData[record.objectID] = record;\n this.add(record);\n });\n });\n this._indexData = indexData;\n finish(search());\n })\n .catch((err) => {\n console.error(err);\n finish([]);\n });\n } else finish(search());\n } else if (searchConfig.type === 'algolia') {\n this._algoliaIndex =\n this._algoliaIndex || algoliasearch(searchConfig.algoliaAppID, searchConfig.algoliaSearchKey).initIndex(searchConfig.algoliaIndex);\n this._algoliaIndex\n .search(query, {\n offset: 0,\n length: maxResultLength * 8,\n attributesToHighlight: ['title'],\n attributesToSnippet: [`content:${snippetLength}`],\n highlightPreTag: `<${highlightTag}>`,\n highlightPostTag: ``\n })\n .then(({ hits }) => {\n const results = {};\n hits.forEach(({ uri, date, _highlightResult: { title }, _snippetResult: { content } }) => {\n if (results[uri] && results[uri].context.length > content.value) {\n return;\n }\n results[uri] = {\n uri: uri,\n title: title.value,\n date: date,\n context: content.value\n };\n });\n finish(Object.values(results).slice(0, maxResultLength));\n })\n .catch((err) => {\n console.error(err);\n finish([]);\n });\n } else if (searchConfig.type === 'fuse') {\n const search = () => {\n const results = {};\n window._index.search(query).forEach(({ item, refIndex, matches }) => {\n let title = item.title;\n let content = item.content;\n matches.forEach(({ indices, value, key }) => {\n if (key === 'content') {\n let offset = 0;\n for (let i = 0; i < indices.length; i++) {\n const substr = content.substring(indices[i][0] + offset, indices[i][1] + 1 + offset);\n const tag = `<${highlightTag}>` + substr + ``;\n content = content.substring(0, indices[i][0] + offset) + tag + content.substring(indices[i][1] + 1 + offset, content.length);\n offset += highlightTag.length * 2 + 5;\n }\n } else if (key === 'title') {\n let offset = 0;\n for (let i = 0; i < indices.length; i++) {\n const substr = title.substring(indices[i][0] + offset, indices[i][1] + 1 + offset);\n const tag = `<${highlightTag}>` + substr + ``;\n title = title.substring(0, indices[i][0] + offset) + tag + title.substring(indices[i][1] + 1 + offset, content.length);\n offset += highlightTag.length * 2 + 5;\n }\n }\n });\n results[item.uri] = {\n uri: item.uri,\n title: title,\n date: item.date,\n context: content\n };\n });\n return Object.values(results).slice(0, maxResultLength);\n };\n if (!window._index) {\n fetch(searchConfig.fuseIndexURL)\n .then((response) => response.json())\n .then((data) => {\n const options = {\n isCaseSensitive: isCaseSensitive,\n findAllMatches: findAllMatches,\n minMatchCharLength: minMatchCharLength,\n location: location,\n threshold: threshold,\n distance: distance,\n ignoreLocation: ignoreLocation,\n useExtendedSearch: useExtendedSearch,\n ignoreFieldNorm: ignoreFieldNorm,\n includeScore: false,\n shouldSort: true,\n includeMatches: true,\n keys: ['content', 'title']\n };\n window._index = new Fuse(data, options);\n finish(search());\n })\n .catch((err) => {\n console.error(err);\n finish([]);\n });\n } else finish(search());\n } \n },\n templates: {\n suggestion: ({ title, date, context }) =>\n `
${title}${date}
${context}
`,\n empty: ({ query }) => `
${searchConfig.noResultsFound}: \"${query}\"
`,\n footer: ({}) => {\n const { searchType, icon, href } =\n searchConfig.type === 'algolia'\n ? {\n searchType: 'algolia',\n icon: '',\n href: 'https://www.algolia.com/'\n }\n : (searchConfig.type === 'lunr'\n ? {\n searchType: 'Lunr.js',\n icon: '',\n href: 'https://lunrjs.com/'\n }\n : {\n searchType: 'Fuse.js',\n icon: '',\n href: 'https://fusejs.io/'\n })\n return ``;\n }\n }\n }\n );\n autosearch.on('autocomplete:selected', (_event, suggestion, _dataset, _context) => {\n window.location.assign(suggestion.uri);\n });\n if (isMobile) {\n this._searchMobile = autosearch;\n } else {\n this._searchDesktop = autosearch;\n }\n };\n if (searchConfig.lunrSegmentitURL && !document.getElementById('lunr-segmentit')) {\n const script = document.createElement('script');\n script.id = 'lunr-segmentit';\n script.src = searchConfig.lunrSegmentitURL;\n script.async = true;\n if (script.readyState) {\n script.onreadystatechange = () => {\n if (script.readyState == 'loaded' || script.readyState == 'complete') {\n script.onreadystatechange = null;\n initAutosearch();\n }\n };\n } else {\n script.onload = () => {\n initAutosearch();\n };\n }\n document.body.appendChild(script);\n } else {\n initAutosearch();\n }\n }\n\n initDetails() {\n this.util.forEach(document.getElementsByClassName('details'), ($details) => {\n const $summary = $details.querySelector('.details-summary');\n $summary.addEventListener('click', () => {\n $details.classList.toggle('open');\n }, false);\n });\n }\n\n initLightGallery() {\n if (this.config.lightgallery) {\n lightGallery(document.getElementById('content'), {\n plugins: [lgThumbnail, lgZoom],\n selector: '.lightgallery',\n speed: 400,\n hideBarsDelay: 2000,\n allowMediaOverlap: true,\n exThumbImage: 'data-thumbnail',\n toggleThumb: true,\n thumbWidth: 80,\n thumbHeight: '60px',\n actualSize: false,\n showZoomInOutIcons: true,\n licenseKey: 'none'\n });\n }\n }\n\n initHighlight() {\n this.util.forEach(document.querySelectorAll('.highlight > pre.chroma'), ($preChroma) => {\n const $chroma = document.createElement('div');\n $chroma.className = $preChroma.className;\n const $table = document.createElement('table');\n $chroma.appendChild($table);\n const $tbody = document.createElement('tbody');\n $table.appendChild($tbody);\n const $tr = document.createElement('tr');\n $tbody.appendChild($tr);\n const $td = document.createElement('td');\n $tr.appendChild($td);\n $preChroma.parentElement.replaceChild($chroma, $preChroma);\n $td.appendChild($preChroma);\n });\n this.util.forEach(document.querySelectorAll('.highlight > .chroma'), ($chroma) => {\n const $codeElements = $chroma.querySelectorAll('pre.chroma > code');\n if ($codeElements.length) {\n const $code = $codeElements[$codeElements.length - 1];\n const $header = document.createElement('div');\n $header.className = 'code-header ' + $code.className.toLowerCase();\n // code title\n const $title = document.createElement('span');\n $title.classList.add('code-title');\n $title.insertAdjacentHTML('afterbegin', '');\n $title.addEventListener('click', () => {\n $chroma.classList.toggle('open');\n }, false);\n $header.appendChild($title);\n // ellipses icon\n const $ellipses = document.createElement('span');\n $ellipses.insertAdjacentHTML('afterbegin', '');\n $ellipses.classList.add('ellipses');\n $ellipses.addEventListener('click', () => {\n $chroma.classList.add('open');\n }, false);\n $header.appendChild($ellipses);\n // edit button\n if (this.config.code.editable) {\n const $edit = document.createElement('span');\n $edit.classList.add('edit');\n $edit.insertAdjacentHTML('afterbegin', ``);\n $edit.addEventListener('click', () => {\n const $iconKey = $edit.querySelector('.fa-key');\n const $iconLock = $edit.querySelector('.fa-lock');\n const $preChromas = $edit.parentElement.parentElement.querySelectorAll('pre.chroma');\n const $preChroma = $preChromas.length === 2 ? $preChromas[1] : $preChromas[0];\n if ($iconKey) {\n $iconKey.classList.add('fa-lock');\n $iconKey.classList.remove('fa-key');\n $iconKey.title = this.config.code.editLockTitle;\n $preChroma.setAttribute('contenteditable', true);\n $preChroma.focus();\n } else {\n $iconLock.classList.add('fa-key');\n $iconLock.classList.remove('fa-lock');\n $iconLock.title = this.config.code.editUnLockTitle;\n $preChroma.setAttribute('contenteditable', false);\n $preChroma.blur();\n }\n }, false);\n $header.appendChild($edit);\n }\n // copy button\n if (this.config.code.copyTitle) {\n const $copy = document.createElement('span');\n $copy.insertAdjacentHTML('afterbegin', '');\n $copy.classList.add('copy');\n // remove the leading and trailing whitespace of the code string\n const code = $code.innerText.trim();\n if (this.config.code.maxShownLines < 0 || code.split('\\n').length < this.config.code.maxShownLines + 2) {\n $chroma.classList.add('open');\n }\n $copy.title = this.config.code.copyTitle;\n $copy.addEventListener('click', () => {\n navigator.clipboard.writeText(code).then(() => {\n this.util.animateCSS($code, 'animate__flash');\n }, () => {\n console.error('Clipboard write failed!', 'Your browser does not support clipboard API!');\n });\n }, false);\n $header.appendChild($copy);\n }\n $chroma.insertBefore($header, $chroma.firstChild);\n }\n });\n }\n\n initTable() {\n this.util.forEach(document.querySelectorAll('.content table'), ($table) => {\n const $wrapper = document.createElement('div');\n $wrapper.className = 'table-wrapper';\n $table.parentElement.replaceChild($wrapper, $table);\n $wrapper.appendChild($table);\n });\n }\n\n initHeaderLink() {\n for (let num = 1; num <= 6; num++) {\n this.util.forEach(document.querySelectorAll('.single .content > h' + num), ($header) => {\n $header.classList.add('header-link');\n $header.insertAdjacentHTML('afterbegin', ``);\n });\n }\n }\n /**\n * init table of contents\n */\n initToc() {\n let $tocCore = document.getElementById('TableOfContents');\n if ($tocCore === null) {\n return;\n }\n // It's a dirty hack to fix the bug of APlayer, see https://github.com/hugo-fixit/FixIt/issues/292\n if (typeof APlayer === 'function') {\n const $newTocCore = $tocCore.cloneNode(true);\n $tocCore.parentElement.replaceChild($newTocCore, $tocCore);\n $tocCore = $newTocCore;\n }\n if (document.getElementById('toc-static').dataset.kept === true || this.util.isTocStatic()) {\n const $tocContentStatic = document.getElementById('toc-content-static');\n if ($tocCore.parentElement !== $tocContentStatic) {\n $tocCore.parentElement.removeChild($tocCore);\n $tocContentStatic.appendChild($tocCore);\n }\n this._tocOnScroll && this.scrollEventSet.delete(this._tocOnScroll);\n } else {\n const $tocContentAuto = document.getElementById('toc-content-auto');\n if ($tocCore.parentElement !== $tocContentAuto) {\n $tocCore.parentElement.removeChild($tocCore);\n $tocContentAuto.appendChild($tocCore);\n }\n const $toc = document.getElementById('toc-auto');\n $toc.style.visibility = 'visible';\n this.util.animateCSS($toc, ['animate__fadeIn', 'animate__faster'], true);\n const $postMeta = document.querySelector('.post-meta');\n $toc.style.marginTop = `${$postMeta.offsetTop + $postMeta.clientHeight}px`;\n const $tocLinkElements = $tocCore.querySelectorAll('a:first-child');\n const $tocLiElements = $tocCore.getElementsByTagName('li');\n const $headerLinkElements = document.getElementsByClassName('header-link');\n const headerIsFixed = document.body.dataset.headerDesktop !== 'normal';\n const headerHeight = document.getElementById('header-desktop').offsetHeight;\n document.querySelector('.container').addEventListener('resize', () => {\n $toc.style.marginBottom = `${document.querySelector('.container').clientHeight - document.querySelector('.post-footer').offsetTop}px`;\n });\n this._tocOnScroll = this._tocOnScroll || (() => {\n $toc.style.marginBottom = `${document.querySelector('.container').clientHeight - document.querySelector('.post-footer').offsetTop}px`;\n this.util.forEach($tocLinkElements, ($tocLink) => {\n $tocLink.classList.remove('active');\n });\n this.util.forEach($tocLiElements, ($tocLi) => {\n $tocLi.classList.remove('has-active');\n });\n const INDEX_SPACING = 20 + (headerIsFixed ? headerHeight : 0);\n let activeTocIndex = $headerLinkElements.length - 1;\n for (let i = 0; i < $headerLinkElements.length - 1; i++) {\n const thisTop = $headerLinkElements[i].getBoundingClientRect().top;\n const nextTop = $headerLinkElements[i + 1].getBoundingClientRect().top;\n if ((i == 0 && thisTop > INDEX_SPACING) || (thisTop <= INDEX_SPACING && nextTop > INDEX_SPACING)) {\n activeTocIndex = i;\n break;\n }\n }\n if (activeTocIndex !== -1) {\n $tocLinkElements[activeTocIndex].classList.add('active');\n let $parent = $tocLinkElements[activeTocIndex].parentElement;\n while ($parent !== $tocCore) {\n $parent.classList.add('has-active');\n $parent = $parent.parentElement.parentElement;\n }\n }\n });\n this._tocOnScroll();\n this.scrollEventSet.add(this._tocOnScroll);\n }\n }\n\n initTocListener() {\n const $toc = document.getElementById('toc-auto');\n const $tocContentAuto = document.getElementById('toc-content-auto');\n document.querySelector('#toc-auto>.toc-title')?.addEventListener('click', () => {\n const animation = ['animate__faster'];\n const tocHidden = $toc.classList.contains('toc-hidden');\n animation.push(tocHidden ? 'animate__fadeIn' : 'animate__fadeOut');\n $tocContentAuto.classList.remove(tocHidden ? 'animate__fadeOut' : 'animate__fadeIn');\n this.util.animateCSS($tocContentAuto, animation, true);\n $toc.classList.toggle('toc-hidden');\n }, false);\n }\n\n initMath() {\n if (this.config.math) {\n renderMathInElement(document.body, this.config.math);\n }\n }\n\n initMermaid() {\n this._mermaidOnSwitchTheme = this._mermaidOnSwitchTheme || (() => {\n const $mermaidElements = document.getElementsByClassName('mermaid');\n if ($mermaidElements.length) {\n const themes = this.config.mermaid.themes ?? ['neutral', 'dark'];\n mermaid.initialize({startOnLoad: false, theme: this.isDark ? themes[1] : themes[0], securityLevel: 'loose'});\n this.util.forEach($mermaidElements, $mermaid => {\n mermaid.render('svg-' + $mermaid.id, this.data[$mermaid.id], svgCode => {\n $mermaid.innerHTML = svgCode;\n }, $mermaid);\n });\n }\n });\n this.switchThemeEventSet.add(this._mermaidOnSwitchTheme);\n this._mermaidOnSwitchTheme();\n }\n\n initEcharts() {\n if (!this.config.echarts) {\n return;\n }\n echarts.registerTheme('light', this.config.echarts.lightTheme);\n echarts.registerTheme('dark', this.config.echarts.darkTheme);\n this._echartsOnSwitchTheme = this._echartsOnSwitchTheme || (() => {\n this._echartsArr = this._echartsArr || [];\n for (let i = 0; i < this._echartsArr.length; i++) {\n this._echartsArr[i].dispose();\n }\n this._echartsArr = [];\n this.util.forEach(document.getElementsByClassName('echarts'), ($echarts) => {\n const chart = echarts.init($echarts, this.isDark ? 'dark' : 'light', { renderer: 'svg' });\n chart.setOption(JSON.parse(this.data[$echarts.id]));\n this._echartsArr.push(chart);\n });\n });\n this.switchThemeEventSet.add(this._echartsOnSwitchTheme);\n this._echartsOnSwitchTheme();\n this._echartsOnResize = this._echartsOnResize || (() => {\n for (let i = 0; i < this._echartsArr.length; i++) {\n this._echartsArr[i].resize();\n }\n });\n this.resizeEventSet.add(this._echartsOnResize);\n }\n\n initMapbox() {\n if (this.config.mapbox) {\n mapboxgl.accessToken = this.config.mapbox.accessToken;\n mapboxgl.setRTLTextPlugin(this.config.mapbox.RTLTextPlugin);\n this._mapboxArr = this._mapboxArr || [];\n this.util.forEach(document.getElementsByClassName('mapbox'), ($mapbox) => {\n const { lng, lat, zoom, lightStyle, darkStyle, marked, navigation, geolocate, scale, fullscreen } = this.data[$mapbox.id];\n const mapbox = new mapboxgl.Map({\n container: $mapbox,\n center: [lng, lat],\n zoom: zoom,\n minZoom: 0.2,\n style: this.isDark ? darkStyle : lightStyle,\n attributionControl: false\n });\n if (marked) {\n new mapboxgl.Marker().setLngLat([lng, lat]).addTo(mapbox);\n }\n if (navigation) {\n mapbox.addControl(new mapboxgl.NavigationControl(), 'bottom-right');\n }\n if (geolocate) {\n mapbox.addControl(\n new mapboxgl.GeolocateControl({\n positionOptions: {\n enableHighAccuracy: true\n },\n showUserLocation: true,\n trackUserLocation: true\n }),\n 'bottom-right'\n );\n }\n if (scale) {\n mapbox.addControl(new mapboxgl.ScaleControl());\n }\n if (fullscreen) {\n mapbox.addControl(new mapboxgl.FullscreenControl());\n }\n mapbox.addControl(new MapboxLanguage());\n this._mapboxArr.push(mapbox);\n });\n this._mapboxOnSwitchTheme = this._mapboxOnSwitchTheme || (() => {\n this.util.forEach(this._mapboxArr, (mapbox) => {\n const $mapbox = mapbox.getContainer();\n const { lightStyle, darkStyle } = this.data[$mapbox.id];\n mapbox.setStyle(this.isDark ? darkStyle : lightStyle);\n mapbox.addControl(new MapboxLanguage());\n });\n });\n this.switchThemeEventSet.add(this._mapboxOnSwitchTheme);\n }\n }\n\n initTypeit() {\n if (this.config.typeit) {\n const typeitConfig = this.config.typeit;\n const speed = typeitConfig.speed || 100;\n const cursorSpeed = typeitConfig.cursorSpeed || 1000;\n const cursorChar = typeitConfig.cursorChar || '|';\n Object.values(typeitConfig.data).forEach((group) => {\n const typeone = (i) => {\n const id = group[i];\n const instance = new TypeIt(`#${id}`, {\n strings: this.data[id],\n speed: speed,\n lifeLike: true,\n cursorSpeed: cursorSpeed,\n cursorChar: cursorChar,\n waitUntilVisible: true,\n afterComplete: () => {\n if (i === group.length - 1) {\n if (typeitConfig.duration >= 0) {\n window.setTimeout(() => {\n instance.destroy();\n }, typeitConfig.duration);\n }\n return;\n }\n instance.destroy();\n typeone(i + 1);\n }\n }).go();\n };\n typeone(0);\n });\n }\n }\n\n initCommentLightGallery(comments, images) {\n document.querySelectorAll(comments).forEach(($content) => {\n const $imgs = $content.querySelectorAll(images + ':not([lightgallery-loaded])');\n $imgs.forEach(($img) => {\n $img.setAttribute('lightgallery-loaded', '');\n const $link = document.createElement('a');\n $link.setAttribute('class', 'comment-lightgallery');\n $link.setAttribute('href', $img.src);\n $link.append($img.cloneNode());\n $img.replaceWith($link);\n });\n if ($imgs.length) {\n lightGallery($content, {\n selector: '.comment-lightgallery',\n actualSize: false,\n hideBarsDelay: 2000,\n speed: 400\n });\n }\n });\n }\n\n initComment() {\n if (!this.config.comment?.enable) {\n return;\n }\n // whether to show the view comments button\n if (document.querySelector('#comments')) {\n const $viewCommentsBtn = document.querySelector('.view-comments');\n $viewCommentsBtn.classList.remove('d-none');\n // view comments button click event\n $viewCommentsBtn.addEventListener('click', () => {\n this.util.scrollIntoView('#comments');\n }, false);\n }\n this.config.comment.expired && document.querySelector('#comments').remove();\n if (this.config.comment.artalk) {\n if (this.config.comment.expired) {\n return Artalk.LoadCountWidget({\n server: this.config.comment.artalk.server,\n site: this.config.comment.artalk.site,\n pvEl: this.config.comment.artalk.pvEl,\n countEl: this.config.comment.artalk.countEl\n })\n }\n const artalk = new Artalk(this.config.comment.artalk);\n artalk.setDarkMode(this.isDark);\n this.switchThemeEventSet.add(() => {\n artalk.setDarkMode(this.isDark);\n });\n artalk.on('comments-loaded', () => {\n this.config.comment.artalk.lightgallery && this.initCommentLightGallery('.atk-comment .atk-content', 'img:not([atk-emoticon])');\n });\n return artalk;\n }\n if (this.config.comment.gitalk) {\n this.config.comment.gitalk.body = decodeURI(window.location.href);\n const gitalk = new Gitalk(this.config.comment.gitalk);\n gitalk.render('gitalk');\n return gitalk;\n }\n if (this.config.comment.valine) {\n return new Valine(this.config.comment.valine);\n }\n if (this.config.comment.waline) {\n if (this.config.comment.expired) {\n this.config.comment.waline.pageview && Waline.pageviewCount({\n serverURL: this.config.comment.waline.serverURL,\n path: window.location.pathname\n });\n return;\n }\n return Waline.init(this.config.comment.waline);\n }\n if (this.config.comment.utterances) {\n const utterancesConfig = this.config.comment.utterances;\n const script = document.createElement('script');\n script.src = 'https://utteranc.es/client.js';\n script.setAttribute('repo', utterancesConfig.repo);\n script.setAttribute('issue-term', utterancesConfig.issueTerm);\n if (utterancesConfig.label) script.setAttribute('label', utterancesConfig.label);\n script.setAttribute('theme', this.isDark ? utterancesConfig.darkTheme : utterancesConfig.lightTheme);\n script.crossOrigin = 'anonymous';\n script.async = true;\n document.getElementById('utterances').appendChild(script);\n this._utterancesOnSwitchTheme = this._utterancesOnSwitchTheme || (() => {\n const message = {\n type: 'set-theme',\n theme: this.isDark ? utterancesConfig.darkTheme : utterancesConfig.lightTheme\n };\n document.querySelector('.utterances-frame')?.contentWindow.postMessage(message, 'https://utteranc.es');\n });\n this.switchThemeEventSet.add(this._utterancesOnSwitchTheme);\n return;\n }\n if (this.config.comment.twikoo) {\n const twikooConfig = this.config.comment.twikoo;\n if (twikooConfig.lightgallery) {\n twikooConfig.onCommentLoaded = () => {\n this.initCommentLightGallery('.tk-comments .tk-content', 'img:not(.tk-owo-emotion)');\n };\n }\n twikoo.init(twikooConfig);\n if (twikooConfig.commentCount) {\n // https://twikoo.js.org/api.html#get-comments-count\n twikoo\n .getCommentsCount({\n envId: twikooConfig.envId,\n region: twikooConfig.region,\n urls: [window.location.pathname],\n includeReply: false\n })\n .then(function (response) {\n const twikooCommentCount = document.getElementById('twikoo-comment-count');\n if (twikooCommentCount) twikooCommentCount.innerHTML = response[0].count;\n });\n }\n return;\n }\n if (this.config.comment.giscus) {\n const giscusConfig = this.config.comment.giscus;\n this._giscusOnSwitchTheme = this._giscusOnSwitchTheme || (() => {\n const message = { setConfig: { theme: this.isDark ? giscusConfig.darkTheme : giscusConfig.lightTheme }};\n document.querySelector('.giscus-frame')?.contentWindow.postMessage({ giscus: message }, 'https://giscus.app');\n });\n this.switchThemeEventSet.add(this._giscusOnSwitchTheme);\n const _this = this;\n _this.giscus2parentMsg = window.addEventListener('message', (event) => {\n const $script = document.querySelector('#giscus>script');\n if ($script){\n _this._giscusOnSwitchTheme();\n $script.parentElement.removeChild($script);\n }\n window.removeEventListener('message', _this.giscus2parentMsg);\n });\n return;\n }\n }\n\n initCookieconsent() {\n this.config.cookieconsent && cookieconsent.initialise(this.config.cookieconsent);\n }\n\n getSiteTime = () => {\n let now = new Date();\n let run = new Date(this.config.siteTime);\n let $runTimes = document.querySelector('.run-times');\n if (!this.util.isValidDate(run) || !$runTimes) {\n clearInterval(this.siteTime);\n $runTimes && $runTimes.parentNode.remove();\n return;\n }\n let runTime = (now - run) / 1000,\n days = Math.floor(runTime / 60 / 60 / 24),\n hours = Math.floor(runTime / 60 / 60 - 24 * days),\n minutes = Math.floor(runTime / 60 - 24 * 60 * days - 60 * hours),\n seconds = Math.floor((now - run) / 1000 - 24 * 60 * 60 * days - 60 * 60 * hours - 60 * minutes);\n $runTimes.innerHTML = `${days}, ${String(hours).padStart(2, 0)}:${String(minutes).padStart(2, 0)}:${String(seconds).padStart(2, 0)}`;\n document.querySelector('.site-time .d-none')?.classList.remove('d-none');\n };\n\n initSiteTime() {\n if (this.config.siteTime) {\n this.siteTime = setInterval(this.getSiteTime, 500);\n document.addEventListener('visibilitychange', () => {\n if (document.hidden) {\n return clearInterval(this.siteTime);\n }\n this.siteTime = setInterval(this.getSiteTime, 500);\n }, false);\n }\n }\n\n initServiceWorker() {\n if (this.config.enablePWA && 'serviceWorker' in navigator) {\n navigator.serviceWorker\n .register('/service-worker.min.js', { scope: '/' })\n .then(function (registration) {\n // console.log('Service Worker Registered');\n })\n .catch(function (error) {\n console.error('error: ', error);\n });\n navigator.serviceWorker\n .ready\n .then(function (registration) {\n // console.log('Service Worker Ready');\n });\n }\n }\n\n initWatermark() {\n this.config.watermark?.enable &&\n new Watermark({\n content: this.config.watermark.content || `${document.querySelector('footer .fixit-icon')?.outerHTML ?? ''} FixIt Theme`,\n appendTo: this.config.watermark.appendto || '.wrapper>main',\n opacity: this.config.watermark.opacity,\n width: this.config.watermark.width,\n height: this.config.watermark.height,\n rowSpacing: this.config.watermark.rowspacing,\n colSpacing: this.config.watermark.colspacing,\n rotate: this.config.watermark.rotate,\n fontSize: this.config.watermark.fontsize,\n fontFamily: this.config.watermark.fontfamily\n });\n }\n\n initPangu() {\n if (!this.config.pangu?.enable) {\n return;\n }\n const selector = this.config.pangu.selector;\n if (selector) {\n if (selector.startsWith('#')) {\n pangu.spacingElementById(selector.slice(1));\n } else if (selector.startsWith('.')) {\n pangu.spacingElementByClassName(selector.slice(1));\n } else {\n pangu.spacingElementByTagName(selector)\n }\n return;\n }\n pangu.autoSpacingPage();\n }\n\n initFixItDecryptor() {\n const $tocNodes = document.querySelectorAll('#toc-auto>.d-none, #toc-static.d-none');\n this.decryptor = new FixItDecryptor({\n decrypted: () => {\n this.initTwemoji();\n this.initDetails();\n this.initLightGallery();\n this.initHighlight();\n this.initTable();\n this.initHeaderLink();\n this.initMath();\n this.initMermaid();\n this.initEcharts();\n this.initTypeit();\n this.initMapbox();\n this.util.forEach($tocNodes, ($element) => {\n $element.classList.remove('d-none');\n });\n this.initToc();\n this.initTocListener();\n this.initPangu();\n },\n reset: () => {\n this.util.forEach($tocNodes, ($element) => {\n $element.classList.add('d-none');\n });\n }\n });\n if (this.config.encryption?.shortcode) {\n this.decryptor.addEventListener('decrypted', () => {\n this.decryptor.initShortcodes();\n })\n this.decryptor.initShortcodes();\n }\n this.config.encryption?.all && this.decryptor.init();\n }\n\n initMDevtools() {\n const type = this.config?.mDevtools;\n if (typeof window.orientation === 'undefined') {\n return;\n }\n if (type === 'vConsole') {\n const vConsole = new VConsole({\n target: '.widgets',\n theme: this.isDark ? 'dark' : 'light'\n });\n this._vConsoleOnSwitchTheme = this._vConsoleOnSwitchTheme || (() => {\n vConsole.setOption('theme', this.isDark ? 'dark' : 'light');\n });\n this.switchThemeEventSet.add(this._vConsoleOnSwitchTheme);\n }\n if(type === 'eruda') {\n eruda.init({\n defaults: { theme: this.isDark ? 'Dark' : 'Light' }\n });\n this._erudaOnSwitchTheme = this._erudaOnSwitchTheme || (() => {\n eruda.util.evalCss.setTheme(this.isDark ? 'Dark' : 'Light');\n });\n this.switchThemeEventSet.add(this._erudaOnSwitchTheme);\n }\n }\n\n initAutoMark() {\n if (!this.config.autoBookmark) {\n return;\n }\n window.addEventListener('beforeunload', () => {\n window.localStorage?.setItem(`fixit-bookmark/#${location.pathname}`, this.util.getScrollTop());\n });\n const scrollTop = Number(window.localStorage?.getItem(`fixit-bookmark/#${location.pathname}`));\n // If the page opens with a specific hash, just jump out\n if (scrollTop && location.hash === '') {\n window.scrollTo({ \n top: scrollTop,\n behavior: 'smooth'\n });\n }\n }\n\n onScroll() {\n const $headers = [];\n const ACCURACY = 20;\n const $fixedButtons = document.querySelector('.fixed-buttons');\n const $backToTop = document.querySelector('.back-to-top');\n const $readingProgressBar = document.querySelector('.reading-progress-bar');\n if (document.body.dataset.headerDesktop === 'auto') {\n $headers.push(document.getElementById('header-desktop'));\n }\n if (document.body.dataset.headerMobile === 'auto') {\n $headers.push(document.getElementById('header-mobile'));\n }\n // b2t button click event\n $backToTop?.addEventListener('click', () => {\n this.util.scrollIntoView('body');\n });\n window.addEventListener('scroll', (event) => {\n if (this.disableScrollEvent) {\n event.preventDefault();\n return;\n }\n const $mask = document.getElementById('mask');\n this.newScrollTop = this.util.getScrollTop();\n const scroll = this.newScrollTop - this.oldScrollTop;\n // header animation\n this.util.forEach($headers, ($header) => {\n if (scroll > ACCURACY) {\n $header.classList.remove('animate__fadeInDown');\n this.util.animateCSS($header, ['animate__fadeOutUp'], true);\n $mask.click();\n } else if (scroll < -ACCURACY) {\n $header.classList.remove('animate__fadeOutUp');\n this.util.animateCSS($header, ['animate__fadeInDown'], true);\n $mask.click();\n }\n });\n const contentHeight = document.body.scrollHeight - window.innerHeight;\n const scrollPercent = Math.max(Math.min(100 * Math.max(this.newScrollTop, 0) / contentHeight, 100), 0);\n if ($readingProgressBar) {\n $readingProgressBar.style.setProperty('--progress', `${scrollPercent.toFixed(2)}%`);\n }\n // whether to show fixed buttons\n if ($fixedButtons) {\n if (scrollPercent > 1) {\n $fixedButtons.classList.remove('d-none', 'animate__fadeOut');\n this.util.animateCSS($fixedButtons, ['animate__fadeIn'], true);\n } else {\n $fixedButtons.classList.remove('animate__fadeIn');\n this.util.animateCSS($fixedButtons, ['animate__fadeOut'], true, () => {\n $fixedButtons.classList.contains('animate__fadeOut') && $fixedButtons.classList.add('d-none');\n });\n }\n if ($backToTop) {\n $backToTop.querySelector('span').innerText = `${Math.round(scrollPercent)}%`;\n }\n }\n for (let event of this.scrollEventSet) {\n event();\n }\n this.oldScrollTop = this.newScrollTop;\n }, false);\n }\n\n onResize() {\n let resizeBefore = this.util.isMobile();\n window.addEventListener('resize', () => {\n if (!this._resizeTimeout) {\n this._resizeTimeout = window.setTimeout(() => {\n this._resizeTimeout = null;\n for (let event of this.resizeEventSet) {\n event();\n }\n this.initToc();\n this.initMermaid();\n this.initSearch();\n\n const isMobile = this.util.isMobile()\n if (isMobile !== resizeBefore) {\n document.getElementById('mask').click();\n resizeBefore = isMobile;\n }\n }, 100);\n }\n }, false);\n }\n\n onClickMask() {\n document.getElementById('mask').addEventListener('click', () => {\n if (!document.body.classList.contains('blur')) {\n return;\n }\n for (let event of this.clickMaskEventSet) {\n event();\n }\n this.disableScrollEvent = false;\n document.body.classList.remove('blur');\n }, false);\n }\n\n init() {\n try {\n if (this.config.encryption) {\n this.initFixItDecryptor();\n } else if (!this.config.encryption?.all) {\n this.initTwemoji();\n this.initDetails();\n this.initLightGallery();\n this.initHighlight();\n this.initTable();\n this.initHeaderLink();\n this.initMath();\n this.initMermaid();\n this.initEcharts();\n this.initTypeit();\n this.initMapbox();\n this.initPangu();\n }\n this.initThemeColor();\n this.initSVGIcon();\n this.initMenu();\n this.initSwitchTheme();\n this.initSearch();\n this.initCookieconsent();\n this.initSiteTime();\n this.initServiceWorker();\n this.initWatermark();\n this.initMDevtools();\n this.initAutoMark();\n\n window.setTimeout(() => {\n this.initComment();\n if (!this.config.encryption?.all) {\n this.initToc();\n this.initTocListener();\n }\n this.onScroll();\n this.onResize();\n this.onClickMask();\n }, 100);\n } catch (err) {\n console.error(err);\n }\n }\n}\n\nconst themeInit = () => {\n window.fixit = new FixIt();\n window.fixit.init();\n};\n\nif (document.readyState !== 'loading') {\n themeInit();\n} else {\n document.addEventListener('DOMContentLoaded', themeInit, false);\n}\n"],"mappings":"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"} \ No newline at end of file diff --git a/layouts/partials/head/seo.html b/layouts/partials/head/seo.html index ade1f46d..617539ca 100644 --- a/layouts/partials/head/seo.html +++ b/layouts/partials/head/seo.html @@ -70,6 +70,14 @@ {{- /* Page SEO */ -}} {{- else if .IsPage -}} + {{- $authorName := .Site.Author.name | default (T "single.author") -}} + {{- with .Params.author -}} + {{- if reflect.IsMap . -}} + {{- $authorName = cond (isset . "name") .name $authorName -}} + {{- else -}} + {{- $authorName = . -}} + {{- end -}} + {{- end -}}