@cloud-app-dev/vidc 2.3.0 → 3.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (319) hide show
  1. package/.umirc.ts +2 -2
  2. package/es/Config/interface.d.ts +2 -1
  3. package/es/DomMove/demo.d.ts +2 -0
  4. package/es/DomMove/demo.js +16 -0
  5. package/es/DomMove/index.d.ts +16 -0
  6. package/es/DomMove/index.js +145 -0
  7. package/es/DomMove/utils.d.ts +8 -0
  8. package/es/{Picture/component/MoveContent → DomMove}/utils.js +19 -0
  9. package/es/Drawer/index.d.ts +2 -2
  10. package/es/Drawer/interface.d.ts +4 -174
  11. package/es/ErrorBoundary/index.d.ts +18 -0
  12. package/es/ErrorBoundary/index.js +79 -0
  13. package/es/List/DynamicGridList/Demo.js +40 -27
  14. package/es/List/DynamicGridList/index.d.ts +20 -29
  15. package/es/List/DynamicGridList/index.js +40 -63
  16. package/es/List/DynamicList/index.css +15 -0
  17. package/es/List/DynamicList/index.d.ts +14 -0
  18. package/es/List/DynamicList/index.js +105 -0
  19. package/es/List/DynamicList/interface.d.ts +19 -0
  20. package/es/List/DynamicList/utils.d.ts +4 -0
  21. package/es/List/DynamicList/utils.js +6 -0
  22. package/es/List/GridList/Demo.js +27 -4
  23. package/es/List/GridList/index.css +1 -0
  24. package/es/List/GridList/index.d.ts +2 -2
  25. package/es/List/GridList/index.js +8 -12
  26. package/es/List/GridList/interface.d.ts +1 -1
  27. package/es/List/VList/index.js +2 -3
  28. package/es/List/index.css +2 -54
  29. package/es/List/index.d.ts +6 -7
  30. package/es/List/index.js +14 -153
  31. package/es/List/interface.d.ts +3 -61
  32. package/es/LoaderApp/index.d.ts +1 -1
  33. package/es/LoaderApp/index.js +27 -46
  34. package/es/LoaderApp/interface.d.ts +3 -0
  35. package/es/LoaderApp/loader.d.ts +6 -7
  36. package/es/LoaderApp/loader.js +20 -30
  37. package/es/LoaderApp/sandbox.back.d.ts +18 -0
  38. package/es/LoaderApp/sandbox.back.js +356 -0
  39. package/es/LoaderApp/sandbox.d.ts +12 -0
  40. package/es/LoaderApp/sandbox.js +110 -0
  41. package/es/LoaderApp/utils.d.ts +5 -1
  42. package/es/LoaderApp/utils.js +98 -2
  43. package/es/Map/AMap.d.ts +1572 -0
  44. package/es/Map/BasicMap/AMapInstance.d.ts +15 -0
  45. package/es/Map/BasicMap/AMapInstance.js +66 -0
  46. package/es/Map/BasicMap/LeafletInstance.d.ts +15 -0
  47. package/es/Map/BasicMap/LeafletInstance.js +98 -0
  48. package/es/Map/BasicMap/index.css +24 -0
  49. package/es/Map/BasicMap/index.d.ts +9 -0
  50. package/es/Map/BasicMap/index.js +103 -0
  51. package/es/Map/ClusterLayer/hook.d.ts +5 -0
  52. package/es/Map/ClusterLayer/hook.js +144 -0
  53. package/es/Map/ClusterLayer/index.css +26 -0
  54. package/es/Map/ClusterLayer/index.d.ts +5 -0
  55. package/es/Map/ClusterLayer/index.js +31 -0
  56. package/es/Map/ClusterLayer/props.d.ts +8 -0
  57. package/es/Map/Config/index.d.ts +7 -0
  58. package/es/{InitialConfig → Map/Config}/index.js +35 -36
  59. package/es/Map/Config/utils.d.ts +2 -0
  60. package/es/{List/DynamicDeviceList → Map/Config}/utils.js +48 -45
  61. package/es/Map/Context/index.d.ts +11 -0
  62. package/es/Map/Context/index.js +66 -0
  63. package/es/Map/FindPio/index.css +7 -0
  64. package/es/Map/FindPio/index.d.ts +4 -0
  65. package/es/Map/FindPio/index.js +16 -0
  66. package/es/{WorkerFlow/Demo.d.ts → Map/InfoWindow/demo.d.ts} +0 -0
  67. package/es/{List/DynamicDeviceList/Demo.js → Map/InfoWindow/demo.js} +27 -25
  68. package/es/Map/InfoWindow/index.d.ts +8 -0
  69. package/es/Map/InfoWindow/index.js +74 -0
  70. package/es/Map/LevelCenter/DragMarker/index.d.ts +12 -0
  71. package/es/Map/LevelCenter/DragMarker/index.js +48 -0
  72. package/es/{List/DeviceList → Map/LevelCenter}/index.css +0 -0
  73. package/es/Map/LevelCenter/index.d.ts +13 -0
  74. package/es/Map/LevelCenter/index.js +42 -0
  75. package/es/Map/LoaderMap/index.d.ts +12 -0
  76. package/es/Map/LoaderMap/index.js +58 -0
  77. package/es/Map/ResetTools/index.css +32 -0
  78. package/es/Map/ResetTools/index.d.ts +9 -0
  79. package/es/Map/ResetTools/index.js +61 -0
  80. package/es/Map/SinglePoint/Marker/index.d.ts +7 -0
  81. package/es/Map/SinglePoint/Marker/index.js +29 -0
  82. package/es/Map/SinglePoint/icon/Place_icon_OnLine_Hover.svg +15 -0
  83. package/es/Map/SinglePoint/icon/Place_icon_OnLine_Normal.svg +15 -0
  84. package/es/Map/SinglePoint/icon/Place_icon_OutLine_Hover.svg +15 -0
  85. package/es/Map/SinglePoint/icon/Place_icon_OutLine_Normal.svg +15 -0
  86. package/es/Map/SinglePoint/index.css +29 -0
  87. package/es/Map/SinglePoint/index.d.ts +7 -0
  88. package/es/Map/SinglePoint/index.js +32 -0
  89. package/es/Map/hook/useMapType.d.ts +4 -0
  90. package/es/Map/hook/useMapType.js +13 -0
  91. package/es/Map/icon.d.ts +2 -0
  92. package/es/Map/icon.js +10 -0
  93. package/es/Map/index.d.ts +23 -0
  94. package/es/Map/index.js +25 -0
  95. package/es/Map/interface.d.ts +55 -0
  96. package/es/Map/points.json +61247 -0
  97. package/es/{Picture/component/MoveContent → Map/useMarker}/index.css +0 -0
  98. package/es/Map/useMarker/index.d.ts +11 -0
  99. package/es/{WorkerFlow/Form/FormAuth.js → Map/useMarker/index.js} +57 -80
  100. package/es/Map/withMap/index.d.ts +2 -0
  101. package/es/Map/withMap/index.js +12 -0
  102. package/es/Modal/index.js +7 -5
  103. package/es/Picture/component/RectMenu/index.d.ts +1 -1
  104. package/es/Picture/index.d.ts +1 -1
  105. package/es/Picture/index.js +2 -2
  106. package/es/Player/api/index.d.ts +2 -8
  107. package/es/Player/api/index.js +29 -35
  108. package/es/Player/contraller_bar/left_bar.js +2 -2
  109. package/es/Player/contraller_bar/right_bar.d.ts +1 -1
  110. package/es/Player/contraller_bar/right_bar.js +13 -27
  111. package/es/Player/demo.js +21 -24
  112. package/es/Player/event/index.js +5 -1
  113. package/es/Player/frontend_player.d.ts +2 -3
  114. package/es/Player/frontend_player.js +35 -52
  115. package/es/Player/frontend_timeline.d.ts +3 -2
  116. package/es/Player/frontend_timeline.js +20 -9
  117. package/es/Player/live_heart.js +45 -12
  118. package/es/Player/message.js +23 -12
  119. package/es/Player/player.d.ts +29 -7
  120. package/es/Player/segment_player.d.ts +1 -1
  121. package/es/Player/segment_player.js +50 -39
  122. package/es/Player/segment_timeline.js +14 -13
  123. package/es/Player/single_player.js +59 -14
  124. package/es/Player/timeline.js +8 -6
  125. package/es/Player/util.d.ts +4 -25
  126. package/es/Player/util.js +47 -55
  127. package/es/PlayerExt/index.css +2 -2
  128. package/es/PlayerExt/index.d.ts +3 -1
  129. package/es/PlayerExt/index.js +19 -5
  130. package/es/ScreenPlayer/Live.d.ts +5 -0
  131. package/es/ScreenPlayer/Live.js +109 -0
  132. package/es/ScreenPlayer/LiveTools.d.ts +15 -0
  133. package/es/ScreenPlayer/LiveTools.js +95 -0
  134. package/es/ScreenPlayer/PlayerWithExt.d.ts +22 -0
  135. package/es/ScreenPlayer/PlayerWithExt.js +156 -0
  136. package/es/ScreenPlayer/Record.d.ts +5 -0
  137. package/es/{WorkerFlow/index.js → ScreenPlayer/Record.js} +286 -273
  138. package/es/ScreenPlayer/RecordTools.d.ts +17 -0
  139. package/es/ScreenPlayer/RecordTools.js +102 -0
  140. package/es/ScreenPlayer/SegmentTimeLine.d.ts +10 -0
  141. package/es/ScreenPlayer/SegmentTimeLine.js +40 -0
  142. package/es/ScreenPlayer/TimeSlider.d.ts +127 -0
  143. package/es/ScreenPlayer/TimeSlider.js +530 -0
  144. package/es/ScreenPlayer/demo.d.ts +2 -0
  145. package/es/ScreenPlayer/demo.js +25 -0
  146. package/es/ScreenPlayer/demo2.d.ts +2 -0
  147. package/es/ScreenPlayer/demo2.js +153 -0
  148. package/es/ScreenPlayer/index.css +49 -0
  149. package/es/ScreenPlayer/index.d.ts +5 -0
  150. package/es/ScreenPlayer/index.js +8 -0
  151. package/es/ScreenPlayer/interface.d.ts +81 -0
  152. package/es/ScreenPlayer/useRecordList.d.ts +3 -0
  153. package/es/{WorkerFlow/Form/UserAndGroupSelect.js → ScreenPlayer/useRecordList.js} +173 -176
  154. package/es/ScreenPlayer/useVideoFit.d.ts +5 -0
  155. package/es/ScreenPlayer/useVideoFit.js +46 -0
  156. package/es/ScreenPlayer/utils.d.ts +25 -0
  157. package/es/ScreenPlayer/utils.js +84 -0
  158. package/es/Timeout/index.d.ts +33 -0
  159. package/es/Timeout/index.js +83 -0
  160. package/es/Tree/demo.js +9 -12
  161. package/es/Tree/index.css +55 -29
  162. package/es/Tree/index.d.ts +20 -19
  163. package/es/Tree/index.js +70 -185
  164. package/es/index.d.ts +8 -9
  165. package/es/index.js +8 -9
  166. package/es/useInfiniteScroll/index.d.ts +16 -0
  167. package/es/{useHttp → useInfiniteScroll}/index.js +79 -43
  168. package/es/useVirtualList/index.d.ts +13 -0
  169. package/es/useVirtualList/index.js +175 -0
  170. package/es/withErrorBoundary/index.d.ts +9 -0
  171. package/es/withErrorBoundary/index.js +45 -0
  172. package/package.json +18 -21
  173. package/release-build.sh +44 -0
  174. package/test.js +48 -0
  175. package/es/DeviceIcon/icon.d.ts +0 -9
  176. package/es/DeviceIcon/icon.js +0 -138
  177. package/es/DeviceIcon/index.css +0 -8
  178. package/es/DeviceIcon/index.d.ts +0 -14
  179. package/es/DeviceIcon/index.js +0 -37
  180. package/es/DeviceSelect/TreeType.d.ts +0 -7
  181. package/es/DeviceSelect/TreeType.js +0 -36
  182. package/es/DeviceSelect/demo.d.ts +0 -3
  183. package/es/DeviceSelect/demo.js +0 -22
  184. package/es/DeviceSelect/index.css +0 -11
  185. package/es/DeviceSelect/index.d.ts +0 -13
  186. package/es/DeviceSelect/index.js +0 -191
  187. package/es/Dict/cache.d.ts +0 -3
  188. package/es/Dict/cache.js +0 -21
  189. package/es/Dict/device.d.ts +0 -28
  190. package/es/Dict/device.js +0 -117
  191. package/es/Dict/hook.d.ts +0 -3
  192. package/es/Dict/hook.js +0 -98
  193. package/es/Dict/index.d.ts +0 -9
  194. package/es/Dict/index.js +0 -10
  195. package/es/Dict/interface.d.ts +0 -16
  196. package/es/Dict/utils.d.ts +0 -10
  197. package/es/Dict/utils.js +0 -44
  198. package/es/InitialConfig/index.d.ts +0 -8
  199. package/es/InitialConfig/utils.d.ts +0 -20
  200. package/es/InitialConfig/utils.js +0 -110
  201. package/es/InitialRequest/index.d.ts +0 -9
  202. package/es/InitialRequest/index.js +0 -97
  203. package/es/InitialRequest/utils.d.ts +0 -10
  204. package/es/InitialRequest/utils.js +0 -116
  205. package/es/List/CheckExt.d.ts +0 -9
  206. package/es/List/CheckExt.js +0 -36
  207. package/es/List/DeviceList/index.d.ts +0 -11
  208. package/es/List/DeviceList/index.js +0 -50
  209. package/es/List/DynamicDeviceList/Demo.d.ts +0 -3
  210. package/es/List/DynamicDeviceList/index.css +0 -39
  211. package/es/List/DynamicDeviceList/index.d.ts +0 -12
  212. package/es/List/DynamicDeviceList/index.js +0 -205
  213. package/es/List/DynamicDeviceList/interface.d.ts +0 -37
  214. package/es/List/DynamicDeviceList/utils.d.ts +0 -16
  215. package/es/List/ListExt/index.css +0 -3
  216. package/es/List/ListExt/index.d.ts +0 -19
  217. package/es/List/ListExt/index.js +0 -44
  218. package/es/Picture/component/MoveContent/index.d.ts +0 -39
  219. package/es/Picture/component/MoveContent/index.js +0 -244
  220. package/es/Picture/component/MoveContent/utils.d.ts +0 -4
  221. package/es/Title/index.css +0 -25
  222. package/es/Title/index.d.ts +0 -12
  223. package/es/Title/index.js +0 -30
  224. package/es/Tree/BaseTree/index.css +0 -64
  225. package/es/Tree/BaseTree/index.d.ts +0 -24
  226. package/es/Tree/BaseTree/index.js +0 -83
  227. package/es/UserSelect/demo.d.ts +0 -3
  228. package/es/UserSelect/demo.js +0 -21
  229. package/es/UserSelect/index.css +0 -16
  230. package/es/UserSelect/index.d.ts +0 -18
  231. package/es/UserSelect/index.js +0 -194
  232. package/es/WorkerFlow/Demo.js +0 -57
  233. package/es/WorkerFlow/Form/Approver.d.ts +0 -10
  234. package/es/WorkerFlow/Form/Approver.js +0 -33
  235. package/es/WorkerFlow/Form/Condition.d.ts +0 -11
  236. package/es/WorkerFlow/Form/Condition.js +0 -235
  237. package/es/WorkerFlow/Form/EmptyUserSet.d.ts +0 -8
  238. package/es/WorkerFlow/Form/EmptyUserSet.js +0 -137
  239. package/es/WorkerFlow/Form/FormAuth.d.ts +0 -8
  240. package/es/WorkerFlow/Form/GroupList.d.ts +0 -12
  241. package/es/WorkerFlow/Form/GroupList.js +0 -44
  242. package/es/WorkerFlow/Form/GroupSelect.d.ts +0 -8
  243. package/es/WorkerFlow/Form/GroupSelect.js +0 -167
  244. package/es/WorkerFlow/Form/GroupSelectModalContent.d.ts +0 -6
  245. package/es/WorkerFlow/Form/GroupSelectModalContent.js +0 -177
  246. package/es/WorkerFlow/Form/Handle.d.ts +0 -10
  247. package/es/WorkerFlow/Form/Handle.js +0 -33
  248. package/es/WorkerFlow/Form/LevelGroupSelect.d.ts +0 -12
  249. package/es/WorkerFlow/Form/LevelGroupSelect.js +0 -208
  250. package/es/WorkerFlow/Form/Notifier.d.ts +0 -8
  251. package/es/WorkerFlow/Form/Notifier.js +0 -16
  252. package/es/WorkerFlow/Form/UserAndGroupSelect.d.ts +0 -8
  253. package/es/WorkerFlow/Form/UserSelect.d.ts +0 -8
  254. package/es/WorkerFlow/Form/UserSelect.js +0 -150
  255. package/es/WorkerFlow/Form/UserSelectModalContent.d.ts +0 -6
  256. package/es/WorkerFlow/Form/UserSelectModalContent.js +0 -166
  257. package/es/WorkerFlow/Form/UserSet.d.ts +0 -14
  258. package/es/WorkerFlow/Form/UserSet.js +0 -308
  259. package/es/WorkerFlow/Form/UsersHandleType.d.ts +0 -7
  260. package/es/WorkerFlow/Form/UsersHandleType.js +0 -32
  261. package/es/WorkerFlow/Form/utils.d.ts +0 -3
  262. package/es/WorkerFlow/Form/utils.js +0 -47
  263. package/es/WorkerFlow/Nodes/Add.d.ts +0 -7
  264. package/es/WorkerFlow/Nodes/Add.js +0 -98
  265. package/es/WorkerFlow/Nodes/AddOption.d.ts +0 -10
  266. package/es/WorkerFlow/Nodes/AddOption.js +0 -23
  267. package/es/WorkerFlow/Nodes/AddOptionList.d.ts +0 -8
  268. package/es/WorkerFlow/Nodes/AddOptionList.js +0 -46
  269. package/es/WorkerFlow/Nodes/Approver.d.ts +0 -11
  270. package/es/WorkerFlow/Nodes/Approver.js +0 -53
  271. package/es/WorkerFlow/Nodes/Condition.d.ts +0 -10
  272. package/es/WorkerFlow/Nodes/Condition.js +0 -140
  273. package/es/WorkerFlow/Nodes/Constants.d.ts +0 -35
  274. package/es/WorkerFlow/Nodes/Constants.js +0 -150
  275. package/es/WorkerFlow/Nodes/End.d.ts +0 -7
  276. package/es/WorkerFlow/Nodes/End.js +0 -16
  277. package/es/WorkerFlow/Nodes/Handle.d.ts +0 -11
  278. package/es/WorkerFlow/Nodes/Handle.js +0 -52
  279. package/es/WorkerFlow/Nodes/Node.d.ts +0 -8
  280. package/es/WorkerFlow/Nodes/Node.js +0 -26
  281. package/es/WorkerFlow/Nodes/Notifier.d.ts +0 -11
  282. package/es/WorkerFlow/Nodes/Notifier.js +0 -52
  283. package/es/WorkerFlow/Nodes/Render.d.ts +0 -8
  284. package/es/WorkerFlow/Nodes/Render.js +0 -16
  285. package/es/WorkerFlow/Nodes/Start.d.ts +0 -12
  286. package/es/WorkerFlow/Nodes/Start.js +0 -26
  287. package/es/WorkerFlow/Nodes/TitleElement.d.ts +0 -10
  288. package/es/WorkerFlow/Nodes/TitleElement.js +0 -127
  289. package/es/WorkerFlow/Nodes/Wrap.d.ts +0 -13
  290. package/es/WorkerFlow/Nodes/Wrap.js +0 -35
  291. package/es/WorkerFlow/OperatorContext.d.ts +0 -4
  292. package/es/WorkerFlow/OperatorContext.js +0 -3
  293. package/es/WorkerFlow/Tools.d.ts +0 -8
  294. package/es/WorkerFlow/Tools.js +0 -78
  295. package/es/WorkerFlow/XML/CanvasTag.d.ts +0 -3
  296. package/es/WorkerFlow/XML/CanvasTag.js +0 -142
  297. package/es/WorkerFlow/XML/EndEvent.d.ts +0 -1
  298. package/es/WorkerFlow/XML/EndEvent.js +0 -14
  299. package/es/WorkerFlow/XML/ExclusiveGateway.d.ts +0 -9
  300. package/es/WorkerFlow/XML/ExclusiveGateway.js +0 -101
  301. package/es/WorkerFlow/XML/Root.d.ts +0 -1
  302. package/es/WorkerFlow/XML/Root.js +0 -5
  303. package/es/WorkerFlow/XML/StartEvent.d.ts +0 -5
  304. package/es/WorkerFlow/XML/StartEvent.js +0 -28
  305. package/es/WorkerFlow/XML/UserTask.d.ts +0 -5
  306. package/es/WorkerFlow/XML/UserTask.js +0 -93
  307. package/es/WorkerFlow/XML/index.d.ts +0 -4
  308. package/es/WorkerFlow/XML/index.js +0 -100
  309. package/es/WorkerFlow/XML/utils.d.ts +0 -6
  310. package/es/WorkerFlow/XML/utils.js +0 -97
  311. package/es/WorkerFlow/data.json +0 -83
  312. package/es/WorkerFlow/index.css +0 -779
  313. package/es/WorkerFlow/index.d.ts +0 -13
  314. package/es/WorkerFlow/interface.d.ts +0 -93
  315. package/es/WorkerFlow/template.d.ts +0 -2
  316. package/es/WorkerFlow/template.js +0 -17
  317. package/es/WorkerFlow/utils.d.ts +0 -14
  318. package/es/WorkerFlow/utils.js +0 -212
  319. package/es/useHttp/index.d.ts +0 -8
