stormcloud-video-player 0.7.13 → 0.7.16
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 +371 -49
- package/lib/index.cjs.map +1 -1
- package/lib/index.d.cts +12 -0
- package/lib/index.d.ts +12 -0
- package/lib/index.js +372 -50
- package/lib/index.js.map +1 -1
- package/lib/player/StormcloudVideoPlayer.cjs +38 -10
- package/lib/player/StormcloudVideoPlayer.cjs.map +1 -1
- package/lib/player/StormcloudVideoPlayer.d.cts +4 -0
- package/lib/players/FilePlayer.cjs.map +1 -1
- package/lib/players/HlsPlayer.cjs +38 -10
- package/lib/players/HlsPlayer.cjs.map +1 -1
- package/lib/players/index.cjs +38 -10
- package/lib/players/index.cjs.map +1 -1
- package/lib/sdk/adstormPlayer.cjs.map +1 -1
- package/lib/sdk/vastParser.cjs.map +1 -1
- package/lib/ui/OverlayRenderer.cjs +408 -37
- package/lib/ui/OverlayRenderer.cjs.map +1 -1
- package/lib/ui/StormcloudVideoPlayer.cjs +371 -49
- package/lib/ui/StormcloudVideoPlayer.cjs.map +1 -1
- package/lib/utils/browserCompat.cjs.map +1 -1
- package/lib/utils/overlays.d.cts +8 -0
- package/lib/utils/polyfills.cjs.map +1 -1
- package/lib/utils/tracking.cjs.map +1 -1
- package/package.json +1 -1
package/lib/index.cjs
CHANGED
|
@@ -2931,6 +2931,7 @@ var StormcloudVideoPlayer = /*#__PURE__*/ function() {
|
|
|
2931
2931
|
this.maxTotalAdRequestsPerBreak = 20;
|
|
2932
2932
|
this.pendingAdBreak = null;
|
|
2933
2933
|
this.savedMutedStateBeforeAd = null;
|
|
2934
|
+
this.adLayerInitialized = false;
|
|
2934
2935
|
this.consecutiveFailures = 0;
|
|
2935
2936
|
this.maxConsecutiveFailures = 5;
|
|
2936
2937
|
this.lastAdRequestTime = 0;
|
|
@@ -3579,12 +3580,7 @@ var StormcloudVideoPlayer = /*#__PURE__*/ function() {
|
|
|
3579
3580
|
this.video.autoplay = !!this.config.autoplay;
|
|
3580
3581
|
this.video.muted = !!this.config.muted;
|
|
3581
3582
|
if (!this.config.disableAds) {
|
|
3582
|
-
this.
|
|
3583
|
-
if (!this.config.disableFiller) {
|
|
3584
|
-
this.ensureFillerVideo();
|
|
3585
|
-
}
|
|
3586
|
-
this.adLayer.updateOriginalMutedState(this.video.muted, this.video.volume);
|
|
3587
|
-
this.attachAdLayerEventListeners();
|
|
3583
|
+
this.initializeAdLayer();
|
|
3588
3584
|
}
|
|
3589
3585
|
this.timeUpdateHandler = function() {
|
|
3590
3586
|
_this.onTimeUpdate(_this.video.currentTime);
|
|
@@ -3685,6 +3681,31 @@ var StormcloudVideoPlayer = /*#__PURE__*/ function() {
|
|
|
3685
3681
|
return this.showAds;
|
|
3686
3682
|
}
|
|
3687
3683
|
},
|
|
3684
|
+
{
|
|
3685
|
+
key: "initializeAdLayer",
|
|
3686
|
+
value: function initializeAdLayer() {
|
|
3687
|
+
if (this.adLayerInitialized) return;
|
|
3688
|
+
this.adLayer.initialize();
|
|
3689
|
+
if (!this.config.disableFiller) {
|
|
3690
|
+
this.ensureFillerVideo();
|
|
3691
|
+
}
|
|
3692
|
+
this.adLayer.updateOriginalMutedState(this.video.muted, this.video.volume);
|
|
3693
|
+
this.attachAdLayerEventListeners();
|
|
3694
|
+
this.adLayerInitialized = true;
|
|
3695
|
+
}
|
|
3696
|
+
},
|
|
3697
|
+
{
|
|
3698
|
+
key: "setDisableAds",
|
|
3699
|
+
value: function setDisableAds(disabled) {
|
|
3700
|
+
this.config.disableAds = disabled;
|
|
3701
|
+
if (!disabled && this.attached) {
|
|
3702
|
+
this.initializeAdLayer();
|
|
3703
|
+
}
|
|
3704
|
+
if (this.config.debugAdTiming) {
|
|
3705
|
+
console.log("[StormcloudVideoPlayer] setDisableAds:", disabled);
|
|
3706
|
+
}
|
|
3707
|
+
}
|
|
3708
|
+
},
|
|
3688
3709
|
{
|
|
3689
3710
|
key: "syncMainContentAudioWhenVisible",
|
|
3690
3711
|
value: function syncMainContentAudioWhenVisible() {
|
|
@@ -4209,14 +4230,21 @@ var StormcloudVideoPlayer = /*#__PURE__*/ function() {
|
|
|
4209
4230
|
}
|
|
4210
4231
|
}
|
|
4211
4232
|
},
|
|
4233
|
+
{
|
|
4234
|
+
key: "extractTsFilename",
|
|
4235
|
+
value: function extractTsFilename(url) {
|
|
4236
|
+
var _parts_;
|
|
4237
|
+
var clean = url.includes("?") ? url.slice(0, url.indexOf("?")) : url;
|
|
4238
|
+
var parts = clean.split("/");
|
|
4239
|
+
return (_parts_ = parts[parts.length - 1]) !== null && _parts_ !== void 0 ? _parts_ : clean;
|
|
4240
|
+
}
|
|
4241
|
+
},
|
|
4212
4242
|
{
|
|
4213
4243
|
key: "fragmentMatchesSegment",
|
|
4214
4244
|
value: function fragmentMatchesSegment(frag, segmentName) {
|
|
4215
|
-
var _rawUrl_split_;
|
|
4216
4245
|
var rawUrl = (frag === null || frag === void 0 ? void 0 : frag.url) || (frag === null || frag === void 0 ? void 0 : frag.relurl) || "";
|
|
4217
|
-
|
|
4218
|
-
|
|
4219
|
-
return url.endsWith(name) || url.includes(name);
|
|
4246
|
+
if (!rawUrl) return false;
|
|
4247
|
+
return this.extractTsFilename(rawUrl) === this.extractTsFilename(segmentName);
|
|
4220
4248
|
}
|
|
4221
4249
|
},
|
|
4222
4250
|
{
|
|
@@ -5912,60 +5940,303 @@ function TextOverlay(param) {
|
|
|
5912
5940
|
children: text
|
|
5913
5941
|
});
|
|
5914
5942
|
}
|
|
5943
|
+
function fetchRSSItems(rssUrl, maxItems) {
|
|
5944
|
+
return _async_to_generator(function() {
|
|
5945
|
+
var resp, data, parser, doc;
|
|
5946
|
+
return _ts_generator(this, function(_state) {
|
|
5947
|
+
switch(_state.label){
|
|
5948
|
+
case 0:
|
|
5949
|
+
return [
|
|
5950
|
+
4,
|
|
5951
|
+
fetch("https://api.allorigins.win/get?url=".concat(encodeURIComponent(rssUrl)))
|
|
5952
|
+
];
|
|
5953
|
+
case 1:
|
|
5954
|
+
resp = _state.sent();
|
|
5955
|
+
return [
|
|
5956
|
+
4,
|
|
5957
|
+
resp.json()
|
|
5958
|
+
];
|
|
5959
|
+
case 2:
|
|
5960
|
+
data = _state.sent();
|
|
5961
|
+
if (!data.contents) throw new Error("No content from RSS feed");
|
|
5962
|
+
parser = new DOMParser();
|
|
5963
|
+
doc = parser.parseFromString(data.contents, "text/xml");
|
|
5964
|
+
if (doc.querySelector("parsererror")) throw new Error("Invalid RSS XML");
|
|
5965
|
+
return [
|
|
5966
|
+
2,
|
|
5967
|
+
Array.from(doc.querySelectorAll("item")).map(function(item) {
|
|
5968
|
+
var _item_querySelector, _item_querySelector1, _item_querySelector2, _item_querySelector3, _item_querySelector4;
|
|
5969
|
+
return {
|
|
5970
|
+
title: (((_item_querySelector = item.querySelector("title")) === null || _item_querySelector === void 0 ? void 0 : _item_querySelector.textContent) || "").replace(/<[^>]*>/g, "").trim(),
|
|
5971
|
+
description: (((_item_querySelector1 = item.querySelector("description")) === null || _item_querySelector1 === void 0 ? void 0 : _item_querySelector1.textContent) || "").replace(/<[^>]*>/g, "").trim(),
|
|
5972
|
+
pubDate: ((_item_querySelector2 = item.querySelector("pubDate")) === null || _item_querySelector2 === void 0 ? void 0 : _item_querySelector2.textContent) || "",
|
|
5973
|
+
author: ((_item_querySelector3 = item.querySelector("author, dc\\:creator")) === null || _item_querySelector3 === void 0 ? void 0 : _item_querySelector3.textContent) || "",
|
|
5974
|
+
category: ((_item_querySelector4 = item.querySelector("category")) === null || _item_querySelector4 === void 0 ? void 0 : _item_querySelector4.textContent) || ""
|
|
5975
|
+
};
|
|
5976
|
+
}).filter(function(i) {
|
|
5977
|
+
return i.title;
|
|
5978
|
+
}).slice(0, maxItems)
|
|
5979
|
+
];
|
|
5980
|
+
}
|
|
5981
|
+
});
|
|
5982
|
+
})();
|
|
5983
|
+
}
|
|
5915
5984
|
function ScrollerOverlay(param) {
|
|
5916
5985
|
var overlay = param.overlay;
|
|
5917
|
-
var _ref, _ref1, _ref2, _ref3, _ref4;
|
|
5986
|
+
var _ref, _ref1, _ref2, _ref3, _ref4, _ref5, _ref6, _ref7, _ref8, _ref9, _ref10, _ref11, _ref12;
|
|
5918
5987
|
var cfg = overlay.scroller_config;
|
|
5919
|
-
var
|
|
5920
|
-
var
|
|
5921
|
-
var
|
|
5922
|
-
var
|
|
5988
|
+
var uid = (0, import_react.useId)().replace(/:/g, "");
|
|
5989
|
+
var _ref13 = _sliced_to_array((0, import_react.useState)([]), 2), rssItems = _ref13[0], setRssItems = _ref13[1];
|
|
5990
|
+
var _ref14 = _sliced_to_array((0, import_react.useState)(false), 2), rssLoading = _ref14[0], setRssLoading = _ref14[1];
|
|
5991
|
+
var rssUrl = (cfg === null || cfg === void 0 ? void 0 : cfg.rss_url) || "";
|
|
5992
|
+
var maxItems = (_ref = cfg === null || cfg === void 0 ? void 0 : cfg.max_items) !== null && _ref !== void 0 ? _ref : 10;
|
|
5993
|
+
var autoRefresh = (cfg === null || cfg === void 0 ? void 0 : cfg.auto_refresh) !== false;
|
|
5994
|
+
var updateInterval = (_ref1 = cfg === null || cfg === void 0 ? void 0 : cfg.update_interval) !== null && _ref1 !== void 0 ? _ref1 : 5;
|
|
5995
|
+
(0, import_react.useEffect)(function() {
|
|
5996
|
+
if (!rssUrl || (cfg === null || cfg === void 0 ? void 0 : cfg.use_custom_text) && (cfg === null || cfg === void 0 ? void 0 : cfg.custom_text)) return;
|
|
5997
|
+
var cancelled = false;
|
|
5998
|
+
setRssLoading(true);
|
|
5999
|
+
fetchRSSItems(rssUrl, maxItems).then(function(items) {
|
|
6000
|
+
if (!cancelled) setRssItems(items);
|
|
6001
|
+
}).catch(function() {}).finally(function() {
|
|
6002
|
+
if (!cancelled) setRssLoading(false);
|
|
6003
|
+
});
|
|
6004
|
+
return function() {
|
|
6005
|
+
cancelled = true;
|
|
6006
|
+
};
|
|
6007
|
+
}, [
|
|
6008
|
+
rssUrl,
|
|
6009
|
+
maxItems,
|
|
6010
|
+
cfg === null || cfg === void 0 ? void 0 : cfg.use_custom_text,
|
|
6011
|
+
cfg === null || cfg === void 0 ? void 0 : cfg.custom_text
|
|
6012
|
+
]);
|
|
6013
|
+
(0, import_react.useEffect)(function() {
|
|
6014
|
+
if (!rssUrl || !autoRefresh || (cfg === null || cfg === void 0 ? void 0 : cfg.use_custom_text) && (cfg === null || cfg === void 0 ? void 0 : cfg.custom_text)) return;
|
|
6015
|
+
var interval = setInterval(function() {
|
|
6016
|
+
fetchRSSItems(rssUrl, maxItems).then(setRssItems).catch(function() {});
|
|
6017
|
+
}, updateInterval * 60 * 1e3);
|
|
6018
|
+
return function() {
|
|
6019
|
+
return clearInterval(interval);
|
|
6020
|
+
};
|
|
6021
|
+
}, [
|
|
6022
|
+
rssUrl,
|
|
6023
|
+
autoRefresh,
|
|
6024
|
+
updateInterval,
|
|
6025
|
+
maxItems,
|
|
6026
|
+
cfg === null || cfg === void 0 ? void 0 : cfg.use_custom_text,
|
|
6027
|
+
cfg === null || cfg === void 0 ? void 0 : cfg.custom_text
|
|
6028
|
+
]);
|
|
6029
|
+
var sep = (_ref2 = cfg === null || cfg === void 0 ? void 0 : cfg.separator_char) !== null && _ref2 !== void 0 ? _ref2 : "\u25C6";
|
|
6030
|
+
var segments;
|
|
6031
|
+
if ((cfg === null || cfg === void 0 ? void 0 : cfg.use_custom_text) && (cfg === null || cfg === void 0 ? void 0 : cfg.custom_text)) {
|
|
6032
|
+
segments = [
|
|
6033
|
+
cfg.custom_text
|
|
6034
|
+
];
|
|
6035
|
+
} else if (rssItems.length > 0) {
|
|
6036
|
+
segments = rssItems.map(function(item) {
|
|
6037
|
+
var parts = [];
|
|
6038
|
+
if ((cfg === null || cfg === void 0 ? void 0 : cfg.show_title) !== false && item.title) parts.push(item.title);
|
|
6039
|
+
if ((cfg === null || cfg === void 0 ? void 0 : cfg.show_description) && item.description) parts.push(item.description);
|
|
6040
|
+
if ((cfg === null || cfg === void 0 ? void 0 : cfg.show_timestamp) && item.pubDate) {
|
|
6041
|
+
try {
|
|
6042
|
+
parts.push(new Date(item.pubDate).toLocaleDateString());
|
|
6043
|
+
} catch (unused) {}
|
|
6044
|
+
}
|
|
6045
|
+
if ((cfg === null || cfg === void 0 ? void 0 : cfg.show_author) && item.author) parts.push("— ".concat(item.author));
|
|
6046
|
+
if ((cfg === null || cfg === void 0 ? void 0 : cfg.show_category) && item.category) parts.push("[".concat(item.category, "]"));
|
|
6047
|
+
return parts.join(" ");
|
|
6048
|
+
});
|
|
6049
|
+
} else if (rssLoading) {
|
|
6050
|
+
segments = [
|
|
6051
|
+
"Loading feed\u2026"
|
|
6052
|
+
];
|
|
6053
|
+
} else if (overlay.content) {
|
|
6054
|
+
segments = [
|
|
6055
|
+
overlay.content
|
|
6056
|
+
];
|
|
6057
|
+
} else {
|
|
6058
|
+
segments = rssUrl ? [
|
|
6059
|
+
"Fetching RSS feed\u2026"
|
|
6060
|
+
] : [
|
|
6061
|
+
"RSS Ticker"
|
|
6062
|
+
];
|
|
6063
|
+
}
|
|
6064
|
+
var scrollSpeed = (_ref3 = cfg === null || cfg === void 0 ? void 0 : cfg.scroll_speed) !== null && _ref3 !== void 0 ? _ref3 : 40;
|
|
6065
|
+
var direction = (_ref4 = cfg === null || cfg === void 0 ? void 0 : cfg.direction) !== null && _ref4 !== void 0 ? _ref4 : "left";
|
|
6066
|
+
var fontSize = (_ref5 = cfg === null || cfg === void 0 ? void 0 : cfg.font_size) !== null && _ref5 !== void 0 ? _ref5 : 15;
|
|
5923
6067
|
var fontFamily = (cfg === null || cfg === void 0 ? void 0 : cfg.font_family) || "Roboto, 'Segoe UI', Arial, sans-serif";
|
|
5924
|
-
var fontWeight = (cfg === null || cfg === void 0 ? void 0 : cfg.font_weight) || "
|
|
6068
|
+
var fontWeight = (cfg === null || cfg === void 0 ? void 0 : cfg.font_weight) || "700";
|
|
5925
6069
|
var textColor = (cfg === null || cfg === void 0 ? void 0 : cfg.text_color) || "#ffffff";
|
|
5926
|
-
var bgColor = (cfg === null || cfg === void 0 ? void 0 : cfg.background_color) || "
|
|
5927
|
-
var bgOpacity = (cfg === null || cfg === void 0 ? void 0 : cfg.background_opacity) !== void 0 ? cfg.background_opacity / 100 : 0;
|
|
5928
|
-
var
|
|
5929
|
-
var
|
|
5930
|
-
var
|
|
5931
|
-
var
|
|
5932
|
-
var
|
|
6070
|
+
var bgColor = (cfg === null || cfg === void 0 ? void 0 : cfg.background_color) || "#0d0d1a";
|
|
6071
|
+
var bgOpacity = (cfg === null || cfg === void 0 ? void 0 : cfg.background_opacity) !== void 0 ? cfg.background_opacity / 100 : 0.95;
|
|
6072
|
+
var borderRadius = (_ref6 = cfg === null || cfg === void 0 ? void 0 : cfg.border_radius) !== null && _ref6 !== void 0 ? _ref6 : 0;
|
|
6073
|
+
var itemSpacing = (_ref7 = cfg === null || cfg === void 0 ? void 0 : cfg.item_spacing) !== null && _ref7 !== void 0 ? _ref7 : 60;
|
|
6074
|
+
var label = (_ref8 = cfg === null || cfg === void 0 ? void 0 : cfg.label) !== null && _ref8 !== void 0 ? _ref8 : "NEWS";
|
|
6075
|
+
var labelLine2 = (_ref9 = cfg === null || cfg === void 0 ? void 0 : cfg.label_line2) !== null && _ref9 !== void 0 ? _ref9 : "";
|
|
6076
|
+
var labelColor = (_ref10 = cfg === null || cfg === void 0 ? void 0 : cfg.label_color) !== null && _ref10 !== void 0 ? _ref10 : "#f97316";
|
|
6077
|
+
var labelTextColor = (_ref11 = cfg === null || cfg === void 0 ? void 0 : cfg.label_text_color) !== null && _ref11 !== void 0 ? _ref11 : "#ffffff";
|
|
6078
|
+
var accentColor = (_ref12 = cfg === null || cfg === void 0 ? void 0 : cfg.accent_color) !== null && _ref12 !== void 0 ? _ref12 : labelColor;
|
|
6079
|
+
var showAccentLine = (cfg === null || cfg === void 0 ? void 0 : cfg.show_accent_line) !== false;
|
|
6080
|
+
var isHorizontal = direction === "left" || direction === "right";
|
|
5933
6081
|
var isReverse = direction === "right" || direction === "down";
|
|
5934
|
-
var
|
|
5935
|
-
var
|
|
5936
|
-
var
|
|
6082
|
+
var fullText = segments.join(" ".concat(sep, " "));
|
|
6083
|
+
var durationSec = Math.max(6, fullText.length * 9 / scrollSpeed);
|
|
6084
|
+
var animId = "sc-ticker-".concat(overlay.id, "-").concat(uid);
|
|
6085
|
+
var keyframes = isHorizontal ? "@keyframes ".concat(animId, " {\n ").concat(isReverse ? "0% { transform: translateX(-50%); } 100% { transform: translateX(0%); }" : "0% { transform: translateX(0); } 100% { transform: translateX(-50%); }", "\n }") : "@keyframes ".concat(animId, " {\n ").concat(isReverse ? "0% { transform: translateY(-50%); } 100% { transform: translateY(0%); }" : "0% { transform: translateY(0); } 100% { transform: translateY(-50%); }", "\n }");
|
|
5937
6086
|
return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment, {
|
|
5938
6087
|
children: [
|
|
5939
6088
|
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("style", {
|
|
5940
6089
|
children: keyframes
|
|
5941
6090
|
}),
|
|
5942
|
-
/* @__PURE__ */ (0, import_jsx_runtime.
|
|
6091
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
5943
6092
|
style: {
|
|
5944
6093
|
width: "100%",
|
|
5945
6094
|
height: "100%",
|
|
5946
|
-
overflow: "hidden",
|
|
5947
6095
|
display: "flex",
|
|
5948
|
-
|
|
5949
|
-
|
|
5950
|
-
border: borderWidth > 0 ? "".concat(borderWidth, "px solid ").concat(borderColor) : void 0,
|
|
6096
|
+
flexDirection: "column",
|
|
6097
|
+
overflow: "hidden",
|
|
5951
6098
|
borderRadius: borderRadius > 0 ? "".concat(borderRadius, "px") : void 0,
|
|
5952
|
-
|
|
5953
|
-
|
|
5954
|
-
|
|
6099
|
+
backgroundColor: "rgba(".concat(hexToRgb(bgColor), ", ").concat(bgOpacity, ")"),
|
|
6100
|
+
fontFamily: fontFamily,
|
|
6101
|
+
fontSize: "".concat(fontSize, "px"),
|
|
6102
|
+
fontWeight: fontWeight,
|
|
6103
|
+
color: textColor,
|
|
6104
|
+
pointerEvents: "none",
|
|
6105
|
+
userSelect: "none"
|
|
5955
6106
|
},
|
|
5956
|
-
children:
|
|
5957
|
-
|
|
5958
|
-
|
|
5959
|
-
|
|
5960
|
-
|
|
5961
|
-
|
|
5962
|
-
|
|
5963
|
-
|
|
5964
|
-
|
|
5965
|
-
|
|
5966
|
-
|
|
5967
|
-
|
|
5968
|
-
|
|
6107
|
+
children: [
|
|
6108
|
+
showAccentLine && /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
|
|
6109
|
+
style: {
|
|
6110
|
+
height: 3,
|
|
6111
|
+
background: accentColor,
|
|
6112
|
+
flexShrink: 0,
|
|
6113
|
+
width: "100%"
|
|
6114
|
+
}
|
|
6115
|
+
}),
|
|
6116
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
6117
|
+
style: {
|
|
6118
|
+
display: "flex",
|
|
6119
|
+
flex: 1,
|
|
6120
|
+
overflow: "hidden",
|
|
6121
|
+
minHeight: 0
|
|
6122
|
+
},
|
|
6123
|
+
children: [
|
|
6124
|
+
label && /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
6125
|
+
style: {
|
|
6126
|
+
background: labelColor,
|
|
6127
|
+
color: labelTextColor,
|
|
6128
|
+
padding: "0 14px",
|
|
6129
|
+
display: "flex",
|
|
6130
|
+
flexDirection: "column",
|
|
6131
|
+
alignItems: "center",
|
|
6132
|
+
justifyContent: "center",
|
|
6133
|
+
flexShrink: 0,
|
|
6134
|
+
minWidth: 72,
|
|
6135
|
+
textAlign: "center",
|
|
6136
|
+
gap: 1
|
|
6137
|
+
},
|
|
6138
|
+
children: [
|
|
6139
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", {
|
|
6140
|
+
style: {
|
|
6141
|
+
fontWeight: 800,
|
|
6142
|
+
fontSize: "0.82em",
|
|
6143
|
+
letterSpacing: "0.05em",
|
|
6144
|
+
lineHeight: 1.1,
|
|
6145
|
+
textTransform: "uppercase",
|
|
6146
|
+
whiteSpace: "nowrap"
|
|
6147
|
+
},
|
|
6148
|
+
children: label
|
|
6149
|
+
}),
|
|
6150
|
+
labelLine2 && /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", {
|
|
6151
|
+
style: {
|
|
6152
|
+
fontWeight: 500,
|
|
6153
|
+
fontSize: "0.62em",
|
|
6154
|
+
letterSpacing: "0.03em",
|
|
6155
|
+
lineHeight: 1.1,
|
|
6156
|
+
opacity: 0.85,
|
|
6157
|
+
whiteSpace: "nowrap"
|
|
6158
|
+
},
|
|
6159
|
+
children: labelLine2
|
|
6160
|
+
})
|
|
6161
|
+
]
|
|
6162
|
+
}),
|
|
6163
|
+
label && /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
|
|
6164
|
+
style: {
|
|
6165
|
+
width: 3,
|
|
6166
|
+
background: accentColor,
|
|
6167
|
+
flexShrink: 0
|
|
6168
|
+
}
|
|
6169
|
+
}),
|
|
6170
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
|
|
6171
|
+
style: {
|
|
6172
|
+
flex: 1,
|
|
6173
|
+
overflow: "hidden",
|
|
6174
|
+
position: "relative",
|
|
6175
|
+
display: "flex",
|
|
6176
|
+
alignItems: "center"
|
|
6177
|
+
},
|
|
6178
|
+
children: isHorizontal ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
|
|
6179
|
+
style: {
|
|
6180
|
+
display: "inline-flex",
|
|
6181
|
+
whiteSpace: "nowrap",
|
|
6182
|
+
animation: "".concat(animId, " ").concat(durationSec, "s linear infinite"),
|
|
6183
|
+
willChange: "transform"
|
|
6184
|
+
},
|
|
6185
|
+
children: [
|
|
6186
|
+
0,
|
|
6187
|
+
1
|
|
6188
|
+
].map(function(copy) {
|
|
6189
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", {
|
|
6190
|
+
style: {
|
|
6191
|
+
paddingRight: "".concat(itemSpacing, "px")
|
|
6192
|
+
},
|
|
6193
|
+
children: segments.map(function(seg, i) {
|
|
6194
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_react.default.Fragment, {
|
|
6195
|
+
children: [
|
|
6196
|
+
i > 0 && /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", {
|
|
6197
|
+
style: {
|
|
6198
|
+
opacity: 0.5,
|
|
6199
|
+
margin: "0 8px"
|
|
6200
|
+
},
|
|
6201
|
+
children: sep
|
|
6202
|
+
}),
|
|
6203
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", {
|
|
6204
|
+
style: {
|
|
6205
|
+
textShadow: "0 1px 3px rgba(0,0,0,0.6)"
|
|
6206
|
+
},
|
|
6207
|
+
children: seg
|
|
6208
|
+
})
|
|
6209
|
+
]
|
|
6210
|
+
}, i);
|
|
6211
|
+
})
|
|
6212
|
+
}, copy);
|
|
6213
|
+
})
|
|
6214
|
+
}) : /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
|
|
6215
|
+
style: {
|
|
6216
|
+
display: "flex",
|
|
6217
|
+
flexDirection: "column",
|
|
6218
|
+
whiteSpace: "nowrap",
|
|
6219
|
+
animation: "".concat(animId, " ").concat(durationSec, "s linear infinite"),
|
|
6220
|
+
willChange: "transform"
|
|
6221
|
+
},
|
|
6222
|
+
children: [
|
|
6223
|
+
0,
|
|
6224
|
+
1
|
|
6225
|
+
].map(function(copy) {
|
|
6226
|
+
return segments.map(function(seg, i) {
|
|
6227
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
|
|
6228
|
+
style: {
|
|
6229
|
+
paddingBottom: "".concat(itemSpacing / 4, "px")
|
|
6230
|
+
},
|
|
6231
|
+
children: seg
|
|
6232
|
+
}, "".concat(copy, "-").concat(i));
|
|
6233
|
+
});
|
|
6234
|
+
})
|
|
6235
|
+
})
|
|
6236
|
+
})
|
|
6237
|
+
]
|
|
6238
|
+
})
|
|
6239
|
+
]
|
|
5969
6240
|
})
|
|
5970
6241
|
]
|
|
5971
6242
|
});
|
|
@@ -7180,12 +7451,13 @@ var StormcloudVideoPlayerComponent = import_react2.default.memo(function(props)
|
|
|
7180
7451
|
var _import_react2_default_useState21 = _sliced_to_array(import_react2.default.useState(false), 2), showDebugPanel = _import_react2_default_useState21[0], setShowDebugPanel = _import_react2_default_useState21[1];
|
|
7181
7452
|
var _import_react2_default_useState22 = _sliced_to_array(import_react2.default.useState([]), 2), debugMarkers = _import_react2_default_useState22[0], setDebugMarkers = _import_react2_default_useState22[1];
|
|
7182
7453
|
var _import_react2_default_useState23 = _sliced_to_array(import_react2.default.useState(false), 2), showAiPanel = _import_react2_default_useState23[0], setShowAiPanel = _import_react2_default_useState23[1];
|
|
7183
|
-
var _import_react2_default_useState24 = _sliced_to_array(import_react2.default.useState(
|
|
7454
|
+
var _import_react2_default_useState24 = _sliced_to_array(import_react2.default.useState(disableAds !== null && disableAds !== void 0 ? disableAds : false), 2), adsDisabled = _import_react2_default_useState24[0], setAdsDisabled = _import_react2_default_useState24[1];
|
|
7455
|
+
var _import_react2_default_useState25 = _sliced_to_array(import_react2.default.useState({
|
|
7184
7456
|
context: null,
|
|
7185
7457
|
isLoading: false,
|
|
7186
7458
|
error: null,
|
|
7187
7459
|
lastPolledAt: null
|
|
7188
|
-
}), 2), aiLiveContext =
|
|
7460
|
+
}), 2), aiLiveContext = _import_react2_default_useState25[0], setAiLiveContext = _import_react2_default_useState25[1];
|
|
7189
7461
|
var getResponsiveScale = function getResponsiveScale() {
|
|
7190
7462
|
if (viewportWidth < 480) return 0.7;
|
|
7191
7463
|
if (viewportWidth < 768) return 0.8;
|
|
@@ -8672,6 +8944,31 @@ var StormcloudVideoPlayerComponent = import_react2.default.memo(function(props)
|
|
|
8672
8944
|
gap: "".concat(8 * responsiveScale, "px")
|
|
8673
8945
|
},
|
|
8674
8946
|
children: [
|
|
8947
|
+
/* @__PURE__ */ (0, import_jsx_runtime2.jsx)("button", {
|
|
8948
|
+
className: "sc-ctrl-btn",
|
|
8949
|
+
onClick: function onClick() {
|
|
8950
|
+
var _playerRef_current;
|
|
8951
|
+
var next = !adsDisabled;
|
|
8952
|
+
setAdsDisabled(next);
|
|
8953
|
+
(_playerRef_current = playerRef.current) === null || _playerRef_current === void 0 ? void 0 : _playerRef_current.setDisableAds(next);
|
|
8954
|
+
resetControlsTimer();
|
|
8955
|
+
},
|
|
8956
|
+
style: {
|
|
8957
|
+
padding: "".concat(8 * responsiveScale, "px"),
|
|
8958
|
+
borderRadius: "50%",
|
|
8959
|
+
minWidth: "".concat(36 * responsiveScale, "px"),
|
|
8960
|
+
minHeight: "".concat(36 * responsiveScale, "px"),
|
|
8961
|
+
background: adsDisabled ? "rgba(239, 68, 68, 0.28)" : "transparent",
|
|
8962
|
+
fontFamily: "'SF Mono', 'Cascadia Code', monospace",
|
|
8963
|
+
fontSize: "".concat(12 * responsiveScale, "px"),
|
|
8964
|
+
fontWeight: 700,
|
|
8965
|
+
letterSpacing: "0.03em",
|
|
8966
|
+
color: adsDisabled ? "rgba(252, 165, 165, 0.9)" : "rgba(255, 255, 255, 0.75)",
|
|
8967
|
+
textDecoration: adsDisabled ? "line-through" : "none"
|
|
8968
|
+
},
|
|
8969
|
+
title: adsDisabled ? "Enable ads" : "Disable ads",
|
|
8970
|
+
children: "AD"
|
|
8971
|
+
}),
|
|
8675
8972
|
swirlProjectId && /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("button", {
|
|
8676
8973
|
className: "sc-ctrl-btn",
|
|
8677
8974
|
onClick: function onClick() {
|
|
@@ -8965,6 +9262,31 @@ var StormcloudVideoPlayerComponent = import_react2.default.memo(function(props)
|
|
|
8965
9262
|
})
|
|
8966
9263
|
]
|
|
8967
9264
|
}),
|
|
9265
|
+
/* @__PURE__ */ (0, import_jsx_runtime2.jsx)("button", {
|
|
9266
|
+
className: "sc-ctrl-btn",
|
|
9267
|
+
onClick: function onClick() {
|
|
9268
|
+
var _playerRef_current;
|
|
9269
|
+
var next = !adsDisabled;
|
|
9270
|
+
setAdsDisabled(next);
|
|
9271
|
+
(_playerRef_current = playerRef.current) === null || _playerRef_current === void 0 ? void 0 : _playerRef_current.setDisableAds(next);
|
|
9272
|
+
resetControlsTimer();
|
|
9273
|
+
},
|
|
9274
|
+
style: {
|
|
9275
|
+
padding: "".concat(8 * responsiveScale, "px"),
|
|
9276
|
+
borderRadius: "50%",
|
|
9277
|
+
minWidth: "".concat(36 * responsiveScale, "px"),
|
|
9278
|
+
minHeight: "".concat(36 * responsiveScale, "px"),
|
|
9279
|
+
background: adsDisabled ? "rgba(239, 68, 68, 0.28)" : "rgba(0, 0, 0, 0.6)",
|
|
9280
|
+
fontFamily: "'SF Mono', 'Cascadia Code', monospace",
|
|
9281
|
+
fontSize: "".concat(12 * responsiveScale, "px"),
|
|
9282
|
+
fontWeight: 700,
|
|
9283
|
+
letterSpacing: "0.03em",
|
|
9284
|
+
color: adsDisabled ? "rgba(252, 165, 165, 0.9)" : "rgba(255, 255, 255, 0.75)",
|
|
9285
|
+
textDecoration: adsDisabled ? "line-through" : "none"
|
|
9286
|
+
},
|
|
9287
|
+
title: adsDisabled ? "Enable ads" : "Disable ads",
|
|
9288
|
+
children: "AD"
|
|
9289
|
+
}),
|
|
8968
9290
|
swirlProjectId && /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("button", {
|
|
8969
9291
|
className: "sc-ctrl-btn",
|
|
8970
9292
|
onClick: function onClick() {
|