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.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 (
|
|
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:
|
|
5717
|
-
height:
|
|
5710
|
+
width: SWIRL_HD_AUTHORING_WIDTH,
|
|
5711
|
+
height: SWIRL_HD_AUTHORING_HEIGHT
|
|
5718
5712
|
};
|
|
5719
5713
|
}
|
|
5720
|
-
|
|
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 =
|
|
7323
|
-
var
|
|
7324
|
-
var
|
|
7325
|
-
var
|
|
7326
|
-
var
|
|
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
|
|
7340
|
-
if (phase <
|
|
7341
|
-
|
|
7342
|
-
|
|
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
|
|
7347
|
-
if (phase <
|
|
7348
|
-
return Math.min(1, 0.
|
|
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
|
-
|
|
7351
|
-
|
|
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
|
|
7356
|
-
var
|
|
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
|
-
|
|
7362
|
-
},
|
|
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
|
-
|
|
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
|
|
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
|
-
|
|
7412
|
-
|
|
7413
|
-
|
|
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
|
-
|
|
7424
|
-
|
|
7425
|
-
|
|
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
|
|
7626
|
-
var
|
|
7627
|
-
var
|
|
7628
|
-
var
|
|
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
|