jekyll-theme-chirpy 5.0.2 → 6.2.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 +64 -74
- data/_data/locales/ar.yml +91 -0
- data/_data/locales/bg-BG.yml +81 -0
- data/_data/locales/cs-CZ.yml +89 -0
- data/_data/locales/de-DE.yml +80 -0
- data/_data/locales/el-GR.yml +91 -0
- data/_data/locales/en.yml +23 -23
- data/_data/locales/es-ES.yml +77 -0
- data/_data/locales/fi-FI.yml +90 -0
- data/_data/locales/fr-FR.yml +77 -0
- data/_data/locales/hu-HU.yml +79 -0
- data/_data/locales/id-ID.yml +5 -19
- data/_data/locales/it-IT.yml +90 -0
- data/_data/locales/ko-KR.yml +12 -19
- data/_data/locales/my-MM.yml +77 -0
- data/_data/locales/pt-BR.yml +77 -0
- data/_data/locales/ru-RU.yml +77 -0
- data/_data/locales/sl-SI.yml +91 -0
- data/_data/locales/sv-SE.yml +91 -0
- data/_data/locales/th.yml +91 -0
- data/_data/locales/tr-TR.yml +77 -0
- data/_data/locales/uk-UA.yml +77 -0
- data/_data/locales/vi-VN.yml +76 -0
- data/_data/locales/zh-CN.yml +13 -20
- data/_data/locales/zh-TW.yml +83 -0
- data/_data/origin/basic.yml +48 -0
- data/_data/origin/cors.yml +59 -0
- data/_includes/comments/disqus.html +27 -31
- data/_includes/comments/giscus.html +64 -0
- data/_includes/comments/utterances.html +2 -2
- data/_includes/datetime.html +20 -0
- data/_includes/embed/twitch.html +4 -0
- data/_includes/embed/youtube.html +6 -0
- data/_includes/footer.html +31 -32
- data/_includes/head.html +66 -46
- data/_includes/js-selector.html +83 -45
- data/_includes/jsdelivr-combine.html +26 -0
- data/_includes/lang.html +1 -1
- data/_includes/mermaid.html +30 -29
- data/_includes/metadata-hook.html +1 -0
- data/_includes/mode-toggle.html +66 -51
- data/_includes/notification.html +24 -0
- data/_includes/origin-type.html +13 -0
- data/_includes/post-nav.html +26 -22
- data/_includes/post-paginator.html +79 -76
- data/_includes/post-sharing.html +27 -16
- data/_includes/read-time.html +17 -10
- data/_includes/refactor-content.html +129 -73
- data/_includes/related-posts.html +48 -58
- data/_includes/search-loader.html +32 -31
- data/_includes/search-results.html +4 -5
- data/_includes/sidebar.html +79 -67
- data/_includes/toc.html +4 -7
- data/_includes/topbar.html +62 -56
- data/_includes/trending-tags.html +15 -19
- data/_includes/update-list.html +14 -15
- data/_layouts/archives.html +25 -29
- data/_layouts/categories.html +97 -58
- data/_layouts/category.html +8 -10
- data/_layouts/default.html +67 -31
- data/_layouts/home.html +67 -56
- data/_layouts/page.html +20 -58
- data/_layouts/post.html +85 -94
- data/_layouts/tag.html +8 -10
- data/_layouts/tags.html +6 -5
- data/_sass/addon/commons.scss +679 -878
- data/_sass/addon/module.scss +70 -23
- data/_sass/addon/syntax.scss +127 -110
- data/_sass/addon/variables.scss +16 -18
- data/_sass/colors/syntax-dark.scss +138 -0
- data/_sass/colors/syntax-light.scss +179 -0
- data/_sass/colors/{dark-typography.scss → typography-dark.scss} +58 -56
- data/_sass/colors/typography-light.scss +110 -0
- data/_sass/layout/archives.scss +86 -89
- data/_sass/layout/categories.scss +29 -13
- data/_sass/layout/category-tag.scss +9 -10
- data/_sass/layout/home.scss +132 -114
- data/_sass/layout/post.scss +213 -173
- data/_sass/layout/tags.scss +1 -1
- data/_sass/main.scss +13 -0
- data/assets/404.html +1 -20
- data/assets/css/jekyll-theme-chirpy.scss +6 -0
- data/assets/feed.xml +2 -2
- data/assets/js/data/search.json +8 -5
- data/assets/js/data/swcache.js +14 -29
- data/assets/js/dist/categories.min.js +2 -4
- data/assets/js/dist/commons.min.js +2 -4
- data/assets/js/dist/home.min.js +2 -4
- data/assets/js/dist/misc.min.js +4 -0
- data/assets/js/dist/page.min.js +2 -4
- data/assets/js/dist/post.min.js +2 -4
- data/assets/js/pwa/app.js +42 -4
- data/assets/js/pwa/sw.js +46 -44
- data/assets/js/pwa/unregister.js +12 -0
- metadata +64 -32
- data/_config.yml +0 -175
- data/_data/contact.yml +0 -30
- data/_data/share.yml +0 -27
- data/_includes/css-selector.html +0 -15
- data/_includes/no-zero-date.html +0 -13
- data/_includes/timeago.html +0 -26
- data/_plugins/posts-lastmod-hook.rb +0 -14
- data/_sass/colors/dark-syntax.scss +0 -87
- data/_sass/colors/light-syntax.scss +0 -79
- data/_sass/colors/light-typography.scss +0 -81
- data/_sass/jekyll-theme-chirpy.scss +0 -24
- data/_tabs/about.md +0 -8
- data/_tabs/archives.md +0 -7
- data/_tabs/categories.md +0 -6
- data/_tabs/tags.md +0 -6
- data/assets/css/style.scss +0 -12
- data/assets/js/dist/pvreport.min.js +0 -6
- data/index.html +0 -4
data/_includes/js-selector.html
CHANGED
|
@@ -1,68 +1,106 @@
|
|
|
1
|
-
<!--
|
|
2
|
-
|
|
3
|
-
-->
|
|
1
|
+
<!-- JS selector for site. -->
|
|
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
|
+
%}
|
|
4
11
|
|
|
5
12
|
<!-- layout specified -->
|
|
6
13
|
|
|
7
|
-
{% if page.layout == 'post' %}
|
|
8
|
-
{%
|
|
9
|
-
<!-- pv-report needs countup.js -->
|
|
10
|
-
<script async src="https://cdn.jsdelivr.net/npm/countup.js@1.9.3/dist/countUp.min.js"></script>
|
|
11
|
-
<script defer src="{{ '/assets/js/dist/pvreport.min.js' | relative_url }}"></script>
|
|
12
|
-
{% endif %}
|
|
13
|
-
{% endif %}
|
|
14
|
+
{% if page.layout == 'post' or page.layout == 'page' or page.layout == 'home' %}
|
|
15
|
+
{% assign urls = urls | append: ',' | append: site.data.origin[type].lazysizes.js %}
|
|
14
16
|
|
|
15
|
-
{%
|
|
16
|
-
|
|
17
|
-
|
|
17
|
+
{% unless page.layout == 'home' %}
|
|
18
|
+
<!-- image lazy-loading & popup & clipboard -->
|
|
19
|
+
{% assign urls = urls
|
|
20
|
+
| append: ','
|
|
21
|
+
| append: site.data.origin[type]['magnific-popup'].js
|
|
22
|
+
| append: ','
|
|
23
|
+
| append: site.data.origin[type].clipboard.js
|
|
24
|
+
%}
|
|
25
|
+
{% endunless %}
|
|
18
26
|
{% endif %}
|
|
19
27
|
|
|
20
28
|
{% if page.layout == 'home'
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
{% assign
|
|
29
|
+
or page.layout == 'post'
|
|
30
|
+
or page.layout == 'archives'
|
|
31
|
+
or page.layout == 'category'
|
|
32
|
+
or page.layout == 'tag'
|
|
33
|
+
%}
|
|
34
|
+
{% assign locale = site.lang | split: '-' | first %}
|
|
35
|
+
|
|
36
|
+
{% assign urls = urls
|
|
37
|
+
| append: ','
|
|
38
|
+
| append: site.data.origin[type].dayjs.js.common
|
|
39
|
+
| append: ','
|
|
40
|
+
| append: site.data.origin[type].dayjs.js.locale
|
|
41
|
+
| replace: ':LOCALE', locale
|
|
42
|
+
| append: ','
|
|
43
|
+
| append: site.data.origin[type].dayjs.js.relativeTime
|
|
44
|
+
| append: ','
|
|
45
|
+
| append: site.data.origin[type].dayjs.js.localizedFormat
|
|
46
|
+
%}
|
|
47
|
+
{% endif %}
|
|
48
|
+
|
|
49
|
+
{% if page.content contains '<h2' or page.content contains '<h3' and site.toc and page.toc %}
|
|
50
|
+
{% assign urls = urls | append: ',' | append: site.data.origin[type].toc.js %}
|
|
51
|
+
{% endif %}
|
|
52
|
+
|
|
53
|
+
{% if page.mermaid %}
|
|
54
|
+
{% assign urls = urls | append: ',' | append: site.data.origin[type].mermaid.js %}
|
|
27
55
|
{% endif %}
|
|
28
56
|
|
|
29
|
-
{%
|
|
30
|
-
|
|
57
|
+
{% include jsdelivr-combine.html urls=urls %}
|
|
58
|
+
|
|
59
|
+
{% case page.layout %}
|
|
60
|
+
{% when 'home', 'categories', 'post', 'page' %}
|
|
61
|
+
{% assign js = page.layout %}
|
|
62
|
+
{% when 'archives', 'category', 'tag' %}
|
|
63
|
+
{% assign js = 'misc' %}
|
|
64
|
+
{% else %}
|
|
65
|
+
{% assign js = 'commons' %}
|
|
66
|
+
{% endcase %}
|
|
67
|
+
|
|
68
|
+
{% capture script %}/assets/js/dist/{{ js }}.min.js{% endcapture %}
|
|
69
|
+
<script defer src="{{ script | relative_url }}"></script>
|
|
31
70
|
|
|
32
71
|
{% if page.math %}
|
|
33
72
|
<!-- MathJax -->
|
|
34
73
|
<script>
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
[
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
[
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
<script type="text/javascript" id="MathJax-script" async
|
|
51
|
-
src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-chtml.js">
|
|
74
|
+
/* see: <https://docs.mathjax.org/en/latest/options/input/tex.html#tex-options> */
|
|
75
|
+
MathJax = {
|
|
76
|
+
tex: {
|
|
77
|
+
/* start/end delimiter pairs for in-line math */
|
|
78
|
+
inlineMath: [
|
|
79
|
+
['$', '$'],
|
|
80
|
+
['\\(', '\\)']
|
|
81
|
+
],
|
|
82
|
+
/* start/end delimiter pairs for display math */
|
|
83
|
+
displayMath: [
|
|
84
|
+
['$$', '$$'],
|
|
85
|
+
['\\[', '\\]']
|
|
86
|
+
]
|
|
87
|
+
}
|
|
88
|
+
};
|
|
52
89
|
</script>
|
|
90
|
+
<script src="{{ site.data.origin[type].polyfill.js | relative_url }}"></script>
|
|
91
|
+
<script id="MathJax-script" async src="{{ site.data.origin[type].mathjax.js | relative_url }}"></script>
|
|
53
92
|
{% endif %}
|
|
54
93
|
|
|
55
|
-
<!-- commons -->
|
|
56
|
-
|
|
57
|
-
<script src="https://cdn.jsdelivr.net/combine/npm/popper.js@1.16.1,npm/bootstrap@4/dist/js/bootstrap.min.js"></script>
|
|
58
|
-
|
|
59
94
|
{% if jekyll.environment == 'production' %}
|
|
60
95
|
<!-- PWA -->
|
|
61
|
-
|
|
96
|
+
{% if site.pwa.enabled %}
|
|
97
|
+
<script defer src="{{ '/app.js' | relative_url }}"></script>
|
|
98
|
+
{% else %}
|
|
99
|
+
<script defer src="{{ '/unregister.js' | relative_url }}"></script>
|
|
100
|
+
{% endif %}
|
|
62
101
|
|
|
63
102
|
<!-- GA -->
|
|
64
|
-
{% if site.google_analytics.id %}
|
|
103
|
+
{% if site.google_analytics.id != empty and site.google_analytics.id %}
|
|
65
104
|
{% include google-analytics.html %}
|
|
66
105
|
{% endif %}
|
|
67
|
-
|
|
68
106
|
{% endif %}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
{% assign urls = include.urls | split: ',' %}
|
|
2
|
+
|
|
3
|
+
{% assign combined_urls = nil %}
|
|
4
|
+
|
|
5
|
+
{% assign domain = 'https://cdn.jsdelivr.net/' %}
|
|
6
|
+
|
|
7
|
+
{% for url in urls %}
|
|
8
|
+
{% if url contains domain %}
|
|
9
|
+
{% assign url_snippet = url | slice: domain.size, url.size %}
|
|
10
|
+
|
|
11
|
+
{% if combined_urls %}
|
|
12
|
+
{% assign combined_urls = combined_urls | append: ',' | append: url_snippet %}
|
|
13
|
+
{% else %}
|
|
14
|
+
{% assign combined_urls = domain | append: 'combine/' | append: url_snippet %}
|
|
15
|
+
{% endif %}
|
|
16
|
+
|
|
17
|
+
{% elsif url contains '//' %}
|
|
18
|
+
<script src="{{ url }}"></script>
|
|
19
|
+
{% else %}
|
|
20
|
+
<script src="{{ url | relative_url }}"></script>
|
|
21
|
+
{% endif %}
|
|
22
|
+
{% endfor %}
|
|
23
|
+
|
|
24
|
+
{% if combined_urls %}
|
|
25
|
+
<script src="{{ combined_urls }}"></script>
|
|
26
|
+
{% endif %}
|
data/_includes/lang.html
CHANGED
data/_includes/mermaid.html
CHANGED
|
@@ -1,57 +1,58 @@
|
|
|
1
|
-
<!--
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
<script src="https://cdn.jsdelivr.net/npm/mermaid@8/dist/mermaid.min.js"></script>
|
|
6
|
-
|
|
7
|
-
<script>
|
|
8
|
-
$(function() {
|
|
1
|
+
<!-- mermaid-js loader -->
|
|
2
|
+
<script type="text/javascript">
|
|
3
|
+
(function () {
|
|
9
4
|
function updateMermaid(event) {
|
|
10
|
-
if (event.source === window && event.data &&
|
|
11
|
-
event.data.direction === ModeToggle.ID) {
|
|
12
|
-
|
|
5
|
+
if (event.source === window && event.data && event.data.direction === ModeToggle.ID) {
|
|
13
6
|
const mode = event.data.message;
|
|
14
7
|
|
|
15
|
-
if (typeof mermaid ===
|
|
8
|
+
if (typeof mermaid === 'undefined') {
|
|
16
9
|
return;
|
|
17
10
|
}
|
|
18
11
|
|
|
19
|
-
let expectedTheme =
|
|
12
|
+
let expectedTheme = mode === ModeToggle.DARK_MODE ? 'dark' : 'default';
|
|
20
13
|
let config = { theme: expectedTheme };
|
|
21
14
|
|
|
22
15
|
/* Re-render the SVG › <https://github.com/mermaid-js/mermaid/issues/311#issuecomment-332557344> */
|
|
23
|
-
$(
|
|
16
|
+
$('.mermaid').each(function () {
|
|
24
17
|
let svgCode = $(this).prev().children().html();
|
|
25
|
-
$(this).removeAttr(
|
|
18
|
+
$(this).removeAttr('data-processed');
|
|
26
19
|
$(this).html(svgCode);
|
|
27
20
|
});
|
|
28
21
|
|
|
29
22
|
mermaid.initialize(config);
|
|
30
|
-
mermaid.init(undefined,
|
|
23
|
+
mermaid.init(undefined, '.mermaid');
|
|
31
24
|
}
|
|
32
25
|
}
|
|
33
26
|
|
|
34
|
-
let initTheme =
|
|
27
|
+
let initTheme = 'default';
|
|
28
|
+
const html = document.documentElement;
|
|
35
29
|
|
|
36
|
-
if (
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
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';
|
|
40
35
|
}
|
|
41
36
|
|
|
42
37
|
let mermaidConf = {
|
|
43
|
-
theme: initTheme
|
|
38
|
+
theme: initTheme /* <default|dark|forest|neutral> */
|
|
44
39
|
};
|
|
45
40
|
|
|
46
|
-
/*
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
41
|
+
/* Create mermaid tag */
|
|
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);
|
|
51
52
|
});
|
|
52
53
|
|
|
53
54
|
mermaid.initialize(mermaidConf);
|
|
54
55
|
|
|
55
|
-
window.addEventListener(
|
|
56
|
-
});
|
|
56
|
+
window.addEventListener('message', updateMermaid);
|
|
57
|
+
})();
|
|
57
58
|
</script>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<!-- A placeholder to allow defining custom metadata -->
|
data/_includes/mode-toggle.html
CHANGED
|
@@ -1,13 +1,22 @@
|
|
|
1
|
-
<!--
|
|
2
|
-
Switch the mode between dark and light.
|
|
3
|
-
-->
|
|
1
|
+
<!-- Switch the mode between dark and light. -->
|
|
4
2
|
|
|
5
3
|
<script type="text/javascript">
|
|
6
4
|
class ModeToggle {
|
|
7
|
-
static get MODE_KEY() {
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
static get
|
|
5
|
+
static get MODE_KEY() {
|
|
6
|
+
return 'mode';
|
|
7
|
+
}
|
|
8
|
+
static get MODE_ATTR() {
|
|
9
|
+
return 'data-mode';
|
|
10
|
+
}
|
|
11
|
+
static get DARK_MODE() {
|
|
12
|
+
return 'dark';
|
|
13
|
+
}
|
|
14
|
+
static get LIGHT_MODE() {
|
|
15
|
+
return 'light';
|
|
16
|
+
}
|
|
17
|
+
static get ID() {
|
|
18
|
+
return 'mode-toggle';
|
|
19
|
+
}
|
|
11
20
|
|
|
12
21
|
constructor() {
|
|
13
22
|
if (this.hasMode) {
|
|
@@ -25,13 +34,12 @@
|
|
|
25
34
|
let self = this;
|
|
26
35
|
|
|
27
36
|
/* always follow the system prefers */
|
|
28
|
-
this.sysDarkPrefers.addEventListener(
|
|
37
|
+
this.sysDarkPrefers.addEventListener('change', () => {
|
|
29
38
|
if (self.hasMode) {
|
|
30
39
|
if (self.isDarkMode) {
|
|
31
40
|
if (!self.isSysDarkPrefer) {
|
|
32
41
|
self.setDark();
|
|
33
42
|
}
|
|
34
|
-
|
|
35
43
|
} else {
|
|
36
44
|
if (self.isSysDarkPrefer) {
|
|
37
45
|
self.setLight();
|
|
@@ -42,27 +50,36 @@
|
|
|
42
50
|
}
|
|
43
51
|
|
|
44
52
|
self.notify();
|
|
45
|
-
|
|
46
53
|
});
|
|
47
|
-
|
|
48
54
|
} /* constructor() */
|
|
49
55
|
|
|
50
|
-
get sysDarkPrefers() {
|
|
56
|
+
get sysDarkPrefers() {
|
|
57
|
+
return window.matchMedia('(prefers-color-scheme: dark)');
|
|
58
|
+
}
|
|
51
59
|
|
|
52
|
-
get isSysDarkPrefer() {
|
|
60
|
+
get isSysDarkPrefer() {
|
|
61
|
+
return this.sysDarkPrefers.matches;
|
|
62
|
+
}
|
|
53
63
|
|
|
54
|
-
get isDarkMode() {
|
|
64
|
+
get isDarkMode() {
|
|
65
|
+
return this.mode === ModeToggle.DARK_MODE;
|
|
66
|
+
}
|
|
55
67
|
|
|
56
|
-
get isLightMode() {
|
|
68
|
+
get isLightMode() {
|
|
69
|
+
return this.mode === ModeToggle.LIGHT_MODE;
|
|
70
|
+
}
|
|
57
71
|
|
|
58
|
-
get hasMode() {
|
|
72
|
+
get hasMode() {
|
|
73
|
+
return this.mode != null;
|
|
74
|
+
}
|
|
59
75
|
|
|
60
|
-
get mode() {
|
|
76
|
+
get mode() {
|
|
77
|
+
return sessionStorage.getItem(ModeToggle.MODE_KEY);
|
|
78
|
+
}
|
|
61
79
|
|
|
62
80
|
/* get the current mode on screen */
|
|
63
81
|
get modeStatus() {
|
|
64
|
-
if (this.isDarkMode
|
|
65
|
-
|| (!this.hasMode && this.isSysDarkPrefer)) {
|
|
82
|
+
if (this.isDarkMode || (!this.hasMode && this.isSysDarkPrefer)) {
|
|
66
83
|
return ModeToggle.DARK_MODE;
|
|
67
84
|
} else {
|
|
68
85
|
return ModeToggle.LIGHT_MODE;
|
|
@@ -70,59 +87,57 @@
|
|
|
70
87
|
}
|
|
71
88
|
|
|
72
89
|
setDark() {
|
|
73
|
-
|
|
90
|
+
document.documentElement.setAttribute(ModeToggle.MODE_ATTR, ModeToggle.DARK_MODE);
|
|
74
91
|
sessionStorage.setItem(ModeToggle.MODE_KEY, ModeToggle.DARK_MODE);
|
|
75
92
|
}
|
|
76
93
|
|
|
77
94
|
setLight() {
|
|
78
|
-
|
|
95
|
+
document.documentElement.setAttribute(ModeToggle.MODE_ATTR, ModeToggle.LIGHT_MODE);
|
|
79
96
|
sessionStorage.setItem(ModeToggle.MODE_KEY, ModeToggle.LIGHT_MODE);
|
|
80
97
|
}
|
|
81
98
|
|
|
82
99
|
clearMode() {
|
|
83
|
-
|
|
100
|
+
document.documentElement.removeAttribute(ModeToggle.MODE_ATTR);
|
|
84
101
|
sessionStorage.removeItem(ModeToggle.MODE_KEY);
|
|
85
102
|
}
|
|
86
103
|
|
|
87
104
|
/* Notify another plugins that the theme mode has changed */
|
|
88
105
|
notify() {
|
|
89
|
-
window.postMessage(
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
106
|
+
window.postMessage(
|
|
107
|
+
{
|
|
108
|
+
direction: ModeToggle.ID,
|
|
109
|
+
message: this.modeStatus
|
|
110
|
+
},
|
|
111
|
+
'*'
|
|
112
|
+
);
|
|
93
113
|
}
|
|
94
114
|
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
toggle.clearMode();
|
|
115
|
+
flipMode() {
|
|
116
|
+
if (this.hasMode) {
|
|
117
|
+
if (this.isSysDarkPrefer) {
|
|
118
|
+
if (this.isLightMode) {
|
|
119
|
+
this.clearMode();
|
|
120
|
+
} else {
|
|
121
|
+
this.setLight();
|
|
122
|
+
}
|
|
104
123
|
} else {
|
|
105
|
-
|
|
124
|
+
if (this.isDarkMode) {
|
|
125
|
+
this.clearMode();
|
|
126
|
+
} else {
|
|
127
|
+
this.setDark();
|
|
128
|
+
}
|
|
106
129
|
}
|
|
107
|
-
|
|
108
130
|
} else {
|
|
109
|
-
if (
|
|
110
|
-
|
|
131
|
+
if (this.isSysDarkPrefer) {
|
|
132
|
+
this.setLight();
|
|
111
133
|
} else {
|
|
112
|
-
|
|
134
|
+
this.setDark();
|
|
113
135
|
}
|
|
114
136
|
}
|
|
115
137
|
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
} else {
|
|
120
|
-
toggle.setDark();
|
|
121
|
-
}
|
|
122
|
-
}
|
|
123
|
-
|
|
124
|
-
toggle.notify();
|
|
125
|
-
|
|
126
|
-
} /* flipMode() */
|
|
138
|
+
this.notify();
|
|
139
|
+
} /* flipMode() */
|
|
140
|
+
} /* ModeToggle */
|
|
127
141
|
|
|
142
|
+
const modeToggle = new ModeToggle();
|
|
128
143
|
</script>
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
<aside
|
|
2
|
+
id="notification"
|
|
3
|
+
class="toast"
|
|
4
|
+
role="alert"
|
|
5
|
+
aria-live="assertive"
|
|
6
|
+
aria-atomic="true"
|
|
7
|
+
data-bs-animation="true"
|
|
8
|
+
data-bs-autohide="false"
|
|
9
|
+
>
|
|
10
|
+
<div class="toast-header">
|
|
11
|
+
<button
|
|
12
|
+
type="button"
|
|
13
|
+
class="btn-close ms-auto"
|
|
14
|
+
data-bs-dismiss="toast"
|
|
15
|
+
aria-label="Close"
|
|
16
|
+
></button>
|
|
17
|
+
</div>
|
|
18
|
+
<div class="toast-body text-center pt-0">
|
|
19
|
+
<p class="px-2 mb-3">{{ site.data.locales[include.lang].notification.update_found }}</p>
|
|
20
|
+
<button type="button" class="btn btn-primary" aria-label="Update">
|
|
21
|
+
{{ site.data.locales[include.lang].notification.update }}
|
|
22
|
+
</button>
|
|
23
|
+
</div>
|
|
24
|
+
</aside>
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
{% comment %} Site static assets origin type {% endcomment %}
|
|
2
|
+
|
|
3
|
+
{% assign type = 'cors' %}
|
|
4
|
+
|
|
5
|
+
{% if site.assets.self_host.enabled %}
|
|
6
|
+
{% if site.assets.self_host.env %}
|
|
7
|
+
{% if site.assets.self_host.env == jekyll.environment %}
|
|
8
|
+
{% assign type = 'basic' %}
|
|
9
|
+
{% endif %}
|
|
10
|
+
{% else %}
|
|
11
|
+
{% assign type = 'basic' %}
|
|
12
|
+
{% endif %}
|
|
13
|
+
{% endif %}
|
data/_includes/post-nav.html
CHANGED
|
@@ -1,30 +1,34 @@
|
|
|
1
|
-
<!--
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
<!-- Navigation buttons at the bottom of the post. -->
|
|
2
|
+
|
|
3
|
+
<nav class="post-navigation d-flex justify-content-between" aria-label="Post Navigation">
|
|
4
|
+
{% assign previous = site.data.locales[include.lang].post.button.previous %}
|
|
5
|
+
{% assign next = site.data.locales[include.lang].post.button.next %}
|
|
4
6
|
|
|
5
|
-
<div class="post-navigation d-flex justify-content-between">
|
|
6
7
|
{% if page.previous.url %}
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
8
|
+
<a
|
|
9
|
+
href="{{ site.baseurl }}{{ page.previous.url }}"
|
|
10
|
+
class="btn btn-outline-primary"
|
|
11
|
+
aria-label="{{ previous }}"
|
|
12
|
+
>
|
|
13
|
+
<p>{{ page.previous.title }}</p>
|
|
14
|
+
</a>
|
|
11
15
|
{% else %}
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
</span>
|
|
16
|
+
<div class="btn btn-outline-primary disabled" aria-label="{{ previous }}">
|
|
17
|
+
<p>-</p>
|
|
18
|
+
</div>
|
|
16
19
|
{% endif %}
|
|
17
20
|
|
|
18
21
|
{% if page.next.url %}
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
22
|
+
<a
|
|
23
|
+
href="{{ site.baseurl }}{{page.next.url}}"
|
|
24
|
+
class="btn btn-outline-primary"
|
|
25
|
+
aria-label="{{ next }}"
|
|
26
|
+
>
|
|
27
|
+
<p>{{ page.next.title }}</p>
|
|
28
|
+
</a>
|
|
23
29
|
{% else %}
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
</span>
|
|
30
|
+
<div class="btn btn-outline-primary disabled" aria-label="{{ next }}">
|
|
31
|
+
<p>-</p>
|
|
32
|
+
</div>
|
|
28
33
|
{% endif %}
|
|
29
|
-
|
|
30
|
-
</div>
|
|
34
|
+
</nav>
|