From 791ff12e709918ec9ed9e18ec8bead0005b82043 Mon Sep 17 00:00:00 2001 From: Cell <1024@lruihao.cn> Date: Mon, 16 May 2022 17:10:20 +0800 Subject: [PATCH] :wrench: Chore: use fontawesome 6 --- archetypes/friends.md | 2 +- assets/data/social.yml | 122 ++++++------- assets/js/theme.min.js | 2 +- assets/js/theme.min.js.map | 2 +- assets/svg/icons/bilibili.svg | 1 - exampleSite/config.toml | 32 ++-- exampleSite/content/about/index.en.md | 105 +++++------ exampleSite/content/about/index.zh-cn.md | 105 +++++------ exampleSite/content/friends/index.en.md | 4 +- exampleSite/content/friends/index.zh-cn.md | 4 +- .../posts/basic-markdown-syntax/index.en.md | 2 +- .../basic-markdown-syntax/index.zh-cn.md | 2 +- .../content/posts/pwa-support/index.en.md | 2 +- .../content/posts/pwa-support/index.zh-cn.md | 2 +- .../theme-documentation-basics/index.en.md | 40 ++--- .../theme-documentation-basics/index.zh-cn.md | 40 ++--- .../index.en.md | 2 +- .../index.zh-cn.md | 2 +- .../theme-documentation-content/index.en.md | 14 +- .../index.zh-cn.md | 14 +- .../index.en.md | 8 +- .../index.zh-cn.md | 8 +- exampleSite/content/tests/fontawesome.md | 72 ++++---- exampleSite/content/tests/highlight.md | 2 +- exampleSite/content/tests/markdown.zh-cn.md | 2 +- .../content/tests/print-article.zh-cn.md | 2 +- exampleSite/content/tests/shortcodes.md | 2 +- layouts/404.html | 2 +- layouts/_default/summary.html | 4 +- layouts/offline/single.html | 4 +- layouts/partials/footer.html | 10 +- layouts/partials/function/checkbox.html | 4 +- layouts/partials/function/fontawesome.html | 2 +- layouts/partials/header.html | 24 +-- layouts/partials/init.html | 2 +- layouts/partials/plugin/link.html | 6 +- layouts/partials/plugin/share.html | 48 ++--- .../partials/single/expiration-reminder.html | 2 +- layouts/partials/single/footer.html | 8 +- layouts/partials/single/post-author.html | 2 +- layouts/partials/widgets.html | 4 +- layouts/posts/single.html | 24 +-- layouts/shortcodes/admonition.html | 26 +-- layouts/taxonomy/list.html | 4 +- layouts/taxonomy/terms.html | 2 +- package-lock.json | 166 +++++++++--------- package.json | 2 +- src/js/theme.js | 10 +- 48 files changed, 474 insertions(+), 477 deletions(-) delete mode 100644 assets/svg/icons/bilibili.svg diff --git a/archetypes/friends.md b/archetypes/friends.md index d06a6099..0a16af21 100644 --- a/archetypes/friends.md +++ b/archetypes/friends.md @@ -26,6 +26,6 @@ comment: false {{< admonition info "Notice" true >}} 1. If you want to exchange link, please leave a comment in the above format. (personal non-commercial blogs / websites only) -2. :(fas fa-exclamation-triangle): Website failure, stop maintenance and improper content may be unlinked! +2. :(fa-solid fa-exclamation-triangle): Website failure, stop maintenance and improper content may be unlinked! 3. Those websites that do not respect other people's labor achievements, reprint without source, or malicious acts, please do not come to exchange. {{< /admonition >}} diff --git a/assets/data/social.yml b/assets/data/social.yml index 9eefc1bd..6aa4444b 100644 --- a/assets/data/social.yml +++ b/assets/data/social.yml @@ -4,7 +4,7 @@ github: Prefix: https://github.com/ Title: GitHub Icon: - Class: fab fa-github-alt fa-fw + Class: fa-brands fa-github-alt fa-fw # 002: LinkedIn linkedin: @@ -12,7 +12,7 @@ linkedin: Prefix: https://linkedin.com/in/ Title: LinkedIn Icon: - Class: fab fa-linkedin fa-fw + Class: fa-brands fa-linkedin fa-fw # 003: Twitter twitter: @@ -20,7 +20,7 @@ twitter: Prefix: https://twitter.com/ Title: Twitter Icon: - Class: fab fa-twitter fa-fw + Class: fa-brands fa-twitter fa-fw # 004: Instagram instagram: @@ -28,7 +28,7 @@ instagram: Prefix: https://www.instagram.com/ Title: Instagram Icon: - Class: fab fa-instagram fa-fw + Class: fa-brands fa-instagram fa-fw # 005: facebook facebook: @@ -36,7 +36,7 @@ facebook: Prefix: https://facebook.com/ Title: facebook Icon: - Class: fab fa-facebook fa-fw + Class: fa-brands fa-facebook fa-fw # 006: Telegram telegram: @@ -44,7 +44,7 @@ telegram: Prefix: https://t.me/ Title: Telegram Icon: - Class: fab fa-telegram-plane fa-fw + Class: fa-brands fa-telegram-plane fa-fw # 007: Medium medium: @@ -52,7 +52,7 @@ medium: Prefix: https://medium.com/ Title: Medium Icon: - Class: fab fa-medium fa-fw + Class: fa-brands fa-medium fa-fw # 008: GitLab gitlab: @@ -60,7 +60,7 @@ gitlab: Prefix: https://gitlab.com/ Title: GitLab Icon: - Class: fab fa-gitlab fa-fw + Class: fa-brands fa-gitlab fa-fw # 009: YouTube Legacy youtubelegacy: @@ -68,7 +68,7 @@ youtubelegacy: Prefix: https://www.youtube.com/user/ Title: YouTube Icon: - Class: fab fa-youtube fa-fw + Class: fa-brands fa-youtube fa-fw # 010: YouTube Custom youtubecustom: @@ -76,7 +76,7 @@ youtubecustom: Prefix: https://www.youtube.com/c/ Title: YouTube Icon: - Class: fab fa-youtube fa-fw + Class: fa-brands fa-youtube fa-fw # 011: YouTube Channel youtubechannel: @@ -84,7 +84,7 @@ youtubechannel: Prefix: https://www.youtube.com/channel/ Title: YouTube Icon: - Class: fab fa-youtube fa-fw + Class: fa-brands fa-youtube fa-fw # 012: Tumblr tumblr: @@ -92,7 +92,7 @@ tumblr: Template: https://%v.tumblr.com/ Title: Tumblr Icon: - Class: fab fa-tumblr fa-fw + Class: fa-brands fa-tumblr fa-fw # 013: Quora quora: @@ -100,7 +100,7 @@ quora: Prefix: https://www.quora.com/profile/ Title: Quora Icon: - Class: fab fa-quora fa-fw + Class: fa-brands fa-quora fa-fw # 014: Keybase keybase: @@ -108,7 +108,7 @@ keybase: Prefix: https://keybase.io/ Title: Keybase Icon: - Class: fab fa-keybase fa-fw + Class: fa-brands fa-keybase fa-fw # 015: Pinterest pinterest: @@ -116,7 +116,7 @@ pinterest: Prefix: https://www.pinterest.com/ Title: Pinterest Icon: - Class: fab fa-pinterest fa-fw + Class: fa-brands fa-pinterest fa-fw # 016: Reddit reddit: @@ -124,7 +124,7 @@ reddit: Prefix: https://www.reddit.com/user/ Title: Reddit Icon: - Class: fab fa-reddit fa-fw + Class: fa-brands fa-reddit fa-fw # 017: CodePen codepen: @@ -132,7 +132,7 @@ codepen: Prefix: https://codepen.io/ Title: CodePen Icon: - Class: fab fa-codepen fa-fw + Class: fa-brands fa-codepen fa-fw # 018: freeCodeCamp freecodecamp: @@ -140,7 +140,7 @@ freecodecamp: Prefix: https://freecodecamp.org/ Title: freeCodeCamp Icon: - Class: fab fa-free-code-camp fa-fw + Class: fa-brands fa-free-code-camp fa-fw # 019: Bitbucket bitbucket: @@ -148,7 +148,7 @@ bitbucket: Prefix: https://bitbucket.org/ Title: Bitbucket Icon: - Class: fab fa-bitbucket fa-fw + Class: fa-brands fa-bitbucket fa-fw # 020: Stack Overflow stackoverflow: @@ -156,7 +156,7 @@ stackoverflow: Prefix: https://stackoverflow.com/users/ Title: Stack Overflow Icon: - Class: fab fa-codepen fa-fw + Class: fa-brands fa-codepen fa-fw # 021: 微博 weibo: @@ -164,7 +164,7 @@ weibo: Prefix: https://weibo.com/ Title: 微博 Icon: - Class: fab fa-weibo fa-fw + Class: fa-brands fa-weibo fa-fw # 022: OK.RU odnoklassniki: @@ -172,7 +172,7 @@ odnoklassniki: Prefix: https://ok.ru/ Title: OK.RU Icon: - Class: fab fa-odnoklassniki fa-fw + Class: fa-brands fa-odnoklassniki fa-fw # 023: VK vk: @@ -180,7 +180,7 @@ vk: Prefix: https://vk.com/ Title: VK Icon: - Class: fab fa-vk fa-fw + Class: fa-brands fa-vk fa-fw # 024: Flickr flickr: @@ -188,7 +188,7 @@ flickr: Prefix: https://www.flickr.com/photos/ Title: Flickr Icon: - Class: fab fa-flickr fa-fw + Class: fa-brands fa-flickr fa-fw # 025: Xing xing: @@ -196,7 +196,7 @@ xing: Prefix: https://www.xing.com/profile/ Title: Xing Icon: - Class: fab fa-xing fa-fw + Class: fa-brands fa-xing fa-fw # 026: Snapchat snapchat: @@ -204,7 +204,7 @@ snapchat: Prefix: https://www.snapchat.com/add/ Title: Snapchat Icon: - Class: fab fa-snapchat fa-fw + Class: fa-brands fa-snapchat fa-fw # 027: SoundCloud soundcloud: @@ -212,7 +212,7 @@ soundcloud: Prefix: https://soundcloud.com/ Title: SoundCloud Icon: - Class: fab fa-soundcloud fa-fw + Class: fa-brands fa-soundcloud fa-fw # 028: Spotify spotify: @@ -220,7 +220,7 @@ spotify: Prefix: https://open.spotify.com/user/ Title: Spotify Icon: - Class: fab fa-spotify fa-fw + Class: fa-brands fa-spotify fa-fw # 029: Bandcamp bandcamp: @@ -228,7 +228,7 @@ bandcamp: Template: https://%v.bandcamp.com/ Title: Bandcamp Icon: - Class: fab fa-bandcamp fa-fw + Class: fa-brands fa-bandcamp fa-fw # 030: PayPal paypal: @@ -236,7 +236,7 @@ paypal: Prefix: https://paypal.me/ Title: PayPal Icon: - Class: fab fa-paypal fa-fw + Class: fa-brands fa-paypal fa-fw # 031: 500px fivehundredpx: @@ -244,7 +244,7 @@ fivehundredpx: Prefix: https://500px.com/ Title: 500px Icon: - Class: fab fa-500px fa-fw + Class: fa-brands fa-500px fa-fw # 032: Mix mix: @@ -252,7 +252,7 @@ mix: Prefix: https://mix.com/ Title: Mix Icon: - Class: fab fa-mix fa-fw + Class: fa-brands fa-mix fa-fw # 033: Goodreads goodreads: @@ -260,7 +260,7 @@ goodreads: Prefix: https://www.goodreads.com/user/show/ Title: Goodreads Icon: - Class: fab fa-goodreads fa-fw + Class: fa-brands fa-goodreads fa-fw # 034: Last.fm lastfm: @@ -268,7 +268,7 @@ lastfm: Prefix: https://www.last.fm/user/ Title: Last.fm Icon: - Class: fab fa-lastfm fa-fw + Class: fa-brands fa-lastfm fa-fw # 035: Foursquare foursquare: @@ -276,7 +276,7 @@ foursquare: Prefix: https://foursquare.com/ Title: Foursquare Icon: - Class: fab fa-foursquare fa-fw + Class: fa-brands fa-foursquare fa-fw # 036: Hacker News hackernews: @@ -284,7 +284,7 @@ hackernews: Template: https://news.ycombinator.com/user?id=%v Title: Hacker News Icon: - Class: fab fa-hacker-news fa-fw + Class: fa-brands fa-hacker-news fa-fw # 037: Kickstarter kickstarter: @@ -292,7 +292,7 @@ kickstarter: Prefix: https://kickstarter.com/profile/ Title: Kickstarter Icon: - Class: fab fa-kickstarter fa-fw + Class: fa-brands fa-kickstarter fa-fw # 038: Patreon patreon: @@ -300,7 +300,7 @@ patreon: Prefix: https://patreon.com/ Title: Patreon Icon: - Class: fab fa-patreon fa-fw + Class: fa-brands fa-patreon fa-fw # 039: Steam steam: @@ -308,7 +308,7 @@ steam: Prefix: https://steamcommunity.com/id/ Title: Steam Icon: - Class: fab fa-steam fa-fw + Class: fa-brands fa-steam fa-fw # 040: Twitch twitch: @@ -316,7 +316,7 @@ twitch: Prefix: https://www.twitch.tv/ Title: Twitch Icon: - Class: fab fa-twitch fa-fw + Class: fa-brands fa-twitch fa-fw # 041: Strava strava: @@ -324,7 +324,7 @@ strava: Prefix: https://www.strava.com/athletes/ Title: Strava Icon: - Class: fab fa-strava fa-fw + Class: fa-brands fa-strava fa-fw # 042: Skype skype: @@ -332,7 +332,7 @@ skype: Template: "skype:" Title: Skype Icon: - Class: fab fa-skype fa-fw + Class: fa-brands fa-skype fa-fw # 043: WhatsApp whatsapp: @@ -340,7 +340,7 @@ whatsapp: Prefix: https://wa.me/ Title: WhatsApp Icon: - Class: fab fa-whatsapp fa-fw + Class: fa-brands fa-whatsapp fa-fw # 044: 知乎 zhihu: @@ -364,7 +364,7 @@ angellist: Prefix: https://angel.co/ Title: Angellist Icon: - Class: fab fa-angellist fa-fw + Class: fa-brands fa-angellist fa-fw # 047: SlideShare slideshare: @@ -372,7 +372,7 @@ slideshare: Prefix: https://slideshare.com/ Title: SlideShare Icon: - Class: fab fa-slideshare fa-fw + Class: fa-brands fa-slideshare fa-fw # 048: JSFiddle jsfiddle: @@ -380,7 +380,7 @@ jsfiddle: Prefix: https://jsfiddle.com/ Title: JSFiddle Icon: - Class: fab fa-jsfiddle fa-fw + Class: fa-brands fa-jsfiddle fa-fw # 049: DeviantArt deviantart: @@ -388,7 +388,7 @@ deviantart: Template: https://%v.deviantart.com/ Title: DeviantArt Icon: - Class: fab fa-deviantart fa-fw + Class: fa-brands fa-deviantart fa-fw # 050: Behance behance: @@ -396,7 +396,7 @@ behance: Prefix: https://behance.net/ Title: Behance Icon: - Class: fab fa-behance fa-fw + Class: fa-brands fa-behance fa-fw # 051: Dribbble dribbble: @@ -404,7 +404,7 @@ dribbble: Prefix: https://dribbble.com/ Title: Dribbble Icon: - Class: fab fa-dribbble fa-fw + Class: fa-brands fa-dribbble fa-fw # 052: WordPress wordpress: @@ -412,7 +412,7 @@ wordpress: Template: https://%v.wordpress.com/ Title: WordPress Icon: - Class: fab fa-wordpress fa-fw + Class: fa-brands fa-wordpress fa-fw # 053: Vine vine: @@ -420,7 +420,7 @@ vine: Prefix: https://vine.co/ Title: Vine Icon: - Class: fab fa-vine fa-fw + Class: fa-brands fa-vine fa-fw # 054: Google Scholar googlescholar: @@ -436,7 +436,7 @@ researchgate: Prefix: https://www.researchgate.net/profile/ Title: ResearchGate Icon: - Class: fab fa-researchgate fa-fw + Class: fa-brands fa-researchgate fa-fw # 056: Mastodon mastodon: @@ -444,7 +444,7 @@ mastodon: Prefix: https://mastodon.social/ Title: Mastodon Icon: - Class: fab fa-mastodon fa-fw + Class: fa-brands fa-mastodon fa-fw # 057: Thingiverse thingiverse: @@ -460,7 +460,7 @@ devto: Prefix: https://dev.to/ Title: Dev.To Icon: - Class: fab fa-dev fa-fw + Class: fa-brands fa-dev fa-fw # 059: Gitea gitea: @@ -491,7 +491,7 @@ bilibili: Prefix: https://space.bilibili.com/ Title: bilibili Icon: - Src: svg/icons/bilibili.svg + Class: fa-brands fa-bilibili # 063: ORCID orcid: @@ -499,7 +499,7 @@ orcid: Prefix: https://orcid.org/ Title: ORCID Icon: - Class: fab fa-orcid fa-fw + Class: fa-brands fa-orcid fa-fw # 064 Liberapay liberapay: @@ -541,13 +541,13 @@ qq: Icon: Simpleicons: tencentqq -# 069: QQGroup +# 069: QQ Group qqgroup: Weight: 69 Template: https://qm.qq.com/cgi-bin/qm/qr?k=%v&jump_from=webapi - Title: QQGroup + Title: QQ Group Icon: - Class: fas fa-users + Class: fa-solid fa-users # 070: Diaspora diaspora: @@ -570,7 +570,7 @@ email: Template: mailto:%v Title: Email Icon: - Class: far fa-envelope fa-fw + Class: fa-regular fa-envelope fa-fw # 073: RSS rss: @@ -579,4 +579,4 @@ rss: Title: RSS Newtab: true Icon: - Class: fas fa-rss fa-fw + Class: fa-solid fa-rss fa-fw diff --git a/assets/js/theme.min.js b/assets/js/theme.min.js index 8183227e..7517da94 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 _defineProperty(a,b,c){return b in a?Object.defineProperty(a,b,{value:c,enumerable:!0,configurable:!0,writable:!0}):a[b]=c,a}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.nested-item"),function(a){a.addEventListener("click",function(){this.parentNode.querySelector(".sub-menu").classList.toggle("open"),this.querySelector(".dropdown-icon").classList.toggle("open")})})}},{key:"initSwitchTheme",value:function initSwitchTheme(){var a=this;this.util.forEach(document.getElementsByClassName("theme-switch"),function(b){b.addEventListener("click",function(){document.body.setAttribute("theme","dark"===document.body.getAttribute("theme")?"light":"dark"),a.isDark=!a.isDark,window.localStorage&&localStorage.setItem("theme",a.isDark?"dark":"light");var b,c=_createForOfIteratorHelper(a.switchThemeEventSet);try{for(c.s();!(b=c.n()).done;){var d=b.value;d()}}catch(a){c.e(a)}finally{c.f()}},!1)})}},{key:"initSearch",value:function initSearch(){var a=this,b=this.config.search,c=this.util.isMobile();if(!(!b||c&&this._searchMobileOnce||!c&&this._searchDesktopOnce)){var d=b.maxResultLength||10,e=b.snippetLength||50,f=b.highlightTag||"em",g=c?"mobile":"desktop",h=document.getElementById("header-".concat(g)),i=document.getElementById("search-input-".concat(g)),j=document.getElementById("search-toggle-".concat(g)),k=document.getElementById("search-loading-".concat(g)),l=document.getElementById("search-clear-".concat(g));c?(this._searchMobileOnce=!0,i.addEventListener("focus",function(){document.body.classList.add("blur"),h.classList.add("open")},!1),document.getElementById("search-cancel-mobile").addEventListener("click",function(){h.classList.remove("open"),document.body.classList.remove("blur"),document.getElementById("menu-toggle-mobile").classList.remove("active"),document.getElementById("menu-mobile").classList.remove("active"),k.style.display="none",l.style.display="none",a._searchMobile&&a._searchMobile.autocomplete.setVal("")},!1),l.addEventListener("click",function(){l.style.display="none",a._searchMobile&&a._searchMobile.autocomplete.setVal("")},!1),this._searchMobileOnClickMask=this._searchMobileOnClickMask||function(){h.classList.remove("open"),k.style.display="none",l.style.display="none",a._searchMobile&&a._searchMobile.autocomplete.setVal("")},this.clickMaskEventSet.add(this._searchMobileOnClickMask)):(this._searchDesktopOnce=!0,j.addEventListener("click",function(){document.body.classList.add("blur"),h.classList.add("open"),i.focus()},!1),l.addEventListener("click",function(){l.style.display="none",a._searchDesktop&&a._searchDesktop.autocomplete.setVal("")},!1),this._searchDesktopOnClickMask=this._searchDesktopOnClickMask||function(){h.classList.remove("open"),k.style.display="none",l.style.display="none",a._searchDesktop&&a._searchDesktop.autocomplete.setVal("")},this.clickMaskEventSet.add(this._searchDesktopOnClickMask)),i.addEventListener("input",function(){l.style.display=""===i.value?"none":"inline"},!1);var m=function(){var h=autocomplete("#search-input-".concat(g),{hint:!1,autoselect:!0,dropdownMenuContainer:"#search-dropdown-".concat(g),clearOnSelected:!0,cssClasses:{noPrefix:!0},debug:!0},{name:"search",source:function source(c,g){k.style.display="inline",l.style.display="none";var h=function(a){k.style.display="none",l.style.display="inline",g(a)};if("lunr"===b.type){var i=function(){lunr.queryHandler&&(c=lunr.queryHandler(c));var b={};return a._index.search(c).forEach(function(c){var d=c.ref,g=c.matchData.metadata,h=a._indexData[d],i=h.uri,j=h.title,k=h.content;if(!b[i]){var l=0;Object.values(g).forEach(function(a){var b=a.content;if(b){var c=b.position[0][0];(c$1")),k=k.replace(new RegExp("(".concat(a,")"),"gi"),"<".concat(f,">$1"))}),b[i]={uri:i,title:j,date:h.date,context:k}}}),Object.values(b).slice(0,d)};a._index?h(i()):fetch(b.lunrIndexURL).then(function(a){return a.json()}).then(function(c){var d={};a._index=lunr(function(){var a=this;b.lunrLanguageCode&&this.use(lunr[b.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"],c.forEach(function(b){d[b.objectID]=b,a.add(b)})}),a._indexData=d,h(i())}).catch(function(a){console.error(a),h([])})}else"algolia"===b.type&&(a._algoliaIndex=a._algoliaIndex||algoliasearch(b.algoliaAppID,b.algoliaSearchKey).initIndex(b.algoliaIndex),a._algoliaIndex.search(c,{offset:0,length:8*d,attributesToHighlight:["title"],attributesToSnippet:["content:".concat(e)],highlightPreTag:"<".concat(f,">"),highlightPostTag:"")}).then(function(a){var b=a.hits,c={};b.forEach(function(a){var b=a.uri,d=a.date,e=a._highlightResult.title,f=a._snippetResult.content;c[b]&&c[b].context.length>f.value||(c[b]={uri:b,title:e.value,date:d,context:f.value})}),h(Object.values(c).slice(0,d))}).catch(function(a){console.error(a),h([])}))},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(a){var c=a.query;return"
".concat(b.noResultsFound,": \"").concat(c,"\"
")},footer:function footer(a){_objectDestructuringEmpty(a);var c="algolia"===b.type?{searchType:"algolia",icon:"",href:"https://www.algolia.com/"}:{searchType:"Lunr.js",icon:"",href:"https://lunrjs.com/"},d=c.searchType,e=c.icon,f=c.href;return"")}}});h.on("autocomplete:selected",function(a,b){window.location.assign(b.uri)}),c?a._searchMobile=h:a._searchDesktop=h};if(b.lunrSegmentitURL&&!document.getElementById("lunr-segmentit")){var n=document.createElement("script");n.id="lunr-segmentit",n.type="text/javascript",n.src=b.lunrSegmentitURL,n.async=!0,n.readyState?n.onreadystatechange=function(){("loaded"==n.readyState||"complete"==n.readyState)&&(n.onreadystatechange=null,m())}:n.onload=function(){m()},document.body.appendChild(n)}else m()}}},{key:"initDetails",value:function initDetails(){this.util.forEach(document.getElementsByClassName("details"),function(a){var b=a.querySelector(".details-summary");b.addEventListener("click",function(){a.classList.toggle("open")},!1)})}},{key:"initLightGallery",value:function initLightGallery(){this.config.lightGallery&&lightGallery(document.getElementById("content"),this.config.lightGallery)}},{key:"initHighlight",value:function initHighlight(){var a=this;this.util.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)}),this.util.forEach(document.querySelectorAll(".highlight > .chroma"),function(b){var c=b.querySelectorAll("pre.chroma > code");if(c.length){var d=c[c.length-1],e=document.createElement("div");e.className="code-header "+d.className.toLowerCase();var f=document.createElement("span");f.classList.add("code-title"),f.insertAdjacentHTML("afterbegin",""),f.addEventListener("click",function(){b.classList.toggle("open")},!1),e.appendChild(f);var g=document.createElement("span");if(g.insertAdjacentHTML("afterbegin",""),g.classList.add("ellipses"),g.addEventListener("click",function(){b.classList.add("open")},!1),e.appendChild(g),a.config.code.editable){var h=document.createElement("span");h.classList.add("edit"),h.insertAdjacentHTML("afterbegin","")),h.addEventListener("click",function(){var b=h.querySelector(".fa-key"),c=h.querySelector(".fa-lock"),d=h.parentElement.parentElement.querySelectorAll("pre.chroma"),e=2===d.length?d[1]:d[0];b?(b.classList.add("fa-lock"),b.classList.remove("fa-key"),b.title=a.config.code.editLockTitle,e.setAttribute("contenteditable",!0),e.focus()):(c.classList.add("fa-key"),c.classList.remove("fa-lock"),c.title=a.config.code.editUnLockTitle,e.setAttribute("contenteditable",!1),e.blur())},!1),e.appendChild(h)}if(a.config.code.copyTitle){var i=document.createElement("span");i.insertAdjacentHTML("afterbegin",""),i.classList.add("copy");var j=d.innerText;(0>a.config.code.maxShownLines||j.split("\n").length=a;a++)this.util.forEach(document.querySelectorAll(".single .content > h"+a),function(a){a.classList.add("header-link"),a.insertAdjacentHTML("afterbegin",""))})}},{key:"initToc",value:function initToc(){var a=this,b=document.getElementById("TableOfContents");if(null!==b)if("true"===document.getElementById("toc-static").getAttribute("kept")||this.util.isTocStatic()){var h=document.getElementById("toc-content-static");b.parentElement!==h&&(b.parentElement.removeChild(b),h.appendChild(b)),this._tocOnScroll&&this.scrollEventSet.delete(this._tocOnScroll)}else{var i=document.getElementById("toc-content-auto");b.parentElement!==i&&(b.parentElement.removeChild(b),i.appendChild(b));var j=document.getElementById("toc-auto");j.style.visibility="visible",this.util.animateCSS(j,["animate__fadeIn","animate__faster"],!0),j.style.marginTop=document.querySelector(".single-title").clientHeight+document.querySelector(".post-meta").clientHeight+"px",j.style.marginBottom=document.getElementById("post-footer").clientHeight+"px";var c=b.querySelectorAll("a:first-child"),d=b.getElementsByTagName("li"),e=document.getElementsByClassName("header-link"),f="normal"!==document.body.getAttribute("header-desktop"),g=document.getElementById("header-desktop").offsetHeight;this._tocOnScroll=this._tocOnScroll||function(){var h=document.getElementById("comments");h&&(j.style.marginBottom=document.getElementById("post-footer").clientHeight+h.clientHeight+"px"),a.util.forEach(c,function(a){a.classList.remove("active")}),a.util.forEach(d,function(a){a.classList.remove("has-active")});for(var k=20+(f?g:0),l=e.length-1,m=0;mk||n<=k&&o>k){l=m;break}}if(-1!==l){c[l].classList.add("active");for(var p=c[l].parentElement;p!==b;)p.classList.add("has-active"),p=p.parentElement.parentElement}},this._tocOnScroll(),this.scrollEventSet.add(this._tocOnScroll)}}},{key:"initMath",value:function initMath(){this.config.math&&renderMathInElement(document.body,this.config.math)}},{key:"initMermaid",value:function initMermaid(){var a=this,b=document.getElementsByClassName("mermaid");b.length&&(mermaid.initialize({startOnLoad:!1,theme:"default"}),this.util.forEach(b,function(b){mermaid.mermaidAPI.render("svg-"+b.id,a.data[b.id],function(a){b.insertAdjacentHTML("afterbegin",a)},b)}))}},{key:"initEcharts",value:function initEcharts(){var a=this;this._echartsOnSwitchTheme=this._echartsOnSwitchTheme||function(){a._echartsArr=a._echartsArr||[];for(var b=0;bscript");a&&(h._giscusOnSwitchTheme(),a.parentElement.removeChild(a)),window.removeEventListener("message",h.giscus2parentMsg)}))}}}},{key:"initCookieconsent",value:function initCookieconsent(){this.config.cookieconsent&&cookieconsent.initialise(this.config.cookieconsent)}},{key:"initSiteTime",value:function initSiteTime(){var a=this;this.config.siteTime&&(this.siteTime=setInterval(this.getSiteTime,500),document.addEventListener("visibilitychange",function(){return document.hidden?clearInterval(a.siteTime):void(a.siteTime=setInterval(a.getSiteTime,500))},!1))}},{key:"initServiceWorker",value:function initServiceWorker(){this.config.enablePWA&&"serviceWorker"in navigator&&(navigator.serviceWorker.register("/service-worker.min.js",{scope:"/"}).then(function(){}).catch(function(a){console.error("error: ",a)}),navigator.serviceWorker.ready.then(function(){}))}},{key:"initWatermark",value:function initWatermark(){var a,b;(null===(a=this.config)||void 0===a||null===(b=a.watermark)||void 0===b?void 0:b.enable)&&new Watermark({content:this.config.watermark.content||"\"FixIt FixIt Theme",appendTo:this.config.watermark.appendto||".wrapper>main",opacity:this.config.watermark.opacity,width:this.config.watermark.width,height:this.config.watermark.height,rowSpacing:this.config.watermark.rowspacing,colSpacing:this.config.watermark.colspacing,rotate:this.config.watermark.rotate,fontSize:this.config.watermark.fontsize,fontFamily:this.config.watermark.fontfamily})}},{key:"initPangu",value:function initPangu(){this.config.enablePangu&&pangu.autoSpacingPage()}},{key:"onScroll",value:function onScroll(){var a=this,b=[];if("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")){var e=document.getElementById("view-comments");e.href="#comments",e.style.display="block"}var c=document.getElementById("fixed-buttons"),d=20;window.addEventListener("scroll",function(e){if(a.disableScrollEvent)return e.preventDefault(),void(a.disableScrollEvent=!1);document.getElementById("mask").click(),a.newScrollTop=a.util.getScrollTop();var f=a.newScrollTop-a.oldScrollTop,g=a.util.isMobile();a.util.forEach(b,function(b){f>d?(b.classList.remove("animate__fadeInDown"),a.util.animateCSS(b,["animate__fadeOutUp","animate__faster"],!0)):f<-d&&(b.classList.remove("animate__fadeOutUp"),a.util.animateCSS(b,["animate__fadeInDown","animate__faster"],!0))}),a.newScrollTop>100?g&&f>d?(c.classList.remove("animate__fadeIn"),a.util.animateCSS(c,["animate__fadeOut","animate__faster"],!0)):(!g||f<-d)&&(c.style.display="block",c.classList.remove("animate__fadeOut"),a.util.animateCSS(c,["animate__fadeIn","animate__faster"],!0)):(!g&&(c.classList.remove("animate__fadeIn"),a.util.animateCSS(c,["animate__fadeOut","animate__faster"],!0)),c.style.display="none");var h,i=_createForOfIteratorHelper(a.scrollEventSet);try{for(i.s();!(h=i.n()).done;){var j=h.value;j()}}catch(a){i.e(a)}finally{i.f()}a.oldScrollTop=a.newScrollTop},!1)}},{key:"onResize",value:function onResize(){var a=this;window.addEventListener("resize",function(){a._resizeTimeout||(a._resizeTimeout=window.setTimeout(function(){a._resizeTimeout=null;var b,c=_createForOfIteratorHelper(a.resizeEventSet);try{for(c.s();!(b=c.n()).done;){var d=b.value;d()}}catch(a){c.e(a)}finally{c.f()}a.initToc(),a.initMermaid(),a.initSearch(),document.getElementById("mask").click()},100))},!1)}},{key:"onClickMask",value:function onClickMask(){var a=this;document.getElementById("mask").addEventListener("click",function(){var b,c=_createForOfIteratorHelper(a.clickMaskEventSet);try{for(c.s();!(b=c.n()).done;){var d=b.value;d()}}catch(a){c.e(a)}finally{c.f()}document.body.classList.remove("blur")},!1)}},{key:"init",value:function init(){var a=this;try{this.initSVGIcon(),this.initTwemoji(),this.initMenu(),this.initSwitchTheme(),this.initSearch(),this.initDetails(),this.initLightGallery(),this.initHighlight(),this.initTable(),this.initHeaderLink(),this.initMath(),this.initMermaid(),this.initEcharts(),this.initTypeit(),this.initMapbox(),this.initCookieconsent(),this.initSiteTime(),this.initServiceWorker(),this.initWatermark(),this.initPangu()}catch(a){console.error(a)}window.setTimeout(function(){a.initComment(),a.initToc(),a.onScroll(),a.onResize(),a.onClickMask()},100)}}]),a}(),themeInit=function(){var a=new Theme;a.init()};"loading"===document.readyState?document.addEventListener("DOMContentLoaded",themeInit,!1):themeInit(); +"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 _defineProperty(a,b,c){return b in a?Object.defineProperty(a,b,{value:c,enumerable:!0,configurable:!0,writable:!0}):a[b]=c,a}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.nested-item"),function(a){a.addEventListener("click",function(){this.parentNode.querySelector(".sub-menu").classList.toggle("open"),this.querySelector(".dropdown-icon").classList.toggle("open")})})}},{key:"initSwitchTheme",value:function initSwitchTheme(){var a=this;this.util.forEach(document.getElementsByClassName("theme-switch"),function(b){b.addEventListener("click",function(){document.body.setAttribute("theme","dark"===document.body.getAttribute("theme")?"light":"dark"),a.isDark=!a.isDark,window.localStorage&&localStorage.setItem("theme",a.isDark?"dark":"light");var b,c=_createForOfIteratorHelper(a.switchThemeEventSet);try{for(c.s();!(b=c.n()).done;){var d=b.value;d()}}catch(a){c.e(a)}finally{c.f()}},!1)})}},{key:"initSearch",value:function initSearch(){var a=this,b=this.config.search,c=this.util.isMobile();if(!(!b||c&&this._searchMobileOnce||!c&&this._searchDesktopOnce)){var d=b.maxResultLength||10,e=b.snippetLength||50,f=b.highlightTag||"em",g=c?"mobile":"desktop",h=document.getElementById("header-".concat(g)),i=document.getElementById("search-input-".concat(g)),j=document.getElementById("search-toggle-".concat(g)),k=document.getElementById("search-loading-".concat(g)),l=document.getElementById("search-clear-".concat(g));c?(this._searchMobileOnce=!0,i.addEventListener("focus",function(){document.body.classList.add("blur"),h.classList.add("open")},!1),document.getElementById("search-cancel-mobile").addEventListener("click",function(){h.classList.remove("open"),document.body.classList.remove("blur"),document.getElementById("menu-toggle-mobile").classList.remove("active"),document.getElementById("menu-mobile").classList.remove("active"),k.style.display="none",l.style.display="none",a._searchMobile&&a._searchMobile.autocomplete.setVal("")},!1),l.addEventListener("click",function(){l.style.display="none",a._searchMobile&&a._searchMobile.autocomplete.setVal("")},!1),this._searchMobileOnClickMask=this._searchMobileOnClickMask||function(){h.classList.remove("open"),k.style.display="none",l.style.display="none",a._searchMobile&&a._searchMobile.autocomplete.setVal("")},this.clickMaskEventSet.add(this._searchMobileOnClickMask)):(this._searchDesktopOnce=!0,j.addEventListener("click",function(){document.body.classList.add("blur"),h.classList.add("open"),i.focus()},!1),l.addEventListener("click",function(){l.style.display="none",a._searchDesktop&&a._searchDesktop.autocomplete.setVal("")},!1),this._searchDesktopOnClickMask=this._searchDesktopOnClickMask||function(){h.classList.remove("open"),k.style.display="none",l.style.display="none",a._searchDesktop&&a._searchDesktop.autocomplete.setVal("")},this.clickMaskEventSet.add(this._searchDesktopOnClickMask)),i.addEventListener("input",function(){l.style.display=""===i.value?"none":"inline"},!1);var m=function(){var h=autocomplete("#search-input-".concat(g),{hint:!1,autoselect:!0,dropdownMenuContainer:"#search-dropdown-".concat(g),clearOnSelected:!0,cssClasses:{noPrefix:!0},debug:!0},{name:"search",source:function source(c,g){k.style.display="inline",l.style.display="none";var h=function(a){k.style.display="none",l.style.display="inline",g(a)};if("lunr"===b.type){var i=function(){lunr.queryHandler&&(c=lunr.queryHandler(c));var b={};return a._index.search(c).forEach(function(c){var d=c.ref,g=c.matchData.metadata,h=a._indexData[d],i=h.uri,j=h.title,k=h.content;if(!b[i]){var l=0;Object.values(g).forEach(function(a){var b=a.content;if(b){var c=b.position[0][0];(c$1")),k=k.replace(new RegExp("(".concat(a,")"),"gi"),"<".concat(f,">$1"))}),b[i]={uri:i,title:j,date:h.date,context:k}}}),Object.values(b).slice(0,d)};a._index?h(i()):fetch(b.lunrIndexURL).then(function(a){return a.json()}).then(function(c){var d={};a._index=lunr(function(){var a=this;b.lunrLanguageCode&&this.use(lunr[b.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"],c.forEach(function(b){d[b.objectID]=b,a.add(b)})}),a._indexData=d,h(i())}).catch(function(a){console.error(a),h([])})}else"algolia"===b.type&&(a._algoliaIndex=a._algoliaIndex||algoliasearch(b.algoliaAppID,b.algoliaSearchKey).initIndex(b.algoliaIndex),a._algoliaIndex.search(c,{offset:0,length:8*d,attributesToHighlight:["title"],attributesToSnippet:["content:".concat(e)],highlightPreTag:"<".concat(f,">"),highlightPostTag:"")}).then(function(a){var b=a.hits,c={};b.forEach(function(a){var b=a.uri,d=a.date,e=a._highlightResult.title,f=a._snippetResult.content;c[b]&&c[b].context.length>f.value||(c[b]={uri:b,title:e.value,date:d,context:f.value})}),h(Object.values(c).slice(0,d))}).catch(function(a){console.error(a),h([])}))},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(a){var c=a.query;return"
".concat(b.noResultsFound,": \"").concat(c,"\"
")},footer:function footer(a){_objectDestructuringEmpty(a);var c="algolia"===b.type?{searchType:"algolia",icon:"",href:"https://www.algolia.com/"}:{searchType:"Lunr.js",icon:"",href:"https://lunrjs.com/"},d=c.searchType,e=c.icon,f=c.href;return"")}}});h.on("autocomplete:selected",function(a,b){window.location.assign(b.uri)}),c?a._searchMobile=h:a._searchDesktop=h};if(b.lunrSegmentitURL&&!document.getElementById("lunr-segmentit")){var n=document.createElement("script");n.id="lunr-segmentit",n.type="text/javascript",n.src=b.lunrSegmentitURL,n.async=!0,n.readyState?n.onreadystatechange=function(){("loaded"==n.readyState||"complete"==n.readyState)&&(n.onreadystatechange=null,m())}:n.onload=function(){m()},document.body.appendChild(n)}else m()}}},{key:"initDetails",value:function initDetails(){this.util.forEach(document.getElementsByClassName("details"),function(a){var b=a.querySelector(".details-summary");b.addEventListener("click",function(){a.classList.toggle("open")},!1)})}},{key:"initLightGallery",value:function initLightGallery(){this.config.lightGallery&&lightGallery(document.getElementById("content"),this.config.lightGallery)}},{key:"initHighlight",value:function initHighlight(){var a=this;this.util.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)}),this.util.forEach(document.querySelectorAll(".highlight > .chroma"),function(b){var c=b.querySelectorAll("pre.chroma > code");if(c.length){var d=c[c.length-1],e=document.createElement("div");e.className="code-header "+d.className.toLowerCase();var f=document.createElement("span");f.classList.add("code-title"),f.insertAdjacentHTML("afterbegin",""),f.addEventListener("click",function(){b.classList.toggle("open")},!1),e.appendChild(f);var g=document.createElement("span");if(g.insertAdjacentHTML("afterbegin",""),g.classList.add("ellipses"),g.addEventListener("click",function(){b.classList.add("open")},!1),e.appendChild(g),a.config.code.editable){var h=document.createElement("span");h.classList.add("edit"),h.insertAdjacentHTML("afterbegin","")),h.addEventListener("click",function(){var b=h.querySelector(".fa-key"),c=h.querySelector(".fa-lock"),d=h.parentElement.parentElement.querySelectorAll("pre.chroma"),e=2===d.length?d[1]:d[0];b?(b.classList.add("fa-lock"),b.classList.remove("fa-key"),b.title=a.config.code.editLockTitle,e.setAttribute("contenteditable",!0),e.focus()):(c.classList.add("fa-key"),c.classList.remove("fa-lock"),c.title=a.config.code.editUnLockTitle,e.setAttribute("contenteditable",!1),e.blur())},!1),e.appendChild(h)}if(a.config.code.copyTitle){var i=document.createElement("span");i.insertAdjacentHTML("afterbegin",""),i.classList.add("copy");var j=d.innerText;(0>a.config.code.maxShownLines||j.split("\n").length=a;a++)this.util.forEach(document.querySelectorAll(".single .content > h"+a),function(a){a.classList.add("header-link"),a.insertAdjacentHTML("afterbegin",""))})}},{key:"initToc",value:function initToc(){var a=this,b=document.getElementById("TableOfContents");if(null!==b)if("true"===document.getElementById("toc-static").getAttribute("kept")||this.util.isTocStatic()){var h=document.getElementById("toc-content-static");b.parentElement!==h&&(b.parentElement.removeChild(b),h.appendChild(b)),this._tocOnScroll&&this.scrollEventSet.delete(this._tocOnScroll)}else{var i=document.getElementById("toc-content-auto");b.parentElement!==i&&(b.parentElement.removeChild(b),i.appendChild(b));var j=document.getElementById("toc-auto");j.style.visibility="visible",this.util.animateCSS(j,["animate__fadeIn","animate__faster"],!0),j.style.marginTop=document.querySelector(".single-title").clientHeight+document.querySelector(".post-meta").clientHeight+"px",j.style.marginBottom=document.getElementById("post-footer").clientHeight+"px";var c=b.querySelectorAll("a:first-child"),d=b.getElementsByTagName("li"),e=document.getElementsByClassName("header-link"),f="normal"!==document.body.getAttribute("header-desktop"),g=document.getElementById("header-desktop").offsetHeight;this._tocOnScroll=this._tocOnScroll||function(){var h=document.getElementById("comments");h&&(j.style.marginBottom=document.getElementById("post-footer").clientHeight+h.clientHeight+"px"),a.util.forEach(c,function(a){a.classList.remove("active")}),a.util.forEach(d,function(a){a.classList.remove("has-active")});for(var k=20+(f?g:0),l=e.length-1,m=0;mk||n<=k&&o>k){l=m;break}}if(-1!==l){c[l].classList.add("active");for(var p=c[l].parentElement;p!==b;)p.classList.add("has-active"),p=p.parentElement.parentElement}},this._tocOnScroll(),this.scrollEventSet.add(this._tocOnScroll)}}},{key:"initMath",value:function initMath(){this.config.math&&renderMathInElement(document.body,this.config.math)}},{key:"initMermaid",value:function initMermaid(){var a=this,b=document.getElementsByClassName("mermaid");b.length&&(mermaid.initialize({startOnLoad:!1,theme:"default"}),this.util.forEach(b,function(b){mermaid.mermaidAPI.render("svg-"+b.id,a.data[b.id],function(a){b.insertAdjacentHTML("afterbegin",a)},b)}))}},{key:"initEcharts",value:function initEcharts(){var a=this;this._echartsOnSwitchTheme=this._echartsOnSwitchTheme||function(){a._echartsArr=a._echartsArr||[];for(var b=0;bscript");a&&(h._giscusOnSwitchTheme(),a.parentElement.removeChild(a)),window.removeEventListener("message",h.giscus2parentMsg)}))}}}},{key:"initCookieconsent",value:function initCookieconsent(){this.config.cookieconsent&&cookieconsent.initialise(this.config.cookieconsent)}},{key:"initSiteTime",value:function initSiteTime(){var a=this;this.config.siteTime&&(this.siteTime=setInterval(this.getSiteTime,500),document.addEventListener("visibilitychange",function(){return document.hidden?clearInterval(a.siteTime):void(a.siteTime=setInterval(a.getSiteTime,500))},!1))}},{key:"initServiceWorker",value:function initServiceWorker(){this.config.enablePWA&&"serviceWorker"in navigator&&(navigator.serviceWorker.register("/service-worker.min.js",{scope:"/"}).then(function(){}).catch(function(a){console.error("error: ",a)}),navigator.serviceWorker.ready.then(function(){}))}},{key:"initWatermark",value:function initWatermark(){var a,b;(null===(a=this.config)||void 0===a||null===(b=a.watermark)||void 0===b?void 0:b.enable)&&new Watermark({content:this.config.watermark.content||"\"FixIt FixIt Theme",appendTo:this.config.watermark.appendto||".wrapper>main",opacity:this.config.watermark.opacity,width:this.config.watermark.width,height:this.config.watermark.height,rowSpacing:this.config.watermark.rowspacing,colSpacing:this.config.watermark.colspacing,rotate:this.config.watermark.rotate,fontSize:this.config.watermark.fontsize,fontFamily:this.config.watermark.fontfamily})}},{key:"initPangu",value:function initPangu(){this.config.enablePangu&&pangu.autoSpacingPage()}},{key:"onScroll",value:function onScroll(){var a=this,b=[];if("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")){var e=document.getElementById("view-comments");e.href="#comments",e.style.display="block"}var c=document.getElementById("fixed-buttons"),d=20;window.addEventListener("scroll",function(e){if(a.disableScrollEvent)return e.preventDefault(),void(a.disableScrollEvent=!1);document.getElementById("mask").click(),a.newScrollTop=a.util.getScrollTop();var f=a.newScrollTop-a.oldScrollTop,g=a.util.isMobile();a.util.forEach(b,function(b){f>d?(b.classList.remove("animate__fadeInDown"),a.util.animateCSS(b,["animate__fadeOutUp","animate__faster"],!0)):f<-d&&(b.classList.remove("animate__fadeOutUp"),a.util.animateCSS(b,["animate__fadeInDown","animate__faster"],!0))}),a.newScrollTop>100?g&&f>d?(c.classList.remove("animate__fadeIn"),a.util.animateCSS(c,["animate__fadeOut","animate__faster"],!0)):(!g||f<-d)&&(c.style.display="block",c.classList.remove("animate__fadeOut"),a.util.animateCSS(c,["animate__fadeIn","animate__faster"],!0)):(!g&&(c.classList.remove("animate__fadeIn"),a.util.animateCSS(c,["animate__fadeOut","animate__faster"],!0)),c.style.display="none");var h,i=_createForOfIteratorHelper(a.scrollEventSet);try{for(i.s();!(h=i.n()).done;){var j=h.value;j()}}catch(a){i.e(a)}finally{i.f()}a.oldScrollTop=a.newScrollTop},!1)}},{key:"onResize",value:function onResize(){var a=this;window.addEventListener("resize",function(){a._resizeTimeout||(a._resizeTimeout=window.setTimeout(function(){a._resizeTimeout=null;var b,c=_createForOfIteratorHelper(a.resizeEventSet);try{for(c.s();!(b=c.n()).done;){var d=b.value;d()}}catch(a){c.e(a)}finally{c.f()}a.initToc(),a.initMermaid(),a.initSearch(),document.getElementById("mask").click()},100))},!1)}},{key:"onClickMask",value:function onClickMask(){var a=this;document.getElementById("mask").addEventListener("click",function(){var b,c=_createForOfIteratorHelper(a.clickMaskEventSet);try{for(c.s();!(b=c.n()).done;){var d=b.value;d()}}catch(a){c.e(a)}finally{c.f()}document.body.classList.remove("blur")},!1)}},{key:"init",value:function init(){var a=this;try{this.initSVGIcon(),this.initTwemoji(),this.initMenu(),this.initSwitchTheme(),this.initSearch(),this.initDetails(),this.initLightGallery(),this.initHighlight(),this.initTable(),this.initHeaderLink(),this.initMath(),this.initMermaid(),this.initEcharts(),this.initTypeit(),this.initMapbox(),this.initCookieconsent(),this.initSiteTime(),this.initServiceWorker(),this.initWatermark(),this.initPangu()}catch(a){console.error(a)}window.setTimeout(function(){a.initComment(),a.initToc(),a.onScroll(),a.onResize(),a.onClickMask()},100)}}]),a}(),themeInit=function(){var a=new Theme;a.init()};"loading"===document.readyState?document.addEventListener("DOMContentLoaded",themeInit,!1):themeInit(); //# 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 5d865627..c6c9442c 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":["class Util {\n forEach(elements, handler) {\n elements = elements || [];\n for(let i = 0; i < elements.length; i++){\n handler(elements[i]);\n }\n }\n\n getScrollTop() {\n return (document.documentElement && document.documentElement.scrollTop) || document.body.scrollTop;\n }\n\n isMobile() {\n return window.matchMedia('only screen and (max-width: 680px)').matches;\n }\n\n isTocStatic() {\n return window.matchMedia('only screen and (max-width: 960px)').matches;\n }\n\n /**\n * add animate to element\n * @param {Element} element animate element\n * @param {String|Array} animation animation name\n * @param {Boolean} reserved reserved animation\n * @param {Function} callback remove callback\n */\n animateCSS(element, animation, reserved, callback) {\n !Array.isArray(animation) && (animation = [animation]);\n element.classList.add('animate__animated', ...animation);\n const handler = () => {\n element.classList.remove('animate__animated', ...animation);\n element.removeEventListener('animationend', handler);\n typeof callback === 'function' && callback();\n };\n !reserved && element.addEventListener('animationend', handler, false);\n }\n \n /**\n * date validator\n * @param {*} date may be date or not\n * @returns {Boolean}\n */\n isValidDate(date) {\n return date instanceof Date && !isNaN(date.getTime());\n }\n}\n\nclass Theme {\n constructor() {\n this.config = window.config;\n this.data = this.config.data;\n this.isDark = document.body.getAttribute('theme') === 'dark';\n this.util = new Util();\n this.newScrollTop = this.util.getScrollTop();\n this.oldScrollTop = this.newScrollTop;\n this.scrollEventSet = new Set();\n this.resizeEventSet = new Set();\n this.switchThemeEventSet = new Set();\n this.clickMaskEventSet = new Set();\n this.disableScrollEvent = false;\n window.objectFitImages && objectFitImages();\n }\n\n initSVGIcon() {\n this.util.forEach(document.querySelectorAll('[data-svg-src]'), ($icon) => {\n fetch($icon.getAttribute('data-svg-src'))\n .then((response) => response.text())\n .then((svg) => {\n const $temp = document.createElement('div');\n $temp.insertAdjacentHTML('afterbegin', svg);\n const $svg = $temp.firstChild;\n $svg.setAttribute('data-svg-src', $icon.getAttribute('data-svg-src'));\n $svg.classList.add('icon');\n const $titleElements = $svg.getElementsByTagName('title');\n $titleElements.length && $svg.removeChild($titleElements[0])\n $icon.parentElement.replaceChild($svg, $icon);\n })\n .catch((err) => {\n console.error(err);\n });\n });\n }\n\n initTwemoji() {\n this.config.twemoji && twemoji.parse(document.body);\n }\n\n initMenu() {\n this.initMenuDesktop();\n this.initMenuMobile();\n }\n\n initMenuDesktop() {\n // This is a dirty hack for fixing sub menu position error in desktop header\n this.util.forEach(document.querySelectorAll('[has-children], #header-desktop .language'), ($item) => {\n $item.addEventListener('mouseover', function(){\n this.querySelector('.sub-menu').style.left= `${this.getBoundingClientRect().left}px`;\n })\n $item.querySelector('.sub-menu').style.minWidth= `${$item.offsetWidth - 8}px`;\n });\n }\n\n initMenuMobile() {\n const $menuToggleMobile = document.getElementById('menu-toggle-mobile');\n const $menuMobile = document.getElementById('menu-mobile');\n $menuToggleMobile.addEventListener('click', (event) => {\n this.disableScrollEvent = true;\n document.body.classList.toggle('blur');\n $menuToggleMobile.classList.toggle('active');\n $menuMobile.classList.toggle('active');\n }, false);\n this._menuMobileOnClickMask = this._menuMobileOnClickMask || (() => {\n $menuToggleMobile.classList.remove('active');\n $menuMobile.classList.remove('active');\n });\n this.clickMaskEventSet.add(this._menuMobileOnClickMask);\n // add nested menu toggler\n this.util.forEach(document.querySelectorAll('.menu-item>.nested-item'), ($nestedItem) => {\n $nestedItem.addEventListener('click', function () {\n this.parentNode.querySelector('.sub-menu').classList.toggle('open');\n this.querySelector('.dropdown-icon').classList.toggle('open');\n })\n });\n }\n\n initSwitchTheme() {\n this.util.forEach(document.getElementsByClassName('theme-switch'), ($themeSwitch) => {\n $themeSwitch.addEventListener('click', () => {\n document.body.setAttribute('theme', document.body.getAttribute('theme') === 'dark' ? 'light' : 'dark');\n this.isDark = !this.isDark;\n window.localStorage && localStorage.setItem('theme', this.isDark ? 'dark' : 'light');\n for (let event of this.switchThemeEventSet) {\n event();\n }\n }, false);\n });\n }\n\n initSearch() {\n const searchConfig = this.config.search;\n const isMobile = this.util.isMobile();\n if (!searchConfig || (isMobile && this._searchMobileOnce) || (!isMobile && this._searchDesktopOnce)) {\n return;\n }\n const maxResultLength = searchConfig.maxResultLength || 10;\n const snippetLength = searchConfig.snippetLength || 50;\n const highlightTag = searchConfig.highlightTag || 'em';\n const suffix = isMobile ? 'mobile' : 'desktop';\n const $header = document.getElementById(`header-${suffix}`);\n const $searchInput = document.getElementById(`search-input-${suffix}`);\n const $searchToggle = document.getElementById(`search-toggle-${suffix}`);\n const $searchLoading = document.getElementById(`search-loading-${suffix}`);\n const $searchClear = document.getElementById(`search-clear-${suffix}`);\n\n if (isMobile) {\n this._searchMobileOnce = true;\n $searchInput.addEventListener('focus', () => {\n 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 this._searchMobile && this._searchMobile.autocomplete.setVal('');\n }, false);\n $searchClear.addEventListener('click', () => {\n $searchClear.style.display = 'none';\n this._searchMobile && this._searchMobile.autocomplete.setVal('');\n }, false);\n this._searchMobileOnClickMask = this._searchMobileOnClickMask || (() => {\n $header.classList.remove('open');\n $searchLoading.style.display = 'none';\n $searchClear.style.display = 'none';\n this._searchMobile && this._searchMobile.autocomplete.setVal('');\n });\n this.clickMaskEventSet.add(this._searchMobileOnClickMask);\n } else {\n this._searchDesktopOnce = true;\n $searchToggle.addEventListener('click', () => {\n document.body.classList.add('blur');\n $header.classList.add('open');\n $searchInput.focus();\n }, false);\n $searchClear.addEventListener('click', () => {\n $searchClear.style.display = 'none';\n this._searchDesktop && this._searchDesktop.autocomplete.setVal('');\n }, false);\n this._searchDesktopOnClickMask = this._searchDesktopOnClickMask ||(() => {\n $header.classList.remove('open');\n $searchLoading.style.display = 'none';\n $searchClear.style.display = 'none';\n this._searchDesktop && this._searchDesktop.autocomplete.setVal('');\n });\n this.clickMaskEventSet.add(this._searchDesktopOnClickMask);\n }\n $searchInput.addEventListener('input', () => {\n if ($searchInput.value === '') $searchClear.style.display = 'none';\n else $searchClear.style.display = 'inline';\n }, false);\n\n const initAutosearch = () => {\n const autosearch = autocomplete(`#search-input-${suffix}`,\n {\n hint: false,\n autoselect: true,\n dropdownMenuContainer: `#search-dropdown-${suffix}`,\n clearOnSelected: true,\n cssClasses: { noPrefix: true },\n debug: true\n },\n {\n name: 'search',\n source: (query, callback) => {\n $searchLoading.style.display = 'inline';\n $searchClear.style.display = 'none';\n const finish = (results) => {\n $searchLoading.style.display = 'none';\n $searchClear.style.display = 'inline';\n callback(results);\n };\n if (searchConfig.type === 'lunr') {\n const search = () => {\n if (lunr.queryHandler) {\n query = lunr.queryHandler(query);\n }\n const results = {};\n this._index.search(query).forEach(({ ref, matchData: { metadata } }) => {\n const matchData = this._indexData[ref];\n let { uri, title, content: context } = matchData;\n if (results[uri]) {\n return;\n }\n let position = 0;\n Object.values(metadata).forEach(({ content }) => {\n if (content) {\n const matchPosition = content.position[0][0];\n if (matchPosition < position || position === 0) {\n position = matchPosition;\n }\n }\n });\n position -= snippetLength / 5;\n if (position > 0) {\n position += context.substr(position, 20).lastIndexOf(' ') + 1;\n context = '...' + context.substr(position, snippetLength);\n } else {\n context = context.substr(0, snippetLength);\n }\n Object.keys(metadata).forEach((key) => {\n title = title.replace(new RegExp(`(${key})`, 'gi'), `<${highlightTag}>$1`);\n context = context.replace(new RegExp(`(${key})`, 'gi'), `<${highlightTag}>$1`);\n });\n results[uri] = {\n uri: uri,\n title: title,\n date: matchData.date,\n context: context\n };\n });\n return Object.values(results).slice(0, maxResultLength);\n };\n if (!this._index) {\n fetch(searchConfig.lunrIndexURL)\n .then((response) => response.json())\n .then((data) => {\n const indexData = {};\n this._index = lunr(function () {\n if (searchConfig.lunrLanguageCode) this.use(lunr[searchConfig.lunrLanguageCode]);\n this.ref('objectID');\n this.field('title', { boost: 50 });\n this.field('tags', { boost: 20 });\n this.field('categories', { boost: 20 });\n this.field('content', { boost: 10 });\n this.metadataWhitelist = ['position'];\n data.forEach((record) => {\n indexData[record.objectID] = record;\n this.add(record);\n });\n });\n this._indexData = indexData;\n finish(search());\n })\n .catch((err) => {\n console.error(err);\n finish([]);\n });\n } else finish(search());\n } else if (searchConfig.type === 'algolia') {\n this._algoliaIndex =\n this._algoliaIndex || algoliasearch(searchConfig.algoliaAppID, searchConfig.algoliaSearchKey).initIndex(searchConfig.algoliaIndex);\n this._algoliaIndex\n .search(query, {\n offset: 0,\n length: maxResultLength * 8,\n attributesToHighlight: ['title'],\n attributesToSnippet: [`content:${snippetLength}`],\n highlightPreTag: `<${highlightTag}>`,\n highlightPostTag: ``\n })\n .then(({ hits }) => {\n const results = {};\n hits.forEach(({ uri, date, _highlightResult: { title }, _snippetResult: { content } }) => {\n if (results[uri] && results[uri].context.length > content.value) {\n return;\n }\n results[uri] = {\n uri: uri,\n title: title.value,\n date: date,\n context: content.value\n };\n });\n finish(Object.values(results).slice(0, maxResultLength));\n })\n .catch((err) => {\n console.error(err);\n finish([]);\n });\n }\n },\n templates: {\n suggestion: ({ title, date, context }) =>\n `
${title}${date}
${context}
`,\n empty: ({ query }) => `
${searchConfig.noResultsFound}: \"${query}\"
`,\n footer: ({}) => {\n const { searchType, icon, href } =\n searchConfig.type === 'algolia'\n ? {\n searchType: 'algolia',\n icon: '',\n href: 'https://www.algolia.com/'\n }\n : {\n searchType: 'Lunr.js',\n icon: '',\n href: 'https://lunrjs.com/'\n };\n return ``;\n }\n }\n }\n );\n autosearch.on('autocomplete:selected', (_event, suggestion, _dataset, _context) => {\n window.location.assign(suggestion.uri);\n });\n if (isMobile) {\n this._searchMobile = autosearch;\n } else {\n this._searchDesktop = autosearch;\n }\n };\n if (searchConfig.lunrSegmentitURL && !document.getElementById('lunr-segmentit')) {\n const script = document.createElement('script');\n script.id = 'lunr-segmentit';\n script.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 {\n initAutosearch();\n }\n }\n\n initDetails() {\n this.util.forEach(document.getElementsByClassName('details'), ($details) => {\n const $summary = $details.querySelector('.details-summary');\n $summary.addEventListener('click', () => {\n $details.classList.toggle('open');\n }, false);\n });\n }\n\n initLightGallery() {\n this.config.lightGallery && lightGallery(document.getElementById('content'), this.config.lightGallery);\n }\n\n initHighlight() {\n this.util.forEach(document.querySelectorAll('.highlight > pre.chroma'), ($preChroma) => {\n const $chroma = document.createElement('div');\n $chroma.className = $preChroma.className;\n const $table = document.createElement('table');\n $chroma.appendChild($table);\n const $tbody = document.createElement('tbody');\n $table.appendChild($tbody);\n const $tr = document.createElement('tr');\n $tbody.appendChild($tr);\n const $td = document.createElement('td');\n $tr.appendChild($td);\n $preChroma.parentElement.replaceChild($chroma, $preChroma);\n $td.appendChild($preChroma);\n });\n this.util.forEach(document.querySelectorAll('.highlight > .chroma'), ($chroma) => {\n const $codeElements = $chroma.querySelectorAll('pre.chroma > code');\n if ($codeElements.length) {\n const $code = $codeElements[$codeElements.length - 1];\n const $header = document.createElement('div');\n $header.className = 'code-header ' + $code.className.toLowerCase();\n // code title\n const $title = document.createElement('span');\n $title.classList.add('code-title');\n $title.insertAdjacentHTML('afterbegin', '');\n $title.addEventListener('click', () => {\n $chroma.classList.toggle('open');\n }, false);\n $header.appendChild($title);\n // ellipses icon\n const $ellipses = document.createElement('span');\n $ellipses.insertAdjacentHTML('afterbegin', '');\n $ellipses.classList.add('ellipses');\n $ellipses.addEventListener('click', () => {\n $chroma.classList.add('open');\n }, false);\n $header.appendChild($ellipses);\n // edit button\n if (this.config.code.editable) {\n const $edit = document.createElement('span');\n $edit.classList.add('edit');\n $edit.insertAdjacentHTML('afterbegin', ``);\n $edit.addEventListener('click', () => {\n const $iconKey = $edit.querySelector('.fa-key');\n const $iconLock = $edit.querySelector('.fa-lock');\n const $preChromas = $edit.parentElement.parentElement.querySelectorAll('pre.chroma');\n const $preChroma = $preChromas.length === 2 ? $preChromas[1] : $preChromas[0];\n if ($iconKey) {\n $iconKey.classList.add('fa-lock');\n $iconKey.classList.remove('fa-key');\n $iconKey.title = this.config.code.editLockTitle;\n $preChroma.setAttribute('contenteditable', true);\n $preChroma.focus();\n } else {\n $iconLock.classList.add('fa-key');\n $iconLock.classList.remove('fa-lock');\n $iconLock.title = this.config.code.editUnLockTitle;\n $preChroma.setAttribute('contenteditable', false);\n $preChroma.blur();\n }\n }, false);\n $header.appendChild($edit);\n }\n // copy button\n if (this.config.code.copyTitle) {\n const $copy = document.createElement('span');\n $copy.insertAdjacentHTML('afterbegin', '');\n $copy.classList.add('copy');\n const code = $code.innerText;\n if (this.config.code.maxShownLines < 0 || code.split('\\n').length < this.config.code.maxShownLines + 2) {\n $chroma.classList.add('open');\n }\n $copy.title = this.config.code.copyTitle;\n $copy.addEventListener('click', () => {\n navigator.clipboard.writeText(code).then(() => {\n this.util.animateCSS($code, 'animate__flash');\n }, () => {\n console.error('Clipboard write failed!', 'Your browser does not support clipboard API!');\n });\n }, false);\n $header.appendChild($copy);\n }\n $chroma.insertBefore($header, $chroma.firstChild);\n }\n });\n }\n\n initTable() {\n this.util.forEach(document.querySelectorAll('.content table'), ($table) => {\n const $wrapper = document.createElement('div');\n $wrapper.className = 'table-wrapper';\n $table.parentElement.replaceChild($wrapper, $table);\n $wrapper.appendChild($table);\n });\n }\n\n initHeaderLink() {\n for (let num = 1; num <= 6; num++) {\n this.util.forEach(document.querySelectorAll('.single .content > h' + num), ($header) => {\n $header.classList.add('header-link');\n $header.insertAdjacentHTML('afterbegin', ``);\n });\n }\n }\n\n initToc() {\n const $tocCore = document.getElementById('TableOfContents');\n if ($tocCore === null) {\n return;\n }\n if (document.getElementById('toc-static').getAttribute('kept') === 'true' || this.util.isTocStatic()) {\n const $tocContentStatic = document.getElementById('toc-content-static');\n if ($tocCore.parentElement !== $tocContentStatic) {\n $tocCore.parentElement.removeChild($tocCore);\n $tocContentStatic.appendChild($tocCore);\n }\n if (this._tocOnScroll) this.scrollEventSet.delete(this._tocOnScroll);\n } else {\n const $tocContentAuto = document.getElementById('toc-content-auto');\n if ($tocCore.parentElement !== $tocContentAuto) {\n $tocCore.parentElement.removeChild($tocCore);\n $tocContentAuto.appendChild($tocCore);\n }\n const $toc = document.getElementById('toc-auto');\n $toc.style.visibility = 'visible';\n this.util.animateCSS($toc, ['animate__fadeIn', 'animate__faster'], true);\n $toc.style.marginTop = document.querySelector('.single-title').clientHeight + document.querySelector('.post-meta').clientHeight + 'px';\n $toc.style.marginBottom = document.getElementById('post-footer').clientHeight + 'px';\n const $tocLinkElements = $tocCore.querySelectorAll('a:first-child');\n const $tocLiElements = $tocCore.getElementsByTagName('li');\n const $headerLinkElements = document.getElementsByClassName('header-link');\n const headerIsFixed = document.body.getAttribute('header-desktop') !== 'normal';\n const headerHeight = document.getElementById('header-desktop').offsetHeight;\n this._tocOnScroll = this._tocOnScroll || (() => {\n const $comments = document.getElementById('comments');\n if ($comments) {\n $toc.style.marginBottom = document.getElementById('post-footer').clientHeight + $comments.clientHeight + 'px';\n }\n this.util.forEach($tocLinkElements, ($tocLink) => {\n $tocLink.classList.remove('active');\n });\n this.util.forEach($tocLiElements, ($tocLi) => {\n $tocLi.classList.remove('has-active');\n });\n const INDEX_SPACING = 20 + (headerIsFixed ? headerHeight : 0);\n let activeTocIndex = $headerLinkElements.length - 1;\n for (let i = 0; i < $headerLinkElements.length - 1; i++) {\n const thisTop = $headerLinkElements[i].getBoundingClientRect().top;\n const nextTop = $headerLinkElements[i + 1].getBoundingClientRect().top;\n if ((i == 0 && thisTop > INDEX_SPACING) || (thisTop <= INDEX_SPACING && nextTop > INDEX_SPACING)) {\n activeTocIndex = i;\n break;\n }\n }\n if (activeTocIndex !== -1) {\n $tocLinkElements[activeTocIndex].classList.add('active');\n let $parent = $tocLinkElements[activeTocIndex].parentElement;\n while ($parent !== $tocCore) {\n $parent.classList.add('has-active');\n $parent = $parent.parentElement.parentElement;\n }\n }\n });\n this._tocOnScroll();\n this.scrollEventSet.add(this._tocOnScroll);\n }\n }\n\n initMath() {\n if (this.config.math) {\n renderMathInElement(document.body, this.config.math);\n }\n }\n\n initMermaid() {\n const $mermaidElements = document.getElementsByClassName('mermaid');\n if ($mermaidElements.length) {\n mermaid.initialize({ startOnLoad: false, theme: 'default' });\n this.util.forEach($mermaidElements, ($mermaid) => {\n mermaid.mermaidAPI.render(\n 'svg-' + $mermaid.id,\n this.data[$mermaid.id],\n (svgCode) => {\n $mermaid.insertAdjacentHTML('afterbegin', svgCode);\n },\n $mermaid\n );\n });\n }\n }\n\n initEcharts() {\n this._echartsOnSwitchTheme = this._echartsOnSwitchTheme || (() => {\n this._echartsArr = this._echartsArr || [];\n for (let i = 0; i < this._echartsArr.length; i++) {\n this._echartsArr[i].dispose();\n }\n this._echartsArr = [];\n this.util.forEach(document.getElementsByClassName('echarts'), ($echarts) => {\n const chart = echarts.init($echarts, this.isDark ? 'dark' : 'macarons', {\n renderer: 'svg'\n });\n chart.setOption(JSON.parse(this.data[$echarts.id]));\n this._echartsArr.push(chart);\n });\n });\n this.switchThemeEventSet.add(this._echartsOnSwitchTheme);\n this._echartsOnSwitchTheme();\n this._echartsOnResize = this._echartsOnResize || (() => {\n for (let i = 0; i < this._echartsArr.length; i++) {\n this._echartsArr[i].resize();\n }\n });\n this.resizeEventSet.add(this._echartsOnResize);\n }\n\n initMapbox() {\n if (this.config.mapbox) {\n mapboxgl.accessToken = this.config.mapbox.accessToken;\n mapboxgl.setRTLTextPlugin(this.config.mapbox.RTLTextPlugin);\n this._mapboxArr = this._mapboxArr || [];\n this.util.forEach(document.getElementsByClassName('mapbox'), ($mapbox) => {\n const { lng, lat, zoom, lightStyle, darkStyle, marked, navigation, geolocate, scale, fullscreen } = this.data[$mapbox.id];\n const mapbox = new mapboxgl.Map({\n container: $mapbox,\n center: [lng, lat],\n zoom: zoom,\n minZoom: 0.2,\n style: this.isDark ? darkStyle : lightStyle,\n attributionControl: false\n });\n if (marked) {\n new mapboxgl.Marker().setLngLat([lng, lat]).addTo(mapbox);\n }\n if (navigation) {\n mapbox.addControl(new mapboxgl.NavigationControl(), 'bottom-right');\n }\n if (geolocate) {\n mapbox.addControl(\n new mapboxgl.GeolocateControl({\n positionOptions: {\n enableHighAccuracy: true\n },\n showUserLocation: true,\n trackUserLocation: true\n }),\n 'bottom-right'\n );\n }\n if (scale) {\n mapbox.addControl(new mapboxgl.ScaleControl());\n }\n if (fullscreen) {\n mapbox.addControl(new mapboxgl.FullscreenControl());\n }\n mapbox.addControl(new MapboxLanguage());\n this._mapboxArr.push(mapbox);\n });\n this._mapboxOnSwitchTheme = this._mapboxOnSwitchTheme || (() => {\n this.util.forEach(this._mapboxArr, (mapbox) => {\n const $mapbox = mapbox.getContainer();\n const { lightStyle, darkStyle } = this.data[$mapbox.id];\n mapbox.setStyle(this.isDark ? darkStyle : lightStyle);\n mapbox.addControl(new MapboxLanguage());\n });\n });\n this.switchThemeEventSet.add(this._mapboxOnSwitchTheme);\n }\n }\n\n initTypeit() {\n if (this.config.typeit) {\n const typeitConfig = this.config.typeit;\n const speed = typeitConfig.speed || 100;\n const cursorSpeed = typeitConfig.cursorSpeed || 1000;\n const cursorChar = typeitConfig.cursorChar || '|';\n Object.values(typeitConfig.data).forEach((group) => {\n const typeone = (i) => {\n const id = group[i];\n const instance = new TypeIt(`#${id}`, {\n strings: this.data[id],\n speed: speed,\n lifeLike: true,\n cursorSpeed: cursorSpeed,\n cursorChar: cursorChar,\n waitUntilVisible: true,\n afterComplete: () => {\n if (i === group.length - 1 && typeitConfig.duration >= 0) {\n window.setTimeout(() => {\n instance.destroy();\n }, typeitConfig.duration);\n return;\n }\n instance.destroy();\n typeone(i + 1);\n }\n }).go();\n };\n typeone(0);\n });\n }\n }\n\n initCommentLightGallery(comments, images) {\n if (!this.config.lightGallery) {\n return;\n }\n document.querySelectorAll(comments).forEach(($content) => {\n const $imgs = $content.querySelectorAll(images + ':not([lightgallery-loaded])');\n $imgs.forEach(($img) => {\n $img.setAttribute('lightgallery-loaded', '');\n const $link = document.createElement('a');\n $link.setAttribute('class', 'comment-lightgallery');\n $link.setAttribute('href', $img.src);\n $link.append($img.cloneNode());\n $img.replaceWith($link);\n });\n if ($imgs.length) {\n lightGallery($content, {\n selector: '.comment-lightgallery',\n actualSize: false,\n hideBarsDelay: 2000,\n speed: 400\n });\n }\n });\n }\n\n initComment() {\n if (!this.config.comment) {\n return;\n }\n if (this.config.comment.artalk) {\n const artalk = new Artalk(this.config.comment.artalk);\n artalk.setDarkMode(this.isDark);\n this.switchThemeEventSet.add(() => {\n artalk.setDarkMode(this.isDark);\n });\n artalk.on('comments-loaded', () => {\n this.config.comment.artalk.lightgallery && this.initCommentLightGallery('.atk-comment .atk-content', 'img:not([atk-emoticon])');\n });\n return artalk;\n }\n if (this.config.comment.gitalk) {\n this.config.comment.gitalk.body = decodeURI(window.location.href);\n const gitalk = new Gitalk(this.config.comment.gitalk);\n gitalk.render('gitalk');\n return gitalk;\n }\n if (this.config.comment.valine) {\n return new Valine(this.config.comment.valine);\n }\n if (this.config.comment.waline) {\n return new Waline(this.config.comment.waline);\n }\n if (this.config.comment.utterances) {\n const utterancesConfig = this.config.comment.utterances;\n const script = document.createElement('script');\n script.src = 'https://utteranc.es/client.js';\n script.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', this.isDark ? utterancesConfig.darkTheme : utterancesConfig.lightTheme);\n script.crossOrigin = 'anonymous';\n script.async = true;\n document.getElementById('utterances').appendChild(script);\n this._utterancesOnSwitchTheme = this._utterancesOnSwitchTheme || (() => {\n const message = {\n type: 'set-theme',\n theme: this.isDark ? utterancesConfig.darkTheme : utterancesConfig.lightTheme\n };\n document.querySelector('.utterances-frame')?.contentWindow.postMessage(message, 'https://utteranc.es');\n });\n this.switchThemeEventSet.add(this._utterancesOnSwitchTheme);\n return;\n }\n if (this.config.comment.twikoo) {\n const twikooConfig = this.config.comment.twikoo;\n if (twikooConfig.lightgallery) {\n twikooConfig.onCommentLoaded = () => {\n this.initCommentLightGallery('.tk-comments .tk-content', 'img:not(.tk-owo-emotion)');\n };\n }\n twikoo.init(twikooConfig);\n if (twikooConfig.commentCount) {\n // https://twikoo.js.org/api.html#get-comments-count\n twikoo\n .getCommentsCount({\n envId: twikooConfig.envId,\n region: twikooConfig.region,\n urls: [window.location.pathname],\n includeReply: false\n })\n .then(function (response) {\n const twikooCommentCount = document.getElementById('twikoo-comment-count');\n if (twikooCommentCount) twikooCommentCount.innerHTML = response[0].count;\n });\n }\n return;\n }\n if (this.config.comment.giscus) {\n const giscusConfig = this.config.comment.giscus;\n this._giscusOnSwitchTheme = this._giscusOnSwitchTheme || (() => {\n const message = { setConfig: { theme: this.isDark ? giscusConfig.darkTheme : giscusConfig.lightTheme }};\n document.querySelector('.giscus-frame')?.contentWindow.postMessage({ giscus: message }, 'https://giscus.app');\n });\n this.switchThemeEventSet.add(this._giscusOnSwitchTheme);\n const _this = this;\n _this.giscus2parentMsg = window.addEventListener('message', (event) => {\n const $script = document.querySelector('#giscus>script');\n if ($script){\n _this._giscusOnSwitchTheme();\n $script.parentElement.removeChild($script);\n }\n window.removeEventListener('message', _this.giscus2parentMsg);\n });\n return;\n }\n }\n\n initCookieconsent() {\n this.config.cookieconsent && cookieconsent.initialise(this.config.cookieconsent);\n }\n\n getSiteTime = () => {\n let now = new Date();\n let run = new Date(this.config.siteTime);\n let $runTimes = document.querySelector('.run-times');\n if (!this.util.isValidDate(run) || !$runTimes) {\n clearInterval(this.siteTime);\n $runTimes && $runTimes.parentNode.remove();\n return;\n }\n let runTime = (now - run) / 1000,\n days = Math.floor(runTime / 60 / 60 / 24),\n hours = Math.floor(runTime / 60 / 60 - 24 * days),\n minutes = Math.floor(runTime / 60 - 24 * 60 * days - 60 * hours),\n seconds = Math.floor((now - run) / 1000 - 24 * 60 * 60 * days - 60 * 60 * hours - 60 * minutes);\n $runTimes.innerHTML = `${days}, ${String(hours).padStart(2, 0)}:${String(minutes).padStart(2, 0)}:${String(seconds).padStart(2, 0)}`;\n }\n\n initSiteTime() {\n if (this.config.siteTime) {\n this.siteTime = setInterval(this.getSiteTime, 500);\n document.addEventListener('visibilitychange', () => {\n if (document.hidden) {\n return clearInterval(this.siteTime);\n }\n this.siteTime = setInterval(this.getSiteTime, 500);\n }, false);\n }\n }\n\n initServiceWorker() {\n if (this.config.enablePWA && 'serviceWorker' in navigator) {\n navigator.serviceWorker\n .register('/service-worker.min.js', { scope: '/' })\n .then(function (registration) {\n // console.log('Service Worker Registered');\n })\n .catch(function (error) {\n console.error('error: ', error);\n });\n navigator.serviceWorker.ready.then(function (registration) {\n // console.log('Service Worker Ready');\n });\n }\n }\n\n initWatermark() {\n this.config?.watermark?.enable &&\n new Watermark({\n content: this.config.watermark.content || '\"FixIt FixIt Theme',\n appendTo: this.config.watermark.appendto || '.wrapper>main',\n opacity: this.config.watermark.opacity,\n width: this.config.watermark.width,\n height: this.config.watermark.height,\n rowSpacing: this.config.watermark.rowspacing,\n colSpacing: this.config.watermark.colspacing,\n rotate: this.config.watermark.rotate,\n fontSize: this.config.watermark.fontsize,\n fontFamily: this.config.watermark.fontfamily\n });\n }\n\n initPangu() {\n this.config.enablePangu && pangu.autoSpacingPage();\n }\n\n onScroll() {\n const $headers = [];\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 const $viewComments = document.getElementById('view-comments');\n $viewComments.href = `#comments`;\n $viewComments.style.display = 'block';\n }\n const $fixedButtons = document.getElementById('fixed-buttons');\n const ACCURACY = 20,\n MINIMUM = 100;\n window.addEventListener('scroll', (event) => {\n if (this.disableScrollEvent) {\n event.preventDefault();\n this.disableScrollEvent = false;\n return;\n }\n document.getElementById('mask').click();\n this.newScrollTop = this.util.getScrollTop();\n const scroll = this.newScrollTop - this.oldScrollTop;\n const isMobile = this.util.isMobile();\n this.util.forEach($headers, ($header) => {\n if (scroll > ACCURACY) {\n $header.classList.remove('animate__fadeInDown');\n this.util.animateCSS($header, ['animate__fadeOutUp', 'animate__faster'], true);\n } else if (scroll < -ACCURACY) {\n $header.classList.remove('animate__fadeOutUp');\n this.util.animateCSS($header, ['animate__fadeInDown', 'animate__faster'], true);\n }\n });\n // whether to show b2t button\n if (this.newScrollTop > MINIMUM) {\n if (isMobile && scroll > ACCURACY) {\n $fixedButtons.classList.remove('animate__fadeIn');\n this.util.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 this.util.animateCSS($fixedButtons, ['animate__fadeIn', 'animate__faster'], true);\n }\n } else {\n if (!isMobile) {\n $fixedButtons.classList.remove('animate__fadeIn');\n this.util.animateCSS($fixedButtons, ['animate__fadeOut', 'animate__faster'], true);\n }\n $fixedButtons.style.display = 'none';\n }\n for (let event of this.scrollEventSet) event();\n this.oldScrollTop = this.newScrollTop;\n }, false);\n }\n\n onResize() {\n window.addEventListener('resize', () => {\n if (!this._resizeTimeout) {\n this._resizeTimeout = window.setTimeout(() => {\n this._resizeTimeout = null;\n for (let event of this.resizeEventSet) event();\n this.initToc();\n this.initMermaid();\n this.initSearch();\n document.getElementById('mask').click();\n }, 100);\n }\n }, false);\n }\n\n onClickMask() {\n document.getElementById('mask').addEventListener('click', () => {\n for (let event of this.clickMaskEventSet) event();\n document.body.classList.remove('blur');\n }, false);\n }\n\n init() {\n try {\n this.initSVGIcon();\n this.initTwemoji();\n this.initMenu();\n this.initSwitchTheme();\n this.initSearch();\n this.initDetails();\n this.initLightGallery();\n this.initHighlight();\n this.initTable();\n this.initHeaderLink();\n this.initMath();\n this.initMermaid();\n this.initEcharts();\n this.initTypeit();\n this.initMapbox();\n this.initCookieconsent();\n this.initSiteTime();\n this.initServiceWorker();\n this.initWatermark();\n this.initPangu();\n } catch (err) {\n console.error(err);\n }\n\n window.setTimeout(() => {\n this.initComment();\n this.initToc();\n\n this.onScroll();\n this.onResize();\n this.onClickMask();\n }, 100);\n }\n}\n\nconst themeInit = () => {\n const theme = new Theme();\n theme.init();\n};\n\nif (document.readyState !== 'loading') {\n themeInit();\n} else {\n document.addEventListener('DOMContentLoaded', themeInit, false);\n}\n"]} \ No newline at end of file +{"version":3,"sources":["../../src/js/theme.js"],"names":[],"mappings":"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","file":"theme.min.js","sourcesContent":["class Util {\n forEach(elements, handler) {\n elements = elements || [];\n for(let i = 0; i < elements.length; i++){\n handler(elements[i]);\n }\n }\n\n getScrollTop() {\n return (document.documentElement && document.documentElement.scrollTop) || document.body.scrollTop;\n }\n\n isMobile() {\n return window.matchMedia('only screen and (max-width: 680px)').matches;\n }\n\n isTocStatic() {\n return window.matchMedia('only screen and (max-width: 960px)').matches;\n }\n\n /**\n * add animate to element\n * @param {Element} element animate element\n * @param {String|Array} animation animation name\n * @param {Boolean} reserved reserved animation\n * @param {Function} callback remove callback\n */\n animateCSS(element, animation, reserved, callback) {\n !Array.isArray(animation) && (animation = [animation]);\n element.classList.add('animate__animated', ...animation);\n const handler = () => {\n element.classList.remove('animate__animated', ...animation);\n element.removeEventListener('animationend', handler);\n typeof callback === 'function' && callback();\n };\n !reserved && element.addEventListener('animationend', handler, false);\n }\n \n /**\n * date validator\n * @param {*} date may be date or not\n * @returns {Boolean}\n */\n isValidDate(date) {\n return date instanceof Date && !isNaN(date.getTime());\n }\n}\n\nclass Theme {\n constructor() {\n this.config = window.config;\n this.data = this.config.data;\n this.isDark = document.body.getAttribute('theme') === 'dark';\n this.util = new Util();\n this.newScrollTop = this.util.getScrollTop();\n this.oldScrollTop = this.newScrollTop;\n this.scrollEventSet = new Set();\n this.resizeEventSet = new Set();\n this.switchThemeEventSet = new Set();\n this.clickMaskEventSet = new Set();\n this.disableScrollEvent = false;\n window.objectFitImages && objectFitImages();\n }\n\n initSVGIcon() {\n this.util.forEach(document.querySelectorAll('[data-svg-src]'), ($icon) => {\n fetch($icon.getAttribute('data-svg-src'))\n .then((response) => response.text())\n .then((svg) => {\n const $temp = document.createElement('div');\n $temp.insertAdjacentHTML('afterbegin', svg);\n const $svg = $temp.firstChild;\n $svg.setAttribute('data-svg-src', $icon.getAttribute('data-svg-src'));\n $svg.classList.add('icon');\n const $titleElements = $svg.getElementsByTagName('title');\n $titleElements.length && $svg.removeChild($titleElements[0])\n $icon.parentElement.replaceChild($svg, $icon);\n })\n .catch((err) => {\n console.error(err);\n });\n });\n }\n\n initTwemoji() {\n this.config.twemoji && twemoji.parse(document.body);\n }\n\n initMenu() {\n this.initMenuDesktop();\n this.initMenuMobile();\n }\n\n initMenuDesktop() {\n // This is a dirty hack for fixing sub menu position error in desktop header\n this.util.forEach(document.querySelectorAll('[has-children], #header-desktop .language'), ($item) => {\n $item.addEventListener('mouseover', function(){\n this.querySelector('.sub-menu').style.left= `${this.getBoundingClientRect().left}px`;\n })\n $item.querySelector('.sub-menu').style.minWidth= `${$item.offsetWidth - 8}px`;\n });\n }\n\n initMenuMobile() {\n const $menuToggleMobile = document.getElementById('menu-toggle-mobile');\n const $menuMobile = document.getElementById('menu-mobile');\n $menuToggleMobile.addEventListener('click', (event) => {\n this.disableScrollEvent = true;\n document.body.classList.toggle('blur');\n $menuToggleMobile.classList.toggle('active');\n $menuMobile.classList.toggle('active');\n }, false);\n this._menuMobileOnClickMask = this._menuMobileOnClickMask || (() => {\n $menuToggleMobile.classList.remove('active');\n $menuMobile.classList.remove('active');\n });\n this.clickMaskEventSet.add(this._menuMobileOnClickMask);\n // add nested menu toggler\n this.util.forEach(document.querySelectorAll('.menu-item>.nested-item'), ($nestedItem) => {\n $nestedItem.addEventListener('click', function () {\n this.parentNode.querySelector('.sub-menu').classList.toggle('open');\n this.querySelector('.dropdown-icon').classList.toggle('open');\n })\n });\n }\n\n initSwitchTheme() {\n this.util.forEach(document.getElementsByClassName('theme-switch'), ($themeSwitch) => {\n $themeSwitch.addEventListener('click', () => {\n document.body.setAttribute('theme', document.body.getAttribute('theme') === 'dark' ? 'light' : 'dark');\n this.isDark = !this.isDark;\n window.localStorage && localStorage.setItem('theme', this.isDark ? 'dark' : 'light');\n for (let event of this.switchThemeEventSet) {\n event();\n }\n }, false);\n });\n }\n\n initSearch() {\n const searchConfig = this.config.search;\n const isMobile = this.util.isMobile();\n if (!searchConfig || (isMobile && this._searchMobileOnce) || (!isMobile && this._searchDesktopOnce)) {\n return;\n }\n const maxResultLength = searchConfig.maxResultLength || 10;\n const snippetLength = searchConfig.snippetLength || 50;\n const highlightTag = searchConfig.highlightTag || 'em';\n const suffix = isMobile ? 'mobile' : 'desktop';\n const $header = document.getElementById(`header-${suffix}`);\n const $searchInput = document.getElementById(`search-input-${suffix}`);\n const $searchToggle = document.getElementById(`search-toggle-${suffix}`);\n const $searchLoading = document.getElementById(`search-loading-${suffix}`);\n const $searchClear = document.getElementById(`search-clear-${suffix}`);\n\n if (isMobile) {\n this._searchMobileOnce = true;\n $searchInput.addEventListener('focus', () => {\n 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 this._searchMobile && this._searchMobile.autocomplete.setVal('');\n }, false);\n $searchClear.addEventListener('click', () => {\n $searchClear.style.display = 'none';\n this._searchMobile && this._searchMobile.autocomplete.setVal('');\n }, false);\n this._searchMobileOnClickMask = this._searchMobileOnClickMask || (() => {\n $header.classList.remove('open');\n $searchLoading.style.display = 'none';\n $searchClear.style.display = 'none';\n this._searchMobile && this._searchMobile.autocomplete.setVal('');\n });\n this.clickMaskEventSet.add(this._searchMobileOnClickMask);\n } else {\n this._searchDesktopOnce = true;\n $searchToggle.addEventListener('click', () => {\n document.body.classList.add('blur');\n $header.classList.add('open');\n $searchInput.focus();\n }, false);\n $searchClear.addEventListener('click', () => {\n $searchClear.style.display = 'none';\n this._searchDesktop && this._searchDesktop.autocomplete.setVal('');\n }, false);\n this._searchDesktopOnClickMask = this._searchDesktopOnClickMask ||(() => {\n $header.classList.remove('open');\n $searchLoading.style.display = 'none';\n $searchClear.style.display = 'none';\n this._searchDesktop && this._searchDesktop.autocomplete.setVal('');\n });\n this.clickMaskEventSet.add(this._searchDesktopOnClickMask);\n }\n $searchInput.addEventListener('input', () => {\n if ($searchInput.value === '') $searchClear.style.display = 'none';\n else $searchClear.style.display = 'inline';\n }, false);\n\n const initAutosearch = () => {\n const autosearch = autocomplete(`#search-input-${suffix}`,\n {\n hint: false,\n autoselect: true,\n dropdownMenuContainer: `#search-dropdown-${suffix}`,\n clearOnSelected: true,\n cssClasses: { noPrefix: true },\n debug: true\n },\n {\n name: 'search',\n source: (query, callback) => {\n $searchLoading.style.display = 'inline';\n $searchClear.style.display = 'none';\n const finish = (results) => {\n $searchLoading.style.display = 'none';\n $searchClear.style.display = 'inline';\n callback(results);\n };\n if (searchConfig.type === 'lunr') {\n const search = () => {\n if (lunr.queryHandler) {\n query = lunr.queryHandler(query);\n }\n const results = {};\n this._index.search(query).forEach(({ ref, matchData: { metadata } }) => {\n const matchData = this._indexData[ref];\n let { uri, title, content: context } = matchData;\n if (results[uri]) {\n return;\n }\n let position = 0;\n Object.values(metadata).forEach(({ content }) => {\n if (content) {\n const matchPosition = content.position[0][0];\n if (matchPosition < position || position === 0) {\n position = matchPosition;\n }\n }\n });\n position -= snippetLength / 5;\n if (position > 0) {\n position += context.substr(position, 20).lastIndexOf(' ') + 1;\n context = '...' + context.substr(position, snippetLength);\n } else {\n context = context.substr(0, snippetLength);\n }\n Object.keys(metadata).forEach((key) => {\n title = title.replace(new RegExp(`(${key})`, 'gi'), `<${highlightTag}>$1`);\n context = context.replace(new RegExp(`(${key})`, 'gi'), `<${highlightTag}>$1`);\n });\n results[uri] = {\n uri: uri,\n title: title,\n date: matchData.date,\n context: context\n };\n });\n return Object.values(results).slice(0, maxResultLength);\n };\n if (!this._index) {\n fetch(searchConfig.lunrIndexURL)\n .then((response) => response.json())\n .then((data) => {\n const indexData = {};\n this._index = lunr(function () {\n if (searchConfig.lunrLanguageCode) this.use(lunr[searchConfig.lunrLanguageCode]);\n this.ref('objectID');\n this.field('title', { boost: 50 });\n this.field('tags', { boost: 20 });\n this.field('categories', { boost: 20 });\n this.field('content', { boost: 10 });\n this.metadataWhitelist = ['position'];\n data.forEach((record) => {\n indexData[record.objectID] = record;\n this.add(record);\n });\n });\n this._indexData = indexData;\n finish(search());\n })\n .catch((err) => {\n console.error(err);\n finish([]);\n });\n } else finish(search());\n } else if (searchConfig.type === 'algolia') {\n this._algoliaIndex =\n this._algoliaIndex || algoliasearch(searchConfig.algoliaAppID, searchConfig.algoliaSearchKey).initIndex(searchConfig.algoliaIndex);\n this._algoliaIndex\n .search(query, {\n offset: 0,\n length: maxResultLength * 8,\n attributesToHighlight: ['title'],\n attributesToSnippet: [`content:${snippetLength}`],\n highlightPreTag: `<${highlightTag}>`,\n highlightPostTag: ``\n })\n .then(({ hits }) => {\n const results = {};\n hits.forEach(({ uri, date, _highlightResult: { title }, _snippetResult: { content } }) => {\n if (results[uri] && results[uri].context.length > content.value) {\n return;\n }\n results[uri] = {\n uri: uri,\n title: title.value,\n date: date,\n context: content.value\n };\n });\n finish(Object.values(results).slice(0, maxResultLength));\n })\n .catch((err) => {\n console.error(err);\n finish([]);\n });\n }\n },\n templates: {\n suggestion: ({ title, date, context }) =>\n `
${title}${date}
${context}
`,\n empty: ({ query }) => `
${searchConfig.noResultsFound}: \"${query}\"
`,\n footer: ({}) => {\n const { searchType, icon, href } =\n searchConfig.type === 'algolia'\n ? {\n searchType: 'algolia',\n icon: '',\n href: 'https://www.algolia.com/'\n }\n : {\n searchType: 'Lunr.js',\n icon: '',\n href: 'https://lunrjs.com/'\n };\n return ``;\n }\n }\n }\n );\n autosearch.on('autocomplete:selected', (_event, suggestion, _dataset, _context) => {\n window.location.assign(suggestion.uri);\n });\n if (isMobile) {\n this._searchMobile = autosearch;\n } else {\n this._searchDesktop = autosearch;\n }\n };\n if (searchConfig.lunrSegmentitURL && !document.getElementById('lunr-segmentit')) {\n const script = document.createElement('script');\n script.id = 'lunr-segmentit';\n script.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 {\n initAutosearch();\n }\n }\n\n initDetails() {\n this.util.forEach(document.getElementsByClassName('details'), ($details) => {\n const $summary = $details.querySelector('.details-summary');\n $summary.addEventListener('click', () => {\n $details.classList.toggle('open');\n }, false);\n });\n }\n\n initLightGallery() {\n this.config.lightGallery && lightGallery(document.getElementById('content'), this.config.lightGallery);\n }\n\n initHighlight() {\n this.util.forEach(document.querySelectorAll('.highlight > pre.chroma'), ($preChroma) => {\n const $chroma = document.createElement('div');\n $chroma.className = $preChroma.className;\n const $table = document.createElement('table');\n $chroma.appendChild($table);\n const $tbody = document.createElement('tbody');\n $table.appendChild($tbody);\n const $tr = document.createElement('tr');\n $tbody.appendChild($tr);\n const $td = document.createElement('td');\n $tr.appendChild($td);\n $preChroma.parentElement.replaceChild($chroma, $preChroma);\n $td.appendChild($preChroma);\n });\n this.util.forEach(document.querySelectorAll('.highlight > .chroma'), ($chroma) => {\n const $codeElements = $chroma.querySelectorAll('pre.chroma > code');\n if ($codeElements.length) {\n const $code = $codeElements[$codeElements.length - 1];\n const $header = document.createElement('div');\n $header.className = 'code-header ' + $code.className.toLowerCase();\n // code title\n const $title = document.createElement('span');\n $title.classList.add('code-title');\n $title.insertAdjacentHTML('afterbegin', '');\n $title.addEventListener('click', () => {\n $chroma.classList.toggle('open');\n }, false);\n $header.appendChild($title);\n // ellipses icon\n const $ellipses = document.createElement('span');\n $ellipses.insertAdjacentHTML('afterbegin', '');\n $ellipses.classList.add('ellipses');\n $ellipses.addEventListener('click', () => {\n $chroma.classList.add('open');\n }, false);\n $header.appendChild($ellipses);\n // edit button\n if (this.config.code.editable) {\n const $edit = document.createElement('span');\n $edit.classList.add('edit');\n $edit.insertAdjacentHTML('afterbegin', ``);\n $edit.addEventListener('click', () => {\n const $iconKey = $edit.querySelector('.fa-key');\n const $iconLock = $edit.querySelector('.fa-lock');\n const $preChromas = $edit.parentElement.parentElement.querySelectorAll('pre.chroma');\n const $preChroma = $preChromas.length === 2 ? $preChromas[1] : $preChromas[0];\n if ($iconKey) {\n $iconKey.classList.add('fa-lock');\n $iconKey.classList.remove('fa-key');\n $iconKey.title = this.config.code.editLockTitle;\n $preChroma.setAttribute('contenteditable', true);\n $preChroma.focus();\n } else {\n $iconLock.classList.add('fa-key');\n $iconLock.classList.remove('fa-lock');\n $iconLock.title = this.config.code.editUnLockTitle;\n $preChroma.setAttribute('contenteditable', false);\n $preChroma.blur();\n }\n }, false);\n $header.appendChild($edit);\n }\n // copy button\n if (this.config.code.copyTitle) {\n const $copy = document.createElement('span');\n $copy.insertAdjacentHTML('afterbegin', '');\n $copy.classList.add('copy');\n const code = $code.innerText;\n if (this.config.code.maxShownLines < 0 || code.split('\\n').length < this.config.code.maxShownLines + 2) {\n $chroma.classList.add('open');\n }\n $copy.title = this.config.code.copyTitle;\n $copy.addEventListener('click', () => {\n navigator.clipboard.writeText(code).then(() => {\n this.util.animateCSS($code, 'animate__flash');\n }, () => {\n console.error('Clipboard write failed!', 'Your browser does not support clipboard API!');\n });\n }, false);\n $header.appendChild($copy);\n }\n $chroma.insertBefore($header, $chroma.firstChild);\n }\n });\n }\n\n initTable() {\n this.util.forEach(document.querySelectorAll('.content table'), ($table) => {\n const $wrapper = document.createElement('div');\n $wrapper.className = 'table-wrapper';\n $table.parentElement.replaceChild($wrapper, $table);\n $wrapper.appendChild($table);\n });\n }\n\n initHeaderLink() {\n for (let num = 1; num <= 6; num++) {\n this.util.forEach(document.querySelectorAll('.single .content > h' + num), ($header) => {\n $header.classList.add('header-link');\n $header.insertAdjacentHTML('afterbegin', ``);\n });\n }\n }\n\n initToc() {\n const $tocCore = document.getElementById('TableOfContents');\n if ($tocCore === null) {\n return;\n }\n if (document.getElementById('toc-static').getAttribute('kept') === 'true' || this.util.isTocStatic()) {\n const $tocContentStatic = document.getElementById('toc-content-static');\n if ($tocCore.parentElement !== $tocContentStatic) {\n $tocCore.parentElement.removeChild($tocCore);\n $tocContentStatic.appendChild($tocCore);\n }\n if (this._tocOnScroll) this.scrollEventSet.delete(this._tocOnScroll);\n } else {\n const $tocContentAuto = document.getElementById('toc-content-auto');\n if ($tocCore.parentElement !== $tocContentAuto) {\n $tocCore.parentElement.removeChild($tocCore);\n $tocContentAuto.appendChild($tocCore);\n }\n const $toc = document.getElementById('toc-auto');\n $toc.style.visibility = 'visible';\n this.util.animateCSS($toc, ['animate__fadeIn', 'animate__faster'], true);\n $toc.style.marginTop = document.querySelector('.single-title').clientHeight + document.querySelector('.post-meta').clientHeight + 'px';\n $toc.style.marginBottom = document.getElementById('post-footer').clientHeight + 'px';\n const $tocLinkElements = $tocCore.querySelectorAll('a:first-child');\n const $tocLiElements = $tocCore.getElementsByTagName('li');\n const $headerLinkElements = document.getElementsByClassName('header-link');\n const headerIsFixed = document.body.getAttribute('header-desktop') !== 'normal';\n const headerHeight = document.getElementById('header-desktop').offsetHeight;\n this._tocOnScroll = this._tocOnScroll || (() => {\n const $comments = document.getElementById('comments');\n if ($comments) {\n $toc.style.marginBottom = document.getElementById('post-footer').clientHeight + $comments.clientHeight + 'px';\n }\n this.util.forEach($tocLinkElements, ($tocLink) => {\n $tocLink.classList.remove('active');\n });\n this.util.forEach($tocLiElements, ($tocLi) => {\n $tocLi.classList.remove('has-active');\n });\n const INDEX_SPACING = 20 + (headerIsFixed ? headerHeight : 0);\n let activeTocIndex = $headerLinkElements.length - 1;\n for (let i = 0; i < $headerLinkElements.length - 1; i++) {\n const thisTop = $headerLinkElements[i].getBoundingClientRect().top;\n const nextTop = $headerLinkElements[i + 1].getBoundingClientRect().top;\n if ((i == 0 && thisTop > INDEX_SPACING) || (thisTop <= INDEX_SPACING && nextTop > INDEX_SPACING)) {\n activeTocIndex = i;\n break;\n }\n }\n if (activeTocIndex !== -1) {\n $tocLinkElements[activeTocIndex].classList.add('active');\n let $parent = $tocLinkElements[activeTocIndex].parentElement;\n while ($parent !== $tocCore) {\n $parent.classList.add('has-active');\n $parent = $parent.parentElement.parentElement;\n }\n }\n });\n this._tocOnScroll();\n this.scrollEventSet.add(this._tocOnScroll);\n }\n }\n\n initMath() {\n if (this.config.math) {\n renderMathInElement(document.body, this.config.math);\n }\n }\n\n initMermaid() {\n const $mermaidElements = document.getElementsByClassName('mermaid');\n if ($mermaidElements.length) {\n mermaid.initialize({ startOnLoad: false, theme: 'default' });\n this.util.forEach($mermaidElements, ($mermaid) => {\n mermaid.mermaidAPI.render(\n 'svg-' + $mermaid.id,\n this.data[$mermaid.id],\n (svgCode) => {\n $mermaid.insertAdjacentHTML('afterbegin', svgCode);\n },\n $mermaid\n );\n });\n }\n }\n\n initEcharts() {\n this._echartsOnSwitchTheme = this._echartsOnSwitchTheme || (() => {\n this._echartsArr = this._echartsArr || [];\n for (let i = 0; i < this._echartsArr.length; i++) {\n this._echartsArr[i].dispose();\n }\n this._echartsArr = [];\n this.util.forEach(document.getElementsByClassName('echarts'), ($echarts) => {\n const chart = echarts.init($echarts, this.isDark ? 'dark' : 'macarons', {\n renderer: 'svg'\n });\n chart.setOption(JSON.parse(this.data[$echarts.id]));\n this._echartsArr.push(chart);\n });\n });\n this.switchThemeEventSet.add(this._echartsOnSwitchTheme);\n this._echartsOnSwitchTheme();\n this._echartsOnResize = this._echartsOnResize || (() => {\n for (let i = 0; i < this._echartsArr.length; i++) {\n this._echartsArr[i].resize();\n }\n });\n this.resizeEventSet.add(this._echartsOnResize);\n }\n\n initMapbox() {\n if (this.config.mapbox) {\n mapboxgl.accessToken = this.config.mapbox.accessToken;\n mapboxgl.setRTLTextPlugin(this.config.mapbox.RTLTextPlugin);\n this._mapboxArr = this._mapboxArr || [];\n this.util.forEach(document.getElementsByClassName('mapbox'), ($mapbox) => {\n const { lng, lat, zoom, lightStyle, darkStyle, marked, navigation, geolocate, scale, fullscreen } = this.data[$mapbox.id];\n const mapbox = new mapboxgl.Map({\n container: $mapbox,\n center: [lng, lat],\n zoom: zoom,\n minZoom: 0.2,\n style: this.isDark ? darkStyle : lightStyle,\n attributionControl: false\n });\n if (marked) {\n new mapboxgl.Marker().setLngLat([lng, lat]).addTo(mapbox);\n }\n if (navigation) {\n mapbox.addControl(new mapboxgl.NavigationControl(), 'bottom-right');\n }\n if (geolocate) {\n mapbox.addControl(\n new mapboxgl.GeolocateControl({\n positionOptions: {\n enableHighAccuracy: true\n },\n showUserLocation: true,\n trackUserLocation: true\n }),\n 'bottom-right'\n );\n }\n if (scale) {\n mapbox.addControl(new mapboxgl.ScaleControl());\n }\n if (fullscreen) {\n mapbox.addControl(new mapboxgl.FullscreenControl());\n }\n mapbox.addControl(new MapboxLanguage());\n this._mapboxArr.push(mapbox);\n });\n this._mapboxOnSwitchTheme = this._mapboxOnSwitchTheme || (() => {\n this.util.forEach(this._mapboxArr, (mapbox) => {\n const $mapbox = mapbox.getContainer();\n const { lightStyle, darkStyle } = this.data[$mapbox.id];\n mapbox.setStyle(this.isDark ? darkStyle : lightStyle);\n mapbox.addControl(new MapboxLanguage());\n });\n });\n this.switchThemeEventSet.add(this._mapboxOnSwitchTheme);\n }\n }\n\n initTypeit() {\n if (this.config.typeit) {\n const typeitConfig = this.config.typeit;\n const speed = typeitConfig.speed || 100;\n const cursorSpeed = typeitConfig.cursorSpeed || 1000;\n const cursorChar = typeitConfig.cursorChar || '|';\n Object.values(typeitConfig.data).forEach((group) => {\n const typeone = (i) => {\n const id = group[i];\n const instance = new TypeIt(`#${id}`, {\n strings: this.data[id],\n speed: speed,\n lifeLike: true,\n cursorSpeed: cursorSpeed,\n cursorChar: cursorChar,\n waitUntilVisible: true,\n afterComplete: () => {\n if (i === group.length - 1 && typeitConfig.duration >= 0) {\n window.setTimeout(() => {\n instance.destroy();\n }, typeitConfig.duration);\n return;\n }\n instance.destroy();\n typeone(i + 1);\n }\n }).go();\n };\n typeone(0);\n });\n }\n }\n\n initCommentLightGallery(comments, images) {\n if (!this.config.lightGallery) {\n return;\n }\n document.querySelectorAll(comments).forEach(($content) => {\n const $imgs = $content.querySelectorAll(images + ':not([lightgallery-loaded])');\n $imgs.forEach(($img) => {\n $img.setAttribute('lightgallery-loaded', '');\n const $link = document.createElement('a');\n $link.setAttribute('class', 'comment-lightgallery');\n $link.setAttribute('href', $img.src);\n $link.append($img.cloneNode());\n $img.replaceWith($link);\n });\n if ($imgs.length) {\n lightGallery($content, {\n selector: '.comment-lightgallery',\n actualSize: false,\n hideBarsDelay: 2000,\n speed: 400\n });\n }\n });\n }\n\n initComment() {\n if (!this.config.comment) {\n return;\n }\n if (this.config.comment.artalk) {\n const artalk = new Artalk(this.config.comment.artalk);\n artalk.setDarkMode(this.isDark);\n this.switchThemeEventSet.add(() => {\n artalk.setDarkMode(this.isDark);\n });\n artalk.on('comments-loaded', () => {\n this.config.comment.artalk.lightgallery && this.initCommentLightGallery('.atk-comment .atk-content', 'img:not([atk-emoticon])');\n });\n return artalk;\n }\n if (this.config.comment.gitalk) {\n this.config.comment.gitalk.body = decodeURI(window.location.href);\n const gitalk = new Gitalk(this.config.comment.gitalk);\n gitalk.render('gitalk');\n return gitalk;\n }\n if (this.config.comment.valine) {\n return new Valine(this.config.comment.valine);\n }\n if (this.config.comment.waline) {\n return new Waline(this.config.comment.waline);\n }\n if (this.config.comment.utterances) {\n const utterancesConfig = this.config.comment.utterances;\n const script = document.createElement('script');\n script.src = 'https://utteranc.es/client.js';\n script.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', this.isDark ? utterancesConfig.darkTheme : utterancesConfig.lightTheme);\n script.crossOrigin = 'anonymous';\n script.async = true;\n document.getElementById('utterances').appendChild(script);\n this._utterancesOnSwitchTheme = this._utterancesOnSwitchTheme || (() => {\n const message = {\n type: 'set-theme',\n theme: this.isDark ? utterancesConfig.darkTheme : utterancesConfig.lightTheme\n };\n document.querySelector('.utterances-frame')?.contentWindow.postMessage(message, 'https://utteranc.es');\n });\n this.switchThemeEventSet.add(this._utterancesOnSwitchTheme);\n return;\n }\n if (this.config.comment.twikoo) {\n const twikooConfig = this.config.comment.twikoo;\n if (twikooConfig.lightgallery) {\n twikooConfig.onCommentLoaded = () => {\n this.initCommentLightGallery('.tk-comments .tk-content', 'img:not(.tk-owo-emotion)');\n };\n }\n twikoo.init(twikooConfig);\n if (twikooConfig.commentCount) {\n // https://twikoo.js.org/api.html#get-comments-count\n twikoo\n .getCommentsCount({\n envId: twikooConfig.envId,\n region: twikooConfig.region,\n urls: [window.location.pathname],\n includeReply: false\n })\n .then(function (response) {\n const twikooCommentCount = document.getElementById('twikoo-comment-count');\n if (twikooCommentCount) twikooCommentCount.innerHTML = response[0].count;\n });\n }\n return;\n }\n if (this.config.comment.giscus) {\n const giscusConfig = this.config.comment.giscus;\n this._giscusOnSwitchTheme = this._giscusOnSwitchTheme || (() => {\n const message = { setConfig: { theme: this.isDark ? giscusConfig.darkTheme : giscusConfig.lightTheme }};\n document.querySelector('.giscus-frame')?.contentWindow.postMessage({ giscus: message }, 'https://giscus.app');\n });\n this.switchThemeEventSet.add(this._giscusOnSwitchTheme);\n const _this = this;\n _this.giscus2parentMsg = window.addEventListener('message', (event) => {\n const $script = document.querySelector('#giscus>script');\n if ($script){\n _this._giscusOnSwitchTheme();\n $script.parentElement.removeChild($script);\n }\n window.removeEventListener('message', _this.giscus2parentMsg);\n });\n return;\n }\n }\n\n initCookieconsent() {\n this.config.cookieconsent && cookieconsent.initialise(this.config.cookieconsent);\n }\n\n getSiteTime = () => {\n let now = new Date();\n let run = new Date(this.config.siteTime);\n let $runTimes = document.querySelector('.run-times');\n if (!this.util.isValidDate(run) || !$runTimes) {\n clearInterval(this.siteTime);\n $runTimes && $runTimes.parentNode.remove();\n return;\n }\n let runTime = (now - run) / 1000,\n days = Math.floor(runTime / 60 / 60 / 24),\n hours = Math.floor(runTime / 60 / 60 - 24 * days),\n minutes = Math.floor(runTime / 60 - 24 * 60 * days - 60 * hours),\n seconds = Math.floor((now - run) / 1000 - 24 * 60 * 60 * days - 60 * 60 * hours - 60 * minutes);\n $runTimes.innerHTML = `${days}, ${String(hours).padStart(2, 0)}:${String(minutes).padStart(2, 0)}:${String(seconds).padStart(2, 0)}`;\n }\n\n initSiteTime() {\n if (this.config.siteTime) {\n this.siteTime = setInterval(this.getSiteTime, 500);\n document.addEventListener('visibilitychange', () => {\n if (document.hidden) {\n return clearInterval(this.siteTime);\n }\n this.siteTime = setInterval(this.getSiteTime, 500);\n }, false);\n }\n }\n\n initServiceWorker() {\n if (this.config.enablePWA && 'serviceWorker' in navigator) {\n navigator.serviceWorker\n .register('/service-worker.min.js', { scope: '/' })\n .then(function (registration) {\n // console.log('Service Worker Registered');\n })\n .catch(function (error) {\n console.error('error: ', error);\n });\n navigator.serviceWorker.ready.then(function (registration) {\n // console.log('Service Worker Ready');\n });\n }\n }\n\n initWatermark() {\n this.config?.watermark?.enable &&\n new Watermark({\n content: this.config.watermark.content || '\"FixIt FixIt Theme',\n appendTo: this.config.watermark.appendto || '.wrapper>main',\n opacity: this.config.watermark.opacity,\n width: this.config.watermark.width,\n height: this.config.watermark.height,\n rowSpacing: this.config.watermark.rowspacing,\n colSpacing: this.config.watermark.colspacing,\n rotate: this.config.watermark.rotate,\n fontSize: this.config.watermark.fontsize,\n fontFamily: this.config.watermark.fontfamily\n });\n }\n\n initPangu() {\n this.config.enablePangu && pangu.autoSpacingPage();\n }\n\n onScroll() {\n const $headers = [];\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 const $viewComments = document.getElementById('view-comments');\n $viewComments.href = `#comments`;\n $viewComments.style.display = 'block';\n }\n const $fixedButtons = document.getElementById('fixed-buttons');\n const ACCURACY = 20,\n MINIMUM = 100;\n window.addEventListener('scroll', (event) => {\n if (this.disableScrollEvent) {\n event.preventDefault();\n this.disableScrollEvent = false;\n return;\n }\n document.getElementById('mask').click();\n this.newScrollTop = this.util.getScrollTop();\n const scroll = this.newScrollTop - this.oldScrollTop;\n const isMobile = this.util.isMobile();\n this.util.forEach($headers, ($header) => {\n if (scroll > ACCURACY) {\n $header.classList.remove('animate__fadeInDown');\n this.util.animateCSS($header, ['animate__fadeOutUp', 'animate__faster'], true);\n } else if (scroll < -ACCURACY) {\n $header.classList.remove('animate__fadeOutUp');\n this.util.animateCSS($header, ['animate__fadeInDown', 'animate__faster'], true);\n }\n });\n // whether to show b2t button\n if (this.newScrollTop > MINIMUM) {\n if (isMobile && scroll > ACCURACY) {\n $fixedButtons.classList.remove('animate__fadeIn');\n this.util.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 this.util.animateCSS($fixedButtons, ['animate__fadeIn', 'animate__faster'], true);\n }\n } else {\n if (!isMobile) {\n $fixedButtons.classList.remove('animate__fadeIn');\n this.util.animateCSS($fixedButtons, ['animate__fadeOut', 'animate__faster'], true);\n }\n $fixedButtons.style.display = 'none';\n }\n for (let event of this.scrollEventSet) event();\n this.oldScrollTop = this.newScrollTop;\n }, false);\n }\n\n onResize() {\n window.addEventListener('resize', () => {\n if (!this._resizeTimeout) {\n this._resizeTimeout = window.setTimeout(() => {\n this._resizeTimeout = null;\n for (let event of this.resizeEventSet) event();\n this.initToc();\n this.initMermaid();\n this.initSearch();\n document.getElementById('mask').click();\n }, 100);\n }\n }, false);\n }\n\n onClickMask() {\n document.getElementById('mask').addEventListener('click', () => {\n for (let event of this.clickMaskEventSet) event();\n document.body.classList.remove('blur');\n }, false);\n }\n\n init() {\n try {\n this.initSVGIcon();\n this.initTwemoji();\n this.initMenu();\n this.initSwitchTheme();\n this.initSearch();\n this.initDetails();\n this.initLightGallery();\n this.initHighlight();\n this.initTable();\n this.initHeaderLink();\n this.initMath();\n this.initMermaid();\n this.initEcharts();\n this.initTypeit();\n this.initMapbox();\n this.initCookieconsent();\n this.initSiteTime();\n this.initServiceWorker();\n this.initWatermark();\n this.initPangu();\n } catch (err) {\n console.error(err);\n }\n\n window.setTimeout(() => {\n this.initComment();\n this.initToc();\n\n this.onScroll();\n this.onResize();\n this.onClickMask();\n }, 100);\n }\n}\n\nconst themeInit = () => {\n const theme = new Theme();\n theme.init();\n};\n\nif (document.readyState !== 'loading') {\n themeInit();\n} else {\n document.addEventListener('DOMContentLoaded', themeInit, false);\n}\n"]} \ No newline at end of file diff --git a/assets/svg/icons/bilibili.svg b/assets/svg/icons/bilibili.svg deleted file mode 100644 index 457c7b01..00000000 --- a/assets/svg/icons/bilibili.svg +++ /dev/null @@ -1 +0,0 @@ -Bilibili icon \ No newline at end of file diff --git a/exampleSite/config.toml b/exampleSite/config.toml index 7e613189..6b7a12de 100644 --- a/exampleSite/config.toml +++ b/exampleSite/config.toml @@ -53,7 +53,7 @@ enableEmoji = true # Identifier of the parent menu item since v0.2.14 parent = "" # you can add extra information before the name (HTML format is supported), such as icons - pre = "" + pre = "" # you can add extra information after the name (HTML format is supported), such as icons post = "" name = "Posts" @@ -63,7 +63,7 @@ enableEmoji = true weight = 1 [[languages.en.menu.main]] identifier = "categories" - pre = "" + pre = "" post = "" name = "Categories" url = "/categories/" @@ -71,7 +71,7 @@ enableEmoji = true weight = 2 [[languages.en.menu.main]] identifier = "tags" - pre = "" + pre = "" post = "" name = "Tags" url = "/tags/" @@ -79,7 +79,7 @@ enableEmoji = true weight = 3 [[languages.en.menu.main]] identifier = "documentation" - pre = "" + pre = "" post = "" name = "Docs" url = "/categories/documentation/" @@ -87,7 +87,7 @@ enableEmoji = true weight = 4 [[languages.en.menu.main]] identifier = "tests" - pre = "" + pre = "" post = "" name = "Tests" url = "/tests/" @@ -97,7 +97,7 @@ enableEmoji = true draft = true [[languages.en.menu.main]] identifier = "friends" - pre = "" + pre = "" post = "" name = "Friends" url = "/friends/" @@ -105,7 +105,7 @@ enableEmoji = true weight = 6 [[languages.en.menu.main]] identifier = "about" - pre = "" + pre = "" post = "" name = "About" url = "/about/" @@ -113,7 +113,7 @@ enableEmoji = true weight = 7 [[languages.en.menu.main]] identifier = "github" - pre = "" + pre = "" post = "" name = "" url = "https://github.com/Lruihao/FixIt" @@ -289,7 +289,7 @@ enableEmoji = true # 父级菜单项的标识符 (identifier) since v0.2.14 parent = "" # 你可以在名称 (允许 HTML 格式) 之前添加其他信息, 例如图标 - pre = "" + pre = "" # 你可以在名称 (允许 HTML 格式) 之后添加其他信息, 例如图标 post = "" name = "所有文章" @@ -298,7 +298,7 @@ enableEmoji = true weight = 1 [[languages.zh-cn.menu.main]] identifier = "categories" - pre = "" + pre = "" post = "" name = "分类" url = "/categories/" @@ -306,7 +306,7 @@ enableEmoji = true weight = 2 [[languages.zh-cn.menu.main]] identifier = "tags" - pre = "" + pre = "" post = "" name = "标签" url = "/tags/" @@ -314,14 +314,14 @@ enableEmoji = true weight = 3 [[languages.zh-cn.menu.main]] identifier = "documentation" - pre = "" + pre = "" name = "文档" url = "/categories/documentation/" title = "主题文档" weight = 4 [[languages.zh-cn.menu.main]] identifier = "tests" - pre = "" + pre = "" post = "" name = "测试" url = "/tests/" @@ -331,7 +331,7 @@ enableEmoji = true draft = true [[languages.zh-cn.menu.main]] identifier = "friends" - pre = "" + pre = "" post = "" name = "友链" url = "/friends/" @@ -339,7 +339,7 @@ enableEmoji = true weight = 6 [[languages.zh-cn.menu.main]] identifier = "about" - pre = "" + pre = "" post = "" name = "关于" url = "/about/" @@ -347,7 +347,7 @@ enableEmoji = true weight = 7 [[languages.zh-cn.menu.main]] identifier = "github" - pre = "" + pre = "" post = "" name = "" url = "https://github.com/Lruihao/FixIt" diff --git a/exampleSite/content/about/index.en.md b/exampleSite/content/about/index.en.md index b54fb16f..4c291aa6 100644 --- a/exampleSite/content/about/index.en.md +++ b/exampleSite/content/about/index.en.md @@ -3,6 +3,7 @@ title: "About FixIt" date: 2019-08-02T11:04:49+08:00 draft: false comment: false +pageStyle: "wide" lightgallery: true @@ -29,67 +30,67 @@ math: #### Performance and SEO -* :(fas fa-rocket fa-fw): Optimized for **performance**: [99]/[100] on mobile and [100]/[100] on desktop in [Google PageSpeed Insights](https://developers.google.com/speed/pagespeed/insights) -* :(fab fa-searchengin fa-fw): Optimized SEO performance with a correct **SEO SCHEMA** based on JSON-LD -* :(fab fa-google fa-fw): **[Google Analytics](https://analytics.google.com/analytics)** supported -* :(far fa-chart-bar fa-fw): **[Fathom Analytics](https://usefathom.com/)** supported -* :(fas fa-search fa-fw): Search engine **verification** supported (Google, Bind, Yandex, Baidu, 360 and Sogou) -* :(fas fa-tachometer-alt fa-fw): **CDN** for third-party libraries supported -* :(fas fa-cloud-download-alt fa-fw): Automatically converted images with **Lazy Load** by [lazysizes](https://github.com/aFarkas/lazysizes) +* :(fa-solid fa-rocket fa-fw): Optimized for **performance**: [99]/[100] on mobile and [100]/[100] on desktop in [Google PageSpeed Insights](https://developers.google.com/speed/pagespeed/insights) +* :(fa-brands fa-searchengin fa-fw): Optimized SEO performance with a correct **SEO SCHEMA** based on JSON-LD +* :(fa-brands fa-google fa-fw): **[Google Analytics](https://analytics.google.com/analytics)** supported +* :(fa-regular fa-chart-bar fa-fw): **[Fathom Analytics](https://usefathom.com/)** supported +* :(fa-solid fa-search fa-fw): Search engine **verification** supported (Google, Bind, Yandex, Baidu, 360 and Sogou) +* :(fa-solid fa-tachometer-alt fa-fw): **CDN** for third-party libraries supported +* :(fa-solid fa-cloud-download-alt fa-fw): Automatically converted images with **Lazy Load** by [lazysizes](https://github.com/aFarkas/lazysizes) #### Appearance and Layout -* [:(fas fa-desktop):]/[:(fas fa-mobile):] **Responsive** layout -* [:(fas fa-sun):]/[:(fas fa-moon):] **[Light]/[Dark]** mode -* :(fas fa-layer-group fa-fw): Globally consistent **design language** -* :(fas fa-ellipsis-h fa-fw): **Pagination** supported -* :(far fa-list-alt fa-fw): Easy-to-use and self-expanding **table of contents** -* :(fas fa-language fa-fw): **Multilanguage** supported and i18n ready -* :(fab fa-css3-alt fa-fw): Beautiful **CSS animation** +* [:(fa-solid fa-desktop):]/[:(fa-solid fa-mobile):] **Responsive** layout +* [:(fa-solid fa-sun):]/[:(fa-solid fa-moon):] **[Light]/[Dark]** mode +* :(fa-solid fa-layer-group fa-fw): Globally consistent **design language** +* :(fa-solid fa-ellipsis-h fa-fw): **Pagination** supported +* :(fa-regular fa-list-alt fa-fw): Easy-to-use and self-expanding **table of contents** +* :(fa-solid fa-language fa-fw): **Multilanguage** supported and i18n ready +* :(fa-brands fa-css3-alt fa-fw): Beautiful **CSS animation** #### Social and Comment Systems -* :(far fa-user fa-fw): **Gravatar** supported by [Gravatar](https://gravatar.com) -* :(fas fa-user-circle fa-fw): Local **Avatar** supported -* :(far fa-id-card fa-fw): Up to **73** social links supported -* :(fas fa-share-square fa-fw): Up to **28** share sites supported -* :(far fa-comment fa-fw): **Disqus** comment system supported by [Disqus](https://disqus.com) -* :(far fa-comment-dots fa-fw): **Gitalk** comment system supported by [Gitalk](https://github.com/gitalk/gitalk) -* :(far fa-comment-alt fa-fw): **Valine** comment system supported by [Valine](https://valine.js.org/) -* :(far fa-comment-alt fa-fw): **Waline** comment system supported by [Waline](https://waline.js.org/) -* :(far fa-comments fa-fw): **Facebook comments** system supported by [Facebook](https://developers.facebook.com/docs/plugins/comments/) -* :(fas fa-comment fa-fw): **Telegram comments** system supported by [Comments](https://comments.app/) -* :(fas fa-comment-dots fa-fw): **Commento** comment system supported by [Commento](https://commento.io/) -* :(far fa-comment-alt fa-fw): **Utterances** comment system supported by [Utterances](https://utteranc.es/) -* :(far fa-comment-alt fa-fw): **Artalk** comment system supported by [Artalk](https://artalk.js.org/) -* :(fas fa-comment-alt fa-fw): **Twikoo** comment system supported by [Twikoo](https://twikoo.js.org/) +* :(fa-regular fa-user fa-fw): **Gravatar** supported by [Gravatar](https://gravatar.com) +* :(fa-solid fa-user-circle fa-fw): Local **Avatar** supported +* :(fa-regular fa-id-card fa-fw): Up to **73** social links supported +* :(fa-solid fa-share-square fa-fw): Up to **28** share sites supported +* :(fa-regular fa-comment fa-fw): **Disqus** comment system supported by [Disqus](https://disqus.com) +* :(fa-regular fa-comment-dots fa-fw): **Gitalk** comment system supported by [Gitalk](https://github.com/gitalk/gitalk) +* :(fa-regular fa-comment-alt fa-fw): **Valine** comment system supported by [Valine](https://valine.js.org/) +* :(fa-regular fa-comment-alt fa-fw): **Waline** comment system supported by [Waline](https://waline.js.org/) +* :(fa-regular fa-comments fa-fw): **Facebook comments** system supported by [Facebook](https://developers.facebook.com/docs/plugins/comments/) +* :(fa-solid fa-comment fa-fw): **Telegram comments** system supported by [Comments](https://comments.app/) +* :(fa-solid fa-comment-dots fa-fw): **Commento** comment system supported by [Commento](https://commento.io/) +* :(fa-regular fa-comment-alt fa-fw): **Utterances** comment system supported by [Utterances](https://utteranc.es/) +* :(fa-regular fa-comment-alt fa-fw): **Artalk** comment system supported by [Artalk](https://artalk.js.org/) +* :(fa-solid fa-comment-alt fa-fw): **Twikoo** comment system supported by [Twikoo](https://twikoo.js.org/) #### Extended Features -* :(fas fa-search fa-fw): **Search** supported by [Lunr.js](https://lunrjs.com/) or [algolia](https://www.algolia.com/) -* :(far fa-grin-tongue-wink fa-fw): **Twemoji** supported -* :(fas fa-code fa-fw): Automatically **highlighting** code -* :(far fa-copy fa-fw): **Copy code** to clipboard with one click -* :(far fa-images fa-fw): **Images gallery** supported by [lightgallery.js](https://github.com/sachinchoolur/lightgallery.js) -* :(fab fa-font-awesome fa-fw): Extended Markdown syntax for **[Font Awesome](https://fontawesome.com/) icons** -* :(far fa-sticky-note fa-fw): Extended Markdown syntax for **ruby annotation** -* :(fas fa-percentage fa-fw): Extended Markdown syntax for **fraction** -* :(fas fa-square-root-alt fa-fw): **Mathematical formula** supported by [$ \KaTeX $](https://katex.org/) -* :(fas fa-project-diagram fa-fw): **Diagrams** shortcode supported by [mermaid](https://github.com/knsv/mermaid) -* :(fas fa-chart-pie fa-fw): **Interactive data visualization** shortcode supported by [ECharts](https://echarts.apache.org/) -* :(fas fa-map-marked-alt fa-fw): **Mapbox** shortcode supported by [Mapbox GL JS](https://docs.mapbox.com/mapbox-gl-js) -* :(fas fa-music fa-fw): **Music player** shortcode supported by [APlayer](https://github.com/MoePlayer/APlayer) and [MetingJS](https://github.com/metowolf/MetingJS) -* :(fas fa-video fa-fw): **Bilibili player** shortcode -* :(far fa-bell fa-fw): Kinds of **admonitions** shortcode -* :(fas fa-align-left fa-fw): **Custom style** shortcode -* :(fab fa-js-square fa-fw): **Custom script** shortcode -* :(fas fa-i-cursor fa-fw): **Animated typing** supported by [TypeIt](https://typeitjs.com/) -* :(fas fa-cookie-bite fa-fw): **Cookie consent banner** supported by [cookieconsent](https://github.com/osano/cookieconsent) -* :(fas fa-desktop fa-fw): **PWA (Progressive Web App)** supported -* :(fas fa-signature fa-fw): **Web Watermark** supported by [cell-watermark](https://github.com/Lruihao/watermark) -* :(fas fa-language fa-fw): **Chinese typesetting** supported by [pangu.js](https://github.com/vinta/pangu.js) -* :(fas fa-link fa-fw): **Card type** link shortcode -* :(fas fa-users fa-fw): **Friends** page embedded template +* :(fa-solid fa-search fa-fw): **Search** supported by [Lunr.js](https://lunrjs.com/) or [algolia](https://www.algolia.com/) +* :(fa-regular fa-grin-tongue-wink fa-fw): **Twemoji** supported +* :(fa-solid fa-code fa-fw): Automatically **highlighting** code +* :(fa-regular fa-copy fa-fw): **Copy code** to clipboard with one click +* :(fa-regular fa-images fa-fw): **Images gallery** supported by [lightgallery.js](https://github.com/sachinchoolur/lightgallery.js) +* :(fa-brands fa-font-awesome fa-fw): Extended Markdown syntax for **[Font Awesome](https://fontawesome.com/) icons** +* :(fa-regular fa-sticky-note fa-fw): Extended Markdown syntax for **ruby annotation** +* :(fa-solid fa-percentage fa-fw): Extended Markdown syntax for **fraction** +* :(fa-solid fa-square-root-alt fa-fw): **Mathematical formula** supported by [$ \KaTeX $](https://katex.org/) +* :(fa-solid fa-project-diagram fa-fw): **Diagrams** shortcode supported by [mermaid](https://github.com/knsv/mermaid) +* :(fa-solid fa-chart-pie fa-fw): **Interactive data visualization** shortcode supported by [ECharts](https://echarts.apache.org/) +* :(fa-solid fa-map-marked-alt fa-fw): **Mapbox** shortcode supported by [Mapbox GL JS](https://docs.mapbox.com/mapbox-gl-js) +* :(fa-solid fa-music fa-fw): **Music player** shortcode supported by [APlayer](https://github.com/MoePlayer/APlayer) and [MetingJS](https://github.com/metowolf/MetingJS) +* :(fa-solid fa-video fa-fw): **Bilibili player** shortcode +* :(fa-regular fa-bell fa-fw): Kinds of **admonitions** shortcode +* :(fa-solid fa-align-left fa-fw): **Custom style** shortcode +* :(fa-brands fa-js-square fa-fw): **Custom script** shortcode +* :(fa-solid fa-i-cursor fa-fw): **Animated typing** supported by [TypeIt](https://typeitjs.com/) +* :(fa-solid fa-cookie-bite fa-fw): **Cookie consent banner** supported by [cookieconsent](https://github.com/osano/cookieconsent) +* :(fa-solid fa-desktop fa-fw): **PWA (Progressive Web App)** supported +* :(fa-solid fa-signature fa-fw): **Web Watermark** supported by [cell-watermark](https://github.com/Lruihao/watermark) +* :(fa-solid fa-language fa-fw): **Chinese typesetting** supported by [pangu.js](https://github.com/vinta/pangu.js) +* :(fa-solid fa-link fa-fw): **Card type** link shortcode +* :(fa-solid fa-users fa-fw): **Friends** page embedded template * ... ### License diff --git a/exampleSite/content/about/index.zh-cn.md b/exampleSite/content/about/index.zh-cn.md index 7fc8b739..c64212a1 100644 --- a/exampleSite/content/about/index.zh-cn.md +++ b/exampleSite/content/about/index.zh-cn.md @@ -3,6 +3,7 @@ title: "关于 FixIt" date: 2019-08-02T11:04:49+08:00 draft: false comment: false +pageStyle: "wide" lightgallery: true @@ -29,67 +30,67 @@ math: #### 性能和 SEO -* :(fas fa-rocket fa-fw): **性能**优化:在 [Google PageSpeed Insights](https://developers.google.com/speed/pagespeed/insights) 中, [99]/[100] 的移动设备得分和 [100]/[100] 的桌面设备得分 -* :(fab fa-searchengin fa-fw): 使用基于 JSON-LD 格式 的 **SEO SCHEMA** 文件进行 SEO 优化 -* :(fab fa-google fa-fw): 支持 **[Google Analytics](https://analytics.google.com/analytics)** -* :(far fa-chart-bar fa-fw): 支持 **[Fathom Analytics](https://usefathom.com/)** -* :(fas fa-search fa-fw): 支持搜索引擎的**网站验证** (Google, Bind, Yandex, Baidu, 360 and Sogou) -* :(fas fa-tachometer-alt fa-fw): 支持所有第三方库的 **CDN** -* :(fas fa-cloud-download-alt fa-fw): 基于 [lazysizes](https://github.com/aFarkas/lazysizes) 自动转换图片为**懒加载** +* :(fa-solid fa-rocket fa-fw): **性能**优化:在 [Google PageSpeed Insights](https://developers.google.com/speed/pagespeed/insights) 中, [99]/[100] 的移动设备得分和 [100]/[100] 的桌面设备得分 +* :(fa-brands fa-searchengin fa-fw): 使用基于 JSON-LD 格式 的 **SEO SCHEMA** 文件进行 SEO 优化 +* :(fa-brands fa-google fa-fw): 支持 **[Google Analytics](https://analytics.google.com/analytics)** +* :(fa-regular fa-chart-bar fa-fw): 支持 **[Fathom Analytics](https://usefathom.com/)** +* :(fa-solid fa-search fa-fw): 支持搜索引擎的**网站验证** (Google, Bind, Yandex, Baidu, 360 and Sogou) +* :(fa-solid fa-tachometer-alt fa-fw): 支持所有第三方库的 **CDN** +* :(fa-solid fa-cloud-download-alt fa-fw): 基于 [lazysizes](https://github.com/aFarkas/lazysizes) 自动转换图片为**懒加载** #### 外观和布局 -* [:(fas fa-desktop):]/[:(fas fa-mobile):] **响应式**布局 -* [:(fas fa-sun):]/[:(fas fa-moon):] **[浅色]/[深色]** 主题模式 -* :(fas fa-layer-group fa-fw): 全局一致的**设计语言** -* :(fas fa-ellipsis-h fa-fw): 支持**分页** -* :(far fa-list-alt fa-fw): 易用和自动展开的**文章目录** -* :(fas fa-language fa-fw): 支持**多语言**和国际化 -* :(fab fa-css3-alt fa-fw): 美观的 **CSS 动画** +* [:(fa-solid fa-desktop):]/[:(fa-solid fa-mobile):] **响应式**布局 +* [:(fa-solid fa-sun):]/[:(fa-solid fa-moon):] **[浅色]/[深色]** 主题模式 +* :(fa-solid fa-layer-group fa-fw): 全局一致的**设计语言** +* :(fa-solid fa-ellipsis-h fa-fw): 支持**分页** +* :(fa-regular fa-list-alt fa-fw): 易用和自动展开的**文章目录** +* :(fa-solid fa-language fa-fw): 支持**多语言**和国际化 +* :(fa-brands fa-css3-alt fa-fw): 美观的 **CSS 动画** #### 社交和评论系统 -* :(far fa-user fa-fw): 支持 **[Gravatar](https://gravatar.com)** 头像 -* :(fas fa-user-circle fa-fw): 支持本地**头像** -* :(far fa-id-card fa-fw): 支持多达 **73** 种社交链接 -* :(fas fa-share-square fa-fw): 支持多达 **28** 种网站分享 -* :(far fa-comment fa-fw): 支持 **[Disqus](https://disqus.com)** 评论系统 -* :(far fa-comment-dots fa-fw): 支持 **[Gitalk](https://github.com/gitalk/gitalk)** 评论系统 -* :(far fa-comment-alt fa-fw): 支持 **[Valine](https://valine.js.org/)** 评论系统 -* :(far fa-comment-alt fa-fw): 支持 **[Waline](https://waline.js.org/)** 评论系统 -* :(far fa-comments fa-fw): 支持 **[Facebook](https://developers.facebook.com/docs/plugins/comments/) 评论**系统 -* :(fas fa-comment fa-fw): 支持 **[Telegram comments](https://comments.app/) 评论**系统 -* :(fas fa-comment-dots fa-fw): 支持 **[Commento](https://commento.io/)** 评论系统 -* :(far fa-comment-alt fa-fw): 支持 **[Utterances](https://utteranc.es/)** 评论系统 -* :(far fa-comment-alt fa-fw): 支持 **[Artalk](https://artalk.js.org/)** 评论系统 -* :(far fa-comment-alt fa-fw): 支持 **[Twikoo](https://twikoo.js.org/)** 评论系统 +* :(fa-regular fa-user fa-fw): 支持 **[Gravatar](https://gravatar.com)** 头像 +* :(fa-solid fa-user-circle fa-fw): 支持本地**头像** +* :(fa-regular fa-id-card fa-fw): 支持多达 **73** 种社交链接 +* :(fa-solid fa-share-square fa-fw): 支持多达 **28** 种网站分享 +* :(fa-regular fa-comment fa-fw): 支持 **[Disqus](https://disqus.com)** 评论系统 +* :(fa-regular fa-comment-dots fa-fw): 支持 **[Gitalk](https://github.com/gitalk/gitalk)** 评论系统 +* :(fa-regular fa-comment-alt fa-fw): 支持 **[Valine](https://valine.js.org/)** 评论系统 +* :(fa-regular fa-comment-alt fa-fw): 支持 **[Waline](https://waline.js.org/)** 评论系统 +* :(fa-regular fa-comments fa-fw): 支持 **[Facebook](https://developers.facebook.com/docs/plugins/comments/) 评论**系统 +* :(fa-solid fa-comment fa-fw): 支持 **[Telegram comments](https://comments.app/) 评论**系统 +* :(fa-solid fa-comment-dots fa-fw): 支持 **[Commento](https://commento.io/)** 评论系统 +* :(fa-regular fa-comment-alt fa-fw): 支持 **[Utterances](https://utteranc.es/)** 评论系统 +* :(fa-regular fa-comment-alt fa-fw): 支持 **[Artalk](https://artalk.js.org/)** 评论系统 +* :(fa-regular fa-comment-alt fa-fw): 支持 **[Twikoo](https://twikoo.js.org/)** 评论系统 #### 扩展功能 -* :(fas fa-search fa-fw): 支持基于 [Lunr.js](https://lunrjs.com/) 或 [algolia](https://www.algolia.com/) 的**搜索** -* :(far fa-grin-tongue-wink fa-fw): 支持 **Twemoji** -* :(fas fa-code fa-fw): 支持**代码高亮** -* :(far fa-copy fa-fw): 一键**复制代码**到剪贴板 -* :(far fa-images fa-fw): 支持基于 [lightgallery.js](https://github.com/sachinchoolur/lightgallery.js) 的**图片画廊** -* :(fab fa-font-awesome fa-fw): 支持 **[Font Awesome](https://fontawesome.com/) 图标**的扩展 Markdown 语法 -* :(far fa-sticky-note fa-fw): 支持**上标注释**的扩展 Markdown 语法 -* :(fas fa-percentage fa-fw): 支持**分数**的扩展 Markdown 语法 -* :(fas fa-square-root-alt fa-fw): 支持基于 [$ \KaTeX $](https://katex.org/) 的**数学公式** -* :(fas fa-project-diagram fa-fw): 支持基于 [mermaid](https://github.com/knsv/mermaid) 的**图表** shortcode -* :(fas fa-chart-pie fa-fw): 支持基于 [ECharts](https://echarts.apache.org/) 的**交互式数据可视化** shortcode -* :(fas fa-map-marked-alt fa-fw): 支持基于 [Mapbox GL JS](https://docs.mapbox.com/mapbox-gl-js) 的 **Mapbox** shortcode -* :(fas fa-music fa-fw): 支持基于 [APlayer](https://github.com/MoePlayer/APlayer) 和 [MetingJS](https://github.com/metowolf/MetingJS) 的**音乐播放器** shortcode -* :(fas fa-video fa-fw): 支持 **Bilibili 视频** shortcode -* :(far fa-bell fa-fw): 支持多种**注释**的 shortcode -* :(fas fa-align-left fa-fw): 支持**自定义样式**的 shortcode -* :(fab fa-js-square fa-fw): 支持**自定义脚本**的 shortcode -* :(fas fa-i-cursor fa-fw): 支持基于 [TypeIt](https://typeitjs.com/) 的**打字动画** shortcode -* :(fas fa-cookie-bite fa-fw): 支持基于 [cookieconsent](https://github.com/osano/cookieconsent) 的 **Cookie 许可横幅** -* :(fas fa-desktop fa-fw): 支持**渐进式网页应用** -* :(fas fa-signature fa-fw): 支持基于 [cell-watermark](https://github.com/Lruihao/watermark) 的**网页水印** -* :(fas fa-language fa-fw): 支持基于 [pangu.js](https://github.com/vinta/pangu.js) 的**中文排版** -* :(fas fa-link fa-fw): 支持**卡片式链接**的 shortcode -* :(fas fa-users fa-fw): 支持**友情链接**的页面模板 +* :(fa-solid fa-search fa-fw): 支持基于 [Lunr.js](https://lunrjs.com/) 或 [algolia](https://www.algolia.com/) 的**搜索** +* :(fa-regular fa-grin-tongue-wink fa-fw): 支持 **Twemoji** +* :(fa-solid fa-code fa-fw): 支持**代码高亮** +* :(fa-regular fa-copy fa-fw): 一键**复制代码**到剪贴板 +* :(fa-regular fa-images fa-fw): 支持基于 [lightgallery.js](https://github.com/sachinchoolur/lightgallery.js) 的**图片画廊** +* :(fa-brands fa-font-awesome fa-fw): 支持 **[Font Awesome](https://fontawesome.com/) 图标**的扩展 Markdown 语法 +* :(fa-regular fa-sticky-note fa-fw): 支持**上标注释**的扩展 Markdown 语法 +* :(fa-solid fa-percentage fa-fw): 支持**分数**的扩展 Markdown 语法 +* :(fa-solid fa-square-root-alt fa-fw): 支持基于 [$ \KaTeX $](https://katex.org/) 的**数学公式** +* :(fa-solid fa-project-diagram fa-fw): 支持基于 [mermaid](https://github.com/knsv/mermaid) 的**图表** shortcode +* :(fa-solid fa-chart-pie fa-fw): 支持基于 [ECharts](https://echarts.apache.org/) 的**交互式数据可视化** shortcode +* :(fa-solid fa-map-marked-alt fa-fw): 支持基于 [Mapbox GL JS](https://docs.mapbox.com/mapbox-gl-js) 的 **Mapbox** shortcode +* :(fa-solid fa-music fa-fw): 支持基于 [APlayer](https://github.com/MoePlayer/APlayer) 和 [MetingJS](https://github.com/metowolf/MetingJS) 的**音乐播放器** shortcode +* :(fa-solid fa-video fa-fw): 支持 **Bilibili 视频** shortcode +* :(fa-regular fa-bell fa-fw): 支持多种**注释**的 shortcode +* :(fa-solid fa-align-left fa-fw): 支持**自定义样式**的 shortcode +* :(fa-brands fa-js-square fa-fw): 支持**自定义脚本**的 shortcode +* :(fa-solid fa-i-cursor fa-fw): 支持基于 [TypeIt](https://typeitjs.com/) 的**打字动画** shortcode +* :(fa-solid fa-cookie-bite fa-fw): 支持基于 [cookieconsent](https://github.com/osano/cookieconsent) 的 **Cookie 许可横幅** +* :(fa-solid fa-desktop fa-fw): 支持**渐进式网页应用** +* :(fa-solid fa-signature fa-fw): 支持基于 [cell-watermark](https://github.com/Lruihao/watermark) 的**网页水印** +* :(fa-solid fa-language fa-fw): 支持基于 [pangu.js](https://github.com/vinta/pangu.js) 的**中文排版** +* :(fa-solid fa-link fa-fw): 支持**卡片式链接**的 shortcode +* :(fa-solid fa-users fa-fw): 支持**友情链接**的页面模板 * ... ### 许可协议 diff --git a/exampleSite/content/friends/index.en.md b/exampleSite/content/friends/index.en.md index 6014d0d3..a21140a5 100644 --- a/exampleSite/content/friends/index.en.md +++ b/exampleSite/content/friends/index.en.md @@ -12,7 +12,7 @@ comment: true --- {{< admonition tip "Add your FixIt site" >}} -You could add your FixIt site to this page via [making a PR :(fas fa-code-branch fa-fw):](https://github.com/Lruihao/FixIt/pulls). (e.g. [#111](https://github.com/Lruihao/FixIt/pull/111)) +You could add your FixIt site to this page via [making a PR :(fa-solid fa-code-branch fa-fw):](https://github.com/Lruihao/FixIt/pulls). (e.g. [#111](https://github.com/Lruihao/FixIt/pull/111)) -> :(fas fa-exclamation-triangle): *Website failure, stop maintenance and improper content may be unlinked!* +> :(fa-solid fa-exclamation-triangle): *Website failure, stop maintenance and improper content may be unlinked!* {{< /admonition >}} diff --git a/exampleSite/content/friends/index.zh-cn.md b/exampleSite/content/friends/index.zh-cn.md index 5dcba49c..248829eb 100644 --- a/exampleSite/content/friends/index.zh-cn.md +++ b/exampleSite/content/friends/index.zh-cn.md @@ -12,7 +12,7 @@ comment: true --- {{< admonition tip "添加您的 FixIt 网站" >}} -您可以通过 [创建 PR :(fas fa-code-branch fa-fw):](https://github.com/Lruihao/FixIt/pulls) 将您的 FixIt 网站添加到此页面。(例如:[#111](https://github.com/Lruihao/FixIt/pull/111)) +您可以通过 [创建 PR :(fa-solid fa-code-branch fa-fw):](https://github.com/Lruihao/FixIt/pulls) 将您的 FixIt 网站添加到此页面。(例如:[#111](https://github.com/Lruihao/FixIt/pull/111)) -> :(fas fa-exclamation-triangle): *网站失效、停止维护、不当内容都可能被取消链接!* +> :(fa-solid fa-exclamation-triangle): *网站失效、停止维护、不当内容都可能被取消链接!* {{< /admonition >}} diff --git a/exampleSite/content/posts/basic-markdown-syntax/index.en.md b/exampleSite/content/posts/basic-markdown-syntax/index.en.md index 3b2a6816..f04bd547 100644 --- a/exampleSite/content/posts/basic-markdown-syntax/index.en.md +++ b/exampleSite/content/posts/basic-markdown-syntax/index.en.md @@ -53,7 +53,7 @@ John Gruber, the author of Markdown, puts it like this: Without further delay, let us go over the main elements of Markdown and what the resulting HTML looks like! {{< admonition tip >}} -:(far fa-bookmark fa-fw): Bookmark this page for easy future reference! +:(fa-regular fa-bookmark fa-fw): Bookmark this page for easy future reference! {{< /admonition >}} ## 1 Headings diff --git a/exampleSite/content/posts/basic-markdown-syntax/index.zh-cn.md b/exampleSite/content/posts/basic-markdown-syntax/index.zh-cn.md index 0db66949..4a0d6abe 100644 --- a/exampleSite/content/posts/basic-markdown-syntax/index.zh-cn.md +++ b/exampleSite/content/posts/basic-markdown-syntax/index.zh-cn.md @@ -53,7 +53,7 @@ John Gruber, Markdown 的作者如是说: 话不多说,我们来回顾一下 Markdown 的主要语法以及生成的 HTML 样式! {{< admonition tip >}} -:(far fa-bookmark fa-fw): 将此页保存为书签,以备将来参考! +:(fa-regular fa-bookmark fa-fw): 将此页保存为书签,以备将来参考! {{< /admonition >}} ## 1 标题 diff --git a/exampleSite/content/posts/pwa-support/index.en.md b/exampleSite/content/posts/pwa-support/index.en.md index 0068b49e..09936122 100644 --- a/exampleSite/content/posts/pwa-support/index.en.md +++ b/exampleSite/content/posts/pwa-support/index.en.md @@ -22,7 +22,7 @@ menu: name: "PWA Support" title: "Guide to setup PWA in FixIt." parent: "documentation" - pre: "" + pre: "" --- Find out how to turn your FixIt site into a Progressive Web App. diff --git a/exampleSite/content/posts/pwa-support/index.zh-cn.md b/exampleSite/content/posts/pwa-support/index.zh-cn.md index f376a15c..404c3749 100644 --- a/exampleSite/content/posts/pwa-support/index.zh-cn.md +++ b/exampleSite/content/posts/pwa-support/index.zh-cn.md @@ -21,7 +21,7 @@ menu: main: title: "在 FixIt 中设置 PWA 的指南。" parent: "documentation" - pre: "" + pre: "" --- 了解如何在 FixIt 主题中配置渐进式网络应用程序 (PWA)。 diff --git a/exampleSite/content/posts/theme-documentation-basics/index.en.md b/exampleSite/content/posts/theme-documentation-basics/index.en.md index 8edea764..7500ea58 100644 --- a/exampleSite/content/posts/theme-documentation-basics/index.en.md +++ b/exampleSite/content/posts/theme-documentation-basics/index.en.md @@ -21,7 +21,7 @@ menu: name: "Basics" title: "Discover what the Hugo - FixIt theme is all about and the core-concepts behind it." parent: "documentation" - pre: "" + pre: "" --- Discover what the Hugo - **FixIt** theme is all about and the core-concepts behind it. @@ -32,14 +32,14 @@ Discover what the Hugo - **FixIt** theme is all about and the core-concepts behi Thanks to the simplicity of Hugo, [Hugo](https://gohugo.io/) is the only dependency of this theme. -Just install latest version of [:(far fa-file-archive fa-fw): Hugo (> 0.62.0)](https://gohugo.io/getting-started/installing/) for your OS (**Windows**, **Linux**, **macOS**). +Just install latest version of [:(fa-regular fa-file-archive fa-fw): Hugo (> 0.62.0)](https://gohugo.io/getting-started/installing/) for your OS (**Windows**, **Linux**, **macOS**). {{< admonition note "Why not support earlier versions of Hugo?" >}} Since [Markdown Render Hooks](https://gohugo.io/getting-started/configuration-markup#markdown-render-hooks) was introduced in the [Hugo Christmas Edition](https://gohugo.io/news/0.62.0-relnotes/), this theme only supports Hugo versions above **0.62.0**. {{< /admonition >}} {{< admonition tip "Hugo extended version is recommended" >}} -Since some features of this theme need to processes :(fab fa-sass fa-fw): SCSS to :(fab fa-css3 fa-fw): CSS, it is recommended to use Hugo **extended** version for better experience. +Since some features of this theme need to processes :(fa-brands fa-sass fa-fw): SCSS to :(fa-brands fa-css3 fa-fw): CSS, it is recommended to use Hugo **extended** version for better experience. {{< /admonition >}} ## 2 Installation @@ -59,7 +59,7 @@ cd my_website The **FixIt** theme’s repository is: . -You can download the [latest release :(far fa-file-archive fa-fw): .zip file](https://github.com/Lruihao/FixIt/releases) of the theme and extract it in the `themes` directory. +You can download the [latest release :(fa-regular fa-file-archive fa-fw): .zip file](https://github.com/Lruihao/FixIt/releases) of the theme and extract it in the `themes` directory. Alternatively, clone this repository to the `themes` directory: @@ -196,7 +196,7 @@ Alternatively, you can use [AWS Amplify](https://gohugo.io/hosting-and-deploymen In addition to [Hugo global configuration](https://gohugo.io/overview/configuration/) and [menu configuration](#basic-configuration), **FixIt** lets you define the following parameters in your site configuration (here is a `config.toml`, whose values are default). -Please open the code block below to view the complete sample configuration :(far fa-hand-point-down fa-fw):: +Please open the code block below to view the complete sample configuration :(fa-regular fa-hand-point-down fa-fw):: ```toml [params] @@ -1134,7 +1134,7 @@ menu: name: "Basics" title: "Discover what the Hugo - FixIt theme is all about and the core-concepts behind it." parent: "documentation" - pre: "" + pre: "" --- ... ``` @@ -1151,19 +1151,19 @@ menu: | Language | Hugo Code | HTML `lang` Attribute | Theme Docs | Lunr.js Support | |:-------------------- |:---------:|:---------------------:|:-----------------------------:|:-----------------------------:| -| English | `en` | `en` | :(far fa-check-square fa-fw): | :(far fa-check-square fa-fw): | -| Simplified Chinese | `zh-cn` | `zh-CN` | :(far fa-check-square fa-fw): | :(far fa-check-square fa-fw): | -| French | `fr` | `fr` | :(far fa-square fa-fw): | :(far fa-check-square fa-fw): | -| Polish | `pl` | `pl` | :(far fa-square fa-fw): | :(far fa-square fa-fw): | -| Brazilian Portuguese | `pt-br` | `pt-BR` | :(far fa-square fa-fw): | :(far fa-check-square fa-fw): | -| Italian | `it` | `it` | :(far fa-square fa-fw): | :(far fa-check-square fa-fw): | -| Spanish | `es` | `es` | :(far fa-square fa-fw): | :(far fa-check-square fa-fw): | -| German | `de` | `de` | :(far fa-square fa-fw): | :(far fa-check-square fa-fw): | -| Serbian | `sr` | `sr` | :(far fa-square fa-fw): | :(far fa-square fa-fw): | -| Russian | `ru` | `ru` | :(far fa-square fa-fw): | :(far fa-check-square fa-fw): | -| Romanian | `ro` | `ro` | :(far fa-square fa-fw): | :(far fa-check-square fa-fw): | -| Vietnamese | `vi` | `vi` | :(far fa-square fa-fw): | :(far fa-check-square fa-fw): | -| Traditional Chinese | `zh-tw` | `zh-TW` | :(far fa-square fa-fw): | :(far fa-check-square fa-fw): | +| English | `en` | `en` | :(fa-regular fa-check-square fa-fw): | :(fa-regular fa-check-square fa-fw): | +| Simplified Chinese | `zh-cn` | `zh-CN` | :(fa-regular fa-check-square fa-fw): | :(fa-regular fa-check-square fa-fw): | +| French | `fr` | `fr` | :(fa-regular fa-square fa-fw): | :(fa-regular fa-check-square fa-fw): | +| Polish | `pl` | `pl` | :(fa-regular fa-square fa-fw): | :(fa-regular fa-square fa-fw): | +| Brazilian Portuguese | `pt-br` | `pt-BR` | :(fa-regular fa-square fa-fw): | :(fa-regular fa-check-square fa-fw): | +| Italian | `it` | `it` | :(fa-regular fa-square fa-fw): | :(fa-regular fa-check-square fa-fw): | +| Spanish | `es` | `es` | :(fa-regular fa-square fa-fw): | :(fa-regular fa-check-square fa-fw): | +| German | `de` | `de` | :(fa-regular fa-square fa-fw): | :(fa-regular fa-check-square fa-fw): | +| Serbian | `sr` | `sr` | :(fa-regular fa-square fa-fw): | :(fa-regular fa-square fa-fw): | +| Russian | `ru` | `ru` | :(fa-regular fa-square fa-fw): | :(fa-regular fa-check-square fa-fw): | +| Romanian | `ro` | `ro` | :(fa-regular fa-square fa-fw): | :(fa-regular fa-check-square fa-fw): | +| Vietnamese | `vi` | `vi` | :(fa-regular fa-square fa-fw): | :(fa-regular fa-check-square fa-fw): | +| Traditional Chinese | `zh-tw` | `zh-TW` | :(fa-regular fa-square fa-fw): | :(fa-regular fa-check-square fa-fw): | ### 4.2 Basic Configuration @@ -1292,7 +1292,7 @@ Translations strings are used for common default values used in the theme. Trans To override these values, create a new file in your local i18n folder `i18n/.toml` and inspire yourself from `themes/FixIt/i18n/en.toml`. -By the way, as these translations could be used by other people, please take the time to propose a translation by [ making a PR :(fas fa-code-branch fa-fw):](https://github.com/Lruihao/FixIt/pulls) to the theme! +By the way, as these translations could be used by other people, please take the time to propose a translation by [making a PR :(fa-solid fa-code-branch fa-fw):](https://github.com/Lruihao/FixIt/pulls) to the theme! ## 5 Search diff --git a/exampleSite/content/posts/theme-documentation-basics/index.zh-cn.md b/exampleSite/content/posts/theme-documentation-basics/index.zh-cn.md index ed6bde52..6591f4cb 100644 --- a/exampleSite/content/posts/theme-documentation-basics/index.zh-cn.md +++ b/exampleSite/content/posts/theme-documentation-basics/index.zh-cn.md @@ -20,7 +20,7 @@ menu: main: title: "探索 Hugo - FixIt 主题的全部内容和背后的核心概念。" parent: "documentation" - pre: "" + pre: "" --- 探索 Hugo - **FixIt** 主题的全部内容和背后的核心概念。 @@ -31,14 +31,14 @@ menu: 由于 Hugo 提供的便利性,[Hugo](https://gohugo.io/) 本身是这个主题唯一的依赖。 -直接安装满足你操作系统 (**Windows**, **Linux**, **macOS**) 的最新版本 [:(far fa-file-archive fa-fw): Hugo (> 0.62.0)](https://gohugo.io/getting-started/installing/). +直接安装满足你操作系统 (**Windows**, **Linux**, **macOS**) 的最新版本 [:(fa-regular fa-file-archive fa-fw): Hugo (> 0.62.0)](https://gohugo.io/getting-started/installing/). {{< admonition note "为什么不支持早期版本的 Hugo?" >}} 由于 [Markdown 渲染钩子函数](https://gohugo.io/getting-started/configuration-markup#markdown-render-hooks) 在 [Hugo 圣诞节版本](https://gohugo.io/news/0.62.0-relnotes/) 中被引入,本主题只支持高于 **0.62.0** 的 Hugo 版本。 {{< /admonition >}} {{< admonition tip "推荐使用 Hugo extended 版本" >}} -由于这个主题的一些特性需要将 :(fab fa-sass fa-fw): SCSS 转换为 :(fab fa-css3 fa-fw): CSS, 推荐使用 Hugo **extended** 版本来获得更好的使用体验。 +由于这个主题的一些特性需要将 :(fa-brands fa-sass fa-fw): SCSS 转换为 :(fa-brands fa-css3 fa-fw): CSS, 推荐使用 Hugo **extended** 版本来获得更好的使用体验。 {{< /admonition >}} ## 2 安装 @@ -58,7 +58,7 @@ cd my_website **FixIt** 主题的仓库是: -你可以下载主题的 [最新版本 :(far fa-file-archive fa-fw): .zip 文件](https://github.com/Lruihao/FixIt/releases) 并且解压放到 `themes` 目录。 +你可以下载主题的 [最新版本 :(fa-regular fa-file-archive fa-fw): .zip 文件](https://github.com/Lruihao/FixIt/releases) 并且解压放到 `themes` 目录。 另外,也可以直接把这个主题克隆到 `themes` 目录: @@ -198,7 +198,7 @@ hugo 除了 [Hugo 全局配置](https://gohugo.io/overview/configuration/) 和 [菜单配置](#basic-configuration) 之外,**FixIt** 主题还允许您在网站配置中定义以下参数(这是一个示例 `config.toml`, 其内容为默认值). -请打开下面的代码块查看完整的示例配置 :(far fa-hand-point-down fa-fw):: +请打开下面的代码块查看完整的示例配置 :(fa-regular fa-hand-point-down fa-fw):: ```toml [params] @@ -1143,7 +1143,7 @@ menu: main: title: "探索 Hugo - FixIt 主题的全部内容和背后的核心概念。" parent: "documentation" - pre: "" + pre: "" --- ... ``` @@ -1160,19 +1160,19 @@ menu: | 语言 | Hugo 代码 | HTML `lang` 属性 | 主题文档 | Lunr.js 支持 | |:----|:----:|:----:|:----:|:----:| -| 英语 | `en` | `en` | :(far fa-check-square fa-fw): | :(far fa-check-square fa-fw): | -| 简体中文 | `zh-cn` | `zh-CN` | :(far fa-check-square fa-fw): | :(far fa-check-square fa-fw): | -| 法语 | `fr` | `fr` | :(far fa-square fa-fw): | :(far fa-check-square fa-fw): | -| 波兰语 | `pl` | `pl` | :(far fa-square fa-fw): | :(far fa-square fa-fw): | -| 巴西葡萄牙语 | `pt-br` | `pt-BR` | :(far fa-square fa-fw): | :(far fa-check-square fa-fw): | -| 意大利语 | `it` | `it` | :(far fa-square fa-fw): | :(far fa-check-square fa-fw): | -| 西班牙语 | `es` | `es` | :(far fa-square fa-fw): | :(far fa-check-square fa-fw): | -| 德语 | `de` | `de` | :(far fa-square fa-fw): | :(far fa-check-square fa-fw): | -| 塞尔维亚语 | `sr` | `sr` | :(far fa-square fa-fw): | :(far fa-square fa-fw): | -| 俄语 | `ru` | `ru` | :(far fa-square fa-fw): | :(far fa-check-square fa-fw): | -| 罗马尼亚语 | `ro` | `ro` | :(far fa-square fa-fw): | :(far fa-check-square fa-fw): | -| 越南语 | `vi` | `vi` | :(far fa-square fa-fw): | :(far fa-check-square fa-fw): | -| 繁体中文 | `zh-tw` | `zh-TW` | :(far fa-square fa-fw): | :(far fa-check-square fa-fw): | +| 英语 | `en` | `en` | :(fa-regular fa-check-square fa-fw): | :(fa-regular fa-check-square fa-fw): | +| 简体中文 | `zh-cn` | `zh-CN` | :(fa-regular fa-check-square fa-fw): | :(fa-regular fa-check-square fa-fw): | +| 法语 | `fr` | `fr` | :(fa-regular fa-square fa-fw): | :(fa-regular fa-check-square fa-fw): | +| 波兰语 | `pl` | `pl` | :(fa-regular fa-square fa-fw): | :(fa-regular fa-square fa-fw): | +| 巴西葡萄牙语 | `pt-br` | `pt-BR` | :(fa-regular fa-square fa-fw): | :(fa-regular fa-check-square fa-fw): | +| 意大利语 | `it` | `it` | :(fa-regular fa-square fa-fw): | :(fa-regular fa-check-square fa-fw): | +| 西班牙语 | `es` | `es` | :(fa-regular fa-square fa-fw): | :(fa-regular fa-check-square fa-fw): | +| 德语 | `de` | `de` | :(fa-regular fa-square fa-fw): | :(fa-regular fa-check-square fa-fw): | +| 塞尔维亚语 | `sr` | `sr` | :(fa-regular fa-square fa-fw): | :(fa-regular fa-square fa-fw): | +| 俄语 | `ru` | `ru` | :(fa-regular fa-square fa-fw): | :(fa-regular fa-check-square fa-fw): | +| 罗马尼亚语 | `ro` | `ro` | :(fa-regular fa-square fa-fw): | :(fa-regular fa-check-square fa-fw): | +| 越南语 | `vi` | `vi` | :(fa-regular fa-square fa-fw): | :(fa-regular fa-check-square fa-fw): | +| 繁体中文 | `zh-tw` | `zh-TW` | :(fa-regular fa-square fa-fw): | :(fa-regular fa-check-square fa-fw): | ### 4.2 基本配置 @@ -1302,7 +1302,7 @@ defaultContentLanguage = "zh-cn" 要覆盖默认值,请在你项目的 i18n 目录 `i18n/.toml` 中创建一个新文件,并从 `themes/FixIt/i18n/en.toml` 中获得提示。 -另外,由于你的翻译可能会帮助到其他人,请花点时间通过 [创建一个 PR :(fas fa-code-branch fa-fw):](https://github.com/Lruihao/FixIt/pulls) 来贡献主题翻译,谢谢! +另外,由于你的翻译可能会帮助到其他人,请花点时间通过 [创建一个 PR :(fa-solid fa-code-branch fa-fw):](https://github.com/Lruihao/FixIt/pulls) 来贡献主题翻译,谢谢! ## 5 搜索 diff --git a/exampleSite/content/posts/theme-documentation-built-in-shortcodes/index.en.md b/exampleSite/content/posts/theme-documentation-built-in-shortcodes/index.en.md index 91d7caf9..e673672d 100644 --- a/exampleSite/content/posts/theme-documentation-built-in-shortcodes/index.en.md +++ b/exampleSite/content/posts/theme-documentation-built-in-shortcodes/index.en.md @@ -21,7 +21,7 @@ menu: name: "Built-in Shortcodes" title: "Hugo provides multiple built-in shortcodes for author convenience and to keep your markdown content clean." parent: "documentation" - pre: "" + pre: "" --- **Hugo** provides multiple built-in shortcodes for author convenience and to keep your markdown content clean. diff --git a/exampleSite/content/posts/theme-documentation-built-in-shortcodes/index.zh-cn.md b/exampleSite/content/posts/theme-documentation-built-in-shortcodes/index.zh-cn.md index 8b84d7d2..e92b442e 100644 --- a/exampleSite/content/posts/theme-documentation-built-in-shortcodes/index.zh-cn.md +++ b/exampleSite/content/posts/theme-documentation-built-in-shortcodes/index.zh-cn.md @@ -20,7 +20,7 @@ menu: main: title: "Hugo 提供了多个内置的 Shortcodes, 以方便作者保持 Markdown 内容的整洁。" parent: "documentation" - pre: "" + pre: "" --- **Hugo** 提供了多个内置的 Shortcodes, 以方便作者保持 Markdown 内容的整洁。 diff --git a/exampleSite/content/posts/theme-documentation-content/index.en.md b/exampleSite/content/posts/theme-documentation-content/index.en.md index 48479233..6bd97296 100644 --- a/exampleSite/content/posts/theme-documentation-content/index.en.md +++ b/exampleSite/content/posts/theme-documentation-content/index.en.md @@ -26,7 +26,7 @@ menu: name: "Content" title: "Find out how to create and organize your content quickly and intuitively in FixIt theme." parent: "documentation" - pre: "" + pre: "" --- Find out how to create and organize your content quickly and intuitively in **FixIt** theme. @@ -60,7 +60,7 @@ such as **links**, **images**, `image` shortcode, `music` shortcode and some par Images in page resources or assets directory [processing](https://gohugo.io/content-management/image-processing/) will be supported in the future. -It's really cool! :(far fa-grin-squint fa-fw): +It's really cool! :(fa-regular fa-grin-squint fa-fw): {{< /admonition >}} ## 2 Front Matter {#front-matter} @@ -434,20 +434,20 @@ You can easily use these icons in your articles. Get the `class` of icons you wanted from the [Font Awesome website](https://fontawesome.com/icons?d=gallery). ```markdown -Gone camping! {?:}(fas fa-campground fa-fw): Be back soon. +Gone camping! {?:}(fa-solid fa-campground fa-fw): Be back soon. -That is so funny! {?:}(far fa-grin-tears): +That is so funny! {?:}(fa-regular fa-grin-tears): ``` The rendered output looks like this: -Gone camping! :(fas fa-campground fa-fw): Be back soon. +Gone camping! :(fa-solid fa-campground fa-fw): Be back soon. -That is so funny! :(far fa-grin-tears): +That is so funny! :(fa-regular fa-grin-tears): ### Escape character {#escape-character} -In some special cases (when writing this theme documentation :(far fa-grin-squint-tears):), +In some special cases (when writing this theme documentation :(fa-regular fa-grin-squint-tears):), your content will conflict with basic or extended Markdown syntax, and it is inevitable. The escape character syntax can help you build the content you wanted: diff --git a/exampleSite/content/posts/theme-documentation-content/index.zh-cn.md b/exampleSite/content/posts/theme-documentation-content/index.zh-cn.md index b61fe6f3..081db475 100644 --- a/exampleSite/content/posts/theme-documentation-content/index.zh-cn.md +++ b/exampleSite/content/posts/theme-documentation-content/index.zh-cn.md @@ -25,7 +25,7 @@ menu: main: title: "了解如何在 FixIt 主题中快速,直观地创建和组织内容。" parent: "documentation" - pre: "" + pre: "" --- 了解如何在 **FixIt** 主题中快速,直观地创建和组织内容。 @@ -58,7 +58,7 @@ menu: 例如 **链接**, **图片**, `image` shortcode, `music` shortcode 和**前置参数**中的部分参数。 页面资源或者 **assets** 目录中的 [图片处理](https://gohugo.io/content-management/image-processing/) 会在未来的版本中得到支持。 -非常酷的功能!:(far fa-grin-squint fa-fw): +非常酷的功能!:(fa-regular fa-grin-squint fa-fw): {{< /admonition >}} ## 2 前置参数 {#front-matter} @@ -433,20 +433,20 @@ $$ \ce{Hg^2+ ->[I-] HgI2 ->[I-] [Hg^{II}I4]^2-} $$ 从 [Font Awesome 网站](https://fontawesome.com/icons?d=gallery) 上获取所需的图标 `class`. ```markdown -去露营啦!{?:}(fas fa-campground fa-fw): 很快就回来。 +去露营啦!{?:}(fa-solid fa-campground fa-fw): 很快就回来。 -真开心!{?:}(far fa-grin-tears): +真开心!{?:}(fa-regular fa-grin-tears): ``` 呈现的输出效果如下: -去露营啦!:(fas fa-campground fa-fw): 很快就回来。 +去露营啦!:(fa-solid fa-campground fa-fw): 很快就回来。 -真开心!:(far fa-grin-tears): +真开心!:(fa-regular fa-grin-tears): ### 转义字符 {#escape-character} -在某些特殊情况下 (编写这个主题文档时 :(far fa-grin-squint-tears):), +在某些特殊情况下 (编写这个主题文档时 :(fa-regular fa-grin-squint-tears):), 你的文章内容会与 Markdown 的基本或者扩展语法冲突,并且无法避免。 转义字符语法可以帮助你渲染出想要的内容: diff --git a/exampleSite/content/posts/theme-documentation-extended-shortcodes/index.en.md b/exampleSite/content/posts/theme-documentation-extended-shortcodes/index.en.md index 394c3243..c8d1947a 100644 --- a/exampleSite/content/posts/theme-documentation-extended-shortcodes/index.en.md +++ b/exampleSite/content/posts/theme-documentation-extended-shortcodes/index.en.md @@ -22,7 +22,7 @@ menu: name: "Extended Shortcodes" title: "FixIt theme provides multiple shortcodes on top of built-in ones in Hugo." parent: "documentation" - pre: "" + pre: "" --- **FixIt** theme provides multiple shortcodes on top of built-in ones in Hugo. @@ -42,7 +42,7 @@ Hugo **extended** version is necessary for `style` shortcode. The `style` shortcode has two positional parameters. The **first** one is the custom style content, -which supports nesting syntax in [:(fab fa-sass fa-fw): SASS](https://sass-lang.com/documentation/style-rules/declarations#nesting) +which supports nesting syntax in [:(fa-brands fa-sass fa-fw): SASS](https://sass-lang.com/documentation/style-rules/declarations#nesting) and `&` referring to this parent HTML element. And the **second** one is the tag name of the HTML element wrapping the content you want to change style, and whose default value is `div`. @@ -1314,7 +1314,7 @@ The rendered output looks like this: {{< version 0.2.8 >}} -`script` is a shortcode to insert custom **:(fab fa-js fa-fw): Javascript** in your post. +`script` is a shortcode to insert custom **:(fa-brands fa-js fa-fw): Javascript** in your post. {{< admonition >}} The script content can be guaranteed to be executed in order after all third-party libraries are loaded. So you are free to use third-party libraries. @@ -1338,7 +1338,7 @@ console.log('Hello FixIt!'); {{< version 0.2.13 >}} {{< version 0.2.14 changed >}} -`details` is a shortcode to insert **:(fab fa-html5 fa-fw): HTML5 tag** details and summary in your post. +`details` is a shortcode to insert **:(fa-brands fa-html5 fa-fw): HTML5 tag** details and summary in your post. The `details` shortcode has only one parameter: diff --git a/exampleSite/content/posts/theme-documentation-extended-shortcodes/index.zh-cn.md b/exampleSite/content/posts/theme-documentation-extended-shortcodes/index.zh-cn.md index 58cfa0e8..93ec37bf 100644 --- a/exampleSite/content/posts/theme-documentation-extended-shortcodes/index.zh-cn.md +++ b/exampleSite/content/posts/theme-documentation-extended-shortcodes/index.zh-cn.md @@ -24,7 +24,7 @@ menu: main: title: "FixIt 主题在 Hugo 内置的 shortcode 的基础上提供多个扩展的 shortcode" parent: "documentation" - pre: "" + pre: "" --- **FixIt** 主题在 Hugo 内置的 shortcode 的基础上提供多个扩展的 shortcode. @@ -43,7 +43,7 @@ Hugo **extended** 版本对于 `style` shortcode 是必需的。 `style` shortcode 有两个位置参数。 -第一个参数是自定义样式的内容。它支持 [:(fab fa-sass fa-fw): SASS](https://sass-lang.com/documentation/style-rules/declarations#nesting) 中的嵌套语法, +第一个参数是自定义样式的内容。它支持 [:(fa-brands fa-sass fa-fw): SASS](https://sass-lang.com/documentation/style-rules/declarations#nesting) 中的嵌套语法, 并且 `&` 指代这个父元素。 第二个参数是包裹你要更改样式的内容的 HTML 标签,默认值是 `div`。 @@ -1314,7 +1314,7 @@ public class HelloWorld { {{< version 0.2.8 >}} -`script` shortcode 用来在你的文章中插入 **:(fab fa-js fa-fw): Javascript** 脚本。 +`script` shortcode 用来在你的文章中插入 **:(fa-brands fa-js fa-fw): Javascript** 脚本。 {{< admonition >}} 脚本内容可以保证在所有的第三方库加载之后按顺序执行。 @@ -1339,7 +1339,7 @@ console.log('Hello FixIt!'); {{< version 0.2.13 >}} {{< version 0.2.14 changed >}} -`details` shortcode 用来在你的文章中插入 **:(fab fa-html5 fa-fw): HTML5 标签** details 和 summary。 +`details` shortcode 用来在你的文章中插入 **:(fa-brands fa-html5 fa-fw): HTML5 标签** details 和 summary。 `details` shortcode 只有一个参数: - **summary** *[可选]* (**第一个**位置参数) diff --git a/exampleSite/content/tests/fontawesome.md b/exampleSite/content/tests/fontawesome.md index 64402485..a4ecea29 100644 --- a/exampleSite/content/tests/fontawesome.md +++ b/exampleSite/content/tests/fontawesome.md @@ -16,70 +16,70 @@ menu: main: title: "Test for rendering Font Awesome icons" parent: "tests" - pre: "" + pre: "" --- ## Size -:(fas fa-camera fa-xs): -:(fas fa-camera fa-sm): -:(fas fa-camera fa-lg): -:(fas fa-camera fa-2x): -:(fas fa-camera fa-3x): -:(fas fa-camera fa-5x): -:(fas fa-camera fa-7x): -:(fas fa-camera fa-10x): +:(fa-solid fa-camera fa-xs): +:(fa-solid fa-camera fa-sm): +:(fa-solid fa-camera fa-lg): +:(fa-solid fa-camera fa-2x): +:(fa-solid fa-camera fa-3x): +:(fa-solid fa-camera fa-5x): +:(fa-solid fa-camera fa-7x): +:(fa-solid fa-camera fa-10x): ## Fixed width -:(fas fa-skating fa-fw fa-2x): Skating -:(fas fa-skiing fa-fw fa-2x): Skiing -:(fas fa-skiing-nordic fa-fw fa-2x): Nordic Skiing +:(fa-solid fa-skating fa-fw fa-2x): Skating +:(fa-solid fa-skiing fa-fw fa-2x): Skiing +:(fa-solid fa-skiing-nordic fa-fw fa-2x): Nordic Skiing ## List icon -:(far fa-check-square): Eat a hamburger -:(far fa-square): Get a girlfriend +:(fa-regular fa-check-square): Eat a hamburger +:(fa-regular fa-square): Get a girlfriend -:(far fa-check-circle): Go to beach -:(far fa-circle): Go to Tibet +:(fa-regular fa-check-circle): Go to beach +:(fa-regular fa-circle): Go to Tibet ## Rotate -:(fas fa-snowboarding): -:(fas fa-snowboarding fa-rotate-90): -:(fas fa-snowboarding fa-rotate-180): -:(fas fa-snowboarding fa-rotate-270): +:(fa-solid fa-snowboarding): +:(fa-solid fa-snowboarding fa-rotate-90): +:(fa-solid fa-snowboarding fa-rotate-180): +:(fa-solid fa-snowboarding fa-rotate-270): ## Flip -:(fas fa-snowboarding): -:(fas fa-snowboarding fa-flip-horizontal): -:(fas fa-snowboarding fa-flip-vertical): -:(fas fa-snowboarding fa-flip-both): +:(fa-solid fa-snowboarding): +:(fa-solid fa-snowboarding fa-flip-horizontal): +:(fa-solid fa-snowboarding fa-flip-vertical): +:(fa-solid fa-snowboarding fa-flip-both): ## Animation -:(fas fa-spinner): -:(fas fa-spinner fa-spin): -:(fas fa-spinner fa-pulse): -:(fas fa-circle-notch fa-spin): -:(fas fa-circle-notch fa-pulse): -:(fas fa-sync fa-spin): -:(fas fa-sync fa-pulse): -:(fas fa-cog fa-spin): -:(fas fa-cog fa-pulse): +:(fa-solid fa-spinner): +:(fa-solid fa-spinner fa-spin): +:(fa-solid fa-spinner fa-pulse): +:(fa-solid fa-circle-notch fa-spin): +:(fa-solid fa-circle-notch fa-pulse): +:(fa-solid fa-sync fa-spin): +:(fa-solid fa-sync fa-pulse): +:(fa-solid fa-cog fa-spin): +:(fa-solid fa-cog fa-pulse): ## Float -:(fas fa-quote-left fa-pull-left): +:(fa-solid fa-quote-left fa-pull-left):
hey guys!
-:(fas fa-quote-right fa-pull-right): +:(fa-solid fa-quote-right fa-pull-right): ## Border -:(fab fa-apple fa-border fa-fw fa-10x): \ No newline at end of file +:(fa-brands fa-apple fa-border fa-fw fa-10x): \ No newline at end of file diff --git a/exampleSite/content/tests/highlight.md b/exampleSite/content/tests/highlight.md index 3ddbe3fa..a5639bb3 100644 --- a/exampleSite/content/tests/highlight.md +++ b/exampleSite/content/tests/highlight.md @@ -16,7 +16,7 @@ menu: main: title: "Test for code highlight feature" parent: "tests" - pre: "" + pre: "" --- `inline code` diff --git a/exampleSite/content/tests/markdown.zh-cn.md b/exampleSite/content/tests/markdown.zh-cn.md index efa31873..510a4088 100644 --- a/exampleSite/content/tests/markdown.zh-cn.md +++ b/exampleSite/content/tests/markdown.zh-cn.md @@ -17,7 +17,7 @@ menu: name: "Markdown 测试" title: "Test for Markdown rendering" parent: "tests" - pre: "" + pre: "" --- ## line break diff --git a/exampleSite/content/tests/print-article.zh-cn.md b/exampleSite/content/tests/print-article.zh-cn.md index 6d2c8c98..57792852 100644 --- a/exampleSite/content/tests/print-article.zh-cn.md +++ b/exampleSite/content/tests/print-article.zh-cn.md @@ -22,7 +22,7 @@ menu: name: "打印测试" title: "这是一篇测试 FixIt 主题在打印视图表现的测试文章" parent: "tests" - pre: "" + pre: "" ---