@vtx/player 0.0.12 → 0.0.13
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/{dist/types → lib}/api/fetch.d.ts +0 -0
- package/lib/api/fetch.js +128 -0
- package/lib/api/fetch.js.map +1 -0
- package/{dist/types → lib}/api/index.d.ts +0 -0
- package/lib/api/index.js +124 -0
- package/lib/api/index.js.map +1 -0
- package/{dist/types → lib}/api/types.d.ts +0 -0
- package/lib/api/types.js +6 -0
- package/lib/api/types.js.map +1 -0
- package/{dist/types/components → lib}/bill-player/index.d.ts +0 -2
- package/lib/bill-player/index.js +410 -0
- package/lib/bill-player/index.js.map +1 -0
- package/lib/bill-player/style/css.js +22 -0
- package/lib/bill-player/style/css.js.map +1 -0
- package/lib/bill-player/style/index.css +55 -0
- package/lib/bill-player/style/index.d.ts +10 -0
- package/lib/bill-player/style/index.js +22 -0
- package/lib/bill-player/style/index.js.map +1 -0
- package/lib/bill-player/style/index.less +58 -0
- package/lib/components/live-control/images/empty.png +0 -0
- package/{dist/types → lib}/context/index.d.ts +0 -0
- package/lib/context/index.js +20 -0
- package/lib/context/index.js.map +1 -0
- package/lib/controls/images/arrow.png +0 -0
- package/lib/controls/images/error.png +0 -0
- package/{dist/types/components → lib}/controls/index.d.ts +8 -2
- package/lib/controls/index.js +474 -0
- package/lib/controls/index.js.map +1 -0
- package/lib/controls/style/css.js +4 -0
- package/lib/controls/style/css.js.map +1 -0
- package/lib/controls/style/index.css +185 -0
- package/lib/controls/style/index.d.ts +1 -0
- package/lib/controls/style/index.js +4 -0
- package/lib/controls/style/index.js.map +1 -0
- package/lib/controls/style/index.less +187 -0
- package/lib/history-control/images/collapse.png +0 -0
- package/lib/history-control/images/empty.png +0 -0
- package/{dist/types/components → lib}/history-control/index.d.ts +4 -1
- package/lib/history-control/index.js +506 -0
- package/lib/history-control/index.js.map +1 -0
- package/lib/history-control/style/css.js +6 -0
- package/lib/history-control/style/css.js.map +1 -0
- package/lib/history-control/style/index.css +195 -0
- package/lib/history-control/style/index.d.ts +2 -0
- package/lib/history-control/style/index.js +6 -0
- package/lib/history-control/style/index.js.map +1 -0
- package/lib/history-control/style/index.less +219 -0
- package/{dist/types/components → lib}/history-player/index.d.ts +7 -4
- package/lib/history-player/index.js +276 -0
- package/lib/history-player/index.js.map +1 -0
- package/lib/history-player/style/css.js +6 -0
- package/lib/history-player/style/css.js.map +1 -0
- package/lib/history-player/style/index.css +105 -0
- package/lib/history-player/style/index.d.ts +2 -0
- package/lib/history-player/style/index.js +6 -0
- package/lib/history-player/style/index.js.map +1 -0
- package/lib/history-player/style/index.less +98 -0
- package/{dist/types → lib}/hooks/useSettings.d.ts +0 -0
- package/lib/hooks/useSettings.js +28 -0
- package/lib/hooks/useSettings.js.map +1 -0
- package/lib/icons/index.css +28 -0
- package/{dist/types → lib}/icons/index.d.ts +0 -0
- package/lib/icons/index.js +788 -0
- package/lib/icons/index.js.map +1 -0
- package/lib/icons/index.less +27 -0
- package/lib/index.d.ts +7 -0
- package/lib/index.js +64 -0
- package/lib/index.js.map +1 -0
- package/{dist/types/components → lib}/live-channel-player/index.d.ts +1 -2
- package/lib/live-channel-player/index.js +164 -0
- package/lib/live-channel-player/index.js.map +1 -0
- package/lib/live-channel-player/style/css.js +6 -0
- package/lib/live-channel-player/style/css.js.map +1 -0
- package/lib/live-channel-player/style/index.d.ts +2 -0
- package/lib/live-channel-player/style/index.js +6 -0
- package/lib/live-channel-player/style/index.js.map +1 -0
- package/lib/live-control/images/empty.png +0 -0
- package/{dist/types/components → lib}/live-control/index.d.ts +6 -3
- package/lib/live-control/index.js +381 -0
- package/lib/live-control/index.js.map +1 -0
- package/lib/live-control/style/css.js +6 -0
- package/lib/live-control/style/css.js.map +1 -0
- package/lib/live-control/style/index.css +73 -0
- package/lib/live-control/style/index.d.ts +2 -0
- package/lib/live-control/style/index.js +6 -0
- package/lib/live-control/style/index.js.map +1 -0
- package/lib/live-control/style/index.less +65 -0
- package/{dist/types/components → lib}/live-player/index.d.ts +6 -4
- package/lib/live-player/index.js +178 -0
- package/lib/live-player/index.js.map +1 -0
- package/lib/live-player/style/css.js +6 -0
- package/lib/live-player/style/css.js.map +1 -0
- package/lib/live-player/style/index.css +83 -0
- package/lib/live-player/style/index.d.ts +2 -0
- package/lib/live-player/style/index.js +6 -0
- package/lib/live-player/style/index.js.map +1 -0
- package/lib/live-player/style/index.less +70 -0
- package/{dist/types/components → lib}/player/index.d.ts +5 -0
- package/lib/player/index.js +476 -0
- package/lib/player/index.js.map +1 -0
- package/lib/player/style/css.js +2 -0
- package/lib/player/style/css.js.map +1 -0
- package/lib/player/style/index.d.ts +1 -0
- package/lib/player/style/index.js +2 -0
- package/lib/player/style/index.js.map +1 -0
- package/lib/typings/@vtx/utils/index.d.ts +27 -0
- package/lib/typings/h5player.d.ts +131 -0
- package/{dist/types → lib}/utils/index.d.ts +3 -3
- package/lib/utils/index.js +265 -0
- package/lib/utils/index.js.map +1 -0
- package/lib/vite-env.d.ts +1 -0
- package/package.json +2 -2
- package/dist/index.d.ts +0 -221
- package/dist/index.es.js +0 -533
- package/dist/index.es.js.map +0 -1
- package/dist/index.umd.js +0 -533
- package/dist/index.umd.js.map +0 -1
- package/dist/types/main.d.ts +0 -8
|
@@ -0,0 +1,381 @@
|
|
|
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 _controls = require("../controls");
|
|
15
|
+
|
|
16
|
+
var _icons = require("../icons");
|
|
17
|
+
|
|
18
|
+
var _livePlayer = _interopRequireDefault(require("../live-player"));
|
|
19
|
+
|
|
20
|
+
var _ahooks = require("ahooks");
|
|
21
|
+
|
|
22
|
+
var _space = _interopRequireDefault(require("antd/lib/space"));
|
|
23
|
+
|
|
24
|
+
var _tooltip = _interopRequireDefault(require("antd/lib/tooltip"));
|
|
25
|
+
|
|
26
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
|
|
27
|
+
|
|
28
|
+
function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }
|
|
29
|
+
|
|
30
|
+
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."); }
|
|
31
|
+
|
|
32
|
+
function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); }
|
|
33
|
+
|
|
34
|
+
function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }
|
|
35
|
+
|
|
36
|
+
function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
|
|
37
|
+
|
|
38
|
+
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."); }
|
|
39
|
+
|
|
40
|
+
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); }
|
|
41
|
+
|
|
42
|
+
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; }
|
|
43
|
+
|
|
44
|
+
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; }
|
|
45
|
+
|
|
46
|
+
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
|
|
47
|
+
|
|
48
|
+
var DEFAULT_GRID = 2;
|
|
49
|
+
var DEFAULT_ACTIVE = 0;
|
|
50
|
+
var DEFAULT_CHANNELS = Array(9).fill({
|
|
51
|
+
channelNum: ''
|
|
52
|
+
});
|
|
53
|
+
/**
|
|
54
|
+
* 实时分屏组件
|
|
55
|
+
*/
|
|
56
|
+
|
|
57
|
+
var LiveControl = /*#__PURE__*/(0, _react.forwardRef)(function (props, ref) {
|
|
58
|
+
var _props$height = props.height,
|
|
59
|
+
height = _props$height === void 0 ? '100%' : _props$height,
|
|
60
|
+
_props$width = props.width,
|
|
61
|
+
width = _props$width === void 0 ? '100%' : _props$width,
|
|
62
|
+
onExpandChange = props.onExpandChange,
|
|
63
|
+
onChannelChange = props.onChannelChange,
|
|
64
|
+
polling = props.polling;
|
|
65
|
+
|
|
66
|
+
var _useSetState = (0, _ahooks.useSetState)({
|
|
67
|
+
expand: true,
|
|
68
|
+
grid: DEFAULT_GRID,
|
|
69
|
+
activeIndex: DEFAULT_ACTIVE,
|
|
70
|
+
channels: DEFAULT_CHANNELS
|
|
71
|
+
}),
|
|
72
|
+
_useSetState2 = _slicedToArray(_useSetState, 2),
|
|
73
|
+
state = _useSetState2[0],
|
|
74
|
+
setState = _useSetState2[1];
|
|
75
|
+
|
|
76
|
+
var wrapRef = (0, _react.useRef)(null);
|
|
77
|
+
|
|
78
|
+
var _useFullscreen = (0, _ahooks.useFullscreen)(wrapRef),
|
|
79
|
+
_useFullscreen2 = _slicedToArray(_useFullscreen, 2),
|
|
80
|
+
isFullscreen = _useFullscreen2[0],
|
|
81
|
+
toggleFullscreen = _useFullscreen2[1].toggleFullscreen;
|
|
82
|
+
|
|
83
|
+
var channelRef = (0, _react.useRef)(DEFAULT_CHANNELS); // 实时视频轮询
|
|
84
|
+
|
|
85
|
+
(0, _ahooks.useInterval)(function () {
|
|
86
|
+
// 是否有视频正在播放
|
|
87
|
+
var hasVideo = state.channels.some(function (item) {
|
|
88
|
+
return item.channelNum;
|
|
89
|
+
});
|
|
90
|
+
|
|
91
|
+
if (polling && hasVideo) {
|
|
92
|
+
setState({
|
|
93
|
+
channels: DEFAULT_CHANNELS
|
|
94
|
+
});
|
|
95
|
+
var timer = setTimeout(function () {
|
|
96
|
+
setState({
|
|
97
|
+
channels: channelRef.current
|
|
98
|
+
});
|
|
99
|
+
clearTimeout(timer);
|
|
100
|
+
}, 0);
|
|
101
|
+
}
|
|
102
|
+
}, polling);
|
|
103
|
+
(0, _react.useImperativeHandle)(ref, function () {
|
|
104
|
+
return {
|
|
105
|
+
load: function load(channel) {
|
|
106
|
+
var index = state.channels.findIndex(function (c) {
|
|
107
|
+
return c.channelNum === channel.channelNum;
|
|
108
|
+
});
|
|
109
|
+
|
|
110
|
+
if (~index) {
|
|
111
|
+
setState({
|
|
112
|
+
activeIndex: index
|
|
113
|
+
}); // 如果通道号已经存在,则设置激活索引为该通道
|
|
114
|
+
} else {
|
|
115
|
+
// 播放该通道
|
|
116
|
+
var newChannels = _toConsumableArray(state.channels);
|
|
117
|
+
|
|
118
|
+
newChannels[state.activeIndex] = channel;
|
|
119
|
+
var activeIndex = getActiveIndex(newChannels, state.grid, state.activeIndex);
|
|
120
|
+
setState({
|
|
121
|
+
channels: newChannels,
|
|
122
|
+
activeIndex: activeIndex
|
|
123
|
+
});
|
|
124
|
+
}
|
|
125
|
+
},
|
|
126
|
+
multiLoad: function multiLoad(channels) {
|
|
127
|
+
var grid = 1;
|
|
128
|
+
if (channels.length > 1) grid = 2;
|
|
129
|
+
if (channels.length > 4) grid = 3;
|
|
130
|
+
var newChannels = [];
|
|
131
|
+
|
|
132
|
+
for (var i = 0; i < 9; i++) {
|
|
133
|
+
newChannels.push(channels[i] ? channels[i] : {
|
|
134
|
+
channelNum: ''
|
|
135
|
+
});
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
setState({
|
|
139
|
+
grid: grid,
|
|
140
|
+
channels: newChannels
|
|
141
|
+
});
|
|
142
|
+
},
|
|
143
|
+
unLoad: function unLoad(channelNum) {
|
|
144
|
+
var index = state.channels.findIndex(function (c) {
|
|
145
|
+
return c.channelNum === channelNum;
|
|
146
|
+
});
|
|
147
|
+
|
|
148
|
+
if (~index) {
|
|
149
|
+
// 卸载通道
|
|
150
|
+
var newChannels = _toConsumableArray(state.channels);
|
|
151
|
+
|
|
152
|
+
newChannels[index] = {
|
|
153
|
+
channelNum: ''
|
|
154
|
+
};
|
|
155
|
+
setState({
|
|
156
|
+
channels: newChannels
|
|
157
|
+
});
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
};
|
|
161
|
+
});
|
|
162
|
+
(0, _react.useEffect)(function () {
|
|
163
|
+
channelRef.current = state.channels;
|
|
164
|
+
|
|
165
|
+
if (onChannelChange) {
|
|
166
|
+
onChannelChange(state.channels.filter(function (c) {
|
|
167
|
+
return !!c.channelNum;
|
|
168
|
+
}).map(function (c) {
|
|
169
|
+
return c.channelNum;
|
|
170
|
+
}));
|
|
171
|
+
}
|
|
172
|
+
}, [state.channels]);
|
|
173
|
+
|
|
174
|
+
var handleCloseAll = function handleCloseAll() {
|
|
175
|
+
setState({
|
|
176
|
+
channels: DEFAULT_CHANNELS
|
|
177
|
+
});
|
|
178
|
+
};
|
|
179
|
+
|
|
180
|
+
var handleExpand = function handleExpand() {
|
|
181
|
+
onExpandChange && onExpandChange(!state.expand);
|
|
182
|
+
setState({
|
|
183
|
+
expand: !state.expand
|
|
184
|
+
});
|
|
185
|
+
};
|
|
186
|
+
|
|
187
|
+
var getGridItems = function getGridItems() {
|
|
188
|
+
var items = [];
|
|
189
|
+
|
|
190
|
+
var _loop = function _loop(i) {
|
|
191
|
+
var element = (0, _jsxRuntime.jsx)(GridItem, {
|
|
192
|
+
active: state.activeIndex === i,
|
|
193
|
+
onClick: function onClick() {
|
|
194
|
+
return setState({
|
|
195
|
+
activeIndex: i
|
|
196
|
+
});
|
|
197
|
+
},
|
|
198
|
+
channel: state.channels[i],
|
|
199
|
+
onClose: function onClose() {
|
|
200
|
+
var newChannels = _toConsumableArray(state.channels);
|
|
201
|
+
|
|
202
|
+
newChannels[i] = {
|
|
203
|
+
channelNum: ''
|
|
204
|
+
};
|
|
205
|
+
setState({
|
|
206
|
+
channels: newChannels
|
|
207
|
+
});
|
|
208
|
+
}
|
|
209
|
+
}, i);
|
|
210
|
+
items.push(element);
|
|
211
|
+
};
|
|
212
|
+
|
|
213
|
+
for (var i = 0; i < state.grid * state.grid; i++) {
|
|
214
|
+
_loop(i);
|
|
215
|
+
}
|
|
216
|
+
|
|
217
|
+
return items;
|
|
218
|
+
};
|
|
219
|
+
|
|
220
|
+
return (0, _jsxRuntime.jsxs)("div", Object.assign({
|
|
221
|
+
className: "vtx-live-control",
|
|
222
|
+
ref: wrapRef,
|
|
223
|
+
style: {
|
|
224
|
+
height: height,
|
|
225
|
+
width: width
|
|
226
|
+
}
|
|
227
|
+
}, {
|
|
228
|
+
children: [(0, _jsxRuntime.jsx)("div", Object.assign({
|
|
229
|
+
className: "player-grid-container _".concat(state.grid)
|
|
230
|
+
}, {
|
|
231
|
+
children: getGridItems()
|
|
232
|
+
})), (0, _jsxRuntime.jsxs)("div", Object.assign({
|
|
233
|
+
className: "controls"
|
|
234
|
+
}, {
|
|
235
|
+
children: [(0, _jsxRuntime.jsx)(_space["default"], Object.assign({
|
|
236
|
+
className: "left",
|
|
237
|
+
size: 12,
|
|
238
|
+
align: "center"
|
|
239
|
+
}, {
|
|
240
|
+
children: onExpandChange && (0, _jsxRuntime.jsx)(_tooltip["default"], Object.assign({
|
|
241
|
+
title: state.expand ? '收起' : '展开'
|
|
242
|
+
}, {
|
|
243
|
+
children: (0, _jsxRuntime.jsx)("div", Object.assign({
|
|
244
|
+
onClick: handleExpand
|
|
245
|
+
}, {
|
|
246
|
+
children: state.expand ? (0, _jsxRuntime.jsx)(_icons.FoldIcon, {}) : (0, _jsxRuntime.jsx)(_icons.ExpandIcon, {})
|
|
247
|
+
}))
|
|
248
|
+
}))
|
|
249
|
+
})), (0, _jsxRuntime.jsxs)(_space["default"], Object.assign({
|
|
250
|
+
className: "right",
|
|
251
|
+
size: 12,
|
|
252
|
+
align: "center"
|
|
253
|
+
}, {
|
|
254
|
+
children: [(0, _jsxRuntime.jsx)(_tooltip["default"], Object.assign({
|
|
255
|
+
title: "\u5168\u90E8\u5173\u95ED"
|
|
256
|
+
}, {
|
|
257
|
+
children: (0, _jsxRuntime.jsx)("div", {
|
|
258
|
+
children: (0, _jsxRuntime.jsx)(_icons.CloseAllIcon, {
|
|
259
|
+
onClick: handleCloseAll
|
|
260
|
+
})
|
|
261
|
+
})
|
|
262
|
+
})), (0, _jsxRuntime.jsx)(_tooltip["default"], Object.assign({
|
|
263
|
+
title: "1\u5206\u5C4F"
|
|
264
|
+
}, {
|
|
265
|
+
children: (0, _jsxRuntime.jsx)("div", {
|
|
266
|
+
children: (0, _jsxRuntime.jsx)(_icons.Grid1x1Icon, {
|
|
267
|
+
active: state.grid === 1,
|
|
268
|
+
onClick: function onClick() {
|
|
269
|
+
return setState({
|
|
270
|
+
grid: 1
|
|
271
|
+
});
|
|
272
|
+
}
|
|
273
|
+
})
|
|
274
|
+
})
|
|
275
|
+
})), (0, _jsxRuntime.jsx)(_tooltip["default"], Object.assign({
|
|
276
|
+
title: "4\u5206\u5C4F"
|
|
277
|
+
}, {
|
|
278
|
+
children: (0, _jsxRuntime.jsx)("div", {
|
|
279
|
+
children: (0, _jsxRuntime.jsx)(_icons.Grid2x2Icon, {
|
|
280
|
+
active: state.grid === 2,
|
|
281
|
+
onClick: function onClick() {
|
|
282
|
+
return setState({
|
|
283
|
+
grid: 2
|
|
284
|
+
});
|
|
285
|
+
}
|
|
286
|
+
})
|
|
287
|
+
})
|
|
288
|
+
})), (0, _jsxRuntime.jsx)(_tooltip["default"], Object.assign({
|
|
289
|
+
title: "9\u5206\u5C4F"
|
|
290
|
+
}, {
|
|
291
|
+
children: (0, _jsxRuntime.jsx)("div", {
|
|
292
|
+
children: (0, _jsxRuntime.jsx)(_icons.Grid3x3Icon, {
|
|
293
|
+
active: state.grid === 3,
|
|
294
|
+
onClick: function onClick() {
|
|
295
|
+
return setState({
|
|
296
|
+
grid: 3
|
|
297
|
+
});
|
|
298
|
+
}
|
|
299
|
+
})
|
|
300
|
+
})
|
|
301
|
+
})), (0, _jsxRuntime.jsx)(_tooltip["default"], Object.assign({
|
|
302
|
+
title: "\u5168\u5C4F"
|
|
303
|
+
}, {
|
|
304
|
+
children: (0, _jsxRuntime.jsx)("div", {
|
|
305
|
+
children: isFullscreen ? (0, _jsxRuntime.jsx)(_icons.ExitFullScreenIcon, {
|
|
306
|
+
onClick: toggleFullscreen
|
|
307
|
+
}) : (0, _jsxRuntime.jsx)(_icons.FullScreenIcon, {
|
|
308
|
+
onClick: toggleFullscreen
|
|
309
|
+
})
|
|
310
|
+
})
|
|
311
|
+
}))]
|
|
312
|
+
}))]
|
|
313
|
+
}))]
|
|
314
|
+
}));
|
|
315
|
+
});
|
|
316
|
+
LiveControl.displayName = 'LiveControl';
|
|
317
|
+
|
|
318
|
+
var GridItem = function GridItem(props) {
|
|
319
|
+
var active = props.active,
|
|
320
|
+
onClick = props.onClick,
|
|
321
|
+
channel = props.channel,
|
|
322
|
+
onClose = props.onClose;
|
|
323
|
+
var empty = !channel.channelNum;
|
|
324
|
+
|
|
325
|
+
var _useRequest = (0, _ahooks.useRequest)(function () {
|
|
326
|
+
return (0, _api.getPreviewUrl)(channel);
|
|
327
|
+
}, {
|
|
328
|
+
ready: !!channel.channelNum,
|
|
329
|
+
refreshDeps: [channel.channelNum]
|
|
330
|
+
}),
|
|
331
|
+
data = _useRequest.data;
|
|
332
|
+
|
|
333
|
+
var name = "".concat(data === null || data === void 0 ? void 0 : data.deviceName, "-").concat(data === null || data === void 0 ? void 0 : data.channelName);
|
|
334
|
+
return (0, _jsxRuntime.jsx)("div", Object.assign({
|
|
335
|
+
className: "grid-item-container ".concat(active ? 'active' : ''),
|
|
336
|
+
onClick: onClick
|
|
337
|
+
}, {
|
|
338
|
+
children: data && !empty && (0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
|
|
339
|
+
children: [(0, _jsxRuntime.jsx)(_controls.PlayerHeader, {
|
|
340
|
+
name: name,
|
|
341
|
+
onClose: onClose
|
|
342
|
+
}), (0, _jsxRuntime.jsx)("div", Object.assign({
|
|
343
|
+
className: "content"
|
|
344
|
+
}, {
|
|
345
|
+
children: (0, _jsxRuntime.jsx)(_livePlayer["default"], {
|
|
346
|
+
url: data.url,
|
|
347
|
+
captureName: name,
|
|
348
|
+
talkUrl: data.apiUrl,
|
|
349
|
+
showInfo: channel.showInfo,
|
|
350
|
+
info: channel.info
|
|
351
|
+
})
|
|
352
|
+
}))]
|
|
353
|
+
})
|
|
354
|
+
}));
|
|
355
|
+
};
|
|
356
|
+
/**
|
|
357
|
+
* 获取当前激活的网格
|
|
358
|
+
* @param channels 现有通道数组
|
|
359
|
+
* @param grid 当前网格状态
|
|
360
|
+
* @param currentIndex 当前索引
|
|
361
|
+
* @returns
|
|
362
|
+
*/
|
|
363
|
+
|
|
364
|
+
|
|
365
|
+
var getActiveIndex = function getActiveIndex(channels, grid, currentIndex) {
|
|
366
|
+
var currentChannels = channels.slice(0, grid * grid);
|
|
367
|
+
|
|
368
|
+
for (var i = currentIndex + 1; i < currentChannels.length; i++) {
|
|
369
|
+
if (!currentChannels[i].channelNum) return i;
|
|
370
|
+
}
|
|
371
|
+
|
|
372
|
+
for (var _i2 = 0; _i2 < currentIndex; _i2++) {
|
|
373
|
+
if (!currentChannels[_i2].channelNum) return _i2;
|
|
374
|
+
}
|
|
375
|
+
|
|
376
|
+
return currentIndex;
|
|
377
|
+
};
|
|
378
|
+
|
|
379
|
+
var _default = LiveControl;
|
|
380
|
+
exports["default"] = _default;
|
|
381
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","names":["DEFAULT_GRID","DEFAULT_ACTIVE","DEFAULT_CHANNELS","Array","fill","channelNum","LiveControl","forwardRef","props","ref","height","width","onExpandChange","onChannelChange","polling","useSetState","expand","grid","activeIndex","channels","state","setState","wrapRef","useRef","useFullscreen","isFullscreen","toggleFullscreen","channelRef","useInterval","hasVideo","some","item","timer","setTimeout","current","clearTimeout","useImperativeHandle","load","channel","index","findIndex","c","newChannels","getActiveIndex","multiLoad","length","i","push","unLoad","useEffect","filter","map","handleCloseAll","handleExpand","getGridItems","items","element","_jsx","GridItem","active","onClick","onClose","_jsxs","Object","assign","className","style","children","Space","size","align","Tooltip","title","FoldIcon","ExpandIcon","CloseAllIcon","Grid1x1Icon","Grid2x2Icon","Grid3x3Icon","ExitFullScreenIcon","FullScreenIcon","displayName","empty","useRequest","getPreviewUrl","ready","refreshDeps","data","name","deviceName","channelName","_Fragment","PlayerHeader","VtxLivePlayer","url","captureName","talkUrl","apiUrl","showInfo","info","currentIndex","currentChannels","slice"],"sources":["live-control/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 { PlayerHeader } from '../controls';\nimport { CloseAllIcon, ExitFullScreenIcon, ExpandIcon, FoldIcon, FullScreenIcon, Grid1x1Icon, Grid2x2Icon, Grid3x3Icon, } from '../icons';\nimport VtxLivePlayer from '../live-player';\nimport { useFullscreen, useInterval, useRequest, useSetState } from 'ahooks';\nimport Space from 'antd/lib/space';\n// import { Space, Tooltip } from 'antd';\nimport Tooltip from 'antd/lib/tooltip';\nconst DEFAULT_GRID = 2;\nconst DEFAULT_ACTIVE = 0;\nconst DEFAULT_CHANNELS = Array(9).fill({ channelNum: '' });\n/**\n * 实时分屏组件\n */\nconst LiveControl = forwardRef((props, ref) => {\n const { height = '100%', width = '100%', onExpandChange, onChannelChange, polling } = props;\n const [state, setState] = useSetState({\n expand: true,\n grid: DEFAULT_GRID,\n activeIndex: DEFAULT_ACTIVE,\n channels: DEFAULT_CHANNELS,\n });\n const wrapRef = useRef(null);\n const [isFullscreen, { toggleFullscreen }] = useFullscreen(wrapRef);\n const channelRef = useRef(DEFAULT_CHANNELS);\n // 实时视频轮询\n useInterval(() => {\n // 是否有视频正在播放\n const hasVideo = state.channels.some((item) => item.channelNum);\n if (polling && hasVideo) {\n setState({\n channels: DEFAULT_CHANNELS,\n });\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 load: (channel) => {\n const index = state.channels.findIndex((c) => c.channelNum === channel.channelNum);\n if (~index) {\n setState({ activeIndex: index }); // 如果通道号已经存在,则设置激活索引为该通道\n }\n else {\n // 播放该通道\n const newChannels = [...state.channels];\n newChannels[state.activeIndex] = channel;\n const activeIndex = getActiveIndex(newChannels, state.grid, state.activeIndex);\n setState({ channels: newChannels, activeIndex });\n }\n },\n multiLoad: (channels) => {\n let grid = 1;\n if (channels.length > 1)\n grid = 2;\n if (channels.length > 4)\n grid = 3;\n const newChannels = [];\n for (let i = 0; i < 9; i++) {\n newChannels.push(channels[i] ? channels[i] : { channelNum: '' });\n }\n setState({ grid, channels: newChannels });\n },\n unLoad: (channelNum) => {\n const index = state.channels.findIndex((c) => c.channelNum === channelNum);\n if (~index) {\n // 卸载通道\n const newChannels = [...state.channels];\n newChannels[index] = { channelNum: '' };\n setState({ channels: newChannels });\n }\n },\n };\n });\n useEffect(() => {\n channelRef.current = state.channels;\n if (onChannelChange) {\n onChannelChange(state.channels.filter((c) => !!c.channelNum).map((c) => c.channelNum));\n }\n }, [state.channels]);\n const handleCloseAll = () => {\n setState({ channels: DEFAULT_CHANNELS });\n };\n const handleExpand = () => {\n onExpandChange && onExpandChange(!state.expand);\n setState({ expand: !state.expand });\n };\n const getGridItems = () => {\n const items = [];\n for (let i = 0; i < state.grid * state.grid; i++) {\n const element = (_jsx(GridItem, { active: state.activeIndex === i, onClick: () => setState({ activeIndex: i }), channel: state.channels[i], onClose: () => {\n const newChannels = [...state.channels];\n newChannels[i] = { channelNum: '' };\n setState({ channels: newChannels });\n } }, i));\n items.push(element);\n }\n return items;\n };\n return (_jsxs(\"div\", Object.assign({ className: \"vtx-live-control\", ref: wrapRef, style: { height, width } }, { children: [_jsx(\"div\", Object.assign({ className: `player-grid-container _${state.grid}` }, { children: getGridItems() })), _jsxs(\"div\", Object.assign({ className: \"controls\" }, { children: [_jsx(Space, Object.assign({ className: \"left\", size: 12, align: \"center\" }, { children: onExpandChange && (_jsx(Tooltip, Object.assign({ title: state.expand ? '收起' : '展开' }, { children: _jsx(\"div\", Object.assign({ onClick: handleExpand }, { children: state.expand ? _jsx(FoldIcon, {}) : _jsx(ExpandIcon, {}) })) }))) })), _jsxs(Space, Object.assign({ className: \"right\", size: 12, align: \"center\" }, { children: [_jsx(Tooltip, Object.assign({ title: \"\\u5168\\u90E8\\u5173\\u95ED\" }, { children: _jsx(\"div\", { children: _jsx(CloseAllIcon, { onClick: handleCloseAll }) }) })), _jsx(Tooltip, Object.assign({ title: \"1\\u5206\\u5C4F\" }, { children: _jsx(\"div\", { children: _jsx(Grid1x1Icon, { active: state.grid === 1, onClick: () => setState({ grid: 1 }) }) }) })), _jsx(Tooltip, Object.assign({ title: \"4\\u5206\\u5C4F\" }, { children: _jsx(\"div\", { children: _jsx(Grid2x2Icon, { active: state.grid === 2, onClick: () => setState({ grid: 2 }) }) }) })), _jsx(Tooltip, Object.assign({ title: \"9\\u5206\\u5C4F\" }, { children: _jsx(\"div\", { children: _jsx(Grid3x3Icon, { active: state.grid === 3, onClick: () => setState({ grid: 3 }) }) }) })), _jsx(Tooltip, Object.assign({ title: \"\\u5168\\u5C4F\" }, { children: _jsx(\"div\", { children: isFullscreen ? (_jsx(ExitFullScreenIcon, { onClick: toggleFullscreen })) : (_jsx(FullScreenIcon, { onClick: toggleFullscreen })) }) }))] }))] }))] })));\n});\nLiveControl.displayName = 'LiveControl';\nconst GridItem = (props) => {\n const { active, onClick, channel, onClose } = props;\n const empty = !channel.channelNum;\n const { data } = 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 return (_jsx(\"div\", Object.assign({ className: `grid-item-container ${active ? 'active' : ''}`, onClick: onClick }, { children: data && !empty && (_jsxs(_Fragment, { children: [_jsx(PlayerHeader, { name: name, onClose: onClose }), _jsx(\"div\", Object.assign({ className: \"content\" }, { children: _jsx(VtxLivePlayer, { url: data.url, captureName: name, talkUrl: data.apiUrl, showInfo: channel.showInfo, info: channel.info }) }))] })) })));\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, grid * 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};\nexport default LiveControl;\n"],"mappings":";;;;;;;AAAA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AAEA;;;;;;;;;;;;;;;;;;;;;;;;AACA,IAAMA,YAAY,GAAG,CAArB;AACA,IAAMC,cAAc,GAAG,CAAvB;AACA,IAAMC,gBAAgB,GAAGC,KAAK,CAAC,CAAD,CAAL,CAASC,IAAT,CAAc;EAAEC,UAAU,EAAE;AAAd,CAAd,CAAzB;AACA;AACA;AACA;;AACA,IAAMC,WAAW,gBAAG,IAAAC,iBAAA,EAAW,UAACC,KAAD,EAAQC,GAAR,EAAgB;EAC3C,oBAAsFD,KAAtF,CAAQE,MAAR;EAAA,IAAQA,MAAR,8BAAiB,MAAjB;EAAA,mBAAsFF,KAAtF,CAAyBG,KAAzB;EAAA,IAAyBA,KAAzB,6BAAiC,MAAjC;EAAA,IAAyCC,cAAzC,GAAsFJ,KAAtF,CAAyCI,cAAzC;EAAA,IAAyDC,eAAzD,GAAsFL,KAAtF,CAAyDK,eAAzD;EAAA,IAA0EC,OAA1E,GAAsFN,KAAtF,CAA0EM,OAA1E;;EACA,mBAA0B,IAAAC,mBAAA,EAAY;IAClCC,MAAM,EAAE,IAD0B;IAElCC,IAAI,EAAEjB,YAF4B;IAGlCkB,WAAW,EAAEjB,cAHqB;IAIlCkB,QAAQ,EAAEjB;EAJwB,CAAZ,CAA1B;EAAA;EAAA,IAAOkB,KAAP;EAAA,IAAcC,QAAd;;EAMA,IAAMC,OAAO,GAAG,IAAAC,aAAA,EAAO,IAAP,CAAhB;;EACA,qBAA6C,IAAAC,qBAAA,EAAcF,OAAd,CAA7C;EAAA;EAAA,IAAOG,YAAP;EAAA,IAAuBC,gBAAvB,sBAAuBA,gBAAvB;;EACA,IAAMC,UAAU,GAAG,IAAAJ,aAAA,EAAOrB,gBAAP,CAAnB,CAV2C,CAW3C;;EACA,IAAA0B,mBAAA,EAAY,YAAM;IACd;IACA,IAAMC,QAAQ,GAAGT,KAAK,CAACD,QAAN,CAAeW,IAAf,CAAoB,UAACC,IAAD;MAAA,OAAUA,IAAI,CAAC1B,UAAf;IAAA,CAApB,CAAjB;;IACA,IAAIS,OAAO,IAAIe,QAAf,EAAyB;MACrBR,QAAQ,CAAC;QACLF,QAAQ,EAAEjB;MADL,CAAD,CAAR;MAGA,IAAM8B,KAAK,GAAGC,UAAU,CAAC,YAAM;QAC3BZ,QAAQ,CAAC;UACLF,QAAQ,EAAEQ,UAAU,CAACO;QADhB,CAAD,CAAR;QAGAC,YAAY,CAACH,KAAD,CAAZ;MACH,CALuB,EAKrB,CALqB,CAAxB;IAMH;EACJ,CAdD,EAcGlB,OAdH;EAeA,IAAAsB,0BAAA,EAAoB3B,GAApB,EAAyB,YAAM;IAC3B,OAAO;MACH4B,IAAI,EAAE,cAACC,OAAD,EAAa;QACf,IAAMC,KAAK,GAAGnB,KAAK,CAACD,QAAN,CAAeqB,SAAf,CAAyB,UAACC,CAAD;UAAA,OAAOA,CAAC,CAACpC,UAAF,KAAiBiC,OAAO,CAACjC,UAAhC;QAAA,CAAzB,CAAd;;QACA,IAAI,CAACkC,KAAL,EAAY;UACRlB,QAAQ,CAAC;YAAEH,WAAW,EAAEqB;UAAf,CAAD,CAAR,CADQ,CAC0B;QACrC,CAFD,MAGK;UACD;UACA,IAAMG,WAAW,sBAAOtB,KAAK,CAACD,QAAb,CAAjB;;UACAuB,WAAW,CAACtB,KAAK,CAACF,WAAP,CAAX,GAAiCoB,OAAjC;UACA,IAAMpB,WAAW,GAAGyB,cAAc,CAACD,WAAD,EAActB,KAAK,CAACH,IAApB,EAA0BG,KAAK,CAACF,WAAhC,CAAlC;UACAG,QAAQ,CAAC;YAAEF,QAAQ,EAAEuB,WAAZ;YAAyBxB,WAAW,EAAXA;UAAzB,CAAD,CAAR;QACH;MACJ,CAbE;MAcH0B,SAAS,EAAE,mBAACzB,QAAD,EAAc;QACrB,IAAIF,IAAI,GAAG,CAAX;QACA,IAAIE,QAAQ,CAAC0B,MAAT,GAAkB,CAAtB,EACI5B,IAAI,GAAG,CAAP;QACJ,IAAIE,QAAQ,CAAC0B,MAAT,GAAkB,CAAtB,EACI5B,IAAI,GAAG,CAAP;QACJ,IAAMyB,WAAW,GAAG,EAApB;;QACA,KAAK,IAAII,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,CAApB,EAAuBA,CAAC,EAAxB,EAA4B;UACxBJ,WAAW,CAACK,IAAZ,CAAiB5B,QAAQ,CAAC2B,CAAD,CAAR,GAAc3B,QAAQ,CAAC2B,CAAD,CAAtB,GAA4B;YAAEzC,UAAU,EAAE;UAAd,CAA7C;QACH;;QACDgB,QAAQ,CAAC;UAAEJ,IAAI,EAAJA,IAAF;UAAQE,QAAQ,EAAEuB;QAAlB,CAAD,CAAR;MACH,CAzBE;MA0BHM,MAAM,EAAE,gBAAC3C,UAAD,EAAgB;QACpB,IAAMkC,KAAK,GAAGnB,KAAK,CAACD,QAAN,CAAeqB,SAAf,CAAyB,UAACC,CAAD;UAAA,OAAOA,CAAC,CAACpC,UAAF,KAAiBA,UAAxB;QAAA,CAAzB,CAAd;;QACA,IAAI,CAACkC,KAAL,EAAY;UACR;UACA,IAAMG,WAAW,sBAAOtB,KAAK,CAACD,QAAb,CAAjB;;UACAuB,WAAW,CAACH,KAAD,CAAX,GAAqB;YAAElC,UAAU,EAAE;UAAd,CAArB;UACAgB,QAAQ,CAAC;YAAEF,QAAQ,EAAEuB;UAAZ,CAAD,CAAR;QACH;MACJ;IAlCE,CAAP;EAoCH,CArCD;EAsCA,IAAAO,gBAAA,EAAU,YAAM;IACZtB,UAAU,CAACO,OAAX,GAAqBd,KAAK,CAACD,QAA3B;;IACA,IAAIN,eAAJ,EAAqB;MACjBA,eAAe,CAACO,KAAK,CAACD,QAAN,CAAe+B,MAAf,CAAsB,UAACT,CAAD;QAAA,OAAO,CAAC,CAACA,CAAC,CAACpC,UAAX;MAAA,CAAtB,EAA6C8C,GAA7C,CAAiD,UAACV,CAAD;QAAA,OAAOA,CAAC,CAACpC,UAAT;MAAA,CAAjD,CAAD,CAAf;IACH;EACJ,CALD,EAKG,CAACe,KAAK,CAACD,QAAP,CALH;;EAMA,IAAMiC,cAAc,GAAG,SAAjBA,cAAiB,GAAM;IACzB/B,QAAQ,CAAC;MAAEF,QAAQ,EAAEjB;IAAZ,CAAD,CAAR;EACH,CAFD;;EAGA,IAAMmD,YAAY,GAAG,SAAfA,YAAe,GAAM;IACvBzC,cAAc,IAAIA,cAAc,CAAC,CAACQ,KAAK,CAACJ,MAAR,CAAhC;IACAK,QAAQ,CAAC;MAAEL,MAAM,EAAE,CAACI,KAAK,CAACJ;IAAjB,CAAD,CAAR;EACH,CAHD;;EAIA,IAAMsC,YAAY,GAAG,SAAfA,YAAe,GAAM;IACvB,IAAMC,KAAK,GAAG,EAAd;;IADuB,2BAEdT,CAFc;MAGnB,IAAMU,OAAO,GAAI,IAAAC,eAAA,EAAKC,QAAL,EAAe;QAAEC,MAAM,EAAEvC,KAAK,CAACF,WAAN,KAAsB4B,CAAhC;QAAmCc,OAAO,EAAE;UAAA,OAAMvC,QAAQ,CAAC;YAAEH,WAAW,EAAE4B;UAAf,CAAD,CAAd;QAAA,CAA5C;QAAgFR,OAAO,EAAElB,KAAK,CAACD,QAAN,CAAe2B,CAAf,CAAzF;QAA4Ge,OAAO,EAAE,mBAAM;UACnJ,IAAMnB,WAAW,sBAAOtB,KAAK,CAACD,QAAb,CAAjB;;UACAuB,WAAW,CAACI,CAAD,CAAX,GAAiB;YAAEzC,UAAU,EAAE;UAAd,CAAjB;UACAgB,QAAQ,CAAC;YAAEF,QAAQ,EAAEuB;UAAZ,CAAD,CAAR;QACH;MAJ2B,CAAf,EAIRI,CAJQ,CAAjB;MAKAS,KAAK,CAACR,IAAN,CAAWS,OAAX;IARmB;;IAEvB,KAAK,IAAIV,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG1B,KAAK,CAACH,IAAN,GAAaG,KAAK,CAACH,IAAvC,EAA6C6B,CAAC,EAA9C,EAAkD;MAAA,MAAzCA,CAAyC;IAOjD;;IACD,OAAOS,KAAP;EACH,CAXD;;EAYA,OAAQ,IAAAO,gBAAA,EAAM,KAAN,EAAaC,MAAM,CAACC,MAAP,CAAc;IAAEC,SAAS,EAAE,kBAAb;IAAiCxD,GAAG,EAAEa,OAAtC;IAA+C4C,KAAK,EAAE;MAAExD,MAAM,EAANA,MAAF;MAAUC,KAAK,EAALA;IAAV;EAAtD,CAAd,EAAyF;IAAEwD,QAAQ,EAAE,CAAC,IAAAV,eAAA,EAAK,KAAL,EAAYM,MAAM,CAACC,MAAP,CAAc;MAAEC,SAAS,mCAA4B7C,KAAK,CAACH,IAAlC;IAAX,CAAd,EAAqE;MAAEkD,QAAQ,EAAEb,YAAY;IAAxB,CAArE,CAAZ,CAAD,EAAkH,IAAAQ,gBAAA,EAAM,KAAN,EAAaC,MAAM,CAACC,MAAP,CAAc;MAAEC,SAAS,EAAE;IAAb,CAAd,EAAyC;MAAEE,QAAQ,EAAE,CAAC,IAAAV,eAAA,EAAKW,iBAAL,EAAYL,MAAM,CAACC,MAAP,CAAc;QAAEC,SAAS,EAAE,MAAb;QAAqBI,IAAI,EAAE,EAA3B;QAA+BC,KAAK,EAAE;MAAtC,CAAd,EAAgE;QAAEH,QAAQ,EAAEvD,cAAc,IAAK,IAAA6C,eAAA,EAAKc,mBAAL,EAAcR,MAAM,CAACC,MAAP,CAAc;UAAEQ,KAAK,EAAEpD,KAAK,CAACJ,MAAN,GAAe,IAAf,GAAsB;QAA/B,CAAd,EAAqD;UAAEmD,QAAQ,EAAE,IAAAV,eAAA,EAAK,KAAL,EAAYM,MAAM,CAACC,MAAP,CAAc;YAAEJ,OAAO,EAAEP;UAAX,CAAd,EAAyC;YAAEc,QAAQ,EAAE/C,KAAK,CAACJ,MAAN,GAAe,IAAAyC,eAAA,EAAKgB,eAAL,EAAe,EAAf,CAAf,GAAoC,IAAAhB,eAAA,EAAKiB,iBAAL,EAAiB,EAAjB;UAAhD,CAAzC,CAAZ;QAAZ,CAArD,CAAd;MAA/B,CAAhE,CAAZ,CAAD,EAAmU,IAAAZ,gBAAA,EAAMM,iBAAN,EAAaL,MAAM,CAACC,MAAP,CAAc;QAAEC,SAAS,EAAE,OAAb;QAAsBI,IAAI,EAAE,EAA5B;QAAgCC,KAAK,EAAE;MAAvC,CAAd,EAAiE;QAAEH,QAAQ,EAAE,CAAC,IAAAV,eAAA,EAAKc,mBAAL,EAAcR,MAAM,CAACC,MAAP,CAAc;UAAEQ,KAAK,EAAE;QAAT,CAAd,EAAqD;UAAEL,QAAQ,EAAE,IAAAV,eAAA,EAAK,KAAL,EAAY;YAAEU,QAAQ,EAAE,IAAAV,eAAA,EAAKkB,mBAAL,EAAmB;cAAEf,OAAO,EAAER;YAAX,CAAnB;UAAZ,CAAZ;QAAZ,CAArD,CAAd,CAAD,EAAgK,IAAAK,eAAA,EAAKc,mBAAL,EAAcR,MAAM,CAACC,MAAP,CAAc;UAAEQ,KAAK,EAAE;QAAT,CAAd,EAA0C;UAAEL,QAAQ,EAAE,IAAAV,eAAA,EAAK,KAAL,EAAY;YAAEU,QAAQ,EAAE,IAAAV,eAAA,EAAKmB,kBAAL,EAAkB;cAAEjB,MAAM,EAAEvC,KAAK,CAACH,IAAN,KAAe,CAAzB;cAA4B2C,OAAO,EAAE;gBAAA,OAAMvC,QAAQ,CAAC;kBAAEJ,IAAI,EAAE;gBAAR,CAAD,CAAd;cAAA;YAArC,CAAlB;UAAZ,CAAZ;QAAZ,CAA1C,CAAd,CAAhK,EAA0V,IAAAwC,eAAA,EAAKc,mBAAL,EAAcR,MAAM,CAACC,MAAP,CAAc;UAAEQ,KAAK,EAAE;QAAT,CAAd,EAA0C;UAAEL,QAAQ,EAAE,IAAAV,eAAA,EAAK,KAAL,EAAY;YAAEU,QAAQ,EAAE,IAAAV,eAAA,EAAKoB,kBAAL,EAAkB;cAAElB,MAAM,EAAEvC,KAAK,CAACH,IAAN,KAAe,CAAzB;cAA4B2C,OAAO,EAAE;gBAAA,OAAMvC,QAAQ,CAAC;kBAAEJ,IAAI,EAAE;gBAAR,CAAD,CAAd;cAAA;YAArC,CAAlB;UAAZ,CAAZ;QAAZ,CAA1C,CAAd,CAA1V,EAAohB,IAAAwC,eAAA,EAAKc,mBAAL,EAAcR,MAAM,CAACC,MAAP,CAAc;UAAEQ,KAAK,EAAE;QAAT,CAAd,EAA0C;UAAEL,QAAQ,EAAE,IAAAV,eAAA,EAAK,KAAL,EAAY;YAAEU,QAAQ,EAAE,IAAAV,eAAA,EAAKqB,kBAAL,EAAkB;cAAEnB,MAAM,EAAEvC,KAAK,CAACH,IAAN,KAAe,CAAzB;cAA4B2C,OAAO,EAAE;gBAAA,OAAMvC,QAAQ,CAAC;kBAAEJ,IAAI,EAAE;gBAAR,CAAD,CAAd;cAAA;YAArC,CAAlB;UAAZ,CAAZ;QAAZ,CAA1C,CAAd,CAAphB,EAA8sB,IAAAwC,eAAA,EAAKc,mBAAL,EAAcR,MAAM,CAACC,MAAP,CAAc;UAAEQ,KAAK,EAAE;QAAT,CAAd,EAAyC;UAAEL,QAAQ,EAAE,IAAAV,eAAA,EAAK,KAAL,EAAY;YAAEU,QAAQ,EAAE1C,YAAY,GAAI,IAAAgC,eAAA,EAAKsB,yBAAL,EAAyB;cAAEnB,OAAO,EAAElC;YAAX,CAAzB,CAAJ,GAAgE,IAAA+B,eAAA,EAAKuB,qBAAL,EAAqB;cAAEpB,OAAO,EAAElC;YAAX,CAArB;UAAxF,CAAZ;QAAZ,CAAzC,CAAd,CAA9sB;MAAZ,CAAjE,CAAb,CAAnU;IAAZ,CAAzC,CAAb,CAAlH;EAAZ,CAAzF,CAAb,CAAR;AACH,CA3FmB,CAApB;AA4FApB,WAAW,CAAC2E,WAAZ,GAA0B,aAA1B;;AACA,IAAMvB,QAAQ,GAAG,SAAXA,QAAW,CAAClD,KAAD,EAAW;EACxB,IAAQmD,MAAR,GAA8CnD,KAA9C,CAAQmD,MAAR;EAAA,IAAgBC,OAAhB,GAA8CpD,KAA9C,CAAgBoD,OAAhB;EAAA,IAAyBtB,OAAzB,GAA8C9B,KAA9C,CAAyB8B,OAAzB;EAAA,IAAkCuB,OAAlC,GAA8CrD,KAA9C,CAAkCqD,OAAlC;EACA,IAAMqB,KAAK,GAAG,CAAC5C,OAAO,CAACjC,UAAvB;;EACA,kBAAiB,IAAA8E,kBAAA,EAAW;IAAA,OAAM,IAAAC,kBAAA,EAAc9C,OAAd,CAAN;EAAA,CAAX,EAAyC;IACtD+C,KAAK,EAAE,CAAC,CAAC/C,OAAO,CAACjC,UADqC;IAEtDiF,WAAW,EAAE,CAAChD,OAAO,CAACjC,UAAT;EAFyC,CAAzC,CAAjB;EAAA,IAAQkF,IAAR,eAAQA,IAAR;;EAIA,IAAMC,IAAI,aAAMD,IAAI,KAAK,IAAT,IAAiBA,IAAI,KAAK,KAAK,CAA/B,GAAmC,KAAK,CAAxC,GAA4CA,IAAI,CAACE,UAAvD,cAAqEF,IAAI,KAAK,IAAT,IAAiBA,IAAI,KAAK,KAAK,CAA/B,GAAmC,KAAK,CAAxC,GAA4CA,IAAI,CAACG,WAAtH,CAAV;EACA,OAAQ,IAAAjC,eAAA,EAAK,KAAL,EAAYM,MAAM,CAACC,MAAP,CAAc;IAAEC,SAAS,gCAAyBN,MAAM,GAAG,QAAH,GAAc,EAA7C,CAAX;IAA8DC,OAAO,EAAEA;EAAvE,CAAd,EAAgG;IAAEO,QAAQ,EAAEoB,IAAI,IAAI,CAACL,KAAT,IAAmB,IAAApB,gBAAA,EAAM6B,oBAAN,EAAiB;MAAExB,QAAQ,EAAE,CAAC,IAAAV,eAAA,EAAKmC,sBAAL,EAAmB;QAAEJ,IAAI,EAAEA,IAAR;QAAc3B,OAAO,EAAEA;MAAvB,CAAnB,CAAD,EAAuD,IAAAJ,eAAA,EAAK,KAAL,EAAYM,MAAM,CAACC,MAAP,CAAc;QAAEC,SAAS,EAAE;MAAb,CAAd,EAAwC;QAAEE,QAAQ,EAAE,IAAAV,eAAA,EAAKoC,sBAAL,EAAoB;UAAEC,GAAG,EAAEP,IAAI,CAACO,GAAZ;UAAiBC,WAAW,EAAEP,IAA9B;UAAoCQ,OAAO,EAAET,IAAI,CAACU,MAAlD;UAA0DC,QAAQ,EAAE5D,OAAO,CAAC4D,QAA5E;UAAsFC,IAAI,EAAE7D,OAAO,CAAC6D;QAApG,CAApB;MAAZ,CAAxC,CAAZ,CAAvD;IAAZ,CAAjB;EAA/B,CAAhG,CAAZ,CAAR;AACH,CATD;AAUA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,IAAMxD,cAAc,GAAG,SAAjBA,cAAiB,CAACxB,QAAD,EAAWF,IAAX,EAAiBmF,YAAjB,EAAkC;EACrD,IAAMC,eAAe,GAAGlF,QAAQ,CAACmF,KAAT,CAAe,CAAf,EAAkBrF,IAAI,GAAGA,IAAzB,CAAxB;;EACA,KAAK,IAAI6B,CAAC,GAAGsD,YAAY,GAAG,CAA5B,EAA+BtD,CAAC,GAAGuD,eAAe,CAACxD,MAAnD,EAA2DC,CAAC,EAA5D,EAAgE;IAC5D,IAAI,CAACuD,eAAe,CAACvD,CAAD,CAAf,CAAmBzC,UAAxB,EACI,OAAOyC,CAAP;EACP;;EACD,KAAK,IAAIA,GAAC,GAAG,CAAb,EAAgBA,GAAC,GAAGsD,YAApB,EAAkCtD,GAAC,EAAnC,EAAuC;IACnC,IAAI,CAACuD,eAAe,CAACvD,GAAD,CAAf,CAAmBzC,UAAxB,EACI,OAAOyC,GAAP;EACP;;EACD,OAAOsD,YAAP;AACH,CAXD;;eAYe9F,W"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"css.js","names":[],"sources":["live-control/style/index.js"],"sourcesContent":["import '../../controls/style';\nimport './index.less';\n"],"mappings":";;AAAA;;AACA"}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
.vtx-live-control {
|
|
2
|
+
display: -webkit-box;
|
|
3
|
+
display: -ms-flexbox;
|
|
4
|
+
display: flex;
|
|
5
|
+
-webkit-box-orient: vertical;
|
|
6
|
+
-webkit-box-direction: normal;
|
|
7
|
+
-ms-flex-direction: column;
|
|
8
|
+
flex-direction: column;
|
|
9
|
+
}
|
|
10
|
+
.vtx-live-control .player-grid-container {
|
|
11
|
+
display: grid;
|
|
12
|
+
-webkit-box-flex: 1;
|
|
13
|
+
-ms-flex-positive: 1;
|
|
14
|
+
flex-grow: 1;
|
|
15
|
+
grid-gap: 1px;
|
|
16
|
+
height: 0;
|
|
17
|
+
background-color: rgba(0, 0, 0, 0.8);
|
|
18
|
+
}
|
|
19
|
+
.vtx-live-control .player-grid-container._1 {
|
|
20
|
+
grid-template-rows: 1fr;
|
|
21
|
+
grid-template-columns: 1fr;
|
|
22
|
+
}
|
|
23
|
+
.vtx-live-control .player-grid-container._2 {
|
|
24
|
+
grid-template-rows: 1fr 1fr;
|
|
25
|
+
grid-template-columns: 1fr 1fr;
|
|
26
|
+
}
|
|
27
|
+
.vtx-live-control .player-grid-container._3 {
|
|
28
|
+
grid-template-rows: 1fr 1fr 1fr;
|
|
29
|
+
grid-template-columns: 1fr 1fr 1fr;
|
|
30
|
+
}
|
|
31
|
+
.vtx-live-control .player-grid-container .grid-item-container {
|
|
32
|
+
display: -webkit-box;
|
|
33
|
+
display: -ms-flexbox;
|
|
34
|
+
display: flex;
|
|
35
|
+
-webkit-box-orient: vertical;
|
|
36
|
+
-webkit-box-direction: normal;
|
|
37
|
+
-ms-flex-direction: column;
|
|
38
|
+
flex-direction: column;
|
|
39
|
+
min-width: 0;
|
|
40
|
+
min-height: 0;
|
|
41
|
+
background-color: #2b3d51;
|
|
42
|
+
background-image: url('../images/empty.png');
|
|
43
|
+
background-repeat: no-repeat;
|
|
44
|
+
background-position: center;
|
|
45
|
+
}
|
|
46
|
+
.vtx-live-control .player-grid-container .grid-item-container.active {
|
|
47
|
+
-webkit-box-shadow: 0 0 0 1px #52c41a;
|
|
48
|
+
box-shadow: 0 0 0 1px #52c41a;
|
|
49
|
+
}
|
|
50
|
+
.vtx-live-control .player-grid-container .grid-item-container > .content {
|
|
51
|
+
-webkit-box-flex: 1;
|
|
52
|
+
-ms-flex-positive: 1;
|
|
53
|
+
flex-grow: 1;
|
|
54
|
+
height: 0;
|
|
55
|
+
}
|
|
56
|
+
.vtx-live-control .controls {
|
|
57
|
+
display: -webkit-box;
|
|
58
|
+
display: -ms-flexbox;
|
|
59
|
+
display: flex;
|
|
60
|
+
-webkit-box-align: center;
|
|
61
|
+
-ms-flex-align: center;
|
|
62
|
+
align-items: center;
|
|
63
|
+
width: 100%;
|
|
64
|
+
height: 32px;
|
|
65
|
+
padding: 0 12px;
|
|
66
|
+
background-color: #243241;
|
|
67
|
+
}
|
|
68
|
+
.vtx-live-control .controls .right {
|
|
69
|
+
margin-left: auto;
|
|
70
|
+
}
|
|
71
|
+
.vtx-live-control .controls .right > div {
|
|
72
|
+
height: 24px;
|
|
73
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","names":[],"sources":["live-control/style/index.js"],"sourcesContent":["import '../../controls/style';\nimport './index.less';\n"],"mappings":";;AAAA;;AACA"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
.vtx-live-control {
|
|
2
|
+
display: flex;
|
|
3
|
+
flex-direction: column;
|
|
4
|
+
|
|
5
|
+
.player-grid-container {
|
|
6
|
+
display: grid;
|
|
7
|
+
flex-grow: 1;
|
|
8
|
+
grid-gap: 1px;
|
|
9
|
+
height: 0;
|
|
10
|
+
background-color: rgba(0 ,0 ,0 , .8);
|
|
11
|
+
|
|
12
|
+
&._1 {
|
|
13
|
+
grid-template-rows: 1fr;
|
|
14
|
+
grid-template-columns: 1fr;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
&._2 {
|
|
18
|
+
grid-template-rows: 1fr 1fr;
|
|
19
|
+
grid-template-columns: 1fr 1fr;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
&._3 {
|
|
23
|
+
grid-template-rows: 1fr 1fr 1fr;
|
|
24
|
+
grid-template-columns: 1fr 1fr 1fr;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
.grid-item-container {
|
|
28
|
+
display: flex;
|
|
29
|
+
flex-direction: column;
|
|
30
|
+
min-width: 0;
|
|
31
|
+
min-height: 0;
|
|
32
|
+
background-color: #2b3d51;
|
|
33
|
+
background-image: url('../images/empty.png');
|
|
34
|
+
background-repeat: no-repeat;
|
|
35
|
+
background-position: center;
|
|
36
|
+
|
|
37
|
+
&.active {
|
|
38
|
+
box-shadow: 0 0 0 1px #52c41a;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
> .content {
|
|
42
|
+
flex-grow: 1;
|
|
43
|
+
height: 0;
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
.controls {
|
|
49
|
+
display: flex;
|
|
50
|
+
align-items: center;
|
|
51
|
+
width: 100%;
|
|
52
|
+
height: 32px;
|
|
53
|
+
padding: 0 12px;
|
|
54
|
+
background-color: #243241;
|
|
55
|
+
|
|
56
|
+
.right {
|
|
57
|
+
margin-left: auto;
|
|
58
|
+
|
|
59
|
+
> div {
|
|
60
|
+
height: 24px;
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
|
|
@@ -1,7 +1,5 @@
|
|
|
1
|
-
|
|
2
|
-
import '
|
|
3
|
-
import { CloudControlPanelProps } from '@/components/controls';
|
|
4
|
-
import { VideoType } from '@/components/player';
|
|
1
|
+
import { CloudControlPanelProps } from '../controls';
|
|
2
|
+
import { VideoType } from '../player';
|
|
5
3
|
interface VtxPlayerProps {
|
|
6
4
|
/** 视频流地址 */
|
|
7
5
|
url: string;
|
|
@@ -17,6 +15,10 @@ interface VtxPlayerProps {
|
|
|
17
15
|
talkUrl?: string;
|
|
18
16
|
/** 云台控制 */
|
|
19
17
|
cloudParams?: CloudControlPanelProps;
|
|
18
|
+
/** 是否展示信息 */
|
|
19
|
+
showInfo?: boolean | 'leftTop' | 'leftBottom' | 'rightTop' | 'rightBottom';
|
|
20
|
+
/** 信息 */
|
|
21
|
+
info?: Array<Array<string>>;
|
|
20
22
|
}
|
|
21
23
|
export declare const LivePlayer: (props: VtxPlayerProps) => JSX.Element;
|
|
22
24
|
export default LivePlayer;
|