@@ -1,89 +1,72 @@
1
- function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
2
-
3
- function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
4
-
5
- function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
6
-
7
- function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
8
-
9
- function _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; }
10
-
11
- function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
12
-
1
+ import _useUpdate from "ahooks/es/useUpdate";
13
2
  import { __rest } from "tslib";
14
- import React, { useMemo, useRef, useState } from 'react';
3
+ import React, { useCallback, useMemo, useRef } from 'react';
15
4
  import SinglePlayer from './single_player';
16
5
  import FrontendTimeLine from './frontend_timeline';
6
+ import Events from './event/eventName';
7
+
17
8
  /**
18
9
  * @desc 主组件,负责片段整体逻辑控制
19
- * @param param0
20
- * @returns
10
+ * @return JSX.Element
21
11
  */
22
-
23
12
  function FrontendPlayer(_a) {
24
13
  var url = _a.url,
25
14
  begin = _a.begin,
26
15
  end = _a.end,
27
16
  onSeek = _a.onSeek,
28
- props = __rest(_a, ["url", "begin", "end", "onSeek"]);
17
+ forwordRef = _a.forwordRef,
18
+ customTimeLine = _a.customTimeLine,
19
+ onCanPlayerInit = _a.onCanPlayerInit,
20
+ props = __rest(_a, ["url", "begin", "end", "onSeek", "forwordRef", "customTimeLine", "onCanPlayerInit"]);
29
21
 
30
- var _useState = useState({
31
- forceKey: Date.now()
32
- }),
33
- _useState2 = _slicedToArray(_useState, 2),
34
- state = _useState2[0],
35
- setState = _useState2[1];
22
+ var update = _useUpdate();
36
23
 
37
- var playerRef = useRef(null);
24
+ var ref = useRef(null);
25
+ var playRef = forwordRef ? forwordRef : ref;
38
26
 
39
- var _ref = playerRef.current || {},
27
+ var _ref = playRef.current || {},
40
28
  api = _ref.api,
41
29
  event = _ref.event; // 秒级别转换毫秒
42
30
 
43
31
 
44
32
  var beginTemp = useMemo(function () {
45
33
  return begin ? String(begin).length === 10 ? Math.floor(begin * 1000) : begin : begin;
46
- }, []);
34
+ }, [begin]);
47
35
  var endTemp = useMemo(function () {
48
36
  return end ? String(end).length === 10 ? Math.floor(end * 1000) : end : end;
49
- }, []);
37
+ }, [end]);
50
38
  var duration = useMemo(function () {
51
39
  return (endTemp - beginTemp) / 1000;
52
40
  }, [beginTemp, endTemp]); //单位s 秒
53
41
  // 重置reload
54
42
 
55
43
  var reload = function reload() {
56
- onSeek(beginTemp);
57
- playerRef.current.api.reload();
58
- setState(function (old) {
59
- return Object.assign(Object.assign({}, old), {
60
- forceKey: Date.now()
61
- });
62
- });
44
+ playRef.current.event.emit(Events.RELOAD);
45
+ onSeek && onSeek(beginTemp);
46
+ playRef.current.api.reload();
63
47
  };
64
48
 
49
+ var onInit = useCallback(function () {
50
+ update();
51
+ onCanPlayerInit && onCanPlayerInit(); // eslint-disable-next-line react-hooks/exhaustive-deps
52
+ }, []);
53
+ var hasReady = api && event;
54
+ var timeline = customTimeLine !== null && customTimeLine !== void 0 ? customTimeLine : /*#__PURE__*/React.createElement(FrontendTimeLine, {
55
+ end: endTemp,
56
+ url: url,
57
+ onSeek: onSeek,
58
+ begin: beginTemp,
59
+ api: api,
60
+ event: event,
61
+ duration: duration
62
+ });
65
63
  return /*#__PURE__*/React.createElement(SinglePlayer, Object.assign({
66
- ref: playerRef,
64
+ ref: playRef,
67
65
  url: url,
68
- type: "flv",
69
66
  reload: reload,
67
+ onCanPlayerInit: onInit,
70
68
  isLive: false,
71
- onCanPlayerInit: function onCanPlayerInit() {
72
- return setState(function (old) {
73
- return Object.assign(Object.assign({}, old), {
74
- forceKey: Date.now()
75
- });
76
- });
77
- },
78
- customTimeLine: api && event ? /*#__PURE__*/React.createElement(FrontendTimeLine, {
79
- end: endTemp,
80
- onSeek: onSeek,
81
- key: state.forceKey,
82
- begin: beginTemp,
83
- api: api,
84
- event: event,
85
- duration: duration
86
- }) : /*#__PURE__*/React.createElement(React.Fragment, null)
69
+ customTimeLine: hasReady ? timeline : /*#__PURE__*/React.createElement(React.Fragment, null)
87
70
  }, props));
88
71
  }
89
72
 
@@ -8,7 +8,8 @@ interface ITimeLineProps {
8
8
  duration: number;
9
9
  begin: number;
10
10
  end: number;
11
- onSeek(time: number): void;
11
+ onSeek?: (time: number) => void;
12
+ url?: string;
12
13
  }
13
- declare function FrontendTimeLine({ api, event, duration, begin, end, onSeek }: ITimeLineProps): JSX.Element;
14
+ declare function FrontendTimeLine({ api, event, duration, begin, end, onSeek, url }: ITimeLineProps): JSX.Element;
14
15
  export default FrontendTimeLine;
@@ -1,3 +1,5 @@
1
+ import _useTrackedEffect from "ahooks/es/useTrackedEffect";
2
+
1
3
  function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
2
4
 
3
5
  function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
@@ -10,10 +12,11 @@ function _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Sy
10
12
 
11
13
  function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
12
14
 
13
- import React, { useCallback, useEffect, useMemo, useState, startTransition } from 'react';
15
+ import React, { useCallback, useEffect, useMemo, useState, startTransition, useRef } from 'react';
14
16
  import useBarStatus from './contraller_bar/useBarStatus';
15
17
  import { useTimes } from './timeline';
16
- import { dateFormat } from './util';
18
+ import { FMT } from './util';
19
+ import moment from 'moment';
17
20
  import "./style/timeline.css";
18
21
 
19
22
  function FrontendTimeLine(_ref) {
@@ -22,7 +25,9 @@ function FrontendTimeLine(_ref) {
22
25
  duration = _ref.duration,
23
26
  begin = _ref.begin,
24
27
  end = _ref.end,
25
- onSeek = _ref.onSeek;
28
+ onSeek = _ref.onSeek,
29
+ url = _ref.url;
30
+ var lastSeekCTimeRef = useRef(0); // time 是记录seek时跳了多少
26
31
 
27
32
  var _useState = useState({
28
33
  time: 0,
@@ -34,14 +39,20 @@ function FrontendTimeLine(_ref) {
34
39
  state = _useState2[0],
35
40
  setState = _useState2[1];
36
41
 
37
- var status = useBarStatus(event);
42
+ var status = useBarStatus(event); //获取视频当前播放时长单位s
38
43
 
39
44
  var _useTimes = useTimes(api, event),
40
45
  _useTimes2 = _slicedToArray(_useTimes, 1),
41
46
  currentTime = _useTimes2[0];
42
47
 
48
+ _useTrackedEffect(function (changes) {
49
+ if (changes.includes(1)) {
50
+ lastSeekCTimeRef.current = currentTime;
51
+ }
52
+ }, [currentTime, url]);
53
+
43
54
  var rTime = useMemo(function () {
44
- return state.time + currentTime;
55
+ return state.time + currentTime + lastSeekCTimeRef.current;
45
56
  }, [state.time, currentTime]);
46
57
  useEffect(function () {
47
58
  return setState(function (old) {
@@ -52,7 +63,7 @@ function FrontendTimeLine(_ref) {
52
63
  }, [begin]);
53
64
  var playPercent = useMemo(function () {
54
65
  return rTime / duration * 100;
55
- }, [rTime]);
66
+ }, [duration, rTime]);
56
67
  var cTime = useMemo(function () {
57
68
  return begin + rTime * 1000;
58
69
  }, [begin, rTime]);
@@ -67,7 +78,7 @@ function FrontendTimeLine(_ref) {
67
78
  time: cTime - currentTime
68
79
  });
69
80
  });
70
- }, [api, duration, begin, onSeek, currentTime]);
81
+ }, [duration, begin, onSeek, currentTime]);
71
82
  var onLineMouseOver = useCallback(function (e) {
72
83
  var rect = e.currentTarget.getBoundingClientRect();
73
84
  var left = e.pageX - rect.left;
@@ -78,7 +89,7 @@ function FrontendTimeLine(_ref) {
78
89
  markTime: begin + mTime * 1000
79
90
  });
80
91
  });
81
- }, [begin]);
92
+ }, [begin, duration]);
82
93
  var onLineMouseOut = useCallback(function (e) {
83
94
  startTransition(function () {
84
95
  return setState(function (old) {
@@ -132,7 +143,7 @@ function TipTitle(_ref2) {
132
143
  style: {
133
144
  fontWeight: 600
134
145
  }
135
- }, "\u5F55\u50CF\u4FE1\u606F"), /*#__PURE__*/React.createElement("div", null, "\u5F00\u59CB\uFF1A", dateFormat(begin)), /*#__PURE__*/React.createElement("div", null, "\u7ED3\u675F\uFF1A", dateFormat(end)), /*#__PURE__*/React.createElement("div", null, "\u523B\u5EA6\uFF1A", dateFormat(markTime)), /*#__PURE__*/React.createElement("div", null, "\u5F53\u524D\uFF1A", dateFormat(current)));
146
+ }, "\u5F55\u50CF\u4FE1\u606F"), /*#__PURE__*/React.createElement("div", null, "\u5F00\u59CB\uFF1A", moment(begin).format(FMT)), /*#__PURE__*/React.createElement("div", null, "\u7ED3\u675F\uFF1A", moment(end).format(FMT)), /*#__PURE__*/React.createElement("div", null, "\u523B\u5EA6\uFF1A", moment(markTime).format(FMT)), /*#__PURE__*/React.createElement("div", null, "\u5F53\u524D\uFF1A", moment(current).format(FMT)));
136
147
  }
137
148
 
138
149
  export default FrontendTimeLine;
@@ -1,21 +1,41 @@
1
- import React, { useEffect } from 'react';
1
+ import _useUpdateEffect from "ahooks/es/useUpdateEffect";
2
+
3
+ function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
4
+
5
+ function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
6
+
7
+ function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
8
+
9
+ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
10
+
11
+ function _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; }
12
+
13
+ function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
14
+
15
+ import React, { useEffect, useState } from 'react';
2
16
  import BrowserTab from './event/browserTabEvent';
3
17
 
4
18
  function LiveHeart(_ref) {
5
19
  var api = _ref.api;
6
- useEffect(function () {
7
- var browserTabChange = function browserTabChange() {
8
- if (BrowserTab.visibilityState() !== 'visible') {
9
- return;
10
- }
11
20
 
12
- var current = api.getCurrentTime();
13
- var buffered = api.getSecondsLoaded();
21
+ var _useState = useState(Date.now()),
22
+ _useState2 = _slicedToArray(_useState, 2),
23
+ runDep = _useState2[0],
24
+ setRundep = _useState2[1];
14
25
 
15
- if (buffered - current > 5) {
16
- console.warn("\u5F53\u524D\u5EF6\u65F6\u8FC7\u5927current->".concat(current, " buffered->").concat(buffered, ", \u57FA\u4E8E\u89C6\u9891\u5F53\u524D\u7F13\u5B58\u65F6\u95F4\u66F4\u65B0\u5F53\u524D\u64AD\u653E\u65F6\u95F4 updateTime -> ").concat(buffered - 2));
17
- api.seekTo(buffered - 2 > 0 ? buffered - 2 : 0);
18
- }
26
+ var run = function run() {
27
+ var current = api.getCurrentTime();
28
+ var buffered = api.getSecondsLoaded();
29
+
30
+ if (buffered - current > 5) {
31
+ console.debug("\u5F53\u524D\u5EF6\u65F6\u8FC7\u5927current->".concat(current, " buffered->").concat(buffered, ", \u57FA\u4E8E\u89C6\u9891\u5F53\u524D\u7F13\u5B58\u65F6\u95F4\u66F4\u65B0\u5F53\u524D\u64AD\u653E\u65F6\u95F4 updateTime -> ").concat(buffered - 2));
32
+ api.seekTo(buffered - 2 > 0 ? buffered - 2 : 0);
33
+ }
34
+ };
35
+
36
+ useEffect(function () {
37
+ var browserTabChange = function browserTabChange() {
38
+ BrowserTab.visibilityState() === 'visible' && run();
19
39
  };
20
40
 
21
41
  BrowserTab.addEventListener(browserTabChange);
@@ -23,6 +43,19 @@ function LiveHeart(_ref) {
23
43
  BrowserTab.removeEventListener(browserTabChange);
24
44
  };
25
45
  }, [api]);
46
+
47
+ _useUpdateEffect(function () {
48
+ run();
49
+ }, [runDep]);
50
+
51
+ useEffect(function () {
52
+ var timer = setInterval(function () {
53
+ return setRundep(Date.now());
54
+ }, 30 * 1000);
55
+ return function () {
56
+ return clearInterval(timer);
57
+ };
58
+ }, []);
26
59
  return /*#__PURE__*/React.createElement(React.Fragment, null);
27
60
  }
28
61
 
@@ -10,7 +10,7 @@ function _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Sy
10
10
 
11
11
  function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
12
12
 
13
- import React, { useEffect, useState, useMemo } from 'react';
13
+ import React, { useEffect, useState, useMemo, useRef } from 'react';
14
14
  import IconFont from './iconfont';
15
15
  import EventName from './event/eventName';
16
16
  import "./style/message.css";
@@ -28,28 +28,35 @@ function VideoMessage(_ref) {
28
28
  state = _useState2[0],
29
29
  setState = _useState2[1];
30
30
 
31
+ var timeRef = useRef(null);
31
32
  var message = useMemo(function () {
32
33
  if (state.status === 'fail') {
33
- return '视频错误';
34
+ console.warn("\u89C6\u9891\u9519\u8BEF\uFF0C\u8BF7\u624B\u52A8\u5237\u65B0\u91CD\u8BD5\uFF01");
35
+ return '请稍后重试!';
34
36
  }
35
37
 
36
38
  if (state.status === 'reload') {
37
- return "\u89C6\u9891\u52A0\u8F7D\u5931\u8D25\uFF0C\u6B63\u5728\u8FDB\u884C\u91CD\u8FDE\u7B2C".concat(state.errorTimer, "\u6B21\u91CD\u8FDE");
39
+ console.warn("\u7B2C".concat(state.errorTimer, "\u6B21\u91CD\u8FDE"));
40
+ return "\u6B63\u5728\u5237\u65B0...";
38
41
  }
39
42
 
40
43
  return '';
41
44
  }, [state.errorTimer, state.status]);
42
45
  useEffect(function () {
43
46
  var openLoading = function openLoading() {
44
- return setState(function (old) {
45
- return Object.assign(Object.assign({}, old), {
46
- loading: true
47
+ clearTimeout(timeRef.current);
48
+ timeRef.current = setTimeout(function () {
49
+ return setState(function (old) {
50
+ return Object.assign(Object.assign({}, old), {
51
+ loading: true
52
+ });
47
53
  });
48
- });
54
+ }, 200);
49
55
  };
50
56
 
51
57
  var closeLoading = function closeLoading() {
52
- return setState(function (old) {
58
+ clearTimeout(timeRef.current);
59
+ setState(function (old) {
53
60
  return Object.assign(Object.assign({}, old), {
54
61
  loading: false
55
62
  });
@@ -57,7 +64,8 @@ function VideoMessage(_ref) {
57
64
  };
58
65
 
59
66
  var errorReload = function errorReload(timer) {
60
- return setState(function () {
67
+ clearTimeout(timeRef.current);
68
+ setState(function () {
61
69
  return {
62
70
  status: 'reload',
63
71
  errorTimer: timer,
@@ -85,18 +93,21 @@ function VideoMessage(_ref) {
85
93
  var reload = function reload() {
86
94
  return setState(function (old) {
87
95
  return Object.assign(Object.assign({}, old), {
88
- status: 'reload'
96
+ status: 'reload',
97
+ loading: true
89
98
  });
90
99
  });
91
100
  };
92
101
 
93
102
  var playEnd = function playEnd() {
94
- return setState(function (old) {
103
+ clearTimeout(timeRef.current);
104
+ setState(function (old) {
95
105
  return Object.assign(Object.assign({}, old), {
96
106
  status: null,
97
107
  loading: false
98
108
  });
99
- }), api.pause();
109
+ });
110
+ api.pause();
100
111
  };
101
112
 
102
113
  event.addEventListener('loadstart', openLoading);
@@ -113,6 +113,11 @@ export interface ISinglePlayerProps {
113
113
  */
114
114
  reload?: () => void;
115
115
 
116
+ /**
117
+ * extaction
118
+ */
119
+ extActions?: { [key: string]: (...args: any) => void };
120
+
116
121
  /**
117
122
  * 视频可播放时执行钩子
118
123
  */
@@ -129,9 +134,7 @@ export interface ISinglePlayerProps {
129
134
  playerEvents?: CustomEvent[];
130
135
  }
131
136
 
132
- type OmitPlayerProps = 'customTimeLine' | 'onCanPlayerInit' | 'isLive' | 'reload' | 'type';
133
-
134
- export interface IFrontendPlayerProps extends Omit<ISinglePlayerProps, OmitPlayerProps> {
137
+ export interface IFrontendPlayerProps extends Omit<ISinglePlayerProps, 'isLive' | 'reload'> {
135
138
  /**
136
139
  * 前端录像开始时间
137
140
  */
@@ -145,10 +148,12 @@ export interface IFrontendPlayerProps extends Omit<ISinglePlayerProps, OmitPlaye
145
148
  /**
146
149
  * 录像时间轴发生变化回调
147
150
  */
148
- onSeek(time: number): void;
151
+ onSeek?: (time: number) => void;
152
+
153
+ forwordRef?: React.MutableRefObject<ExportPlayerType>;
149
154
  }
150
155
 
151
- export interface ISegmentPlayerProps extends Omit<ISinglePlayerProps, 'url' | 'customTimeLine' | 'onCanPlayerInit'> {
156
+ export interface ISegmentPlayerProps extends Omit<ISinglePlayerProps, 'url'> {
152
157
  /**
153
158
  * 云录像片段信息
154
159
  */
@@ -158,6 +163,10 @@ export interface ISegmentPlayerProps extends Omit<ISinglePlayerProps, 'url' | 'c
158
163
  * 云录像开始时间
159
164
  */
160
165
  begin?: number;
166
+
167
+ forwordRef?: React.MutableRefObject<ExportPlayerType>;
168
+
169
+ defaultIndex?: number;
161
170
  }
162
171
 
163
172
  export const SinglePlayer: React.FunctionComponent<ISinglePlayerProps>;
@@ -190,17 +199,30 @@ export type ExportPlayerType = {
190
199
  api: Api;
191
200
  event: VideoEventInstance;
192
201
  plugins: [FlvJs.Player, Hls];
202
+ fit?: string;
203
+ setIndex?: (i: number) => void;
204
+ seekTo?: (i: number) => void;
205
+ reload?: () => void;
193
206
  };
194
207
 
195
208
  export interface ISegmentType {
209
+ id?: string;
196
210
  /**
197
211
  * 视频片段地址
198
212
  */
199
213
  url?: string;
214
+
215
+ /**
216
+ * 片段开始时间
217
+ */
218
+ beginTime: number;
219
+
200
220
  /**
201
- * 视频片段长度 单位s(秒)
221
+ * 片段结束时间
202
222
  */
203
- duration: number;
223
+ endTime: number;
224
+
225
+ style?: any;
204
226
  }
205
227
 
206
228
  export const ISegmentTypeDemo: React.FC<ISegmentType>;
@@ -5,5 +5,5 @@ import type { ISegmentPlayerProps } from './player';
5
5
  * @param param0
6
6
  * @returns
7
7
  */
8
- declare function SegmentPlayer({ segments, begin, ...props }: ISegmentPlayerProps): JSX.Element;
8
+ declare function SegmentPlayer({ segments, begin, forwordRef, defaultIndex, onCanPlayerInit, customTimeLine, ...props }: ISegmentPlayerProps): JSX.Element;
9
9
  export default SegmentPlayer;
@@ -1,3 +1,5 @@
1
+ import _useUpdate from "ahooks/es/useUpdate";
2
+
1
3
  function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }
2
4
 
3
5
  function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
@@ -19,16 +21,17 @@ function _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Sy
19
21
  function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
20
22
 
21
23
  import { __rest } from "tslib";
22
- import React, { useEffect, useMemo, useRef, useState } from 'react';
24
+ import React, { useCallback, useEffect, useMemo, useRef, useState } from 'react';
23
25
  import SinglePlayer from './single_player';
24
26
  import SegmentTimeLine from './segment_timeline';
27
+ import Events from './event/eventName';
28
+
25
29
  /**
26
30
  * @desc 计算第一个url
27
31
  * @param segments
28
32
  * @param defaultIndex
29
33
  * @returns
30
34
  */
31
-
32
35
  function getFirstUrlIndex(segments) {
33
36
  var defaultIndex = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
34
37
 
@@ -57,9 +60,12 @@ function getFirstUrlIndex(segments) {
57
60
  */
58
61
 
59
62
 
60
- function usePlayIndex(event, segments, deps) {
63
+ function usePlayIndex(event, segments) {
64
+ var defaultIndex = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;
65
+ var deps = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : [];
66
+
61
67
  var _useState = useState({
62
- index: getFirstUrlIndex(segments, 0)
68
+ index: getFirstUrlIndex(segments, defaultIndex)
63
69
  }),
64
70
  _useState2 = _slicedToArray(_useState, 2),
65
71
  state = _useState2[0],
@@ -85,7 +91,7 @@ function usePlayIndex(event, segments, deps) {
85
91
  });
86
92
  });
87
93
  }
88
- }, [state.index]); // 监听片段播放状态,自动跳转下一个片段
94
+ }, [segments, state.index]); // 监听片段播放状态,自动跳转下一个片段
89
95
 
90
96
  useEffect(function () {
91
97
  if (!event) {
@@ -94,7 +100,7 @@ function usePlayIndex(event, segments, deps) {
94
100
 
95
101
  var fn = function fn() {
96
102
  return setState(function (old) {
97
- return Object.assign(Object.assign({}, onload), {
103
+ return Object.assign(Object.assign({}, old), {
98
104
  index: old.index + 1 < segments.length ? old.index + 1 : old.index
99
105
  });
100
106
  });
@@ -103,7 +109,7 @@ function usePlayIndex(event, segments, deps) {
103
109
  event.addEventListener('ended', fn);
104
110
  return function () {
105
111
  return event.removeEventListener('ended', fn);
106
- };
112
+ }; // eslint-disable-next-line react-hooks/exhaustive-deps
107
113
  }, [event, segments].concat(_toConsumableArray(deps)));
108
114
  return {
109
115
  index: state.index,
@@ -124,29 +130,32 @@ function usePlayIndex(event, segments, deps) {
124
130
 
125
131
 
126
132
  function SegmentPlayer(_a) {
127
- var _b;
128
-
129
133
  var segments = _a.segments,
130
134
  begin = _a.begin,
131
- props = __rest(_a, ["segments", "begin"]);
135
+ forwordRef = _a.forwordRef,
136
+ defaultIndex = _a.defaultIndex,
137
+ onCanPlayerInit = _a.onCanPlayerInit,
138
+ customTimeLine = _a.customTimeLine,
139
+ props = __rest(_a, ["segments", "begin", "forwordRef", "defaultIndex", "onCanPlayerInit", "customTimeLine"]);
132
140
 
133
- var _useState3 = useState({
134
- forceKey: Date.now()
135
- }),
136
- _useState4 = _slicedToArray(_useState3, 2),
137
- state = _useState4[0],
138
- setState = _useState4[1];
141
+ var update = _useUpdate();
142
+
143
+ var ref = useRef(null);
144
+ var playRef = forwordRef ? forwordRef : ref;
145
+
146
+ var _ref = playRef.current || {},
147
+ api = _ref.api,
148
+ event = _ref.event;
139
149
 
140
150
  var duration = useMemo(function () {
141
151
  return segments === null || segments === void 0 ? void 0 : segments.map(function (v) {
142
- return v.duration;
152
+ return (v.endTime - v.beginTime) / 1000;
143
153
  }).reduce(function (a, b) {
144
154
  return a + b;
145
155
  }, 0);
146
156
  }, [segments]);
147
- var playerRef = useRef(null);
148
157
 
149
- var _usePlayIndex = usePlayIndex((_b = playerRef.current) === null || _b === void 0 ? void 0 : _b.event, segments, [state.forceKey]),
158
+ var _usePlayIndex = usePlayIndex(event, segments, defaultIndex, [segments, defaultIndex]),
150
159
  index = _usePlayIndex.index,
151
160
  setIndex = _usePlayIndex.setIndex;
152
161
 
@@ -155,36 +164,38 @@ function SegmentPlayer(_a) {
155
164
  }, [segments, index]); // 重置reload
156
165
 
157
166
  var reload = function reload() {
167
+ playRef.current.event.emit(Events.RELOAD);
158
168
  setIndex(0);
159
- playerRef.current.api.reload();
160
- };
161
-
162
- var _ref = playerRef.current || {},
163
- api = _ref.api,
164
- event = _ref.event; // 秒级别转换
169
+ playRef.current.api.reload();
170
+ }; // 秒级别转换
165
171
 
166
172
 
167
173
  var beginTemp = useMemo(function () {
168
174
  return begin ? String(begin).length === 10 ? Math.floor(begin * 1000) : begin : begin;
175
+ }, [begin]);
176
+ var hasReady = api && event;
177
+ var timeline = customTimeLine !== null && customTimeLine !== void 0 ? customTimeLine : /*#__PURE__*/React.createElement(SegmentTimeLine, {
178
+ begin: beginTemp,
179
+ api: api,
180
+ event: event,
181
+ index: index,
182
+ segments: segments,
183
+ duration: duration,
184
+ setIndex: setIndex
185
+ });
186
+ var onInit = useCallback(function () {
187
+ update();
188
+ onCanPlayerInit && onCanPlayerInit(); // eslint-disable-next-line react-hooks/exhaustive-deps
169
189
  }, []);
170
190
  return /*#__PURE__*/React.createElement(SinglePlayer, Object.assign({
171
- ref: playerRef,
191
+ ref: playRef,
172
192
  url: url,
193
+ onCanPlayerInit: onInit,
173
194
  reload: reload,
174
- onCanPlayerInit: function onCanPlayerInit() {
175
- return setState({
176
- forceKey: Date.now()
177
- });
178
- },
179
- customTimeLine: api && event ? /*#__PURE__*/React.createElement(SegmentTimeLine, {
180
- begin: beginTemp,
181
- api: api,
182
- event: event,
183
- index: index,
184
- segments: segments,
185
- duration: duration,
195
+ extActions: {
186
196
  setIndex: setIndex
187
- }) : /*#__PURE__*/React.createElement(React.Fragment, null)
197
+ },
198
+ customTimeLine: hasReady ? timeline : /*#__PURE__*/React.createElement(React.Fragment, null)
188
199
  }, props));
189
200
  }
190
201