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.
package/lib/index.cjs CHANGED
@@ -7231,10 +7231,13 @@ function hexToRgb(hex) {
7231
7231
  var num = parseInt(clean.length === 3 ? clean.replace(/./g, "$&$&") : clean, 16);
7232
7232
  return "".concat(num >> 16 & 255, ",").concat(num >> 8 & 255, ",").concat(num & 255);
7233
7233
  }
7234
+ var FADE_DURATION_MS = 1e3;
7234
7235
  var OverlayRenderer = function OverlayRenderer(param) {
7235
7236
  var overlays = param.overlays, currentTime = param.currentTime, videoRef = param.videoRef, coordinateSpace = param.coordinateSpace;
7236
7237
  var _ref = _sliced_to_array((0, import_react.useState)(null), 2), dims = _ref[0], setDims = _ref[1];
7237
7238
  var rafRef = (0, import_react.useRef)(null);
7239
+ var _ref1 = _sliced_to_array((0, import_react.useState)(/* @__PURE__ */ new Map()), 2), fadeMap = _ref1[0], setFadeMap = _ref1[1];
7240
+ var removeTimers = (0, import_react.useRef)(/* @__PURE__ */ new Map());
7238
7241
  var updateDims = (0, import_react.useCallback)(function() {
7239
7242
  var video = videoRef.current;
7240
7243
  if (video) {
@@ -7265,10 +7268,181 @@ var OverlayRenderer = function OverlayRenderer(param) {
7265
7268
  }, [
7266
7269
  updateDims
7267
7270
  ]);
7268
- var activeOverlays = overlays.filter(function(o) {
7269
- return isOverlayActive(o, currentTime);
7270
- });
7271
- if (!dims || activeOverlays.length === 0) return null;
7271
+ var activeOverlays = (0, import_react.useMemo)(function() {
7272
+ return overlays.filter(function(o) {
7273
+ return isOverlayActive(o, currentTime);
7274
+ });
7275
+ }, [
7276
+ overlays,
7277
+ currentTime
7278
+ ]);
7279
+ (0, import_react.useEffect)(function() {
7280
+ var activeIds = new Set(activeOverlays.map(function(o) {
7281
+ return o.id;
7282
+ }));
7283
+ setFadeMap(function(prev) {
7284
+ var next = new Map(prev);
7285
+ var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;
7286
+ try {
7287
+ for(var _iterator = activeOverlays[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true){
7288
+ var overlay = _step.value;
7289
+ if (!next.has(overlay.id)) {
7290
+ next.set(overlay.id, {
7291
+ overlay: overlay,
7292
+ visible: false
7293
+ });
7294
+ } else {
7295
+ var existing = next.get(overlay.id);
7296
+ next.set(overlay.id, _object_spread_props(_object_spread({}, existing), {
7297
+ overlay: overlay
7298
+ }));
7299
+ }
7300
+ }
7301
+ } catch (err) {
7302
+ _didIteratorError = true;
7303
+ _iteratorError = err;
7304
+ } finally{
7305
+ try {
7306
+ if (!_iteratorNormalCompletion && _iterator.return != null) {
7307
+ _iterator.return();
7308
+ }
7309
+ } finally{
7310
+ if (_didIteratorError) {
7311
+ throw _iteratorError;
7312
+ }
7313
+ }
7314
+ }
7315
+ var _iteratorNormalCompletion1 = true, _didIteratorError1 = false, _iteratorError1 = undefined;
7316
+ try {
7317
+ var _loop = function() {
7318
+ var _step_value = _sliced_to_array(_step1.value, 2), id = _step_value[0], state = _step_value[1];
7319
+ if (!activeIds.has(id) && state.visible) {
7320
+ next.set(id, _object_spread_props(_object_spread({}, state), {
7321
+ visible: false
7322
+ }));
7323
+ if (!removeTimers.current.has(id)) {
7324
+ var timer = setTimeout(function() {
7325
+ setFadeMap(function(m) {
7326
+ var updated = new Map(m);
7327
+ updated.delete(id);
7328
+ return updated;
7329
+ });
7330
+ removeTimers.current.delete(id);
7331
+ }, FADE_DURATION_MS);
7332
+ removeTimers.current.set(id, timer);
7333
+ }
7334
+ } else if (!activeIds.has(id) && !state.visible) {}
7335
+ };
7336
+ for(var _iterator1 = next[Symbol.iterator](), _step1; !(_iteratorNormalCompletion1 = (_step1 = _iterator1.next()).done); _iteratorNormalCompletion1 = true)_loop();
7337
+ } catch (err) {
7338
+ _didIteratorError1 = true;
7339
+ _iteratorError1 = err;
7340
+ } finally{
7341
+ try {
7342
+ if (!_iteratorNormalCompletion1 && _iterator1.return != null) {
7343
+ _iterator1.return();
7344
+ }
7345
+ } finally{
7346
+ if (_didIteratorError1) {
7347
+ throw _iteratorError1;
7348
+ }
7349
+ }
7350
+ }
7351
+ return next;
7352
+ });
7353
+ }, [
7354
+ activeOverlays
7355
+ ]);
7356
+ (0, import_react.useEffect)(function() {
7357
+ var toFadeIn = [];
7358
+ var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;
7359
+ try {
7360
+ var _loop = function() {
7361
+ var _step_value = _sliced_to_array(_step.value, 2), id = _step_value[0], state = _step_value[1];
7362
+ if (!state.visible) {
7363
+ var isActive = activeOverlays.some(function(o) {
7364
+ return o.id === id;
7365
+ });
7366
+ if (isActive) toFadeIn.push(id);
7367
+ }
7368
+ };
7369
+ for(var _iterator = fadeMap[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true)_loop();
7370
+ } catch (err) {
7371
+ _didIteratorError = true;
7372
+ _iteratorError = err;
7373
+ } finally{
7374
+ try {
7375
+ if (!_iteratorNormalCompletion && _iterator.return != null) {
7376
+ _iterator.return();
7377
+ }
7378
+ } finally{
7379
+ if (_didIteratorError) {
7380
+ throw _iteratorError;
7381
+ }
7382
+ }
7383
+ }
7384
+ if (toFadeIn.length === 0) return;
7385
+ var raf = requestAnimationFrame(function() {
7386
+ setFadeMap(function(prev) {
7387
+ var next = new Map(prev);
7388
+ var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;
7389
+ try {
7390
+ for(var _iterator = toFadeIn[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true){
7391
+ var id = _step.value;
7392
+ var state = next.get(id);
7393
+ if (state) next.set(id, _object_spread_props(_object_spread({}, state), {
7394
+ visible: true
7395
+ }));
7396
+ }
7397
+ } catch (err) {
7398
+ _didIteratorError = true;
7399
+ _iteratorError = err;
7400
+ } finally{
7401
+ try {
7402
+ if (!_iteratorNormalCompletion && _iterator.return != null) {
7403
+ _iterator.return();
7404
+ }
7405
+ } finally{
7406
+ if (_didIteratorError) {
7407
+ throw _iteratorError;
7408
+ }
7409
+ }
7410
+ }
7411
+ return next;
7412
+ });
7413
+ });
7414
+ return function() {
7415
+ return cancelAnimationFrame(raf);
7416
+ };
7417
+ }, [
7418
+ fadeMap,
7419
+ activeOverlays
7420
+ ]);
7421
+ (0, import_react.useEffect)(function() {
7422
+ return function() {
7423
+ var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;
7424
+ try {
7425
+ for(var _iterator = removeTimers.current.values()[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true){
7426
+ var timer = _step.value;
7427
+ clearTimeout(timer);
7428
+ }
7429
+ } catch (err) {
7430
+ _didIteratorError = true;
7431
+ _iteratorError = err;
7432
+ } finally{
7433
+ try {
7434
+ if (!_iteratorNormalCompletion && _iterator.return != null) {
7435
+ _iterator.return();
7436
+ }
7437
+ } finally{
7438
+ if (_didIteratorError) {
7439
+ throw _iteratorError;
7440
+ }
7441
+ }
7442
+ }
7443
+ };
7444
+ }, []);
7445
+ if (!dims || fadeMap.size === 0) return null;
7272
7446
  return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
7273
7447
  "aria-hidden": "true",
7274
7448
  style: {
@@ -7281,14 +7455,16 @@ var OverlayRenderer = function OverlayRenderer(param) {
7281
7455
  overflow: "hidden",
7282
7456
  zIndex: 8
7283
7457
  },
7284
- children: activeOverlays.map(function(overlay) {
7458
+ children: _to_consumable_array(fadeMap.values()).map(function(param) {
7459
+ var overlay = param.overlay, visible = param.visible;
7285
7460
  var scaleX = (coordinateSpace === null || coordinateSpace === void 0 ? void 0 : coordinateSpace.width) ? dims.displayWidth / coordinateSpace.width : dims.scaleX;
7286
7461
  var scaleY = (coordinateSpace === null || coordinateSpace === void 0 ? void 0 : coordinateSpace.height) ? dims.displayHeight / coordinateSpace.height : dims.scaleY;
7287
7462
  var left = overlay.x * scaleX;
7288
7463
  var top = overlay.y * scaleY;
7289
7464
  var width = overlay.width * scaleX;
7290
7465
  var height = overlay.height * scaleY;
7291
- var opacity = Math.max(0, Math.min(100, overlay.opacity)) / 100;
7466
+ var baseOpacity = Math.max(0, Math.min(100, overlay.opacity)) / 100;
7467
+ var opacity = visible ? baseOpacity : 0;
7292
7468
  var sz = {
7293
7469
  w: width,
7294
7470
  h: height
@@ -7301,6 +7477,7 @@ var OverlayRenderer = function OverlayRenderer(param) {
7301
7477
  width: "".concat(width, "px"),
7302
7478
  height: "".concat(height, "px"),
7303
7479
  opacity: opacity,
7480
+ transition: "opacity ".concat(FADE_DURATION_MS, "ms ease"),
7304
7481
  zIndex: overlay.z_index,
7305
7482
  overflow: "hidden"
7306
7483
  },