@cloud-app-dev/vidc 3.0.0 → 3.0.3
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.
- package/.umirc.ts +1 -1
- package/es/ErrorBoundary/index.d.ts +2 -2
- package/es/ErrorBoundary/index.js +2 -7
- package/es/LoaderApp/utils.d.ts +1 -1
- package/es/Map/BasicMap/index.js +3 -8
- package/es/Modal/index.js +7 -5
- package/es/Picture/component/RectMenu/index.d.ts +1 -1
- package/es/Player/api/index.d.ts +1 -8
- package/es/Player/api/index.js +23 -34
- package/es/Player/contraller_bar/left_bar.js +2 -2
- package/es/Player/contraller_bar/right_bar.d.ts +1 -1
- package/es/Player/contraller_bar/right_bar.js +13 -27
- package/es/Player/demo.js +8 -3
- package/es/Player/frontend_player.d.ts +1 -2
- package/es/Player/frontend_player.js +27 -57
- package/es/Player/frontend_timeline.d.ts +2 -1
- package/es/Player/frontend_timeline.js +20 -9
- package/es/Player/player.d.ts +7 -9
- package/es/Player/segment_player.d.ts +1 -1
- package/es/Player/segment_player.js +74 -36
- package/es/Player/segment_timeline.js +8 -7
- package/es/Player/single_player.d.ts +2 -2
- package/es/Player/single_player.js +14 -10
- package/es/Player/util.d.ts +2 -24
- package/es/Player/util.js +43 -54
- package/es/PlayerExt/index.d.ts +1 -1
- package/es/ScreenPlayer/PlayerWithExt.d.ts +2 -2
- package/es/ScreenPlayer/PlayerWithExt.js +21 -28
- package/es/ScreenPlayer/Record.d.ts +5 -0
- package/es/ScreenPlayer/Record.js +7 -19
- package/es/ScreenPlayer/TimeSlider.d.ts +1 -1
- package/es/ScreenPlayer/TimeSlider.js +39 -35
- package/es/ScreenPlayer/demo2.js +1 -1
- package/es/ScreenPlayer/index.css +2 -3
- package/es/ScreenPlayer/index.d.ts +2 -3
- package/es/ScreenPlayer/index.js +4 -3
- package/es/ScreenPlayer/useRecordList.d.ts +1 -1
- package/es/ScreenPlayer/useVideoFit.d.ts +1 -1
- package/es/ScreenPlayer/useVideoFit.js +4 -2
- package/es/ScreenPlayer/utils.d.ts +1 -1
- package/es/Timeout/index.d.ts +33 -0
- package/es/Timeout/index.js +83 -0
- package/es/index.d.ts +1 -0
- package/es/index.js +1 -0
- package/es/withErrorBoundary/index.d.ts +2 -1
- package/es/withErrorBoundary/index.js +4 -2
- package/package.json +1 -1
- package/release-build.sh +44 -0
package/.umirc.ts
CHANGED
|
@@ -2,7 +2,7 @@ import { defineConfig } from 'dumi';
|
|
|
2
2
|
import path from 'path';
|
|
3
3
|
|
|
4
4
|
const token =
|
|
5
|
-
'eyJhbGciOiJIUzI1NiJ9.
|
|
5
|
+
'eyJhbGciOiJIUzI1NiJ9.eyJvcmdhbml6YXRpb25JZCI6IjEwMDEwMTAwMDQ0NSIsImV4dCI6MTY2MTM4OTU0MzA4NSwidWlkIjoiMTAxMDAwMDAwNjk5IiwidmFsaWRTdGF0ZSI6MTA0NDA2LCJyb2xlSWQiOlsxMDAwMDAxMTA1MTgsMTAwMDAwMTEwNzI4XSwidmFsaWRUaW1lIjoxNzA0MzgzOTk5MDAwLCJvcHRDZW50ZXJJZCI6IjEwMDEwMDAwMDIzMyIsInVzZXJUeXBlIjoxMDA3MDQsImlhdCI6MTY2MTEzMDM0MzA4NX0.-0vh7SpomB6UWteJ6WIA5VneryhSW3Vrsz6RnHfgcRI';
|
|
6
6
|
|
|
7
7
|
export default defineConfig({
|
|
8
8
|
title: 'CloudApp VIDC',
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import React, { Component, ErrorInfo } from 'react';
|
|
2
2
|
export declare type IErrorBoundaryProps = {
|
|
3
|
-
fallback?:
|
|
3
|
+
fallback?: React.ReactNode;
|
|
4
4
|
children?: React.ReactNode;
|
|
5
5
|
};
|
|
6
6
|
declare type State = {
|
|
@@ -13,6 +13,6 @@ declare class ErrorBoundary extends Component<IErrorBoundaryProps, State> {
|
|
|
13
13
|
};
|
|
14
14
|
static getDerivedStateFromError(error: Error): State;
|
|
15
15
|
componentDidCatch(error: Error, info: ErrorInfo): void;
|
|
16
|
-
render():
|
|
16
|
+
render(): React.ReactNode;
|
|
17
17
|
}
|
|
18
18
|
export default ErrorBoundary;
|
|
@@ -53,13 +53,7 @@ var ErrorBoundary = /*#__PURE__*/function (_Component) {
|
|
|
53
53
|
fallback = _this$props.fallback;
|
|
54
54
|
|
|
55
55
|
if (error) {
|
|
56
|
-
|
|
57
|
-
return fallback;
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
if (typeof fallback === 'function') {
|
|
61
|
-
return fallback();
|
|
62
|
-
}
|
|
56
|
+
return fallback;
|
|
63
57
|
}
|
|
64
58
|
|
|
65
59
|
return children;
|
|
@@ -67,6 +61,7 @@ var ErrorBoundary = /*#__PURE__*/function (_Component) {
|
|
|
67
61
|
}], [{
|
|
68
62
|
key: "getDerivedStateFromError",
|
|
69
63
|
value: function getDerivedStateFromError(error) {
|
|
64
|
+
console.error(error);
|
|
70
65
|
return {
|
|
71
66
|
error: true
|
|
72
67
|
};
|
package/es/LoaderApp/utils.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { AppItemType } from '
|
|
1
|
+
import { AppItemType } from '../Config/interface';
|
|
2
2
|
export declare const getMicroConfig: (appConfig: AppItemType, appProps: any, container: HTMLDivElement) => {
|
|
3
3
|
title: string;
|
|
4
4
|
routerPrefix: string;
|
package/es/Map/BasicMap/index.js
CHANGED
|
@@ -34,12 +34,12 @@ var Map = /*#__PURE__*/function (_React$Component) {
|
|
|
34
34
|
|
|
35
35
|
var _super = _createSuper(Map);
|
|
36
36
|
|
|
37
|
-
function Map(
|
|
37
|
+
function Map() {
|
|
38
38
|
var _this;
|
|
39
39
|
|
|
40
40
|
_classCallCheck(this, Map);
|
|
41
41
|
|
|
42
|
-
_this = _super.
|
|
42
|
+
_this = _super.apply(this, arguments);
|
|
43
43
|
_this.domRef = /*#__PURE__*/React.createRef();
|
|
44
44
|
return _this;
|
|
45
45
|
}
|
|
@@ -51,8 +51,8 @@ var Map = /*#__PURE__*/function (_React$Component) {
|
|
|
51
51
|
return;
|
|
52
52
|
}
|
|
53
53
|
|
|
54
|
-
var instance = this.props.isL ? LeafletInstance : AMapInstance;
|
|
55
54
|
var mapOptions = this.props.config;
|
|
55
|
+
var instance = this.props.isL ? LeafletInstance : AMapInstance;
|
|
56
56
|
this.mapInstance = new instance(this.domRef.current, mapOptions);
|
|
57
57
|
this.mapInstance.createMap();
|
|
58
58
|
this.forceUpdate();
|
|
@@ -62,11 +62,6 @@ var Map = /*#__PURE__*/function (_React$Component) {
|
|
|
62
62
|
value: function componentWillUnmount() {
|
|
63
63
|
this.mapInstance.destoryMap();
|
|
64
64
|
}
|
|
65
|
-
}, {
|
|
66
|
-
key: "componentDidCatch",
|
|
67
|
-
value: function componentDidCatch(error, errorInfo) {
|
|
68
|
-
console.log(error, errorInfo);
|
|
69
|
-
}
|
|
70
65
|
}, {
|
|
71
66
|
key: "render",
|
|
72
67
|
value: function render() {
|
package/es/Modal/index.js
CHANGED
|
@@ -19,8 +19,8 @@ import { __rest } from "tslib";
|
|
|
19
19
|
import React, { useContext, useEffect, useImperativeHandle, useMemo, useState } from 'react';
|
|
20
20
|
import * as ReactDOMClient from 'react-dom/client';
|
|
21
21
|
import CC from '../ConfigContext';
|
|
22
|
-
import "./index.css";
|
|
23
22
|
import ConfigContext from '../ConfigContext';
|
|
23
|
+
import "./index.css";
|
|
24
24
|
|
|
25
25
|
function Modal(_a) {
|
|
26
26
|
var children = _a.children,
|
|
@@ -69,15 +69,16 @@ function useModal() {
|
|
|
69
69
|
|
|
70
70
|
var root = useMemo(function () {
|
|
71
71
|
return ReactDOMClient.createRoot(div);
|
|
72
|
-
}, []);
|
|
72
|
+
}, [div]);
|
|
73
73
|
useEffect(function () {
|
|
74
74
|
container.appendChild(div);
|
|
75
75
|
return function () {
|
|
76
|
+
// eslint-disable-next-line no-sequences
|
|
76
77
|
setTimeout(function () {
|
|
77
78
|
return root.unmount(), div.remove();
|
|
78
79
|
}, 100);
|
|
79
80
|
};
|
|
80
|
-
}, []);
|
|
81
|
+
}, [container, div, root]);
|
|
81
82
|
useEffect(function () {
|
|
82
83
|
root.render( /*#__PURE__*/React.createElement(_ConfigProvider, {
|
|
83
84
|
prefixCls: prefixCls,
|
|
@@ -96,7 +97,7 @@ function useModal() {
|
|
|
96
97
|
className: state.className,
|
|
97
98
|
getContainer: false
|
|
98
99
|
}, state.content)));
|
|
99
|
-
}, [state.content, state.visible, state.title, state.onOk, state.width, state.className]);
|
|
100
|
+
}, [state.content, state.visible, state.title, state.onOk, state.width, state.className, root, prefixCls, container]);
|
|
100
101
|
|
|
101
102
|
var open = function open(options) {
|
|
102
103
|
setState(function (old) {
|
|
@@ -152,7 +153,8 @@ var RefModal = /*#__PURE__*/React.forwardRef(function RefModal(_, ref) {
|
|
|
152
153
|
visible: false
|
|
153
154
|
});
|
|
154
155
|
});
|
|
155
|
-
};
|
|
156
|
+
}; // eslint-disable-next-line react-hooks/exhaustive-deps
|
|
157
|
+
|
|
156
158
|
|
|
157
159
|
useImperativeHandle(ref, function () {
|
|
158
160
|
return {
|
package/es/Player/api/index.d.ts
CHANGED
|
@@ -5,14 +5,6 @@ declare class Api {
|
|
|
5
5
|
container: HTMLElement;
|
|
6
6
|
constructor(container: HTMLElement);
|
|
7
7
|
get video(): HTMLVideoElement;
|
|
8
|
-
/**
|
|
9
|
-
* 全屏
|
|
10
|
-
*/
|
|
11
|
-
requestFullScreen: () => void;
|
|
12
|
-
/**
|
|
13
|
-
* 退出全屏
|
|
14
|
-
*/
|
|
15
|
-
cancelFullScreen: () => void;
|
|
16
8
|
play: () => void;
|
|
17
9
|
pause: () => void;
|
|
18
10
|
/**
|
|
@@ -60,6 +52,7 @@ declare class Api {
|
|
|
60
52
|
unload: () => void;
|
|
61
53
|
reload: () => void;
|
|
62
54
|
toggleFit: () => void;
|
|
55
|
+
setIndex: (i: number) => void;
|
|
63
56
|
destroy: () => void;
|
|
64
57
|
}
|
|
65
58
|
export declare type TypeAndPlay = {
|
package/es/Player/api/index.js
CHANGED
|
@@ -19,7 +19,7 @@ function _defineProperties(target, props) { for (var i = 0; i < props.length; i+
|
|
|
19
19
|
function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
|
|
20
20
|
|
|
21
21
|
import { useEffect, useState } from 'react';
|
|
22
|
-
import {
|
|
22
|
+
import { createFlvPlayer, createHlsPlayer, tryCatch } from '../util';
|
|
23
23
|
|
|
24
24
|
var Api = /*#__PURE__*/function () {
|
|
25
25
|
function Api(container) {
|
|
@@ -27,29 +27,10 @@ var Api = /*#__PURE__*/function () {
|
|
|
27
27
|
|
|
28
28
|
_classCallCheck(this, Api);
|
|
29
29
|
|
|
30
|
-
/**
|
|
31
|
-
* 全屏
|
|
32
|
-
*/
|
|
33
|
-
this.requestFullScreen = function () {
|
|
34
|
-
if (!isFullscreen(_this.container)) {
|
|
35
|
-
fullscreen(_this.container);
|
|
36
|
-
}
|
|
37
|
-
};
|
|
38
|
-
/**
|
|
39
|
-
* 退出全屏
|
|
40
|
-
*/
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
this.cancelFullScreen = function () {
|
|
44
|
-
if (isFullscreen(_this.container)) {
|
|
45
|
-
exitFullscreen();
|
|
46
|
-
}
|
|
47
|
-
};
|
|
48
|
-
|
|
49
30
|
this.play = function () {
|
|
50
|
-
|
|
51
|
-
_this.video.play();
|
|
52
|
-
}
|
|
31
|
+
tryCatch(function () {
|
|
32
|
+
return _this.video.play();
|
|
33
|
+
});
|
|
53
34
|
};
|
|
54
35
|
|
|
55
36
|
this.pause = function () {
|
|
@@ -63,6 +44,7 @@ var Api = /*#__PURE__*/function () {
|
|
|
63
44
|
|
|
64
45
|
|
|
65
46
|
this.seekTo = function (seconds) {
|
|
47
|
+
debugger;
|
|
66
48
|
_this.video.currentTime = seconds;
|
|
67
49
|
};
|
|
68
50
|
|
|
@@ -184,6 +166,8 @@ var Api = /*#__PURE__*/function () {
|
|
|
184
166
|
|
|
185
167
|
this.toggleFit = function () {};
|
|
186
168
|
|
|
169
|
+
this.setIndex = function (i) {};
|
|
170
|
+
|
|
187
171
|
this.destroy = function () {
|
|
188
172
|
_this.container = null;
|
|
189
173
|
};
|
|
@@ -243,24 +227,29 @@ export function useTypeAndPlay(url, type, isLive, container, segments, flvConfig
|
|
|
243
227
|
video.setAttribute('src', url);
|
|
244
228
|
}
|
|
245
229
|
|
|
246
|
-
|
|
247
|
-
video.play();
|
|
248
|
-
}
|
|
249
|
-
|
|
230
|
+
url && video.paused && tryCatch(function () {
|
|
231
|
+
return video.play();
|
|
232
|
+
});
|
|
250
233
|
setState(options);
|
|
251
234
|
return function () {
|
|
252
235
|
if (options.flv) {
|
|
253
|
-
options.flv.
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
236
|
+
options.flv.pause();
|
|
237
|
+
tryCatch(function () {
|
|
238
|
+
return options.flv.destroy();
|
|
239
|
+
});
|
|
240
|
+
} else if (options.hls) {
|
|
241
|
+
video.pause();
|
|
242
|
+
tryCatch(function () {
|
|
243
|
+
return options.hls.destroy();
|
|
244
|
+
});
|
|
245
|
+
} else {
|
|
246
|
+
video.pause();
|
|
247
|
+
video.removeAttribute('src');
|
|
258
248
|
}
|
|
259
249
|
|
|
260
|
-
video.removeAttribute('src');
|
|
261
250
|
setState({});
|
|
262
251
|
};
|
|
263
|
-
}, [url, container, segments, type]);
|
|
252
|
+
}, [url, container, segments, type, isLive, flvConfig, hlsConfig]);
|
|
264
253
|
return [state.type, state.flv, state.hls];
|
|
265
254
|
} //创建Api
|
|
266
255
|
|
|
@@ -46,6 +46,7 @@ function LeftBar(_ref) {
|
|
|
46
46
|
};
|
|
47
47
|
}, [event]);
|
|
48
48
|
var video = container.querySelector('video'); //缓存值
|
|
49
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
49
50
|
|
|
50
51
|
var paused = useMemo(function () {
|
|
51
52
|
return video === null || video === void 0 ? void 0 : video.paused;
|
|
@@ -60,7 +61,6 @@ function LeftBar(_ref) {
|
|
|
60
61
|
var _useTimes = useTimes(api, event, hideTimeProgress),
|
|
61
62
|
_useTimes2 = _slicedToArray(_useTimes, 3),
|
|
62
63
|
current = _useTimes2[0],
|
|
63
|
-
_ = _useTimes2[1],
|
|
64
64
|
duration = _useTimes2[2]; //TODO 方法
|
|
65
65
|
|
|
66
66
|
|
|
@@ -72,7 +72,7 @@ function LeftBar(_ref) {
|
|
|
72
72
|
} else {
|
|
73
73
|
api.pause();
|
|
74
74
|
}
|
|
75
|
-
}, [video, api
|
|
75
|
+
}, [video, api]);
|
|
76
76
|
return /*#__PURE__*/React.createElement("div", {
|
|
77
77
|
className: "contraller-left-bar"
|
|
78
78
|
}, leftExtContents, /*#__PURE__*/React.createElement(Bar, null, /*#__PURE__*/React.createElement(IconFont, {
|
|
@@ -9,5 +9,5 @@ interface IRightBarProps {
|
|
|
9
9
|
rightExtContents: React.ReactNode;
|
|
10
10
|
rightMidExtContents: React.ReactNode;
|
|
11
11
|
}
|
|
12
|
-
declare function RightBar({ container,
|
|
12
|
+
declare function RightBar({ container, rightExtContents, rightMidExtContents }: IRightBarProps): JSX.Element;
|
|
13
13
|
export default RightBar;
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import _useFullscreen3 from "ahooks/es/useFullscreen";
|
|
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,45 +12,29 @@ 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
|
|
15
|
+
import React from 'react';
|
|
14
16
|
import IconFont from '../iconfont';
|
|
15
17
|
import Bar from './bar';
|
|
16
|
-
import { isFullscreen } from '../util';
|
|
17
18
|
|
|
18
19
|
function RightBar(_ref) {
|
|
19
20
|
var container = _ref.container,
|
|
20
|
-
api = _ref.api,
|
|
21
21
|
rightExtContents = _ref.rightExtContents,
|
|
22
22
|
rightMidExtContents = _ref.rightMidExtContents;
|
|
23
23
|
|
|
24
|
-
var
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
};
|
|
33
|
-
|
|
34
|
-
document.addEventListener('fullscreenchange', update);
|
|
35
|
-
return function () {
|
|
36
|
-
return document.removeEventListener('fullscreenchange', update);
|
|
37
|
-
};
|
|
38
|
-
}, []);
|
|
39
|
-
var isfull = useMemo(function () {
|
|
40
|
-
return isFullscreen(container);
|
|
41
|
-
}, [dep, container]);
|
|
42
|
-
var fullscreen = useCallback(function () {
|
|
43
|
-
!isFullscreen(container) ? api.requestFullScreen() : api.cancelFullScreen();
|
|
44
|
-
setDep(Date.now());
|
|
45
|
-
}, [api, container]);
|
|
24
|
+
var _useFullscreen = _useFullscreen3(container),
|
|
25
|
+
_useFullscreen2 = _slicedToArray(_useFullscreen, 2),
|
|
26
|
+
isFullScreen = _useFullscreen2[0],
|
|
27
|
+
_useFullscreen2$ = _useFullscreen2[1],
|
|
28
|
+
enterFullscreen = _useFullscreen2$.enterFullscreen,
|
|
29
|
+
exitFullscreen = _useFullscreen2$.exitFullscreen;
|
|
30
|
+
|
|
31
|
+
var fullscreen = isFullScreen ? exitFullscreen : enterFullscreen;
|
|
46
32
|
return /*#__PURE__*/React.createElement("div", {
|
|
47
33
|
className: "contraller-right-bar"
|
|
48
34
|
}, rightMidExtContents, /*#__PURE__*/React.createElement(Bar, null, /*#__PURE__*/React.createElement(IconFont, {
|
|
49
|
-
title:
|
|
35
|
+
title: isFullScreen ? '窗口' : '全屏',
|
|
50
36
|
onClick: fullscreen,
|
|
51
|
-
type:
|
|
37
|
+
type: isFullScreen ? 'lm-player-ExitFull_Main' : 'lm-player-Full_Main'
|
|
52
38
|
})), rightExtContents);
|
|
53
39
|
}
|
|
54
40
|
|
package/es/Player/demo.js
CHANGED
|
@@ -197,7 +197,7 @@ function Demo2() {
|
|
|
197
197
|
|
|
198
198
|
function Demo3() {
|
|
199
199
|
var _useState5 = useState({
|
|
200
|
-
url: 'http://
|
|
200
|
+
url: 'http://clips.vorwaerts-gmbh.de/big_buck_bunny.mp4',
|
|
201
201
|
tempUrl: '',
|
|
202
202
|
begin: 1652889636,
|
|
203
203
|
end: 1652890200
|
|
@@ -208,7 +208,8 @@ function Demo3() {
|
|
|
208
208
|
|
|
209
209
|
return /*#__PURE__*/React.createElement("div", {
|
|
210
210
|
style: {
|
|
211
|
-
width: '
|
|
211
|
+
width: '600px',
|
|
212
|
+
height: '400px',
|
|
212
213
|
marginTop: 20
|
|
213
214
|
}
|
|
214
215
|
}, /*#__PURE__*/React.createElement("h3", null, " \u524D\u7AEF\u5F55\u50CF\u89C6\u9891\u64AD\u653E"), /*#__PURE__*/React.createElement("div", {
|
|
@@ -247,7 +248,11 @@ function Demo3() {
|
|
|
247
248
|
end: state.end,
|
|
248
249
|
url: state.url,
|
|
249
250
|
onSeek: function onSeek(time) {
|
|
250
|
-
return
|
|
251
|
+
return setState(function (old) {
|
|
252
|
+
return Object.assign(Object.assign({}, old), {
|
|
253
|
+
url: "".concat(old.url, "?").concat(time)
|
|
254
|
+
});
|
|
255
|
+
});
|
|
251
256
|
}
|
|
252
257
|
}));
|
|
253
258
|
}
|
|
@@ -2,8 +2,7 @@
|
|
|
2
2
|
import type { IFrontendPlayerProps } from './player';
|
|
3
3
|
/**
|
|
4
4
|
* @desc 主组件,负责片段整体逻辑控制
|
|
5
|
-
* @
|
|
6
|
-
* @returns
|
|
5
|
+
* @return JSX.Element
|
|
7
6
|
*/
|
|
8
7
|
declare function FrontendPlayer({ url, begin, end, onSeek, forwordRef, customTimeLine, onCanPlayerInit, ...props }: IFrontendPlayerProps): JSX.Element;
|
|
9
8
|
export default FrontendPlayer;
|
|
@@ -1,26 +1,14 @@
|
|
|
1
|
-
|
|
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
|
|
3
|
+
import React, { useCallback, useMemo, useRef } from 'react';
|
|
15
4
|
import SinglePlayer from './single_player';
|
|
16
5
|
import FrontendTimeLine from './frontend_timeline';
|
|
17
6
|
import Events from './event/eventName';
|
|
7
|
+
|
|
18
8
|
/**
|
|
19
9
|
* @desc 主组件,负责片段整体逻辑控制
|
|
20
|
-
* @
|
|
21
|
-
* @returns
|
|
10
|
+
* @return JSX.Element
|
|
22
11
|
*/
|
|
23
|
-
|
|
24
12
|
function FrontendPlayer(_a) {
|
|
25
13
|
var url = _a.url,
|
|
26
14
|
begin = _a.begin,
|
|
@@ -28,69 +16,51 @@ function FrontendPlayer(_a) {
|
|
|
28
16
|
onSeek = _a.onSeek,
|
|
29
17
|
forwordRef = _a.forwordRef,
|
|
30
18
|
customTimeLine = _a.customTimeLine,
|
|
31
|
-
|
|
19
|
+
onCanPlayerInit = _a.onCanPlayerInit,
|
|
32
20
|
props = __rest(_a, ["url", "begin", "end", "onSeek", "forwordRef", "customTimeLine", "onCanPlayerInit"]);
|
|
33
21
|
|
|
34
|
-
var
|
|
35
|
-
forceKey: Date.now()
|
|
36
|
-
}),
|
|
37
|
-
_useState2 = _slicedToArray(_useState, 2),
|
|
38
|
-
state = _useState2[0],
|
|
39
|
-
setState = _useState2[1];
|
|
22
|
+
var update = _useUpdate();
|
|
40
23
|
|
|
41
24
|
var ref = useRef(null);
|
|
42
25
|
var playRef = forwordRef ? forwordRef : ref;
|
|
43
26
|
|
|
44
27
|
var _ref = playRef.current || {},
|
|
45
28
|
api = _ref.api,
|
|
46
|
-
event = _ref.event; //
|
|
29
|
+
event = _ref.event; // 转换毫秒
|
|
47
30
|
|
|
48
31
|
|
|
49
|
-
var beginTemp = useMemo(function () {
|
|
50
|
-
return begin ? String(begin).length === 10 ? Math.floor(begin * 1000) : begin : begin;
|
|
51
|
-
}, []);
|
|
52
|
-
var endTemp = useMemo(function () {
|
|
53
|
-
return end ? String(end).length === 10 ? Math.floor(end * 1000) : end : end;
|
|
54
|
-
}, []);
|
|
55
32
|
var duration = useMemo(function () {
|
|
56
|
-
return (
|
|
57
|
-
}, [
|
|
33
|
+
return (begin - end) / 1000;
|
|
34
|
+
}, [begin, end]); //单位s 秒
|
|
58
35
|
// 重置reload
|
|
59
36
|
|
|
60
37
|
var reload = function reload() {
|
|
61
38
|
playRef.current.event.emit(Events.RELOAD);
|
|
62
|
-
onSeek && onSeek(
|
|
39
|
+
onSeek && onSeek(begin);
|
|
63
40
|
playRef.current.api.reload();
|
|
64
|
-
setState(function (old) {
|
|
65
|
-
return Object.assign(Object.assign({}, old), {
|
|
66
|
-
forceKey: Date.now()
|
|
67
|
-
});
|
|
68
|
-
});
|
|
69
41
|
};
|
|
70
42
|
|
|
43
|
+
var onInit = useCallback(function () {
|
|
44
|
+
update();
|
|
45
|
+
onCanPlayerInit && onCanPlayerInit(); // eslint-disable-next-line react-hooks/exhaustive-deps
|
|
46
|
+
}, []);
|
|
47
|
+
var hasReady = api && event;
|
|
48
|
+
var timeline = customTimeLine !== null && customTimeLine !== void 0 ? customTimeLine : /*#__PURE__*/React.createElement(FrontendTimeLine, {
|
|
49
|
+
end: end,
|
|
50
|
+
url: url,
|
|
51
|
+
onSeek: onSeek,
|
|
52
|
+
begin: begin,
|
|
53
|
+
api: api,
|
|
54
|
+
event: event,
|
|
55
|
+
duration: duration
|
|
56
|
+
});
|
|
71
57
|
return /*#__PURE__*/React.createElement(SinglePlayer, Object.assign({
|
|
72
58
|
ref: playRef,
|
|
73
59
|
url: url,
|
|
74
|
-
type: "flv",
|
|
75
60
|
reload: reload,
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
forceKey: Date.now()
|
|
80
|
-
});
|
|
81
|
-
_onCanPlayerInit && _onCanPlayerInit({
|
|
82
|
-
reload: reload
|
|
83
|
-
});
|
|
84
|
-
},
|
|
85
|
-
customTimeLine: api && event && (customTimeLine || /*#__PURE__*/React.createElement(FrontendTimeLine, {
|
|
86
|
-
end: endTemp,
|
|
87
|
-
onSeek: onSeek,
|
|
88
|
-
key: state.forceKey,
|
|
89
|
-
begin: beginTemp,
|
|
90
|
-
api: api,
|
|
91
|
-
event: event,
|
|
92
|
-
duration: duration
|
|
93
|
-
}))
|
|
61
|
+
onCanPlayerInit: onInit,
|
|
62
|
+
isLive: false,
|
|
63
|
+
customTimeLine: hasReady ? timeline : /*#__PURE__*/React.createElement(React.Fragment, null)
|
|
94
64
|
}, props));
|
|
95
65
|
}
|
|
96
66
|
|
|
@@ -9,6 +9,7 @@ interface ITimeLineProps {
|
|
|
9
9
|
begin: number;
|
|
10
10
|
end: number;
|
|
11
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 {
|
|
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
|
-
}, [
|
|
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",
|
|
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;
|