jekyll-theme-chirpy 5.6.1 → 6.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (81) hide show
  1. checksums.yaml +4 -4
  2. data/_data/locales/ar.yml +5 -7
  3. data/_data/locales/bg-BG.yml +1 -3
  4. data/_data/locales/cs-CZ.yml +5 -7
  5. data/_data/locales/de-DE.yml +1 -3
  6. data/_data/locales/el-GR.yml +6 -8
  7. data/_data/locales/en.yml +5 -7
  8. data/_data/locales/es-ES.yml +2 -4
  9. data/_data/locales/fi-FI.yml +5 -7
  10. data/_data/locales/fr-FR.yml +0 -2
  11. data/_data/locales/hu-HU.yml +4 -6
  12. data/_data/locales/id-ID.yml +1 -3
  13. data/_data/locales/it-IT.yml +5 -8
  14. data/_data/locales/ko-KR.yml +3 -5
  15. data/_data/locales/my-MM.yml +1 -3
  16. data/_data/locales/pt-BR.yml +1 -3
  17. data/_data/locales/ru-RU.yml +1 -3
  18. data/_data/locales/sl-SI.yml +91 -0
  19. data/_data/locales/sv-SE.yml +91 -0
  20. data/_data/locales/tr-TR.yml +1 -3
  21. data/_data/locales/uk-UA.yml +1 -3
  22. data/_data/locales/vi-VN.yml +2 -3
  23. data/_data/locales/zh-CN.yml +3 -5
  24. data/_data/locales/zh-TW.yml +83 -0
  25. data/_data/{assets/cross_origin.yml → origin/cors.yml} +12 -12
  26. data/_includes/comments/giscus.html +39 -31
  27. data/_includes/datetime.html +10 -6
  28. data/_includes/footer.html +24 -26
  29. data/_includes/head.html +9 -9
  30. data/_includes/js-selector.html +44 -27
  31. data/_includes/jsdelivr-combine.html +0 -6
  32. data/_includes/lang.html +8 -0
  33. data/_includes/mermaid.html +28 -29
  34. data/_includes/metadata-hook.html +1 -0
  35. data/_includes/mode-toggle.html +44 -21
  36. data/_includes/{assets-origin.html → origin-type.html} +5 -4
  37. data/_includes/post-nav.html +27 -20
  38. data/_includes/post-paginator.html +13 -12
  39. data/_includes/post-sharing.html +21 -13
  40. data/_includes/read-time.html +17 -10
  41. data/_includes/refactor-content.html +31 -27
  42. data/_includes/related-posts.html +35 -34
  43. data/_includes/search-loader.html +23 -24
  44. data/_includes/search-results.html +3 -4
  45. data/_includes/sidebar.html +50 -52
  46. data/_includes/toc.html +2 -5
  47. data/_includes/topbar.html +47 -47
  48. data/_includes/trending-tags.html +13 -17
  49. data/_includes/update-list.html +13 -14
  50. data/_layouts/archives.html +5 -3
  51. data/_layouts/categories.html +97 -77
  52. data/_layouts/category.html +10 -8
  53. data/_layouts/default.html +34 -29
  54. data/_layouts/home.html +35 -18
  55. data/_layouts/page.html +38 -33
  56. data/_layouts/post.html +17 -15
  57. data/_layouts/tag.html +10 -8
  58. data/_layouts/tags.html +4 -5
  59. data/_sass/addon/commons.scss +260 -439
  60. data/_sass/addon/module.scss +18 -8
  61. data/_sass/addon/syntax.scss +42 -41
  62. data/_sass/addon/variables.scss +8 -11
  63. data/_sass/colors/dark-syntax.scss +1 -0
  64. data/_sass/colors/dark-typography.scss +16 -24
  65. data/_sass/colors/light-syntax.scss +3 -3
  66. data/_sass/colors/light-typography.scss +16 -15
  67. data/_sass/jekyll-theme-chirpy.scss +14 -19
  68. data/_sass/layout/categories.scss +20 -4
  69. data/_sass/layout/home.scss +111 -94
  70. data/_sass/layout/post.scss +35 -32
  71. data/assets/404.html +3 -1
  72. data/assets/css/style.scss +1 -7
  73. data/assets/feed.xml +1 -1
  74. data/assets/js/dist/categories.min.js +2 -2
  75. data/assets/js/dist/commons.min.js +2 -2
  76. data/assets/js/dist/home.min.js +6 -0
  77. data/assets/js/dist/misc.min.js +2 -2
  78. data/assets/js/dist/page.min.js +2 -2
  79. data/assets/js/dist/post.min.js +2 -2
  80. metadata +11 -5
  81. /data/_data/{assets/self_host.yml → origin/basic.yml} +0 -0
