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/lib/index.cjs CHANGED
@@ -5955,43 +5955,151 @@ function TextOverlay(param) {
5955
5955
  children: text
5956
5956
  });
5957
5957
  }
5958
+ function parseRSSXml(xmlText, maxItems) {
5959
+ var parser = new DOMParser();
5960
+ var doc = parser.parseFromString(xmlText, "text/xml");
5961
+ if (doc.querySelector("parsererror")) throw new Error("Invalid RSS XML");
5962
+ return Array.from(doc.querySelectorAll("item")).map(function(item) {
5963
+ var _item_querySelector, _item_querySelector1, _item_querySelector2, _item_querySelector3, _item_querySelector4;
5964
+ return {
5965
+ title: (((_item_querySelector = item.querySelector("title")) === null || _item_querySelector === void 0 ? void 0 : _item_querySelector.textContent) || "").replace(/<[^>]*>/g, "").trim(),
5966
+ description: (((_item_querySelector1 = item.querySelector("description")) === null || _item_querySelector1 === void 0 ? void 0 : _item_querySelector1.textContent) || "").replace(/<[^>]*>/g, "").trim(),
5967
+ pubDate: ((_item_querySelector2 = item.querySelector("pubDate")) === null || _item_querySelector2 === void 0 ? void 0 : _item_querySelector2.textContent) || "",
5968
+ author: ((_item_querySelector3 = item.querySelector("author, dc\\:creator")) === null || _item_querySelector3 === void 0 ? void 0 : _item_querySelector3.textContent) || "",
5969
+ category: ((_item_querySelector4 = item.querySelector("category")) === null || _item_querySelector4 === void 0 ? void 0 : _item_querySelector4.textContent) || ""
5970
+ };
5971
+ }).filter(function(i) {
5972
+ return i.title;
5973
+ }).slice(0, maxItems);
5974
+ }
5958
5975
  function fetchRSSItems(rssUrl, maxItems) {
5959
5976
  return _async_to_generator(function() {
5960
- var resp, data, parser, doc;
5977
+ var encoded, origin, resp, text, unused, resp1, data, unused1, resp2, text1, unused2;
5961
5978
  return _ts_generator(this, function(_state) {
5962
5979
  switch(_state.label){
5963
5980
  case 0:
5981
+ encoded = encodeURIComponent(rssUrl);
5982
+ _state.label = 1;
5983
+ case 1:
5984
+ _state.trys.push([
5985
+ 1,
5986
+ 5,
5987
+ ,
5988
+ 6
5989
+ ]);
5990
+ origin = typeof window !== "undefined" ? window.location.origin : "";
5964
5991
  return [
5965
5992
  4,
5966
- fetch("https://api.allorigins.win/get?url=".concat(encodeURIComponent(rssUrl)))
5993
+ fetch("".concat(origin, "/api/rss-proxy?url=").concat(encoded))
5967
5994
  ];
5968
- case 1:
5995
+ case 2:
5969
5996
  resp = _state.sent();
5997
+ if (!resp.ok) return [
5998
+ 3,
5999
+ 4
6000
+ ];
5970
6001
  return [
5971
6002
  4,
5972
- resp.json()
6003
+ resp.text()
5973
6004
  ];
5974
- case 2:
6005
+ case 3:
6006
+ text = _state.sent();
6007
+ if (text.includes("<item")) return [
6008
+ 2,
6009
+ parseRSSXml(text, maxItems)
6010
+ ];
6011
+ _state.label = 4;
6012
+ case 4:
6013
+ return [
6014
+ 3,
6015
+ 6
6016
+ ];
6017
+ case 5:
6018
+ unused = _state.sent();
6019
+ return [
6020
+ 3,
6021
+ 6
6022
+ ];
6023
+ case 6:
6024
+ _state.trys.push([
6025
+ 6,
6026
+ 10,
6027
+ ,
6028
+ 11
6029
+ ]);
6030
+ return [
6031
+ 4,
6032
+ fetch("https://api.allorigins.win/get?url=".concat(encoded))
6033
+ ];
6034
+ case 7:
6035
+ resp1 = _state.sent();
6036
+ if (!resp1.ok) return [
6037
+ 3,
6038
+ 9
6039
+ ];
6040
+ return [
6041
+ 4,
6042
+ resp1.json()
6043
+ ];
6044
+ case 8:
5975
6045
  data = _state.sent();
5976
- if (!data.contents) throw new Error("No content from RSS feed");
5977
- parser = new DOMParser();
5978
- doc = parser.parseFromString(data.contents, "text/xml");
5979
- if (doc.querySelector("parsererror")) throw new Error("Invalid RSS XML");
6046
+ if (data.contents) return [
6047
+ 2,
6048
+ parseRSSXml(data.contents, maxItems)
6049
+ ];
6050
+ _state.label = 9;
6051
+ case 9:
6052
+ return [
6053
+ 3,
6054
+ 11
6055
+ ];
6056
+ case 10:
6057
+ unused1 = _state.sent();
6058
+ return [
6059
+ 3,
6060
+ 11
6061
+ ];
6062
+ case 11:
6063
+ _state.trys.push([
6064
+ 11,
6065
+ 15,
6066
+ ,
6067
+ 16
6068
+ ]);
6069
+ return [
6070
+ 4,
6071
+ fetch("https://corsproxy.io/?url=".concat(encoded))
6072
+ ];
6073
+ case 12:
6074
+ resp2 = _state.sent();
6075
+ if (!resp2.ok) return [
6076
+ 3,
6077
+ 14
6078
+ ];
5980
6079
  return [
6080
+ 4,
6081
+ resp2.text()
6082
+ ];
6083
+ case 13:
6084
+ text1 = _state.sent();
6085
+ if (text1) return [
5981
6086
  2,
5982
- Array.from(doc.querySelectorAll("item")).map(function(item) {
5983
- var _item_querySelector, _item_querySelector1, _item_querySelector2, _item_querySelector3, _item_querySelector4;
5984
- return {
5985
- title: (((_item_querySelector = item.querySelector("title")) === null || _item_querySelector === void 0 ? void 0 : _item_querySelector.textContent) || "").replace(/<[^>]*>/g, "").trim(),
5986
- description: (((_item_querySelector1 = item.querySelector("description")) === null || _item_querySelector1 === void 0 ? void 0 : _item_querySelector1.textContent) || "").replace(/<[^>]*>/g, "").trim(),
5987
- pubDate: ((_item_querySelector2 = item.querySelector("pubDate")) === null || _item_querySelector2 === void 0 ? void 0 : _item_querySelector2.textContent) || "",
5988
- author: ((_item_querySelector3 = item.querySelector("author, dc\\:creator")) === null || _item_querySelector3 === void 0 ? void 0 : _item_querySelector3.textContent) || "",
5989
- category: ((_item_querySelector4 = item.querySelector("category")) === null || _item_querySelector4 === void 0 ? void 0 : _item_querySelector4.textContent) || ""
5990
- };
5991
- }).filter(function(i) {
5992
- return i.title;
5993
- }).slice(0, maxItems)
6087
+ parseRSSXml(text1, maxItems)
6088
+ ];
6089
+ _state.label = 14;
6090
+ case 14:
6091
+ return [
6092
+ 3,
6093
+ 16
6094
+ ];
6095
+ case 15:
6096
+ unused2 = _state.sent();
6097
+ return [
6098
+ 3,
6099
+ 16
5994
6100
  ];
6101
+ case 16:
6102
+ throw new Error("All RSS proxies failed");
5995
6103
  }
5996
6104
  });
5997
6105
  })();
@@ -6002,18 +6110,28 @@ function ScrollerOverlay(param) {
6002
6110
  var cfg = overlay.scroller_config;
6003
6111
  var uid = (0, import_react.useId)().replace(/:/g, "");
6004
6112
  var _ref13 = _sliced_to_array((0, import_react.useState)([]), 2), rssItems = _ref13[0], setRssItems = _ref13[1];
6005
- var _ref14 = _sliced_to_array((0, import_react.useState)(false), 2), rssLoading = _ref14[0], setRssLoading = _ref14[1];
6113
+ var _ref14 = _sliced_to_array((0, import_react.useState)(true), 2), rssLoading = _ref14[0], setRssLoading = _ref14[1];
6114
+ var _ref15 = _sliced_to_array((0, import_react.useState)(false), 2), rssError = _ref15[0], setRssError = _ref15[1];
6006
6115
  var rssUrl = (cfg === null || cfg === void 0 ? void 0 : cfg.rss_url) || "";
6007
6116
  var maxItems = (_ref = cfg === null || cfg === void 0 ? void 0 : cfg.max_items) !== null && _ref !== void 0 ? _ref : 10;
6008
6117
  var autoRefresh = (cfg === null || cfg === void 0 ? void 0 : cfg.auto_refresh) !== false;
6009
6118
  var updateInterval = (_ref1 = cfg === null || cfg === void 0 ? void 0 : cfg.update_interval) !== null && _ref1 !== void 0 ? _ref1 : 5;
6010
6119
  (0, import_react.useEffect)(function() {
6011
- if (!rssUrl || (cfg === null || cfg === void 0 ? void 0 : cfg.use_custom_text) && (cfg === null || cfg === void 0 ? void 0 : cfg.custom_text)) return;
6120
+ if (!rssUrl || (cfg === null || cfg === void 0 ? void 0 : cfg.use_custom_text) && (cfg === null || cfg === void 0 ? void 0 : cfg.custom_text)) {
6121
+ setRssLoading(false);
6122
+ return;
6123
+ }
6012
6124
  var cancelled = false;
6013
6125
  setRssLoading(true);
6126
+ setRssError(false);
6014
6127
  fetchRSSItems(rssUrl, maxItems).then(function(items) {
6015
- if (!cancelled) setRssItems(items);
6016
- }).catch(function() {}).finally(function() {
6128
+ if (!cancelled) {
6129
+ setRssItems(items);
6130
+ setRssError(false);
6131
+ }
6132
+ }).catch(function() {
6133
+ if (!cancelled) setRssError(true);
6134
+ }).finally(function() {
6017
6135
  if (!cancelled) setRssLoading(false);
6018
6136
  });
6019
6137
  return function() {
@@ -6028,7 +6146,10 @@ function ScrollerOverlay(param) {
6028
6146
  (0, import_react.useEffect)(function() {
6029
6147
  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;
6030
6148
  var interval = setInterval(function() {
6031
- fetchRSSItems(rssUrl, maxItems).then(setRssItems).catch(function() {});
6149
+ fetchRSSItems(rssUrl, maxItems).then(function(items) {
6150
+ setRssItems(items);
6151
+ setRssError(false);
6152
+ }).catch(function() {});
6032
6153
  }, updateInterval * 60 * 1e3);
6033
6154
  return function() {
6034
6155
  return clearInterval(interval);
@@ -6065,13 +6186,19 @@ function ScrollerOverlay(param) {
6065
6186
  segments = [
6066
6187
  "Loading feed\u2026"
6067
6188
  ];
6189
+ } else if (rssError) {
6190
+ segments = overlay.content ? [
6191
+ overlay.content
6192
+ ] : [
6193
+ "RSS feed unavailable"
6194
+ ];
6068
6195
  } else if (overlay.content) {
6069
6196
  segments = [
6070
6197
  overlay.content
6071
6198
  ];
6072
6199
  } else {
6073
6200
  segments = rssUrl ? [
6074
- "Fetching RSS feed\u2026"
6201
+ "Loading feed\u2026"
6075
6202
  ] : [
6076
6203
  "RSS Ticker"
6077
6204
  ];