stormcloud-video-player 0.7.26 → 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/dist/stormcloud-vp.min.js +1 -1
- package/lib/index.cjs +266 -104
- package/lib/index.cjs.map +1 -1
- package/lib/index.d.cts +1 -0
- package/lib/index.d.ts +1 -0
- package/lib/index.js +266 -104
- package/lib/index.js.map +1 -1
- package/lib/player/StormcloudVideoPlayer.cjs +16 -11
- package/lib/player/StormcloudVideoPlayer.cjs.map +1 -1
- package/lib/player/StormcloudVideoPlayer.d.cts +1 -0
- package/lib/players/HlsPlayer.cjs +16 -11
- package/lib/players/HlsPlayer.cjs.map +1 -1
- package/lib/players/index.cjs +16 -11
- package/lib/players/index.cjs.map +1 -1
- package/lib/ui/OverlayRenderer.cjs +131 -28
- package/lib/ui/OverlayRenderer.cjs.map +1 -1
- package/lib/ui/StormcloudVideoPlayer.cjs +266 -104
- package/lib/ui/StormcloudVideoPlayer.cjs.map +1 -1
- package/package.json +1 -1
|
@@ -441,42 +441,126 @@ function TextOverlay(param) {
|
|
|
441
441
|
children: text
|
|
442
442
|
});
|
|
443
443
|
}
|
|
444
|
+
function parseRSSXml(xmlText, maxItems) {
|
|
445
|
+
var parser = new DOMParser();
|
|
446
|
+
var doc = parser.parseFromString(xmlText, "text/xml");
|
|
447
|
+
if (doc.querySelector("parsererror")) throw new Error("Invalid RSS XML");
|
|
448
|
+
return Array.from(doc.querySelectorAll("item")).map(function(item) {
|
|
449
|
+
var _item_querySelector, _item_querySelector1, _item_querySelector2, _item_querySelector3, _item_querySelector4;
|
|
450
|
+
return {
|
|
451
|
+
title: (((_item_querySelector = item.querySelector("title")) === null || _item_querySelector === void 0 ? void 0 : _item_querySelector.textContent) || "").replace(/<[^>]*>/g, "").trim(),
|
|
452
|
+
description: (((_item_querySelector1 = item.querySelector("description")) === null || _item_querySelector1 === void 0 ? void 0 : _item_querySelector1.textContent) || "").replace(/<[^>]*>/g, "").trim(),
|
|
453
|
+
pubDate: ((_item_querySelector2 = item.querySelector("pubDate")) === null || _item_querySelector2 === void 0 ? void 0 : _item_querySelector2.textContent) || "",
|
|
454
|
+
author: ((_item_querySelector3 = item.querySelector("author, dc\\:creator")) === null || _item_querySelector3 === void 0 ? void 0 : _item_querySelector3.textContent) || "",
|
|
455
|
+
category: ((_item_querySelector4 = item.querySelector("category")) === null || _item_querySelector4 === void 0 ? void 0 : _item_querySelector4.textContent) || ""
|
|
456
|
+
};
|
|
457
|
+
}).filter(function(i) {
|
|
458
|
+
return i.title;
|
|
459
|
+
}).slice(0, maxItems);
|
|
460
|
+
}
|
|
444
461
|
function fetchRSSItems(rssUrl, maxItems) {
|
|
445
462
|
return _async_to_generator(function() {
|
|
446
|
-
var
|
|
463
|
+
var encoded, resp2, data, unused, resp21, text2, unused1, resp, text;
|
|
447
464
|
return _ts_generator(this, function(_state) {
|
|
448
465
|
switch(_state.label){
|
|
449
466
|
case 0:
|
|
467
|
+
encoded = encodeURIComponent(rssUrl);
|
|
468
|
+
_state.label = 1;
|
|
469
|
+
case 1:
|
|
470
|
+
_state.trys.push([
|
|
471
|
+
1,
|
|
472
|
+
5,
|
|
473
|
+
,
|
|
474
|
+
6
|
|
475
|
+
]);
|
|
450
476
|
return [
|
|
451
477
|
4,
|
|
452
|
-
fetch("https://api.allorigins.win/get?url=".concat(
|
|
478
|
+
fetch("https://api.allorigins.win/get?url=".concat(encoded))
|
|
479
|
+
];
|
|
480
|
+
case 2:
|
|
481
|
+
resp2 = _state.sent();
|
|
482
|
+
if (!resp2.ok) return [
|
|
483
|
+
3,
|
|
484
|
+
4
|
|
453
485
|
];
|
|
454
|
-
case 1:
|
|
455
|
-
resp = _state.sent();
|
|
456
486
|
return [
|
|
457
487
|
4,
|
|
458
|
-
|
|
488
|
+
resp2.json()
|
|
459
489
|
];
|
|
460
|
-
case
|
|
490
|
+
case 3:
|
|
461
491
|
data = _state.sent();
|
|
462
|
-
if (
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
|
|
492
|
+
if (data.contents) return [
|
|
493
|
+
2,
|
|
494
|
+
parseRSSXml(data.contents, maxItems)
|
|
495
|
+
];
|
|
496
|
+
_state.label = 4;
|
|
497
|
+
case 4:
|
|
498
|
+
return [
|
|
499
|
+
3,
|
|
500
|
+
6
|
|
501
|
+
];
|
|
502
|
+
case 5:
|
|
503
|
+
unused = _state.sent();
|
|
504
|
+
return [
|
|
505
|
+
3,
|
|
506
|
+
6
|
|
507
|
+
];
|
|
508
|
+
case 6:
|
|
509
|
+
_state.trys.push([
|
|
510
|
+
6,
|
|
511
|
+
10,
|
|
512
|
+
,
|
|
513
|
+
11
|
|
514
|
+
]);
|
|
515
|
+
return [
|
|
516
|
+
4,
|
|
517
|
+
fetch("https://corsproxy.io/?url=".concat(encoded))
|
|
518
|
+
];
|
|
519
|
+
case 7:
|
|
520
|
+
resp21 = _state.sent();
|
|
521
|
+
if (!resp21.ok) return [
|
|
522
|
+
3,
|
|
523
|
+
9
|
|
524
|
+
];
|
|
525
|
+
return [
|
|
526
|
+
4,
|
|
527
|
+
resp21.text()
|
|
528
|
+
];
|
|
529
|
+
case 8:
|
|
530
|
+
text2 = _state.sent();
|
|
531
|
+
if (text2) return [
|
|
532
|
+
2,
|
|
533
|
+
parseRSSXml(text2, maxItems)
|
|
534
|
+
];
|
|
535
|
+
_state.label = 9;
|
|
536
|
+
case 9:
|
|
537
|
+
return [
|
|
538
|
+
3,
|
|
539
|
+
11
|
|
540
|
+
];
|
|
541
|
+
case 10:
|
|
542
|
+
unused1 = _state.sent();
|
|
543
|
+
return [
|
|
544
|
+
3,
|
|
545
|
+
11
|
|
546
|
+
];
|
|
547
|
+
case 11:
|
|
548
|
+
return [
|
|
549
|
+
4,
|
|
550
|
+
fetch("https://thingproxy.freeboard.io/fetch/".concat(rssUrl))
|
|
551
|
+
];
|
|
552
|
+
case 12:
|
|
553
|
+
resp = _state.sent();
|
|
554
|
+
if (!resp.ok) throw new Error("RSS fetch failed: ".concat(resp.status));
|
|
555
|
+
return [
|
|
556
|
+
4,
|
|
557
|
+
resp.text()
|
|
558
|
+
];
|
|
559
|
+
case 13:
|
|
560
|
+
text = _state.sent();
|
|
466
561
|
return [
|
|
467
562
|
2,
|
|
468
|
-
|
|
469
|
-
var _item_querySelector, _item_querySelector1, _item_querySelector2, _item_querySelector3, _item_querySelector4;
|
|
470
|
-
return {
|
|
471
|
-
title: (((_item_querySelector = item.querySelector("title")) === null || _item_querySelector === void 0 ? void 0 : _item_querySelector.textContent) || "").replace(/<[^>]*>/g, "").trim(),
|
|
472
|
-
description: (((_item_querySelector1 = item.querySelector("description")) === null || _item_querySelector1 === void 0 ? void 0 : _item_querySelector1.textContent) || "").replace(/<[^>]*>/g, "").trim(),
|
|
473
|
-
pubDate: ((_item_querySelector2 = item.querySelector("pubDate")) === null || _item_querySelector2 === void 0 ? void 0 : _item_querySelector2.textContent) || "",
|
|
474
|
-
author: ((_item_querySelector3 = item.querySelector("author, dc\\:creator")) === null || _item_querySelector3 === void 0 ? void 0 : _item_querySelector3.textContent) || "",
|
|
475
|
-
category: ((_item_querySelector4 = item.querySelector("category")) === null || _item_querySelector4 === void 0 ? void 0 : _item_querySelector4.textContent) || ""
|
|
476
|
-
};
|
|
477
|
-
}).filter(function(i) {
|
|
478
|
-
return i.title;
|
|
479
|
-
}).slice(0, maxItems)
|
|
563
|
+
parseRSSXml(text, maxItems)
|
|
480
564
|
];
|
|
481
565
|
}
|
|
482
566
|
});
|
|
@@ -488,18 +572,28 @@ function ScrollerOverlay(param) {
|
|
|
488
572
|
var cfg = overlay.scroller_config;
|
|
489
573
|
var uid = (0, import_react.useId)().replace(/:/g, "");
|
|
490
574
|
var _ref13 = _sliced_to_array((0, import_react.useState)([]), 2), rssItems = _ref13[0], setRssItems = _ref13[1];
|
|
491
|
-
var _ref14 = _sliced_to_array((0, import_react.useState)(
|
|
575
|
+
var _ref14 = _sliced_to_array((0, import_react.useState)(true), 2), rssLoading = _ref14[0], setRssLoading = _ref14[1];
|
|
576
|
+
var _ref15 = _sliced_to_array((0, import_react.useState)(false), 2), rssError = _ref15[0], setRssError = _ref15[1];
|
|
492
577
|
var rssUrl = (cfg === null || cfg === void 0 ? void 0 : cfg.rss_url) || "";
|
|
493
578
|
var maxItems = (_ref = cfg === null || cfg === void 0 ? void 0 : cfg.max_items) !== null && _ref !== void 0 ? _ref : 10;
|
|
494
579
|
var autoRefresh = (cfg === null || cfg === void 0 ? void 0 : cfg.auto_refresh) !== false;
|
|
495
580
|
var updateInterval = (_ref1 = cfg === null || cfg === void 0 ? void 0 : cfg.update_interval) !== null && _ref1 !== void 0 ? _ref1 : 5;
|
|
496
581
|
(0, import_react.useEffect)(function() {
|
|
497
|
-
if (!rssUrl || (cfg === null || cfg === void 0 ? void 0 : cfg.use_custom_text) && (cfg === null || cfg === void 0 ? void 0 : cfg.custom_text))
|
|
582
|
+
if (!rssUrl || (cfg === null || cfg === void 0 ? void 0 : cfg.use_custom_text) && (cfg === null || cfg === void 0 ? void 0 : cfg.custom_text)) {
|
|
583
|
+
setRssLoading(false);
|
|
584
|
+
return;
|
|
585
|
+
}
|
|
498
586
|
var cancelled = false;
|
|
499
587
|
setRssLoading(true);
|
|
588
|
+
setRssError(false);
|
|
500
589
|
fetchRSSItems(rssUrl, maxItems).then(function(items) {
|
|
501
|
-
if (!cancelled)
|
|
502
|
-
|
|
590
|
+
if (!cancelled) {
|
|
591
|
+
setRssItems(items);
|
|
592
|
+
setRssError(false);
|
|
593
|
+
}
|
|
594
|
+
}).catch(function() {
|
|
595
|
+
if (!cancelled) setRssError(true);
|
|
596
|
+
}).finally(function() {
|
|
503
597
|
if (!cancelled) setRssLoading(false);
|
|
504
598
|
});
|
|
505
599
|
return function() {
|
|
@@ -514,7 +608,10 @@ function ScrollerOverlay(param) {
|
|
|
514
608
|
(0, import_react.useEffect)(function() {
|
|
515
609
|
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;
|
|
516
610
|
var interval = setInterval(function() {
|
|
517
|
-
fetchRSSItems(rssUrl, maxItems).then(
|
|
611
|
+
fetchRSSItems(rssUrl, maxItems).then(function(items) {
|
|
612
|
+
setRssItems(items);
|
|
613
|
+
setRssError(false);
|
|
614
|
+
}).catch(function() {});
|
|
518
615
|
}, updateInterval * 60 * 1e3);
|
|
519
616
|
return function() {
|
|
520
617
|
return clearInterval(interval);
|
|
@@ -551,13 +648,19 @@ function ScrollerOverlay(param) {
|
|
|
551
648
|
segments = [
|
|
552
649
|
"Loading feed\u2026"
|
|
553
650
|
];
|
|
651
|
+
} else if (rssError) {
|
|
652
|
+
segments = overlay.content ? [
|
|
653
|
+
overlay.content
|
|
654
|
+
] : [
|
|
655
|
+
"RSS feed unavailable"
|
|
656
|
+
];
|
|
554
657
|
} else if (overlay.content) {
|
|
555
658
|
segments = [
|
|
556
659
|
overlay.content
|
|
557
660
|
];
|
|
558
661
|
} else {
|
|
559
662
|
segments = rssUrl ? [
|
|
560
|
-
"
|
|
663
|
+
"Loading feed\u2026"
|
|
561
664
|
] : [
|
|
562
665
|
"RSS Ticker"
|
|
563
666
|
];
|