@vtx/player 0.0.30 → 1.0.0

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 (113) hide show
  1. package/lib/api/index.d.ts +8 -0
  2. package/lib/api/index.js +43 -3
  3. package/lib/api/index.js.map +1 -1
  4. package/lib/api/types.d.ts +41 -4
  5. package/lib/components/set-tag-video/index.d.ts +9 -0
  6. package/lib/components/set-tag-video/index.js +196 -0
  7. package/lib/components/set-tag-video/index.js.map +1 -0
  8. package/lib/components/set-tag-video/style/css.js +4 -0
  9. package/lib/components/set-tag-video/style/css.js.map +1 -0
  10. package/lib/components/set-tag-video/style/index.css +104 -0
  11. package/lib/components/set-tag-video/style/index.d.ts +1 -0
  12. package/lib/components/set-tag-video/style/index.js +4 -0
  13. package/lib/components/set-tag-video/style/index.js.map +1 -0
  14. package/lib/components/set-tag-video/style/index.less +125 -0
  15. package/lib/components/split-screen/index.d.ts +11 -0
  16. package/lib/components/split-screen/index.js +203 -0
  17. package/lib/components/split-screen/index.js.map +1 -0
  18. package/lib/components/split-screen/style/css.js +4 -0
  19. package/lib/components/split-screen/style/css.js.map +1 -0
  20. package/lib/components/split-screen/style/index.css +21 -0
  21. package/lib/components/split-screen/style/index.d.ts +1 -0
  22. package/lib/components/split-screen/style/index.js +4 -0
  23. package/lib/components/split-screen/style/index.js.map +1 -0
  24. package/lib/components/split-screen/style/index.less +21 -0
  25. package/lib/components/tag-video/images/play.gif +0 -0
  26. package/lib/components/tag-video/index.d.ts +7 -0
  27. package/lib/components/tag-video/index.js +171 -0
  28. package/lib/components/tag-video/index.js.map +1 -0
  29. package/lib/components/tag-video/style/css.js +4 -0
  30. package/lib/components/tag-video/style/css.js.map +1 -0
  31. package/lib/components/tag-video/style/index.css +73 -0
  32. package/lib/components/tag-video/style/index.d.ts +1 -0
  33. package/lib/components/tag-video/style/index.js +4 -0
  34. package/lib/components/tag-video/style/index.js.map +1 -0
  35. package/lib/components/tag-video/style/index.less +69 -0
  36. package/lib/components/video-scale/index.d.ts +9 -0
  37. package/lib/components/video-scale/index.js +65 -0
  38. package/lib/components/video-scale/index.js.map +1 -0
  39. package/lib/components/video-scale/style/css.js +4 -0
  40. package/lib/components/video-scale/style/css.js.map +1 -0
  41. package/lib/components/video-scale/style/index.css +30 -0
  42. package/lib/components/video-scale/style/index.d.ts +1 -0
  43. package/lib/components/video-scale/style/index.js +4 -0
  44. package/lib/components/video-scale/style/index.js.map +1 -0
  45. package/lib/components/video-scale/style/index.less +31 -0
  46. package/lib/controls/index.d.ts +2 -0
  47. package/lib/controls/index.js +5 -3
  48. package/lib/controls/index.js.map +1 -1
  49. package/lib/controls/style/index.css +1 -0
  50. package/lib/controls/style/index.less +1 -0
  51. package/lib/history-control/index.js +5 -1
  52. package/lib/history-control/index.js.map +1 -1
  53. package/lib/history-control/style/index.css +1 -0
  54. package/lib/history-control/style/index.less +1 -0
  55. package/lib/history-control-v2/components/grid-item/index.d.ts +21 -0
  56. package/lib/history-control-v2/components/grid-item/index.js +207 -0
  57. package/lib/history-control-v2/components/grid-item/index.js.map +1 -0
  58. package/lib/history-control-v2/components/panel/index.d.ts +9 -0
  59. package/lib/history-control-v2/components/panel/index.js +477 -0
  60. package/lib/history-control-v2/components/panel/index.js.map +1 -0
  61. package/lib/history-control-v2/context.d.ts +17 -0
  62. package/lib/history-control-v2/context.js +12 -0
  63. package/lib/history-control-v2/context.js.map +1 -0
  64. package/lib/history-control-v2/images/collapse.png +0 -0
  65. package/lib/history-control-v2/images/empty.png +0 -0
  66. package/lib/history-control-v2/index.d.ts +11 -0
  67. package/lib/history-control-v2/index.js +418 -0
  68. package/lib/history-control-v2/index.js.map +1 -0
  69. package/lib/history-control-v2/interface.d.ts +137 -0
  70. package/lib/history-control-v2/style/css.js +24 -0
  71. package/lib/history-control-v2/style/css.js.map +1 -0
  72. package/lib/history-control-v2/style/index.css +435 -0
  73. package/lib/history-control-v2/style/index.d.ts +11 -0
  74. package/lib/history-control-v2/style/index.js +24 -0
  75. package/lib/history-control-v2/style/index.js.map +1 -0
  76. package/lib/history-control-v2/style/index.less +437 -0
  77. package/lib/history-control-v2/utils.d.ts +19 -0
  78. package/lib/history-control-v2/utils.js +132 -0
  79. package/lib/history-control-v2/utils.js.map +1 -0
  80. package/lib/history-player/index.d.ts +11 -3
  81. package/lib/history-player/index.js +99 -32
  82. package/lib/history-player/index.js.map +1 -1
  83. package/lib/icons/index.css +4 -0
  84. package/lib/icons/index.d.ts +29 -0
  85. package/lib/icons/index.js +1393 -19
  86. package/lib/icons/index.js.map +1 -1
  87. package/lib/icons/index.less +6 -0
  88. package/lib/index.d.ts +2 -0
  89. package/lib/index.js +16 -0
  90. package/lib/index.js.map +1 -1
  91. package/lib/live-control/index.js +5 -2
  92. package/lib/live-control/index.js.map +1 -1
  93. package/lib/live-control-v2/images/empty.png +0 -0
  94. package/lib/live-control-v2/index.d.ts +55 -0
  95. package/lib/live-control-v2/index.js +529 -0
  96. package/lib/live-control-v2/index.js.map +1 -0
  97. package/lib/live-control-v2/style/css.js +18 -0
  98. package/lib/live-control-v2/style/css.js.map +1 -0
  99. package/lib/live-control-v2/style/index.css +217 -0
  100. package/lib/live-control-v2/style/index.d.ts +8 -0
  101. package/lib/live-control-v2/style/index.js +18 -0
  102. package/lib/live-control-v2/style/index.js.map +1 -0
  103. package/lib/live-control-v2/style/index.less +192 -0
  104. package/lib/live-player/index.d.ts +1 -1
  105. package/lib/live-player/index.js +7 -2
  106. package/lib/live-player/index.js.map +1 -1
  107. package/lib/player/index.js +14 -3
  108. package/lib/player/index.js.map +1 -1
  109. package/lib/typings/h5player.d.ts +10 -8
  110. package/lib/utils/index.d.ts +17 -0
  111. package/lib/utils/index.js +20 -1
  112. package/lib/utils/index.js.map +1 -1
  113. package/package.json +1 -1