@@ -39,7 +39,7 @@ copyright:
39
39
  verbose: >-
40
40
  除非另有说明,本网站上的博客文章均由作者按照知识共享署名 4.0 国际 (CC BY 4.0) 许可协议进行授权。
41
41
 
42
- meta: 本站由 :PLATFORM 生成,采用 :THEME 主题。
42
+ meta: 本站采用 :PLATFORM 主题 :THEME
43
43
 
44
44
  not_found:
45
45
  statment: 抱歉,我们放错了该 URL,或者它指向了不存在的内容。
@@ -69,15 +69,13 @@ post:
69
69
  share_link:
70
70
  title: 分享链接
71
71
  succeed: 链接已复制!
72
- # pinned prompt of posts list on homepage
73
- pin_prompt: 顶置
74
72
 
75
73
  # Date time format.
76
74
  # See: <http://strftime.net/>, <https://day.js.org/docs/en/display/format>
77
75
  df:
78
76
  post:
79
- strftime: '%Y/%m/%d'
80
- dayjs: 'YYYY/MM/DD'
77
+ strftime: "%Y/%m/%d"
78
+ dayjs: "YYYY/MM/DD"
81
79
 
82
80
  # categories page
83
81
  categories:
@@ -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
+ statment: 抱歉,您可能正在存取一個已被移動的 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: 篇文章
@@ -11,36 +11,36 @@ cdns:
11
11
 
12
12
  # fonts
13
13
 
14
- webfonts: https://fonts.googleapis.com/css2?family=Lato&family=Source+Sans+Pro:wght@400;600;700;900&display=swap
14
+ webfonts: https://fonts.googleapis.com/css2?family=Lato&family=Source+Sans+Pro:wght@400;600;900&display=swap
15
15
 
16
16
  # Libraries
17
17
 
18
18
  jquery:
19
- js: https://cdn.jsdelivr.net/npm/jquery@3.6.1/dist/jquery.min.js
19
+ js: https://cdn.jsdelivr.net/npm/jquery@3.7.0/dist/jquery.min.js
20
20
 
21
21
  bootstrap:
22
- css: https://cdn.jsdelivr.net/npm/bootstrap@4.6.2/dist/css/bootstrap.min.css
23
- js: https://cdn.jsdelivr.net/npm/bootstrap@4.6.2/dist/js/bootstrap.bundle.min.js
22
+ css: https://cdn.jsdelivr.net/npm/bootstrap@5.2.3/dist/css/bootstrap.min.css
23
+ js: https://cdn.jsdelivr.net/npm/bootstrap@5.2.3/dist/js/bootstrap.bundle.min.js
24
24
 
25
25
  toc:
26
- css: https://cdn.jsdelivr.net/npm/tocbot@4.20.1/dist/tocbot.min.css
27
- js: https://cdn.jsdelivr.net/npm/tocbot@4.20.1/dist/tocbot.min.js
26
+ css: https://cdn.jsdelivr.net/npm/tocbot@4.21.0/dist/tocbot.min.css
27
+ js: https://cdn.jsdelivr.net/npm/tocbot@4.21.0/dist/tocbot.min.js
28
28
 
29
29
  fontawesome:
