diff --git a/CHANGELOG.md b/CHANGELOG.md index 7b069b61..9ac8ea10 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,7 +7,8 @@ All notable changes to this project will be documented in this file. > Snapshot: <> -- :sparkles: Feat: add feature post reward support ([#216](https://github.com/hugo-fixit/FixIt/issues/216)) +- :sparkles: Feat: add feature post reward support ([#216](https://github.com/hugo-fixit/FixIt/issues/216), @Lruihao[#234](https://github.com/hugo-fixit/FixIt/pull/234)) +- :sparkles: Feat: add feature end of post flag support ([#236](https://github.com/hugo-fixit/FixIt/issues/236)) - :sparkles: Feat: add params to close wordcount and readingTime in post ([#209](https://github.com/hugo-fixit/FixIt/issues/209)) - :truck: Feat: migrate parameter `params.autoBookmark` to `params.page.autoBookmark` ([#55](https://github.com/hugo-fixit/FixIt/issues/55)) - :zap: Perf: optimize close comment feature when the post has expired ([#204](https://github.com/hugo-fixit/FixIt/issues/204)) diff --git a/assets/css/_page/_single.scss b/assets/css/_page/_single.scss index 5dd053fa..fb2bb894 100644 --- a/assets/css/_page/_single.scss +++ b/assets/css/_page/_single.scss @@ -78,6 +78,15 @@ } } + #content[data-end-flag]:not([data-password])::after { + content: attr(data-end-flag); + display: block; + text-align: center; + color: $global-font-secondary-color; + font-size: 15px; + padding: 5px; + } + .content { > h1, > h2 { diff --git a/assets/js/theme.min.js.map b/assets/js/theme.min.js.map index 27ec30fb..8e4c00e2 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","getAttribute","then","response","text","svg","$temp","createElement","insertAdjacentHTML","$svg","firstChild","setAttribute","$titleElements","getElementsByTagName","removeChild","parentElement","replaceChild","catch","err","console","error","twemoji","parse","initMenuDesktop","initMenuMobile","$item","style","left","getBoundingClientRect","minWidth","offsetWidth","$menuToggleMobile","$menuMobile","event","toggle","contains","_menuMobileOnClickMask","$nestedItem","getElementsByClassName","$themeSwitch","localStorage","setItem","searchConfig","search","isMobile","_searchMobileOnce","_searchDesktopOnce","maxResultLength","snippetLength","highlightTag","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","templates","suggestion","empty","noResultsFound","footer","searchType","icon","href","on","_event","_dataset","_context","location","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","blur","copyTitle","$copy","innerText","trim","maxShownLines","split","navigator","clipboard","writeText","animateCSS","insertBefore","$wrapper","num","$tocCore","isTocStatic","$tocContentStatic","_tocOnScroll","delete","$tocContentAuto","$toc","visibility","$postMeta","marginTop","offsetTop","clientHeight","$tocLinkElements","$tocLiElements","$headerLinkElements","headerIsFixed","headerHeight","offsetHeight","marginBottom","$tocLink","$tocLi","INDEX_SPACING","activeTocIndex","thisTop","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","cloneNode","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","enablePangu","pangu","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","headerDesktop","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.getAttribute('data-svg-src'))\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.setAttribute('data-svg-src', $icon.getAttribute('data-svg-src'));\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 is a dirty hack for fixing sub menu position error in desktop header\n this.util.forEach(document.querySelectorAll('.has-children, #header-desktop .language'), ($item) => {\n $item.addEventListener('mouseover', function () {\n this.querySelector('.sub-menu').style.left = `${this.getBoundingClientRect().left}px`;\n });\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 const maxResultLength = searchConfig.maxResultLength || 10;\n const snippetLength = searchConfig.snippetLength || 50;\n const highlightTag = searchConfig.highlightTag || 'em';\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 }\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 : {\n searchType: 'Lunr.js',\n icon: '',\n href: 'https://lunrjs.com/'\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 const $tocCore = document.getElementById('TableOfContents');\n if ($tocCore === null) {\n return;\n }\n if (document.getElementById('toc-static').getAttribute('date-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 // $toc.style.marginBottom = `${document.querySelector('.container').clientHeight - document.querySelector('.post-footer').offsetTop}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.getAttribute('data-header-desktop') !== '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 if (!this.config.lightGallery) {\n return;\n }\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 }\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 // TODO 待优化:只渲染\n this.config.enablePangu && 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","getAttribute","then","response","text","svg","$temp","createElement","insertAdjacentHTML","$svg","firstChild","setAttribute","$titleElements","getElementsByTagName","removeChild","parentElement","replaceChild","catch","err","console","error","twemoji","parse","initMenuDesktop","initMenuMobile","$item","style","left","getBoundingClientRect","minWidth","offsetWidth","$menuToggleMobile","$menuMobile","event","toggle","contains","_menuMobileOnClickMask","$nestedItem","getElementsByClassName","$themeSwitch","localStorage","setItem","searchConfig","search","isMobile","_searchMobileOnce","_searchDesktopOnce","maxResultLength","snippetLength","highlightTag","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","templates","suggestion","empty","noResultsFound","footer","searchType","icon","href","on","_event","_dataset","_context","location","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","blur","copyTitle","$copy","innerText","trim","maxShownLines","split","navigator","clipboard","writeText","animateCSS","insertBefore","$wrapper","num","$tocCore","isTocStatic","$tocContentStatic","_tocOnScroll","delete","$tocContentAuto","$toc","visibility","$postMeta","marginTop","offsetTop","clientHeight","$tocLinkElements","$tocLiElements","$headerLinkElements","headerIsFixed","headerHeight","offsetHeight","marginBottom","$tocLink","$tocLi","INDEX_SPACING","activeTocIndex","thisTop","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","cloneNode","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","enablePangu","pangu","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","headerDesktop","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.getAttribute('data-svg-src'))\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.setAttribute('data-svg-src', $icon.getAttribute('data-svg-src'));\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 is a dirty hack for fixing sub menu position error in desktop header\n this.util.forEach(document.querySelectorAll('.has-children, #header-desktop .language'), ($item) => {\n $item.addEventListener('mouseover', function () {\n this.querySelector('.sub-menu').style.left = `${this.getBoundingClientRect().left}px`;\n });\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 const maxResultLength = searchConfig.maxResultLength || 10;\n const snippetLength = searchConfig.snippetLength || 50;\n const highlightTag = searchConfig.highlightTag || 'em';\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 }\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 : {\n searchType: 'Lunr.js',\n icon: '',\n href: 'https://lunrjs.com/'\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 const $tocCore = document.getElementById('TableOfContents');\n if ($tocCore === null) {\n return;\n }\n if (document.getElementById('toc-static').getAttribute('date-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.getAttribute('data-header-desktop') !== '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 if (!this.config.lightGallery) {\n return;\n }\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 }\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 // TODO 待优化:只渲染\n this.config.enablePangu && 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/config.toml b/config.toml index 374652d7..96b69fda 100644 --- a/config.toml +++ b/config.toml @@ -342,6 +342,8 @@ wordCount = true # FixIt 0.2.17 | NEW whether to enable readingTime readingTime = true + # FixIt 0.2.17 | NEW end of post flag + endFlag = "" # FixIt 0.2.15 | NEW Repost config [params.page.repost] diff --git a/docs b/docs index e78b9cd8..4826c17d 160000 --- a/docs +++ b/docs @@ -1 +1 @@ -Subproject commit e78b9cd88c00d15fd134d26082382f3e2ccff0d4 +Subproject commit 4826c17d674baef619abf14d4933b9122152b463 diff --git a/layouts/posts/single.html b/layouts/posts/single.html index 6c32f417..1957f43e 100644 --- a/layouts/posts/single.html +++ b/layouts/posts/single.html @@ -176,11 +176,10 @@ (substr $base64EncodeContent $saltLen) -}} {{- end -}} -
{{- if not $params.password -}} {{- /* Expiration Reminder */ -}}