stormcloud-video-player 0.6.5 → 0.7.0
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 +570 -119
- package/lib/index.cjs.map +1 -1
- package/lib/index.d.cts +64 -1
- package/lib/index.d.ts +64 -1
- package/lib/index.js +536 -101
- package/lib/index.js.map +1 -1
- package/lib/player/StormcloudVideoPlayer.cjs +66 -1
- package/lib/player/StormcloudVideoPlayer.cjs.map +1 -1
- package/lib/player/StormcloudVideoPlayer.d.cts +4 -0
- package/lib/players/HlsPlayer.cjs +66 -1
- package/lib/players/HlsPlayer.cjs.map +1 -1
- package/lib/players/index.cjs +66 -1
- package/lib/players/index.cjs.map +1 -1
- package/lib/sdk/vastAdLayer.cjs +26 -1
- package/lib/sdk/vastAdLayer.cjs.map +1 -1
- package/lib/ui/OverlayRenderer.cjs +392 -0
- package/lib/ui/OverlayRenderer.cjs.map +1 -0
- package/lib/ui/OverlayRenderer.d.cts +15 -0
- package/lib/ui/StormcloudVideoPlayer.cjs +530 -95
- package/lib/ui/StormcloudVideoPlayer.cjs.map +1 -1
- package/lib/ui/StormcloudVideoPlayer.d.cts +1 -0
- package/lib/utils/overlays.cjs +286 -0
- package/lib/utils/overlays.cjs.map +1 -0
- package/lib/utils/overlays.d.cts +59 -0
- package/package.json +1 -1
package/lib/index.cjs
CHANGED
|
@@ -473,6 +473,9 @@ __export(index_exports, {
|
|
|
473
473
|
detectBrowser: function detectBrowser1() {
|
|
474
474
|
return detectBrowser;
|
|
475
475
|
},
|
|
476
|
+
fetchProjectOverlays: function fetchProjectOverlays1() {
|
|
477
|
+
return fetchProjectOverlays;
|
|
478
|
+
},
|
|
476
479
|
getBrowserConfigOverrides: function getBrowserConfigOverrides1() {
|
|
477
480
|
return getBrowserConfigOverrides;
|
|
478
481
|
},
|
|
@@ -488,6 +491,9 @@ __export(index_exports, {
|
|
|
488
491
|
isMediaStream: function isMediaStream1() {
|
|
489
492
|
return isMediaStream;
|
|
490
493
|
},
|
|
494
|
+
isOverlayActive: function isOverlayActive1() {
|
|
495
|
+
return isOverlayActive;
|
|
496
|
+
},
|
|
491
497
|
lazy: function lazy1() {
|
|
492
498
|
return lazy;
|
|
493
499
|
},
|
|
@@ -509,6 +515,9 @@ __export(index_exports, {
|
|
|
509
515
|
randomString: function randomString1() {
|
|
510
516
|
return randomString;
|
|
511
517
|
},
|
|
518
|
+
resolveImageUrl: function resolveImageUrl1() {
|
|
519
|
+
return resolveImageUrl;
|
|
520
|
+
},
|
|
512
521
|
sendHeartbeat: function sendHeartbeat1() {
|
|
513
522
|
return sendHeartbeat;
|
|
514
523
|
},
|
|
@@ -523,11 +532,14 @@ __export(index_exports, {
|
|
|
523
532
|
},
|
|
524
533
|
supportsWebKitPresentationMode: function supportsWebKitPresentationMode1() {
|
|
525
534
|
return supportsWebKitPresentationMode;
|
|
535
|
+
},
|
|
536
|
+
timeStringToSeconds: function timeStringToSeconds1() {
|
|
537
|
+
return timeStringToSeconds;
|
|
526
538
|
}
|
|
527
539
|
});
|
|
528
540
|
module.exports = __toCommonJS(index_exports);
|
|
529
541
|
// src/ui/StormcloudVideoPlayer.tsx
|
|
530
|
-
var
|
|
542
|
+
var import_react2 = __toESM(require("react"), 1);
|
|
531
543
|
// src/player/StormcloudVideoPlayer.ts
|
|
532
544
|
var import_hls2 = __toESM(require("hls.js"), 1);
|
|
533
545
|
// src/sdk/vastParser.ts
|
|
@@ -1124,6 +1136,7 @@ function createVastAdLayer(contentVideo, options) {
|
|
|
1124
1136
|
var tornDown = false;
|
|
1125
1137
|
var trackingFired = createEmptyTrackingState();
|
|
1126
1138
|
var adStallTimerId;
|
|
1139
|
+
var savedContentVideoStyles;
|
|
1127
1140
|
var currentAdEventHandlers;
|
|
1128
1141
|
var preloadSlots = /* @__PURE__ */ new Map();
|
|
1129
1142
|
function emit(event, payload) {
|
|
@@ -1240,7 +1253,7 @@ function createVastAdLayer(contentVideo, options) {
|
|
|
1240
1253
|
video.style.top = "0";
|
|
1241
1254
|
video.style.width = "100%";
|
|
1242
1255
|
video.style.height = "100%";
|
|
1243
|
-
video.style.objectFit = "
|
|
1256
|
+
video.style.objectFit = "cover";
|
|
1244
1257
|
video.style.backgroundColor = "#000";
|
|
1245
1258
|
video.playsInline = true;
|
|
1246
1259
|
video.muted = false;
|
|
@@ -1355,12 +1368,31 @@ function createVastAdLayer(contentVideo, options) {
|
|
|
1355
1368
|
delete contentVideo.dataset.stormcloudAdPlaying;
|
|
1356
1369
|
}
|
|
1357
1370
|
}
|
|
1371
|
+
function applyContentVideoAdCoverStyles() {
|
|
1372
|
+
if (!singleElementMode) return;
|
|
1373
|
+
savedContentVideoStyles = {
|
|
1374
|
+
objectFit: contentVideo.style.objectFit,
|
|
1375
|
+
width: contentVideo.style.width,
|
|
1376
|
+
height: contentVideo.style.height
|
|
1377
|
+
};
|
|
1378
|
+
contentVideo.style.objectFit = "cover";
|
|
1379
|
+
contentVideo.style.width = "100%";
|
|
1380
|
+
contentVideo.style.height = "100%";
|
|
1381
|
+
}
|
|
1382
|
+
function restoreContentVideoStyles() {
|
|
1383
|
+
if (!singleElementMode || !savedContentVideoStyles) return;
|
|
1384
|
+
contentVideo.style.objectFit = savedContentVideoStyles.objectFit;
|
|
1385
|
+
contentVideo.style.width = savedContentVideoStyles.width;
|
|
1386
|
+
contentVideo.style.height = savedContentVideoStyles.height;
|
|
1387
|
+
savedContentVideoStyles = void 0;
|
|
1388
|
+
}
|
|
1358
1389
|
function handleAdComplete() {
|
|
1359
1390
|
if (tornDown) return;
|
|
1360
1391
|
clearAdStallTimer();
|
|
1361
1392
|
if (debug) console.log("".concat(LOG, " Handling ad completion"));
|
|
1362
1393
|
adPlaying = false;
|
|
1363
1394
|
setAdPlayingFlag(false);
|
|
1395
|
+
restoreContentVideoStyles();
|
|
1364
1396
|
if (adContainerEl) {
|
|
1365
1397
|
adContainerEl.style.display = "none";
|
|
1366
1398
|
adContainerEl.style.pointerEvents = "none";
|
|
@@ -1375,6 +1407,7 @@ function createVastAdLayer(contentVideo, options) {
|
|
|
1375
1407
|
if (debug) console.log("".concat(LOG, " Handling ad error"));
|
|
1376
1408
|
adPlaying = false;
|
|
1377
1409
|
setAdPlayingFlag(false);
|
|
1410
|
+
restoreContentVideoStyles();
|
|
1378
1411
|
if (adContainerEl) {
|
|
1379
1412
|
adContainerEl.style.display = "none";
|
|
1380
1413
|
adContainerEl.style.pointerEvents = "none";
|
|
@@ -1545,6 +1578,7 @@ function createVastAdLayer(contentVideo, options) {
|
|
|
1545
1578
|
];
|
|
1546
1579
|
contentVideo.style.visibility = "visible";
|
|
1547
1580
|
contentVideo.style.opacity = "1";
|
|
1581
|
+
applyContentVideoAdCoverStyles();
|
|
1548
1582
|
emit("content_pause");
|
|
1549
1583
|
setupAdEventListeners();
|
|
1550
1584
|
adVolume2 = originalMutedState ? 1 : originalVolume;
|
|
@@ -1783,6 +1817,7 @@ function createVastAdLayer(contentVideo, options) {
|
|
|
1783
1817
|
];
|
|
1784
1818
|
contentVideo.style.visibility = "visible";
|
|
1785
1819
|
contentVideo.style.opacity = "1";
|
|
1820
|
+
applyContentVideoAdCoverStyles();
|
|
1786
1821
|
emit("content_pause");
|
|
1787
1822
|
setupAdEventListeners();
|
|
1788
1823
|
adVolume2 = originalMutedState ? 1 : originalVolume;
|
|
@@ -1933,6 +1968,7 @@ function createVastAdLayer(contentVideo, options) {
|
|
|
1933
1968
|
if (debug) console.log("".concat(LOG, " Stopping ad"));
|
|
1934
1969
|
adPlaying = false;
|
|
1935
1970
|
setAdPlayingFlag(false);
|
|
1971
|
+
restoreContentVideoStyles();
|
|
1936
1972
|
contentVideo.muted = originalMutedState;
|
|
1937
1973
|
contentVideo.volume = originalMutedState ? 0 : originalVolume;
|
|
1938
1974
|
contentVideo.style.visibility = "visible";
|
|
@@ -1971,6 +2007,7 @@ function createVastAdLayer(contentVideo, options) {
|
|
|
1971
2007
|
destroyed = true;
|
|
1972
2008
|
adPlaying = false;
|
|
1973
2009
|
setAdPlayingFlag(false);
|
|
2010
|
+
restoreContentVideoStyles();
|
|
1974
2011
|
contentVideo.muted = originalMutedState;
|
|
1975
2012
|
contentVideo.volume = originalVolume;
|
|
1976
2013
|
var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;
|
|
@@ -6164,6 +6201,46 @@ var StormcloudVideoPlayer = /*#__PURE__*/ function() {
|
|
|
6164
6201
|
return this.isLiveStream;
|
|
6165
6202
|
}
|
|
6166
6203
|
},
|
|
6204
|
+
{
|
|
6205
|
+
key: "getMinHlsResolution",
|
|
6206
|
+
value: function getMinHlsResolution() {
|
|
6207
|
+
var _this_hls;
|
|
6208
|
+
var levels = (_this_hls = this.hls) === null || _this_hls === void 0 ? void 0 : _this_hls.levels;
|
|
6209
|
+
if (!levels || levels.length === 0) return null;
|
|
6210
|
+
var min = null;
|
|
6211
|
+
var minPixels = Infinity;
|
|
6212
|
+
var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;
|
|
6213
|
+
try {
|
|
6214
|
+
for(var _iterator = levels[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true){
|
|
6215
|
+
var level = _step.value;
|
|
6216
|
+
if (level.width && level.height) {
|
|
6217
|
+
var pixels = level.width * level.height;
|
|
6218
|
+
if (pixels < minPixels) {
|
|
6219
|
+
minPixels = pixels;
|
|
6220
|
+
min = {
|
|
6221
|
+
width: level.width,
|
|
6222
|
+
height: level.height
|
|
6223
|
+
};
|
|
6224
|
+
}
|
|
6225
|
+
}
|
|
6226
|
+
}
|
|
6227
|
+
} catch (err) {
|
|
6228
|
+
_didIteratorError = true;
|
|
6229
|
+
_iteratorError = err;
|
|
6230
|
+
} finally{
|
|
6231
|
+
try {
|
|
6232
|
+
if (!_iteratorNormalCompletion && _iterator.return != null) {
|
|
6233
|
+
_iterator.return();
|
|
6234
|
+
}
|
|
6235
|
+
} finally{
|
|
6236
|
+
if (_didIteratorError) {
|
|
6237
|
+
throw _iteratorError;
|
|
6238
|
+
}
|
|
6239
|
+
}
|
|
6240
|
+
}
|
|
6241
|
+
return min;
|
|
6242
|
+
}
|
|
6243
|
+
},
|
|
6167
6244
|
{
|
|
6168
6245
|
key: "videoElement",
|
|
6169
6246
|
get: function get() {
|
|
@@ -6226,7 +6303,322 @@ var StormcloudVideoPlayer = /*#__PURE__*/ function() {
|
|
|
6226
6303
|
}();
|
|
6227
6304
|
// src/ui/StormcloudVideoPlayer.tsx
|
|
6228
6305
|
var import_fa = require("react-icons/fa");
|
|
6306
|
+
// src/ui/OverlayRenderer.tsx
|
|
6307
|
+
var import_react = require("react");
|
|
6308
|
+
// src/utils/overlays.ts
|
|
6309
|
+
var OVERLAY_API_BASE = "https://adstorm.co/api-adstorm-dev";
|
|
6310
|
+
function timeStringToSeconds(timeStr) {
|
|
6311
|
+
if (!timeStr) return 0;
|
|
6312
|
+
var parts = timeStr.split(":");
|
|
6313
|
+
if (parts.length >= 3) {
|
|
6314
|
+
var _parts_, _parts_1, _parts_2;
|
|
6315
|
+
var hours = parseInt((_parts_ = parts[0]) !== null && _parts_ !== void 0 ? _parts_ : "0", 10) || 0;
|
|
6316
|
+
var minutes = parseInt((_parts_1 = parts[1]) !== null && _parts_1 !== void 0 ? _parts_1 : "0", 10) || 0;
|
|
6317
|
+
var secStr = (_parts_2 = parts[2]) !== null && _parts_2 !== void 0 ? _parts_2 : "0";
|
|
6318
|
+
var dotIdx = secStr.indexOf(".");
|
|
6319
|
+
var seconds = parseInt(dotIdx >= 0 ? secStr.substring(0, dotIdx) : secStr, 10) || 0;
|
|
6320
|
+
var msFrag = dotIdx >= 0 ? secStr.substring(dotIdx + 1) : "";
|
|
6321
|
+
var ms = msFrag ? parseInt(msFrag.padEnd(3, "0").substring(0, 3), 10) || 0 : 0;
|
|
6322
|
+
return hours * 3600 + minutes * 60 + seconds + ms / 1e3;
|
|
6323
|
+
}
|
|
6324
|
+
if (parts.length === 2) {
|
|
6325
|
+
var _parts_3, _parts_4;
|
|
6326
|
+
var minutes1 = parseInt((_parts_3 = parts[0]) !== null && _parts_3 !== void 0 ? _parts_3 : "0", 10) || 0;
|
|
6327
|
+
var secStr1 = (_parts_4 = parts[1]) !== null && _parts_4 !== void 0 ? _parts_4 : "0";
|
|
6328
|
+
var dotIdx1 = secStr1.indexOf(".");
|
|
6329
|
+
var seconds1 = parseInt(dotIdx1 >= 0 ? secStr1.substring(0, dotIdx1) : secStr1, 10) || 0;
|
|
6330
|
+
var msFrag1 = dotIdx1 >= 0 ? secStr1.substring(dotIdx1 + 1) : "";
|
|
6331
|
+
var ms1 = msFrag1 ? parseInt(msFrag1.padEnd(3, "0").substring(0, 3), 10) || 0 : 0;
|
|
6332
|
+
return minutes1 * 60 + seconds1 + ms1 / 1e3;
|
|
6333
|
+
}
|
|
6334
|
+
var num = parseFloat(timeStr);
|
|
6335
|
+
return isFinite(num) ? Math.max(0, num) : 0;
|
|
6336
|
+
}
|
|
6337
|
+
function isOverlayActive(overlay, currentTime) {
|
|
6338
|
+
if (!overlay.visible) return false;
|
|
6339
|
+
var startSec = timeStringToSeconds(overlay.start_time);
|
|
6340
|
+
var durationSec = timeStringToSeconds(overlay.duration);
|
|
6341
|
+
if (durationSec <= 0) return false;
|
|
6342
|
+
return currentTime >= startSec && currentTime < startSec + durationSec;
|
|
6343
|
+
}
|
|
6344
|
+
function fetchProjectOverlays(_0) {
|
|
6345
|
+
return _async_to_generator(function(projectId) {
|
|
6346
|
+
var apiBaseUrl, response, data;
|
|
6347
|
+
var _arguments = arguments;
|
|
6348
|
+
return _ts_generator(this, function(_state) {
|
|
6349
|
+
switch(_state.label){
|
|
6350
|
+
case 0:
|
|
6351
|
+
apiBaseUrl = _arguments.length > 1 && _arguments[1] !== void 0 ? _arguments[1] : OVERLAY_API_BASE;
|
|
6352
|
+
return [
|
|
6353
|
+
4,
|
|
6354
|
+
fetch("".concat(apiBaseUrl, "/adstorm/swirl/projects/").concat(projectId, "/overlays"))
|
|
6355
|
+
];
|
|
6356
|
+
case 1:
|
|
6357
|
+
response = _state.sent();
|
|
6358
|
+
if (!response.ok) {
|
|
6359
|
+
throw new Error("Failed to fetch overlays: ".concat(response.status, " ").concat(response.statusText));
|
|
6360
|
+
}
|
|
6361
|
+
return [
|
|
6362
|
+
4,
|
|
6363
|
+
response.json()
|
|
6364
|
+
];
|
|
6365
|
+
case 2:
|
|
6366
|
+
data = _state.sent();
|
|
6367
|
+
return [
|
|
6368
|
+
2,
|
|
6369
|
+
Array.isArray(data) ? data : []
|
|
6370
|
+
];
|
|
6371
|
+
}
|
|
6372
|
+
});
|
|
6373
|
+
}).apply(this, arguments);
|
|
6374
|
+
}
|
|
6375
|
+
function resolveImageUrl(imageUrl) {
|
|
6376
|
+
var apiBaseUrl = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : OVERLAY_API_BASE;
|
|
6377
|
+
if (!imageUrl) return "";
|
|
6378
|
+
if (imageUrl.startsWith("http://") || imageUrl.startsWith("https://")) {
|
|
6379
|
+
return imageUrl;
|
|
6380
|
+
}
|
|
6381
|
+
if (imageUrl.startsWith("/")) {
|
|
6382
|
+
try {
|
|
6383
|
+
var url = new URL(apiBaseUrl);
|
|
6384
|
+
return "".concat(url.origin).concat(imageUrl);
|
|
6385
|
+
} catch (unused) {
|
|
6386
|
+
return imageUrl;
|
|
6387
|
+
}
|
|
6388
|
+
}
|
|
6389
|
+
return "".concat(apiBaseUrl, "/").concat(imageUrl);
|
|
6390
|
+
}
|
|
6391
|
+
// src/ui/OverlayRenderer.tsx
|
|
6229
6392
|
var import_jsx_runtime = require("react/jsx-runtime");
|
|
6393
|
+
function computeVideoDimensions(video) {
|
|
6394
|
+
var nativeWidth = video.videoWidth;
|
|
6395
|
+
var nativeHeight = video.videoHeight;
|
|
6396
|
+
if (!nativeWidth || !nativeHeight) return null;
|
|
6397
|
+
var displayWidth = video.offsetWidth;
|
|
6398
|
+
var displayHeight = video.offsetHeight;
|
|
6399
|
+
if (!displayWidth || !displayHeight) return null;
|
|
6400
|
+
var videoAspect = nativeWidth / nativeHeight;
|
|
6401
|
+
var displayAspect = displayWidth / displayHeight;
|
|
6402
|
+
var renderWidth;
|
|
6403
|
+
var renderHeight;
|
|
6404
|
+
var offsetX;
|
|
6405
|
+
var offsetY;
|
|
6406
|
+
if (videoAspect > displayAspect) {
|
|
6407
|
+
renderWidth = displayWidth;
|
|
6408
|
+
renderHeight = displayWidth / videoAspect;
|
|
6409
|
+
offsetX = 0;
|
|
6410
|
+
offsetY = (displayHeight - renderHeight) / 2;
|
|
6411
|
+
} else {
|
|
6412
|
+
renderHeight = displayHeight;
|
|
6413
|
+
renderWidth = displayHeight * videoAspect;
|
|
6414
|
+
offsetX = (displayWidth - renderWidth) / 2;
|
|
6415
|
+
offsetY = 0;
|
|
6416
|
+
}
|
|
6417
|
+
return {
|
|
6418
|
+
nativeWidth: nativeWidth,
|
|
6419
|
+
nativeHeight: nativeHeight,
|
|
6420
|
+
displayWidth: renderWidth,
|
|
6421
|
+
displayHeight: renderHeight,
|
|
6422
|
+
offsetX: offsetX,
|
|
6423
|
+
offsetY: offsetY,
|
|
6424
|
+
scaleX: renderWidth / nativeWidth,
|
|
6425
|
+
scaleY: renderHeight / nativeHeight
|
|
6426
|
+
};
|
|
6427
|
+
}
|
|
6428
|
+
function ImageOverlay(param) {
|
|
6429
|
+
var overlay = param.overlay;
|
|
6430
|
+
var src = resolveImageUrl(overlay.image_url || "");
|
|
6431
|
+
if (!src) return null;
|
|
6432
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("img", {
|
|
6433
|
+
src: src,
|
|
6434
|
+
alt: overlay.name,
|
|
6435
|
+
draggable: false,
|
|
6436
|
+
style: {
|
|
6437
|
+
width: "100%",
|
|
6438
|
+
height: "100%",
|
|
6439
|
+
objectFit: "contain",
|
|
6440
|
+
display: "block",
|
|
6441
|
+
pointerEvents: "none",
|
|
6442
|
+
userSelect: "none"
|
|
6443
|
+
}
|
|
6444
|
+
});
|
|
6445
|
+
}
|
|
6446
|
+
function TextOverlay(param) {
|
|
6447
|
+
var overlay = param.overlay;
|
|
6448
|
+
var text = overlay.content || "";
|
|
6449
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
|
|
6450
|
+
style: {
|
|
6451
|
+
width: "100%",
|
|
6452
|
+
height: "100%",
|
|
6453
|
+
display: "flex",
|
|
6454
|
+
alignItems: "center",
|
|
6455
|
+
justifyContent: "center",
|
|
6456
|
+
color: "#ffffff",
|
|
6457
|
+
fontSize: "clamp(10px, 1.4vw, 20px)",
|
|
6458
|
+
fontFamily: "Roboto, 'Segoe UI', Arial, sans-serif",
|
|
6459
|
+
fontWeight: 600,
|
|
6460
|
+
textAlign: "center",
|
|
6461
|
+
padding: "4px 8px",
|
|
6462
|
+
boxSizing: "border-box",
|
|
6463
|
+
wordBreak: "break-word",
|
|
6464
|
+
textShadow: "0 1px 4px rgba(0,0,0,0.7)",
|
|
6465
|
+
pointerEvents: "none",
|
|
6466
|
+
userSelect: "none",
|
|
6467
|
+
lineHeight: 1.3
|
|
6468
|
+
},
|
|
6469
|
+
children: text
|
|
6470
|
+
});
|
|
6471
|
+
}
|
|
6472
|
+
function ScrollerOverlay(param) {
|
|
6473
|
+
var overlay = param.overlay;
|
|
6474
|
+
var _ref, _ref1, _ref2, _ref3, _ref4;
|
|
6475
|
+
var cfg = overlay.scroller_config;
|
|
6476
|
+
var text = (cfg === null || cfg === void 0 ? void 0 : cfg.use_custom_text) && cfg.custom_text ? cfg.custom_text : overlay.content || (cfg === null || cfg === void 0 ? void 0 : cfg.custom_text) || "";
|
|
6477
|
+
var scrollSpeed = (_ref = cfg === null || cfg === void 0 ? void 0 : cfg.scroll_speed) !== null && _ref !== void 0 ? _ref : 50;
|
|
6478
|
+
var direction = (_ref1 = cfg === null || cfg === void 0 ? void 0 : cfg.direction) !== null && _ref1 !== void 0 ? _ref1 : "left";
|
|
6479
|
+
var fontSize = (cfg === null || cfg === void 0 ? void 0 : cfg.font_size) ? "".concat(cfg.font_size, "px") : "clamp(10px, 1.2vw, 18px)";
|
|
6480
|
+
var fontFamily = (cfg === null || cfg === void 0 ? void 0 : cfg.font_family) || "Roboto, 'Segoe UI', Arial, sans-serif";
|
|
6481
|
+
var fontWeight = (cfg === null || cfg === void 0 ? void 0 : cfg.font_weight) || "600";
|
|
6482
|
+
var textColor = (cfg === null || cfg === void 0 ? void 0 : cfg.text_color) || "#ffffff";
|
|
6483
|
+
var bgColor = (cfg === null || cfg === void 0 ? void 0 : cfg.background_color) || "transparent";
|
|
6484
|
+
var bgOpacity = (cfg === null || cfg === void 0 ? void 0 : cfg.background_opacity) !== void 0 ? cfg.background_opacity / 100 : 0;
|
|
6485
|
+
var borderColor = (cfg === null || cfg === void 0 ? void 0 : cfg.border_color) || "transparent";
|
|
6486
|
+
var borderWidth = (_ref2 = cfg === null || cfg === void 0 ? void 0 : cfg.border_width) !== null && _ref2 !== void 0 ? _ref2 : 0;
|
|
6487
|
+
var borderRadius = (_ref3 = cfg === null || cfg === void 0 ? void 0 : cfg.border_radius) !== null && _ref3 !== void 0 ? _ref3 : 0;
|
|
6488
|
+
var padding = (_ref4 = cfg === null || cfg === void 0 ? void 0 : cfg.padding) !== null && _ref4 !== void 0 ? _ref4 : 4;
|
|
6489
|
+
var isVertical = direction === "up" || direction === "down";
|
|
6490
|
+
var isReverse = direction === "right" || direction === "down";
|
|
6491
|
+
var durationSec = Math.max(3, 120 - scrollSpeed);
|
|
6492
|
+
var animId = "sc-scroller-".concat(overlay.id);
|
|
6493
|
+
var keyframes = isVertical ? "@keyframes ".concat(animId, " {\n 0% { transform: translateY(").concat(isReverse ? "-100%" : "100%", "); }\n 100% { transform: translateY(").concat(isReverse ? "100%" : "-100%", "); }\n }") : "@keyframes ".concat(animId, " {\n 0% { transform: translateX(").concat(isReverse ? "-100%" : "100%", "); }\n 100% { transform: translateX(").concat(isReverse ? "100%" : "-100%", "); }\n }");
|
|
6494
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment, {
|
|
6495
|
+
children: [
|
|
6496
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("style", {
|
|
6497
|
+
children: keyframes
|
|
6498
|
+
}),
|
|
6499
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
|
|
6500
|
+
style: {
|
|
6501
|
+
width: "100%",
|
|
6502
|
+
height: "100%",
|
|
6503
|
+
overflow: "hidden",
|
|
6504
|
+
display: "flex",
|
|
6505
|
+
alignItems: "center",
|
|
6506
|
+
backgroundColor: bgOpacity > 0 ? "rgba(".concat(hexToRgb(bgColor), ", ").concat(bgOpacity, ")") : void 0,
|
|
6507
|
+
border: borderWidth > 0 ? "".concat(borderWidth, "px solid ").concat(borderColor) : void 0,
|
|
6508
|
+
borderRadius: borderRadius > 0 ? "".concat(borderRadius, "px") : void 0,
|
|
6509
|
+
padding: "".concat(padding, "px"),
|
|
6510
|
+
boxSizing: "border-box",
|
|
6511
|
+
pointerEvents: "none"
|
|
6512
|
+
},
|
|
6513
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
|
|
6514
|
+
style: {
|
|
6515
|
+
whiteSpace: "nowrap",
|
|
6516
|
+
fontSize: fontSize,
|
|
6517
|
+
fontFamily: fontFamily,
|
|
6518
|
+
fontWeight: fontWeight,
|
|
6519
|
+
color: textColor,
|
|
6520
|
+
animation: "".concat(animId, " ").concat(durationSec, "s linear infinite"),
|
|
6521
|
+
textShadow: "0 1px 4px rgba(0,0,0,0.5)",
|
|
6522
|
+
userSelect: "none"
|
|
6523
|
+
},
|
|
6524
|
+
children: text
|
|
6525
|
+
})
|
|
6526
|
+
})
|
|
6527
|
+
]
|
|
6528
|
+
});
|
|
6529
|
+
}
|
|
6530
|
+
function hexToRgb(hex) {
|
|
6531
|
+
if (!hex || !hex.startsWith("#")) return "0,0,0";
|
|
6532
|
+
var clean = hex.slice(1);
|
|
6533
|
+
var num = parseInt(clean.length === 3 ? clean.replace(/./g, "$&$&") : clean, 16);
|
|
6534
|
+
return "".concat(num >> 16 & 255, ",").concat(num >> 8 & 255, ",").concat(num & 255);
|
|
6535
|
+
}
|
|
6536
|
+
var OverlayRenderer = function OverlayRenderer(param) {
|
|
6537
|
+
var overlays = param.overlays, currentTime = param.currentTime, videoRef = param.videoRef, coordinateSpace = param.coordinateSpace;
|
|
6538
|
+
var _ref = _sliced_to_array((0, import_react.useState)(null), 2), dims = _ref[0], setDims = _ref[1];
|
|
6539
|
+
var rafRef = (0, import_react.useRef)(null);
|
|
6540
|
+
var updateDims = (0, import_react.useCallback)(function() {
|
|
6541
|
+
var video = videoRef.current;
|
|
6542
|
+
if (video) {
|
|
6543
|
+
var computed = computeVideoDimensions(video);
|
|
6544
|
+
setDims(function(prev) {
|
|
6545
|
+
if (!computed || prev && prev.nativeWidth === computed.nativeWidth && prev.nativeHeight === computed.nativeHeight && prev.displayWidth === computed.displayWidth && prev.displayHeight === computed.displayHeight && prev.offsetX === computed.offsetX && prev.offsetY === computed.offsetY) {
|
|
6546
|
+
return prev;
|
|
6547
|
+
}
|
|
6548
|
+
return computed;
|
|
6549
|
+
});
|
|
6550
|
+
}
|
|
6551
|
+
}, [
|
|
6552
|
+
videoRef
|
|
6553
|
+
]);
|
|
6554
|
+
(0, import_react.useEffect)(function() {
|
|
6555
|
+
updateDims();
|
|
6556
|
+
var interval = setInterval(updateDims, 500);
|
|
6557
|
+
var handleResize = function handleResize() {
|
|
6558
|
+
if (rafRef.current) cancelAnimationFrame(rafRef.current);
|
|
6559
|
+
rafRef.current = requestAnimationFrame(updateDims);
|
|
6560
|
+
};
|
|
6561
|
+
window.addEventListener("resize", handleResize);
|
|
6562
|
+
return function() {
|
|
6563
|
+
clearInterval(interval);
|
|
6564
|
+
window.removeEventListener("resize", handleResize);
|
|
6565
|
+
if (rafRef.current) cancelAnimationFrame(rafRef.current);
|
|
6566
|
+
};
|
|
6567
|
+
}, [
|
|
6568
|
+
updateDims
|
|
6569
|
+
]);
|
|
6570
|
+
var activeOverlays = overlays.filter(function(o) {
|
|
6571
|
+
return isOverlayActive(o, currentTime);
|
|
6572
|
+
});
|
|
6573
|
+
if (!dims || activeOverlays.length === 0) return null;
|
|
6574
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
|
|
6575
|
+
"aria-hidden": "true",
|
|
6576
|
+
style: {
|
|
6577
|
+
position: "absolute",
|
|
6578
|
+
left: "".concat(dims.offsetX, "px"),
|
|
6579
|
+
top: "".concat(dims.offsetY, "px"),
|
|
6580
|
+
width: "".concat(dims.displayWidth, "px"),
|
|
6581
|
+
height: "".concat(dims.displayHeight, "px"),
|
|
6582
|
+
pointerEvents: "none",
|
|
6583
|
+
overflow: "hidden",
|
|
6584
|
+
zIndex: 8
|
|
6585
|
+
},
|
|
6586
|
+
children: activeOverlays.map(function(overlay) {
|
|
6587
|
+
var scaleX = (coordinateSpace === null || coordinateSpace === void 0 ? void 0 : coordinateSpace.width) ? dims.displayWidth / coordinateSpace.width : dims.scaleX;
|
|
6588
|
+
var scaleY = (coordinateSpace === null || coordinateSpace === void 0 ? void 0 : coordinateSpace.height) ? dims.displayHeight / coordinateSpace.height : dims.scaleY;
|
|
6589
|
+
var left = overlay.x * scaleX;
|
|
6590
|
+
var top = overlay.y * scaleY;
|
|
6591
|
+
var width = overlay.width * scaleX;
|
|
6592
|
+
var height = overlay.height * scaleY;
|
|
6593
|
+
var opacity = Math.max(0, Math.min(100, overlay.opacity)) / 100;
|
|
6594
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
6595
|
+
style: {
|
|
6596
|
+
position: "absolute",
|
|
6597
|
+
left: "".concat(left, "px"),
|
|
6598
|
+
top: "".concat(top, "px"),
|
|
6599
|
+
width: "".concat(width, "px"),
|
|
6600
|
+
height: "".concat(height, "px"),
|
|
6601
|
+
opacity: opacity,
|
|
6602
|
+
zIndex: overlay.z_index,
|
|
6603
|
+
overflow: "hidden"
|
|
6604
|
+
},
|
|
6605
|
+
children: [
|
|
6606
|
+
overlay.type === "image" && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(ImageOverlay, {
|
|
6607
|
+
overlay: overlay
|
|
6608
|
+
}),
|
|
6609
|
+
overlay.type === "text" && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(TextOverlay, {
|
|
6610
|
+
overlay: overlay
|
|
6611
|
+
}),
|
|
6612
|
+
overlay.type === "scroller" && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(ScrollerOverlay, {
|
|
6613
|
+
overlay: overlay
|
|
6614
|
+
})
|
|
6615
|
+
]
|
|
6616
|
+
}, overlay.id);
|
|
6617
|
+
})
|
|
6618
|
+
});
|
|
6619
|
+
};
|
|
6620
|
+
// src/ui/StormcloudVideoPlayer.tsx
|
|
6621
|
+
var import_jsx_runtime2 = require("react/jsx-runtime");
|
|
6230
6622
|
var CRITICAL_PROPS = [
|
|
6231
6623
|
"src",
|
|
6232
6624
|
"allowNativeHls",
|
|
@@ -6235,8 +6627,8 @@ var CRITICAL_PROPS = [
|
|
|
6235
6627
|
"driftToleranceMs"
|
|
6236
6628
|
];
|
|
6237
6629
|
var CONTROLS_HIDE_DELAY = 3e3;
|
|
6238
|
-
var StormcloudVideoPlayerComponent =
|
|
6239
|
-
var src = props.src, autoplay = props.autoplay, muted = props.muted, lowLatencyMode = props.lowLatencyMode, allowNativeHls = props.allowNativeHls, driftToleranceMs = props.driftToleranceMs, immediateManifestAds = props.immediateManifestAds, debugAdTiming = props.debugAdTiming, showCustomControls = props.showCustomControls, hideLoadingIndicator = props.hideLoadingIndicator, onVolumeToggle = props.onVolumeToggle, onFullscreenToggle = props.onFullscreenToggle, onControlClick = props.onControlClick, onReady = props.onReady, wrapperClassName = props.wrapperClassName, wrapperStyle = props.wrapperStyle, className = props.className, style = props.style, controls = props.controls, playsInline = props.playsInline, preload = props.preload, poster = props.poster, children = props.children, licenseKey = props.licenseKey, minSegmentsBeforePlay = props.minSegmentsBeforePlay, disableAds = props.disableAds, disableFiller = props.disableFiller, restVideoAttrs = _object_without_properties(props, [
|
|
6630
|
+
var StormcloudVideoPlayerComponent = import_react2.default.memo(function(props) {
|
|
6631
|
+
var src = props.src, autoplay = props.autoplay, muted = props.muted, lowLatencyMode = props.lowLatencyMode, allowNativeHls = props.allowNativeHls, driftToleranceMs = props.driftToleranceMs, immediateManifestAds = props.immediateManifestAds, debugAdTiming = props.debugAdTiming, showCustomControls = props.showCustomControls, hideLoadingIndicator = props.hideLoadingIndicator, onVolumeToggle = props.onVolumeToggle, onFullscreenToggle = props.onFullscreenToggle, onControlClick = props.onControlClick, onReady = props.onReady, wrapperClassName = props.wrapperClassName, wrapperStyle = props.wrapperStyle, className = props.className, style = props.style, controls = props.controls, playsInline = props.playsInline, preload = props.preload, poster = props.poster, children = props.children, licenseKey = props.licenseKey, minSegmentsBeforePlay = props.minSegmentsBeforePlay, disableAds = props.disableAds, disableFiller = props.disableFiller, swirlProjectId = props.swirlProjectId, restVideoAttrs = _object_without_properties(props, [
|
|
6240
6632
|
"src",
|
|
6241
6633
|
"autoplay",
|
|
6242
6634
|
"muted",
|
|
@@ -6263,35 +6655,38 @@ var StormcloudVideoPlayerComponent = import_react.default.memo(function(props) {
|
|
|
6263
6655
|
"licenseKey",
|
|
6264
6656
|
"minSegmentsBeforePlay",
|
|
6265
6657
|
"disableAds",
|
|
6266
|
-
"disableFiller"
|
|
6658
|
+
"disableFiller",
|
|
6659
|
+
"swirlProjectId"
|
|
6267
6660
|
]);
|
|
6268
|
-
var videoRef = (0,
|
|
6269
|
-
var playerRef = (0,
|
|
6270
|
-
var bufferingTimeoutRef = (0,
|
|
6271
|
-
var controlsTimerRef = (0,
|
|
6272
|
-
var wrapperRef = (0,
|
|
6273
|
-
var
|
|
6661
|
+
var videoRef = (0, import_react2.useRef)(null);
|
|
6662
|
+
var playerRef = (0, import_react2.useRef)(null);
|
|
6663
|
+
var bufferingTimeoutRef = (0, import_react2.useRef)(null);
|
|
6664
|
+
var controlsTimerRef = (0, import_react2.useRef)(null);
|
|
6665
|
+
var wrapperRef = (0, import_react2.useRef)(null);
|
|
6666
|
+
var _import_react2_default_useState = _sliced_to_array(import_react2.default.useState({
|
|
6274
6667
|
showAds: false,
|
|
6275
6668
|
currentIndex: 0,
|
|
6276
6669
|
totalAds: 0
|
|
6277
|
-
}), 2), adStatus =
|
|
6278
|
-
var
|
|
6279
|
-
var
|
|
6280
|
-
var
|
|
6281
|
-
var
|
|
6282
|
-
var
|
|
6283
|
-
var
|
|
6284
|
-
var
|
|
6285
|
-
var
|
|
6286
|
-
var
|
|
6287
|
-
var
|
|
6288
|
-
var
|
|
6289
|
-
var
|
|
6290
|
-
var
|
|
6291
|
-
var
|
|
6292
|
-
var
|
|
6293
|
-
var
|
|
6294
|
-
var
|
|
6670
|
+
}), 2), adStatus = _import_react2_default_useState[0], setAdStatus = _import_react2_default_useState[1];
|
|
6671
|
+
var _import_react2_default_useState1 = _sliced_to_array(import_react2.default.useState(true), 2), shouldShowNativeControls = _import_react2_default_useState1[0], setShouldShowNativeControls = _import_react2_default_useState1[1];
|
|
6672
|
+
var _import_react2_default_useState2 = _sliced_to_array(import_react2.default.useState(false), 2), isMuted = _import_react2_default_useState2[0], setIsMuted = _import_react2_default_useState2[1];
|
|
6673
|
+
var _import_react2_default_useState3 = _sliced_to_array(import_react2.default.useState(false), 2), isFullscreen = _import_react2_default_useState3[0], setIsFullscreen = _import_react2_default_useState3[1];
|
|
6674
|
+
var _import_react2_default_useState4 = _sliced_to_array(import_react2.default.useState(false), 2), isPlaying = _import_react2_default_useState4[0], setIsPlaying = _import_react2_default_useState4[1];
|
|
6675
|
+
var _import_react2_default_useState5 = _sliced_to_array(import_react2.default.useState(0), 2), currentTime = _import_react2_default_useState5[0], setCurrentTime = _import_react2_default_useState5[1];
|
|
6676
|
+
var _import_react2_default_useState6 = _sliced_to_array(import_react2.default.useState(0), 2), duration = _import_react2_default_useState6[0], setDuration = _import_react2_default_useState6[1];
|
|
6677
|
+
var _import_react2_default_useState7 = _sliced_to_array(import_react2.default.useState(1), 2), volume = _import_react2_default_useState7[0], setVolume = _import_react2_default_useState7[1];
|
|
6678
|
+
var _import_react2_default_useState8 = _sliced_to_array(import_react2.default.useState(1), 2), playbackRate = _import_react2_default_useState8[0], setPlaybackRate = _import_react2_default_useState8[1];
|
|
6679
|
+
var _import_react2_default_useState9 = _sliced_to_array(import_react2.default.useState(false), 2), showVolumeSlider = _import_react2_default_useState9[0], setShowVolumeSlider = _import_react2_default_useState9[1];
|
|
6680
|
+
var _import_react2_default_useState10 = _sliced_to_array(import_react2.default.useState(false), 2), showSpeedMenu = _import_react2_default_useState10[0], setShowSpeedMenu = _import_react2_default_useState10[1];
|
|
6681
|
+
var _import_react2_default_useState11 = _sliced_to_array(import_react2.default.useState(true), 2), isLoading = _import_react2_default_useState11[0], setIsLoading = _import_react2_default_useState11[1];
|
|
6682
|
+
var _import_react2_default_useState12 = _sliced_to_array(import_react2.default.useState(false), 2), isBuffering = _import_react2_default_useState12[0], setIsBuffering = _import_react2_default_useState12[1];
|
|
6683
|
+
var _import_react2_default_useState13 = _sliced_to_array(import_react2.default.useState(false), 2), showCenterPlay = _import_react2_default_useState13[0], setShowCenterPlay = _import_react2_default_useState13[1];
|
|
6684
|
+
var _import_react2_default_useState14 = _sliced_to_array(import_react2.default.useState(false), 2), showLicenseWarning = _import_react2_default_useState14[0], setShowLicenseWarning = _import_react2_default_useState14[1];
|
|
6685
|
+
var _import_react2_default_useState15 = _sliced_to_array(import_react2.default.useState(true), 2), controlsVisible = _import_react2_default_useState15[0], setControlsVisible = _import_react2_default_useState15[1];
|
|
6686
|
+
var _import_react2_default_useState16 = _sliced_to_array(import_react2.default.useState([]), 2), overlays = _import_react2_default_useState16[0], setOverlays = _import_react2_default_useState16[1];
|
|
6687
|
+
var _import_react2_default_useState17 = _sliced_to_array(import_react2.default.useState(null), 2), overlayCoordSpace = _import_react2_default_useState17[0], setOverlayCoordSpace = _import_react2_default_useState17[1];
|
|
6688
|
+
var _import_react2_default_useState18 = _sliced_to_array(import_react2.default.useState(typeof window !== "undefined" ? window.innerWidth : 1920), 2), viewportWidth = _import_react2_default_useState18[0], setViewportWidth = _import_react2_default_useState18[1];
|
|
6689
|
+
var _import_react2_default_useState19 = _sliced_to_array(import_react2.default.useState(typeof window !== "undefined" ? window.innerHeight > window.innerWidth : false), 2), isPortrait = _import_react2_default_useState19[0], setIsPortrait = _import_react2_default_useState19[1];
|
|
6295
6690
|
var getResponsiveScale = function getResponsiveScale() {
|
|
6296
6691
|
if (viewportWidth < 480) return 0.7;
|
|
6297
6692
|
if (viewportWidth < 768) return 0.8;
|
|
@@ -6299,7 +6694,7 @@ var StormcloudVideoPlayerComponent = import_react.default.memo(function(props) {
|
|
|
6299
6694
|
return 1;
|
|
6300
6695
|
};
|
|
6301
6696
|
var responsiveScale = getResponsiveScale();
|
|
6302
|
-
var resetControlsTimer = (0,
|
|
6697
|
+
var resetControlsTimer = (0, import_react2.useCallback)(function() {
|
|
6303
6698
|
if (controlsTimerRef.current) {
|
|
6304
6699
|
clearTimeout(controlsTimerRef.current);
|
|
6305
6700
|
}
|
|
@@ -6376,7 +6771,7 @@ var StormcloudVideoPlayerComponent = import_react.default.memo(function(props) {
|
|
|
6376
6771
|
};
|
|
6377
6772
|
var isHlsStream = (src === null || src === void 0 ? void 0 : src.toLowerCase().includes(".m3u8")) || (src === null || src === void 0 ? void 0 : src.toLowerCase().includes("/hls/"));
|
|
6378
6773
|
var shouldShowEnhancedControls = showCustomControls && (isHlsStream ? allowNativeHls : true);
|
|
6379
|
-
var criticalPropsKey = (0,
|
|
6774
|
+
var criticalPropsKey = (0, import_react2.useMemo)(function() {
|
|
6380
6775
|
return CRITICAL_PROPS.map(function(prop) {
|
|
6381
6776
|
return "".concat(prop, ":").concat(props[prop]);
|
|
6382
6777
|
}).join("|");
|
|
@@ -6387,7 +6782,7 @@ var StormcloudVideoPlayerComponent = import_react.default.memo(function(props) {
|
|
|
6387
6782
|
lowLatencyMode,
|
|
6388
6783
|
driftToleranceMs
|
|
6389
6784
|
]);
|
|
6390
|
-
(0,
|
|
6785
|
+
(0, import_react2.useEffect)(function() {
|
|
6391
6786
|
if (typeof window === "undefined") return;
|
|
6392
6787
|
var el = videoRef.current;
|
|
6393
6788
|
if (!el || !src) return;
|
|
@@ -6442,7 +6837,50 @@ var StormcloudVideoPlayerComponent = import_react.default.memo(function(props) {
|
|
|
6442
6837
|
}, [
|
|
6443
6838
|
criticalPropsKey
|
|
6444
6839
|
]);
|
|
6445
|
-
(0,
|
|
6840
|
+
(0, import_react2.useEffect)(function() {
|
|
6841
|
+
if (!swirlProjectId) {
|
|
6842
|
+
setOverlays([]);
|
|
6843
|
+
setOverlayCoordSpace(null);
|
|
6844
|
+
return;
|
|
6845
|
+
}
|
|
6846
|
+
var cancelled = false;
|
|
6847
|
+
fetchProjectOverlays(swirlProjectId).then(function(data) {
|
|
6848
|
+
if (!cancelled) setOverlays(data);
|
|
6849
|
+
}).catch(function(err) {
|
|
6850
|
+
if (!cancelled) {
|
|
6851
|
+
console.warn("[StormcloudVideoPlayer] Failed to fetch overlays:", err);
|
|
6852
|
+
}
|
|
6853
|
+
});
|
|
6854
|
+
return function() {
|
|
6855
|
+
cancelled = true;
|
|
6856
|
+
};
|
|
6857
|
+
}, [
|
|
6858
|
+
swirlProjectId
|
|
6859
|
+
]);
|
|
6860
|
+
(0, import_react2.useEffect)(function() {
|
|
6861
|
+
if (!swirlProjectId) return;
|
|
6862
|
+
var player = playerRef.current;
|
|
6863
|
+
if (!player) return;
|
|
6864
|
+
var tryResolve = function tryResolve() {
|
|
6865
|
+
var res = player.getMinHlsResolution();
|
|
6866
|
+
if (res) {
|
|
6867
|
+
setOverlayCoordSpace(res);
|
|
6868
|
+
return true;
|
|
6869
|
+
}
|
|
6870
|
+
return false;
|
|
6871
|
+
};
|
|
6872
|
+
if (tryResolve()) return;
|
|
6873
|
+
var interval = setInterval(function() {
|
|
6874
|
+
if (tryResolve()) clearInterval(interval);
|
|
6875
|
+
}, 300);
|
|
6876
|
+
return function() {
|
|
6877
|
+
return clearInterval(interval);
|
|
6878
|
+
};
|
|
6879
|
+
}, [
|
|
6880
|
+
swirlProjectId,
|
|
6881
|
+
criticalPropsKey
|
|
6882
|
+
]);
|
|
6883
|
+
(0, import_react2.useEffect)(function() {
|
|
6446
6884
|
if (!playerRef.current) return;
|
|
6447
6885
|
try {
|
|
6448
6886
|
if (autoplay !== void 0 && playerRef.current.videoElement) {
|
|
@@ -6458,7 +6896,7 @@ var StormcloudVideoPlayerComponent = import_react.default.memo(function(props) {
|
|
|
6458
6896
|
autoplay,
|
|
6459
6897
|
muted
|
|
6460
6898
|
]);
|
|
6461
|
-
(0,
|
|
6899
|
+
(0, import_react2.useEffect)(function() {
|
|
6462
6900
|
if (!playerRef.current) return;
|
|
6463
6901
|
var checkAdStatus = function checkAdStatus() {
|
|
6464
6902
|
if (playerRef.current) {
|
|
@@ -6488,7 +6926,7 @@ var StormcloudVideoPlayerComponent = import_react.default.memo(function(props) {
|
|
|
6488
6926
|
return clearInterval(interval);
|
|
6489
6927
|
};
|
|
6490
6928
|
}, []);
|
|
6491
|
-
(0,
|
|
6929
|
+
(0, import_react2.useEffect)(function() {
|
|
6492
6930
|
if (typeof window === "undefined" || !playerRef.current) return;
|
|
6493
6931
|
var handleResize = function handleResize() {
|
|
6494
6932
|
if (playerRef.current && videoRef.current) {
|
|
@@ -6504,7 +6942,7 @@ var StormcloudVideoPlayerComponent = import_react.default.memo(function(props) {
|
|
|
6504
6942
|
return window.removeEventListener("resize", handleResize);
|
|
6505
6943
|
};
|
|
6506
6944
|
}, []);
|
|
6507
|
-
(0,
|
|
6945
|
+
(0, import_react2.useEffect)(function() {
|
|
6508
6946
|
if (!playerRef.current || !videoRef.current) return;
|
|
6509
6947
|
var updateStates = function updateStates() {
|
|
6510
6948
|
if (playerRef.current && videoRef.current) {
|
|
@@ -6531,7 +6969,7 @@ var StormcloudVideoPlayerComponent = import_react.default.memo(function(props) {
|
|
|
6531
6969
|
document.removeEventListener("fullscreenchange", handleFullscreenChange);
|
|
6532
6970
|
};
|
|
6533
6971
|
}, []);
|
|
6534
|
-
(0,
|
|
6972
|
+
(0, import_react2.useEffect)(function() {
|
|
6535
6973
|
if (!videoRef.current) return;
|
|
6536
6974
|
var handleCanPlay = function handleCanPlay() {
|
|
6537
6975
|
setIsLoading(false);
|
|
@@ -6603,19 +7041,19 @@ var StormcloudVideoPlayerComponent = import_react.default.memo(function(props) {
|
|
|
6603
7041
|
}, [
|
|
6604
7042
|
debugAdTiming
|
|
6605
7043
|
]);
|
|
6606
|
-
(0,
|
|
7044
|
+
(0, import_react2.useEffect)(function() {
|
|
6607
7045
|
return function() {
|
|
6608
7046
|
if (controlsTimerRef.current) {
|
|
6609
7047
|
clearTimeout(controlsTimerRef.current);
|
|
6610
7048
|
}
|
|
6611
7049
|
};
|
|
6612
7050
|
}, []);
|
|
6613
|
-
var handleWrapperMouseMove = (0,
|
|
7051
|
+
var handleWrapperMouseMove = (0, import_react2.useCallback)(function() {
|
|
6614
7052
|
resetControlsTimer();
|
|
6615
7053
|
}, [
|
|
6616
7054
|
resetControlsTimer
|
|
6617
7055
|
]);
|
|
6618
|
-
var handleWrapperMouseLeave = (0,
|
|
7056
|
+
var handleWrapperMouseLeave = (0, import_react2.useCallback)(function() {
|
|
6619
7057
|
if (!showVolumeSlider && !showSpeedMenu) {
|
|
6620
7058
|
setControlsVisible(false);
|
|
6621
7059
|
}
|
|
@@ -6625,12 +7063,12 @@ var StormcloudVideoPlayerComponent = import_react.default.memo(function(props) {
|
|
|
6625
7063
|
]);
|
|
6626
7064
|
var progressPercent = duration > 0 ? currentTime / duration * 100 : 0;
|
|
6627
7065
|
var VolumeIcon = isMuted || volume === 0 ? import_fa.FaVolumeMute : volume < 0.5 ? import_fa.FaVolumeDown : import_fa.FaVolumeUp;
|
|
6628
|
-
return /* @__PURE__ */ (0,
|
|
7066
|
+
return /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)(import_jsx_runtime2.Fragment, {
|
|
6629
7067
|
children: [
|
|
6630
|
-
/* @__PURE__ */ (0,
|
|
7068
|
+
/* @__PURE__ */ (0, import_jsx_runtime2.jsx)("style", {
|
|
6631
7069
|
children: "\n @keyframes sc-spin {\n from { transform: rotate(0deg); }\n to { transform: rotate(360deg); }\n }\n @keyframes sc-pulse {\n 0%, 100% { opacity: 1; }\n 50% { opacity: 0.6; }\n }\n @keyframes sc-fade-in {\n from { opacity: 0; transform: translateY(8px); }\n to { opacity: 1; transform: translateY(0); }\n }\n .sc-wrapper:fullscreen,\n .sc-wrapper:has(*:fullscreen) {\n border-radius: 0 !important;\n box-shadow: none !important;\n width: 100vw !important;\n height: 100vh !important;\n max-width: 100vw !important;\n max-height: 100vh !important;\n position: fixed !important;\n top: 0 !important;\n left: 0 !important;\n z-index: 999999 !important;\n background: #000 !important;\n display: flex !important;\n align-items: center !important;\n justify-content: center !important;\n }\n .sc-ctrl-btn {\n background: none;\n border: none;\n color: #fff;\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: 50%;\n padding: 8px;\n transition: background 0.15s ease, opacity 0.15s ease;\n opacity: 0.9;\n }\n .sc-ctrl-btn:hover {\n opacity: 1;\n background: rgba(255, 255, 255, 0.1);\n }\n .sc-ctrl-btn:active {\n opacity: 0.7;\n }\n .sc-controls-bar {\n transition: opacity 0.35s ease, transform 0.35s ease;\n }\n .sc-progress-track:hover .sc-progress-thumb {\n transform: translate(-50%, -50%) scale(1) !important;\n }\n .sc-loading-hidden .sc-loading-indicator {\n display: none !important;\n }\n "
|
|
6632
7070
|
}),
|
|
6633
|
-
/* @__PURE__ */ (0,
|
|
7071
|
+
/* @__PURE__ */ (0, import_jsx_runtime2.jsxs)("div", {
|
|
6634
7072
|
ref: wrapperRef,
|
|
6635
7073
|
className: "sc-wrapper ".concat(wrapperClassName || ""),
|
|
6636
7074
|
onMouseMove: handleWrapperMouseMove,
|
|
@@ -6654,10 +7092,12 @@ var StormcloudVideoPlayerComponent = import_react.default.memo(function(props) {
|
|
|
6654
7092
|
boxShadow: isFullscreen ? "none" : void 0
|
|
6655
7093
|
}, wrapperStyle),
|
|
6656
7094
|
children: [
|
|
6657
|
-
/* @__PURE__ */ (0,
|
|
7095
|
+
/* @__PURE__ */ (0, import_jsx_runtime2.jsx)("video", _object_spread_props(_object_spread({
|
|
6658
7096
|
ref: videoRef,
|
|
6659
7097
|
className: className,
|
|
6660
7098
|
style: _object_spread({
|
|
7099
|
+
position: "relative",
|
|
7100
|
+
zIndex: 1,
|
|
6661
7101
|
display: "block",
|
|
6662
7102
|
width: "100%",
|
|
6663
7103
|
height: isFullscreen ? "100%" : "auto",
|
|
@@ -6674,7 +7114,13 @@ var StormcloudVideoPlayerComponent = import_react.default.memo(function(props) {
|
|
|
6674
7114
|
}, restVideoAttrs), {
|
|
6675
7115
|
children: children
|
|
6676
7116
|
})),
|
|
6677
|
-
|
|
7117
|
+
overlays.length > 0 && !adStatus.showAds && /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(OverlayRenderer, {
|
|
7118
|
+
overlays: overlays,
|
|
7119
|
+
currentTime: currentTime,
|
|
7120
|
+
videoRef: videoRef,
|
|
7121
|
+
coordinateSpace: overlayCoordSpace
|
|
7122
|
+
}),
|
|
7123
|
+
(isLoading || isBuffering) && !hideLoadingIndicator && /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(import_fa.FaSpinner, {
|
|
6678
7124
|
className: "sc-loading-indicator",
|
|
6679
7125
|
size: 40,
|
|
6680
7126
|
color: "rgba(255, 255, 255, 0.85)",
|
|
@@ -6687,7 +7133,7 @@ var StormcloudVideoPlayerComponent = import_react.default.memo(function(props) {
|
|
|
6687
7133
|
filter: "drop-shadow(0 2px 8px rgba(0, 0, 0, 0.6))"
|
|
6688
7134
|
}
|
|
6689
7135
|
}),
|
|
6690
|
-
showLicenseWarning && /* @__PURE__ */ (0,
|
|
7136
|
+
showLicenseWarning && /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)("div", {
|
|
6691
7137
|
style: {
|
|
6692
7138
|
position: "absolute",
|
|
6693
7139
|
top: "50%",
|
|
@@ -6706,7 +7152,7 @@ var StormcloudVideoPlayerComponent = import_react.default.memo(function(props) {
|
|
|
6706
7152
|
margin: "0 16px"
|
|
6707
7153
|
},
|
|
6708
7154
|
children: [
|
|
6709
|
-
/* @__PURE__ */ (0,
|
|
7155
|
+
/* @__PURE__ */ (0, import_jsx_runtime2.jsx)("div", {
|
|
6710
7156
|
style: {
|
|
6711
7157
|
fontSize: "18px",
|
|
6712
7158
|
fontWeight: "700",
|
|
@@ -6715,7 +7161,7 @@ var StormcloudVideoPlayerComponent = import_react.default.memo(function(props) {
|
|
|
6715
7161
|
},
|
|
6716
7162
|
children: "License Key Required"
|
|
6717
7163
|
}),
|
|
6718
|
-
/* @__PURE__ */ (0,
|
|
7164
|
+
/* @__PURE__ */ (0, import_jsx_runtime2.jsxs)("div", {
|
|
6719
7165
|
style: {
|
|
6720
7166
|
fontSize: "13px",
|
|
6721
7167
|
lineHeight: "1.6",
|
|
@@ -6723,13 +7169,13 @@ var StormcloudVideoPlayerComponent = import_react.default.memo(function(props) {
|
|
|
6723
7169
|
},
|
|
6724
7170
|
children: [
|
|
6725
7171
|
"Please provide a valid license key to use the Stormcloud Video Player.",
|
|
6726
|
-
/* @__PURE__ */ (0,
|
|
7172
|
+
/* @__PURE__ */ (0, import_jsx_runtime2.jsx)("br", {}),
|
|
6727
7173
|
"Contact your administrator for licensing information."
|
|
6728
7174
|
]
|
|
6729
7175
|
})
|
|
6730
7176
|
]
|
|
6731
7177
|
}),
|
|
6732
|
-
showCenterPlay && !isLoading && !isBuffering && !showLicenseWarning && !adStatus.showAds && /* @__PURE__ */ (0,
|
|
7178
|
+
showCenterPlay && !isLoading && !isBuffering && !showLicenseWarning && !adStatus.showAds && /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("div", {
|
|
6733
7179
|
onClick: handleCenterPlayClick,
|
|
6734
7180
|
style: {
|
|
6735
7181
|
position: "absolute",
|
|
@@ -6764,7 +7210,7 @@ var StormcloudVideoPlayerComponent = import_react.default.memo(function(props) {
|
|
|
6764
7210
|
el.style.transform = "translate(-50%, -50%) scale(1)";
|
|
6765
7211
|
},
|
|
6766
7212
|
title: "Play",
|
|
6767
|
-
children: /* @__PURE__ */ (0,
|
|
7213
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(import_fa.FaPlay, {
|
|
6768
7214
|
size: Math.max(22, 28 * responsiveScale),
|
|
6769
7215
|
color: "white",
|
|
6770
7216
|
style: {
|
|
@@ -6773,7 +7219,7 @@ var StormcloudVideoPlayerComponent = import_react.default.memo(function(props) {
|
|
|
6773
7219
|
}
|
|
6774
7220
|
})
|
|
6775
7221
|
}),
|
|
6776
|
-
adStatus.showAds && /* @__PURE__ */ (0,
|
|
7222
|
+
adStatus.showAds && /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)("div", {
|
|
6777
7223
|
style: {
|
|
6778
7224
|
position: "absolute",
|
|
6779
7225
|
top: "".concat(12 * responsiveScale, "px"),
|
|
@@ -6785,7 +7231,7 @@ var StormcloudVideoPlayerComponent = import_react.default.memo(function(props) {
|
|
|
6785
7231
|
animation: "sc-fade-in 0.3s ease"
|
|
6786
7232
|
},
|
|
6787
7233
|
children: [
|
|
6788
|
-
/* @__PURE__ */ (0,
|
|
7234
|
+
/* @__PURE__ */ (0, import_jsx_runtime2.jsx)("div", {
|
|
6789
7235
|
style: {
|
|
6790
7236
|
background: "rgba(234, 179, 8, 0.9)",
|
|
6791
7237
|
backdropFilter: "blur(12px)",
|
|
@@ -6800,7 +7246,7 @@ var StormcloudVideoPlayerComponent = import_react.default.memo(function(props) {
|
|
|
6800
7246
|
},
|
|
6801
7247
|
children: "Ad"
|
|
6802
7248
|
}),
|
|
6803
|
-
adStatus.currentIndex > 0 && /* @__PURE__ */ (0,
|
|
7249
|
+
adStatus.currentIndex > 0 && /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)("div", {
|
|
6804
7250
|
style: {
|
|
6805
7251
|
background: "rgba(0, 0, 0, 0.5)",
|
|
6806
7252
|
backdropFilter: "blur(12px)",
|
|
@@ -6819,7 +7265,7 @@ var StormcloudVideoPlayerComponent = import_react.default.memo(function(props) {
|
|
|
6819
7265
|
})
|
|
6820
7266
|
]
|
|
6821
7267
|
}),
|
|
6822
|
-
shouldShowEnhancedControls && !showLicenseWarning ? /* @__PURE__ */ (0,
|
|
7268
|
+
shouldShowEnhancedControls && !showLicenseWarning ? /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)("div", {
|
|
6823
7269
|
className: "sc-controls-bar",
|
|
6824
7270
|
style: {
|
|
6825
7271
|
position: "absolute",
|
|
@@ -6834,7 +7280,7 @@ var StormcloudVideoPlayerComponent = import_react.default.memo(function(props) {
|
|
|
6834
7280
|
pointerEvents: controlsVisible || adStatus.showAds ? "auto" : "none"
|
|
6835
7281
|
},
|
|
6836
7282
|
children: [
|
|
6837
|
-
/* @__PURE__ */ (0,
|
|
7283
|
+
/* @__PURE__ */ (0, import_jsx_runtime2.jsxs)("div", {
|
|
6838
7284
|
className: "sc-progress-track",
|
|
6839
7285
|
style: {
|
|
6840
7286
|
width: "100%",
|
|
@@ -6854,7 +7300,7 @@ var StormcloudVideoPlayerComponent = import_react.default.memo(function(props) {
|
|
|
6854
7300
|
e.currentTarget.style.height = "3px";
|
|
6855
7301
|
},
|
|
6856
7302
|
children: [
|
|
6857
|
-
/* @__PURE__ */ (0,
|
|
7303
|
+
/* @__PURE__ */ (0, import_jsx_runtime2.jsx)("div", {
|
|
6858
7304
|
style: {
|
|
6859
7305
|
position: "absolute",
|
|
6860
7306
|
top: 0,
|
|
@@ -6866,7 +7312,7 @@ var StormcloudVideoPlayerComponent = import_react.default.memo(function(props) {
|
|
|
6866
7312
|
transition: "width 0.15s linear"
|
|
6867
7313
|
}
|
|
6868
7314
|
}),
|
|
6869
|
-
/* @__PURE__ */ (0,
|
|
7315
|
+
/* @__PURE__ */ (0, import_jsx_runtime2.jsx)("div", {
|
|
6870
7316
|
className: "sc-progress-thumb",
|
|
6871
7317
|
style: {
|
|
6872
7318
|
position: "absolute",
|
|
@@ -6883,7 +7329,7 @@ var StormcloudVideoPlayerComponent = import_react.default.memo(function(props) {
|
|
|
6883
7329
|
})
|
|
6884
7330
|
]
|
|
6885
7331
|
}),
|
|
6886
|
-
/* @__PURE__ */ (0,
|
|
7332
|
+
/* @__PURE__ */ (0, import_jsx_runtime2.jsxs)("div", {
|
|
6887
7333
|
style: {
|
|
6888
7334
|
display: "flex",
|
|
6889
7335
|
alignItems: "center",
|
|
@@ -6892,14 +7338,14 @@ var StormcloudVideoPlayerComponent = import_react.default.memo(function(props) {
|
|
|
6892
7338
|
gap: "".concat(8 * responsiveScale, "px")
|
|
6893
7339
|
},
|
|
6894
7340
|
children: [
|
|
6895
|
-
/* @__PURE__ */ (0,
|
|
7341
|
+
/* @__PURE__ */ (0, import_jsx_runtime2.jsxs)("div", {
|
|
6896
7342
|
style: {
|
|
6897
7343
|
display: "flex",
|
|
6898
7344
|
alignItems: "center",
|
|
6899
7345
|
gap: "".concat(8 * responsiveScale, "px")
|
|
6900
7346
|
},
|
|
6901
7347
|
children: [
|
|
6902
|
-
/* @__PURE__ */ (0,
|
|
7348
|
+
/* @__PURE__ */ (0, import_jsx_runtime2.jsx)("button", {
|
|
6903
7349
|
className: "sc-ctrl-btn",
|
|
6904
7350
|
onClick: handlePlayPause,
|
|
6905
7351
|
style: {
|
|
@@ -6909,16 +7355,16 @@ var StormcloudVideoPlayerComponent = import_react.default.memo(function(props) {
|
|
|
6909
7355
|
minHeight: "".concat(36 * responsiveScale, "px")
|
|
6910
7356
|
},
|
|
6911
7357
|
title: isPlaying ? "Pause" : "Play",
|
|
6912
|
-
children: isPlaying ? /* @__PURE__ */ (0,
|
|
7358
|
+
children: isPlaying ? /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(import_fa.FaPause, {
|
|
6913
7359
|
size: Math.max(14, 18 * responsiveScale)
|
|
6914
|
-
}) : /* @__PURE__ */ (0,
|
|
7360
|
+
}) : /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(import_fa.FaPlay, {
|
|
6915
7361
|
size: Math.max(14, 18 * responsiveScale),
|
|
6916
7362
|
style: {
|
|
6917
7363
|
marginLeft: "2px"
|
|
6918
7364
|
}
|
|
6919
7365
|
})
|
|
6920
7366
|
}),
|
|
6921
|
-
/* @__PURE__ */ (0,
|
|
7367
|
+
/* @__PURE__ */ (0, import_jsx_runtime2.jsxs)("div", {
|
|
6922
7368
|
style: {
|
|
6923
7369
|
display: "flex",
|
|
6924
7370
|
alignItems: "center"
|
|
@@ -6930,7 +7376,7 @@ var StormcloudVideoPlayerComponent = import_react.default.memo(function(props) {
|
|
|
6930
7376
|
return setShowVolumeSlider(false);
|
|
6931
7377
|
},
|
|
6932
7378
|
children: [
|
|
6933
|
-
/* @__PURE__ */ (0,
|
|
7379
|
+
/* @__PURE__ */ (0, import_jsx_runtime2.jsx)("button", {
|
|
6934
7380
|
className: "sc-ctrl-btn",
|
|
6935
7381
|
onClick: function onClick() {
|
|
6936
7382
|
if (playerRef.current) {
|
|
@@ -6946,11 +7392,11 @@ var StormcloudVideoPlayerComponent = import_react.default.memo(function(props) {
|
|
|
6946
7392
|
minHeight: "".concat(36 * responsiveScale, "px")
|
|
6947
7393
|
},
|
|
6948
7394
|
title: isMuted ? "Unmute" : "Mute",
|
|
6949
|
-
children: /* @__PURE__ */ (0,
|
|
7395
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(VolumeIcon, {
|
|
6950
7396
|
size: Math.max(14, 18 * responsiveScale)
|
|
6951
7397
|
})
|
|
6952
7398
|
}),
|
|
6953
|
-
/* @__PURE__ */ (0,
|
|
7399
|
+
/* @__PURE__ */ (0, import_jsx_runtime2.jsx)("div", {
|
|
6954
7400
|
style: {
|
|
6955
7401
|
width: showVolumeSlider ? "".concat(62 * responsiveScale, "px") : "0px",
|
|
6956
7402
|
overflow: "hidden",
|
|
@@ -6960,7 +7406,7 @@ var StormcloudVideoPlayerComponent = import_react.default.memo(function(props) {
|
|
|
6960
7406
|
paddingLeft: showVolumeSlider ? "2px" : "0",
|
|
6961
7407
|
paddingRight: showVolumeSlider ? "4px" : "0"
|
|
6962
7408
|
},
|
|
6963
|
-
children: /* @__PURE__ */ (0,
|
|
7409
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)("div", {
|
|
6964
7410
|
style: {
|
|
6965
7411
|
position: "relative",
|
|
6966
7412
|
width: "".concat(56 * responsiveScale, "px"),
|
|
@@ -6990,7 +7436,7 @@ var StormcloudVideoPlayerComponent = import_react.default.memo(function(props) {
|
|
|
6990
7436
|
handleVolumeChange(Math.max(0, Math.min(1, (e.clientX - r.left) / r.width)));
|
|
6991
7437
|
},
|
|
6992
7438
|
children: [
|
|
6993
|
-
/* @__PURE__ */ (0,
|
|
7439
|
+
/* @__PURE__ */ (0, import_jsx_runtime2.jsx)("div", {
|
|
6994
7440
|
style: {
|
|
6995
7441
|
position: "absolute",
|
|
6996
7442
|
inset: 0,
|
|
@@ -6998,7 +7444,7 @@ var StormcloudVideoPlayerComponent = import_react.default.memo(function(props) {
|
|
|
6998
7444
|
borderRadius: "1.5px"
|
|
6999
7445
|
}
|
|
7000
7446
|
}),
|
|
7001
|
-
/* @__PURE__ */ (0,
|
|
7447
|
+
/* @__PURE__ */ (0, import_jsx_runtime2.jsx)("div", {
|
|
7002
7448
|
style: {
|
|
7003
7449
|
position: "absolute",
|
|
7004
7450
|
top: 0,
|
|
@@ -7010,7 +7456,7 @@ var StormcloudVideoPlayerComponent = import_react.default.memo(function(props) {
|
|
|
7010
7456
|
transition: "width 0.1s ease-out"
|
|
7011
7457
|
}
|
|
7012
7458
|
}),
|
|
7013
|
-
/* @__PURE__ */ (0,
|
|
7459
|
+
/* @__PURE__ */ (0, import_jsx_runtime2.jsx)("div", {
|
|
7014
7460
|
style: {
|
|
7015
7461
|
position: "absolute",
|
|
7016
7462
|
top: "50%",
|
|
@@ -7029,7 +7475,7 @@ var StormcloudVideoPlayerComponent = import_react.default.memo(function(props) {
|
|
|
7029
7475
|
})
|
|
7030
7476
|
]
|
|
7031
7477
|
}),
|
|
7032
|
-
/* @__PURE__ */ (0,
|
|
7478
|
+
/* @__PURE__ */ (0, import_jsx_runtime2.jsxs)("div", {
|
|
7033
7479
|
style: {
|
|
7034
7480
|
fontSize: "".concat(13 * responsiveScale, "px"),
|
|
7035
7481
|
fontFamily: "Roboto, 'Segoe UI', Arial, sans-serif",
|
|
@@ -7042,7 +7488,7 @@ var StormcloudVideoPlayerComponent = import_react.default.memo(function(props) {
|
|
|
7042
7488
|
children: [
|
|
7043
7489
|
formatTime(currentTime),
|
|
7044
7490
|
" ",
|
|
7045
|
-
/* @__PURE__ */ (0,
|
|
7491
|
+
/* @__PURE__ */ (0, import_jsx_runtime2.jsx)("span", {
|
|
7046
7492
|
style: {
|
|
7047
7493
|
color: "rgba(255,255,255,0.5)"
|
|
7048
7494
|
},
|
|
@@ -7054,20 +7500,20 @@ var StormcloudVideoPlayerComponent = import_react.default.memo(function(props) {
|
|
|
7054
7500
|
})
|
|
7055
7501
|
]
|
|
7056
7502
|
}),
|
|
7057
|
-
/* @__PURE__ */ (0,
|
|
7503
|
+
/* @__PURE__ */ (0, import_jsx_runtime2.jsxs)("div", {
|
|
7058
7504
|
style: {
|
|
7059
7505
|
display: "flex",
|
|
7060
7506
|
alignItems: "center",
|
|
7061
7507
|
gap: "".concat(8 * responsiveScale, "px")
|
|
7062
7508
|
},
|
|
7063
7509
|
children: [
|
|
7064
|
-
/* @__PURE__ */ (0,
|
|
7510
|
+
/* @__PURE__ */ (0, import_jsx_runtime2.jsxs)("div", {
|
|
7065
7511
|
style: {
|
|
7066
7512
|
position: "relative",
|
|
7067
7513
|
display: viewportWidth < 600 ? "none" : "block"
|
|
7068
7514
|
},
|
|
7069
7515
|
children: [
|
|
7070
|
-
/* @__PURE__ */ (0,
|
|
7516
|
+
/* @__PURE__ */ (0, import_jsx_runtime2.jsxs)("button", {
|
|
7071
7517
|
className: "sc-ctrl-btn",
|
|
7072
7518
|
onClick: function onClick() {
|
|
7073
7519
|
setShowSpeedMenu(!showSpeedMenu);
|
|
@@ -7087,7 +7533,7 @@ var StormcloudVideoPlayerComponent = import_react.default.memo(function(props) {
|
|
|
7087
7533
|
"x"
|
|
7088
7534
|
]
|
|
7089
7535
|
}),
|
|
7090
|
-
showSpeedMenu && /* @__PURE__ */ (0,
|
|
7536
|
+
showSpeedMenu && /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("div", {
|
|
7091
7537
|
style: {
|
|
7092
7538
|
position: "absolute",
|
|
7093
7539
|
bottom: "100%",
|
|
@@ -7113,7 +7559,7 @@ var StormcloudVideoPlayerComponent = import_react.default.memo(function(props) {
|
|
|
7113
7559
|
1.75,
|
|
7114
7560
|
2
|
|
7115
7561
|
].map(function(speed) {
|
|
7116
|
-
return /* @__PURE__ */ (0,
|
|
7562
|
+
return /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)("button", {
|
|
7117
7563
|
onClick: function onClick() {
|
|
7118
7564
|
return handlePlaybackRateChange(speed);
|
|
7119
7565
|
},
|
|
@@ -7152,7 +7598,7 @@ var StormcloudVideoPlayerComponent = import_react.default.memo(function(props) {
|
|
|
7152
7598
|
})
|
|
7153
7599
|
]
|
|
7154
7600
|
}),
|
|
7155
|
-
/* @__PURE__ */ (0,
|
|
7601
|
+
/* @__PURE__ */ (0, import_jsx_runtime2.jsx)("button", {
|
|
7156
7602
|
className: "sc-ctrl-btn",
|
|
7157
7603
|
onClick: function onClick() {
|
|
7158
7604
|
if (onFullscreenToggle) {
|
|
@@ -7173,9 +7619,9 @@ var StormcloudVideoPlayerComponent = import_react.default.memo(function(props) {
|
|
|
7173
7619
|
minHeight: "".concat(36 * responsiveScale, "px")
|
|
7174
7620
|
},
|
|
7175
7621
|
title: isFullscreen ? "Exit Fullscreen" : "Enter Fullscreen",
|
|
7176
|
-
children: isFullscreen ? /* @__PURE__ */ (0,
|
|
7622
|
+
children: isFullscreen ? /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(import_fa.FaCompress, {
|
|
7177
7623
|
size: Math.max(14, 18 * responsiveScale)
|
|
7178
|
-
}) : /* @__PURE__ */ (0,
|
|
7624
|
+
}) : /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(import_fa.FaExpand, {
|
|
7179
7625
|
size: Math.max(14, 18 * responsiveScale)
|
|
7180
7626
|
})
|
|
7181
7627
|
})
|
|
@@ -7184,7 +7630,7 @@ var StormcloudVideoPlayerComponent = import_react.default.memo(function(props) {
|
|
|
7184
7630
|
]
|
|
7185
7631
|
})
|
|
7186
7632
|
]
|
|
7187
|
-
}) : showCustomControls && !showLicenseWarning && /* @__PURE__ */ (0,
|
|
7633
|
+
}) : showCustomControls && !showLicenseWarning && /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)("div", {
|
|
7188
7634
|
className: "sc-controls-bar",
|
|
7189
7635
|
style: {
|
|
7190
7636
|
position: "absolute",
|
|
@@ -7199,7 +7645,7 @@ var StormcloudVideoPlayerComponent = import_react.default.memo(function(props) {
|
|
|
7199
7645
|
pointerEvents: controlsVisible ? "auto" : "none"
|
|
7200
7646
|
},
|
|
7201
7647
|
children: [
|
|
7202
|
-
/* @__PURE__ */ (0,
|
|
7648
|
+
/* @__PURE__ */ (0, import_jsx_runtime2.jsxs)("div", {
|
|
7203
7649
|
style: {
|
|
7204
7650
|
display: "flex",
|
|
7205
7651
|
alignItems: "center",
|
|
@@ -7214,7 +7660,7 @@ var StormcloudVideoPlayerComponent = import_react.default.memo(function(props) {
|
|
|
7214
7660
|
return setShowVolumeSlider(false);
|
|
7215
7661
|
},
|
|
7216
7662
|
children: [
|
|
7217
|
-
/* @__PURE__ */ (0,
|
|
7663
|
+
/* @__PURE__ */ (0, import_jsx_runtime2.jsx)("button", {
|
|
7218
7664
|
className: "sc-ctrl-btn",
|
|
7219
7665
|
onClick: function onClick() {
|
|
7220
7666
|
if (playerRef.current) playerRef.current.toggleMute();
|
|
@@ -7228,11 +7674,11 @@ var StormcloudVideoPlayerComponent = import_react.default.memo(function(props) {
|
|
|
7228
7674
|
minHeight: "".concat(36 * responsiveScale, "px")
|
|
7229
7675
|
},
|
|
7230
7676
|
title: isMuted ? "Unmute" : "Mute",
|
|
7231
|
-
children: /* @__PURE__ */ (0,
|
|
7677
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(VolumeIcon, {
|
|
7232
7678
|
size: Math.max(14, 18 * responsiveScale)
|
|
7233
7679
|
})
|
|
7234
7680
|
}),
|
|
7235
|
-
/* @__PURE__ */ (0,
|
|
7681
|
+
/* @__PURE__ */ (0, import_jsx_runtime2.jsx)("div", {
|
|
7236
7682
|
style: {
|
|
7237
7683
|
width: showVolumeSlider ? "".concat(62 * responsiveScale, "px") : "0px",
|
|
7238
7684
|
overflow: "hidden",
|
|
@@ -7242,7 +7688,7 @@ var StormcloudVideoPlayerComponent = import_react.default.memo(function(props) {
|
|
|
7242
7688
|
paddingLeft: showVolumeSlider ? "2px" : "0",
|
|
7243
7689
|
paddingRight: showVolumeSlider ? "6px" : "0"
|
|
7244
7690
|
},
|
|
7245
|
-
children: /* @__PURE__ */ (0,
|
|
7691
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)("div", {
|
|
7246
7692
|
style: {
|
|
7247
7693
|
position: "relative",
|
|
7248
7694
|
width: "".concat(56 * responsiveScale, "px"),
|
|
@@ -7272,7 +7718,7 @@ var StormcloudVideoPlayerComponent = import_react.default.memo(function(props) {
|
|
|
7272
7718
|
handleVolumeChange(Math.max(0, Math.min(1, (e.clientX - r.left) / r.width)));
|
|
7273
7719
|
},
|
|
7274
7720
|
children: [
|
|
7275
|
-
/* @__PURE__ */ (0,
|
|
7721
|
+
/* @__PURE__ */ (0, import_jsx_runtime2.jsx)("div", {
|
|
7276
7722
|
style: {
|
|
7277
7723
|
position: "absolute",
|
|
7278
7724
|
inset: 0,
|
|
@@ -7280,7 +7726,7 @@ var StormcloudVideoPlayerComponent = import_react.default.memo(function(props) {
|
|
|
7280
7726
|
borderRadius: "1.5px"
|
|
7281
7727
|
}
|
|
7282
7728
|
}),
|
|
7283
|
-
/* @__PURE__ */ (0,
|
|
7729
|
+
/* @__PURE__ */ (0, import_jsx_runtime2.jsx)("div", {
|
|
7284
7730
|
style: {
|
|
7285
7731
|
position: "absolute",
|
|
7286
7732
|
top: 0,
|
|
@@ -7292,7 +7738,7 @@ var StormcloudVideoPlayerComponent = import_react.default.memo(function(props) {
|
|
|
7292
7738
|
transition: "width 0.1s ease-out"
|
|
7293
7739
|
}
|
|
7294
7740
|
}),
|
|
7295
|
-
/* @__PURE__ */ (0,
|
|
7741
|
+
/* @__PURE__ */ (0, import_jsx_runtime2.jsx)("div", {
|
|
7296
7742
|
style: {
|
|
7297
7743
|
position: "absolute",
|
|
7298
7744
|
top: "50%",
|
|
@@ -7311,7 +7757,7 @@ var StormcloudVideoPlayerComponent = import_react.default.memo(function(props) {
|
|
|
7311
7757
|
})
|
|
7312
7758
|
]
|
|
7313
7759
|
}),
|
|
7314
|
-
/* @__PURE__ */ (0,
|
|
7760
|
+
/* @__PURE__ */ (0, import_jsx_runtime2.jsx)("button", {
|
|
7315
7761
|
className: "sc-ctrl-btn",
|
|
7316
7762
|
onClick: function onClick() {
|
|
7317
7763
|
if (onFullscreenToggle) {
|
|
@@ -7333,15 +7779,15 @@ var StormcloudVideoPlayerComponent = import_react.default.memo(function(props) {
|
|
|
7333
7779
|
background: "rgba(0, 0, 0, 0.6)"
|
|
7334
7780
|
},
|
|
7335
7781
|
title: isFullscreen ? "Exit Fullscreen" : "Enter Fullscreen",
|
|
7336
|
-
children: isFullscreen ? /* @__PURE__ */ (0,
|
|
7782
|
+
children: isFullscreen ? /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(import_fa.FaCompress, {
|
|
7337
7783
|
size: Math.max(14, 18 * responsiveScale)
|
|
7338
|
-
}) : /* @__PURE__ */ (0,
|
|
7784
|
+
}) : /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(import_fa.FaExpand, {
|
|
7339
7785
|
size: Math.max(14, 18 * responsiveScale)
|
|
7340
7786
|
})
|
|
7341
7787
|
})
|
|
7342
7788
|
]
|
|
7343
7789
|
}),
|
|
7344
|
-
onControlClick && /* @__PURE__ */ (0,
|
|
7790
|
+
onControlClick && /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("div", {
|
|
7345
7791
|
onClick: onControlClick,
|
|
7346
7792
|
style: {
|
|
7347
7793
|
position: "absolute",
|
|
@@ -7392,7 +7838,8 @@ var StormcloudVideoPlayerComponent = import_react.default.memo(function(props) {
|
|
|
7392
7838
|
"playsInline",
|
|
7393
7839
|
"preload",
|
|
7394
7840
|
"poster",
|
|
7395
|
-
"children"
|
|
7841
|
+
"children",
|
|
7842
|
+
"swirlProjectId"
|
|
7396
7843
|
];
|
|
7397
7844
|
var _iteratorNormalCompletion1 = true, _didIteratorError1 = false, _iteratorError1 = undefined;
|
|
7398
7845
|
try {
|
|
@@ -7447,7 +7894,7 @@ var StormcloudVideoPlayerComponent = import_react.default.memo(function(props) {
|
|
|
7447
7894
|
return true;
|
|
7448
7895
|
});
|
|
7449
7896
|
// src/StormcloudPlayer.tsx
|
|
7450
|
-
var
|
|
7897
|
+
var import_react7 = __toESM(require("react"), 1);
|
|
7451
7898
|
// src/props.ts
|
|
7452
7899
|
var noop = function noop() {};
|
|
7453
7900
|
var defaultProps = {
|
|
@@ -7495,8 +7942,8 @@ var defaultProps = {
|
|
|
7495
7942
|
onControlClick: noop
|
|
7496
7943
|
};
|
|
7497
7944
|
// src/utils.ts
|
|
7498
|
-
var
|
|
7499
|
-
var lazy =
|
|
7945
|
+
var import_react3 = require("react");
|
|
7946
|
+
var lazy = import_react3.lazy;
|
|
7500
7947
|
var omit = function omit(object, keys) {
|
|
7501
7948
|
var result = _object_spread({}, object);
|
|
7502
7949
|
keys.forEach(function(key) {
|
|
@@ -7612,9 +8059,9 @@ var canPlay = {
|
|
|
7612
8059
|
}
|
|
7613
8060
|
};
|
|
7614
8061
|
// src/players/HlsPlayer.tsx
|
|
7615
|
-
var
|
|
7616
|
-
var HlsPlayer = /*#__PURE__*/ function(
|
|
7617
|
-
_inherits(HlsPlayer,
|
|
8062
|
+
var import_react4 = require("react");
|
|
8063
|
+
var HlsPlayer = /*#__PURE__*/ function(_import_react4_Component) {
|
|
8064
|
+
_inherits(HlsPlayer, _import_react4_Component);
|
|
7618
8065
|
function HlsPlayer() {
|
|
7619
8066
|
_class_call_check(this, HlsPlayer);
|
|
7620
8067
|
var _this;
|
|
@@ -7815,13 +8262,13 @@ var HlsPlayer = /*#__PURE__*/ function(_import_react3_Component) {
|
|
|
7815
8262
|
}
|
|
7816
8263
|
]);
|
|
7817
8264
|
return HlsPlayer;
|
|
7818
|
-
}(
|
|
8265
|
+
}(import_react4.Component);
|
|
7819
8266
|
HlsPlayer.displayName = "HlsPlayer";
|
|
7820
8267
|
HlsPlayer.canPlay = canPlay.hls;
|
|
7821
8268
|
// src/players/FilePlayer.tsx
|
|
7822
|
-
var
|
|
7823
|
-
var FilePlayer = /*#__PURE__*/ function(
|
|
7824
|
-
_inherits(FilePlayer,
|
|
8269
|
+
var import_react5 = require("react");
|
|
8270
|
+
var FilePlayer = /*#__PURE__*/ function(_import_react5_Component) {
|
|
8271
|
+
_inherits(FilePlayer, _import_react5_Component);
|
|
7825
8272
|
function FilePlayer() {
|
|
7826
8273
|
_class_call_check(this, FilePlayer);
|
|
7827
8274
|
var _this;
|
|
@@ -8095,7 +8542,7 @@ var FilePlayer = /*#__PURE__*/ function(_import_react4_Component) {
|
|
|
8095
8542
|
}
|
|
8096
8543
|
]);
|
|
8097
8544
|
return FilePlayer;
|
|
8098
|
-
}(
|
|
8545
|
+
}(import_react5.Component);
|
|
8099
8546
|
FilePlayer.displayName = "FilePlayer";
|
|
8100
8547
|
FilePlayer.canPlay = canPlay.file;
|
|
8101
8548
|
// src/players/index.ts
|
|
@@ -8126,10 +8573,10 @@ var players = [
|
|
|
8126
8573
|
];
|
|
8127
8574
|
var players_default = players;
|
|
8128
8575
|
// src/Player.tsx
|
|
8129
|
-
var
|
|
8576
|
+
var import_react6 = __toESM(require("react"), 1);
|
|
8130
8577
|
var SEEK_ON_PLAY_EXPIRY = 5e3;
|
|
8131
|
-
var Player = /*#__PURE__*/ function(
|
|
8132
|
-
_inherits(Player,
|
|
8578
|
+
var Player = /*#__PURE__*/ function(_import_react6_Component) {
|
|
8579
|
+
_inherits(Player, _import_react6_Component);
|
|
8133
8580
|
function Player() {
|
|
8134
8581
|
_class_call_check(this, Player);
|
|
8135
8582
|
var _this;
|
|
@@ -8374,7 +8821,7 @@ var Player = /*#__PURE__*/ function(_import_react5_Component) {
|
|
|
8374
8821
|
if (!Player2) {
|
|
8375
8822
|
return null;
|
|
8376
8823
|
}
|
|
8377
|
-
return
|
|
8824
|
+
return import_react6.default.createElement(Player2, _object_spread_props(_object_spread({}, this.props), {
|
|
8378
8825
|
onMount: this.handlePlayerMount,
|
|
8379
8826
|
onReady: this.handleReady,
|
|
8380
8827
|
onPlay: this.handlePlay,
|
|
@@ -8387,13 +8834,13 @@ var Player = /*#__PURE__*/ function(_import_react5_Component) {
|
|
|
8387
8834
|
}
|
|
8388
8835
|
]);
|
|
8389
8836
|
return Player;
|
|
8390
|
-
}(
|
|
8837
|
+
}(import_react6.Component);
|
|
8391
8838
|
Player.displayName = "Player";
|
|
8392
8839
|
Player.defaultProps = defaultProps;
|
|
8393
8840
|
// src/StormcloudPlayer.tsx
|
|
8394
8841
|
var IS_BROWSER2 = typeof window !== "undefined" && window.document;
|
|
8395
8842
|
var IS_GLOBAL2 = typeof globalThis !== "undefined" && globalThis.window && globalThis.window.document;
|
|
8396
|
-
var UniversalSuspense = IS_BROWSER2 || IS_GLOBAL2 ?
|
|
8843
|
+
var UniversalSuspense = IS_BROWSER2 || IS_GLOBAL2 ? import_react7.Suspense : function() {
|
|
8397
8844
|
return null;
|
|
8398
8845
|
};
|
|
8399
8846
|
var SUPPORTED_PROPS = [
|
|
@@ -8442,8 +8889,8 @@ var SUPPORTED_PROPS = [
|
|
|
8442
8889
|
var customPlayers = [];
|
|
8443
8890
|
var createStormcloudPlayer = function createStormcloudPlayer(playerList, fallback) {
|
|
8444
8891
|
var _a;
|
|
8445
|
-
return _a = /*#__PURE__*/ function(
|
|
8446
|
-
_inherits(_a,
|
|
8892
|
+
return _a = /*#__PURE__*/ function(_import_react7_Component) {
|
|
8893
|
+
_inherits(_a, _import_react7_Component);
|
|
8447
8894
|
function _a() {
|
|
8448
8895
|
_class_call_check(this, _a);
|
|
8449
8896
|
var _this;
|
|
@@ -8520,7 +8967,7 @@ var createStormcloudPlayer = function createStormcloudPlayer(playerList, fallbac
|
|
|
8520
8967
|
if (!src) return null;
|
|
8521
8968
|
var activePlayer = _this.getActivePlayer(src);
|
|
8522
8969
|
if (!activePlayer) return null;
|
|
8523
|
-
return
|
|
8970
|
+
return import_react7.default.createElement(Player, _object_spread_props(_object_spread({}, _this.props), {
|
|
8524
8971
|
key: activePlayer.key,
|
|
8525
8972
|
ref: _this.references.player,
|
|
8526
8973
|
activePlayer: activePlayer.lazyPlayer || activePlayer,
|
|
@@ -8536,20 +8983,20 @@ var createStormcloudPlayer = function createStormcloudPlayer(playerList, fallbac
|
|
|
8536
8983
|
var _this_props = this.props, src = _this_props.src, style = _this_props.style, width = _this_props.width, height = _this_props.height, fallbackElement = _this_props.fallback, Wrapper = _this_props.wrapper;
|
|
8537
8984
|
var attributes = this.getAttributes(src);
|
|
8538
8985
|
var wrapperRef = typeof Wrapper === "string" ? this.references.wrapper : void 0;
|
|
8539
|
-
return
|
|
8986
|
+
return import_react7.default.createElement(Wrapper, _object_spread({
|
|
8540
8987
|
ref: wrapperRef,
|
|
8541
8988
|
style: _object_spread_props(_object_spread({}, style), {
|
|
8542
8989
|
width: width,
|
|
8543
8990
|
height: height
|
|
8544
8991
|
})
|
|
8545
|
-
}, attributes),
|
|
8992
|
+
}, attributes), import_react7.default.createElement(UniversalSuspense, {
|
|
8546
8993
|
fallback: fallbackElement
|
|
8547
8994
|
}, this.renderActivePlayer(src)));
|
|
8548
8995
|
}
|
|
8549
8996
|
}
|
|
8550
8997
|
]);
|
|
8551
8998
|
return _a;
|
|
8552
|
-
}(
|
|
8999
|
+
}(import_react7.Component), _a.displayName = "StormcloudPlayer", _a.defaultProps = _object_spread_props(_object_spread({}, defaultProps), {
|
|
8553
9000
|
fallback: null,
|
|
8554
9001
|
wrapper: "div"
|
|
8555
9002
|
}), _a.addCustomPlayer = function(player) {
|
|
@@ -8624,11 +9071,13 @@ var StormcloudPlayer_default = StormcloudPlayer;
|
|
|
8624
9071
|
createVastAdLayer: createVastAdLayer,
|
|
8625
9072
|
createVastManager: createVastManager,
|
|
8626
9073
|
detectBrowser: detectBrowser,
|
|
9074
|
+
fetchProjectOverlays: fetchProjectOverlays,
|
|
8627
9075
|
getBrowserConfigOverrides: getBrowserConfigOverrides,
|
|
8628
9076
|
getBrowserID: getBrowserID,
|
|
8629
9077
|
getClientInfo: getClientInfo,
|
|
8630
9078
|
initializePolyfills: initializePolyfills,
|
|
8631
9079
|
isMediaStream: isMediaStream,
|
|
9080
|
+
isOverlayActive: isOverlayActive,
|
|
8632
9081
|
lazy: lazy,
|
|
8633
9082
|
logBrowserInfo: logBrowserInfo,
|
|
8634
9083
|
merge: merge,
|
|
@@ -8636,10 +9085,12 @@ var StormcloudPlayer_default = StormcloudPlayer;
|
|
|
8636
9085
|
parseQuery: parseQuery,
|
|
8637
9086
|
players: players,
|
|
8638
9087
|
randomString: randomString,
|
|
9088
|
+
resolveImageUrl: resolveImageUrl,
|
|
8639
9089
|
sendHeartbeat: sendHeartbeat,
|
|
8640
9090
|
sendInitialTracking: sendInitialTracking,
|
|
8641
9091
|
supportsFeature: supportsFeature,
|
|
8642
9092
|
supportsModernJS: supportsModernJS,
|
|
8643
|
-
supportsWebKitPresentationMode: supportsWebKitPresentationMode
|
|
9093
|
+
supportsWebKitPresentationMode: supportsWebKitPresentationMode,
|
|
9094
|
+
timeStringToSeconds: timeStringToSeconds
|
|
8644
9095
|
});
|
|
8645
9096
|
//# sourceMappingURL=index.cjs.map
|