jekyll-theme-chirpy-g 1.0.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.
Files changed (144) hide show
  1. checksums.yaml +7 -0
  2. data/LICENSE +21 -0
  3. data/README.md +61 -0
  4. data/_data/locales/ar.yml +91 -0
  5. data/_data/locales/bg-BG.yml +81 -0
  6. data/_data/locales/cs-CZ.yml +89 -0
  7. data/_data/locales/de-DE.yml +87 -0
  8. data/_data/locales/el-GR.yml +91 -0
  9. data/_data/locales/en.yml +91 -0
  10. data/_data/locales/es-ES.yml +77 -0
  11. data/_data/locales/fa-IR.yaml +91 -0
  12. data/_data/locales/fi-FI.yml +90 -0
  13. data/_data/locales/fr-FR.yml +77 -0
  14. data/_data/locales/hu-HU.yml +92 -0
  15. data/_data/locales/id-ID.yml +77 -0
  16. data/_data/locales/it-IT.yml +90 -0
  17. data/_data/locales/ko-KR.yml +84 -0
  18. data/_data/locales/my-MM.yml +77 -0
  19. data/_data/locales/nl-NL.yml +90 -0
  20. data/_data/locales/pt-BR.yml +77 -0
  21. data/_data/locales/ru-RU.yml +87 -0
  22. data/_data/locales/sl-SI.yml +91 -0
  23. data/_data/locales/sv-SE.yml +91 -0
  24. data/_data/locales/th.yml +91 -0
  25. data/_data/locales/tr-TR.yml +77 -0
  26. data/_data/locales/uk-UA.yml +77 -0
  27. data/_data/locales/vi-VN.yml +76 -0
  28. data/_data/locales/zh-CN.yml +83 -0
  29. data/_data/locales/zh-TW.yml +83 -0
  30. data/_data/origin/basic.yml +39 -0
  31. data/_data/origin/cors.yml +54 -0
  32. data/_includes/analytics/cloudflare.html +6 -0
  33. data/_includes/analytics/fathom.html +6 -0
  34. data/_includes/analytics/goatcounter.html +6 -0
  35. data/_includes/analytics/google.html +13 -0
  36. data/_includes/analytics/matomo.html +13 -0
  37. data/_includes/analytics/umami.html +6 -0
  38. data/_includes/comment.html +5 -0
  39. data/_includes/comments/disqus.html +57 -0
  40. data/_includes/comments/giscus.html +55 -0
  41. data/_includes/comments/utterances.html +38 -0
  42. data/_includes/datetime.html +20 -0
  43. data/_includes/embed/audio.html +35 -0
  44. data/_includes/embed/bilibili.html +9 -0
  45. data/_includes/embed/twitch.html +8 -0
  46. data/_includes/embed/video.html +59 -0
  47. data/_includes/embed/youtube.html +9 -0
  48. data/_includes/favicons.html +19 -0
  49. data/_includes/footer.html +49 -0
  50. data/_includes/head.html +126 -0
  51. data/_includes/js-selector.html +86 -0
  52. data/_includes/jsdelivr-combine.html +26 -0
  53. data/_includes/lang.html +10 -0
  54. data/_includes/language-alias.html +70 -0
  55. data/_includes/media-url.html +37 -0
  56. data/_includes/metadata-hook.html +1 -0
  57. data/_includes/notification.html +24 -0
  58. data/_includes/origin-type.html +13 -0
  59. data/_includes/pageviews/goatcounter.html +21 -0
  60. data/_includes/post-description.html +25 -0
  61. data/_includes/post-nav.html +34 -0
  62. data/_includes/post-paginator.html +91 -0
  63. data/_includes/post-sharing.html +52 -0
  64. data/_includes/read-time.html +37 -0
  65. data/_includes/refactor-content.html +255 -0
  66. data/_includes/related-posts.html +94 -0
  67. data/_includes/search-loader.html +49 -0
  68. data/_includes/search-results.html +10 -0
  69. data/_includes/sidebar.html +97 -0
  70. data/_includes/toc-status.html +10 -0
  71. data/_includes/toc.html +9 -0
  72. data/_includes/topbar.html +77 -0
  73. data/_includes/trending-tags.html +46 -0
  74. data/_includes/update-list.html +40 -0
  75. data/_layouts/archives.html +35 -0
  76. data/_layouts/categories.html +138 -0
  77. data/_layouts/category.html +24 -0
  78. data/_layouts/compress.html +10 -0
  79. data/_layouts/default.html +86 -0
  80. data/_layouts/graph.html +8 -0
  81. data/_layouts/home.html +122 -0
  82. data/_layouts/page.html +20 -0
  83. data/_layouts/post.html +179 -0
  84. data/_layouts/tag.html +23 -0
  85. data/_layouts/tags.html +22 -0
  86. data/_sass/abstracts/_breakpoints.scss +73 -0
  87. data/_sass/abstracts/_index.scss +4 -0
  88. data/_sass/abstracts/_mixins.scss +80 -0
  89. data/_sass/abstracts/_placeholders.scss +160 -0
  90. data/_sass/abstracts/_variables.scss +30 -0
  91. data/_sass/base/_base.scss +476 -0
  92. data/_sass/base/_index.scss +4 -0
  93. data/_sass/base/_reset.scss +41 -0
  94. data/_sass/base/_syntax.scss +253 -0
  95. data/_sass/base/_typography.scss +266 -0
  96. data/_sass/components/_buttons.scss +51 -0
  97. data/_sass/components/_index.scss +2 -0
  98. data/_sass/components/_popups.scss +172 -0
  99. data/_sass/layout/_footer.scss +36 -0
  100. data/_sass/layout/_index.scss +4 -0
  101. data/_sass/layout/_panel.scss +70 -0
  102. data/_sass/layout/_sidebar.scss +258 -0
  103. data/_sass/layout/_topbar.scss +86 -0
  104. data/_sass/main.bundle.scss +2 -0
  105. data/_sass/main.scss +4 -0
  106. data/_sass/pages/_archives.scss +140 -0
  107. data/_sass/pages/_categories.scss +82 -0
  108. data/_sass/pages/_category-tag.scss +63 -0
  109. data/_sass/pages/_graph.scss +51 -0
  110. data/_sass/pages/_home.scss +173 -0
  111. data/_sass/pages/_index.scss +8 -0
  112. data/_sass/pages/_post.scss +498 -0
  113. data/_sass/pages/_search.scss +184 -0
  114. data/_sass/pages/_tags.scss +23 -0
  115. data/_sass/themes/_dark.scss +318 -0
  116. data/_sass/themes/_light.scss +330 -0
  117. data/assets/404.html +14 -0
  118. data/assets/css/jekyll-theme-chirpy-g.scss +10 -0
  119. data/assets/feed.xml +54 -0
  120. data/assets/img/favicons/android-chrome-192x192.png +0 -0
  121. data/assets/img/favicons/android-chrome-512x512.png +0 -0
  122. data/assets/img/favicons/apple-touch-icon.png +0 -0
  123. data/assets/img/favicons/browserconfig.xml +13 -0
  124. data/assets/img/favicons/favicon-16x16.png +0 -0
  125. data/assets/img/favicons/favicon-32x32.png +0 -0
  126. data/assets/img/favicons/favicon.ico +0 -0
  127. data/assets/img/favicons/mstile-150x150.png +0 -0
  128. data/assets/img/favicons/site.webmanifest +26 -0
  129. data/assets/js/data/graph.json +14 -0
  130. data/assets/js/data/mathjax.js +25 -0
  131. data/assets/js/data/search.json +20 -0
  132. data/assets/js/data/swconf.js +47 -0
  133. data/assets/js/dist/app.min.js +7 -0
  134. data/assets/js/dist/categories.min.js +4 -0
  135. data/assets/js/dist/commons.min.js +4 -0
  136. data/assets/js/dist/graph.min.js +4 -0
  137. data/assets/js/dist/home.min.js +4 -0
  138. data/assets/js/dist/misc.min.js +4 -0
  139. data/assets/js/dist/page.min.js +4 -0
  140. data/assets/js/dist/post.min.js +4 -0
  141. data/assets/js/dist/sw.min.js +7 -0
  142. data/assets/js/dist/theme.min.js +4 -0
  143. data/assets/robots.txt +10 -0
  144. metadata +286 -0
