hexo-theme-shokax 0.3.1 → 0.3.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/.eslintrc.cjs +5 -3
- package/_config.yml +12 -12
- package/layout/_mixin/widgets.pug +1 -1
- package/package.json +18 -10
- package/scripts/generaters/script.js +17 -45
- package/scripts/helpers/asset.js +5 -2
- package/source/js/_app/components/sidebar.js +49 -35
- package/source/js/_app/fireworks.js +32 -19
- package/source/js/_app/globals/globalVars.js +96 -26
- package/source/js/_app/globals/handles.js +52 -40
- package/source/js/_app/globals/themeColor.js +22 -12
- package/source/js/_app/globals/thirdparty.js +17 -7
- package/source/js/_app/globals/tools.js +25 -14
- package/source/js/_app/library/anime.js +13 -3
- package/source/js/_app/library/dom.js +5 -0
- package/source/js/_app/library/loadFile.js +7 -1
- package/source/js/_app/library/proto.js +108 -102
- package/source/js/_app/library/scriptPjax.js +18 -10
- package/source/js/_app/library/storage.js +4 -1
- package/source/js/_app/library/vue.js +16 -9
- package/source/js/_app/page/comment.js +14 -7
- package/source/js/_app/page/common.js +13 -7
- package/source/js/_app/page/fancybox.js +12 -6
- package/source/js/_app/page/post.js +43 -29
- package/source/js/_app/page/search.js +21 -14
- package/source/js/_app/page/tab.js +9 -3
- package/source/js/_app/pjax/domInit.js +31 -23
- package/source/js/_app/pjax/refresh.js +48 -30
- package/source/js/_app/pjax/siteInit.js +30 -13
- package/source/js/_app/player.js +29 -16
- package/test/dom.test.js +86 -0
package/.eslintrc.cjs
CHANGED
@@ -9,11 +9,13 @@ module.exports = {
|
|
9
9
|
extends: [
|
10
10
|
'standard',
|
11
11
|
'plugin:@typescript-eslint/recommended',
|
12
|
-
'plugin:vue/vue3-recommended'
|
12
|
+
'plugin:vue/vue3-recommended',
|
13
|
+
'plugin:chai-friendly/recommended'
|
13
14
|
],
|
14
15
|
plugins: [
|
15
16
|
'@typescript-eslint',
|
16
|
-
'vue'
|
17
|
+
'vue',
|
18
|
+
'chai-friendly'
|
17
19
|
],
|
18
20
|
parserOptions: {
|
19
21
|
ecmaVersion: 12
|
@@ -25,6 +27,6 @@ module.exports = {
|
|
25
27
|
'@typescript-eslint/ban-ts-comment': 'off',
|
26
28
|
'@typescript-eslint/no-var-requires': 'off',
|
27
29
|
'@typescript-eslint/no-unused-vars': 'off',
|
28
|
-
'prefer-const': '
|
30
|
+
'prefer-const': 'off'
|
29
31
|
}
|
30
32
|
}
|
package/_config.yml
CHANGED
@@ -358,18 +358,18 @@ advVendors:
|
|
358
358
|
js:
|
359
359
|
pace:
|
360
360
|
src: bytedance:pace/1.0.2/pace.min.js
|
361
|
-
pjax:
|
362
|
-
src: npm:theme-shokax-pjax@latest/pjax.shokax.min.js
|
361
|
+
# pjax:
|
362
|
+
# src: npm:theme-shokax-pjax@latest/pjax.shokax.min.js
|
363
363
|
fetch:
|
364
364
|
src: npm:whatwg-fetch@3.4.0/dist/fetch.umd.js
|
365
|
-
anime:
|
366
|
-
src: npm:theme-shokax-anime@latest/anime.shokax.min.js
|
365
|
+
# anime:
|
366
|
+
# src: npm:theme-shokax-anime@latest/anime.shokax.min.js
|
367
367
|
algolia:
|
368
368
|
src: bytedance:algoliasearch/4.12.1/algoliasearch-lite.umd.min.js
|
369
369
|
instantsearch:
|
370
370
|
src: bytedance:instantsearch.js/4.39.0/instantsearch.production.min.js
|
371
|
-
lazyload:
|
372
|
-
src: bytedance:lozad.js/1.16.0/lozad.min.js
|
371
|
+
# lazyload:
|
372
|
+
# src: bytedance:lozad.js/1.16.0/lozad.min.js
|
373
373
|
quicklink:
|
374
374
|
src: bytedance:quicklink/2.2.0/quicklink.umd.min.js
|
375
375
|
fancybox:
|
@@ -388,11 +388,11 @@ advVendors:
|
|
388
388
|
vendorsList:
|
389
389
|
js:
|
390
390
|
- pace
|
391
|
-
- pjax
|
392
|
-
- anime
|
391
|
+
# - pjax
|
392
|
+
# - anime
|
393
393
|
- algolia
|
394
394
|
- instantsearch
|
395
|
-
- lazyload
|
395
|
+
# - lazyload
|
396
396
|
- quicklink
|
397
397
|
- fancybox
|
398
398
|
- copy_tex
|
@@ -405,12 +405,12 @@ vendors:
|
|
405
405
|
|
406
406
|
js:
|
407
407
|
pace: npm/pace-js@1.0.2/pace.min.js # ok
|
408
|
-
pjax: npm/theme-shokax-pjax@latest/pjax.shokax.min.js # ok
|
408
|
+
# pjax: npm/theme-shokax-pjax@latest/pjax.shokax.min.js # ok
|
409
409
|
fetch: npm/whatwg-fetch@3.4.0/dist/fetch.umd.min.js # ok
|
410
|
-
anime: npm/theme-shokax-anime@latest/anime.shokax.min.js
|
410
|
+
# anime: npm/theme-shokax-anime@latest/anime.shokax.min.js
|
411
411
|
algolia: npm/algoliasearch@4/dist/algoliasearch-lite.umd.js # ok
|
412
412
|
instantsearch: npm/instantsearch.js@4/dist/instantsearch.production.min.js # ok
|
413
|
-
lazyload: npm/lozad@1/dist/lozad.min.js # ok
|
413
|
+
# lazyload: npm/lozad@1/dist/lozad.min.js # ok
|
414
414
|
quicklink: npm/quicklink@2/dist/quicklink.umd.js # ok
|
415
415
|
fancybox: combine/npm/jquery@3.5.1/dist/jquery.min.js,npm/@fancyapps/fancybox@3.5.7/dist/jquery.fancybox.min.js,npm/justifiedGallery@3.8.1/dist/js/jquery.justifiedGallery.min.js # notok
|
416
416
|
valine: gh/amehime/MiniValine@4.2.2-beta10/dist/MiniValine.min.js # TODO 弃用
|
@@ -26,7 +26,7 @@ mixin WRender(item)
|
|
26
26
|
ul(class="leancloud-recent-comment" id="new-comment")
|
27
27
|
if tk || waline
|
28
28
|
li(v-for="com in coms" class="item")
|
29
|
-
a(v-bind:href="com.href" data-pjax-state="data-pjax-state")
|
29
|
+
a(v-bind:href="root + com.href" data-pjax-state="data-pjax-state")
|
30
30
|
span(class="breadcrumb") {{com.nick}} @ {{com.time}}
|
31
31
|
span {{com.text}}
|
32
32
|
br
|
package/package.json
CHANGED
@@ -1,26 +1,30 @@
|
|
1
1
|
{
|
2
2
|
"name": "hexo-theme-shokax",
|
3
|
-
"version": "0.3.
|
3
|
+
"version": "0.3.3",
|
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",
|
7
7
|
"author": "zkz098",
|
8
8
|
"license": "AGPL-3.0-or-later",
|
9
9
|
"scripts": {
|
10
|
-
"test": "
|
10
|
+
"test": "mocha test --coverage",
|
11
11
|
"build": "pnpm install && tsc"
|
12
12
|
},
|
13
13
|
"devDependencies": {
|
14
|
+
"@types/chai": "^4.3.5",
|
14
15
|
"@types/fancybox": "^3.5.3",
|
15
16
|
"@types/hexo": "^3.8.8",
|
16
17
|
"@types/jquery": "^3.5.16",
|
17
18
|
"@types/js-yaml": "^4.0.5",
|
18
19
|
"@types/lozad": "^1.16.1",
|
20
|
+
"@types/mocha": "^10.0.1",
|
19
21
|
"@types/node": "^20.4.4",
|
20
22
|
"@typescript-eslint/eslint-plugin": "^6.2.0",
|
21
23
|
"@typescript-eslint/parser": "^6.2.0",
|
24
|
+
"chai": "^4.3.7",
|
22
25
|
"eslint": "^8.45.0",
|
23
26
|
"eslint-config-standard": "*",
|
27
|
+
"eslint-plugin-chai-friendly": "^0.7.2",
|
24
28
|
"eslint-plugin-import": "^2.27.5",
|
25
29
|
"eslint-plugin-n": "^16.0.1",
|
26
30
|
"eslint-plugin-promise": "^6.1.1",
|
@@ -28,16 +32,20 @@
|
|
28
32
|
"hexo-fs": "^4.1.1",
|
29
33
|
"hexo-util": "^3.1.0",
|
30
34
|
"instantsearch.js": "^4.56.7",
|
31
|
-
"
|
32
|
-
"theme-shokax-pjax": "^0.0.2",
|
35
|
+
"mocha": "^10.2.0",
|
33
36
|
"typescript": "^5.1.6",
|
34
|
-
"vue": "^3.3.4"
|
37
|
+
"vue": "^3.3.4",
|
38
|
+
"jsdom": "^22.1.0"
|
35
39
|
},
|
36
40
|
"dependencies": {
|
37
|
-
"
|
41
|
+
"esbuild": "^0.18.17",
|
42
|
+
"js-yaml": "^4.1.0",
|
43
|
+
"lozad": "^1.16.0",
|
44
|
+
"theme-shokax-anime": "^0.0.4",
|
45
|
+
"theme-shokax-pjax": "^0.0.2"
|
46
|
+
},
|
47
|
+
"engines": {
|
48
|
+
"node": ">=18.0.0"
|
38
49
|
},
|
39
|
-
|
40
|
-
"node": ">=18.0.0"
|
41
|
-
},
|
42
|
-
"engineStrict": true
|
50
|
+
"engineStrict": true
|
43
51
|
}
|
@@ -5,21 +5,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
6
6
|
const package_json_1 = __importDefault(require("../../package.json"));
|
7
7
|
const fs = require("hexo-fs");
|
8
|
-
const
|
9
|
-
function findJsFile(path) {
|
10
|
-
let result = [];
|
11
|
-
fs.readdirSync(path).forEach((item) => {
|
12
|
-
if (!item.endsWith('js')) {
|
13
|
-
result = result.concat(findJsFile(node_path_1.default.join(path, item)));
|
14
|
-
}
|
15
|
-
else {
|
16
|
-
if (item.indexOf('player') === -1 && item.indexOf('fireworks') === -1) {
|
17
|
-
result.push(node_path_1.default.join(path, item));
|
18
|
-
}
|
19
|
-
}
|
20
|
-
});
|
21
|
-
return result;
|
22
|
-
}
|
8
|
+
const esbuild = require("esbuild");
|
23
9
|
hexo.extend.generator.register('script', function (locals) {
|
24
10
|
const config = hexo.config;
|
25
11
|
const theme = hexo.theme.config;
|
@@ -58,6 +44,7 @@ hexo.extend.generator.register('script', function (locals) {
|
|
58
44
|
},
|
59
45
|
playerAPI: theme.playerAPI,
|
60
46
|
disableVL: theme.disableVL,
|
47
|
+
noPlayer: theme.experiments?.noPlayer,
|
61
48
|
audio: undefined,
|
62
49
|
fireworks: undefined
|
63
50
|
};
|
@@ -72,41 +59,26 @@ hexo.extend.generator.register('script', function (locals) {
|
|
72
59
|
if (theme?.audio) {
|
73
60
|
siteConfig.audio = theme.audio;
|
74
61
|
}
|
75
|
-
let text
|
76
|
-
let
|
77
|
-
if (fs.existsSync('themes/shokaX/source/js/_app/
|
78
|
-
|
62
|
+
let text;
|
63
|
+
let enterPoint;
|
64
|
+
if (fs.existsSync('themes/shokaX/source/js/_app/pjax/siteInit.js')) {
|
65
|
+
enterPoint = 'themes/shokaX/source/js/_app/pjax/siteInit.js';
|
79
66
|
}
|
80
67
|
else {
|
81
|
-
|
68
|
+
enterPoint = 'node_modules/hexo-theme-shokax/source/js/_app/pjax/siteInit.js';
|
82
69
|
}
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
70
|
+
text = 'const CONFIG = ' + JSON.stringify(siteConfig) + ';';
|
71
|
+
esbuild.buildSync({
|
72
|
+
entryPoints: [enterPoint],
|
73
|
+
bundle: true,
|
74
|
+
outfile: 'shokax_temp.js',
|
75
|
+
platform: 'browser',
|
76
|
+
target: ['es2021'],
|
77
|
+
minify: true
|
90
78
|
});
|
91
|
-
|
92
|
-
if (fs.existsSync('themes/shokaX/source/js/_app/player.js')) {
|
93
|
-
text += fs.readFileSync('themes/shokaX/source/js/_app/player.js').toString();
|
94
|
-
}
|
95
|
-
else {
|
96
|
-
text += fs.readFileSync('node_modules/hexo-theme-shokax/source/js/_app/player.js').toString();
|
97
|
-
}
|
98
|
-
}
|
99
|
-
if (theme.fireworks && theme.fireworks.enable) {
|
100
|
-
if (fs.existsSync('themes/shokaX/source/js/_app/fireworks.js')) {
|
101
|
-
text += fs.readFileSync('themes/shokaX/source/js/_app/fireworks.js').toString();
|
102
|
-
}
|
103
|
-
else {
|
104
|
-
text += fs.readFileSync('node_modules/hexo-theme-shokax/source/js/_app/fireworks.js').toString();
|
105
|
-
}
|
106
|
-
siteConfig.fireworks = theme.fireworks.color || ['rgba(255,182,185,.9)', 'rgba(250,227,217,.9)', 'rgba(187,222,214,.9)', 'rgba(138,198,209,.9)'];
|
107
|
-
}
|
108
|
-
text = 'const CONFIG = ' + JSON.stringify(siteConfig) + ';' + text;
|
79
|
+
text += fs.readFileSync('shokax_temp.js');
|
109
80
|
const result = hexo.render.renderSync({ text, engine: 'js' });
|
81
|
+
fs.unlinkSync('shokax_temp.js');
|
110
82
|
return {
|
111
83
|
path: theme.js + '/app.js',
|
112
84
|
data: function () {
|
package/scripts/helpers/asset.js
CHANGED
@@ -6,6 +6,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
const package_json_1 = __importDefault(require("../../package.json"));
|
7
7
|
const hexo_util_1 = require("hexo-util");
|
8
8
|
hexo.extend.helper.register('_new_comments', function (mode) {
|
9
|
+
const root = this.config.url.replace(/^(https?:\/\/)?[^\/]*/, '');
|
9
10
|
if (mode === 'twikoo') {
|
10
11
|
return `<script data-pjax type="module">
|
11
12
|
let comments = []
|
@@ -29,7 +30,8 @@ hexo.extend.helper.register('_new_comments', function (mode) {
|
|
29
30
|
Vue.createApp({
|
30
31
|
data() {
|
31
32
|
return {
|
32
|
-
coms: comments
|
33
|
+
coms: comments,
|
34
|
+
root: '${root}'
|
33
35
|
}
|
34
36
|
}
|
35
37
|
}).mount('#new-comment')
|
@@ -61,7 +63,8 @@ hexo.extend.helper.register('_new_comments', function (mode) {
|
|
61
63
|
Vue.createApp({
|
62
64
|
data() {
|
63
65
|
return {
|
64
|
-
coms: items
|
66
|
+
coms: items,
|
67
|
+
root: '${root}'
|
65
68
|
}
|
66
69
|
}
|
67
70
|
}).mount('#new-comment')
|
@@ -1,44 +1,52 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
exports.menuActive = exports.goToCommentHandle = exports.goToBottomHandle = exports.backToTopHandle = exports.sidebarTOC = exports.sideBarTab = exports.sideBarToggleHandle = void 0;
|
4
|
+
const globalVars_1 = require("../globals/globalVars");
|
5
|
+
const tools_1 = require("../globals/tools");
|
6
|
+
const anime_1 = require("../library/anime");
|
7
|
+
const dom_1 = require("../library/dom");
|
1
8
|
const sideBarToggleHandle = (event, force) => {
|
2
|
-
if (sideBar.hasClass('on')) {
|
3
|
-
sideBar.removeClass('on');
|
4
|
-
menuToggle.removeClass('close');
|
9
|
+
if (globalVars_1.sideBar.hasClass('on')) {
|
10
|
+
globalVars_1.sideBar.removeClass('on');
|
11
|
+
globalVars_1.menuToggle.removeClass('close');
|
5
12
|
if (force) {
|
6
|
-
sideBar.style = '';
|
13
|
+
globalVars_1.sideBar.style = '';
|
7
14
|
}
|
8
15
|
else {
|
9
|
-
transition(sideBar, 'slideRightOut');
|
16
|
+
(0, anime_1.transition)(globalVars_1.sideBar, 'slideRightOut');
|
10
17
|
}
|
11
18
|
}
|
12
19
|
else {
|
13
20
|
if (force) {
|
14
|
-
sideBar.style = '';
|
21
|
+
globalVars_1.sideBar.style = '';
|
15
22
|
}
|
16
23
|
else {
|
17
|
-
transition(sideBar, 'slideRightIn', () => {
|
18
|
-
sideBar.addClass('on');
|
19
|
-
menuToggle.addClass('close');
|
24
|
+
(0, anime_1.transition)(globalVars_1.sideBar, 'slideRightIn', () => {
|
25
|
+
globalVars_1.sideBar.addClass('on');
|
26
|
+
globalVars_1.menuToggle.addClass('close');
|
20
27
|
});
|
21
28
|
}
|
22
29
|
}
|
23
30
|
};
|
31
|
+
exports.sideBarToggleHandle = sideBarToggleHandle;
|
24
32
|
const sideBarTab = () => {
|
25
|
-
const sideBarInner = sideBar.child('.inner');
|
26
|
-
if (sideBar.child('.tab')) {
|
27
|
-
sideBarInner.removeChild(sideBar.child('.tab'));
|
33
|
+
const sideBarInner = globalVars_1.sideBar.child('.inner');
|
34
|
+
if (globalVars_1.sideBar.child('.tab')) {
|
35
|
+
sideBarInner.removeChild(globalVars_1.sideBar.child('.tab'));
|
28
36
|
}
|
29
37
|
const list = document.createElement('ul');
|
30
38
|
let active = 'active';
|
31
39
|
list.className = 'tab';
|
32
40
|
['contents', 'related', 'overview'].forEach((item) => {
|
33
|
-
const element = sideBar.child('.panel.' + item);
|
41
|
+
const element = globalVars_1.sideBar.child('.panel.' + item);
|
34
42
|
if (element.innerHTML.trim().length < 1) {
|
35
43
|
if (item === 'contents') {
|
36
|
-
showContents.display('none');
|
44
|
+
globalVars_1.showContents.display('none');
|
37
45
|
}
|
38
46
|
return;
|
39
47
|
}
|
40
48
|
if (item === 'contents') {
|
41
|
-
showContents.display('');
|
49
|
+
globalVars_1.showContents.display('');
|
42
50
|
}
|
43
51
|
const tab = document.createElement('li');
|
44
52
|
const span = document.createElement('span');
|
@@ -57,13 +65,13 @@ const sideBarTab = () => {
|
|
57
65
|
const target = event.currentTarget;
|
58
66
|
if (target.hasClass('active'))
|
59
67
|
return;
|
60
|
-
sideBar.find('.tab .item').forEach((element) => {
|
68
|
+
globalVars_1.sideBar.find('.tab .item').forEach((element) => {
|
61
69
|
element.removeClass('active');
|
62
70
|
});
|
63
|
-
sideBar.find('.panel').forEach((element) => {
|
71
|
+
globalVars_1.sideBar.find('.panel').forEach((element) => {
|
64
72
|
element.removeClass('active');
|
65
73
|
});
|
66
|
-
sideBar.child('.panel.' + target.className.replace(' item', '')).addClass('active');
|
74
|
+
globalVars_1.sideBar.child('.panel.' + target.className.replace(' item', '')).addClass('active');
|
67
75
|
target.addClass('active');
|
68
76
|
});
|
69
77
|
list.appendChild(tab);
|
@@ -71,12 +79,13 @@ const sideBarTab = () => {
|
|
71
79
|
});
|
72
80
|
if (list.childNodes.length > 1) {
|
73
81
|
sideBarInner.insertBefore(list, sideBarInner.childNodes[0]);
|
74
|
-
sideBar.child('.panels').style.paddingTop = '';
|
82
|
+
globalVars_1.sideBar.child('.panels').style.paddingTop = '';
|
75
83
|
}
|
76
84
|
else {
|
77
|
-
sideBar.child('.panels').style.paddingTop = '.625rem';
|
85
|
+
globalVars_1.sideBar.child('.panels').style.paddingTop = '.625rem';
|
78
86
|
}
|
79
87
|
};
|
88
|
+
exports.sideBarTab = sideBarTab;
|
80
89
|
const sidebarTOC = () => {
|
81
90
|
const activateNavByIndex = (index) => {
|
82
91
|
const target = navItems[index];
|
@@ -85,7 +94,7 @@ const sidebarTOC = () => {
|
|
85
94
|
if (target.hasClass('current')) {
|
86
95
|
return;
|
87
96
|
}
|
88
|
-
|
97
|
+
dom_1.$dom.each('.toc .active', (element) => {
|
89
98
|
element && element.removeClass('active current');
|
90
99
|
});
|
91
100
|
sections.forEach((element) => {
|
@@ -97,18 +106,18 @@ const sidebarTOC = () => {
|
|
97
106
|
while (!parent.matches('.contents')) {
|
98
107
|
if (parent.matches('li')) {
|
99
108
|
parent.addClass('active');
|
100
|
-
const t =
|
109
|
+
const t = (0, dom_1.$dom)(parent.child('a.toc-link').attr('href'));
|
101
110
|
if (t) {
|
102
111
|
t.addClass('active');
|
103
112
|
}
|
104
113
|
}
|
105
114
|
parent = parent.parentNode;
|
106
115
|
}
|
107
|
-
if (getComputedStyle(sideBar).display !== 'none' && tocElement.hasClass('active')) {
|
108
|
-
pageScroll(tocElement, target.offsetTop - (tocElement.offsetHeight / 4));
|
116
|
+
if (getComputedStyle(globalVars_1.sideBar).display !== 'none' && tocElement.hasClass('active')) {
|
117
|
+
(0, anime_1.pageScroll)(tocElement, target.offsetTop - (tocElement.offsetHeight / 4));
|
109
118
|
}
|
110
119
|
};
|
111
|
-
const navItems =
|
120
|
+
const navItems = dom_1.$dom.all('.contents li');
|
112
121
|
if (navItems.length < 1) {
|
113
122
|
return;
|
114
123
|
}
|
@@ -116,15 +125,15 @@ const sidebarTOC = () => {
|
|
116
125
|
let activeLock = null;
|
117
126
|
sections = sections.map((element, index) => {
|
118
127
|
const link = element.child('a.toc-link');
|
119
|
-
const anchor =
|
128
|
+
const anchor = (0, dom_1.$dom)(decodeURI(link.attr('href')));
|
120
129
|
if (!anchor)
|
121
130
|
return null;
|
122
131
|
const alink = anchor.child('a.anchor');
|
123
132
|
const anchorScroll = (event) => {
|
124
133
|
event.preventDefault();
|
125
|
-
const target =
|
134
|
+
const target = (0, dom_1.$dom)(decodeURI(event.currentTarget.attr('href')));
|
126
135
|
activeLock = index;
|
127
|
-
pageScroll(target, null, () => {
|
136
|
+
(0, anime_1.pageScroll)(target, null, () => {
|
128
137
|
activateNavByIndex(index);
|
129
138
|
activeLock = null;
|
130
139
|
});
|
@@ -132,11 +141,11 @@ const sidebarTOC = () => {
|
|
132
141
|
link.addEventListener('click', anchorScroll);
|
133
142
|
alink && alink.addEventListener('click', (event) => {
|
134
143
|
anchorScroll(event);
|
135
|
-
clipBoard(CONFIG.hostname + '/' + LOCAL.path + event.currentTarget.attr('href'));
|
144
|
+
(0, tools_1.clipBoard)(CONFIG.hostname + '/' + LOCAL.path + event.currentTarget.attr('href'));
|
136
145
|
});
|
137
146
|
return anchor;
|
138
147
|
});
|
139
|
-
const tocElement = sideBar.child('.contents.panel');
|
148
|
+
const tocElement = globalVars_1.sideBar.child('.contents.panel');
|
140
149
|
const findIndex = (entries) => {
|
141
150
|
let index = 0;
|
142
151
|
let entry = entries[index];
|
@@ -156,7 +165,7 @@ const sidebarTOC = () => {
|
|
156
165
|
};
|
157
166
|
const createIntersectionObserver = () => {
|
158
167
|
const observer = new IntersectionObserver((entries) => {
|
159
|
-
const index = findIndex(entries) + (diffY < 0 ? 1 : 0);
|
168
|
+
const index = findIndex(entries) + (globalVars_1.diffY < 0 ? 1 : 0);
|
160
169
|
if (activeLock === null) {
|
161
170
|
activateNavByIndex(index);
|
162
171
|
}
|
@@ -169,17 +178,21 @@ const sidebarTOC = () => {
|
|
169
178
|
};
|
170
179
|
createIntersectionObserver();
|
171
180
|
};
|
181
|
+
exports.sidebarTOC = sidebarTOC;
|
172
182
|
const backToTopHandle = () => {
|
173
|
-
pageScroll(0);
|
183
|
+
(0, anime_1.pageScroll)(0);
|
174
184
|
};
|
185
|
+
exports.backToTopHandle = backToTopHandle;
|
175
186
|
const goToBottomHandle = () => {
|
176
|
-
pageScroll(parseInt(String(Container.changeOrGetHeight())));
|
187
|
+
(0, anime_1.pageScroll)(parseInt(String(globalVars_1.Container.changeOrGetHeight())));
|
177
188
|
};
|
189
|
+
exports.goToBottomHandle = goToBottomHandle;
|
178
190
|
const goToCommentHandle = () => {
|
179
|
-
pageScroll(
|
191
|
+
(0, anime_1.pageScroll)((0, dom_1.$dom)('#comments'));
|
180
192
|
};
|
193
|
+
exports.goToCommentHandle = goToCommentHandle;
|
181
194
|
const menuActive = () => {
|
182
|
-
|
195
|
+
dom_1.$dom.each('.menu .item:not(.title)', (element) => {
|
183
196
|
const target = element.child('a[href]');
|
184
197
|
const parentItem = element.parentNode.parentNode;
|
185
198
|
if (!target)
|
@@ -196,3 +209,4 @@ const menuActive = () => {
|
|
196
209
|
}
|
197
210
|
});
|
198
211
|
};
|
212
|
+
exports.menuActive = menuActive;
|
@@ -1,3 +1,10 @@
|
|
1
|
+
"use strict";
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
4
|
+
};
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
6
|
+
exports.initFireworks = void 0;
|
7
|
+
const theme_shokax_anime_1 = __importDefault(require("theme-shokax-anime"));
|
1
8
|
const canvasEl = document.createElement('canvas');
|
2
9
|
canvasEl.style.cssText = 'position:fixed;top:0;left:0;pointer-events:none;z-index:9999999';
|
3
10
|
document.body.appendChild(canvasEl);
|
@@ -19,9 +26,9 @@ function updateCoords(e) {
|
|
19
26
|
pointerY = e.clientY || (e.touches && e.touches[0].clientY);
|
20
27
|
}
|
21
28
|
function setParticuleDirection(p) {
|
22
|
-
const angle =
|
23
|
-
const value =
|
24
|
-
const radius = [-1, 1][
|
29
|
+
const angle = theme_shokax_anime_1.default.random(0, 360) * Math.PI / 180;
|
30
|
+
const value = theme_shokax_anime_1.default.random(50, 180);
|
31
|
+
const radius = [-1, 1][theme_shokax_anime_1.default.random(0, 1)] * value;
|
25
32
|
return {
|
26
33
|
x: p.x + radius * Math.cos(angle),
|
27
34
|
y: p.y + radius * Math.sin(angle)
|
@@ -41,8 +48,8 @@ function createParticule(x, y) {
|
|
41
48
|
ctx.fill();
|
42
49
|
}
|
43
50
|
};
|
44
|
-
p.color = colors[
|
45
|
-
p.radius =
|
51
|
+
p.color = colors[theme_shokax_anime_1.default.random(0, colors.length - 1)];
|
52
|
+
p.radius = theme_shokax_anime_1.default.random(16, 32);
|
46
53
|
p.endPos = setParticuleDirection(p);
|
47
54
|
return p;
|
48
55
|
}
|
@@ -78,9 +85,9 @@ function animateParticules(x, y) {
|
|
78
85
|
for (let i = 0; i < numberOfParticules; i++) {
|
79
86
|
particules.push(createParticule(x, y));
|
80
87
|
}
|
81
|
-
|
88
|
+
(0, theme_shokax_anime_1.default)().timeline().add({
|
82
89
|
targets: particules,
|
83
|
-
duration:
|
90
|
+
duration: theme_shokax_anime_1.default.random(1200, 1800),
|
84
91
|
easing: 'easeOutExpo',
|
85
92
|
update: renderParticule,
|
86
93
|
x: p => p.endPos.x,
|
@@ -88,19 +95,19 @@ function animateParticules(x, y) {
|
|
88
95
|
radius: 0.1
|
89
96
|
}).add({
|
90
97
|
targets: circle,
|
91
|
-
duration:
|
98
|
+
duration: theme_shokax_anime_1.default.random(1200, 1800),
|
92
99
|
easing: 'easeOutExpo',
|
93
100
|
update: renderParticule,
|
94
|
-
radius:
|
101
|
+
radius: theme_shokax_anime_1.default.random(80, 160),
|
95
102
|
lineWidth: 0,
|
96
103
|
alpha: {
|
97
104
|
value: 0,
|
98
105
|
easing: 'linear',
|
99
|
-
duration:
|
106
|
+
duration: theme_shokax_anime_1.default.random(600, 800)
|
100
107
|
}
|
101
108
|
}).play();
|
102
109
|
}
|
103
|
-
const render =
|
110
|
+
const render = (0, theme_shokax_anime_1.default)({
|
104
111
|
duration: Infinity,
|
105
112
|
update() {
|
106
113
|
ctx.clearRect(0, 0, canvasEl.width, canvasEl.height);
|
@@ -116,13 +123,19 @@ const hasAncestor = (node, name) => {
|
|
116
123
|
} while ((node = node.parentNode) !== null);
|
117
124
|
return false;
|
118
125
|
};
|
119
|
-
|
120
|
-
if (
|
126
|
+
function initFireworks() {
|
127
|
+
if (typeof CONFIG.fireworks === 'undefined') {
|
121
128
|
return;
|
122
129
|
}
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
}
|
127
|
-
|
128
|
-
|
130
|
+
document.addEventListener(tap, (e) => {
|
131
|
+
if (hasAncestor(e.target, 'a')) {
|
132
|
+
return;
|
133
|
+
}
|
134
|
+
render.play();
|
135
|
+
updateCoords(e);
|
136
|
+
animateParticules(pointerX, pointerY);
|
137
|
+
}, false);
|
138
|
+
setCanvasSize();
|
139
|
+
window.addEventListener('resize', setCanvasSize, false);
|
140
|
+
}
|
141
|
+
exports.initFireworks = initFireworks;
|