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
|
@@ -5693,27 +5693,16 @@ var SWIRL_HD_AUTHORING_WIDTH = 1920;
|
|
|
5693
5693
|
var SWIRL_HD_AUTHORING_HEIGHT = 1080;
|
|
5694
5694
|
var NAB_DEMO_NAME_PREFIX = "NAB Demo \u2014 ";
|
|
5695
5695
|
function overlayAuthoringDimensions(overlay, decodeWidth, decodeHeight) {
|
|
5696
|
-
if (
|
|
5696
|
+
if (overlay.name.startsWith(NAB_DEMO_NAME_PREFIX)) {
|
|
5697
5697
|
return {
|
|
5698
|
-
width:
|
|
5699
|
-
height:
|
|
5700
|
-
};
|
|
5701
|
-
}
|
|
5702
|
-
if (!overlay.visible) {
|
|
5703
|
-
return {
|
|
5704
|
-
width: decodeWidth,
|
|
5705
|
-
height: decodeHeight
|
|
5698
|
+
width: SWIRL_HD_AUTHORING_WIDTH,
|
|
5699
|
+
height: SWIRL_HD_AUTHORING_HEIGHT
|
|
5706
5700
|
};
|
|
5707
5701
|
}
|
|
5708
|
-
|
|
5709
|
-
var extB = overlay.y + overlay.height;
|
|
5710
|
-
var EPS = 2;
|
|
5711
|
-
var exceedsDecode = extR > decodeWidth + EPS || extB > decodeHeight + EPS;
|
|
5712
|
-
var isNabDemo = overlay.name.startsWith(NAB_DEMO_NAME_PREFIX);
|
|
5713
|
-
if (exceedsDecode && isNabDemo) {
|
|
5702
|
+
if (!decodeWidth || !decodeHeight) {
|
|
5714
5703
|
return {
|
|
5715
|
-
width: SWIRL_HD_AUTHORING_WIDTH,
|
|
5716
|
-
height: SWIRL_HD_AUTHORING_HEIGHT
|
|
5704
|
+
width: decodeWidth || SWIRL_HD_AUTHORING_WIDTH,
|
|
5705
|
+
height: decodeHeight || SWIRL_HD_AUTHORING_HEIGHT
|
|
5717
5706
|
};
|
|
5718
5707
|
}
|
|
5719
5708
|
return {
|
|
@@ -7307,11 +7296,19 @@ function hexToRgb(hex) {
|
|
|
7307
7296
|
return "".concat(num >> 16 & 255, ",").concat(num >> 8 & 255, ",").concat(num & 255);
|
|
7308
7297
|
}
|
|
7309
7298
|
var FADE_DURATION_MS = 1e3;
|
|
7310
|
-
var SHOWCASE_CYCLE_MS_DEFAULT =
|
|
7311
|
-
var
|
|
7312
|
-
var
|
|
7313
|
-
var
|
|
7314
|
-
var
|
|
7299
|
+
var SHOWCASE_CYCLE_MS_DEFAULT = 36e3;
|
|
7300
|
+
var SHOWCASE_MIN_BEAT_MS = 6e3;
|
|
7301
|
+
var BEAT_POP_IN_MS = 520;
|
|
7302
|
+
var BEAT_POP_OUT_MS = 520;
|
|
7303
|
+
var SHOWCASE_PERSISTENT_TYPES = /* @__PURE__ */ new Set([
|
|
7304
|
+
"scroller",
|
|
7305
|
+
"breaking_news",
|
|
7306
|
+
"image",
|
|
7307
|
+
"text",
|
|
7308
|
+
"shape",
|
|
7309
|
+
"countdown",
|
|
7310
|
+
"qr_code"
|
|
7311
|
+
]);
|
|
7315
7312
|
function easeOutCubic(t) {
|
|
7316
7313
|
var u = 1 - t;
|
|
7317
7314
|
return 1 - u * u * u;
|
|
@@ -7324,38 +7321,108 @@ function easeOutBack(t) {
|
|
|
7324
7321
|
var c3 = c1 + 1;
|
|
7325
7322
|
return 1 + c3 * Math.pow(t - 1, 3) + c1 * Math.pow(t - 1, 2);
|
|
7326
7323
|
}
|
|
7327
|
-
function
|
|
7328
|
-
if (phase <
|
|
7329
|
-
|
|
7330
|
-
|
|
7324
|
+
function beatOpacity(phase, beatMs) {
|
|
7325
|
+
if (phase < BEAT_POP_IN_MS) return easeOutCubic(phase / BEAT_POP_IN_MS);
|
|
7326
|
+
var holdEnd = beatMs - BEAT_POP_OUT_MS;
|
|
7327
|
+
if (phase >= holdEnd) {
|
|
7328
|
+
return Math.max(0, 1 - easeInCubic((phase - holdEnd) / BEAT_POP_OUT_MS));
|
|
7331
7329
|
}
|
|
7332
7330
|
return 1;
|
|
7333
7331
|
}
|
|
7334
|
-
function
|
|
7335
|
-
if (phase <
|
|
7336
|
-
return Math.min(1, 0.
|
|
7332
|
+
function beatScale(phase, beatMs) {
|
|
7333
|
+
if (phase < BEAT_POP_IN_MS) {
|
|
7334
|
+
return Math.min(1, 0.92 + 0.08 * easeOutBack(phase / BEAT_POP_IN_MS));
|
|
7337
7335
|
}
|
|
7338
|
-
|
|
7339
|
-
|
|
7336
|
+
var holdEnd = beatMs - BEAT_POP_OUT_MS;
|
|
7337
|
+
if (phase >= holdEnd) {
|
|
7338
|
+
return 1 - 0.06 * easeInCubic((phase - holdEnd) / BEAT_POP_OUT_MS);
|
|
7340
7339
|
}
|
|
7341
7340
|
return 1;
|
|
7342
7341
|
}
|
|
7343
|
-
function
|
|
7344
|
-
var
|
|
7342
|
+
function partitionShowcase(overlays) {
|
|
7343
|
+
var visible = overlays.filter(function(o) {
|
|
7344
|
+
return o.visible;
|
|
7345
|
+
});
|
|
7346
|
+
var persistent = [];
|
|
7347
|
+
var spotlight = [];
|
|
7348
|
+
var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;
|
|
7349
|
+
try {
|
|
7350
|
+
for(var _iterator = visible[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true){
|
|
7351
|
+
var o = _step.value;
|
|
7352
|
+
if (SHOWCASE_PERSISTENT_TYPES.has(o.type)) persistent.push(o);
|
|
7353
|
+
else spotlight.push(o);
|
|
7354
|
+
}
|
|
7355
|
+
} catch (err) {
|
|
7356
|
+
_didIteratorError = true;
|
|
7357
|
+
_iteratorError = err;
|
|
7358
|
+
} finally{
|
|
7359
|
+
try {
|
|
7360
|
+
if (!_iteratorNormalCompletion && _iterator.return != null) {
|
|
7361
|
+
_iterator.return();
|
|
7362
|
+
}
|
|
7363
|
+
} finally{
|
|
7364
|
+
if (_didIteratorError) {
|
|
7365
|
+
throw _iteratorError;
|
|
7366
|
+
}
|
|
7367
|
+
}
|
|
7368
|
+
}
|
|
7369
|
+
spotlight.sort(function(a, b) {
|
|
7370
|
+
return a.z_index - b.z_index || a.id - b.id;
|
|
7371
|
+
});
|
|
7372
|
+
var beats = [];
|
|
7373
|
+
var _iteratorNormalCompletion1 = true, _didIteratorError1 = false, _iteratorError1 = undefined;
|
|
7374
|
+
try {
|
|
7375
|
+
for(var _iterator1 = spotlight[Symbol.iterator](), _step1; !(_iteratorNormalCompletion1 = (_step1 = _iterator1.next()).done); _iteratorNormalCompletion1 = true){
|
|
7376
|
+
var o1 = _step1.value;
|
|
7377
|
+
beats.push([
|
|
7378
|
+
o1
|
|
7379
|
+
]);
|
|
7380
|
+
}
|
|
7381
|
+
} catch (err) {
|
|
7382
|
+
_didIteratorError1 = true;
|
|
7383
|
+
_iteratorError1 = err;
|
|
7384
|
+
} finally{
|
|
7385
|
+
try {
|
|
7386
|
+
if (!_iteratorNormalCompletion1 && _iterator1.return != null) {
|
|
7387
|
+
_iterator1.return();
|
|
7388
|
+
}
|
|
7389
|
+
} finally{
|
|
7390
|
+
if (_didIteratorError1) {
|
|
7391
|
+
throw _iteratorError1;
|
|
7392
|
+
}
|
|
7393
|
+
}
|
|
7394
|
+
}
|
|
7395
|
+
return {
|
|
7396
|
+
persistent: persistent,
|
|
7397
|
+
beats: beats
|
|
7398
|
+
};
|
|
7399
|
+
}
|
|
7400
|
+
function useShowcaseBeat(enabled, cycleMs, beats) {
|
|
7401
|
+
var safeBeats = Math.max(1, beats);
|
|
7402
|
+
var beatMs = Math.max(SHOWCASE_MIN_BEAT_MS, Math.floor(cycleMs / safeBeats));
|
|
7403
|
+
var totalMs = beatMs * safeBeats;
|
|
7404
|
+
var _ref = _sliced_to_array((0, import_react.useState)(function() {
|
|
7405
|
+
return Date.now();
|
|
7406
|
+
}), 2), now = _ref[0], setNow = _ref[1];
|
|
7345
7407
|
(0, import_react.useEffect)(function() {
|
|
7346
7408
|
if (!enabled) return;
|
|
7347
|
-
setPhase(Date.now() % cycleMs);
|
|
7348
7409
|
var id = window.setInterval(function() {
|
|
7349
|
-
|
|
7350
|
-
},
|
|
7410
|
+
return setNow(Date.now());
|
|
7411
|
+
}, 64);
|
|
7351
7412
|
return function() {
|
|
7352
7413
|
return clearInterval(id);
|
|
7353
7414
|
};
|
|
7354
7415
|
}, [
|
|
7355
|
-
enabled
|
|
7356
|
-
cycleMs
|
|
7416
|
+
enabled
|
|
7357
7417
|
]);
|
|
7358
|
-
|
|
7418
|
+
var phase = now % totalMs;
|
|
7419
|
+
var beatIndex = Math.min(safeBeats - 1, Math.floor(phase / beatMs));
|
|
7420
|
+
var beatPhase = phase - beatIndex * beatMs;
|
|
7421
|
+
return {
|
|
7422
|
+
beatIndex: beatIndex,
|
|
7423
|
+
beatPhase: beatPhase,
|
|
7424
|
+
beatMs: beatMs
|
|
7425
|
+
};
|
|
7359
7426
|
}
|
|
7360
7427
|
var OverlayRenderer = function OverlayRenderer(param) {
|
|
7361
7428
|
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;
|
|
@@ -7363,7 +7430,28 @@ var OverlayRenderer = function OverlayRenderer(param) {
|
|
|
7363
7430
|
var rafRef = (0, import_react.useRef)(null);
|
|
7364
7431
|
var _ref1 = _sliced_to_array((0, import_react.useState)(/* @__PURE__ */ new Map()), 2), fadeMap = _ref1[0], setFadeMap = _ref1[1];
|
|
7365
7432
|
var removeTimers = (0, import_react.useRef)(/* @__PURE__ */ new Map());
|
|
7366
|
-
var
|
|
7433
|
+
var _ref2 = (0, import_react.useMemo)(function() {
|
|
7434
|
+
return partitionShowcase(overlays);
|
|
7435
|
+
}, [
|
|
7436
|
+
overlays
|
|
7437
|
+
]), showcasePersistent = _ref2.persistent, showcaseBeats = _ref2.beats;
|
|
7438
|
+
var _useShowcaseBeat = useShowcaseBeat(showcaseMode, showcaseCycleMs, showcaseBeats.length), showcaseBeatIndex = _useShowcaseBeat.beatIndex, showcaseBeatPhase = _useShowcaseBeat.beatPhase, showcaseBeatMs = _useShowcaseBeat.beatMs;
|
|
7439
|
+
var showcasePersistentIds = (0, import_react.useMemo)(function() {
|
|
7440
|
+
return new Set(showcasePersistent.map(function(o) {
|
|
7441
|
+
return o.id;
|
|
7442
|
+
}));
|
|
7443
|
+
}, [
|
|
7444
|
+
showcasePersistent
|
|
7445
|
+
]);
|
|
7446
|
+
var showcaseSpotlightIds = (0, import_react.useMemo)(function() {
|
|
7447
|
+
var beat = showcaseBeats[showcaseBeatIndex];
|
|
7448
|
+
return new Set((beat !== null && beat !== void 0 ? beat : []).map(function(o) {
|
|
7449
|
+
return o.id;
|
|
7450
|
+
}));
|
|
7451
|
+
}, [
|
|
7452
|
+
showcaseBeats,
|
|
7453
|
+
showcaseBeatIndex
|
|
7454
|
+
]);
|
|
7367
7455
|
var updateDims = (0, import_react.useCallback)(function() {
|
|
7368
7456
|
var video = videoRef.current;
|
|
7369
7457
|
if (video) {
|
|
@@ -7396,10 +7484,9 @@ var OverlayRenderer = function OverlayRenderer(param) {
|
|
|
7396
7484
|
]);
|
|
7397
7485
|
var activeOverlays = (0, import_react.useMemo)(function() {
|
|
7398
7486
|
if (showcaseMode) {
|
|
7399
|
-
|
|
7400
|
-
|
|
7401
|
-
|
|
7402
|
-
});
|
|
7487
|
+
var _showcaseBeats_showcaseBeatIndex;
|
|
7488
|
+
var beat = (_showcaseBeats_showcaseBeatIndex = showcaseBeats[showcaseBeatIndex]) !== null && _showcaseBeats_showcaseBeatIndex !== void 0 ? _showcaseBeats_showcaseBeatIndex : [];
|
|
7489
|
+
return _to_consumable_array(showcasePersistent).concat(_to_consumable_array(beat));
|
|
7403
7490
|
}
|
|
7404
7491
|
return overlays.filter(function(o) {
|
|
7405
7492
|
return isOverlayActive(o, currentTime);
|
|
@@ -7408,14 +7495,9 @@ var OverlayRenderer = function OverlayRenderer(param) {
|
|
|
7408
7495
|
overlays,
|
|
7409
7496
|
currentTime,
|
|
7410
7497
|
showcaseMode,
|
|
7411
|
-
|
|
7412
|
-
|
|
7413
|
-
|
|
7414
|
-
return new Set(activeOverlays.map(function(o) {
|
|
7415
|
-
return o.id;
|
|
7416
|
-
}));
|
|
7417
|
-
}, [
|
|
7418
|
-
activeOverlays
|
|
7498
|
+
showcasePersistent,
|
|
7499
|
+
showcaseBeats,
|
|
7500
|
+
showcaseBeatIndex
|
|
7419
7501
|
]);
|
|
7420
7502
|
(0, import_react.useLayoutEffect)(function() {
|
|
7421
7503
|
var activeIds = new Set(activeOverlays.map(function(o) {
|
|
@@ -7610,10 +7692,12 @@ var OverlayRenderer = function OverlayRenderer(param) {
|
|
|
7610
7692
|
var width = overlay.width * scaleX;
|
|
7611
7693
|
var height = overlay.height * scaleY;
|
|
7612
7694
|
var baseOpacity = Math.max(0, Math.min(100, overlay.opacity)) / 100;
|
|
7613
|
-
var
|
|
7614
|
-
var
|
|
7615
|
-
var
|
|
7616
|
-
var
|
|
7695
|
+
var isShowcasePersistent = showcaseMode && showcasePersistentIds.has(overlay.id);
|
|
7696
|
+
var isShowcaseSpotlight = showcaseMode && showcaseSpotlightIds.has(overlay.id);
|
|
7697
|
+
var isShowcaseDormant = showcaseMode && !isShowcasePersistent && !isShowcaseSpotlight;
|
|
7698
|
+
var useShowcasePop = isShowcaseSpotlight;
|
|
7699
|
+
var opacity = useShowcasePop ? baseOpacity * beatOpacity(showcaseBeatPhase, showcaseBeatMs) : isShowcaseDormant ? 0 : visible ? baseOpacity : 0;
|
|
7700
|
+
var popScale = useShowcasePop ? beatScale(showcaseBeatPhase, showcaseBeatMs) : 1;
|
|
7617
7701
|
var sz = {
|
|
7618
7702
|
w: width,
|
|
7619
7703
|
h: height
|