30
- css: https://cdn.jsdelivr.net/npm/@fortawesome/fontawesome-free@6.2.1/css/all.min.css
30
+ css: https://cdn.jsdelivr.net/npm/@fortawesome/fontawesome-free@6.4.0/css/all.min.css
31
31
 
32
32
  search:
33
33
  js: https://cdn.jsdelivr.net/npm/simple-jekyll-search@1.10.0/dest/simple-jekyll-search.min.js
34
34
 
35
35
  mermaid:
36
- js: https://cdn.jsdelivr.net/npm/mermaid@9.2.2/dist/mermaid.min.js
36
+ js: https://cdn.jsdelivr.net/npm/mermaid@9.4.3/dist/mermaid.min.js
37
37
 
38
38
  dayjs:
39
39
  js:
40
- common: https://cdn.jsdelivr.net/npm/dayjs@1.11.6/dayjs.min.js
41
- locale: https://cdn.jsdelivr.net/npm/dayjs@1.11.6/locale/:LOCALE.min.js
42
- relativeTime: https://cdn.jsdelivr.net/npm/dayjs@1.11.6/plugin/relativeTime.min.js
43
- localizedFormat: https://cdn.jsdelivr.net/npm/dayjs@1.11.6/plugin/localizedFormat.min.js
40
+ common: https://cdn.jsdelivr.net/npm/dayjs@1.11.7/dayjs.min.js
41
+ locale: https://cdn.jsdelivr.net/npm/dayjs@1.11.7/locale/:LOCALE.min.js
42
+ relativeTime: https://cdn.jsdelivr.net/npm/dayjs@1.11.7/plugin/relativeTime.min.js
43
+ localizedFormat: https://cdn.jsdelivr.net/npm/dayjs@1.11.7/plugin/localizedFormat.min.js
44
44
 
45
45
  countup:
46
46
  js: https://cdn.jsdelivr.net/npm/countup.js@1.9.3/dist/countUp.min.js
@@ -1,44 +1,54 @@
1
1
  <!-- https://giscus.app/ -->
2
2
  <script type="text/javascript">
