@cloud-app-dev/vidc 3.0.7 → 3.0.10

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.
@@ -69,7 +69,8 @@ export function SegmentPlayerWithExt(_a) {
69
69
  segments = _a.segments,
70
70
  updatePlayer = _a.updatePlayer,
71
71
  onClick = _a.onClick,
72
- props = __rest(_a, ["begin", "style", "className", "segments", "updatePlayer", "onClick"]);
72
+ mode = _a.mode,
73
+ props = __rest(_a, ["begin", "style", "className", "segments", "updatePlayer", "onClick", "mode"]);
73
74
 
74
75
  var ref = useRef();
75
76
  var update = useCallback(function () {
@@ -87,7 +88,7 @@ export function SegmentPlayerWithExt(_a) {
87
88
  onDoubleClick: toggleFullscreen
88
89
  }, /*#__PURE__*/React.createElement(ExtModel, {
89
90
  segments: segments,
90
- mode: 1
91
+ mode: mode
91
92
  }, /*#__PURE__*/React.createElement(SegmentPlayer, Object.assign({}, props, {
92
93
  segments: segments,
93
94
  type: "hls",
@@ -6,5 +6,5 @@ import './index.less';
6
6
  * @param param0
7
7
  * @returns
8
8
  */
9
- declare function RecordPlayer({ list, children, queryRecord, onIndexChange, onClose, onCloseAll }: IRecordPlayerProps): JSX.Element;
9
+ declare function RecordPlayer({ list, children, queryRecord, onIndexChange, onClose, onCloseAll, download }: IRecordPlayerProps): JSX.Element;
10
10
  export default RecordPlayer;
@@ -36,6 +36,16 @@ import useRecordList from './useRecordList';
36
36
  import useVideoFit from './useVideoFit';
37
37
  import DisableMark from '../DisableMark';
38
38
  import "./index.css";
39
+ var defaultState = {
40
+ screenNum: 4,
41
+ selectIndex: 0,
42
+ modes: [],
43
+ currentTimes: [],
44
+ loading: false,
45
+ seekTo: 0,
46
+ mergeSegments: [],
47
+ timeMode: 24
48
+ };
39
49
  /**
40
50
  * @desc 录像设计的时间全部需要到毫秒
41
51
  * @param param0
@@ -50,18 +60,10 @@ function RecordPlayer(_ref) {
50
60
  queryRecord = _ref.queryRecord,
51
61
  onIndexChange = _ref.onIndexChange,
52
62
  onClose = _ref.onClose,
53
- onCloseAll = _ref.onCloseAll;
54
-
55
- var _useState = useState({
56
- screenNum: 4,
57
- selectIndex: 0,
58
- mode: 1,
59
- currentTimes: [],
60
- loading: false,
61
- seekTo: 0,
62
- mergeSegments: [],
63
- timeMode: 24
64
- }),
63
+ onCloseAll = _ref.onCloseAll,
64
+ download = _ref.download;
65
+
66
+ var _useState = useState(Object.assign({}, defaultState)),
65
67
  _useState2 = _slicedToArray(_useState, 2),
66
68
  state = _useState2[0],
67
69
  setState = _useState2[1];
@@ -113,11 +115,6 @@ function RecordPlayer(_ref) {
113
115
 
114
116
  return (_a = state.currentTimes[state.selectIndex]) !== null && _a !== void 0 ? _a : segmentItem.date;
115
117
  }, [segmentItem.date, state.currentTimes, state.selectIndex]);
116
- /**
117
- * 专门
118
- */
119
-
120
- useEffect(function () {}, [fit]);
121
118
  /**
122
119
  * @desc 用户缓存接收list的变化。
123
120
  */
@@ -202,7 +199,10 @@ function RecordPlayer(_ref) {
202
199
  }
203
200
 
204
201
  if (newState.hasOwnProperty('mode')) {
205
- obj.mode = newState.mode;
202
+ var newModes = _toConsumableArray(state.modes);
203
+
204
+ newModes[state.selectIndex] = newState.mode;
205
+ obj.modes = newModes;
206
206
  }
207
207
 
208
208
  if (newState.hasOwnProperty('timeMode')) {
@@ -319,7 +319,7 @@ function RecordPlayer(_ref) {
319
319
  }, /*#__PURE__*/React.createElement("div", {
320
320
  className: "player-layout"
321
321
  }, screenList.map(function (item, index) {
322
- var _a, _b, _c, _d, _e, _f;
322
+ var _a, _b, _c, _d, _e, _f, _g, _h;
323
323
 
324
324
  return item.recordType === 1 ? /*#__PURE__*/React.createElement(SegmentPlayerWithExt, Object.assign({}, item, {
325
325
  segments: ((_a = recordList[index]) === null || _a === void 0 ? void 0 : _a.segments) || [],
@@ -338,10 +338,11 @@ function RecordPlayer(_ref) {
338
338
  style: {
339
339
  width: screenType.width,
340
340
  height: screenType.height
341
- }
341
+ },
342
+ mode: (_d = item.mode) !== null && _d !== void 0 ? _d : state.modes[index]
342
343
  })) : /*#__PURE__*/React.createElement(FrontendPlayerWithExt, Object.assign({}, item, {
343
344
  className: state.selectIndex === index ? 'player-current-index' : '',
344
- segments: ((_d = recordList[index]) === null || _d === void 0 ? void 0 : _d.segments) || [],
345
+ segments: ((_e = recordList[index]) === null || _e === void 0 ? void 0 : _e.segments) || [],
345
346
  updatePlayer: function updatePlayer(player) {
346
347
  return _updatePlayer(player, index);
347
348
  },
@@ -352,8 +353,8 @@ function RecordPlayer(_ref) {
352
353
  });
353
354
  });
354
355
  },
355
- mode: state.mode,
356
- key: "".concat((_e = item === null || item === void 0 ? void 0 : item.date) !== null && _e !== void 0 ? _e : '', "-").concat((_f = item.cid) !== null && _f !== void 0 ? _f : '', "-").concat(index),
356
+ mode: (_f = item.mode) !== null && _f !== void 0 ? _f : state.modes[index],
357
+ key: "".concat((_g = item === null || item === void 0 ? void 0 : item.date) !== null && _g !== void 0 ? _g : '', "-").concat((_h = item.cid) !== null && _h !== void 0 ? _h : '', "-").concat(index),
357
358
  style: {
358
359
  width: screenType.width,
359
360
  height: screenType.height
@@ -369,13 +370,14 @@ function RecordPlayer(_ref) {
369
370
  toggleFit: toggleFit,
370
371
  getPlayerItem: getPlayerItem,
371
372
  screenNum: state.screenNum,
372
- mode: state.mode,
373
+ mode: state.modes[state.selectIndex],
373
374
  containerRef: domRef,
374
375
  updateState: updateState,
375
376
  onTimeChange: onTimeChange,
376
377
  onClose: onClose,
377
378
  onCloseAll: onCloseAll,
378
- timeMode: state.timeMode
379
+ timeMode: state.timeMode,
380
+ download: download
379
381
  }), /*#__PURE__*/React.createElement(SegmentTimeLine, {
380
382
  begin: timeBegin,
381
383
  updateState: updateState,
@@ -18,6 +18,7 @@ interface IToolsProps {
18
18
  onClose?: () => void;
19
19
  onCloseAll?: () => void;
20
20
  timeMode: number;
21
+ download?: () => void;
21
22
  }
22
- declare function RecordTools({ containerRef, updateState, screenNum, timeMode, getPlayerItem, mode, toggleFit, fit, time, onTimeChange, onClose, onCloseAll }: IToolsProps): JSX.Element;
23
+ declare function RecordTools({ containerRef, updateState, download, screenNum, timeMode, getPlayerItem, mode, toggleFit, fit, time, onTimeChange, onClose, onCloseAll, }: IToolsProps): JSX.Element;
23
24
  export default RecordTools;
@@ -22,6 +22,7 @@ import TimeMode from './TimeMode';
22
22
  function RecordTools(_ref) {
23
23
  var containerRef = _ref.containerRef,
24
24
  updateState = _ref.updateState,
25
+ download = _ref.download,
25
26
  screenNum = _ref.screenNum,
26
27
  timeMode = _ref.timeMode,
27
28
  getPlayerItem = _ref.getPlayerItem,
@@ -84,37 +85,56 @@ function RecordTools(_ref) {
84
85
  title: "\u91CD\u8F7D"
85
86
  })), /*#__PURE__*/React.createElement("span", {
86
87
  className: "player-tools-item",
87
- onClick: onClose
88
+ onClick: download
88
89
  }, /*#__PURE__*/React.createElement(IconFont, {
89
- type: "lm-player-YesorNo_No_Dark",
90
- title: "\u5173\u95ED\u5F53\u524D"
90
+ type: "lm-player-xiazai",
91
+ title: "\u4E0B\u8F7D\u5F53\u524D\u5F55\u50CF"
91
92
  })), /*#__PURE__*/React.createElement("span", {
92
- className: "player-tools-item"
93
+ className: "player-tools-item",
94
+ onClick: function onClick() {
95
+ return updateState({
96
+ mode: mode !== 2 ? 2 : 1
97
+ });
98
+ }
93
99
  }, /*#__PURE__*/React.createElement(IconFont, {
94
- type: "lm-player-S_Edit_LoadDown",
95
- title: "\u4E0B\u8F7D\u5F53\u524D\u5F55\u50CF"
100
+ style: {
101
+ top: 2,
102
+ position: 'relative',
103
+ left: 1
104
+ },
105
+ type: "lm-player-S_Device_shezhi",
106
+ title: "\u5207\u6362".concat(mode === 1 ? '插件' : '浏览器', "\u6A21\u5F0F")
96
107
  }))), /*#__PURE__*/React.createElement("div", {
97
108
  className: "player-tools-mid"
98
- }, /*#__PURE__*/React.createElement("span", {
109
+ }, /*#__PURE__*/React.createElement("div", {
99
110
  className: "player-tools-item",
100
- onClick: playToggle
101
- }, player && !player.video.paused ? /*#__PURE__*/React.createElement(IconFont, {
102
- type: "lm-player-Pause_Main",
103
- title: "\u6682\u505C"
104
- }) : /*#__PURE__*/React.createElement(IconFont, {
105
- type: "lm-player-Play_Main",
106
- title: "\u64AD\u653E"
111
+ onClick: onClose
112
+ }, /*#__PURE__*/React.createElement(IconFont, {
113
+ type: "lm-player-tingzhi",
114
+ title: "\u505C\u6B62",
115
+ style: {
116
+ fontSize: 16
117
+ }
107
118
  })), /*#__PURE__*/React.createElement(TimeSelect, {
108
119
  time: time,
109
120
  onChange: onTimeChange
110
- }), /*#__PURE__*/React.createElement("span", {
121
+ }), /*#__PURE__*/React.createElement("div", {
111
122
  className: "player-tools-item",
112
123
  onClick: playToggle
113
124
  }, player && !player.video.paused ? /*#__PURE__*/React.createElement(IconFont, {
114
125
  type: "lm-player-Pause_Main",
115
- title: "\u6682\u505C"
126
+ title: "\u6682\u505C",
127
+ style: {
128
+ fontSize: 22
129
+ }
116
130
  }) : /*#__PURE__*/React.createElement(IconFont, {
117
- type: "lm-player-Play_Main",
131
+ style: {
132
+ fontSize: 17,
133
+ position: 'relative',
134
+ left: 2,
135
+ top: 2
136
+ },
137
+ type: "lm-player-bofang",
118
138
  title: "\u64AD\u653E"
119
139
  }))), /*#__PURE__*/React.createElement("div", {
120
140
  className: "player-tools-right"
@@ -122,26 +142,16 @@ function RecordTools(_ref) {
122
142
  className: "player-tools-item",
123
143
  onClick: onCloseAll
124
144
  }, /*#__PURE__*/React.createElement(IconFont, {
125
- type: "lm-player-YesorNo_No_Dark",
145
+ type: "lm-player-quanbuguanbi",
126
146
  title: "\u5173\u95ED\u6240\u6709"
127
- })), /*#__PURE__*/React.createElement("span", {
128
- className: "player-tools-item",
129
- onClick: function onClick() {
130
- return updateState({
131
- mode: mode === 1 ? 2 : 1
132
- });
133
- }
134
- }, /*#__PURE__*/React.createElement(IconFont, {
135
- type: "lm-player-YesorNo_No_Dark",
136
- title: "\u5207\u6362".concat(mode === 1 ? '插件' : '浏览器', "\u6A21\u5F0F")
137
147
  })), /*#__PURE__*/React.createElement("span", {
138
148
  className: "player-tools-item",
139
149
  onClick: toggleFit
140
150
  }, fit === 'fill' ? /*#__PURE__*/React.createElement(IconFont, {
141
- type: "lm-player-S_View_ScreenSizeFull",
151
+ type: "lm-player-huamianshiying",
142
152
  title: "\u81EA\u9002\u5E94"
143
153
  }) : /*#__PURE__*/React.createElement(IconFont, {
144
- type: "lm-player-S_View_ScreenSizeFull",
154
+ type: "lm-player-huamianshiying",
145
155
  title: "\u586B\u5145"
146
156
  })), /*#__PURE__*/React.createElement(ScreenSelect, {
147
157
  screenNum: screenNum,
@@ -150,10 +160,10 @@ function RecordTools(_ref) {
150
160
  className: "player-tools-item",
151
161
  onClick: toggleFullscreen
152
162
  }, isFullscreen ? /*#__PURE__*/React.createElement(IconFont, {
153
- type: "lm-player-ExitFull_Main",
163
+ type: "lm-player-quanping",
154
164
  title: "\u5168\u5C4F"
155
165
  }) : /*#__PURE__*/React.createElement(IconFont, {
156
- type: "lm-player-Full_Main",
166
+ type: "lm-player-quanping",
157
167
  title: "\u5168\u5C4F"
158
168
  })), /*#__PURE__*/React.createElement(TimeMode, {
159
169
  timeMode: timeMode,
@@ -1,28 +1,49 @@
1
- import "antd/lib/tooltip/style";
2
- import _Tooltip from "antd/lib/tooltip";
3
- import React from 'react';
1
+ import "antd/lib/select/style";
2
+ import _Select from "antd/lib/select";
3
+ import React, { useMemo } from 'react';
4
+ import CustomRenderSelect from '../CustomRenderSelect';
4
5
  import { ScreenType } from './utils';
6
+ import IconFont from '../Player/iconfont';
5
7
 
6
8
  function ScreenSelect(_ref) {
7
9
  var screenNum = _ref.screenNum,
8
10
  updateState = _ref.updateState;
9
- return /*#__PURE__*/React.createElement(_Tooltip, {
10
- title: /*#__PURE__*/React.createElement("div", null, ScreenType.map(function (item) {
11
- return /*#__PURE__*/React.createElement("div", {
12
- key: "".concat(item.name),
13
- style: {
14
- padding: 6
15
- },
16
- onClick: function onClick() {
17
- return updateState({
18
- screenNum: item.name
19
- });
20
- }
21
- }, item.name);
22
- }))
23
- }, /*#__PURE__*/React.createElement("span", {
24
- className: "player-tools-item"
25
- }, screenNum));
11
+ var icon = useMemo(function () {
12
+ return ScreenType.find(function (v) {
13
+ return v.name === screenNum;
14
+ }).icon;
15
+ }, []);
16
+ return /*#__PURE__*/React.createElement(CustomRenderSelect, {
17
+ value: screenNum,
18
+ dropdownClassName: "custom-select-dropdown ",
19
+ customRender: function customRender() {
20
+ return /*#__PURE__*/React.createElement("span", {
21
+ className: "select-current-screen-item"
22
+ }, /*#__PURE__*/React.createElement(IconFont, {
23
+ type: icon
24
+ }));
25
+ },
26
+ onChange: function onChange(v) {
27
+ return updateState({
28
+ screenNum: v
29
+ });
30
+ },
31
+ placement: "topLeft"
32
+ }, ScreenType.map(function (item) {
33
+ return /*#__PURE__*/React.createElement(_Select.Option, {
34
+ key: "".concat(item.name),
35
+ value: item.name
36
+ }, /*#__PURE__*/React.createElement("span", {
37
+ style: {
38
+ paddingRight: 4,
39
+ color: 'var(--icon)',
40
+ position: 'relative',
41
+ top: 1
42
+ }
43
+ }, /*#__PURE__*/React.createElement(IconFont, {
44
+ type: item.icon
45
+ })), item.name, "\u5206\u5C4F");
46
+ }));
26
47
  }
27
48
 
28
49
  export default ScreenSelect;
@@ -9,5 +9,5 @@ interface ISegmentTimeLineProps {
9
9
  timeMode: number;
10
10
  }) => void;
11
11
  }
12
- declare function SegmentTimeLine({ begin, timeCell, onTimeChange, timeMode }: ISegmentTimeLineProps): JSX.Element;
12
+ declare function SegmentTimeLine({ begin, timeCell, onTimeChange, timeMode, updateState }: ISegmentTimeLineProps): JSX.Element;
13
13
  export default SegmentTimeLine;
@@ -1,3 +1,5 @@
1
+ import _useUnmount from "ahooks/es/useUnmount";
2
+ import _useUpdateEffect from "ahooks/es/useUpdateEffect";
1
3
  import _useThrottleFn2 from "ahooks/es/useThrottleFn";
2
4
  import _useSize from "ahooks/es/useSize";
3
5
  import moment from 'moment';
@@ -8,8 +10,10 @@ function SegmentTimeLine(_ref) {
8
10
  var begin = _ref.begin,
9
11
  timeCell = _ref.timeCell,
10
12
  onTimeChange = _ref.onTimeChange,
11
- timeMode = _ref.timeMode;
13
+ timeMode = _ref.timeMode,
14
+ updateState = _ref.updateState;
12
15
  var ref = useRef();
16
+ var timeSliderRef = useRef();
13
17
 
14
18
  var size = _useSize(ref);
15
19
 
@@ -24,17 +28,32 @@ function SegmentTimeLine(_ref) {
24
28
  minutes: 0,
25
29
  seconds: 0
26
30
  }).valueOf();
27
- var timeLine = new TimeSlider(ref.current, {
31
+ timeSliderRef.current = new TimeSlider(ref.current, {
28
32
  onTimeChange: run,
29
33
  start_timestamp: time - timeMode / 2 * 3600 * 1000,
30
34
  current_timestamp: time,
31
35
  timecell: timeCell,
32
- hours_per_ruler: timeMode
36
+ hours_per_ruler: timeMode,
37
+ onHoursPerChange: function onHoursPerChange(hour) {
38
+ return updateState({
39
+ timeMode: hour
40
+ });
41
+ }
33
42
  });
34
- return function () {
35
- return timeLine.destory();
36
- };
37
- }, [begin, timeCell, size === null || size === void 0 ? void 0 : size.width, run, timeMode]);
43
+ }, [begin, timeCell, size === null || size === void 0 ? void 0 : size.width, run]);
44
+ /**
45
+ * hour变化更新时间轴而不是重绘
46
+ */
47
+
48
+ _useUpdateEffect(function () {
49
+ return timeSliderRef.current.drawHourChange(timeMode);
50
+ }, [timeMode]);
51
+
52
+ _useUnmount(function () {
53
+ timeSliderRef.current.destory();
54
+ timeSliderRef.current = null;
55
+ });
56
+
38
57
  return /*#__PURE__*/React.createElement("div", {
39
58
  className: "record-time-line"
40
59
  }, /*#__PURE__*/React.createElement("canvas", {
@@ -10,13 +10,19 @@ function TimeMode(_ref) {
10
10
  value: timeMode,
11
11
  onChange: onChange,
12
12
  className: "time-mode-select",
13
- dropdownClassName: "time-mode-select-dropdown",
13
+ dropdownClassName: "custom-select-dropdown",
14
14
  placement: "topLeft"
15
15
  }, TimeModeLibs.map(function (item) {
16
16
  return /*#__PURE__*/React.createElement(_Select.Option, {
17
17
  value: item.name,
18
18
  key: item.name
19
- }, item.name, "\u5C0F\u65F6");
19
+ }, /*#__PURE__*/React.createElement("span", {
20
+ style: {
21
+ display: 'inline-block',
22
+ width: 20,
23
+ textAlign: 'center'
24
+ }
25
+ }, item.name), "\u5C0F\u65F6");
20
26
  }));
21
27
  }
22
28
 
@@ -5,6 +5,7 @@ export interface ITimeSliderOptions {
5
5
  timecell?: TimeCellItem[];
6
6
  current_timestamp?: number;
7
7
  onTimeChange?: (time: number, outTimeline?: boolean) => void;
8
+ onHoursPerChange?: (hour: number) => void;
8
9
  }
9
10
  export declare type TimeCellItem = ISegmentType;
10
11
  export default class TimeSlider {
@@ -115,6 +116,7 @@ export default class TimeSlider {
115
116
  * 滚轮放大缩小,以时间轴中心为准 mousewheel事件
116
117
  */
117
118
  mousewheelFunc: (event: any) => void;
119
+ drawHourChange(hour: number): void;
118
120
  /**
119
121
  * 获取鼠标posx
120
122
  * @param {*} e
@@ -1,3 +1,5 @@
1
+ import _nextTick from "@cloud-app-dev/utils/es/nextTick";
2
+
1
3
  function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
2
4
 
3
5
  function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
@@ -5,6 +7,7 @@ function _defineProperties(target, props) { for (var i = 0; i < props.length; i+
5
7
  function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
6
8
 
7
9
  import moment from 'moment';
10
+ var hours = [1, 6, 12, 24];
8
11
  var currentColor = '#FF000A';
9
12
  var normalLineColor = '#ffffff';
10
13
  var hoverLineColor = '#319BFF';
@@ -177,24 +180,33 @@ var TimeSlider = /*#__PURE__*/function () {
177
180
  var middle_time = _this.start_timestamp + _this.hours_per_ruler * 3600 * 1000 / 2; //ms 记住当前中间的时间
178
181
 
179
182
  if (delta < 0) {
180
- _this.zoom = _this.zoom + 4;
183
+ // 缩小
184
+ var index = hours.indexOf(_this.zoom);
181
185
 
182
- if (_this.zoom >= 24) {
183
- _this.zoom = 24; //放大最大24小时
186
+ if (index === hours.length - 1) {
187
+ _this.zoom = hours[index];
188
+ } else {
189
+ _this.zoom = hours[index + 1];
184
190
  }
185
191
 
186
192
  _this.hours_per_ruler = _this.zoom;
187
193
  } else if (delta > 0) {
188
194
  // 放大
189
- _this.zoom = _this.zoom - 4;
195
+ var _index = hours.indexOf(_this.zoom);
190
196
 
191
- if (_this.zoom <= 1) {
192
- _this.zoom = 1; //缩小最小1小时
197
+ if (_index === 0) {
198
+ _this.zoom = hours[0];
199
+ } else {
200
+ _this.zoom = hours[_index - 1];
193
201
  }
194
202
 
195
203
  _this.hours_per_ruler = _this.zoom;
196
204
  }
197
205
 
206
+ _nextTick(function () {
207
+ return _this.options.onHoursPerChange && _this.options.onHoursPerChange(_this.hours_per_ruler);
208
+ });
209
+
198
210
  _this.clearCanvas();
199
211
 
200
212
  _this.start_timestamp = middle_time - _this.hours_per_ruler * 3600 * 1000 / 2; //start_timestamp = 当前中间的时间 - zoom/2
@@ -512,6 +524,17 @@ var TimeSlider = /*#__PURE__*/function () {
512
524
  }
513
525
  }
514
526
  }
527
+ }, {
528
+ key: "drawHourChange",
529
+ value: function drawHourChange(hour) {
530
+ var middle_time = this.start_timestamp + this.hours_per_ruler * 3600 * 1000 / 2; //ms 记住当前中间的时间
531
+
532
+ this.hours_per_ruler = this.zoom = hour;
533
+ this.clearCanvas();
534
+ this.start_timestamp = middle_time - this.hours_per_ruler * 3600 * 1000 / 2; //start_timestamp = 当前中间的时间 - zoom/2
535
+
536
+ this.init(this.start_timestamp, this.timecell, true);
537
+ }
515
538
  /**
516
539
  * 清除canvas 每次重新绘制需要先清除
517
540
  */
@@ -24,8 +24,6 @@
24
24
  position: relative;
25
25
  }
26
26
  .split-screen-player-wrapper .player-record-time {
27
- width: 100%;
28
- height: 100%;
29
27
  text-align: center;
30
28
  background-color: var(--gray11);
31
29
  line-height: 42px;
@@ -69,7 +67,8 @@
69
67
  color: var(--gray1);
70
68
  text-align: center;
71
69
  cursor: pointer;
72
- margin-right: 4px;
70
+ margin-right: 10px;
71
+ display: inline-block;
73
72
  }
74
73
  .split-screen-player-wrapper .player-tools .player-tools-item .lm-player-iconfont {
75
74
  font-size: 20px;
@@ -78,6 +77,23 @@
78
77
  background-color: var(--gray11);
79
78
  border-radius: var(--radius1);
80
79
  }
80
+ .split-screen-player-wrapper .player-tools .select-current-screen-item {
81
+ font-size: 18px;
82
+ width: 32px;
83
+ height: 32px;
84
+ color: var(--gray1);
85
+ text-align: center;
86
+ cursor: pointer;
87
+ margin-right: 6px;
88
+ display: inline-block;
89
+ }
90
+ .split-screen-player-wrapper .player-tools .select-current-screen-item .lm-player-iconfont {
91
+ font-size: 20px;
92
+ }
93
+ .split-screen-player-wrapper .player-tools .select-current-screen-item:hover {
94
+ background-color: var(--gray11);
95
+ border-radius: var(--radius1);
96
+ }
81
97
  .split-screen-player-wrapper.split-screen-player-wrapper-record .record-time-line {
82
98
  width: 100%;
83
99
  height: 46px;
@@ -105,20 +121,20 @@
105
121
  justify-content: space-around;
106
122
  align-items: center;
107
123
  }
108
- .time-mode-select {
124
+ .cloudapp-select.time-mode-select {
109
125
  font-size: var(--fs-small);
110
126
  color: var(--gray1);
111
127
  }
112
- .time-mode-select .cloudapp-select-selector {
113
- background-color: transparent !important;
114
- border-radius: var(--radius1) !important;
128
+ .cloudapp-select.time-mode-select .cloudapp-select-selector {
129
+ background-color: transparent;
130
+ border-radius: var(--radius1);
115
131
  }
116
- .time-mode-select .anticon {
132
+ .cloudapp-select.time-mode-select .anticon {
117
133
  color: var(--gray1);
118
134
  }
119
- .time-mode-select-dropdown {
135
+ .custom-select-dropdown {
120
136
  font-size: var(--fs-small);
121
137
  }
122
- .time-mode-select-dropdown .cloudapp-select-item {
138
+ .custom-select-dropdown .cloudapp-select-item {
123
139
  font-size: var(--fs-small);
124
140
  }
@@ -1,4 +1,5 @@
1
1
  import React from 'react';
2
+ import { PlayModeType } from '../PlayerExt';
2
3
  import { ISegmentType } from '../Player/player';
3
4
 
4
5
  export type RecordItem = {
@@ -8,6 +9,7 @@ export type RecordItem = {
8
9
  segments?: ISegmentType[];
9
10
  url?: string;
10
11
  recordType?: 1 | 2; //1云录像 2前端录像
12
+ mode?: PlayModeType;
11
13
  };
12
14
 
13
15
  export interface IRecordPlayerProps {
@@ -34,8 +36,9 @@ export interface IRecordPlayerProps {
34
36
  */
35
37
  onCloseAll?: () => void;
36
38
  /**
37
- * 窗口索引变化,后续基于索引传入播放必要数据
39
+ * 录像下载回调
38
40
  */
41
+ download?: () => void;
39
42
  }
40
43
 
41
44
  export interface IRecordPlayerState {
@@ -52,7 +55,7 @@ export interface IRecordPlayerState {
52
55
  /**
53
56
  * 插件OR浏览器
54
57
  */
55
- mode: PlayModeType;
58
+ modes: PlayModeType[];
56
59
 
57
60
  /**
58
61
  * 时间轴开始时间
@@ -77,12 +80,13 @@ export interface IRecordPlayerState {
77
80
  /**
78
81
  * 录像时间轴单页绘制时长单位(hour)
79
82
  */
80
- timeMode:number
83
+ timeMode: number;
81
84
  }
82
85
 
83
86
  export type ScreenItemLivePlayerType = {
84
87
  url?: string;
85
88
  type?: 'flv' | 'hls' | 'native';
89
+ mode?: PlayModeType;
86
90
  };
87
91
 
88
92
  export interface ILivePlayerProps {
@@ -107,7 +111,7 @@ export interface ILivePlayerProps {
107
111
  export interface ILivePlayerState {
108
112
  screenNum: number;
109
113
  selectIndex: number;
110
- mode: PlayModeType;
114
+ modes: PlayModeType[];
111
115
  }
112
116
 
113
117
  export const RecordPlayer: React.FC<IRecordPlayerProps>;
@@ -3,6 +3,7 @@ export declare const ScreenType: {
3
3
  name: number;
4
4
  width: string;
5
5
  height: string;
6
+ icon: string;
6
7
  }[];
7
8
  export declare const TimeModeLibs: {
8
9
  name: number;