hexo-theme-solitude 1.5.11 → 1.6.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.
Files changed (136) hide show
  1. package/.github/logo.svg +44 -10
  2. package/README.md +22 -2
  3. package/README_zh-cn.md +22 -2
  4. package/README_zh-tw.md +22 -2
  5. package/_config.yml +107 -107
  6. package/languages/en.yml +45 -63
  7. package/languages/zh-CN.yml +32 -55
  8. package/languages/zh-TW.yml +32 -55
  9. package/layout/404.pug +1 -1
  10. package/layout/includes/console.pug +5 -5
  11. package/layout/includes/footer.pug +7 -7
  12. package/layout/includes/head/config.pug +15 -9
  13. package/layout/includes/head/opengraph.pug +2 -2
  14. package/layout/includes/head/pwa.pug +6 -6
  15. package/layout/includes/head.pug +1 -1
  16. package/layout/includes/inject/body.pug +0 -4
  17. package/layout/includes/inject/head.pug +1 -2
  18. package/layout/includes/keyboard.pug +1 -1
  19. package/layout/includes/loading.pug +1 -1
  20. package/layout/includes/nav.pug +1 -1
  21. package/layout/includes/sidebar.pug +19 -3
  22. package/layout/includes/widgets/home/banner.pug +1 -1
  23. package/layout/includes/widgets/home/categoryBar.pug +2 -2
  24. package/layout/includes/widgets/home/categoryGroup.pug +0 -1
  25. package/layout/includes/widgets/home/postList.pug +74 -29
  26. package/layout/includes/widgets/home/topGroup.pug +2 -2
  27. package/layout/includes/widgets/nav/group.pug +2 -2
  28. package/layout/includes/widgets/nav/right.pug +1 -1
  29. package/layout/includes/widgets/page/about/award.pug +8 -9
  30. package/layout/includes/widgets/page/about/hobbies.pug +1 -1
  31. package/layout/includes/widgets/page/about/other.pug +1 -1
  32. package/layout/includes/widgets/page/banner.pug +1 -1
  33. package/layout/includes/widgets/page/links/banner.pug +5 -4
  34. package/layout/includes/widgets/page/moments/angle.pug +1 -1
  35. package/layout/includes/widgets/post/award.pug +10 -15
  36. package/layout/includes/widgets/post/copyright.pug +2 -2
  37. package/layout/includes/widgets/post/postMeta.pug +10 -10
  38. package/layout/includes/widgets/randomlink.pug +3 -2
  39. package/layout/includes/widgets/third-party/comments/twikoo.pug +1 -0
  40. package/layout/includes/widgets/third-party/comments/waline.pug +1 -0
  41. package/layout/page.pug +1 -1
  42. package/package.json +1 -1
  43. package/plugins.yml +0 -4
  44. package/scripts/event/cdn.js +6 -11
  45. package/scripts/event/merge_config.js +19 -3
  46. package/scripts/event/welcome.js +2 -2
  47. package/scripts/filter/checkThemeConfig.js +2 -2
  48. package/scripts/filter/default.js +4 -2
  49. package/scripts/filter/lazyload.js +18 -5
  50. package/scripts/filter/randomPosts.js +1 -1
  51. package/scripts/helper/stylus.js +8 -14
  52. package/source/css/{_widgets/_comment → _comments}/index.styl +14 -1
  53. package/source/css/{_widgets/_comment → _comments}/twikoo.styl +3 -0
  54. package/source/css/_global/index.styl +362 -1
  55. package/source/css/_highlight/prismjs/line-number.styl +1 -1
  56. package/source/css/{_widgets/_mixins → _layout}/article-sort.styl +1 -1
  57. package/source/css/_layout/aside.styl +751 -0
  58. package/source/css/_layout/capsule.styl +213 -0
  59. package/source/css/{_widgets/_extra → _layout}/console.styl +7 -6
  60. package/source/css/{_widgets/_mixins → _layout}/footer.styl +1 -0
  61. package/source/css/_layout/fullpage.styl +47 -0
  62. package/source/css/_layout/header.styl +2 -0
  63. package/source/css/_layout/keyboard.styl +60 -0
  64. package/source/css/_layout/pace.styl +40 -0
  65. package/source/css/_layout/rightmenu.styl +79 -0
  66. package/source/css/{_widgets/_mixins → _layout}/sidebar.styl +30 -20
  67. package/source/css/_layout/universe.styl +18 -0
  68. package/source/css/_page/_home/home-top.styl +2 -4
  69. package/source/css/_page/_home/recent-post.styl +407 -170
  70. package/source/css/_page/douban.styl +111 -109
  71. package/source/css/_page/links.styl +5 -5
  72. package/source/css/_page/share.styl +1 -17
  73. package/source/css/{_widgets/_post → _post}/content.styl +13 -3
  74. package/source/css/{_widgets/_post → _post}/tools.styl +3 -9
  75. package/source/css/index.styl +20 -5
  76. package/source/css/third_party/snackbar.min.css +1 -0
  77. package/source/css/{_global/var.styl → var.styl} +7 -1
  78. package/source/img/avatar.png +0 -0
  79. package/source/img/default.png +0 -0
  80. package/source/img/flower.gif +0 -0
  81. package/source/img/pwa/favicon.ico +0 -0
  82. package/source/img/pwa/favicon_128.ico +0 -0
  83. package/source/img/pwa/favicon_16.ico +0 -0
  84. package/source/img/pwa/favicon_256.ico +0 -0
  85. package/source/img/pwa/favicon_32.ico +0 -0
  86. package/source/js/{comment/twikoo_commentBarrage.js → commentBarrage/twikoo.js} +0 -6
  87. package/source/js/{comment/waline_commentBarrage.js → commentBarrage/waline.js} +0 -2
  88. package/source/js/main.js +73 -71
  89. package/source/js/utils.js +1 -1
  90. package/layout/includes/recent-posts.pug +0 -9
  91. package/layout/includes/widgets/rightside/index.pug +0 -87
  92. package/source/css/_layout/basic.styl +0 -308
  93. package/source/css/_layout/index.styl +0 -125
  94. package/source/css/_widgets/_aside/allinfo.styl +0 -168
  95. package/source/css/_widgets/_aside/flip.styl +0 -67
  96. package/source/css/_widgets/_aside/index.styl +0 -90
  97. package/source/css/_widgets/_aside/info.styl +0 -263
  98. package/source/css/_widgets/_aside/newPost.styl +0 -61
  99. package/source/css/_widgets/_aside/toc.styl +0 -108
  100. package/source/css/_widgets/_aside/welcome.styl +0 -14
  101. package/source/css/_widgets/_extra/fullpage.styl +0 -46
  102. package/source/css/_widgets/_extra/music.styl +0 -218
  103. package/source/css/_widgets/_extra/pace.styl +0 -39
  104. package/source/css/_widgets/_extra/rightmenu.styl +0 -78
  105. package/source/css/_widgets/_mixins/keyboard.styl +0 -59
  106. package/source/css/_widgets/index.styl +0 -56
  107. package/source/img/logo.png +0 -0
  108. package/source/js/rightside.js +0 -221
  109. /package/source/css/{_widgets/_comment → _comments}/waline.styl +0 -0
  110. /package/source/css/{_widgets/_mixins → _layout}/other.styl +0 -0
  111. /package/source/css/{_widgets/_post → _post}/commentBarrage.styl +0 -0
  112. /package/source/css/{_widgets/_post → _post}/copyright.styl +0 -0
  113. /package/source/css/{_widgets/_post → _post}/index.styl +0 -0
  114. /package/source/css/{_widgets/_post → _post}/meta.styl +0 -0
  115. /package/source/css/{_widgets/_post → _post}/pagination.styl +0 -0
  116. /package/source/css/{_widgets/_post → _post}/postAI.styl +0 -0
  117. /package/source/css/{_widgets/_post → _post}/relatedPost.styl +0 -0
  118. /package/source/css/{_widgets/_search → _search}/algolia-search.styl +0 -0
  119. /package/source/css/{_widgets/_search → _search}/local-search.styl +0 -0
  120. /package/source/css/{_widgets/_tags → _tags}/button.styl +0 -0
  121. /package/source/css/{_widgets/_tags → _tags}/checkbox.styl +0 -0
  122. /package/source/css/{_widgets/_tags → _tags}/fold.styl +0 -0
  123. /package/source/css/{_widgets/_tags → _tags}/gallery.styl +0 -0
  124. /package/source/css/{_widgets/_tags → _tags}/index.styl +0 -0
  125. /package/source/css/{_widgets/_tags → _tags}/label.styl +0 -0
  126. /package/source/css/{_widgets/_tags → _tags}/link.styl +0 -0
  127. /package/source/css/{_widgets/_tags → _tags}/media.styl +0 -0
  128. /package/source/css/{_widgets/_tags → _tags}/mermaid.styl +0 -0
  129. /package/source/css/{_widgets/_tags → _tags}/note.styl +0 -0
  130. /package/source/css/{_widgets/_tags → _tags}/span.styl +0 -0
  131. /package/source/css/{_widgets/_tags → _tags}/tabs.styl +0 -0
  132. /package/source/css/{_widgets/_tags → _tags}/timeline.styl +0 -0
  133. /package/source/js/{lately.min.js → third_party/lately.min.js} +0 -0
  134. /package/source/js/{sco-ai.min.js → third_party/sco-ai.min.js} +0 -0
  135. /package/source/js/{universe.min.js → third_party/universe.min.js} +0 -0
  136. /package/source/js/{waterfall.min.js → third_party/waterfall.min.js} +0 -0
