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
|
@@ -2753,6 +2753,7 @@ var StormcloudVideoPlayer = /*#__PURE__*/ function() {
|
|
|
2753
2753
|
this.maxTotalAdRequestsPerBreak = 20;
|
|
2754
2754
|
this.pendingAdBreak = null;
|
|
2755
2755
|
this.savedMutedStateBeforeAd = null;
|
|
2756
|
+
this.adLayerInitialized = false;
|
|
2756
2757
|
this.consecutiveFailures = 0;
|
|
2757
2758
|
this.maxConsecutiveFailures = 5;
|
|
2758
2759
|
this.lastAdRequestTime = 0;
|
|
@@ -3401,12 +3402,7 @@ var StormcloudVideoPlayer = /*#__PURE__*/ function() {
|
|
|
3401
3402
|
this.video.autoplay = !!this.config.autoplay;
|
|
3402
3403
|
this.video.muted = !!this.config.muted;
|
|
3403
3404
|
if (!this.config.disableAds) {
|
|
3404
|
-
this.
|
|
3405
|
-
if (!this.config.disableFiller) {
|
|
3406
|
-
this.ensureFillerVideo();
|
|
3407
|
-
}
|
|
3408
|
-
this.adLayer.updateOriginalMutedState(this.video.muted, this.video.volume);
|
|
3409
|
-
this.attachAdLayerEventListeners();
|
|
3405
|
+
this.initializeAdLayer();
|
|
3410
3406
|
}
|
|
3411
3407
|
this.timeUpdateHandler = function() {
|
|
3412
3408
|
_this.onTimeUpdate(_this.video.currentTime);
|
|
@@ -3507,6 +3503,31 @@ var StormcloudVideoPlayer = /*#__PURE__*/ function() {
|
|
|
3507
3503
|
return this.showAds;
|
|
3508
3504
|
}
|
|
3509
3505
|
},
|
|
3506
|
+
{
|
|
3507
|
+
key: "initializeAdLayer",
|
|
3508
|
+
value: function initializeAdLayer() {
|
|
3509
|
+
if (this.adLayerInitialized) return;
|
|
3510
|
+
this.adLayer.initialize();
|
|
3511
|
+
if (!this.config.disableFiller) {
|
|
3512
|
+
this.ensureFillerVideo();
|
|
3513
|
+
}
|
|
3514
|
+
this.adLayer.updateOriginalMutedState(this.video.muted, this.video.volume);
|
|
3515
|
+
this.attachAdLayerEventListeners();
|
|
3516
|
+
this.adLayerInitialized = true;
|
|
3517
|
+
}
|
|
3518
|
+
},
|
|
3519
|
+
{
|
|
3520
|
+
key: "setDisableAds",
|
|
3521
|
+
value: function setDisableAds(disabled) {
|
|
3522
|
+
this.config.disableAds = disabled;
|
|
3523
|
+
if (!disabled && this.attached) {
|
|
3524
|
+
this.initializeAdLayer();
|
|
3525
|
+
}
|
|
3526
|
+
if (this.config.debugAdTiming) {
|
|
3527
|
+
console.log("[StormcloudVideoPlayer] setDisableAds:", disabled);
|
|
3528
|
+
}
|
|
3529
|
+
}
|
|
3530
|
+
},
|
|
3510
3531
|
{
|
|
3511
3532
|
key: "syncMainContentAudioWhenVisible",
|
|
3512
3533
|
value: function syncMainContentAudioWhenVisible() {
|
|
@@ -4031,14 +4052,21 @@ var StormcloudVideoPlayer = /*#__PURE__*/ function() {
|
|
|
4031
4052
|
}
|
|
4032
4053
|
}
|
|
4033
4054
|
},
|
|
4055
|
+
{
|
|
4056
|
+
key: "extractTsFilename",
|
|
4057
|
+
value: function extractTsFilename(url) {
|
|
4058
|
+
var _parts_;
|
|
4059
|
+
var clean = url.includes("?") ? url.slice(0, url.indexOf("?")) : url;
|
|
4060
|
+
var parts = clean.split("/");
|
|
4061
|
+
return (_parts_ = parts[parts.length - 1]) !== null && _parts_ !== void 0 ? _parts_ : clean;
|
|
4062
|
+
}
|
|
4063
|
+
},
|
|
4034
4064
|
{
|
|
4035
4065
|
key: "fragmentMatchesSegment",
|
|
4036
4066
|
value: function fragmentMatchesSegment(frag, segmentName) {
|
|
4037
|
-
var _rawUrl_split_;
|
|
4038
4067
|
var rawUrl = (frag === null || frag === void 0 ? void 0 : frag.url) || (frag === null || frag === void 0 ? void 0 : frag.relurl) || "";
|
|
4039
|
-
|
|
4040
|
-
|
|
4041
|
-
return url.endsWith(name) || url.includes(name);
|
|
4068
|
+
if (!rawUrl) return false;
|
|
4069
|
+
return this.extractTsFilename(rawUrl) === this.extractTsFilename(segmentName);
|
|
4042
4070
|
}
|
|
4043
4071
|
},
|
|
4044
4072
|
{
|
|
@@ -5734,60 +5762,303 @@ function TextOverlay(param) {
|
|
|
5734
5762
|
children: text
|
|
5735
5763
|
});
|
|
5736
5764
|
}
|
|
5765
|
+
function fetchRSSItems(rssUrl, maxItems) {
|
|
5766
|
+
return _async_to_generator(function() {
|
|
5767
|
+
var resp, data, parser, doc;
|
|
5768
|
+
return _ts_generator(this, function(_state) {
|
|
5769
|
+
switch(_state.label){
|
|
5770
|
+
case 0:
|
|
5771
|
+
return [
|
|
5772
|
+
4,
|
|
5773
|
+
fetch("https://api.allorigins.win/get?url=".concat(encodeURIComponent(rssUrl)))
|
|
5774
|
+
];
|
|
5775
|
+
case 1:
|
|
5776
|
+
resp = _state.sent();
|
|
5777
|
+
return [
|
|
5778
|
+
4,
|
|
5779
|
+
resp.json()
|
|
5780
|
+
];
|
|
5781
|
+
case 2:
|
|
5782
|
+
data = _state.sent();
|
|
5783
|
+
if (!data.contents) throw new Error("No content from RSS feed");
|
|
5784
|
+
parser = new DOMParser();
|
|
5785
|
+
doc = parser.parseFromString(data.contents, "text/xml");
|
|
5786
|
+
if (doc.querySelector("parsererror")) throw new Error("Invalid RSS XML");
|
|
5787
|
+
return [
|
|
5788
|
+
2,
|
|
5789
|
+
Array.from(doc.querySelectorAll("item")).map(function(item) {
|
|
5790
|
+
var _item_querySelector, _item_querySelector1, _item_querySelector2, _item_querySelector3, _item_querySelector4;
|
|
5791
|
+
return {
|
|
5792
|
+
title: (((_item_querySelector = item.querySelector("title")) === null || _item_querySelector === void 0 ? void 0 : _item_querySelector.textContent) || "").replace(/<[^>]*>/g, "").trim(),
|
|
5793
|
+
description: (((_item_querySelector1 = item.querySelector("description")) === null || _item_querySelector1 === void 0 ? void 0 : _item_querySelector1.textContent) || "").replace(/<[^>]*>/g, "").trim(),
|
|
5794
|
+
pubDate: ((_item_querySelector2 = item.querySelector("pubDate")) === null || _item_querySelector2 === void 0 ? void 0 : _item_querySelector2.textContent) || "",
|
|
5795
|
+
author: ((_item_querySelector3 = item.querySelector("author, dc\\:creator")) === null || _item_querySelector3 === void 0 ? void 0 : _item_querySelector3.textContent) || "",
|
|
5796
|
+
category: ((_item_querySelector4 = item.querySelector("category")) === null || _item_querySelector4 === void 0 ? void 0 : _item_querySelector4.textContent) || ""
|
|
5797
|
+
};
|
|
5798
|
+
}).filter(function(i) {
|
|
5799
|
+
return i.title;
|
|
5800
|
+
}).slice(0, maxItems)
|
|
5801
|
+
];
|
|
5802
|
+
}
|
|
5803
|
+
});
|
|
5804
|
+
})();
|
|
5805
|
+
}
|
|
5737
5806
|
function ScrollerOverlay(param) {
|
|
5738
5807
|
var overlay = param.overlay;
|
|
5739
|
-
var _ref, _ref1, _ref2, _ref3, _ref4;
|
|
5808
|
+
var _ref, _ref1, _ref2, _ref3, _ref4, _ref5, _ref6, _ref7, _ref8, _ref9, _ref10, _ref11, _ref12;
|
|
5740
5809
|
var cfg = overlay.scroller_config;
|
|
5741
|
-
var
|
|
5742
|
-
var
|
|
5743
|
-
var
|
|
5744
|
-
var
|
|
5810
|
+
var uid = (0, import_react.useId)().replace(/:/g, "");
|
|
5811
|
+
var _ref13 = _sliced_to_array((0, import_react.useState)([]), 2), rssItems = _ref13[0], setRssItems = _ref13[1];
|
|
5812
|
+
var _ref14 = _sliced_to_array((0, import_react.useState)(false), 2), rssLoading = _ref14[0], setRssLoading = _ref14[1];
|
|
5813
|
+
var rssUrl = (cfg === null || cfg === void 0 ? void 0 : cfg.rss_url) || "";
|
|
5814
|
+
var maxItems = (_ref = cfg === null || cfg === void 0 ? void 0 : cfg.max_items) !== null && _ref !== void 0 ? _ref : 10;
|
|
5815
|
+
var autoRefresh = (cfg === null || cfg === void 0 ? void 0 : cfg.auto_refresh) !== false;
|
|
5816
|
+
var updateInterval = (_ref1 = cfg === null || cfg === void 0 ? void 0 : cfg.update_interval) !== null && _ref1 !== void 0 ? _ref1 : 5;
|
|
5817
|
+
(0, import_react.useEffect)(function() {
|
|
5818
|
+
if (!rssUrl || (cfg === null || cfg === void 0 ? void 0 : cfg.use_custom_text) && (cfg === null || cfg === void 0 ? void 0 : cfg.custom_text)) return;
|
|
5819
|
+
var cancelled = false;
|
|
5820
|
+
setRssLoading(true);
|
|
5821
|
+
fetchRSSItems(rssUrl, maxItems).then(function(items) {
|
|
5822
|
+
if (!cancelled) setRssItems(items);
|
|
5823
|
+
}).catch(function() {}).finally(function() {
|
|
5824
|
+
if (!cancelled) setRssLoading(false);
|
|
5825
|
+
});
|
|
5826
|
+
return function() {
|
|
5827
|
+
cancelled = true;
|
|
5828
|
+
};
|
|
5829
|
+
}, [
|
|
5830
|
+
rssUrl,
|
|
5831
|
+
maxItems,
|
|
5832
|
+
cfg === null || cfg === void 0 ? void 0 : cfg.use_custom_text,
|
|
5833
|
+
cfg === null || cfg === void 0 ? void 0 : cfg.custom_text
|
|
5834
|
+
]);
|
|
5835
|
+
(0, import_react.useEffect)(function() {
|
|
5836
|
+
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;
|
|
5837
|
+
var interval = setInterval(function() {
|
|
5838
|
+
fetchRSSItems(rssUrl, maxItems).then(setRssItems).catch(function() {});
|
|
5839
|
+
}, updateInterval * 60 * 1e3);
|
|
5840
|
+
return function() {
|
|
5841
|
+
return clearInterval(interval);
|
|
5842
|
+
};
|
|
5843
|
+
}, [
|
|
5844
|
+
rssUrl,
|
|
5845
|
+
autoRefresh,
|
|
5846
|
+
updateInterval,
|
|
5847
|
+
maxItems,
|
|
5848
|
+
cfg === null || cfg === void 0 ? void 0 : cfg.use_custom_text,
|
|
5849
|
+
cfg === null || cfg === void 0 ? void 0 : cfg.custom_text
|
|
5850
|
+
]);
|
|
5851
|
+
var sep = (_ref2 = cfg === null || cfg === void 0 ? void 0 : cfg.separator_char) !== null && _ref2 !== void 0 ? _ref2 : "\u25C6";
|
|
5852
|
+
var segments;
|
|
5853
|
+
if ((cfg === null || cfg === void 0 ? void 0 : cfg.use_custom_text) && (cfg === null || cfg === void 0 ? void 0 : cfg.custom_text)) {
|
|
5854
|
+
segments = [
|
|
5855
|
+
cfg.custom_text
|
|
5856
|
+
];
|
|
5857
|
+
} else if (rssItems.length > 0) {
|
|
5858
|
+
segments = rssItems.map(function(item) {
|
|
5859
|
+
var parts = [];
|
|
5860
|
+
if ((cfg === null || cfg === void 0 ? void 0 : cfg.show_title) !== false && item.title) parts.push(item.title);
|
|
5861
|
+
if ((cfg === null || cfg === void 0 ? void 0 : cfg.show_description) && item.description) parts.push(item.description);
|
|
5862
|
+
if ((cfg === null || cfg === void 0 ? void 0 : cfg.show_timestamp) && item.pubDate) {
|
|
5863
|
+
try {
|
|
5864
|
+
parts.push(new Date(item.pubDate).toLocaleDateString());
|
|
5865
|
+
} catch (unused) {}
|
|
5866
|
+
}
|
|
5867
|
+
if ((cfg === null || cfg === void 0 ? void 0 : cfg.show_author) && item.author) parts.push("— ".concat(item.author));
|
|
5868
|
+
if ((cfg === null || cfg === void 0 ? void 0 : cfg.show_category) && item.category) parts.push("[".concat(item.category, "]"));
|
|
5869
|
+
return parts.join(" ");
|
|
5870
|
+
});
|
|
5871
|
+
} else if (rssLoading) {
|
|
5872
|
+
segments = [
|
|
5873
|
+
"Loading feed\u2026"
|
|
5874
|
+
];
|
|
5875
|
+
} else if (overlay.content) {
|
|
5876
|
+
segments = [
|
|
5877
|
+
overlay.content
|
|
5878
|
+
];
|
|
5879
|
+
} else {
|
|
5880
|
+
segments = rssUrl ? [
|
|
5881
|
+
"Fetching RSS feed\u2026"
|
|
5882
|
+
] : [
|
|
5883
|
+
"RSS Ticker"
|
|
5884
|
+
];
|
|
5885
|
+
}
|
|
5886
|
+
var scrollSpeed = (_ref3 = cfg === null || cfg === void 0 ? void 0 : cfg.scroll_speed) !== null && _ref3 !== void 0 ? _ref3 : 40;
|
|
5887
|
+
var direction = (_ref4 = cfg === null || cfg === void 0 ? void 0 : cfg.direction) !== null && _ref4 !== void 0 ? _ref4 : "left";
|
|
5888
|
+
var fontSize = (_ref5 = cfg === null || cfg === void 0 ? void 0 : cfg.font_size) !== null && _ref5 !== void 0 ? _ref5 : 15;
|
|
5745
5889
|
var fontFamily = (cfg === null || cfg === void 0 ? void 0 : cfg.font_family) || "Roboto, 'Segoe UI', Arial, sans-serif";
|
|
5746
|
-
var fontWeight = (cfg === null || cfg === void 0 ? void 0 : cfg.font_weight) || "
|
|
5890
|
+
var fontWeight = (cfg === null || cfg === void 0 ? void 0 : cfg.font_weight) || "700";
|
|
5747
5891
|
var textColor = (cfg === null || cfg === void 0 ? void 0 : cfg.text_color) || "#ffffff";
|
|
5748
|
-
var bgColor = (cfg === null || cfg === void 0 ? void 0 : cfg.background_color) || "
|
|
5749
|
-
var bgOpacity = (cfg === null || cfg === void 0 ? void 0 : cfg.background_opacity) !== void 0 ? cfg.background_opacity / 100 : 0;
|
|
5750
|
-
var
|
|
5751
|
-
var
|
|
5752
|
-
var
|
|
5753
|
-
var
|
|
5754
|
-
var
|
|
5892
|
+
var bgColor = (cfg === null || cfg === void 0 ? void 0 : cfg.background_color) || "#0d0d1a";
|
|
5893
|
+
var bgOpacity = (cfg === null || cfg === void 0 ? void 0 : cfg.background_opacity) !== void 0 ? cfg.background_opacity / 100 : 0.95;
|
|
5894
|
+
var borderRadius = (_ref6 = cfg === null || cfg === void 0 ? void 0 : cfg.border_radius) !== null && _ref6 !== void 0 ? _ref6 : 0;
|
|
5895
|
+
var itemSpacing = (_ref7 = cfg === null || cfg === void 0 ? void 0 : cfg.item_spacing) !== null && _ref7 !== void 0 ? _ref7 : 60;
|
|
5896
|
+
var label = (_ref8 = cfg === null || cfg === void 0 ? void 0 : cfg.label) !== null && _ref8 !== void 0 ? _ref8 : "NEWS";
|
|
5897
|
+
var labelLine2 = (_ref9 = cfg === null || cfg === void 0 ? void 0 : cfg.label_line2) !== null && _ref9 !== void 0 ? _ref9 : "";
|
|
5898
|
+
var labelColor = (_ref10 = cfg === null || cfg === void 0 ? void 0 : cfg.label_color) !== null && _ref10 !== void 0 ? _ref10 : "#f97316";
|
|
5899
|
+
var labelTextColor = (_ref11 = cfg === null || cfg === void 0 ? void 0 : cfg.label_text_color) !== null && _ref11 !== void 0 ? _ref11 : "#ffffff";
|
|
5900
|
+
var accentColor = (_ref12 = cfg === null || cfg === void 0 ? void 0 : cfg.accent_color) !== null && _ref12 !== void 0 ? _ref12 : labelColor;
|
|
5901
|
+
var showAccentLine = (cfg === null || cfg === void 0 ? void 0 : cfg.show_accent_line) !== false;
|
|
5902
|
+
var isHorizontal = direction === "left" || direction === "right";
|
|
5755
5903
|
var isReverse = direction === "right" || direction === "down";
|
|
5756
|
-
var
|
|
5757
|
-
var
|
|
5758
|
-
var
|
|
5904
|
+
var fullText = segments.join(" ".concat(sep, " "));
|
|
5905
|
+
var durationSec = Math.max(6, fullText.length * 9 / scrollSpeed);
|
|
5906
|
+
var animId = "sc-ticker-".concat(overlay.id, "-").concat(uid);
|
|
5907
|
+
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 }");
|
|
5759
5908
|
return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment, {
|
|
5760
5909
|
children: [
|
|
5761
5910
|
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("style", {
|
|
5762
5911
|
children: keyframes
|
|
5763
5912
|
}),
|
|
5764
|
-
/* @__PURE__ */ (0, import_jsx_runtime.
|
|
5913
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
5765
5914
|
style: {
|
|
5766
5915
|
width: "100%",
|
|
5767
5916
|
height: "100%",
|
|
5768
|
-
overflow: "hidden",
|
|
5769
5917
|
display: "flex",
|
|
5770
|
-
|
|
5771
|
-
|
|
5772
|
-
border: borderWidth > 0 ? "".concat(borderWidth, "px solid ").concat(borderColor) : void 0,
|
|
5918
|
+
flexDirection: "column",
|
|
5919
|
+
overflow: "hidden",
|
|
5773
5920
|
borderRadius: borderRadius > 0 ? "".concat(borderRadius, "px") : void 0,
|
|
5774
|
-
|
|
5775
|
-
|
|
5776
|
-
|
|
5921
|
+
backgroundColor: "rgba(".concat(hexToRgb(bgColor), ", ").concat(bgOpacity, ")"),
|
|
5922
|
+
fontFamily: fontFamily,
|
|
5923
|
+
fontSize: "".concat(fontSize, "px"),
|
|
5924
|
+
fontWeight: fontWeight,
|
|
5925
|
+
color: textColor,
|
|
5926
|
+
pointerEvents: "none",
|
|
5927
|
+
userSelect: "none"
|
|
5777
5928
|
},
|
|
5778
|
-
children:
|
|
5779
|
-
|
|
5780
|
-
|
|
5781
|
-
|
|
5782
|
-
|
|
5783
|
-
|
|
5784
|
-
|
|
5785
|
-
|
|
5786
|
-
|
|
5787
|
-
|
|
5788
|
-
|
|
5789
|
-
|
|
5790
|
-
|
|
5929
|
+
children: [
|
|
5930
|
+
showAccentLine && /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
|
|
5931
|
+
style: {
|
|
5932
|
+
height: 3,
|
|
5933
|
+
background: accentColor,
|
|
5934
|
+
flexShrink: 0,
|
|
5935
|
+
width: "100%"
|
|
5936
|
+
}
|
|
5937
|
+
}),
|
|
5938
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
5939
|
+
style: {
|
|
5940
|
+
display: "flex",
|
|
5941
|
+
flex: 1,
|
|
5942
|
+
overflow: "hidden",
|
|
5943
|
+
minHeight: 0
|
|
5944
|
+
},
|
|
5945
|
+
children: [
|
|
5946
|
+
label && /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
5947
|
+
style: {
|
|
5948
|
+
background: labelColor,
|
|
5949
|
+
color: labelTextColor,
|
|
5950
|
+
padding: "0 14px",
|
|
5951
|
+
display: "flex",
|
|
5952
|
+
flexDirection: "column",
|
|
5953
|
+
alignItems: "center",
|
|
5954
|
+
justifyContent: "center",
|
|
5955
|
+
flexShrink: 0,
|
|
5956
|
+
minWidth: 72,
|
|
5957
|
+
textAlign: "center",
|
|
5958
|
+
gap: 1
|
|
5959
|
+
},
|
|
5960
|
+
children: [
|
|
5961
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", {
|
|
5962
|
+
style: {
|
|
5963
|
+
fontWeight: 800,
|
|
5964
|
+
fontSize: "0.82em",
|
|
5965
|
+
letterSpacing: "0.05em",
|
|
5966
|
+
lineHeight: 1.1,
|
|
5967
|
+
textTransform: "uppercase",
|
|
5968
|
+
whiteSpace: "nowrap"
|
|
5969
|
+
},
|
|
5970
|
+
children: label
|
|
5971
|
+
}),
|
|
5972
|
+
labelLine2 && /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", {
|
|
5973
|
+
style: {
|
|
5974
|
+
fontWeight: 500,
|
|
5975
|
+
fontSize: "0.62em",
|
|
5976
|
+
letterSpacing: "0.03em",
|
|
5977
|
+
lineHeight: 1.1,
|
|
5978
|
+
opacity: 0.85,
|
|
5979
|
+
whiteSpace: "nowrap"
|
|
5980
|
+
},
|
|
5981
|
+
children: labelLine2
|
|
5982
|
+
})
|
|
5983
|
+
]
|
|
5984
|
+
}),
|
|
5985
|
+
label && /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
|
|
5986
|
+
style: {
|
|
5987
|
+
width: 3,
|
|
5988
|
+
background: accentColor,
|
|
5989
|
+
flexShrink: 0
|
|
5990
|
+
}
|
|
5991
|
+
}),
|
|
5992
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
|
|
5993
|
+
style: {
|
|
5994
|
+
flex: 1,
|
|
5995
|
+
overflow: "hidden",
|
|
5996
|
+
position: "relative",
|
|
5997
|
+
display: "flex",
|
|
5998
|
+
alignItems: "center"
|
|
5999
|
+
},
|
|
6000
|
+
children: isHorizontal ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
|
|
6001
|
+
style: {
|
|
6002
|
+
display: "inline-flex",
|
|
6003
|
+
whiteSpace: "nowrap",
|
|
6004
|
+
animation: "".concat(animId, " ").concat(durationSec, "s linear infinite"),
|
|
6005
|
+
willChange: "transform"
|
|
6006
|
+
},
|
|
6007
|
+
children: [
|
|
6008
|
+
0,
|
|
6009
|
+
1
|
|
6010
|
+
].map(function(copy) {
|
|
6011
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", {
|
|
6012
|
+
style: {
|
|
6013
|
+
paddingRight: "".concat(itemSpacing, "px")
|
|
6014
|
+
},
|
|
6015
|
+
children: segments.map(function(seg, i) {
|
|
6016
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_react.default.Fragment, {
|
|
6017
|
+
children: [
|
|
6018
|
+
i > 0 && /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", {
|
|
6019
|
+
style: {
|
|
6020
|
+
opacity: 0.5,
|
|
6021
|
+
margin: "0 8px"
|
|
6022
|
+
},
|
|
6023
|
+
children: sep
|
|
6024
|
+
}),
|
|
6025
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", {
|
|
6026
|
+
style: {
|
|
6027
|
+
textShadow: "0 1px 3px rgba(0,0,0,0.6)"
|
|
6028
|
+
},
|
|
6029
|
+
children: seg
|
|
6030
|
+
})
|
|
6031
|
+
]
|
|
6032
|
+
}, i);
|
|
6033
|
+
})
|
|
6034
|
+
}, copy);
|
|
6035
|
+
})
|
|
6036
|
+
}) : /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
|
|
6037
|
+
style: {
|
|
6038
|
+
display: "flex",
|
|
6039
|
+
flexDirection: "column",
|
|
6040
|
+
whiteSpace: "nowrap",
|
|
6041
|
+
animation: "".concat(animId, " ").concat(durationSec, "s linear infinite"),
|
|
6042
|
+
willChange: "transform"
|
|
6043
|
+
},
|
|
6044
|
+
children: [
|
|
6045
|
+
0,
|
|
6046
|
+
1
|
|
6047
|
+
].map(function(copy) {
|
|
6048
|
+
return segments.map(function(seg, i) {
|
|
6049
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
|
|
6050
|
+
style: {
|
|
6051
|
+
paddingBottom: "".concat(itemSpacing / 4, "px")
|
|
6052
|
+
},
|
|
6053
|
+
children: seg
|
|
6054
|
+
}, "".concat(copy, "-").concat(i));
|
|
6055
|
+
});
|
|
6056
|
+
})
|
|
6057
|
+
})
|
|
6058
|
+
})
|
|
6059
|
+
]
|
|
6060
|
+
})
|
|
6061
|
+
]
|
|
5791
6062
|
})
|
|
5792
6063
|
]
|
|
5793
6064
|
});
|
|
@@ -7002,12 +7273,13 @@ var StormcloudVideoPlayerComponent = import_react2.default.memo(function(props)
|
|
|
7002
7273
|
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];
|
|
7003
7274
|
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];
|
|
7004
7275
|
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];
|
|
7005
|
-
var _import_react2_default_useState24 = _sliced_to_array(import_react2.default.useState(
|
|
7276
|
+
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];
|
|
7277
|
+
var _import_react2_default_useState25 = _sliced_to_array(import_react2.default.useState({
|
|
7006
7278
|
context: null,
|
|
7007
7279
|
isLoading: false,
|
|
7008
7280
|
error: null,
|
|
7009
7281
|
lastPolledAt: null
|
|
7010
|
-
}), 2), aiLiveContext =
|
|
7282
|
+
}), 2), aiLiveContext = _import_react2_default_useState25[0], setAiLiveContext = _import_react2_default_useState25[1];
|
|
7011
7283
|
var getResponsiveScale = function getResponsiveScale() {
|
|
7012
7284
|
if (viewportWidth < 480) return 0.7;
|
|
7013
7285
|
if (viewportWidth < 768) return 0.8;
|
|
@@ -8494,6 +8766,31 @@ var StormcloudVideoPlayerComponent = import_react2.default.memo(function(props)
|
|
|
8494
8766
|
gap: "".concat(8 * responsiveScale, "px")
|
|
8495
8767
|
},
|
|
8496
8768
|
children: [
|
|
8769
|
+
/* @__PURE__ */ (0, import_jsx_runtime2.jsx)("button", {
|
|
8770
|
+
className: "sc-ctrl-btn",
|
|
8771
|
+
onClick: function onClick() {
|
|
8772
|
+
var _playerRef_current;
|
|
8773
|
+
var next = !adsDisabled;
|
|
8774
|
+
setAdsDisabled(next);
|
|
8775
|
+
(_playerRef_current = playerRef.current) === null || _playerRef_current === void 0 ? void 0 : _playerRef_current.setDisableAds(next);
|
|
8776
|
+
resetControlsTimer();
|
|
8777
|
+
},
|
|
8778
|
+
style: {
|
|
8779
|
+
padding: "".concat(8 * responsiveScale, "px"),
|
|
8780
|
+
borderRadius: "50%",
|
|
8781
|
+
minWidth: "".concat(36 * responsiveScale, "px"),
|
|
8782
|
+
minHeight: "".concat(36 * responsiveScale, "px"),
|
|
8783
|
+
background: adsDisabled ? "rgba(239, 68, 68, 0.28)" : "transparent",
|
|
8784
|
+
fontFamily: "'SF Mono', 'Cascadia Code', monospace",
|
|
8785
|
+
fontSize: "".concat(12 * responsiveScale, "px"),
|
|
8786
|
+
fontWeight: 700,
|
|
8787
|
+
letterSpacing: "0.03em",
|
|
8788
|
+
color: adsDisabled ? "rgba(252, 165, 165, 0.9)" : "rgba(255, 255, 255, 0.75)",
|
|
8789
|
+
textDecoration: adsDisabled ? "line-through" : "none"
|
|
8790
|
+
},
|
|
8791
|
+
title: adsDisabled ? "Enable ads" : "Disable ads",
|
|
8792
|
+
children: "AD"
|
|
8793
|
+
}),
|
|
8497
8794
|
swirlProjectId && /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("button", {
|
|
8498
8795
|
className: "sc-ctrl-btn",
|
|
8499
8796
|
onClick: function onClick() {
|
|
@@ -8787,6 +9084,31 @@ var StormcloudVideoPlayerComponent = import_react2.default.memo(function(props)
|
|
|
8787
9084
|
})
|
|
8788
9085
|
]
|
|
8789
9086
|
}),
|
|
9087
|
+
/* @__PURE__ */ (0, import_jsx_runtime2.jsx)("button", {
|
|
9088
|
+
className: "sc-ctrl-btn",
|
|
9089
|
+
onClick: function onClick() {
|
|
9090
|
+
var _playerRef_current;
|
|
9091
|
+
var next = !adsDisabled;
|
|
9092
|
+
setAdsDisabled(next);
|
|
9093
|
+
(_playerRef_current = playerRef.current) === null || _playerRef_current === void 0 ? void 0 : _playerRef_current.setDisableAds(next);
|
|
9094
|
+
resetControlsTimer();
|
|
9095
|
+
},
|
|
9096
|
+
style: {
|
|
9097
|
+
padding: "".concat(8 * responsiveScale, "px"),
|
|
9098
|
+
borderRadius: "50%",
|
|
9099
|
+
minWidth: "".concat(36 * responsiveScale, "px"),
|
|
9100
|
+
minHeight: "".concat(36 * responsiveScale, "px"),
|
|
9101
|
+
background: adsDisabled ? "rgba(239, 68, 68, 0.28)" : "rgba(0, 0, 0, 0.6)",
|
|
9102
|
+
fontFamily: "'SF Mono', 'Cascadia Code', monospace",
|
|
9103
|
+
fontSize: "".concat(12 * responsiveScale, "px"),
|
|
9104
|
+
fontWeight: 700,
|
|
9105
|
+
letterSpacing: "0.03em",
|
|
9106
|
+
color: adsDisabled ? "rgba(252, 165, 165, 0.9)" : "rgba(255, 255, 255, 0.75)",
|
|
9107
|
+
textDecoration: adsDisabled ? "line-through" : "none"
|
|
9108
|
+
},
|
|
9109
|
+
title: adsDisabled ? "Enable ads" : "Disable ads",
|
|
9110
|
+
children: "AD"
|
|
9111
|
+
}),
|
|
8790
9112
|
swirlProjectId && /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("button", {
|
|
8791
9113
|
className: "sc-ctrl-btn",
|
|
8792
9114
|
onClick: function onClick() {
|