stormcloud-video-player 0.7.9 → 0.7.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -7,6 +7,25 @@ function _array_like_to_array(arr, len) {
7
7
  function _array_with_holes(arr) {
8
8
  if (Array.isArray(arr)) return arr;
9
9
  }
10
+ function _array_without_holes(arr) {
11
+ if (Array.isArray(arr)) return _array_like_to_array(arr);
12
+ }
13
+ function _define_property(obj, key, value) {
14
+ if (key in obj) {
15
+ Object.defineProperty(obj, key, {
16
+ value: value,
17
+ enumerable: true,
18
+ configurable: true,
19
+ writable: true
20
+ });
21
+ } else {
22
+ obj[key] = value;
23
+ }
24
+ return obj;
25
+ }
26
+ function _iterable_to_array(iter) {
27
+ if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter);
28
+ }
10
29
  function _iterable_to_array_limit(arr, i) {
11
30
  var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"];
12
31
  if (_i == null) return;
@@ -34,9 +53,54 @@ function _iterable_to_array_limit(arr, i) {
34
53
  function _non_iterable_rest() {
35
54
  throw new TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
36
55
  }
56
+ function _non_iterable_spread() {
57
+ throw new TypeError("Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
58
+ }
59
+ function _object_spread(target) {
60
+ for(var i = 1; i < arguments.length; i++){
61
+ var source = arguments[i] != null ? arguments[i] : {};
62
+ var ownKeys = Object.keys(source);
63
+ if (typeof Object.getOwnPropertySymbols === "function") {
64
+ ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym) {
65
+ return Object.getOwnPropertyDescriptor(source, sym).enumerable;
66
+ }));
67
+ }
68
+ ownKeys.forEach(function(key) {
69
+ _define_property(target, key, source[key]);
70
+ });
71
+ }
72
+ return target;
73
+ }
74
+ function ownKeys(object, enumerableOnly) {
75
+ var keys = Object.keys(object);
76
+ if (Object.getOwnPropertySymbols) {
77
+ var symbols = Object.getOwnPropertySymbols(object);
78
+ if (enumerableOnly) {
79
+ symbols = symbols.filter(function(sym) {
80
+ return Object.getOwnPropertyDescriptor(object, sym).enumerable;
81
+ });
82
+ }
83
+ keys.push.apply(keys, symbols);
84
+ }
85
+ return keys;
86
+ }
87
+ function _object_spread_props(target, source) {
88
+ source = source != null ? source : {};
89
+ if (Object.getOwnPropertyDescriptors) {
90
+ Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));
91
+ } else {
92
+ ownKeys(Object(source)).forEach(function(key) {
93
+ Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
94
+ });
95
+ }
96
+ return target;
97
+ }
37
98
  function _sliced_to_array(arr, i) {
38
99
  return _array_with_holes(arr) || _iterable_to_array_limit(arr, i) || _unsupported_iterable_to_array(arr, i) || _non_iterable_rest();
39
100
  }
