hexo-theme-solitude 1.5.0 → 1.5.2

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 (151) hide show
  1. package/.github/ISSUE_TEMPLATE/config.yml +17 -0
  2. package/.github/ISSUE_TEMPLATE/feature_request.yml +48 -0
  3. package/.github/PULL_REQUEST_TEMPLATE.md +35 -0
  4. package/CONTRIBUTING.md +2 -13
  5. package/LICENSE +21 -674
  6. package/README.md +17 -41
  7. package/README_EN.md +14 -39
  8. package/SECURITY.md +9 -0
  9. package/_config.yml +235 -264
  10. package/languages/{en-US.yml → en.yml} +3 -5
  11. package/languages/zh-CN.yml +0 -2
  12. package/languages/zh-TW.yml +0 -2
  13. package/layout/404.pug +1 -1
  14. package/layout/includes/body/gadsense.pug +9 -0
  15. package/layout/includes/console.pug +6 -6
  16. package/layout/includes/footer.pug +13 -13
  17. package/layout/includes/inject/body.pug +10 -1
  18. package/layout/includes/inject/head.pug +6 -4
  19. package/layout/includes/mixins/pagination.pug +2 -2
  20. package/layout/includes/nav.pug +2 -2
  21. package/layout/includes/page/album.pug +9 -9
  22. package/layout/includes/page/says.pug +5 -5
  23. package/layout/includes/sidebar.pug +2 -3
  24. package/layout/includes/widgets/aside/asideInfoCard.pug +1 -1
  25. package/layout/includes/widgets/aside/asideNewestPost.pug +1 -1
  26. package/layout/includes/widgets/aside/asideToc.pug +1 -1
  27. package/layout/includes/widgets/aside/asideWebInfo.pug +8 -8
  28. package/layout/includes/widgets/home/banner.pug +1 -1
  29. package/layout/includes/widgets/home/bbTimeList.pug +7 -7
  30. package/layout/includes/widgets/home/categoryBar.pug +5 -4
  31. package/layout/includes/widgets/home/categoryGroup.pug +3 -2
  32. package/layout/includes/widgets/home/postList.pug +11 -5
  33. package/layout/includes/widgets/home/topGroup.pug +1 -1
  34. package/layout/includes/widgets/nav/menu.pug +1 -1
  35. package/layout/includes/widgets/nav/right.pug +6 -6
  36. package/layout/includes/widgets/page/about/award.pug +3 -3
  37. package/layout/includes/widgets/page/about/hobbies.pug +1 -1
  38. package/layout/includes/widgets/page/banner.pug +1 -1
  39. package/layout/includes/widgets/page/equipment/content.pug +1 -1
  40. package/layout/includes/widgets/page/links/banner.pug +3 -3
  41. package/layout/includes/widgets/page/moments/angle.pug +1 -1
  42. package/layout/includes/widgets/post/award.pug +1 -1
  43. package/layout/includes/widgets/post/copyright.pug +1 -1
  44. package/layout/includes/widgets/post/post-ai.pug +1 -1
  45. package/layout/includes/widgets/post/postMeta.pug +12 -12
  46. package/layout/includes/widgets/rightside/index.pug +25 -25
  47. package/layout/includes/widgets/third-party/comments/comment.pug +1 -1
  48. package/layout/includes/widgets/third-party/music.pug +1 -1
  49. package/layout/includes/widgets/third-party/search/algolia-search.pug +2 -2
  50. package/layout/includes/widgets/third-party/search/local-search.pug +1 -1
  51. package/layout/index.pug +2 -2
  52. package/package.json +9 -9
  53. package/plugins.yml +8 -12
  54. package/scripts/event/cdn.js +10 -0
  55. package/scripts/event/welcome.js +1 -1
  56. package/scripts/filter/lazyload.js +2 -3
  57. package/scripts/helper/related_post.js +1 -1
  58. package/scripts/helper/stylus.js +11 -3
  59. package/scripts/tags/card.js +1 -1
  60. package/scripts/tags/mermaid.js +9 -0
  61. package/scripts/tags/tabs.js +2 -2
  62. package/source/css/_global/animation.styl +1 -1
  63. package/source/css/_global/index.styl +27 -27
  64. package/source/css/_layout/basic.styl +18 -18
  65. package/source/css/_layout/header.styl +67 -67
  66. package/source/css/_layout/index.styl +14 -14
  67. package/source/css/_mode/index.styl +88 -88
  68. package/source/css/_page/_about/author.styl +5 -5
  69. package/source/css/_page/_about/buff.styl +1 -1
  70. package/source/css/_page/_about/careers.styl +1 -1
  71. package/source/css/_page/_about/contentinfo.styl +2 -2
  72. package/source/css/_page/_about/game.styl +2 -2
  73. package/source/css/_page/_about/like.styl +2 -2
  74. package/source/css/_page/_about/myphoto.styl +1 -1
  75. package/source/css/_page/_about/oneself.styl +2 -2
  76. package/source/css/_page/_about/reward.styl +11 -11
  77. package/source/css/_page/_about/skills.styl +2 -2
  78. package/source/css/_page/_about/statistic.styl +4 -4
  79. package/source/css/_page/_about/tenyear.styl +4 -4
  80. package/source/css/_page/_gallery/index.styl +7 -7
  81. package/source/css/_page/_home/category-bar.styl +11 -8
  82. package/source/css/_page/_home/home-top.styl +16 -16
  83. package/source/css/_page/_home/index.styl +1 -1
  84. package/source/css/_page/_home/pagination.styl +22 -22
  85. package/source/css/_page/_home/recent-post.styl +22 -15
  86. package/source/css/_page/category.styl +11 -11
  87. package/source/css/_page/douban.styl +10 -10
  88. package/source/css/_page/equipment.styl +10 -10
  89. package/source/css/_page/error.styl +3 -3
  90. package/source/css/_page/google.styl +32 -0
  91. package/source/css/_page/index.styl +4 -1
  92. package/source/css/_page/links.styl +27 -27
  93. package/source/css/_page/moment.styl +22 -22
  94. package/source/css/_page/music.styl +16 -14
  95. package/source/css/_page/says.styl +21 -21
  96. package/source/css/_page/share.styl +25 -25
  97. package/source/css/_page/tag.styl +12 -12
  98. package/source/css/_widgets/_aside/allinfo.styl +12 -12
  99. package/source/css/_widgets/_aside/flip.styl +3 -6
  100. package/source/css/_widgets/_aside/index.styl +4 -4
  101. package/source/css/_widgets/_aside/info.styl +27 -27
  102. package/source/css/_widgets/_aside/newPost.styl +5 -5
  103. package/source/css/_widgets/_aside/toc.styl +7 -7
  104. package/source/css/_widgets/_comment/index.styl +7 -7
  105. package/source/css/_widgets/_comment/twikoo.styl +66 -50
  106. package/source/css/_widgets/_comment/waline.styl +45 -44
  107. package/source/css/_widgets/_extra/console.styl +30 -29
  108. package/source/css/_widgets/_extra/fullpage.styl +1 -1
  109. package/source/css/_widgets/_extra/music.styl +11 -11
  110. package/source/css/_widgets/_extra/pace.styl +2 -2
  111. package/source/css/_widgets/_extra/rightmenu.styl +8 -8
  112. package/source/css/_widgets/_mixins/article-sort.styl +7 -7
  113. package/source/css/_widgets/_mixins/footer.styl +31 -29
  114. package/source/css/_widgets/_mixins/keyboard.styl +8 -8
  115. package/source/css/_widgets/_mixins/other.styl +4 -4
  116. package/source/css/_widgets/_mixins/sidebar.styl +20 -20
  117. package/source/css/_widgets/_post/_highlight/index.styl +16 -16
  118. package/source/css/_widgets/_post/_highlight/theme/default.styl +1 -1
  119. package/source/css/_widgets/_post/_highlight/theme/mac.styl +1 -1
  120. package/source/css/_widgets/_post/commentBarrage.styl +13 -13
  121. package/source/css/_widgets/_post/content.styl +27 -26
  122. package/source/css/_widgets/_post/copyright.styl +11 -11
  123. package/source/css/_widgets/_post/meta.styl +27 -27
  124. package/source/css/_widgets/_post/pagination.styl +13 -13
  125. package/source/css/_widgets/_post/postAI.styl +18 -18
  126. package/source/css/_widgets/_post/relatedPost.styl +8 -8
  127. package/source/css/_widgets/_post/tools.styl +30 -30
  128. package/source/css/_widgets/_search/algolia-search.styl +18 -18
  129. package/source/css/_widgets/_search/local-search.styl +22 -22
  130. package/source/css/_widgets/_tags/button.styl +1 -1
  131. package/source/css/_widgets/_tags/card.styl +12 -12
  132. package/source/css/_widgets/_tags/fold.styl +11 -11
  133. package/source/css/_widgets/_tags/index.styl +26 -26
  134. package/source/css/_widgets/_tags/link.styl +10 -9
  135. package/source/css/_widgets/_tags/mermaid.styl +4 -0
  136. package/source/css/_widgets/_tags/note.styl +2 -2
  137. package/source/css/_widgets/_tags/tabs.styl +10 -10
  138. package/source/css/_widgets/_tags/timeline.styl +5 -5
  139. package/source/img/logo.png +0 -0
  140. package/source/js/comment/twikoo_commentBarrage.js +1 -1
  141. package/source/js/comment/waline_commentBarrage.js +1 -1
  142. package/source/js/covercolor/api.js +18 -18
  143. package/source/js/covercolor/local.js +18 -18
  144. package/source/js/main.js +5 -5
  145. package/source/js/music.js +1 -12
  146. package/source/js/sco-ai.min.js +1 -1
  147. package/source/js/search/algolia.js +7 -7
  148. package/source/js/tw_cn.js +2 -2
  149. package/source/js/universe.min.js +5 -0
  150. package/source/js/utils.js +2 -2
  151. package/source/js/waterfall.min.js +1 -0
