hexo-theme-particlex 2.5.15 → 2.6.1
Sign up to get free protection for your applications and to get access to all the features.
- package/README.md +1 -16
- package/_config.yml +0 -7
- package/layout/archives.ejs +2 -2
- package/layout/card.ejs +7 -7
- package/layout/categories.ejs +2 -2
- package/layout/comment.ejs +18 -27
- package/layout/current.ejs +6 -6
- package/layout/index.ejs +1 -5
- package/layout/layout.ejs +13 -13
- package/layout/menu.ejs +19 -17
- package/layout/post.ejs +4 -4
- package/layout/posts.ejs +2 -2
- package/layout/tags.ejs +3 -3
- package/package.json +1 -1
- package/source/css/main.css +15 -14
- package/source/js/lib/crypto.js +9 -9
- package/source/js/lib/highlight.js +8 -3
- package/source/js/lib/home.js +3 -3
- package/source/js/lib/preview.js +2 -2
- package/source/js/main.js +2 -2
package/README.md
CHANGED
@@ -121,8 +121,6 @@ menu:
|
|
121
121
|
|
122
122
|
图标链接配置和导航栏配置相同
|
123
123
|
|
124
|
-
**如果图标链接或友链为空,请在 `iconLinks:` 或 `friendLinks:` 后添加一个 `{}`**
|
125
|
-
|
126
124
|
```yaml
|
127
125
|
# Side info card
|
128
126
|
card:
|
@@ -131,7 +129,6 @@ card:
|
|
131
129
|
Description
|
132
130
|
...
|
133
131
|
iconLinks:
|
134
|
-
{}
|
135
132
|
friendLinks:
|
136
133
|
Argvchs: https://argvchs.github.io
|
137
134
|
```
|
@@ -274,11 +271,7 @@ giscus:
|
|
274
271
|
|
275
272
|
Gitalk 是一个基于 GitHub Issue 和 Preact 的评论系统
|
276
273
|
|
277
|
-
|
278
|
-
|
279
|
-
**同样如果没有其他网站,请在 `sites:` 后添加一个 `{}`**
|
280
|
-
|
281
|
-
由于 Gitalk 官方 CORS 代理用的是 Cloudflare,速度过慢,添加了 `proxy` 参数,搭建 CORS 代理可以看[这篇文章](https://argvchs.github.io/2022/07/04/build-cors-anywhere)
|
274
|
+
由于 Gitalk 官方 CORS 代理用的是 Cloudflare,速度过慢,搭建 CORS 代理可以看[这篇文章](https://argvchs.github.io/2022/07/04/build-cors-anywhere)
|
282
275
|
|
283
276
|
```yaml
|
284
277
|
# Gitalk
|
@@ -292,11 +285,6 @@ gitalk:
|
|
292
285
|
admin: # GitHub repo owner and collaborators, only these guys can initialize github issues
|
293
286
|
language: zh-CN # en, zh-CN, zh-TW, es-ES, fr, ru, de, pl and ko are currently available
|
294
287
|
proxy: # CORS proxy
|
295
|
-
sites: # Sites
|
296
|
-
{}
|
297
|
-
# www.example.com:
|
298
|
-
# clientID:
|
299
|
-
# clientSecret:
|
300
288
|
```
|
301
289
|
|
302
290
|
### 3.4.3. Waline
|
@@ -305,8 +293,6 @@ Waline 是一个简单、安全的评论系统
|
|
305
293
|
|
306
294
|
详见:[在 ParticleX 上使用 Waline | Yuzi's Blog](https://blog.yuzi.dev/posts/bcb4ff00.html)
|
307
295
|
|
308
|
-
**注意如果不需要 `locale` 参数,请在 `locale:` 后添加一个 `{}`**
|
309
|
-
|
310
296
|
```yaml
|
311
297
|
# Waline
|
312
298
|
# https://github.com/walinejs/waline
|
@@ -314,7 +300,6 @@ waline:
|
|
314
300
|
enable: false
|
315
301
|
serverURL: # Waline server address url, you should set this to your own link
|
316
302
|
locale: # Locale: https://waline.js.org/guide/client/i18n.html#locale-option
|
317
|
-
{}
|
318
303
|
commentCount: true # If false, comment count will only be displayed in post page, not in home page
|
319
304
|
pageview: false # Pageviews count, Note: You should not enable both `waline.pageview` and `leancloud_visitors`
|
320
305
|
emoji: # Custom emoji
|
package/_config.yml
CHANGED
@@ -44,7 +44,6 @@ card:
|
|
44
44
|
Description
|
45
45
|
...
|
46
46
|
iconLinks:
|
47
|
-
{}
|
48
47
|
friendLinks:
|
49
48
|
Argvchs: https://argvchs.github.io
|
50
49
|
|
@@ -114,11 +113,6 @@ gitalk:
|
|
114
113
|
admin: # GitHub repo owner and collaborators, only these guys can initialize github issues
|
115
114
|
language: zh-CN # en, zh-CN, zh-TW, es-ES, fr, ru, de, pl and ko are currently available
|
116
115
|
proxy: # CORS proxy
|
117
|
-
sites: # Sites
|
118
|
-
{}
|
119
|
-
# www.example.com:
|
120
|
-
# clientID:
|
121
|
-
# clientSecret:
|
122
116
|
|
123
117
|
# Waline
|
124
118
|
# https://github.com/walinejs/waline
|
@@ -126,7 +120,6 @@ waline:
|
|
126
120
|
enable: false
|
127
121
|
serverURL: # Waline server address url, you should set this to your own link
|
128
122
|
locale: # Locale: https://waline.js.org/guide/client/i18n.html#locale-option
|
129
|
-
{}
|
130
123
|
commentCount: true # If false, comment count will only be displayed in post page, not in home page
|
131
124
|
pageview: false # Pageviews count, Note: You should not enable both `waline.pageview` and `leancloud_visitors`
|
132
125
|
emoji: # Custom emoji
|
package/layout/archives.ejs
CHANGED
@@ -31,7 +31,7 @@
|
|
31
31
|
<span class="icon">
|
32
32
|
<i class="fa-solid fa-tags fa-fw"></i>
|
33
33
|
</span>
|
34
|
-
<% post.tags.data.forEach(
|
34
|
+
<% post.tags.data.forEach(tag => { %>
|
35
35
|
<span class="tag">
|
36
36
|
<%
|
37
37
|
const color = [
|
@@ -43,7 +43,7 @@
|
|
43
43
|
];
|
44
44
|
let id = Math.floor(Math.random() * color.length);
|
45
45
|
%>
|
46
|
-
<a href="<%- url_for(
|
46
|
+
<a href="<%- url_for(tag.path) %>" style="<%- color[id] %>"><%= tag.name %></a>
|
47
47
|
</span>
|
48
48
|
<% }); %>
|
49
49
|
</span>
|
package/layout/card.ejs
CHANGED
@@ -7,24 +7,24 @@
|
|
7
7
|
<div class="description">
|
8
8
|
<%- markdown(theme.card.description) %>
|
9
9
|
</div>
|
10
|
-
<% if (
|
10
|
+
<% if (theme.card.iconLinks) { %>
|
11
11
|
<div class="icon-links">
|
12
|
-
<% Object.
|
12
|
+
<% Object.entries(theme.card.iconLinks).forEach(([key, value]) => { %>
|
13
13
|
<span class="icon-link">
|
14
|
-
<a href="<%- url_for(
|
14
|
+
<a href="<%- url_for(value.link) %>">
|
15
15
|
<i
|
16
|
-
class="fa-<%-
|
16
|
+
class="fa-<%- value.theme %> fa-<%- value.name %> fa-fw"
|
17
17
|
></i>
|
18
18
|
</a>
|
19
19
|
</span>
|
20
20
|
<% }); %>
|
21
21
|
</div>
|
22
22
|
<% } %>
|
23
|
-
<% if (
|
23
|
+
<% if (theme.card.friendLinks) { %>
|
24
24
|
<div class="friend-links">
|
25
|
-
<% Object.
|
25
|
+
<% Object.entries(theme.card.friendLinks).forEach(([key, value]) => { %>
|
26
26
|
<div class="friend-link">
|
27
|
-
<a href="<%- url_for(
|
27
|
+
<a href="<%- url_for(value) %>"><%= key %></a>
|
28
28
|
</div>
|
29
29
|
<% }); %>
|
30
30
|
</div>
|
package/layout/categories.ejs
CHANGED
@@ -48,7 +48,7 @@
|
|
48
48
|
<span class="icon">
|
49
49
|
<i class="fa-solid fa-tags fa-fw"></i>
|
50
50
|
</span>
|
51
|
-
<% post.tags.data.forEach(
|
51
|
+
<% post.tags.data.forEach(tag => { %>
|
52
52
|
<span class="tag">
|
53
53
|
<%
|
54
54
|
const color = [
|
@@ -60,7 +60,7 @@
|
|
60
60
|
];
|
61
61
|
let id = Math.floor(Math.random() * color.length);
|
62
62
|
%>
|
63
|
-
<a href="<%- url_for(
|
63
|
+
<a href="<%- url_for(tag.path) %>" style="<%- color[id] %>"><%= tag.name %></a>
|
64
64
|
</span>
|
65
65
|
<% }); %>
|
66
66
|
</span>
|
package/layout/comment.ejs
CHANGED
@@ -18,30 +18,19 @@
|
|
18
18
|
<% } %>
|
19
19
|
<% if (theme.gitalk.enable) { %>
|
20
20
|
<script>
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
<%
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
owner: "<%- theme.gitalk.owner %>",
|
35
|
-
admin: ["<%- theme.gitalk.admin %>"],
|
36
|
-
language: "<%- theme.gitalk.language %>",
|
37
|
-
id: location.pathname,
|
38
|
-
distractionFreeMode: false,
|
39
|
-
<% if (theme.gitalk.proxy) { %>
|
40
|
-
proxy: "<%- theme.gitalk.proxy %>",
|
41
|
-
<% } %>
|
42
|
-
})
|
43
|
-
gitalk.render("gitalk-container");
|
44
|
-
})();
|
21
|
+
const gitalk = new Gitalk({
|
22
|
+
clientID: "<%- theme.gitalk.clientID %>",
|
23
|
+
clientSecret: "<%- theme.gitalk.clientSecret %>",
|
24
|
+
repo: "<%- theme.gitalk.repo %>",
|
25
|
+
owner: "<%- theme.gitalk.owner %>",
|
26
|
+
admin: "<%- theme.gitalk.admin %>".split(","),
|
27
|
+
language: "<%- theme.gitalk.language %>",
|
28
|
+
id: location.pathname,
|
29
|
+
<% if (theme.gitalk.proxy) { %>
|
30
|
+
proxy: "<%- theme.gitalk.proxy %>",
|
31
|
+
<% } %>
|
32
|
+
})
|
33
|
+
gitalk.render("gitalk-container");
|
45
34
|
</script>
|
46
35
|
<% } %>
|
47
36
|
<% if (theme.waline.enable) { %>
|
@@ -51,14 +40,16 @@
|
|
51
40
|
serverURL: "<%- theme.waline.serverURL %>",
|
52
41
|
commentCount: <%- theme.waline.commentCount %>,
|
53
42
|
pageview: <%- theme.waline.pageview %>,
|
54
|
-
emoji: <%-
|
55
|
-
meta: <%-
|
56
|
-
requiredMeta: <%-
|
43
|
+
emoji: "<%- (theme.waline.emoji) %>".split(","),
|
44
|
+
meta: "<%- (theme.waline.meta) %>".split(","),
|
45
|
+
requiredMeta: "<%- theme.waline.requiredMeta %>".split(","),
|
57
46
|
lang: "<%- theme.waline.lang %>",
|
58
47
|
wordLimit: <%- theme.waline.wordLimit %>,
|
59
48
|
pageSize: "<%- theme.waline.pageSize %>",
|
60
49
|
login: "<%- theme.waline.login %>",
|
50
|
+
<% if (theme.waline.locale) { %>
|
61
51
|
locale: <%- JSON.stringify(theme.waline.locale) %>,
|
52
|
+
<% } %>
|
62
53
|
});
|
63
54
|
</script>
|
64
55
|
<% } %>
|
package/layout/current.ejs
CHANGED
@@ -14,12 +14,12 @@
|
|
14
14
|
<span class="page-omit">...</span>
|
15
15
|
<% } %>
|
16
16
|
<% if (page.current - 2 >= 1) { %>
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
17
|
+
<% if (page.current - 2 === 1) { %>
|
18
|
+
<a class="page-num" href="<%- config.root %>">1</a>
|
19
|
+
<% } %>
|
20
|
+
<% if (page.current - 2 !== 1) { %>
|
21
|
+
<a class="page-num" href="<%- url_for("page/" + (page.current - 2)) %>"><%= page.current - 2 %></a>
|
22
|
+
<% } %>
|
23
23
|
<% } %>
|
24
24
|
<a class="page-num" href="<%- url_for(page.prev_link) %>"><%= page.prev %></a>
|
25
25
|
</span>
|
package/layout/index.ejs
CHANGED
@@ -1,9 +1,5 @@
|
|
1
1
|
<div id="home-head">
|
2
|
-
<div
|
3
|
-
id="home-background"
|
4
|
-
ref="homeBackground"
|
5
|
-
data-images="<%- theme.background.map(i => url_for(i)) %>"
|
6
|
-
></div>
|
2
|
+
<div id="home-background" ref="homeBackground" data-images="<%- theme.background.map(url_for) %>"></div>
|
7
3
|
<div id="home-info" @click="homeClick">
|
8
4
|
<span class="loop"></span>
|
9
5
|
<span class="loop"></span>
|
package/layout/layout.ejs
CHANGED
@@ -27,26 +27,26 @@
|
|
27
27
|
<body>
|
28
28
|
<div id="layout">
|
29
29
|
<transition name="fade">
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
30
|
+
<div id="loading" v-show="loading">
|
31
|
+
<div id="loading-circle">
|
32
|
+
<h2>LOADING</h2>
|
33
|
+
<p>加载过慢请开启缓存 浏览器默认开启</p>
|
34
|
+
<img src="<%- url_for("/images/loading.gif") %>" />
|
35
|
+
</div>
|
35
36
|
</div>
|
36
|
-
</div>
|
37
37
|
</transition>
|
38
38
|
<%- partial("menu") %>
|
39
39
|
<transition name="into">
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
40
|
+
<div id="main" v-show="!loading">
|
41
|
+
<%- partial(type) %>
|
42
|
+
<%- partial("footer") %>
|
43
|
+
</div>
|
44
44
|
</transition>
|
45
45
|
<% if (theme.preview.enable) { %>
|
46
46
|
<transition name="fade">
|
47
|
-
|
48
|
-
|
49
|
-
|
47
|
+
<div id="preview" ref="preview" v-show="previewShow">
|
48
|
+
<img id="preview-content" ref="previewContent" />
|
49
|
+
</div>
|
50
50
|
</transition>
|
51
51
|
<% } %>
|
52
52
|
</div>
|
package/layout/menu.ejs
CHANGED
@@ -1,34 +1,36 @@
|
|
1
1
|
<nav id="menu" :class="{ hidden: hiddenMenu, 'menu-color': menuColor}">
|
2
|
-
<div
|
2
|
+
<div id="desktop-menu">
|
3
3
|
<a class="title" href="<%- config.root %>">
|
4
4
|
<span><%= config.title.toUpperCase() %></span>
|
5
5
|
</a>
|
6
|
-
<% Object.
|
7
|
-
<a href="<%- url_for(
|
8
|
-
<i class="fa-<%-
|
6
|
+
<% Object.entries(theme.menu).forEach(([key, value]) => { %>
|
7
|
+
<a href="<%- url_for(value.link) %>">
|
8
|
+
<i class="fa-<%- value.theme %> fa-<%- value.name %> fa-fw"></i>
|
9
9
|
<span> <%= key %></span>
|
10
10
|
</a>
|
11
11
|
<% }); %>
|
12
12
|
</div>
|
13
13
|
<div id="mobile-menu">
|
14
|
-
<div class="
|
15
|
-
<div class="title" @click="shouMenuItems = !shouMenuItems">
|
14
|
+
<div class="title" @click="showMenuItems = !showMenuItems">
|
16
15
|
<i class="fa-solid fa-bars fa-fw"></i>
|
17
16
|
<span> <%= config.title.toUpperCase() %></span>
|
18
17
|
</div>
|
19
18
|
<transition name="slide">
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
19
|
+
<div class="items" v-show="showMenuItems">
|
20
|
+
<% Object.entries(theme.menu).forEach(([key, value]) => { %>
|
21
|
+
<a href="<%- url_for(value.link) %>">
|
22
|
+
<div class="item">
|
23
|
+
<div style="min-width: 20px; max-width: 50px; width: 10%">
|
24
|
+
<i class="fa-<%- value.theme %> fa-<%- value.name %> fa-fw"></i>
|
25
|
+
</div>
|
26
|
+
<div style="min-width: 100px; max-width: 150%; width: 20%"><%= key %></div>
|
26
27
|
</div>
|
27
|
-
|
28
|
-
|
29
|
-
</
|
30
|
-
<% }); %>
|
31
|
-
</div>
|
28
|
+
</a>
|
29
|
+
<% }); %>
|
30
|
+
</div>
|
32
31
|
</transition>
|
33
32
|
</div>
|
34
33
|
</nav>
|
34
|
+
<transition name="fade">
|
35
|
+
<div id="menu-curtain" @click="showMenuItems = !showMenuItems" v-show="showMenuItems"></div>
|
36
|
+
</transition>
|
package/layout/post.ejs
CHANGED
@@ -24,7 +24,7 @@
|
|
24
24
|
<span class="icon">
|
25
25
|
<i class="fa-solid fa-tags fa-fw"></i>
|
26
26
|
</span>
|
27
|
-
<% page.tags.data.forEach(
|
27
|
+
<% page.tags.data.forEach(tag => { %>
|
28
28
|
<span class="tag">
|
29
29
|
<%
|
30
30
|
const color = [
|
@@ -36,7 +36,7 @@
|
|
36
36
|
];
|
37
37
|
let id = Math.floor(Math.random() * color.length);
|
38
38
|
%>
|
39
|
-
<a href="<%- url_for(
|
39
|
+
<a href="<%- url_for(tag.path) %>" style="<%- color[id] %>"><%= tag.name %></a>
|
40
40
|
</span>
|
41
41
|
<% }); %>
|
42
42
|
</span>
|
@@ -47,7 +47,7 @@
|
|
47
47
|
<input
|
48
48
|
id="crypto"
|
49
49
|
:class="['input', cryptoClass]"
|
50
|
-
:disabled="
|
50
|
+
:disabled="cryptoStatus"
|
51
51
|
ref="crypto"
|
52
52
|
placeholder="文章被加密,请输入密码"
|
53
53
|
data-encrypted="<%- CryptoJS.AES.encrypt(page.content, page.secret).toString() %>"
|
@@ -55,7 +55,7 @@
|
|
55
55
|
v-model="crypto"
|
56
56
|
/>
|
57
57
|
<transition name="fade">
|
58
|
-
|
58
|
+
<div class="content" ref="content" v-show="cryptoStatus"></div>
|
59
59
|
</transition>
|
60
60
|
<% } else { %>
|
61
61
|
<div class="content" v-pre>
|
package/layout/posts.ejs
CHANGED
@@ -58,7 +58,7 @@
|
|
58
58
|
<i class="fa-solid fa-tags fa-fw"></i>
|
59
59
|
</span>
|
60
60
|
<% } %>
|
61
|
-
<% post.tags.data.forEach(
|
61
|
+
<% post.tags.data.forEach(tag => { %>
|
62
62
|
<span class="tag">
|
63
63
|
<%
|
64
64
|
const color = [
|
@@ -70,7 +70,7 @@
|
|
70
70
|
];
|
71
71
|
let id = Math.floor(Math.random() * color.length);
|
72
72
|
%>
|
73
|
-
<a href="<%- url_for(
|
73
|
+
<a href="<%- url_for(tag.path) %>" style="<%- color[id] %>"><%= tag.name %></a>
|
74
74
|
</span>
|
75
75
|
<% }); %>
|
76
76
|
</div>
|
package/layout/tags.ejs
CHANGED
@@ -33,7 +33,7 @@
|
|
33
33
|
<h3><%= post.title %></h3>
|
34
34
|
</a>
|
35
35
|
<div class="info">
|
36
|
-
<% if (post.categories && post.categories.data.length
|
36
|
+
<% if (post.categories && post.categories.data.length){ %>
|
37
37
|
<span class="category">
|
38
38
|
<a href="<%- url_for(post.categories.data[0].path) %>">
|
39
39
|
<span class="icon">
|
@@ -48,7 +48,7 @@
|
|
48
48
|
<span class="icon">
|
49
49
|
<i class="fa-solid fa-tags fa-fw"></i>
|
50
50
|
</span>
|
51
|
-
<% post.tags.data.forEach(
|
51
|
+
<% post.tags.data.forEach(tag => { %>
|
52
52
|
<span class="tag">
|
53
53
|
<%
|
54
54
|
const color = [
|
@@ -60,7 +60,7 @@
|
|
60
60
|
];
|
61
61
|
let id = Math.floor(Math.random() * color.length);
|
62
62
|
%>
|
63
|
-
<a href="<%- url_for(
|
63
|
+
<a href="<%- url_for(tag.path) %>" style="<%- color[id] %>"><%= tag.name %></a>
|
64
64
|
</span>
|
65
65
|
<% }); %>
|
66
66
|
</span>
|
package/package.json
CHANGED
package/source/css/main.css
CHANGED
@@ -271,7 +271,7 @@
|
|
271
271
|
}
|
272
272
|
#home-posts .post .category-and-date .date,
|
273
273
|
#archives .tags,
|
274
|
-
#menu
|
274
|
+
#menu #desktop-menu a span {
|
275
275
|
display: inline-block;
|
276
276
|
}
|
277
277
|
#home-posts .post .category-and-date .special {
|
@@ -376,18 +376,18 @@
|
|
376
376
|
top: 0;
|
377
377
|
transition: background 0.25s ease-out, top 0.25s ease-out;
|
378
378
|
width: 100vw;
|
379
|
-
z-index:
|
379
|
+
z-index: 1004;
|
380
380
|
}
|
381
|
-
#menu
|
381
|
+
#menu #desktop-menu {
|
382
382
|
height: 50px;
|
383
383
|
}
|
384
|
-
#menu
|
384
|
+
#menu #desktop-menu .title {
|
385
385
|
color: #555;
|
386
386
|
display: inline-block;
|
387
387
|
margin-left: 60px;
|
388
388
|
margin-right: 5px;
|
389
389
|
}
|
390
|
-
#menu
|
390
|
+
#menu #desktop-menu a {
|
391
391
|
color: #555;
|
392
392
|
display: inline-block;
|
393
393
|
margin-left: 30px;
|
@@ -396,17 +396,18 @@
|
|
396
396
|
min-height: 50px;
|
397
397
|
text-align: center;
|
398
398
|
}
|
399
|
-
#menu
|
399
|
+
#menu-curtain {
|
400
|
+
background: #0003;
|
400
401
|
height: 100%;
|
401
402
|
left: 0;
|
402
403
|
position: fixed;
|
403
404
|
top: 0;
|
404
405
|
width: 100%;
|
405
|
-
z-index:
|
406
|
+
z-index: 1001;
|
406
407
|
}
|
407
408
|
#menu #mobile-menu .items {
|
408
409
|
padding: 10px 0 20px;
|
409
|
-
z-index:
|
410
|
+
z-index: 1002;
|
410
411
|
}
|
411
412
|
#menu #mobile-menu .items .item {
|
412
413
|
display: flex;
|
@@ -421,10 +422,10 @@
|
|
421
422
|
#menu #mobile-menu .title {
|
422
423
|
color: #555;
|
423
424
|
cursor: pointer;
|
424
|
-
z-index:
|
425
|
+
z-index: 1003;
|
425
426
|
}
|
426
427
|
#menu.hidden {
|
427
|
-
top: -
|
428
|
+
top: -50px !important;
|
428
429
|
}
|
429
430
|
#menu.menu-color {
|
430
431
|
background: #0003 !important;
|
@@ -444,7 +445,7 @@
|
|
444
445
|
position: fixed;
|
445
446
|
top: 0;
|
446
447
|
width: 100vw;
|
447
|
-
z-index:
|
448
|
+
z-index: 1005;
|
448
449
|
}
|
449
450
|
#preview-content {
|
450
451
|
box-shadow: 0 0 50px 10px #d9d9d980;
|
@@ -454,7 +455,7 @@
|
|
454
455
|
}
|
455
456
|
#search-bar {
|
456
457
|
margin-bottom: 50px;
|
457
|
-
z-index:
|
458
|
+
z-index: 1000;
|
458
459
|
}
|
459
460
|
#timeline-wrap {
|
460
461
|
display: flex;
|
@@ -872,7 +873,7 @@ ol li {
|
|
872
873
|
#home-posts-wrap {
|
873
874
|
max-width: 1200px;
|
874
875
|
}
|
875
|
-
#menu
|
876
|
+
#menu #desktop-menu {
|
876
877
|
display: block;
|
877
878
|
}
|
878
879
|
#menu #mobile-menu {
|
@@ -958,7 +959,7 @@ ol li {
|
|
958
959
|
#footer #footer-wrap {
|
959
960
|
width: 100%;
|
960
961
|
}
|
961
|
-
#menu
|
962
|
+
#menu #desktop-menu,
|
962
963
|
#home-card {
|
963
964
|
display: none;
|
964
965
|
}
|
package/source/js/lib/crypto.js
CHANGED
@@ -1,29 +1,29 @@
|
|
1
1
|
mixins.crypto = {
|
2
2
|
data() {
|
3
|
-
return { crypto: "",
|
3
|
+
return { crypto: "", cryptoStatus: null };
|
4
4
|
},
|
5
5
|
watch: {
|
6
6
|
crypto(value) {
|
7
7
|
let input = this.$refs.crypto,
|
8
|
-
content = this.$refs.content
|
9
|
-
|
8
|
+
content = this.$refs.content,
|
9
|
+
{ encrypted, shasum } = input.dataset;
|
10
10
|
try {
|
11
11
|
let decrypted = CryptoJS.AES.decrypt(encrypted, value).toString(CryptoJS.enc.Utf8);
|
12
12
|
if (CryptoJS.SHA256(decrypted).toString() === shasum) {
|
13
|
-
this.
|
13
|
+
this.cryptoStatus = true;
|
14
14
|
content.innerHTML = decrypted;
|
15
15
|
this.render();
|
16
|
-
} else this.
|
16
|
+
} else this.cryptoStatus = false;
|
17
17
|
} catch {
|
18
|
-
this.
|
18
|
+
this.cryptoStatus = false;
|
19
19
|
}
|
20
20
|
},
|
21
21
|
},
|
22
22
|
computed: {
|
23
23
|
cryptoClass() {
|
24
|
-
if (this.
|
25
|
-
if (this.
|
26
|
-
if (this.
|
24
|
+
if (this.cryptoStatus === null) return "";
|
25
|
+
if (this.cryptoStatus === true) return "success";
|
26
|
+
if (this.cryptoStatus === false) return "fail";
|
27
27
|
},
|
28
28
|
},
|
29
29
|
};
|
@@ -10,9 +10,14 @@ mixins.highlight = {
|
|
10
10
|
highlight() {
|
11
11
|
let codes = document.querySelectorAll("pre");
|
12
12
|
for (let i of codes) {
|
13
|
-
let code = i.innerText
|
14
|
-
|
15
|
-
|
13
|
+
let code = i.innerText,
|
14
|
+
language = [...i.classList, ...i.firstChild.classList][0] || "plaintext",
|
15
|
+
highlighted;
|
16
|
+
try {
|
17
|
+
highlighted = hljs.highlight(code, { language }).value;
|
18
|
+
} catch {
|
19
|
+
highlighted = code;
|
20
|
+
}
|
16
21
|
i.innerHTML = `
|
17
22
|
<div class="code-content">${highlighted}</div>
|
18
23
|
<div class="language">${language}</div>
|
package/source/js/lib/home.js
CHANGED
@@ -1,8 +1,8 @@
|
|
1
1
|
mixins.home = {
|
2
2
|
mounted() {
|
3
|
-
let background = this.$refs.homeBackground
|
4
|
-
|
5
|
-
|
3
|
+
let background = this.$refs.homeBackground,
|
4
|
+
images = background.dataset.images.split(","),
|
5
|
+
id = Math.floor(Math.random() * images.length);
|
6
6
|
background.style.backgroundImage = `url('${images[id]}')`;
|
7
7
|
this.menuColor = true;
|
8
8
|
},
|
package/source/js/lib/preview.js
CHANGED
@@ -8,8 +8,8 @@ mixins.preview = {
|
|
8
8
|
methods: {
|
9
9
|
preview() {
|
10
10
|
let preview = this.$refs.preview,
|
11
|
-
content = this.$refs.previewContent
|
12
|
-
|
11
|
+
content = this.$refs.previewContent,
|
12
|
+
images = document.querySelectorAll("img");
|
13
13
|
for (let i of images)
|
14
14
|
i.addEventListener("click", () => {
|
15
15
|
content.alt = i.alt;
|
package/source/js/main.js
CHANGED
@@ -25,8 +25,8 @@ const app = Vue.createApp({
|
|
25
25
|
for (let i of this.renderers) i();
|
26
26
|
},
|
27
27
|
handleScroll() {
|
28
|
-
let wrap = this.$refs.homePostsWrap
|
29
|
-
|
28
|
+
let wrap = this.$refs.homePostsWrap,
|
29
|
+
newScrollTop = document.documentElement.scrollTop;
|
30
30
|
if (this.scrollTop < newScrollTop) {
|
31
31
|
this.hiddenMenu = true;
|
32
32
|
this.showMenuItems = false;
|