@x-edu/live-player 0.0.19 → 0.0.21

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 (302) hide show
  1. package/.browserslistrc +10 -10
  2. package/.eslintignore +8 -8
  3. package/.eslintrc.js +26 -26
  4. package/.gem-mine +11 -11
  5. package/.postcssrc.js +6 -6
  6. package/README.md +145 -145
  7. package/babel.config.js +33 -33
  8. package/dist/XEduLivePlayer.common.js +12161 -1154
  9. package/dist/XEduLivePlayerPre.common.js +12369 -1358
  10. package/doc/develop.md +23 -23
  11. package/gem-mine.config.js +86 -86
  12. package/jest.config.js +9 -9
  13. package/jsconfig.json +15 -15
  14. package/mock/helper.js +8 -8
  15. package/mock/index.js +34 -34
  16. package/package.json +99 -99
  17. package/public/3rd/ali-player/alipayercomponents-1.0.8.min.js +26 -26
  18. package/public/3rd/ali-player/aliplayer-hls-min.js +27 -27
  19. package/public/3rd/ali-player/aliplayer-min.js +1 -1
  20. package/public/3rd/im-web-push/index.umd.js +14 -14
  21. package/public/JsBridge.js +1602 -1602
  22. package/public/fish/editor/themes/default/css/ueditor.css +1905 -1905
  23. package/public/fish/editor/third-party/codemirror/codemirror.css +104 -104
  24. package/public/fish/editor/third-party/codemirror/codemirror.js +3581 -3581
  25. package/public/fish/editor/third-party/zeroclipboard/ZeroClipboard.js +1255 -1255
  26. package/public/fish/editor/ueditor.all.min.js +16 -16
  27. package/public/fish/editor/ueditor.config.js +467 -467
  28. package/public/fish/icon/umd-4.1.2.js +1 -1
  29. package/public/fish/video/videoplayer.min.css +6 -6
  30. package/public/fish/video/videoplayer.min.js +31 -31
  31. package/public/fish/video/zh-CN.js +82 -82
  32. package/public/icon/demo.css +539 -539
  33. package/public/icon/demo_index.html +2189 -2189
  34. package/public/icon/iconfont.css +363 -363
  35. package/public/icon/iconfont.json +618 -618
  36. package/public/index.html +50 -50
  37. package/script/image/readme.md +77 -77
  38. package/script/postcss.js +48 -48
  39. package/src/App.jsx +24 -24
  40. package/src/asset/img/course/playing.svg +21 -21
  41. package/src/asset/img/icon-course-white.svg +3 -3
  42. package/src/asset/img/icon-course.svg +3 -3
  43. package/src/asset/img/icon-eye-white.svg +4 -4
  44. package/src/asset/img/icon-eye.svg +4 -4
  45. package/src/asset/img/icon-school-white.svg +3 -3
  46. package/src/asset/img/icon-school.svg +3 -3
  47. package/src/asset/img/loading.svg +52 -52
  48. package/src/asset/img/video-play.svg +6 -6
  49. package/src/asset/style/background.less +19 -19
  50. package/src/asset/style/banner.less +36 -36
  51. package/src/asset/style/base.less +74 -74
  52. package/src/asset/style/index.less +114 -114
  53. package/src/asset/style/reset-theme.less +141 -141
  54. package/src/asset/style/theme/index.less +55 -55
  55. package/src/asset/style/theme/party/global.less +20 -20
  56. package/src/asset/style/theme/party/override.less +57 -57
  57. package/src/asset/style/theme/test/global.less +18 -18
  58. package/src/asset/style/theme/test/override.less +45 -45
  59. package/src/asset/style/variable.less +12 -12
  60. package/src/component/AliPlayer/index.jsx +49 -49
  61. package/src/component/Avatar/index.jsx +50 -50
  62. package/src/component/Empty/index.jsx +34 -34
  63. package/src/component/Empty/index.module.less +37 -37
  64. package/src/component/IMChatroom/component/status/403.jsx +13 -13
  65. package/src/component/IMChatroom/component/status/404.jsx +13 -13
  66. package/src/component/IMChatroom/component/status/Error.jsx +23 -23
  67. package/src/component/IMChatroom/component/status/Loading.jsx +5 -5
  68. package/src/component/IMChatroom/config/app/config.js +118 -118
  69. package/src/component/IMChatroom/config/app/index.js +60 -60
  70. package/src/component/IMChatroom/config/env.js +5 -5
  71. package/src/component/IMChatroom/config/index.js +3 -3
  72. package/src/component/IMChatroom/config/request/config/base.js +124 -124
  73. package/src/component/IMChatroom/config/request/config/chatroom.js +26 -26
  74. package/src/component/IMChatroom/config/request/config/imCoreApi.js +21 -21
  75. package/src/component/IMChatroom/config/request/index.js +21 -21
  76. package/src/component/IMChatroom/config/request/proxy.js +39 -39
  77. package/src/component/IMChatroom/config/url.js +7 -7
  78. package/src/component/IMChatroom/constants/errorCode.js +9 -9
  79. package/src/component/IMChatroom/constants/index.js +84 -84
  80. package/src/component/IMChatroom/constants/origin.js +27 -27
  81. package/src/component/IMChatroom/context/chatroom.js +154 -154
  82. package/src/component/IMChatroom/context/connect.js +28 -28
  83. package/src/component/IMChatroom/i18n/en/index.json +73 -73
  84. package/src/component/IMChatroom/i18n/index.jsx +14 -14
  85. package/src/component/IMChatroom/i18n/language.js +9 -9
  86. package/src/component/IMChatroom/i18n/zh-CN/index.json +73 -73
  87. package/src/component/IMChatroom/index.jsx +49 -49
  88. package/src/component/IMChatroom/page/chat/index.jsx +27 -27
  89. package/src/component/IMChatroom/page/chat/messageEditor/index.jsx +375 -375
  90. package/src/component/IMChatroom/page/chat/messageList/index.jsx +354 -354
  91. package/src/component/IMChatroom/page/chat/stickedMessage/index.jsx +59 -59
  92. package/src/component/IMChatroom/page/chat/stickedMessage/style/index.module.less +7 -7
  93. package/src/component/IMChatroom/page/chat/style/index.module.less +51 -51
  94. package/src/component/IMChatroom/page/home/connect/index.jsx +188 -188
  95. package/src/component/IMChatroom/page/home/connect/status.jsx +124 -124
  96. package/src/component/IMChatroom/page/home/context/cmd.jsx +37 -37
  97. package/src/component/IMChatroom/page/home/context/index.jsx +67 -67
  98. package/src/component/IMChatroom/page/home/index.jsx +164 -164
  99. package/src/component/IMChatroom/page/home/notice/index.jsx +123 -123
  100. package/src/component/IMChatroom/page/home/notice/style/index.module.less +49 -49
  101. package/src/component/IMChatroom/page/home/style/index.module.less +110 -110
  102. package/src/component/IMChatroom/page/member/index.jsx +15 -15
  103. package/src/component/IMChatroom/page/member/memberCount/index.jsx +44 -44
  104. package/src/component/IMChatroom/page/member/memberList/index.jsx +121 -121
  105. package/src/component/IMChatroom/page/member/style/index.module.less +2 -2
  106. package/src/component/IMChatroom/sdk/bridge.js +39 -39
  107. package/src/component/IMChatroom/sdk/cs/constants.js +20 -20
  108. package/src/component/IMChatroom/sdk/cs/index.js +101 -101
  109. package/src/component/IMChatroom/sdk/imChatroom.js +15 -15
  110. package/src/component/IMChatroom/sdk/imcore/constants.js +128 -128
  111. package/src/component/IMChatroom/sdk/imcore/emitters/chatroomDestroyed.js +5 -5
  112. package/src/component/IMChatroom/sdk/imcore/emitters/chatroomInfoGetFail.js +5 -5
  113. package/src/component/IMChatroom/sdk/imcore/emitters/chatroomKickedByAdmin.js +5 -5
  114. package/src/component/IMChatroom/sdk/imcore/emitters/chatroomKickedBySelf.js +5 -5
  115. package/src/component/IMChatroom/sdk/imcore/emitters/chatroomLoginFail.js +5 -5
  116. package/src/component/IMChatroom/sdk/imcore/emitters/chatroomLoginSuccess.js +5 -5
  117. package/src/component/IMChatroom/sdk/imcore/emitters/chatroomMemberLogin.js +5 -5
  118. package/src/component/IMChatroom/sdk/imcore/emitters/chatroomMemberLogout.js +5 -5
  119. package/src/component/IMChatroom/sdk/imcore/emitters/connectionConnected.js +5 -5
  120. package/src/component/IMChatroom/sdk/imcore/emitters/connectionConnecting.js +5 -5
  121. package/src/component/IMChatroom/sdk/imcore/emitters/connectionDisconnect.js +5 -5
  122. package/src/component/IMChatroom/sdk/imcore/emitters/index.js +57 -57
  123. package/src/component/IMChatroom/sdk/imcore/emitters/messageReceive.js +36 -36
  124. package/src/component/IMChatroom/sdk/imcore/index.js +178 -178
  125. package/src/component/IMChatroom/sdk/imcore/interceptors/request.js +7 -7
  126. package/src/component/IMChatroom/sdk/imcore/interceptors/response.js +5 -5
  127. package/src/component/IMChatroom/sdk/imcore/plugins/getAuth.js +64 -64
  128. package/src/component/IMChatroom/sdk/imcore/plugins/getConversationId.js +20 -20
  129. package/src/component/IMChatroom/sdk/imcore/plugins/getExtInfo.js +10 -10
  130. package/src/component/IMChatroom/sdk/imcore/plugins/getLoginInfo.js +48 -48
  131. package/src/component/IMChatroom/sdk/imcore/plugins/getPlatformType.js +12 -12
  132. package/src/component/IMChatroom/sdk/imcore/plugins/index.js +22 -22
  133. package/src/component/IMChatroom/sdk/imcore/util/format.js +177 -177
  134. package/src/component/IMChatroom/sdk/imcore/util/parser.js +35 -35
  135. package/src/component/IMChatroom/sdk/oms.js +18 -18
  136. package/src/component/IMChatroom/sdk/uc.js +3 -3
  137. package/src/component/IMChatroom/subscription/channel/app.js +5 -5
  138. package/src/component/IMChatroom/subscription/channel/ctl.js +22 -22
  139. package/src/component/IMChatroom/subscription/channel/member.js +40 -40
  140. package/src/component/IMChatroom/subscription/channel/message.js +13 -13
  141. package/src/component/IMChatroom/subscription/channel/ntf.js +86 -86
  142. package/src/component/IMChatroom/subscription/channel/tel.js +5 -5
  143. package/src/component/IMChatroom/subscription/channel/websocket.js +5 -5
  144. package/src/component/IMChatroom/subscription/event.js +37 -37
  145. package/src/component/IMChatroom/subscription/index.js +19 -19
  146. package/src/component/IMChatroom/util/account.js +8 -8
  147. package/src/component/IMChatroom/util/chatroom.js +255 -255
  148. package/src/component/IMChatroom/util/jsonBigInt.js +5 -5
  149. package/src/component/IMChatroom/util/location.js +12 -12
  150. package/src/component/Icon/index.jsx +16 -16
  151. package/src/component/Icon/index.module.less +2 -2
  152. package/src/component/Pagination/LocalPagination.jsx +27 -27
  153. package/src/component/Pagination/RemotePagination.jsx +32 -32
  154. package/src/component/Pagination/index.jsx +31 -31
  155. package/src/component/Pagination/index.module.less +110 -110
  156. package/src/component/PlayerTip/index.jsx +34 -34
  157. package/src/component/VideoBase/index.jsx +242 -242
  158. package/src/component/VideoBase/style.less +65 -65
  159. package/src/component/VideoBase/utils.js +81 -81
  160. package/src/component/mixin.less +9 -9
  161. package/src/component/status/403.jsx +15 -15
  162. package/src/component/status/404/index.jsx +73 -73
  163. package/src/component/status/404/index.module.less +36 -36
  164. package/src/component/status/Error/error.module.less +13 -13
  165. package/src/component/status/Error/index.jsx +47 -47
  166. package/src/component/status/Loading/img/loading.svg +52 -52
  167. package/src/component/status/Loading/index.jsx +31 -31
  168. package/src/component/status/Loading/index.less +56 -56
  169. package/src/component/status/None/index.jsx +20 -20
  170. package/src/component/status/None/index.module.less +35 -35
  171. package/src/component/status/Status/index.jsx +26 -26
  172. package/src/component/status/Status/index.module.less +8 -8
  173. package/src/config/constant/commonUrl.js +2 -2
  174. package/src/config/constant/user.js +6 -6
  175. package/src/config/context/site-config.js +48 -48
  176. package/src/config/env/index.js +5 -5
  177. package/src/config/env/local/index.js +13 -13
  178. package/src/config/env/ncet-xedu/api.js +175 -175
  179. package/src/config/env/ncet-xedu/app.js +12 -12
  180. package/src/config/env/ncet-xedu/cs.js +8 -8
  181. package/src/config/env/ncet-xedu/index.js +14 -14
  182. package/src/config/env/ncet-xedu/push.js +5 -5
  183. package/src/config/env/preproduction/api.js +144 -144
  184. package/src/config/env/preproduction/app.js +12 -12
  185. package/src/config/env/preproduction/cs.js +8 -8
  186. package/src/config/env/preproduction/index.js +14 -14
  187. package/src/config/env/preproduction/push.js +5 -5
  188. package/src/config/env/product/api.js +113 -113
  189. package/src/config/env/product/app.js +12 -12
  190. package/src/config/env/product/cs.js +5 -5
  191. package/src/config/env/product/index.js +14 -14
  192. package/src/config/env/product/push.js +5 -5
  193. package/src/config/live.js +80 -80
  194. package/src/config/publicLive.js +53 -53
  195. package/src/config/request/assessments.js +24 -24
  196. package/src/config/request/config-center.js +8 -8
  197. package/src/config/request/helper.js +166 -166
  198. package/src/config/request/im-broadcasts.js +12 -12
  199. package/src/config/request/live-activity-gateway.js +8 -8
  200. package/src/config/request/live-activity.js +13 -13
  201. package/src/config/request/raw.js +6 -6
  202. package/src/config/request/x-cloud-web.js +13 -13
  203. package/src/config/request/x-proxy.js +34 -34
  204. package/src/demo/Detail.jsx +11 -11
  205. package/src/demo/List.jsx +64 -64
  206. package/src/demo/index.jsx +17 -17
  207. package/src/detail/LineSwitch/index.jsx +71 -71
  208. package/src/detail/LiveCountDown/index.jsx +44 -44
  209. package/src/detail/LiveCountDown/index.module.less +31 -31
  210. package/src/detail/LiveOnlineCount/img/icon.svg +15 -15
  211. package/src/detail/LiveOnlineCount/index.jsx +68 -68
  212. package/src/detail/LiveOnlineCount/index.module.less +34 -34
  213. package/src/detail/LiveOnlineCount/util.js +74 -74
  214. package/src/detail/LiveStatus/AnchorOnTheWay.jsx +88 -88
  215. package/src/detail/LiveStatus/index.jsx +202 -202
  216. package/src/detail/LiveStatus/index.module.less +192 -192
  217. package/src/detail/LiveVideo/config.js +37 -37
  218. package/src/detail/LiveVideo/index.jsx +188 -188
  219. package/src/detail/LiveVideo/index.module.less +41 -41
  220. package/src/detail/NotLoginChatroom/index.jsx +37 -37
  221. package/src/detail/NotLoginChatroom/index.module.less +46 -46
  222. package/src/detail/RecordVideo/index.jsx +150 -150
  223. package/src/detail/RecordVideo/index.module.less +31 -31
  224. package/src/detail/ReplayVideo/index.jsx +93 -93
  225. package/src/detail/ReplayVideo/index.module.less +65 -65
  226. package/src/detail/const.js +20 -20
  227. package/src/detail/hook/usePullSource.js +82 -82
  228. package/src/detail/hook/usePullState.js +51 -51
  229. package/src/detail/index.jsx +482 -482
  230. package/src/detail/index.module.less +188 -188
  231. package/src/hook/useAsync.js +84 -84
  232. package/src/hook/useGoToPage.js +83 -83
  233. package/src/hook/useInterval.js +28 -28
  234. package/src/hook/useIsMounted.js +17 -17
  235. package/src/hook/useModuleByRole.js +53 -53
  236. package/src/hook/usePageScrollable.js +52 -52
  237. package/src/hook/usePortal.js +83 -83
  238. package/src/hook/useScrollRestore/index.js +32 -32
  239. package/src/hook/useScrollRestore/scrollContext.js +20 -20
  240. package/src/hook/useTrackRef.js +11 -11
  241. package/src/hook/useWindowSize.js +28 -28
  242. package/src/hook/useZoom.js +47 -47
  243. package/src/index.js +10 -10
  244. package/src/lib/getLiveOnlineCount.js +10 -10
  245. package/src/lib/getServiceConfig.js +102 -102
  246. package/src/list/Empty/index.jsx +20 -20
  247. package/src/list/Empty/index.module.less +23 -23
  248. package/src/list/ListItem/Action/index.jsx +98 -98
  249. package/src/list/ListItem/Action/index.module.less +21 -21
  250. package/src/list/ListItem/img/dianzan.svg +4 -0
  251. package/src/list/ListItem/img/play.svg +15 -15
  252. package/src/list/ListItem/img/yiguankan.svg +3 -0
  253. package/src/list/ListItem/index.jsx +24 -1
  254. package/src/list/ListItem/index.module.less +146 -123
  255. package/src/list/index.jsx +80 -0
  256. package/src/list/index.module.less +35 -35
  257. package/src/service/common.js +73 -73
  258. package/src/service/content-mgr.js +73 -73
  259. package/src/service/im-group.js +12 -12
  260. package/src/service/im.js +7 -7
  261. package/src/service/imBroadcasts.js +33 -33
  262. package/src/service/like.js +134 -134
  263. package/src/service/manageApi.js +7 -7
  264. package/src/service/managePortal.js +6 -6
  265. package/src/service/myStudyRecord.js +93 -93
  266. package/src/service/navigation.js +47 -47
  267. package/src/service/ndMeeting.js +10 -10
  268. package/src/service/ndr.js +122 -122
  269. package/src/service/news.js +93 -93
  270. package/src/service/personalCenter.js +270 -270
  271. package/src/service/qualityCourse.js +31 -31
  272. package/src/service/recommend.js +81 -81
  273. package/src/service/school.js +323 -323
  274. package/src/service/search.js +170 -170
  275. package/src/service/site-config.js +7 -7
  276. package/src/service/socialCensor.js +45 -45
  277. package/src/service/specialEdu.js +31 -31
  278. package/src/service/suggestion.js +85 -85
  279. package/src/service/syncClassroom.js +321 -321
  280. package/src/service/tCourse.js +204 -204
  281. package/src/service/tchTraining.js +37 -37
  282. package/src/service/uc.js +45 -45
  283. package/src/util/app.js +1 -1
  284. package/src/util/array.js +3 -3
  285. package/src/util/auth/func.js +57 -57
  286. package/src/util/date.js +53 -53
  287. package/src/util/env.js +9 -9
  288. package/src/util/getTimestamp.js +10 -10
  289. package/src/util/hof.js +105 -105
  290. package/src/util/live/index.js +42 -42
  291. package/src/util/liveCountUtil.js +52 -0
  292. package/src/util/netUrl.js +35 -35
  293. package/src/util/object.js +13 -13
  294. package/src/util/push/index.js +58 -58
  295. package/src/util/request.js +227 -227
  296. package/src/util/type.js +17 -17
  297. package/src/util/url.js +203 -203
  298. package/src/util/video.js +26 -26
  299. package/test/setup.js +21 -21
  300. package/test/unit/component/header/logo.spec.jsx +8 -8
  301. package/test/unit/helper.jsx +25 -25
  302. package/test/unit/util/date.spec.js +40 -40
