hexo-theme-shokax 0.4.6-dev5 → 0.4.6

Sign up to get free protection for your applications and to get access to all the features.
Files changed (186) hide show
  1. package/CODE_OF_CONDUCT.md +128 -128
  2. package/CONTRIBUTING.md +58 -58
  3. package/LICENSE +660 -660
  4. package/LICENSE-shoka +21 -21
  5. package/README.md +76 -99
  6. package/README_en.MD +75 -91
  7. package/UsageRestrictions.md +25 -25
  8. package/_config.yml +381 -381
  9. package/_images.yml +9 -9
  10. package/eslint.config.mjs +55 -55
  11. package/languages/README.md +19 -19
  12. package/languages/default.yml +1 -1
  13. package/languages/en.yml +153 -153
  14. package/languages/ja.yml +153 -153
  15. package/languages/zh-CN.yml +153 -153
  16. package/languages/zh-HK.yml +153 -153
  17. package/languages/zh-TW.yml +153 -153
  18. package/layout/_alternate/atom.ejs +30 -30
  19. package/layout/_alternate/json.ejs +16 -16
  20. package/layout/_alternate/rss.ejs +34 -34
  21. package/layout/_mixin/breadcrumb.pug +33 -33
  22. package/layout/_mixin/card.pug +38 -38
  23. package/layout/_mixin/comment.pug +6 -6
  24. package/layout/_mixin/postmeta.pug +29 -29
  25. package/layout/_mixin/segment.pug +35 -35
  26. package/layout/_mixin/sidebar.pug +40 -40
  27. package/layout/_mixin/widgets.pug +28 -28
  28. package/layout/_partials/footer.pug +43 -43
  29. package/layout/_partials/head/head.pug +55 -55
  30. package/layout/_partials/head/head_com.pug +24 -24
  31. package/layout/_partials/head/pwa.pug +18 -18
  32. package/layout/_partials/header.pug +18 -18
  33. package/layout/_partials/layout.pug +140 -140
  34. package/layout/_partials/loading.pug +13 -13
  35. package/layout/_partials/pagination.pug +4 -4
  36. package/layout/_partials/post/copyright.pug +20 -20
  37. package/layout/_partials/post/footer.pug +17 -17
  38. package/layout/_partials/post/nav.pug +13 -13
  39. package/layout/_partials/post/post.pug +41 -41
  40. package/layout/_partials/post/reward.pug +18 -18
  41. package/layout/_partials/sidebar/menu.pug +37 -37
  42. package/layout/_partials/sidebar/overview.pug +42 -42
  43. package/layout/_partials/third-party/baidu-analytics.pug +11 -11
  44. package/layout/_partials/third-party/clarity.pug +8 -8
  45. package/layout/_partials/third-party/google-analytics.pug +9 -9
  46. package/layout/archive.pug +118 -118
  47. package/layout/category.pug +59 -59
  48. package/layout/index.pug +33 -33
  49. package/layout/page.pug +55 -55
  50. package/layout/post.pug +36 -36
  51. package/layout/tag.pug +43 -43
  52. package/package.json +72 -72
  53. package/scripts/filters/locals.js +52 -0
  54. package/scripts/filters/post.js +5 -0
  55. package/scripts/generaters/archive.js +133 -0
  56. package/scripts/generaters/config.js +51 -0
  57. package/scripts/generaters/images.js +23 -0
  58. package/scripts/generaters/index.js +107 -0
  59. package/scripts/generaters/pages.js +15 -0
  60. package/scripts/generaters/script.js +156 -0
  61. package/scripts/helpers/asset.js +73 -0
  62. package/scripts/helpers/engine.js +177 -0
  63. package/scripts/helpers/list_categories.js +80 -0
  64. package/scripts/helpers/summary_ai.js +107 -0
  65. package/scripts/helpers/symbols_count_time.js +69 -0
  66. package/scripts/plugin/check.js +32 -0
  67. package/scripts/plugin/index.js +81 -0
  68. package/scripts/plugin/lib/injects-point.js +20 -0
  69. package/scripts/plugin/lib/injects.js +89 -0
  70. package/scripts/tags/links.js +44 -0
  71. package/scripts/tags/media.js +19 -0
  72. package/scripts/utils.js +13 -0
  73. package/source/assets/algolia_logo.svg +9 -9
  74. package/source/assets/logo.svg +16 -16
  75. package/source/css/_colors.styl +207 -207
  76. package/source/css/_common/components/components.styl +6 -6
  77. package/source/css/_common/components/highlight/highlight.styl +357 -357
  78. package/source/css/_common/components/highlight/operation.styl +21 -21
  79. package/source/css/_common/components/pages/collapse.styl +119 -119
  80. package/source/css/_common/components/pages/home.styl +391 -391
  81. package/source/css/_common/components/pages/pages.styl +56 -56
  82. package/source/css/_common/components/pages/tag-cloud.styl +12 -12
  83. package/source/css/_common/components/post/breadcrumb.styl +39 -39
  84. package/source/css/_common/components/post/copyright.styl +41 -41
  85. package/source/css/_common/components/post/expand.styl +263 -263
  86. package/source/css/_common/components/post/footer.styl +11 -11
  87. package/source/css/_common/components/post/header.styl +79 -79
  88. package/source/css/_common/components/post/nav.styl +64 -64
  89. package/source/css/_common/components/post/post.styl +29 -29
  90. package/source/css/_common/components/post/reward.styl +50 -50
  91. package/source/css/_common/components/post/rtl.styl +12 -12
  92. package/source/css/_common/components/post/tags.styl +39 -39
  93. package/source/css/_common/components/tags/collapse.styl +72 -72
  94. package/source/css/_common/components/tags/container.styl +49 -49
  95. package/source/css/_common/components/tags/label.styl +12 -12
  96. package/source/css/_common/components/tags/links.styl +77 -77
  97. package/source/css/_common/components/tags/list.styl +131 -131
  98. package/source/css/_common/components/tags/note.styl +70 -70
  99. package/source/css/_common/components/tags/player.styl +361 -361
  100. package/source/css/_common/components/tags/quiz.styl +200 -200
  101. package/source/css/_common/components/tags/tabs.styl +89 -89
  102. package/source/css/_common/components/tags/tags.styl +9 -9
  103. package/source/css/_common/components/third-party/loading.styl +222 -222
  104. package/source/css/_common/components/third-party/mermaid/class.styl +90 -90
  105. package/source/css/_common/components/third-party/mermaid/flowchart.styl +72 -72
  106. package/source/css/_common/components/third-party/mermaid/gantt.styl +251 -251
  107. package/source/css/_common/components/third-party/mermaid/git.styl +7 -7
  108. package/source/css/_common/components/third-party/mermaid/mermaid.styl +37 -37
  109. package/source/css/_common/components/third-party/mermaid/pie.styl +9 -9
  110. package/source/css/_common/components/third-party/mermaid/sequence.styl +95 -95
  111. package/source/css/_common/components/third-party/mermaid/state.styl +130 -130
  112. package/source/css/_common/components/third-party/pace.styl +18 -18
  113. package/source/css/_common/components/third-party/search.styl +167 -167
  114. package/source/css/_common/components/third-party/theme.styl +151 -151
  115. package/source/css/_common/components/third-party/third-party.styl +22 -22
  116. package/source/css/_common/components/third-party/widgets.styl +57 -57
  117. package/source/css/_common/outline/footer/footer.styl +67 -67
  118. package/source/css/_common/outline/header/brand.styl +77 -77
  119. package/source/css/_common/outline/header/header.styl +20 -20
  120. package/source/css/_common/outline/header/image.styl +85 -85
  121. package/source/css/_common/outline/header/menu.styl +117 -117
  122. package/source/css/_common/outline/header/nav.styl +81 -81
  123. package/source/css/_common/outline/header/right.styl +15 -15
  124. package/source/css/_common/outline/header/tool.styl +207 -207
  125. package/source/css/_common/outline/header/waves.styl +57 -57
  126. package/source/css/_common/outline/mobile.styl +46 -46
  127. package/source/css/_common/outline/outline.styl +78 -78
  128. package/source/css/_common/outline/sidebar/author.styl +59 -59
  129. package/source/css/_common/outline/sidebar/dimmer.styl +23 -23
  130. package/source/css/_common/outline/sidebar/menu.styl +63 -63
  131. package/source/css/_common/outline/sidebar/quick.styl +43 -43
  132. package/source/css/_common/outline/sidebar/related.styl +56 -56
  133. package/source/css/_common/outline/sidebar/sidebar.styl +80 -80
  134. package/source/css/_common/outline/sidebar/social.styl +69 -69
  135. package/source/css/_common/outline/sidebar/state.styl +37 -37
  136. package/source/css/_common/outline/sidebar/tab.styl +71 -71
  137. package/source/css/_common/outline/sidebar/toc.styl +47 -47
  138. package/source/css/_common/scaffolding/animate.styl +322 -322
  139. package/source/css/_common/scaffolding/base.styl +190 -190
  140. package/source/css/_common/scaffolding/buttons.styl +48 -48
  141. package/source/css/_common/scaffolding/divider.styl +36 -36
  142. package/source/css/_common/scaffolding/iconfont.styl +443 -443
  143. package/source/css/_common/scaffolding/normalize.styl +273 -273
  144. package/source/css/_common/scaffolding/pagination.styl +81 -81
  145. package/source/css/_common/scaffolding/ribbon.styl +38 -38
  146. package/source/css/_common/scaffolding/scaffolding.styl +14 -14
  147. package/source/css/_common/scaffolding/scrollbar.styl +37 -37
  148. package/source/css/_common/scaffolding/tables.styl +50 -50
  149. package/source/css/_common/scaffolding/tip.styl +19 -19
  150. package/source/css/_common/scaffolding/toggles.styl +59 -59
  151. package/source/css/_iconfont.styl +455 -455
  152. package/source/css/_mixins.styl +148 -148
  153. package/source/css/_variables.styl +89 -89
  154. package/source/css/app.styl +41 -41
  155. package/source/css/mermaid.styl +5 -5
  156. package/source/css/optimize.styl +5 -5
  157. package/source/js/_app/components/comments.ts +88 -88
  158. package/source/js/_app/components/sidebar.ts +239 -239
  159. package/source/js/_app/components/tcomments.ts +54 -54
  160. package/source/js/_app/globals/globalVars.ts +99 -99
  161. package/source/js/_app/globals/handles.ts +124 -124
  162. package/source/js/_app/globals/themeColor.ts +63 -63
  163. package/source/js/_app/globals/thirdparty.ts +63 -63
  164. package/source/js/_app/globals/tools.ts +75 -75
  165. package/source/js/_app/library/anime.ts +110 -110
  166. package/source/js/_app/library/declare.d.ts +128 -128
  167. package/source/js/_app/library/dom.ts +28 -28
  168. package/source/js/_app/library/loadFile.ts +47 -47
  169. package/source/js/_app/library/proto.ts +137 -137
  170. package/source/js/_app/library/scriptPjax.ts +72 -72
  171. package/source/js/_app/library/storage.ts +12 -12
  172. package/source/js/_app/library/vue.ts +49 -49
  173. package/source/js/_app/page/common.ts +43 -43
  174. package/source/js/_app/page/fancybox.ts +72 -72
  175. package/source/js/_app/page/post.ts +266 -266
  176. package/source/js/_app/page/search.ts +115 -115
  177. package/source/js/_app/page/tab.ts +60 -60
  178. package/source/js/_app/pjax/domInit.ts +97 -97
  179. package/source/js/_app/pjax/refresh.ts +140 -140
  180. package/source/js/_app/pjax/siteInit.ts +106 -106
  181. package/source/js/_app/player.ts +798 -798
  182. package/toolbox/compiler.mjs +10 -6
  183. package/toolbox/hoistdep.mjs +5 -5
  184. package/toolbox/lib.mjs +63 -63
  185. package/index.html +0 -231
  186. package/meta.json +0 -6431
