stormcloud-video-player 0.7.27 → 0.7.29
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 +154 -27
- package/lib/index.cjs.map +1 -1
- package/lib/index.js +154 -27
- package/lib/index.js.map +1 -1
- package/lib/ui/OverlayRenderer.cjs +154 -27
- package/lib/ui/OverlayRenderer.cjs.map +1 -1
- package/lib/ui/StormcloudVideoPlayer.cjs +154 -27
- package/lib/ui/StormcloudVideoPlayer.cjs.map +1 -1
- package/package.json +1 -1
|
@@ -5777,43 +5777,151 @@ function TextOverlay(param) {
|
|
|
5777
5777
|
children: text
|
|
5778
5778
|
});
|
|
5779
5779
|
}
|
|
5780
|
+
function parseRSSXml(xmlText, maxItems) {
|
|
5781
|
+
var parser = new DOMParser();
|
|
5782
|
+
var doc = parser.parseFromString(xmlText, "text/xml");
|
|
5783
|
+
if (doc.querySelector("parsererror")) throw new Error("Invalid RSS XML");
|
|
5784
|
+
return Array.from(doc.querySelectorAll("item")).map(function(item) {
|
|
5785
|
+
var _item_querySelector, _item_querySelector1, _item_querySelector2, _item_querySelector3, _item_querySelector4;
|
|
5786
|
+
return {
|
|
5787
|
+
title: (((_item_querySelector = item.querySelector("title")) === null || _item_querySelector === void 0 ? void 0 : _item_querySelector.textContent) || "").replace(/<[^>]*>/g, "").trim(),
|
|
5788
|
+
description: (((_item_querySelector1 = item.querySelector("description")) === null || _item_querySelector1 === void 0 ? void 0 : _item_querySelector1.textContent) || "").replace(/<[^>]*>/g, "").trim(),
|
|
5789
|
+
pubDate: ((_item_querySelector2 = item.querySelector("pubDate")) === null || _item_querySelector2 === void 0 ? void 0 : _item_querySelector2.textContent) || "",
|
|
5790
|
+
author: ((_item_querySelector3 = item.querySelector("author, dc\\:creator")) === null || _item_querySelector3 === void 0 ? void 0 : _item_querySelector3.textContent) || "",
|
|
5791
|
+
category: ((_item_querySelector4 = item.querySelector("category")) === null || _item_querySelector4 === void 0 ? void 0 : _item_querySelector4.textContent) || ""
|
|
5792
|
+
};
|
|
5793
|
+
}).filter(function(i) {
|
|
5794
|
+
return i.title;
|
|
5795
|
+
}).slice(0, maxItems);
|
|
5796
|
+
}
|
|
5780
5797
|
function fetchRSSItems(rssUrl, maxItems) {
|
|
5781
5798
|
return _async_to_generator(function() {
|
|
5782
|
-
var resp, data,
|
|
5799
|
+
var encoded, origin, resp, text, unused, resp1, data, unused1, resp2, text1, unused2;
|
|
5783
5800
|
return _ts_generator(this, function(_state) {
|
|
5784
5801
|
switch(_state.label){
|
|
5785
5802
|
case 0:
|
|
5803
|
+
encoded = encodeURIComponent(rssUrl);
|
|
5804
|
+
_state.label = 1;
|
|
5805
|
+
case 1:
|
|
5806
|
+
_state.trys.push([
|
|
5807
|
+
1,
|
|
5808
|
+
5,
|
|
5809
|
+
,
|
|
5810
|
+
6
|
|
5811
|
+
]);
|
|
5812
|
+
origin = typeof window !== "undefined" ? window.location.origin : "";
|
|
5786
5813
|
return [
|
|
5787
5814
|
4,
|
|
5788
|
-
fetch("
|
|
5815
|
+
fetch("".concat(origin, "/api/rss-proxy?url=").concat(encoded))
|
|
5789
5816
|
];
|
|
5790
|
-
case
|
|
5817
|
+
case 2:
|
|
5791
5818
|
resp = _state.sent();
|
|
5819
|
+
if (!resp.ok) return [
|
|
5820
|
+
3,
|
|
5821
|
+
4
|
|
5822
|
+
];
|
|
5792
5823
|
return [
|
|
5793
5824
|
4,
|
|
5794
|
-
resp.
|
|
5825
|
+
resp.text()
|
|
5795
5826
|
];
|
|
5796
|
-
case
|
|
5827
|
+
case 3:
|
|
5828
|
+
text = _state.sent();
|
|
5829
|
+
if (text.includes("<item")) return [
|
|
5830
|
+
2,
|
|
5831
|
+
parseRSSXml(text, maxItems)
|
|
5832
|
+
];
|
|
5833
|
+
_state.label = 4;
|
|
5834
|
+
case 4:
|
|
5835
|
+
return [
|
|
5836
|
+
3,
|
|
5837
|
+
6
|
|
5838
|
+
];
|
|
5839
|
+
case 5:
|
|
5840
|
+
unused = _state.sent();
|
|
5841
|
+
return [
|
|
5842
|
+
3,
|
|
5843
|
+
6
|
|
5844
|
+
];
|
|
5845
|
+
case 6:
|
|
5846
|
+
_state.trys.push([
|
|
5847
|
+
6,
|
|
5848
|
+
10,
|
|
5849
|
+
,
|
|
5850
|
+
11
|
|
5851
|
+
]);
|
|
5852
|
+
return [
|
|
5853
|
+
4,
|
|
5854
|
+
fetch("https://api.allorigins.win/get?url=".concat(encoded))
|
|
5855
|
+
];
|
|
5856
|
+
case 7:
|
|
5857
|
+
resp1 = _state.sent();
|
|
5858
|
+
if (!resp1.ok) return [
|
|
5859
|
+
3,
|
|
5860
|
+
9
|
|
5861
|
+
];
|
|
5862
|
+
return [
|
|
5863
|
+
4,
|
|
5864
|
+
resp1.json()
|
|
5865
|
+
];
|
|
5866
|
+
case 8:
|
|
5797
5867
|
data = _state.sent();
|
|
5798
|
-
if (
|
|
5799
|
-
|
|
5800
|
-
|
|
5801
|
-
|
|
5868
|
+
if (data.contents) return [
|
|
5869
|
+
2,
|
|
5870
|
+
parseRSSXml(data.contents, maxItems)
|
|
5871
|
+
];
|
|
5872
|
+
_state.label = 9;
|
|
5873
|
+
case 9:
|
|
5874
|
+
return [
|
|
5875
|
+
3,
|
|
5876
|
+
11
|
|
5877
|
+
];
|
|
5878
|
+
case 10:
|
|
5879
|
+
unused1 = _state.sent();
|
|
5880
|
+
return [
|
|
5881
|
+
3,
|
|
5882
|
+
11
|
|
5883
|
+
];
|
|
5884
|
+
case 11:
|
|
5885
|
+
_state.trys.push([
|
|
5886
|
+
11,
|
|
5887
|
+
15,
|
|
5888
|
+
,
|
|
5889
|
+
16
|
|
5890
|
+
]);
|
|
5891
|
+
return [
|
|
5892
|
+
4,
|
|
5893
|
+
fetch("https://corsproxy.io/?url=".concat(encoded))
|
|
5894
|
+
];
|
|
5895
|
+
case 12:
|
|
5896
|
+
resp2 = _state.sent();
|
|
5897
|
+
if (!resp2.ok) return [
|
|
5898
|
+
3,
|
|
5899
|
+
14
|
|
5900
|
+
];
|
|
5802
5901
|
return [
|
|
5902
|
+
4,
|
|
5903
|
+
resp2.text()
|
|
5904
|
+
];
|
|
5905
|
+
case 13:
|
|
5906
|
+
text1 = _state.sent();
|
|
5907
|
+
if (text1) return [
|
|
5803
5908
|
2,
|
|
5804
|
-
|
|
5805
|
-
|
|
5806
|
-
|
|
5807
|
-
|
|
5808
|
-
|
|
5809
|
-
|
|
5810
|
-
|
|
5811
|
-
|
|
5812
|
-
|
|
5813
|
-
|
|
5814
|
-
|
|
5815
|
-
|
|
5909
|
+
parseRSSXml(text1, maxItems)
|
|
5910
|
+
];
|
|
5911
|
+
_state.label = 14;
|
|
5912
|
+
case 14:
|
|
5913
|
+
return [
|
|
5914
|
+
3,
|
|
5915
|
+
16
|
|
5916
|
+
];
|
|
5917
|
+
case 15:
|
|
5918
|
+
unused2 = _state.sent();
|
|
5919
|
+
return [
|
|
5920
|
+
3,
|
|
5921
|
+
16
|
|
5816
5922
|
];
|
|
5923
|
+
case 16:
|
|
5924
|
+
throw new Error("All RSS proxies failed");
|
|
5817
5925
|
}
|
|
5818
5926
|
});
|
|
5819
5927
|
})();
|
|
@@ -5824,18 +5932,28 @@ function ScrollerOverlay(param) {
|
|
|
5824
5932
|
var cfg = overlay.scroller_config;
|
|
5825
5933
|
var uid = (0, import_react.useId)().replace(/:/g, "");
|
|
5826
5934
|
var _ref13 = _sliced_to_array((0, import_react.useState)([]), 2), rssItems = _ref13[0], setRssItems = _ref13[1];
|
|
5827
|
-
var _ref14 = _sliced_to_array((0, import_react.useState)(
|
|
5935
|
+
var _ref14 = _sliced_to_array((0, import_react.useState)(true), 2), rssLoading = _ref14[0], setRssLoading = _ref14[1];
|
|
5936
|
+
var _ref15 = _sliced_to_array((0, import_react.useState)(false), 2), rssError = _ref15[0], setRssError = _ref15[1];
|
|
5828
5937
|
var rssUrl = (cfg === null || cfg === void 0 ? void 0 : cfg.rss_url) || "";
|
|
5829
5938
|
var maxItems = (_ref = cfg === null || cfg === void 0 ? void 0 : cfg.max_items) !== null && _ref !== void 0 ? _ref : 10;
|
|
5830
5939
|
var autoRefresh = (cfg === null || cfg === void 0 ? void 0 : cfg.auto_refresh) !== false;
|
|
5831
5940
|
var updateInterval = (_ref1 = cfg === null || cfg === void 0 ? void 0 : cfg.update_interval) !== null && _ref1 !== void 0 ? _ref1 : 5;
|
|
5832
5941
|
(0, import_react.useEffect)(function() {
|
|
5833
|
-
if (!rssUrl || (cfg === null || cfg === void 0 ? void 0 : cfg.use_custom_text) && (cfg === null || cfg === void 0 ? void 0 : cfg.custom_text))
|
|
5942
|
+
if (!rssUrl || (cfg === null || cfg === void 0 ? void 0 : cfg.use_custom_text) && (cfg === null || cfg === void 0 ? void 0 : cfg.custom_text)) {
|
|
5943
|
+
setRssLoading(false);
|
|
5944
|
+
return;
|
|
5945
|
+
}
|
|
5834
5946
|
var cancelled = false;
|
|
5835
5947
|
setRssLoading(true);
|
|
5948
|
+
setRssError(false);
|
|
5836
5949
|
fetchRSSItems(rssUrl, maxItems).then(function(items) {
|
|
5837
|
-
if (!cancelled)
|
|
5838
|
-
|
|
5950
|
+
if (!cancelled) {
|
|
5951
|
+
setRssItems(items);
|
|
5952
|
+
setRssError(false);
|
|
5953
|
+
}
|
|
5954
|
+
}).catch(function() {
|
|
5955
|
+
if (!cancelled) setRssError(true);
|
|
5956
|
+
}).finally(function() {
|
|
5839
5957
|
if (!cancelled) setRssLoading(false);
|
|
5840
5958
|
});
|
|
5841
5959
|
return function() {
|
|
@@ -5850,7 +5968,10 @@ function ScrollerOverlay(param) {
|
|
|
5850
5968
|
(0, import_react.useEffect)(function() {
|
|
5851
5969
|
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;
|
|
5852
5970
|
var interval = setInterval(function() {
|
|
5853
|
-
fetchRSSItems(rssUrl, maxItems).then(
|
|
5971
|
+
fetchRSSItems(rssUrl, maxItems).then(function(items) {
|
|
5972
|
+
setRssItems(items);
|
|
5973
|
+
setRssError(false);
|
|
5974
|
+
}).catch(function() {});
|
|
5854
5975
|
}, updateInterval * 60 * 1e3);
|
|
5855
5976
|
return function() {
|
|
5856
5977
|
return clearInterval(interval);
|
|
@@ -5887,13 +6008,19 @@ function ScrollerOverlay(param) {
|
|
|
5887
6008
|
segments = [
|
|
5888
6009
|
"Loading feed\u2026"
|
|
5889
6010
|
];
|
|
6011
|
+
} else if (rssError) {
|
|
6012
|
+
segments = overlay.content ? [
|
|
6013
|
+
overlay.content
|
|
6014
|
+
] : [
|
|
6015
|
+
"RSS feed unavailable"
|
|
6016
|
+
];
|
|
5890
6017
|
} else if (overlay.content) {
|
|
5891
6018
|
segments = [
|
|
5892
6019
|
overlay.content
|
|
5893
6020
|
];
|
|
5894
6021
|
} else {
|
|
5895
6022
|
segments = rssUrl ? [
|
|
5896
|
-
"
|
|
6023
|
+
"Loading feed\u2026"
|
|
5897
6024
|
] : [
|
|
5898
6025
|
"RSS Ticker"
|
|
5899
6026
|
];
|