hexo-theme-volantis 4.3.1 → 5.0.0-alpha.112

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 (309) hide show
  1. package/README.md +6 -4
  2. package/_config.yml +599 -246
  3. package/languages/en.yml +7 -0
  4. package/languages/zh-CN.yml +13 -2
  5. package/languages/zh-TW.yml +7 -0
  6. package/layout/404.ejs +1 -1
  7. package/layout/_meta/author.ejs +4 -4
  8. package/layout/_meta/category.ejs +11 -8
  9. package/layout/_meta/counter.ejs +29 -7
  10. package/layout/_meta/date.ejs +1 -1
  11. package/layout/_meta/music.ejs +1 -1
  12. package/layout/_meta/share.ejs +1 -1
  13. package/layout/_meta/tags.ejs +3 -0
  14. package/layout/_meta/thumbnail.ejs +3 -1
  15. package/layout/_meta/updated.ejs +1 -1
  16. package/layout/_meta/walinecount.ejs +2 -1
  17. package/layout/{_cover → _partial/_cover}/blank.ejs +0 -0
  18. package/layout/{_cover → _partial/_cover}/dock.ejs +1 -1
  19. package/layout/{_cover → _partial/_cover}/featured.ejs +1 -1
  20. package/layout/{_cover → _partial/_cover}/focus.ejs +1 -1
  21. package/layout/_partial/_cover/layout.ejs +8 -0
  22. package/layout/{_cover → _partial/_cover}/search.ejs +2 -2
  23. package/layout/_partial/archive.ejs +2 -2
  24. package/layout/_partial/article.ejs +21 -16
  25. package/layout/_partial/categories.ejs +1 -1
  26. package/layout/_partial/cover.ejs +8 -28
  27. package/layout/_partial/footer.ejs +19 -11
  28. package/layout/_partial/head.ejs +70 -116
  29. package/layout/_partial/header.ejs +17 -11
  30. package/layout/_partial/meta.ejs +18 -4
  31. package/layout/_partial/post.ejs +35 -9
  32. package/layout/_partial/scripts/_ctrl/cdnCtrl.ejs +126 -0
  33. package/layout/_partial/scripts/{coverCtrl.ejs → _ctrl/coverCtrl.ejs} +17 -25
  34. package/layout/_partial/scripts/_ctrl.ejs +2 -0
  35. package/layout/_partial/scripts/content-visibility-scroll-fix.ejs +88 -0
  36. package/layout/_partial/scripts/global.ejs +422 -109
  37. package/layout/_partial/scripts/index.ejs +91 -46
  38. package/layout/_partial/scripts/toc.ejs +98 -68
  39. package/layout/_partial/side.ejs +4 -1
  40. package/layout/_plugins/_page_plugins/artitalk/index.ejs +15 -0
  41. package/layout/_plugins/_page_plugins/bbtalk/index.ejs +10 -0
  42. package/layout/_plugins/_page_plugins/fcircle/index.ejs +12 -0
  43. package/layout/_plugins/_page_plugins/gitter/index.ejs +14 -0
  44. package/layout/_plugins/_page_plugins/indent/index.ejs +16 -0
  45. package/layout/_plugins/_page_plugins/index.ejs +27 -0
  46. package/layout/_plugins/_page_plugins/katex/index.ejs +13 -0
  47. package/layout/{_third-party/math/mathjax/script.ejs → _plugins/_page_plugins/mathjax/index.ejs} +2 -2
  48. package/layout/_plugins/_page_plugins/snackbar/index.ejs +55 -0
  49. package/layout/{_partial/scripts/counter.ejs → _plugins/analytics/LCCounter.ejs} +0 -0
  50. package/layout/{_third-party → _plugins}/analytics/script.ejs +43 -5
  51. package/layout/{_third-party → _plugins}/aplayer/layout.ejs +0 -0
  52. package/layout/_plugins/aplayer/script.ejs +74 -0
  53. package/layout/_plugins/chat/gitter/script.ejs +17 -0
  54. package/layout/_plugins/chat/index.ejs +1 -0
  55. package/layout/_plugins/chat/tidio/script.ejs +1 -0
  56. package/layout/_plugins/comments/artalk/script.ejs +59 -0
  57. package/layout/_plugins/comments/beaudar/script.ejs +61 -0
  58. package/layout/_plugins/comments/discuss/script.ejs +30 -0
  59. package/layout/_plugins/comments/disqus/script.ejs +98 -0
  60. package/layout/_plugins/comments/disqusjs/script.ejs +35 -0
  61. package/layout/_plugins/comments/giscus/script.ejs +47 -0
  62. package/layout/_plugins/comments/gitalk/script.ejs +24 -0
  63. package/layout/_plugins/comments/hashover/script.ejs +5 -0
  64. package/layout/{_third-party → _plugins}/comments/index.ejs +10 -3
  65. package/layout/_plugins/comments/isso/script.ejs +27 -0
  66. package/layout/_plugins/comments/livere/script.ejs +15 -0
  67. package/layout/_plugins/comments/twikoo/script.ejs +40 -0
  68. package/layout/_plugins/comments/utterances/script.ejs +43 -0
  69. package/layout/_plugins/comments/vssue/script.ejs +37 -0
  70. package/layout/_plugins/comments/waline/script.ejs +62 -0
  71. package/layout/_plugins/comments/z-custom/script.ejs +1 -0
  72. package/layout/_plugins/darkmode/script.ejs +114 -0
  73. package/layout/{_third-party → _plugins}/end-of-support/script.ejs +25 -8
  74. package/layout/_plugins/github-api/script.ejs +27 -0
  75. package/layout/_plugins/highlight/highlightjs/script.ejs +26 -0
  76. package/layout/_plugins/highlight/prismjs/script.ejs +25 -0
  77. package/layout/_plugins/highlight/script.ejs +1 -0
  78. package/layout/{_third-party → _plugins}/lazyload/script.ejs +1 -1
  79. package/layout/{_third-party → _plugins}/nodewaves/script.ejs +1 -1
  80. package/layout/_plugins/parallax/script.ejs +74 -0
  81. package/layout/{_third-party → _plugins}/pjax/animate.ejs +31 -31
  82. package/layout/_plugins/pjax/index.ejs +73 -0
  83. package/layout/_plugins/pjax/pdata.ejs +56 -0
  84. package/layout/{_third-party → _plugins}/preload/script.ejs +3 -3
  85. package/layout/_plugins/rightmenu/layout.ejs +119 -0
  86. package/layout/_plugins/rightmenus/layout.ejs +137 -0
  87. package/layout/_plugins/scrollreveal/script.ejs +25 -0
  88. package/layout/_plugins/search/script.ejs +50 -0
  89. package/layout/{_third-party → _plugins}/share/layout.ejs +0 -0
  90. package/layout/_plugins/swiper/script.ejs +37 -0
  91. package/layout/_pre.ejs +2 -2
  92. package/layout/_widget/_pre.ejs +5 -0
  93. package/layout/_widget/blogger.ejs +1 -1
  94. package/layout/_widget/category.ejs +2 -2
  95. package/layout/_widget/copyright.ejs +1 -1
  96. package/layout/_widget/grid.ejs +3 -3
  97. package/layout/_widget/lastupdate.ejs +27 -0
  98. package/layout/_widget/list.ejs +2 -2
  99. package/layout/_widget/load.ejs +18 -0
  100. package/layout/_widget/music.ejs +3 -2
  101. package/layout/_widget/page.ejs +1 -1
  102. package/layout/_widget/qrcode.ejs +1 -1
  103. package/layout/_widget/related_posts.ejs +1 -1
  104. package/layout/_widget/tagcloud.ejs +1 -1
  105. package/layout/_widget/text.ejs +1 -1
  106. package/layout/_widget/toc.ejs +6 -2
  107. package/layout/_widget/webinfo.ejs +13 -76
  108. package/layout/archive.ejs +4 -4
  109. package/layout/category.ejs +9 -4
  110. package/layout/docs.ejs +1 -1
  111. package/layout/friends.ejs +6 -25
  112. package/layout/index.ejs +1 -1
  113. package/layout/layout.ejs +30 -12
  114. package/layout/list.ejs +1 -1
  115. package/layout/page.ejs +1 -1
  116. package/layout/post.ejs +1 -1
  117. package/layout/tag.ejs +8 -3
  118. package/package.json +5 -3
  119. package/scripts/events/index.js +13 -0
  120. package/scripts/events/lib/check-configuration.js +43 -0
  121. package/scripts/events/lib/check-environment.js +74 -0
  122. package/scripts/events/lib/config.js +34 -9
  123. package/scripts/events/lib/render-stylus.js +78 -0
  124. package/scripts/events/lib/stellar-tag-utils.js +76 -0
  125. package/scripts/filters/content-visibility.js +25 -0
  126. package/scripts/{render → filters}/img.js +0 -0
  127. package/scripts/filters/replace.js +15 -0
  128. package/scripts/{z-lazyload/lib/process.js → filters/z-lazyload.js} +6 -3
  129. package/scripts/helpers/custom-files.js +165 -0
  130. package/scripts/helpers/first-style.js +19 -0
  131. package/scripts/helpers/head/autoCanonical.js +15 -0
  132. package/scripts/helpers/head/generate_preload_fontfamily.js +22 -0
  133. package/scripts/helpers/head/generate_seo.js +24 -0
  134. package/scripts/helpers/head/generate_title__keywords__description.js +101 -0
  135. package/scripts/{related_posts/index.js → helpers/related-posts.js} +1 -1
  136. package/scripts/helpers/revisioned.js +158 -0
  137. package/scripts/helpers/structured-data/index.js +2 -0
  138. package/scripts/helpers/structured-data/lib/blogposting.js +77 -0
  139. package/scripts/helpers/structured-data/lib/breadcrumblist.js +152 -0
  140. package/scripts/helpers/structured-data/lib/config.js +31 -0
  141. package/scripts/helpers/structured-data/lib/index.js +30 -0
  142. package/scripts/helpers/structured-data/lib/organization.js +15 -0
  143. package/scripts/helpers/structured-data/lib/person.js +16 -0
  144. package/scripts/helpers/structured-data/lib/website.js +42 -0
  145. package/scripts/tags/btn.js +6 -1
  146. package/scripts/tags/btns.js +7 -2
  147. package/scripts/tags/checkbox.js +12 -2
  148. package/scripts/tags/contributors.js +100 -0
  149. package/scripts/tags/dropmenu.js +18 -3
  150. package/scripts/tags/fancybox.js +44 -10
  151. package/scripts/tags/folding.js +6 -1
  152. package/scripts/tags/frame.js +6 -1
  153. package/scripts/tags/friends.js +99 -0
  154. package/scripts/tags/ghcard.js +6 -1
  155. package/scripts/tags/image.js +14 -2
  156. package/scripts/tags/link.js +6 -1
  157. package/scripts/tags/md.js +59 -0
  158. package/scripts/tags/media.js +25 -1
  159. package/scripts/tags/note.js +36 -3
  160. package/scripts/tags/site.js +87 -51
  161. package/scripts/tags/span.js +12 -2
  162. package/scripts/tags/swiper.js +38 -0
  163. package/scripts/tags/tabs.js +33 -3
  164. package/scripts/tags/timeline.js +6 -1
  165. package/source/css/Readme.md +28 -0
  166. package/source/css/_defines/AutoPrefixCSS.styl +347 -0
  167. package/source/css/_defines/Readme.md +3 -0
  168. package/source/css/_defines/color.styl +41 -1
  169. package/source/css/_defines/effect.styl +0 -13
  170. package/source/css/_defines/fonts.styl +17 -18
  171. package/source/css/_defines/func.styl +12 -30
  172. package/source/css/_first/base_first.styl +118 -0
  173. package/source/css/_first/{cover.styl → cover_first.styl} +113 -87
  174. package/source/css/_first/dark_first.styl +76 -0
  175. package/source/css/_first/fontfamily_first.styl +17 -0
  176. package/source/css/_first/{navbar.styl → navbar_first.styl} +4 -10
  177. package/source/css/_first/search_first.styl +12 -0
  178. package/source/css/{_base/index.styl → _style/_base/base.styl} +9 -93
  179. package/source/css/_style/_base/fontfamily_async.styl +8 -0
  180. package/source/css/{_layout → _style/_layout}/archive.styl +0 -0
  181. package/source/css/{_layout → _style/_layout}/article.styl +3 -30
  182. package/source/css/{_layout → _style/_layout}/footer.styl +0 -0
  183. package/source/css/_style/_layout/friends-simpleuser.styl +23 -0
  184. package/source/css/_style/_layout/friends-traditional.styl +81 -0
  185. package/source/css/{_layout → _style/_layout}/img.styl +0 -0
  186. package/source/css/_style/_layout/loading.styl +14 -0
  187. package/source/css/{_layout → _style/_layout}/main.styl +19 -7
  188. package/source/css/{_layout → _style/_layout}/md.styl +0 -0
  189. package/source/css/{_layout → _style/_layout}/pagination.styl +1 -1
  190. package/source/css/{_layout → _style/_layout}/posts.styl +2 -0
  191. package/source/css/{_first → _style/_layout}/search.styl +0 -103
  192. package/source/css/{_layout → _style/_layout}/sidebar.styl +23 -3
  193. package/source/css/{_layout → _style/_layout}/snackbar.styl +0 -0
  194. package/source/css/{_layout → _style/_layout}/toc.styl +3 -3
  195. package/source/css/{_layout → _style/_layout}/video.styl +0 -0
  196. package/source/css/_style/_plugins/_dark/dark_async.styl +41 -0
  197. package/source/css/_style/_plugins/_dark/dark_plugins.styl +136 -0
  198. package/source/css/_style/_plugins/_highlight/highlightjs/clipboard.styl +36 -0
  199. package/source/css/_style/_plugins/_highlight/highlightjs/color.styl +96 -0
  200. package/source/css/_style/_plugins/_highlight/highlightjs/index.styl +102 -0
  201. package/source/css/_style/_plugins/_highlight/highlightjs/language.styl +63 -0
  202. package/source/css/_style/_plugins/_highlight/index.styl +1 -0
  203. package/source/css/_style/_plugins/_highlight/prismjs/clipboard.styl +33 -0
  204. package/source/css/_style/_plugins/_highlight/prismjs/index.styl +8 -0
  205. package/source/css/_style/_plugins/_highlight/prismjs/language.styl +63 -0
  206. package/source/css/_style/_plugins/_rightmenu/reading.styl +56 -0
  207. package/source/css/{_plugins → _style/_plugins/_rightmenu}/rightmenu.styl +22 -2
  208. package/source/css/{_plugins → _style/_plugins}/aplayer.styl +8 -1
  209. package/source/css/{_plugins → _style/_plugins}/cursor.styl +49 -19
  210. package/source/css/_style/_plugins/fontcolor.styl +84 -0
  211. package/source/css/{_plugins → _style/_plugins}/gitalk.styl +0 -0
  212. package/source/css/_style/_plugins/index.styl +24 -0
  213. package/source/css/{_plugins → _style/_plugins}/mathjax.styl +0 -0
  214. package/source/css/_style/_plugins/message.styl +14 -0
  215. package/source/css/{_plugins → _style/_plugins}/pjaxanimate.styl +0 -0
  216. package/source/css/_style/_tag-plugins/Readme.md +6 -0
  217. package/source/css/{_tag-plugins → _style/_tag-plugins}/btns.styl +0 -0
  218. package/source/css/{_tag-plugins → _style/_tag-plugins}/checkbox.styl +0 -0
  219. package/source/css/{_tag-plugins → _style/_tag-plugins}/dropmenu.styl +0 -0
  220. package/source/css/{_plugins → _style/_tag-plugins}/fancybox.styl +8 -9
  221. package/source/css/{_tag-plugins → _style/_tag-plugins}/folding.styl +0 -0
  222. package/source/css/{_tag-plugins → _style/_tag-plugins}/frame.styl +0 -0
  223. package/source/css/_style/_tag-plugins/friends.styl +72 -0
  224. package/source/css/{_tag-plugins → _style/_tag-plugins}/ghcard.styl +0 -0
  225. package/source/css/{_tag-plugins → _style/_tag-plugins}/image.styl +0 -0
  226. package/source/css/{_tag-plugins → _style/_tag-plugins}/link.styl +0 -0
  227. package/source/css/{_tag-plugins → _style/_tag-plugins}/media.styl +0 -0
  228. package/source/css/{_tag-plugins → _style/_tag-plugins}/note.styl +0 -0
  229. package/source/css/_style/_tag-plugins/sites.styl +87 -0
  230. package/source/css/{_tag-plugins → _style/_tag-plugins}/span.styl +0 -0
  231. package/source/css/_style/_tag-plugins/swiper.styl +44 -0
  232. package/source/css/{_tag-plugins → _style/_tag-plugins}/table.styl +0 -0
  233. package/source/css/{_tag-plugins → _style/_tag-plugins}/tabs.styl +0 -0
  234. package/source/css/_style/_tag-plugins/tag.json +35 -0
  235. package/source/css/_style/_tag-plugins/text.styl +31 -0
  236. package/source/css/{_tag-plugins → _style/_tag-plugins}/timeline.styl +0 -0
  237. package/source/css/_style/index.styl +8 -0
  238. package/source/css/first.styl +17 -6
  239. package/source/css/style.styl +9 -7
  240. package/source/js/app.js +1051 -278
  241. package/source/js/plugins/aplayer.js +186 -0
  242. package/source/js/plugins/parallax.js +191 -0
  243. package/source/js/plugins/rightMenu.js +577 -0
  244. package/source/js/plugins/rightMenus.js +616 -0
  245. package/source/js/plugins/tags/contributors.js +92 -0
  246. package/source/js/plugins/tags/friends.js +93 -0
  247. package/source/js/plugins/tags/sites.js +96 -0
  248. package/source/js/search/hexo.js +180 -373
  249. package/.eslintrc.json +0 -111
  250. package/layout/_meta/valinecount.ejs +0 -15
  251. package/layout/_partial/rightmenu.ejs +0 -199
  252. package/layout/_partial/scripts/cover.ejs +0 -45
  253. package/layout/_partial/scripts/darkmode.ejs +0 -85
  254. package/layout/_partial/scripts/import.ejs +0 -3
  255. package/layout/_partial/scripts/issues.ejs +0 -18
  256. package/layout/_partial/scripts/search.ejs +0 -62
  257. package/layout/_partial/snackbar.ejs +0 -22
  258. package/layout/_third-party/aplayer/script.ejs +0 -26
  259. package/layout/_third-party/clipboard/script.ejs +0 -54
  260. package/layout/_third-party/comments/disqus/layout.ejs +0 -5
  261. package/layout/_third-party/comments/disqus/script.ejs +0 -90
  262. package/layout/_third-party/comments/disqusjs/layout.ejs +0 -1
  263. package/layout/_third-party/comments/disqusjs/script.ejs +0 -34
  264. package/layout/_third-party/comments/gitalk/layout.ejs +0 -1
  265. package/layout/_third-party/comments/gitalk/script.ejs +0 -22
  266. package/layout/_third-party/comments/hashover/layout.ejs +0 -2
  267. package/layout/_third-party/comments/hashover/script.ejs +0 -1
  268. package/layout/_third-party/comments/isso/layout.ejs +0 -1
  269. package/layout/_third-party/comments/isso/script.ejs +0 -1
  270. package/layout/_third-party/comments/livere/layout.ejs +0 -3
  271. package/layout/_third-party/comments/livere/script.ejs +0 -10
  272. package/layout/_third-party/comments/minivaline/layout.ejs +0 -3
  273. package/layout/_third-party/comments/minivaline/script.ejs +0 -34
  274. package/layout/_third-party/comments/twikoo/layout.ejs +0 -3
  275. package/layout/_third-party/comments/twikoo/script.ejs +0 -32
  276. package/layout/_third-party/comments/valine/layout.ejs +0 -3
  277. package/layout/_third-party/comments/valine/script.ejs +0 -49
  278. package/layout/_third-party/comments/vssue/layout.ejs +0 -1
  279. package/layout/_third-party/comments/vssue/script.ejs +0 -21
  280. package/layout/_third-party/comments/waline/layout.ejs +0 -3
  281. package/layout/_third-party/comments/waline/script.ejs +0 -33
  282. package/layout/_third-party/fancybox/script.ejs +0 -61
  283. package/layout/_third-party/highlightjs/script.ejs +0 -11
  284. package/layout/_third-party/pjax/index.ejs +0 -78
  285. package/layout/_third-party/pjax/pdata.ejs +0 -53
  286. package/layout/_third-party/scrollreveal/script.ejs +0 -21
  287. package/layout/_third-party/tidio/script.ejs +0 -3
  288. package/layout/artitalk.ejs +0 -13
  289. package/layout/bb.ejs +0 -10
  290. package/package-lock.json +0 -916
  291. package/scripts/tags/issues.js +0 -41
  292. package/scripts/z-lazyload/index.js +0 -4
  293. package/source/css/_highlight/index.styl +0 -316
  294. package/source/css/_layout/friends.styl +0 -79
  295. package/source/css/_plugins/clipboard.styl +0 -37
  296. package/source/css/_plugins/dark.styl +0 -149
  297. package/source/css/_plugins/darkmode.styl +0 -9
  298. package/source/css/_plugins/index.styl +0 -18
  299. package/source/css/_plugins/twikoo.styl +0 -21
  300. package/source/css/_plugins/valine.styl +0 -183
  301. package/source/css/_tag-plugins/simpleuser.styl +0 -21
  302. package/source/css/_tag-plugins/site-card.styl +0 -70
  303. package/source/js/aplayer.js +0 -167
  304. package/source/js/issues.js +0 -186
  305. package/source/js/search/algolia.js +0 -344
  306. package/source/js/search/azure.js +0 -355
  307. package/source/js/search/baidu.js +0 -340
  308. package/source/js/search/google.js +0 -339
  309. package/source/js/valine.js +0 -5137