3
- $(function () {
4
- const origin = "https://giscus.app";
5
- const iframe = "iframe.giscus-frame";
6
- const lightTheme = "light";
7
- const darkTheme = "dark_dimmed";
3
+ (function () {
4
+ const origin = 'https://giscus.app';
5
+ const iframe = 'iframe.giscus-frame';
6
+ const lightTheme = 'light';
7
+ const darkTheme = 'dark_dimmed';
8
+
8
9
  let initTheme = lightTheme;
10
+ const html = document.documentElement;
9
11
 
10
- if ($("html[data-mode=dark]").length > 0
11
- || ($("html[data-mode]").length == 0
12
- && window.matchMedia("(prefers-color-scheme: dark)").matches)) {
12
+ if (
13
+ (html.hasAttribute('data-mode') &&
14
+ html.getAttribute('data-mode') === 'dark') ||
15
+ (!html.hasAttribute('data-mode') &&
16
+ window.matchMedia('(prefers-color-scheme: dark)').matches)
17
+ ) {
13
18
  initTheme = darkTheme;
14
19
  }
15
20
 
16
21
  let giscusAttributes = {
17
- "src": "https://giscus.app/client.js",
18
- "data-repo": "{{ site.comments.giscus.repo}}",
19
- "data-repo-id": "{{ site.comments.giscus.repo_id }}",
20
- "data-category": "{{ site.comments.giscus.category }}",
21
- "data-category-id": "{{ site.comments.giscus.category_id }}",
22
- "data-mapping": "{{ site.comments.giscus.mapping | default: 'pathname' }}",
23
- "data-reactions-enabled": "{{ site.comments.giscus.reactions_enabled | default: '1' }}",
24
- "data-emit-metadata": "0",
25
- "data-theme": initTheme,
26
- "data-input-position": "{{ site.comments.giscus.input_position | default: 'bottom' }}",
27
- "data-lang": "{{ site.comments.giscus.lang | default: lang }}",
28
- "crossorigin": "anonymous",
29
- "async": ""
22
+ src: 'https://giscus.app/client.js',
23
+ 'data-repo': '{{ site.comments.giscus.repo}}',
24
+ 'data-repo-id': '{{ site.comments.giscus.repo_id }}',
25
+ 'data-category': '{{ site.comments.giscus.category }}',
26
+ 'data-category-id': '{{ site.comments.giscus.category_id }}',
27
+ 'data-mapping': '{{ site.comments.giscus.mapping | default: 'pathname' }}',
28
+ 'data-reactions-enabled': '{{ site.comments.giscus.reactions_enabled | default: '1' }}',
29
+ 'data-emit-metadata': '0',
30
+ 'data-theme': initTheme,
31
+ 'data-input-position': '{{ site.comments.giscus.input_position | default: 'bottom' }}',
32
+ 'data-lang': '{{ site.comments.giscus.lang | default: lang }}',
33
+ crossorigin: 'anonymous',
34
+ async: ''
30
35
  };
31
36
 
32
- let giscusScript = document.createElement("script");
33
- Object.entries(giscusAttributes).forEach(([key, value]) => giscusScript.setAttribute(key, value));
34
- document.getElementById("tail-wrapper").appendChild(giscusScript);
37
+ let giscusScript = document.createElement('script');
38
+ Object.entries(giscusAttributes).forEach(([key, value]) =>
39
+ giscusScript.setAttribute(key, value)
40
+ );
41
+ document.getElementById('tail-wrapper').appendChild(giscusScript);
35
42
 
36
- addEventListener("message", (event) => {
37
- if (event.source === window && event.data &&
38
- event.data.direction === ModeToggle.ID) {
43
+ addEventListener('message', (event) => {
44
+ if (
45
+ event.source === window &&
46
+ event.data &&
47
+ event.data.direction === ModeToggle.ID
48
+ ) {
39
49
  /* global theme mode changed */
40
50
  const mode = event.data.message;
41
- const theme = (mode === ModeToggle.DARK_MODE ? darkTheme : lightTheme);
51
+ const theme = mode === ModeToggle.DARK_MODE ? darkTheme : lightTheme;
42
52
 
43
53
  const message = {
44
54
  setConfig: {
@@ -49,8 +59,6 @@
49
59
  const giscus = document.querySelector(iframe).contentWindow;
50
60
  giscus.postMessage({ giscus: message }, origin);
51
61
  }
52
-
53
62
  });
54
-
55
- });
63
+ })();
56
64
  </script>
@@ -4,12 +4,16 @@
4
4
  -->
5
5
 
6
6
  {% assign wrap_elem = include.wrap | default: 'em' %}
7
- {% assign df_strftime = site.data.locales[site.lang].df.post.strftime | default: '%d/%m/%Y' %}
8
- {% assign df_dayjs = site.data.locales[site.lang].df.post.dayjs | default: 'DD/MM/YYYY' %}
7
+ {% assign df_strftime = site.data.locales[include.lang].df.post.strftime | default: '%d/%m/%Y' %}
8
+ {% assign df_dayjs = site.data.locales[include.lang].df.post.dayjs | default: 'DD/MM/YYYY' %}
9
9
 
10
- <{{ wrap_elem }} class="{% if include.class %}{{ include.class }}{% endif %}"
11
- data-ts="{{ include.date | date: '%s' }}"
12
- data-df="{{ df_dayjs }}"
13
- {% if include.tooltip %}data-toggle="tooltip" data-placement="bottom"{% endif %}>
10
+ <{{ wrap_elem }}
11
+ class="{% if include.class %}{{ include.class }}{% endif %}"
12
+ data-ts="{{ include.date | date: '%s' }}"
13
+ data-df="{{ df_dayjs }}"
14
+ {% if include.tooltip %}
15
+ data-bs-toggle="tooltip" data-bs-placement="bottom"
16
+ {% endif %}
17
+ >
14
18
  {{ include.date | date: df_strftime }}
15
19
  </{{ wrap_elem }}>
@@ -1,36 +1,34 @@
1
1
  <!-- The Footer -->
2
2
 
3
3
  <footer>
4
- <div class="container pl-lg-4 pr-lg-4">
5
- <div class="d-flex justify-content-between align-items-center text-muted ml-md-3 mr-md-3">
6
- <div class="footer-left">
7
- <p class="mb-0">
8
- © {{ 'now' | date: "%Y" }}
9
- <a href="{{ site.social.links[0] }}">{{ site.social.name }}</a>.
10
- {% if site.data.locales[site.lang].copyright.brief %}
11
- <span data-toggle="tooltip" data-placement="top"
12
- title="{{ site.data.locales[site.lang].copyright.verbose }}">{{ site.data.locales[site.lang].copyright.brief }}</span>
13
- {% endif %}
14
- </p>
15
- </div>
16
-
17
- <div class="footer-right">
18
- <p class="mb-0">
19
-
20
- {%- capture _platform -%}
4
+ <div class="container px-lg-4">
5
+ <div class="d-flex justify-content-center align-items-center text-muted mx-md-3">
6
+ <p>
7
+ {%- capture _platform -%}
21
8
  <a href="https://jekyllrb.com" target="_blank" rel="noopener">Jekyll</a>
22
- {%- endcapture -%}
9
+ {%- endcapture -%}
23
10
 
24
- {%- capture _theme -%}
11
+ {%- capture _theme -%}
25
12
  <a href="https://github.com/cotes2020/jekyll-theme-chirpy" target="_blank" rel="noopener">Chirpy</a>
26
- {%- endcapture -%}
13
+ {%- endcapture -%}
14
+
15
+ {{ site.data.locales[include.lang].meta | replace: ':PLATFORM', _platform | replace: ':THEME', _theme }}
16
+ </p>
27
17
 
28
- {{ site.data.locales[site.lang].meta
29
- | default: 'Using the :PLATFORM theme :THEME.'
30
- | replace: ':PLATFORM', _platform | replace: ':THEME', _theme
31
- }}
32
- </p>
33
- </div>
18
+ <p>
19
+ {{- '©' }}
20
+ {{ 'now' | date: '%Y' }}
21
+ <a href="{{ site.social.links[0] }}">{{ site.social.name }}</a>.
22
+ {% if site.data.locales[include.lang].copyright.brief %}
23
+ <span
24
+ data-bs-toggle="tooltip"
25
+ data-bs-placement="top"
26
+ title="{{ site.data.locales[include.lang].copyright.verbose }}"
27
+ >
28
+ {{- site.data.locales[include.lang].copyright.brief -}}
29
+ </span>
30
+ {% endif %}
31
+ </p>
34
32
  </div>
35
33
  </div>
36
34
  </footer>
data/_includes/head.html CHANGED
@@ -58,15 +58,15 @@
58
58
  {% include favicons.html %}
59
59
 
60
60
  {% if site.resources.ignore_env != jekyll.environment and site.resources.self_hosted %}
61
- <link href="{{ site.data.assets[origin].webfonts | relative_url }}" rel="stylesheet">
61
+ <link href="{{ site.data.origin[type].webfonts | relative_url }}" rel="stylesheet">
62
62
 
63
63
  {% else %}
64
- {% for cdn in site.data.assets[origin].cdns %}
64
+ {% for cdn in site.data.origin[type].cdns %}
65
65
  <link rel="preconnect" href="{{ cdn.url }}" {{ cdn.args }}>
66
66
  <link rel="dns-prefetch" href="{{ cdn.url }}" {{ cdn.args }}>
67
67
  {% endfor %}
68
68
 
69
- <link rel="stylesheet" href="{{ site.data.assets[origin].webfonts | relative_url }}">
69
+ <link rel="stylesheet" href="{{ site.data.origin[type].webfonts | relative_url }}">
70
70
  {% endif %}
71
71
 
72
72
  <!-- GA -->
@@ -90,27 +90,27 @@
90
90
  {% endif %}
91
91
 
92
92
  <!-- Bootstrap -->
93
- <link rel="stylesheet" href="{{ site.data.assets[origin].bootstrap.css | relative_url}}">
93
+ <link rel="stylesheet" href="{{ site.data.origin[type].bootstrap.css | relative_url}}">
94
94
 
95
95
  <!-- Font Awesome -->
96
- <link rel="stylesheet" href="{{ site.data.assets[origin].fontawesome.css | relative_url }}">
96
+ <link rel="stylesheet" href="{{ site.data.origin[type].fontawesome.css | relative_url }}">
97
97
 
98
98
  <link rel="stylesheet" href="{{ '/assets/css/style.css' | relative_url }}">
99
99
 
100
100
  {% if site.toc and page.toc %}
101
- <link rel="stylesheet" href="{{ site.data.assets[origin].toc.css | relative_url }}">
101
+ <link rel="stylesheet" href="{{ site.data.origin[type].toc.css | relative_url }}">
102
102
  {% endif %}
103
103
 
104
104
  {% if page.layout == 'page' or page.layout == 'post' %}
105
105
  <!-- Manific Popup -->
106
- <link rel="stylesheet" href="{{ site.data.assets[origin].magnific-popup.css | relative_url }}">
106
+ <link rel="stylesheet" href="{{ site.data.origin[type].magnific-popup.css | relative_url }}">
107
107
  {% endif %}
108
108
 
109
109
  <!-- JavaScript -->
110
110
 
111
- <script src="{{ site.data.assets[origin].jquery.js | relative_url }}"></script>
112
-
113
111
  {% unless site.theme_mode %}
114
112
  {% include mode-toggle.html %}
115
113
  {% endunless %}
114
+
115
+ {% include metadata-hook.html %}
116
116
  </head>
@@ -1,24 +1,35 @@
1
1
  <!-- JS selector for site. -->
2
2
 
3
+ <!-- commons -->
4
+
5
+ {% assign urls = site.data.origin[type].jquery.js
6
+ | append: ','
7
+ | append: site.data.origin[type].bootstrap.js
8
+ | append: ','
9
+ | append: site.data.origin[type].search.js
10
+ %}
11
+
3
12
  <!-- layout specified -->
4
13
 
5
14
  {% if page.layout == 'post' %}
6
15
  {% if site.google_analytics.pv.proxy_endpoint or site.google_analytics.pv.cache_path %}
7
16
  <!-- pv-report needs countup.js -->
8
- <script async src="{{ site.data.assets[origin].countup.js | relative_url }}"></script>
17
+ {% assign urls = urls | append: ',' | append: site.data.origin[type].countup.js %}
9
18
  {% endif %}
10
19
  {% endif %}
11
20
 
12
- {% if page.layout == 'post' or page.layout == 'page' %}
13
- <!-- image lazy-loading & popup & clipboard -->
14
- {% assign _urls = site.data.assets[origin]['magnific-popup'].js
15
- | append: ','
16
- | append: site.data.assets[origin].lazysizes.js
17
- | append: ','
18
- | append: site.data.assets[origin].clipboard.js
19
- %}
21
+ {% if page.layout == 'post' or page.layout == 'page' or page.layout == 'home' %}
22
+ {% assign urls = urls | append: ',' | append: site.data.origin[type].lazysizes.js %}
20
23
 
21
- {% include jsdelivr-combine.html urls=_urls %}
24
+ {% unless page.layout == 'home' %}
25
+ <!-- image lazy-loading & popup & clipboard -->
26
+ {% assign urls = urls
27
+ | append: ','
28
+ | append: site.data.origin[type]['magnific-popup'].js
29
+ | append: ','
30
+ | append: site.data.origin[type].clipboard.js
31
+ %}
32
+ {% endunless %}
22
33
  {% endif %}
23
34
 
24
35
  {% if page.layout == 'home'
@@ -29,29 +40,39 @@
29
40
  %}
30
41
  {% assign locale = site.lang | split: '-' | first %}
31
42
 
32
- {% assign _urls = site.data.assets[origin].dayjs.js.common
43
+ {% assign urls = urls
44
+ | append: ','
45
+ | append: site.data.origin[type].dayjs.js.common
33
46
  | append: ','
34
- | append: site.data.assets[origin].dayjs.js.locale
47
+ | append: site.data.origin[type].dayjs.js.locale
35
48
  | replace: ':LOCALE', locale
36
49
  | append: ','
37
- | append: site.data.assets[origin].dayjs.js.relativeTime
50
+ | append: site.data.origin[type].dayjs.js.relativeTime
38
51
  | append: ','
39
- | append: site.data.assets[origin].dayjs.js.localizedFormat
52
+ | append: site.data.origin[type].dayjs.js.localizedFormat
40
53
  %}
54
+ {% endif %}
55
+
56
+ {% if page.content contains '<h2' or page.content contains '<h3' and site.toc and page.toc %}
57
+ {% assign urls = urls | append: ',' | append: site.data.origin[type].toc.js %}
58
+ {% endif %}
41
59
 
42
- {% include jsdelivr-combine.html urls=_urls %}
60
+ {% if page.mermaid %}
61
+ {% assign urls = urls | append: ',' | append: site.data.origin[type].mermaid.js %}
43
62
  {% endif %}
44
63
 
64
+ {% include jsdelivr-combine.html urls=urls %}
65
+
45
66
  {% case page.layout %}
46
- {% when 'categories', 'post', 'page' %}
47
- {% assign type = page.layout %}
48
- {% when 'home', 'archives', 'category', 'tag' %}
49
- {% assign type = 'misc' %}
67
+ {% when 'home', 'categories', 'post', 'page' %}
68
+ {% assign js = page.layout %}
69
+ {% when 'archives', 'category', 'tag' %}
70
+ {% assign js = 'misc' %}
50
71
  {% else %}
51
- {% assign type = 'commons' %}
72
+ {% assign js = 'commons' %}
52
73
  {% endcase %}
53
74
 
54
- {% capture script %}/assets/js/dist/{{ type }}.min.js{% endcapture %}
75
+ {% capture script %}/assets/js/dist/{{ js }}.min.js{% endcapture %}
55
76
  <script defer src="{{ script | relative_url }}"></script>
56
77
 
57
78
  {% if page.math %}
@@ -73,14 +94,10 @@
73
94
  }
74
95
  };
75
96
  </script>
76
- <script src="{{ site.data.assets[origin].polyfill.js | relative_url }}"></script>
77
- <script id="MathJax-script" async src="{{ site.data.assets[origin].mathjax.js | relative_url }}"></script>
97
+ <script src="{{ site.data.origin[type].polyfill.js | relative_url }}"></script>
98
+ <script id="MathJax-script" async src="{{ site.data.origin[type].mathjax.js | relative_url }}"></script>
78
99
  {% endif %}
79
100
 
80
- <!-- commons -->
81
-
82
- <script src="{{ site.data.assets[origin].bootstrap.js | relative_url }}"></script>
83
-
84
101
  {% if jekyll.environment == 'production' %}
85
102
  <!-- PWA -->
86
103
  {% if site.pwa.enabled %}
@@ -5,7 +5,6 @@
5
5
  {% assign domain = 'https://cdn.jsdelivr.net/' %}
6
6
 
7
7
  {% for url in urls %}
8
-
9
8
  {% if url contains domain %}
10
9
  {% assign url_snippet = url | slice: domain.size, url.size %}
11
10
 
@@ -16,15 +15,10 @@
16
15
  {% endif %}
17
16
 
18
17
  {% elsif url contains '//' %}
19
-
20
18
  <script src="{{ url }}"></script>
21
-
22
19
  {% else %}
23
-
24
20
  <script src="{{ url | relative_url }}"></script>
25
-
26
21
  {% endif %}
27
-
28
22
  {% endfor %}
29
23
 
30
24
  {% if combined_urls %}
@@ -0,0 +1,8 @@
1
+ {% comment %}
2
+ Detect appearance language and return it through variable "lang"
3
+ {% endcomment %}
4
+ {% if site.data.locales[site.lang] %}
5
+ {% assign lang = site.lang %}
6
+ {% else %}
7
+ {% assign lang = 'en' %}
8
+ {% endif %}
@@ -1,59 +1,58 @@
1
- <!--
2
- mermaid-js loader
3
- -->
4
-
5
- <script src="{{ site.data.assets[origin].mermaid.js | relative_url }}"></script>
6
-
7
- <script>
1
+ <!-- mermaid-js loader -->
2
+ <script type="text/javascript">
8
3
  (function () {
9
-
10
4
  function updateMermaid(event) {
11
- if (event.source === window && event.data &&
12
- event.data.direction === ModeToggle.ID) {
13
-
5
+ if (event.source === window && event.data && event.data.direction === ModeToggle.ID) {
14
6
  const mode = event.data.message;
15
7
 
16
- if (typeof mermaid === "undefined") {
8
+ if (typeof mermaid === 'undefined') {
17
9
  return;
18
10
  }
19
11
 
20
- let expectedTheme = (mode === ModeToggle.DARK_MODE ? "dark" : "default");
21
- let config = {theme: expectedTheme};
12
+ let expectedTheme = mode === ModeToggle.DARK_MODE ? 'dark' : 'default';
13
+ let config = { theme: expectedTheme };
22
14
 
23
15
  /* Re-render the SVG › <https://github.com/mermaid-js/mermaid/issues/311#issuecomment-332557344> */
24
- $(".mermaid").each(function () {
16
+ $('.mermaid').each(function () {
25
17
  let svgCode = $(this).prev().children().html();
26
- $(this).removeAttr("data-processed");
18
+ $(this).removeAttr('data-processed');
27
19
  $(this).html(svgCode);
28
20
  });
29
21
 
30
22
  mermaid.initialize(config);
31
- mermaid.init(undefined, ".mermaid");
23
+ mermaid.init(undefined, '.mermaid');
32
24
  }
33
25
  }
34
26
 
35
- let initTheme = "default";
27
+ let initTheme = 'default';
28
+ const html = document.documentElement;
36
29
 
37
- if ($("html[data-mode=dark]").length > 0
38
- || ($("html[data-mode]").length == 0
39
- && window.matchMedia("(prefers-color-scheme: dark)").matches)) {
40
- initTheme = "dark";
30
+ if (
31
+ (html.hasAttribute('data-mode') && html.getAttribute('data-mode') === 'dark') ||
32
+ (!html.hasAttribute('data-mode') && window.matchMedia('(prefers-color-scheme: dark)').matches)
33
+ ) {
34
+ initTheme = 'dark';
41
35
  }
42
36
 
43
37
  let mermaidConf = {
44
- theme: initTheme /* <default|dark|forest|neutral> */
38
+ theme: initTheme /* <default|dark|forest|neutral> */
45
39
  };
46
40
 
47
41
  /* Create mermaid tag */
48
- $("pre").has("code.language-mermaid").each(function () {
49
- let svgCode = $(this).children().html();
50
- $(this).addClass("unloaded");
51
- $(this).after(`<pre class=\"mermaid\">${svgCode}</pre>`);
42
+ document.querySelectorAll('pre>code.language-mermaid').forEach((elem) => {
43
+ const svgCode = elem.textContent;
44
+ const backup = elem.parentElement;
45
+ backup.classList.add('unloaded');
46
+ /* create mermaid node */
47
+ let mermaid = document.createElement('pre');
48
+ mermaid.classList.add('mermaid');
49
+ const text = document.createTextNode(svgCode);
50
+ mermaid.appendChild(text);
51
+ backup.after(mermaid);
52
52
  });
53
53
 
54
54
  mermaid.initialize(mermaidConf);
55
55
 
56
- window.addEventListener("message", updateMermaid);
56
+ window.addEventListener('message', updateMermaid);
57
57
  })();
58
-
59
58
  </script>
@@ -0,0 +1 @@
1
+ <!-- A placeholder to allow defining custom metadata -->