@@ -1,221 +0,0 @@
1
- let rm = {};
2
- const addEvent = (element, event, callback) => element.addEventListener(event, callback);
3
- rm.stopdragimg = Array.from(document.getElementsByTagName('img'));
4
- rm.stopdragimg.forEach(img => addEvent(img, 'dragstart', () => false));
5
- rm.showRightMenu = function (e, n = 0, t = 0) {
6
- let o = document.getElementById('rightMenu');
7
- o.style.top = n + 'px';
8
- o.style.left = t + 'px';
9
- o.style.display = e ? 'block' : 'none';
10
- e ? stopMaskScroll() : document.getElementById('rightmenu-mask').style.display = 'none';
11
- };
12
- rm.reloadrmSize = function () {
13
- let menu = document.querySelector("#rightMenu");
14
- menu.style.display = "block";
15
- rmWidth = menu.offsetWidth;
16
- rmHeight = menu.offsetHeight;
17
- menu.style.display = 'none';
18
- }
19
- async function imageToBlob(e) {
20
- const n = new Image();
21
- const t = document.createElement("canvas");
22
- const o = t.getContext("2d");
23
- n.crossOrigin = "";
24
- n.src = e;
25
- return new Promise((resolve => {
26
- n.onload = function () {
27
- t.width = this.naturalWidth;
28
- t.height = this.naturalHeight;
29
- o.drawImage(this, 0, 0);
30
- t.toBlob((blob => resolve(blob)), "image/png", .75);
31
- };
32
- }));
33
- }
34
- async function copyImage(e) {
35
- try {
36
- const n = await imageToBlob(e);
37
- const t = new ClipboardItem({
38
- "image/png": n
39
- });
40
- await navigator.clipboard.write([t]);
41
- } catch (error) {
42
- console.error('Failed to copy image: ', error);
43
- }
44
- }
45
- function stopMaskScroll() {
46
- addEvent(document.getElementById("rightmenu-mask"), "mousewheel", rm.hideRightMenu);
47
- addEvent(document.getElementById("rightMenu"), "mousewheel", rm.hideRightMenu);
48
- }
49
- rm.downloadimging = false;
50
- rm.writeClipImg = async function (e) {
51
- if (!rm.downloadimging) {
52
- rm.downloadimging = true;
53
- utils.snackbarShow("正在下载中,请稍后", false, 10000);
54
- rm.hideRightMenu();
55
- setTimeout(async function () {
56
- await copyImage(e);
57
- utils.snackbarShow("复制成功!图片已添加盲水印,请遵守版权协议");
58
- rm.downloadimging = false;
59
- }, 1000);
60
- }
61
- };
62
- rm.copyUrl = function (e) {
63
- const t = document.createElement('input');
64
- t.value = e;
65
- document.body.appendChild(t);
66
- t.select();
67
- document.execCommand('copy');
68
- document.body.removeChild(t);
69
- };
70
- rm.insertAtCaret = function (e, n) {
71
- const t = e.selectionStart
72
- , o = e.selectionEnd;
73
- if (document.selection)
74
- e.focus(),
75
- document.selection.createRange().text = n,
76
- e.focus();
77
- else if (t || "0" === t) {
78
- let i = e.scrollTop;
79
- e.value = e.value.substring(0, t) + n + e.value.substring(o, e.value.length),
80
- e.focus(),
81
- e.selectionStart = t + n.length,
82
- e.selectionEnd = t + n.length,
83
- e.scrollTop = i
84
- } else
85
- e.value += n,
86
- e.focus()
87
- }
88
- rm.rightMenuCommentText = function (e) {
89
- rm.hideRightMenu();
90
- let n = document.getElementsByClassName("el-textarea__inner")[0];
91
- let t = document.createEvent("HTMLEvents");
92
- t.initEvent("input", !0, !0);
93
- let o = replaceAll(e, "\n", "\n> ");
94
- n.value = "> " + o + "\n\n",
95
- n.dispatchEvent(t);
96
- const i = document.querySelector("#post-comment").offsetTop;
97
- window.scrollTo(0, i - 80),
98
- n.focus(),
99
- n.setSelectionRange(-1, -1),
100
- document.getElementById("comment-tips") && document.getElementById("comment-tips").classList.add("show")
101
- }
102
- rm.hideRightMenu = () => rm.showRightMenu(false) || (document.getElementById('rightmenu-mask').style.display = 'none')
103
- document.querySelector("#rightMenu").style.display = "block"
104
- rmWidth = document.querySelector("#rightMenu").offsetWidth;
105
- rmHeight = document.querySelector("#rightMenu").offsetHeight;
106
- document.querySelector("#rightMenu").style.display = 'none'
107
- let domhref = "", domImgSrc = "", globalEvent = null;
108
- rm.switchDarkMode = () => sco.switchDarkMode() || rm.hideRightMenu()
109
- rm.rightmenuCopyText = (e) => navigator.clipboard && navigator.clipboard.writeText(e) || utils.snackbarShow("复制文本成功", !1, 2e3) || rm.hideRightMenu()
110
- rm.copyPageUrl = () => rm.copyUrl(window.location.href) || utils.snackbarShow("复制本页链接地址成功", !1, 2e3) || rm.hideRightMenu()
111
- rm.sharePage = () => rm.copyUrl(url) || utils.snackbarShow("复制本页链接地址成功", !1, 2e3) || rm.hideRightMenu()
112
- var selectTextNow = "";
113
- let selceText = () => selectTextNow = document.selection ? document.selection.createRange().text : window.getSelection() + "" || ""
114
- let replaceAll = (e, n, t) => e.split(n).join(t);
115
- document.onmouseup = document.ondbclick = selceText
116
- rm.readClipboard = () => navigator.clipboard && navigator.clipboard.readText().then((e => rm.insertAtCaret(globalEvent.target, e)))
117
- rm.pasteText = () => rm.readClipboard() || rm.hideRightMenu()
118
- rm.copyLink = () => rm.rightmenuCopyText(domhref) || utils.snackbarShow("已复制链接地址")
119
- window.oncontextmenu = function (e) {
120
- if (document.body.clientWidth <= 768) return;
121
- let n = e.clientX + 10;
122
- let t = e.clientY;
123
- let menuItems = {
124
- other: document.getElementsByClassName('rightMenuOther'),
125
- plugin: document.getElementsByClassName('rightMenuPlugin'),
126
- copytext: document.getElementById('menu-copytext'),
127
- pastetext: document.getElementById('menu-pastetext'),
128
- commenttext: document.getElementById('menu-commenttext'),
129
- newwindow: document.getElementById('menu-newwindow'),
130
- copylink: document.getElementById('menu-copylink'),
131
- copyimg: document.getElementById('menu-copyimg'),
132
- downloadimg: document.getElementById('menu-downloadimg'),
133
- search: document.getElementById('menu-search'),
134
- music: {
135
- toggle: document.getElementById('menu-music-toggle'),
136
- back: document.getElementById('menu-music-back'),
137
- forward: document.getElementById('menu-music-forward'),
138
- playlist: document.getElementById('menu-music-playlist'),
139
- copyMusicName: document.getElementById('menu-music-copyMusicName'),
140
- }
141
- };
142
- let y = e.target.href;
143
- let M = e.target.currentSrc;
144
- let b = false;
145
- Array.from(menuItems.other).forEach(item => item.style.display = 'block');
146
- globalEvent = e;
147
- if (selectTextNow && window.getSelection()) {
148
- b = true;
149
- menuItems.copytext.style.display = 'block';
150
- menuItems.commenttext.style.display = 'block';
151
- menuItems.search.style.display = 'block';
152
- } else {
153
- menuItems.copytext.style.display = 'none';
154
- menuItems.commenttext.style.display = 'none';
155
- menuItems.search.style.display = 'none';
156
- }
157
- if (y) {
158
- b = true;
159
- menuItems.newwindow.style.display = 'block';
160
- menuItems.copylink.style.display = 'block';
161
- domhref = y;
162
- } else {
163
- menuItems.newwindow.style.display = 'none';
164
- menuItems.copylink.style.display = 'none';
165
- }
166
- if (M) {
167
- b = true;
168
- menuItems.copyimg.style.display = 'block';
169
- menuItems.downloadimg.style.display = 'block';
170
- domImgSrc = M;
171
- } else {
172
- menuItems.copyimg.style.display = 'none';
173
- menuItems.downloadimg.style.display = 'none';
174
- }
175
- let tagName = e.target.tagName.toLowerCase();
176
- if (tagName === 'input' || tagName === 'textarea') {
177
- b = true;
178
- menuItems.pastetext.style.display = 'block';
179
- } else {
180
- menuItems.pastetext.style.display = 'none';
181
- }
182
- if (e.target.nodeName === 'METING-JS') {
183
- b = true;
184
- Object.values(menuItems.music).forEach(item => item.style.display = 'block');
185
- } else {
186
- Object.values(menuItems.music).forEach(item => item.style.display = 'none');
187
- }
188
- Array.from(b ? menuItems.other : menuItems.plugin).forEach(item => item.style.display = 'none');
189
- Array.from(b ? menuItems.plugin : menuItems.other).forEach(item => item.style.display = 'block');
190
- rm.reloadrmSize();
191
- n + rmWidth > window.innerWidth && (n -= rmWidth + 10);
192
- t + rmHeight > window.innerHeight && (t -= t + rmHeight - window.innerHeight)
193
- rm.showRightMenu(true, t, n);
194
- document.getElementById('rightmenu-mask').style.display = 'flex';
195
- return false;
196
- };
197
- function addRightMenuClickEvent() {
198
- const addEvent = (id, event, callback) => document.getElementById(id)?.addEventListener(event, callback)
199
- addEvent('menu-backward', 'click', () => window.history.back() || rm.hideRightMenu())
200
- addEvent('menu-forward', 'click', () => window.history.forward() || rm.hideRightMenu())
201
- addEvent('menu-refresh', 'click', () => window.location.reload());
202
- addEvent('menu-top', 'click', () => utils.scrollToDest(0, 500) || rm.hideRightMenu())
203
- Array.from(document.getElementsByClassName('menu-link')).forEach(element => element.addEventListener('click', rm.hideRightMenu))
204
- addEvent('menu-darkmode', 'click', rm.switchDarkMode);
205
- addEvent('menu-randomPost', 'click', () => toRandomPost() || rm.hideRightMenu());
206
- GLOBAL_CONFIG.comment.commentBarrage && addEvent('menu-commentBarrage', 'click', sco.switchCommentBarrage);
207
- addEvent('rightmenu-mask', 'click', rm.hideRightMenu);
208
- addEvent('rightmenu-mask', 'contextmenu', () => rm.hideRightMenu() || false)
209
- addEvent('menu-copy', 'click', rm.copyPageUrl);
210
- addEvent('menu-pastetext', 'click', rm.pasteText);
211
- addEvent('menu-copytext', 'click', () => rm.rightmenuCopyText(selectTextNow) || utils.snackbarShow("复制成功,复制和转载请标注本文地址") || rm.hideRightMenu())
212
- GLOBAL_CONFIG.comment.enable && addEvent('menu-commenttext', 'click', () => rm.rightMenuCommentText(selectTextNow))
213
- addEvent('menu-newwindow', 'click', () => window.open(domhref) || rm.hideRightMenu());
214
- addEvent('menu-copylink', 'click', rm.copyLink);
215
- addEvent('menu-downloadimg', 'click', () => sco.downloadImage(domImgSrc));
216
- addEvent('menu-copyimg', 'click', () => rm.writeClipImg(domImgSrc));
217
- addEvent('menu-music-toggle', 'click', sco.musicToggle);
218
- addEvent('menu-music-back', 'click', sco.musicSkipBack);
219
- addEvent('menu-music-forward', 'click', sco.musicSkipForward);
220
- addEvent('menu-music-copyMusicName', 'click', () => rm.rightmenuCopyText(sco.musicGetName()) || utils.snackbarShow("复制歌曲名称成功", false, 3000))
221
- }
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes