@cloud-app-dev/vidc 2.1.0-alpha.8 → 2.2.0-alpha.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 (166) hide show
  1. package/.umirc.ts +4 -3
  2. package/es/Api/index.js +1 -1
  3. package/es/AppContext/Sync.d.ts +1 -0
  4. package/es/AppContext/interface.d.ts +4 -1
  5. package/es/CheckGroupFixed/index.d.ts +1 -0
  6. package/es/DeviceSelect/TreeType.d.ts +1 -0
  7. package/es/DeviceSelect/demo.d.ts +1 -0
  8. package/es/DeviceSelect/index.d.ts +1 -0
  9. package/es/DeviceSelect/index.js +1 -1
  10. package/es/Drag/DragAndDropItem.js +2 -2
  11. package/es/Drag/DropItem.js +2 -2
  12. package/es/Drawer/Demo.js +24 -3
  13. package/es/Drawer/Footer.d.ts +1 -0
  14. package/es/Drawer/index.d.ts +29 -3
  15. package/es/Drawer/index.js +155 -4
  16. package/es/FrontendPlayer/index.d.ts +2 -0
  17. package/es/FrontendPlayer/index.js +2 -0
  18. package/es/FullScreen/index.d.ts +2 -3
  19. package/es/FullScreen/index.js +14 -41
  20. package/es/InitialConfig/utils.d.ts +5 -5
  21. package/es/InitialConfig/utils.js +19 -19
  22. package/es/Input/index.d.ts +1 -0
  23. package/es/List/CheckExt.d.ts +1 -0
  24. package/es/List/DeviceList/index.js +1 -1
  25. package/es/List/DynamicDeviceList/Demo.d.ts +1 -0
  26. package/es/List/DynamicDeviceList/index.d.ts +1 -0
  27. package/es/List/GridList/index.js +0 -1
  28. package/es/List/VList/index.d.ts +1 -0
  29. package/es/List/index.d.ts +1 -0
  30. package/es/LoaderApp/index.js +26 -22
  31. package/es/LoaderApp/loader.js +2 -6
  32. package/es/LoaderApp/utils.d.ts +1 -0
  33. package/es/LoaderApp/utils.js +37 -0
  34. package/es/Modal/index.d.ts +27 -0
  35. package/es/Modal/index.js +155 -1
  36. package/es/Picture/component/DefaultRects/RectInfo.d.ts +1 -0
  37. package/es/Picture/component/DefaultRects/index.d.ts +2 -1
  38. package/es/Picture/component/DrawRect/index.d.ts +3 -4
  39. package/es/Picture/component/MoveContent/index.js +16 -12
  40. package/es/Picture/component/RectMenu/index.d.ts +2 -3
  41. package/es/Picture/component/Tools/index.js +0 -5
  42. package/es/Picture/component/WheelScale/index.d.ts +1 -0
  43. package/es/Picture/component/WheelScale/index.js +3 -3
  44. package/es/Picture/index.d.ts +1 -0
  45. package/es/Picture/index.js +4 -2
  46. package/es/Picture/interface.d.ts +4 -2
  47. package/es/Picture/utils.d.ts +1 -0
  48. package/es/Player/api/index.d.ts +71 -0
  49. package/es/Player/api/index.js +284 -0
  50. package/es/Player/contraller_bar/bar.d.ts +8 -0
  51. package/es/Player/contraller_bar/bar.js +21 -0
  52. package/es/Player/contraller_bar/contraller_event.d.ts +9 -0
  53. package/es/{RefModal/index.js → Player/contraller_bar/contraller_event.js} +39 -54
  54. package/es/Player/contraller_bar/index.d.ts +19 -0
  55. package/es/Player/contraller_bar/index.js +37 -0
  56. package/es/Player/contraller_bar/left_bar.d.ts +15 -0
  57. package/es/Player/contraller_bar/left_bar.js +91 -0
  58. package/es/Player/contraller_bar/right_bar.d.ts +13 -0
  59. package/es/Player/contraller_bar/right_bar.js +55 -0
  60. package/es/Player/contraller_bar/useBarStatus.d.ts +3 -0
  61. package/es/{RefDrawer/index.js → Player/contraller_bar/useBarStatus.js} +27 -46
  62. package/es/Player/demo.d.ts +2 -0
  63. package/es/Player/demo.js +269 -0
  64. package/es/Player/event/browserTabEvent.d.ts +9 -0
  65. package/es/Player/event/browserTabEvent.js +57 -0
  66. package/es/Player/event/errorEvent.d.ts +16 -0
  67. package/es/Player/event/errorEvent.js +120 -0
  68. package/es/Player/event/eventName.d.ts +3 -0
  69. package/es/Player/event/eventName.js +15 -0
  70. package/es/Player/event/index.d.ts +22 -0
  71. package/es/Player/event/index.js +175 -0
  72. package/es/Player/frontend_player.d.ts +15 -0
  73. package/es/Player/frontend_player.js +90 -0
  74. package/es/Player/frontend_timeline.d.ts +14 -0
  75. package/es/Player/frontend_timeline.js +138 -0
  76. package/es/Player/iconfont.d.ts +13 -0
  77. package/es/Player/iconfont.js +18 -0
  78. package/es/Player/index.d.ts +8 -0
  79. package/es/Player/index.js +8 -0
  80. package/es/Player/live_heart.d.ts +6 -0
  81. package/es/Player/live_heart.js +29 -0
  82. package/es/Player/message.d.ts +11 -0
  83. package/es/Player/message.js +150 -0
  84. package/es/Player/player.d.ts +75 -0
  85. package/es/Player/segment_player.d.ts +13 -0
  86. package/es/Player/segment_player.js +191 -0
  87. package/es/Player/segment_timeline.d.ts +16 -0
  88. package/es/Player/segment_timeline.js +154 -0
  89. package/es/Player/single_player.d.ts +5 -0
  90. package/es/Player/single_player.js +185 -0
  91. package/es/Player/style/bar.css +37 -0
  92. package/es/Player/style/iconfont.css +62 -0
  93. package/es/Player/style/index.css +22 -0
  94. package/es/Player/style/message.css +49 -0
  95. package/es/Player/style/slider.css +96 -0
  96. package/es/Player/style/timeline.css +92 -0
  97. package/es/Player/timeline.d.ts +11 -0
  98. package/es/Player/timeline.js +104 -0
  99. package/es/Player/util.d.ts +48 -0
  100. package/es/Player/util.js +172 -0
  101. package/es/Progress/index.d.ts +1 -0
  102. package/es/SegmentPlayer/index.d.ts +2 -0
  103. package/es/SegmentPlayer/index.js +2 -0
  104. package/es/Service/fetch-adapter.d.ts +12 -0
  105. package/es/Service/fetch-adapter.js +184 -0
  106. package/es/Service/http.d.ts +1 -1
  107. package/es/Service/http.js +4 -2
  108. package/es/Service/interface.d.ts +2 -1
  109. package/es/Tree/BaseTree/demo.d.ts +1 -0
  110. package/es/Tree/BaseTree/demo.js +3 -1
  111. package/es/Tree/BaseTree/index.d.ts +2 -2
  112. package/es/Tree/demo.d.ts +1 -0
  113. package/es/Tree/index.js +1 -1
  114. package/es/UserSelect/demo.d.ts +1 -0
  115. package/es/WorkerFlow/Form/Approver.d.ts +1 -0
  116. package/es/WorkerFlow/Form/Condition.d.ts +1 -0
  117. package/es/WorkerFlow/Form/Condition.js +2 -1
  118. package/es/WorkerFlow/Form/EmptyUserSet.d.ts +1 -0
  119. package/es/WorkerFlow/Form/EmptyUserSet.js +2 -1
  120. package/es/WorkerFlow/Form/FormAuth.d.ts +1 -0
  121. package/es/WorkerFlow/Form/GroupList.d.ts +1 -0
  122. package/es/WorkerFlow/Form/GroupSelect.d.ts +1 -0
  123. package/es/WorkerFlow/Form/GroupSelect.js +2 -1
  124. package/es/WorkerFlow/Form/Handle.d.ts +1 -0
  125. package/es/WorkerFlow/Form/LevelGroupSelect.d.ts +1 -0
  126. package/es/WorkerFlow/Form/LevelGroupSelect.js +2 -1
  127. package/es/WorkerFlow/Form/Notifier.d.ts +1 -0
  128. package/es/WorkerFlow/Form/UserAndGroupSelect.d.ts +1 -0
  129. package/es/WorkerFlow/Form/UserAndGroupSelect.js +2 -1
  130. package/es/WorkerFlow/Form/UserSelect.d.ts +1 -0
  131. package/es/WorkerFlow/Form/UserSelect.js +2 -1
  132. package/es/WorkerFlow/Form/UserSet.d.ts +1 -0
  133. package/es/WorkerFlow/Form/UsersHandleType.d.ts +1 -0
  134. package/es/WorkerFlow/Nodes/Add.d.ts +1 -0
  135. package/es/WorkerFlow/Nodes/Add.js +1 -1
  136. package/es/WorkerFlow/Nodes/AddOption.d.ts +1 -0
  137. package/es/WorkerFlow/Nodes/AddOptionList.d.ts +1 -0
  138. package/es/WorkerFlow/Nodes/Approver.d.ts +1 -0
  139. package/es/WorkerFlow/Nodes/Condition.d.ts +1 -0
  140. package/es/WorkerFlow/Nodes/End.d.ts +1 -0
  141. package/es/WorkerFlow/Nodes/Handle.d.ts +1 -0
  142. package/es/WorkerFlow/Nodes/Node.d.ts +1 -0
  143. package/es/WorkerFlow/Nodes/Notifier.d.ts +1 -0
  144. package/es/WorkerFlow/Nodes/Render.d.ts +1 -0
  145. package/es/WorkerFlow/Nodes/Start.d.ts +1 -0
  146. package/es/WorkerFlow/Nodes/TitleElement.d.ts +1 -0
  147. package/es/WorkerFlow/Nodes/TitleElement.js +6 -2
  148. package/es/WorkerFlow/index.js +2 -1
  149. package/es/index.d.ts +5 -8
  150. package/es/index.js +6 -9
  151. package/es/typings.d.ts +1 -0
  152. package/package.json +15 -10
  153. package/tsconfig.json +3 -2
  154. package/typings/global.d.ts +4 -0
  155. package/es/AppRedirect/index.css +0 -0
  156. package/es/AppRedirect/index.d.ts +0 -16
  157. package/es/AppRedirect/index.js +0 -33
  158. package/es/AppRouter/index.d.ts +0 -8
  159. package/es/AppRouter/index.js +0 -17
  160. package/es/RefDrawer/index.d.ts +0 -15
  161. package/es/RefModal/index.d.ts +0 -15
  162. package/es/useDrawer/index.d.ts +0 -14
  163. package/es/useDrawer/index.js +0 -91
  164. package/es/useModal/index.d.ts +0 -14
  165. package/es/useModal/index.js +0 -93
  166. package/typings.d.ts +0 -2
@@ -0,0 +1,185 @@
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
+
13
+ import { __rest } from "tslib";
14
+ import React, { useEffect, useMemo, useRef, useState, useImperativeHandle } from 'react';
15
+ import { usePlayerApi } from './api';
16
+ import { usePlayerEvent, useRegisterPlayerEvents, useVideoEvents } from './event';
17
+ import ContrallerBar from './contraller_bar';
18
+ import ContrallerEvent from './contraller_bar/contraller_event';
19
+ import LiveHeart from './live_heart';
20
+ import VideoMessage from './message';
21
+ import ErrorEvent from './event/errorEvent';
22
+ import { getVideoType, playReload, playUnload } from './util';
23
+ import Timeline from './timeline';
24
+ import "./style/index.css";
25
+ var SinglePlayer = /*#__PURE__*/React.forwardRef(function (_a, ref) {
26
+ var _b;
27
+
28
+ var className = _a.className,
29
+ url = _a.url,
30
+ type = _a.type,
31
+ hideContrallerBar = _a.hideContrallerBar,
32
+ isLive = _a.isLive,
33
+ errorReloadTimer = _a.errorReloadTimer,
34
+ children = _a.children,
35
+ props = __rest(_a, ["className", "url", "type", "hideContrallerBar", "isLive", "errorReloadTimer", "children"]);
36
+
37
+ var autoPlay = props.autoPlay,
38
+ preload = props.preload,
39
+ muted = props.muted,
40
+ poster = props.poster,
41
+ playsInline = props.playsInline,
42
+ loop = props.loop;
43
+ var rightExtContents = props.rightExtContents,
44
+ rightMidExtContents = props.rightMidExtContents,
45
+ leftExtContents = props.leftExtContents,
46
+ leftMidExtContents = props.leftMidExtContents,
47
+ customTimeLine = props.customTimeLine;
48
+ var flvConfig = props.flvConfig,
49
+ hlsConfig = props.hlsConfig,
50
+ videoEvents = props.videoEvents,
51
+ playerEvents = props.playerEvents;
52
+
53
+ var _useState = useState({
54
+ container: null
55
+ }),
56
+ _useState2 = _slicedToArray(_useState, 2),
57
+ state = _useState2[0],
58
+ setState = _useState2[1];
59
+
60
+ var vType = useMemo(function () {
61
+ return type || getVideoType(url);
62
+ }, [url]);
63
+ var domRef = useRef(null);
64
+ var video = useMemo(function () {
65
+ return state.container ? state.container.querySelector('video') : undefined;
66
+ }, [state.container]); // 生成事件对象
67
+
68
+ var event = usePlayerEvent(video); // 注册外部自定义事件
69
+
70
+ useVideoEvents(event, videoEvents);
71
+ useRegisterPlayerEvents(event, playerEvents);
72
+
73
+ var _usePlayerApi = usePlayerApi(url, vType, isLive, state.container, flvConfig.mediaDataSource.segments, flvConfig, hlsConfig),
74
+ _usePlayerApi2 = _slicedToArray(_usePlayerApi, 2),
75
+ api = _usePlayerApi2[0],
76
+ _usePlayerApi2$ = _slicedToArray(_usePlayerApi2[1], 3),
77
+ _ = _usePlayerApi2$[0],
78
+ flv = _usePlayerApi2$[1],
79
+ hls = _usePlayerApi2$[2]; // 判断是否有链接传入
80
+
81
+
82
+ var hasLink = useMemo(function () {
83
+ return !!url || !!flvConfig.mediaDataSource.segments && vType === 'flv';
84
+ }, [url, flvConfig.mediaDataSource.segments]); // 存储容器
85
+
86
+ useEffect(function () {
87
+ setState(function (old) {
88
+ return Object.assign(Object.assign({}, old), {
89
+ container: domRef.current
90
+ });
91
+ });
92
+ }, []); // 特殊接口实现 reload是可能被重写的,但是API只暴露原生的方法
93
+
94
+ var reload = function reload() {
95
+ return playReload(video, flv, hls, url);
96
+ };
97
+
98
+ var unload = function unload() {
99
+ return playUnload(video, flv, hls);
100
+ }; // 合并api
101
+
102
+
103
+ var playApi = useMemo(function () {
104
+ return Object.assign(Object.assign({}, api), {
105
+ reload: reload,
106
+ unload: unload
107
+ });
108
+ }, [api]); // ref暴露接口
109
+
110
+ useImperativeHandle(ref, function () {
111
+ return {
112
+ video: video,
113
+ container: state.container,
114
+ api: playApi,
115
+ event: event,
116
+ plugins: [flv, hls]
117
+ };
118
+ }, [api, event, video]);
119
+ useEffect(function () {
120
+ if (api && event && video) {
121
+ props.onCanPlayerInit && props.onCanPlayerInit();
122
+ }
123
+ }, [api, event, video]);
124
+ return /*#__PURE__*/React.createElement("div", {
125
+ className: "lm-player-container ".concat(className),
126
+ ref: domRef
127
+ }, /*#__PURE__*/React.createElement("div", {
128
+ className: "player-mask-layout"
129
+ }, /*#__PURE__*/React.createElement("video", {
130
+ autoPlay: autoPlay,
131
+ preload: preload,
132
+ muted: muted,
133
+ poster: poster,
134
+ controls: false,
135
+ playsInline: playsInline,
136
+ loop: loop
137
+ })), api && event && hasLink && /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(VideoMessage, {
138
+ api: playApi,
139
+ event: event
140
+ }), !hideContrallerBar && /*#__PURE__*/React.createElement(ContrallerEvent, {
141
+ event: event,
142
+ container: state.container
143
+ }, /*#__PURE__*/React.createElement(ContrallerBar, {
144
+ api: playApi,
145
+ event: event,
146
+ isLive: isLive,
147
+ container: state.container,
148
+ rightExtContents: rightExtContents,
149
+ rightMidExtContents: rightMidExtContents,
150
+ leftExtContents: leftExtContents,
151
+ leftMidExtContents: leftMidExtContents,
152
+ reload: (_b = props.reload) !== null && _b !== void 0 ? _b : reload,
153
+ hideTimeProgress: !!customTimeLine
154
+ })), !isLive ? customTimeLine ? customTimeLine : /*#__PURE__*/React.createElement(Timeline, {
155
+ api: playApi,
156
+ event: event
157
+ }) : null, /*#__PURE__*/React.createElement(ErrorEvent, {
158
+ unload: unload,
159
+ flv: flv,
160
+ hls: hls,
161
+ api: playApi,
162
+ event: event,
163
+ reload: reload,
164
+ errorReloadTimer: errorReloadTimer
165
+ }), isLive && /*#__PURE__*/React.createElement(LiveHeart, {
166
+ api: playApi
167
+ })), children);
168
+ });
169
+ SinglePlayer.defaultProps = {
170
+ isLive: true,
171
+ errorReloadTimer: 5,
172
+ muted: true,
173
+ autoPlay: true,
174
+ playsInline: false,
175
+ preload: 'auto',
176
+ loop: false,
177
+ hideContrallerBar: false,
178
+ className: '',
179
+ flvConfig: {
180
+ mediaDataSource: {},
181
+ config: {}
182
+ },
183
+ hlsConfig: {}
184
+ };
185
+ export default /*#__PURE__*/React.memo(SinglePlayer);
@@ -0,0 +1,37 @@
1
+ .contraller-bar-layout {
2
+ position: absolute;
3
+ bottom: 0;
4
+ left: 0;
5
+ background: rgba(29, 33, 53, 0.8);
6
+ height: 28px;
7
+ width: 100%;
8
+ display: flex;
9
+ align-items: center;
10
+ z-index: 10;
11
+ justify-content: space-between;
12
+ opacity: 1;
13
+ transition: opacity 0.3s;
14
+ }
15
+ .contraller-bar-layout.hide-contraller-bar {
16
+ opacity: 0;
17
+ }
18
+ .contraller-bar-layout .contraller-bar-item {
19
+ float: left;
20
+ display: flex;
21
+ width: 28px;
22
+ height: 28px;
23
+ justify-content: center;
24
+ align-items: center;
25
+ }
26
+ .contraller-bar-layout .contraller-bar-item .lm-player-iconfont {
27
+ cursor: pointer;
28
+ }
29
+ .contraller-bar-layout .contraller-bar-item .lm-player-iconfont:hover {
30
+ color: #ffaa00;
31
+ }
32
+ .contraller-bar-layout .video-time-progress {
33
+ float: left;
34
+ line-height: 28px;
35
+ color: #fff;
36
+ font-size: 10px;
37
+ }
@@ -0,0 +1,62 @@
1
+ @font-face {
2
+ font-family: 'lm-player-iconfont';
3
+ src: url('data:application/x-font-woff2;charset=utf-8;base64,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') format('woff2');
4
+ }
5
+ .lm-player-iconfont {
6
+ font-family: 'lm-player-iconfont' !important;
7
+ font-size: 16px;
8
+ font-style: normal;
9
+ -webkit-font-smoothing: antialiased;
10
+ -moz-osx-font-smoothing: grayscale;
11
+ }
12
+ .lm-player-Loading:before {
13
+ content: '\e65d';
14
+ }
15
+ .lm-player-volume-close:before {
16
+ content: '\e602';
17
+ }
18
+ .lm-player-volume-normal-fuben:before {
19
+ content: '\e604';
20
+ }
21
+ .lm-player-volume-max:before {
22
+ content: '\e605';
23
+ }
24
+ .lm-player-Pause_Main:before {
25
+ content: '\e652';
26
+ }
27
+ .lm-player-Play_Main:before {
28
+ content: '\e654';
29
+ }
30
+ .lm-player-ZoomIn_Main:before {
31
+ content: '\e663';
32
+ }
33
+ .lm-player-ZoomDefault_Main:before {
34
+ content: '\e664';
35
+ }
36
+ .lm-player-ZoomOut_Main:before {
37
+ content: '\e665';
38
+ }
39
+ .lm-player-Refresh_Main:before {
40
+ content: '\e687';
41
+ }
42
+ .lm-player-ExitFull_Main:before {
43
+ content: '\e68e';
44
+ }
45
+ .lm-player-Full_Main:before {
46
+ content: '\e690';
47
+ }
48
+ .lm-player-PlaySource:before {
49
+ content: '\e6cd';
50
+ }
51
+ .lm-player-YesorNo_No_Dark:before {
52
+ content: '\e6dd';
53
+ }
54
+ .lm-player-SearchBox:before {
55
+ content: '\e706';
56
+ }
57
+ .lm-player-PrevFast:before {
58
+ content: '\e71f';
59
+ }
60
+ .lm-player-NextFast_Light:before {
61
+ content: '\e720';
62
+ }
@@ -0,0 +1,22 @@
1
+ .lm-player-container {
2
+ width: 100%;
3
+ height: 100%;
4
+ position: relative;
5
+ background: #000;
6
+ box-sizing: border-box;
7
+ }
8
+ .lm-player-container .lm-player-iconfont {
9
+ color: #fff;
10
+ }
11
+ .lm-player-container .player-mask-layout {
12
+ width: 100%;
13
+ height: 100%;
14
+ overflow: hidden;
15
+ }
16
+ .lm-player-container .player-mask-layout > video {
17
+ display: block;
18
+ width: 100%;
19
+ height: 100%;
20
+ pointer-events: none;
21
+ background: #000;
22
+ }
@@ -0,0 +1,49 @@
1
+ .lm-player-message-mask {
2
+ position: absolute;
3
+ left: 0;
4
+ top: 0;
5
+ z-index: -1;
6
+ background: transparent;
7
+ opacity: 0;
8
+ width: 100%;
9
+ height: 100%;
10
+ transition: all 0.5s;
11
+ display: flex;
12
+ align-items: center;
13
+ justify-content: center;
14
+ flex-direction: column;
15
+ pointer-events: none;
16
+ }
17
+ .lm-player-message-mask.lm-player-mask-loading-animation {
18
+ opacity: 1;
19
+ background: rgba(0, 0, 0, 0.6);
20
+ z-index: 1;
21
+ }
22
+ .lm-player-message-mask .lm-player-loading-icon {
23
+ position: relative;
24
+ font-size: 48px;
25
+ z-index: -1;
26
+ visibility: hidden;
27
+ }
28
+ .lm-player-message-mask .lm-player-loading-icon.lm-player-loading-animation {
29
+ visibility: visible;
30
+ z-index: 9;
31
+ animation: loadingAnimation 1s linear infinite;
32
+ }
33
+ .lm-player-message-mask .lm-player-loading-icon.lm-player-loadfail {
34
+ visibility: visible;
35
+ z-index: 9;
36
+ }
37
+ .lm-player-message-mask .lm-player-message {
38
+ color: #fff;
39
+ font-size: 16px;
40
+ padding: 10px;
41
+ }
42
+ @keyframes loadingAnimation {
43
+ form {
44
+ transform: rotate(0deg);
45
+ }
46
+ to {
47
+ transform: rotate(360deg);
48
+ }
49
+ }
@@ -0,0 +1,96 @@
1
+ .slider-layout {
2
+ width: 100%;
3
+ height: 100%;
4
+ user-select: none;
5
+ display: flex;
6
+ justify-content: center;
7
+ align-items: center;
8
+ position: relative;
9
+ }
10
+ .slider-layout .slider-content {
11
+ width: 100%;
12
+ height: 2px;
13
+ position: relative;
14
+ transition: height 0.2s;
15
+ cursor: pointer;
16
+ overflow: hidden;
17
+ }
18
+ .slider-layout .slider-other-content {
19
+ width: 100%;
20
+ height: 2px;
21
+ position: absolute;
22
+ left: 0;
23
+ top: 50%;
24
+ transform: translateY(-50%);
25
+ transition: height 0.2s;
26
+ cursor: pointer;
27
+ z-index: 9;
28
+ pointer-events: none;
29
+ }
30
+ .slider-layout .slider-max-line {
31
+ width: 100%;
32
+ height: 100%;
33
+ background-color: #000;
34
+ position: absolute;
35
+ left: 0;
36
+ top: 0;
37
+ z-index: 1;
38
+ border-radius: 4px;
39
+ }
40
+ .slider-layout .slider-visibel-line {
41
+ position: absolute;
42
+ background: #5b7eac;
43
+ width: 100%;
44
+ height: 100%;
45
+ left: 0;
46
+ top: 0;
47
+ z-index: 3;
48
+ cursor: pointer;
49
+ border-radius: 4px;
50
+ }
51
+ .slider-layout .slider-current-line {
52
+ position: absolute;
53
+ background-color: #ffaa00;
54
+ width: 100%;
55
+ height: 100%;
56
+ left: 0;
57
+ top: 0;
58
+ z-index: 3;
59
+ border-radius: 4px;
60
+ }
61
+ .slider-layout .drag-change-icon {
62
+ position: absolute;
63
+ width: 6px;
64
+ height: 6px;
65
+ border-radius: 50%;
66
+ margin-left: -3px;
67
+ border: 1px solid #fff;
68
+ background-color: #ffaa00;
69
+ top: -3px;
70
+ pointer-events: all;
71
+ box-sizing: content-box;
72
+ }
73
+ .slider-layout:hover .slider-content,
74
+ .slider-layout:hover .slider-other-content {
75
+ height: 4px;
76
+ }
77
+ .slider-layout:hover .drag-change-icon {
78
+ width: 10px;
79
+ height: 10px;
80
+ top: -4px;
81
+ margin-left: -5px;
82
+ }
83
+ .lm-player-slide-tips {
84
+ background: rgba(0, 0, 0, 0.6);
85
+ position: absolute;
86
+ left: 0;
87
+ top: -26px;
88
+ transform: translate(-50%, -100%);
89
+ font-size: 12px;
90
+ color: #fff;
91
+ border-radius: 4px;
92
+ z-index: 6;
93
+ padding: 2px 4px;
94
+ white-space: nowrap;
95
+ z-index: 99;
96
+ }
@@ -0,0 +1,92 @@
1
+ .player-timeline-layout {
2
+ position: absolute;
3
+ left: 0;
4
+ bottom: 28px;
5
+ width: 100%;
6
+ height: 20px;
7
+ background: #000000;
8
+ display: flex;
9
+ justify-content: center;
10
+ align-items: center;
11
+ z-index: 9;
12
+ opacity: 0.8;
13
+ transition: all 0.1s;
14
+ cursor: pointer;
15
+ }
16
+ .player-timeline-layout.hide-time-line {
17
+ bottom: 0;
18
+ height: 4px;
19
+ }
20
+ .player-timeline-layout .buffer-line {
21
+ position: absolute;
22
+ left: 0;
23
+ top: 0;
24
+ height: 100%;
25
+ background-color: #676767;
26
+ pointer-events: none;
27
+ max-width: 100%;
28
+ }
29
+ .player-timeline-layout .current-line {
30
+ position: absolute;
31
+ left: 0;
32
+ top: 0;
33
+ height: 100%;
34
+ background-color: #4661ff;
35
+ pointer-events: none;
36
+ overflow: hidden;
37
+ max-width: 100%;
38
+ }
39
+ .player-timeline-layout.player-segment-timeline-layout {
40
+ background: transparent;
41
+ }
42
+ .player-timeline-layout.player-segment-timeline-layout .segment-line-box {
43
+ width: 100%;
44
+ height: 100%;
45
+ display: flex;
46
+ }
47
+ .player-timeline-layout.player-segment-timeline-layout .segment-line-box .segment-line-item {
48
+ background: #000000;
49
+ position: relative;
50
+ box-sizing: border-box;
51
+ }
52
+ .player-timeline-layout.player-segment-timeline-layout .segment-line-box .segment-line-item:hover::after {
53
+ content: ' ';
54
+ width: 100%;
55
+ height: 100%;
56
+ left: 0;
57
+ top: 0;
58
+ border: 1px solid #fff;
59
+ z-index: 6;
60
+ position: absolute;
61
+ }
62
+ .player-timeline-layout.player-segment-timeline-layout .segment-line-box .segment-line-item.segment-line-item-none {
63
+ background: #de0e0e;
64
+ z-index: 6;
65
+ cursor: not-allowed;
66
+ }
67
+ .player-timeline-layout.frontend-player-timeline-layout .frontend-line-mark {
68
+ position: absolute;
69
+ height: 100%;
70
+ width: 2px;
71
+ background-color: #fff;
72
+ pointer-events: none;
73
+ }
74
+ .player-timeline-layout.frontend-player-timeline-layout .frontend-line-tip-box {
75
+ position: absolute;
76
+ top: -130px;
77
+ color: #fff;
78
+ font-size: 12px;
79
+ border-radius: 3px;
80
+ background-color: #000000;
81
+ padding: 10px;
82
+ width: 162px;
83
+ line-height: 20px;
84
+ margin-left: -81px;
85
+ }
86
+ .segment-line-tip-box {
87
+ font-size: 12px;
88
+ }
89
+ .segment-line-tip-box div {
90
+ margin: 0;
91
+ padding: 2px 0;
92
+ }
@@ -0,0 +1,11 @@
1
+ /// <reference types="react" />
2
+ import type Api from './api';
3
+ import type VideoEventInstance from './event';
4
+ import './style/timeline.less';
5
+ interface ITimeLineProps {
6
+ api: Api;
7
+ event: VideoEventInstance;
8
+ }
9
+ export declare function useTimes(api: Api, event: VideoEventInstance, isHide?: boolean): number[];
10
+ declare function TimeLine({ api, event }: ITimeLineProps): JSX.Element;
11
+ export default TimeLine;
@@ -0,0 +1,104 @@
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
+
13
+ import React, { useCallback, useEffect, useMemo, useState } from 'react';
14
+ import useBarStatus from './contraller_bar/useBarStatus';
15
+ import "./style/timeline.css";
16
+ export function useTimes(api, event, isHide) {
17
+ var _useState = useState({
18
+ currentTime: 0,
19
+ buffered: 0
20
+ }),
21
+ _useState2 = _slicedToArray(_useState, 2),
22
+ state = _useState2[0],
23
+ setState = _useState2[1];
24
+
25
+ if (isHide) {
26
+ return [0, 0, 0];
27
+ }
28
+
29
+ useEffect(function () {
30
+ var getCurrentTime = function getCurrentTime() {
31
+ return setState(function (old) {
32
+ return Object.assign(Object.assign({}, old), {
33
+ currentTime: api.getCurrentTime(),
34
+ buffered: api.getSecondsLoaded()
35
+ });
36
+ });
37
+ };
38
+
39
+ var getBuffered = function getBuffered() {
40
+ return setState(function (old) {
41
+ return Object.assign(Object.assign({}, old), {
42
+ buffered: api.getSecondsLoaded()
43
+ });
44
+ });
45
+ };
46
+
47
+ var seekendPlay = function seekendPlay() {
48
+ return api.play();
49
+ };
50
+
51
+ event.addEventListener('timeupdate', getCurrentTime);
52
+ event.addEventListener('progress', getBuffered);
53
+ event.addEventListener('suspend', getBuffered);
54
+ event.addEventListener('seeked', seekendPlay);
55
+ return function () {
56
+ event.removeEventListener('timeupdate', getCurrentTime);
57
+ event.removeEventListener('progress', getBuffered);
58
+ event.removeEventListener('suspend', getBuffered);
59
+ event.removeEventListener('seeked', seekendPlay);
60
+ };
61
+ }, [event, api]);
62
+ return [state.currentTime, state.buffered, api.getDuration()];
63
+ }
64
+
65
+ function TimeLine(_ref) {
66
+ var api = _ref.api,
67
+ event = _ref.event;
68
+ var status = useBarStatus(event);
69
+
70
+ var _useTimes = useTimes(api, event),
71
+ _useTimes2 = _slicedToArray(_useTimes, 3),
72
+ currentTime = _useTimes2[0],
73
+ buffered = _useTimes2[1],
74
+ duration = _useTimes2[2];
75
+
76
+ var playPercent = useMemo(function () {
77
+ return currentTime / duration * 100;
78
+ }, [currentTime]);
79
+ var bufferedPercent = useMemo(function () {
80
+ return buffered / duration * 100;
81
+ }, [buffered]);
82
+ var seekWithLine = useCallback(function (e) {
83
+ var rect = e.currentTarget.getBoundingClientRect();
84
+ var current = e.pageX - rect.left;
85
+ var cTime = current / rect.width * api.getDuration();
86
+ api.seekTo(cTime);
87
+ }, [api]);
88
+ return /*#__PURE__*/React.createElement("div", {
89
+ className: "player-timeline-layout ".concat(status === 0 ? 'hide-time-line' : ''),
90
+ onClick: seekWithLine
91
+ }, /*#__PURE__*/React.createElement("div", {
92
+ className: "buffer-line",
93
+ style: {
94
+ width: "".concat(bufferedPercent, "%")
95
+ }
96
+ }), /*#__PURE__*/React.createElement("div", {
97
+ className: "current-line",
98
+ style: {
99
+ width: "".concat(playPercent, "%")
100
+ }
101
+ }));
102
+ }
103
+
104
+ export default TimeLine;