@@ -3,10 +3,10 @@ const coverColor = () => {
3
3
  if (path) {
4
4
  handleApiColor(path);
5
5
  } else {
6
- document.documentElement.style.setProperty('--sco-main', 'var(--sco-theme)');
7
- document.documentElement.style.setProperty('--sco-main-op', 'var(--sco-theme-op)');
8
- document.documentElement.style.setProperty('--sco-main-op-deep', 'var(--sco-theme-op-deep)');
9
- document.documentElement.style.setProperty('--sco-main-none', 'var(--sco-theme-none)');
6
+ document.documentElement.style.setProperty('--st-main', 'var(--st-theme)');
7
+ document.documentElement.style.setProperty('--st-main-op', 'var(--st-theme-op)');
8
+ document.documentElement.style.setProperty('--st-main-op-deep', 'var(--st-theme-op-deep)');
9
+ document.documentElement.style.setProperty('--st-main-none', 'var(--st-theme-none)');
10
10
  initThemeColor()
11
11
  }
12
12
  }
@@ -43,23 +43,23 @@ function img2color(src) {
43
43
 
44
44
  function setThemeColors(value, r = null, g = null, b = null) {
45
45
  if (value) {
46
- document.documentElement.style.setProperty('--sco-main', value);
47
- document.documentElement.style.setProperty('--sco-main-op', value + '23');
48
- document.documentElement.style.setProperty('--sco-main-op-deep', value + 'dd');
49
- document.documentElement.style.setProperty('--sco-main-none', value + '00');
46
+ document.documentElement.style.setProperty('--st-main', value);
47
+ document.documentElement.style.setProperty('--st-main-op', value + '23');
48
+ document.documentElement.style.setProperty('--st-main-op-deep', value + 'dd');
49
+ document.documentElement.style.setProperty('--st-main-none', value + '00');
50
50
 
51
51
  if (r && g && b) {
52
52
  let brightness = Math.round(((parseInt(r) * 299) + (parseInt(g) * 587) + (parseInt(b) * 114)) / 1000);
53
53
  if (brightness < 125) {
54
54
  let cardContents = document.getElementsByClassName('card-content');
55
55
  for (let i = 0; i < cardContents.length; i++) {
56
- cardContents[i].style.setProperty('--sco-card-bg', 'var(--sco-white)');
56
+ cardContents[i].style.setProperty('--st-card-bg', 'var(--st-white)');
57
57
  }
58
58
 
59
59
  let authorInfo = document.getElementsByClassName('author-info__sayhi');
60
60
  for (let i = 0; i < authorInfo.length; i++) {
61
- authorInfo[i].style.setProperty('background', 'var(--sco-white-op)');
62
- authorInfo[i].style.setProperty('color', 'var(--sco-white)');
61
+ authorInfo[i].style.setProperty('background', 'var(--st-white-op)');
62
+ authorInfo[i].style.setProperty('color', 'var(--st-white)');
63
63
  }
64
64
  }
65
65
  }
@@ -67,10 +67,10 @@ function setThemeColors(value, r = null, g = null, b = null) {
67
67
  document.getElementById("coverdiv").classList.add("loaded");
68
68
  initThemeColor();
69
69
  } else {
70
- document.documentElement.style.setProperty('--sco-main', 'var(--sco-theme)');
71
- document.documentElement.style.setProperty('--sco-main-op', 'var(--sco-theme-op)');
72
- document.documentElement.style.setProperty('--sco-main-op-deep', 'var(--sco-theme-op-deep)');
73
- document.documentElement.style.setProperty('--sco-main-none', 'var(--sco-theme-none)');
70
+ document.documentElement.style.setProperty('--st-main', 'var(--st-theme)');
71
+ document.documentElement.style.setProperty('--st-main-op', 'var(--st-theme-op)');
72
+ document.documentElement.style.setProperty('--st-main-op-deep', 'var(--st-theme-op-deep)');
73
+ document.documentElement.style.setProperty('--st-main-none', 'var(--st-theme-none)');
74
74
  initThemeColor();
75
75
  }
76
76
  }
@@ -79,11 +79,11 @@ function initThemeColor() {
79
79
  const currentTop = window.scrollY || document.documentElement.scrollTop;
80
80
  let themeColor;
81
81
  if (currentTop > 0) {
82
- themeColor = getComputedStyle(document.documentElement).getPropertyValue('--sco-card-bg');
82
+ themeColor = getComputedStyle(document.documentElement).getPropertyValue('--st-card-bg');
83
83
  } else if (PAGE_CONFIG.is_post) {
84
- themeColor = getComputedStyle(document.documentElement).getPropertyValue('--sco-main');
84
+ themeColor = getComputedStyle(document.documentElement).getPropertyValue('--st-main');
85
85
  } else {
86
- themeColor = getComputedStyle(document.documentElement).getPropertyValue('--sco-background');
86
+ themeColor = getComputedStyle(document.documentElement).getPropertyValue('--st-background');
87
87
  }
88
88
  changeThemeColor(themeColor);
89
89
  }
@@ -3,10 +3,10 @@ const coverColor = () => {
3
3
  if (path) {
4
4
  localColor(path);
5
5
  } else {
6
- document.documentElement.style.setProperty('--sco-main', 'var(--sco-theme)');
7
- document.documentElement.style.setProperty('--sco-main-op', 'var(--sco-theme-op)');
8
- document.documentElement.style.setProperty('--sco-main-op-deep', 'var(--sco-theme-op-deep)');
9
- document.documentElement.style.setProperty('--sco-main-none', 'var(--sco-theme-none)');
6
+ document.documentElement.style.setProperty('--st-main', 'var(--st-theme)');
7
+ document.documentElement.style.setProperty('--st-main-op', 'var(--st-theme-op)');
8
+ document.documentElement.style.setProperty('--st-main-op-deep', 'var(--st-theme-op-deep)');
9
+ document.documentElement.style.setProperty('--st-main-none', 'var(--st-theme-none)');
10
10
  initThemeColor()
11
11
  }
12
12
  }
@@ -108,23 +108,23 @@ function colorRgb(str) {
108
108
 
109
109
  function setThemeColors(value, r = null, g = null, b = null) {
110
110
  if (value) {
111
- document.documentElement.style.setProperty('--sco-main', value);
112
- document.documentElement.style.setProperty('--sco-main-op', value + '23');
113
- document.documentElement.style.setProperty('--sco-main-op-deep', value + 'dd');
114
- document.documentElement.style.setProperty('--sco-main-none', value + '00');
111
+ document.documentElement.style.setProperty('--st-main', value);
112
+ document.documentElement.style.setProperty('--st-main-op', value + '23');
113
+ document.documentElement.style.setProperty('--st-main-op-deep', value + 'dd');
114
+ document.documentElement.style.setProperty('--st-main-none', value + '00');
115
115
 
116
116
  if (r && g && b) {
117
117
  let brightness = Math.round(((parseInt(r) * 299) + (parseInt(g) * 587) + (parseInt(b) * 114)) / 1000);
118
118
  if (brightness < 125) {
119
119
  let cardContents = document.getElementsByClassName('card-content');
120
120
  for (let i = 0; i < cardContents.length; i++) {
121
- cardContents[i].style.setProperty('--sco-card-bg', 'var(--sco-white)');
121
+ cardContents[i].style.setProperty('--st-card-bg', 'var(--st-white)');
122
122
  }
123
123
 
124
124
  let authorInfo = document.getElementsByClassName('author-info__sayhi');
125
125
  for (let i = 0; i < authorInfo.length; i++) {
126
- authorInfo[i].style.setProperty('background', 'var(--sco-white-op)');
127
- authorInfo[i].style.setProperty('color', 'var(--sco-white)');
126
+ authorInfo[i].style.setProperty('background', 'var(--st-white-op)');
127
+ authorInfo[i].style.setProperty('color', 'var(--st-white)');
128
128
  }
129
129
  }
130
130
  }
@@ -132,10 +132,10 @@ function setThemeColors(value, r = null, g = null, b = null) {
132
132
  document.getElementById("coverdiv").classList.add("loaded");
133
133
  initThemeColor();
134
134
  } else {
135
- document.documentElement.style.setProperty('--sco-main', 'var(--sco-theme)');
136
- document.documentElement.style.setProperty('--sco-main-op', 'var(--sco-theme-op)');
137
- document.documentElement.style.setProperty('--sco-main-op-deep', 'var(--sco-theme-op-deep)');
138
- document.documentElement.style.setProperty('--sco-main-none', 'var(--sco-theme-none)');
135
+ document.documentElement.style.setProperty('--st-main', 'var(--st-theme)');
136
+ document.documentElement.style.setProperty('--st-main-op', 'var(--st-theme-op)');
137
+ document.documentElement.style.setProperty('--st-main-op-deep', 'var(--st-theme-op-deep)');
138
+ document.documentElement.style.setProperty('--st-main-none', 'var(--st-theme-none)');
139
139
  initThemeColor();
140
140
  }
141
141
  }
@@ -144,11 +144,11 @@ function initThemeColor() {
144
144
  const currentTop = window.scrollY || document.documentElement.scrollTop;
145
145
  let themeColor;
146
146
  if (currentTop > 0) {
147
- themeColor = getComputedStyle(document.documentElement).getPropertyValue('--sco-card-bg');
147
+ themeColor = getComputedStyle(document.documentElement).getPropertyValue('--st-card-bg');
148
148
  } else if (PAGE_CONFIG.is_post) {
149
- themeColor = getComputedStyle(document.documentElement).getPropertyValue('--sco-main');
149
+ themeColor = getComputedStyle(document.documentElement).getPropertyValue('--st-main');
150
150
  } else {
151
- themeColor = getComputedStyle(document.documentElement).getPropertyValue('--sco-background');
151
+ themeColor = getComputedStyle(document.documentElement).getPropertyValue('--st-background');
152
152
  }
153
153
  changeThemeColor(themeColor);
154
154
  }
package/source/js/main.js CHANGED
@@ -440,10 +440,10 @@ let sco = {
440
440
  $console.classList.toggle("on", wleelw_musicPlaying);
441
441
  if (wleelw_musicPlaying) {
442
442
  $meting.aplayer.play();
443
- $toggleButton.innerHTML = `<i class="scoicon sco-pause-fill"></i><span>暂停音乐</span>`;
443
+ $toggleButton.innerHTML = `<i class="solitude st-pause-fill"></i><span>暂停音乐</span>`;
444
444
  } else {
445
445
  $meting.aplayer.pause();
446
- $toggleButton.innerHTML = `<i class="scoicon sco-play-fill"></i><span>播放音乐</span>`;
446
+ $toggleButton.innerHTML = `<i class="solitude st-play-fill"></i><span>播放音乐</span>`;
447
447
  }
448
448
  rm.hideRightMenu();
449
449
  },
@@ -691,8 +691,8 @@ let sco = {
691
691
  class hightlight {
692
692
  static createEle(langEl, item) {
693
693
  const fragment = document.createDocumentFragment()
694
- const highlightCopyEle = GLOBAL_CONFIG.hightlight.copy ? '<i class="scoicon sco-copy-fill"></i>' : '<i></i>'
695
- const highlightExpandEle = '<i class="scoicon sco-arrow-down expand"></i>'
694
+ const highlightCopyEle = GLOBAL_CONFIG.hightlight.copy ? '<i class="solitude st-copy-fill"></i>' : '<i></i>'
695
+ const highlightExpandEle = '<i class="solitude st-arrow-down expand"></i>'
696
696
 
697
697
  const hlTools = document.createElement('div')
698
698
  hlTools.className = `highlight-tools`
@@ -729,7 +729,7 @@ class hightlight {
729
729
  if (GLOBAL_CONFIG.hightlight.limit && itemHeight > GLOBAL_CONFIG.hightlight.limit) {
730
730
  $table.setAttribute('style', `height: ${GLOBAL_CONFIG.hightlight.limit}px`)
731
731
  ele.className = 'code-expand-btn'
732
- ele.innerHTML = '<i class="scoicon sco-show-line"></i>'
732
+ ele.innerHTML = '<i class="solitude st-show-line"></i>'
733
733
  ele.addEventListener('click', (e) => {
734
734
  $table.setAttribute('style', `height: ${itemHeight}px`)
735
735
  e.target.classList.add('expand-done')
@@ -41,18 +41,6 @@ const scoMusic = {
41
41
  aplayerLrcContents.style.transform = `translateY(${translateYValue}px)`;
42
42
  }
43
43
  },
44
- buttonlist: () => {
45
- const aplayerList = document.querySelector(".aplayer-list");
46
- if (aplayerList) {
47
- document.querySelector(".aplayer-lrc").addEventListener("click", () => {
48
- if (aplayerList.classList.contains("aplayer-list-hide")) {
49
- aplayerList.classList.remove("aplayer-list-hide");
50
- } else {
51
- aplayerList.classList.add("aplayer-list-hide");
52
- }
53
- });
54
- }
55
- },
56
44
  extractValue: (input) => {
57
45
  const valueRegex = /\("([^\s]+)"\)/g;
58
46
  const match = valueRegex.exec(input);
@@ -160,6 +148,7 @@ const scoMusic = {
160
148
  document.documentElement.style.setProperty('--vh', `${vh}px`);
161
149
  scoMusic.getCustomPlayList();
162
150
  document.addEventListener("keydown", scoMusic.setKeydown);
151
+ scoMusic.buttonlist();
163
152
  }
164
153
  };
165
154
 
@@ -5,4 +5,4 @@
5
5
  * @author 王卓Sco
6
6
  * @license GNU General Public License v3.0
7
7
  */
8
- var ScoAI={root:"https://summary.tianli0.top",aiTalkMode:!1,aiPostExplanation:"",config:GLOBAL_CONFIG.ai,init(){this.scoGPTIsRunning=!1,this.generate(),this.AIEngine()},getTitleAndContent(){const e=document.title,t=document.getElementById("article-container"),n=t.getElementsByTagName("p"),o=t.querySelectorAll("h1, h2, h3, h4, h5");let i="";for(let e of o)i+=e.innerText+" ";for(let e of n)i+=e.innerText.replace(/https?:\/\/[^\s]+/g,"");return(e+" "+i).slice(0,1e3)},generate(){this.aiShowAnimation(this.fetch(this.getTitleAndContent(),this.config.key))},async fetch(e, t){const n=`${this.root}/?content=${encodeURIComponent(e)}&key=${encodeURIComponent(t)}&url=${encodeURIComponent(window.location.href)}`;try{const e=new AbortController,t=await fetch(n,{signal:e.signal});if(t.ok){const e=await t.json();return this.aiPostExplanation=e.summary,e.summary}throw Error("Request failed")}catch(e){return"AbortError"===e.name?console.error("Request timed out"):console.error("Request failed:",e),"获取文章摘要超时。当你出现这个问题时,可能是因为文章过长导致的AI运算量过大, 您可以稍等一下然后重新尝试。"}},aiShowAnimation(e, t=!1){const n=document.querySelector(".ai-explanation"),o=document.querySelector(".ai-tag");if(!n||this.scoGPTIsRunning)return;this.scoGPTIsRunning=!0,this.cleanSuggestions(),o.classList.add("loadingAI"),n.style.display="block",n.innerHTML='生成中...<span class="blinking-cursor"></span>';let i,s,r=!0,a=0,c=!0;const l=new IntersectionObserver((e=>{r=e[0].isIntersecting,r&&requestAnimationFrame(s)}),{threshold:0});e.then((e=>{i=performance.now(),s=()=>{if(a<e.length&&r){const c=performance.now(),g=c-i,d=e.slice(a,a+1),h=/[,。!、?,.!?]/.test(d),u=/[a-zA-Z0-9]/.test(d);g>=(h?100*Math.random()+100:u?10:25)&&(n.innerText=e.slice(0,a+1),i=c,a++,a<e.length?n.innerHTML=e.slice(0,a)+'<span class="blinking-cursor"></span>':(n.innerHTML=e,n.style.display="block",this.scoGPTIsRunning=!1,o.classList.remove("loadingAI"),l.disconnect(),t&&this.createSuggestions())),r&&requestAnimationFrame(s)}},r&&c&&setTimeout((()=>{requestAnimationFrame(s),c=!1}),3e3),l.observe(n)})).catch((e=>{console.error("检索信息失败:",e),n.innerHTML="检索信息失败",n.style.display="block",this.scoGPTIsRunning=!1,o.classList.remove("loadingAI"),l.disconnect()}))},AIEngine(){const e=document.querySelector(".ai-tag");e&&e.addEventListener("click",(()=>{this.scoGPTIsRunning||(this.aiTalkMode=!0,this.aiShowAnimation(Promise.resolve(this.config.talk),!0))}))},cleanSuggestions(){const e=document.querySelector(".ai-suggestions");e?e.innerHTML="":console.error("没有这个元素:'ai-suggestions'")},createSuggestions(){this.aiTalkMode&&this.cleanSuggestions(),this.createSuggestionItemWithAction("这篇文章讲了什么?",(()=>{this.aiShowAnimation(Promise.resolve(this.aiPostExplanation),!0)})),this.config.randomPost&&this.createSuggestionItemWithAction("带我去看看其他文章",(()=>toRandomPost())),this.aiTalkMode=!0},createSuggestionItemWithAction(e, t){const n=document.querySelector(".ai-suggestions");if(!n)return void console.error("无法找到具有class为ai-suggestions的元素");const o=document.createElement("div");o.classList.add("ai-suggestions-item"),o.textContent=e,o.addEventListener("click",t),n.appendChild(o)}};console.log("%c🤖 程序:ScoAI | Solitude 主题内置 | Github: https://github.com/DuoSco/Hexo-theme-solitude","color: #fff; background: linear-gradient(-25deg, #a8edea, #fed6e3); padding: 8px 15px; border-radius: 8px; text-shadow: 2px 2px 4px white; color: black;");
8
+ var ScoAI={root:"https://summary.tianli0.top",aiTalkMode:!1,aiPostExplanation:"",config:GLOBAL_CONFIG.ai,init(){this.scoGPTIsRunning=!1,this.generate(),this.AIEngine()},getTitleAndContent(){const e=document.title,t=document.getElementById("article-container"),n=t.getElementsByTagName("p"),o=t.querySelectorAll("h1, h2, h3, h4, h5");let i="";for(let e of o)i+=e.innerText+" ";for(let e of n)i+=e.innerText.replace(/https?:\/\/[^\s]+/g,"");return(e+" "+i).slice(0,1e3)},generate(){this.aiShowAnimation(this.fetch(this.getTitleAndContent(),this.config.key))},async fetch(e, t){const n=`${this.root}/?content=${encodeURIComponent(e)}&key=${encodeURIComponent(t)}&url=${encodeURIComponent(window.location.href)}`;try{const e=new AbortController,t=await fetch(n,{signal:e.signal});if(t.ok){const e=await t.json();return this.aiPostExplanation=e.summary,e.summary}throw Error("Request failed")}catch(e){return"AbortError"===e.name?console.error("Request timed out"):console.error("Request failed:",e),"获取文章摘要超时。当你出现这个问题时,可能是因为文章过长导致的AI运算量过大, 您可以稍等一下然后重新尝试。"}},aiShowAnimation(e, t=!1){const n=document.querySelector(".ai-explanation"),o=document.querySelector(".ai-tag");if(!n||this.scoGPTIsRunning)return;this.scoGPTIsRunning=!0,this.cleanSuggestions(),o.classList.add("loadingAI"),n.style.display="block",n.innerHTML='生成中...<span class="blinking-cursor"></span>';let i,s,r=!0,a=0,c=!0;const l=new IntersectionObserver((e=>{r=e[0].isIntersecting,r&&requestAnimationFrame(s)}),{threshold:0});e.then((e=>{i=performance.now(),s=()=>{if(a<e.length&&r){const c=performance.now(),g=c-i,d=e.slice(a,a+1),h=/[,。!、?,.!?]/.test(d),u=/[a-zA-Z0-9]/.test(d);g>=(h?100*Math.random()+100:u?10:25)&&(n.innerText=e.slice(0,a+1),i=c,a++,a<e.length?n.innerHTML=e.slice(0,a)+'<span class="blinking-cursor"></span>':(n.innerHTML=e,n.style.display="block",this.scoGPTIsRunning=!1,o.classList.remove("loadingAI"),l.disconnect(),t&&this.createSuggestions())),r&&requestAnimationFrame(s)}},r&&c&&setTimeout((()=>{requestAnimationFrame(s),c=!1}),3e3),l.observe(n)})).catch((e=>{console.error("检索信息失败:",e),n.innerHTML="检索信息失败",n.style.display="block",this.scoGPTIsRunning=!1,o.classList.remove("loadingAI"),l.disconnect()}))},AIEngine(){const e=document.querySelector(".ai-tag");e&&e.addEventListener("click",(()=>{this.scoGPTIsRunning||(this.aiTalkMode=!0,this.aiShowAnimation(Promise.resolve(this.config.talk),!0))}))},cleanSuggestions(){const e=document.querySelector(".ai-suggestions");e?e.innerHTML="":console.error("没有这个元素:'ai-suggestions'")},createSuggestions(){this.aiTalkMode&&this.cleanSuggestions(),this.createSuggestionItemWithAction("这篇文章讲了什么?",(()=>{this.aiShowAnimation(Promise.resolve(this.aiPostExplanation),!0)})),this.config.randomPost&&this.createSuggestionItemWithAction("带我去看看其他文章",(()=>toRandomPost())),this.aiTalkMode=!0},createSuggestionItemWithAction(e, t){const n=document.querySelector(".ai-suggestions");if(!n)return void console.error("无法找到具有class为ai-suggestions的元素");const o=document.createElement("div");o.classList.add("ai-suggestions-item"),o.textContent=e,o.addEventListener("click",t),n.appendChild(o)}};
@@ -60,7 +60,7 @@ window.addEventListener("load", () => {
60
60
  searchClient: algoliasearch(algolia.appId, algolia.apiKey),
61
61
  searchFunction(helper) {
62
62
  if (helper.state.query) {
63
- let innerLoading = '<i class="scoicon sco-loading-line sco-spin"></i>';
63
+ let innerLoading = '<i class="solitude st-loading-line st-spin"></i>';
64
64
  document.getElementById("algolia-hits").innerHTML = innerLoading;
65
65
  helper.search();
66
66
  }
@@ -87,7 +87,7 @@ window.addEventListener("load", () => {
87
87
  item(data) {
88
88
  const link = data.permalink ? data.permalink : GLOBAL_CONFIG.root + data.path;
89
89
  const result = data._highlightResult;
90
- const loadingLogo = document.querySelector("#algolia-hits .sco-spin");
90
+ const loadingLogo = document.querySelector("#algolia-hits .st-spin");
91
91
  if (loadingLogo) {
92
92
  loadingLogo.style.display = "none";
93
93
  }
@@ -100,7 +100,7 @@ window.addEventListener("load", () => {
100
100
  </a>`;
101
101
  },
102
102
  empty: function (data) {
103
- const loadingLogo = document.querySelector("#algolia-hits .sco-spin");
103
+ const loadingLogo = document.querySelector("#algolia-hits .st-spin");
104
104
  if (loadingLogo) {
105
105
  loadingLogo.style.display = "none";
106
106
  }
@@ -125,10 +125,10 @@ window.addEventListener("load", () => {
125
125
  scrollTo: false,
126
126
  showFirstLast: false,
127
127
  templates: {
128
- first: '<i class="scoicon sco-show-left-line"></i>',
129
- last: '<i class="scoicon sco-show-right-line"></i>',
130
- previous: '<i class="scoicon sco-arrow-left-bold"></i>',
131
- next: '<i class="scoicon sco-arrow-right-bold"></i>',
128
+ first: '<i class="solitude st-show-left-line"></i>',
129
+ last: '<i class="solitude st-show-right-line"></i>',
130
+ previous: '<i class="solitude st-arrow-left-bold"></i>',
131
+ next: '<i class="solitude st-arrow-right-bold"></i>',
132
132
  },
133
133
  cssClasses: {
134
134
  root: "pagination",
@@ -2,8 +2,8 @@ document.addEventListener('DOMContentLoaded', function () {
2
2
  const {translate, lang} = GLOBAL_CONFIG;
3
3
  const {defaultEncoding, translateDelay} = translate;
4
4
  const snackbarData = lang.chs;
5
- const msgToTraditionalChinese = '<i class="scoicon sco-panben-line"></i><span>轉為繁體</span>';
6
- const msgToSimplifiedChinese = '<i class="scoicon sco-jianben-line"></i><span>转为简体</span>';
5
+ const msgToTraditionalChinese = '<i class="solitude st-panben-line"></i><span>轉為繁體</span>';
6
+ const msgToSimplifiedChinese = '<i class="solitude st-jianben-line"></i><span>转为简体</span>';
7
7
  const targetEncodingCookie = 'translate-chn-cht';
8
8
  const isSnackbar = true;
9
9
  let currentEncoding = defaultEncoding;
@@ -0,0 +1,5 @@
1
+ /**
2
+ * author: Leonus
3
+ * email: 990320751@qq.com
4
+ */
5
+ function dark(){window.requestAnimationFrame=window.requestAnimationFrame||window.mozRequestAnimationFrame||window.webkitRequestAnimationFrame||window.msRequestAnimationFrame;var t,i,e,s,n=.05,h=document.getElementById("universe"),a=!0,o="226,225,224",r=[];function d(){t=window.innerWidth,i=window.innerHeight,e=.216*t,h.setAttribute("width",t),h.setAttribute("height",i)}function c(){s.clearRect(0,0,t,i);for(var e=r.length,n=0;n<e;n++){var h=r[n];h.move(),h.fadeIn(),h.fadeOut(),h.draw()}}function f(){this.reset=function(){this.giant=u(3),this.comet=!this.giant&&!a&&u(10),this.x=m(0,t-10),this.y=m(0,i),this.r=m(1.1,2.6),this.dx=m(n,6*n)+(this.comet+1-1)*n*m(50,120)+.1,this.dy=-m(n,6*n)-(this.comet+1-1)*n*m(50,120),this.fadingOut=null,this.fadingIn=!0,this.opacity=0,this.opacityTresh=m(.2,1-.4*(this.comet+1-1)),this.do=m(5e-4,.002)+.001*(this.comet+1-1)},this.fadeIn=function(){this.fadingIn&&(this.fadingIn=!(this.opacity>this.opacityTresh),this.opacity+=this.do)},this.fadeOut=function(){this.fadingOut&&(this.fadingOut=!(this.opacity<0),this.opacity-=this.do/2,(this.x>t||this.y<0)&&(this.fadingOut=!1,this.reset()))},this.draw=function(){if(s.beginPath(),this.giant)s.fillStyle="rgba(180,184,240,"+this.opacity+")",s.arc(this.x,this.y,2,0,2*Math.PI,!1);else if(this.comet){s.fillStyle="rgba("+o+","+this.opacity+")",s.arc(this.x,this.y,1.5,0,2*Math.PI,!1);for(var t=0;t<30;t++)s.fillStyle="rgba("+o+","+(this.opacity-this.opacity/20*t)+")",s.rect(this.x-this.dx/4*t,this.y-this.dy/4*t-2,2,2),s.fill()}else s.fillStyle="rgba(226,225,142,"+this.opacity+")",s.rect(this.x,this.y,this.r,this.r);s.closePath(),s.fill()},this.move=function(){this.x+=this.dx,this.y+=this.dy,!1===this.fadingOut&&this.reset(),(this.x>t-t/4||this.y<0)&&(this.fadingOut=!0)},setTimeout((function(){a=!1}),50)}function u(t){return Math.floor(1e3*Math.random())+1<10*t}function m(t,i){return Math.random()*(i-t)+t}d(),window.addEventListener("resize",d,!1),function(){s=h.getContext("2d");for(var t=0;t<e;t++)r[t]=new f,r[t].reset();c()}(),function t(){"dark"==document.getElementsByTagName("html")[0].getAttribute("data-theme")&&c(),window.requestAnimationFrame(t)}()}
@@ -70,7 +70,7 @@ const utils = {
70
70
  snackbarShow: (text, showAction, duration) => {
71
71
  const sa = (typeof showAction !== 'undefined') ? showAction : false
72
72
  const dur = (typeof duration !== 'undefined') ? duration : 5000
73
- document.styleSheets[0].addRule(':root', '--sco-snackbar-time:' + dur + 'ms!important')
73
+ document.styleSheets[0].addRule(':root', '--st-snackbar-time:' + dur + 'ms!important')
74
74
  Snackbar.show({
75
75
  text: text, showAction: sa, duration: dur, pos: 'top-center'
76
76
  })
@@ -185,7 +185,7 @@ const utils = {
185
185
  const lightbox = GLOBAL_CONFIG.lightbox
186
186
 
187
187
  if (lightbox === 'mediumZoom' && mediumZoom) {
188
- mediumZoom(selector, {background: "var(--sco-card-bg)"});
188
+ mediumZoom(selector, {background: "var(--st-card-bg)"});
189
189
  }
190
190
 
191
191
  if (lightbox === 'fancybox') {
@@ -0,0 +1 @@
1
+ function waterfall(a){function b(a,b){var c=window.getComputedStyle(b);return parseFloat(c["margin"+a])||0}function c(a){return a+"px"}function d(a){return parseFloat(a.style.top)}function e(a){return parseFloat(a.style.left)}function f(a){return a.clientWidth}function g(a){return a.clientHeight}function h(a){return d(a)+g(a)+b("Bottom",a)}function i(a){return e(a)+f(a)+b("Right",a)}function j(a){a=a.sort(function(a,b){return h(a)===h(b)?e(b)-e(a):h(b)-h(a)})}function k(b){f(a)!=t&&(b.target.removeEventListener(b.type,arguments.callee),waterfall(a))}"string"==typeof a&&(a=document.querySelector(a));var l=[].map.call(a.children,function(a){return a.style.position="absolute",a});a.style.position="relative";var m=[];l.length&&(l[0].style.top="0px",l[0].style.left=c(b("Left",l[0])),m.push(l[0]));for(var n=1;n<l.length;n++){var o=l[n-1],p=l[n],q=i(o)+f(p)<=f(a);if(!q)break;p.style.top=o.style.top,p.style.left=c(i(o)+b("Left",p)),m.push(p)}for(;n<l.length;n++){j(m);var p=l[n],r=m.pop();p.style.top=c(h(r)+b("Top",p)),p.style.left=c(e(r)),m.push(p)}j(m);var s=m[0];a.style.height=c(h(s)+b("Bottom",s));var t=f(a);window.addEventListener?window.addEventListener("resize",k):document.body.onresize=k}