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