@@ -1,183 +0,0 @@
1
- article#comments
2
- position: relative
3
- a
4
- border-bottom: none
5
- #valine_container
6
- >i
7
- display: block
8
- margin: $gap auto
9
- img
10
- display: inline
11
- .vwrap
12
- border-radius: $border-card
13
- border-style: dashed
14
- border: 1px dashed alpha($color-text, 30%)
15
- trans()
16
- &:hover
17
- border: 1px dashed $color-theme
18
- .cancel-reply
19
- margin-top: 0
20
- margin-bottom: 0
21
- .vheader
22
- margin: -10px
23
- padding: 5px 10px 0
24
- background: var(--color-block)
25
- .vinput
26
- border-radius: 0
27
- border-bottom: 1px dashed transparent
28
- &:hover
29
- border-bottom: 1px dashed $color-theme
30
- &:focus
31
- border-bottom: 1px solid $color-theme
32
- .vedit
33
- .vicon
34
- height: 22px
35
- .vemojis,.vpreview
36
- background: var(--color-block)
37
- border-radius: var(--border-codeblock)
38
- padding: $gap * 0.5
39
- scrollbar()
40
- .vemoji
41
- max-height: 22px
42
- max-width: 100px
43
- i
44
- width: auto
45
- padding: 8px
46
- border-radius: 4px
47
- transition: box-shadow .2s ease-out, background .2s ease-out
48
- if luminosity($color-block) > 0.5
49
- &:hover
50
- background: lighten($color-block, 2)
51
- box-shadow: 1px 1px 2px rgba(0, 0, 0, 0.1), -1px -1px 2px rgba(255, 255, 255, 0.5), inset 8px 8px 16px rgba(0, 0, 0, 0.05), inset -8px -8px 16px rgba(255, 255, 255, 0.4)
52
- &:active
53
- background: darken($color-block, 2)
54
- box-shadow: 0px 0px 0px rgba(0, 0, 0, 0.1), -0px -0px 0px rgba(255, 255, 255, 0.8), inset 2px 2px 4px rgba(0, 0, 0, 0.1), inset -2px -2px 4px rgba(255, 255, 255, 1), inset -8px -8px 16px rgba(255, 255, 255, 0.4)
55
- .vedit
56
- .vctrl span
57
- padding: 0
58
- margin: 10px
59
- span
60
- fill: var(--color-p)
61
- &.actived
62
- fill: $color-theme
63
- .vcount
64
- color: var(--color-p)
65
- font-size: $fontsize-meta
66
- padding: 0
67
- font-weight: inherit
68
- .vnum
69
- color: var(--color-p)
70
- font-size: $fontsize-h2
71
-
72
- button
73
- border: none
74
- padding: 4px 2rem
75
- border-radius: $border-button
76
- background: darken($color-block, 2)
77
- color: var(--color-text)
78
- line-height: 2
79
- font-size: 14px
80
- font-weight: 600
81
- trans()
82
- &:hover
83
- color: $color-hover
84
- background: bgcolor($color-hover)
85
- &.vmore
86
- width: 100%
87
- padding: 8px 2rem
88
- .vcards
89
- margin-top: $gap * 0.5
90
- >.vcard
91
- border-radius: $border-card
92
- border: 1px dashed alpha($color-text, .3)
93
- padding: $gap
94
- margin-bottom: $gap
95
- .vh
96
- border-bottom: none
97
- .vquote
98
- border-left: none
99
- .vimg
100
- border: 1px solid white
101
- padding: 0
102
- background: var(--color-block)
103
- .vcontent.expand
104
- &:before
105
- background: linear-gradient(180deg, alpha($color-card, .9), alpha($color-block, .9));
106
- &:after
107
- background: alpha($color-block, .9)
108
- color: var(--color-text)
109
- .vhead
110
- span
111
- &.vnick
112
- color: lighten($color-p, 10)
113
- cursor: default
114
- a
115
- &.vnick
116
- color: #ff9800
117
- font-weight: bold
118
- &:hover
119
- color: $color-hover
120
- .vsys
121
- margin: 2px
122
- padding: 1px 8px
123
- background-color: var(--color-block)
124
- display: none
125
- .vmeta
126
- .vat
127
- font-weight: bold
128
- color: var(--color-p)
129
- float: none
130
- trans()
131
- padding: 4px 8px
132
- border-radius: 2px
133
- &:hover
134
- color: $color-hover
135
- background-color: var(--color-block)
136
-
137
- .vcontent
138
- padding-top: 0
139
- blockquote
140
- padding-top: $gap-p
141
- padding-bottom: $gap-p
142
- background: var(--color-block)
143
- border-left: $border-codeblock solid $color-theme
144
- border-radius: $border-codeblock
145
- trans()
146
- code
147
- color: var(--color-p)
148
- font-family: $fontfamily-code
149
- pre
150
- background: var(--color-codeblock)
151
- code
152
- border: none
153
- a
154
- color: $color-link
155
- line-height: inherit
156
- trans()
157
- &:hover
158
- color: $color-hover
159
- text-decoration: underline
160
- p
161
- color: var(--color-p)
162
- margin-top: $gap-p
163
- margin-bottom: $gap-p
164
- line-height: inherit
165
- .vemoji
166
- max-height: 24px
167
- border-radius: 0
168
- margin-top: -10px
169
- max-width: 100px
170
- .vempty
171
- color: var(--color-meta)
172
- .vpower
173
- &,a
174
- font-size: $fontsize-footnote
175
- a
176
- color: var(--color-p)
177
- &:hover
178
- text-decoration: underline
179
- color: $color-hover
180
- .vinput
181
- color: var(--color-text)
182
- p
183
- color: var(--color-text)
@@ -1,21 +0,0 @@
1
- .md .simpleuser-group
2
- margin: 0
3
- display: grid
4
- grid-template-columns: repeat(auto-fill, 112px)
5
- .md .simpleuser
6
- text-align: center
7
- padding: 1em .5em
8
- border-radius: 4px
9
- img
10
- display: block
11
- width: 50px
12
- height 50px
13
- border-radius: 50px
14
- object-fit: cover
15
- img+span
16
- display: block
17
- font-size: $fontsize-meta
18
- line-height: 1.2
19
- color: var(--color-text)
20
- &:hover
21
- background: var(--color-site-bg)
@@ -1,70 +0,0 @@
1
- .site-card-group
2
- display: flex
3
- flex-wrap: wrap
4
- justify-content: flex-start
5
- margin: -0.5 * $gap
6
- align-items: stretch
7
- .site-card
8
- margin: $gap * 0.5
9
- width: "calc(100% / 4 - %s)" % $gap
10
- @media screen and (min-width: $device-2k)
11
- width: "calc(100% / 5 - %s)" % $gap
12
- @media screen and (max-width: $device-tablet)
13
- width: "calc(100% / 3 - %s)" % $gap
14
- @media screen and (max-width: $device-mobile)
15
- width: "calc(100% / 2 - %s)" % $gap
16
- display: block
17
- line-height: 1.4
18
- height 100%
19
- .img
20
- width: 100%
21
- height 120px
22
- @media screen and (max-width: $device-mobile)
23
- height 100px
24
- overflow: hidden
25
- border-radius: $border-card * 0.5
26
- box-shadow: 0 1px 2px 0px rgba(0, 0, 0, 0.2)
27
- background: var(--color-block)
28
- img
29
- width: 100%
30
- height 100%
31
- // trans(.75s)
32
- transition: transform 2s ease
33
- object-fit: cover
34
-
35
- .info
36
- margin-top: $gap * 0.5
37
- img
38
- width: 32px
39
- height: 32px
40
- border-radius: 16px
41
- float: left
42
- margin-right: 8px
43
- margin-top: 2px
44
- span
45
- display: block
46
- .title
47
- font-weight: 600
48
- font-size: $fontsize-list
49
- color: var(--color-p)
50
- display: -webkit-box
51
- -webkit-box-orient: vertical
52
- overflow: hidden
53
- -webkit-line-clamp: 1
54
- trans()
55
- .desc
56
- font-size: $fontsize-footnote
57
- word-wrap: break-word;
58
- line-height: 1.2
59
- color: var(--color-meta)
60
- display: -webkit-box
61
- -webkit-box-orient: vertical
62
- overflow: hidden
63
- -webkit-line-clamp: 2
64
- .img
65
- trans()
66
- &:hover
67
- .img
68
- box-shadow: $boxshadow-float, $boxshadow-card-float
69
- .info .title
70
- color: $color-hover
@@ -1,167 +0,0 @@
1
- // 检查 Aplayer 对象状态
2
- function checkAPlayer() {
3
- if (APlayerController.player == undefined) {
4
- setAPlayerObject();
5
- } else {
6
- if (APlayerController.observer == undefined) {
7
- setAPlayerObserver();
8
- }
9
- }
10
- }
11
-
12
- // 设置全局播放器所对应的 aplyer 对象
13
- function setAPlayerObject() {
14
- // 设置foot全局播放器为高优先级
15
- var Meting = document.querySelectorAll('.footer meting-js');
16
- if (Meting.length == 0) {
17
- Meting = document.querySelectorAll('meting-js');
18
- }
19
- Meting.forEach((item, index) => {
20
- if (item.meta.id == APlayerController.id) {
21
- if (Meting[index].aplayer != undefined) {
22
- APlayerController.player = Meting[index].aplayer;
23
- setAPlayerObserver();
24
- updateTitle();
25
- }
26
- }
27
- });
28
- }
29
-
30
- // 事件监听
31
- function setAPlayerObserver() {
32
- try {
33
- APlayerController.player.on('play', function(e) {
34
- updateAPlayerControllerStatus();
35
- });
36
- APlayerController.player.on('pause', function(e) {
37
- updateAPlayerControllerStatus();
38
- });
39
- APlayerController.player.on('volumechange', function(e) {
40
- onUpdateAPlayerVolume();
41
- });
42
- APlayerController.player.on('loadstart', function(e) {
43
- // 跳到下一曲时更新标题
44
- updateTitle();
45
- });
46
-
47
- // 监听音量手势
48
- APlayerController.volumeBarWrap = document.getElementsByClassName('nav volume')[0].children[0];
49
- APlayerController.volumeBar = APlayerController.volumeBarWrap.children[0];
50
- function updateAPlayerVolume(e) {
51
- let percentage = ((e.clientX || e.changedTouches[0].clientX) - APlayerController.volumeBar.getBoundingClientRect().left) / APlayerController.volumeBar.clientWidth;
52
- percentage = Math.max(percentage, 0);
53
- percentage = Math.min(percentage, 1);
54
- APlayerController.player.volume(percentage);
55
- }
56
- const thumbMove = (e) => {
57
- updateAPlayerVolume(e);
58
- };
59
- const thumbUp = (e) => {
60
- APlayerController.volumeBarWrap.classList.remove('aplayer-volume-bar-wrap-active');
61
- document.removeEventListener('mouseup', thumbUp);
62
- document.removeEventListener('mousemove', thumbMove);
63
- updateAPlayerVolume(e);
64
- };
65
-
66
- APlayerController.volumeBarWrap.addEventListener('mousedown', () => {
67
- APlayerController.volumeBarWrap.classList.add('aplayer-volume-bar-wrap-active');
68
- document.addEventListener('mousemove', thumbMove);
69
- document.addEventListener('mouseup', thumbUp);
70
- });
71
-
72
-
73
- // 设置完监听就立即更新一次
74
- updateAPlayerControllerStatus();
75
- onUpdateAPlayerVolume();
76
- APlayerController.observer = true;
77
- console.log('APlayerController ready!');
78
-
79
- } catch (error) {
80
- delete APlayerController.observer;
81
- }
82
- }
83
-
84
- // 更新控制器状态
85
- function updateAPlayerControllerStatus() {
86
- try {
87
- if (APlayerController.player.audio.paused) {
88
- document.getElementsByClassName('nav toggle')[0].children[0].classList.add('fa-play');
89
- document.getElementsByClassName('nav toggle')[0].children[0].classList.remove('fa-pause');
90
- } else {
91
- document.getElementsByClassName('nav toggle')[0].children[0].classList.remove('fa-play');
92
- document.getElementsByClassName('nav toggle')[0].children[0].classList.add('fa-pause');
93
- }
94
- } catch (error) {
95
- console.log(error);
96
- }
97
- }
98
- function onUpdateAPlayerVolume() {
99
- try {
100
- APlayerController.volumeBar.children[0].style.width = APlayerController.player.audio.volume * 100 + '%';
101
- } catch (error) {
102
- console.log(error);
103
- }
104
- }
105
-
106
- // 播放/暂停
107
- function aplayerToggle() {
108
- checkAPlayer();
109
- try {
110
- APlayerController.player.toggle();
111
- } catch (error) {
112
- console.log(error);
113
- }
114
- }
115
-
116
- // 上一曲
117
- function aplayerBackward() {
118
- checkAPlayer();
119
- try {
120
- APlayerController.player.skipBack();
121
- APlayerController.player.play();
122
- } catch (error) {
123
- console.log(error);
124
- }
125
- }
126
-
127
- // 下一曲
128
- function aplayerForward() {
129
- checkAPlayer();
130
- try {
131
- APlayerController.player.skipForward();
132
- APlayerController.player.play();
133
- } catch (error) {
134
- console.log(error);
135
- }
136
- }
137
-
138
- // 调节音量
139
- function aplayerVolume(percent) {
140
- checkAPlayer();
141
- try {
142
- APlayerController.player.volume(percent);
143
- } catch (error) {
144
- console.log(error);
145
- }
146
- }
147
-
148
- // 更新音乐标题
149
- function updateTitle() {
150
- checkAPlayer();
151
- try {
152
- const index = APlayerController.player.list.index;
153
- const obj = APlayerController.player.list.audios[index];
154
- document.getElementsByClassName('nav music-title')[0].innerHTML = obj.title;
155
- } catch (error) {
156
- console.log(error);
157
- }
158
- }
159
- var checkrightmenu = setInterval(function() {
160
- if (!volantis.APlayerLoaded) return; // APlayer加载完成?
161
- if ($('#safearea').css('display') != 'block') return; // 文章内容加载完成? see: source/css/first.styl
162
- if (!document.querySelectorAll('meting-js')[0].meta) return; // meting-js 加载完成?
163
- if (!document.querySelectorAll('meting-js')[0].meta.id) return; // meting-js 初始化?
164
- clearInterval(checkrightmenu);
165
- checkAPlayer();
166
- }, 1000);
167
-
@@ -1,186 +0,0 @@
1
- const IssuesAPI = {
2
- requestIssuesAPI(url, callback, timeout) {
3
- let retryTimes = 10;
4
- function request() {
5
- return new Promise((resolve, reject) => {
6
- let status = 0; // 0 等待 1 完成 2 超时
7
- let timer = setTimeout(() => {
8
- if (status === 0) {
9
- status = 2;
10
- timer = null;
11
- reject('请求超时');
12
- if (retryTimes == 0) {
13
- timeout();
14
- }
15
- }
16
- }, 5000);
17
- fetch(url).then(function(response) {
18
- if (status !== 2) {
19
- clearTimeout(timer);
20
- resolve(response);
21
- timer = null;
22
- status = 1;
23
- }
24
- if (response.ok) {
25
- return response.json();
26
- }
27
- throw new Error('Network response was not ok.');
28
- }).then(function(data) {
29
- retryTimes = 0;
30
- callback(data);
31
- }).catch(function(error) {
32
- if (retryTimes > 0) {
33
- retryTimes -= 1;
34
- setTimeout(() => {
35
- request();
36
- }, 5000);
37
- } else {
38
- timeout();
39
- }
40
- });
41
- });
42
- }
43
- request();
44
- },
45
- parseIssueStrToJson(str) {
46
- let jsonStr = str.match(/```json[\s|\S]*```/);
47
- if (jsonStr && jsonStr.length > 0) {
48
- jsonStr = jsonStr[0];
49
- }
50
- if (jsonStr) {
51
- jsonStr = jsonStr.split('```json')[1].split('```')[0];
52
- if (jsonStr) {
53
- return JSON.parse(jsonStr);
54
- }
55
- }
56
- return undefined;
57
- },
58
- groupIssuesData(cfg, data) {
59
- var groups = new Object();
60
- if (data.length > 0) {
61
- if (cfg.group != undefined) {
62
- const arr = cfg.group.split(':');
63
- if (arr.length > 1) {
64
- const groupKey = arr[0];
65
- let groupList = arr[1];
66
- if (groupKey && groupList) {
67
- groupList = groupList.split(',');
68
- }
69
- cfg.group = groupList;
70
- for (i = 0; i < data.length; i++) {
71
- const obj = this.parseIssueStrToJson(data[i].body);
72
- if (obj && (groupKey in obj)) {
73
- let tmp = obj[groupKey];
74
- tmp = tmp.replace(', ', ',').split(',');
75
- for (var j = 0; j < tmp.length; j++) {
76
- if (groupList.includes(tmp[j])) {
77
- let arr = groups[tmp[j]];
78
- if (arr == undefined) {
79
- arr = new Array();
80
- }
81
- arr.push(obj);
82
- groups[tmp[j]] = arr;
83
- }
84
- }
85
- }
86
- }
87
- }
88
- } else {
89
- cfg.group = [''];
90
- for (i = 0; i < data.length; i++) {
91
- const obj = this.parseIssueStrToJson(data[i].body);
92
- if (obj) {
93
- let arr = groups[''];
94
- if (arr == undefined) {
95
- arr = new Array();
96
- }
97
- arr.push(obj);
98
- groups[''] = arr;
99
- }
100
- }
101
- }
102
- }
103
- return groups;
104
- },
105
- getIssuesAPIForSites(cfg) {
106
- const el = $(cfg.el)[0];
107
- $(el).append('<div class="loading"><i class="fa fa-cog fa-2x fa-spin"></i><p>正在加载</p></div>');
108
- this.requestIssuesAPI(cfg.api, function(data) {
109
- $(el).find('.loading').remove();
110
- const dt = IssuesAPI.groupIssuesData(cfg, data);
111
- const groupTitles = Object.keys(dt);
112
- cfg.group.forEach((groupTitle, i) => {
113
- const issues = dt[groupTitle];
114
- if (issues && issues.length > 0) {
115
- if (groupTitle.length > 0) {
116
- $(el).append('<h2>' + groupTitle + '</h2>');
117
- } else if (name == '' && groupTitles.length > 1) {
118
- $(el).append('<h2>' + '未分组' + '</h2>');
119
- }
120
- $(el).append('<div class="site-card-group ' + i + '"></div>');
121
- // layout items
122
- for (j = 0; j < issues.length; j++) {
123
- const issue = issues[j];
124
- let imgTag = '';
125
- if (issue.screenshot && issue.screenshot.length > 0) {
126
- imgTag = '<div class="img"><img src="' + issue.screenshot + '" onerror="javascript:this.src=\'https://image.thum.io/get/width/1024/crop/768/' + issue.url + '\';"/></div>';
127
- } else {
128
- imgTag = '<div class="img"></div>';
129
- }
130
- let infoTag = '<div class="info">';
131
- if (issue.avatar && issue.avatar.length > 0) {
132
- infoTag += '<img src="' + issue.avatar + '" onerror="javascript:this.src=\'https://image.thum.io/get/width/1024/crop/768/' + issue.url + '\';"/>';
133
- }
134
- infoTag += '<span class="title">' + issue.title + '</span><span class="desc">' + issue.description + '</span></div>';
135
- const cardTag = '<a class=\'site-card\' target=\'_blank\' href=\'' + issue.url + '\'>' + imgTag + infoTag + '</a>';
136
- $(el).find('.site-card-group.' + i).append(cardTag);
137
- }
138
- }
139
- });
140
- }, function() {
141
- $(el).find('.loading i').remove();
142
- $(el).find('.loading p').text('加载失败,请稍后重试。');
143
- });
144
- },
145
- getIssuesAPIForTimeline(cfg) {
146
- const el = $(cfg.el)[0];
147
- $(el).append('<div class="loading"><i class="fa fa-cog fa-2x fa-spin"></i><p>正在加载</p></div>');
148
- this.requestIssuesAPI(cfg.api, function(data) {
149
- $(el).find('.loading').remove();
150
- if (data.length > 0) {
151
- for (i = 0; i < data.length; i++) {
152
- const a = '&nbsp;&nbsp;<a class="comments" target="_blank" href="' + data[i].html_url + '"><i class="fa fa-comment-dots fa-fw"></i>' + data[i].comments + '</a>';
153
- const meta = '<div class="meta"><p></p><p>' + data[i].title + a + '</p><p></p></div>';
154
- const body = '<div class="body"><p>' + data[i].body + '</p></div>';
155
- const tag = '<div class="timenode">' + meta + body + '</div>';
156
- $(el).append(tag);
157
- }
158
- }
159
- }, function() {
160
- $(el).find('.loading i').remove();
161
- $(el).find('.loading p').text('加载失败,请稍后重试。');
162
- });
163
- },
164
- request() {
165
- const els = document.getElementsByClassName('issues-api');
166
- for (var i = 0; i < els.length; i++) {
167
- const el = els[i];
168
- const api = el.getAttribute('api');
169
- const group = el.getAttribute('group');
170
- var cfg = new Object();
171
- cfg.class = el.getAttribute('class');
172
- cfg.el = el;
173
- cfg.api = api;
174
- cfg.group = group;
175
- if (cfg.class.split(' ').includes('sites')) {
176
- this.getIssuesAPIForSites(cfg);
177
- } else if (cfg.class.split(' ').includes('timeline')) {
178
- this.getIssuesAPIForTimeline(cfg);
179
- }
180
- }
181
- }
182
- };
183
- IssuesAPI.request();
184
- document.addEventListener('pjax:complete', function() {
185
- IssuesAPI.request();
186
- });