@@ -1,54 +1,54 @@
1
- import * as twikoo from 'twikoo'
2
- import { CONFIG } from '../globals/globalVars'
3
-
4
- export const twikooComment = function () {
5
- twikoo.init({
6
- envId: CONFIG.twikoo.envId,
7
- el: '#comments',
8
- region: CONFIG.twikoo.region
9
- })
10
- }
11
-
12
- export const twikooRecentComments = async function () {
13
- let comments = []
14
- const root = shokax_siteURL.replace(/^(https?:\/\/)?[^/]*/, '')
15
- const res = await twikoo.getRecentComments({
16
- envId: CONFIG.twikoo.envId,
17
- pageSize: 10
18
- })
19
- res.forEach(function (item) {
20
- let cText = item.commentText
21
- if (item.commentText.length > 50) {
22
- cText = item.commentText.substring(0, 50) + '...'
23
- }
24
- const siteLink = item.url + '#' + item.id
25
- comments.push({
26
- href: siteLink,
27
- nick: item.nick,
28
- time: item.relativeTime,
29
- text: cText
30
- })
31
- })
32
- const newComments = new DocumentFragment()
33
- comments.forEach(function (item) {
34
- const commentEl = document.createElement('li')
35
- const commentLink = document.createElement('a')
36
- const commentTime = document.createElement('span')
37
- const commentText = document.createElement('span')
38
-
39
- commentText.innerText = item.text
40
- commentTime.className = 'breadcrumb'
41
- commentTime.innerText = `${item.nick} @ ${item.time}`
42
- commentLink.href = root + item.href
43
- commentLink['data-pjax-state'] = 'data-pjax-state'
44
- commentEl.className = 'item'
45
-
46
- commentText.appendChild(document.createElement('br'))
47
- commentLink.appendChild(commentTime)
48
- commentLink.appendChild(commentText)
49
- commentEl.appendChild(commentLink)
50
- newComments.appendChild(commentEl)
51
- })
52
-
53
- document.getElementById('new-comment').appendChild(newComments)
54
- }
1
+ import * as twikoo from 'twikoo'
2
+ import { CONFIG } from '../globals/globalVars'
3
+
4
+ export const twikooComment = function () {
5
+ twikoo.init({
6
+ envId: CONFIG.twikoo.envId,
7
+ el: '#comments',
8
+ region: CONFIG.twikoo.region
9
+ })
10
+ }
11
+
12
+ export const twikooRecentComments = async function () {
13
+ let comments = []
14
+ const root = shokax_siteURL.replace(/^(https?:\/\/)?[^/]*/, '')
15
+ const res = await twikoo.getRecentComments({
16
+ envId: CONFIG.twikoo.envId,
17
+ pageSize: 10
18
+ })
19
+ res.forEach(function (item) {
20
+ let cText = item.commentText
21
+ if (item.commentText.length > 50) {
22
+ cText = item.commentText.substring(0, 50) + '...'
23
+ }
24
+ const siteLink = item.url + '#' + item.id
25
+ comments.push({
26
+ href: siteLink,
27
+ nick: item.nick,
28
+ time: item.relativeTime,
29
+ text: cText
30
+ })
31
+ })
32
+ const newComments = new DocumentFragment()
33
+ comments.forEach(function (item) {
34
+ const commentEl = document.createElement('li')
35
+ const commentLink = document.createElement('a')
36
+ const commentTime = document.createElement('span')
37
+ const commentText = document.createElement('span')
38
+
39
+ commentText.innerText = item.text
40
+ commentTime.className = 'breadcrumb'
41
+ commentTime.innerText = `${item.nick} @ ${item.time}`
42
+ commentLink.href = root + item.href
43
+ commentLink['data-pjax-state'] = 'data-pjax-state'
44
+ commentEl.className = 'item'
45
+
46
+ commentText.appendChild(document.createElement('br'))
47
+ commentLink.appendChild(commentTime)
48
+ commentLink.appendChild(commentText)
49
+ commentEl.appendChild(commentLink)
50
+ newComments.appendChild(commentEl)
51
+ })
52
+
53
+ document.getElementById('new-comment').appendChild(newComments)
54
+ }
@@ -1,99 +1,99 @@
1
- import { $dom } from '../library/dom'
2
- import Pjax from 'theme-shokax-pjax'
3
- import initProto from '../library/proto'
4
-
5
- export const CONFIG = shokax_CONFIG
6
- initProto()
7
- export const statics = CONFIG.statics.indexOf('//') > 0 ? CONFIG.statics : CONFIG.root
8
- export const scrollAction: { x: number, y: number } = { x: 0, y: 0 }
9
- export let diffY = 0
10
- export let originTitle: string, titleTime: NodeJS.Timeout
11
- export const BODY = document.getElementsByTagName('body')[0]
12
- export const HTML = document.documentElement
13
- export const Container = document.getElementById('container')
14
- export const loadCat = document.getElementById('loading')
15
- export const siteNav = document.getElementById('nav')
16
- export const siteHeader = document.getElementById('header')
17
- export const menuToggle = siteNav.querySelector('.toggle')
18
- export const quickBtn = document.getElementById('quick')
19
- export const sideBar = document.getElementById('sidebar')
20
- export const siteBrand = document.getElementById('brand')
21
- export let toolBtn = document.getElementById('tool')
22
- export let toolPlayer
23
- export let backToTop: HTMLElement
24
- export let goToComment
25
- export let showContents
26
- export let siteSearch = document.getElementById('search')
27
- export let siteNavHeight: number, headerHightInner: number, headerHight: number
28
- export let oWinHeight = window.innerHeight
29
- export let oWinWidth = window.innerWidth
30
- export let LOCAL_HASH = 0
31
- export let LOCAL_URL = window.location.href
32
- export let pjax:Pjax
33
-
34
- export function setSiteNavHeight (value:number):void {
35
- siteNavHeight = value
36
- }
37
- export function setHeaderHightInner (value:number):void {
38
- headerHightInner = value
39
- }
40
-
41
- export function setHeaderHight (value:number):void {
42
- headerHight = value
43
- }
44
-
45
- export function setOWinHeight (value:number):void {
46
- oWinHeight = value
47
- }
48
-
49
- export function setOWinWidth (value:number):void {
50
- oWinWidth = value
51
- }
52
-
53
- export function setDiffY (value:number):void {
54
- diffY = value
55
- }
56
-
57
- export function setTitleTime (value:NodeJS.Timeout):void {
58
- titleTime = value
59
- }
60
-
61
- export function setLocalHash (value:number):void {
62
- LOCAL_HASH = value
63
- }
64
-
65
- export function setLocalUrl (value:string):void {
66
- LOCAL_URL = value
67
- }
68
-
69
- export function setPjax (value:Pjax):void {
70
- pjax = value
71
- }
72
-
73
- export function setOriginTitle (value:string):void {
74
- originTitle = value
75
- }
76
-
77
- export function setToolPlayer (value:any):void {
78
- toolPlayer = value
79
- }
80
-
81
- export function setBackToTop (value:HTMLElement):void {
82
- backToTop = value
83
- }
84
-
85
- export function setGoToComment (value:any):void {
86
- goToComment = value
87
- }
88
-
89
- export function setShowContents (value:any):void {
90
- showContents = value
91
- }
92
-
93
- export function setToolBtn (value:HTMLElement):void {
94
- toolBtn = value
95
- }
96
-
97
- export function setSiteSearch (value:HTMLElement):void {
98
- siteSearch = value
99
- }
1
+ import { $dom } from '../library/dom'
2
+ import Pjax from 'theme-shokax-pjax'
3
+ import initProto from '../library/proto'
4
+
5
+ export const CONFIG = shokax_CONFIG
6
+ initProto()
7
+ export const statics = CONFIG.statics.indexOf('//') > 0 ? CONFIG.statics : CONFIG.root
8
+ export const scrollAction: { x: number, y: number } = { x: 0, y: 0 }
9
+ export let diffY = 0
10
+ export let originTitle: string, titleTime: NodeJS.Timeout
11
+ export const BODY = document.getElementsByTagName('body')[0]
12
+ export const HTML = document.documentElement
13
+ export const Container = document.getElementById('container')
14
+ export const loadCat = document.getElementById('loading')
15
+ export const siteNav = document.getElementById('nav')
16
+ export const siteHeader = document.getElementById('header')
17
+ export const menuToggle = siteNav.querySelector('.toggle')
18
+ export const quickBtn = document.getElementById('quick')
19
+ export const sideBar = document.getElementById('sidebar')
20
+ export const siteBrand = document.getElementById('brand')
21
+ export let toolBtn = document.getElementById('tool')
22
+ export let toolPlayer
23
+ export let backToTop: HTMLElement
24
+ export let goToComment
25
+ export let showContents
26
+ export let siteSearch = document.getElementById('search')
27
+ export let siteNavHeight: number, headerHightInner: number, headerHight: number
28
+ export let oWinHeight = window.innerHeight
29
+ export let oWinWidth = window.innerWidth
30
+ export let LOCAL_HASH = 0
31
+ export let LOCAL_URL = window.location.href
32
+ export let pjax:Pjax
33
+
34
+ export function setSiteNavHeight (value:number):void {
35
+ siteNavHeight = value
36
+ }
37
+ export function setHeaderHightInner (value:number):void {
38
+ headerHightInner = value
39
+ }
40
+
41
+ export function setHeaderHight (value:number):void {
42
+ headerHight = value
43
+ }
44
+
45
+ export function setOWinHeight (value:number):void {
46
+ oWinHeight = value
47
+ }
48
+
49
+ export function setOWinWidth (value:number):void {
50
+ oWinWidth = value
51
+ }
52
+
53
+ export function setDiffY (value:number):void {
54
+ diffY = value
55
+ }
56
+
57
+ export function setTitleTime (value:NodeJS.Timeout):void {
58
+ titleTime = value
59
+ }
60
+
61
+ export function setLocalHash (value:number):void {
62
+ LOCAL_HASH = value
63
+ }
64
+
65
+ export function setLocalUrl (value:string):void {
66
+ LOCAL_URL = value
67
+ }
68
+
69
+ export function setPjax (value:Pjax):void {
70
+ pjax = value
71
+ }
72
+
73
+ export function setOriginTitle (value:string):void {
74
+ originTitle = value
75
+ }
76
+
77
+ export function setToolPlayer (value:any):void {
78
+ toolPlayer = value
79
+ }
80
+
81
+ export function setBackToTop (value:HTMLElement):void {
82
+ backToTop = value
83
+ }
84
+
85
+ export function setGoToComment (value:any):void {
86
+ goToComment = value
87
+ }
88
+
89
+ export function setShowContents (value:any):void {
90
+ showContents = value
91
+ }
92
+
93
+ export function setToolBtn (value:HTMLElement):void {
94
+ toolBtn = value
95
+ }
96
+
97
+ export function setSiteSearch (value:HTMLElement):void {
98
+ siteSearch = value
99
+ }
@@ -1,124 +1,124 @@
1
- import { sideBarToggleHandle } from '../components/sidebar'
2
- import {
3
- backToTop,
4
- diffY,
5
- headerHight,
6
- headerHightInner,
7
- oWinWidth,
8
- originTitle,
9
- scrollAction,
10
- sideBar,
11
- siteBrand,
12
- siteHeader,
13
- siteNav,
14
- statics,
15
- titleTime,
16
- toolBtn,
17
- setSiteNavHeight,
18
- setHeaderHightInner,
19
- setHeaderHight,
20
- setOWinHeight, setOWinWidth, setDiffY, setTitleTime, CONFIG
21
- } from './globalVars'
22
- import { changeMetaTheme } from './themeColor'
23
- import { Loader } from './thirdparty'
24
- import { getHeight, setWidth } from '../library/proto'
25
-
26
- const wavesEle = document.getElementById('waves')
27
-
28
- export const resizeHandle = () => {
29
- // 获取 siteNav 的高度
30
- setSiteNavHeight(getHeight(siteNav))
31
- // 获取 siteHeader 的高度
32
- setHeaderHightInner(getHeight(siteHeader))
33
- // 获取 #waves 的高度
34
- setHeaderHight(headerHightInner + getHeight(wavesEle))
35
-
36
- // 判断窗口宽度是否改变
37
- if (oWinWidth !== window.innerWidth) {
38
- sideBarToggleHandle(null, 1)
39
- }
40
-
41
- // 记录窗口高度和宽度
42
- setOWinHeight(window.innerHeight)
43
- setOWinWidth(window.innerWidth)
44
- }
45
-
46
- export const scrollHandle = () => {
47
- // 获取窗口高度
48
- const winHeight = window.innerHeight
49
- // 获取文档高度
50
- const docHeight = (document.querySelector('main > .inner') as HTMLElement).offsetHeight
51
- // 计算可见内容高度
52
- const contentVisibilityHeight = docHeight > winHeight ? docHeight - winHeight : document.body.scrollHeight - winHeight
53
- // 判断页面是否滚动超过 headerHightInner
54
- const SHOW = window.scrollY > headerHightInner
55
- // 判断页面是否开始滚动
56
- const startScroll = window.scrollY > 0
57
-
58
- // 根据条件修改 meta theme
59
- if (SHOW) {
60
- changeMetaTheme('#FFF')
61
- } else {
62
- changeMetaTheme('#222')
63
- }
64
-
65
- // 控制导航栏的显示隐藏
66
- siteNav.toggleClass('show', SHOW)
67
- // 控制网站 logo 的显示隐藏
68
- toolBtn.toggleClass('affix', startScroll)
69
- // 控制侧边栏的显示隐藏,当滚动高度大于 headerHight 且窗口宽度大于 991px 时显示
70
- siteBrand.toggleClass('affix', startScroll)
71
- sideBar.toggleClass('affix', window.scrollY > headerHight && document.body.offsetWidth > 991)
72
- // 初始化滚动时导航栏的显示方向
73
- if (typeof scrollAction.y === 'undefined') {
74
- scrollAction.y = window.scrollY
75
- }
76
- setDiffY(scrollAction.y - window.scrollY)
77
-
78
- // 控制滑动时导航栏显示
79
- if (diffY < 0) {
80
- siteNav.removeClass('up')
81
- siteNav.toggleClass('down', SHOW)
82
- } else if (diffY > 0) {
83
- siteNav.removeClass('down')
84
- siteNav.toggleClass('up', SHOW)
85
- } else { /* empty */ }
86
- scrollAction.y = window.scrollY
87
- // 计算滚动百分比
88
- const scrollPercent = Math.round(Math.min(100 * window.scrollY / contentVisibilityHeight, 100)) + '%'
89
- // 更新回到顶部按钮的文字
90
- if (backToTop.querySelector('span').innerText !== scrollPercent) {
91
- backToTop.querySelector('span').innerText = scrollPercent
92
- }
93
- // 更新百分比进度条的宽度
94
- if (document.getElementById('sidebar').hasClass('affix') || document.getElementById('sidebar').hasClass('on')) {
95
- setWidth(document.querySelector('.percent'), scrollPercent)
96
- }
97
- }
98
-
99
- // 可见度监听(离开页面和返回时更改document的title)
100
- export const visibilityListener = () => {
101
- const iconNode = document.querySelector('[rel="icon"]')
102
- document.addEventListener('visibilitychange', () => {
103
- switch (document.visibilityState) {
104
- case 'hidden':
105
- iconNode.setAttribute('href', statics + CONFIG.favicon.hidden)
106
- document.title = LOCAL.favicon.hide
107
- if (CONFIG.loader.switch) {
108
- Loader.show()
109
- }
110
- clearTimeout(titleTime)
111
- break
112
- case 'visible':
113
- iconNode.setAttribute('href', statics + CONFIG.favicon.normal)
114
- document.title = LOCAL.favicon.show
115
- if (CONFIG.loader.switch) {
116
- Loader.hide(1000)
117
- }
118
- setTitleTime(setTimeout(() => {
119
- document.title = originTitle
120
- }, 2000))
121
- break
122
- }
123
- }, { passive: true })
124
- }
1
+ import { sideBarToggleHandle } from '../components/sidebar'
2
+ import {
3
+ backToTop,
4
+ diffY,
5
+ headerHight,
6
+ headerHightInner,
7
+ oWinWidth,
8
+ originTitle,
9
+ scrollAction,
10
+ sideBar,
11
+ siteBrand,
12
+ siteHeader,
13
+ siteNav,
14
+ statics,
15
+ titleTime,
16
+ toolBtn,
17
+ setSiteNavHeight,
18
+ setHeaderHightInner,
19
+ setHeaderHight,
20
+ setOWinHeight, setOWinWidth, setDiffY, setTitleTime, CONFIG
21
+ } from './globalVars'
22
+ import { changeMetaTheme } from './themeColor'
23
+ import { Loader } from './thirdparty'
24
+ import { getHeight, setWidth } from '../library/proto'
25
+
26
+ const wavesEle = document.getElementById('waves')
27
+
28
+ export const resizeHandle = () => {
29
+ // 获取 siteNav 的高度
30
+ setSiteNavHeight(getHeight(siteNav))
31
+ // 获取 siteHeader 的高度
32
+ setHeaderHightInner(getHeight(siteHeader))
33
+ // 获取 #waves 的高度
34
+ setHeaderHight(headerHightInner + getHeight(wavesEle))
35
+
36
+ // 判断窗口宽度是否改变
37
+ if (oWinWidth !== window.innerWidth) {
38
+ sideBarToggleHandle(null, 1)
39
+ }
40
+
41
+ // 记录窗口高度和宽度
42
+ setOWinHeight(window.innerHeight)
43
+ setOWinWidth(window.innerWidth)
44
+ }
45
+
46
+ export const scrollHandle = () => {
47
+ // 获取窗口高度
48
+ const winHeight = window.innerHeight
49
+ // 获取文档高度
50
+ const docHeight = (document.querySelector('main > .inner') as HTMLElement).offsetHeight
51
+ // 计算可见内容高度
52
+ const contentVisibilityHeight = docHeight > winHeight ? docHeight - winHeight : document.body.scrollHeight - winHeight
53
+ // 判断页面是否滚动超过 headerHightInner
54
+ const SHOW = window.scrollY > headerHightInner
55
+ // 判断页面是否开始滚动
56
+ const startScroll = window.scrollY > 0
57
+
58
+ // 根据条件修改 meta theme
59
+ if (SHOW) {
60
+ changeMetaTheme('#FFF')
61
+ } else {
62
+ changeMetaTheme('#222')
63
+ }
64
+
65
+ // 控制导航栏的显示隐藏
66
+ siteNav.toggleClass('show', SHOW)
67
+ // 控制网站 logo 的显示隐藏
68
+ toolBtn.toggleClass('affix', startScroll)
69
+ // 控制侧边栏的显示隐藏,当滚动高度大于 headerHight 且窗口宽度大于 991px 时显示
70
+ siteBrand.toggleClass('affix', startScroll)
71
+ sideBar.toggleClass('affix', window.scrollY > headerHight && document.body.offsetWidth > 991)
72
+ // 初始化滚动时导航栏的显示方向
73
+ if (typeof scrollAction.y === 'undefined') {
74
+ scrollAction.y = window.scrollY
75
+ }
76
+ setDiffY(scrollAction.y - window.scrollY)
77
+
78
+ // 控制滑动时导航栏显示
79
+ if (diffY < 0) {
80
+ siteNav.removeClass('up')
81
+ siteNav.toggleClass('down', SHOW)
82
+ } else if (diffY > 0) {
83
+ siteNav.removeClass('down')
84
+ siteNav.toggleClass('up', SHOW)
85
+ } else { /* empty */ }
86
+ scrollAction.y = window.scrollY
87
+ // 计算滚动百分比
88
+ const scrollPercent = Math.round(Math.min(100 * window.scrollY / contentVisibilityHeight, 100)) + '%'
89
+ // 更新回到顶部按钮的文字
90
+ if (backToTop.querySelector('span').innerText !== scrollPercent) {
91
+ backToTop.querySelector('span').innerText = scrollPercent
92
+ }
93
+ // 更新百分比进度条的宽度
94
+ if (document.getElementById('sidebar').hasClass('affix') || document.getElementById('sidebar').hasClass('on')) {
95
+ setWidth(document.querySelector('.percent'), scrollPercent)
96
+ }
97
+ }
98
+
99
+ // 可见度监听(离开页面和返回时更改document的title)
100
+ export const visibilityListener = () => {
101
+ const iconNode = document.querySelector('[rel="icon"]')
102
+ document.addEventListener('visibilitychange', () => {
103
+ switch (document.visibilityState) {
104
+ case 'hidden':
105
+ iconNode.setAttribute('href', statics + CONFIG.favicon.hidden)
106
+ document.title = LOCAL.favicon.hide
107
+ if (CONFIG.loader.switch) {
108
+ Loader.show()
109
+ }
110
+ clearTimeout(titleTime)
111
+ break
112
+ case 'visible':
113
+ iconNode.setAttribute('href', statics + CONFIG.favicon.normal)
114
+ document.title = LOCAL.favicon.show
115
+ if (CONFIG.loader.switch) {
116
+ Loader.hide(1000)
117
+ }
118
+ setTitleTime(setTimeout(() => {
119
+ document.title = originTitle
120
+ }, 2000))
121
+ break
122
+ }
123
+ }, { passive: true })
124
+ }