suada-components 1.2.0 → 1.2.1

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.
Files changed (52) hide show
  1. package/dist/components/{DailyMotion-BM__Vhyo.js → DailyMotion-C87ZJeRt.js} +1 -1
  2. package/dist/components/{DailyMotion-CxLlr0cR.esm.js → DailyMotion-DbDeP0dq.esm.js} +1 -1
  3. package/dist/components/{Facebook-DjA6gknl.esm.js → Facebook-B1XpGyBt.esm.js} +1 -1
  4. package/dist/components/{Facebook-Zkq5Dmij.js → Facebook-DigX8u_u.js} +1 -1
  5. package/dist/components/{FilePlayer-C-z4wNAs.esm.js → FilePlayer-BSL_U8r8.esm.js} +1 -1
  6. package/dist/components/{FilePlayer-PgJJpyg0.js → FilePlayer-BTuFK59w.js} +1 -1
  7. package/dist/components/{Kaltura-Btu7etAO.js → Kaltura-CKV92aVd.js} +1 -1
  8. package/dist/components/{Kaltura-B50rwAlx.esm.js → Kaltura-DAkp5nY0.esm.js} +1 -1
  9. package/dist/components/{Mixcloud-CpyWM87F.js → Mixcloud-CAgtZPq5.js} +1 -1
  10. package/dist/components/{Mixcloud-DCuoGh8X.esm.js → Mixcloud-CtWhrXiZ.esm.js} +1 -1
  11. package/dist/components/{Mux-DQjOzSHN.js → Mux-BRYGMFV_.js} +1 -1
  12. package/dist/components/{Mux-Bj4ELcFh.esm.js → Mux-C0xOzOps.esm.js} +1 -1
  13. package/dist/components/{Preview-Cgl2b2Yo.esm.js → Preview-Crcz-S0c.esm.js} +1 -1
  14. package/dist/components/{Preview-M0CQw6-7.js → Preview-DSBoVsm9.js} +1 -1
  15. package/dist/components/{SoundCloud-D8ulCoOA.js → SoundCloud-1V8ahw7A.js} +1 -1
  16. package/dist/components/{SoundCloud-BQ1Bv-Ms.esm.js → SoundCloud-BC8iiobM.esm.js} +1 -1
  17. package/dist/components/{Streamable-C_gvjkdy.js → Streamable-BhhnBO_c.js} +1 -1
  18. package/dist/components/{Streamable-DTv6vm7m.esm.js → Streamable-CGxErYVF.esm.js} +1 -1
  19. package/dist/components/{Twitch-BrQFLQcf.esm.js → Twitch-8quL43Fw.esm.js} +1 -1
  20. package/dist/components/{Twitch-RxI4d-d5.js → Twitch-E9YQS4X8.js} +1 -1
  21. package/dist/components/VideoPlayer/Player.d.ts +1 -0
  22. package/dist/components/VideoPlayer/Player.interface.d.ts +2 -1
  23. package/dist/components/VideoPlayer/Player.js +44 -23
  24. package/dist/components/VideoPlayer/Player.js.map +1 -1
  25. package/dist/components/VideoPlayer/Player.styles.d.ts +2 -0
  26. package/dist/components/VideoPlayer/Player.styles.js +21 -0
  27. package/dist/components/VideoPlayer/Player.styles.js.map +1 -1
  28. package/dist/components/VideoPlayer/useHlsSubtitles.d.ts +12 -0
  29. package/dist/components/VideoPlayer/useHlsSubtitles.js +73 -0
  30. package/dist/components/VideoPlayer/useHlsSubtitles.js.map +1 -0
  31. package/dist/components/VideoPlayer/usePlayerControls.js +52 -41
  32. package/dist/components/VideoPlayer/usePlayerControls.js.map +1 -1
  33. package/dist/components/{Vidyard-uAwNCpw7.js → Vidyard-B3v7M2i3.js} +1 -1
  34. package/dist/components/{Vidyard-BCPvgfz4.esm.js → Vidyard-DsG0WHnh.esm.js} +1 -1
  35. package/dist/components/{Vimeo-Ocs8S_PZ.esm.js → Vimeo-CXKbdxkV.esm.js} +1 -1
  36. package/dist/components/{Vimeo-BfnFWKlr.js → Vimeo-ddQ8CMRR.js} +1 -1
  37. package/dist/components/{Wistia-DU_Kavg4.js → Wistia-B93lpDSs.js} +1 -1
  38. package/dist/components/{Wistia-CjqtkoU1.esm.js → Wistia-CJDzE0TP.esm.js} +1 -1
  39. package/dist/components/{YouTube-uIBmVRVn.js → YouTube-631v_AIH.js} +1 -1
  40. package/dist/components/{YouTube-CBwRsGZb.esm.js → YouTube-CdjuPIIO.esm.js} +1 -1
  41. package/dist/components/components/VideoPlayer/Player.d.ts +1 -0
  42. package/dist/components/components/VideoPlayer/Player.interface.d.ts +2 -1
  43. package/dist/components/components/VideoPlayer/Player.styles.d.ts +2 -0
  44. package/dist/components/components/VideoPlayer/useHlsSubtitles.d.ts +12 -0
  45. package/dist/components/{index-Dwz3FwAA.js → index-Ciqeqnts.js} +233 -111
  46. package/dist/components/{index-KXbxnyZn.esm.js → index-CyUx723z.esm.js} +233 -111
  47. package/dist/components/index.esm.js +1 -1
  48. package/dist/icons/components/VideoPlayer/Player.d.ts +1 -0
  49. package/dist/icons/components/VideoPlayer/Player.interface.d.ts +2 -1
  50. package/dist/icons/components/VideoPlayer/Player.styles.d.ts +2 -0
  51. package/dist/icons/components/VideoPlayer/useHlsSubtitles.d.ts +12 -0
  52. package/package.json +1 -1
