stormcloud-video-player 0.7.27 → 0.7.28

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,42 +5955,126 @@ 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, resp2, data, unused, resp21, text2, unused1, resp, text;
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
+ ]);
5964
5990
  return [
5965
5991
  4,
5966
- fetch("https://api.allorigins.win/get?url=".concat(encodeURIComponent(rssUrl)))
5992
+ fetch("https://api.allorigins.win/get?url=".concat(encoded))
5993
+ ];
5994
+ case 2:
5995
+ resp2 = _state.sent();
5996
+ if (!resp2.ok) return [
5997
+ 3,
5998
+ 4
5967
5999
  ];
5968
- case 1:
5969
- resp = _state.sent();
5970
6000
  return [
5971
6001
  4,
5972
- resp.json()
6002
+ resp2.json()
5973
6003
  ];
5974
- case 2:
6004
+ case 3:
5975
6005
  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");
6006
+ if (data.contents) return [
6007
+ 2,
6008
+ parseRSSXml(data.contents, maxItems)
6009
+ ];
6010
+ _state.label = 4;
6011
+ case 4:
6012
+ return [
6013
+ 3,
6014
+ 6
6015
+ ];
6016
+ case 5:
6017
+ unused = _state.sent();
6018
+ return [
6019
+ 3,
6020
+ 6
6021
+ ];
6022
+ case 6:
6023
+ _state.trys.push([
6024
+ 6,
6025
+ 10,
6026
+ ,
6027
+ 11
6028
+ ]);
6029
+ return [
6030
+ 4,
6031
+ fetch("https://corsproxy.io/?url=".concat(encoded))
6032
+ ];
6033
+ case 7:
6034
+ resp21 = _state.sent();
6035
+ if (!resp21.ok) return [
6036
+ 3,
6037
+ 9
6038
+ ];
5980
6039
  return [
6040
+ 4,
6041
+ resp21.text()
6042
+ ];
6043
+ case 8:
6044
+ text2 = _state.sent();
6045
+ if (text2) return [
5981
6046
  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)
6047
+ parseRSSXml(text2, maxItems)
6048
+ ];
6049
+ _state.label = 9;
6050
+ case 9:
6051
+ return [
6052
+ 3,
6053
+ 11
6054
+ ];
6055
+ case 10:
6056
+ unused1 = _state.sent();
6057
+ return [
6058
+ 3,
6059
+ 11
6060
+ ];
6061
+ case 11:
6062
+ return [
6063
+ 4,
6064
+ fetch("https://thingproxy.freeboard.io/fetch/".concat(rssUrl))
6065
+ ];
6066
+ case 12:
6067
+ resp = _state.sent();
6068
+ if (!resp.ok) throw new Error("RSS fetch failed: ".concat(resp.status));
6069
+ return [
6070
+ 4,
6071
+ resp.text()
6072
+ ];
6073
+ case 13:
6074
+ text = _state.sent();
6075
+ return [
6076
+ 2,
6077
+ parseRSSXml(text, maxItems)
5994
6078
  ];
5995
6079
  }
5996
6080
  });
@@ -6002,18 +6086,28 @@ function ScrollerOverlay(param) {
6002
6086
  var cfg = overlay.scroller_config;
6003
6087
  var uid = (0, import_react.useId)().replace(/:/g, "");
6004
6088
  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];
6089
+ var _ref14 = _sliced_to_array((0, import_react.useState)(true), 2), rssLoading = _ref14[0], setRssLoading = _ref14[1];
6090
+ var _ref15 = _sliced_to_array((0, import_react.useState)(false), 2), rssError = _ref15[0], setRssError = _ref15[1];
6006
6091
  var rssUrl = (cfg === null || cfg === void 0 ? void 0 : cfg.rss_url) || "";
6007
6092
  var maxItems = (_ref = cfg === null || cfg === void 0 ? void 0 : cfg.max_items) !== null && _ref !== void 0 ? _ref : 10;
6008
6093
  var autoRefresh = (cfg === null || cfg === void 0 ? void 0 : cfg.auto_refresh) !== false;
6009
6094
  var updateInterval = (_ref1 = cfg === null || cfg === void 0 ? void 0 : cfg.update_interval) !== null && _ref1 !== void 0 ? _ref1 : 5;
6010
6095
  (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;
6096
+ if (!rssUrl || (cfg === null || cfg === void 0 ? void 0 : cfg.use_custom_text) && (cfg === null || cfg === void 0 ? void 0 : cfg.custom_text)) {
6097
+ setRssLoading(false);
6098
+ return;
6099
+ }
6012
6100
  var cancelled = false;
6013
6101
  setRssLoading(true);
6102
+ setRssError(false);
6014
6103
  fetchRSSItems(rssUrl, maxItems).then(function(items) {
6015
- if (!cancelled) setRssItems(items);
6016
- }).catch(function() {}).finally(function() {
6104
+ if (!cancelled) {
6105
+ setRssItems(items);
6106
+ setRssError(false);
6107
+ }
6108
+ }).catch(function() {
6109
+ if (!cancelled) setRssError(true);
6110
+ }).finally(function() {
6017
6111
  if (!cancelled) setRssLoading(false);
6018
6112
  });
6019
6113
  return function() {
@@ -6028,7 +6122,10 @@ function ScrollerOverlay(param) {
6028
6122
  (0, import_react.useEffect)(function() {
6029
6123
  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
6124
  var interval = setInterval(function() {
6031
- fetchRSSItems(rssUrl, maxItems).then(setRssItems).catch(function() {});
6125
+ fetchRSSItems(rssUrl, maxItems).then(function(items) {
6126
+ setRssItems(items);
6127
+ setRssError(false);
6128
+ }).catch(function() {});
6032
6129
  }, updateInterval * 60 * 1e3);
6033
6130
  return function() {
6034
6131
  return clearInterval(interval);
@@ -6065,13 +6162,19 @@ function ScrollerOverlay(param) {
6065
6162
  segments = [
6066
6163
  "Loading feed\u2026"
6067
6164
  ];
6165
+ } else if (rssError) {
6166
+ segments = overlay.content ? [
6167
+ overlay.content
6168
+ ] : [
6169
+ "RSS feed unavailable"
6170
+ ];
6068
6171
  } else if (overlay.content) {
6069
6172
  segments = [
6070
6173
  overlay.content
6071
6174
  ];
6072
6175
  } else {
6073
6176
  segments = rssUrl ? [
6074
- "Fetching RSS feed\u2026"
6177
+ "Loading feed\u2026"
6075
6178
  ] : [
6076
6179
  "RSS Ticker"
6077
6180
  ];