@@ -0,0 +1,76 @@
1
+ # The layout text of site
2
+
3
+ # ----- Commons label -----
4
+
5
+ layout:
6
+ post: Bài viết
7
+ category: Danh mục
8
+ tag: Thẻ
9
+
10
+ # The tabs of sidebar
11
+ tabs:
12
+ # format: <filename_without_extension>: <value>
13
+ home: Trang chủ
14
+ categories: Các danh mục
15
+ tags: Các thẻ
16
+ archives: Lưu trữ
17
+ about: Giới thiệu
18
+
19
+ # the text displayed in the search bar & search results
20
+ search:
21
+ hint: tìm kiếm
22
+ cancel: Hủy
23
+ no_results: Không có kết quả tìm kiếm.
24
+
25
+ panel:
26
+ lastmod: Mới cập nhật
27
+ trending_tags: Các thẻ thịnh hành
28
+ toc: Mục lục
29
+
30
+ copyright:
31
+ # Shown at the bottom of the post
32
+ license:
33
+ template: Bài viết này được cấp phép bởi tác giả theo giấy phép :LICENSE_NAME.
34
+ name: CC BY 4.0
35
+ link: https://creativecommons.org/licenses/by/4.0/
36
+
37
+ # Displayed in the footer
38
+ brief: Một số quyền được bảo lưu.
39
+ verbose: >-
40
+ Trừ khi có ghi chú khác, các bài viết đăng trên trang này được cấp phép bởi tác giả theo giấy phép Creative Commons Attribution 4.0 International (CC BY 4.0).
41
+
42
+ meta: Trang web này được tạo bởi :PLATFORM với chủ đề :THEME
43
+
44
+ not_found:
45
+ statement: Xin lỗi, chúng tôi đã đặt nhầm URL hoặc đường dẫn trỏ đến một trang nào đó không tồn tại.
46
+
47
+ notification:
48
+ update_found: Đã có phiên bản mới của nội dung.
49
+ update: Cập nhật
50
+
51
+ # ----- Posts related labels -----
52
+
53
+ post:
54
+ written_by: Viết bởi
55
+ posted: Đăng lúc
56
+ updated: Cập nhật lúc
57
+ words: từ
58
+ pageview_measure: lượt xem
59
+ read_time:
60
+ unit: phút
61
+ prompt: đọc
62
+ relate_posts: Bài viết liên quan
63
+ share: Chia sẻ
64
+ button:
65
+ next: Mới hơn
66
+ previous: Cũ hơn
67
+ copy_code:
68
+ succeed: Đã sao chép!
69
+ share_link:
70
+ title: Sao chép đường dẫn
71
+ succeed: Đã sao chép đường dẫn thành công!
72
+
73
+ # categories page
74
+ categories:
75
+ category_measure: danh mục
76
+ post_measure: bài viết
@@ -0,0 +1,83 @@
1
+ # The layout text of site
2
+
3
+ # ----- Commons label -----
4
+
5
+ layout:
6
+ post: 文章
7
+ category: 分类
8
+ tag: 标签
9
+
10
+ # The tabs of sidebar
11
+ tabs:
12
+ # format: <filename_without_extension>: <value>
13
+ home: 首页
14
+ categories: 分类
15
+ tags: 标签
16
+ archives: 归档
17
+ about: 关于
18
+
19
+ # the text displayed in the search bar & search results
20
+ search:
21
+ hint: 搜索
22
+ cancel: 取消
23
+ no_results: 搜索结果为空
24
+
25
+ panel:
26
+ lastmod: 最近更新
27
+ trending_tags: 热门标签
28
+ toc: 文章内容
29
+
30
+ copyright:
31
+ # Shown at the bottom of the post
32
+ license:
33
+ template: 本文由作者按照 :LICENSE_NAME 进行授权
34
+ name: CC BY 4.0
35
+ link: https://creativecommons.org/licenses/by/4.0/
36
+
37
+ # Displayed in the footer
38
+ brief: 保留部分权利。
39
+ verbose: >-
40
+ 除非另有说明,本网站上的博客文章均由作者按照知识共享署名 4.0 国际 (CC BY 4.0) 许可协议进行授权。
41
+
42
+ meta: 本站采用 :PLATFORM 主题 :THEME
43
+
44
+ not_found:
45
+ statement: 抱歉,我们放错了该 URL,或者它指向了不存在的内容。
46
+
47
+ notification:
48
+ update_found: 发现新版本的内容。
49
+ update: 更新
50
+
51
+ # ----- Posts related labels -----
52
+
53
+ post:
54
+ written_by: 作者
55
+ posted: 发表于
56
+ updated: 更新于
57
+ words: 字
58
+ pageview_measure: 次浏览
59
+ read_time:
60
+ unit: 分钟
61
+ prompt: 阅读
62
+ relate_posts: 相关文章
63
+ share: 分享
64
+ button:
65
+ next: 下一篇
66
+ previous: 上一篇
67
+ copy_code:
68
+ succeed: 已复制!
69
+ share_link:
70
+ title: 分享链接
71
+ succeed: 链接已复制!
72
+
73
+ # Date time format.
74
+ # See: <http://strftime.net/>, <https://day.js.org/docs/en/display/format>
75
+ df:
76
+ post:
77
+ strftime: "%Y/%m/%d"
78
+ dayjs: "YYYY/MM/DD"
79
+
80
+ # categories page
81
+ categories:
82
+ category_measure: 个分类
83
+ post_measure: 篇文章
@@ -0,0 +1,83 @@
1
+ # The layout text of site
2
+
3
+ # ----- Commons label -----
4
+
5
+ layout:
6
+ post: 文章
7
+ category: 分類
8
+ tag: 標籤
9
+
10
+ # The tabs of sidebar
11
+ tabs:
12
+ # format: <filename_without_extension>: <value>
13
+ home: 首頁
14
+ categories: 分類
15
+ tags: 標籤
16
+ archives: 封存
17
+ about: 關於
18
+
19
+ # the text displayed in the search bar & search results
20
+ search:
21
+ hint: 搜尋
22
+ cancel: 取消
23
+ no_results: 沒有搜尋結果
24
+
25
+ panel:
26
+ lastmod: 最近更新
27
+ trending_tags: 熱門標籤
28
+ toc: 文章摘要
29
+
30
+ copyright:
31
+ # Shown at the bottom of the post
32
+ license:
33
+ template: 本文章以 :LICENSE_NAME 授權
34
+ name: CC BY 4.0
35
+ link: https://creativecommons.org/licenses/by/4.0/
36
+
37
+ # Displayed in the footer
38
+ brief: 保留部份權利。
39
+ verbose: >-
40
+ 除非另有說明,否則本網誌的文章均由作者按照姓名標示 4.0 國際 (CC BY 4.0) 授權條款進行授權。
41
+
42
+ meta: 本網站使用 :PLATFORM 產生,採用 :THEME 主題
43
+
44
+ not_found:
45
+ statement: 抱歉,您可能正在存取一個已被移動的 URL,或者它從未存在。
46
+
47
+ notification:
48
+ update_found: 發現新版本更新。
49
+ update: 更新
50
+
51
+ # ----- Posts related labels -----
52
+
53
+ post:
54
+ written_by: 作者
55
+ posted: 發布於
56
+ updated: 更新於
57
+ words: 字
58
+ pageview_measure: 次瀏覽
59
+ read_time:
60
+ unit: 分鐘
61
+ prompt: 閱讀
62
+ relate_posts: 相關文章
63
+ share: 分享
64
+ button:
65
+ next: 下一篇
66
+ previous: 上一篇
67
+ copy_code:
68
+ succeed: 已複製!
69
+ share_link:
70
+ title: 分享連結
71
+ succeed: 已複製連結!
72
+
73
+ # Date time format.
74
+ # See: <http://strftime.net/>, <https://day.js.org/docs/en/display/format>
75
+ df:
76
+ post:
77
+ strftime: "%Y/%m/%d"
78
+ dayjs: "YYYY/MM/DD"
79
+
80
+ # categories page
81
+ categories:
82
+ category_measure: 個分類
83
+ post_measure: 篇文章
@@ -0,0 +1,39 @@
1
+ # fonts
2
+
3
+ webfonts: /assets/lib/fonts/main.css
4
+
5
+ # Libraries
6
+
7
+ toc:
8
+ css: /assets/lib/tocbot/tocbot.min.css
9
+ js: /assets/lib/tocbot/tocbot.min.js
10
+
11
+ fontawesome:
12
+ css: /assets/lib/fontawesome-free/css/all.min.css
13
+
14
+ search:
15
+ js: /assets/lib/simple-jekyll-search/simple-jekyll-search.min.js
16
+
17
+ mermaid:
18
+ js: /assets/lib/mermaid/mermaid.min.js
19
+
20
+ dayjs:
21
+ js:
22
+ common: /assets/lib/dayjs/dayjs.min.js
23
+ locale: /assets/lib/dayjs/locale/en.js
24
+ relativeTime: /assets/lib/dayjs/plugin/relativeTime.js
25
+ localizedFormat: /assets/lib/dayjs/plugin/localizedFormat.js
26
+
27
+ glightbox:
28
+ css: /assets/lib/glightbox/glightbox.min.css
29
+ js: /assets/lib/glightbox/glightbox.min.js
30
+
31
+ lazy-polyfill:
32
+ css: /assets/lib/loading-attribute-polyfill/loading-attribute-polyfill.min.css
33
+ js: /assets/lib/loading-attribute-polyfill/loading-attribute-polyfill.umd.min.js
34
+
35
+ clipboard:
36
+ js: /assets/lib/clipboard/clipboard.min.js
37
+
38
+ mathjax:
39
+ js: /assets/lib/mathjax/tex-chtml.js
@@ -0,0 +1,54 @@
1
+ # Resource Hints
2
+ resource_hints:
3
+ - url: https://fonts.googleapis.com
4
+ links:
5
+ - rel: preconnect
6
+ - rel: dns-prefetch
7
+ - url: https://fonts.gstatic.com
8
+ links:
9
+ - rel: preconnect
10
+ opts: [crossorigin]
11
+ - rel: dns-prefetch
12
+ - url: https://cdn.jsdelivr.net
13
+ links:
14
+ - rel: preconnect
15
+ - rel: dns-prefetch
16
+
17
+ # Web Fonts
18
+ webfonts: https://fonts.googleapis.com/css2?family=Lato:wght@300;400&family=Source+Sans+Pro:wght@400;600;700;900&display=swap
19
+
20
+ # Libraries
21
+
22
+ toc:
23
+ css: https://cdn.jsdelivr.net/npm/tocbot@4.32.2/dist/tocbot.min.css
24
+ js: https://cdn.jsdelivr.net/npm/tocbot@4.32.2/dist/tocbot.min.js
25
+
26
+ fontawesome:
27
+ css: https://cdn.jsdelivr.net/npm/@fortawesome/fontawesome-free@6.7.1/css/all.min.css
28
+
29
+ search:
30
+ js: https://cdn.jsdelivr.net/npm/simple-jekyll-search@1.10.0/dest/simple-jekyll-search.min.js
31
+
32
+ mermaid:
33
+ js: https://cdn.jsdelivr.net/npm/mermaid@11.4.0/dist/mermaid.min.js
34
+
35
+ dayjs:
36
+ js:
37
+ common: https://cdn.jsdelivr.net/npm/dayjs@1.11.13/dayjs.min.js
38
+ locale: https://cdn.jsdelivr.net/npm/dayjs@1.11.13/locale/:LOCALE.js
39
+ relativeTime: https://cdn.jsdelivr.net/npm/dayjs@1.11.13/plugin/relativeTime.js
40
+ localizedFormat: https://cdn.jsdelivr.net/npm/dayjs@1.11.13/plugin/localizedFormat.js
41
+
42
+ glightbox:
43
+ css: https://cdn.jsdelivr.net/npm/glightbox@3.3.0/dist/css/glightbox.min.css
44
+ js: https://cdn.jsdelivr.net/npm/glightbox@3.3.0/dist/js/glightbox.min.js
45
+
46
+ lazy-polyfill:
47
+ css: https://cdn.jsdelivr.net/npm/loading-attribute-polyfill@2.1.1/dist/loading-attribute-polyfill.min.css
48
+ js: https://cdn.jsdelivr.net/npm/loading-attribute-polyfill@2.1.1/dist/loading-attribute-polyfill.umd.min.js
49
+
50
+ clipboard:
51
+ js: https://cdn.jsdelivr.net/npm/clipboard@2.0.11/dist/clipboard.min.js
52
+
53
+ mathjax:
54
+ js: https://cdn.jsdelivr.net/npm/mathjax@3.2.2/es5/tex-chtml.js
@@ -0,0 +1,6 @@
1
+ <!-- Cloudflare Web Analytics -->
2
+ <script
3
+ defer
4
+ src="https://static.cloudflareinsights.com/beacon.min.js"
5
+ data-cf-beacon='{"token": "{{ site.analytics.cloudflare.id }}"}'
6
+ ></script>
@@ -0,0 +1,6 @@
1
+ <!-- Fathom -->
2
+ <script
3
+ src="https://cdn.usefathom.com/script.js"
4
+ data-site="{{ site.analytics.fathom.id }}"
5
+ defer
6
+ ></script>
@@ -0,0 +1,6 @@
1
+ <!-- GoatCounter -->
2
+ <script
3
+ async
4
+ src="https://gc.zgo.at/count.js"
5
+ data-goatcounter="https://{{ site.analytics.goatcounter.id }}.goatcounter.com/count"
6
+ ></script>
@@ -0,0 +1,13 @@
1
+ <!-- Global site tag (gtag.js) - Google Analytics -->
2
+ <script defer src="https://www.googletagmanager.com/gtag/js?id={{ site.analytics.google.id }}"></script>
3
+ <script>
4
+ document.addEventListener('DOMContentLoaded', () => {
5
+ window.dataLayer = window.dataLayer || [];
6
+ function gtag() {
7
+ dataLayer.push(arguments);
8
+ }
9
+
10
+ gtag('js', new Date());
11
+ gtag('config', '{{ site.analytics.google.id }}');
12
+ });
13
+ </script>
@@ -0,0 +1,13 @@
1
+ <!-- Matomo -->
2
+ <script>
3
+ document.addEventListener('DOMContentLoaded', () => {
4
+ var _paq = (window._paq = window._paq || []);
5
+ _paq.push(['trackPageView']);
6
+ _paq.push(['enableLinkTracking']);
7
+ var u="//{{ site.analytics.matomo.domain }}/";
8
+ _paq.push(['setTrackerUrl', u+'matomo.php']);
9
+ _paq.push(['setSiteId', {{ site.analytics.matomo.id }}]);
10
+ var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0];
11
+ g.type='text/javascript'; g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s);
12
+ });
13
+ </script>
@@ -0,0 +1,6 @@
1
+ <!-- Umami -->
2
+ <script
3
+ defer
4
+ src="{{ site.analytics.umami.domain }}/script.js"
5
+ data-website-id="{{ site.analytics.umami.id }}"
6
+ ></script>
@@ -0,0 +1,5 @@
1
+ <!-- The comments switcher -->
2
+ {% if page.comments and site.comments.provider %}
3
+ {% capture path %}comments/{{ site.comments.provider }}.html{% endcapture %}
4
+ {% include {{ path }} %}
5
+ {% endif %}
@@ -0,0 +1,57 @@
1
+ <script>
2
+ var disqus_config = function () {
3
+ this.page.url = '{{ page.url | absolute_url }}';
4
+ this.page.identifier = '{{ page.url }}';
5
+ };
6
+
7
+ function addDisqus() {
8
+ let disqusThread = document.createElement('div');
9
+ let paragraph = document.createElement('p');
10
+
11
+ disqusThread.id = 'disqus_thread';
12
+ paragraph.className = 'text-center text-muted small';
13
+ paragraph.innerHTML = 'Comments powered by <a href="https://disqus.com/">Disqus</a>.';
14
+ disqusThread.appendChild(paragraph);
15
+
16
+ const footer = document.querySelector('footer');
17
+ footer.insertAdjacentElement("beforebegin", disqusThread);
18
+ }
19
+
20
+ {%- comment -%} Auto switch theme {%- endcomment -%}
21
+ function reloadDisqus(event) {
22
+ if (event.source === window && event.data && event.data.id === Theme.ID) {
23
+ {%- comment -%} Disqus hasn't been loaded {%- endcomment -%}
24
+ if (typeof DISQUS === 'undefined') {
25
+ return;
26
+ }
27
+
28
+ if (document.readyState == 'complete') {
29
+ DISQUS.reset({ reload: true, config: disqus_config });
30
+ }
31
+ }
32
+ }
33
+
34
+ addDisqus();
35
+
36
+ if (Theme.switchable) {
37
+ addEventListener('message', reloadDisqus);
38
+ }
39
+
40
+ {%- comment -%} Lazy loading {%- endcomment -%}
41
+ var disqusObserver = new IntersectionObserver(
42
+ function (entries) {
43
+ if (entries[0].isIntersecting) {
44
+ var d = document,
45
+ s = d.createElement('script');
46
+ s.src = 'https://{{ site.comments.disqus.shortname }}.disqus.com/embed.js';
47
+ s.setAttribute('data-timestamp', +new Date());
48
+ (d.head || d.body).appendChild(s);
49
+
50
+ disqusObserver.disconnect();
51
+ }
52
+ },
53
+ { threshold: [0] }
54
+ );
55
+
56
+ disqusObserver.observe(document.getElementById('disqus_thread'));
57
+ </script>
@@ -0,0 +1,55 @@
1
+ <!-- https://giscus.app/ -->
2
+ <script>
3
+ (function () {
4
+ const themeMapper = Theme.getThemeMapper('light', 'dark_dimmed');
5
+ const initTheme = themeMapper[Theme.visualState];
6
+
7
+ let lang = '{{ site.comments.giscus.lang | default: lang }}';
8
+ {%- comment -%} https://github.com/giscus/giscus/tree/main/locales {%- endcomment -%}
9
+ if (lang.length > 2 && !lang.startsWith('zh')) {
10
+ lang = lang.slice(0, 2);
11
+ }
12
+
13
+ let giscusAttributes = {
14
+ src: 'https://giscus.app/client.js',
15
+ 'data-repo': '{{ site.comments.giscus.repo}}',
16
+ 'data-repo-id': '{{ site.comments.giscus.repo_id }}',
17
+ 'data-category': '{{ site.comments.giscus.category }}',
18
+ 'data-category-id': '{{ site.comments.giscus.category_id }}',
19
+ 'data-mapping': '{{ site.comments.giscus.mapping | default: 'pathname' }}',
20
+ 'data-strict' : '{{ site.comments.giscus.strict | default: '0' }}',
21
+ 'data-reactions-enabled': '{{ site.comments.giscus.reactions_enabled | default: '1' }}',
22
+ 'data-emit-metadata': '0',
23
+ 'data-theme': initTheme,
24
+ 'data-input-position': '{{ site.comments.giscus.input_position | default: 'bottom' }}',
25
+ 'data-lang': lang,
26
+ 'data-loading': 'lazy',
27
+ crossorigin: 'anonymous',
28
+ async: ''
29
+ };
30
+
31
+ let giscusNode = document.createElement('script');
32
+ Object.entries(giscusAttributes).forEach(([key, value]) =>
33
+ giscusNode.setAttribute(key, value)
34
+ );
35
+
36
+ const $footer = document.querySelector('footer');
37
+ $footer.insertAdjacentElement("beforebegin", giscusNode);
38
+
39
+ addEventListener('message', (event) => {
40
+ if (event.source === window && event.data && event.data.id === Theme.ID) {
41
+ const newTheme = themeMapper[Theme.visualState];
42
+
43
+ const message = {
44
+ setConfig: {
45
+ theme: newTheme
46
+ }
47
+ };
48
+
49
+ const giscus =
50
+ document.getElementsByClassName('giscus-frame')[0].contentWindow;
51
+ giscus.postMessage({ giscus: message }, 'https://giscus.app');
52
+ }
53
+ });
54
+ })();
55
+ </script>
@@ -0,0 +1,38 @@
1
+ <!-- https://utteranc.es/ -->
2
+ <script>
3
+ (function () {
4
+ const origin = 'https://utteranc.es';
5
+ const themeMapper = Theme.getThemeMapper('github-light', 'github-dark');
6
+ const initTheme = themeMapper[Theme.visualState];
7
+
8
+ let script = document.createElement('script');
9
+ script.src = 'https://utteranc.es/client.js';
10
+ script.setAttribute('repo', '{{ site.comments.utterances.repo }}');
11
+ script.setAttribute('issue-term', '{{ site.comments.utterances.issue_term }}');
12
+ script.setAttribute('theme', initTheme);
13
+ script.crossOrigin = 'anonymous';
14
+ script.async = true;
15
+
16
+ const $footer = document.querySelector('footer');
17
+ $footer.insertAdjacentElement('beforebegin', script);
18
+
19
+ addEventListener('message', (event) => {
20
+ let newTheme;
21
+
22
+ {%- comment -%}
23
+ Credit to <https://github.com/utterance/utterances/issues/170#issuecomment-594036347>
24
+ {%- endcomment -%}
25
+ if (event.source === window && event.data && event.data.id === Theme.ID) {
26
+ newTheme = themeMapper[Theme.visualState];
27
+
28
+ const message = {
29
+ type: 'set-theme',
30
+ theme: newTheme
31
+ };
32
+
33
+ const utterances = document.querySelector('.utterances-frame').contentWindow;
34
+ utterances.postMessage(message, origin);
35
+ }
36
+ });
37
+ })();
38
+ </script>
@@ -0,0 +1,20 @@
1
+ <!--
2
+ Date format snippet
3
+ See: ${JS_ROOT}/utils/locale-dateime.js
4
+ -->
5
+
6
+ {% assign df_strftime = site.data.locales[include.lang].df.post.strftime | default: '%d/%m/%Y' %}
7
+ {% assign df_dayjs = site.data.locales[include.lang].df.post.dayjs | default: 'DD/MM/YYYY' %}
8
+
9
+ <time
10
+ {% if include.class %}
11
+ class="{{ include.class }}"
12
+ {% endif %}
13
+ data-ts="{{ include.date | date: '%s' }}"
14
+ data-df="{{ df_dayjs }}"
15
+ {% if include.tooltip %}
16
+ data-bs-toggle="tooltip" data-bs-placement="bottom"
17
+ {% endif %}
18
+ >
19
+ {{ include.date | date: df_strftime }}
20
+ </time>
@@ -0,0 +1,35 @@
1
+ {% assign src = include.src | strip %}
2
+ {% assign title = include.title | strip %}
3
+ {% assign types = include.types | default: '' | strip | split: '|' %}
4
+
5
+ {% unless src contains '://' %}
6
+ {%- capture src -%}
7
+ {% include media-url.html src=src subpath=page.media_subpath %}
8
+ {%- endcapture -%}
9
+ {% endunless %}
10
+
11
+ <p>
12
+ <audio class="embed-audio" controls>
13
+ {% assign extension = src | split: '.' | last %}
14
+ {% assign types = extension | concat: types %}
15
+
16
+ {% assign ext_size = extension | size %}
17
+ {% assign src_size = src | size %}
18
+ {% assign slice_size = src_size | minus: ext_size %}
19
+
20
+ {% assign filepath = src | slice: 0, slice_size %}
21
+
22
+ {% for type in types %}
23
+ {% assign src = filepath | append: type %}
24
+ {% assign media_item = site.data.media | find: 'extension', type %}
25
+ {% assign mime_type = media_item.mime_type | default: type %}
26
+ <source src="{{ src }}" type="audio/{{ mime_type }}">
27
+ {% endfor %}
28
+
29
+ Your browser does not support the audio tag. Here is a
30
+ <a href="{{ src | strip }}">link to the audio file</a> instead.
31
+ </audio>
32
+ {% if title %}
33
+ <em>{{ title }}</em>
34
+ {% endif %}
35
+ </p>
@@ -0,0 +1,9 @@
1
+ <iframe
2
+ class="embed-video"
3
+ loading="lazy"
4
+ src="https://player.bilibili.com/player.html?bvid={{ include.id }}"
5
+ scrolling="no"
6
+ frameborder="0"
7
+ framespacing="0"
8
+ allowfullscreen="true"
9
+ ></iframe>
@@ -0,0 +1,8 @@
1
+ <iframe
2
+ class="embed-video twitch"
3
+ loading="lazy"
4
+ src="https://player.twitch.tv/?video={{ include.id }}&parent={{ site.url | split: '://' | last | remove: '/' }}"
5
+ frameborder="0"
6
+ allowfullscreen="true"
7
+ scrolling="no"
8
+ ></iframe>