hexo-theme-particlex 2.6.1 → 2.6.3
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.
- package/README.md +4 -4
- package/_config.yml +1 -1
- package/layout/footer.ejs +1 -1
- package/layout/import.ejs +1 -1
- package/package.json +5 -5
- package/source/js/lib/crypto.js +2 -2
- package/source/js/lib/highlight.js +7 -4
- 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
@@ -1,6 +1,6 @@
|
|
1
1
|
# Hexo-Theme-ParticleX
|
2
2
|
|
3
|
-
[ParticleX](https://github.com/
|
3
|
+
[ParticleX](https://github.com/theme-particlex/hexo-theme-particlex) 主题,诞生原因是因为原来的 [Particle](https://github.com/korilin/hexo-theme-particle) 主题不维护了,但是我觉得还是很好的
|
4
4
|
|
5
5
|
原来用的是 Vue 2 + Ant Design Vue 1,现更新到 Vue 3,去除 Ant Design Vue 采用自定义样式,图标更改为 Font Awesome 6,CDN 改为 Staticfile
|
6
6
|
|
@@ -20,7 +20,7 @@
|
|
20
20
|
|
21
21
|
```bash
|
22
22
|
cd themes
|
23
|
-
git clone https://github.com/
|
23
|
+
git clone https://github.com/theme-particlex/hexo-theme-particlex.git particlex --depth=1
|
24
24
|
```
|
25
25
|
|
26
26
|
然后在根目录 `_config.yml` 设置主题为 ParticleX 即可
|
@@ -156,7 +156,7 @@ footer:
|
|
156
156
|
|
157
157
|
使用 [Polyfill.io](https://polyfill.io) 自动根据 UA 处理新的 JS API 兼容
|
158
158
|
|
159
|
-
可以配合 [Hexo-Babel](https://github.com/
|
159
|
+
可以配合 [Hexo-Babel](https://github.com/theme-particlex/hexo-babel) 插件处理 JS 语法兼容
|
160
160
|
|
161
161
|
```yaml
|
162
162
|
# Polyfill
|
@@ -220,7 +220,7 @@ description: |
|
|
220
220
|
|
221
221
|
### 3.3.7. 文章加密
|
222
222
|
|
223
|
-
使用 AES 加密算法,在 [Front-Matter](https://hexo.io/zh-cn/docs/front-matter) 里设置 `secret` 作为密码,**使用请安装插件 [Hexo-Helper-Crypto](https://github.com/
|
223
|
+
使用 AES 加密算法,在 [Front-Matter](https://hexo.io/zh-cn/docs/front-matter) 里设置 `secret` 作为密码,**使用请安装插件 [Hexo-Helper-Crypto](https://github.com/theme-particlex/hexo-helper-crypto)**
|
224
224
|
|
225
225
|
```yaml
|
226
226
|
# Article encryption
|
package/_config.yml
CHANGED
package/layout/footer.ejs
CHANGED
@@ -10,7 +10,7 @@
|
|
10
10
|
</div>
|
11
11
|
<div>
|
12
12
|
Based on the <a href="https://hexo.io">Hexo Engine</a> &
|
13
|
-
<a href="https://github.com/
|
13
|
+
<a href="https://github.com/theme-particlex/hexo-theme-particlex">ParticleX Theme</a>
|
14
14
|
</div>
|
15
15
|
<% if (theme.footer.ICP.enable) { %>
|
16
16
|
<div>
|
package/layout/import.ejs
CHANGED
@@ -40,7 +40,7 @@
|
|
40
40
|
<link rel="stylesheet" href="https://cdn.staticfile.org/waline/2.14.8/waline-meta.min.css" />
|
41
41
|
<% } %>
|
42
42
|
<% if (theme.twikoo.enable) { %>
|
43
|
-
<script src="https://cdn.staticfile.org/twikoo/1.6.
|
43
|
+
<script src="https://cdn.staticfile.org/twikoo/1.6.16/twikoo.all.min.js"></script>
|
44
44
|
<% } %>
|
45
45
|
<% } %>
|
46
46
|
<% if (type === "index") { %>
|
package/package.json
CHANGED
@@ -1,10 +1,10 @@
|
|
1
1
|
{
|
2
2
|
"name": "hexo-theme-particlex",
|
3
|
-
"version": "2.6.
|
3
|
+
"version": "2.6.3",
|
4
4
|
"description": "A concise Hexo theme, based on Particle.",
|
5
5
|
"repository": {
|
6
6
|
"type": "git",
|
7
|
-
"url": "git+https://github.com/
|
7
|
+
"url": "git+https://github.com/theme-particlex/hexo-theme-particlex.git"
|
8
8
|
},
|
9
9
|
"keywords": [
|
10
10
|
"hexo",
|
@@ -17,11 +17,11 @@
|
|
17
17
|
"author": "Argvchs",
|
18
18
|
"license": "MIT",
|
19
19
|
"bugs": {
|
20
|
-
"url": "https://github.com/
|
20
|
+
"url": "https://github.com/theme-particlex/hexo-theme-particlex/issues"
|
21
21
|
},
|
22
|
-
"homepage": "https://github.com/
|
22
|
+
"homepage": "https://github.com/theme-particlex/hexo-theme-particlex#readme",
|
23
23
|
"dependencies": {
|
24
|
-
"hexo-helper-crypto": "^1.1.
|
24
|
+
"hexo-helper-crypto": "^1.1.3",
|
25
25
|
"hexo-renderer-ejs": "^2.0.0"
|
26
26
|
},
|
27
27
|
"scripts": {
|
package/source/js/lib/crypto.js
CHANGED
@@ -5,8 +5,8 @@ mixins.crypto = {
|
|
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
|
+
let { 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) {
|
@@ -7,12 +7,15 @@ mixins.highlight = {
|
|
7
7
|
this.renderers.push(this.highlight);
|
8
8
|
},
|
9
9
|
methods: {
|
10
|
+
sleep(time) {
|
11
|
+
return new Promise(resolve => setTimeout(resolve, time));
|
12
|
+
},
|
10
13
|
highlight() {
|
11
14
|
let codes = document.querySelectorAll("pre");
|
12
15
|
for (let i of codes) {
|
13
|
-
let code = i.innerText
|
14
|
-
|
15
|
-
|
16
|
+
let code = i.innerText;
|
17
|
+
let language = [...i.classList, ...i.firstChild.classList][0] || "plaintext";
|
18
|
+
let highlighted;
|
16
19
|
try {
|
17
20
|
highlighted = hljs.highlight(code, { language }).value;
|
18
21
|
} catch {
|
@@ -32,7 +35,7 @@ mixins.highlight = {
|
|
32
35
|
this.copying = true;
|
33
36
|
copycode.classList.add("copied");
|
34
37
|
await navigator.clipboard.writeText(code);
|
35
|
-
await
|
38
|
+
await this.sleep(1000);
|
36
39
|
copycode.classList.remove("copied");
|
37
40
|
this.copying = false;
|
38
41
|
});
|
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
|
+
let images = background.dataset.images.split(",");
|
5
|
+
let 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
|
+
let 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
|
+
let newScrollTop = document.documentElement.scrollTop;
|
30
30
|
if (this.scrollTop < newScrollTop) {
|
31
31
|
this.hiddenMenu = true;
|
32
32
|
this.showMenuItems = false;
|