@vtx/player 0.0.29 → 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 +26 -2
  112. package/lib/utils/index.js.map +1 -1
  113. package/package.json +1 -1
@@ -0,0 +1,477 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports["default"] = exports.HistoryControlV2Panel = void 0;
7
+
8
+ var _jsxRuntime = require("react/jsx-runtime");
9
+
10
+ var _react = require("react");
11
+
12
+ var _reactCollapsed = _interopRequireDefault(require("react-collapsed"));
13
+
14
+ var _api = require("../../../api");
15
+
16
+ var _icons = require("../../../icons");
17
+
18
+ var _utils = require("../../../utils");
19
+
20
+ var _context = require("../../context");
21
+
22
+ var _collapse = _interopRequireDefault(require("../../images/collapse.png"));
23
+
24
+ var _utils2 = require("../../utils");
25
+
26
+ var _ahooks = require("ahooks");
27
+
28
+ var _button = _interopRequireDefault(require("antd/lib/button"));
29
+
30
+ var _message = _interopRequireDefault(require("antd/lib/message"));
31
+
32
+ var _table = _interopRequireDefault(require("antd/lib/table"));
33
+
34
+ var _tooltip = _interopRequireDefault(require("antd/lib/tooltip"));
35
+
36
+ var _moment = _interopRequireDefault(require("moment"));
37
+
38
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
39
+
40
+ function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }
41
+
42
+ 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."); }
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 _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); }
47
+
48
+ function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }
49
+
50
+ 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; }
51
+
52
+ var HistoryControlV2Panel = /*#__PURE__*/(0, _react.forwardRef)(function (props, ref) {
53
+ var _useContext = (0, _react.useContext)(_context.historyControlV2Context),
54
+ channels = _useContext.channels,
55
+ setChannels = _useContext.setChannels,
56
+ setLoading = _useContext.setLoading,
57
+ activeIndex = _useContext.activeIndex,
58
+ setActiveIndex = _useContext.setActiveIndex,
59
+ timeLinePosition = _useContext.timeLinePosition;
60
+
61
+ var realChannels = channels.filter(function (item) {
62
+ return item.channelNum !== '';
63
+ });
64
+ var segmentsRef = (0, _react.useRef)(null);
65
+
66
+ var getRef = function getRef() {
67
+ return segmentsRef.current;
68
+ };
69
+
70
+ var onVideoClose = props.onVideoClose;
71
+
72
+ var _useCollapse = (0, _reactCollapsed["default"])({
73
+ defaultExpanded: false // 默认展开
74
+
75
+ }),
76
+ getCollapseProps = _useCollapse.getCollapseProps,
77
+ getToggleProps = _useCollapse.getToggleProps,
78
+ isExpanded = _useCollapse.isExpanded;
79
+
80
+ var _useRequest = (0, _ahooks.useRequest)(_api.getHistoryUrls, {
81
+ manual: true
82
+ }),
83
+ runAsync = _useRequest.runAsync;
84
+
85
+ var columns = [{
86
+ title: '序号',
87
+ dataIndex: 'index',
88
+ width: 50
89
+ }, {
90
+ title: '播放视频',
91
+ key: 'play',
92
+ width: 90,
93
+ render: function render(_, record, index) {
94
+ var _a;
95
+
96
+ var active = ((_a = channels === null || channels === void 0 ? void 0 : channels[activeIndex]) === null || _a === void 0 ? void 0 : _a.index) === index;
97
+ return (0, _jsxRuntime.jsx)(_button["default"], Object.assign({
98
+ className: "play-btn ".concat(active ? 'active' : ''),
99
+ onClick: function onClick() {
100
+ if (active) {
101
+ var newChannels = _toConsumableArray(channels);
102
+
103
+ newChannels[activeIndex].index = -1;
104
+ newChannels[activeIndex].startTime = '';
105
+ newChannels[activeIndex].endTime = '';
106
+ setChannels(newChannels);
107
+ onVideoClose && onVideoClose(newChannels[activeIndex]);
108
+ } else {
109
+ var _newChannels = _toConsumableArray(channels);
110
+
111
+ _newChannels[activeIndex].index = index;
112
+ _newChannels[activeIndex].startTime = record.beginTime;
113
+ _newChannels[activeIndex].endTime = record.endTime;
114
+ _newChannels[activeIndex].tagId = '';
115
+ _newChannels[activeIndex].url = record.url;
116
+ setChannels(_newChannels);
117
+ }
118
+ }
119
+ }, {
120
+ children: active ? (0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
121
+ children: [(0, _jsxRuntime.jsx)(_icons.VideoCloseIcon, {
122
+ active: true
123
+ }), "\u5173\u95ED"]
124
+ }) : (0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
125
+ children: [(0, _jsxRuntime.jsx)(_icons.VideoPlayIcon, {}), "\u64AD\u653E"]
126
+ })
127
+ }));
128
+ }
129
+ }, {
130
+ title: '设备名称',
131
+ dataIndex: 'deviceName'
132
+ }, {
133
+ title: '开始时间',
134
+ dataIndex: 'beginTime',
135
+ width: 170
136
+ }, {
137
+ title: '结束时间',
138
+ dataIndex: 'endTime',
139
+ width: 170
140
+ }, {
141
+ title: '持续时间',
142
+ width: 130,
143
+ dataIndex: 'duration'
144
+ }, {
145
+ title: '视频大小',
146
+ width: 110,
147
+ dataIndex: 'size'
148
+ }];
149
+
150
+ var loadData = function loadData(channel) {
151
+ setLoading(true);
152
+ runAsync({
153
+ deviceChannels: JSON.stringify(channel.deviceChannels),
154
+ protocol: channel.protocol,
155
+ beginTime: channel.beginTime,
156
+ endTime: channel.endTime,
157
+ token: (0, _utils.getUrlParam)('token')
158
+ }).then(function (res) {
159
+ if (Array.isArray(res)) {
160
+ if (res.length > 25) {
161
+ _message["default"].info('最多播放25个视频通道');
162
+ }
163
+
164
+ var newIds = _toConsumableArray(res).map(function (item) {
165
+ return "".concat(item.deviceId).concat(item.channelNum);
166
+ });
167
+
168
+ var newChannels = _toConsumableArray(channels);
169
+
170
+ channels.map(function (item, index) {
171
+ if (!newIds.includes("".concat(item.deviceId).concat(item.channelNum))) {
172
+ newChannels[index] = Object.assign({
173
+ channelIndex: index
174
+ }, _utils2.DEFAULT_PLAY_PARAMS);
175
+ }
176
+ });
177
+ res.filter(function (item, index) {
178
+ return index < 25;
179
+ }).map(function (item) {
180
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j;
181
+ /**
182
+ * 优化第一条数据的开始时间不要早于请求的开始时间
183
+ * 最后一条的结束时间不要晚于请求的结束时间
184
+ */
185
+
186
+
187
+ if ((0, _moment["default"])((_a = item.list) === null || _a === void 0 ? void 0 : _a[0].beginTime).diff((0, _moment["default"])(channel.beginTime), 'seconds') < 0) {
188
+ item.list[0].beginTime = channel.beginTime;
189
+ }
190
+
191
+ if ((0, _moment["default"])((_b = item.list) === null || _b === void 0 ? void 0 : _b[item.list.length - 1].endTime).diff((0, _moment["default"])(channel.endTime), 'seconds') > 0) {
192
+ item.list[item.list.length - 1].endTime = channel.endTime;
193
+ }
194
+
195
+ var result = (_c = newChannels.filter(function (citem) {
196
+ return citem.deviceId === item.deviceId && citem.channelNum === item.channelNum;
197
+ })) === null || _c === void 0 ? void 0 : _c[0];
198
+
199
+ if (result) {
200
+ var isClose = newChannels[result.channelIndex].index === -1 && newChannels[result.channelIndex].tagId === '';
201
+ newChannels[result.channelIndex] = Object.assign(Object.assign({}, newChannels[result.channelIndex]), {
202
+ // 如果当前既没有播放列表 又没有播放标签 再 开始以第一个播放
203
+ index: isClose ? 0 : newChannels[result.channelIndex].index,
204
+ startTime: isClose ? ((_e = (_d = item.list) === null || _d === void 0 ? void 0 : _d[0]) === null || _e === void 0 ? void 0 : _e.beginTime) || channel.beginTime : newChannels[result.channelIndex].startTime,
205
+ endTime: isClose ? ((_g = (_f = item.list) === null || _f === void 0 ? void 0 : _f[0]) === null || _g === void 0 ? void 0 : _g.beginTime) || channel.beginTime : newChannels[result.channelIndex].endTime
206
+ });
207
+ } else {
208
+ var channelIndex = (_j = (_h = newChannels.filter(function (item) {
209
+ return item.channelNum === '';
210
+ })) === null || _h === void 0 ? void 0 : _h[0]) === null || _j === void 0 ? void 0 : _j.channelIndex;
211
+
212
+ if (typeof channelIndex == 'number') {
213
+ newChannels[channelIndex] = Object.assign(Object.assign({}, newChannels[channelIndex]), (0, _utils2.getChannelData)(item, channel));
214
+ } else {
215
+ _message["default"].error('没有多余的播放位置');
216
+ }
217
+ }
218
+ });
219
+ setChannels(newChannels);
220
+ } else {
221
+ _message["default"].info('未查询到视频');
222
+ }
223
+
224
+ setLoading(false);
225
+ });
226
+ };
227
+
228
+ (0, _react.useImperativeHandle)(ref, function () {
229
+ return {
230
+ load: function load(channel) {
231
+ loadData(channel);
232
+ }
233
+ };
234
+ });
235
+ return (0, _jsxRuntime.jsx)(_jsxRuntime.Fragment, {
236
+ children: Array.isArray(realChannels) && realChannels.length > 0 ? (0, _jsxRuntime.jsxs)("div", Object.assign({
237
+ className: "collapse-controls"
238
+ }, {
239
+ children: [(0, _jsxRuntime.jsx)("div", Object.assign({
240
+ className: "action-bar"
241
+ }, getToggleProps({}), {
242
+ children: (0, _jsxRuntime.jsx)("img", {
243
+ src: _collapse["default"],
244
+ alt: "",
245
+ style: {
246
+ transform: "rotate(".concat(isExpanded ? 180 : 0, "deg)")
247
+ }
248
+ })
249
+ })), (0, _jsxRuntime.jsx)("section", Object.assign({
250
+ className: "collapse-panel-container"
251
+ }, getCollapseProps(), {
252
+ children: (0, _jsxRuntime.jsxs)("div", Object.assign({
253
+ className: "panels"
254
+ }, {
255
+ children: [(0, _jsxRuntime.jsxs)("div", Object.assign({
256
+ className: "time-panel"
257
+ }, {
258
+ children: [(0, _jsxRuntime.jsxs)("div", Object.assign({
259
+ className: "segments",
260
+ ref: segmentsRef
261
+ }, {
262
+ children: [(0, _jsxRuntime.jsx)(TimeVerticalLine, {
263
+ getRef: getRef,
264
+ history: channels === null || channels === void 0 ? void 0 : channels[activeIndex].segmentData,
265
+ onClick: function onClick(index, startTime, endTime) {
266
+ var newChannels = _toConsumableArray(channels);
267
+
268
+ newChannels[activeIndex] = Object.assign(Object.assign({}, newChannels[activeIndex]), {
269
+ index: index,
270
+ startTime: (0, _moment["default"])(startTime).format(_utils.TimeFormat.params),
271
+ endTime: (0, _moment["default"])(endTime).format(_utils.TimeFormat.params),
272
+ tagId: ''
273
+ });
274
+ setChannels(newChannels);
275
+ }
276
+ }), getSegments(channels === null || channels === void 0 ? void 0 : channels[activeIndex].segmentData)]
277
+ })), timeLinePosition >= 0 && (0, _jsxRuntime.jsx)(_icons.TimePositionIcon, {
278
+ className: "time-line-icon",
279
+ style: {
280
+ left: "".concat(timeLinePosition, "%")
281
+ }
282
+ }), (0, _jsxRuntime.jsx)(TimeLine, {})]
283
+ })), (0, _jsxRuntime.jsxs)("div", Object.assign({
284
+ style: {
285
+ display: 'flex'
286
+ }
287
+ }, {
288
+ children: [(0, _jsxRuntime.jsxs)("div", Object.assign({
289
+ className: "panels-left"
290
+ }, {
291
+ children: [(0, _jsxRuntime.jsxs)("div", Object.assign({
292
+ className: "panels-left-title"
293
+ }, {
294
+ children: ["\u89C6\u9891\u901A\u9053(", realChannels.length, ")"]
295
+ })), (0, _jsxRuntime.jsx)("div", Object.assign({
296
+ className: "panels-left-wrap"
297
+ }, {
298
+ children: realChannels.map(function (item, index) {
299
+ return (0, _jsxRuntime.jsx)("div", Object.assign({
300
+ className: "".concat(activeIndex == index ? 'panels-left-content-active' : '', " panels-left-content"),
301
+ onClick: function onClick() {
302
+ setActiveIndex(item.channelIndex);
303
+ }
304
+ }, {
305
+ children: (0, _jsxRuntime.jsx)(_tooltip["default"], Object.assign({
306
+ title: "".concat(item.channelName)
307
+ }, {
308
+ children: "".concat(item.channelName)
309
+ }))
310
+ }), "".concat(item.deviceId).concat(item.channelNum));
311
+ })
312
+ }))]
313
+ })), (0, _jsxRuntime.jsx)("div", Object.assign({
314
+ className: "urls-panel",
315
+ style: {
316
+ flex: 1,
317
+ overflow: 'hidden',
318
+ width: "100%"
319
+ }
320
+ }, {
321
+ children: (0, _jsxRuntime.jsx)(_table["default"], {
322
+ className: "history-url-table",
323
+ columns: columns,
324
+ dataSource: (channels === null || channels === void 0 ? void 0 : channels[activeIndex].tableList) || [],
325
+ scroll: {
326
+ y: 100
327
+ },
328
+ pagination: false,
329
+ rowKey: function rowKey() {
330
+ return (0, _utils.guid)();
331
+ },
332
+ rowClassName: function rowClassName(_, index) {
333
+ var _a;
334
+
335
+ return index === ((_a = channels === null || channels === void 0 ? void 0 : channels[activeIndex]) === null || _a === void 0 ? void 0 : _a.index) ? 'active' : '';
336
+ }
337
+ })
338
+ }))]
339
+ }))]
340
+ }))
341
+ }))]
342
+ })) : null
343
+ });
344
+ });
345
+ exports.HistoryControlV2Panel = HistoryControlV2Panel;
346
+
347
+ var TimeLine = function TimeLine() {
348
+ var getSplitLines = function getSplitLines() {
349
+ var result = [];
350
+ var step = 100 / 24;
351
+
352
+ for (var i = 0; i < 25; i++) {
353
+ var element = (0, _jsxRuntime.jsx)("div", Object.assign({
354
+ className: "line",
355
+ style: {
356
+ left: "".concat(step * i, "%")
357
+ }
358
+ }, {
359
+ children: (0, _jsxRuntime.jsx)("div", Object.assign({
360
+ className: "number"
361
+ }, {
362
+ children: i >= 10 ? i : '0' + i
363
+ }))
364
+ }), i);
365
+ result.push(element);
366
+ }
367
+
368
+ return result;
369
+ };
370
+
371
+ return (0, _jsxRuntime.jsxs)("div", Object.assign({
372
+ className: "time-axis"
373
+ }, {
374
+ children: [(0, _jsxRuntime.jsx)("div", {
375
+ className: "axis"
376
+ }), (0, _jsxRuntime.jsx)("div", Object.assign({
377
+ className: "split-lines"
378
+ }, {
379
+ children: getSplitLines()
380
+ }))]
381
+ }));
382
+ };
383
+
384
+ var ONEDAY_MILL = 24 * 60 * 60 * 1000;
385
+
386
+ var TimeVerticalLine = function TimeVerticalLine(_ref) {
387
+ var getRef = _ref.getRef,
388
+ history = _ref.history,
389
+ _onClick = _ref.onClick;
390
+
391
+ var _a;
392
+
393
+ var mouse = (0, _ahooks.useMouse)(getRef());
394
+ var elementX = mouse.elementX,
395
+ elementY = mouse.elementY,
396
+ elementW = mouse.elementW,
397
+ elementH = mouse.elementH;
398
+ var visible = elementX >= 0 && elementY >= 0 && elementX <= elementW && elementY <= elementH; // 计算elementX在整个宽度的占比,根据占比在一天中的比例算出具体时间,最后判断这个时间是否在某段视频中。在则显示提示时间。
399
+
400
+ var percent = elementX / elementW;
401
+ var time = (0, _moment["default"])((0, _moment["default"])(history.start).valueOf() + percent * ONEDAY_MILL).format(_utils.TimeFormat.params);
402
+ var flag = false,
403
+ playStart = -1,
404
+ playEnd = -1,
405
+ index = -1;
406
+ var now = (0, _moment["default"])(time).valueOf();
407
+
408
+ for (var i = 0; i < ((_a = history.list) === null || _a === void 0 ? void 0 : _a.length); i++) {
409
+ var begin = (0, _moment["default"])(history.list[i].beginTime).valueOf(),
410
+ end = (0, _moment["default"])(history.list[i].endTime).valueOf();
411
+
412
+ if (now >= begin && now <= end) {
413
+ index = i; // url = history.list[i].playbackUrl;
414
+
415
+ playStart = now;
416
+ playEnd = end;
417
+ flag = true;
418
+ break;
419
+ }
420
+ }
421
+
422
+ return visible ? flag ? (0, _jsxRuntime.jsx)(_tooltip["default"], Object.assign({
423
+ title: time
424
+ }, {
425
+ children: (0, _jsxRuntime.jsx)("div", {
426
+ className: "timeline",
427
+ style: {
428
+ left: elementX
429
+ },
430
+ onClick: function onClick() {
431
+ return _onClick(index, playStart, playEnd);
432
+ }
433
+ })
434
+ })) : (0, _jsxRuntime.jsx)("div", {
435
+ className: "timeline",
436
+ style: {
437
+ left: elementX
438
+ },
439
+ onClick: function onClick() {
440
+ return _onClick(index, playStart, playEnd);
441
+ }
442
+ }) : (0, _jsxRuntime.jsx)(_jsxRuntime.Fragment, {});
443
+ };
444
+
445
+ var getSegments = function getSegments(props) {
446
+ var _props$list = props.list,
447
+ list = _props$list === void 0 ? [] : _props$list,
448
+ start = props.start,
449
+ end = props.end;
450
+ var startTime = (0, _moment["default"])(start);
451
+ var endTime = (0, _moment["default"])(end);
452
+ var total = endTime.diff(startTime, 'seconds'); // 总时间
453
+
454
+ var result = list === null || list === void 0 ? void 0 : list.map(function (i) {
455
+ var itemStart = (0, _moment["default"])(i.beginTime).diff(startTime, 'seconds') > 0 ? (0, _moment["default"])(i.beginTime) : startTime;
456
+ var itemEnd = (0, _moment["default"])(i.endTime);
457
+ var itemTotal = itemEnd.diff(itemStart, 'seconds'); // 分段总时间
458
+
459
+ var width = itemTotal / total * 100; // 分段时间占总时间百分比
460
+
461
+ var left = itemStart.diff(startTime, 'seconds') / total * 100; // 分段其实时间
462
+
463
+ return (0, _jsxRuntime.jsx)("div", {
464
+ className: "segment",
465
+ style: {
466
+ width: "".concat(width, "%"),
467
+ left: "".concat(left < 0 ? 0 : left, "%")
468
+ }
469
+ }, i.beginTime);
470
+ });
471
+ return result;
472
+ };
473
+
474
+ HistoryControlV2Panel.displayName = 'HistoryControlV2Panel';
475
+ var _default = HistoryControlV2Panel;
476
+ exports["default"] = _default;
477
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","names":["HistoryControlV2Panel","forwardRef","props","ref","useContext","historyControlV2Context","channels","setChannels","setLoading","activeIndex","setActiveIndex","timeLinePosition","realChannels","filter","item","channelNum","segmentsRef","useRef","getRef","current","onVideoClose","useCollapse","defaultExpanded","getCollapseProps","getToggleProps","isExpanded","useRequest","getHistoryUrls","manual","runAsync","columns","title","dataIndex","width","key","render","_","record","index","_a","active","_jsx","Button","Object","assign","className","onClick","newChannels","startTime","endTime","beginTime","tagId","url","children","_jsxs","_Fragment","VideoCloseIcon","VideoPlayIcon","loadData","channel","deviceChannels","JSON","stringify","protocol","token","getUrlParam","then","res","Array","isArray","length","message","info","newIds","map","deviceId","includes","channelIndex","DEFAULT_PLAY_PARAMS","_b","_c","_d","_e","_f","_g","_h","_j","moment","list","diff","result","citem","isClose","getChannelData","error","useImperativeHandle","load","src","collapseBtnImg","alt","style","transform","TimeVerticalLine","history","segmentData","format","TimeFormat","params","getSegments","TimePositionIcon","left","TimeLine","display","Tooltip","channelName","flex","overflow","Table","dataSource","tableList","scroll","y","pagination","rowKey","guid","rowClassName","getSplitLines","step","i","element","push","ONEDAY_MILL","mouse","useMouse","elementX","elementY","elementW","elementH","visible","percent","time","start","valueOf","flag","playStart","playEnd","now","begin","end","total","itemStart","itemEnd","itemTotal","displayName"],"sources":["history-control-v2/components/panel/index.js"],"sourcesContent":["import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport { forwardRef, useContext, useImperativeHandle, useRef } from 'react';\nimport useCollapse from 'react-collapsed';\nimport { getHistoryUrls } from '../../../api';\nimport { TimePositionIcon, VideoCloseIcon, VideoPlayIcon } from '../../../icons';\nimport { TimeFormat, guid, getUrlParam } from '../../../utils';\nimport { historyControlV2Context } from '../../context';\nimport collapseBtnImg from '../../images/collapse.png';\nimport { DEFAULT_PLAY_PARAMS, getChannelData } from '../../utils';\nimport { useMouse, useRequest } from 'ahooks';\nimport Button from 'antd/lib/button';\nimport message from 'antd/lib/message';\nimport Table from 'antd/lib/table';\nimport Tooltip from 'antd/lib/tooltip';\nimport moment from 'moment';\nexport const HistoryControlV2Panel = forwardRef((props, ref) => {\n const { channels, setChannels, setLoading, activeIndex, setActiveIndex, timeLinePosition } = useContext(historyControlV2Context);\n const realChannels = channels.filter(item => item.channelNum !== '');\n const segmentsRef = useRef(null);\n const getRef = () => {\n return segmentsRef.current;\n };\n const { onVideoClose } = props;\n const { getCollapseProps, getToggleProps, isExpanded } = useCollapse({\n defaultExpanded: false, // 默认展开\n });\n const { runAsync } = useRequest(getHistoryUrls, {\n manual: true,\n });\n const columns = [\n {\n title: '序号',\n dataIndex: 'index',\n width: 50,\n },\n {\n title: '播放视频',\n key: 'play',\n width: 90,\n render: (_, record, index) => {\n var _a;\n const active = ((_a = channels === null || channels === void 0 ? void 0 : channels[activeIndex]) === null || _a === void 0 ? void 0 : _a.index) === index;\n return (_jsx(Button, Object.assign({ className: `play-btn ${active ? 'active' : ''}`, onClick: () => {\n if (active) {\n const newChannels = [...channels];\n newChannels[activeIndex].index = -1;\n newChannels[activeIndex].startTime = '';\n newChannels[activeIndex].endTime = '';\n setChannels(newChannels);\n onVideoClose && onVideoClose(newChannels[activeIndex]);\n }\n else {\n const newChannels = [...channels];\n newChannels[activeIndex].index = index;\n newChannels[activeIndex].startTime = record.beginTime;\n newChannels[activeIndex].endTime = record.endTime;\n newChannels[activeIndex].tagId = '';\n newChannels[activeIndex].url = record.url;\n setChannels(newChannels);\n }\n } }, { children: active ? (_jsxs(_Fragment, { children: [_jsx(VideoCloseIcon, { active: true }), \"\\u5173\\u95ED\"] })) : (_jsxs(_Fragment, { children: [_jsx(VideoPlayIcon, {}), \"\\u64AD\\u653E\"] })) })));\n },\n },\n {\n title: '设备名称',\n dataIndex: 'deviceName',\n },\n {\n title: '开始时间',\n dataIndex: 'beginTime',\n width: 170,\n },\n {\n title: '结束时间',\n dataIndex: 'endTime',\n width: 170,\n },\n {\n title: '持续时间',\n width: 130,\n dataIndex: 'duration',\n },\n {\n title: '视频大小',\n width: 110,\n dataIndex: 'size',\n },\n ];\n const loadData = (channel) => {\n setLoading(true);\n runAsync({\n deviceChannels: JSON.stringify(channel.deviceChannels),\n protocol: channel.protocol,\n beginTime: channel.beginTime,\n endTime: channel.endTime,\n token: getUrlParam('token')\n }).then((res) => {\n if (Array.isArray(res)) {\n if (res.length > 25) {\n message.info('最多播放25个视频通道');\n }\n const newIds = [...res].map((item) => { return `${item.deviceId}${item.channelNum}`; });\n const newChannels = [...channels];\n channels.map((item, index) => {\n if (!newIds.includes(`${item.deviceId}${item.channelNum}`)) {\n newChannels[index] = Object.assign({ channelIndex: index }, DEFAULT_PLAY_PARAMS);\n }\n });\n res.filter((item, index) => index < 25)\n .map((item) => {\n var _a, _b, _c, _d, _e, _f, _g, _h, _j;\n /**\n * 优化第一条数据的开始时间不要早于请求的开始时间\n * 最后一条的结束时间不要晚于请求的结束时间\n */\n if (moment((_a = item.list) === null || _a === void 0 ? void 0 : _a[0].beginTime).diff(moment(channel.beginTime), 'seconds') < 0) {\n item.list[0].beginTime = channel.beginTime;\n }\n if (moment((_b = item.list) === null || _b === void 0 ? void 0 : _b[item.list.length - 1].endTime).diff(moment(channel.endTime), 'seconds') > 0) {\n item.list[item.list.length - 1].endTime = channel.endTime;\n }\n const result = (_c = newChannels.filter((citem) => citem.deviceId === item.deviceId && citem.channelNum === item.channelNum)) === null || _c === void 0 ? void 0 : _c[0];\n if (result) {\n const isClose = newChannels[result.channelIndex].index === -1 && newChannels[result.channelIndex].tagId === '';\n newChannels[result.channelIndex] = Object.assign(Object.assign({}, newChannels[result.channelIndex]), { \n // 如果当前既没有播放列表 又没有播放标签 再 开始以第一个播放\n index: isClose ? 0 : newChannels[result.channelIndex].index, startTime: isClose ? ((_e = (_d = item.list) === null || _d === void 0 ? void 0 : _d[0]) === null || _e === void 0 ? void 0 : _e.beginTime) || channel.beginTime : newChannels[result.channelIndex].startTime, endTime: isClose ? ((_g = (_f = item.list) === null || _f === void 0 ? void 0 : _f[0]) === null || _g === void 0 ? void 0 : _g.beginTime) || channel.beginTime : newChannels[result.channelIndex].endTime });\n }\n else {\n const channelIndex = (_j = (_h = newChannels.filter((item) => item.channelNum === '')) === null || _h === void 0 ? void 0 : _h[0]) === null || _j === void 0 ? void 0 : _j.channelIndex;\n if (typeof channelIndex == 'number') {\n newChannels[channelIndex] = Object.assign(Object.assign({}, newChannels[channelIndex]), getChannelData(item, channel));\n }\n else {\n message.error('没有多余的播放位置');\n }\n }\n });\n setChannels(newChannels);\n }\n else {\n message.info('未查询到视频');\n }\n setLoading(false);\n });\n };\n useImperativeHandle(ref, () => {\n return {\n load: (channel) => {\n loadData(channel);\n },\n };\n });\n return (_jsx(_Fragment, { children: Array.isArray(realChannels) && realChannels.length > 0 ? (_jsxs(\"div\", Object.assign({ className: \"collapse-controls\" }, { children: [_jsx(\"div\", Object.assign({ className: \"action-bar\" }, getToggleProps({}), { children: _jsx(\"img\", { src: collapseBtnImg, alt: \"\", style: { transform: `rotate(${isExpanded ? 180 : 0}deg)` } }) })), _jsx(\"section\", Object.assign({ className: \"collapse-panel-container\" }, getCollapseProps(), { children: _jsxs(\"div\", Object.assign({ className: \"panels\" }, { children: [_jsxs(\"div\", Object.assign({ className: \"time-panel\" }, { children: [_jsxs(\"div\", Object.assign({ className: \"segments\", ref: segmentsRef }, { children: [_jsx(TimeVerticalLine, { getRef: getRef, history: channels === null || channels === void 0 ? void 0 : channels[activeIndex].segmentData, onClick: (index, startTime, endTime) => {\n const newChannels = [...channels];\n newChannels[activeIndex] = Object.assign(Object.assign({}, newChannels[activeIndex]), { index, startTime: moment(startTime).format(TimeFormat.params), endTime: moment(endTime).format(TimeFormat.params), tagId: '' });\n setChannels(newChannels);\n } }), getSegments(channels === null || channels === void 0 ? void 0 : channels[activeIndex].segmentData)] })), timeLinePosition >= 0 && (_jsx(TimePositionIcon, { className: \"time-line-icon\", style: {\n left: `${timeLinePosition}%`,\n } })), _jsx(TimeLine, {})] })), _jsxs(\"div\", Object.assign({ style: { display: 'flex' } }, { children: [_jsxs(\"div\", Object.assign({ className: \"panels-left\" }, { children: [_jsxs(\"div\", Object.assign({ className: \"panels-left-title\" }, { children: [\"\\u89C6\\u9891\\u901A\\u9053(\", realChannels.length, \")\"] })), _jsx(\"div\", Object.assign({ className: \"panels-left-wrap\" }, { children: realChannels.map((item, index) => {\n return (_jsx(\"div\", Object.assign({ className: `${activeIndex == index\n ? 'panels-left-content-active'\n : ''} panels-left-content`, onClick: () => {\n setActiveIndex(item.channelIndex);\n } }, { children: _jsx(Tooltip, Object.assign({ title: `${item.channelName}` }, { children: `${item.channelName}` })) }), `${item.deviceId}${item.channelNum}`));\n }) }))] })), _jsx(\"div\", Object.assign({ className: \"urls-panel\", style: { flex: 1, overflow: 'hidden', width: `100%` } }, { children: _jsx(Table, { className: \"history-url-table\", columns: columns, dataSource: (channels === null || channels === void 0 ? void 0 : channels[activeIndex].tableList) || [], scroll: { y: 100 }, pagination: false, rowKey: () => {\n return guid();\n }, rowClassName: (_, index) => { var _a; return index === ((_a = channels === null || channels === void 0 ? void 0 : channels[activeIndex]) === null || _a === void 0 ? void 0 : _a.index) ? 'active' : ''; } }) }))] }))] })) }))] }))) : null }));\n});\nconst TimeLine = () => {\n const getSplitLines = () => {\n const result = [];\n const step = 100 / 24;\n for (let i = 0; i < 25; i++) {\n const element = (_jsx(\"div\", Object.assign({ className: \"line\", style: { left: `${step * i}%` } }, { children: _jsx(\"div\", Object.assign({ className: \"number\" }, { children: i >= 10 ? i : '0' + i })) }), i));\n result.push(element);\n }\n return result;\n };\n return (_jsxs(\"div\", Object.assign({ className: \"time-axis\" }, { children: [_jsx(\"div\", { className: \"axis\" }), _jsx(\"div\", Object.assign({ className: \"split-lines\" }, { children: getSplitLines() }))] })));\n};\nconst ONEDAY_MILL = 24 * 60 * 60 * 1000;\nconst TimeVerticalLine = ({ getRef, history, onClick }) => {\n var _a;\n const mouse = useMouse(getRef());\n const { elementX, elementY, elementW, elementH } = mouse;\n const visible = elementX >= 0 && elementY >= 0 && elementX <= elementW && elementY <= elementH;\n // 计算elementX在整个宽度的占比,根据占比在一天中的比例算出具体时间,最后判断这个时间是否在某段视频中。在则显示提示时间。\n const percent = elementX / elementW;\n const time = moment(moment(history.start).valueOf() + percent * ONEDAY_MILL).format(TimeFormat.params);\n let flag = false, playStart = -1, playEnd = -1, index = -1;\n const now = moment(time).valueOf();\n for (let i = 0; i < ((_a = history.list) === null || _a === void 0 ? void 0 : _a.length); i++) {\n const begin = moment(history.list[i].beginTime).valueOf(), end = moment(history.list[i].endTime).valueOf();\n if (now >= begin && now <= end) {\n index = i;\n // url = history.list[i].playbackUrl;\n playStart = now;\n playEnd = end;\n flag = true;\n break;\n }\n }\n return visible ? (flag ? (_jsx(Tooltip, Object.assign({ title: time }, { children: _jsx(\"div\", { className: \"timeline\", style: { left: elementX }, onClick: () => onClick(index, playStart, playEnd) }) }))) : (_jsx(\"div\", { className: \"timeline\", style: { left: elementX }, onClick: () => onClick(index, playStart, playEnd) }))) : (_jsx(_Fragment, {}));\n};\nconst getSegments = (props) => {\n const { list = [], start, end } = props;\n const startTime = moment(start);\n const endTime = moment(end);\n const total = endTime.diff(startTime, 'seconds'); // 总时间\n const result = list === null || list === void 0 ? void 0 : list.map((i) => {\n const itemStart = moment(i.beginTime).diff(startTime, 'seconds') > 0 ? moment(i.beginTime) : startTime;\n const itemEnd = moment(i.endTime);\n const itemTotal = itemEnd.diff(itemStart, 'seconds'); // 分段总时间\n const width = (itemTotal / total) * 100; // 分段时间占总时间百分比\n const left = (itemStart.diff(startTime, 'seconds') / total) * 100; // 分段其实时间\n return (_jsx(\"div\", { className: \"segment\", style: { width: `${width}%`, left: `${left < 0 ? 0 : left}%` } }, i.beginTime));\n });\n return result;\n};\nHistoryControlV2Panel.displayName = 'HistoryControlV2Panel';\nexport default HistoryControlV2Panel;\n"],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ /// <reference types="react" />
2
+ import { IChannel } from './interface';
3
+ export interface ContextProps {
4
+ /** 通道信息 */
5
+ channels: IChannel[];
6
+ setChannels: (channels: IChannel[]) => void;
7
+ /** loading */
8
+ loading: boolean;
9
+ setLoading: (loading: boolean) => void;
10
+ /** 当前选中 */
11
+ activeIndex: number;
12
+ setActiveIndex: (activeIndex: number) => void;
13
+ /** 时间轴的位置 */
14
+ timeLinePosition: number;
15
+ setTimeLinePosition: (timeLinePosition: number) => void;
16
+ }
17
+ export declare const historyControlV2Context: import("react").Context<ContextProps>;
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.historyControlV2Context = void 0;
7
+
8
+ var _react = require("react");
9
+
10
+ var historyControlV2Context = /*#__PURE__*/(0, _react.createContext)({});
11
+ exports.historyControlV2Context = historyControlV2Context;
12
+ //# sourceMappingURL=context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context.js","names":["historyControlV2Context","createContext"],"sources":["history-control-v2/context.js"],"sourcesContent":["import { createContext } from 'react';\nexport const historyControlV2Context = createContext({});\n"],"mappings":";;;;;;;AAAA;;AACO,IAAMA,uBAAuB,gBAAG,IAAAC,oBAAA,EAAc,EAAd,CAAhC"}
@@ -0,0 +1,11 @@
1
+ /// <reference types="react" />
2
+ import { IChannel, IHistoryControlProps, IHistoryControlV2Handle, IGetHistoryUrlParams, IHistoryPlayInfoParams } from './interface';
3
+ export declare type HistoryControlV2Handle = IHistoryControlV2Handle;
4
+ export declare type HistoryPlayInfoParams = IHistoryPlayInfoParams;
5
+ export declare type GetHistoryUrlParams = IGetHistoryUrlParams;
6
+ export declare type Channel = IChannel;
7
+ /**
8
+ * 历史视频控制器
9
+ */
10
+ export declare const HistoryControlV2: import("react").ForwardRefExoticComponent<IHistoryControlProps & import("react").RefAttributes<IHistoryControlV2Handle>>;
11
+ export default HistoryControlV2;