@@ -81409,7 +81409,7 @@ function requirePlayers () {
81409
81409
  canPlay: import_patterns.canPlay.youtube,
81410
81410
  lazyPlayer: (0, import_utils.lazy)(() => Promise.resolve().then(function () { return require(
81411
81411
  /* webpackChunkName: 'reactPlayerYouTube' */
81412
- './YouTube-uIBmVRVn.js'
81412
+ './YouTube-631v_AIH.js'
81413
81413
  ); }).then(function (n) { return n.YouTube; }))
81414
81414
  },
81415
81415
  {
@@ -81418,7 +81418,7 @@ function requirePlayers () {
81418
81418
  canPlay: import_patterns.canPlay.soundcloud,
81419
81419
  lazyPlayer: (0, import_utils.lazy)(() => Promise.resolve().then(function () { return require(
81420
81420
  /* webpackChunkName: 'reactPlayerSoundCloud' */
81421
- './SoundCloud-D8ulCoOA.js'
81421
+ './SoundCloud-1V8ahw7A.js'
81422
81422
  ); }).then(function (n) { return n.SoundCloud; }))
81423
81423
  },
81424
81424
  {
@@ -81427,7 +81427,7 @@ function requirePlayers () {
81427
81427
  canPlay: import_patterns.canPlay.vimeo,
81428
81428
  lazyPlayer: (0, import_utils.lazy)(() => Promise.resolve().then(function () { return require(
81429
81429
  /* webpackChunkName: 'reactPlayerVimeo' */
81430
- './Vimeo-BfnFWKlr.js'
81430
+ './Vimeo-ddQ8CMRR.js'
81431
81431
  ); }).then(function (n) { return n.Vimeo; }))
81432
81432
  },
81433
81433
  {
@@ -81436,7 +81436,7 @@ function requirePlayers () {
81436
81436
  canPlay: import_patterns.canPlay.mux,
81437
81437
  lazyPlayer: (0, import_utils.lazy)(() => Promise.resolve().then(function () { return require(
81438
81438
  /* webpackChunkName: 'reactPlayerMux' */
81439
- './Mux-DQjOzSHN.js'
81439
+ './Mux-BRYGMFV_.js'
81440
81440
  ); }).then(function (n) { return n.Mux; }))
81441
81441
  },
81442
81442
  {
@@ -81445,7 +81445,7 @@ function requirePlayers () {
81445
81445
  canPlay: import_patterns.canPlay.facebook,
81446
81446
  lazyPlayer: (0, import_utils.lazy)(() => Promise.resolve().then(function () { return require(
81447
81447
  /* webpackChunkName: 'reactPlayerFacebook' */
81448
- './Facebook-Zkq5Dmij.js'
81448
+ './Facebook-DigX8u_u.js'
81449
81449
  ); }).then(function (n) { return n.Facebook; }))
81450
81450
  },
81451
81451
  {
@@ -81454,7 +81454,7 @@ function requirePlayers () {
81454
81454
  canPlay: import_patterns.canPlay.streamable,
81455
81455
  lazyPlayer: (0, import_utils.lazy)(() => Promise.resolve().then(function () { return require(
81456
81456
  /* webpackChunkName: 'reactPlayerStreamable' */
81457
- './Streamable-C_gvjkdy.js'
81457
+ './Streamable-BhhnBO_c.js'
81458
81458
  ); }).then(function (n) { return n.Streamable; }))
81459
81459
  },
81460
81460
  {
@@ -81463,7 +81463,7 @@ function requirePlayers () {
81463
81463
  canPlay: import_patterns.canPlay.wistia,
81464
81464
  lazyPlayer: (0, import_utils.lazy)(() => Promise.resolve().then(function () { return require(
81465
81465
  /* webpackChunkName: 'reactPlayerWistia' */
81466
- './Wistia-DU_Kavg4.js'
81466
+ './Wistia-B93lpDSs.js'
81467
81467
  ); }).then(function (n) { return n.Wistia; }))
81468
81468
  },
81469
81469
  {
@@ -81472,7 +81472,7 @@ function requirePlayers () {
81472
81472
  canPlay: import_patterns.canPlay.twitch,
81473
81473
  lazyPlayer: (0, import_utils.lazy)(() => Promise.resolve().then(function () { return require(
81474
81474
  /* webpackChunkName: 'reactPlayerTwitch' */
81475
- './Twitch-RxI4d-d5.js'
81475
+ './Twitch-E9YQS4X8.js'
81476
81476
  ); }).then(function (n) { return n.Twitch; }))
81477
81477
  },
81478
81478
  {
@@ -81481,7 +81481,7 @@ function requirePlayers () {
81481
81481
  canPlay: import_patterns.canPlay.dailymotion,
81482
81482
  lazyPlayer: (0, import_utils.lazy)(() => Promise.resolve().then(function () { return require(
81483
81483
  /* webpackChunkName: 'reactPlayerDailyMotion' */
81484
- './DailyMotion-BM__Vhyo.js'
81484
+ './DailyMotion-C87ZJeRt.js'
81485
81485
  ); }).then(function (n) { return n.DailyMotion; }))
81486
81486
  },
81487
81487
  {
@@ -81490,7 +81490,7 @@ function requirePlayers () {
81490
81490
  canPlay: import_patterns.canPlay.mixcloud,
81491
81491
  lazyPlayer: (0, import_utils.lazy)(() => Promise.resolve().then(function () { return require(
81492
81492
  /* webpackChunkName: 'reactPlayerMixcloud' */
81493
- './Mixcloud-CpyWM87F.js'
81493
+ './Mixcloud-CAgtZPq5.js'
81494
81494
  ); }).then(function (n) { return n.Mixcloud; }))
81495
81495
  },
81496
81496
  {
@@ -81499,7 +81499,7 @@ function requirePlayers () {
81499
81499
  canPlay: import_patterns.canPlay.vidyard,
81500
81500
  lazyPlayer: (0, import_utils.lazy)(() => Promise.resolve().then(function () { return require(
81501
81501
  /* webpackChunkName: 'reactPlayerVidyard' */
81502
- './Vidyard-uAwNCpw7.js'
81502
+ './Vidyard-B3v7M2i3.js'
81503
81503
  ); }).then(function (n) { return n.Vidyard; }))
81504
81504
  },
81505
81505
  {
@@ -81508,7 +81508,7 @@ function requirePlayers () {
81508
81508
  canPlay: import_patterns.canPlay.kaltura,
81509
81509
  lazyPlayer: (0, import_utils.lazy)(() => Promise.resolve().then(function () { return require(
81510
81510
  /* webpackChunkName: 'reactPlayerKaltura' */
81511
- './Kaltura-Btu7etAO.js'
81511
+ './Kaltura-CKV92aVd.js'
81512
81512
  ); }).then(function (n) { return n.Kaltura; }))
81513
81513
  },
81514
81514
  {
@@ -81520,7 +81520,7 @@ function requirePlayers () {
81520
81520
  },
81521
81521
  lazyPlayer: (0, import_utils.lazy)(() => Promise.resolve().then(function () { return require(
81522
81522
  /* webpackChunkName: 'reactPlayerFilePlayer' */
81523
- './FilePlayer-PgJJpyg0.js'
81523
+ './FilePlayer-BTuFK59w.js'
81524
81524
  ); }).then(function (n) { return n.FilePlayer; }))
81525
81525
  }
81526
81526
  ];
@@ -82341,7 +82341,7 @@ function requireReactPlayer () {
82341
82341
  var import_Player = __toESM(/*@__PURE__*/ requirePlayer());
82342
82342
  const Preview = (0, import_utils.lazy)(() => Promise.resolve().then(function () { return require(
82343
82343
  /* webpackChunkName: 'reactPlayerPreview' */
82344
- './Preview-M0CQw6-7.js'
82344
+ './Preview-DSBoVsm9.js'
82345
82345
  ); }).then(function (n) { return n.Preview; }));
82346
82346
  const IS_BROWSER = typeof window !== "undefined" && window.document && typeof document !== "undefined";
82347
82347
  const IS_GLOBAL = typeof commonjsGlobal !== "undefined" && commonjsGlobal.window && commonjsGlobal.window.document;
@@ -82560,6 +82560,27 @@ var StyledSubtitles = dt.div(templateObject_7$1 || (templateObject_7$1 = __makeT
82560
82560
  var $controls = _a.$controls;
82561
82561
  return $controls ? '60px' : '10px';
82562
82562
  });
82563
+ var HLS_SUBTITLE_STYLES = "\n /* Hide native HLS subtitles completely - comprehensive approach */\n video::cue {\n display: none !important;\n visibility: hidden !important;\n opacity: 0 !important;\n }\n \n video::-webkit-media-text-track-display {\n display: none !important;\n visibility: hidden !important;\n opacity: 0 !important;\n }\n \n video::cue-region {\n display: none !important;\n visibility: hidden !important;\n opacity: 0 !important;\n }\n \n video::-webkit-media-text-track-container {\n display: none !important;\n visibility: hidden !important;\n opacity: 0 !important;\n }\n \n /* Target ReactPlayer specifically */\n .react-player video::cue {\n display: none !important;\n visibility: hidden !important;\n opacity: 0 !important;\n }\n \n .react-player video::-webkit-media-text-track-display {\n display: none !important;\n visibility: hidden !important;\n opacity: 0 !important;\n }\n \n .react-player video::cue-region {\n display: none !important;\n visibility: hidden !important;\n opacity: 0 !important;\n }\n \n .react-player video::-webkit-media-text-track-container {\n display: none !important;\n visibility: hidden !important;\n opacity: 0 !important;\n }\n \n /* Additional selectors for different browsers */\n video::-moz-media-text-track-display {\n display: none !important;\n visibility: hidden !important;\n opacity: 0 !important;\n }\n \n video::-ms-media-text-track-display {\n display: none !important;\n visibility: hidden !important;\n opacity: 0 !important;\n }\n \n /* Hide any subtitle overlays */\n .react-player video + div[style*=\"position: absolute\"] {\n display: none !important;\n }\n \n /* Target HLS video player specifically */\n .hls-video-player::cue {\n display: none !important;\n visibility: hidden !important;\n opacity: 0 !important;\n }\n \n .hls-video-player::-webkit-media-text-track-display {\n display: none !important;\n visibility: hidden !important;\n opacity: 0 !important;\n }\n \n .hls-video-player::-webkit-media-text-track-container {\n display: none !important;\n visibility: hidden !important;\n opacity: 0 !important;\n }\n \n .hls-video-player::cue-region {\n display: none !important;\n visibility: hidden !important;\n opacity: 0 !important;\n }\n";
82564
+ var injectHLSSubtitleStyles = function injectHLSSubtitleStyles() {
82565
+ var addSubtitleStyles = function addSubtitleStyles() {
82566
+ var existingStyle = document.getElementById('hls-subtitle-styles');
82567
+ if (existingStyle) {
82568
+ existingStyle.remove();
82569
+ }
82570
+ var style = document.createElement('style');
82571
+ style.id = 'hls-subtitle-styles';
82572
+ style.textContent = HLS_SUBTITLE_STYLES;
82573
+ document.head.appendChild(style);
82574
+ };
82575
+ addSubtitleStyles();
82576
+ // Return cleanup function
82577
+ return function () {
82578
+ var existingStyle = document.getElementById('hls-subtitle-styles');
82579
+ if (existingStyle) {
82580
+ existingStyle.remove();
82581
+ }
82582
+ };
82583
+ };
82563
82584
  var templateObject_1$9, templateObject_2$7, templateObject_3$4, templateObject_4$2, templateObject_5$2, templateObject_6$2, templateObject_7$1;
82564
82585
 
82565
82586
  var StyledControls = dt.div(templateObject_1$8 || (templateObject_1$8 = __makeTemplateObject(["\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 16px;\n width: 100%;\n border-radius: 0px 0px 8px 8px;\n background: #565a62;\n padding: 12px 16px;\n position: relative;\n\n svg {\n cursor: pointer;\n\n @media screen and (max-width: 1500px) {\n width: 20px;\n height: 20px;\n }\n\n @media screen and (max-width: 1000px) {\n width: 16px;\n height: 16px;\n }\n }\n\n & > p {\n color: var(--neutral-colors-light);\n font-family: 'Poppins', sans-serif;\n ", "\n }\n"], ["\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 16px;\n width: 100%;\n border-radius: 0px 0px 8px 8px;\n background: #565a62;\n padding: 12px 16px;\n position: relative;\n\n svg {\n cursor: pointer;\n\n @media screen and (max-width: 1500px) {\n width: 20px;\n height: 20px;\n }\n\n @media screen and (max-width: 1000px) {\n width: 16px;\n height: 16px;\n }\n }\n\n & > p {\n color: var(--neutral-colors-light);\n font-family: 'Poppins', sans-serif;\n ", "\n }\n"])), {
@@ -88710,13 +88731,18 @@ function usePlayerControls(_a) {
88710
88731
  var duration = videoPlayerRef.current ? videoPlayerRef.current.getDuration() : 0;
88711
88732
  var formatCurrentTime = FormatSecondsToTimeString(currentTime);
88712
88733
  var formatDuration = FormatSecondsToTimeString(duration);
88734
+ // Using previous method for old videos(we used to parse subtitles via link)
88713
88735
  React.useEffect(function () {
88714
- fetch(subtitleUrl).then(function (response) {
88715
- return response.text();
88716
- }).then(function (content) {
88717
- var parsedSubtitles = parseVTT(content);
88718
- setSubtitles(parsedSubtitles);
88719
- });
88736
+ if (subtitleUrl) {
88737
+ fetch(subtitleUrl).then(function (response) {
88738
+ return response.text();
88739
+ }).then(function (content) {
88740
+ var parsedSubtitles = parseVTT(content);
88741
+ setSubtitles(parsedSubtitles);
88742
+ })["catch"](function (error) {
88743
+ console.error('Error fetching external subtitles:', error);
88744
+ });
88745
+ }
88720
88746
  }, [subtitleUrl]);
88721
88747
  React.useEffect(function () {
88722
88748
  var handleFullscreenChange = function handleFullscreenChange() {
@@ -88747,8 +88773,9 @@ function usePlayerControls(_a) {
88747
88773
  }, [videoPlayerRef]);
88748
88774
  var progressHandler = React.useCallback(function (state) {
88749
88775
  return __awaiter(_this, void 0, void 0, function () {
88750
- var currentSubtitleEntry, i, sub, i, sub, currentTime_1, now;
88751
- return __generator(this, function (_a) {
88776
+ var videoElement, hasHLSSubtitles, currentSubtitleEntry, i, sub, i, sub, currentTime_1, now;
88777
+ var _a, _b;
88778
+ return __generator(this, function (_c) {
88752
88779
  if (count > 2) {
88753
88780
  if (controlRef.current) {
88754
88781
  controlRef.current.style.visibility = 'hidden';
@@ -88757,44 +88784,47 @@ function usePlayerControls(_a) {
88757
88784
  } else if (controlRef.current && controlRef.current.style.visibility === 'visible' && isControlsActive) {
88758
88785
  count += 1;
88759
88786
  }
88760
- if (lastSubtitleIndexRef.current !== null) {
88761
- if (state.playedSeconds > lastPlaybackTimeRef.current) {
88762
- // Searching forward
88763
- for (i = lastSubtitleIndexRef.current; i < subtitles.length; i++) {
88764
- sub = subtitles[i];
88765
- if (state.playedSeconds >= sub.start && state.playedSeconds <= sub.end) {
88766
- currentSubtitleEntry = sub;
88767
- lastSubtitleIndexRef.current = i;
88768
- break;
88787
+ videoElement = (_a = videoPlayerRef.current) === null || _a === void 0 ? void 0 : _a.getInternalPlayer();
88788
+ hasHLSSubtitles = ((_b = videoElement === null || videoElement === void 0 ? void 0 : videoElement.textTracks) === null || _b === void 0 ? void 0 : _b.length) > 0;
88789
+ if (subtitles.length > 0 && !hasHLSSubtitles && isSubtitlesChecked) {
88790
+ currentSubtitleEntry = void 0;
88791
+ if (lastSubtitleIndexRef.current !== null) {
88792
+ if (state.playedSeconds > lastPlaybackTimeRef.current) {
88793
+ for (i = lastSubtitleIndexRef.current; i < subtitles.length; i++) {
88794
+ sub = subtitles[i];
88795
+ if (state.playedSeconds >= sub.start && state.playedSeconds <= sub.end) {
88796
+ currentSubtitleEntry = sub;
88797
+ lastSubtitleIndexRef.current = i;
88798
+ break;
88799
+ }
88769
88800
  }
88770
- }
88771
- } else {
88772
- // Searching backward
88773
- for (i = lastSubtitleIndexRef.current; i >= 0; i--) {
88774
- sub = subtitles[i];
88775
- if (state.playedSeconds >= sub.start && state.playedSeconds <= sub.end) {
88776
- currentSubtitleEntry = sub;
88777
- lastSubtitleIndexRef.current = i;
88778
- break;
88801
+ } else {
88802
+ for (i = lastSubtitleIndexRef.current; i >= 0; i--) {
88803
+ sub = subtitles[i];
88804
+ if (state.playedSeconds >= sub.start && state.playedSeconds <= sub.end) {
88805
+ currentSubtitleEntry = sub;
88806
+ lastSubtitleIndexRef.current = i;
88807
+ break;
88808
+ }
88779
88809
  }
88780
88810
  }
88781
88811
  }
88782
- }
88783
- if (!currentSubtitleEntry) {
88784
- currentSubtitleEntry = subtitles.find(function (sub) {
88785
- return state.playedSeconds >= sub.start && state.playedSeconds <= sub.end;
88786
- });
88812
+ if (!currentSubtitleEntry) {
88813
+ currentSubtitleEntry = subtitles.find(function (sub) {
88814
+ return state.playedSeconds >= sub.start && state.playedSeconds <= sub.end;
88815
+ });
88816
+ if (currentSubtitleEntry) {
88817
+ lastSubtitleIndexRef.current = subtitles.indexOf(currentSubtitleEntry);
88818
+ }
88819
+ }
88820
+ lastPlaybackTimeRef.current = state.playedSeconds;
88787
88821
  if (currentSubtitleEntry) {
88788
- lastSubtitleIndexRef.current = subtitles.indexOf(currentSubtitleEntry);
88822
+ setCurrentSubtitle(currentSubtitleEntry.text);
88823
+ } else {
88824
+ setCurrentSubtitle(''); // Clear subtitle if none should be displayed
88825
+ lastSubtitleIndexRef.current = null;
88789
88826
  }
88790
88827
  }
88791
- lastPlaybackTimeRef.current = state.playedSeconds;
88792
- if (currentSubtitleEntry) {
88793
- setCurrentSubtitle(currentSubtitleEntry.text);
88794
- } else {
88795
- setCurrentSubtitle(''); // Clear subtitle if none should be displayed
88796
- lastSubtitleIndexRef.current = null;
88797
- }
88798
88828
  if (!seeking) {
88799
88829
  setVideoState(function (prev) {
88800
88830
  return __assign(__assign({}, prev), state);
@@ -88810,7 +88840,7 @@ function usePlayerControls(_a) {
88810
88840
  return [2 /*return*/];
88811
88841
  });
88812
88842
  });
88813
- }, [seeking, handleTrackProgress, isControlsActive, subtitles]);
88843
+ }, [seeking, handleTrackProgress, isControlsActive, subtitles, isSubtitlesChecked]);
88814
88844
  var seekHandler = function seekHandler(e) {
88815
88845
  var v = parseFloat(e.target.value) / 100;
88816
88846
  setVideoState(function (prev) {
@@ -88822,7 +88852,7 @@ function usePlayerControls(_a) {
88822
88852
  videoPlayerRef.current.seekTo(v);
88823
88853
  }
88824
88854
  };
88825
- var seekMouseUpHandler = function seekMouseUpHandler(e) {
88855
+ var seekMouseUpHandler = function seekMouseUpHandler() {
88826
88856
  setVideoState(function (prev) {
88827
88857
  return __assign(__assign({}, prev), {
88828
88858
  seeking: false
@@ -88861,7 +88891,7 @@ function usePlayerControls(_a) {
88861
88891
  });
88862
88892
  }
88863
88893
  };
88864
- var onSeekMouseDownHandler = function onSeekMouseDownHandler(e) {
88894
+ var onSeekMouseDownHandler = function onSeekMouseDownHandler() {
88865
88895
  setVideoState(function (prev) {
88866
88896
  return __assign(__assign({}, prev), {
88867
88897
  seeking: true
@@ -89001,14 +89031,89 @@ function usePlayerControls(_a) {
89001
89031
  isFullscreen: isFullscreen,
89002
89032
  isControlsActive: isControlsActive,
89003
89033
  currentSubtitle: currentSubtitle,
89034
+ setCurrentSubtitle: setCurrentSubtitle,
89004
89035
  playing: isPlaying
89005
89036
  };
89006
89037
  }
89007
89038
 
89039
+ var useHLSSubtitles = function useHLSSubtitles(_a) {
89040
+ var videoPlayerRef = _a.videoPlayerRef,
89041
+ isSubtitlesChecked = _a.isSubtitlesChecked,
89042
+ setCurrentSubtitle = _a.setCurrentSubtitle;
89043
+ var hlsSubtitleTrackRef = React.useRef(null);
89044
+ var extractHLSSubtitleText = React.useCallback(function () {
89045
+ var _a;
89046
+ var videoElement = (_a = videoPlayerRef.current) === null || _a === void 0 ? void 0 : _a.getInternalPlayer();
89047
+ if (!videoElement || !videoElement.textTracks) return;
89048
+ var _loop_1 = function _loop_1(i) {
89049
+ var track = videoElement.textTracks[i];
89050
+ if (track.kind === 'subtitles' || track.kind === 'captions') {
89051
+ hlsSubtitleTrackRef.current = track;
89052
+ var handleCueChange = function handleCueChange() {
89053
+ if (isSubtitlesChecked && track.activeCues && track.activeCues.length > 0) {
89054
+ var currentCue = track.activeCues[0];
89055
+ if (currentCue && currentCue.text) {
89056
+ setCurrentSubtitle(currentCue.text);
89057
+ }
89058
+ } else if (isSubtitlesChecked) {
89059
+ setCurrentSubtitle('');
89060
+ }
89061
+ };
89062
+ track.removeEventListener('cuechange', handleCueChange);
89063
+ track.addEventListener('cuechange', handleCueChange);
89064
+ track.mode = isSubtitlesChecked ? 'showing' : 'hidden';
89065
+ return "break";
89066
+ }
89067
+ };
89068
+ for (var i = 0; i < videoElement.textTracks.length; i++) {
89069
+ var state_1 = _loop_1(i);
89070
+ if (state_1 === "break") break;
89071
+ }
89072
+ }, [isSubtitlesChecked, setCurrentSubtitle, videoPlayerRef]);
89073
+ var setupHLSSubtitleTracking = React.useCallback(function () {
89074
+ var _a;
89075
+ var videoElement = (_a = videoPlayerRef.current) === null || _a === void 0 ? void 0 : _a.getInternalPlayer();
89076
+ if (!videoElement) return;
89077
+ videoElement.classList.add('hls-video-player');
89078
+ var _checkTextTracks = function checkTextTracks(attempt) {
89079
+ if (attempt === void 0) {
89080
+ attempt = 0;
89081
+ }
89082
+ var textTracks = videoElement.textTracks;
89083
+ if (textTracks && textTracks.length > 0) {
89084
+ extractHLSSubtitleText();
89085
+ } else if (attempt < 5) {
89086
+ setTimeout(function () {
89087
+ return _checkTextTracks(attempt + 1);
89088
+ }, 300 * (attempt + 1));
89089
+ }
89090
+ };
89091
+ _checkTextTracks();
89092
+ videoElement.addEventListener('loadedmetadata', function () {
89093
+ _checkTextTracks();
89094
+ });
89095
+ }, [extractHLSSubtitleText, videoPlayerRef]);
89096
+ React.useEffect(function () {
89097
+ extractHLSSubtitleText();
89098
+ }, [isSubtitlesChecked, extractHLSSubtitleText]);
89099
+ React.useEffect(function () {
89100
+ var _a;
89101
+ var videoElement = (_a = videoPlayerRef.current) === null || _a === void 0 ? void 0 : _a.getInternalPlayer();
89102
+ if (videoElement && videoElement.textTracks && videoElement.textTracks.length > 0) {
89103
+ extractHLSSubtitleText();
89104
+ }
89105
+ }, [videoPlayerRef.current, extractHLSSubtitleText]);
89106
+ return {
89107
+ extractHLSSubtitleText: extractHLSSubtitleText,
89108
+ setupHLSSubtitleTracking: setupHLSSubtitleTracking
89109
+ };
89110
+ };
89111
+
89008
89112
  var VideoPlayer = function VideoPlayer(_a) {
89113
+ var _b, _c, _d;
89009
89114
  var customStyles = _a.customStyles,
89010
- _b = _a.startTime,
89011
- startTime = _b === void 0 ? 0 : _b,
89115
+ _e = _a.startTime,
89116
+ startTime = _e === void 0 ? 0 : _e,
89012
89117
  loading = _a.loading,
89013
89118
  setLoading = _a.setLoading,
89014
89119
  handleTrackProgress = _a.handleTrackProgress,
@@ -89020,20 +89125,21 @@ var VideoPlayer = function VideoPlayer(_a) {
89020
89125
  isPreviousVideo = _a.isPreviousVideo,
89021
89126
  isPlaying = _a.isPlaying,
89022
89127
  setIsPlaying = _a.setIsPlaying,
89023
- _c = _a.shouldPlayerBeFocusedOnSpaceClick,
89024
- shouldPlayerBeFocusedOnSpaceClick = _c === void 0 ? false : _c,
89128
+ _f = _a.shouldPlayerBeFocusedOnSpaceClick,
89129
+ shouldPlayerBeFocusedOnSpaceClick = _f === void 0 ? false : _f,
89025
89130
  showFavorite = _a.showFavorite,
89026
- _d = _a.isFavorite,
89027
- isFavorite = _d === void 0 ? false : _d,
89028
- _e = _a.toggleFavorite,
89029
- toggleFavorite = _e === void 0 ? function () {
89131
+ _g = _a.isFavorite,
89132
+ isFavorite = _g === void 0 ? false : _g,
89133
+ _h = _a.toggleFavorite,
89134
+ toggleFavorite = _h === void 0 ? function () {
89030
89135
  return __awaiter(void 0, void 0, void 0, function () {
89031
89136
  return __generator(this, function (_a) {
89032
89137
  return [2 /*return*/];
89033
89138
  });
89034
89139
  });
89035
- } : _e;
89036
- var _f = usePlayerControls({
89140
+ } : _h;
89141
+ var videoRef = React.useRef(null);
89142
+ var _j = usePlayerControls({
89037
89143
  startTime: startTime,
89038
89144
  setLoading: setLoading,
89039
89145
  handleTrackProgress: handleTrackProgress,
@@ -89043,38 +89149,55 @@ var VideoPlayer = function VideoPlayer(_a) {
89043
89149
  setIsPlaying: setIsPlaying,
89044
89150
  shouldPlayerBeFocusedOnSpaceClick: shouldPlayerBeFocusedOnSpaceClick
89045
89151
  }),
89046
- mouseMoveHandler = _f.mouseMoveHandler,
89047
- playerContainerRef = _f.playerContainerRef,
89048
- playPauseHandler = _f.playPauseHandler,
89049
- handleFullScreen = _f.handleFullScreen,
89050
- videoPlayerRef = _f.videoPlayerRef,
89051
- playing = _f.playing,
89052
- volume = _f.volume,
89053
- muted = _f.muted,
89054
- progressHandler = _f.progressHandler,
89055
- bufferStartHandler = _f.bufferStartHandler,
89056
- bufferEndHandler = _f.bufferEndHandler,
89057
- onPlayerStart = _f.onPlayerStart,
89058
- setVideoState = _f.setVideoState,
89059
- playbackRate = _f.playbackRate,
89060
- controlRef = _f.controlRef,
89061
- rewindHandler = _f.rewindHandler,
89062
- handleFastForward = _f.handleFastForward,
89063
- formatCurrentTime = _f.formatCurrentTime,
89064
- played = _f.played,
89065
- onSeekMouseDownHandler = _f.onSeekMouseDownHandler,
89066
- seekHandler = _f.seekHandler,
89067
- seekMouseUpHandler = _f.seekMouseUpHandler,
89068
- muteHandler = _f.muteHandler,
89069
- volumeChangeHandler = _f.volumeChangeHandler,
89070
- formatDuration = _f.formatDuration,
89071
- isSubtitlesChecked = _f.isSubtitlesChecked,
89072
- toggleSubtitlesCheck = _f.toggleSubtitlesCheck,
89073
- isFullscreen = _f.isFullscreen,
89074
- isControlsActive = _f.isControlsActive,
89075
- currentSubtitle = _f.currentSubtitle;
89076
- // Make sure we have a valid URL to avoid ReactPlayer errors
89077
- var validUrl = url || '';
89152
+ mouseMoveHandler = _j.mouseMoveHandler,
89153
+ playerContainerRef = _j.playerContainerRef,
89154
+ playPauseHandler = _j.playPauseHandler,
89155
+ handleFullScreen = _j.handleFullScreen,
89156
+ videoPlayerRef = _j.videoPlayerRef,
89157
+ playing = _j.playing,
89158
+ volume = _j.volume,
89159
+ muted = _j.muted,
89160
+ progressHandler = _j.progressHandler,
89161
+ bufferStartHandler = _j.bufferStartHandler,
89162
+ bufferEndHandler = _j.bufferEndHandler,
89163
+ onPlayerStart = _j.onPlayerStart,
89164
+ setVideoState = _j.setVideoState,
89165
+ playbackRate = _j.playbackRate,
89166
+ controlRef = _j.controlRef,
89167
+ rewindHandler = _j.rewindHandler,
89168
+ handleFastForward = _j.handleFastForward,
89169
+ formatCurrentTime = _j.formatCurrentTime,
89170
+ played = _j.played,
89171
+ onSeekMouseDownHandler = _j.onSeekMouseDownHandler,
89172
+ seekHandler = _j.seekHandler,
89173
+ seekMouseUpHandler = _j.seekMouseUpHandler,
89174
+ muteHandler = _j.muteHandler,
89175
+ volumeChangeHandler = _j.volumeChangeHandler,
89176
+ formatDuration = _j.formatDuration,
89177
+ isSubtitlesChecked = _j.isSubtitlesChecked,
89178
+ toggleSubtitlesCheck = _j.toggleSubtitlesCheck,
89179
+ isFullscreen = _j.isFullscreen,
89180
+ isControlsActive = _j.isControlsActive,
89181
+ currentSubtitle = _j.currentSubtitle,
89182
+ setCurrentSubtitle = _j.setCurrentSubtitle;
89183
+ var setupHLSSubtitleTracking = useHLSSubtitles({
89184
+ videoPlayerRef: videoPlayerRef,
89185
+ isSubtitlesChecked: isSubtitlesChecked,
89186
+ setCurrentSubtitle: setCurrentSubtitle
89187
+ }).setupHLSSubtitleTracking;
89188
+ React.useEffect(function () {
89189
+ var cleanup = injectHLSSubtitleStyles();
89190
+ return cleanup;
89191
+ }, []);
89192
+ var handlePlayerReady = function handlePlayerReady() {
89193
+ var _a;
89194
+ onPlayerStart();
89195
+ setupHLSSubtitleTracking();
89196
+ var videoElement = (_a = videoPlayerRef.current) === null || _a === void 0 ? void 0 : _a.getInternalPlayer();
89197
+ if (videoElement && videoElement instanceof HTMLVideoElement) {
89198
+ videoRef.current = videoElement;
89199
+ }
89200
+ };
89078
89201
  return jsxRuntimeExports.jsxs(StyledWrapper, {
89079
89202
  tabIndex: 0,
89080
89203
  onMouseMove: mouseMoveHandler,
@@ -89083,12 +89206,11 @@ var VideoPlayer = function VideoPlayer(_a) {
89083
89206
  onClick: function onClick(e) {
89084
89207
  return e.stopPropagation();
89085
89208
  },
89086
- "data-testid": 'video-player-wrapper',
89087
- children: [jsxRuntimeExports.jsx(StyledVideoPlayerWrapper, {
89209
+ children: [jsxRuntimeExports.jsxs(StyledVideoPlayerWrapper, {
89088
89210
  onClick: playPauseHandler,
89089
89211
  onDoubleClick: handleFullScreen,
89090
- children: jsxRuntimeExports.jsx(ReactPlayer, {
89091
- url: validUrl,
89212
+ children: [jsxRuntimeExports.jsx(ReactPlayer, {
89213
+ url: url,
89092
89214
  ref: videoPlayerRef,
89093
89215
  className: 'react-player',
89094
89216
  width: '100%',
@@ -89099,7 +89221,7 @@ var VideoPlayer = function VideoPlayer(_a) {
89099
89221
  onProgress: progressHandler,
89100
89222
  onBuffer: bufferStartHandler,
89101
89223
  onBufferEnd: bufferEndHandler,
89102
- onReady: onPlayerStart,
89224
+ onReady: handlePlayerReady,
89103
89225
  onPlay: function onPlay() {
89104
89226
  return setIsPlaying(true);
89105
89227
  },
@@ -89127,13 +89249,16 @@ var VideoPlayer = function VideoPlayer(_a) {
89127
89249
  file: {
89128
89250
  hlsOptions: {
89129
89251
  autoStartLoad: true,
89130
- renderTextTracksNatively: false
89252
+ renderTextTracksNatively: true
89131
89253
  }
89132
89254
  }
89133
89255
  }
89134
- }, validUrl)
89135
- }), loading && jsxRuntimeExports.jsx(StyledPlayerLoader, {
89136
- children: jsxRuntimeExports.jsx(StyledLoader, {})
89256
+ }, url), loading && jsxRuntimeExports.jsx(StyledPlayerLoader, {
89257
+ children: jsxRuntimeExports.jsx(StyledLoader, {})
89258
+ }), isSubtitlesChecked && currentSubtitle && jsxRuntimeExports.jsx(StyledSubtitles, {
89259
+ "$controls": isControlsActive,
89260
+ children: currentSubtitle
89261
+ })]
89137
89262
  }), jsxRuntimeExports.jsx(StyledControlsContainer, {
89138
89263
  ref: controlRef,
89139
89264
  children: jsxRuntimeExports.jsx(Controls, {
@@ -89159,16 +89284,13 @@ var VideoPlayer = function VideoPlayer(_a) {
89159
89284
  isFavorite: isFavorite,
89160
89285
  toggleIsFavorite: toggleFavorite,
89161
89286
  isFullscreen: isFullscreen,
89162
- subtitle: !!subtitleUrl,
89287
+ subtitle: !!subtitleUrl || ((_d = (_c = (_b = videoPlayerRef.current) === null || _b === void 0 ? void 0 : _b.getInternalPlayer()) === null || _c === void 0 ? void 0 : _c.textTracks) === null || _d === void 0 ? void 0 : _d.length) > 0,
89163
89288
  handleSkipBackward: handlePreviousVideo,
89164
89289
  handleSkipForward: handleNextVideo,
89165
89290
  isNextVideo: isNextVideo,
89166
89291
  isPreviousVideo: isPreviousVideo,
89167
89292
  showFavorite: showFavorite
89168
89293
  })
89169
- }), isSubtitlesChecked && currentSubtitle && jsxRuntimeExports.jsx(StyledSubtitles, {
89170
- "$controls": isControlsActive,
89171
- children: currentSubtitle
89172
89294
  })]
89173
89295
  });
89174
89296
  };