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.
@@ -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, parser, doc;
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("https://api.allorigins.win/get?url=".concat(encodeURIComponent(rssUrl)))
5815
+ fetch("".concat(origin, "/api/rss-proxy?url=").concat(encoded))
5789
5816
  ];
5790
- case 1:
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.json()
5825
+ resp.text()
5795
5826
  ];
5796
- case 2:
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 (!data.contents) throw new Error("No content from RSS feed");
5799
- parser = new DOMParser();
5800
- doc = parser.parseFromString(data.contents, "text/xml");
5801
- if (doc.querySelector("parsererror")) throw new Error("Invalid RSS XML");
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
- Array.from(doc.querySelectorAll("item")).map(function(item) {
5805
- var _item_querySelector, _item_querySelector1, _item_querySelector2, _item_querySelector3, _item_querySelector4;
5806
- return {
5807
- title: (((_item_querySelector = item.querySelector("title")) === null || _item_querySelector === void 0 ? void 0 : _item_querySelector.textContent) || "").replace(/<[^>]*>/g, "").trim(),
5808
- description: (((_item_querySelector1 = item.querySelector("description")) === null || _item_querySelector1 === void 0 ? void 0 : _item_querySelector1.textContent) || "").replace(/<[^>]*>/g, "").trim(),
5809
- pubDate: ((_item_querySelector2 = item.querySelector("pubDate")) === null || _item_querySelector2 === void 0 ? void 0 : _item_querySelector2.textContent) || "",
5810
- author: ((_item_querySelector3 = item.querySelector("author, dc\\:creator")) === null || _item_querySelector3 === void 0 ? void 0 : _item_querySelector3.textContent) || "",
5811
- category: ((_item_querySelector4 = item.querySelector("category")) === null || _item_querySelector4 === void 0 ? void 0 : _item_querySelector4.textContent) || ""
5812
- };
5813
- }).filter(function(i) {
5814
- return i.title;
5815
- }).slice(0, maxItems)
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)(false), 2), rssLoading = _ref14[0], setRssLoading = _ref14[1];
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)) return;
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) setRssItems(items);
5838
- }).catch(function() {}).finally(function() {
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(setRssItems).catch(function() {});
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
- "Fetching RSS feed\u2026"
6023
+ "Loading feed\u2026"
5897
6024
  ] : [
5898
6025
  "RSS Ticker"
5899
6026
  ];