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/lib/index.d.cts CHANGED
@@ -194,6 +194,7 @@ declare class StormcloudVideoPlayer {
194
194
  getRemainingAdSeconds(): number;
195
195
  isAdPlaying(): boolean;
196
196
  isShowingAds(): boolean;
197
+ isInAdBreak(): boolean;
197
198
  private initializeAdLayer;
198
199
  setDisableAds(disabled: boolean): void;
199
200
  private syncMainContentAudioWhenVisible;
package/lib/index.d.ts CHANGED
@@ -194,6 +194,7 @@ declare class StormcloudVideoPlayer {
194
194
  getRemainingAdSeconds(): number;
195
195
  isAdPlaying(): boolean;
196
196
  isShowingAds(): boolean;
197
+ isInAdBreak(): boolean;
197
198
  private initializeAdLayer;
198
199
  setDisableAds(disabled: boolean): void;
199
200
  private syncMainContentAudioWhenVisible;
package/lib/index.js CHANGED
@@ -3248,6 +3248,9 @@ var StormcloudVideoPlayer = /*#__PURE__*/ function() {
3248
3248
  }
3249
3249
  _this.adLayer.cancelPreload(token);
3250
3250
  } else {
3251
+ _this.video.style.transition = "none";
3252
+ _this.video.style.opacity = "0";
3253
+ _this.video.style.visibility = "hidden";
3251
3254
  if (!_this.config.singlePipelineMode) {
3252
3255
  _this.showPlaceholderLayer();
3253
3256
  }
@@ -3274,6 +3277,9 @@ var StormcloudVideoPlayer = /*#__PURE__*/ function() {
3274
3277
  console.log("[StormcloudVideoPlayer] content_resume: skip pending bids, only", remainingNow1, "ms left");
3275
3278
  }
3276
3279
  } else {
3280
+ _this.video.style.transition = "none";
3281
+ _this.video.style.opacity = "0";
3282
+ _this.video.style.visibility = "hidden";
3277
3283
  if (!_this.config.singlePipelineMode) {
3278
3284
  _this.showPlaceholderLayer();
3279
3285
  }
@@ -3303,17 +3309,10 @@ var StormcloudVideoPlayer = /*#__PURE__*/ function() {
3303
3309
  _this.showPlaceholderLayer();
3304
3310
  _this.adLayer.showPlaceholder();
3305
3311
  } else {
3306
- _this.adLayer.hidePlaceholder();
3307
- if (_this.video.muted !== breakMuted) {
3308
- _this.video.muted = breakMuted;
3309
- }
3310
- if (Math.abs(_this.video.volume - breakVolume) > 0.01) {
3311
- _this.video.volume = breakVolume;
3312
- }
3313
- if (_this.video.paused) {
3314
- var _this_video_play;
3315
- (_this_video_play = _this.video.play()) === null || _this_video_play === void 0 ? void 0 : _this_video_play.catch(function() {});
3316
- }
3312
+ _this.video.style.transition = "none";
3313
+ _this.video.style.opacity = "0";
3314
+ _this.video.style.visibility = "hidden";
3315
+ _this.adLayer.showPlaceholder();
3317
3316
  }
3318
3317
  _this.continuousFetchingActive = true;
3319
3318
  _this.startContinuousFetchLoop();
@@ -3525,6 +3524,12 @@ var StormcloudVideoPlayer = /*#__PURE__*/ function() {
3525
3524
  return this.showAds;
3526
3525
  }
3527
3526
  },
3527
+ {
3528
+ key: "isInAdBreak",
3529
+ value: function isInAdBreak() {
3530
+ return this.inAdBreak;
3531
+ }
3532
+ },
3528
3533
  {
3529
3534
  key: "initializeAdLayer",
3530
3535
  value: function initializeAdLayer() {
@@ -5784,42 +5789,126 @@ function TextOverlay(param) {
5784
5789
  children: text
5785
5790
  });
5786
5791
  }
5792
+ function parseRSSXml(xmlText, maxItems) {
5793
+ var parser = new DOMParser();
5794
+ var doc = parser.parseFromString(xmlText, "text/xml");
5795
+ if (doc.querySelector("parsererror")) throw new Error("Invalid RSS XML");
5796
+ return Array.from(doc.querySelectorAll("item")).map(function(item) {
5797
+ var _item_querySelector, _item_querySelector1, _item_querySelector2, _item_querySelector3, _item_querySelector4;
5798
+ return {
5799
+ title: (((_item_querySelector = item.querySelector("title")) === null || _item_querySelector === void 0 ? void 0 : _item_querySelector.textContent) || "").replace(/<[^>]*>/g, "").trim(),
5800
+ description: (((_item_querySelector1 = item.querySelector("description")) === null || _item_querySelector1 === void 0 ? void 0 : _item_querySelector1.textContent) || "").replace(/<[^>]*>/g, "").trim(),
5801
+ pubDate: ((_item_querySelector2 = item.querySelector("pubDate")) === null || _item_querySelector2 === void 0 ? void 0 : _item_querySelector2.textContent) || "",
5802
+ author: ((_item_querySelector3 = item.querySelector("author, dc\\:creator")) === null || _item_querySelector3 === void 0 ? void 0 : _item_querySelector3.textContent) || "",
5803
+ category: ((_item_querySelector4 = item.querySelector("category")) === null || _item_querySelector4 === void 0 ? void 0 : _item_querySelector4.textContent) || ""
5804
+ };
5805
+ }).filter(function(i) {
5806
+ return i.title;
5807
+ }).slice(0, maxItems);
5808
+ }
5787
5809
  function fetchRSSItems(rssUrl, maxItems) {
5788
5810
  return _async_to_generator(function() {
5789
- var resp, data, parser, doc;
5811
+ var encoded, resp2, data, unused, resp21, text2, unused1, resp, text;
5790
5812
  return _ts_generator(this, function(_state) {
5791
5813
  switch(_state.label){
5792
5814
  case 0:
5815
+ encoded = encodeURIComponent(rssUrl);
5816
+ _state.label = 1;
5817
+ case 1:
5818
+ _state.trys.push([
5819
+ 1,
5820
+ 5,
5821
+ ,
5822
+ 6
5823
+ ]);
5793
5824
  return [
5794
5825
  4,
5795
- fetch("https://api.allorigins.win/get?url=".concat(encodeURIComponent(rssUrl)))
5826
+ fetch("https://api.allorigins.win/get?url=".concat(encoded))
5827
+ ];
5828
+ case 2:
5829
+ resp2 = _state.sent();
5830
+ if (!resp2.ok) return [
5831
+ 3,
5832
+ 4
5796
5833
  ];
5797
- case 1:
5798
- resp = _state.sent();
5799
5834
  return [
5800
5835
  4,
5801
- resp.json()
5836
+ resp2.json()
5802
5837
  ];
5803
- case 2:
5838
+ case 3:
5804
5839
  data = _state.sent();
5805
- if (!data.contents) throw new Error("No content from RSS feed");
5806
- parser = new DOMParser();
5807
- doc = parser.parseFromString(data.contents, "text/xml");
5808
- if (doc.querySelector("parsererror")) throw new Error("Invalid RSS XML");
5840
+ if (data.contents) return [
5841
+ 2,
5842
+ parseRSSXml(data.contents, maxItems)
5843
+ ];
5844
+ _state.label = 4;
5845
+ case 4:
5846
+ return [
5847
+ 3,
5848
+ 6
5849
+ ];
5850
+ case 5:
5851
+ unused = _state.sent();
5852
+ return [
5853
+ 3,
5854
+ 6
5855
+ ];
5856
+ case 6:
5857
+ _state.trys.push([
5858
+ 6,
5859
+ 10,
5860
+ ,
5861
+ 11
5862
+ ]);
5809
5863
  return [
5864
+ 4,
5865
+ fetch("https://corsproxy.io/?url=".concat(encoded))
5866
+ ];
5867
+ case 7:
5868
+ resp21 = _state.sent();
5869
+ if (!resp21.ok) return [
5870
+ 3,
5871
+ 9
5872
+ ];
5873
+ return [
5874
+ 4,
5875
+ resp21.text()
5876
+ ];
5877
+ case 8:
5878
+ text2 = _state.sent();
5879
+ if (text2) return [
5810
5880
  2,
5811
- Array.from(doc.querySelectorAll("item")).map(function(item) {
5812
- var _item_querySelector, _item_querySelector1, _item_querySelector2, _item_querySelector3, _item_querySelector4;
5813
- return {
5814
- title: (((_item_querySelector = item.querySelector("title")) === null || _item_querySelector === void 0 ? void 0 : _item_querySelector.textContent) || "").replace(/<[^>]*>/g, "").trim(),
5815
- description: (((_item_querySelector1 = item.querySelector("description")) === null || _item_querySelector1 === void 0 ? void 0 : _item_querySelector1.textContent) || "").replace(/<[^>]*>/g, "").trim(),
5816
- pubDate: ((_item_querySelector2 = item.querySelector("pubDate")) === null || _item_querySelector2 === void 0 ? void 0 : _item_querySelector2.textContent) || "",
5817
- author: ((_item_querySelector3 = item.querySelector("author, dc\\:creator")) === null || _item_querySelector3 === void 0 ? void 0 : _item_querySelector3.textContent) || "",
5818
- category: ((_item_querySelector4 = item.querySelector("category")) === null || _item_querySelector4 === void 0 ? void 0 : _item_querySelector4.textContent) || ""
5819
- };
5820
- }).filter(function(i) {
5821
- return i.title;
5822
- }).slice(0, maxItems)
5881
+ parseRSSXml(text2, maxItems)
5882
+ ];
5883
+ _state.label = 9;
5884
+ case 9:
5885
+ return [
5886
+ 3,
5887
+ 11
5888
+ ];
5889
+ case 10:
5890
+ unused1 = _state.sent();
5891
+ return [
5892
+ 3,
5893
+ 11
5894
+ ];
5895
+ case 11:
5896
+ return [
5897
+ 4,
5898
+ fetch("https://thingproxy.freeboard.io/fetch/".concat(rssUrl))
5899
+ ];
5900
+ case 12:
5901
+ resp = _state.sent();
5902
+ if (!resp.ok) throw new Error("RSS fetch failed: ".concat(resp.status));
5903
+ return [
5904
+ 4,
5905
+ resp.text()
5906
+ ];
5907
+ case 13:
5908
+ text = _state.sent();
5909
+ return [
5910
+ 2,
5911
+ parseRSSXml(text, maxItems)
5823
5912
  ];
5824
5913
  }
5825
5914
  });
@@ -5831,18 +5920,28 @@ function ScrollerOverlay(param) {
5831
5920
  var cfg = overlay.scroller_config;
5832
5921
  var uid = useId().replace(/:/g, "");
5833
5922
  var _useState = _sliced_to_array(useState([]), 2), rssItems = _useState[0], setRssItems = _useState[1];
5834
- var _useState1 = _sliced_to_array(useState(false), 2), rssLoading = _useState1[0], setRssLoading = _useState1[1];
5923
+ var _useState1 = _sliced_to_array(useState(true), 2), rssLoading = _useState1[0], setRssLoading = _useState1[1];
5924
+ var _useState2 = _sliced_to_array(useState(false), 2), rssError = _useState2[0], setRssError = _useState2[1];
5835
5925
  var rssUrl = (cfg === null || cfg === void 0 ? void 0 : cfg.rss_url) || "";
5836
5926
  var maxItems = (_ref = cfg === null || cfg === void 0 ? void 0 : cfg.max_items) !== null && _ref !== void 0 ? _ref : 10;
5837
5927
  var autoRefresh = (cfg === null || cfg === void 0 ? void 0 : cfg.auto_refresh) !== false;
5838
5928
  var updateInterval = (_ref1 = cfg === null || cfg === void 0 ? void 0 : cfg.update_interval) !== null && _ref1 !== void 0 ? _ref1 : 5;
5839
5929
  useEffect(function() {
5840
- if (!rssUrl || (cfg === null || cfg === void 0 ? void 0 : cfg.use_custom_text) && (cfg === null || cfg === void 0 ? void 0 : cfg.custom_text)) return;
5930
+ if (!rssUrl || (cfg === null || cfg === void 0 ? void 0 : cfg.use_custom_text) && (cfg === null || cfg === void 0 ? void 0 : cfg.custom_text)) {
5931
+ setRssLoading(false);
5932
+ return;
5933
+ }
5841
5934
  var cancelled = false;
5842
5935
  setRssLoading(true);
5936
+ setRssError(false);
5843
5937
  fetchRSSItems(rssUrl, maxItems).then(function(items) {
5844
- if (!cancelled) setRssItems(items);
5845
- }).catch(function() {}).finally(function() {
5938
+ if (!cancelled) {
5939
+ setRssItems(items);
5940
+ setRssError(false);
5941
+ }
5942
+ }).catch(function() {
5943
+ if (!cancelled) setRssError(true);
5944
+ }).finally(function() {
5846
5945
  if (!cancelled) setRssLoading(false);
5847
5946
  });
5848
5947
  return function() {
@@ -5857,7 +5956,10 @@ function ScrollerOverlay(param) {
5857
5956
  useEffect(function() {
5858
5957
  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;
5859
5958
  var interval = setInterval(function() {
5860
- fetchRSSItems(rssUrl, maxItems).then(setRssItems).catch(function() {});
5959
+ fetchRSSItems(rssUrl, maxItems).then(function(items) {
5960
+ setRssItems(items);
5961
+ setRssError(false);
5962
+ }).catch(function() {});
5861
5963
  }, updateInterval * 60 * 1e3);
5862
5964
  return function() {
5863
5965
  return clearInterval(interval);
@@ -5894,13 +5996,19 @@ function ScrollerOverlay(param) {
5894
5996
  segments = [
5895
5997
  "Loading feed\u2026"
5896
5998
  ];
5999
+ } else if (rssError) {
6000
+ segments = overlay.content ? [
6001
+ overlay.content
6002
+ ] : [
6003
+ "RSS feed unavailable"
6004
+ ];
5897
6005
  } else if (overlay.content) {
5898
6006
  segments = [
5899
6007
  overlay.content
5900
6008
  ];
5901
6009
  } else {
5902
6010
  segments = rssUrl ? [
5903
- "Fetching RSS feed\u2026"
6011
+ "Loading feed\u2026"
5904
6012
  ] : [
5905
6013
  "RSS Ticker"
5906
6014
  ];
@@ -7327,6 +7435,7 @@ var StormcloudVideoPlayerComponent = React2.memo(function(props) {
7327
7435
  var wrapperRef = useRef2(null);
7328
7436
  var _React2_useState = _sliced_to_array(React2.useState({
7329
7437
  showAds: false,
7438
+ inAdBreak: false,
7330
7439
  currentIndex: 0,
7331
7440
  totalAds: 0,
7332
7441
  remainingSeconds: 0
@@ -7687,20 +7796,23 @@ var StormcloudVideoPlayerComponent = React2.memo(function(props) {
7687
7796
  if (!playerRef.current) return;
7688
7797
  var checkAdStatus = function checkAdStatus() {
7689
7798
  if (playerRef.current) {
7690
- var _videoRef_current_dataset, _videoRef_current;
7799
+ var _ref;
7800
+ var _videoRef_current_dataset, _videoRef_current, _playerRef_current_isInAdBreak, _playerRef_current;
7691
7801
  var showAdsFromMethod = playerRef.current.isShowingAds();
7692
7802
  var showAdsFromAttribute = ((_videoRef_current = videoRef.current) === null || _videoRef_current === void 0 ? void 0 : (_videoRef_current_dataset = _videoRef_current.dataset) === null || _videoRef_current_dataset === void 0 ? void 0 : _videoRef_current_dataset.stormcloudAdPlaying) === "true";
7693
7803
  var showAds = showAdsFromMethod || showAdsFromAttribute;
7804
+ var inAdBreak = (_ref = (_playerRef_current_isInAdBreak = (_playerRef_current = playerRef.current).isInAdBreak) === null || _playerRef_current_isInAdBreak === void 0 ? void 0 : _playerRef_current_isInAdBreak.call(_playerRef_current)) !== null && _ref !== void 0 ? _ref : showAds;
7694
7805
  var currentIndex = playerRef.current.getCurrentAdIndex();
7695
7806
  var totalAds = playerRef.current.getTotalAdsInBreak();
7696
7807
  var remainingSeconds = playerRef.current.getRemainingAdSeconds();
7697
7808
  setAdStatus(function(prev) {
7698
- if (prev.showAds !== showAds || prev.currentIndex !== currentIndex || prev.totalAds !== totalAds || prev.remainingSeconds !== remainingSeconds) {
7809
+ if (prev.showAds !== showAds || prev.inAdBreak !== inAdBreak || prev.currentIndex !== currentIndex || prev.totalAds !== totalAds || prev.remainingSeconds !== remainingSeconds) {
7699
7810
  if (showAds && !prev.showAds) {
7700
7811
  setShowCenterPlay(false);
7701
7812
  }
7702
7813
  return {
7703
7814
  showAds: showAds,
7815
+ inAdBreak: inAdBreak,
7704
7816
  currentIndex: currentIndex,
7705
7817
  totalAds: totalAds,
7706
7818
  remainingSeconds: remainingSeconds
@@ -8354,7 +8466,7 @@ var StormcloudVideoPlayerComponent = React2.memo(function(props) {
8354
8466
  })
8355
8467
  ]
8356
8468
  }),
8357
- /* @__PURE__ */ jsxs2("div", {
8469
+ /* @__PURE__ */ jsx2("div", {
8358
8470
  className: "sc-ai-scroll",
8359
8471
  style: {
8360
8472
  padding: "12px",
@@ -8364,68 +8476,118 @@ var StormcloudVideoPlayerComponent = React2.memo(function(props) {
8364
8476
  display: "grid",
8365
8477
  gap: "12px"
8366
8478
  },
8367
- children: [
8368
- aiLiveContext.error && /* @__PURE__ */ jsx2("div", {
8369
- style: {
8370
- fontSize: "12px",
8371
- color: "#fecaca",
8372
- background: "rgba(220, 38, 38, 0.2)",
8373
- border: "1px solid rgba(248, 113, 113, 0.5)",
8374
- borderRadius: "10px",
8375
- padding: "9px 10px"
8376
- },
8377
- children: aiLiveContext.error
8378
- }),
8379
- /* @__PURE__ */ jsxs2("div", {
8380
- style: {
8381
- padding: "11px 12px",
8382
- borderRadius: "10px",
8383
- border: "1px solid rgba(236, 72, 153, 0.5)",
8384
- background: "linear-gradient(155deg, rgba(88, 28, 135, 0.35) 0%, rgba(17, 24, 39, 0.62) 100%)",
8385
- boxShadow: "0 8px 24px rgba(236, 72, 153, 0.12)"
8386
- },
8387
- children: [
8388
- /* @__PURE__ */ jsxs2("div", {
8389
- style: {
8390
- display: "flex",
8391
- alignItems: "center",
8392
- justifyContent: "space-between",
8393
- gap: "8px",
8394
- marginBottom: "7px"
8395
- },
8396
- children: [
8397
- /* @__PURE__ */ jsx2("div", {
8398
- style: {
8399
- fontSize: "11px",
8400
- fontWeight: 800,
8401
- textTransform: "uppercase",
8402
- letterSpacing: "0.1em",
8403
- color: "#f9a8d4"
8404
- },
8405
- children: "AI Context"
8406
- }),
8407
- /* @__PURE__ */ jsx2("div", {
8408
- style: {
8409
- fontSize: "10px",
8410
- color: "rgba(255,255,255,0.72)",
8411
- fontFamily: "'SF Mono', 'Cascadia Code', monospace"
8412
- },
8413
- children: aiLiveContext.context ? formatAiRelativeTime(aiLiveContext.context.updated_at) : "--"
8414
- })
8415
- ]
8416
- }),
8417
- /* @__PURE__ */ jsx2("div", {
8418
- style: {
8419
- fontSize: "13px",
8420
- lineHeight: "1.58",
8421
- color: "rgba(255,255,255,0.95)",
8422
- whiteSpace: "pre-wrap"
8423
- },
8424
- children: (_ref = (_aiLiveContext_context = aiLiveContext.context) === null || _aiLiveContext_context === void 0 ? void 0 : _aiLiveContext_context.context) !== null && _ref !== void 0 ? _ref : aiLiveContext.isLoading ? "Analyzing live stream..." : "Waiting for AI context response."
8425
- })
8426
- ]
8427
- })
8428
- ]
8479
+ children: adStatus.inAdBreak ? /* @__PURE__ */ jsxs2("div", {
8480
+ style: {
8481
+ display: "flex",
8482
+ flexDirection: "column",
8483
+ alignItems: "center",
8484
+ justifyContent: "center",
8485
+ gap: "12px",
8486
+ padding: "24px 12px",
8487
+ borderRadius: "10px",
8488
+ border: "1px solid rgba(234, 179, 8, 0.5)",
8489
+ background: "linear-gradient(155deg, rgba(92, 64, 0, 0.45) 0%, rgba(17, 24, 39, 0.62) 100%)",
8490
+ boxShadow: "0 8px 24px rgba(234, 179, 8, 0.12)"
8491
+ },
8492
+ children: [
8493
+ /* @__PURE__ */ jsx2("div", {
8494
+ style: {
8495
+ width: "36px",
8496
+ height: "36px",
8497
+ borderRadius: "50%",
8498
+ background: "rgba(234, 179, 8, 0.18)",
8499
+ border: "2px solid rgba(234, 179, 8, 0.7)",
8500
+ display: "flex",
8501
+ alignItems: "center",
8502
+ justifyContent: "center",
8503
+ fontSize: "16px"
8504
+ },
8505
+ children: "\uD83D\uDCFA"
8506
+ }),
8507
+ /* @__PURE__ */ jsx2("div", {
8508
+ style: {
8509
+ fontSize: "13px",
8510
+ fontWeight: 700,
8511
+ color: "#fde68a",
8512
+ letterSpacing: "0.04em",
8513
+ textAlign: "center"
8514
+ },
8515
+ children: "Now Ad Playing"
8516
+ }),
8517
+ /* @__PURE__ */ jsx2("div", {
8518
+ style: {
8519
+ fontSize: "11px",
8520
+ color: "rgba(255,255,255,0.55)",
8521
+ textAlign: "center",
8522
+ lineHeight: "1.5"
8523
+ },
8524
+ children: "AI context will resume after the ad break."
8525
+ })
8526
+ ]
8527
+ }) : /* @__PURE__ */ jsxs2(Fragment2, {
8528
+ children: [
8529
+ aiLiveContext.error && /* @__PURE__ */ jsx2("div", {
8530
+ style: {
8531
+ fontSize: "12px",
8532
+ color: "#fecaca",
8533
+ background: "rgba(220, 38, 38, 0.2)",
8534
+ border: "1px solid rgba(248, 113, 113, 0.5)",
8535
+ borderRadius: "10px",
8536
+ padding: "9px 10px"
8537
+ },
8538
+ children: aiLiveContext.error
8539
+ }),
8540
+ /* @__PURE__ */ jsxs2("div", {
8541
+ style: {
8542
+ padding: "11px 12px",
8543
+ borderRadius: "10px",
8544
+ border: "1px solid rgba(236, 72, 153, 0.5)",
8545
+ background: "linear-gradient(155deg, rgba(88, 28, 135, 0.35) 0%, rgba(17, 24, 39, 0.62) 100%)",
8546
+ boxShadow: "0 8px 24px rgba(236, 72, 153, 0.12)"
8547
+ },
8548
+ children: [
8549
+ /* @__PURE__ */ jsxs2("div", {
8550
+ style: {
8551
+ display: "flex",
8552
+ alignItems: "center",
8553
+ justifyContent: "space-between",
8554
+ gap: "8px",
8555
+ marginBottom: "7px"
8556
+ },
8557
+ children: [
8558
+ /* @__PURE__ */ jsx2("div", {
8559
+ style: {
8560
+ fontSize: "11px",
8561
+ fontWeight: 800,
8562
+ textTransform: "uppercase",
8563
+ letterSpacing: "0.1em",
8564
+ color: "#f9a8d4"
8565
+ },
8566
+ children: "AI Context"
8567
+ }),
8568
+ /* @__PURE__ */ jsx2("div", {
8569
+ style: {
8570
+ fontSize: "10px",
8571
+ color: "rgba(255,255,255,0.72)",
8572
+ fontFamily: "'SF Mono', 'Cascadia Code', monospace"
8573
+ },
8574
+ children: aiLiveContext.context ? formatAiRelativeTime(aiLiveContext.context.updated_at) : "--"
8575
+ })
8576
+ ]
8577
+ }),
8578
+ /* @__PURE__ */ jsx2("div", {
8579
+ style: {
8580
+ fontSize: "13px",
8581
+ lineHeight: "1.58",
8582
+ color: "rgba(255,255,255,0.95)",
8583
+ whiteSpace: "pre-wrap"
8584
+ },
8585
+ children: (_ref = (_aiLiveContext_context = aiLiveContext.context) === null || _aiLiveContext_context === void 0 ? void 0 : _aiLiveContext_context.context) !== null && _ref !== void 0 ? _ref : aiLiveContext.isLoading ? "Analyzing live stream..." : "Waiting for AI context response."
8586
+ })
8587
+ ]
8588
+ })
8589
+ ]
8590
+ })
8429
8591
  })
8430
8592
  ]
8431
8593
  }),