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/dist/stormcloud-vp.min.js +1 -1
- package/lib/index.cjs +140 -56
- package/lib/index.cjs.map +1 -1
- package/lib/index.js +140 -56
- package/lib/index.js.map +1 -1
- package/lib/ui/OverlayRenderer.cjs +140 -56
- package/lib/ui/OverlayRenderer.cjs.map +1 -1
- package/lib/ui/StormcloudVideoPlayer.cjs +140 -56
- package/lib/ui/StormcloudVideoPlayer.cjs.map +1 -1
- package/lib/utils/overlays.cjs +6 -17
- package/lib/utils/overlays.cjs.map +1 -1
- package/package.json +1 -1
package/lib/index.cjs
CHANGED
|
@@ -5892,27 +5892,16 @@ var SWIRL_HD_AUTHORING_WIDTH = 1920;
|
|
|
5892
5892
|
var SWIRL_HD_AUTHORING_HEIGHT = 1080;
|
|
5893
5893
|
var NAB_DEMO_NAME_PREFIX = "NAB Demo \u2014 ";
|
|
5894
5894
|
function overlayAuthoringDimensions(overlay, decodeWidth, decodeHeight) {
|
|
5895
|
-
if (
|
|
5895
|
+
if (overlay.name.startsWith(NAB_DEMO_NAME_PREFIX)) {
|
|
5896
5896
|
return {
|
|
5897
|
-
width:
|
|
5898
|
-
height:
|
|
5899
|
-
};
|
|
5900
|
-
}
|
|
5901
|
-
if (!overlay.visible) {
|
|
5902
|
-
return {
|
|
5903
|
-
width: decodeWidth,
|
|
5904
|
-
height: decodeHeight
|
|
5897
|
+
width: SWIRL_HD_AUTHORING_WIDTH,
|
|
5898
|
+
height: SWIRL_HD_AUTHORING_HEIGHT
|
|
5905
5899
|
};
|
|
5906
5900
|
}
|
|
5907
|
-
|
|
5908
|
-
var extB = overlay.y + overlay.height;
|
|
5909
|
-
var EPS = 2;
|
|
5910
|
-
var exceedsDecode = extR > decodeWidth + EPS || extB > decodeHeight + EPS;
|
|
5911
|
-
var isNabDemo = overlay.name.startsWith(NAB_DEMO_NAME_PREFIX);
|
|
5912
|
-
if (exceedsDecode && isNabDemo) {
|
|
5901
|
+
if (!decodeWidth || !decodeHeight) {
|
|
5913
5902
|
return {
|
|
5914
|
-
width: SWIRL_HD_AUTHORING_WIDTH,
|
|
5915
|
-
height: SWIRL_HD_AUTHORING_HEIGHT
|
|
5903
|
+
width: decodeWidth || SWIRL_HD_AUTHORING_WIDTH,
|
|
5904
|
+
height: decodeHeight || SWIRL_HD_AUTHORING_HEIGHT
|
|
5916
5905
|
};
|
|
5917
5906
|
}
|
|
5918
5907
|
return {
|
|
@@ -7506,11 +7495,19 @@ function hexToRgb(hex) {
|
|
|
7506
7495
|
return "".concat(num >> 16 & 255, ",").concat(num >> 8 & 255, ",").concat(num & 255);
|
|
7507
7496
|
}
|
|
7508
7497
|
var FADE_DURATION_MS = 1e3;
|
|
7509
|
-
var SHOWCASE_CYCLE_MS_DEFAULT =
|
|
7510
|
-
var
|
|
7511
|
-
var
|
|
7512
|
-
var
|
|
7513
|
-
var
|
|
7498
|
+
var SHOWCASE_CYCLE_MS_DEFAULT = 36e3;
|
|
7499
|
+
var SHOWCASE_MIN_BEAT_MS = 6e3;
|
|
7500
|
+
var BEAT_POP_IN_MS = 520;
|
|
7501
|
+
var BEAT_POP_OUT_MS = 520;
|
|
7502
|
+
var SHOWCASE_PERSISTENT_TYPES = /* @__PURE__ */ new Set([
|
|
7503
|
+
"scroller",
|
|
7504
|
+
"breaking_news",
|
|
7505
|
+
"image",
|
|
7506
|
+
"text",
|
|
7507
|
+
"shape",
|
|
7508
|
+
"countdown",
|
|
7509
|
+
"qr_code"
|
|
7510
|
+
]);
|
|
7514
7511
|
function easeOutCubic(t) {
|
|
7515
7512
|
var u = 1 - t;
|
|
7516
7513
|
return 1 - u * u * u;
|
|
@@ -7523,38 +7520,108 @@ function easeOutBack(t) {
|
|
|
7523
7520
|
var c3 = c1 + 1;
|
|
7524
7521
|
return 1 + c3 * Math.pow(t - 1, 3) + c1 * Math.pow(t - 1, 2);
|
|
7525
7522
|
}
|
|
7526
|
-
function
|
|
7527
|
-
if (phase <
|
|
7528
|
-
|
|
7529
|
-
|
|
7523
|
+
function beatOpacity(phase, beatMs) {
|
|
7524
|
+
if (phase < BEAT_POP_IN_MS) return easeOutCubic(phase / BEAT_POP_IN_MS);
|
|
7525
|
+
var holdEnd = beatMs - BEAT_POP_OUT_MS;
|
|
7526
|
+
if (phase >= holdEnd) {
|
|
7527
|
+
return Math.max(0, 1 - easeInCubic((phase - holdEnd) / BEAT_POP_OUT_MS));
|
|
7530
7528
|
}
|
|
7531
7529
|
return 1;
|
|
7532
7530
|
}
|
|
7533
|
-
function
|
|
7534
|
-
if (phase <
|
|
7535
|
-
return Math.min(1, 0.
|
|
7531
|
+
function beatScale(phase, beatMs) {
|
|
7532
|
+
if (phase < BEAT_POP_IN_MS) {
|
|
7533
|
+
return Math.min(1, 0.92 + 0.08 * easeOutBack(phase / BEAT_POP_IN_MS));
|
|
7536
7534
|
}
|
|
7537
|
-
|
|
7538
|
-
|
|
7535
|
+
var holdEnd = beatMs - BEAT_POP_OUT_MS;
|
|
7536
|
+
if (phase >= holdEnd) {
|
|
7537
|
+
return 1 - 0.06 * easeInCubic((phase - holdEnd) / BEAT_POP_OUT_MS);
|
|
7539
7538
|
}
|
|
7540
7539
|
return 1;
|
|
7541
7540
|
}
|
|
7542
|
-
function
|
|
7543
|
-
var
|
|
7541
|
+
function partitionShowcase(overlays) {
|
|
7542
|
+
var visible = overlays.filter(function(o) {
|
|
7543
|
+
return o.visible;
|
|
7544
|
+
});
|
|
7545
|
+
var persistent = [];
|
|
7546
|
+
var spotlight = [];
|
|
7547
|
+
var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;
|
|
7548
|
+
try {
|
|
7549
|
+
for(var _iterator = visible[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true){
|
|
7550
|
+
var o = _step.value;
|
|
7551
|
+
if (SHOWCASE_PERSISTENT_TYPES.has(o.type)) persistent.push(o);
|
|
7552
|
+
else spotlight.push(o);
|
|
7553
|
+
}
|
|
7554
|
+
} catch (err) {
|
|
7555
|
+
_didIteratorError = true;
|
|
7556
|
+
_iteratorError = err;
|
|
7557
|
+
} finally{
|
|
7558
|
+
try {
|
|
7559
|
+
if (!_iteratorNormalCompletion && _iterator.return != null) {
|
|
7560
|
+
_iterator.return();
|
|
7561
|
+
}
|
|
7562
|
+
} finally{
|
|
7563
|
+
if (_didIteratorError) {
|
|
7564
|
+
throw _iteratorError;
|
|
7565
|
+
}
|
|
7566
|
+
}
|
|
7567
|
+
}
|
|
7568
|
+
spotlight.sort(function(a, b) {
|
|
7569
|
+
return a.z_index - b.z_index || a.id - b.id;
|
|
7570
|
+
});
|
|
7571
|
+
var beats = [];
|
|
7572
|
+
var _iteratorNormalCompletion1 = true, _didIteratorError1 = false, _iteratorError1 = undefined;
|
|
7573
|
+
try {
|
|
7574
|
+
for(var _iterator1 = spotlight[Symbol.iterator](), _step1; !(_iteratorNormalCompletion1 = (_step1 = _iterator1.next()).done); _iteratorNormalCompletion1 = true){
|
|
7575
|
+
var o1 = _step1.value;
|
|
7576
|
+
beats.push([
|
|
7577
|
+
o1
|
|
7578
|
+
]);
|
|
7579
|
+
}
|
|
7580
|
+
} catch (err) {
|
|
7581
|
+
_didIteratorError1 = true;
|
|
7582
|
+
_iteratorError1 = err;
|
|
7583
|
+
} finally{
|
|
7584
|
+
try {
|
|
7585
|
+
if (!_iteratorNormalCompletion1 && _iterator1.return != null) {
|
|
7586
|
+
_iterator1.return();
|
|
7587
|
+
}
|
|
7588
|
+
} finally{
|
|
7589
|
+
if (_didIteratorError1) {
|
|
7590
|
+
throw _iteratorError1;
|
|
7591
|
+
}
|
|
7592
|
+
}
|
|
7593
|
+
}
|
|
7594
|
+
return {
|
|
7595
|
+
persistent: persistent,
|
|
7596
|
+
beats: beats
|
|
7597
|
+
};
|
|
7598
|
+
}
|
|
7599
|
+
function useShowcaseBeat(enabled, cycleMs, beats) {
|
|
7600
|
+
var safeBeats = Math.max(1, beats);
|
|
7601
|
+
var beatMs = Math.max(SHOWCASE_MIN_BEAT_MS, Math.floor(cycleMs / safeBeats));
|
|
7602
|
+
var totalMs = beatMs * safeBeats;
|
|
7603
|
+
var _ref = _sliced_to_array((0, import_react.useState)(function() {
|
|
7604
|
+
return Date.now();
|
|
7605
|
+
}), 2), now = _ref[0], setNow = _ref[1];
|
|
7544
7606
|
(0, import_react.useEffect)(function() {
|
|
7545
7607
|
if (!enabled) return;
|
|
7546
|
-
setPhase(Date.now() % cycleMs);
|
|
7547
7608
|
var id = window.setInterval(function() {
|
|
7548
|
-
|
|
7549
|
-
},
|
|
7609
|
+
return setNow(Date.now());
|
|
7610
|
+
}, 64);
|
|
7550
7611
|
return function() {
|
|
7551
7612
|
return clearInterval(id);
|
|
7552
7613
|
};
|
|
7553
7614
|
}, [
|
|
7554
|
-
enabled
|
|
7555
|
-
cycleMs
|
|
7615
|
+
enabled
|
|
7556
7616
|
]);
|
|
7557
|
-
|
|
7617
|
+
var phase = now % totalMs;
|
|
7618
|
+
var beatIndex = Math.min(safeBeats - 1, Math.floor(phase / beatMs));
|
|
7619
|
+
var beatPhase = phase - beatIndex * beatMs;
|
|
7620
|
+
return {
|
|
7621
|
+
beatIndex: beatIndex,
|
|
7622
|
+
beatPhase: beatPhase,
|
|
7623
|
+
beatMs: beatMs
|
|
7624
|
+
};
|
|
7558
7625
|
}
|
|
7559
7626
|
var OverlayRenderer = function OverlayRenderer(param) {
|
|
7560
7627
|
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;
|
|
@@ -7562,7 +7629,28 @@ var OverlayRenderer = function OverlayRenderer(param) {
|
|
|
7562
7629
|
var rafRef = (0, import_react.useRef)(null);
|
|
7563
7630
|
var _ref1 = _sliced_to_array((0, import_react.useState)(/* @__PURE__ */ new Map()), 2), fadeMap = _ref1[0], setFadeMap = _ref1[1];
|
|
7564
7631
|
var removeTimers = (0, import_react.useRef)(/* @__PURE__ */ new Map());
|
|
7565
|
-
var
|
|
7632
|
+
var _ref2 = (0, import_react.useMemo)(function() {
|
|
7633
|
+
return partitionShowcase(overlays);
|
|
7634
|
+
}, [
|
|
7635
|
+
overlays
|
|
7636
|
+
]), showcasePersistent = _ref2.persistent, showcaseBeats = _ref2.beats;
|
|
7637
|
+
var _useShowcaseBeat = useShowcaseBeat(showcaseMode, showcaseCycleMs, showcaseBeats.length), showcaseBeatIndex = _useShowcaseBeat.beatIndex, showcaseBeatPhase = _useShowcaseBeat.beatPhase, showcaseBeatMs = _useShowcaseBeat.beatMs;
|
|
7638
|
+
var showcasePersistentIds = (0, import_react.useMemo)(function() {
|
|
7639
|
+
return new Set(showcasePersistent.map(function(o) {
|
|
7640
|
+
return o.id;
|
|
7641
|
+
}));
|
|
7642
|
+
}, [
|
|
7643
|
+
showcasePersistent
|
|
7644
|
+
]);
|
|
7645
|
+
var showcaseSpotlightIds = (0, import_react.useMemo)(function() {
|
|
7646
|
+
var beat = showcaseBeats[showcaseBeatIndex];
|
|
7647
|
+
return new Set((beat !== null && beat !== void 0 ? beat : []).map(function(o) {
|
|
7648
|
+
return o.id;
|
|
7649
|
+
}));
|
|
7650
|
+
}, [
|
|
7651
|
+
showcaseBeats,
|
|
7652
|
+
showcaseBeatIndex
|
|
7653
|
+
]);
|
|
7566
7654
|
var updateDims = (0, import_react.useCallback)(function() {
|
|
7567
7655
|
var video = videoRef.current;
|
|
7568
7656
|
if (video) {
|
|
@@ -7595,10 +7683,9 @@ var OverlayRenderer = function OverlayRenderer(param) {
|
|
|
7595
7683
|
]);
|
|
7596
7684
|
var activeOverlays = (0, import_react.useMemo)(function() {
|
|
7597
7685
|
if (showcaseMode) {
|
|
7598
|
-
|
|
7599
|
-
|
|
7600
|
-
|
|
7601
|
-
});
|
|
7686
|
+
var _showcaseBeats_showcaseBeatIndex;
|
|
7687
|
+
var beat = (_showcaseBeats_showcaseBeatIndex = showcaseBeats[showcaseBeatIndex]) !== null && _showcaseBeats_showcaseBeatIndex !== void 0 ? _showcaseBeats_showcaseBeatIndex : [];
|
|
7688
|
+
return _to_consumable_array(showcasePersistent).concat(_to_consumable_array(beat));
|
|
7602
7689
|
}
|
|
7603
7690
|
return overlays.filter(function(o) {
|
|
7604
7691
|
return isOverlayActive(o, currentTime);
|
|
@@ -7607,14 +7694,9 @@ var OverlayRenderer = function OverlayRenderer(param) {
|
|
|
7607
7694
|
overlays,
|
|
7608
7695
|
currentTime,
|
|
7609
7696
|
showcaseMode,
|
|
7610
|
-
|
|
7611
|
-
|
|
7612
|
-
|
|
7613
|
-
return new Set(activeOverlays.map(function(o) {
|
|
7614
|
-
return o.id;
|
|
7615
|
-
}));
|
|
7616
|
-
}, [
|
|
7617
|
-
activeOverlays
|
|
7697
|
+
showcasePersistent,
|
|
7698
|
+
showcaseBeats,
|
|
7699
|
+
showcaseBeatIndex
|
|
7618
7700
|
]);
|
|
7619
7701
|
(0, import_react.useLayoutEffect)(function() {
|
|
7620
7702
|
var activeIds = new Set(activeOverlays.map(function(o) {
|
|
@@ -7809,10 +7891,12 @@ var OverlayRenderer = function OverlayRenderer(param) {
|
|
|
7809
7891
|
var width = overlay.width * scaleX;
|
|
7810
7892
|
var height = overlay.height * scaleY;
|
|
7811
7893
|
var baseOpacity = Math.max(0, Math.min(100, overlay.opacity)) / 100;
|
|
7812
|
-
var
|
|
7813
|
-
var
|
|
7814
|
-
var
|
|
7815
|
-
var
|
|
7894
|
+
var isShowcasePersistent = showcaseMode && showcasePersistentIds.has(overlay.id);
|
|
7895
|
+
var isShowcaseSpotlight = showcaseMode && showcaseSpotlightIds.has(overlay.id);
|
|
7896
|
+
var isShowcaseDormant = showcaseMode && !isShowcasePersistent && !isShowcaseSpotlight;
|
|
7897
|
+
var useShowcasePop = isShowcaseSpotlight;
|
|
7898
|
+
var opacity = useShowcasePop ? baseOpacity * beatOpacity(showcaseBeatPhase, showcaseBeatMs) : isShowcaseDormant ? 0 : visible ? baseOpacity : 0;
|
|
7899
|
+
var popScale = useShowcasePop ? beatScale(showcaseBeatPhase, showcaseBeatMs) : 1;
|
|
7816
7900
|
var sz = {
|
|
7817
7901
|
w: width,
|
|
7818
7902
|
h: height
|