@@ -1,81 +1,81 @@
1
- export function srt2webvtt(data) {
2
- // remove dos newlines
3
- let srt = data.replace(/\r+/g, '')
4
- // trim white space start and end
5
- srt = srt.replace(/^\s+|\s+$/g, '')
6
-
7
- // get cues
8
- const cuelist = srt.split('\n\n')
9
- let result = ''
10
-
11
- if (cuelist.length > 0) {
12
- result += 'WEBVTT\n\n'
13
- for (let i = 0; i < cuelist.length; i += 1) {
14
- result += convertSrtCue(cuelist[i])
15
- }
16
- }
17
-
18
- return result
19
- }
20
-
21
- function convertSrtCue(caption) {
22
- let cue = ''
23
- const s = caption.split(/\n/)
24
-
25
- // concatenate muilt-line string separated in array into one
26
- while (s.length > 3) {
27
- for (let i = 3; i < s.length; i++) {
28
- s[2] += `\n${s[i]}`
29
- }
30
- s.splice(3, s.length - 3)
31
- }
32
-
33
- let line = 0
34
-
35
- // detect identifier
36
- if (!s[0].match(/\d+:\d+:\d+/) && s[1].match(/\d+:\d+:\d+/)) {
37
- cue += `${s[0].match(/\w+/)}\n`
38
- line += 1
39
- }
40
-
41
- // get time strings
42
- if (s[line].match(/\d+:\d+:\d+/)) {
43
- // convert time string
44
- const m = s[1].match(
45
- /(\d+):(\d+):(\d+)(?:,(\d+))?\s*--?>\s*(\d+):(\d+):(\d+)(?:,(\d+))?/
46
- )
47
- if (m) {
48
- cue += `${m[1]}:${m[2]}:${m[3]}.${m[4]} --> ${m[5]}:${m[6]}:${m[7]}.${m[8]}\n`
49
- line += 1
50
- } else {
51
- // Unrecognized timestring
52
- return ''
53
- }
54
- } else {
55
- // file format error or comment lines
56
- return ''
57
- }
58
-
59
- // get cue text
60
- if (s[line]) {
61
- cue += `${s[line]}\n\n`
62
- }
63
-
64
- return cue
65
- }
66
-
67
- export function string2buffer(str) {
68
- // 首先将字符串转为16进制
69
- let val = ''
70
- for (let i = 0; i < str.length; i++) {
71
- if (val === '') {
72
- val = str.charCodeAt(i).toString(16)
73
- } else {
74
- val += `,${str.charCodeAt(i).toString(16)}`
75
- }
76
- }
77
- // 将16进制转化为ArrayBuffer
78
- return new Uint8Array(
79
- val.match(/[\da-f]{2}/gi).map((h) => parseInt(h, 16))
80
- ).buffer
81
- }
1
+ export function srt2webvtt(data) {
2
+ // remove dos newlines
3
+ let srt = data.replace(/\r+/g, '')
4
+ // trim white space start and end
5
+ srt = srt.replace(/^\s+|\s+$/g, '')
6
+
7
+ // get cues
8
+ const cuelist = srt.split('\n\n')
9
+ let result = ''
10
+
11
+ if (cuelist.length > 0) {
12
+ result += 'WEBVTT\n\n'
13
+ for (let i = 0; i < cuelist.length; i += 1) {
14
+ result += convertSrtCue(cuelist[i])
15
+ }
16
+ }
17
+
18
+ return result
19
+ }
20
+
21
+ function convertSrtCue(caption) {
22
+ let cue = ''
23
+ const s = caption.split(/\n/)
24
+
25
+ // concatenate muilt-line string separated in array into one
26
+ while (s.length > 3) {
27
+ for (let i = 3; i < s.length; i++) {
28
+ s[2] += `\n${s[i]}`
29
+ }
30
+ s.splice(3, s.length - 3)
31
+ }
32
+
33
+ let line = 0
34
+
35
+ // detect identifier
36
+ if (!s[0].match(/\d+:\d+:\d+/) && s[1].match(/\d+:\d+:\d+/)) {
37
+ cue += `${s[0].match(/\w+/)}\n`
38
+ line += 1
39
+ }
40
+
41
+ // get time strings
42
+ if (s[line].match(/\d+:\d+:\d+/)) {
43
+ // convert time string
44
+ const m = s[1].match(
45
+ /(\d+):(\d+):(\d+)(?:,(\d+))?\s*--?>\s*(\d+):(\d+):(\d+)(?:,(\d+))?/
46
+ )
47
+ if (m) {
48
+ cue += `${m[1]}:${m[2]}:${m[3]}.${m[4]} --> ${m[5]}:${m[6]}:${m[7]}.${m[8]}\n`
49
+ line += 1
50
+ } else {
51
+ // Unrecognized timestring
52
+ return ''
53
+ }
54
+ } else {
55
+ // file format error or comment lines
56
+ return ''
57
+ }
58
+
59
+ // get cue text
60
+ if (s[line]) {
61
+ cue += `${s[line]}\n\n`
62
+ }
63
+
64
+ return cue
65
+ }
66
+
67
+ export function string2buffer(str) {
68
+ // 首先将字符串转为16进制
69
+ let val = ''
70
+ for (let i = 0; i < str.length; i++) {
71
+ if (val === '') {
72
+ val = str.charCodeAt(i).toString(16)
73
+ } else {
74
+ val += `,${str.charCodeAt(i).toString(16)}`
75
+ }
76
+ }
77
+ // 将16进制转化为ArrayBuffer
78
+ return new Uint8Array(
79
+ val.match(/[\da-f]{2}/gi).map((h) => parseInt(h, 16))
80
+ ).buffer
81
+ }
@@ -1,10 +1,10 @@
1
- .ellipsis() {
2
- overflow: hidden;
3
- white-space: nowrap;
4
- text-overflow: ellipsis;
5
- }
6
-
7
- .bgCompact(@url) {
8
- background-image: url(@url);
9
- background-repeat: no-repeat;
1
+ .ellipsis() {
2
+ overflow: hidden;
3
+ white-space: nowrap;
4
+ text-overflow: ellipsis;
5
+ }
6
+
7
+ .bgCompact(@url) {
8
+ background-image: url(@url);
9
+ background-repeat: no-repeat;
10
10
  }
@@ -1,15 +1,15 @@
1
- import React from 'react'
2
- import { useHistory } from 'react-router-dom'
3
-
4
- export default function Error403() {
5
- const history = useHistory()
6
-
7
- return (
8
- <div>
9
- 您没有权限访问此页面!
10
- <a href="#" onClick={history.goBack}>
11
- ❮ 返回
12
- </a>
13
- </div>
14
- )
15
- }
1
+ import React from 'react'
2
+ import { useHistory } from 'react-router-dom'
3
+
4
+ export default function Error403() {
5
+ const history = useHistory()
6
+
7
+ return (
8
+ <div>
9
+ 您没有权限访问此页面!
10
+ <a href="#" onClick={history.goBack}>
11
+ ❮ 返回
12
+ </a>
13
+ </div>
14
+ )
15
+ }
@@ -1,73 +1,73 @@
1
- import React, { useEffect, useState } from 'react'
2
- import { Link, useLocation } from 'react-router-dom'
3
- import classNames from 'classnames'
4
- import Cookies from 'js-cookie'
5
- import Image from '@/component/Image'
6
- import { getAreaSiteList, getSiteInfo } from '@/service/area-site'
7
- import Area from '@/page/area'
8
-
9
- import style from './index.module.less'
10
-
11
- const errorImg = '@/component/status/404/img/404.png'
12
-
13
- const Error404 = ({ className, tip = '服务器开小差了,请稍后再试试', isBack = true }) => {
14
- const { pathname, search } = useLocation()
15
- const [loading, setLoading] = useState(true)
16
- const [microAreaSite, setMicroAreaSite] = useState(null)
17
- const [microAreaSiteList, setMicroAreaSiteList] = useState(null)
18
-
19
- useEffect(() => {
20
- async function load() {
21
- try {
22
- let siteList = window.areaSiteList
23
- if (!siteList) {
24
- // TODO: 后续可能做本地持久化优化,以及子站路由地址优化
25
- siteList = await getAreaSiteList()
26
- }
27
- const skipAreaSiteList = search.includes('_skip_area_sitelist=1') || !!Cookies.get('skipAreaSiteList') || false
28
- if (skipAreaSiteList) {
29
- // 有很多页面是新页面打开,会话cookie是在浏览器关闭时才会清除,所以要用会话cookie 存储 skipAreaSiteList
30
- Cookies.set('skipAreaSiteList', '1')
31
- }
32
- setMicroAreaSiteList(siteList)
33
- if (siteList || skipAreaSiteList) {
34
- window.areaSiteList = siteList
35
- const code = window.location.pathname.split('/')[1]
36
- const site = siteList.find((t) => t.code === code)
37
- if ((site && site.domain) || skipAreaSiteList) {
38
- const siteInfo = await getSiteInfo(code)
39
- setMicroAreaSite(siteInfo)
40
- setLoading(false)
41
- // window.location.replace(site.domain + window.location.pathname.replace(code, 'area') + window.location.search + window.location.hash)
42
- } else {
43
- setLoading(false)
44
- }
45
- }
46
- } catch (e) {
47
- setLoading(false)
48
- }
49
- }
50
- setLoading(true)
51
- load()
52
- }, [pathname, search])
53
-
54
- if (loading) {
55
- return null
56
- }
57
-
58
- if (microAreaSite) {
59
- return (
60
- <Area siteList={microAreaSiteList} site={microAreaSite} />
61
- )
62
- }
63
-
64
- return (
65
- <div className={classNames(style.error, className)}>
66
- <Image src={errorImg} />
67
- <div className={style.text}>{tip}</div>
68
- {isBack && <Link className={style.back} to="/">返回首页</Link>}
69
- </div>
70
- )
71
- }
72
-
73
- export default Error404
1
+ import React, { useEffect, useState } from 'react'
2
+ import { Link, useLocation } from 'react-router-dom'
3
+ import classNames from 'classnames'
4
+ import Cookies from 'js-cookie'
5
+ import Image from '@/component/Image'
6
+ import { getAreaSiteList, getSiteInfo } from '@/service/area-site'
7
+ import Area from '@/page/area'
8
+
9
+ import style from './index.module.less'
10
+
11
+ const errorImg = '@/component/status/404/img/404.png'
12
+
13
+ const Error404 = ({ className, tip = '服务器开小差了,请稍后再试试', isBack = true }) => {
14
+ const { pathname, search } = useLocation()
15
+ const [loading, setLoading] = useState(true)
16
+ const [microAreaSite, setMicroAreaSite] = useState(null)
17
+ const [microAreaSiteList, setMicroAreaSiteList] = useState(null)
18
+
19
+ useEffect(() => {
20
+ async function load() {
21
+ try {
22
+ let siteList = window.areaSiteList
23
+ if (!siteList) {
24
+ // TODO: 后续可能做本地持久化优化,以及子站路由地址优化
25
+ siteList = await getAreaSiteList()
26
+ }
27
+ const skipAreaSiteList = search.includes('_skip_area_sitelist=1') || !!Cookies.get('skipAreaSiteList') || false
28
+ if (skipAreaSiteList) {
29
+ // 有很多页面是新页面打开,会话cookie是在浏览器关闭时才会清除,所以要用会话cookie 存储 skipAreaSiteList
30
+ Cookies.set('skipAreaSiteList', '1')
31
+ }
32
+ setMicroAreaSiteList(siteList)
33
+ if (siteList || skipAreaSiteList) {
34
+ window.areaSiteList = siteList
35
+ const code = window.location.pathname.split('/')[1]
36
+ const site = siteList.find((t) => t.code === code)
37
+ if ((site && site.domain) || skipAreaSiteList) {
38
+ const siteInfo = await getSiteInfo(code)
39
+ setMicroAreaSite(siteInfo)
40
+ setLoading(false)
41
+ // window.location.replace(site.domain + window.location.pathname.replace(code, 'area') + window.location.search + window.location.hash)
42
+ } else {
43
+ setLoading(false)
44
+ }
45
+ }
46
+ } catch (e) {
47
+ setLoading(false)
48
+ }
49
+ }
50
+ setLoading(true)
51
+ load()
52
+ }, [pathname, search])
53
+
54
+ if (loading) {
55
+ return null
56
+ }
57
+
58
+ if (microAreaSite) {
59
+ return (
60
+ <Area siteList={microAreaSiteList} site={microAreaSite} />
61
+ )
62
+ }
63
+
64
+ return (
65
+ <div className={classNames(style.error, className)}>
66
+ <Image src={errorImg} />
67
+ <div className={style.text}>{tip}</div>
68
+ {isBack && <Link className={style.back} to="/">返回首页</Link>}
69
+ </div>
70
+ )
71
+ }
72
+
73
+ export default Error404
@@ -1,36 +1,36 @@
1
- .error {
2
- display: flex;
3
- width: 100%;
4
- height: 100%;
5
- flex-direction: column;
6
- justify-content: center;
7
- align-items: center;
8
- background: #FFFFFF;
9
- border-radius: 8px;
10
- padding: 80px 0;
11
- min-height: 70vh;
12
-
13
- img {
14
- width: 254px;
15
- height: 174px;
16
- }
17
-
18
- .text {
19
- font-size: 16px;
20
- color: #666666;
21
- line-height: 24px;
22
- margin-top: 38px;
23
- }
24
-
25
- .back {
26
- margin-top: 24px;
27
- width: 119px;
28
- background: #EAEEFD;
29
- height: 38px;
30
- line-height: 38px;
31
- border-radius: 20px;
32
- font-size: 16px;
33
- color: #206CED;
34
- text-align: center;
35
- }
36
- }
1
+ .error {
2
+ display: flex;
3
+ width: 100%;
4
+ height: 100%;
5
+ flex-direction: column;
6
+ justify-content: center;
7
+ align-items: center;
8
+ background: #FFFFFF;
9
+ border-radius: 8px;
10
+ padding: 80px 0;
11
+ min-height: 70vh;
12
+
13
+ img {
14
+ width: 254px;
15
+ height: 174px;
16
+ }
17
+
18
+ .text {
19
+ font-size: 16px;
20
+ color: #666666;
21
+ line-height: 24px;
22
+ margin-top: 38px;
23
+ }
24
+
25
+ .back {
26
+ margin-top: 24px;
27
+ width: 119px;
28
+ background: #EAEEFD;
29
+ height: 38px;
30
+ line-height: 38px;
31
+ border-radius: 20px;
32
+ font-size: 16px;
33
+ color: #206CED;
34
+ text-align: center;
35
+ }
36
+ }
@@ -1,14 +1,14 @@
1
- .error-wrap {
2
- height: 100%;
3
- display: flex;
4
- justify-content: center;
5
- align-items: center;
6
- flex-direction: column;
7
-
8
- :global {
9
- .fish-collapse > .fish-collapse-item > .fish-collapse-header {
10
- padding-top: 5px;
11
- padding-bottom: 5px;
12
- }
13
- }
1
+ .error-wrap {
2
+ height: 100%;
3
+ display: flex;
4
+ justify-content: center;
5
+ align-items: center;
6
+ flex-direction: column;
7
+
8
+ :global {
9
+ .fish-collapse > .fish-collapse-item > .fish-collapse-header {
10
+ padding-top: 5px;
11
+ padding-bottom: 5px;
12
+ }
13
+ }
14
14
  }
@@ -1,47 +1,47 @@
1
- import React from 'react'
2
- import { Collapse } from 'fish'
3
- import Image from '@/component/Image'
4
-
5
- import style from './error.module.less'
6
-
7
- const { Panel } = Collapse
8
- const errorImg = '@/component/status/Error/img/error.png'
9
-
10
- export default function Error({
11
- title,
12
- desc,
13
- error
14
- }) {
15
- let displayTitle = title
16
- // 此类错误 toast已经拦截
17
- if (error && error.isAxiosError) {
18
- if (!title) {
19
- displayTitle = '很抱歉,网络开小差了,请重试'
20
- }
21
- }
22
- return (
23
- <div className={style['error-wrap']}>
24
- <Image src={errorImg} alt="" />
25
- <h2>
26
- {displayTitle || '加载组件时发生了一些异常'}
27
- </h2>
28
- { desc ? <span>{desc}</span> : null }
29
- {
30
- error ? (
31
- <>
32
- <Collapse>
33
- <Panel header="错误信息" key="1">
34
- <pre style={{
35
- color: 'red'
36
- }}
37
- >
38
- { error && error.stack}
39
- </pre>
40
- </Panel>
41
- </Collapse>
42
- </>
43
- ) : null
44
- }
45
- </div>
46
- )
47
- }
1
+ import React from 'react'
2
+ import { Collapse } from 'fish'
3
+ import Image from '@/component/Image'
4
+
5
+ import style from './error.module.less'
6
+
7
+ const { Panel } = Collapse
8
+ const errorImg = '@/component/status/Error/img/error.png'
9
+
10
+ export default function Error({
11
+ title,
12
+ desc,
13
+ error
14
+ }) {
15
+ let displayTitle = title
16
+ // 此类错误 toast已经拦截
17
+ if (error && error.isAxiosError) {
18
+ if (!title) {
19
+ displayTitle = '很抱歉,网络开小差了,请重试'
20
+ }
21
+ }
22
+ return (
23
+ <div className={style['error-wrap']}>
24
+ <Image src={errorImg} alt="" />
25
+ <h2>
26
+ {displayTitle || '加载组件时发生了一些异常'}
27
+ </h2>
28
+ { desc ? <span>{desc}</span> : null }
29
+ {
30
+ error ? (
31
+ <>
32
+ <Collapse>
33
+ <Panel header="错误信息" key="1">
34
+ <pre style={{
35
+ color: 'red'
36
+ }}
37
+ >
38
+ { error && error.stack}
39
+ </pre>
40
+ </Panel>
41
+ </Collapse>
42
+ </>
43
+ ) : null
44
+ }
45
+ </div>
46
+ )
47
+ }