stormcloud-video-player 0.7.42 → 0.7.43

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.js CHANGED
@@ -5705,27 +5705,16 @@ var SWIRL_HD_AUTHORING_WIDTH = 1920;
5705
5705
  var SWIRL_HD_AUTHORING_HEIGHT = 1080;
5706
5706
  var NAB_DEMO_NAME_PREFIX = "NAB Demo \u2014 ";
5707
5707
  function overlayAuthoringDimensions(overlay, decodeWidth, decodeHeight) {
5708
- if (!decodeWidth || !decodeHeight) {
5709
- return {
5710
- width: decodeWidth || SWIRL_HD_AUTHORING_WIDTH,
5711
- height: decodeHeight || SWIRL_HD_AUTHORING_HEIGHT
5712
- };
5713
- }
5714
- if (!overlay.visible) {
5708
+ if (overlay.name.startsWith(NAB_DEMO_NAME_PREFIX)) {
5715
5709
  return {
5716
- width: decodeWidth,
5717
- height: decodeHeight
5710
+ width: SWIRL_HD_AUTHORING_WIDTH,
5711
+ height: SWIRL_HD_AUTHORING_HEIGHT
5718
5712
  };
5719
5713
  }
5720
- var extR = overlay.x + overlay.width;
5721
- var extB = overlay.y + overlay.height;
5722
- var EPS = 2;
5723
- var exceedsDecode = extR > decodeWidth + EPS || extB > decodeHeight + EPS;
5724
- var isNabDemo = overlay.name.startsWith(NAB_DEMO_NAME_PREFIX);
5725
- if (exceedsDecode && isNabDemo) {
5714
+ if (!decodeWidth || !decodeHeight) {
5726
5715
  return {
5727
- width: SWIRL_HD_AUTHORING_WIDTH,
5728
- height: SWIRL_HD_AUTHORING_HEIGHT
5716
+ width: decodeWidth || SWIRL_HD_AUTHORING_WIDTH,
5717
+ height: decodeHeight || SWIRL_HD_AUTHORING_HEIGHT
5729
5718
  };
5730
5719
  }
5731
5720
  return {
@@ -7319,11 +7308,19 @@ function hexToRgb(hex) {
7319
7308
  return "".concat(num >> 16 & 255, ",").concat(num >> 8 & 255, ",").concat(num & 255);
7320
7309
  }
7321
7310
  var FADE_DURATION_MS = 1e3;
7322
- var SHOWCASE_CYCLE_MS_DEFAULT = 6e4;
7323
- var SHOWCASE_POP_IN_MS = 420;
7324
- var SHOWCASE_STEADY_END_MS = 46e3;
7325
- var SHOWCASE_POP_OUT_MS = 450;
7326
- var SHOWCASE_POP_OUT_END_MS = SHOWCASE_STEADY_END_MS + SHOWCASE_POP_OUT_MS;
7311
+ var SHOWCASE_CYCLE_MS_DEFAULT = 36e3;
7312
+ var SHOWCASE_MIN_BEAT_MS = 6e3;
7313
+ var BEAT_POP_IN_MS = 520;
7314
+ var BEAT_POP_OUT_MS = 520;
7315
+ var SHOWCASE_PERSISTENT_TYPES = /* @__PURE__ */ new Set([
7316
+ "scroller",
7317
+ "breaking_news",
7318
+ "image",
7319
+ "text",
7320
+ "shape",
7321
+ "countdown",
7322
+ "qr_code"
7323
+ ]);
7327
7324
  function easeOutCubic(t) {
7328
7325
  var u = 1 - t;
7329
7326
  return 1 - u * u * u;
@@ -7336,38 +7333,108 @@ function easeOutBack(t) {
7336
7333
  var c3 = c1 + 1;
7337
7334
  return 1 + c3 * Math.pow(t - 1, 3) + c1 * Math.pow(t - 1, 2);
7338
7335
  }
7339
- function showcaseOpacity(phase) {
7340
- if (phase < SHOWCASE_POP_IN_MS) return easeOutCubic(phase / SHOWCASE_POP_IN_MS);
7341
- if (phase >= SHOWCASE_STEADY_END_MS && phase < SHOWCASE_POP_OUT_END_MS) {
7342
- return 1 - easeInCubic((phase - SHOWCASE_STEADY_END_MS) / SHOWCASE_POP_OUT_MS);
7336
+ function beatOpacity(phase, beatMs) {
7337
+ if (phase < BEAT_POP_IN_MS) return easeOutCubic(phase / BEAT_POP_IN_MS);
7338
+ var holdEnd = beatMs - BEAT_POP_OUT_MS;
7339
+ if (phase >= holdEnd) {
7340
+ return Math.max(0, 1 - easeInCubic((phase - holdEnd) / BEAT_POP_OUT_MS));
7343
7341
  }
7344
7342
  return 1;
7345
7343
  }
7346
- function showcaseScale(phase) {
7347
- if (phase < SHOWCASE_POP_IN_MS) {
7348
- return Math.min(1, 0.78 + 0.22 * easeOutBack(phase / SHOWCASE_POP_IN_MS));
7344
+ function beatScale(phase, beatMs) {
7345
+ if (phase < BEAT_POP_IN_MS) {
7346
+ return Math.min(1, 0.92 + 0.08 * easeOutBack(phase / BEAT_POP_IN_MS));
7349
7347
  }
7350
- if (phase >= SHOWCASE_STEADY_END_MS && phase < SHOWCASE_POP_OUT_END_MS) {
7351
- return 1 - 0.14 * easeInCubic((phase - SHOWCASE_STEADY_END_MS) / SHOWCASE_POP_OUT_MS);
7348
+ var holdEnd = beatMs - BEAT_POP_OUT_MS;
7349
+ if (phase >= holdEnd) {
7350
+ return 1 - 0.06 * easeInCubic((phase - holdEnd) / BEAT_POP_OUT_MS);
7352
7351
  }
7353
7352
  return 1;
7354
7353
  }
7355
- function useShowcasePhase(enabled, cycleMs) {
7356
- var _useState = _sliced_to_array(useState(0), 2), phase = _useState[0], setPhase = _useState[1];
7354
+ function partitionShowcase(overlays) {
7355
+ var visible = overlays.filter(function(o) {
7356
+ return o.visible;
7357
+ });
7358
+ var persistent = [];
7359
+ var spotlight = [];
7360
+ var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;
7361
+ try {
7362
+ for(var _iterator = visible[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true){
7363
+ var o = _step.value;
7364
+ if (SHOWCASE_PERSISTENT_TYPES.has(o.type)) persistent.push(o);
7365
+ else spotlight.push(o);
7366
+ }
7367
+ } catch (err) {
7368
+ _didIteratorError = true;
7369
+ _iteratorError = err;
7370
+ } finally{
7371
+ try {
7372
+ if (!_iteratorNormalCompletion && _iterator.return != null) {
7373
+ _iterator.return();
7374
+ }
7375
+ } finally{
7376
+ if (_didIteratorError) {
7377
+ throw _iteratorError;
7378
+ }
7379
+ }
7380
+ }
7381
+ spotlight.sort(function(a, b) {
7382
+ return a.z_index - b.z_index || a.id - b.id;
7383
+ });
7384
+ var beats = [];
7385
+ var _iteratorNormalCompletion1 = true, _didIteratorError1 = false, _iteratorError1 = undefined;
7386
+ try {
7387
+ for(var _iterator1 = spotlight[Symbol.iterator](), _step1; !(_iteratorNormalCompletion1 = (_step1 = _iterator1.next()).done); _iteratorNormalCompletion1 = true){
7388
+ var o1 = _step1.value;
7389
+ beats.push([
7390
+ o1
7391
+ ]);
7392
+ }
7393
+ } catch (err) {
7394
+ _didIteratorError1 = true;
7395
+ _iteratorError1 = err;
7396
+ } finally{
7397
+ try {
7398
+ if (!_iteratorNormalCompletion1 && _iterator1.return != null) {
7399
+ _iterator1.return();
7400
+ }
7401
+ } finally{
7402
+ if (_didIteratorError1) {
7403
+ throw _iteratorError1;
7404
+ }
7405
+ }
7406
+ }
7407
+ return {
7408
+ persistent: persistent,
7409
+ beats: beats
7410
+ };
7411
+ }
7412
+ function useShowcaseBeat(enabled, cycleMs, beats) {
7413
+ var safeBeats = Math.max(1, beats);
7414
+ var beatMs = Math.max(SHOWCASE_MIN_BEAT_MS, Math.floor(cycleMs / safeBeats));
7415
+ var totalMs = beatMs * safeBeats;
7416
+ var _useState = _sliced_to_array(useState(function() {
7417
+ return Date.now();
7418
+ }), 2), now = _useState[0], setNow = _useState[1];
7357
7419
  useEffect(function() {
7358
7420
  if (!enabled) return;
7359
- setPhase(Date.now() % cycleMs);
7360
7421
  var id = window.setInterval(function() {
7361
- setPhase(Date.now() % cycleMs);
7362
- }, 48);
7422
+ return setNow(Date.now());
7423
+ }, 64);
7363
7424
  return function() {
7364
7425
  return clearInterval(id);
7365
7426
  };
7366
7427
  }, [
7367
- enabled,
7368
- cycleMs
7428
+ enabled
7369
7429
  ]);
7370
- return phase;
7430
+ var phase = now % totalMs;
7431
+ var beatIndex = Math.min(safeBeats - 1, Math.floor(phase / beatMs));
7432
+ var beatPhase = phase - beatIndex * beatMs;
7433
+ return {
7434
+ beatIndex: beatIndex,
7435
+ beatPhase: beatPhase,
7436
+ beatMs: beatMs
7437
+ };
7371
7438
  }
7372
7439
  var OverlayRenderer = function OverlayRenderer(param) {
7373
7440
  var overlays = param.overlays, currentTime = param.currentTime, videoRef = param.videoRef, coordinateSpace = param.coordinateSpace, _param_showcaseMode = param.showcaseMode, showcaseMode = _param_showcaseMode === void 0 ? false : _param_showcaseMode, _param_showcaseCycleMs = param.showcaseCycleMs, showcaseCycleMs = _param_showcaseCycleMs === void 0 ? SHOWCASE_CYCLE_MS_DEFAULT : _param_showcaseCycleMs;
@@ -7375,7 +7442,28 @@ var OverlayRenderer = function OverlayRenderer(param) {
7375
7442
  var rafRef = useRef(null);
7376
7443
  var _useState1 = _sliced_to_array(useState(/* @__PURE__ */ new Map()), 2), fadeMap = _useState1[0], setFadeMap = _useState1[1];
7377
7444
  var removeTimers = useRef(/* @__PURE__ */ new Map());
7378
- var showcasePhase = useShowcasePhase(showcaseMode, showcaseCycleMs);
7445
+ var _useMemo = useMemo(function() {
7446
+ return partitionShowcase(overlays);
7447
+ }, [
7448
+ overlays
7449
+ ]), showcasePersistent = _useMemo.persistent, showcaseBeats = _useMemo.beats;
7450
+ var _useShowcaseBeat = useShowcaseBeat(showcaseMode, showcaseCycleMs, showcaseBeats.length), showcaseBeatIndex = _useShowcaseBeat.beatIndex, showcaseBeatPhase = _useShowcaseBeat.beatPhase, showcaseBeatMs = _useShowcaseBeat.beatMs;
7451
+ var showcasePersistentIds = useMemo(function() {
7452
+ return new Set(showcasePersistent.map(function(o) {
7453
+ return o.id;
7454
+ }));
7455
+ }, [
7456
+ showcasePersistent
7457
+ ]);
7458
+ var showcaseSpotlightIds = useMemo(function() {
7459
+ var beat = showcaseBeats[showcaseBeatIndex];
7460
+ return new Set((beat !== null && beat !== void 0 ? beat : []).map(function(o) {
7461
+ return o.id;
7462
+ }));
7463
+ }, [
7464
+ showcaseBeats,
7465
+ showcaseBeatIndex
7466
+ ]);
7379
7467
  var updateDims = useCallback(function() {
7380
7468
  var video = videoRef.current;
7381
7469
  if (video) {
@@ -7408,10 +7496,9 @@ var OverlayRenderer = function OverlayRenderer(param) {
7408
7496
  ]);
7409
7497
  var activeOverlays = useMemo(function() {
7410
7498
  if (showcaseMode) {
7411
- return overlays.filter(function(o) {
7412
- if (!o.visible) return false;
7413
- return showcasePhase < SHOWCASE_POP_OUT_END_MS;
7414
- });
7499
+ var _showcaseBeats_showcaseBeatIndex;
7500
+ var beat = (_showcaseBeats_showcaseBeatIndex = showcaseBeats[showcaseBeatIndex]) !== null && _showcaseBeats_showcaseBeatIndex !== void 0 ? _showcaseBeats_showcaseBeatIndex : [];
7501
+ return _to_consumable_array(showcasePersistent).concat(_to_consumable_array(beat));
7415
7502
  }
7416
7503
  return overlays.filter(function(o) {
7417
7504
  return isOverlayActive(o, currentTime);
@@ -7420,14 +7507,9 @@ var OverlayRenderer = function OverlayRenderer(param) {
7420
7507
  overlays,
7421
7508
  currentTime,
7422
7509
  showcaseMode,
7423
- showcasePhase
7424
- ]);
7425
- var activeBeatIds = useMemo(function() {
7426
- return new Set(activeOverlays.map(function(o) {
7427
- return o.id;
7428
- }));
7429
- }, [
7430
- activeOverlays
7510
+ showcasePersistent,
7511
+ showcaseBeats,
7512
+ showcaseBeatIndex
7431
7513
  ]);
7432
7514
  useLayoutEffect(function() {
7433
7515
  var activeIds = new Set(activeOverlays.map(function(o) {
@@ -7622,10 +7704,12 @@ var OverlayRenderer = function OverlayRenderer(param) {
7622
7704
  var width = overlay.width * scaleX;
7623
7705
  var height = overlay.height * scaleY;
7624
7706
  var baseOpacity = Math.max(0, Math.min(100, overlay.opacity)) / 100;
7625
- var inShowcaseBeat = showcaseMode && activeBeatIds.has(overlay.id);
7626
- var useShowcasePop = inShowcaseBeat;
7627
- var opacity = useShowcasePop ? baseOpacity * showcaseOpacity(showcasePhase) : visible ? baseOpacity : 0;
7628
- var popScale = useShowcasePop ? showcaseScale(showcasePhase) : 1;
7707
+ var isShowcasePersistent = showcaseMode && showcasePersistentIds.has(overlay.id);
7708
+ var isShowcaseSpotlight = showcaseMode && showcaseSpotlightIds.has(overlay.id);
7709
+ var isShowcaseDormant = showcaseMode && !isShowcasePersistent && !isShowcaseSpotlight;
7710
+ var useShowcasePop = isShowcaseSpotlight;
7711
+ var opacity = useShowcasePop ? baseOpacity * beatOpacity(showcaseBeatPhase, showcaseBeatMs) : isShowcaseDormant ? 0 : visible ? baseOpacity : 0;
7712
+ var popScale = useShowcasePop ? beatScale(showcaseBeatPhase, showcaseBeatMs) : 1;
7629
7713
  var sz = {
7630
7714
  w: width,
7631
7715
  h: height