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,115 +1,115 @@
1
- import { BODY, CONFIG, setSiteSearch, siteSearch } from '../globals/globalVars'
2
- import { transition } from '../library/anime'
3
- import { $dom } from '../library/dom'
4
- import { searchBox, configure, stats, hits, pagination } from 'instantsearch.js/es/widgets'
5
- import type { HitHighlightResult } from 'instantsearch.js/es/types/results'
6
- import instantsearch from 'instantsearch.js'
7
- import algoliasearch from 'algoliasearch/lite'
8
-
9
- export function algoliaSearch (pjax) {
10
- const search = instantsearch({
11
- indexName: CONFIG.search.indexName,
12
- searchClient: algoliasearch(CONFIG.search.appID, CONFIG.search.apiKey),
13
- // TODO 移除弃用函数
14
- searchFunction (helper) {
15
- const searchInput = document.querySelector('.search-input') as HTMLInputElement
16
- if (searchInput.value) {
17
- helper.search()
18
- }
19
- }
20
- })
21
-
22
- search.on('render', () => {
23
- pjax.refresh(document.getElementById("search-hits"))
24
- })
25
-
26
- // Registering Widgets
27
- search.addWidgets([
28
- configure({
29
- hitsPerPage: CONFIG.search.hits.per_page || 10
30
- }),
31
-
32
- searchBox({
33
- container: '.search-input-container',
34
- placeholder: LOCAL.search.placeholder,
35
- // Hide default icons of algolia search
36
- showReset: false,
37
- showSubmit: false,
38
- showLoadingIndicator: false,
39
- cssClasses: {
40
- input: 'search-input'
41
- }
42
- }),
43
-
44
- stats({
45
- container: '#search-stats',
46
- templates: {
47
- text (data) {
48
- const stats = LOCAL.search.stats
49
- .replace(/\$\{hits}/, data.nbHits.toString())
50
- .replace(/\$\{time}/, data.processingTimeMS.toString())
51
- return stats + '<span class="algolia-powered"></span><hr>'
52
- }
53
- }
54
- }),
55
-
56
- hits({
57
- container: '#search-hits',
58
- templates: {
59
- item (data) {
60
- const cats = data.categories ? '<span>' + data.categories.join('<i class="ic i-angle-right"></i>') + '</span>' : ''
61
- return '<a href="' + CONFIG.root + data.path + '">' + cats + (data._highlightResult.title as HitHighlightResult).value + '</a>'
62
- },
63
- empty (data) {
64
- return '<div id="hits-empty">' +
65
- LOCAL.search.empty.replace(/\$\{query}/, data.query) +
66
- '</div>'
67
- }
68
- },
69
- cssClasses: {
70
- item: 'item'
71
- }
72
- }),
73
-
74
- pagination({
75
- container: '#search-pagination',
76
- scrollTo: false,
77
- showFirst: false,
78
- showLast: false,
79
- templates: {
80
- first: '<i class="ic i-angle-double-left"></i>',
81
- last: '<i class="ic i-angle-double-right"></i>',
82
- previous: '<i class="ic i-angle-left"></i>',
83
- next: '<i class="ic i-angle-right"></i>'
84
- },
85
- cssClasses: {
86
- root: 'pagination',
87
- item: 'pagination-item',
88
- link: 'page-number',
89
- selectedItem: 'current',
90
- disabledItem: 'disabled-item'
91
- }
92
- })
93
- ])
94
-
95
- search.start()
96
-
97
- // Monitor main search box
98
- const onPopupClose = () => {
99
- document.body.style.overflow = ''
100
- transition(siteSearch, 0) // "transition.shrinkOut"
101
- }
102
-
103
- siteSearch.addEventListener('click', (event) => {
104
- if (event.target === siteSearch) {
105
- onPopupClose()
106
- }
107
- })
108
- document.querySelector('.close-btn').addEventListener('click', onPopupClose)
109
- window.addEventListener('pjax:success', onPopupClose)
110
- window.addEventListener('keyup', (event) => {
111
- if (event.key === 'Escape') {
112
- onPopupClose()
113
- }
114
- })
115
- }
1
+ import { BODY, CONFIG, setSiteSearch, siteSearch } from '../globals/globalVars'
2
+ import { transition } from '../library/anime'
3
+ import { $dom } from '../library/dom'
4
+ import { searchBox, configure, stats, hits, pagination } from 'instantsearch.js/es/widgets'
5
+ import type { HitHighlightResult } from 'instantsearch.js/es/types/results'
6
+ import instantsearch from 'instantsearch.js'
7
+ import algoliasearch from 'algoliasearch/lite'
8
+
9
+ export function algoliaSearch (pjax) {
10
+ const search = instantsearch({
11
+ indexName: CONFIG.search.indexName,
12
+ searchClient: algoliasearch(CONFIG.search.appID, CONFIG.search.apiKey),
13
+ // TODO 移除弃用函数
14
+ searchFunction (helper) {
15
+ const searchInput = document.querySelector('.search-input') as HTMLInputElement
16
+ if (searchInput.value) {
17
+ helper.search()
18
+ }
19
+ }
20
+ })
21
+
22
+ search.on('render', () => {
23
+ pjax.refresh(document.getElementById("search-hits"))
24
+ })
25
+
26
+ // Registering Widgets
27
+ search.addWidgets([
28
+ configure({
29
+ hitsPerPage: CONFIG.search.hits.per_page || 10
30
+ }),
31
+
32
+ searchBox({
33
+ container: '.search-input-container',
34
+ placeholder: LOCAL.search.placeholder,
35
+ // Hide default icons of algolia search
36
+ showReset: false,
37
+ showSubmit: false,
38
+ showLoadingIndicator: false,
39
+ cssClasses: {
40
+ input: 'search-input'
41
+ }
42
+ }),
43
+
44
+ stats({
45
+ container: '#search-stats',
46
+ templates: {
47
+ text (data) {
48
+ const stats = LOCAL.search.stats
49
+ .replace(/\$\{hits}/, data.nbHits.toString())
50
+ .replace(/\$\{time}/, data.processingTimeMS.toString())
51
+ return stats + '<span class="algolia-powered"></span><hr>'
52
+ }
53
+ }
54
+ }),
55
+
56
+ hits({
57
+ container: '#search-hits',
58
+ templates: {
59
+ item (data) {
60
+ const cats = data.categories ? '<span>' + data.categories.join('<i class="ic i-angle-right"></i>') + '</span>' : ''
61
+ return '<a href="' + CONFIG.root + data.path + '">' + cats + (data._highlightResult.title as HitHighlightResult).value + '</a>'
62
+ },
63
+ empty (data) {
64
+ return '<div id="hits-empty">' +
65
+ LOCAL.search.empty.replace(/\$\{query}/, data.query) +
66
+ '</div>'
67
+ }
68
+ },
69
+ cssClasses: {
70
+ item: 'item'
71
+ }
72
+ }),
73
+
74
+ pagination({
75
+ container: '#search-pagination',
76
+ scrollTo: false,
77
+ showFirst: false,
78
+ showLast: false,
79
+ templates: {
80
+ first: '<i class="ic i-angle-double-left"></i>',
81
+ last: '<i class="ic i-angle-double-right"></i>',
82
+ previous: '<i class="ic i-angle-left"></i>',
83
+ next: '<i class="ic i-angle-right"></i>'
84
+ },
85
+ cssClasses: {
86
+ root: 'pagination',
87
+ item: 'pagination-item',
88
+ link: 'page-number',
89
+ selectedItem: 'current',
90
+ disabledItem: 'disabled-item'
91
+ }
92
+ })
93
+ ])
94
+
95
+ search.start()
96
+
97
+ // Monitor main search box
98
+ const onPopupClose = () => {
99
+ document.body.style.overflow = ''
100
+ transition(siteSearch, 0) // "transition.shrinkOut"
101
+ }
102
+
103
+ siteSearch.addEventListener('click', (event) => {
104
+ if (event.target === siteSearch) {
105
+ onPopupClose()
106
+ }
107
+ })
108
+ document.querySelector('.close-btn').addEventListener('click', onPopupClose)
109
+ window.addEventListener('pjax:success', onPopupClose)
110
+ window.addEventListener('keyup', (event) => {
111
+ if (event.key === 'Escape') {
112
+ onPopupClose()
113
+ }
114
+ })
115
+ }
@@ -1,60 +1,60 @@
1
- import { pageScroll } from '../library/anime'
2
- import { $dom } from '../library/dom'
3
- import { createChild } from '../library/proto'
4
-
5
- export const tabFormat = () => {
6
- // tab
7
- let first_tab:boolean
8
- $dom.each('div.tab', (element) => {
9
- if (element.getAttribute('data-ready')) { return }
10
-
11
- const id = element.getAttribute('data-id')
12
- const title = element.getAttribute('data-title')
13
- let box = document.getElementById(id)
14
- if (!box) {
15
- box = document.createElement('div')
16
- box.className = 'tabs'
17
- box.id = id
18
- box.innerHTML = '<div class="show-btn"></div>'
19
-
20
- const showBtn = box.querySelector('.show-btn')
21
- showBtn.addEventListener('click', () => {
22
- pageScroll(box)
23
- })
24
-
25
- element.parentNode.insertBefore(box, element)
26
- first_tab = true
27
- } else {
28
- first_tab = false
29
- }
30
-
31
- let ul = box.querySelector('.nav ul')
32
- if (!ul) {
33
- ul = createChild(box, 'div', {
34
- className: 'nav',
35
- innerHTML: '<ul></ul>'
36
- }).querySelector('ul')
37
- }
38
-
39
- const li = createChild(ul, 'li', {
40
- innerHTML: title
41
- })
42
-
43
- if (first_tab) {
44
- li.addClass('active')
45
- element.addClass('active')
46
- }
47
-
48
- li.addEventListener('click', (event) => {
49
- const target = event.currentTarget
50
- box.find('.active').forEach((el) => {
51
- el.removeClass('active')
52
- })
53
- element.addClass('active')
54
- target.addClass('active')
55
- })
56
-
57
- box.appendChild(element)
58
- element.setAttribute('data-ready', String(true))
59
- })
60
- }
1
+ import { pageScroll } from '../library/anime'
2
+ import { $dom } from '../library/dom'
3
+ import { createChild } from '../library/proto'
4
+
5
+ export const tabFormat = () => {
6
+ // tab
7
+ let first_tab:boolean
8
+ $dom.each('div.tab', (element) => {
9
+ if (element.getAttribute('data-ready')) { return }
10
+
11
+ const id = element.getAttribute('data-id')
12
+ const title = element.getAttribute('data-title')
13
+ let box = document.getElementById(id)
14
+ if (!box) {
15
+ box = document.createElement('div')
16
+ box.className = 'tabs'
17
+ box.id = id
18
+ box.innerHTML = '<div class="show-btn"></div>'
19
+
20
+ const showBtn = box.querySelector('.show-btn')
21
+ showBtn.addEventListener('click', () => {
22
+ pageScroll(box)
23
+ })
24
+
25
+ element.parentNode.insertBefore(box, element)
26
+ first_tab = true
27
+ } else {
28
+ first_tab = false
29
+ }
30
+
31
+ let ul = box.querySelector('.nav ul')
32
+ if (!ul) {
33
+ ul = createChild(box, 'div', {
34
+ className: 'nav',
35
+ innerHTML: '<ul></ul>'
36
+ }).querySelector('ul')
37
+ }
38
+
39
+ const li = createChild(ul, 'li', {
40
+ innerHTML: title
41
+ })
42
+
43
+ if (first_tab) {
44
+ li.addClass('active')
45
+ element.addClass('active')
46
+ }
47
+
48
+ li.addEventListener('click', (event) => {
49
+ const target = event.currentTarget
50
+ box.find('.active').forEach((el) => {
51
+ el.removeClass('active')
52
+ })
53
+ element.addClass('active')
54
+ target.addClass('active')
55
+ })
56
+
57
+ box.appendChild(element)
58
+ element.setAttribute('data-ready', String(true))
59
+ })
60
+ }
@@ -1,97 +1,97 @@
1
- import { backToTopHandle, goToBottomHandle, goToCommentHandle, sideBarToggleHandle } from '../components/sidebar'
2
- import {
3
- backToTop,
4
- goToComment,
5
- loadCat,
6
- menuToggle,
7
- quickBtn, setBackToTop, setGoToComment, setShowContents, setToolBtn,
8
- setToolPlayer,
9
- showContents,
10
- siteHeader,
11
- siteNav,
12
- toolBtn,
13
- toolPlayer
14
- } from '../globals/globalVars'
15
- import { Loader } from '../globals/thirdparty'
16
- import { $dom } from '../library/dom'
17
- import { mediaPlayer } from '../player'
18
- import { createChild } from '../library/proto'
19
-
20
- export default function domInit () {
21
- $dom.each('.overview .menu > .item', (el) => {
22
- siteNav.querySelector('.menu').appendChild(el.cloneNode(true))
23
- })
24
-
25
- loadCat.addEventListener('click', Loader.vanish)
26
- menuToggle.addEventListener('click', sideBarToggleHandle)
27
- document.querySelector('.dimmer').addEventListener('click', sideBarToggleHandle)
28
-
29
- quickBtn.querySelector('.down').addEventListener('click', goToBottomHandle)
30
- quickBtn.querySelector('.up').addEventListener('click', backToTopHandle)
31
-
32
- if (!toolBtn) {
33
- setToolBtn(createChild(siteHeader, 'div', {
34
- id: 'tool',
35
- innerHTML: '<div class="item player"></div><div class="item contents"><i class="ic i-list-ol"></i></div><div class="item chat"><i class="ic i-comments"></i></div><div class="item back-to-top"><i class="ic i-arrow-up"></i><span>0%</span></div>'
36
- }))
37
- }
38
-
39
- setToolPlayer(toolBtn.querySelector('.player'))
40
- setBackToTop(toolBtn.querySelector('.back-to-top'))
41
- setGoToComment(toolBtn.querySelector('.chat'))
42
- setShowContents(toolBtn.querySelector('.contents'))
43
-
44
- backToTop.addEventListener('click', backToTopHandle)
45
- goToComment.addEventListener('click', goToCommentHandle)
46
- showContents.addEventListener('click', sideBarToggleHandle)
47
-
48
- if (__shokax_player__) {
49
- mediaPlayer(toolPlayer)
50
-
51
- document.querySelector('main').addEventListener('click', () => {
52
- toolPlayer.player.mini()
53
- })
54
- }
55
-
56
- const createIntersectionObserver = () => {
57
- // waves在视口外时停止动画
58
- new IntersectionObserver(([entry]) => {
59
- if (entry.isIntersecting) {
60
- document.querySelectorAll('.parallax>use').forEach(i => {
61
- i.classList.remove('stop-animation')
62
- })
63
- document.querySelectorAll('#imgs .item').forEach(i => {
64
- i.classList.remove('stop-animation')
65
- })
66
- } else {
67
- document.querySelectorAll('.parallax>use').forEach(i => {
68
- i.classList.add('stop-animation')
69
- })
70
- // waves不可见时imgs也应该不可见了
71
- document.querySelectorAll('#imgs .item').forEach(i => {
72
- i.classList.add('stop-animation')
73
- })
74
- }
75
- }, {
76
- root: null,
77
- threshold: 0.2
78
- }).observe(document.getElementById('waves'))
79
-
80
- // sakura在视口外时停止动画
81
- new IntersectionObserver(([entry]) => {
82
- if (entry.isIntersecting) {
83
- document.querySelectorAll('.with-love>i').forEach(i => {
84
- i.classList.remove('stop-animation')
85
- })
86
- } else {
87
- document.querySelectorAll('.with-love>i').forEach(i => {
88
- i.classList.add('stop-animation')
89
- })
90
- }
91
- }, {
92
- root: null,
93
- threshold: 0.2
94
- }).observe(document.querySelector('.with-love'))
95
- }
96
- createIntersectionObserver()
97
- }
1
+ import { backToTopHandle, goToBottomHandle, goToCommentHandle, sideBarToggleHandle } from '../components/sidebar'
2
+ import {
3
+ backToTop,
4
+ goToComment,
5
+ loadCat,
6
+ menuToggle,
7
+ quickBtn, setBackToTop, setGoToComment, setShowContents, setToolBtn,
8
+ setToolPlayer,
9
+ showContents,
10
+ siteHeader,
11
+ siteNav,
12
+ toolBtn,
13
+ toolPlayer
14
+ } from '../globals/globalVars'
15
+ import { Loader } from '../globals/thirdparty'
16
+ import { $dom } from '../library/dom'
17
+ import { mediaPlayer } from '../player'
18
+ import { createChild } from '../library/proto'
19
+
20
+ export default function domInit () {
21
+ $dom.each('.overview .menu > .item', (el) => {
22
+ siteNav.querySelector('.menu').appendChild(el.cloneNode(true))
23
+ })
24
+
25
+ loadCat.addEventListener('click', Loader.vanish)
26
+ menuToggle.addEventListener('click', sideBarToggleHandle)
27
+ document.querySelector('.dimmer').addEventListener('click', sideBarToggleHandle)
28
+
29
+ quickBtn.querySelector('.down').addEventListener('click', goToBottomHandle)
30
+ quickBtn.querySelector('.up').addEventListener('click', backToTopHandle)
31
+
32
+ if (!toolBtn) {
33
+ setToolBtn(createChild(siteHeader, 'div', {
34
+ id: 'tool',
35
+ innerHTML: '<div class="item player"></div><div class="item contents"><i class="ic i-list-ol"></i></div><div class="item chat"><i class="ic i-comments"></i></div><div class="item back-to-top"><i class="ic i-arrow-up"></i><span>0%</span></div>'
36
+ }))
37
+ }
38
+
39
+ setToolPlayer(toolBtn.querySelector('.player'))
40
+ setBackToTop(toolBtn.querySelector('.back-to-top'))
41
+ setGoToComment(toolBtn.querySelector('.chat'))
42
+ setShowContents(toolBtn.querySelector('.contents'))
43
+
44
+ backToTop.addEventListener('click', backToTopHandle)
45
+ goToComment.addEventListener('click', goToCommentHandle)
46
+ showContents.addEventListener('click', sideBarToggleHandle)
47
+
48
+ if (__shokax_player__) {
49
+ mediaPlayer(toolPlayer)
50
+
51
+ document.querySelector('main').addEventListener('click', () => {
52
+ toolPlayer.player.mini()
53
+ })
54
+ }
55
+
56
+ const createIntersectionObserver = () => {
57
+ // waves在视口外时停止动画
58
+ new IntersectionObserver(([entry]) => {
59
+ if (entry.isIntersecting) {
60
+ document.querySelectorAll('.parallax>use').forEach(i => {
61
+ i.classList.remove('stop-animation')
62
+ })
63
+ document.querySelectorAll('#imgs .item').forEach(i => {
64
+ i.classList.remove('stop-animation')
65
+ })
66
+ } else {
67
+ document.querySelectorAll('.parallax>use').forEach(i => {
68
+ i.classList.add('stop-animation')
69
+ })
70
+ // waves不可见时imgs也应该不可见了
71
+ document.querySelectorAll('#imgs .item').forEach(i => {
72
+ i.classList.add('stop-animation')
73
+ })
74
+ }
75
+ }, {
76
+ root: null,
77
+ threshold: 0.2
78
+ }).observe(document.getElementById('waves'))
79
+
80
+ // sakura在视口外时停止动画
81
+ new IntersectionObserver(([entry]) => {
82
+ if (entry.isIntersecting) {
83
+ document.querySelectorAll('.with-love>i').forEach(i => {
84
+ i.classList.remove('stop-animation')
85
+ })
86
+ } else {
87
+ document.querySelectorAll('.with-love>i').forEach(i => {
88
+ i.classList.add('stop-animation')
89
+ })
90
+ }
91
+ }, {
92
+ root: null,
93
+ threshold: 0.2
94
+ }).observe(document.querySelector('.with-love'))
95
+ }
96
+ createIntersectionObserver()
97
+ }