hexo-theme-shokax 0.4.0-alpha.1 → 0.4.0-alpha.2
Sign up to get free protection for your applications and to get access to all the features.
- package/_config.yml +5 -4
- package/layout/_partials/footer.pug +1 -1
- package/layout/_partials/head/head.pug +7 -1
- package/layout/_partials/header.pug +1 -1
- package/layout/_partials/layout.pug +0 -10
- package/layout/_partials/post/footer.pug +1 -2
- package/package.json +7 -2
- package/scripts/generaters/archive.js +1 -1
- package/scripts/generaters/script.js +44 -38
- package/scripts/helpers/asset.js +1 -1
- package/scripts/helpers/list_categories.js +0 -4
- package/scripts/plugin/lib/injects.js +1 -1
- package/source/js/_app/components/comments.ts +33 -0
- package/source/js/_app/components/sidebar.ts +7 -5
- package/source/js/_app/globals/globalVars.ts +1 -0
- package/source/js/_app/globals/handles.ts +6 -5
- package/source/js/_app/globals/themeColor.ts +1 -1
- package/source/js/_app/globals/thirdparty.ts +1 -1
- package/source/js/_app/globals/tools.ts +3 -2
- package/source/js/_app/library/anime.ts +6 -5
- package/source/js/_app/library/declare.d.ts +18 -9
- package/source/js/_app/library/loadFile.ts +3 -1
- package/source/js/_app/library/proto.ts +75 -77
- package/source/js/_app/library/vue.ts +38 -48
- package/source/js/_app/page/fancybox.ts +2 -1
- package/source/js/_app/page/post.ts +4 -3
- package/source/js/_app/page/search.ts +17 -11
- package/source/js/_app/page/tab.ts +3 -2
- package/source/js/_app/pjax/domInit.ts +5 -4
- package/source/js/_app/pjax/refresh.ts +5 -2
- package/source/js/_app/pjax/siteInit.ts +12 -7
- package/source/js/_app/player.ts +16 -15
- package/scripts/filters/locals.d.ts +0 -1
- package/scripts/filters/locals.ts +0 -59
- package/scripts/filters/post.d.ts +0 -0
- package/scripts/filters/post.ts +0 -6
- package/scripts/generaters/archive.d.ts +0 -1
- package/scripts/generaters/archive.ts +0 -144
- package/scripts/generaters/config.d.ts +0 -1
- package/scripts/generaters/config.ts +0 -52
- package/scripts/generaters/images.d.ts +0 -1
- package/scripts/generaters/images.ts +0 -26
- package/scripts/generaters/index.d.ts +0 -1
- package/scripts/generaters/index.ts +0 -110
- package/scripts/generaters/pages.d.ts +0 -0
- package/scripts/generaters/pages.ts +0 -16
- package/scripts/generaters/script.d.ts +0 -1
- package/scripts/generaters/script.ts +0 -110
- package/scripts/helpers/asset.d.ts +0 -1
- package/scripts/helpers/asset.ts +0 -158
- package/scripts/helpers/engine.d.ts +0 -1
- package/scripts/helpers/engine.ts +0 -171
- package/scripts/helpers/list_categories.d.ts +0 -1
- package/scripts/helpers/list_categories.ts +0 -104
- package/scripts/helpers/summary_ai.d.ts +0 -1
- package/scripts/helpers/summary_ai.ts +0 -100
- package/scripts/helpers/symbols_count_time.d.ts +0 -1
- package/scripts/helpers/symbols_count_time.ts +0 -76
- package/scripts/plugin/check.d.ts +0 -1
- package/scripts/plugin/check.ts +0 -35
- package/scripts/plugin/index.d.ts +0 -6
- package/scripts/plugin/index.ts +0 -52
- package/scripts/plugin/lib/injects-point.d.ts +0 -5
- package/scripts/plugin/lib/injects-point.ts +0 -20
- package/scripts/plugin/lib/injects.d.ts +0 -2
- package/scripts/plugin/lib/injects.ts +0 -101
- package/scripts/tags/links.d.ts +0 -1
- package/scripts/tags/links.ts +0 -75
- package/scripts/tags/media.d.ts +0 -1
- package/scripts/tags/media.ts +0 -19
- package/source/assets/beian.webp +0 -0
- package/source/js/_app/library/libtype.d.ts +0 -4
package/_config.yml
CHANGED
@@ -269,7 +269,8 @@ footer:
|
|
269
269
|
word2: 秋 #第二个字
|
270
270
|
icp: # ICP备案
|
271
271
|
enable: false
|
272
|
-
|
272
|
+
# 请在登录后从 https://beian.mps.gov.cn/web/business/businessHome/website 下载对应图标
|
273
|
+
icon: "" #网安备案图片
|
273
274
|
icpnumber: "xxx" # ICP备案号
|
274
275
|
beian: "xxx" # 网安备案号
|
275
276
|
recordcode: "xxx" # 网安备案链接中的recordcode参数
|
@@ -363,9 +364,9 @@ vendors:
|
|
363
364
|
# pjax: npm_webcache|theme-shokax-pjax@0.0.3/pjax.shokax.min.js
|
364
365
|
# anime: npm_webcache|theme-shokax-anime@0.0.6/anime.shokax.min.js
|
365
366
|
# lozad: npm_webcache|lozad@1.16.0/dist/lozad.min.js
|
366
|
-
algolia: bytedance|algoliasearch/4.12.1/algoliasearch-lite.umd.min.js
|
367
|
-
instantsearch: bytedance|instantsearch.js/4.39.0/instantsearch.production.min.js
|
368
|
-
quicklink: npm_webcache|quicklink@2.3.0/dist/quicklink.umd.js
|
367
|
+
# algolia: bytedance|algoliasearch/4.12.1/algoliasearch-lite.umd.min.js
|
368
|
+
# instantsearch: bytedance|instantsearch.js/4.39.0/instantsearch.production.min.js
|
369
|
+
# quicklink: npm_webcache|quicklink@2.3.0/dist/quicklink.umd.js
|
369
370
|
# mouse_firework: npm_webcache|mouse-firework@0.0.4/dist/index.umd.js
|
370
371
|
async_js:
|
371
372
|
fancybox: bytedance|??jquery/3.5.1/jquery.min.js,fancybox/3.5.7/jquery.fancybox.min.js,justifiedGallery/3.8.1/js/jquery.justifiedGallery.min.js
|
@@ -33,7 +33,7 @@ div(class="status")
|
|
33
33
|
- var beianN = theme.footer.icp?.beian, RC=theme.footer.icp?.recordcode
|
34
34
|
if beianN && RC
|
35
35
|
br
|
36
|
-
a(target="_blank" href=`https://
|
36
|
+
a(target="_blank" href=`https://beian.mps.gov.cn/#/query/webSearch?code=${RC}`)
|
37
37
|
img(src=theme.statics + theme.assets + '/' + theme.footer.icp.icon style="max-width: 2em;display:inline;" width="20" height="20")
|
38
38
|
!= beianN
|
39
39
|
!= shokax_inject('status')
|
@@ -38,11 +38,17 @@ each prelink in prelinks
|
|
38
38
|
each dnsLink in dnslinks
|
39
39
|
link(rel="dns-prefetch" href=dnsLink)
|
40
40
|
|
41
|
-
- var fontConfig = theme
|
41
|
+
- var fontConfig = theme.font?.loadFromGoogle
|
42
42
|
if fontConfig
|
43
43
|
!= _vendor_font()
|
44
44
|
!= _css('app.css')
|
45
45
|
|
46
|
+
if theme.polyfill.enable
|
47
|
+
script(src=`https://polyfill.io/v3/polyfill.min.js?features=${theme.polyfill.features}` defer)
|
48
|
+
|
49
|
+
!= vendor_js()
|
50
|
+
!= _js('siteInit.js')
|
51
|
+
|
46
52
|
include pwa.pug
|
47
53
|
if tk
|
48
54
|
script(src=theme.twikoo.link )
|
@@ -11,7 +11,7 @@ nav(id="nav")
|
|
11
11
|
!= alternate || title
|
12
12
|
ul(class="right" id="rightNav")
|
13
13
|
li(class="item theme" @click="changeThemeByBtn")
|
14
|
-
i(class="ic
|
14
|
+
i(class="ic i-sun")
|
15
15
|
li(class="item search")
|
16
16
|
i(class="ic i-search")
|
17
17
|
!= shokax_inject('rightNav')
|
@@ -115,16 +115,6 @@ html(lang=page.language?page.language:config.language, style=theme.grayMode ? 'f
|
|
115
115
|
]
|
116
116
|
};
|
117
117
|
|
118
|
-
if theme.polyfill.enable
|
119
|
-
script(src=`https://polyfill.io/v3/polyfill.min.js?features=${theme.polyfill.features}`)
|
120
|
-
|
121
|
-
- debugVue = theme?.experiments?.debug
|
122
|
-
if debugVue
|
123
|
-
script(src="https://cdn.bootcdn.net/ajax/libs/vue/3.3.4/vue.global.min.js")
|
124
|
-
else
|
125
|
-
script(src="https://cdn.bootcdn.net/ajax/libs/vue/3.3.4/vue.global.prod.min.js")
|
126
|
-
!= vendor_js()
|
127
|
-
!= _js('app.js')
|
128
118
|
!= partial('_partials/third-party/baidu-analytics.pug', {}, {cache: true})
|
129
119
|
!= partial('_partials/third-party/clarity.pug', {}, {cache: true})
|
130
120
|
!= partial('_partials/third-party/google-analytics.pug', {}, {cache: true})
|
@@ -16,10 +16,9 @@ div(class="meta")
|
|
16
16
|
script(type = "module" data-pjax).
|
17
17
|
import { pageviewCount } from 'https://unpkg.com/@waline/client@2/dist/pageview.mjs';
|
18
18
|
|
19
|
-
const path = document.getElementById("twikoo_visitors").getAttribute("data-path");
|
20
19
|
pageviewCount({
|
21
20
|
serverURL: '#{theme.waline.serverURL}',
|
22
|
-
path:
|
21
|
+
path: window.location.pathname,
|
23
22
|
});
|
24
23
|
|
25
24
|
!= shokax_inject('postMeta')
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "hexo-theme-shokax",
|
3
|
-
"version": "0.4.0-alpha.
|
3
|
+
"version": "0.4.0-alpha.2",
|
4
4
|
"description": "a hexo theme based on shoka",
|
5
5
|
"main": "index.js",
|
6
6
|
"repository": "https://github.com/theme-shoka-x/hexo-theme-shokaX",
|
@@ -16,26 +16,31 @@
|
|
16
16
|
"@types/jquery": "^3.5.29",
|
17
17
|
"@types/js-yaml": "^4.0.9",
|
18
18
|
"@types/node": "^20.11.10",
|
19
|
+
"@types/quicklink": "^2.3.4",
|
19
20
|
"@typescript-eslint/eslint-plugin": "^6.20.0",
|
20
21
|
"@typescript-eslint/parser": "^6.20.0",
|
22
|
+
"@waline/client": "3.0.0-alpha.11",
|
21
23
|
"eslint": "^8.56.0",
|
22
24
|
"eslint-config-standard": "~17",
|
23
25
|
"eslint-plugin-import": "^2.29.1",
|
24
26
|
"eslint-plugin-n": "^16.6.2",
|
25
27
|
"eslint-plugin-promise": "^6.1.1",
|
26
28
|
"eslint-plugin-vue": "^9.20.1",
|
27
|
-
"instantsearch.js": "^4.64.1",
|
28
29
|
"typescript": "^5.3.3",
|
29
30
|
"vue": "^3.4.15"
|
30
31
|
},
|
31
32
|
"dependencies": {
|
33
|
+
"@algolia/client-search": "^4.22.1",
|
34
|
+
"algoliasearch": "4.22.1",
|
32
35
|
"esbuild": "^0.20.0",
|
33
36
|
"hexo": "7.0.0",
|
34
37
|
"hexo-fs": "^4.1.1",
|
35
38
|
"hexo-pagination": "^3.0.0",
|
36
39
|
"hexo-util": "^3.2.0",
|
40
|
+
"instantsearch.js": "^4.64.2",
|
37
41
|
"js-yaml": "^4.1.0",
|
38
42
|
"mouse-firework": "^0.0.5",
|
43
|
+
"quicklink": "^2.3.0",
|
39
44
|
"theme-shokax-anime": "^0.0.6",
|
40
45
|
"theme-shokax-pjax": "^0.0.3",
|
41
46
|
"unlazy": "^0.10.4"
|
@@ -7,7 +7,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
7
|
// @ts-ignore
|
8
8
|
const hexo_pagination_1 = __importDefault(require("hexo-pagination"));
|
9
9
|
// @ts-ignore
|
10
|
-
const fmtNum = num => {
|
10
|
+
const fmtNum = (num) => {
|
11
11
|
return num < 10 ? '0' + num : num;
|
12
12
|
};
|
13
13
|
if (!(hexo.config.archive && hexo.config.archive.enabled === false)) {
|
@@ -1,34 +1,11 @@
|
|
1
1
|
"use strict";
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
3
|
-
if (k2 === undefined) k2 = k;
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
7
|
-
}
|
8
|
-
Object.defineProperty(o, k2, desc);
|
9
|
-
}) : (function(o, m, k, k2) {
|
10
|
-
if (k2 === undefined) k2 = k;
|
11
|
-
o[k2] = m[k];
|
12
|
-
}));
|
13
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
14
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
15
|
-
}) : function(o, v) {
|
16
|
-
o["default"] = v;
|
17
|
-
});
|
18
|
-
var __importStar = (this && this.__importStar) || function (mod) {
|
19
|
-
if (mod && mod.__esModule) return mod;
|
20
|
-
var result = {};
|
21
|
-
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
22
|
-
__setModuleDefault(result, mod);
|
23
|
-
return result;
|
24
|
-
};
|
25
2
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
26
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
27
4
|
};
|
28
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
29
6
|
/* global hexo */
|
30
7
|
const package_json_1 = __importDefault(require("../../package.json"));
|
31
|
-
const
|
8
|
+
const node_fs_1 = __importDefault(require("node:fs"));
|
32
9
|
const esbuild_1 = require("esbuild");
|
33
10
|
const utils_1 = require("../utils");
|
34
11
|
hexo.extend.generator.register('script', function (locals) {
|
@@ -83,19 +60,17 @@ hexo.extend.generator.register('script', function (locals) {
|
|
83
60
|
if (theme?.audio) {
|
84
61
|
siteConfig.audio = theme.audio;
|
85
62
|
}
|
86
|
-
let text;
|
87
63
|
let enterPoint;
|
88
|
-
if (
|
64
|
+
if (node_fs_1.default.existsSync('themes/shokaX/source/js/_app/pjax/siteInit.ts')) {
|
89
65
|
enterPoint = 'themes/shokaX/source/js/_app/pjax/siteInit.ts';
|
90
66
|
}
|
91
67
|
else {
|
92
68
|
enterPoint = 'node_modules/hexo-theme-shokax/source/js/_app/pjax/siteInit.ts';
|
93
69
|
}
|
94
|
-
text = 'const CONFIG = ' + JSON.stringify(siteConfig) + ';';
|
95
70
|
(0, esbuild_1.buildSync)({
|
96
71
|
entryPoints: [enterPoint],
|
97
72
|
bundle: true,
|
98
|
-
|
73
|
+
outdir: 'shokaxTemp',
|
99
74
|
tsconfigRaw: {
|
100
75
|
compilerOptions: {
|
101
76
|
target: 'ES2022',
|
@@ -106,9 +81,12 @@ hexo.extend.generator.register('script', function (locals) {
|
|
106
81
|
}
|
107
82
|
},
|
108
83
|
platform: 'browser',
|
109
|
-
format: '
|
84
|
+
format: 'esm',
|
110
85
|
target: ['es2022'],
|
111
86
|
minify: true,
|
87
|
+
legalComments: 'linked',
|
88
|
+
mainFields: ['module', 'main'],
|
89
|
+
splitting: true,
|
112
90
|
define: {
|
113
91
|
__UNLAZY_LOGGING__: 'false',
|
114
92
|
__UNLAZY_HASH_DECODING__: theme.modules.unlazyHash ? 'true' : 'false',
|
@@ -119,16 +97,44 @@ hexo.extend.generator.register('script', function (locals) {
|
|
119
97
|
__shokax_outime__: theme.outime.enable ? 'true' : 'false',
|
120
98
|
__shokax_tabs__: theme.modules.tabs ? 'true' : 'false',
|
121
99
|
__shokax_quiz__: theme.modules.quiz ? 'true' : 'false',
|
122
|
-
__shokax_fancybox__: theme.modules.fancybox ? 'true' : 'false'
|
100
|
+
__shokax_fancybox__: theme.modules.fancybox ? 'true' : 'false',
|
101
|
+
shokax_CONFIG: JSON.stringify(siteConfig)
|
102
|
+
},
|
103
|
+
alias: {
|
104
|
+
'algoliasearch/lite': 'algoliasearch/dist/algoliasearch-lite.esm.browser.js'
|
123
105
|
}
|
124
106
|
});
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
107
|
+
const res = [];
|
108
|
+
node_fs_1.default.readdirSync('./shokaxTemp').forEach((file) => {
|
109
|
+
const fileText = node_fs_1.default.readFileSync(`./shokaxTemp/${file}`, { encoding: 'utf-8' });
|
110
|
+
if (file.endsWith('js')) {
|
111
|
+
const result = hexo.render.renderSync({ text: fileText, engine: 'js' });
|
112
|
+
res.push({
|
113
|
+
path: theme.js + '/' + file,
|
114
|
+
data: function () {
|
115
|
+
return result;
|
116
|
+
}
|
117
|
+
});
|
132
118
|
}
|
133
|
-
|
119
|
+
else if (file.endsWith('css')) {
|
120
|
+
const result = hexo.render.renderSync({ text: fileText, engine: 'css' });
|
121
|
+
res.push({
|
122
|
+
path: theme.css + '/' + file,
|
123
|
+
data: function () {
|
124
|
+
return result;
|
125
|
+
}
|
126
|
+
});
|
127
|
+
}
|
128
|
+
else {
|
129
|
+
res.push({
|
130
|
+
path: theme.js + '/' + file,
|
131
|
+
data: function () {
|
132
|
+
return fileText;
|
133
|
+
}
|
134
|
+
});
|
135
|
+
}
|
136
|
+
node_fs_1.default.unlinkSync(`./shokaxTemp/${file}`);
|
137
|
+
});
|
138
|
+
node_fs_1.default.rmSync('./shokaxTemp', { force: true, recursive: true });
|
139
|
+
return res;
|
134
140
|
});
|
package/scripts/helpers/asset.js
CHANGED
@@ -126,7 +126,7 @@ hexo.extend.helper.register('_css', function (...urls) {
|
|
126
126
|
});
|
127
127
|
hexo.extend.helper.register('_js', function (...urls) {
|
128
128
|
const { statics, js } = hexo.theme.config;
|
129
|
-
return urls.map(url => (0, hexo_util_1.htmlTag)('script', { src: hexo_util_1.url_for.call(this, `${statics}${js}/${url}?v=${package_json_1.default.version}`) }, '')).join('');
|
129
|
+
return urls.map(url => (0, hexo_util_1.htmlTag)('script', { src: hexo_util_1.url_for.call(this, `${statics}${js}/${url}?v=${package_json_1.default.version}`), type: 'module', fetchpriority: 'high' }, '')).join('');
|
130
130
|
});
|
131
131
|
hexo.extend.helper.register('vendor_js', function () {
|
132
132
|
const vendors = hexo.theme.config.vendors;
|
@@ -1,5 +1,3 @@
|
|
1
|
-
'use strict';
|
2
|
-
/* global hexo */
|
3
1
|
const prepareQuery = (categories, parent) => {
|
4
2
|
const query = {
|
5
3
|
parent: undefined
|
@@ -13,7 +11,6 @@ const prepareQuery = (categories, parent) => {
|
|
13
11
|
return categories.find(query).sort('name', 1).filter(cat => cat.length);
|
14
12
|
};
|
15
13
|
hexo.extend.helper.register('_list_categories', function (depth = 0) {
|
16
|
-
// let hexo = this
|
17
14
|
const categories = this.site.categories;
|
18
15
|
if (!categories || !categories.length)
|
19
16
|
return '';
|
@@ -48,7 +45,6 @@ hexo.extend.helper.register('_list_categories', function (depth = 0) {
|
|
48
45
|
return hierarchicalList(0);
|
49
46
|
});
|
50
47
|
hexo.extend.helper.register('_category_prev', function (name) {
|
51
|
-
// let hexo = this
|
52
48
|
const categories = this.site.categories;
|
53
49
|
if (!categories || !categories.length)
|
54
50
|
return '';
|
@@ -0,0 +1,33 @@
|
|
1
|
+
import { CONFIG } from '../globals/globalVars'
|
2
|
+
import { init, pageviewCount } from '@waline/client'
|
3
|
+
|
4
|
+
// await import('@waline/client/style')
|
5
|
+
// fixme 处理样式引入问题
|
6
|
+
|
7
|
+
export const walineComment = function () {
|
8
|
+
init({
|
9
|
+
el: '#comments',
|
10
|
+
serverURL: CONFIG.waline.serverURL,
|
11
|
+
lang: CONFIG.waline.lang,
|
12
|
+
locale: CONFIG.waline.locale,
|
13
|
+
emoji: CONFIG.waline.emoji,
|
14
|
+
meta: CONFIG.waline.meta,
|
15
|
+
requiredMeta: CONFIG.waline.requiredMeta,
|
16
|
+
wordLimit: CONFIG.waline.wordLimit,
|
17
|
+
pageSize: CONFIG.waline.pageSize,
|
18
|
+
pageview: CONFIG.waline.pageview,
|
19
|
+
path: window.location.pathname,
|
20
|
+
dark: 'html[data-theme="dark"]'
|
21
|
+
})
|
22
|
+
}
|
23
|
+
|
24
|
+
export const walinePageview = function () {
|
25
|
+
pageviewCount({
|
26
|
+
serverURL: CONFIG.waline.serverURL,
|
27
|
+
path: window.location.pathname
|
28
|
+
})
|
29
|
+
}
|
30
|
+
|
31
|
+
export const walineRecentComments = async function () {
|
32
|
+
|
33
|
+
}
|
@@ -1,10 +1,12 @@
|
|
1
1
|
/* 边栏分区 */
|
2
2
|
|
3
|
-
import { Container, diffY, menuToggle, showContents, sideBar } from '../globals/globalVars'
|
3
|
+
import { CONFIG, Container, diffY, menuToggle, showContents, sideBar } from '../globals/globalVars'
|
4
4
|
import { clipBoard } from '../globals/tools'
|
5
5
|
import { pageScroll, transition } from '../library/anime'
|
6
6
|
import { $dom } from '../library/dom'
|
7
|
+
import initProto, { child, getHeight, setDisplay } from '../library/proto'
|
7
8
|
|
9
|
+
initProto()
|
8
10
|
export const sideBarToggleHandle = (event:Event, force?:number) => {
|
9
11
|
if (sideBar.hasClass('on')) {
|
10
12
|
sideBar.removeClass('on')
|
@@ -31,7 +33,7 @@ export const sideBarToggleHandle = (event:Event, force?:number) => {
|
|
31
33
|
}
|
32
34
|
|
33
35
|
export const sideBarTab = () => {
|
34
|
-
const sideBarInner =
|
36
|
+
const sideBarInner = child(sideBar, '.inner')
|
35
37
|
|
36
38
|
if (sideBar.child('.tab')) {
|
37
39
|
sideBarInner.removeChild(sideBar.child('.tab'))
|
@@ -45,13 +47,13 @@ export const sideBarTab = () => {
|
|
45
47
|
|
46
48
|
if (element.innerHTML.trim().length < 1) {
|
47
49
|
if (item === 'contents') {
|
48
|
-
showContents
|
50
|
+
setDisplay(showContents, 'none')
|
49
51
|
}
|
50
52
|
return
|
51
53
|
}
|
52
54
|
|
53
55
|
if (item === 'contents') {
|
54
|
-
showContents
|
56
|
+
setDisplay(showContents, '')
|
55
57
|
}
|
56
58
|
|
57
59
|
const tab = document.createElement('li')
|
@@ -212,7 +214,7 @@ export const backToTopHandle = () => {
|
|
212
214
|
}
|
213
215
|
|
214
216
|
export const goToBottomHandle = () => {
|
215
|
-
pageScroll(parseInt(String(Container
|
217
|
+
pageScroll(parseInt(String(getHeight(Container))))
|
216
218
|
}
|
217
219
|
|
218
220
|
export const goToCommentHandle = () => {
|
@@ -2,6 +2,7 @@ import { $dom } from '../library/dom'
|
|
2
2
|
import Pjax from 'theme-shokax-pjax'
|
3
3
|
import initProto from '../library/proto'
|
4
4
|
|
5
|
+
export const CONFIG = shokax_CONFIG
|
5
6
|
initProto()
|
6
7
|
export const statics = CONFIG.statics.indexOf('//') > 0 ? CONFIG.statics : CONFIG.root
|
7
8
|
export const scrollAction: { x: number, y: number } = { x: 0, y: 0 }
|
@@ -18,18 +18,19 @@ import {
|
|
18
18
|
setSiteNavHeight,
|
19
19
|
setHeaderHightInner,
|
20
20
|
setHeaderHight,
|
21
|
-
setOWinHeight, setOWinWidth, setDiffY, setTitleTime
|
21
|
+
setOWinHeight, setOWinWidth, setDiffY, setTitleTime, CONFIG
|
22
22
|
} from './globalVars'
|
23
23
|
import { changeMetaTheme } from './themeColor'
|
24
24
|
import { Loader } from './thirdparty'
|
25
|
+
import {getHeight, setWidth} from '../library/proto'
|
25
26
|
|
26
27
|
export const resizeHandle = () => {
|
27
28
|
// 获取 siteNav 的高度
|
28
|
-
setSiteNavHeight(siteNav
|
29
|
+
setSiteNavHeight(getHeight(siteNav))
|
29
30
|
// 获取 siteHeader 的高度
|
30
|
-
setHeaderHightInner(siteHeader
|
31
|
+
setHeaderHightInner(getHeight(siteHeader))
|
31
32
|
// 获取 #waves 的高度
|
32
|
-
setHeaderHight(headerHightInner + $dom('#waves')
|
33
|
+
setHeaderHight(headerHightInner + getHeight($dom('#waves')))
|
33
34
|
|
34
35
|
// 判断窗口宽度是否改变
|
35
36
|
if (oWinWidth !== window.innerWidth) {
|
@@ -90,7 +91,7 @@ export const scrollHandle = () => {
|
|
90
91
|
}
|
91
92
|
// 更新百分比进度条的宽度
|
92
93
|
if ($dom('#sidebar').hasClass('affix') || $dom('#sidebar').hasClass('on')) {
|
93
|
-
$dom('.percent')
|
94
|
+
setWidth($dom('.percent'), scrollPercent)
|
94
95
|
}
|
95
96
|
}
|
96
97
|
|
@@ -1,7 +1,8 @@
|
|
1
1
|
import { pageScroll } from '../library/anime'
|
2
2
|
import { $dom } from '../library/dom'
|
3
3
|
import { $storage } from '../library/storage'
|
4
|
-
import { BODY, LOCAL_HASH, LOCAL_URL, scrollAction, setLocalHash } from './globalVars'
|
4
|
+
import { BODY, CONFIG, LOCAL_HASH, LOCAL_URL, scrollAction, setLocalHash } from './globalVars'
|
5
|
+
import { createChild } from '../library/proto'
|
5
6
|
|
6
7
|
// 显示提示(现阶段用于版权及复制结果提示)
|
7
8
|
export const showtip = (msg: string): void | never => {
|
@@ -9,7 +10,7 @@ export const showtip = (msg: string): void | never => {
|
|
9
10
|
return
|
10
11
|
}
|
11
12
|
|
12
|
-
const tipbox =
|
13
|
+
const tipbox = createChild(BODY, 'div', {
|
13
14
|
innerHTML: msg,
|
14
15
|
className: 'tip'
|
15
16
|
})
|
@@ -1,6 +1,7 @@
|
|
1
1
|
import anime from 'theme-shokax-anime'
|
2
2
|
import { siteNavHeight } from '../globals/globalVars'
|
3
3
|
import type { AnimeOptions } from 'theme-shokax-anime/dist/types'
|
4
|
+
import {getTop, setDisplay} from './proto'
|
4
5
|
|
5
6
|
/**
|
6
7
|
* 参数 动画效果
|
@@ -26,7 +27,7 @@ export const transition = (target: HTMLElement, type: number|string|Function, co
|
|
26
27
|
case 'bounceUpIn':
|
27
28
|
animation = {
|
28
29
|
begin (anim) {
|
29
|
-
target
|
30
|
+
setDisplay(target, 'block')
|
30
31
|
},
|
31
32
|
translateY: [
|
32
33
|
{ value: -60, duration: 200 },
|
@@ -41,7 +42,7 @@ export const transition = (target: HTMLElement, type: number|string|Function, co
|
|
41
42
|
case 'shrinkIn':
|
42
43
|
animation = {
|
43
44
|
begin (anim) {
|
44
|
-
target
|
45
|
+
setDisplay(target, 'block')
|
45
46
|
},
|
46
47
|
scale: [
|
47
48
|
{ value: 1.1, duration: 300 },
|
@@ -54,7 +55,7 @@ export const transition = (target: HTMLElement, type: number|string|Function, co
|
|
54
55
|
case 'slideRightIn':
|
55
56
|
animation = {
|
56
57
|
begin (anim) {
|
57
|
-
target
|
58
|
+
setDisplay(target, 'block')
|
58
59
|
},
|
59
60
|
translateX: ['100%', '0%'],
|
60
61
|
opacity: [0, 1]
|
@@ -82,7 +83,7 @@ export const transition = (target: HTMLElement, type: number|string|Function, co
|
|
82
83
|
begin && begin()
|
83
84
|
},
|
84
85
|
complete () {
|
85
|
-
target
|
86
|
+
setDisplay(target, display)
|
86
87
|
complete && complete()
|
87
88
|
}
|
88
89
|
}, animation)).play()
|
@@ -100,7 +101,7 @@ export const pageScroll = (target: HTMLElement|number, offset?: number, complete
|
|
100
101
|
// 动画缓动函数
|
101
102
|
easing: 'easeInOutQuad',
|
102
103
|
// 如果 offset 存在,则滚动到 offset,如果 target 是数字,则滚动到 target,如果 target 是 DOM 元素,则滚动到下述表达式
|
103
|
-
scrollTop: offset || (typeof target === 'number' ? target : (target ?
|
104
|
+
scrollTop: offset || (typeof target === 'number' ? target : (target ? getTop(target) + document.documentElement.scrollTop - siteNavHeight : 0)),
|
104
105
|
// 完成回调函数
|
105
106
|
complete () {
|
106
107
|
complete && complete()
|
@@ -27,6 +27,8 @@ declare interface EventTarget {
|
|
27
27
|
hasClass(className: string): boolean;
|
28
28
|
}
|
29
29
|
|
30
|
+
type walineMeta = 'nick'|'mail'|'link'
|
31
|
+
|
30
32
|
declare const LOCAL: {
|
31
33
|
path: string;
|
32
34
|
ignores: Array<(uri:string)=>boolean>;
|
@@ -53,7 +55,7 @@ declare const LOCAL: {
|
|
53
55
|
show: string
|
54
56
|
}
|
55
57
|
}
|
56
|
-
|
58
|
+
interface configType {
|
57
59
|
hostname: string;
|
58
60
|
fireworks: any;
|
59
61
|
audio: AudioItem[];
|
@@ -92,20 +94,25 @@ declare const CONFIG: {
|
|
92
94
|
fancybox: string
|
93
95
|
}
|
94
96
|
search: any,
|
95
|
-
|
97
|
+
waline: {
|
98
|
+
serverURL: string
|
99
|
+
lang: string
|
100
|
+
locale: object
|
101
|
+
emoji: boolean
|
102
|
+
meta: walineMeta[]
|
103
|
+
requiredMeta: walineMeta[]
|
104
|
+
wordLimit: number
|
105
|
+
pageSize: number
|
106
|
+
pageview: boolean
|
107
|
+
}
|
108
|
+
walinePageView: boolean
|
96
109
|
quicklink: {
|
97
110
|
ignores: any
|
98
111
|
timeout: number
|
99
|
-
priority:
|
112
|
+
priority: boolean
|
100
113
|
}
|
101
114
|
playerAPI: string
|
102
115
|
}
|
103
|
-
declare const instantsearch: any
|
104
|
-
|
105
|
-
declare function algoliasearch(appID: string, apiKey: string): any;
|
106
|
-
|
107
|
-
declare const quicklink: any
|
108
|
-
|
109
116
|
// esbuild 静态常量
|
110
117
|
declare const __shokax_player__:boolean
|
111
118
|
declare const __shokax_fireworks__:boolean
|
@@ -115,3 +122,5 @@ declare const __shokax_outime__:boolean
|
|
115
122
|
declare const __shokax_tabs__: boolean
|
116
123
|
declare const __shokax_quiz__: boolean
|
117
124
|
declare const __shokax_fancybox__: boolean
|
125
|
+
declare const __shokax_waline__:boolean
|
126
|
+
declare const shokax_CONFIG:configType
|
@@ -1,4 +1,6 @@
|
|
1
1
|
import { getScript } from './scriptPjax'
|
2
|
+
import { CONFIG } from '../globals/globalVars'
|
3
|
+
import { createChild } from './proto'
|
2
4
|
|
3
5
|
/**
|
4
6
|
* 用途是根据不同的资源名称和类型生成相应的资源 URL。
|
@@ -31,7 +33,7 @@ export const vendorCss = (type: string, condition?: string): void => {
|
|
31
33
|
}
|
32
34
|
|
33
35
|
if (LOCAL[type]) {
|
34
|
-
document.head
|
36
|
+
createChild(document.head, 'link', {
|
35
37
|
rel: 'stylesheet',
|
36
38
|
href: assetUrl('css', type)
|
37
39
|
})
|