101
+ function _to_consumable_array(arr) {
102
+ return _array_without_holes(arr) || _iterable_to_array(arr) || _unsupported_iterable_to_array(arr) || _non_iterable_spread();
103
+ }
40
104
  function _type_of(obj) {
41
105
  "@swc/helpers - typeof";
42
106
  return obj && typeof Symbol !== "undefined" && obj.constructor === Symbol ? "symbol" : typeof obj;
@@ -1133,10 +1197,13 @@ function hexToRgb(hex) {
1133
1197
  var num = parseInt(clean.length === 3 ? clean.replace(/./g, "$&$&") : clean, 16);
1134
1198
  return "".concat(num >> 16 & 255, ",").concat(num >> 8 & 255, ",").concat(num & 255);
1135
1199
  }
1200
+ var FADE_DURATION_MS = 1e3;
1136
1201
  var OverlayRenderer = function OverlayRenderer(param) {
1137
1202
  var overlays = param.overlays, currentTime = param.currentTime, videoRef = param.videoRef, coordinateSpace = param.coordinateSpace;
1138
1203
  var _ref = _sliced_to_array((0, import_react.useState)(null), 2), dims = _ref[0], setDims = _ref[1];
1139
1204
  var rafRef = (0, import_react.useRef)(null);
1205
+ var _ref1 = _sliced_to_array((0, import_react.useState)(/* @__PURE__ */ new Map()), 2), fadeMap = _ref1[0], setFadeMap = _ref1[1];
1206
+ var removeTimers = (0, import_react.useRef)(/* @__PURE__ */ new Map());
1140
1207
  var updateDims = (0, import_react.useCallback)(function() {
1141
1208
  var video = videoRef.current;
1142
1209
  if (video) {
@@ -1167,10 +1234,181 @@ var OverlayRenderer = function OverlayRenderer(param) {
1167
1234
  }, [
1168
1235
  updateDims
1169
1236
  ]);
1170
- var activeOverlays = overlays.filter(function(o) {
1171
- return isOverlayActive(o, currentTime);
1172
- });
1173
- if (!dims || activeOverlays.length === 0) return null;
1237
+ var activeOverlays = (0, import_react.useMemo)(function() {
1238
+ return overlays.filter(function(o) {
1239
+ return isOverlayActive(o, currentTime);
1240
+ });
1241
+ }, [
1242
+ overlays,
1243
+ currentTime
1244
+ ]);
1245
+ (0, import_react.useEffect)(function() {
1246
+ var activeIds = new Set(activeOverlays.map(function(o) {
1247
+ return o.id;
1248
+ }));
1249
+ setFadeMap(function(prev) {
1250
+ var next = new Map(prev);
1251
+ var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;
1252
+ try {
1253
+ for(var _iterator = activeOverlays[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true){
1254
+ var overlay = _step.value;
1255
+ if (!next.has(overlay.id)) {
1256
+ next.set(overlay.id, {
1257
+ overlay: overlay,
1258
+ visible: false
1259
+ });
1260
+ } else {
1261
+ var existing = next.get(overlay.id);
1262
+ next.set(overlay.id, _object_spread_props(_object_spread({}, existing), {
1263
+ overlay: overlay
1264
+ }));
1265
+ }
1266
+ }
1267
+ } catch (err) {
1268
+ _didIteratorError = true;
1269
+ _iteratorError = err;
1270
+ } finally{
1271
+ try {
1272
+ if (!_iteratorNormalCompletion && _iterator.return != null) {
1273
+ _iterator.return();
1274
+ }
1275
+ } finally{
1276
+ if (_didIteratorError) {
1277
+ throw _iteratorError;
1278
+ }
1279
+ }
1280
+ }
1281
+ var _iteratorNormalCompletion1 = true, _didIteratorError1 = false, _iteratorError1 = undefined;
1282
+ try {
1283
+ var _loop = function() {
1284
+ var _step_value = _sliced_to_array(_step1.value, 2), id = _step_value[0], state = _step_value[1];
1285
+ if (!activeIds.has(id) && state.visible) {
1286
+ next.set(id, _object_spread_props(_object_spread({}, state), {
1287
+ visible: false
1288
+ }));
1289
+ if (!removeTimers.current.has(id)) {
1290
+ var timer = setTimeout(function() {
1291
+ setFadeMap(function(m) {
1292
+ var updated = new Map(m);
1293
+ updated.delete(id);
1294
+ return updated;
1295
+ });
1296
+ removeTimers.current.delete(id);
1297
+ }, FADE_DURATION_MS);
1298
+ removeTimers.current.set(id, timer);
1299
+ }
1300
+ } else if (!activeIds.has(id) && !state.visible) {}
1301
+ };
1302
+ for(var _iterator1 = next[Symbol.iterator](), _step1; !(_iteratorNormalCompletion1 = (_step1 = _iterator1.next()).done); _iteratorNormalCompletion1 = true)_loop();
1303
+ } catch (err) {
1304
+ _didIteratorError1 = true;
1305
+ _iteratorError1 = err;
1306
+ } finally{
1307
+ try {
1308
+ if (!_iteratorNormalCompletion1 && _iterator1.return != null) {
1309
+ _iterator1.return();
1310
+ }
1311
+ } finally{
1312
+ if (_didIteratorError1) {
1313
+ throw _iteratorError1;
1314
+ }
1315
+ }
1316
+ }
1317
+ return next;
1318
+ });
1319
+ }, [
1320
+ activeOverlays
1321
+ ]);
1322
+ (0, import_react.useEffect)(function() {
1323
+ var toFadeIn = [];
1324
+ var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;
1325
+ try {
1326
+ var _loop = function() {
1327
+ var _step_value = _sliced_to_array(_step.value, 2), id = _step_value[0], state = _step_value[1];
1328
+ if (!state.visible) {
1329
+ var isActive = activeOverlays.some(function(o) {
1330
+ return o.id === id;
1331
+ });
1332
+ if (isActive) toFadeIn.push(id);
1333
+ }
1334
+ };
1335
+ for(var _iterator = fadeMap[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true)_loop();
1336
+ } catch (err) {
1337
+ _didIteratorError = true;
1338
+ _iteratorError = err;
1339
+ } finally{
1340
+ try {
1341
+ if (!_iteratorNormalCompletion && _iterator.return != null) {
1342
+ _iterator.return();
1343
+ }
1344
+ } finally{
1345
+ if (_didIteratorError) {
1346
+ throw _iteratorError;
1347
+ }
1348
+ }
1349
+ }
1350
+ if (toFadeIn.length === 0) return;
1351
+ var raf = requestAnimationFrame(function() {
1352
+ setFadeMap(function(prev) {
1353
+ var next = new Map(prev);
1354
+ var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;
1355
+ try {
1356
+ for(var _iterator = toFadeIn[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true){
1357
+ var id = _step.value;
1358
+ var state = next.get(id);
1359
+ if (state) next.set(id, _object_spread_props(_object_spread({}, state), {
1360
+ visible: true
1361
+ }));
1362
+ }
1363
+ } catch (err) {
1364
+ _didIteratorError = true;
1365
+ _iteratorError = err;
1366
+ } finally{
1367
+ try {
1368
+ if (!_iteratorNormalCompletion && _iterator.return != null) {
1369
+ _iterator.return();
1370
+ }
1371
+ } finally{
1372
+ if (_didIteratorError) {
1373
+ throw _iteratorError;
1374
+ }
1375
+ }
1376
+ }
1377
+ return next;
1378
+ });
1379
+ });
1380
+ return function() {
1381
+ return cancelAnimationFrame(raf);
1382
+ };
1383
+ }, [
1384
+ fadeMap,
1385
+ activeOverlays
1386
+ ]);
1387
+ (0, import_react.useEffect)(function() {
1388
+ return function() {
1389
+ var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;
1390
+ try {
1391
+ for(var _iterator = removeTimers.current.values()[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true){
1392
+ var timer = _step.value;
1393
+ clearTimeout(timer);
1394
+ }
1395
+ } catch (err) {
1396
+ _didIteratorError = true;
1397
+ _iteratorError = err;
1398
+ } finally{
1399
+ try {
1400
+ if (!_iteratorNormalCompletion && _iterator.return != null) {
1401
+ _iterator.return();
1402
+ }
1403
+ } finally{
1404
+ if (_didIteratorError) {
1405
+ throw _iteratorError;
1406
+ }
1407
+ }
1408
+ }
1409
+ };
1410
+ }, []);
1411
+ if (!dims || fadeMap.size === 0) return null;
1174
1412
  return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
1175
1413
  "aria-hidden": "true",
1176
1414
  style: {
@@ -1183,14 +1421,16 @@ var OverlayRenderer = function OverlayRenderer(param) {
1183
1421
  overflow: "hidden",
1184
1422
  zIndex: 8
1185
1423
  },
1186
- children: activeOverlays.map(function(overlay) {
1424
+ children: _to_consumable_array(fadeMap.values()).map(function(param) {
1425
+ var overlay = param.overlay, visible = param.visible;
1187
1426
  var scaleX = (coordinateSpace === null || coordinateSpace === void 0 ? void 0 : coordinateSpace.width) ? dims.displayWidth / coordinateSpace.width : dims.scaleX;
1188
1427
  var scaleY = (coordinateSpace === null || coordinateSpace === void 0 ? void 0 : coordinateSpace.height) ? dims.displayHeight / coordinateSpace.height : dims.scaleY;
1189
1428
  var left = overlay.x * scaleX;
1190
1429
  var top = overlay.y * scaleY;
1191
1430
  var width = overlay.width * scaleX;
1192
1431
  var height = overlay.height * scaleY;
1193
- var opacity = Math.max(0, Math.min(100, overlay.opacity)) / 100;
1432
+ var baseOpacity = Math.max(0, Math.min(100, overlay.opacity)) / 100;
1433
+ var opacity = visible ? baseOpacity : 0;
1194
1434
  var sz = {
1195
1435
  w: width,
1196
1436
  h: height
@@ -1203,6 +1443,7 @@ var OverlayRenderer = function OverlayRenderer(param) {
1203
1443
  width: "".concat(width, "px"),
1204
1444
  height: "".concat(height, "px"),
1205
1445
  opacity: opacity,
1446
+ transition: "opacity ".concat(FADE_DURATION_MS, "ms ease"),
1206
1447
  zIndex: overlay.z_index,
1207
1448
  overflow: "hidden"
1208
1449
  },