@@ -0,0 +1,55 @@
1
+ import React, { ReactElement } from 'react';
2
+ import { ISplitScreenGrid } from '../components/split-screen';
3
+ export declare type LiveControlV2Handle = {
4
+ /** 设置窗口 */
5
+ setGrid: (grid: ISplitScreenGrid) => void;
6
+ /** 加载视频 */
7
+ load: (channel: ChannelType) => void;
8
+ /** 卸载视频,参数为通道id */
9
+ unLoad: (channelId: string) => void;
10
+ /** 卸载所有视频 */
11
+ unLoadAll: () => void;
12
+ /** 一次加载多个视频,适用于初始化 */
13
+ multiLoad: (channels: ChannelType[], init: boolean, adapt: boolean) => void;
14
+ };
15
+ interface LiveControlV2Props {
16
+ /** 展开/收缩按钮回调 */
17
+ onExpandChange?: (expand: boolean) => void;
18
+ /** 视频关闭回调,参数为通道编号数组 */
19
+ onPlayingChannelChange?: (channels: ChannelType[]) => void;
20
+ /** 截图回调 */
21
+ onScreenshot?: (url: string) => void;
22
+ /** 关闭视频回调 */
23
+ onVideoClose?: (ChannelType: ChannelType) => void;
24
+ /** 轮播时关闭视频回调 */
25
+ onCloseVideoInRotation?: (onVideoClose: () => void) => void;
26
+ /** 宽度 */
27
+ width?: number | string;
28
+ /** 高度 */
29
+ height?: number | string;
30
+ /** 轮询频率 */
31
+ polling?: number | undefined;
32
+ /** 是否可以切屏 */
33
+ gridChange: boolean;
34
+ /** 底部操作栏额外元素 */
35
+ extraDom?: ReactElement | undefined;
36
+ }
37
+ export declare type ChannelType = {
38
+ /** 通道号 */
39
+ channelNum: string;
40
+ /** 通道id */
41
+ channelId?: string;
42
+ /** 设备ID */
43
+ deviceId?: string;
44
+ /** 协议 */
45
+ protocol?: string;
46
+ /** 是否展示信息 */
47
+ showInfo?: boolean | 'leftTop' | 'leftBottom' | 'rightTop' | 'rightBottom';
48
+ /** 信息 */
49
+ info?: Array<Array<string>>;
50
+ };
51
+ /**
52
+ * 实时分屏组件
53
+ */
54
+ declare const LiveControlV2: React.ForwardRefExoticComponent<LiveControlV2Props & React.RefAttributes<LiveControlV2Handle>>;
55
+ export default LiveControlV2;
@@ -0,0 +1,529 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports["default"] = void 0;
7
+
8
+ var _jsxRuntime = require("react/jsx-runtime");
9
+
10
+ var _react = require("react");
11
+
12
+ var _api = require("../api");
13
+
14
+ var _splitScreen = _interopRequireDefault(require("../components/split-screen"));
15
+
16
+ var _videoScale = _interopRequireDefault(require("../components/video-scale"));
17
+
18
+ var _controls = require("../controls");
19
+
20
+ var _icons = require("../icons");
21
+
22
+ var _livePlayer = _interopRequireDefault(require("../live-player"));
23
+
24
+ var _icons2 = require("@ant-design/icons");
25
+
26
+ var _ahooks = require("ahooks");
27
+
28
+ var _space = _interopRequireDefault(require("antd/lib/space"));
29
+
30
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
31
+
32
+ function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }
33
+
34
+ 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."); }
35
+
36
+ function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); }
37
+
38
+ function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }
39
+
40
+ function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
41
+
42
+ 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."); }
43
+
44
+ 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); }
45
+
46
+ 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; }
47
+
48
+ 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; }
49
+
50
+ function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
51
+
52
+ var DEFAULT_GRID = 4;
53
+ var DEFAULT_ACTIVE = 0;
54
+ var DEFAULT_CHANNELS = Array(25).fill({
55
+ channelNum: ''
56
+ });
57
+ /**
58
+ * 实时分屏组件
59
+ */
60
+
61
+ var LiveControlV2 = /*#__PURE__*/(0, _react.forwardRef)(function (props, ref) {
62
+ var _props$height = props.height,
63
+ height = _props$height === void 0 ? '100%' : _props$height,
64
+ _props$width = props.width,
65
+ width = _props$width === void 0 ? '100%' : _props$width,
66
+ onExpandChange = props.onExpandChange,
67
+ onPlayingChannelChange = props.onPlayingChannelChange,
68
+ onVideoClose = props.onVideoClose,
69
+ onCloseVideoInRotation = props.onCloseVideoInRotation,
70
+ extraDom = props.extraDom,
71
+ _props$gridChange = props.gridChange,
72
+ gridChange = _props$gridChange === void 0 ? true : _props$gridChange,
73
+ onScreenshot = props.onScreenshot;
74
+
75
+ var _useSetState = (0, _ahooks.useSetState)({
76
+ expand: true,
77
+ grid: DEFAULT_GRID,
78
+ activeIndex: DEFAULT_ACTIVE,
79
+ channels: DEFAULT_CHANNELS,
80
+ scale: '100%'
81
+ }),
82
+ _useSetState2 = _slicedToArray(_useSetState, 2),
83
+ state = _useSetState2[0],
84
+ setState = _useSetState2[1];
85
+
86
+ var wrapRef = (0, _react.useRef)(null);
87
+ var latestGrid = (0, _react.useRef)(DEFAULT_GRID);
88
+
89
+ var _useFullscreen = (0, _ahooks.useFullscreen)(wrapRef),
90
+ _useFullscreen2 = _slicedToArray(_useFullscreen, 2),
91
+ isFullscreen = _useFullscreen2[0],
92
+ toggleFullscreen = _useFullscreen2[1].toggleFullscreen;
93
+
94
+ var channelRef = (0, _react.useRef)(DEFAULT_CHANNELS); // 实时视频轮询
95
+ // useInterval(() => {
96
+ // // 是否有视频正在播放
97
+ // const hasVideo = channelRef.current.some((item) => item.channelNum);
98
+ // if (polling && hasVideo) {
99
+ // updateChannels(DEFAULT_CHANNELS);
100
+ // const timer = setTimeout(() => {
101
+ // setState({
102
+ // channels: channelRef.current,
103
+ // });
104
+ // clearTimeout(timer);
105
+ // }, 0);
106
+ // }
107
+ // }, polling);
108
+
109
+ (0, _react.useImperativeHandle)(ref, function () {
110
+ return {
111
+ setGrid: function setGrid(grid) {
112
+ updateGrid(grid);
113
+ },
114
+ load: function load(channel) {
115
+ var index = channelRef.current.findIndex(function (c) {
116
+ return c.channelId === channel.channelId;
117
+ });
118
+
119
+ if (~index) {
120
+ setState({
121
+ activeIndex: index
122
+ }); // 如果通道号已经存在,则设置激活索引为该通道
123
+ } else {
124
+ // 播放该通道
125
+ var newChannels = _toConsumableArray(channelRef.current);
126
+
127
+ newChannels[state.activeIndex] = channel;
128
+ var activeIndex = getActiveIndex(newChannels, latestGrid.current, state.activeIndex);
129
+ channelRef.current = newChannels;
130
+ setState({
131
+ channels: newChannels,
132
+ activeIndex: activeIndex
133
+ });
134
+ }
135
+ },
136
+ multiLoad: function multiLoad(channels) {
137
+ var init = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
138
+ var adapt = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
139
+ var grid = latestGrid.current;
140
+ var newChannels = [],
141
+ activeIndex = state.activeIndex; // 每次清空已经在播放的视频
142
+
143
+ if (init) {
144
+ adapt && (grid = getGrid(channels.length));
145
+
146
+ for (var i = 0; i < Number(grid); i++) {
147
+ newChannels.push(channels[i] ? channels[i] : {
148
+ channelNum: ''
149
+ });
150
+ }
151
+ } else {
152
+ // 不清空,找寻空闲窗口播放
153
+ newChannels = _toConsumableArray(channelRef.current);
154
+
155
+ for (var _i2 = 0; _i2 < channels.length; _i2++) {
156
+ newChannels[activeIndex] = channels[_i2] || {
157
+ channelNum: ''
158
+ };
159
+ var index = getActiveIndex(newChannels, latestGrid.current, activeIndex); // 如果相等,说明没有空闲窗口
160
+
161
+ if (index === activeIndex) {
162
+ break;
163
+ }
164
+
165
+ activeIndex = index;
166
+ }
167
+ }
168
+
169
+ latestGrid.current = grid;
170
+ channelRef.current = newChannels;
171
+ setState({
172
+ grid: grid,
173
+ channels: newChannels,
174
+ activeIndex: activeIndex
175
+ });
176
+ },
177
+ unLoad: function unLoad(channelId) {
178
+ var index = channelRef.current.findIndex(function (c) {
179
+ return c.channelId === channelId;
180
+ });
181
+
182
+ if (~index) {
183
+ // 卸载通道
184
+ var newChannels = _toConsumableArray(channelRef.current);
185
+
186
+ newChannels[index] = {
187
+ channelNum: ''
188
+ };
189
+ updateChannels(newChannels);
190
+ }
191
+ },
192
+ unLoadAll: handleCloseAll
193
+ };
194
+ });
195
+ (0, _react.useEffect)(function () {
196
+ if (onPlayingChannelChange) {
197
+ onPlayingChannelChange(state.channels.filter(function (c) {
198
+ return !!c.channelNum;
199
+ }));
200
+ }
201
+ }, [state.channels]);
202
+
203
+ var handleCloseAll = function handleCloseAll() {
204
+ setState({
205
+ activeIndex: DEFAULT_ACTIVE
206
+ });
207
+ updateChannels(DEFAULT_CHANNELS);
208
+ };
209
+
210
+ var handleExpand = function handleExpand() {
211
+ onExpandChange && onExpandChange(!state.expand);
212
+ setState({
213
+ expand: !state.expand
214
+ });
215
+ };
216
+
217
+ var updateGrid = function updateGrid(grid) {
218
+ var newChannels = _toConsumableArray(channelRef.current);
219
+
220
+ if (grid > newChannels.length) {
221
+ newChannels = DEFAULT_CHANNELS.slice(0, grid).map(function (item, index) {
222
+ return newChannels[index] ? newChannels[index] : item;
223
+ });
224
+ } else {
225
+ newChannels = newChannels.slice(0, grid);
226
+ }
227
+
228
+ latestGrid.current = grid;
229
+ channelRef.current = newChannels;
230
+ setState({
231
+ grid: grid,
232
+ channels: newChannels
233
+ });
234
+ };
235
+
236
+ var updateChannels = function updateChannels(channels) {
237
+ channelRef.current = channels;
238
+ setState({
239
+ channels: channels
240
+ });
241
+ }; // 关闭视频
242
+
243
+
244
+ var closeVideo = function closeVideo(i) {
245
+ var newChannels = _toConsumableArray(channelRef.current);
246
+
247
+ onVideoClose && onVideoClose(newChannels[i]);
248
+ newChannels[i] = {
249
+ channelNum: ''
250
+ };
251
+ updateChannels(newChannels);
252
+ };
253
+
254
+ var getGridItems = function getGridItems() {
255
+ var items = [];
256
+
257
+ var _loop = function _loop(i) {
258
+ var element = (0, _jsxRuntime.jsx)(GridItem, {
259
+ active: state.activeIndex === i,
260
+ onClick: function onClick() {
261
+ return setState({
262
+ activeIndex: i
263
+ });
264
+ },
265
+ channel: channelRef.current[i] || {
266
+ channelNum: ''
267
+ },
268
+ onClose: function onClose() {
269
+ // 如果正在轮播
270
+ if (onCloseVideoInRotation) {
271
+ onCloseVideoInRotation(function () {
272
+ return closeVideo(i);
273
+ });
274
+ return;
275
+ }
276
+
277
+ closeVideo(i);
278
+ },
279
+ scale: state.scale,
280
+ onScreenshot: onScreenshot
281
+ }, i);
282
+ items.push(element);
283
+ };
284
+
285
+ for (var i = 0; i < Number(latestGrid.current); i++) {
286
+ _loop(i);
287
+ }
288
+
289
+ return items;
290
+ };
291
+
292
+ return (0, _jsxRuntime.jsxs)("div", Object.assign({
293
+ className: "vtx-live-control-v2",
294
+ ref: wrapRef,
295
+ style: {
296
+ height: height,
297
+ width: width
298
+ }
299
+ }, {
300
+ children: [(0, _jsxRuntime.jsx)("div", Object.assign({
301
+ className: "player-grid-container _".concat(state.grid)
302
+ }, {
303
+ children: getGridItems()
304
+ })), (0, _jsxRuntime.jsxs)("div", Object.assign({
305
+ className: "bottom-controls"
306
+ }, {
307
+ children: [(0, _jsxRuntime.jsxs)(_space["default"], Object.assign({
308
+ className: "left",
309
+ size: 12,
310
+ align: "center"
311
+ }, {
312
+ children: [onExpandChange && (0, _jsxRuntime.jsx)("div", Object.assign({
313
+ onClick: handleExpand,
314
+ style: {
315
+ display: 'flex'
316
+ }
317
+ }, {
318
+ children: state.expand ? (0, _jsxRuntime.jsx)(_icons.FoldIcon, {}) : (0, _jsxRuntime.jsx)(_icons.ExpandIcon, {})
319
+ })), extraDom ? extraDom : null]
320
+ })), (0, _jsxRuntime.jsxs)(_space["default"], Object.assign({
321
+ className: "right",
322
+ size: 12,
323
+ align: "center"
324
+ }, {
325
+ children: [(0, _jsxRuntime.jsx)(_icons.CloseAllIcon, {
326
+ onClick: handleCloseAll
327
+ }), (0, _jsxRuntime.jsx)("div", {
328
+ className: 'split-line'
329
+ }), gridChange ? (0, _jsxRuntime.jsx)(_splitScreen["default"], Object.assign({
330
+ grid: state.grid,
331
+ setGrid: function setGrid(grid) {
332
+ return updateGrid(grid);
333
+ }
334
+ }, {
335
+ children: (0, _jsxRuntime.jsxs)("div", Object.assign({
336
+ className: 'controls-icon-hover'
337
+ }, {
338
+ children: [(0, _jsxRuntime.jsx)(_icons.GridIcon, {}), (0, _jsxRuntime.jsx)(_icons2.DownOutlined, {
339
+ className: "hover-hide"
340
+ }), (0, _jsxRuntime.jsx)(_icons2.UpOutlined, {
341
+ className: "hover-show"
342
+ })]
343
+ }))
344
+ })) : (0, _jsxRuntime.jsxs)("div", Object.assign({
345
+ className: 'grid-change-disable'
346
+ }, {
347
+ children: [(0, _jsxRuntime.jsx)(_icons.GridIcon, {
348
+ disabled: !gridChange
349
+ }), (0, _jsxRuntime.jsx)(_icons2.DownOutlined, {
350
+ className: "arrow"
351
+ })]
352
+ })), (0, _jsxRuntime.jsx)(_videoScale["default"], Object.assign({
353
+ scale: state.scale,
354
+ setScale: function setScale(scale) {
355
+ return setState({
356
+ scale: scale
357
+ });
358
+ }
359
+ }, {
360
+ children: (0, _jsxRuntime.jsxs)("div", Object.assign({
361
+ className: 'controls-icon-hover'
362
+ }, {
363
+ children: [(0, _jsxRuntime.jsx)(_icons.OccupyingScreenIcon, {}), (0, _jsxRuntime.jsx)(_icons2.DownOutlined, {
364
+ className: "hover-hide"
365
+ }), (0, _jsxRuntime.jsx)(_icons2.UpOutlined, {
366
+ className: "hover-show"
367
+ })]
368
+ }))
369
+ })), isFullscreen ? (0, _jsxRuntime.jsx)(_icons.ExitFullScreenIcon, {
370
+ onClick: toggleFullscreen
371
+ }) : (0, _jsxRuntime.jsx)(_icons.FullScreenIcon, {
372
+ onClick: toggleFullscreen
373
+ })]
374
+ }))]
375
+ }))]
376
+ }));
377
+ });
378
+ LiveControlV2.displayName = 'LiveControlV2';
379
+
380
+ var GridItem = function GridItem(props) {
381
+ var active = props.active,
382
+ onClick = props.onClick,
383
+ channel = props.channel,
384
+ onClose = props.onClose,
385
+ onScreenshot = props.onScreenshot,
386
+ scale = props.scale;
387
+ var empty = !channel.channelNum;
388
+
389
+ var _useRequest = (0, _ahooks.useRequest)(function () {
390
+ return (0, _api.getPreviewUrl)(channel);
391
+ }, {
392
+ ready: !!channel.channelNum,
393
+ refreshDeps: [channel.channelNum]
394
+ }),
395
+ data = _useRequest.data,
396
+ loading = _useRequest.loading;
397
+
398
+ var name = "".concat(data === null || data === void 0 ? void 0 : data.deviceName, "-").concat(data === null || data === void 0 ? void 0 : data.channelName);
399
+
400
+ var _useSetState3 = (0, _ahooks.useSetState)({
401
+ width: '100%',
402
+ height: '100%'
403
+ }),
404
+ _useSetState4 = _slicedToArray(_useSetState3, 2),
405
+ _useSetState4$ = _useSetState4[0],
406
+ width = _useSetState4$.width,
407
+ height = _useSetState4$.height,
408
+ setState = _useSetState4[1];
409
+
410
+ var gridItemRef = (0, _react.useRef)(null);
411
+ var gridItemSize = (0, _ahooks.useSize)(gridItemRef);
412
+ (0, _react.useEffect)(function () {
413
+ if ((gridItemSize === null || gridItemSize === void 0 ? void 0 : gridItemSize.width) && (gridItemSize === null || gridItemSize === void 0 ? void 0 : gridItemSize.height)) {
414
+ switch (scale) {
415
+ case '100%':
416
+ setState({
417
+ width: '100%',
418
+ height: gridItemSize.height - 26
419
+ });
420
+ break;
421
+
422
+ case '4*3':
423
+ if (gridItemSize.width / 4 < (gridItemSize.height - 26) / 3) {
424
+ setState({
425
+ width: '100%',
426
+ height: gridItemSize.width / 4 * 3
427
+ });
428
+ } else {
429
+ setState({
430
+ width: (gridItemSize.height - 26) / 3 * 4,
431
+ height: '100%'
432
+ });
433
+ }
434
+
435
+ break;
436
+
437
+ case '16*9':
438
+ if (gridItemSize.width / 16 < (gridItemSize.height - 26) / 9) {
439
+ setState({
440
+ width: '100%',
441
+ height: gridItemSize.width / 16 * 9
442
+ });
443
+ } else {
444
+ setState({
445
+ width: (gridItemSize.height - 26) / 9 * 16,
446
+ height: '100%'
447
+ });
448
+ }
449
+
450
+ break;
451
+ }
452
+ }
453
+ }, [gridItemSize, scale]);
454
+ return (0, _jsxRuntime.jsx)("div", Object.assign({
455
+ className: "grid-item-container ".concat(active ? 'active' : '', " ").concat(loading ? '' : 'emptyImg'),
456
+ onClick: onClick,
457
+ ref: gridItemRef
458
+ }, {
459
+ children: data && !empty && (0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
460
+ children: [(0, _jsxRuntime.jsx)(_controls.PlayerHeader, {
461
+ name: name,
462
+ onClose: onClose
463
+ }), (0, _jsxRuntime.jsx)("div", Object.assign({
464
+ className: "content"
465
+ }, {
466
+ children: (0, _jsxRuntime.jsx)("div", Object.assign({
467
+ style: {
468
+ width: width,
469
+ height: height
470
+ }
471
+ }, {
472
+ children: (0, _jsxRuntime.jsx)(_livePlayer["default"], {
473
+ url: data.url,
474
+ captureName: name,
475
+ talkUrl: data.apiUrl,
476
+ showInfo: channel.showInfo,
477
+ info: channel.info,
478
+ screenshot: onScreenshot
479
+ })
480
+ }))
481
+ }))]
482
+ })
483
+ }));
484
+ };
485
+ /**
486
+ * 获取当前激活的网格
487
+ * @param channels 现有通道数组
488
+ * @param grid 当前网格状态
489
+ * @param currentIndex 当前索引
490
+ * @returns
491
+ */
492
+
493
+
494
+ var getActiveIndex = function getActiveIndex(channels, grid, currentIndex) {
495
+ var currentChannels = channels.slice(0, Number(grid));
496
+
497
+ for (var i = currentIndex + 1; i < currentChannels.length; i++) {
498
+ if (!currentChannels[i].channelNum) return i;
499
+ }
500
+
501
+ for (var _i3 = 0; _i3 < currentIndex; _i3++) {
502
+ if (!currentChannels[_i3].channelNum) return _i3;
503
+ }
504
+
505
+ return currentIndex;
506
+ };
507
+
508
+ var grids = [1, 4, 6, 8, 9, 13, 17, 16, 22, 25];
509
+ /**
510
+ * 获取布局
511
+ * @param len 通道数量
512
+ */
513
+
514
+ var getGrid = function getGrid(len) {
515
+ var grid;
516
+
517
+ for (var i = 0; i < grids.length; i++) {
518
+ if (grids[i] - len >= 0) {
519
+ grid = grids[i];
520
+ break;
521
+ }
522
+ }
523
+
524
+ return grid > 25 ? 25 : grid;
525
+ };
526
+
527
+ var _default = LiveControlV2;
528
+ exports["default"] = _default;
529
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","names":["DEFAULT_GRID","DEFAULT_ACTIVE","DEFAULT_CHANNELS","Array","fill","channelNum","LiveControlV2","forwardRef","props","ref","height","width","onExpandChange","onPlayingChannelChange","onVideoClose","onCloseVideoInRotation","extraDom","gridChange","onScreenshot","useSetState","expand","grid","activeIndex","channels","scale","state","setState","wrapRef","useRef","latestGrid","useFullscreen","isFullscreen","toggleFullscreen","channelRef","useImperativeHandle","setGrid","updateGrid","load","channel","index","current","findIndex","c","channelId","newChannels","getActiveIndex","multiLoad","init","adapt","getGrid","length","i","Number","push","unLoad","updateChannels","unLoadAll","handleCloseAll","useEffect","filter","handleExpand","slice","map","item","closeVideo","getGridItems","items","element","_jsx","GridItem","active","onClick","onClose","_jsxs","Object","assign","className","style","children","Space","size","align","display","FoldIcon","ExpandIcon","CloseAllIcon","SplitScreen","GridIcon","DownOutlined","UpOutlined","disabled","VideoScale","setScale","OccupyingScreenIcon","ExitFullScreenIcon","FullScreenIcon","displayName","empty","useRequest","getPreviewUrl","ready","refreshDeps","data","loading","name","deviceName","channelName","gridItemRef","gridItemSize","useSize","_Fragment","PlayerHeader","VtxLivePlayer","url","captureName","talkUrl","apiUrl","showInfo","info","screenshot","currentIndex","currentChannels","grids","len"],"sources":["live-control-v2/index.js"],"sourcesContent":["import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from \"react/jsx-runtime\";\nimport { forwardRef, useEffect, useImperativeHandle, useRef } from 'react';\nimport { getPreviewUrl } from '../api';\nimport SplitScreen from '../components/split-screen';\nimport VideoScale from '../components/video-scale';\nimport { PlayerHeader } from '../controls';\nimport { CloseAllIcon, ExitFullScreenIcon, ExpandIcon, FoldIcon, FullScreenIcon, GridIcon, OccupyingScreenIcon, } from '../icons';\nimport VtxLivePlayer from '../live-player';\nimport { DownOutlined, UpOutlined } from '@ant-design/icons';\nimport { useFullscreen, useRequest, useSetState, useSize } from 'ahooks';\nimport Space from 'antd/lib/space';\nconst DEFAULT_GRID = 4;\nconst DEFAULT_ACTIVE = 0;\nconst DEFAULT_CHANNELS = Array(25).fill({ channelNum: '' });\n/**\n * 实时分屏组件\n */\nconst LiveControlV2 = forwardRef((props, ref) => {\n const { height = '100%', width = '100%', onExpandChange, onPlayingChannelChange, onVideoClose, onCloseVideoInRotation, extraDom, gridChange = true, onScreenshot } = props;\n const [state, setState] = useSetState({\n expand: true,\n grid: DEFAULT_GRID,\n activeIndex: DEFAULT_ACTIVE,\n channels: DEFAULT_CHANNELS,\n scale: '100%',\n });\n const wrapRef = useRef(null);\n const latestGrid = useRef(DEFAULT_GRID);\n const [isFullscreen, { toggleFullscreen }] = useFullscreen(wrapRef);\n const channelRef = useRef(DEFAULT_CHANNELS);\n // 实时视频轮询\n // useInterval(() => {\n // // 是否有视频正在播放\n // const hasVideo = channelRef.current.some((item) => item.channelNum);\n // if (polling && hasVideo) {\n // updateChannels(DEFAULT_CHANNELS);\n // const timer = setTimeout(() => {\n // setState({\n // channels: channelRef.current,\n // });\n // clearTimeout(timer);\n // }, 0);\n // }\n // }, polling);\n useImperativeHandle(ref, () => {\n return {\n setGrid: (grid) => {\n updateGrid(grid);\n },\n load: (channel) => {\n const index = channelRef.current.findIndex((c) => c.channelId === channel.channelId);\n if (~index) {\n setState({ activeIndex: index }); // 如果通道号已经存在,则设置激活索引为该通道\n }\n else {\n // 播放该通道\n const newChannels = [...channelRef.current];\n newChannels[state.activeIndex] = channel;\n const activeIndex = getActiveIndex(newChannels, latestGrid.current, state.activeIndex);\n channelRef.current = newChannels;\n setState({ channels: newChannels, activeIndex });\n }\n },\n multiLoad: (channels, init = true, adapt = false) => {\n let grid = latestGrid.current;\n let newChannels = [], activeIndex = state.activeIndex;\n // 每次清空已经在播放的视频\n if (init) {\n adapt && (grid = getGrid(channels.length));\n for (let i = 0; i < Number(grid); i++) {\n newChannels.push(channels[i] ? channels[i] : { channelNum: '' });\n }\n }\n else {\n // 不清空,找寻空闲窗口播放\n newChannels = [...channelRef.current];\n for (let i = 0; i < channels.length; i++) {\n newChannels[activeIndex] = channels[i] || { channelNum: '' };\n const index = getActiveIndex(newChannels, latestGrid.current, activeIndex);\n // 如果相等,说明没有空闲窗口\n if (index === activeIndex) {\n break;\n }\n activeIndex = index;\n }\n }\n latestGrid.current = grid;\n channelRef.current = newChannels;\n setState({ grid, channels: newChannels, activeIndex });\n },\n unLoad: (channelId) => {\n const index = channelRef.current.findIndex((c) => c.channelId === channelId);\n if (~index) {\n // 卸载通道\n const newChannels = [...channelRef.current];\n newChannels[index] = { channelNum: '' };\n updateChannels(newChannels);\n }\n },\n unLoadAll: handleCloseAll\n };\n });\n useEffect(() => {\n if (onPlayingChannelChange) {\n onPlayingChannelChange(state.channels.filter((c) => !!c.channelNum));\n }\n }, [state.channels]);\n const handleCloseAll = () => {\n setState({\n activeIndex: DEFAULT_ACTIVE\n });\n updateChannels(DEFAULT_CHANNELS);\n };\n const handleExpand = () => {\n onExpandChange && onExpandChange(!state.expand);\n setState({ expand: !state.expand });\n };\n const updateGrid = (grid) => {\n let newChannels = [...channelRef.current];\n if (grid > newChannels.length) {\n newChannels = DEFAULT_CHANNELS.slice(0, grid).map((item, index) => {\n return newChannels[index] ? newChannels[index] : item;\n });\n }\n else {\n newChannels = newChannels.slice(0, grid);\n }\n latestGrid.current = grid;\n channelRef.current = newChannels;\n setState({ grid, channels: newChannels });\n };\n const updateChannels = (channels) => {\n channelRef.current = channels;\n setState({ channels });\n };\n // 关闭视频\n const closeVideo = (i) => {\n const newChannels = [...channelRef.current];\n onVideoClose && onVideoClose(newChannels[i]);\n newChannels[i] = { channelNum: '' };\n updateChannels(newChannels);\n };\n const getGridItems = () => {\n const items = [];\n for (let i = 0; i < Number(latestGrid.current); i++) {\n const element = (_jsx(GridItem, { active: state.activeIndex === i, onClick: () => setState({ activeIndex: i }), channel: channelRef.current[i] || { channelNum: '' }, onClose: () => {\n // 如果正在轮播\n if (onCloseVideoInRotation) {\n onCloseVideoInRotation(() => closeVideo(i));\n return;\n }\n closeVideo(i);\n }, scale: state.scale, onScreenshot: onScreenshot }, i));\n items.push(element);\n }\n return items;\n };\n return (_jsxs(\"div\", Object.assign({ className: \"vtx-live-control-v2\", ref: wrapRef, style: { height, width } }, { children: [_jsx(\"div\", Object.assign({ className: `player-grid-container _${state.grid}` }, { children: getGridItems() })), _jsxs(\"div\", Object.assign({ className: \"bottom-controls\" }, { children: [_jsxs(Space, Object.assign({ className: \"left\", size: 12, align: \"center\" }, { children: [onExpandChange && (_jsx(\"div\", Object.assign({ onClick: handleExpand, style: { display: 'flex' } }, { children: state.expand ? _jsx(FoldIcon, {}) : _jsx(ExpandIcon, {}) }))), extraDom ? extraDom : null] })), _jsxs(Space, Object.assign({ className: \"right\", size: 12, align: \"center\" }, { children: [_jsx(CloseAllIcon, { onClick: handleCloseAll }), _jsx(\"div\", { className: 'split-line' }), gridChange ?\n _jsx(SplitScreen, Object.assign({ grid: state.grid, setGrid: (grid) => updateGrid(grid) }, { children: _jsxs(\"div\", Object.assign({ className: 'controls-icon-hover' }, { children: [_jsx(GridIcon, {}), _jsx(DownOutlined, { className: \"hover-hide\" }), _jsx(UpOutlined, { className: \"hover-show\" })] })) }))\n :\n _jsxs(\"div\", Object.assign({ className: 'grid-change-disable' }, { children: [_jsx(GridIcon, { disabled: !gridChange }), _jsx(DownOutlined, { className: \"arrow\" })] })), _jsx(VideoScale, Object.assign({ scale: state.scale, setScale: (scale) => setState({ scale }) }, { children: _jsxs(\"div\", Object.assign({ className: 'controls-icon-hover' }, { children: [_jsx(OccupyingScreenIcon, {}), _jsx(DownOutlined, { className: \"hover-hide\" }), _jsx(UpOutlined, { className: \"hover-show\" })] })) })), isFullscreen ? (_jsx(ExitFullScreenIcon, { onClick: toggleFullscreen })) : (_jsx(FullScreenIcon, { onClick: toggleFullscreen }))] }))] }))] })));\n});\nLiveControlV2.displayName = 'LiveControlV2';\nconst GridItem = (props) => {\n const { active, onClick, channel, onClose, onScreenshot, scale } = props;\n const empty = !channel.channelNum;\n const { data, loading } = useRequest(() => getPreviewUrl(channel), {\n ready: !!channel.channelNum,\n refreshDeps: [channel.channelNum],\n });\n const name = `${data === null || data === void 0 ? void 0 : data.deviceName}-${data === null || data === void 0 ? void 0 : data.channelName}`;\n const [{ width, height }, setState] = useSetState({\n width: '100%',\n height: '100%',\n });\n const gridItemRef = useRef(null);\n const gridItemSize = useSize(gridItemRef);\n useEffect(() => {\n if ((gridItemSize === null || gridItemSize === void 0 ? void 0 : gridItemSize.width) && (gridItemSize === null || gridItemSize === void 0 ? void 0 : gridItemSize.height)) {\n switch (scale) {\n case '100%':\n setState({\n width: '100%',\n height: gridItemSize.height - 26,\n });\n break;\n case '4*3':\n if (gridItemSize.width / 4 < (gridItemSize.height - 26) / 3) {\n setState({\n width: '100%',\n height: (gridItemSize.width / 4) * 3,\n });\n }\n else {\n setState({\n width: ((gridItemSize.height - 26) / 3) * 4,\n height: '100%',\n });\n }\n break;\n case '16*9':\n if (gridItemSize.width / 16 < (gridItemSize.height - 26) / 9) {\n setState({\n width: '100%',\n height: (gridItemSize.width / 16) * 9,\n });\n }\n else {\n setState({\n width: ((gridItemSize.height - 26) / 9) * 16,\n height: '100%',\n });\n }\n break;\n }\n }\n }, [gridItemSize, scale]);\n return (_jsx(\"div\", Object.assign({ className: `grid-item-container ${active ? 'active' : ''} ${loading ? '' : 'emptyImg'}`, onClick: onClick, ref: gridItemRef }, { children: data && !empty && (_jsxs(_Fragment, { children: [_jsx(PlayerHeader, { name: name, onClose: onClose }), _jsx(\"div\", Object.assign({ className: \"content\" }, { children: _jsx(\"div\", Object.assign({ style: { width, height } }, { children: _jsx(VtxLivePlayer, { url: data.url, captureName: name, talkUrl: data.apiUrl, showInfo: channel.showInfo, info: channel.info, screenshot: onScreenshot }) })) }))] })) })));\n};\n/**\n * 获取当前激活的网格\n * @param channels 现有通道数组\n * @param grid 当前网格状态\n * @param currentIndex 当前索引\n * @returns\n */\nconst getActiveIndex = (channels, grid, currentIndex) => {\n const currentChannels = channels.slice(0, Number(grid));\n for (let i = currentIndex + 1; i < currentChannels.length; i++) {\n if (!currentChannels[i].channelNum)\n return i;\n }\n for (let i = 0; i < currentIndex; i++) {\n if (!currentChannels[i].channelNum)\n return i;\n }\n return currentIndex;\n};\nconst grids = [1, 4, 6, 8, 9, 13, 17, 16, 22, 25];\n/**\n * 获取布局\n * @param len 通道数量\n */\nconst getGrid = (len) => {\n let grid;\n for (let i = 0; i < grids.length; i++) {\n if (grids[i] - len >= 0) {\n grid = grids[i];\n break;\n }\n }\n return grid > 25 ? 25 : grid;\n};\nexport default LiveControlV2;\n"],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+
3
+ require("antd/lib/popover/style/css");
4
+
5
+ require("antd/lib/space/style/css");
6
+
7
+ require("antd/lib/tooltip/style/css");
8
+
9
+ require("../../controls/style/css");
10
+
11
+ require("../../live-player/style/css");
12
+
13
+ require("../../components/split-screen/style/css");
14
+
15
+ require("../../components/video-scale/style/css");
16
+
17
+ require("./index.css");
18
+ //# sourceMappingURL=css.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"css.js","names":[],"sources":["live-control-v2/style/index.js"],"sourcesContent":["import 'antd/lib/popover/style';\nimport 'antd/lib/space/style';\nimport 'antd/lib/tooltip/style';\nimport '../../controls/style';\nimport '../../live-player/style';\nimport '../../components/split-screen/style';\nimport '../../components/video-scale/style';\nimport './index.less';\n"],"mappings":";;AAAA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA"}