From df23ef2e68e9c55c93dc7be67e3a84abd2c0c361 Mon Sep 17 00:00:00 2001 From: eyllanesc Date: Sun, 28 Nov 2021 01:10:12 -0500 Subject: [PATCH 1/2] anchor tracking implementation --- .gitignore | 3 +++ assets/js/theme.min.js | 2 +- assets/js/theme.min.js.map | 2 +- src/js/theme.js | 39 ++++++++++++++++++++++---------------- 4 files changed, 28 insertions(+), 18 deletions(-) diff --git a/.gitignore b/.gitignore index 51ffa8619..ecc57a079 100644 --- a/.gitignore +++ b/.gitignore @@ -17,3 +17,6 @@ $RECYCLE.BIN/ # Linux .directory + +# Hugo +.hugo_build.lock diff --git a/assets/js/theme.min.js b/assets/js/theme.min.js index fcf6ecc52..48930e1f9 100644 --- a/assets/js/theme.min.js +++ b/assets/js/theme.min.js @@ -1,3 +1,3 @@ -"use strict";function _objectDestructuringEmpty(a){if(null==a)throw new TypeError("Cannot destructure undefined")}function _createForOfIteratorHelper(a,b){var c="undefined"!=typeof Symbol&&a[Symbol.iterator]||a["@@iterator"];if(!c){if(Array.isArray(a)||(c=_unsupportedIterableToArray(a))||b&&a&&"number"==typeof a.length){c&&(a=c);var d=0,e=function(){};return{s:e,n:function n(){return d>=a.length?{done:!0}:{done:!1,value:a[d++]}},e:function e(a){throw a},f:e}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var f,g=!0,h=!1;return{s:function s(){c=c.call(a)},n:function n(){var a=c.next();return g=a.done,a},e:function e(a){h=!0,f=a},f:function f(){try{g||null==c.return||c.return()}finally{if(h)throw f}}}}function _toConsumableArray(a){return _arrayWithoutHoles(a)||_iterableToArray(a)||_unsupportedIterableToArray(a)||_nonIterableSpread()}function _nonIterableSpread(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function _unsupportedIterableToArray(a,b){if(a){if("string"==typeof a)return _arrayLikeToArray(a,b);var c=Object.prototype.toString.call(a).slice(8,-1);return"Object"===c&&a.constructor&&(c=a.constructor.name),"Map"===c||"Set"===c?Array.from(a):"Arguments"===c||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(c)?_arrayLikeToArray(a,b):void 0}}function _iterableToArray(a){if("undefined"!=typeof Symbol&&null!=a[Symbol.iterator]||null!=a["@@iterator"])return Array.from(a)}function _arrayWithoutHoles(a){if(Array.isArray(a))return _arrayLikeToArray(a)}function _arrayLikeToArray(a,b){(null==b||b>a.length)&&(b=a.length);for(var c=0,d=Array(b);c$1")),j=j.replace(new RegExp("(".concat(a,")"),"gi"),"<".concat(e,">$1"))}),a[h]={uri:h,title:i,date:g.date,context:j}}}),Object.values(a).slice(0,c)};window._index?p(q()):fetch(a.lunrIndexURL).then(function(a){return a.json()}).then(function(b){var c={};window._index=lunr(function(){var d=this;a.lunrLanguageCode&&this.use(lunr[a.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"],b.forEach(function(a){c[a.objectID]=a,d.add(a)})}),window._indexData=c,p(q())}).catch(function(a){console.error(a),p([])})}else if("algolia"===a.type)window._algoliaIndex=window._algoliaIndex||algoliasearch(a.algoliaAppID,a.algoliaSearchKey).initIndex(a.algoliaIndex),window._algoliaIndex.search(b,{offset:0,length:8*c,attributesToHighlight:["title"],attributesToRetrieve:["*"],attributesToSnippet:["content:".concat(d)],highlightPreTag:"<".concat(e,">"),highlightPostTag:"")}).then(function(a){var b=a.hits,d={};b.forEach(function(a){var b=a.uri,c=a.date,e=a._highlightResult.title,f=a._snippetResult.content;d[b]&&d[b].context.length>f.value||(d[b]={uri:b,title:e.value,date:c,context:f.value})}),p(Object.values(d).slice(0,c))}).catch(function(a){console.error(a),p([])});else if("fuse"===a.type){var r=function(){var a={};return window._index.search(b).forEach(function(b){var c=b.item,d=b.refIndex,f=b.matches,g=c.title,h=c.content;f.forEach(function(a){var b=a.indices,c=a.value,d=a.key;if("content"===d)for(var f=0,j=0;j")+k+"");h=h.substring(0,b[j][0]+f)+l+h.substring(b[j][1]+1+f,h.length),f+=2*e.length+5}else if("title"===d)for(var m=0,n=0;n")+o+"");g=g.substring(0,b[n][0]+m)+p+g.substring(b[n][1]+1+m,h.length),m+=2*e.length+5}}),a[c.uri]={uri:c.uri,title:g,date:c.date,context:h}}),Object.values(a).slice(0,c)};window._index?p(r()):fetch(a.fuseIndexURL).then(function(a){return a.json()}).then(function(a){window._index=new Fuse(a,{isCaseSensitive:f,findAllMatches:h,minMatchCharLength:g,location:i,threshold:j,distance:k,ignoreLocation:l,useExtendedSearch:m,ignoreFieldNorm:n,includeScore:!1,shouldSort:!0,includeMatches:!0,keys:["content","title"]}),p(r())}).catch(function(a){console.error(a),p([])})}},templates:{suggestion:function suggestion(a){var b=a.title,c=a.date,d=a.context;return"
".concat(b,"").concat(c,"
").concat(d,"
")},empty:function empty(b){var c=b.query;return"
".concat(a.noResultsFound,": \"").concat(c,"\"
")},footer:function footer(b){_objectDestructuringEmpty(b);var c="algolia"===a.type?{searchType:"algolia",icon:"",href:"https://www.algolia.com/"}:"lunr"===a.type?{searchType:"Lunr.js",icon:"",href:"https://lunrjs.com/"}:{searchType:"Fuse.js",icon:"",href:"https://fusejs.io/"},d=c.searchType,e=c.icon,f=c.href;return"")}}});p.on("autocomplete:selected",function(a,b){window.location.assign(b.uri)}),b?window._searchMobile=p:window._searchDesktop=p};if(a.lunrSegmentitURL&&!document.getElementById("lunr-segmentit")){var v=document.createElement("script");v.id="lunr-segmentit",v.type="text/javascript",v.src=a.lunrSegmentitURL,v.async=!0,v.readyState?v.onreadystatechange=function(){("loaded"==v.readyState||"complete"==v.readyState)&&(v.onreadystatechange=null,u())}:v.onload=function(){u()},document.body.appendChild(v)}else u()}}function initDetails(){forEach(document.getElementsByClassName("details"),function(a){var b=a.getElementsByClassName("details-summary")[0];b.addEventListener("click",function(){a.classList.toggle("open")},!1)})}function initLightGallery(){if(window.config.lightGallery)lightGallery(document.getElementById("content"),window.config.lightGallery)}function initHighlight(){forEach(document.querySelectorAll(".highlight > pre.chroma"),function(a){var b=document.createElement("div");b.className=a.className;var c=document.createElement("table");b.appendChild(c);var d=document.createElement("tbody");c.appendChild(d);var e=document.createElement("tr");d.appendChild(e);var f=document.createElement("td");e.appendChild(f),a.parentElement.replaceChild(b,a),f.appendChild(a)}),forEach(document.querySelectorAll(".highlight > .chroma"),function(a){var b=a.querySelectorAll("pre.chroma > code");if(b.length){var c=b[b.length-1],d=document.createElement("div");d.className="code-header "+c.className.toLowerCase();var e=document.createElement("span");e.classList.add("code-title"),e.insertAdjacentHTML("afterbegin",""),e.addEventListener("click",function(){a.classList.toggle("open")},!1),d.appendChild(e);var f=document.createElement("span");f.insertAdjacentHTML("afterbegin",""),f.classList.add("ellipses"),f.addEventListener("click",function(){a.classList.add("open")},!1),d.appendChild(f);var g=document.createElement("span");g.insertAdjacentHTML("afterbegin",""),g.classList.add("copy");var h=c.innerText;if((0>window.config.code.maxShownLines||h.split("\n").length=a;a++)forEach(document.querySelectorAll(".single .content > h"+a),function(a){a.classList.add("headerLink"),a.insertAdjacentHTML("afterbegin",""))})}function initToc(){var a=document.getElementById("TableOfContents");if(null!==a)if(document.getElementById("toc-static").getAttribute("kept")||isTocStatic()){var n=document.getElementById("toc-content-static");a.parentElement!==n&&(a.parentElement.removeChild(a),n.appendChild(a)),window._tocOnScroll&&window.scrollEventSet.delete(window._tocOnScroll)}else{var o=document.getElementById("toc-content-auto");a.parentElement!==o&&(a.parentElement.removeChild(a),o.appendChild(a));var b=document.getElementById("toc-auto"),c=document.getElementsByClassName("page")[0],d=c.getBoundingClientRect();b.style.left="".concat(d.left+d.width+20,"px"),b.style.maxWidth="".concat(window.innerWidth-c.getBoundingClientRect().right-20,"px"),b.style.visibility="visible";var e=a.querySelectorAll("a:first-child"),f=a.getElementsByTagName("li"),g=document.getElementsByClassName("headerLink"),h="normal"!==document.body.getAttribute("header-desktop"),j=document.getElementById("header-desktop").offsetHeight,k=20+(h?j:0),l=b.offsetTop,m=l-k+(h?0:j);window._tocOnScroll=window._tocOnScroll||function(){var c=document.getElementById("post-footer").offsetTop,d=c-b.getBoundingClientRect().height,n=d-k+(h?0:j);window.newScrollTopn?(b.style.position="absolute",b.style.top="".concat(d,"px")):(b.style.position="fixed",b.style.top="".concat(k,"px")),forEach(e,function(a){a.classList.remove("active")}),forEach(f,function(a){a.classList.remove("has-active")});for(var o=20+(h?j:0),p=g.length-1,q=0;qo||r<=o&&s>o){p=q;break}}if(0<=p&&p20?(b.classList.remove("animate__fadeInDown"),animateCSS(b,["animate__fadeOutUp","animate__faster"],!0)):(a<-20||20>=window.newScrollTop)&&(b.classList.remove("animate__fadeOutUp"),animateCSS(b,["animate__fadeInDown","animate__faster"],!0))}),window.newScrollTop>100?c&&a>20?(d.classList.remove("animate__fadeIn"),animateCSS(d,["animate__fadeOut","animate__faster"],!0)):(!c||a<-20)&&(d.style.display="block",d.classList.remove("animate__fadeOut"),animateCSS(d,["animate__fadeIn","animate__faster"],!0)):(!c&&(d.classList.remove("animate__fadeIn"),animateCSS(d,["animate__fadeOut","animate__faster"],!0)),d.style.display="none");var e,f=_createForOfIteratorHelper(window.scrollEventSet);try{for(f.s();!(e=f.n()).done;){var g=e.value;g()}}catch(a){f.e(a)}finally{f.f()}window.oldScrollTop=window.newScrollTop}var b=[],c=document.getElementById("view-comments");"auto"===document.body.getAttribute("header-desktop")&&b.push(document.getElementById("header-desktop")),"auto"===document.body.getAttribute("header-mobile")&&b.push(document.getElementById("header-mobile")),document.getElementById("comments")?(c.href="#comments",c.style.display="block"):c.style.display="null";var d=document.getElementById("fixed-buttons");window.addEventListener("scroll",a,!1),document.addEventListener("pjax:send",function(){window.removeEventListener("scroll",a)})}function onResize(){window.addEventListener("resize",function(){window._resizeTimeout||(window._resizeTimeout=window.setTimeout(function(){window._resizeTimeout=null;var a,b=_createForOfIteratorHelper(window.resizeEventSet);try{for(b.s();!(a=b.n()).done;){var c=a.value;c()}}catch(a){b.e(a)}finally{b.f()}initToc(),initMermaid(),initSearch()},100))},!1)}function onClickMask(){document.getElementById("mask").addEventListener("click",function(){var a,b=_createForOfIteratorHelper(window.clickMaskEventSet);try{for(b.s();!(a=b.n()).done;){var c=a.value;c()}}catch(a){b.e(a)}finally{b.f()}document.body.classList.remove("blur")},!1)}function init(){window.data=window.config.data,window.isDark="light"!==document.body.getAttribute("theme"),window.newScrollTop=getScrollTop(),window.oldScrollTop=window.newScrollTop,window.scrollEventSet=new Set,window.resizeEventSet=new Set,window.switchThemeEventSet=new Set,window.clickMaskEventSet=new Set,window.pjaxSendEventSet=new Set,window.objectFitImages&&objectFitImages(),initSVGIcon(),initTwemoji(),initMenuMobile(),initSwitchTheme(),initSelectTheme(),initMeta(),initSearch(),initDetails(),initLightGallery(),initHighlight(),initTable(),initHeaderLink(),initMath(),initMermaid(),initEcharts(),initTypeit(),initMapbox(),initCookieconsent(),initToc(),initComment(),onScroll(),onResize(),onClickMask()}var themeInit=function(){init()};"loading"===document.readyState?document.addEventListener("DOMContentLoaded",themeInit,!1):themeInit();var pjax=new Pjax({selectors:[".pjax-title","main",".menu-item",".pjax-assets","#fixed-buttons",".search-dropdown"]});document.addEventListener("pjax:success",function(){themeInit()}),document.addEventListener("pjax:send",function(){var a,b=_createForOfIteratorHelper(window.pjaxSendEventSet);try{for(b.s();!(a=b.n()).done;){var f=a.value;f()}}catch(a){b.e(a)}finally{b.f()}var c,d=_createForOfIteratorHelper(window.clickMaskEventSet);try{for(d.s();!(c=d.n()).done;){var g=c.value;g()}}catch(a){d.e(a)}finally{d.f()}document.body.classList.remove("blur"),delete window._tocOnScroll;var e=document.getElementById("content");window.lgData[e.getAttribute("lg-uid")].destroy(!0)}),topbar.config({autoRun:!0,barThickness:3,barColors:{0:"#55bde2"},shadowBlur:0,shadowColor:"rgba(0, 0, 0, .5)",className:"topbar"}),document.addEventListener("pjax:send",topbar.show),document.addEventListener("pjax:complete",topbar.hide),document.addEventListener("pjax:error",topbar.hide); +"use strict";function _objectDestructuringEmpty(a){if(null==a)throw new TypeError("Cannot destructure undefined")}function _createForOfIteratorHelper(a,b){var c="undefined"!=typeof Symbol&&a[Symbol.iterator]||a["@@iterator"];if(!c){if(Array.isArray(a)||(c=_unsupportedIterableToArray(a))||b&&a&&"number"==typeof a.length){c&&(a=c);var d=0,e=function(){};return{s:e,n:function n(){return d>=a.length?{done:!0}:{done:!1,value:a[d++]}},e:function e(a){throw a},f:e}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var f,g=!0,h=!1;return{s:function s(){c=c.call(a)},n:function n(){var a=c.next();return g=a.done,a},e:function e(a){h=!0,f=a},f:function f(){try{g||null==c.return||c.return()}finally{if(h)throw f}}}}function _toConsumableArray(a){return _arrayWithoutHoles(a)||_iterableToArray(a)||_unsupportedIterableToArray(a)||_nonIterableSpread()}function _nonIterableSpread(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function _unsupportedIterableToArray(a,b){if(a){if("string"==typeof a)return _arrayLikeToArray(a,b);var c=Object.prototype.toString.call(a).slice(8,-1);return"Object"===c&&a.constructor&&(c=a.constructor.name),"Map"===c||"Set"===c?Array.from(a):"Arguments"===c||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(c)?_arrayLikeToArray(a,b):void 0}}function _iterableToArray(a){if("undefined"!=typeof Symbol&&null!=a[Symbol.iterator]||null!=a["@@iterator"])return Array.from(a)}function _arrayWithoutHoles(a){if(Array.isArray(a))return _arrayLikeToArray(a)}function _arrayLikeToArray(a,b){(null==b||b>a.length)&&(b=a.length);for(var c=0,d=Array(b);c$1")),j=j.replace(new RegExp("(".concat(a,")"),"gi"),"<".concat(e,">$1"))}),a[h]={uri:h,title:i,date:g.date,context:j}}}),Object.values(a).slice(0,c)};window._index?p(q()):fetch(a.lunrIndexURL).then(function(a){return a.json()}).then(function(b){var c={};window._index=lunr(function(){var d=this;a.lunrLanguageCode&&this.use(lunr[a.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"],b.forEach(function(a){c[a.objectID]=a,d.add(a)})}),window._indexData=c,p(q())}).catch(function(a){console.error(a),p([])})}else if("algolia"===a.type)window._algoliaIndex=window._algoliaIndex||algoliasearch(a.algoliaAppID,a.algoliaSearchKey).initIndex(a.algoliaIndex),window._algoliaIndex.search(b,{offset:0,length:8*c,attributesToHighlight:["title"],attributesToRetrieve:["*"],attributesToSnippet:["content:".concat(d)],highlightPreTag:"<".concat(e,">"),highlightPostTag:"")}).then(function(a){var b=a.hits,d={};b.forEach(function(a){var b=a.uri,c=a.date,e=a._highlightResult.title,f=a._snippetResult.content;d[b]&&d[b].context.length>f.value||(d[b]={uri:b,title:e.value,date:c,context:f.value})}),p(Object.values(d).slice(0,c))}).catch(function(a){console.error(a),p([])});else if("fuse"===a.type){var r=function(){var a={};return window._index.search(b).forEach(function(b){var c=b.item,d=b.refIndex,f=b.matches,g=c.title,h=c.content;f.forEach(function(a){var b=a.indices,c=a.value,d=a.key;if("content"===d)for(var f=0,j=0;j")+k+"");h=h.substring(0,b[j][0]+f)+l+h.substring(b[j][1]+1+f,h.length),f+=2*e.length+5}else if("title"===d)for(var m=0,n=0;n")+o+"");g=g.substring(0,b[n][0]+m)+p+g.substring(b[n][1]+1+m,h.length),m+=2*e.length+5}}),a[c.uri]={uri:c.uri,title:g,date:c.date,context:h}}),Object.values(a).slice(0,c)};window._index?p(r()):fetch(a.fuseIndexURL).then(function(a){return a.json()}).then(function(a){window._index=new Fuse(a,{isCaseSensitive:f,findAllMatches:h,minMatchCharLength:g,location:i,threshold:j,distance:k,ignoreLocation:l,useExtendedSearch:m,ignoreFieldNorm:n,includeScore:!1,shouldSort:!0,includeMatches:!0,keys:["content","title"]}),p(r())}).catch(function(a){console.error(a),p([])})}},templates:{suggestion:function suggestion(a){var b=a.title,c=a.date,d=a.context;return"
".concat(b,"").concat(c,"
").concat(d,"
")},empty:function empty(b){var c=b.query;return"
".concat(a.noResultsFound,": \"").concat(c,"\"
")},footer:function footer(b){_objectDestructuringEmpty(b);var c="algolia"===a.type?{searchType:"algolia",icon:"",href:"https://www.algolia.com/"}:"lunr"===a.type?{searchType:"Lunr.js",icon:"",href:"https://lunrjs.com/"}:{searchType:"Fuse.js",icon:"",href:"https://fusejs.io/"},d=c.searchType,e=c.icon,f=c.href;return"")}}});p.on("autocomplete:selected",function(a,b){window.location.assign(b.uri)}),b?window._searchMobile=p:window._searchDesktop=p};if(a.lunrSegmentitURL&&!document.getElementById("lunr-segmentit")){var v=document.createElement("script");v.id="lunr-segmentit",v.type="text/javascript",v.src=a.lunrSegmentitURL,v.async=!0,v.readyState?v.onreadystatechange=function(){("loaded"==v.readyState||"complete"==v.readyState)&&(v.onreadystatechange=null,u())}:v.onload=function(){u()},document.body.appendChild(v)}else u()}}function initDetails(){forEach(document.getElementsByClassName("details"),function(a){var b=a.getElementsByClassName("details-summary")[0];b.addEventListener("click",function(){a.classList.toggle("open")},!1)})}function initLightGallery(){if(window.config.lightGallery)lightGallery(document.getElementById("content"),window.config.lightGallery)}function initHighlight(){forEach(document.querySelectorAll(".highlight > pre.chroma"),function(a){var b=document.createElement("div");b.className=a.className;var c=document.createElement("table");b.appendChild(c);var d=document.createElement("tbody");c.appendChild(d);var e=document.createElement("tr");d.appendChild(e);var f=document.createElement("td");e.appendChild(f),a.parentElement.replaceChild(b,a),f.appendChild(a)}),forEach(document.querySelectorAll(".highlight > .chroma"),function(a){var b=a.querySelectorAll("pre.chroma > code");if(b.length){var c=b[b.length-1],d=document.createElement("div");d.className="code-header "+c.className.toLowerCase();var e=document.createElement("span");e.classList.add("code-title"),e.insertAdjacentHTML("afterbegin",""),e.addEventListener("click",function(){a.classList.toggle("open")},!1),d.appendChild(e);var f=document.createElement("span");f.insertAdjacentHTML("afterbegin",""),f.classList.add("ellipses"),f.addEventListener("click",function(){a.classList.add("open")},!1),d.appendChild(f);var g=document.createElement("span");g.insertAdjacentHTML("afterbegin",""),g.classList.add("copy");var h=c.innerText;if((0>window.config.code.maxShownLines||h.split("\n").length=a;a++)forEach(document.querySelectorAll(".single .content > h"+a),function(a){a.classList.add("headerLink"),a.insertAdjacentHTML("afterbegin",""))})}function initToc(){var a=document.getElementById("TableOfContents");if(null!==a)if(document.getElementById("toc-static").getAttribute("kept")||isTocStatic()){var n=document.getElementById("toc-content-static");a.parentElement!==n&&(a.parentElement.removeChild(a),n.appendChild(a)),window._tocOnScroll&&window.scrollEventSet.delete(window._tocOnScroll)}else{var o=document.getElementById("toc-content-auto");a.parentElement!==o&&(a.parentElement.removeChild(a),o.appendChild(a));var b=document.getElementById("toc-auto"),c=document.getElementsByClassName("page")[0],d=c.getBoundingClientRect();b.style.left="".concat(d.left+d.width+20,"px"),b.style.maxWidth="".concat(window.innerWidth-c.getBoundingClientRect().right-20,"px"),b.style.visibility="visible";var e=a.querySelectorAll("a:first-child"),f=a.getElementsByTagName("li"),g=document.getElementsByClassName("headerLink"),h="normal"!==document.body.getAttribute("header-desktop"),j=document.getElementById("header-desktop").offsetHeight,k=20+(h?j:0),l=b.offsetTop,m=l-k+(h?0:j);window._tocOnScroll=window._tocOnScroll||function(){var c=document.getElementById("post-footer").offsetTop,d=c-b.getBoundingClientRect().height,n=d-k+(h?0:j);if(window.newScrollTopn?(b.style.position="absolute",b.style.top="".concat(d,"px")):(b.style.position="fixed",b.style.top="".concat(k,"px")),0!==e.length){var o=document.getElementById("content");forEach(e,function(a){a.classList.remove("active")}),forEach(f,function(a){a.classList.remove("has-active")});var p=20+(h?j:0);if(o.getBoundingClientRect().topp){for(var q=g.length-1,r=0;rp){q=r;break}}if(0<=q&&q20?(b.classList.remove("animate__fadeInDown"),animateCSS(b,["animate__fadeOutUp","animate__faster"],!0)):(a<-20||20>=window.newScrollTop)&&(b.classList.remove("animate__fadeOutUp"),animateCSS(b,["animate__fadeInDown","animate__faster"],!0))}),window.newScrollTop>100?c&&a>20?(d.classList.remove("animate__fadeIn"),animateCSS(d,["animate__fadeOut","animate__faster"],!0)):(!c||a<-20)&&(d.style.display="block",d.classList.remove("animate__fadeOut"),animateCSS(d,["animate__fadeIn","animate__faster"],!0)):(!c&&(d.classList.remove("animate__fadeIn"),animateCSS(d,["animate__fadeOut","animate__faster"],!0)),d.style.display="none");var e,f=_createForOfIteratorHelper(window.scrollEventSet);try{for(f.s();!(e=f.n()).done;){var g=e.value;g()}}catch(a){f.e(a)}finally{f.f()}window.oldScrollTop=window.newScrollTop}var b=[],c=document.getElementById("view-comments");"auto"===document.body.getAttribute("header-desktop")&&b.push(document.getElementById("header-desktop")),"auto"===document.body.getAttribute("header-mobile")&&b.push(document.getElementById("header-mobile")),document.getElementById("comments")?(c.href="#comments",c.style.display="block"):c.style.display="null";var d=document.getElementById("fixed-buttons");window.addEventListener("scroll",a,!1),document.addEventListener("pjax:send",function(){window.removeEventListener("scroll",a)})}function onResize(){window.addEventListener("resize",function(){window._resizeTimeout||(window._resizeTimeout=window.setTimeout(function(){window._resizeTimeout=null;var a,b=_createForOfIteratorHelper(window.resizeEventSet);try{for(b.s();!(a=b.n()).done;){var c=a.value;c()}}catch(a){b.e(a)}finally{b.f()}initToc(),initMermaid(),initSearch()},100))},!1)}function onClickMask(){document.getElementById("mask").addEventListener("click",function(){var a,b=_createForOfIteratorHelper(window.clickMaskEventSet);try{for(b.s();!(a=b.n()).done;){var c=a.value;c()}}catch(a){b.e(a)}finally{b.f()}document.body.classList.remove("blur")},!1)}function init(){window.data=window.config.data,window.isDark="light"!==document.body.getAttribute("theme"),window.newScrollTop=getScrollTop(),window.oldScrollTop=window.newScrollTop,window.scrollEventSet=new Set,window.resizeEventSet=new Set,window.switchThemeEventSet=new Set,window.clickMaskEventSet=new Set,window.pjaxSendEventSet=new Set,window.objectFitImages&&objectFitImages(),initSVGIcon(),initTwemoji(),initMenuMobile(),initSwitchTheme(),initSelectTheme(),initMeta(),initSearch(),initDetails(),initLightGallery(),initHighlight(),initTable(),initHeaderLink(),initMath(),initMermaid(),initEcharts(),initTypeit(),initMapbox(),initCookieconsent(),initToc(),initComment(),onScroll(),onResize(),onClickMask()}var themeInit=function(){init()};"loading"===document.readyState?document.addEventListener("DOMContentLoaded",themeInit,!1):themeInit();var pjax=new Pjax({selectors:[".pjax-title","main",".menu-item",".pjax-assets","#fixed-buttons",".search-dropdown"]});document.addEventListener("pjax:success",function(){themeInit()}),document.addEventListener("pjax:send",function(){var a,b=_createForOfIteratorHelper(window.pjaxSendEventSet);try{for(b.s();!(a=b.n()).done;){var f=a.value;f()}}catch(a){b.e(a)}finally{b.f()}var c,d=_createForOfIteratorHelper(window.clickMaskEventSet);try{for(d.s();!(c=d.n()).done;){var g=c.value;g()}}catch(a){d.e(a)}finally{d.f()}document.body.classList.remove("blur"),delete window._tocOnScroll;var e=document.getElementById("content");window.lgData[e.getAttribute("lg-uid")].destroy(!0)}),topbar.config({autoRun:!0,barThickness:3,barColors:{0:"#55bde2"},shadowBlur:0,shadowColor:"rgba(0, 0, 0, .5)",className:"topbar"}),document.addEventListener("pjax:send",topbar.show),document.addEventListener("pjax:complete",topbar.hide),document.addEventListener("pjax:error",topbar.hide); //# 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 15d2586be..affcf0947 100644 --- a/assets/js/theme.min.js.map +++ b/assets/js/theme.min.js.map @@ -1 +1 @@ -{"version":3,"sources":["../../src/js/theme.js"],"names":[],"mappings":"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","file":"theme.min.js","sourcesContent":["function forEach(elements, handler) {\r\n elements = elements || [];\r\n for (let i = 0; i < elements.length; i++) handler(elements[i]);\r\n}\r\n\r\nfunction getScrollTop() {\r\n return (document.documentElement && document.documentElement.scrollTop) || document.body.scrollTop;\r\n}\r\n\r\nfunction isMobileWindow() {\r\n return window.matchMedia('only screen and (max-width: 680px)').matches;\r\n}\r\n\r\nfunction isTocStatic() {\r\n return window.matchMedia('only screen and (max-width: 1000px)').matches;\r\n}\r\n\r\nfunction animateCSS(element, animation, reserved, callback) {\r\n if (!Array.isArray(animation)) animation = [animation];\r\n element.classList.add('animate__animated', ...animation);\r\n const handler = () => {\r\n element.classList.remove('animate__animated', ...animation);\r\n element.removeEventListener('animationend', handler);\r\n if (typeof callback === 'function') callback();\r\n };\r\n if (!reserved) element.addEventListener('animationend', handler, false);\r\n}\r\n\r\n\r\nfunction initSVGIcon() {\r\n forEach(document.querySelectorAll('[data-svg-src]'), $icon => {\r\n fetch($icon.getAttribute('data-svg-src'))\r\n .then(response => response.text())\r\n .then(svg => {\r\n const $temp = document.createElement('div');\r\n $temp.insertAdjacentHTML('afterbegin', svg);\r\n const $svg = $temp.firstChild;\r\n $svg.setAttribute('data-svg-src', $icon.getAttribute('data-svg-src'));\r\n $svg.classList.add('icon');\r\n const $titleElements = $svg.getElementsByTagName('title');\r\n if ($titleElements.length) $svg.removeChild($titleElements[0]);\r\n $icon.parentElement.replaceChild($svg, $icon);\r\n })\r\n .catch(err => { console.error(err); });\r\n });\r\n}\r\n\r\nfunction initTwemoji() {\r\n if (window.config.twemoji) twemoji.parse(document.body);\r\n}\r\n\r\nfunction initMenuMobile() {\r\n const $menuToggleMobile = document.getElementById('menu-toggle-mobile');\r\n const $menuMobile = document.getElementById('menu-mobile');\r\n if (!window.menuToggleMobileEventListener) {\r\n $menuToggleMobile.addEventListener('click', () => {\r\n document.body.classList.toggle('blur');\r\n $menuToggleMobile.classList.toggle('active');\r\n $menuMobile.classList.toggle('active');\r\n }, false);\r\n window.menuToggleMobileEventListener = true;\r\n }\r\n window._menuMobileOnClickMask = (() => {\r\n $menuToggleMobile.classList.remove('active');\r\n $menuMobile.classList.remove('active');\r\n });\r\n window.clickMaskEventSet.add(window._menuMobileOnClickMask);\r\n}\r\n\r\nfunction initSwitchTheme() {\r\n forEach(document.getElementsByClassName('theme-switch'), $themeSwitch => {\r\n $themeSwitch.addEventListener('click', () => {\r\n let currentTheme = document.body.getAttribute('theme');\r\n if (currentTheme === 'dark') {\r\n document.body.setAttribute('theme', 'black');\r\n window.localStorage && localStorage.setItem('theme', 'black');\r\n window.isDark = true;\r\n } else if (currentTheme === 'black') {\r\n document.body.setAttribute('theme', 'light');\r\n window.localStorage && localStorage.setItem('theme', 'light');\r\n window.isDark = false;\r\n } else {\r\n document.body.setAttribute('theme', 'dark');\r\n window.localStorage && localStorage.setItem('theme', 'dark');\r\n window.isDark = true;\r\n }\r\n for (let event of window.switchThemeEventSet) event();\r\n }, false);\r\n });\r\n}\r\n\r\nfunction initSelectTheme() {\r\n forEach(document.getElementsByClassName('color-theme-select'), $themeSelect => {\r\n let currentTheme = document.body.getAttribute('theme');\r\n for (let i, j = 0; i = $themeSelect.options[j]; j++) {\r\n if (i.value == currentTheme) {\r\n $themeSelect.selectedIndex = j;\r\n break;\r\n }\r\n }\r\n $themeSelect.addEventListener('change', () => {\r\n let theme = $themeSelect.value;\r\n window.localStorage && localStorage.setItem('theme', theme);\r\n if (theme != 'auto') {\r\n document.body.setAttribute('theme', theme);\r\n if (theme == 'light') {\r\n window.isDark = false;\r\n } else {\r\n window.isDark = true;\r\n }\r\n } else {\r\n if (window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches) {\r\n document.body.setAttribute('theme', 'dark');\r\n window.isDark = true;\r\n } else {\r\n document.body.setAttribute('theme', 'white');\r\n window.isDark = false;\r\n }\r\n }\r\n for (let event of window.switchThemeEventSet) event();\r\n }, false);\r\n });\r\n}\r\n\r\nfunction initSearch() {\r\n const searchConfig = window.config.search;\r\n const isMobile = isMobileWindow();\r\n if (!searchConfig || isMobile && window._searchMobileOnce || !isMobile && window._searchDesktopOnce) return;\r\n\r\n const maxResultLength = searchConfig.maxResultLength ? searchConfig.maxResultLength : 10;\r\n const snippetLength = searchConfig.snippetLength ? searchConfig.snippetLength : 50;\r\n const highlightTag = searchConfig.highlightTag ? searchConfig.highlightTag : 'em';\r\n const isCaseSensitive = searchConfig.isCaseSensitive ? searchConfig.isCaseSensitive : false;\r\n const minMatchCharLength = searchConfig.minMatchCharLength ? searchConfig.minMatchCharLength : 1;\r\n const findAllMatches = searchConfig.findAllMatches ? searchConfig.findAllMatches : false;\r\n const location = searchConfig.location ? searchConfig.location : 0;\r\n const threshold = searchConfig.threshold ? searchConfig.threshold : 0.3;\r\n const distance = searchConfig.distance ? searchConfig.distance : 100;\r\n const ignoreLocation = searchConfig.ignoreLocation ? searchConfig.ignoreLocation : false;\r\n const useExtendedSearch = searchConfig.useExtendedSearch ? searchConfig.useExtendedSearch : false;\r\n const ignoreFieldNorm = searchConfig.ignoreFieldNorm ? searchConfig.ignoreFieldNorm : false;\r\n const suffix = isMobile ? 'mobile' : 'desktop';\r\n const $header = document.getElementById(`header-${suffix}`);\r\n const $searchInput = document.getElementById(`search-input-${suffix}`);\r\n const $searchToggle = document.getElementById(`search-toggle-${suffix}`);\r\n const $searchLoading = document.getElementById(`search-loading-${suffix}`);\r\n const $searchClear = document.getElementById(`search-clear-${suffix}`);\r\n if (isMobile) {\r\n window._searchMobileOnce = true;\r\n $searchInput.addEventListener('focus', () => {\r\n document.body.classList.add('blur');\r\n $header.classList.add('open');\r\n }, false);\r\n document.getElementById('search-cancel-mobile').addEventListener('click', () => {\r\n $header.classList.remove('open');\r\n document.body.classList.remove('blur');\r\n document.getElementById('menu-toggle-mobile').classList.remove('active');\r\n document.getElementById('menu-mobile').classList.remove('active');\r\n $searchLoading.style.display = 'none';\r\n $searchClear.style.display = 'none';\r\n window._searchMobile && window._searchMobile.autocomplete.setVal('');\r\n }, false);\r\n $searchClear.addEventListener('click', () => {\r\n $searchClear.style.display = 'none';\r\n window._searchMobile && window._searchMobile.autocomplete.setVal('');\r\n }, false);\r\n window._searchMobileOnClickMask = (() => {\r\n $header.classList.remove('open');\r\n $searchLoading.style.display = 'none';\r\n $searchClear.style.display = 'none';\r\n window._searchMobile && window._searchMobile.autocomplete.setVal('');\r\n });\r\n window.clickMaskEventSet.add(window._searchMobileOnClickMask);\r\n window.pjaxSendEventSet.add(window._searchMobileOnClickMask);\r\n } else {\r\n window._searchDesktopOnce = true;\r\n\r\n $searchToggle.addEventListener('click', () => {\r\n document.body.classList.add('blur');\r\n $header.classList.add('open');\r\n $searchInput.focus();\r\n }, false);\r\n $searchClear.addEventListener('click', () => {\r\n $searchClear.style.display = 'none';\r\n window._searchDesktop && window._searchDesktop.autocomplete.setVal('');\r\n }, false);\r\n // Toggle search when Ctrl + K is pressed\r\n document.addEventListener('keydown', e => {\r\n if (e.ctrlKey && e.code == 'KeyK') {\r\n e.preventDefault();\r\n $searchToggle.click();\r\n }\r\n }, false);\r\n window._searchDesktopOnClickMask = (() => {\r\n $header.classList.remove('open');\r\n $searchLoading.style.display = 'none';\r\n $searchClear.style.display = 'none';\r\n window._searchDesktop && window._searchDesktop.autocomplete.setVal('');\r\n });\r\n window.clickMaskEventSet.add(window._searchDesktopOnClickMask);\r\n window.pjaxSendEventSet.add(window._searchDesktopOnClickMask);\r\n window.pjaxSendEventSet.add(() => {window._searchDesktopOnce = false; window._searchMobileOnce = false;});\r\n }\r\n $searchInput.addEventListener('input', () => {\r\n if ($searchInput.value === '') $searchClear.style.display = 'none';\r\n else $searchClear.style.display = 'inline';\r\n }, false);\r\n\r\n const initAutosearch = () => {\r\n const autosearch = autocomplete(`#search-input-${suffix}`, {\r\n hint: false,\r\n autoselect: true,\r\n dropdownMenuContainer: `#search-dropdown-${suffix}`,\r\n clearOnSelected: true,\r\n cssClasses: { noPrefix: true },\r\n debug: true,\r\n }, {\r\n name: 'search',\r\n source: (query, callback) => {\r\n $searchLoading.style.display = 'inline';\r\n $searchClear.style.display = 'none';\r\n const finish = (results) => {\r\n $searchLoading.style.display = 'none';\r\n $searchClear.style.display = 'inline';\r\n callback(results);\r\n };\r\n if (searchConfig.type === 'lunr') {\r\n const search = () => {\r\n if (lunr.queryHandler) query = lunr.queryHandler(query);\r\n const results = {};\r\n window._index.search(query).forEach(({ ref, matchData: { metadata } }) => {\r\n const matchData = window._indexData[ref];\r\n let { uri, title, content: context } = matchData;\r\n if (results[uri]) return;\r\n let position = 0;\r\n Object.values(metadata).forEach(({ content }) => {\r\n if (content) {\r\n const matchPosition = content.position[0][0];\r\n if (matchPosition < position || position === 0) position = matchPosition;\r\n }\r\n });\r\n position -= snippetLength / 5;\r\n if (position > 0) {\r\n position += context.substr(position, 20).lastIndexOf(' ') + 1;\r\n context = '...' + context.substr(position, snippetLength);\r\n } else {\r\n context = context.substr(0, snippetLength);\r\n }\r\n Object.keys(metadata).forEach(key => {\r\n title = title.replace(new RegExp(`(${key})`, 'gi'), `<${highlightTag}>$1`);\r\n context = context.replace(new RegExp(`(${key})`, 'gi'), `<${highlightTag}>$1`);\r\n });\r\n results[uri] = {\r\n 'uri': uri,\r\n 'title': title,\r\n 'date': matchData.date,\r\n 'context': context,\r\n };\r\n });\r\n return Object.values(results).slice(0, maxResultLength);\r\n }\r\n if (!window._index) {\r\n fetch(searchConfig.lunrIndexURL)\r\n .then(response => response.json())\r\n .then(data => {\r\n const indexData = {};\r\n window._index = lunr(function () {\r\n if (searchConfig.lunrLanguageCode) this.use(lunr[searchConfig.lunrLanguageCode]);\r\n this.ref('objectID');\r\n this.field('title', { boost: 50 });\r\n this.field('tags', { boost: 20 });\r\n this.field('categories', { boost: 20 });\r\n this.field('content', { boost: 10 });\r\n this.metadataWhitelist = ['position'];\r\n data.forEach((record) => {\r\n indexData[record.objectID] = record;\r\n this.add(record);\r\n });\r\n });\r\n window._indexData = indexData;\r\n finish(search());\r\n }).catch(err => {\r\n console.error(err);\r\n finish([]);\r\n });\r\n } else finish(search());\r\n } else if (searchConfig.type === 'algolia') {\r\n window._algoliaIndex = window._algoliaIndex || algoliasearch(searchConfig.algoliaAppID, searchConfig.algoliaSearchKey).initIndex(searchConfig.algoliaIndex);\r\n window._algoliaIndex\r\n .search(query, {\r\n offset: 0,\r\n length: maxResultLength * 8,\r\n attributesToHighlight: ['title'],\r\n attributesToRetrieve: ['*'],\r\n attributesToSnippet: [`content:${snippetLength}`],\r\n highlightPreTag: `<${highlightTag}>`,\r\n highlightPostTag: ``,\r\n })\r\n .then(({ hits }) => {\r\n const results = {};\r\n hits.forEach(({ uri, date, _highlightResult: { title }, _snippetResult: { content } }) => {\r\n if (results[uri] && results[uri].context.length > content.value) return;\r\n results[uri] = {\r\n uri: uri,\r\n title: title.value,\r\n date: date,\r\n context: content.value,\r\n };\r\n });\r\n finish(Object.values(results).slice(0, maxResultLength));\r\n })\r\n .catch(err => {\r\n console.error(err);\r\n finish([]);\r\n });\r\n } else if (searchConfig.type === 'fuse') {\r\n const search = () => {\r\n const results = {};\r\n window._index.search(query).forEach(({ item, refIndex, matches }) => {\r\n let title = item.title;\r\n let content = item.content;\r\n matches.forEach(({ indices, value, key }) => {\r\n if (key === 'content') {\r\n let offset = 0;\r\n for (let i = 0; i < indices.length; i++) {\r\n let substr = content.substring(indices[i][0] + offset, indices[i][1] + 1 + offset);\r\n let tag = `<${highlightTag}>` + substr + ``;\r\n content = content.substring(0, indices[i][0] + offset) + tag + content.substring(indices[i][1] + 1 + offset, content.length);\r\n offset += highlightTag.length * 2 + 5;\r\n }\r\n } else if (key === 'title') {\r\n let offset = 0;\r\n for (let i = 0; i < indices.length; i++) {\r\n let substr = title.substring(indices[i][0] + offset, indices[i][1] + 1 + offset);\r\n let tag = `<${highlightTag}>` + substr + ``;\r\n title = title.substring(0, indices[i][0] + offset) + tag + title.substring(indices[i][1] + 1 + offset, content.length);\r\n offset += highlightTag.length * 2 + 5;\r\n\r\n }\r\n }\r\n });\r\n results[item.uri] = {\r\n 'uri': item.uri,\r\n 'title': title,\r\n 'date': item.date,\r\n 'context': content\r\n };\r\n });\r\n return Object.values(results).slice(0, maxResultLength);\r\n }\r\n if (!window._index) {\r\n fetch(searchConfig.fuseIndexURL)\r\n .then(response => response.json())\r\n .then(data => {\r\n const options = {\r\n isCaseSensitive: isCaseSensitive,\r\n findAllMatches: findAllMatches,\r\n minMatchCharLength: minMatchCharLength,\r\n location: location,\r\n threshold: threshold,\r\n distance: distance,\r\n ignoreLocation: ignoreLocation,\r\n useExtendedSearch: useExtendedSearch,\r\n ignoreFieldNorm: ignoreFieldNorm,\r\n includeScore: false,\r\n shouldSort: true,\r\n includeMatches: true,\r\n keys: [\r\n \"content\",\r\n \"title\"\r\n ]\r\n };\r\n window._index = new Fuse(data, options);\r\n finish(search());\r\n }).catch(err => {\r\n console.error(err);\r\n finish([]);\r\n })\r\n } else finish(search());\r\n }\r\n },\r\n templates: {\r\n suggestion: ({ title, date, context }) => `
${title}${date}
${context}
`,\r\n empty: ({ query }) => `
${searchConfig.noResultsFound}: \"${query}\"
`,\r\n footer: ({ }) => {\r\n const { searchType, icon, href } = searchConfig.type === 'algolia' ? {\r\n searchType: 'algolia',\r\n icon: '',\r\n href: 'https://www.algolia.com/',\r\n } : (searchConfig.type === 'lunr' ? {\r\n searchType: 'Lunr.js',\r\n icon: '',\r\n href: 'https://lunrjs.com/',\r\n } : {\r\n searchType: 'Fuse.js',\r\n icon: '',\r\n href: 'https://fusejs.io/',\r\n });\r\n return ``;\r\n },\r\n },\r\n });\r\n autosearch.on('autocomplete:selected', (_event, suggestion, _dataset, _context) => {\r\n window.location.assign(suggestion.uri);\r\n });\r\n if (isMobile) window._searchMobile = autosearch;\r\n else window._searchDesktop = autosearch;\r\n };\r\n if (searchConfig.lunrSegmentitURL && !document.getElementById('lunr-segmentit')) {\r\n const script = document.createElement('script');\r\n script.id = 'lunr-segmentit';\r\n script.type = 'text/javascript';\r\n script.src = searchConfig.lunrSegmentitURL;\r\n script.async = true;\r\n if (script.readyState) {\r\n script.onreadystatechange = () => {\r\n if (script.readyState == 'loaded' || script.readyState == 'complete') {\r\n script.onreadystatechange = null;\r\n initAutosearch();\r\n }\r\n };\r\n } else {\r\n script.onload = () => {\r\n initAutosearch();\r\n };\r\n }\r\n document.body.appendChild(script);\r\n } else initAutosearch();\r\n}\r\n\r\nfunction initDetails() {\r\n forEach(document.getElementsByClassName('details'), $details => {\r\n const $summary = $details.getElementsByClassName('details-summary')[0];\r\n $summary.addEventListener('click', () => {\r\n $details.classList.toggle('open');\r\n }, false);\r\n });\r\n}\r\n\r\nfunction initLightGallery() {\r\n if (window.config.lightGallery) {\r\n const instance = lightGallery(document.getElementById('content'), window.config.lightGallery);\r\n }\r\n}\r\n\r\nfunction initHighlight() {\r\n forEach(document.querySelectorAll('.highlight > pre.chroma'), $preChroma => {\r\n const $chroma = document.createElement('div');\r\n $chroma.className = $preChroma.className;\r\n const $table = document.createElement('table');\r\n $chroma.appendChild($table);\r\n const $tbody = document.createElement('tbody');\r\n $table.appendChild($tbody);\r\n const $tr = document.createElement('tr');\r\n $tbody.appendChild($tr);\r\n const $td = document.createElement('td');\r\n $tr.appendChild($td);\r\n $preChroma.parentElement.replaceChild($chroma, $preChroma);\r\n $td.appendChild($preChroma);\r\n });\r\n forEach(document.querySelectorAll('.highlight > .chroma'), $chroma => {\r\n const $codeElements = $chroma.querySelectorAll('pre.chroma > code');\r\n if ($codeElements.length) {\r\n const $code = $codeElements[$codeElements.length - 1];\r\n const $header = document.createElement('div');\r\n $header.className = 'code-header ' + $code.className.toLowerCase();\r\n const $title = document.createElement('span');\r\n $title.classList.add('code-title');\r\n $title.insertAdjacentHTML('afterbegin', '');\r\n $title.addEventListener('click', () => {\r\n $chroma.classList.toggle('open');\r\n }, false);\r\n $header.appendChild($title);\r\n const $ellipses = document.createElement('span');\r\n $ellipses.insertAdjacentHTML('afterbegin', '');\r\n $ellipses.classList.add('ellipses');\r\n $ellipses.addEventListener('click', () => {\r\n $chroma.classList.add('open');\r\n }, false);\r\n $header.appendChild($ellipses);\r\n const $copy = document.createElement('span');\r\n $copy.insertAdjacentHTML('afterbegin', '');\r\n $copy.classList.add('copy');\r\n const code = $code.innerText;\r\n if (window.config.code.maxShownLines < 0 || code.split('\\n').length < window.config.code.maxShownLines + 2) $chroma.classList.add('open');\r\n if (window.config.code.copyTitle) {\r\n $copy.setAttribute('data-clipboard-text', code);\r\n $copy.title = window.config.code.copyTitle;\r\n const clipboard = new ClipboardJS($copy);\r\n clipboard.on('success', _e => {\r\n animateCSS($code, 'animate__flash');\r\n $copy.firstElementChild.className = \"fas fa-check fa-fw\";\r\n setTimeout(() => {\r\n $copy.firstElementChild.className = \"far fa-copy fa-fw\";\r\n }, 3000);\r\n });\r\n $header.appendChild($copy);\r\n }\r\n $chroma.insertBefore($header, $chroma.firstChild);\r\n }\r\n });\r\n}\r\n\r\nfunction initTable() {\r\n forEach(document.querySelectorAll('.content table'), $table => {\r\n const $wrapper = document.createElement('div');\r\n $wrapper.className = 'table-wrapper';\r\n $table.parentElement.replaceChild($wrapper, $table);\r\n $wrapper.appendChild($table);\r\n });\r\n}\r\n\r\nfunction initHeaderLink() {\r\n for (let num = 1; num <= 6; num++) {\r\n forEach(document.querySelectorAll('.single .content > h' + num), $header => {\r\n $header.classList.add('headerLink');\r\n $header.insertAdjacentHTML('afterbegin', ``);\r\n });\r\n }\r\n}\r\n\r\nfunction initToc() {\r\n const $tocCore = document.getElementById('TableOfContents');\r\n if ($tocCore === null) return;\r\n if (document.getElementById('toc-static').getAttribute('kept') || isTocStatic()) {\r\n const $tocContentStatic = document.getElementById('toc-content-static');\r\n if ($tocCore.parentElement !== $tocContentStatic) {\r\n $tocCore.parentElement.removeChild($tocCore);\r\n $tocContentStatic.appendChild($tocCore);\r\n }\r\n if (window._tocOnScroll) window.scrollEventSet.delete(window._tocOnScroll);\r\n } else {\r\n const $tocContentAuto = document.getElementById('toc-content-auto');\r\n if ($tocCore.parentElement !== $tocContentAuto) {\r\n $tocCore.parentElement.removeChild($tocCore);\r\n $tocContentAuto.appendChild($tocCore);\r\n }\r\n const $toc = document.getElementById('toc-auto');\r\n const $page = document.getElementsByClassName('page')[0];\r\n const rect = $page.getBoundingClientRect();\r\n $toc.style.left = `${rect.left + rect.width + 20}px`;\r\n $toc.style.maxWidth = `${window.innerWidth - $page.getBoundingClientRect().right - 20}px`;\r\n $toc.style.visibility = 'visible';\r\n const $tocLinkElements = $tocCore.querySelectorAll('a:first-child');\r\n const $tocLiElements = $tocCore.getElementsByTagName('li');\r\n const $headerLinkElements = document.getElementsByClassName('headerLink');\r\n const headerIsFixed = document.body.getAttribute('header-desktop') !== 'normal';\r\n const headerHeight = document.getElementById('header-desktop').offsetHeight;\r\n const TOP_SPACING = 20 + (headerIsFixed ? headerHeight : 0);\r\n const minTocTop = $toc.offsetTop;\r\n const minScrollTop = minTocTop - TOP_SPACING + (headerIsFixed ? 0 : headerHeight)\r\n window._tocOnScroll = window._tocOnScroll || (() => {\r\n const footerTop = document.getElementById('post-footer').offsetTop;\r\n const maxTocTop = footerTop - $toc.getBoundingClientRect().height;\r\n const maxScrollTop = maxTocTop - TOP_SPACING + (headerIsFixed ? 0 : headerHeight);\r\n if (window.newScrollTop < minScrollTop) {\r\n $toc.style.position = 'absolute';\r\n $toc.style.top = `${minTocTop}px`;\r\n } else if (window.newScrollTop > maxScrollTop) {\r\n $toc.style.position = 'absolute';\r\n $toc.style.top = `${maxTocTop}px`;\r\n } else {\r\n $toc.style.position = 'fixed';\r\n $toc.style.top = `${TOP_SPACING}px`;\r\n }\r\n\r\n forEach($tocLinkElements, $tocLink => { $tocLink.classList.remove('active'); });\r\n forEach($tocLiElements, $tocLi => { $tocLi.classList.remove('has-active'); });\r\n const INDEX_SPACING = 20 + (headerIsFixed ? headerHeight : 0);\r\n let activeTocIndex = $headerLinkElements.length - 1;\r\n for (let i = 0; i < $headerLinkElements.length - 1; i++) {\r\n const thisTop = $headerLinkElements[i].getBoundingClientRect().top;\r\n const nextTop = $headerLinkElements[i + 1].getBoundingClientRect().top;\r\n if ((i == 0 && thisTop > INDEX_SPACING)\r\n || (thisTop <= INDEX_SPACING && nextTop > INDEX_SPACING)) {\r\n activeTocIndex = i;\r\n break;\r\n }\r\n }\r\n if (activeTocIndex >= 0 && activeTocIndex < $tocLinkElements.length) {\r\n $tocLinkElements[activeTocIndex].classList.add('active');\r\n let $parent = $tocLinkElements[activeTocIndex].parentElement;\r\n while ($parent !== $tocCore) {\r\n $parent.classList.add('has-active');\r\n $parent = $parent.parentElement.parentElement;\r\n }\r\n }\r\n });\r\n window._tocOnScroll();\r\n window.scrollEventSet.add(window._tocOnScroll);\r\n }\r\n}\r\n\r\nfunction initMath() {\r\n if (window.config.math) renderMathInElement(document.body, window.config.math);\r\n}\r\n\r\nfunction initMermaid() {\r\n const $mermaidElements = document.getElementsByClassName('mermaid');\r\n if ($mermaidElements.length) {\r\n mermaid.initialize({ startOnLoad: false, theme: 'default' });\r\n forEach($mermaidElements, $mermaid => {\r\n mermaid.mermaidAPI.render('svg-' + $mermaid.id, window.data[$mermaid.id], svgCode => {\r\n $mermaid.insertAdjacentHTML('afterbegin', svgCode);\r\n document.getElementById('svg-' + $mermaid.id).children[0].remove();\r\n }, $mermaid);\r\n });\r\n }\r\n}\r\n\r\nfunction initEcharts() {\r\n window._echartsOnSwitchTheme = (() => {\r\n window._echartsArr = window._echartsArr || [];\r\n for (let i = 0; i < window._echartsArr.length; i++) {\r\n window._echartsArr[i].dispose();\r\n }\r\n window._echartsArr = [];\r\n forEach(document.getElementsByClassName('echarts'), $echarts => {\r\n const chart = echarts.init($echarts, window.isDark ? 'dark' : 'macarons', { renderer: 'svg' });\r\n chart.setOption(JSON.parse(window.data[$echarts.id]));\r\n window._echartsArr.push(chart);\r\n });\r\n });\r\n window.switchThemeEventSet.add(window._echartsOnSwitchTheme);\r\n window._echartsOnSwitchTheme();\r\n window._echartsOnResize = (() => {\r\n for (let i = 0; i < window._echartsArr.length; i++) {\r\n window._echartsArr[i].resize();\r\n }\r\n });\r\n window.resizeEventSet.add(window._echartsOnResize);\r\n}\r\n\r\nfunction initMapbox() {\r\n if (window.config.mapbox) {\r\n mapboxgl.accessToken = window.config.mapbox.accessToken;\r\n mapboxgl.setRTLTextPlugin(window.config.mapbox.RTLTextPlugin);\r\n window._mapboxArr = window._mapboxArr || [];\r\n forEach(document.getElementsByClassName('mapbox'), $mapbox => {\r\n const { lng, lat, zoom, lightStyle, darkStyle, marked, navigation, geolocate, scale, fullscreen } = window.data[$mapbox.id];\r\n const mapbox = new mapboxgl.Map({\r\n container: $mapbox,\r\n center: [lng, lat],\r\n zoom: zoom,\r\n minZoom: .2,\r\n style: window.isDark ? darkStyle : lightStyle,\r\n attributionControl: false,\r\n });\r\n if (marked) {\r\n new mapboxgl.Marker().setLngLat([lng, lat]).addTo(mapbox);\r\n }\r\n if (navigation) {\r\n mapbox.addControl(new mapboxgl.NavigationControl(), 'bottom-right');\r\n }\r\n if (geolocate) {\r\n mapbox.addControl(new mapboxgl.GeolocateControl({\r\n positionOptions: {\r\n enableHighAccuracy: true,\r\n },\r\n showUserLocation: true,\r\n trackUserLocation: true,\r\n }), 'bottom-right');\r\n }\r\n if (scale) {\r\n mapbox.addControl(new mapboxgl.ScaleControl());\r\n }\r\n if (fullscreen) {\r\n mapbox.addControl(new mapboxgl.FullscreenControl());\r\n }\r\n mapbox.addControl(new MapboxLanguage());\r\n window._mapboxArr.push(mapbox);\r\n });\r\n window._mapboxOnSwitchTheme = (() => {\r\n forEach(window._mapboxArr, mapbox => {\r\n const $mapbox = mapbox.getContainer();\r\n const { lightStyle, darkStyle } = window.data[$mapbox.id];\r\n mapbox.setStyle(window.isDark ? darkStyle : lightStyle);\r\n mapbox.addControl(new MapboxLanguage());\r\n });\r\n });\r\n window.switchThemeEventSet.add(window._mapboxOnSwitchTheme);\r\n }\r\n}\r\n\r\nfunction initTypeit() {\r\n if (window.config.typeit) {\r\n const typeitConfig = window.config.typeit;\r\n const speed = typeitConfig.speed ? typeitConfig.speed : 100;\r\n const cursorSpeed = typeitConfig.cursorSpeed ? typeitConfig.cursorSpeed : 1000;\r\n const cursorChar = typeitConfig.cursorChar ? typeitConfig.cursorChar : '|';\r\n Object.values(typeitConfig.data).forEach(group => {\r\n const typeone = (i) => {\r\n const id = group[i];\r\n if (!document.getElementById(id).hasAttribute(\"data-typeit-id\")) {\r\n const instance = new TypeIt(`#${id}`, {\r\n strings: window.data[id],\r\n speed: speed,\r\n lifeLike: true,\r\n cursorSpeed: cursorSpeed,\r\n cursorChar: cursorChar,\r\n waitUntilVisible: true,\r\n afterComplete: () => {\r\n if (i === group.length - 1) {\r\n if (typeitConfig.duration >= 0) window.setTimeout(() => {\r\n instance.destroy();\r\n }, typeitConfig.duration);\r\n return;\r\n }\r\n instance.destroy();\r\n typeone(i + 1);\r\n },\r\n }).go();\r\n }\r\n };\r\n typeone(0);\r\n });\r\n }\r\n}\r\n\r\nfunction initComment() {\r\n if (window.config.comment) {\r\n if (window.config.comment.gitalk) {\r\n window.config.comment.gitalk.body = decodeURI(window.location.href);\r\n const gitalk = new Gitalk(window.config.comment.gitalk);\r\n gitalk.render('gitalk');\r\n }\r\n if (window.config.comment.valine) new Valine(window.config.comment.valine);\r\n if (window.config.comment.waline) new Waline(window.config.comment.waline);\r\n if (window.config.comment.twikoo) {\r\n twikoo.init(window.config.comment.twikoo);\r\n if (window.config.comment.twikoo.commentCount) {\r\n twikoo.getCommentsCount({\r\n envId: window.config.comment.twikoo.envId,\r\n region: window.config.comment.twikoo.region,\r\n urls: [\r\n window.location.pathname\r\n ],\r\n includeReply: false\r\n }).then(function (res) {\r\n // example: [\r\n // { url: '/2020/10/post-1.html', count: 10 },\r\n // { url: '/2020/11/post-2.html', count: 0 },\r\n // { url: '/2020/12/post-3.html', count: 20 }\r\n // ]\r\n // If there is an element with id=\"twikoo-comment-count\", set its innerHTML to the count of comments\r\n const $twikooCommentCount = document.getElementById('twikoo-comment-count');\r\n if ($twikooCommentCount) $twikooCommentCount.innerHTML = res[0].count;\r\n }).catch(function (err) {\r\n console.error(err);\r\n });\r\n }\r\n } \r\n if (window.config.comment.utterances) {\r\n const utterancesConfig = window.config.comment.utterances;\r\n const script = document.createElement('script');\r\n script.src = 'https://utteranc.es/client.js';\r\n script.type = 'text/javascript';\r\n script.setAttribute('repo', utterancesConfig.repo);\r\n script.setAttribute('issue-term', utterancesConfig.issueTerm);\r\n if (utterancesConfig.label) script.setAttribute('label', utterancesConfig.label);\r\n script.setAttribute('theme', window.isDark ? utterancesConfig.darkTheme : utterancesConfig.lightTheme);\r\n script.crossOrigin = 'anonymous';\r\n script.async = true;\r\n document.getElementById('utterances').appendChild(script);\r\n window._utterancesOnSwitchTheme = (() => {\r\n const message = {\r\n type: 'set-theme',\r\n theme: window.isDark ? utterancesConfig.darkTheme : utterancesConfig.lightTheme,\r\n };\r\n const iframe = document.querySelector('.utterances-frame');\r\n iframe.contentWindow.postMessage(message, 'https://utteranc.es');\r\n });\r\n window.switchThemeEventSet.add(window._utterancesOnSwitchTheme);\r\n }\r\n if (window.config.comment.vssue) {\r\n let vssue = window.config.comment.vssue;\r\n new Vue({\r\n el: vssue.el,\r\n render: h => h('Vssue', {\r\n props: {\r\n title: vssue.title,\r\n options: {\r\n owner: vssue.owner,\r\n repo: vssue.repo,\r\n clientId: vssue.clientId,\r\n clientSecret: vssue.clientSecret,\r\n },\r\n }\r\n })\r\n })\r\n }\r\n if (window.config.comment.remark42) {\r\n let remark42 = window.config.comment.remark42;\r\n var remark_config = {\r\n host: remark42.host,\r\n site_id: remark42.site_id,\r\n components: ['embed'],\r\n max_shown_comments: remark42.max_shown_comments,\r\n theme: window.isDark ? 'dark' : 'light',\r\n locale: remark42.locale,\r\n show_email_subscription: remark42.show_email_subscription,\r\n simple_view: remark42.simple_view\r\n };\r\n window.remark_config = remark_config;\r\n !function(e,n){for(var o=0;o {\r\n if (window.isDark) {\r\n window.REMARK42.changeTheme('dark');\r\n } else {\r\n window.REMARK42.changeTheme('light');\r\n }\r\n });\r\n window.switchThemeEventSet.add(window._remark42OnSwitchTheme);\r\n }\r\n if (window.config.comment.giscus) {\r\n const giscusConfig = window.config.comment.giscus;\r\n const script = document.createElement('script');\r\n script.src = 'https://giscus.app/client.js';\r\n script.type = 'text/javascript';\r\n script.setAttribute('data-repo', giscusConfig.dataRepo);\r\n script.setAttribute('data-repo-id', giscusConfig.dataRepoId);\r\n if (giscusConfig.dataCategory) script.setAttribute('data-category', giscusConfig.dataCategory);\r\n script.setAttribute('data-category-id', giscusConfig.dataCategoryId);\r\n script.setAttribute('data-mapping', giscusConfig.dataMapping);\r\n script.setAttribute('data-reactions-enabled', giscusConfig.dataReactionsEnabled);\r\n script.setAttribute('data-emit-metadata', giscusConfig.dataEmitMetadata);\r\n script.setAttribute('data-theme', window.isDark ? giscusConfig.darkTheme : giscusConfig.lightTheme);\r\n script.crossOrigin = 'anonymous';\r\n script.async = true;\r\n document.getElementById('giscus').appendChild(script);\r\n window._giscusOnSwitchTheme = (() => {\r\n const message = {\r\n giscus: {\r\n setConfig: {\r\n theme: window.isDark ? giscusConfig.darkTheme : giscusConfig.lightTheme,\r\n }\r\n }\r\n };\r\n const iframe = document.querySelector('.giscus-frame');\r\n iframe.contentWindow.postMessage(message, 'https://giscus.app');\r\n });\r\n window.switchThemeEventSet.add(window._giscusOnSwitchTheme);\r\n }\r\n }\r\n}\r\n\r\nfunction initMeta() {\r\n function getMeta(metaName) {\r\n const metas = document.getElementsByTagName('meta');\r\n for (let i = 0; i < metas.length; i++) {\r\n if (metas[i].getAttribute('name') === metaName) {\r\n return metas[i];\r\n }\r\n }\r\n }\r\n let themeColorMeta = getMeta('theme-color');\r\n let metaColors = {\r\n 'light': '#f8f8f8',\r\n 'dark': '#252627',\r\n 'black': '#000000'\r\n }\r\n window._metaThemeColorOnSwitchTheme = (() => {\r\n themeColorMeta.content = metaColors[document.body.getAttribute('theme')];\r\n });\r\n window.switchThemeEventSet.add(window._metaThemeColorOnSwitchTheme);\r\n window._metaThemeColorOnSwitchTheme();\r\n}\r\n\r\nfunction initCookieconsent() {\r\n if (window.config.cookieconsent) {\r\n let container = document.getElementById('cookieconsent-container');\r\n // if there is nothing in the container, then init the cookieconsent\r\n if (container.innerHTML === '') {\r\n window.config.cookieconsent.container = container;\r\n cookieconsent.initialise(window.config.cookieconsent);\r\n }\r\n };\r\n}\r\n\r\nfunction onScroll() {\r\n const $headers = [];\r\n const $viewComments = document.getElementById('view-comments');\r\n if (document.body.getAttribute('header-desktop') === 'auto') $headers.push(document.getElementById('header-desktop'));\r\n if (document.body.getAttribute('header-mobile') === 'auto') $headers.push(document.getElementById('header-mobile'));\r\n if (document.getElementById('comments')) {\r\n $viewComments.href = `#comments`;\r\n $viewComments.style.display = 'block';\r\n } else {\r\n $viewComments.style.display = 'null';\r\n }\r\n const $fixedButtons = document.getElementById('fixed-buttons');\r\n const ACCURACY = 20, MINIMUM = 100;\r\n function handleScrollEvent() {\r\n window.newScrollTop = getScrollTop();\r\n const scroll = window.newScrollTop - window.oldScrollTop;\r\n const isMobile = isMobileWindow();\r\n forEach($headers, $header => {\r\n if (scroll > ACCURACY) {\r\n $header.classList.remove('animate__fadeInDown');\r\n animateCSS($header, ['animate__fadeOutUp', 'animate__faster'], true);\r\n } else if (scroll < - ACCURACY || window.newScrollTop <= 20) {\r\n $header.classList.remove('animate__fadeOutUp');\r\n animateCSS($header, ['animate__fadeInDown', 'animate__faster'], true);\r\n }\r\n });\r\n if (window.newScrollTop > MINIMUM) {\r\n if (isMobile && scroll > ACCURACY) {\r\n $fixedButtons.classList.remove('animate__fadeIn');\r\n animateCSS($fixedButtons, ['animate__fadeOut', 'animate__faster'], true);\r\n } else if (!isMobile || scroll < - ACCURACY) {\r\n $fixedButtons.style.display = 'block';\r\n $fixedButtons.classList.remove('animate__fadeOut');\r\n animateCSS($fixedButtons, ['animate__fadeIn', 'animate__faster'], true);\r\n }\r\n } else {\r\n if (!isMobile) {\r\n $fixedButtons.classList.remove('animate__fadeIn');\r\n animateCSS($fixedButtons, ['animate__fadeOut', 'animate__faster'], true);\r\n }\r\n $fixedButtons.style.display = 'none';\r\n }\r\n for (let event of window.scrollEventSet) event();\r\n window.oldScrollTop = window.newScrollTop;\r\n }\r\n window.addEventListener('scroll', handleScrollEvent, false);\r\n document.addEventListener('pjax:send', function () {\r\n window.removeEventListener('scroll', handleScrollEvent);\r\n });\r\n}\r\n\r\nfunction onResize() {\r\n window.addEventListener('resize', () => {\r\n if (!window._resizeTimeout) {\r\n window._resizeTimeout = window.setTimeout(() => {\r\n window._resizeTimeout = null;\r\n for (let event of window.resizeEventSet) event();\r\n initToc();\r\n initMermaid();\r\n initSearch();\r\n }, 100);\r\n }\r\n }, false);\r\n}\r\n\r\nfunction onClickMask() {\r\n document.getElementById('mask').addEventListener('click', () => {\r\n for (let event of window.clickMaskEventSet) event();\r\n document.body.classList.remove('blur');\r\n }, false);\r\n}\r\n\r\nfunction init() {\r\n window.data = window.config.data;\r\n window.isDark = document.body.getAttribute('theme') !== 'light';\r\n window.newScrollTop = getScrollTop();\r\n window.oldScrollTop = window.newScrollTop;\r\n window.scrollEventSet = new Set();\r\n window.resizeEventSet = new Set();\r\n window.switchThemeEventSet = new Set();\r\n window.clickMaskEventSet = new Set();\r\n window.pjaxSendEventSet = new Set();\r\n if (window.objectFitImages) objectFitImages();\r\n initSVGIcon();\r\n initTwemoji();\r\n initMenuMobile();\r\n initSwitchTheme();\r\n initSelectTheme();\r\n initMeta();\r\n initSearch();\r\n initDetails();\r\n initLightGallery();\r\n initHighlight();\r\n initTable();\r\n initHeaderLink();\r\n initMath();\r\n initMermaid();\r\n initEcharts();\r\n initTypeit();\r\n initMapbox();\r\n initCookieconsent();\r\n initToc();\r\n initComment();\r\n onScroll();\r\n onResize();\r\n onClickMask();\r\n}\r\n\r\nconst themeInit = () => {\r\n init();\r\n};\r\n\r\nif (document.readyState !== 'loading') {\r\n themeInit();\r\n} else {\r\n document.addEventListener('DOMContentLoaded', themeInit, false);\r\n}\r\n\r\nlet pjax = new Pjax({\r\n selectors: [\r\n \".pjax-title\",\r\n \"main\",\r\n \".menu-item\",\r\n \".pjax-assets\",\r\n \"#fixed-buttons\",\r\n \".search-dropdown\",\r\n ]\r\n})\r\n\r\ndocument.addEventListener('pjax:success', function () {\r\n themeInit();\r\n});\r\n\r\ndocument.addEventListener('pjax:send', function () {\r\n for (let event of window.pjaxSendEventSet) event();\r\n for (let event of window.clickMaskEventSet) event();\r\n document.body.classList.remove('blur');\r\n delete window._tocOnScroll;\r\n let el = document.getElementById('content');\r\n window.lgData[el.getAttribute('lg-uid')].destroy(true)\r\n});\r\n\r\ntopbar.config({\r\n autoRun: true,\r\n barThickness: 3,\r\n barColors: {\r\n '0': '#55bde2'\r\n },\r\n shadowBlur: 0,\r\n shadowColor: 'rgba(0, 0, 0, .5)',\r\n className: 'topbar',\r\n})\r\ndocument.addEventListener('pjax:send', topbar.show);\r\ndocument.addEventListener('pjax:complete', topbar.hide);\r\ndocument.addEventListener('pjax:error', topbar.hide);"]} \ No newline at end of file +{"version":3,"sources":["../../src/js/theme.js"],"names":[],"mappings":"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","file":"theme.min.js","sourcesContent":["function forEach(elements, handler) {\n elements = elements || [];\n for (let i = 0; i < elements.length; i++) handler(elements[i]);\n}\n\nfunction getScrollTop() {\n return (document.documentElement && document.documentElement.scrollTop) || document.body.scrollTop;\n}\n\nfunction isMobileWindow() {\n return window.matchMedia('only screen and (max-width: 680px)').matches;\n}\n\nfunction isTocStatic() {\n return window.matchMedia('only screen and (max-width: 1000px)').matches;\n}\n\nfunction animateCSS(element, animation, reserved, callback) {\n if (!Array.isArray(animation)) animation = [animation];\n element.classList.add('animate__animated', ...animation);\n const handler = () => {\n element.classList.remove('animate__animated', ...animation);\n element.removeEventListener('animationend', handler);\n if (typeof callback === 'function') callback();\n };\n if (!reserved) element.addEventListener('animationend', handler, false);\n}\n\n\nfunction initSVGIcon() {\n forEach(document.querySelectorAll('[data-svg-src]'), $icon => {\n fetch($icon.getAttribute('data-svg-src'))\n .then(response => response.text())\n .then(svg => {\n const $temp = document.createElement('div');\n $temp.insertAdjacentHTML('afterbegin', svg);\n const $svg = $temp.firstChild;\n $svg.setAttribute('data-svg-src', $icon.getAttribute('data-svg-src'));\n $svg.classList.add('icon');\n const $titleElements = $svg.getElementsByTagName('title');\n if ($titleElements.length) $svg.removeChild($titleElements[0]);\n $icon.parentElement.replaceChild($svg, $icon);\n })\n .catch(err => { console.error(err); });\n });\n}\n\nfunction initTwemoji() {\n if (window.config.twemoji) twemoji.parse(document.body);\n}\n\nfunction initMenuMobile() {\n const $menuToggleMobile = document.getElementById('menu-toggle-mobile');\n const $menuMobile = document.getElementById('menu-mobile');\n if (!window.menuToggleMobileEventListener) {\n $menuToggleMobile.addEventListener('click', () => {\n document.body.classList.toggle('blur');\n $menuToggleMobile.classList.toggle('active');\n $menuMobile.classList.toggle('active');\n }, false);\n window.menuToggleMobileEventListener = true;\n }\n window._menuMobileOnClickMask = (() => {\n $menuToggleMobile.classList.remove('active');\n $menuMobile.classList.remove('active');\n });\n window.clickMaskEventSet.add(window._menuMobileOnClickMask);\n}\n\nfunction initSwitchTheme() {\n forEach(document.getElementsByClassName('theme-switch'), $themeSwitch => {\n $themeSwitch.addEventListener('click', () => {\n let currentTheme = document.body.getAttribute('theme');\n if (currentTheme === 'dark') {\n document.body.setAttribute('theme', 'black');\n window.localStorage && localStorage.setItem('theme', 'black');\n window.isDark = true;\n } else if (currentTheme === 'black') {\n document.body.setAttribute('theme', 'light');\n window.localStorage && localStorage.setItem('theme', 'light');\n window.isDark = false;\n } else {\n document.body.setAttribute('theme', 'dark');\n window.localStorage && localStorage.setItem('theme', 'dark');\n window.isDark = true;\n }\n for (let event of window.switchThemeEventSet) event();\n }, false);\n });\n}\n\nfunction initSelectTheme() {\n forEach(document.getElementsByClassName('color-theme-select'), $themeSelect => {\n let currentTheme = document.body.getAttribute('theme');\n for (let i, j = 0; i = $themeSelect.options[j]; j++) {\n if (i.value == currentTheme) {\n $themeSelect.selectedIndex = j;\n break;\n }\n }\n $themeSelect.addEventListener('change', () => {\n let theme = $themeSelect.value;\n window.localStorage && localStorage.setItem('theme', theme);\n if (theme != 'auto') {\n document.body.setAttribute('theme', theme);\n if (theme == 'light') {\n window.isDark = false;\n } else {\n window.isDark = true;\n }\n } else {\n if (window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches) {\n document.body.setAttribute('theme', 'dark');\n window.isDark = true;\n } else {\n document.body.setAttribute('theme', 'white');\n window.isDark = false;\n }\n }\n for (let event of window.switchThemeEventSet) event();\n }, false);\n });\n}\n\nfunction initSearch() {\n const searchConfig = window.config.search;\n const isMobile = isMobileWindow();\n if (!searchConfig || isMobile && window._searchMobileOnce || !isMobile && window._searchDesktopOnce) return;\n\n const maxResultLength = searchConfig.maxResultLength ? searchConfig.maxResultLength : 10;\n const snippetLength = searchConfig.snippetLength ? searchConfig.snippetLength : 50;\n const highlightTag = searchConfig.highlightTag ? searchConfig.highlightTag : 'em';\n const isCaseSensitive = searchConfig.isCaseSensitive ? searchConfig.isCaseSensitive : false;\n const minMatchCharLength = searchConfig.minMatchCharLength ? searchConfig.minMatchCharLength : 1;\n const findAllMatches = searchConfig.findAllMatches ? searchConfig.findAllMatches : false;\n const location = searchConfig.location ? searchConfig.location : 0;\n const threshold = searchConfig.threshold ? searchConfig.threshold : 0.3;\n const distance = searchConfig.distance ? searchConfig.distance : 100;\n const ignoreLocation = searchConfig.ignoreLocation ? searchConfig.ignoreLocation : false;\n const useExtendedSearch = searchConfig.useExtendedSearch ? searchConfig.useExtendedSearch : false;\n const ignoreFieldNorm = searchConfig.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 if (isMobile) {\n window._searchMobileOnce = true;\n $searchInput.addEventListener('focus', () => {\n document.body.classList.add('blur');\n $header.classList.add('open');\n }, false);\n document.getElementById('search-cancel-mobile').addEventListener('click', () => {\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 window._searchMobile && window._searchMobile.autocomplete.setVal('');\n }, false);\n $searchClear.addEventListener('click', () => {\n $searchClear.style.display = 'none';\n window._searchMobile && window._searchMobile.autocomplete.setVal('');\n }, false);\n window._searchMobileOnClickMask = (() => {\n $header.classList.remove('open');\n $searchLoading.style.display = 'none';\n $searchClear.style.display = 'none';\n window._searchMobile && window._searchMobile.autocomplete.setVal('');\n });\n window.clickMaskEventSet.add(window._searchMobileOnClickMask);\n window.pjaxSendEventSet.add(window._searchMobileOnClickMask);\n } else {\n window._searchDesktopOnce = true;\n\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 window._searchDesktop && window._searchDesktop.autocomplete.setVal('');\n }, false);\n // Toggle search when Ctrl + K is pressed\n document.addEventListener('keydown', e => {\n if (e.ctrlKey && e.code == 'KeyK') {\n e.preventDefault();\n $searchToggle.click();\n }\n }, false);\n window._searchDesktopOnClickMask = (() => {\n $header.classList.remove('open');\n $searchLoading.style.display = 'none';\n $searchClear.style.display = 'none';\n window._searchDesktop && window._searchDesktop.autocomplete.setVal('');\n });\n window.clickMaskEventSet.add(window._searchDesktopOnClickMask);\n window.pjaxSendEventSet.add(window._searchDesktopOnClickMask);\n window.pjaxSendEventSet.add(() => {window._searchDesktopOnce = false; window._searchMobileOnce = false;});\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 hint: false,\n autoselect: true,\n dropdownMenuContainer: `#search-dropdown-${suffix}`,\n clearOnSelected: true,\n cssClasses: { noPrefix: true },\n debug: true,\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) query = lunr.queryHandler(query);\n const results = {};\n window._index.search(query).forEach(({ ref, matchData: { metadata } }) => {\n const matchData = window._indexData[ref];\n let { uri, title, content: context } = matchData;\n if (results[uri]) return;\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) position = matchPosition;\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 (!window._index) {\n fetch(searchConfig.lunrIndexURL)\n .then(response => response.json())\n .then(data => {\n const indexData = {};\n window._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 window._indexData = indexData;\n finish(search());\n }).catch(err => {\n console.error(err);\n finish([]);\n });\n } else finish(search());\n } else if (searchConfig.type === 'algolia') {\n window._algoliaIndex = window._algoliaIndex || algoliasearch(searchConfig.algoliaAppID, searchConfig.algoliaSearchKey).initIndex(searchConfig.algoliaIndex);\n window._algoliaIndex\n .search(query, {\n offset: 0,\n length: maxResultLength * 8,\n attributesToHighlight: ['title'],\n attributesToRetrieve: ['*'],\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) return;\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 let substr = content.substring(indices[i][0] + offset, indices[i][1] + 1 + offset);\n let 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 let substr = title.substring(indices[i][0] + offset, indices[i][1] + 1 + offset);\n let 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 });\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: [\n \"content\",\n \"title\"\n ]\n };\n window._index = new Fuse(data, options);\n finish(search());\n }).catch(err => {\n console.error(err);\n finish([]);\n })\n } else finish(search());\n }\n },\n templates: {\n suggestion: ({ title, date, context }) => `
${title}${date}
${context}
`,\n empty: ({ query }) => `
${searchConfig.noResultsFound}: \"${query}\"
`,\n footer: ({ }) => {\n const { searchType, icon, href } = searchConfig.type === 'algolia' ? {\n searchType: 'algolia',\n icon: '',\n href: 'https://www.algolia.com/',\n } : (searchConfig.type === 'lunr' ? {\n searchType: 'Lunr.js',\n icon: '',\n href: 'https://lunrjs.com/',\n } : {\n searchType: 'Fuse.js',\n icon: '',\n href: 'https://fusejs.io/',\n });\n return ``;\n },\n },\n });\n autosearch.on('autocomplete:selected', (_event, suggestion, _dataset, _context) => {\n window.location.assign(suggestion.uri);\n });\n if (isMobile) window._searchMobile = autosearch;\n else window._searchDesktop = autosearch;\n };\n if (searchConfig.lunrSegmentitURL && !document.getElementById('lunr-segmentit')) {\n const script = document.createElement('script');\n script.id = 'lunr-segmentit';\n script.type = 'text/javascript';\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 initAutosearch();\n}\n\nfunction initDetails() {\n forEach(document.getElementsByClassName('details'), $details => {\n const $summary = $details.getElementsByClassName('details-summary')[0];\n $summary.addEventListener('click', () => {\n $details.classList.toggle('open');\n }, false);\n });\n}\n\nfunction initLightGallery() {\n if (window.config.lightGallery) {\n const instance = lightGallery(document.getElementById('content'), window.config.lightGallery);\n }\n}\n\nfunction initHighlight() {\n 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 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 const $title = document.createElement('span');\n $title.classList.add('code-title');\n $title.insertAdjacentHTML('afterbegin', '');\n $title.addEventListener('click', () => {\n $chroma.classList.toggle('open');\n }, false);\n $header.appendChild($title);\n 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 const $copy = document.createElement('span');\n $copy.insertAdjacentHTML('afterbegin', '');\n $copy.classList.add('copy');\n const code = $code.innerText;\n if (window.config.code.maxShownLines < 0 || code.split('\\n').length < window.config.code.maxShownLines + 2) $chroma.classList.add('open');\n if (window.config.code.copyTitle) {\n $copy.setAttribute('data-clipboard-text', code);\n $copy.title = window.config.code.copyTitle;\n const clipboard = new ClipboardJS($copy);\n clipboard.on('success', _e => {\n animateCSS($code, 'animate__flash');\n $copy.firstElementChild.className = \"fas fa-check fa-fw\";\n setTimeout(() => {\n $copy.firstElementChild.className = \"far fa-copy fa-fw\";\n }, 3000);\n });\n $header.appendChild($copy);\n }\n $chroma.insertBefore($header, $chroma.firstChild);\n }\n });\n}\n\nfunction initTable() {\n 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\nfunction initHeaderLink() {\n for (let num = 1; num <= 6; num++) {\n forEach(document.querySelectorAll('.single .content > h' + num), $header => {\n $header.classList.add('headerLink');\n $header.insertAdjacentHTML('afterbegin', ``);\n });\n }\n}\n\nfunction initToc() {\n const $tocCore = document.getElementById('TableOfContents');\n if ($tocCore === null) return;\n if (document.getElementById('toc-static').getAttribute('kept') || 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 if (window._tocOnScroll) window.scrollEventSet.delete(window._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 const $page = document.getElementsByClassName('page')[0];\n const rect = $page.getBoundingClientRect();\n $toc.style.left = `${rect.left + rect.width + 20}px`;\n $toc.style.maxWidth = `${window.innerWidth - $page.getBoundingClientRect().right - 20}px`;\n $toc.style.visibility = 'visible';\n const $tocLinkElements = $tocCore.querySelectorAll('a:first-child');\n const $tocLiElements = $tocCore.getElementsByTagName('li');\n const $headerLinkElements = document.getElementsByClassName('headerLink');\n const headerIsFixed = document.body.getAttribute('header-desktop') !== 'normal';\n const headerHeight = document.getElementById('header-desktop').offsetHeight;\n const TOP_SPACING = 20 + (headerIsFixed ? headerHeight : 0);\n const minTocTop = $toc.offsetTop;\n const minScrollTop = minTocTop - TOP_SPACING + (headerIsFixed ? 0 : headerHeight)\n window._tocOnScroll = window._tocOnScroll || (() => {\n const footerTop = document.getElementById('post-footer').offsetTop;\n const maxTocTop = footerTop - $toc.getBoundingClientRect().height;\n const maxScrollTop = maxTocTop - TOP_SPACING + (headerIsFixed ? 0 : headerHeight);\n if (window.newScrollTop < minScrollTop) {\n $toc.style.position = 'absolute';\n $toc.style.top = `${minTocTop}px`;\n } else if (window.newScrollTop > maxScrollTop) {\n $toc.style.position = 'absolute';\n $toc.style.top = `${maxTocTop}px`;\n } else {\n $toc.style.position = 'fixed';\n $toc.style.top = `${TOP_SPACING}px`;\n }\n if ($tocLinkElements.length === 0) return;\n const content = document.getElementById('content');\n forEach($tocLinkElements, $tocLink => { $tocLink.classList.remove('active'); });\n forEach($tocLiElements, $tocLi => { $tocLi.classList.remove('has-active'); });\n const INDEX_SPACING = 20 + (headerIsFixed ? headerHeight : 0);\n if (content.getBoundingClientRect().top < INDEX_SPACING\n && content.getBoundingClientRect().bottom > INDEX_SPACING) {\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 (thisTop <= INDEX_SPACING && nextTop > INDEX_SPACING) {\n activeTocIndex = i;\n break;\n }\n }\n if (activeTocIndex >= 0 && activeTocIndex < $tocLinkElements.length) {\n $tocLinkElements[activeTocIndex].classList.add('active');\n history.replaceState(history.state, null, $tocLinkElements[activeTocIndex].href);\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 else {\n history.replaceState(history.state, null, ' ');\n }\n });\n window._tocOnScroll();\n window.scrollEventSet.add(window._tocOnScroll);\n }\n}\n\nfunction initMath() {\n if (window.config.math) renderMathInElement(document.body, window.config.math);\n}\n\nfunction initMermaid() {\n const $mermaidElements = document.getElementsByClassName('mermaid');\n if ($mermaidElements.length) {\n mermaid.initialize({ startOnLoad: false, theme: 'default' });\n forEach($mermaidElements, $mermaid => {\n mermaid.mermaidAPI.render('svg-' + $mermaid.id, window.data[$mermaid.id], svgCode => {\n $mermaid.insertAdjacentHTML('afterbegin', svgCode);\n document.getElementById('svg-' + $mermaid.id).children[0].remove();\n }, $mermaid);\n });\n }\n}\n\nfunction initEcharts() {\n window._echartsOnSwitchTheme = (() => {\n window._echartsArr = window._echartsArr || [];\n for (let i = 0; i < window._echartsArr.length; i++) {\n window._echartsArr[i].dispose();\n }\n window._echartsArr = [];\n forEach(document.getElementsByClassName('echarts'), $echarts => {\n const chart = echarts.init($echarts, window.isDark ? 'dark' : 'macarons', { renderer: 'svg' });\n chart.setOption(JSON.parse(window.data[$echarts.id]));\n window._echartsArr.push(chart);\n });\n });\n window.switchThemeEventSet.add(window._echartsOnSwitchTheme);\n window._echartsOnSwitchTheme();\n window._echartsOnResize = (() => {\n for (let i = 0; i < window._echartsArr.length; i++) {\n window._echartsArr[i].resize();\n }\n });\n window.resizeEventSet.add(window._echartsOnResize);\n}\n\nfunction initMapbox() {\n if (window.config.mapbox) {\n mapboxgl.accessToken = window.config.mapbox.accessToken;\n mapboxgl.setRTLTextPlugin(window.config.mapbox.RTLTextPlugin);\n window._mapboxArr = window._mapboxArr || [];\n forEach(document.getElementsByClassName('mapbox'), $mapbox => {\n const { lng, lat, zoom, lightStyle, darkStyle, marked, navigation, geolocate, scale, fullscreen } = window.data[$mapbox.id];\n const mapbox = new mapboxgl.Map({\n container: $mapbox,\n center: [lng, lat],\n zoom: zoom,\n minZoom: .2,\n style: window.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(new mapboxgl.GeolocateControl({\n positionOptions: {\n enableHighAccuracy: true,\n },\n showUserLocation: true,\n trackUserLocation: true,\n }), 'bottom-right');\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 window._mapboxArr.push(mapbox);\n });\n window._mapboxOnSwitchTheme = (() => {\n forEach(window._mapboxArr, mapbox => {\n const $mapbox = mapbox.getContainer();\n const { lightStyle, darkStyle } = window.data[$mapbox.id];\n mapbox.setStyle(window.isDark ? darkStyle : lightStyle);\n mapbox.addControl(new MapboxLanguage());\n });\n });\n window.switchThemeEventSet.add(window._mapboxOnSwitchTheme);\n }\n}\n\nfunction initTypeit() {\n if (window.config.typeit) {\n const typeitConfig = window.config.typeit;\n const speed = typeitConfig.speed ? typeitConfig.speed : 100;\n const cursorSpeed = typeitConfig.cursorSpeed ? typeitConfig.cursorSpeed : 1000;\n const cursorChar = typeitConfig.cursorChar ? typeitConfig.cursorChar : '|';\n Object.values(typeitConfig.data).forEach(group => {\n const typeone = (i) => {\n const id = group[i];\n if (!document.getElementById(id).hasAttribute(\"data-typeit-id\")) {\n const instance = new TypeIt(`#${id}`, {\n strings: window.data[id],\n speed: speed,\n lifeLike: true,\n cursorSpeed: cursorSpeed,\n cursorChar: cursorChar,\n waitUntilVisible: true,\n afterComplete: () => {\n if (i === group.length - 1) {\n if (typeitConfig.duration >= 0) window.setTimeout(() => {\n instance.destroy();\n }, typeitConfig.duration);\n return;\n }\n instance.destroy();\n typeone(i + 1);\n },\n }).go();\n }\n };\n typeone(0);\n });\n }\n}\n\nfunction initComment() {\n if (window.config.comment) {\n if (window.config.comment.gitalk) {\n window.config.comment.gitalk.body = decodeURI(window.location.href);\n const gitalk = new Gitalk(window.config.comment.gitalk);\n gitalk.render('gitalk');\n }\n if (window.config.comment.valine) new Valine(window.config.comment.valine);\n if (window.config.comment.waline) new Waline(window.config.comment.waline);\n if (window.config.comment.twikoo) {\n twikoo.init(window.config.comment.twikoo);\n if (window.config.comment.twikoo.commentCount) {\n twikoo.getCommentsCount({\n envId: window.config.comment.twikoo.envId,\n region: window.config.comment.twikoo.region,\n urls: [\n window.location.pathname\n ],\n includeReply: false\n }).then(function (res) {\n // example: [\n // { url: '/2020/10/post-1.html', count: 10 },\n // { url: '/2020/11/post-2.html', count: 0 },\n // { url: '/2020/12/post-3.html', count: 20 }\n // ]\n // If there is an element with id=\"twikoo-comment-count\", set its innerHTML to the count of comments\n const $twikooCommentCount = document.getElementById('twikoo-comment-count');\n if ($twikooCommentCount) $twikooCommentCount.innerHTML = res[0].count;\n }).catch(function (err) {\n console.error(err);\n });\n }\n } \n if (window.config.comment.utterances) {\n const utterancesConfig = window.config.comment.utterances;\n const script = document.createElement('script');\n script.src = 'https://utteranc.es/client.js';\n script.type = 'text/javascript';\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', window.isDark ? utterancesConfig.darkTheme : utterancesConfig.lightTheme);\n script.crossOrigin = 'anonymous';\n script.async = true;\n document.getElementById('utterances').appendChild(script);\n window._utterancesOnSwitchTheme = (() => {\n const message = {\n type: 'set-theme',\n theme: window.isDark ? utterancesConfig.darkTheme : utterancesConfig.lightTheme,\n };\n const iframe = document.querySelector('.utterances-frame');\n iframe.contentWindow.postMessage(message, 'https://utteranc.es');\n });\n window.switchThemeEventSet.add(window._utterancesOnSwitchTheme);\n }\n if (window.config.comment.vssue) {\n let vssue = window.config.comment.vssue;\n new Vue({\n el: vssue.el,\n render: h => h('Vssue', {\n props: {\n title: vssue.title,\n options: {\n owner: vssue.owner,\n repo: vssue.repo,\n clientId: vssue.clientId,\n clientSecret: vssue.clientSecret,\n },\n }\n })\n })\n }\n if (window.config.comment.remark42) {\n let remark42 = window.config.comment.remark42;\n var remark_config = {\n host: remark42.host,\n site_id: remark42.site_id,\n components: ['embed'],\n max_shown_comments: remark42.max_shown_comments,\n theme: window.isDark ? 'dark' : 'light',\n locale: remark42.locale,\n show_email_subscription: remark42.show_email_subscription,\n simple_view: remark42.simple_view\n };\n window.remark_config = remark_config;\n !function(e,n){for(var o=0;o {\n if (window.isDark) {\n window.REMARK42.changeTheme('dark');\n } else {\n window.REMARK42.changeTheme('light');\n }\n });\n window.switchThemeEventSet.add(window._remark42OnSwitchTheme);\n }\n if (window.config.comment.giscus) {\n const giscusConfig = window.config.comment.giscus;\n const script = document.createElement('script');\n script.src = 'https://giscus.app/client.js';\n script.type = 'text/javascript';\n script.setAttribute('data-repo', giscusConfig.dataRepo);\n script.setAttribute('data-repo-id', giscusConfig.dataRepoId);\n if (giscusConfig.dataCategory) script.setAttribute('data-category', giscusConfig.dataCategory);\n script.setAttribute('data-category-id', giscusConfig.dataCategoryId);\n script.setAttribute('data-mapping', giscusConfig.dataMapping);\n script.setAttribute('data-reactions-enabled', giscusConfig.dataReactionsEnabled);\n script.setAttribute('data-emit-metadata', giscusConfig.dataEmitMetadata);\n script.setAttribute('data-theme', window.isDark ? giscusConfig.darkTheme : giscusConfig.lightTheme);\n script.crossOrigin = 'anonymous';\n script.async = true;\n document.getElementById('giscus').appendChild(script);\n window._giscusOnSwitchTheme = (() => {\n const message = {\n giscus: {\n setConfig: {\n theme: window.isDark ? giscusConfig.darkTheme : giscusConfig.lightTheme,\n }\n }\n };\n const iframe = document.querySelector('.giscus-frame');\n iframe.contentWindow.postMessage(message, 'https://giscus.app');\n });\n window.switchThemeEventSet.add(window._giscusOnSwitchTheme);\n }\n }\n}\n\nfunction initMeta() {\n function getMeta(metaName) {\n const metas = document.getElementsByTagName('meta');\n for (let i = 0; i < metas.length; i++) {\n if (metas[i].getAttribute('name') === metaName) {\n return metas[i];\n }\n }\n }\n let themeColorMeta = getMeta('theme-color');\n let metaColors = {\n 'light': '#f8f8f8',\n 'dark': '#252627',\n 'black': '#000000'\n }\n window._metaThemeColorOnSwitchTheme = (() => {\n themeColorMeta.content = metaColors[document.body.getAttribute('theme')];\n });\n window.switchThemeEventSet.add(window._metaThemeColorOnSwitchTheme);\n window._metaThemeColorOnSwitchTheme();\n}\n\nfunction initCookieconsent() {\n if (window.config.cookieconsent) {\n let container = document.getElementById('cookieconsent-container');\n // if there is nothing in the container, then init the cookieconsent\n if (container.innerHTML === '') {\n window.config.cookieconsent.container = container;\n cookieconsent.initialise(window.config.cookieconsent);\n }\n };\n}\n\nfunction onScroll() {\n const $headers = [];\n const $viewComments = document.getElementById('view-comments');\n if (document.body.getAttribute('header-desktop') === 'auto') $headers.push(document.getElementById('header-desktop'));\n if (document.body.getAttribute('header-mobile') === 'auto') $headers.push(document.getElementById('header-mobile'));\n if (document.getElementById('comments')) {\n $viewComments.href = `#comments`;\n $viewComments.style.display = 'block';\n } else {\n $viewComments.style.display = 'null';\n }\n const $fixedButtons = document.getElementById('fixed-buttons');\n const ACCURACY = 20, MINIMUM = 100;\n function handleScrollEvent() {\n window.newScrollTop = getScrollTop();\n const scroll = window.newScrollTop - window.oldScrollTop;\n const isMobile = isMobileWindow();\n forEach($headers, $header => {\n if (scroll > ACCURACY) {\n $header.classList.remove('animate__fadeInDown');\n animateCSS($header, ['animate__fadeOutUp', 'animate__faster'], true);\n } else if (scroll < - ACCURACY || window.newScrollTop <= 20) {\n $header.classList.remove('animate__fadeOutUp');\n animateCSS($header, ['animate__fadeInDown', 'animate__faster'], true);\n }\n });\n if (window.newScrollTop > MINIMUM) {\n if (isMobile && scroll > ACCURACY) {\n $fixedButtons.classList.remove('animate__fadeIn');\n animateCSS($fixedButtons, ['animate__fadeOut', 'animate__faster'], true);\n } else if (!isMobile || scroll < - ACCURACY) {\n $fixedButtons.style.display = 'block';\n $fixedButtons.classList.remove('animate__fadeOut');\n animateCSS($fixedButtons, ['animate__fadeIn', 'animate__faster'], true);\n }\n } else {\n if (!isMobile) {\n $fixedButtons.classList.remove('animate__fadeIn');\n animateCSS($fixedButtons, ['animate__fadeOut', 'animate__faster'], true);\n }\n $fixedButtons.style.display = 'none';\n }\n for (let event of window.scrollEventSet) event();\n window.oldScrollTop = window.newScrollTop;\n }\n window.addEventListener('scroll', handleScrollEvent, false);\n document.addEventListener('pjax:send', function () {\n window.removeEventListener('scroll', handleScrollEvent);\n });\n}\n\nfunction onResize() {\n window.addEventListener('resize', () => {\n if (!window._resizeTimeout) {\n window._resizeTimeout = window.setTimeout(() => {\n window._resizeTimeout = null;\n for (let event of window.resizeEventSet) event();\n initToc();\n initMermaid();\n initSearch();\n }, 100);\n }\n }, false);\n}\n\nfunction onClickMask() {\n document.getElementById('mask').addEventListener('click', () => {\n for (let event of window.clickMaskEventSet) event();\n document.body.classList.remove('blur');\n }, false);\n}\n\nfunction init() {\n window.data = window.config.data;\n window.isDark = document.body.getAttribute('theme') !== 'light';\n window.newScrollTop = getScrollTop();\n window.oldScrollTop = window.newScrollTop;\n window.scrollEventSet = new Set();\n window.resizeEventSet = new Set();\n window.switchThemeEventSet = new Set();\n window.clickMaskEventSet = new Set();\n window.pjaxSendEventSet = new Set();\n if (window.objectFitImages) objectFitImages();\n initSVGIcon();\n initTwemoji();\n initMenuMobile();\n initSwitchTheme();\n initSelectTheme();\n initMeta();\n initSearch();\n initDetails();\n initLightGallery();\n initHighlight();\n initTable();\n initHeaderLink();\n initMath();\n initMermaid();\n initEcharts();\n initTypeit();\n initMapbox();\n initCookieconsent();\n initToc();\n initComment();\n onScroll();\n onResize();\n onClickMask();\n}\n\nconst themeInit = () => {\n init();\n};\n\nif (document.readyState !== 'loading') {\n themeInit();\n} else {\n document.addEventListener('DOMContentLoaded', themeInit, false);\n}\n\nlet pjax = new Pjax({\n selectors: [\n \".pjax-title\",\n \"main\",\n \".menu-item\",\n \".pjax-assets\",\n \"#fixed-buttons\",\n \".search-dropdown\",\n ]\n})\n\ndocument.addEventListener('pjax:success', function () {\n themeInit();\n});\n\ndocument.addEventListener('pjax:send', function () {\n for (let event of window.pjaxSendEventSet) event();\n for (let event of window.clickMaskEventSet) event();\n document.body.classList.remove('blur');\n delete window._tocOnScroll;\n let el = document.getElementById('content');\n window.lgData[el.getAttribute('lg-uid')].destroy(true)\n});\n\ntopbar.config({\n autoRun: true,\n barThickness: 3,\n barColors: {\n '0': '#55bde2'\n },\n shadowBlur: 0,\n shadowColor: 'rgba(0, 0, 0, .5)',\n className: 'topbar',\n})\ndocument.addEventListener('pjax:send', topbar.show);\ndocument.addEventListener('pjax:complete', topbar.hide);\ndocument.addEventListener('pjax:error', topbar.hide);"]} \ No newline at end of file diff --git a/src/js/theme.js b/src/js/theme.js index 5bd2576dd..295ef162d 100644 --- a/src/js/theme.js +++ b/src/js/theme.js @@ -563,28 +563,35 @@ function initToc() { $toc.style.position = 'fixed'; $toc.style.top = `${TOP_SPACING}px`; } - + if ($tocLinkElements.length === 0) return; + const content = document.getElementById('content'); forEach($tocLinkElements, $tocLink => { $tocLink.classList.remove('active'); }); forEach($tocLiElements, $tocLi => { $tocLi.classList.remove('has-active'); }); const INDEX_SPACING = 20 + (headerIsFixed ? headerHeight : 0); - 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 (content.getBoundingClientRect().top < INDEX_SPACING + && content.getBoundingClientRect().bottom > INDEX_SPACING) { + 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 (thisTop <= INDEX_SPACING && nextTop > INDEX_SPACING) { + activeTocIndex = i; + break; + } } - } - if (activeTocIndex >= 0 && activeTocIndex < $tocLinkElements.length) { - $tocLinkElements[activeTocIndex].classList.add('active'); - let $parent = $tocLinkElements[activeTocIndex].parentElement; - while ($parent !== $tocCore) { - $parent.classList.add('has-active'); - $parent = $parent.parentElement.parentElement; + if (activeTocIndex >= 0 && activeTocIndex < $tocLinkElements.length) { + $tocLinkElements[activeTocIndex].classList.add('active'); + history.replaceState(history.state, null, $tocLinkElements[activeTocIndex].href); + let $parent = $tocLinkElements[activeTocIndex].parentElement; + while ($parent !== $tocCore) { + $parent.classList.add('has-active'); + $parent = $parent.parentElement.parentElement; + } } } + else { + history.replaceState(history.state, null, ' '); + } }); window._tocOnScroll(); window.scrollEventSet.add(window._tocOnScroll); From 68c566d8df639b48ef07ff8d2c1222abd94c8919 Mon Sep 17 00:00:00 2001 From: eyllanesc Date: Sun, 28 Nov 2021 14:20:18 -0500 Subject: [PATCH 2/2] fix calculation of toc active item --- assets/js/theme.min.js | 2 +- assets/js/theme.min.js.map | 2 +- src/js/theme.js | 29 ++++++++++++++++------------- 3 files changed, 18 insertions(+), 15 deletions(-) diff --git a/assets/js/theme.min.js b/assets/js/theme.min.js index 48930e1f9..93ba77b65 100644 --- a/assets/js/theme.min.js +++ b/assets/js/theme.min.js @@ -1,3 +1,3 @@ -"use strict";function _objectDestructuringEmpty(a){if(null==a)throw new TypeError("Cannot destructure undefined")}function _createForOfIteratorHelper(a,b){var c="undefined"!=typeof Symbol&&a[Symbol.iterator]||a["@@iterator"];if(!c){if(Array.isArray(a)||(c=_unsupportedIterableToArray(a))||b&&a&&"number"==typeof a.length){c&&(a=c);var d=0,e=function(){};return{s:e,n:function n(){return d>=a.length?{done:!0}:{done:!1,value:a[d++]}},e:function e(a){throw a},f:e}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var f,g=!0,h=!1;return{s:function s(){c=c.call(a)},n:function n(){var a=c.next();return g=a.done,a},e:function e(a){h=!0,f=a},f:function f(){try{g||null==c.return||c.return()}finally{if(h)throw f}}}}function _toConsumableArray(a){return _arrayWithoutHoles(a)||_iterableToArray(a)||_unsupportedIterableToArray(a)||_nonIterableSpread()}function _nonIterableSpread(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function _unsupportedIterableToArray(a,b){if(a){if("string"==typeof a)return _arrayLikeToArray(a,b);var c=Object.prototype.toString.call(a).slice(8,-1);return"Object"===c&&a.constructor&&(c=a.constructor.name),"Map"===c||"Set"===c?Array.from(a):"Arguments"===c||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(c)?_arrayLikeToArray(a,b):void 0}}function _iterableToArray(a){if("undefined"!=typeof Symbol&&null!=a[Symbol.iterator]||null!=a["@@iterator"])return Array.from(a)}function _arrayWithoutHoles(a){if(Array.isArray(a))return _arrayLikeToArray(a)}function _arrayLikeToArray(a,b){(null==b||b>a.length)&&(b=a.length);for(var c=0,d=Array(b);c$1")),j=j.replace(new RegExp("(".concat(a,")"),"gi"),"<".concat(e,">$1"))}),a[h]={uri:h,title:i,date:g.date,context:j}}}),Object.values(a).slice(0,c)};window._index?p(q()):fetch(a.lunrIndexURL).then(function(a){return a.json()}).then(function(b){var c={};window._index=lunr(function(){var d=this;a.lunrLanguageCode&&this.use(lunr[a.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"],b.forEach(function(a){c[a.objectID]=a,d.add(a)})}),window._indexData=c,p(q())}).catch(function(a){console.error(a),p([])})}else if("algolia"===a.type)window._algoliaIndex=window._algoliaIndex||algoliasearch(a.algoliaAppID,a.algoliaSearchKey).initIndex(a.algoliaIndex),window._algoliaIndex.search(b,{offset:0,length:8*c,attributesToHighlight:["title"],attributesToRetrieve:["*"],attributesToSnippet:["content:".concat(d)],highlightPreTag:"<".concat(e,">"),highlightPostTag:"")}).then(function(a){var b=a.hits,d={};b.forEach(function(a){var b=a.uri,c=a.date,e=a._highlightResult.title,f=a._snippetResult.content;d[b]&&d[b].context.length>f.value||(d[b]={uri:b,title:e.value,date:c,context:f.value})}),p(Object.values(d).slice(0,c))}).catch(function(a){console.error(a),p([])});else if("fuse"===a.type){var r=function(){var a={};return window._index.search(b).forEach(function(b){var c=b.item,d=b.refIndex,f=b.matches,g=c.title,h=c.content;f.forEach(function(a){var b=a.indices,c=a.value,d=a.key;if("content"===d)for(var f=0,j=0;j")+k+"");h=h.substring(0,b[j][0]+f)+l+h.substring(b[j][1]+1+f,h.length),f+=2*e.length+5}else if("title"===d)for(var m=0,n=0;n")+o+"");g=g.substring(0,b[n][0]+m)+p+g.substring(b[n][1]+1+m,h.length),m+=2*e.length+5}}),a[c.uri]={uri:c.uri,title:g,date:c.date,context:h}}),Object.values(a).slice(0,c)};window._index?p(r()):fetch(a.fuseIndexURL).then(function(a){return a.json()}).then(function(a){window._index=new Fuse(a,{isCaseSensitive:f,findAllMatches:h,minMatchCharLength:g,location:i,threshold:j,distance:k,ignoreLocation:l,useExtendedSearch:m,ignoreFieldNorm:n,includeScore:!1,shouldSort:!0,includeMatches:!0,keys:["content","title"]}),p(r())}).catch(function(a){console.error(a),p([])})}},templates:{suggestion:function suggestion(a){var b=a.title,c=a.date,d=a.context;return"
".concat(b,"").concat(c,"
").concat(d,"
")},empty:function empty(b){var c=b.query;return"
".concat(a.noResultsFound,": \"").concat(c,"\"
")},footer:function footer(b){_objectDestructuringEmpty(b);var c="algolia"===a.type?{searchType:"algolia",icon:"",href:"https://www.algolia.com/"}:"lunr"===a.type?{searchType:"Lunr.js",icon:"",href:"https://lunrjs.com/"}:{searchType:"Fuse.js",icon:"",href:"https://fusejs.io/"},d=c.searchType,e=c.icon,f=c.href;return"")}}});p.on("autocomplete:selected",function(a,b){window.location.assign(b.uri)}),b?window._searchMobile=p:window._searchDesktop=p};if(a.lunrSegmentitURL&&!document.getElementById("lunr-segmentit")){var v=document.createElement("script");v.id="lunr-segmentit",v.type="text/javascript",v.src=a.lunrSegmentitURL,v.async=!0,v.readyState?v.onreadystatechange=function(){("loaded"==v.readyState||"complete"==v.readyState)&&(v.onreadystatechange=null,u())}:v.onload=function(){u()},document.body.appendChild(v)}else u()}}function initDetails(){forEach(document.getElementsByClassName("details"),function(a){var b=a.getElementsByClassName("details-summary")[0];b.addEventListener("click",function(){a.classList.toggle("open")},!1)})}function initLightGallery(){if(window.config.lightGallery)lightGallery(document.getElementById("content"),window.config.lightGallery)}function initHighlight(){forEach(document.querySelectorAll(".highlight > pre.chroma"),function(a){var b=document.createElement("div");b.className=a.className;var c=document.createElement("table");b.appendChild(c);var d=document.createElement("tbody");c.appendChild(d);var e=document.createElement("tr");d.appendChild(e);var f=document.createElement("td");e.appendChild(f),a.parentElement.replaceChild(b,a),f.appendChild(a)}),forEach(document.querySelectorAll(".highlight > .chroma"),function(a){var b=a.querySelectorAll("pre.chroma > code");if(b.length){var c=b[b.length-1],d=document.createElement("div");d.className="code-header "+c.className.toLowerCase();var e=document.createElement("span");e.classList.add("code-title"),e.insertAdjacentHTML("afterbegin",""),e.addEventListener("click",function(){a.classList.toggle("open")},!1),d.appendChild(e);var f=document.createElement("span");f.insertAdjacentHTML("afterbegin",""),f.classList.add("ellipses"),f.addEventListener("click",function(){a.classList.add("open")},!1),d.appendChild(f);var g=document.createElement("span");g.insertAdjacentHTML("afterbegin",""),g.classList.add("copy");var h=c.innerText;if((0>window.config.code.maxShownLines||h.split("\n").length=a;a++)forEach(document.querySelectorAll(".single .content > h"+a),function(a){a.classList.add("headerLink"),a.insertAdjacentHTML("afterbegin",""))})}function initToc(){var a=document.getElementById("TableOfContents");if(null!==a)if(document.getElementById("toc-static").getAttribute("kept")||isTocStatic()){var n=document.getElementById("toc-content-static");a.parentElement!==n&&(a.parentElement.removeChild(a),n.appendChild(a)),window._tocOnScroll&&window.scrollEventSet.delete(window._tocOnScroll)}else{var o=document.getElementById("toc-content-auto");a.parentElement!==o&&(a.parentElement.removeChild(a),o.appendChild(a));var b=document.getElementById("toc-auto"),c=document.getElementsByClassName("page")[0],d=c.getBoundingClientRect();b.style.left="".concat(d.left+d.width+20,"px"),b.style.maxWidth="".concat(window.innerWidth-c.getBoundingClientRect().right-20,"px"),b.style.visibility="visible";var e=a.querySelectorAll("a:first-child"),f=a.getElementsByTagName("li"),g=document.getElementsByClassName("headerLink"),h="normal"!==document.body.getAttribute("header-desktop"),j=document.getElementById("header-desktop").offsetHeight,k=20+(h?j:0),l=b.offsetTop,m=l-k+(h?0:j);window._tocOnScroll=window._tocOnScroll||function(){var c=document.getElementById("post-footer").offsetTop,d=c-b.getBoundingClientRect().height,n=d-k+(h?0:j);if(window.newScrollTopn?(b.style.position="absolute",b.style.top="".concat(d,"px")):(b.style.position="fixed",b.style.top="".concat(k,"px")),0!==e.length){var o=document.getElementById("content");forEach(e,function(a){a.classList.remove("active")}),forEach(f,function(a){a.classList.remove("has-active")});var p=20+(h?j:0);if(o.getBoundingClientRect().topp){for(var q=g.length-1,r=0;rp){q=r;break}}if(0<=q&&q20?(b.classList.remove("animate__fadeInDown"),animateCSS(b,["animate__fadeOutUp","animate__faster"],!0)):(a<-20||20>=window.newScrollTop)&&(b.classList.remove("animate__fadeOutUp"),animateCSS(b,["animate__fadeInDown","animate__faster"],!0))}),window.newScrollTop>100?c&&a>20?(d.classList.remove("animate__fadeIn"),animateCSS(d,["animate__fadeOut","animate__faster"],!0)):(!c||a<-20)&&(d.style.display="block",d.classList.remove("animate__fadeOut"),animateCSS(d,["animate__fadeIn","animate__faster"],!0)):(!c&&(d.classList.remove("animate__fadeIn"),animateCSS(d,["animate__fadeOut","animate__faster"],!0)),d.style.display="none");var e,f=_createForOfIteratorHelper(window.scrollEventSet);try{for(f.s();!(e=f.n()).done;){var g=e.value;g()}}catch(a){f.e(a)}finally{f.f()}window.oldScrollTop=window.newScrollTop}var b=[],c=document.getElementById("view-comments");"auto"===document.body.getAttribute("header-desktop")&&b.push(document.getElementById("header-desktop")),"auto"===document.body.getAttribute("header-mobile")&&b.push(document.getElementById("header-mobile")),document.getElementById("comments")?(c.href="#comments",c.style.display="block"):c.style.display="null";var d=document.getElementById("fixed-buttons");window.addEventListener("scroll",a,!1),document.addEventListener("pjax:send",function(){window.removeEventListener("scroll",a)})}function onResize(){window.addEventListener("resize",function(){window._resizeTimeout||(window._resizeTimeout=window.setTimeout(function(){window._resizeTimeout=null;var a,b=_createForOfIteratorHelper(window.resizeEventSet);try{for(b.s();!(a=b.n()).done;){var c=a.value;c()}}catch(a){b.e(a)}finally{b.f()}initToc(),initMermaid(),initSearch()},100))},!1)}function onClickMask(){document.getElementById("mask").addEventListener("click",function(){var a,b=_createForOfIteratorHelper(window.clickMaskEventSet);try{for(b.s();!(a=b.n()).done;){var c=a.value;c()}}catch(a){b.e(a)}finally{b.f()}document.body.classList.remove("blur")},!1)}function init(){window.data=window.config.data,window.isDark="light"!==document.body.getAttribute("theme"),window.newScrollTop=getScrollTop(),window.oldScrollTop=window.newScrollTop,window.scrollEventSet=new Set,window.resizeEventSet=new Set,window.switchThemeEventSet=new Set,window.clickMaskEventSet=new Set,window.pjaxSendEventSet=new Set,window.objectFitImages&&objectFitImages(),initSVGIcon(),initTwemoji(),initMenuMobile(),initSwitchTheme(),initSelectTheme(),initMeta(),initSearch(),initDetails(),initLightGallery(),initHighlight(),initTable(),initHeaderLink(),initMath(),initMermaid(),initEcharts(),initTypeit(),initMapbox(),initCookieconsent(),initToc(),initComment(),onScroll(),onResize(),onClickMask()}var themeInit=function(){init()};"loading"===document.readyState?document.addEventListener("DOMContentLoaded",themeInit,!1):themeInit();var pjax=new Pjax({selectors:[".pjax-title","main",".menu-item",".pjax-assets","#fixed-buttons",".search-dropdown"]});document.addEventListener("pjax:success",function(){themeInit()}),document.addEventListener("pjax:send",function(){var a,b=_createForOfIteratorHelper(window.pjaxSendEventSet);try{for(b.s();!(a=b.n()).done;){var f=a.value;f()}}catch(a){b.e(a)}finally{b.f()}var c,d=_createForOfIteratorHelper(window.clickMaskEventSet);try{for(d.s();!(c=d.n()).done;){var g=c.value;g()}}catch(a){d.e(a)}finally{d.f()}document.body.classList.remove("blur"),delete window._tocOnScroll;var e=document.getElementById("content");window.lgData[e.getAttribute("lg-uid")].destroy(!0)}),topbar.config({autoRun:!0,barThickness:3,barColors:{0:"#55bde2"},shadowBlur:0,shadowColor:"rgba(0, 0, 0, .5)",className:"topbar"}),document.addEventListener("pjax:send",topbar.show),document.addEventListener("pjax:complete",topbar.hide),document.addEventListener("pjax:error",topbar.hide); +"use strict";function _objectDestructuringEmpty(a){if(null==a)throw new TypeError("Cannot destructure undefined")}function _createForOfIteratorHelper(a,b){var c="undefined"!=typeof Symbol&&a[Symbol.iterator]||a["@@iterator"];if(!c){if(Array.isArray(a)||(c=_unsupportedIterableToArray(a))||b&&a&&"number"==typeof a.length){c&&(a=c);var d=0,e=function(){};return{s:e,n:function n(){return d>=a.length?{done:!0}:{done:!1,value:a[d++]}},e:function e(a){throw a},f:e}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var f,g=!0,h=!1;return{s:function s(){c=c.call(a)},n:function n(){var a=c.next();return g=a.done,a},e:function e(a){h=!0,f=a},f:function f(){try{g||null==c.return||c.return()}finally{if(h)throw f}}}}function _toConsumableArray(a){return _arrayWithoutHoles(a)||_iterableToArray(a)||_unsupportedIterableToArray(a)||_nonIterableSpread()}function _nonIterableSpread(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function _unsupportedIterableToArray(a,b){if(a){if("string"==typeof a)return _arrayLikeToArray(a,b);var c=Object.prototype.toString.call(a).slice(8,-1);return"Object"===c&&a.constructor&&(c=a.constructor.name),"Map"===c||"Set"===c?Array.from(a):"Arguments"===c||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(c)?_arrayLikeToArray(a,b):void 0}}function _iterableToArray(a){if("undefined"!=typeof Symbol&&null!=a[Symbol.iterator]||null!=a["@@iterator"])return Array.from(a)}function _arrayWithoutHoles(a){if(Array.isArray(a))return _arrayLikeToArray(a)}function _arrayLikeToArray(a,b){(null==b||b>a.length)&&(b=a.length);for(var c=0,d=Array(b);c$1")),j=j.replace(new RegExp("(".concat(a,")"),"gi"),"<".concat(e,">$1"))}),a[h]={uri:h,title:i,date:g.date,context:j}}}),Object.values(a).slice(0,c)};window._index?p(q()):fetch(a.lunrIndexURL).then(function(a){return a.json()}).then(function(b){var c={};window._index=lunr(function(){var d=this;a.lunrLanguageCode&&this.use(lunr[a.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"],b.forEach(function(a){c[a.objectID]=a,d.add(a)})}),window._indexData=c,p(q())}).catch(function(a){console.error(a),p([])})}else if("algolia"===a.type)window._algoliaIndex=window._algoliaIndex||algoliasearch(a.algoliaAppID,a.algoliaSearchKey).initIndex(a.algoliaIndex),window._algoliaIndex.search(b,{offset:0,length:8*c,attributesToHighlight:["title"],attributesToRetrieve:["*"],attributesToSnippet:["content:".concat(d)],highlightPreTag:"<".concat(e,">"),highlightPostTag:"")}).then(function(a){var b=a.hits,d={};b.forEach(function(a){var b=a.uri,c=a.date,e=a._highlightResult.title,f=a._snippetResult.content;d[b]&&d[b].context.length>f.value||(d[b]={uri:b,title:e.value,date:c,context:f.value})}),p(Object.values(d).slice(0,c))}).catch(function(a){console.error(a),p([])});else if("fuse"===a.type){var r=function(){var a={};return window._index.search(b).forEach(function(b){var c=b.item,d=b.refIndex,f=b.matches,g=c.title,h=c.content;f.forEach(function(a){var b=a.indices,c=a.value,d=a.key;if("content"===d)for(var f=0,j=0;j")+k+"");h=h.substring(0,b[j][0]+f)+l+h.substring(b[j][1]+1+f,h.length),f+=2*e.length+5}else if("title"===d)for(var m=0,n=0;n")+o+"");g=g.substring(0,b[n][0]+m)+p+g.substring(b[n][1]+1+m,h.length),m+=2*e.length+5}}),a[c.uri]={uri:c.uri,title:g,date:c.date,context:h}}),Object.values(a).slice(0,c)};window._index?p(r()):fetch(a.fuseIndexURL).then(function(a){return a.json()}).then(function(a){window._index=new Fuse(a,{isCaseSensitive:f,findAllMatches:h,minMatchCharLength:g,location:i,threshold:j,distance:k,ignoreLocation:l,useExtendedSearch:m,ignoreFieldNorm:n,includeScore:!1,shouldSort:!0,includeMatches:!0,keys:["content","title"]}),p(r())}).catch(function(a){console.error(a),p([])})}},templates:{suggestion:function suggestion(a){var b=a.title,c=a.date,d=a.context;return"
".concat(b,"").concat(c,"
").concat(d,"
")},empty:function empty(b){var c=b.query;return"
".concat(a.noResultsFound,": \"").concat(c,"\"
")},footer:function footer(b){_objectDestructuringEmpty(b);var c="algolia"===a.type?{searchType:"algolia",icon:"",href:"https://www.algolia.com/"}:"lunr"===a.type?{searchType:"Lunr.js",icon:"",href:"https://lunrjs.com/"}:{searchType:"Fuse.js",icon:"",href:"https://fusejs.io/"},d=c.searchType,e=c.icon,f=c.href;return"")}}});p.on("autocomplete:selected",function(a,b){window.location.assign(b.uri)}),b?window._searchMobile=p:window._searchDesktop=p};if(a.lunrSegmentitURL&&!document.getElementById("lunr-segmentit")){var v=document.createElement("script");v.id="lunr-segmentit",v.type="text/javascript",v.src=a.lunrSegmentitURL,v.async=!0,v.readyState?v.onreadystatechange=function(){("loaded"==v.readyState||"complete"==v.readyState)&&(v.onreadystatechange=null,u())}:v.onload=function(){u()},document.body.appendChild(v)}else u()}}function initDetails(){forEach(document.getElementsByClassName("details"),function(a){var b=a.getElementsByClassName("details-summary")[0];b.addEventListener("click",function(){a.classList.toggle("open")},!1)})}function initLightGallery(){if(window.config.lightGallery)lightGallery(document.getElementById("content"),window.config.lightGallery)}function initHighlight(){forEach(document.querySelectorAll(".highlight > pre.chroma"),function(a){var b=document.createElement("div");b.className=a.className;var c=document.createElement("table");b.appendChild(c);var d=document.createElement("tbody");c.appendChild(d);var e=document.createElement("tr");d.appendChild(e);var f=document.createElement("td");e.appendChild(f),a.parentElement.replaceChild(b,a),f.appendChild(a)}),forEach(document.querySelectorAll(".highlight > .chroma"),function(a){var b=a.querySelectorAll("pre.chroma > code");if(b.length){var c=b[b.length-1],d=document.createElement("div");d.className="code-header "+c.className.toLowerCase();var e=document.createElement("span");e.classList.add("code-title"),e.insertAdjacentHTML("afterbegin",""),e.addEventListener("click",function(){a.classList.toggle("open")},!1),d.appendChild(e);var f=document.createElement("span");f.insertAdjacentHTML("afterbegin",""),f.classList.add("ellipses"),f.addEventListener("click",function(){a.classList.add("open")},!1),d.appendChild(f);var g=document.createElement("span");g.insertAdjacentHTML("afterbegin",""),g.classList.add("copy");var h=c.innerText;if((0>window.config.code.maxShownLines||h.split("\n").length=a;a++)forEach(document.querySelectorAll(".single .content > h"+a),function(a){a.classList.add("headerLink"),a.insertAdjacentHTML("afterbegin",""))})}function initToc(){var a=document.getElementById("TableOfContents");if(null!==a)if(document.getElementById("toc-static").getAttribute("kept")||isTocStatic()){var n=document.getElementById("toc-content-static");a.parentElement!==n&&(a.parentElement.removeChild(a),n.appendChild(a)),window._tocOnScroll&&window.scrollEventSet.delete(window._tocOnScroll)}else{var o=document.getElementById("toc-content-auto");a.parentElement!==o&&(a.parentElement.removeChild(a),o.appendChild(a));var b=document.getElementById("toc-auto"),c=document.getElementsByClassName("page")[0],d=c.getBoundingClientRect();b.style.left="".concat(d.left+d.width+20,"px"),b.style.maxWidth="".concat(window.innerWidth-c.getBoundingClientRect().right-20,"px"),b.style.visibility="visible";var e=a.querySelectorAll("a:first-child"),f=a.getElementsByTagName("li"),g=document.getElementsByClassName("headerLink"),h="normal"!==document.body.getAttribute("header-desktop"),j=document.getElementById("header-desktop").offsetHeight,k=20+(h?j:0),l=b.offsetTop,m=l-k+(h?0:j);window._tocOnScroll=window._tocOnScroll||function(){var c=document.getElementById("post-footer").offsetTop,d=c-b.getBoundingClientRect().height,n=d-k+(h?0:j);if(window.newScrollTopn?(b.style.position="absolute",b.style.top="".concat(d,"px")):(b.style.position="fixed",b.style.top="".concat(k,"px")),0!==e.length){var o=document.getElementById("content");forEach(e,function(a){a.classList.remove("active")}),forEach(f,function(a){a.classList.remove("has-active")});var p=20+(h?j:0),q=-1;if(o.getBoundingClientRect().top<=p&&o.getBoundingClientRect().bottom>p&&g[0].getBoundingClientRect().top<=p){if(g[g.length-1].getBoundingClientRect().topp){q=t;break}}if(0<=q&&q20?(b.classList.remove("animate__fadeInDown"),animateCSS(b,["animate__fadeOutUp","animate__faster"],!0)):(a<-20||20>=window.newScrollTop)&&(b.classList.remove("animate__fadeOutUp"),animateCSS(b,["animate__fadeInDown","animate__faster"],!0))}),window.newScrollTop>100?c&&a>20?(d.classList.remove("animate__fadeIn"),animateCSS(d,["animate__fadeOut","animate__faster"],!0)):(!c||a<-20)&&(d.style.display="block",d.classList.remove("animate__fadeOut"),animateCSS(d,["animate__fadeIn","animate__faster"],!0)):(!c&&(d.classList.remove("animate__fadeIn"),animateCSS(d,["animate__fadeOut","animate__faster"],!0)),d.style.display="none");var e,f=_createForOfIteratorHelper(window.scrollEventSet);try{for(f.s();!(e=f.n()).done;){var g=e.value;g()}}catch(a){f.e(a)}finally{f.f()}window.oldScrollTop=window.newScrollTop}var b=[],c=document.getElementById("view-comments");"auto"===document.body.getAttribute("header-desktop")&&b.push(document.getElementById("header-desktop")),"auto"===document.body.getAttribute("header-mobile")&&b.push(document.getElementById("header-mobile")),document.getElementById("comments")?(c.href="#comments",c.style.display="block"):c.style.display="null";var d=document.getElementById("fixed-buttons");window.addEventListener("scroll",a,!1),document.addEventListener("pjax:send",function(){window.removeEventListener("scroll",a)})}function onResize(){window.addEventListener("resize",function(){window._resizeTimeout||(window._resizeTimeout=window.setTimeout(function(){window._resizeTimeout=null;var a,b=_createForOfIteratorHelper(window.resizeEventSet);try{for(b.s();!(a=b.n()).done;){var c=a.value;c()}}catch(a){b.e(a)}finally{b.f()}initToc(),initMermaid(),initSearch()},100))},!1)}function onClickMask(){document.getElementById("mask").addEventListener("click",function(){var a,b=_createForOfIteratorHelper(window.clickMaskEventSet);try{for(b.s();!(a=b.n()).done;){var c=a.value;c()}}catch(a){b.e(a)}finally{b.f()}document.body.classList.remove("blur")},!1)}function init(){window.data=window.config.data,window.isDark="light"!==document.body.getAttribute("theme"),window.newScrollTop=getScrollTop(),window.oldScrollTop=window.newScrollTop,window.scrollEventSet=new Set,window.resizeEventSet=new Set,window.switchThemeEventSet=new Set,window.clickMaskEventSet=new Set,window.pjaxSendEventSet=new Set,window.objectFitImages&&objectFitImages(),initSVGIcon(),initTwemoji(),initMenuMobile(),initSwitchTheme(),initSelectTheme(),initMeta(),initSearch(),initDetails(),initLightGallery(),initHighlight(),initTable(),initHeaderLink(),initMath(),initMermaid(),initEcharts(),initTypeit(),initMapbox(),initCookieconsent(),initToc(),initComment(),onScroll(),onResize(),onClickMask()}var themeInit=function(){init()};"loading"===document.readyState?document.addEventListener("DOMContentLoaded",themeInit,!1):themeInit();var pjax=new Pjax({selectors:[".pjax-title","main",".menu-item",".pjax-assets","#fixed-buttons",".search-dropdown"]});document.addEventListener("pjax:success",function(){themeInit()}),document.addEventListener("pjax:send",function(){var a,b=_createForOfIteratorHelper(window.pjaxSendEventSet);try{for(b.s();!(a=b.n()).done;){var f=a.value;f()}}catch(a){b.e(a)}finally{b.f()}var c,d=_createForOfIteratorHelper(window.clickMaskEventSet);try{for(d.s();!(c=d.n()).done;){var g=c.value;g()}}catch(a){d.e(a)}finally{d.f()}document.body.classList.remove("blur"),delete window._tocOnScroll;var e=document.getElementById("content");window.lgData[e.getAttribute("lg-uid")].destroy(!0)}),topbar.config({autoRun:!0,barThickness:3,barColors:{0:"#55bde2"},shadowBlur:0,shadowColor:"rgba(0, 0, 0, .5)",className:"topbar"}),document.addEventListener("pjax:send",topbar.show),document.addEventListener("pjax:complete",topbar.hide),document.addEventListener("pjax:error",topbar.hide); //# 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 affcf0947..6806f4def 100644 --- a/assets/js/theme.min.js.map +++ b/assets/js/theme.min.js.map @@ -1 +1 @@ -{"version":3,"sources":["../../src/js/theme.js"],"names":[],"mappings":"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","file":"theme.min.js","sourcesContent":["function forEach(elements, handler) {\n elements = elements || [];\n for (let i = 0; i < elements.length; i++) handler(elements[i]);\n}\n\nfunction getScrollTop() {\n return (document.documentElement && document.documentElement.scrollTop) || document.body.scrollTop;\n}\n\nfunction isMobileWindow() {\n return window.matchMedia('only screen and (max-width: 680px)').matches;\n}\n\nfunction isTocStatic() {\n return window.matchMedia('only screen and (max-width: 1000px)').matches;\n}\n\nfunction animateCSS(element, animation, reserved, callback) {\n if (!Array.isArray(animation)) animation = [animation];\n element.classList.add('animate__animated', ...animation);\n const handler = () => {\n element.classList.remove('animate__animated', ...animation);\n element.removeEventListener('animationend', handler);\n if (typeof callback === 'function') callback();\n };\n if (!reserved) element.addEventListener('animationend', handler, false);\n}\n\n\nfunction initSVGIcon() {\n forEach(document.querySelectorAll('[data-svg-src]'), $icon => {\n fetch($icon.getAttribute('data-svg-src'))\n .then(response => response.text())\n .then(svg => {\n const $temp = document.createElement('div');\n $temp.insertAdjacentHTML('afterbegin', svg);\n const $svg = $temp.firstChild;\n $svg.setAttribute('data-svg-src', $icon.getAttribute('data-svg-src'));\n $svg.classList.add('icon');\n const $titleElements = $svg.getElementsByTagName('title');\n if ($titleElements.length) $svg.removeChild($titleElements[0]);\n $icon.parentElement.replaceChild($svg, $icon);\n })\n .catch(err => { console.error(err); });\n });\n}\n\nfunction initTwemoji() {\n if (window.config.twemoji) twemoji.parse(document.body);\n}\n\nfunction initMenuMobile() {\n const $menuToggleMobile = document.getElementById('menu-toggle-mobile');\n const $menuMobile = document.getElementById('menu-mobile');\n if (!window.menuToggleMobileEventListener) {\n $menuToggleMobile.addEventListener('click', () => {\n document.body.classList.toggle('blur');\n $menuToggleMobile.classList.toggle('active');\n $menuMobile.classList.toggle('active');\n }, false);\n window.menuToggleMobileEventListener = true;\n }\n window._menuMobileOnClickMask = (() => {\n $menuToggleMobile.classList.remove('active');\n $menuMobile.classList.remove('active');\n });\n window.clickMaskEventSet.add(window._menuMobileOnClickMask);\n}\n\nfunction initSwitchTheme() {\n forEach(document.getElementsByClassName('theme-switch'), $themeSwitch => {\n $themeSwitch.addEventListener('click', () => {\n let currentTheme = document.body.getAttribute('theme');\n if (currentTheme === 'dark') {\n document.body.setAttribute('theme', 'black');\n window.localStorage && localStorage.setItem('theme', 'black');\n window.isDark = true;\n } else if (currentTheme === 'black') {\n document.body.setAttribute('theme', 'light');\n window.localStorage && localStorage.setItem('theme', 'light');\n window.isDark = false;\n } else {\n document.body.setAttribute('theme', 'dark');\n window.localStorage && localStorage.setItem('theme', 'dark');\n window.isDark = true;\n }\n for (let event of window.switchThemeEventSet) event();\n }, false);\n });\n}\n\nfunction initSelectTheme() {\n forEach(document.getElementsByClassName('color-theme-select'), $themeSelect => {\n let currentTheme = document.body.getAttribute('theme');\n for (let i, j = 0; i = $themeSelect.options[j]; j++) {\n if (i.value == currentTheme) {\n $themeSelect.selectedIndex = j;\n break;\n }\n }\n $themeSelect.addEventListener('change', () => {\n let theme = $themeSelect.value;\n window.localStorage && localStorage.setItem('theme', theme);\n if (theme != 'auto') {\n document.body.setAttribute('theme', theme);\n if (theme == 'light') {\n window.isDark = false;\n } else {\n window.isDark = true;\n }\n } else {\n if (window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches) {\n document.body.setAttribute('theme', 'dark');\n window.isDark = true;\n } else {\n document.body.setAttribute('theme', 'white');\n window.isDark = false;\n }\n }\n for (let event of window.switchThemeEventSet) event();\n }, false);\n });\n}\n\nfunction initSearch() {\n const searchConfig = window.config.search;\n const isMobile = isMobileWindow();\n if (!searchConfig || isMobile && window._searchMobileOnce || !isMobile && window._searchDesktopOnce) return;\n\n const maxResultLength = searchConfig.maxResultLength ? searchConfig.maxResultLength : 10;\n const snippetLength = searchConfig.snippetLength ? searchConfig.snippetLength : 50;\n const highlightTag = searchConfig.highlightTag ? searchConfig.highlightTag : 'em';\n const isCaseSensitive = searchConfig.isCaseSensitive ? searchConfig.isCaseSensitive : false;\n const minMatchCharLength = searchConfig.minMatchCharLength ? searchConfig.minMatchCharLength : 1;\n const findAllMatches = searchConfig.findAllMatches ? searchConfig.findAllMatches : false;\n const location = searchConfig.location ? searchConfig.location : 0;\n const threshold = searchConfig.threshold ? searchConfig.threshold : 0.3;\n const distance = searchConfig.distance ? searchConfig.distance : 100;\n const ignoreLocation = searchConfig.ignoreLocation ? searchConfig.ignoreLocation : false;\n const useExtendedSearch = searchConfig.useExtendedSearch ? searchConfig.useExtendedSearch : false;\n const ignoreFieldNorm = searchConfig.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 if (isMobile) {\n window._searchMobileOnce = true;\n $searchInput.addEventListener('focus', () => {\n document.body.classList.add('blur');\n $header.classList.add('open');\n }, false);\n document.getElementById('search-cancel-mobile').addEventListener('click', () => {\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 window._searchMobile && window._searchMobile.autocomplete.setVal('');\n }, false);\n $searchClear.addEventListener('click', () => {\n $searchClear.style.display = 'none';\n window._searchMobile && window._searchMobile.autocomplete.setVal('');\n }, false);\n window._searchMobileOnClickMask = (() => {\n $header.classList.remove('open');\n $searchLoading.style.display = 'none';\n $searchClear.style.display = 'none';\n window._searchMobile && window._searchMobile.autocomplete.setVal('');\n });\n window.clickMaskEventSet.add(window._searchMobileOnClickMask);\n window.pjaxSendEventSet.add(window._searchMobileOnClickMask);\n } else {\n window._searchDesktopOnce = true;\n\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 window._searchDesktop && window._searchDesktop.autocomplete.setVal('');\n }, false);\n // Toggle search when Ctrl + K is pressed\n document.addEventListener('keydown', e => {\n if (e.ctrlKey && e.code == 'KeyK') {\n e.preventDefault();\n $searchToggle.click();\n }\n }, false);\n window._searchDesktopOnClickMask = (() => {\n $header.classList.remove('open');\n $searchLoading.style.display = 'none';\n $searchClear.style.display = 'none';\n window._searchDesktop && window._searchDesktop.autocomplete.setVal('');\n });\n window.clickMaskEventSet.add(window._searchDesktopOnClickMask);\n window.pjaxSendEventSet.add(window._searchDesktopOnClickMask);\n window.pjaxSendEventSet.add(() => {window._searchDesktopOnce = false; window._searchMobileOnce = false;});\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 hint: false,\n autoselect: true,\n dropdownMenuContainer: `#search-dropdown-${suffix}`,\n clearOnSelected: true,\n cssClasses: { noPrefix: true },\n debug: true,\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) query = lunr.queryHandler(query);\n const results = {};\n window._index.search(query).forEach(({ ref, matchData: { metadata } }) => {\n const matchData = window._indexData[ref];\n let { uri, title, content: context } = matchData;\n if (results[uri]) return;\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) position = matchPosition;\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 (!window._index) {\n fetch(searchConfig.lunrIndexURL)\n .then(response => response.json())\n .then(data => {\n const indexData = {};\n window._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 window._indexData = indexData;\n finish(search());\n }).catch(err => {\n console.error(err);\n finish([]);\n });\n } else finish(search());\n } else if (searchConfig.type === 'algolia') {\n window._algoliaIndex = window._algoliaIndex || algoliasearch(searchConfig.algoliaAppID, searchConfig.algoliaSearchKey).initIndex(searchConfig.algoliaIndex);\n window._algoliaIndex\n .search(query, {\n offset: 0,\n length: maxResultLength * 8,\n attributesToHighlight: ['title'],\n attributesToRetrieve: ['*'],\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) return;\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 let substr = content.substring(indices[i][0] + offset, indices[i][1] + 1 + offset);\n let 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 let substr = title.substring(indices[i][0] + offset, indices[i][1] + 1 + offset);\n let 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 });\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: [\n \"content\",\n \"title\"\n ]\n };\n window._index = new Fuse(data, options);\n finish(search());\n }).catch(err => {\n console.error(err);\n finish([]);\n })\n } else finish(search());\n }\n },\n templates: {\n suggestion: ({ title, date, context }) => `
${title}${date}
${context}
`,\n empty: ({ query }) => `
${searchConfig.noResultsFound}: \"${query}\"
`,\n footer: ({ }) => {\n const { searchType, icon, href } = searchConfig.type === 'algolia' ? {\n searchType: 'algolia',\n icon: '',\n href: 'https://www.algolia.com/',\n } : (searchConfig.type === 'lunr' ? {\n searchType: 'Lunr.js',\n icon: '',\n href: 'https://lunrjs.com/',\n } : {\n searchType: 'Fuse.js',\n icon: '',\n href: 'https://fusejs.io/',\n });\n return ``;\n },\n },\n });\n autosearch.on('autocomplete:selected', (_event, suggestion, _dataset, _context) => {\n window.location.assign(suggestion.uri);\n });\n if (isMobile) window._searchMobile = autosearch;\n else window._searchDesktop = autosearch;\n };\n if (searchConfig.lunrSegmentitURL && !document.getElementById('lunr-segmentit')) {\n const script = document.createElement('script');\n script.id = 'lunr-segmentit';\n script.type = 'text/javascript';\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 initAutosearch();\n}\n\nfunction initDetails() {\n forEach(document.getElementsByClassName('details'), $details => {\n const $summary = $details.getElementsByClassName('details-summary')[0];\n $summary.addEventListener('click', () => {\n $details.classList.toggle('open');\n }, false);\n });\n}\n\nfunction initLightGallery() {\n if (window.config.lightGallery) {\n const instance = lightGallery(document.getElementById('content'), window.config.lightGallery);\n }\n}\n\nfunction initHighlight() {\n 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 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 const $title = document.createElement('span');\n $title.classList.add('code-title');\n $title.insertAdjacentHTML('afterbegin', '');\n $title.addEventListener('click', () => {\n $chroma.classList.toggle('open');\n }, false);\n $header.appendChild($title);\n 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 const $copy = document.createElement('span');\n $copy.insertAdjacentHTML('afterbegin', '');\n $copy.classList.add('copy');\n const code = $code.innerText;\n if (window.config.code.maxShownLines < 0 || code.split('\\n').length < window.config.code.maxShownLines + 2) $chroma.classList.add('open');\n if (window.config.code.copyTitle) {\n $copy.setAttribute('data-clipboard-text', code);\n $copy.title = window.config.code.copyTitle;\n const clipboard = new ClipboardJS($copy);\n clipboard.on('success', _e => {\n animateCSS($code, 'animate__flash');\n $copy.firstElementChild.className = \"fas fa-check fa-fw\";\n setTimeout(() => {\n $copy.firstElementChild.className = \"far fa-copy fa-fw\";\n }, 3000);\n });\n $header.appendChild($copy);\n }\n $chroma.insertBefore($header, $chroma.firstChild);\n }\n });\n}\n\nfunction initTable() {\n 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\nfunction initHeaderLink() {\n for (let num = 1; num <= 6; num++) {\n forEach(document.querySelectorAll('.single .content > h' + num), $header => {\n $header.classList.add('headerLink');\n $header.insertAdjacentHTML('afterbegin', ``);\n });\n }\n}\n\nfunction initToc() {\n const $tocCore = document.getElementById('TableOfContents');\n if ($tocCore === null) return;\n if (document.getElementById('toc-static').getAttribute('kept') || 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 if (window._tocOnScroll) window.scrollEventSet.delete(window._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 const $page = document.getElementsByClassName('page')[0];\n const rect = $page.getBoundingClientRect();\n $toc.style.left = `${rect.left + rect.width + 20}px`;\n $toc.style.maxWidth = `${window.innerWidth - $page.getBoundingClientRect().right - 20}px`;\n $toc.style.visibility = 'visible';\n const $tocLinkElements = $tocCore.querySelectorAll('a:first-child');\n const $tocLiElements = $tocCore.getElementsByTagName('li');\n const $headerLinkElements = document.getElementsByClassName('headerLink');\n const headerIsFixed = document.body.getAttribute('header-desktop') !== 'normal';\n const headerHeight = document.getElementById('header-desktop').offsetHeight;\n const TOP_SPACING = 20 + (headerIsFixed ? headerHeight : 0);\n const minTocTop = $toc.offsetTop;\n const minScrollTop = minTocTop - TOP_SPACING + (headerIsFixed ? 0 : headerHeight)\n window._tocOnScroll = window._tocOnScroll || (() => {\n const footerTop = document.getElementById('post-footer').offsetTop;\n const maxTocTop = footerTop - $toc.getBoundingClientRect().height;\n const maxScrollTop = maxTocTop - TOP_SPACING + (headerIsFixed ? 0 : headerHeight);\n if (window.newScrollTop < minScrollTop) {\n $toc.style.position = 'absolute';\n $toc.style.top = `${minTocTop}px`;\n } else if (window.newScrollTop > maxScrollTop) {\n $toc.style.position = 'absolute';\n $toc.style.top = `${maxTocTop}px`;\n } else {\n $toc.style.position = 'fixed';\n $toc.style.top = `${TOP_SPACING}px`;\n }\n if ($tocLinkElements.length === 0) return;\n const content = document.getElementById('content');\n forEach($tocLinkElements, $tocLink => { $tocLink.classList.remove('active'); });\n forEach($tocLiElements, $tocLi => { $tocLi.classList.remove('has-active'); });\n const INDEX_SPACING = 20 + (headerIsFixed ? headerHeight : 0);\n if (content.getBoundingClientRect().top < INDEX_SPACING\n && content.getBoundingClientRect().bottom > INDEX_SPACING) {\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 (thisTop <= INDEX_SPACING && nextTop > INDEX_SPACING) {\n activeTocIndex = i;\n break;\n }\n }\n if (activeTocIndex >= 0 && activeTocIndex < $tocLinkElements.length) {\n $tocLinkElements[activeTocIndex].classList.add('active');\n history.replaceState(history.state, null, $tocLinkElements[activeTocIndex].href);\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 else {\n history.replaceState(history.state, null, ' ');\n }\n });\n window._tocOnScroll();\n window.scrollEventSet.add(window._tocOnScroll);\n }\n}\n\nfunction initMath() {\n if (window.config.math) renderMathInElement(document.body, window.config.math);\n}\n\nfunction initMermaid() {\n const $mermaidElements = document.getElementsByClassName('mermaid');\n if ($mermaidElements.length) {\n mermaid.initialize({ startOnLoad: false, theme: 'default' });\n forEach($mermaidElements, $mermaid => {\n mermaid.mermaidAPI.render('svg-' + $mermaid.id, window.data[$mermaid.id], svgCode => {\n $mermaid.insertAdjacentHTML('afterbegin', svgCode);\n document.getElementById('svg-' + $mermaid.id).children[0].remove();\n }, $mermaid);\n });\n }\n}\n\nfunction initEcharts() {\n window._echartsOnSwitchTheme = (() => {\n window._echartsArr = window._echartsArr || [];\n for (let i = 0; i < window._echartsArr.length; i++) {\n window._echartsArr[i].dispose();\n }\n window._echartsArr = [];\n forEach(document.getElementsByClassName('echarts'), $echarts => {\n const chart = echarts.init($echarts, window.isDark ? 'dark' : 'macarons', { renderer: 'svg' });\n chart.setOption(JSON.parse(window.data[$echarts.id]));\n window._echartsArr.push(chart);\n });\n });\n window.switchThemeEventSet.add(window._echartsOnSwitchTheme);\n window._echartsOnSwitchTheme();\n window._echartsOnResize = (() => {\n for (let i = 0; i < window._echartsArr.length; i++) {\n window._echartsArr[i].resize();\n }\n });\n window.resizeEventSet.add(window._echartsOnResize);\n}\n\nfunction initMapbox() {\n if (window.config.mapbox) {\n mapboxgl.accessToken = window.config.mapbox.accessToken;\n mapboxgl.setRTLTextPlugin(window.config.mapbox.RTLTextPlugin);\n window._mapboxArr = window._mapboxArr || [];\n forEach(document.getElementsByClassName('mapbox'), $mapbox => {\n const { lng, lat, zoom, lightStyle, darkStyle, marked, navigation, geolocate, scale, fullscreen } = window.data[$mapbox.id];\n const mapbox = new mapboxgl.Map({\n container: $mapbox,\n center: [lng, lat],\n zoom: zoom,\n minZoom: .2,\n style: window.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(new mapboxgl.GeolocateControl({\n positionOptions: {\n enableHighAccuracy: true,\n },\n showUserLocation: true,\n trackUserLocation: true,\n }), 'bottom-right');\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 window._mapboxArr.push(mapbox);\n });\n window._mapboxOnSwitchTheme = (() => {\n forEach(window._mapboxArr, mapbox => {\n const $mapbox = mapbox.getContainer();\n const { lightStyle, darkStyle } = window.data[$mapbox.id];\n mapbox.setStyle(window.isDark ? darkStyle : lightStyle);\n mapbox.addControl(new MapboxLanguage());\n });\n });\n window.switchThemeEventSet.add(window._mapboxOnSwitchTheme);\n }\n}\n\nfunction initTypeit() {\n if (window.config.typeit) {\n const typeitConfig = window.config.typeit;\n const speed = typeitConfig.speed ? typeitConfig.speed : 100;\n const cursorSpeed = typeitConfig.cursorSpeed ? typeitConfig.cursorSpeed : 1000;\n const cursorChar = typeitConfig.cursorChar ? typeitConfig.cursorChar : '|';\n Object.values(typeitConfig.data).forEach(group => {\n const typeone = (i) => {\n const id = group[i];\n if (!document.getElementById(id).hasAttribute(\"data-typeit-id\")) {\n const instance = new TypeIt(`#${id}`, {\n strings: window.data[id],\n speed: speed,\n lifeLike: true,\n cursorSpeed: cursorSpeed,\n cursorChar: cursorChar,\n waitUntilVisible: true,\n afterComplete: () => {\n if (i === group.length - 1) {\n if (typeitConfig.duration >= 0) window.setTimeout(() => {\n instance.destroy();\n }, typeitConfig.duration);\n return;\n }\n instance.destroy();\n typeone(i + 1);\n },\n }).go();\n }\n };\n typeone(0);\n });\n }\n}\n\nfunction initComment() {\n if (window.config.comment) {\n if (window.config.comment.gitalk) {\n window.config.comment.gitalk.body = decodeURI(window.location.href);\n const gitalk = new Gitalk(window.config.comment.gitalk);\n gitalk.render('gitalk');\n }\n if (window.config.comment.valine) new Valine(window.config.comment.valine);\n if (window.config.comment.waline) new Waline(window.config.comment.waline);\n if (window.config.comment.twikoo) {\n twikoo.init(window.config.comment.twikoo);\n if (window.config.comment.twikoo.commentCount) {\n twikoo.getCommentsCount({\n envId: window.config.comment.twikoo.envId,\n region: window.config.comment.twikoo.region,\n urls: [\n window.location.pathname\n ],\n includeReply: false\n }).then(function (res) {\n // example: [\n // { url: '/2020/10/post-1.html', count: 10 },\n // { url: '/2020/11/post-2.html', count: 0 },\n // { url: '/2020/12/post-3.html', count: 20 }\n // ]\n // If there is an element with id=\"twikoo-comment-count\", set its innerHTML to the count of comments\n const $twikooCommentCount = document.getElementById('twikoo-comment-count');\n if ($twikooCommentCount) $twikooCommentCount.innerHTML = res[0].count;\n }).catch(function (err) {\n console.error(err);\n });\n }\n } \n if (window.config.comment.utterances) {\n const utterancesConfig = window.config.comment.utterances;\n const script = document.createElement('script');\n script.src = 'https://utteranc.es/client.js';\n script.type = 'text/javascript';\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', window.isDark ? utterancesConfig.darkTheme : utterancesConfig.lightTheme);\n script.crossOrigin = 'anonymous';\n script.async = true;\n document.getElementById('utterances').appendChild(script);\n window._utterancesOnSwitchTheme = (() => {\n const message = {\n type: 'set-theme',\n theme: window.isDark ? utterancesConfig.darkTheme : utterancesConfig.lightTheme,\n };\n const iframe = document.querySelector('.utterances-frame');\n iframe.contentWindow.postMessage(message, 'https://utteranc.es');\n });\n window.switchThemeEventSet.add(window._utterancesOnSwitchTheme);\n }\n if (window.config.comment.vssue) {\n let vssue = window.config.comment.vssue;\n new Vue({\n el: vssue.el,\n render: h => h('Vssue', {\n props: {\n title: vssue.title,\n options: {\n owner: vssue.owner,\n repo: vssue.repo,\n clientId: vssue.clientId,\n clientSecret: vssue.clientSecret,\n },\n }\n })\n })\n }\n if (window.config.comment.remark42) {\n let remark42 = window.config.comment.remark42;\n var remark_config = {\n host: remark42.host,\n site_id: remark42.site_id,\n components: ['embed'],\n max_shown_comments: remark42.max_shown_comments,\n theme: window.isDark ? 'dark' : 'light',\n locale: remark42.locale,\n show_email_subscription: remark42.show_email_subscription,\n simple_view: remark42.simple_view\n };\n window.remark_config = remark_config;\n !function(e,n){for(var o=0;o {\n if (window.isDark) {\n window.REMARK42.changeTheme('dark');\n } else {\n window.REMARK42.changeTheme('light');\n }\n });\n window.switchThemeEventSet.add(window._remark42OnSwitchTheme);\n }\n if (window.config.comment.giscus) {\n const giscusConfig = window.config.comment.giscus;\n const script = document.createElement('script');\n script.src = 'https://giscus.app/client.js';\n script.type = 'text/javascript';\n script.setAttribute('data-repo', giscusConfig.dataRepo);\n script.setAttribute('data-repo-id', giscusConfig.dataRepoId);\n if (giscusConfig.dataCategory) script.setAttribute('data-category', giscusConfig.dataCategory);\n script.setAttribute('data-category-id', giscusConfig.dataCategoryId);\n script.setAttribute('data-mapping', giscusConfig.dataMapping);\n script.setAttribute('data-reactions-enabled', giscusConfig.dataReactionsEnabled);\n script.setAttribute('data-emit-metadata', giscusConfig.dataEmitMetadata);\n script.setAttribute('data-theme', window.isDark ? giscusConfig.darkTheme : giscusConfig.lightTheme);\n script.crossOrigin = 'anonymous';\n script.async = true;\n document.getElementById('giscus').appendChild(script);\n window._giscusOnSwitchTheme = (() => {\n const message = {\n giscus: {\n setConfig: {\n theme: window.isDark ? giscusConfig.darkTheme : giscusConfig.lightTheme,\n }\n }\n };\n const iframe = document.querySelector('.giscus-frame');\n iframe.contentWindow.postMessage(message, 'https://giscus.app');\n });\n window.switchThemeEventSet.add(window._giscusOnSwitchTheme);\n }\n }\n}\n\nfunction initMeta() {\n function getMeta(metaName) {\n const metas = document.getElementsByTagName('meta');\n for (let i = 0; i < metas.length; i++) {\n if (metas[i].getAttribute('name') === metaName) {\n return metas[i];\n }\n }\n }\n let themeColorMeta = getMeta('theme-color');\n let metaColors = {\n 'light': '#f8f8f8',\n 'dark': '#252627',\n 'black': '#000000'\n }\n window._metaThemeColorOnSwitchTheme = (() => {\n themeColorMeta.content = metaColors[document.body.getAttribute('theme')];\n });\n window.switchThemeEventSet.add(window._metaThemeColorOnSwitchTheme);\n window._metaThemeColorOnSwitchTheme();\n}\n\nfunction initCookieconsent() {\n if (window.config.cookieconsent) {\n let container = document.getElementById('cookieconsent-container');\n // if there is nothing in the container, then init the cookieconsent\n if (container.innerHTML === '') {\n window.config.cookieconsent.container = container;\n cookieconsent.initialise(window.config.cookieconsent);\n }\n };\n}\n\nfunction onScroll() {\n const $headers = [];\n const $viewComments = document.getElementById('view-comments');\n if (document.body.getAttribute('header-desktop') === 'auto') $headers.push(document.getElementById('header-desktop'));\n if (document.body.getAttribute('header-mobile') === 'auto') $headers.push(document.getElementById('header-mobile'));\n if (document.getElementById('comments')) {\n $viewComments.href = `#comments`;\n $viewComments.style.display = 'block';\n } else {\n $viewComments.style.display = 'null';\n }\n const $fixedButtons = document.getElementById('fixed-buttons');\n const ACCURACY = 20, MINIMUM = 100;\n function handleScrollEvent() {\n window.newScrollTop = getScrollTop();\n const scroll = window.newScrollTop - window.oldScrollTop;\n const isMobile = isMobileWindow();\n forEach($headers, $header => {\n if (scroll > ACCURACY) {\n $header.classList.remove('animate__fadeInDown');\n animateCSS($header, ['animate__fadeOutUp', 'animate__faster'], true);\n } else if (scroll < - ACCURACY || window.newScrollTop <= 20) {\n $header.classList.remove('animate__fadeOutUp');\n animateCSS($header, ['animate__fadeInDown', 'animate__faster'], true);\n }\n });\n if (window.newScrollTop > MINIMUM) {\n if (isMobile && scroll > ACCURACY) {\n $fixedButtons.classList.remove('animate__fadeIn');\n animateCSS($fixedButtons, ['animate__fadeOut', 'animate__faster'], true);\n } else if (!isMobile || scroll < - ACCURACY) {\n $fixedButtons.style.display = 'block';\n $fixedButtons.classList.remove('animate__fadeOut');\n animateCSS($fixedButtons, ['animate__fadeIn', 'animate__faster'], true);\n }\n } else {\n if (!isMobile) {\n $fixedButtons.classList.remove('animate__fadeIn');\n animateCSS($fixedButtons, ['animate__fadeOut', 'animate__faster'], true);\n }\n $fixedButtons.style.display = 'none';\n }\n for (let event of window.scrollEventSet) event();\n window.oldScrollTop = window.newScrollTop;\n }\n window.addEventListener('scroll', handleScrollEvent, false);\n document.addEventListener('pjax:send', function () {\n window.removeEventListener('scroll', handleScrollEvent);\n });\n}\n\nfunction onResize() {\n window.addEventListener('resize', () => {\n if (!window._resizeTimeout) {\n window._resizeTimeout = window.setTimeout(() => {\n window._resizeTimeout = null;\n for (let event of window.resizeEventSet) event();\n initToc();\n initMermaid();\n initSearch();\n }, 100);\n }\n }, false);\n}\n\nfunction onClickMask() {\n document.getElementById('mask').addEventListener('click', () => {\n for (let event of window.clickMaskEventSet) event();\n document.body.classList.remove('blur');\n }, false);\n}\n\nfunction init() {\n window.data = window.config.data;\n window.isDark = document.body.getAttribute('theme') !== 'light';\n window.newScrollTop = getScrollTop();\n window.oldScrollTop = window.newScrollTop;\n window.scrollEventSet = new Set();\n window.resizeEventSet = new Set();\n window.switchThemeEventSet = new Set();\n window.clickMaskEventSet = new Set();\n window.pjaxSendEventSet = new Set();\n if (window.objectFitImages) objectFitImages();\n initSVGIcon();\n initTwemoji();\n initMenuMobile();\n initSwitchTheme();\n initSelectTheme();\n initMeta();\n initSearch();\n initDetails();\n initLightGallery();\n initHighlight();\n initTable();\n initHeaderLink();\n initMath();\n initMermaid();\n initEcharts();\n initTypeit();\n initMapbox();\n initCookieconsent();\n initToc();\n initComment();\n onScroll();\n onResize();\n onClickMask();\n}\n\nconst themeInit = () => {\n init();\n};\n\nif (document.readyState !== 'loading') {\n themeInit();\n} else {\n document.addEventListener('DOMContentLoaded', themeInit, false);\n}\n\nlet pjax = new Pjax({\n selectors: [\n \".pjax-title\",\n \"main\",\n \".menu-item\",\n \".pjax-assets\",\n \"#fixed-buttons\",\n \".search-dropdown\",\n ]\n})\n\ndocument.addEventListener('pjax:success', function () {\n themeInit();\n});\n\ndocument.addEventListener('pjax:send', function () {\n for (let event of window.pjaxSendEventSet) event();\n for (let event of window.clickMaskEventSet) event();\n document.body.classList.remove('blur');\n delete window._tocOnScroll;\n let el = document.getElementById('content');\n window.lgData[el.getAttribute('lg-uid')].destroy(true)\n});\n\ntopbar.config({\n autoRun: true,\n barThickness: 3,\n barColors: {\n '0': '#55bde2'\n },\n shadowBlur: 0,\n shadowColor: 'rgba(0, 0, 0, .5)',\n className: 'topbar',\n})\ndocument.addEventListener('pjax:send', topbar.show);\ndocument.addEventListener('pjax:complete', topbar.hide);\ndocument.addEventListener('pjax:error', topbar.hide);"]} \ No newline at end of file +{"version":3,"sources":["../../src/js/theme.js"],"names":[],"mappings":"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","file":"theme.min.js","sourcesContent":["function forEach(elements, handler) {\n elements = elements || [];\n for (let i = 0; i < elements.length; i++) handler(elements[i]);\n}\n\nfunction getScrollTop() {\n return (document.documentElement && document.documentElement.scrollTop) || document.body.scrollTop;\n}\n\nfunction isMobileWindow() {\n return window.matchMedia('only screen and (max-width: 680px)').matches;\n}\n\nfunction isTocStatic() {\n return window.matchMedia('only screen and (max-width: 1000px)').matches;\n}\n\nfunction animateCSS(element, animation, reserved, callback) {\n if (!Array.isArray(animation)) animation = [animation];\n element.classList.add('animate__animated', ...animation);\n const handler = () => {\n element.classList.remove('animate__animated', ...animation);\n element.removeEventListener('animationend', handler);\n if (typeof callback === 'function') callback();\n };\n if (!reserved) element.addEventListener('animationend', handler, false);\n}\n\n\nfunction initSVGIcon() {\n forEach(document.querySelectorAll('[data-svg-src]'), $icon => {\n fetch($icon.getAttribute('data-svg-src'))\n .then(response => response.text())\n .then(svg => {\n const $temp = document.createElement('div');\n $temp.insertAdjacentHTML('afterbegin', svg);\n const $svg = $temp.firstChild;\n $svg.setAttribute('data-svg-src', $icon.getAttribute('data-svg-src'));\n $svg.classList.add('icon');\n const $titleElements = $svg.getElementsByTagName('title');\n if ($titleElements.length) $svg.removeChild($titleElements[0]);\n $icon.parentElement.replaceChild($svg, $icon);\n })\n .catch(err => { console.error(err); });\n });\n}\n\nfunction initTwemoji() {\n if (window.config.twemoji) twemoji.parse(document.body);\n}\n\nfunction initMenuMobile() {\n const $menuToggleMobile = document.getElementById('menu-toggle-mobile');\n const $menuMobile = document.getElementById('menu-mobile');\n if (!window.menuToggleMobileEventListener) {\n $menuToggleMobile.addEventListener('click', () => {\n document.body.classList.toggle('blur');\n $menuToggleMobile.classList.toggle('active');\n $menuMobile.classList.toggle('active');\n }, false);\n window.menuToggleMobileEventListener = true;\n }\n window._menuMobileOnClickMask = (() => {\n $menuToggleMobile.classList.remove('active');\n $menuMobile.classList.remove('active');\n });\n window.clickMaskEventSet.add(window._menuMobileOnClickMask);\n}\n\nfunction initSwitchTheme() {\n forEach(document.getElementsByClassName('theme-switch'), $themeSwitch => {\n $themeSwitch.addEventListener('click', () => {\n let currentTheme = document.body.getAttribute('theme');\n if (currentTheme === 'dark') {\n document.body.setAttribute('theme', 'black');\n window.localStorage && localStorage.setItem('theme', 'black');\n window.isDark = true;\n } else if (currentTheme === 'black') {\n document.body.setAttribute('theme', 'light');\n window.localStorage && localStorage.setItem('theme', 'light');\n window.isDark = false;\n } else {\n document.body.setAttribute('theme', 'dark');\n window.localStorage && localStorage.setItem('theme', 'dark');\n window.isDark = true;\n }\n for (let event of window.switchThemeEventSet) event();\n }, false);\n });\n}\n\nfunction initSelectTheme() {\n forEach(document.getElementsByClassName('color-theme-select'), $themeSelect => {\n let currentTheme = document.body.getAttribute('theme');\n for (let i, j = 0; i = $themeSelect.options[j]; j++) {\n if (i.value == currentTheme) {\n $themeSelect.selectedIndex = j;\n break;\n }\n }\n $themeSelect.addEventListener('change', () => {\n let theme = $themeSelect.value;\n window.localStorage && localStorage.setItem('theme', theme);\n if (theme != 'auto') {\n document.body.setAttribute('theme', theme);\n if (theme == 'light') {\n window.isDark = false;\n } else {\n window.isDark = true;\n }\n } else {\n if (window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches) {\n document.body.setAttribute('theme', 'dark');\n window.isDark = true;\n } else {\n document.body.setAttribute('theme', 'white');\n window.isDark = false;\n }\n }\n for (let event of window.switchThemeEventSet) event();\n }, false);\n });\n}\n\nfunction initSearch() {\n const searchConfig = window.config.search;\n const isMobile = isMobileWindow();\n if (!searchConfig || isMobile && window._searchMobileOnce || !isMobile && window._searchDesktopOnce) return;\n\n const maxResultLength = searchConfig.maxResultLength ? searchConfig.maxResultLength : 10;\n const snippetLength = searchConfig.snippetLength ? searchConfig.snippetLength : 50;\n const highlightTag = searchConfig.highlightTag ? searchConfig.highlightTag : 'em';\n const isCaseSensitive = searchConfig.isCaseSensitive ? searchConfig.isCaseSensitive : false;\n const minMatchCharLength = searchConfig.minMatchCharLength ? searchConfig.minMatchCharLength : 1;\n const findAllMatches = searchConfig.findAllMatches ? searchConfig.findAllMatches : false;\n const location = searchConfig.location ? searchConfig.location : 0;\n const threshold = searchConfig.threshold ? searchConfig.threshold : 0.3;\n const distance = searchConfig.distance ? searchConfig.distance : 100;\n const ignoreLocation = searchConfig.ignoreLocation ? searchConfig.ignoreLocation : false;\n const useExtendedSearch = searchConfig.useExtendedSearch ? searchConfig.useExtendedSearch : false;\n const ignoreFieldNorm = searchConfig.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 if (isMobile) {\n window._searchMobileOnce = true;\n $searchInput.addEventListener('focus', () => {\n document.body.classList.add('blur');\n $header.classList.add('open');\n }, false);\n document.getElementById('search-cancel-mobile').addEventListener('click', () => {\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 window._searchMobile && window._searchMobile.autocomplete.setVal('');\n }, false);\n $searchClear.addEventListener('click', () => {\n $searchClear.style.display = 'none';\n window._searchMobile && window._searchMobile.autocomplete.setVal('');\n }, false);\n window._searchMobileOnClickMask = (() => {\n $header.classList.remove('open');\n $searchLoading.style.display = 'none';\n $searchClear.style.display = 'none';\n window._searchMobile && window._searchMobile.autocomplete.setVal('');\n });\n window.clickMaskEventSet.add(window._searchMobileOnClickMask);\n window.pjaxSendEventSet.add(window._searchMobileOnClickMask);\n } else {\n window._searchDesktopOnce = true;\n\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 window._searchDesktop && window._searchDesktop.autocomplete.setVal('');\n }, false);\n // Toggle search when Ctrl + K is pressed\n document.addEventListener('keydown', e => {\n if (e.ctrlKey && e.code == 'KeyK') {\n e.preventDefault();\n $searchToggle.click();\n }\n }, false);\n window._searchDesktopOnClickMask = (() => {\n $header.classList.remove('open');\n $searchLoading.style.display = 'none';\n $searchClear.style.display = 'none';\n window._searchDesktop && window._searchDesktop.autocomplete.setVal('');\n });\n window.clickMaskEventSet.add(window._searchDesktopOnClickMask);\n window.pjaxSendEventSet.add(window._searchDesktopOnClickMask);\n window.pjaxSendEventSet.add(() => {window._searchDesktopOnce = false; window._searchMobileOnce = false;});\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 hint: false,\n autoselect: true,\n dropdownMenuContainer: `#search-dropdown-${suffix}`,\n clearOnSelected: true,\n cssClasses: { noPrefix: true },\n debug: true,\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) query = lunr.queryHandler(query);\n const results = {};\n window._index.search(query).forEach(({ ref, matchData: { metadata } }) => {\n const matchData = window._indexData[ref];\n let { uri, title, content: context } = matchData;\n if (results[uri]) return;\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) position = matchPosition;\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 (!window._index) {\n fetch(searchConfig.lunrIndexURL)\n .then(response => response.json())\n .then(data => {\n const indexData = {};\n window._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 window._indexData = indexData;\n finish(search());\n }).catch(err => {\n console.error(err);\n finish([]);\n });\n } else finish(search());\n } else if (searchConfig.type === 'algolia') {\n window._algoliaIndex = window._algoliaIndex || algoliasearch(searchConfig.algoliaAppID, searchConfig.algoliaSearchKey).initIndex(searchConfig.algoliaIndex);\n window._algoliaIndex\n .search(query, {\n offset: 0,\n length: maxResultLength * 8,\n attributesToHighlight: ['title'],\n attributesToRetrieve: ['*'],\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) return;\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 let substr = content.substring(indices[i][0] + offset, indices[i][1] + 1 + offset);\n let 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 let substr = title.substring(indices[i][0] + offset, indices[i][1] + 1 + offset);\n let 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 });\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: [\n \"content\",\n \"title\"\n ]\n };\n window._index = new Fuse(data, options);\n finish(search());\n }).catch(err => {\n console.error(err);\n finish([]);\n })\n } else finish(search());\n }\n },\n templates: {\n suggestion: ({ title, date, context }) => `
${title}${date}
${context}
`,\n empty: ({ query }) => `
${searchConfig.noResultsFound}: \"${query}\"
`,\n footer: ({ }) => {\n const { searchType, icon, href } = searchConfig.type === 'algolia' ? {\n searchType: 'algolia',\n icon: '',\n href: 'https://www.algolia.com/',\n } : (searchConfig.type === 'lunr' ? {\n searchType: 'Lunr.js',\n icon: '',\n href: 'https://lunrjs.com/',\n } : {\n searchType: 'Fuse.js',\n icon: '',\n href: 'https://fusejs.io/',\n });\n return ``;\n },\n },\n });\n autosearch.on('autocomplete:selected', (_event, suggestion, _dataset, _context) => {\n window.location.assign(suggestion.uri);\n });\n if (isMobile) window._searchMobile = autosearch;\n else window._searchDesktop = autosearch;\n };\n if (searchConfig.lunrSegmentitURL && !document.getElementById('lunr-segmentit')) {\n const script = document.createElement('script');\n script.id = 'lunr-segmentit';\n script.type = 'text/javascript';\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 initAutosearch();\n}\n\nfunction initDetails() {\n forEach(document.getElementsByClassName('details'), $details => {\n const $summary = $details.getElementsByClassName('details-summary')[0];\n $summary.addEventListener('click', () => {\n $details.classList.toggle('open');\n }, false);\n });\n}\n\nfunction initLightGallery() {\n if (window.config.lightGallery) {\n const instance = lightGallery(document.getElementById('content'), window.config.lightGallery);\n }\n}\n\nfunction initHighlight() {\n 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 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 const $title = document.createElement('span');\n $title.classList.add('code-title');\n $title.insertAdjacentHTML('afterbegin', '');\n $title.addEventListener('click', () => {\n $chroma.classList.toggle('open');\n }, false);\n $header.appendChild($title);\n 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 const $copy = document.createElement('span');\n $copy.insertAdjacentHTML('afterbegin', '');\n $copy.classList.add('copy');\n const code = $code.innerText;\n if (window.config.code.maxShownLines < 0 || code.split('\\n').length < window.config.code.maxShownLines + 2) $chroma.classList.add('open');\n if (window.config.code.copyTitle) {\n $copy.setAttribute('data-clipboard-text', code);\n $copy.title = window.config.code.copyTitle;\n const clipboard = new ClipboardJS($copy);\n clipboard.on('success', _e => {\n animateCSS($code, 'animate__flash');\n $copy.firstElementChild.className = \"fas fa-check fa-fw\";\n setTimeout(() => {\n $copy.firstElementChild.className = \"far fa-copy fa-fw\";\n }, 3000);\n });\n $header.appendChild($copy);\n }\n $chroma.insertBefore($header, $chroma.firstChild);\n }\n });\n}\n\nfunction initTable() {\n 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\nfunction initHeaderLink() {\n for (let num = 1; num <= 6; num++) {\n forEach(document.querySelectorAll('.single .content > h' + num), $header => {\n $header.classList.add('headerLink');\n $header.insertAdjacentHTML('afterbegin', ``);\n });\n }\n}\n\nfunction initToc() {\n const $tocCore = document.getElementById('TableOfContents');\n if ($tocCore === null) return;\n if (document.getElementById('toc-static').getAttribute('kept') || 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 if (window._tocOnScroll) window.scrollEventSet.delete(window._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 const $page = document.getElementsByClassName('page')[0];\n const rect = $page.getBoundingClientRect();\n $toc.style.left = `${rect.left + rect.width + 20}px`;\n $toc.style.maxWidth = `${window.innerWidth - $page.getBoundingClientRect().right - 20}px`;\n $toc.style.visibility = 'visible';\n const $tocLinkElements = $tocCore.querySelectorAll('a:first-child');\n const $tocLiElements = $tocCore.getElementsByTagName('li');\n const $headerLinkElements = document.getElementsByClassName('headerLink');\n const headerIsFixed = document.body.getAttribute('header-desktop') !== 'normal';\n const headerHeight = document.getElementById('header-desktop').offsetHeight;\n const TOP_SPACING = 20 + (headerIsFixed ? headerHeight : 0);\n const minTocTop = $toc.offsetTop;\n const minScrollTop = minTocTop - TOP_SPACING + (headerIsFixed ? 0 : headerHeight)\n window._tocOnScroll = window._tocOnScroll || (() => {\n const footerTop = document.getElementById('post-footer').offsetTop;\n const maxTocTop = footerTop - $toc.getBoundingClientRect().height;\n const maxScrollTop = maxTocTop - TOP_SPACING + (headerIsFixed ? 0 : headerHeight);\n if (window.newScrollTop < minScrollTop) {\n $toc.style.position = 'absolute';\n $toc.style.top = `${minTocTop}px`;\n } else if (window.newScrollTop > maxScrollTop) {\n $toc.style.position = 'absolute';\n $toc.style.top = `${maxTocTop}px`;\n } else {\n $toc.style.position = 'fixed';\n $toc.style.top = `${TOP_SPACING}px`;\n }\n if ($tocLinkElements.length === 0) return;\n const content = document.getElementById('content');\n forEach($tocLinkElements, $tocLink => { $tocLink.classList.remove('active'); });\n forEach($tocLiElements, $tocLi => { $tocLi.classList.remove('has-active'); });\n const INDEX_SPACING = 20 + (headerIsFixed ? headerHeight : 0);\n let activeTocIndex = -1;\n if (content.getBoundingClientRect().top <= INDEX_SPACING\n && content.getBoundingClientRect().bottom > INDEX_SPACING\n && $headerLinkElements[0].getBoundingClientRect().top <= INDEX_SPACING) {\n if ($headerLinkElements[$headerLinkElements.length -1].getBoundingClientRect().top < INDEX_SPACING) {\n activeTocIndex = $headerLinkElements.length - 1;\n }\n else {\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 (thisTop <= INDEX_SPACING && nextTop > INDEX_SPACING) {\n activeTocIndex = i;\n break;\n }\n }\n }\n if (activeTocIndex >= 0 && activeTocIndex < $tocLinkElements.length) {\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 history.replaceState(history.state, null, activeTocIndex === -1 ? ' ' : $tocLinkElements[activeTocIndex].href);\n });\n window._tocOnScroll();\n window.scrollEventSet.add(window._tocOnScroll);\n }\n}\n\nfunction initMath() {\n if (window.config.math) renderMathInElement(document.body, window.config.math);\n}\n\nfunction initMermaid() {\n const $mermaidElements = document.getElementsByClassName('mermaid');\n if ($mermaidElements.length) {\n mermaid.initialize({ startOnLoad: false, theme: 'default' });\n forEach($mermaidElements, $mermaid => {\n mermaid.mermaidAPI.render('svg-' + $mermaid.id, window.data[$mermaid.id], svgCode => {\n $mermaid.insertAdjacentHTML('afterbegin', svgCode);\n document.getElementById('svg-' + $mermaid.id).children[0].remove();\n }, $mermaid);\n });\n }\n}\n\nfunction initEcharts() {\n window._echartsOnSwitchTheme = (() => {\n window._echartsArr = window._echartsArr || [];\n for (let i = 0; i < window._echartsArr.length; i++) {\n window._echartsArr[i].dispose();\n }\n window._echartsArr = [];\n forEach(document.getElementsByClassName('echarts'), $echarts => {\n const chart = echarts.init($echarts, window.isDark ? 'dark' : 'macarons', { renderer: 'svg' });\n chart.setOption(JSON.parse(window.data[$echarts.id]));\n window._echartsArr.push(chart);\n });\n });\n window.switchThemeEventSet.add(window._echartsOnSwitchTheme);\n window._echartsOnSwitchTheme();\n window._echartsOnResize = (() => {\n for (let i = 0; i < window._echartsArr.length; i++) {\n window._echartsArr[i].resize();\n }\n });\n window.resizeEventSet.add(window._echartsOnResize);\n}\n\nfunction initMapbox() {\n if (window.config.mapbox) {\n mapboxgl.accessToken = window.config.mapbox.accessToken;\n mapboxgl.setRTLTextPlugin(window.config.mapbox.RTLTextPlugin);\n window._mapboxArr = window._mapboxArr || [];\n forEach(document.getElementsByClassName('mapbox'), $mapbox => {\n const { lng, lat, zoom, lightStyle, darkStyle, marked, navigation, geolocate, scale, fullscreen } = window.data[$mapbox.id];\n const mapbox = new mapboxgl.Map({\n container: $mapbox,\n center: [lng, lat],\n zoom: zoom,\n minZoom: .2,\n style: window.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(new mapboxgl.GeolocateControl({\n positionOptions: {\n enableHighAccuracy: true,\n },\n showUserLocation: true,\n trackUserLocation: true,\n }), 'bottom-right');\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 window._mapboxArr.push(mapbox);\n });\n window._mapboxOnSwitchTheme = (() => {\n forEach(window._mapboxArr, mapbox => {\n const $mapbox = mapbox.getContainer();\n const { lightStyle, darkStyle } = window.data[$mapbox.id];\n mapbox.setStyle(window.isDark ? darkStyle : lightStyle);\n mapbox.addControl(new MapboxLanguage());\n });\n });\n window.switchThemeEventSet.add(window._mapboxOnSwitchTheme);\n }\n}\n\nfunction initTypeit() {\n if (window.config.typeit) {\n const typeitConfig = window.config.typeit;\n const speed = typeitConfig.speed ? typeitConfig.speed : 100;\n const cursorSpeed = typeitConfig.cursorSpeed ? typeitConfig.cursorSpeed : 1000;\n const cursorChar = typeitConfig.cursorChar ? typeitConfig.cursorChar : '|';\n Object.values(typeitConfig.data).forEach(group => {\n const typeone = (i) => {\n const id = group[i];\n if (!document.getElementById(id).hasAttribute(\"data-typeit-id\")) {\n const instance = new TypeIt(`#${id}`, {\n strings: window.data[id],\n speed: speed,\n lifeLike: true,\n cursorSpeed: cursorSpeed,\n cursorChar: cursorChar,\n waitUntilVisible: true,\n afterComplete: () => {\n if (i === group.length - 1) {\n if (typeitConfig.duration >= 0) window.setTimeout(() => {\n instance.destroy();\n }, typeitConfig.duration);\n return;\n }\n instance.destroy();\n typeone(i + 1);\n },\n }).go();\n }\n };\n typeone(0);\n });\n }\n}\n\nfunction initComment() {\n if (window.config.comment) {\n if (window.config.comment.gitalk) {\n window.config.comment.gitalk.body = decodeURI(window.location.href);\n const gitalk = new Gitalk(window.config.comment.gitalk);\n gitalk.render('gitalk');\n }\n if (window.config.comment.valine) new Valine(window.config.comment.valine);\n if (window.config.comment.waline) new Waline(window.config.comment.waline);\n if (window.config.comment.twikoo) {\n twikoo.init(window.config.comment.twikoo);\n if (window.config.comment.twikoo.commentCount) {\n twikoo.getCommentsCount({\n envId: window.config.comment.twikoo.envId,\n region: window.config.comment.twikoo.region,\n urls: [\n window.location.pathname\n ],\n includeReply: false\n }).then(function (res) {\n // example: [\n // { url: '/2020/10/post-1.html', count: 10 },\n // { url: '/2020/11/post-2.html', count: 0 },\n // { url: '/2020/12/post-3.html', count: 20 }\n // ]\n // If there is an element with id=\"twikoo-comment-count\", set its innerHTML to the count of comments\n const $twikooCommentCount = document.getElementById('twikoo-comment-count');\n if ($twikooCommentCount) $twikooCommentCount.innerHTML = res[0].count;\n }).catch(function (err) {\n console.error(err);\n });\n }\n } \n if (window.config.comment.utterances) {\n const utterancesConfig = window.config.comment.utterances;\n const script = document.createElement('script');\n script.src = 'https://utteranc.es/client.js';\n script.type = 'text/javascript';\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', window.isDark ? utterancesConfig.darkTheme : utterancesConfig.lightTheme);\n script.crossOrigin = 'anonymous';\n script.async = true;\n document.getElementById('utterances').appendChild(script);\n window._utterancesOnSwitchTheme = (() => {\n const message = {\n type: 'set-theme',\n theme: window.isDark ? utterancesConfig.darkTheme : utterancesConfig.lightTheme,\n };\n const iframe = document.querySelector('.utterances-frame');\n iframe.contentWindow.postMessage(message, 'https://utteranc.es');\n });\n window.switchThemeEventSet.add(window._utterancesOnSwitchTheme);\n }\n if (window.config.comment.vssue) {\n let vssue = window.config.comment.vssue;\n new Vue({\n el: vssue.el,\n render: h => h('Vssue', {\n props: {\n title: vssue.title,\n options: {\n owner: vssue.owner,\n repo: vssue.repo,\n clientId: vssue.clientId,\n clientSecret: vssue.clientSecret,\n },\n }\n })\n })\n }\n if (window.config.comment.remark42) {\n let remark42 = window.config.comment.remark42;\n var remark_config = {\n host: remark42.host,\n site_id: remark42.site_id,\n components: ['embed'],\n max_shown_comments: remark42.max_shown_comments,\n theme: window.isDark ? 'dark' : 'light',\n locale: remark42.locale,\n show_email_subscription: remark42.show_email_subscription,\n simple_view: remark42.simple_view\n };\n window.remark_config = remark_config;\n !function(e,n){for(var o=0;o {\n if (window.isDark) {\n window.REMARK42.changeTheme('dark');\n } else {\n window.REMARK42.changeTheme('light');\n }\n });\n window.switchThemeEventSet.add(window._remark42OnSwitchTheme);\n }\n if (window.config.comment.giscus) {\n const giscusConfig = window.config.comment.giscus;\n const script = document.createElement('script');\n script.src = 'https://giscus.app/client.js';\n script.type = 'text/javascript';\n script.setAttribute('data-repo', giscusConfig.dataRepo);\n script.setAttribute('data-repo-id', giscusConfig.dataRepoId);\n if (giscusConfig.dataCategory) script.setAttribute('data-category', giscusConfig.dataCategory);\n script.setAttribute('data-category-id', giscusConfig.dataCategoryId);\n script.setAttribute('data-mapping', giscusConfig.dataMapping);\n script.setAttribute('data-reactions-enabled', giscusConfig.dataReactionsEnabled);\n script.setAttribute('data-emit-metadata', giscusConfig.dataEmitMetadata);\n script.setAttribute('data-theme', window.isDark ? giscusConfig.darkTheme : giscusConfig.lightTheme);\n script.crossOrigin = 'anonymous';\n script.async = true;\n document.getElementById('giscus').appendChild(script);\n window._giscusOnSwitchTheme = (() => {\n const message = {\n giscus: {\n setConfig: {\n theme: window.isDark ? giscusConfig.darkTheme : giscusConfig.lightTheme,\n }\n }\n };\n const iframe = document.querySelector('.giscus-frame');\n iframe.contentWindow.postMessage(message, 'https://giscus.app');\n });\n window.switchThemeEventSet.add(window._giscusOnSwitchTheme);\n }\n }\n}\n\nfunction initMeta() {\n function getMeta(metaName) {\n const metas = document.getElementsByTagName('meta');\n for (let i = 0; i < metas.length; i++) {\n if (metas[i].getAttribute('name') === metaName) {\n return metas[i];\n }\n }\n }\n let themeColorMeta = getMeta('theme-color');\n let metaColors = {\n 'light': '#f8f8f8',\n 'dark': '#252627',\n 'black': '#000000'\n }\n window._metaThemeColorOnSwitchTheme = (() => {\n themeColorMeta.content = metaColors[document.body.getAttribute('theme')];\n });\n window.switchThemeEventSet.add(window._metaThemeColorOnSwitchTheme);\n window._metaThemeColorOnSwitchTheme();\n}\n\nfunction initCookieconsent() {\n if (window.config.cookieconsent) {\n let container = document.getElementById('cookieconsent-container');\n // if there is nothing in the container, then init the cookieconsent\n if (container.innerHTML === '') {\n window.config.cookieconsent.container = container;\n cookieconsent.initialise(window.config.cookieconsent);\n }\n };\n}\n\nfunction onScroll() {\n const $headers = [];\n const $viewComments = document.getElementById('view-comments');\n if (document.body.getAttribute('header-desktop') === 'auto') $headers.push(document.getElementById('header-desktop'));\n if (document.body.getAttribute('header-mobile') === 'auto') $headers.push(document.getElementById('header-mobile'));\n if (document.getElementById('comments')) {\n $viewComments.href = `#comments`;\n $viewComments.style.display = 'block';\n } else {\n $viewComments.style.display = 'null';\n }\n const $fixedButtons = document.getElementById('fixed-buttons');\n const ACCURACY = 20, MINIMUM = 100;\n function handleScrollEvent() {\n window.newScrollTop = getScrollTop();\n const scroll = window.newScrollTop - window.oldScrollTop;\n const isMobile = isMobileWindow();\n forEach($headers, $header => {\n if (scroll > ACCURACY) {\n $header.classList.remove('animate__fadeInDown');\n animateCSS($header, ['animate__fadeOutUp', 'animate__faster'], true);\n } else if (scroll < - ACCURACY || window.newScrollTop <= 20) {\n $header.classList.remove('animate__fadeOutUp');\n animateCSS($header, ['animate__fadeInDown', 'animate__faster'], true);\n }\n });\n if (window.newScrollTop > MINIMUM) {\n if (isMobile && scroll > ACCURACY) {\n $fixedButtons.classList.remove('animate__fadeIn');\n animateCSS($fixedButtons, ['animate__fadeOut', 'animate__faster'], true);\n } else if (!isMobile || scroll < - ACCURACY) {\n $fixedButtons.style.display = 'block';\n $fixedButtons.classList.remove('animate__fadeOut');\n animateCSS($fixedButtons, ['animate__fadeIn', 'animate__faster'], true);\n }\n } else {\n if (!isMobile) {\n $fixedButtons.classList.remove('animate__fadeIn');\n animateCSS($fixedButtons, ['animate__fadeOut', 'animate__faster'], true);\n }\n $fixedButtons.style.display = 'none';\n }\n for (let event of window.scrollEventSet) event();\n window.oldScrollTop = window.newScrollTop;\n }\n window.addEventListener('scroll', handleScrollEvent, false);\n document.addEventListener('pjax:send', function () {\n window.removeEventListener('scroll', handleScrollEvent);\n });\n}\n\nfunction onResize() {\n window.addEventListener('resize', () => {\n if (!window._resizeTimeout) {\n window._resizeTimeout = window.setTimeout(() => {\n window._resizeTimeout = null;\n for (let event of window.resizeEventSet) event();\n initToc();\n initMermaid();\n initSearch();\n }, 100);\n }\n }, false);\n}\n\nfunction onClickMask() {\n document.getElementById('mask').addEventListener('click', () => {\n for (let event of window.clickMaskEventSet) event();\n document.body.classList.remove('blur');\n }, false);\n}\n\nfunction init() {\n window.data = window.config.data;\n window.isDark = document.body.getAttribute('theme') !== 'light';\n window.newScrollTop = getScrollTop();\n window.oldScrollTop = window.newScrollTop;\n window.scrollEventSet = new Set();\n window.resizeEventSet = new Set();\n window.switchThemeEventSet = new Set();\n window.clickMaskEventSet = new Set();\n window.pjaxSendEventSet = new Set();\n if (window.objectFitImages) objectFitImages();\n initSVGIcon();\n initTwemoji();\n initMenuMobile();\n initSwitchTheme();\n initSelectTheme();\n initMeta();\n initSearch();\n initDetails();\n initLightGallery();\n initHighlight();\n initTable();\n initHeaderLink();\n initMath();\n initMermaid();\n initEcharts();\n initTypeit();\n initMapbox();\n initCookieconsent();\n initToc();\n initComment();\n onScroll();\n onResize();\n onClickMask();\n}\n\nconst themeInit = () => {\n init();\n};\n\nif (document.readyState !== 'loading') {\n themeInit();\n} else {\n document.addEventListener('DOMContentLoaded', themeInit, false);\n}\n\nlet pjax = new Pjax({\n selectors: [\n \".pjax-title\",\n \"main\",\n \".menu-item\",\n \".pjax-assets\",\n \"#fixed-buttons\",\n \".search-dropdown\",\n ]\n})\n\ndocument.addEventListener('pjax:success', function () {\n themeInit();\n});\n\ndocument.addEventListener('pjax:send', function () {\n for (let event of window.pjaxSendEventSet) event();\n for (let event of window.clickMaskEventSet) event();\n document.body.classList.remove('blur');\n delete window._tocOnScroll;\n let el = document.getElementById('content');\n window.lgData[el.getAttribute('lg-uid')].destroy(true)\n});\n\ntopbar.config({\n autoRun: true,\n barThickness: 3,\n barColors: {\n '0': '#55bde2'\n },\n shadowBlur: 0,\n shadowColor: 'rgba(0, 0, 0, .5)',\n className: 'topbar',\n})\ndocument.addEventListener('pjax:send', topbar.show);\ndocument.addEventListener('pjax:complete', topbar.hide);\ndocument.addEventListener('pjax:error', topbar.hide);"]} \ No newline at end of file diff --git a/src/js/theme.js b/src/js/theme.js index 295ef162d..b2b4d89a9 100644 --- a/src/js/theme.js +++ b/src/js/theme.js @@ -568,20 +568,25 @@ function initToc() { forEach($tocLinkElements, $tocLink => { $tocLink.classList.remove('active'); }); forEach($tocLiElements, $tocLi => { $tocLi.classList.remove('has-active'); }); const INDEX_SPACING = 20 + (headerIsFixed ? headerHeight : 0); - if (content.getBoundingClientRect().top < INDEX_SPACING - && content.getBoundingClientRect().bottom > INDEX_SPACING) { - 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 (thisTop <= INDEX_SPACING && nextTop > INDEX_SPACING) { - activeTocIndex = i; - break; + let activeTocIndex = -1; + if (content.getBoundingClientRect().top <= INDEX_SPACING + && content.getBoundingClientRect().bottom > INDEX_SPACING + && $headerLinkElements[0].getBoundingClientRect().top <= INDEX_SPACING) { + if ($headerLinkElements[$headerLinkElements.length -1].getBoundingClientRect().top < INDEX_SPACING) { + activeTocIndex = $headerLinkElements.length - 1; + } + else { + for (let i = 0; i < $headerLinkElements.length - 1; i++) { + const thisTop = $headerLinkElements[i].getBoundingClientRect().top; + const nextTop = $headerLinkElements[i + 1].getBoundingClientRect().top; + if (thisTop <= INDEX_SPACING && nextTop > INDEX_SPACING) { + activeTocIndex = i; + break; + } } } if (activeTocIndex >= 0 && activeTocIndex < $tocLinkElements.length) { $tocLinkElements[activeTocIndex].classList.add('active'); - history.replaceState(history.state, null, $tocLinkElements[activeTocIndex].href); let $parent = $tocLinkElements[activeTocIndex].parentElement; while ($parent !== $tocCore) { $parent.classList.add('has-active'); @@ -589,9 +594,7 @@ function initToc() { } } } - else { - history.replaceState(history.state, null, ' '); - } + history.replaceState(history.state, null, activeTocIndex === -1 ? ' ' : $tocLinkElements[activeTocIndex].href); }); window._tocOnScroll(); window.scrollEventSet.add(window._tocOnScroll);