jekyll-theme-chirpy 5.3.0 → 5.3.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.md +2 -2
- data/_data/assets/cross_origin.yml +3 -3
- data/_data/assets/self_host.yml +2 -2
- data/_data/locales/en.yml +10 -0
- data/_data/locales/hu-HU.yml +2 -2
- data/_data/locales/ko-KR.yml +7 -0
- data/_data/locales/pt-BR.yml +1 -1
- data/_data/locales/zh-CN.yml +8 -1
- data/_includes/comments/disqus.html +11 -11
- data/_includes/comments/giscus.html +1 -1
- data/_includes/datetime.html +2 -8
- data/_includes/footer.html +26 -26
- data/_includes/head.html +15 -21
- data/_includes/js-selector.html +1 -5
- data/_includes/mermaid.html +12 -10
- data/_includes/post-nav.html +4 -4
- data/_includes/post-sharing.html +3 -3
- data/_includes/read-time.html +3 -3
- data/_includes/refactor-content.html +10 -12
- data/_includes/related-posts.html +1 -1
- data/_includes/search-loader.html +1 -1
- data/_includes/sidebar.html +3 -3
- data/_includes/toc.html +1 -1
- data/_includes/topbar.html +9 -9
- data/_includes/trending-tags.html +1 -1
- data/_includes/update-list.html +1 -1
- data/_layouts/archives.html +2 -9
- data/_layouts/categories.html +12 -14
- data/_layouts/category.html +0 -2
- data/_layouts/default.html +6 -9
- data/_layouts/home.html +1 -3
- data/_layouts/page.html +4 -6
- data/_layouts/post.html +10 -12
- data/_layouts/tag.html +0 -2
- data/_sass/addon/commons.scss +134 -136
- data/_sass/addon/module.scss +5 -2
- data/_sass/addon/syntax.scss +14 -20
- data/_sass/addon/variables.scss +0 -4
- data/_sass/colors/dark-syntax.scss +17 -18
- data/_sass/colors/dark-typography.scss +22 -22
- data/_sass/colors/light-syntax.scss +2 -3
- data/_sass/colors/light-typography.scss +13 -14
- data/_sass/jekyll-theme-chirpy.scss +1 -1
- data/_sass/layout/archives.scss +4 -12
- data/_sass/layout/categories.scss +12 -13
- data/_sass/layout/category-tag.scss +4 -4
- data/_sass/layout/home.scss +19 -25
- data/_sass/layout/post.scss +132 -136
- data/_sass/layout/tags.scss +1 -1
- data/assets/404.html +1 -3
- data/assets/js/data/search.json +3 -1
- data/assets/js/data/swcache.js +35 -36
- data/assets/js/dist/categories.min.js +2 -2
- data/assets/js/dist/commons.min.js +2 -2
- data/assets/js/dist/home.min.js +2 -2
- data/assets/js/dist/misc.min.js +2 -2
- data/assets/js/dist/page.min.js +2 -2
- data/assets/js/dist/post.min.js +2 -2
- data/assets/js/dist/pvreport.min.js +2 -2
- data/assets/js/pwa/app.js +33 -33
- data/assets/js/pwa/sw.js +54 -53
- data/assets/js/pwa/unregister.js +5 -5
- metadata +2 -10
- data/_config.yml +0 -201
- data/_includes/lang.html +0 -8
- data/_plugins/posts-lastmod-hook.rb +0 -14
- data/_tabs/about.md +0 -8
- data/_tabs/archives.md +0 -6
- data/_tabs/categories.md +0 -5
- data/_tabs/tags.md +0 -5
- data/index.html +0 -4
data/assets/js/dist/page.min.js
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
/*!
|
2
|
-
* Chirpy v5.3.
|
2
|
+
* Chirpy v5.3.2 (https://github.com/cotes2020/jekyll-theme-chirpy/)
|
3
3
|
* © 2019 Cotes Chung
|
4
4
|
* MIT Licensed
|
5
5
|
*/
|
6
|
-
$(function(){$(window).scroll(()=>{50<$(this).scrollTop()&&"none"===$("#sidebar-trigger").css("display")?$("#back-to-top").fadeIn():$("#back-to-top").fadeOut()}),$("#back-to-top").click(()=>($("body,html").animate({scrollTop:0},800),!1))}),$(function(){$(".mode-toggle").click(e=>{
|
6
|
+
$(function(){$(window).scroll(()=>{50<$(this).scrollTop()&&"none"===$("#sidebar-trigger").css("display")?$("#back-to-top").fadeIn():$("#back-to-top").fadeOut()}),$("#back-to-top").click(()=>($("body,html").animate({scrollTop:0},800),!1))}),$(function(){$(".mode-toggle").click(e=>{e=$(e.target);(e.prop("tagName")==="button".toUpperCase()?e:e.parent()).blur(),flipMode()})});const ScrollHelper=function(){const e=$("body"),t="data-topbar-visible",o=$("#topbar-wrapper").outerHeight();let r=0,a=!1,l=!1;return{hideTopbar:()=>e.attr(t,!1),showTopbar:()=>e.attr(t,!0),addScrollUpTask:()=>{r+=1,a=a||!0},popScrollUpTask:()=>--r,hasScrollUpTask:()=>0<r,topbarLocked:()=>!0===a,unlockTopbar:()=>a=!1,getTopbarHeight:()=>o,orientationLocked:()=>!0===l,lockOrientation:()=>l=!0,unLockOrientation:()=>l=!1}}();$(function(){const e=$("#sidebar-trigger"),t=$("#search-trigger"),o=$("#search-cancel"),r=$("#main"),a=$("#topbar-title"),l=$("#search-wrapper"),n=$("#search-result-wrapper"),i=$("#search-results"),s=$("#search-input"),c=$("#search-hints"),d=function(){let e=0;return{block(){e=window.scrollY,$("html,body").scrollTop(0)},release(){$("html,body").scrollTop(e)},getOffset(){return e}}}(),p={on(){e.addClass("unloaded"),a.addClass("unloaded"),t.addClass("unloaded"),l.addClass("d-flex"),o.addClass("loaded")},off(){o.removeClass("loaded"),l.removeClass("d-flex"),e.removeClass("unloaded"),a.removeClass("unloaded"),t.removeClass("unloaded")}},u=function(){let e=!1;return{on(){e||(d.block(),n.removeClass("unloaded"),r.addClass("unloaded"),e=!0)},off(){e&&(i.empty(),c.hasClass("unloaded")&&c.removeClass("unloaded"),n.addClass("unloaded"),r.removeClass("unloaded"),d.release(),s.val(""),e=!1)},isVisible(){return e}}}();function h(){return o.hasClass("loaded")}t.click(function(){p.on(),u.on(),s.focus()}),o.click(function(){p.off(),u.off()}),s.focus(function(){l.addClass("input-focus")}),s.focusout(function(){l.removeClass("input-focus")}),s.on("input",()=>{""===s.val()?h()?c.removeClass("unloaded"):u.off():(u.on(),h()&&c.addClass("unloaded"))})}),$(function(){var e=function(){const e="sidebar-display";let t=!1;const o=$("body");return{toggle(){!1===t?o.attr(e,""):o.removeAttr(e),t=!t}}}();$("#sidebar-trigger").click(e.toggle),$("#mask").click(e.toggle)}),$(function(){$('[data-toggle="tooltip"]').tooltip()}),$(function(){const t=$("#search-input"),o=ScrollHelper.getTopbarHeight();let e,r=0;function a(){0!==$(window).scrollTop()&&(ScrollHelper.lockOrientation(),ScrollHelper.hideTopbar())}screen.orientation?screen.orientation.onchange=()=>{var e=screen.orientation.type;"landscape-primary"!==e&&"landscape-secondary"!==e||a()}:$(window).on("orientationchange",()=>{$(window).width()<$(window).height()&&a()}),$(window).scroll(()=>{e=e||!0}),setInterval(()=>{e&&(!function(){var e=$(this).scrollTop();if(!(Math.abs(r-e)<=o)){if(e>r)ScrollHelper.hideTopbar(),t.is(":focus")&&t.blur();else if(e+$(window).height()<$(document).height()){if(ScrollHelper.hasScrollUpTask())return;ScrollHelper.topbarLocked()?ScrollHelper.unlockTopbar():ScrollHelper.orientationLocked()?ScrollHelper.unLockOrientation():ScrollHelper.showTopbar()}r=e}}(),e=!1)},250)}),$(function(){var e="div.post>h1:first-of-type",t=$(e);const n=$("#topbar-title");if(0!==t.length&&!t.hasClass("dynamic-title")&&!n.is(":hidden")){const i=n.text().trim();let r=t.text().trim(),a=!1,l=0;($("#page-category").length||$("#page-tag").length)&&/\s/.test(r)&&(r=r.replace(/[0-9]/g,"").trim()),t.offset().top<$(window).scrollTop()&&n.text(r);new IntersectionObserver(e=>{var t,o;a?(o=$(window).scrollTop(),t=l<o,l=o,o=e[0],t?0===o.intersectionRatio&&n.text(r):1===o.intersectionRatio&&n.text(i)):a=!0},{rootMargin:"-48px 0px 0px 0px",threshold:[0,1]}).observe(document.querySelector(e)),n.click(function(){$("body,html").animate({scrollTop:0},800)})}}),$(function(){var e,t="#main > div.row:first-child > div:first-child";$(t+" img").length<=0||(e=document.querySelectorAll(t+" img[data-src]"),lozad(e).observe(),$(t+` p > img[data-src], ${t} img[data-src].preview-img`).each(function(){var e=$(this).next(),e="EM"===e.prop("tagName")?e.text():"",t=$(this).attr("data-src");$(this).wrap(`<a href="${t}" title="${e}" class="popup"></a>`)}),$(".popup").magnificPopup({type:"image",closeOnContentClick:!0,showCloseBtn:!1,zoom:{enabled:!0,duration:300,easing:"ease-in-out"}}),$(t+" a").has("img").addClass("img-link"))}),$(function(){var e=".code-header>button";const t="timeout",a="data-title-succeed",l="data-original-title";function n(e){if($(e)[0].hasAttribute(t)){e=$(e).attr(t);if(Number(e)>Date.now())return 1}}function i(e){$(e).attr(t,Date.now()+2e3)}function s(e){$(e).removeAttr(t)}var o=new ClipboardJS(e,{target(e){return e.parentNode.nextElementSibling.querySelector("code .rouge-code")}});$(e).tooltip({trigger:"hover",placement:"left"});const r=$(e).children().attr("class");o.on("success",e=>{e.clearSelection();const t=e.trigger;var o;n(t)||(e=t,$(e).children().attr("class","fas fa-check"),e=t,o=$(e).attr(a),$(e).attr(l,o).tooltip("show"),i(t),setTimeout(()=>{var e;e=t,$(e).tooltip("hide").removeAttr(l),e=t,$(e).children().attr("class",r),s(t)},2e3))}),$("#copy-link").click(e=>{let t=$(e.target);if(!n(t)){var e=window.location.href,o=$("<input>");$("body").append(o),o.val(e).select(),document.execCommand("copy"),o.remove();const r=t.attr(l);e=t.attr(a);t.attr(l,e).tooltip("show"),i(t),setTimeout(()=>{t.attr(l,r),s(t)},2e3)}})}),$(function(){const e=$("#topbar-title"),s="scroll-focus";$("a[href*='#']").not("[href='#']").not("[href='#0']").click(function(a){if(this.pathname.replace(/^\//,"")===location.pathname.replace(/^\//,"")&&location.hostname===this.hostname){var l=decodeURI(this.hash);let t=RegExp(/^#fnref:/).test(l),o=!t&&RegExp(/^#fn:/).test(l);var n=l.includes(":")?l.replace(/:/g,"\\:"):l;let r=$(n);var n=e.is(":visible"),i=$(window).width()<$(window).height();if(void 0!==r){a.preventDefault(),history.pushState&&history.pushState(null,null,l);a=$(window).scrollTop();let e=r.offset().top-=8;e<a&&(ScrollHelper.hideTopbar(),ScrollHelper.addScrollUpTask()),n&&i&&(e-=ScrollHelper.getTopbarHeight()),$("html").animate({scrollTop:e},500,()=>{if(r.focus(),$(`[${s}=true]`).length&&$(`[${s}=true]`).attr(s,!1),$(":target").length&&$(":target").attr(s,!1),(o||t)&&r.attr(s,!0),r.is(":focus"))return!1;r.attr("tabindex","-1"),r.focus(),ScrollHelper.hasScrollUpTask()&&ScrollHelper.popScrollUpTask()})}}})});
|
data/assets/js/dist/post.min.js
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
/*!
|
2
|
-
* Chirpy v5.3.
|
2
|
+
* Chirpy v5.3.2 (https://github.com/cotes2020/jekyll-theme-chirpy/)
|
3
3
|
* © 2019 Cotes Chung
|
4
4
|
* MIT Licensed
|
5
5
|
*/
|
6
|
-
$(function(){$(window).scroll(()=>{50<$(this).scrollTop()&&"none"===$("#sidebar-trigger").css("display")?$("#back-to-top").fadeIn():$("#back-to-top").fadeOut()}),$("#back-to-top").click(()=>($("body,html").animate({scrollTop:0},800),!1))}),$(function(){$(".mode-toggle").click(t=>{
|
6
|
+
$(function(){$(window).scroll(()=>{50<$(this).scrollTop()&&"none"===$("#sidebar-trigger").css("display")?$("#back-to-top").fadeIn():$("#back-to-top").fadeOut()}),$("#back-to-top").click(()=>($("body,html").animate({scrollTop:0},800),!1))}),$(function(){$(".mode-toggle").click(t=>{t=$(t.target);(t.prop("tagName")==="button".toUpperCase()?t:t.parent()).blur(),flipMode()})});const ScrollHelper=function(){const t=$("body"),e="data-topbar-visible",o=$("#topbar-wrapper").outerHeight();let a=0,r=!1,l=!1;return{hideTopbar:()=>t.attr(e,!1),showTopbar:()=>t.attr(e,!0),addScrollUpTask:()=>{a+=1,r=r||!0},popScrollUpTask:()=>--a,hasScrollUpTask:()=>0<a,topbarLocked:()=>!0===r,unlockTopbar:()=>r=!1,getTopbarHeight:()=>o,orientationLocked:()=>!0===l,lockOrientation:()=>l=!0,unLockOrientation:()=>l=!1}}(),LocaleHelper=($(function(){const t=$("#sidebar-trigger"),e=$("#search-trigger"),o=$("#search-cancel"),a=$("#main"),r=$("#topbar-title"),l=$("#search-wrapper"),n=$("#search-result-wrapper"),i=$("#search-results"),s=$("#search-input"),c=$("#search-hints"),d=function(){let t=0;return{block(){t=window.scrollY,$("html,body").scrollTop(0)},release(){$("html,body").scrollTop(t)},getOffset(){return t}}}(),p={on(){t.addClass("unloaded"),r.addClass("unloaded"),e.addClass("unloaded"),l.addClass("d-flex"),o.addClass("loaded")},off(){o.removeClass("loaded"),l.removeClass("d-flex"),t.removeClass("unloaded"),r.removeClass("unloaded"),e.removeClass("unloaded")}},u=function(){let t=!1;return{on(){t||(d.block(),n.removeClass("unloaded"),a.addClass("unloaded"),t=!0)},off(){t&&(i.empty(),c.hasClass("unloaded")&&c.removeClass("unloaded"),n.addClass("unloaded"),a.removeClass("unloaded"),d.release(),s.val(""),t=!1)},isVisible(){return t}}}();function h(){return o.hasClass("loaded")}e.click(function(){p.on(),u.on(),s.focus()}),o.click(function(){p.off(),u.off()}),s.focus(function(){l.addClass("input-focus")}),s.focusout(function(){l.removeClass("input-focus")}),s.on("input",()=>{""===s.val()?h()?c.removeClass("unloaded"):u.off():(u.on(),h()&&c.addClass("unloaded"))})}),$(function(){var t=function(){const t="sidebar-display";let e=!1;const o=$("body");return{toggle(){!1===e?o.attr(t,""):o.removeAttr(t),e=!e}}}();$("#sidebar-trigger").click(t.toggle),$("#mask").click(t.toggle)}),$(function(){$('[data-toggle="tooltip"]').tooltip()}),$(function(){const e=$("#search-input"),o=ScrollHelper.getTopbarHeight();let t,a=0;function r(){0!==$(window).scrollTop()&&(ScrollHelper.lockOrientation(),ScrollHelper.hideTopbar())}screen.orientation?screen.orientation.onchange=()=>{var t=screen.orientation.type;"landscape-primary"!==t&&"landscape-secondary"!==t||r()}:$(window).on("orientationchange",()=>{$(window).width()<$(window).height()&&r()}),$(window).scroll(()=>{t=t||!0}),setInterval(()=>{t&&(!function(){var t=$(this).scrollTop();if(!(Math.abs(a-t)<=o)){if(t>a)ScrollHelper.hideTopbar(),e.is(":focus")&&e.blur();else if(t+$(window).height()<$(document).height()){if(ScrollHelper.hasScrollUpTask())return;ScrollHelper.topbarLocked()?ScrollHelper.unlockTopbar():ScrollHelper.orientationLocked()?ScrollHelper.unLockOrientation():ScrollHelper.showTopbar()}a=t}}(),t=!1)},250)}),$(function(){var t="div.post>h1:first-of-type",e=$(t);const n=$("#topbar-title");if(0!==e.length&&!e.hasClass("dynamic-title")&&!n.is(":hidden")){const i=n.text().trim();let a=e.text().trim(),r=!1,l=0;($("#page-category").length||$("#page-tag").length)&&/\s/.test(a)&&(a=a.replace(/[0-9]/g,"").trim()),e.offset().top<$(window).scrollTop()&&n.text(a);new IntersectionObserver(t=>{var e,o;r?(o=$(window).scrollTop(),e=l<o,l=o,o=t[0],e?0===o.intersectionRatio&&n.text(a):1===o.intersectionRatio&&n.text(i)):r=!0},{rootMargin:"-48px 0px 0px 0px",threshold:[0,1]}).observe(document.querySelector(t)),n.click(function(){$("body,html").animate({scrollTop:0},800)})}}),$(function(){var t,e="#main > div.row:first-child > div:first-child";$(e+" img").length<=0||(t=document.querySelectorAll(e+" img[data-src]"),lozad(t).observe(),$(e+` p > img[data-src], ${e} img[data-src].preview-img`).each(function(){var t=$(this).next(),t="EM"===t.prop("tagName")?t.text():"",e=$(this).attr("data-src");$(this).wrap(`<a href="${e}" title="${t}" class="popup"></a>`)}),$(".popup").magnificPopup({type:"image",closeOnContentClick:!0,showCloseBtn:!1,zoom:{enabled:!0,duration:300,easing:"ease-in-out"}}),$(e+" a").has("img").addClass("img-link"))}),function(){const t=$("html").attr("lang").substr(0,2),e="data-ts",o="data-df";return{locale:()=>t,attrTimestamp:()=>e,attrDateFormat:()=>o,getTimestamp:t=>Number(t.attr(e)),getDateFormat:t=>t.attr(o)}}());$(function(){dayjs.locale(LocaleHelper.locale()),dayjs.extend(window.dayjs_plugin_localizedFormat),$(`[${LocaleHelper.attrTimestamp()}]`).each(function(){var t=dayjs.unix(LocaleHelper.getTimestamp($(this))),e=t.format(LocaleHelper.getDateFormat($(this))),e=($(this).text(e),$(this).removeAttr(LocaleHelper.attrTimestamp()),$(this).removeAttr(LocaleHelper.attrDateFormat()),$(this).attr("data-toggle"));void 0!==e&&"tooltip"===e&&(e=t.format("llll"),$(this).attr("data-original-title",e))})}),$(function(){var t=".code-header>button";const e="timeout",r="data-title-succeed",l="data-original-title";function n(t){if($(t)[0].hasAttribute(e)){t=$(t).attr(e);if(Number(t)>Date.now())return 1}}function i(t){$(t).attr(e,Date.now()+2e3)}function s(t){$(t).removeAttr(e)}var o=new ClipboardJS(t,{target(t){return t.parentNode.nextElementSibling.querySelector("code .rouge-code")}});$(t).tooltip({trigger:"hover",placement:"left"});const a=$(t).children().attr("class");o.on("success",t=>{t.clearSelection();const e=t.trigger;var o;n(e)||(t=e,$(t).children().attr("class","fas fa-check"),t=e,o=$(t).attr(r),$(t).attr(l,o).tooltip("show"),i(e),setTimeout(()=>{var t;t=e,$(t).tooltip("hide").removeAttr(l),t=e,$(t).children().attr("class",a),s(e)},2e3))}),$("#copy-link").click(t=>{let e=$(t.target);if(!n(e)){var t=window.location.href,o=$("<input>");$("body").append(o),o.val(t).select(),document.execCommand("copy"),o.remove();const a=e.attr(l);t=e.attr(r);e.attr(l,t).tooltip("show"),i(e),setTimeout(()=>{e.attr(l,a),s(e)},2e3)}})}),$(function(){const t=$("#topbar-title"),s="scroll-focus";$("a[href*='#']").not("[href='#']").not("[href='#0']").click(function(r){if(this.pathname.replace(/^\//,"")===location.pathname.replace(/^\//,"")&&location.hostname===this.hostname){var l=decodeURI(this.hash);let e=RegExp(/^#fnref:/).test(l),o=!e&&RegExp(/^#fn:/).test(l);var n=l.includes(":")?l.replace(/:/g,"\\:"):l;let a=$(n);var n=t.is(":visible"),i=$(window).width()<$(window).height();if(void 0!==a){r.preventDefault(),history.pushState&&history.pushState(null,null,l);r=$(window).scrollTop();let t=a.offset().top-=8;t<r&&(ScrollHelper.hideTopbar(),ScrollHelper.addScrollUpTask()),n&&i&&(t-=ScrollHelper.getTopbarHeight()),$("html").animate({scrollTop:t},500,()=>{if(a.focus(),$(`[${s}=true]`).length&&$(`[${s}=true]`).attr(s,!1),$(":target").length&&$(":target").attr(s,!1),(o||e)&&a.attr(s,!0),a.is(":focus"))return!1;a.attr("tabindex","-1"),a.focus(),ScrollHelper.hasScrollUpTask()&&ScrollHelper.popScrollUpTask()})}}})});
|
@@ -1,6 +1,6 @@
|
|
1
1
|
/*!
|
2
|
-
* Chirpy v5.3.
|
2
|
+
* Chirpy v5.3.2 (https://github.com/cotes2020/jekyll-theme-chirpy/)
|
3
3
|
* © 2019 Cotes Chung
|
4
4
|
* MIT Licensed
|
5
5
|
*/
|
6
|
-
const getInitStatus=function(){let t=!1;return()=>{var e=t;return t=t||!0,e}}(),PvOpts=function(){function t(e){return $(e).attr("content")}function e(e){e=t(e);return void 0!==e&&!1!==e}return{getProxyMeta(){return t("meta[name=pv-proxy-endpoint]")},getLocalMeta(){return t("meta[name=pv-cache-path]")},hasProxyMeta(){return e("meta[name=pv-proxy-endpoint]")},hasLocalMeta(){return e("meta[name=pv-cache-path]")}}}(),PvStorage=function(){const a={KEY_PV:"pv",KEY_PV_SRC:"pv_src",KEY_CREATION:"pv_created_date"},t={LOCAL:"same-origin",PROXY:"cors"};function r(e){return localStorage.getItem(e)}function o(e,t){localStorage.setItem(e,t)}function n(e,t){o(a.KEY_PV,e),o(a.KEY_PV_SRC,t),o(a.KEY_CREATION,(new Date).toJSON())}return{keysCount(){return Object.keys(a).length},hasCache(){return null!==localStorage.getItem(a.KEY_PV)},getCache(){return JSON.parse(localStorage.getItem(a.KEY_PV))},saveLocalCache(e){n(e,t.LOCAL)},saveProxyCache(e){n(e,t.PROXY)},isExpired(){
|
6
|
+
const getInitStatus=function(){let t=!1;return()=>{var e=t;return t=t||!0,e}}(),PvOpts=function(){function t(e){return $(e).attr("content")}function e(e){e=t(e);return void 0!==e&&!1!==e}return{getProxyMeta(){return t("meta[name=pv-proxy-endpoint]")},getLocalMeta(){return t("meta[name=pv-cache-path]")},hasProxyMeta(){return e("meta[name=pv-proxy-endpoint]")},hasLocalMeta(){return e("meta[name=pv-cache-path]")}}}(),PvStorage=function(){const a={KEY_PV:"pv",KEY_PV_SRC:"pv_src",KEY_CREATION:"pv_created_date"},t={LOCAL:"same-origin",PROXY:"cors"};function r(e){return localStorage.getItem(e)}function o(e,t){localStorage.setItem(e,t)}function n(e,t){o(a.KEY_PV,e),o(a.KEY_PV_SRC,t),o(a.KEY_CREATION,(new Date).toJSON())}return{keysCount(){return Object.keys(a).length},hasCache(){return null!==localStorage.getItem(a.KEY_PV)},getCache(){return JSON.parse(localStorage.getItem(a.KEY_PV))},saveLocalCache(e){n(e,t.LOCAL)},saveProxyCache(e){n(e,t.PROXY)},isExpired(){var e=new Date(r(a.KEY_CREATION));return e.setHours(e.getHours()+1),Date.now()>=e.getTime()},isFromLocal(){return r(a.KEY_PV_SRC)===t.LOCAL},isFromProxy(){return r(a.KEY_PV_SRC)===t.PROXY},newerThan(e){return PvStorage.getCache().totalsForAllResults["ga:pageviews"]>e.totalsForAllResults["ga:pageviews"]},inspectKeys(){if(localStorage.length!==PvStorage.keysCount())localStorage.clear();else for(let e=0;e<localStorage.length;e++)switch(localStorage.key(e)){case a.KEY_PV:case a.KEY_PV_SRC:case a.KEY_CREATION:break;default:return void localStorage.clear()}}}}();function countUp(e,t,a){e<t&&((a=new CountUp(a,e,t)).error?console.error(a.error):a.start())}function countPV(t,a){let r=0;if(void 0!==a)for(let e=0;e<a.length;++e)if(a[parseInt(e,10)][0]===t){r+=parseInt(a[parseInt(e,10)][1],10);break}return r}function tacklePV(e,t,a,r){t=0===(t=countPV(t,e))?1:t;r?(e=parseInt(a.text().replace(/,/g,""),10))<t&&countUp(e,t,a.attr("id")):a.text((new Intl.NumberFormat).format(t))}function displayPageviews(e){if(void 0!==e){let t=getInitStatus();const a=e.rows;0<$("#post-list").length?$(".post-preview").each(function(){var e=$(this).find("a").attr("href");tacklePV(a,e,$(this).find(".pageviews"),t)}):0<$(".post").length&&(e=window.location.pathname,tacklePV(a,e,$("#pv"),t))}}function fetchProxyPageviews(){PvOpts.hasProxyMeta()&&$.ajax({type:"GET",url:PvOpts.getProxyMeta(),dataType:"jsonp",jsonpCallback:"displayPageviews",success:e=>{PvStorage.saveProxyCache(JSON.stringify(e))},error:(e,t,a)=>{console.log("Failed to load pageviews from proxy server: "+a)}})}function fetchLocalPageviews(t=!1){return fetch(PvOpts.getLocalMeta()).then(e=>e.json()).then(e=>{t&&PvStorage.isFromProxy()&&PvStorage.newerThan(e)||(displayPageviews(e),PvStorage.saveLocalCache(JSON.stringify(e)))})}$(function(){$(".pageviews").length<=0||(PvStorage.inspectKeys(),PvStorage.hasCache()?(displayPageviews(PvStorage.getCache()),PvStorage.isExpired()?PvOpts.hasLocalMeta()?fetchLocalPageviews(!0).then(fetchProxyPageviews):fetchProxyPageviews():PvStorage.isFromLocal()&&fetchProxyPageviews()):PvOpts.hasLocalMeta()?fetchLocalPageviews().then(fetchProxyPageviews):fetchProxyPageviews())});
|
data/assets/js/pwa/app.js
CHANGED
@@ -7,41 +7,41 @@ const $notification = $('#notification');
|
|
7
7
|
const $btnRefresh = $('#notification .toast-body>button');
|
8
8
|
|
9
9
|
if ('serviceWorker' in navigator) {
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
}
|
18
|
-
|
19
|
-
registration.addEventListener('updatefound', () => {
|
20
|
-
registration.installing.addEventListener('statechange', () => {
|
21
|
-
if (registration.waiting) {
|
22
|
-
if (navigator.serviceWorker.controller) {
|
23
|
-
$notification.toast('show');
|
10
|
+
/* Registering Service Worker */
|
11
|
+
navigator.serviceWorker.register('{{ "/sw.js" | relative_url }}')
|
12
|
+
.then(registration => {
|
13
|
+
|
14
|
+
/* in case the user ignores the notification */
|
15
|
+
if (registration.waiting) {
|
16
|
+
$notification.toast('show');
|
24
17
|
}
|
25
|
-
|
18
|
+
|
19
|
+
registration.addEventListener('updatefound', () => {
|
20
|
+
registration.installing.addEventListener('statechange', () => {
|
21
|
+
if (registration.waiting) {
|
22
|
+
if (navigator.serviceWorker.controller) {
|
23
|
+
$notification.toast('show');
|
24
|
+
}
|
25
|
+
}
|
26
|
+
});
|
27
|
+
});
|
28
|
+
|
29
|
+
$btnRefresh.click(() => {
|
30
|
+
if (registration.waiting) {
|
31
|
+
registration.waiting.postMessage('SKIP_WAITING');
|
32
|
+
}
|
33
|
+
$notification.toast('hide');
|
34
|
+
});
|
26
35
|
});
|
27
|
-
});
|
28
36
|
|
29
|
-
|
30
|
-
|
31
|
-
|
37
|
+
let refreshing = false;
|
38
|
+
|
39
|
+
/* Detect controller change and refresh all the opened tabs */
|
40
|
+
navigator.serviceWorker.addEventListener('controllerchange', () => {
|
41
|
+
if (!refreshing) {
|
42
|
+
window.location.reload();
|
43
|
+
refreshing = true;
|
32
44
|
}
|
33
|
-
|
34
|
-
});
|
35
|
-
}
|
36
|
-
);
|
37
|
-
|
38
|
-
let refreshing = false;
|
39
|
-
|
40
|
-
/* Detect controller change and refresh all the opened tabs */
|
41
|
-
navigator.serviceWorker.addEventListener('controllerchange', () => {
|
42
|
-
if (!refreshing) {
|
43
|
-
window.location.reload();
|
44
|
-
refreshing = true;
|
45
|
-
}
|
46
|
-
});
|
45
|
+
});
|
47
46
|
}
|
47
|
+
|
data/assets/js/pwa/sw.js
CHANGED
@@ -9,81 +9,82 @@ self.importScripts('{{ "/assets/js/data/swcache.js" | relative_url }}');
|
|
9
9
|
const cacheName = 'chirpy-{{ "now" | date: "%Y%m%d.%H%M%S" }}';
|
10
10
|
|
11
11
|
function verifyDomain(url) {
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
12
|
+
for (const domain of allowedDomains) {
|
13
|
+
const regex = RegExp(`^http(s)?:\/\/${domain}\/`);
|
14
|
+
if (regex.test(url)) {
|
15
|
+
return true;
|
16
|
+
}
|
16
17
|
}
|
17
|
-
}
|
18
18
|
|
19
|
-
|
19
|
+
return false;
|
20
20
|
}
|
21
21
|
|
22
22
|
function isExcluded(url) {
|
23
|
-
|
24
|
-
|
25
|
-
|
23
|
+
for (const item of denyUrls) {
|
24
|
+
if (url === item) {
|
25
|
+
return true;
|
26
|
+
}
|
26
27
|
}
|
27
|
-
|
28
|
-
return false;
|
28
|
+
return false;
|
29
29
|
}
|
30
30
|
|
31
31
|
self.addEventListener('install', event => {
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
32
|
+
event.waitUntil(
|
33
|
+
caches.open(cacheName).then(cache => {
|
34
|
+
return cache.addAll(resource);
|
35
|
+
})
|
36
|
+
);
|
37
37
|
});
|
38
38
|
|
39
39
|
self.addEventListener('activate', event => {
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
40
|
+
event.waitUntil(
|
41
|
+
caches.keys().then(keyList => {
|
42
|
+
return Promise.all(
|
43
|
+
keyList.map(key => {
|
44
|
+
if (key !== cacheName) {
|
45
|
+
return caches.delete(key);
|
46
|
+
}
|
47
|
+
})
|
48
|
+
);
|
47
49
|
})
|
48
|
-
|
49
|
-
})
|
50
|
-
);
|
50
|
+
);
|
51
51
|
});
|
52
52
|
|
53
53
|
self.addEventListener('message', (event) => {
|
54
|
-
|
55
|
-
|
56
|
-
|
54
|
+
if (event.data === 'SKIP_WAITING') {
|
55
|
+
self.skipWaiting();
|
56
|
+
}
|
57
57
|
});
|
58
58
|
|
59
59
|
self.addEventListener('fetch', event => {
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
60
|
+
event.respondWith(
|
61
|
+
caches.match(event.request).then(response => {
|
62
|
+
if (response) {
|
63
|
+
return response;
|
64
|
+
}
|
65
65
|
|
66
|
-
|
67
|
-
|
66
|
+
return fetch(event.request).then(response => {
|
67
|
+
const url = event.request.url;
|
68
68
|
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
69
|
+
if (event.request.method !== 'GET' ||
|
70
|
+
!verifyDomain(url) ||
|
71
|
+
isExcluded(url)) {
|
72
|
+
return response;
|
73
|
+
}
|
74
74
|
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
75
|
+
/*
|
76
|
+
see: <https://developers.google.com/web/fundamentals/primers/service-workers#cache_and_return_requests>
|
77
|
+
*/
|
78
|
+
let responseToCache = response.clone();
|
79
79
|
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
80
|
+
caches.open(cacheName).then(cache => {
|
81
|
+
/* console.log('[sw] Caching new resource: ' + event.request.url); */
|
82
|
+
cache.put(event.request, responseToCache);
|
83
|
+
});
|
84
84
|
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
85
|
+
return response;
|
86
|
+
});
|
87
|
+
})
|
88
|
+
);
|
89
89
|
});
|
90
|
+
|
data/assets/js/pwa/unregister.js
CHANGED
@@ -4,9 +4,9 @@ permalink: '/unregister.js'
|
|
4
4
|
---
|
5
5
|
|
6
6
|
if ('serviceWorker' in navigator) {
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
7
|
+
navigator.serviceWorker.getRegistrations().then((registrations) => {
|
8
|
+
for (let reg of registrations) {
|
9
|
+
reg.unregister();
|
10
|
+
}
|
11
|
+
});
|
12
12
|
}
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: jekyll-theme-chirpy
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 5.3.
|
4
|
+
version: 5.3.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Cotes Chung
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-
|
11
|
+
date: 2022-11-22 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: jekyll
|
@@ -103,7 +103,6 @@ extra_rdoc_files: []
|
|
103
103
|
files:
|
104
104
|
- LICENSE
|
105
105
|
- README.md
|
106
|
-
- _config.yml
|
107
106
|
- _data/assets/cross_origin.yml
|
108
107
|
- _data/assets/self_host.yml
|
109
108
|
- _data/authors.yml
|
@@ -136,7 +135,6 @@ files:
|
|
136
135
|
- _includes/head.html
|
137
136
|
- _includes/js-selector.html
|
138
137
|
- _includes/jsdelivr-combine.html
|
139
|
-
- _includes/lang.html
|
140
138
|
- _includes/language-alias.html
|
141
139
|
- _includes/mermaid.html
|
142
140
|
- _includes/mode-toggle.html
|
@@ -164,7 +162,6 @@ files:
|
|
164
162
|
- _layouts/post.html
|
165
163
|
- _layouts/tag.html
|
166
164
|
- _layouts/tags.html
|
167
|
-
- _plugins/posts-lastmod-hook.rb
|
168
165
|
- _sass/addon/commons.scss
|
169
166
|
- _sass/addon/module.scss
|
170
167
|
- _sass/addon/syntax.scss
|
@@ -181,10 +178,6 @@ files:
|
|
181
178
|
- _sass/layout/post.scss
|
182
179
|
- _sass/layout/tags.scss
|
183
180
|
- _sass/variables-hook.scss
|
184
|
-
- _tabs/about.md
|
185
|
-
- _tabs/archives.md
|
186
|
-
- _tabs/categories.md
|
187
|
-
- _tabs/tags.md
|
188
181
|
- assets/404.html
|
189
182
|
- assets/css/style.scss
|
190
183
|
- assets/feed.xml
|
@@ -210,7 +203,6 @@ files:
|
|
210
203
|
- assets/js/pwa/sw.js
|
211
204
|
- assets/js/pwa/unregister.js
|
212
205
|
- assets/robots.txt
|
213
|
-
- index.html
|
214
206
|
homepage: https://github.com/cotes2020/jekyll-theme-chirpy
|
215
207
|
licenses:
|
216
208
|
- MIT
|
data/_config.yml
DELETED
@@ -1,201 +0,0 @@
|
|
1
|
-
# The Site Configuration
|
2
|
-
|
3
|
-
# Import the theme
|
4
|
-
theme: jekyll-theme-chirpy
|
5
|
-
|
6
|
-
# Change the following value to '/PROJECT_NAME' ONLY IF your site type is GitHub Pages Project sites
|
7
|
-
# and doesn't have a custom domain.
|
8
|
-
baseurl: ''
|
9
|
-
|
10
|
-
# The language of the webpage › http://www.lingoes.net/en/translator/langcode.htm
|
11
|
-
# If it has the same name as one of the files in folder `_data/locales`, the layout language will also be changed,
|
12
|
-
# otherwise, the layout language will use the default value of 'en'.
|
13
|
-
lang: en
|
14
|
-
|
15
|
-
# Additional parameters for datetime localization, optional. › https://github.com/iamkun/dayjs/tree/dev/src/locale
|
16
|
-
prefer_datetime_locale:
|
17
|
-
|
18
|
-
# Change to your timezone › http://www.timezoneconverter.com/cgi-bin/findzone/findzone
|
19
|
-
timezone: Asia/Shanghai
|
20
|
-
|
21
|
-
# jekyll-seo-tag settings › https://github.com/jekyll/jekyll-seo-tag/blob/master/docs/usage.md
|
22
|
-
# ↓ --------------------------
|
23
|
-
|
24
|
-
title: Chirpy # the main title
|
25
|
-
|
26
|
-
tagline: A text-focused Jekyll theme # it will display as the sub-title
|
27
|
-
|
28
|
-
description: >- # used by seo meta and the atom feed
|
29
|
-
A minimal, responsive, and powerful Jekyll theme for presenting professional writing.
|
30
|
-
|
31
|
-
# fill in the protocol & hostname for your site, e.g., 'https://username.github.io'
|
32
|
-
url: ''
|
33
|
-
|
34
|
-
github:
|
35
|
-
username: github_username # change to your github username
|
36
|
-
|
37
|
-
twitter:
|
38
|
-
username: twitter_username # change to your twitter username
|
39
|
-
|
40
|
-
social:
|
41
|
-
# Change to your full name.
|
42
|
-
# It will be displayed as the default author of the posts and the copyright owner in the Footer
|
43
|
-
name: your_full_name
|
44
|
-
email: example@doamin.com # change to your email address
|
45
|
-
links:
|
46
|
-
# The first element serves as the copyright owner's link
|
47
|
-
- https://twitter.com/username # change to your twitter homepage
|
48
|
-
- https://github.com/username # change to your github homepage
|
49
|
-
# Uncomment below to add more social links
|
50
|
-
# - https://www.facebook.com/username
|
51
|
-
# - https://www.linkedin.com/in/username
|
52
|
-
|
53
|
-
google_site_verification: # fill in to your verification string
|
54
|
-
|
55
|
-
# ↑ --------------------------
|
56
|
-
# The end of `jekyll-seo-tag` settings
|
57
|
-
|
58
|
-
google_analytics:
|
59
|
-
id: # fill in your Google Analytics ID
|
60
|
-
# Google Analytics pageviews report settings
|
61
|
-
pv:
|
62
|
-
proxy_endpoint: # fill in the Google Analytics superProxy endpoint of Google App Engine
|
63
|
-
cache_path: # the local PV cache data, friendly to visitors from GFW region
|
64
|
-
|
65
|
-
# Prefer color scheme setting.
|
66
|
-
#
|
67
|
-
# Note: Keep empty will follow the system prefer color by default,
|
68
|
-
# and there will be a toggle to switch the theme between dark and light
|
69
|
-
# on the bottom left of the sidebar.
|
70
|
-
#
|
71
|
-
# Available options:
|
72
|
-
#
|
73
|
-
# light - Use the light color scheme
|
74
|
-
# dark - Use the dark color scheme
|
75
|
-
#
|
76
|
-
theme_mode: # [light|dark]
|
77
|
-
|
78
|
-
# The CDN endpoint for images.
|
79
|
-
# Notice that once it is assigned, the CDN url
|
80
|
-
# will be added to all image (site avatar & posts' images) paths starting with '/'
|
81
|
-
#
|
82
|
-
# e.g. 'https://cdn.com'
|
83
|
-
img_cdn:
|
84
|
-
|
85
|
-
# the avatar on sidebar, support local or CORS resources
|
86
|
-
avatar:
|
87
|
-
|
88
|
-
# boolean type, the global switch for ToC in posts.
|
89
|
-
toc: true
|
90
|
-
|
91
|
-
comments:
|
92
|
-
active: # The global switch for posts comments, e.g., 'disqus'. Keep it empty means disable
|
93
|
-
# The active options are as follows:
|
94
|
-
disqus:
|
95
|
-
shortname: # fill with the Disqus shortname. › https://help.disqus.com/en/articles/1717111-what-s-a-shortname
|
96
|
-
# utterances settings › https://utteranc.es/
|
97
|
-
utterances:
|
98
|
-
repo: # <gh-username>/<repo>
|
99
|
-
issue_term: # < url | pathname | title | ...>
|
100
|
-
# Giscus options › https://giscus.app
|
101
|
-
giscus:
|
102
|
-
repo: # <gh-username>/<repo>
|
103
|
-
repo_id:
|
104
|
-
category:
|
105
|
-
category_id:
|
106
|
-
mapping: # optional, default to 'pathname'
|
107
|
-
input_position: # optional, default to 'bottom'
|
108
|
-
lang: # optional, default to the value of `site.lang`
|
109
|
-
|
110
|
-
# Self-hosted static assets, optional › https://github.com/cotes2020/chirpy-static-assets
|
111
|
-
assets:
|
112
|
-
self_host:
|
113
|
-
enabled: # boolean, keep empty means false
|
114
|
-
# specify the Jekyll environment, empty means both
|
115
|
-
# only works if `assets.self_host.enabled` is 'true'
|
116
|
-
env: # [development|production]
|
117
|
-
|
118
|
-
pwa:
|
119
|
-
enabled: true # the option for PWA feature
|
120
|
-
|
121
|
-
paginate: 10
|
122
|
-
|
123
|
-
# ------------ The following options are not recommended to be modified ------------------
|
124
|
-
|
125
|
-
kramdown:
|
126
|
-
syntax_highlighter: rouge
|
127
|
-
syntax_highlighter_opts: # Rouge Options › https://github.com/jneen/rouge#full-options
|
128
|
-
css_class: highlight
|
129
|
-
# default_lang: console
|
130
|
-
span:
|
131
|
-
line_numbers: false
|
132
|
-
block:
|
133
|
-
line_numbers: true
|
134
|
-
start_line: 1
|
135
|
-
|
136
|
-
collections:
|
137
|
-
tabs:
|
138
|
-
output: true
|
139
|
-
sort_by: order
|
140
|
-
|
141
|
-
defaults:
|
142
|
-
- scope:
|
143
|
-
path: '' # An empty string here means all files in the project
|
144
|
-
type: posts
|
145
|
-
values:
|
146
|
-
layout: post
|
147
|
-
comments: true # Enable comments in posts.
|
148
|
-
toc: true # Display TOC column in posts.
|
149
|
-
# DO NOT modify the following parameter unless you are confident enough
|
150
|
-
# to update the code of all other post links in this project.
|
151
|
-
permalink: /posts/:title/
|
152
|
-
- scope:
|
153
|
-
path: _drafts
|
154
|
-
values:
|
155
|
-
comments: false
|
156
|
-
- scope:
|
157
|
-
path: ''
|
158
|
-
type: tabs # see `site.collections`
|
159
|
-
values:
|
160
|
-
layout: page
|
161
|
-
permalink: /:title/
|
162
|
-
- scope:
|
163
|
-
path: assets/img/favicons
|
164
|
-
values:
|
165
|
-
swcache: true
|
166
|
-
- scope:
|
167
|
-
path: assets/js/dist
|
168
|
-
values:
|
169
|
-
swcache: true
|
170
|
-
|
171
|
-
sass:
|
172
|
-
style: compressed
|
173
|
-
|
174
|
-
compress_html:
|
175
|
-
clippings: all
|
176
|
-
comments: all
|
177
|
-
endings: all
|
178
|
-
profile: false
|
179
|
-
blanklines: false
|
180
|
-
ignore:
|
181
|
-
envs: [development]
|
182
|
-
|
183
|
-
exclude:
|
184
|
-
- '*.gem'
|
185
|
-
- '*.gemspec'
|
186
|
-
- tools
|
187
|
-
- README.md
|
188
|
-
- CHANGELOG.md
|
189
|
-
- LICENSE
|
190
|
-
- gulpfile.js
|
191
|
-
- node_modules
|
192
|
-
- package*.json
|
193
|
-
|
194
|
-
jekyll-archives:
|
195
|
-
enabled: [categories, tags]
|
196
|
-
layouts:
|
197
|
-
category: category
|
198
|
-
tag: tag
|
199
|
-
permalinks:
|
200
|
-
tag: /tags/:name/
|
201
|
-
category: /categories/:name/
|
data/_includes/lang.html
DELETED
@@ -1,14 +0,0 @@
|
|
1
|
-
#!/usr/bin/env ruby
|
2
|
-
#
|
3
|
-
# Check for changed posts
|
4
|
-
|
5
|
-
Jekyll::Hooks.register :posts, :post_init do |post|
|
6
|
-
|
7
|
-
commit_num = `git rev-list --count HEAD "#{ post.path }"`
|
8
|
-
|
9
|
-
if commit_num.to_i > 1
|
10
|
-
lastmod_date = `git log -1 --pretty="%ad" --date=iso "#{ post.path }"`
|
11
|
-
post.data['last_modified_at'] = lastmod_date
|
12
|
-
end
|
13
|
-
|
14
|
-
end
|
data/_tabs/about.md
DELETED