hexo-theme-stellar 1.21.0 → 1.22.1
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/_config.yml +9 -4
- package/layout/_partial/plugins/comments/artalk/script.ejs +1 -1
- package/package.json +1 -1
- package/scripts/filters/index.js +0 -13
- package/scripts/tags/lib/banner.js +0 -1
- package/scripts/tags/lib/gallery.js +28 -21
- package/source/css/_layout/tag-plugins/banner.styl +5 -4
- package/source/css/_layout/tag-plugins/gallery.styl +59 -10
- package/source/css/_layout/widgets/toc_common.styl +12 -1
- package/source/js/main.js +5 -2
package/_config.yml
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
######## Stellar info ########
|
|
2
2
|
stellar:
|
|
3
|
-
version: '1.
|
|
3
|
+
version: '1.22.1'
|
|
4
4
|
homepage: 'https://xaoxuu.com/wiki/stellar/'
|
|
5
5
|
repo: 'https://github.com/xaoxuu/hexo-theme-stellar'
|
|
6
6
|
cdn_css: # Use cdn links instead of /css/main.css
|
|
@@ -171,8 +171,8 @@ comments:
|
|
|
171
171
|
# Artalk
|
|
172
172
|
# https://artalk.js.org/
|
|
173
173
|
artalk:
|
|
174
|
-
css: https://unpkg.com/artalk@2.
|
|
175
|
-
js: https://unpkg.com/artalk@2.
|
|
174
|
+
css: https://unpkg.com/artalk@2.7/dist/Artalk.css
|
|
175
|
+
js: https://unpkg.com/artalk@2.7/dist/Artalk.js
|
|
176
176
|
server: # 后端服务地址
|
|
177
177
|
placeholder: ''
|
|
178
178
|
darkMode: auto
|
|
@@ -240,7 +240,6 @@ tag_plugins:
|
|
|
240
240
|
# {% image %}
|
|
241
241
|
image:
|
|
242
242
|
fancybox: false # true, false
|
|
243
|
-
parse_markdown: true # 把 markdown 格式的图片解析成图片标签
|
|
244
243
|
|
|
245
244
|
# {% timeline %}
|
|
246
245
|
timeline:
|
|
@@ -272,6 +271,12 @@ tag_plugins:
|
|
|
272
271
|
unfinished:
|
|
273
272
|
color: red
|
|
274
273
|
label: 未完成
|
|
274
|
+
# {% gallery %}
|
|
275
|
+
gallery:
|
|
276
|
+
layout: grid # grid / flow
|
|
277
|
+
size: mix # s / m / l / xl / mix
|
|
278
|
+
ratio: square # origin / square
|
|
279
|
+
|
|
275
280
|
|
|
276
281
|
|
|
277
282
|
|
package/package.json
CHANGED
package/scripts/filters/index.js
CHANGED
|
@@ -2,16 +2,3 @@
|
|
|
2
2
|
|
|
3
3
|
hexo.extend.filter.register('after_render:html', require('./lib/img_lazyload').processSite);
|
|
4
4
|
hexo.extend.filter.register('after_render:html', require('./lib/img_onerror').processSite);
|
|
5
|
-
|
|
6
|
-
function change_image(data) {
|
|
7
|
-
if (this.theme.config.tag_plugins.image.parse_markdown) {
|
|
8
|
-
data.content = data.content.replace(
|
|
9
|
-
/!\[(.*?)\]\((.*?)\s*(?:"(.*?)")?\)/g,
|
|
10
|
-
'{% image $2 $3 %}'
|
|
11
|
-
);
|
|
12
|
-
}
|
|
13
|
-
return data;
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
hexo.extend.filter.register('before_post_render', change_image, 9);
|
|
@@ -10,7 +10,6 @@
|
|
|
10
10
|
'use strict';
|
|
11
11
|
|
|
12
12
|
module.exports = ctx => function(args, content) {
|
|
13
|
-
const url_for = require('hexo-util').url_for.bind(ctx)
|
|
14
13
|
args = ctx.args.map(args, ['bg', 'avatar', 'link'], ['title', 'subtitle'])
|
|
15
14
|
var el = ''
|
|
16
15
|
el += `<div class="tag-plugin banner">`
|
|
@@ -1,13 +1,16 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* gallery.js
|
|
2
|
+
* gallery.js v2.1 | https://github.com/xaoxuu/hexo-theme-stellar/
|
|
3
3
|
* 格式与官方标签插件一致使用空格分隔,中括号内的是可选参数(中括号不需要写出来)
|
|
4
4
|
*
|
|
5
|
-
* {% gallery size:
|
|
6
|
-
* /xxx.png
|
|
7
|
-
* /xxx.png
|
|
8
|
-
* /xxx.png
|
|
9
|
-
* /xxx.png
|
|
5
|
+
* {% gallery [layout:grid/flow] [size:mix/s/m/l/xl] [ratio:origin/square] %}
|
|
6
|
+
* 
|
|
7
|
+
* 
|
|
8
|
+
* 
|
|
9
|
+
* 
|
|
10
10
|
* {% endgallery %}
|
|
11
|
+
*
|
|
12
|
+
* layout:grid 网格布局,支持通过 size/ratio 设置尺寸和长宽比
|
|
13
|
+
* layout:flow 瀑布流布局,竖排,适合图片量大的时候使用(体验不佳请慎用)
|
|
11
14
|
*/
|
|
12
15
|
|
|
13
16
|
'use strict'
|
|
@@ -29,23 +32,27 @@ function img(src, alt) {
|
|
|
29
32
|
}
|
|
30
33
|
|
|
31
34
|
module.exports = ctx => function(args, content) {
|
|
32
|
-
args = ctx.args.map(args, ['size'])
|
|
35
|
+
args = ctx.args.map(args, ['layout', 'size', 'ratio'])
|
|
36
|
+
if (args.layout == null) {
|
|
37
|
+
args.layout = ctx.theme.config.tag_plugins.gallery.layout
|
|
38
|
+
}
|
|
39
|
+
if (args.size == null) {
|
|
40
|
+
args.size = ctx.theme.config.tag_plugins.gallery.size
|
|
41
|
+
}
|
|
42
|
+
if (args.ratio == null) {
|
|
43
|
+
args.ratio = ctx.theme.config.tag_plugins.gallery.ratio
|
|
44
|
+
}
|
|
33
45
|
var el = ''
|
|
34
|
-
el +=
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
if (matches?.length > 2) {
|
|
43
|
-
let alt = matches[1]
|
|
44
|
-
let src = matches[2]
|
|
45
|
-
el += `<div class="cell">${img(src, alt)}</div>`
|
|
46
|
-
}
|
|
46
|
+
el += `<div class="tag-plugin gallery" ${ctx.args.joinTags(args, ['layout', 'size', 'ratio']).join(' ')}>`
|
|
47
|
+
const img_mds = content.split('\n').filter(item => item.trim().length > 0)
|
|
48
|
+
for (let md of img_mds) {
|
|
49
|
+
const matches = md.match(/\!\[(.*?)\]\((.*?)\)/i)
|
|
50
|
+
if (matches?.length > 2) {
|
|
51
|
+
let alt = matches[1]
|
|
52
|
+
let src = matches[2]
|
|
53
|
+
el += `<div class="cell">${img(src, alt)}</div>`
|
|
47
54
|
}
|
|
48
55
|
}
|
|
49
|
-
el +=
|
|
56
|
+
el += `</div>`
|
|
50
57
|
return el
|
|
51
58
|
}
|
|
@@ -1,12 +1,6 @@
|
|
|
1
1
|
.tag-plugin.gallery
|
|
2
|
-
border-radius: 8px
|
|
3
|
-
column-count: 4
|
|
4
|
-
column-gap: 0
|
|
5
|
-
margin-left: -4px
|
|
6
|
-
margin-right: -4px
|
|
7
2
|
.cell
|
|
8
3
|
display: block
|
|
9
|
-
padding: 4px
|
|
10
4
|
overflow hidden
|
|
11
5
|
z-index 0
|
|
12
6
|
position: relative
|
|
@@ -18,19 +12,16 @@
|
|
|
18
12
|
img
|
|
19
13
|
object-fit: cover
|
|
20
14
|
max-height: 100%
|
|
21
|
-
overflow: hidden
|
|
22
15
|
display: block
|
|
23
16
|
.image-meta
|
|
24
17
|
position: absolute
|
|
25
18
|
z-index: 1
|
|
26
|
-
margin: 4px
|
|
27
19
|
top: 0
|
|
28
20
|
left: 0
|
|
29
21
|
right: 0
|
|
30
22
|
bottom: 0
|
|
31
23
|
pointer-events: none
|
|
32
24
|
background: transparent
|
|
33
|
-
border-radius: 8px
|
|
34
25
|
trans1(background)
|
|
35
26
|
display: flex
|
|
36
27
|
flex-direction: column
|
|
@@ -40,7 +31,65 @@
|
|
|
40
31
|
font-size: $fs-13
|
|
41
32
|
color: transparent
|
|
42
33
|
line-height: 1.2
|
|
43
|
-
margin:
|
|
34
|
+
margin: 0.5rem
|
|
44
35
|
trans1(color)
|
|
45
36
|
&:empty
|
|
46
37
|
display: none
|
|
38
|
+
|
|
39
|
+
.tag-plugin.gallery[layout='grid'] .cell
|
|
40
|
+
trans1(transform, 0.5s)
|
|
41
|
+
&:hover
|
|
42
|
+
img
|
|
43
|
+
transform: scale(1.1)
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
// 网格布局
|
|
47
|
+
.tag-plugin.gallery[layout='grid']
|
|
48
|
+
display: grid
|
|
49
|
+
&[size='s']
|
|
50
|
+
grid-template-columns: repeat(auto-fill, minmax(100px, 1fr))
|
|
51
|
+
grid-gap: 2px
|
|
52
|
+
.cell,img
|
|
53
|
+
border-radius: 2px
|
|
54
|
+
&[size='m']
|
|
55
|
+
grid-template-columns: repeat(auto-fill, minmax(150px, 1fr))
|
|
56
|
+
grid-gap: 4px
|
|
57
|
+
.cell,img
|
|
58
|
+
border-radius: 4px
|
|
59
|
+
&[size='l']
|
|
60
|
+
grid-template-columns: repeat(auto-fill, minmax(200px, 1fr))
|
|
61
|
+
grid-gap: 8px
|
|
62
|
+
.cell,img
|
|
63
|
+
border-radius: 8px
|
|
64
|
+
&[size='xl'] // 2列
|
|
65
|
+
grid-template-columns: repeat(2, 1fr)
|
|
66
|
+
grid-gap: 16px
|
|
67
|
+
.cell,img
|
|
68
|
+
border-radius: 16px
|
|
69
|
+
&[size='mix'] // 1张大图+2张小图
|
|
70
|
+
grid-template-columns: repeat(auto-fill, minmax(150px, 1fr))
|
|
71
|
+
grid-gap: 4px
|
|
72
|
+
.cell,img
|
|
73
|
+
border-radius: 4px
|
|
74
|
+
.cell
|
|
75
|
+
&:nth-child(3n+1)
|
|
76
|
+
grid-column: auto / span 2
|
|
77
|
+
grid-row: auto / span 2
|
|
78
|
+
&[ratio='square']
|
|
79
|
+
.cell
|
|
80
|
+
aspect-ratio: 1
|
|
81
|
+
.cell
|
|
82
|
+
background: var(--block)
|
|
83
|
+
img
|
|
84
|
+
width: 100%
|
|
85
|
+
height: 100%
|
|
86
|
+
// 瀑布流布局
|
|
87
|
+
.tag-plugin.gallery[layout='flow']
|
|
88
|
+
column-count: 3
|
|
89
|
+
column-gap: 8px
|
|
90
|
+
.cell
|
|
91
|
+
border-radius: 8px
|
|
92
|
+
padding-bottom: 8px
|
|
93
|
+
.image-meta
|
|
94
|
+
border-radius: 8px
|
|
95
|
+
margin-bottom: 8px
|
|
@@ -24,7 +24,7 @@
|
|
|
24
24
|
padding: 0.5rem
|
|
25
25
|
font-weight: 500
|
|
26
26
|
font-size: $fs-13
|
|
27
|
-
color: var(--text-
|
|
27
|
+
color: var(--text-p1)
|
|
28
28
|
.toc-child .toc-item .toc-link
|
|
29
29
|
padding: 0.25rem 0.5rem 0.25rem 1.3rem
|
|
30
30
|
font-weight: 400
|
|
@@ -69,3 +69,14 @@
|
|
|
69
69
|
color: $color-theme !important
|
|
70
70
|
&:before
|
|
71
71
|
visibility: visible
|
|
72
|
+
|
|
73
|
+
|
|
74
|
+
// 激活上级目录时显示子目录
|
|
75
|
+
.toc-item a.toc-link+ol
|
|
76
|
+
display: none
|
|
77
|
+
.toc a.toc-link.active+ol
|
|
78
|
+
display: block
|
|
79
|
+
ol:has(> .toc-item a.active)
|
|
80
|
+
display: block
|
|
81
|
+
.doc-tree:hover a.toc-link+ol
|
|
82
|
+
display: block
|
package/source/js/main.js
CHANGED
|
@@ -244,9 +244,12 @@ if (stellar.plugins.stellar) {
|
|
|
244
244
|
const els = document.getElementsByClassName('stellar-' + key + '-api');
|
|
245
245
|
if (els != undefined && els.length > 0) {
|
|
246
246
|
stellar.jQuery(() => {
|
|
247
|
-
stellar.loadScript(js, { defer: true });
|
|
248
247
|
if (key == 'timeline' || 'memos') {
|
|
249
|
-
stellar.loadScript(stellar.plugins.marked)
|
|
248
|
+
stellar.loadScript(stellar.plugins.marked).then(function () {
|
|
249
|
+
stellar.loadScript(js, { defer: true });
|
|
250
|
+
});
|
|
251
|
+
} else {
|
|
252
|
+
stellar.loadScript(js, { defer: true });
|
|
250
253
|
}
|
|
251
254
|
})
|
|
252
255
|
}
|