suada-components 1.1.44 → 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 (57) hide show
  1. package/dist/components/{DailyMotion-dYOsLhXX.js → DailyMotion-C87ZJeRt.js} +1 -1
  2. package/dist/components/{DailyMotion-BBMHnZsc.esm.js → DailyMotion-DbDeP0dq.esm.js} +1 -1
  3. package/dist/components/DropDown/DropDown.interface.d.ts +4 -0
  4. package/dist/components/DropDown/DropDown.js +1 -1
  5. package/dist/components/DropDown/DropDown.js.map +1 -1
  6. package/dist/components/{Facebook-C2lp6fKy.esm.js → Facebook-B1XpGyBt.esm.js} +1 -1
  7. package/dist/components/{Facebook-D55xg0YF.js → Facebook-DigX8u_u.js} +1 -1
  8. package/dist/components/{FilePlayer-CSNfeLp-.esm.js → FilePlayer-BSL_U8r8.esm.js} +1 -1
  9. package/dist/components/{FilePlayer-VfIivLWB.js → FilePlayer-BTuFK59w.js} +1 -1
  10. package/dist/components/{Kaltura-BZ5pUEPz.js → Kaltura-CKV92aVd.js} +1 -1
  11. package/dist/components/{Kaltura-BVMxludT.esm.js → Kaltura-DAkp5nY0.esm.js} +1 -1
  12. package/dist/components/{Mixcloud-BDzCezGa.js → Mixcloud-CAgtZPq5.js} +1 -1
  13. package/dist/components/{Mixcloud-9K2fpYoj.esm.js → Mixcloud-CtWhrXiZ.esm.js} +1 -1
  14. package/dist/components/{Mux-BDK08Cp7.js → Mux-BRYGMFV_.js} +1 -1
  15. package/dist/components/{Mux-C3n27KkT.esm.js → Mux-C0xOzOps.esm.js} +1 -1
  16. package/dist/components/{Preview-BF89gaQn.esm.js → Preview-Crcz-S0c.esm.js} +1 -1
  17. package/dist/components/{Preview-C-KatBo7.js → Preview-DSBoVsm9.js} +1 -1
  18. package/dist/components/{SoundCloud-E9VSRo8s.js → SoundCloud-1V8ahw7A.js} +1 -1
  19. package/dist/components/{SoundCloud-BFfitMcN.esm.js → SoundCloud-BC8iiobM.esm.js} +1 -1
  20. package/dist/components/{Streamable-BObKpq3j.js → Streamable-BhhnBO_c.js} +1 -1
  21. package/dist/components/{Streamable-D1pOzVPi.esm.js → Streamable-CGxErYVF.esm.js} +1 -1
  22. package/dist/components/{Twitch-CAHqJZdW.esm.js → Twitch-8quL43Fw.esm.js} +1 -1
  23. package/dist/components/{Twitch-CAKL_Jqs.js → Twitch-E9YQS4X8.js} +1 -1
  24. package/dist/components/VideoPlayer/Player.d.ts +1 -0
  25. package/dist/components/VideoPlayer/Player.interface.d.ts +2 -1
  26. package/dist/components/VideoPlayer/Player.js +44 -23
  27. package/dist/components/VideoPlayer/Player.js.map +1 -1
  28. package/dist/components/VideoPlayer/Player.styles.d.ts +2 -0
  29. package/dist/components/VideoPlayer/Player.styles.js +21 -0
  30. package/dist/components/VideoPlayer/Player.styles.js.map +1 -1
  31. package/dist/components/VideoPlayer/useHlsSubtitles.d.ts +12 -0
  32. package/dist/components/VideoPlayer/useHlsSubtitles.js +73 -0
  33. package/dist/components/VideoPlayer/useHlsSubtitles.js.map +1 -0
  34. package/dist/components/VideoPlayer/usePlayerControls.js +52 -41
  35. package/dist/components/VideoPlayer/usePlayerControls.js.map +1 -1
  36. package/dist/components/{Vidyard-CIHNjfIv.js → Vidyard-B3v7M2i3.js} +1 -1
  37. package/dist/components/{Vidyard-BrA_V8mx.esm.js → Vidyard-DsG0WHnh.esm.js} +1 -1
  38. package/dist/components/{Vimeo-LwXzzIA2.esm.js → Vimeo-CXKbdxkV.esm.js} +1 -1
  39. package/dist/components/{Vimeo-DVX8WzFK.js → Vimeo-ddQ8CMRR.js} +1 -1
  40. package/dist/components/{Wistia-CxE_SYQ-.js → Wistia-B93lpDSs.js} +1 -1
  41. package/dist/components/{Wistia-DoFWA9-t.esm.js → Wistia-CJDzE0TP.esm.js} +1 -1
  42. package/dist/components/{YouTube-BW23iOlA.js → YouTube-631v_AIH.js} +1 -1
  43. package/dist/components/{YouTube-CiWt6Bsz.esm.js → YouTube-CdjuPIIO.esm.js} +1 -1
  44. package/dist/components/components/DropDown/DropDown.interface.d.ts +4 -0
  45. package/dist/components/components/VideoPlayer/Player.d.ts +1 -0
  46. package/dist/components/components/VideoPlayer/Player.interface.d.ts +2 -1
  47. package/dist/components/components/VideoPlayer/Player.styles.d.ts +2 -0
  48. package/dist/components/components/VideoPlayer/useHlsSubtitles.d.ts +12 -0
  49. package/dist/components/{index-Cs_px_sD.js → index-Ciqeqnts.js} +235 -112
  50. package/dist/components/{index-CMNE0hhl.esm.js → index-CyUx723z.esm.js} +235 -112
  51. package/dist/components/index.esm.js +1 -1
  52. package/dist/icons/components/DropDown/DropDown.interface.d.ts +4 -0
  53. package/dist/icons/components/VideoPlayer/Player.d.ts +1 -0
  54. package/dist/icons/components/VideoPlayer/Player.interface.d.ts +2 -1
  55. package/dist/icons/components/VideoPlayer/Player.styles.d.ts +2 -0
  56. package/dist/icons/components/VideoPlayer/useHlsSubtitles.d.ts +12 -0
  57. package/package.json +11 -5
@@ -42756,7 +42756,8 @@ var DropDown = function DropDown(props) {
42756
42756
  isLoading: props.isLoading,
42757
42757
  components: {
42758
42758
  DropdownIndicator: DropdownIndicator
42759
- }
42759
+ },
42760
+ noOptionsMessage: props.noOptionsMessage
42760
42761
  }), props.touched && props.error && props.errorMessage && jsxRuntimeExports.jsx(ErrorMessage, {
42761
42762
  children: props.errorMessage
42762
42763
  })]
@@ -81408,7 +81409,7 @@ function requirePlayers () {
81408
81409
  canPlay: import_patterns.canPlay.youtube,
81409
81410
  lazyPlayer: (0, import_utils.lazy)(() => Promise.resolve().then(function () { return require(
81410
81411
  /* webpackChunkName: 'reactPlayerYouTube' */
81411
- './YouTube-BW23iOlA.js'
81412
+ './YouTube-631v_AIH.js'
81412
81413
  ); }).then(function (n) { return n.YouTube; }))
81413
81414
  },
81414
81415
  {
@@ -81417,7 +81418,7 @@ function requirePlayers () {
81417
81418
  canPlay: import_patterns.canPlay.soundcloud,
81418
81419
  lazyPlayer: (0, import_utils.lazy)(() => Promise.resolve().then(function () { return require(
81419
81420
  /* webpackChunkName: 'reactPlayerSoundCloud' */
81420
- './SoundCloud-E9VSRo8s.js'
81421
+ './SoundCloud-1V8ahw7A.js'
81421
81422
  ); }).then(function (n) { return n.SoundCloud; }))
81422
81423
  },
81423
81424
  {
@@ -81426,7 +81427,7 @@ function requirePlayers () {
81426
81427
  canPlay: import_patterns.canPlay.vimeo,
81427
81428
  lazyPlayer: (0, import_utils.lazy)(() => Promise.resolve().then(function () { return require(
81428
81429
  /* webpackChunkName: 'reactPlayerVimeo' */
81429
- './Vimeo-DVX8WzFK.js'
81430
+ './Vimeo-ddQ8CMRR.js'
81430
81431
  ); }).then(function (n) { return n.Vimeo; }))
81431
81432
  },
81432
81433
  {
@@ -81435,7 +81436,7 @@ function requirePlayers () {
81435
81436
  canPlay: import_patterns.canPlay.mux,
81436
81437
  lazyPlayer: (0, import_utils.lazy)(() => Promise.resolve().then(function () { return require(
81437
81438
  /* webpackChunkName: 'reactPlayerMux' */
81438
- './Mux-BDK08Cp7.js'
81439
+ './Mux-BRYGMFV_.js'
81439
81440
  ); }).then(function (n) { return n.Mux; }))
81440
81441
  },
81441
81442
  {
@@ -81444,7 +81445,7 @@ function requirePlayers () {
81444
81445
  canPlay: import_patterns.canPlay.facebook,
81445
81446
  lazyPlayer: (0, import_utils.lazy)(() => Promise.resolve().then(function () { return require(
81446
81447
  /* webpackChunkName: 'reactPlayerFacebook' */
81447
- './Facebook-D55xg0YF.js'
81448
+ './Facebook-DigX8u_u.js'
81448
81449
  ); }).then(function (n) { return n.Facebook; }))
81449
81450
  },
81450
81451
  {
@@ -81453,7 +81454,7 @@ function requirePlayers () {
81453
81454
  canPlay: import_patterns.canPlay.streamable,
81454
81455
  lazyPlayer: (0, import_utils.lazy)(() => Promise.resolve().then(function () { return require(
81455
81456
  /* webpackChunkName: 'reactPlayerStreamable' */
81456
- './Streamable-BObKpq3j.js'
81457
+ './Streamable-BhhnBO_c.js'
81457
81458
  ); }).then(function (n) { return n.Streamable; }))
81458
81459
  },
81459
81460
  {
@@ -81462,7 +81463,7 @@ function requirePlayers () {
81462
81463
  canPlay: import_patterns.canPlay.wistia,
81463
81464
  lazyPlayer: (0, import_utils.lazy)(() => Promise.resolve().then(function () { return require(
81464
81465
  /* webpackChunkName: 'reactPlayerWistia' */
81465
- './Wistia-CxE_SYQ-.js'
81466
+ './Wistia-B93lpDSs.js'
81466
81467
  ); }).then(function (n) { return n.Wistia; }))
81467
81468
  },
81468
81469
  {
@@ -81471,7 +81472,7 @@ function requirePlayers () {
81471
81472
  canPlay: import_patterns.canPlay.twitch,
81472
81473
  lazyPlayer: (0, import_utils.lazy)(() => Promise.resolve().then(function () { return require(
81473
81474
  /* webpackChunkName: 'reactPlayerTwitch' */
81474
- './Twitch-CAKL_Jqs.js'
81475
+ './Twitch-E9YQS4X8.js'
81475
81476
  ); }).then(function (n) { return n.Twitch; }))
81476
81477
  },
81477
81478
  {
@@ -81480,7 +81481,7 @@ function requirePlayers () {
81480
81481
  canPlay: import_patterns.canPlay.dailymotion,
81481
81482
  lazyPlayer: (0, import_utils.lazy)(() => Promise.resolve().then(function () { return require(
81482
81483
  /* webpackChunkName: 'reactPlayerDailyMotion' */
81483
- './DailyMotion-dYOsLhXX.js'
81484
+ './DailyMotion-C87ZJeRt.js'
81484
81485
  ); }).then(function (n) { return n.DailyMotion; }))
81485
81486
  },
81486
81487
  {
@@ -81489,7 +81490,7 @@ function requirePlayers () {
81489
81490
  canPlay: import_patterns.canPlay.mixcloud,
81490
81491
  lazyPlayer: (0, import_utils.lazy)(() => Promise.resolve().then(function () { return require(
81491
81492
  /* webpackChunkName: 'reactPlayerMixcloud' */
81492
- './Mixcloud-BDzCezGa.js'
81493
+ './Mixcloud-CAgtZPq5.js'
81493
81494
  ); }).then(function (n) { return n.Mixcloud; }))
81494
81495
  },
81495
81496
  {
@@ -81498,7 +81499,7 @@ function requirePlayers () {
81498
81499
  canPlay: import_patterns.canPlay.vidyard,
81499
81500
  lazyPlayer: (0, import_utils.lazy)(() => Promise.resolve().then(function () { return require(
81500
81501
  /* webpackChunkName: 'reactPlayerVidyard' */
81501
- './Vidyard-CIHNjfIv.js'
81502
+ './Vidyard-B3v7M2i3.js'
81502
81503
  ); }).then(function (n) { return n.Vidyard; }))
81503
81504
  },
81504
81505
  {
@@ -81507,7 +81508,7 @@ function requirePlayers () {
81507
81508
  canPlay: import_patterns.canPlay.kaltura,
81508
81509
  lazyPlayer: (0, import_utils.lazy)(() => Promise.resolve().then(function () { return require(
81509
81510
  /* webpackChunkName: 'reactPlayerKaltura' */
81510
- './Kaltura-BZ5pUEPz.js'
81511
+ './Kaltura-CKV92aVd.js'
81511
81512
  ); }).then(function (n) { return n.Kaltura; }))
81512
81513
  },
81513
81514
  {
@@ -81519,7 +81520,7 @@ function requirePlayers () {
81519
81520
  },
81520
81521
  lazyPlayer: (0, import_utils.lazy)(() => Promise.resolve().then(function () { return require(
81521
81522
  /* webpackChunkName: 'reactPlayerFilePlayer' */
81522
- './FilePlayer-VfIivLWB.js'
81523
+ './FilePlayer-BTuFK59w.js'
81523
81524
  ); }).then(function (n) { return n.FilePlayer; }))
81524
81525
  }
81525
81526
  ];
@@ -82340,7 +82341,7 @@ function requireReactPlayer () {
82340
82341
  var import_Player = __toESM(/*@__PURE__*/ requirePlayer());
82341
82342
  const Preview = (0, import_utils.lazy)(() => Promise.resolve().then(function () { return require(
82342
82343
  /* webpackChunkName: 'reactPlayerPreview' */
82343
- './Preview-C-KatBo7.js'
82344
+ './Preview-DSBoVsm9.js'
82344
82345
  ); }).then(function (n) { return n.Preview; }));
82345
82346
  const IS_BROWSER = typeof window !== "undefined" && window.document && typeof document !== "undefined";
82346
82347
  const IS_GLOBAL = typeof commonjsGlobal !== "undefined" && commonjsGlobal.window && commonjsGlobal.window.document;
@@ -82559,6 +82560,27 @@ var StyledSubtitles = dt.div(templateObject_7$1 || (templateObject_7$1 = __makeT
82559
82560
  var $controls = _a.$controls;
82560
82561
  return $controls ? '60px' : '10px';
82561
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
+ };
82562
82584
  var templateObject_1$9, templateObject_2$7, templateObject_3$4, templateObject_4$2, templateObject_5$2, templateObject_6$2, templateObject_7$1;
82563
82585
 
82564
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"])), {
@@ -88709,13 +88731,18 @@ function usePlayerControls(_a) {
88709
88731
  var duration = videoPlayerRef.current ? videoPlayerRef.current.getDuration() : 0;
88710
88732
  var formatCurrentTime = FormatSecondsToTimeString(currentTime);
88711
88733
  var formatDuration = FormatSecondsToTimeString(duration);
88734
+ // Using previous method for old videos(we used to parse subtitles via link)
88712
88735
  React.useEffect(function () {
88713
- fetch(subtitleUrl).then(function (response) {
88714
- return response.text();
88715
- }).then(function (content) {
88716
- var parsedSubtitles = parseVTT(content);
88717
- setSubtitles(parsedSubtitles);
88718
- });
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
+ }
88719
88746
  }, [subtitleUrl]);
88720
88747
  React.useEffect(function () {
88721
88748
  var handleFullscreenChange = function handleFullscreenChange() {
@@ -88746,8 +88773,9 @@ function usePlayerControls(_a) {
88746
88773
  }, [videoPlayerRef]);
88747
88774
  var progressHandler = React.useCallback(function (state) {
88748
88775
  return __awaiter(_this, void 0, void 0, function () {
88749
- var currentSubtitleEntry, i, sub, i, sub, currentTime_1, now;
88750
- 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) {
88751
88779
  if (count > 2) {
88752
88780
  if (controlRef.current) {
88753
88781
  controlRef.current.style.visibility = 'hidden';
@@ -88756,44 +88784,47 @@ function usePlayerControls(_a) {
88756
88784
  } else if (controlRef.current && controlRef.current.style.visibility === 'visible' && isControlsActive) {
88757
88785
  count += 1;
88758
88786
  }
88759
- if (lastSubtitleIndexRef.current !== null) {
88760
- if (state.playedSeconds > lastPlaybackTimeRef.current) {
88761
- // Searching forward
88762
- for (i = lastSubtitleIndexRef.current; i < subtitles.length; i++) {
88763
- sub = subtitles[i];
88764
- if (state.playedSeconds >= sub.start && state.playedSeconds <= sub.end) {
88765
- currentSubtitleEntry = sub;
88766
- lastSubtitleIndexRef.current = i;
88767
- 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
+ }
88768
88800
  }
88769
- }
88770
- } else {
88771
- // Searching backward
88772
- for (i = lastSubtitleIndexRef.current; i >= 0; i--) {
88773
- sub = subtitles[i];
88774
- if (state.playedSeconds >= sub.start && state.playedSeconds <= sub.end) {
88775
- currentSubtitleEntry = sub;
88776
- lastSubtitleIndexRef.current = i;
88777
- 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
+ }
88778
88809
  }
88779
88810
  }
88780
88811
  }
88781
- }
88782
- if (!currentSubtitleEntry) {
88783
- currentSubtitleEntry = subtitles.find(function (sub) {
88784
- return state.playedSeconds >= sub.start && state.playedSeconds <= sub.end;
88785
- });
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;
88786
88821
  if (currentSubtitleEntry) {
88787
- lastSubtitleIndexRef.current = subtitles.indexOf(currentSubtitleEntry);
88822
+ setCurrentSubtitle(currentSubtitleEntry.text);
88823
+ } else {
88824
+ setCurrentSubtitle(''); // Clear subtitle if none should be displayed
88825
+ lastSubtitleIndexRef.current = null;
88788
88826
  }
88789
88827
  }
88790
- lastPlaybackTimeRef.current = state.playedSeconds;
88791
- if (currentSubtitleEntry) {
88792
- setCurrentSubtitle(currentSubtitleEntry.text);
88793
- } else {
88794
- setCurrentSubtitle(''); // Clear subtitle if none should be displayed
88795
- lastSubtitleIndexRef.current = null;
88796
- }
88797
88828
  if (!seeking) {
88798
88829
  setVideoState(function (prev) {
88799
88830
  return __assign(__assign({}, prev), state);
@@ -88809,7 +88840,7 @@ function usePlayerControls(_a) {
88809
88840
  return [2 /*return*/];
88810
88841
  });
88811
88842
  });
88812
- }, [seeking, handleTrackProgress, isControlsActive, subtitles]);
88843
+ }, [seeking, handleTrackProgress, isControlsActive, subtitles, isSubtitlesChecked]);
88813
88844
  var seekHandler = function seekHandler(e) {
88814
88845
  var v = parseFloat(e.target.value) / 100;
88815
88846
  setVideoState(function (prev) {
@@ -88821,7 +88852,7 @@ function usePlayerControls(_a) {
88821
88852
  videoPlayerRef.current.seekTo(v);
88822
88853
  }
88823
88854
  };
88824
- var seekMouseUpHandler = function seekMouseUpHandler(e) {
88855
+ var seekMouseUpHandler = function seekMouseUpHandler() {
88825
88856
  setVideoState(function (prev) {
88826
88857
  return __assign(__assign({}, prev), {
88827
88858
  seeking: false
@@ -88860,7 +88891,7 @@ function usePlayerControls(_a) {
88860
88891
  });
88861
88892
  }
88862
88893
  };
88863
- var onSeekMouseDownHandler = function onSeekMouseDownHandler(e) {
88894
+ var onSeekMouseDownHandler = function onSeekMouseDownHandler() {
88864
88895
  setVideoState(function (prev) {
88865
88896
  return __assign(__assign({}, prev), {
88866
88897
  seeking: true
@@ -89000,14 +89031,89 @@ function usePlayerControls(_a) {
89000
89031
  isFullscreen: isFullscreen,
89001
89032
  isControlsActive: isControlsActive,
89002
89033
  currentSubtitle: currentSubtitle,
89034
+ setCurrentSubtitle: setCurrentSubtitle,
89003
89035
  playing: isPlaying
89004
89036
  };
89005
89037
  }
89006
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
+
89007
89112
  var VideoPlayer = function VideoPlayer(_a) {
89113
+ var _b, _c, _d;
89008
89114
  var customStyles = _a.customStyles,
89009
- _b = _a.startTime,
89010
- startTime = _b === void 0 ? 0 : _b,
89115
+ _e = _a.startTime,
89116
+ startTime = _e === void 0 ? 0 : _e,
89011
89117
  loading = _a.loading,
89012
89118
  setLoading = _a.setLoading,
89013
89119
  handleTrackProgress = _a.handleTrackProgress,
@@ -89019,20 +89125,21 @@ var VideoPlayer = function VideoPlayer(_a) {
89019
89125
  isPreviousVideo = _a.isPreviousVideo,
89020
89126
  isPlaying = _a.isPlaying,
89021
89127
  setIsPlaying = _a.setIsPlaying,
89022
- _c = _a.shouldPlayerBeFocusedOnSpaceClick,
89023
- shouldPlayerBeFocusedOnSpaceClick = _c === void 0 ? false : _c,
89128
+ _f = _a.shouldPlayerBeFocusedOnSpaceClick,
89129
+ shouldPlayerBeFocusedOnSpaceClick = _f === void 0 ? false : _f,
89024
89130
  showFavorite = _a.showFavorite,
89025
- _d = _a.isFavorite,
89026
- isFavorite = _d === void 0 ? false : _d,
89027
- _e = _a.toggleFavorite,
89028
- 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 () {
89029
89135
  return __awaiter(void 0, void 0, void 0, function () {
89030
89136
  return __generator(this, function (_a) {
89031
89137
  return [2 /*return*/];
89032
89138
  });
89033
89139
  });
89034
- } : _e;
89035
- var _f = usePlayerControls({
89140
+ } : _h;
89141
+ var videoRef = React.useRef(null);
89142
+ var _j = usePlayerControls({
89036
89143
  startTime: startTime,
89037
89144
  setLoading: setLoading,
89038
89145
  handleTrackProgress: handleTrackProgress,
@@ -89042,38 +89149,55 @@ var VideoPlayer = function VideoPlayer(_a) {
89042
89149
  setIsPlaying: setIsPlaying,
89043
89150
  shouldPlayerBeFocusedOnSpaceClick: shouldPlayerBeFocusedOnSpaceClick
89044
89151
  }),
89045
- mouseMoveHandler = _f.mouseMoveHandler,
89046
- playerContainerRef = _f.playerContainerRef,
89047
- playPauseHandler = _f.playPauseHandler,
89048
- handleFullScreen = _f.handleFullScreen,
89049
- videoPlayerRef = _f.videoPlayerRef,
89050
- playing = _f.playing,
89051
- volume = _f.volume,
89052
- muted = _f.muted,
89053
- progressHandler = _f.progressHandler,
89054
- bufferStartHandler = _f.bufferStartHandler,
89055
- bufferEndHandler = _f.bufferEndHandler,
89056
- onPlayerStart = _f.onPlayerStart,
89057
- setVideoState = _f.setVideoState,
89058
- playbackRate = _f.playbackRate,
89059
- controlRef = _f.controlRef,
89060
- rewindHandler = _f.rewindHandler,
89061
- handleFastForward = _f.handleFastForward,
89062
- formatCurrentTime = _f.formatCurrentTime,
89063
- played = _f.played,
89064
- onSeekMouseDownHandler = _f.onSeekMouseDownHandler,
89065
- seekHandler = _f.seekHandler,
89066
- seekMouseUpHandler = _f.seekMouseUpHandler,
89067
- muteHandler = _f.muteHandler,
89068
- volumeChangeHandler = _f.volumeChangeHandler,
89069
- formatDuration = _f.formatDuration,
89070
- isSubtitlesChecked = _f.isSubtitlesChecked,
89071
- toggleSubtitlesCheck = _f.toggleSubtitlesCheck,
89072
- isFullscreen = _f.isFullscreen,
89073
- isControlsActive = _f.isControlsActive,
89074
- currentSubtitle = _f.currentSubtitle;
89075
- // Make sure we have a valid URL to avoid ReactPlayer errors
89076
- 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
+ };
89077
89201
  return jsxRuntimeExports.jsxs(StyledWrapper, {
89078
89202
  tabIndex: 0,
89079
89203
  onMouseMove: mouseMoveHandler,
@@ -89082,12 +89206,11 @@ var VideoPlayer = function VideoPlayer(_a) {
89082
89206
  onClick: function onClick(e) {
89083
89207
  return e.stopPropagation();
89084
89208
  },
89085
- "data-testid": 'video-player-wrapper',
89086
- children: [jsxRuntimeExports.jsx(StyledVideoPlayerWrapper, {
89209
+ children: [jsxRuntimeExports.jsxs(StyledVideoPlayerWrapper, {
89087
89210
  onClick: playPauseHandler,
89088
89211
  onDoubleClick: handleFullScreen,
89089
- children: jsxRuntimeExports.jsx(ReactPlayer, {
89090
- url: validUrl,
89212
+ children: [jsxRuntimeExports.jsx(ReactPlayer, {
89213
+ url: url,
89091
89214
  ref: videoPlayerRef,
89092
89215
  className: 'react-player',
89093
89216
  width: '100%',
@@ -89098,7 +89221,7 @@ var VideoPlayer = function VideoPlayer(_a) {
89098
89221
  onProgress: progressHandler,
89099
89222
  onBuffer: bufferStartHandler,
89100
89223
  onBufferEnd: bufferEndHandler,
89101
- onReady: onPlayerStart,
89224
+ onReady: handlePlayerReady,
89102
89225
  onPlay: function onPlay() {
89103
89226
  return setIsPlaying(true);
89104
89227
  },
@@ -89126,13 +89249,16 @@ var VideoPlayer = function VideoPlayer(_a) {
89126
89249
  file: {
89127
89250
  hlsOptions: {
89128
89251
  autoStartLoad: true,
89129
- renderTextTracksNatively: false
89252
+ renderTextTracksNatively: true
89130
89253
  }
89131
89254
  }
89132
89255
  }
89133
- }, validUrl)
89134
- }), loading && jsxRuntimeExports.jsx(StyledPlayerLoader, {
89135
- 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
+ })]
89136
89262
  }), jsxRuntimeExports.jsx(StyledControlsContainer, {
89137
89263
  ref: controlRef,
89138
89264
  children: jsxRuntimeExports.jsx(Controls, {
@@ -89158,16 +89284,13 @@ var VideoPlayer = function VideoPlayer(_a) {
89158
89284
  isFavorite: isFavorite,
89159
89285
  toggleIsFavorite: toggleFavorite,
89160
89286
  isFullscreen: isFullscreen,
89161
- 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,
89162
89288
  handleSkipBackward: handlePreviousVideo,
89163
89289
  handleSkipForward: handleNextVideo,
89164
89290
  isNextVideo: isNextVideo,
89165
89291
  isPreviousVideo: isPreviousVideo,
89166
89292
  showFavorite: showFavorite
89167
89293
  })
89168
- }), isSubtitlesChecked && currentSubtitle && jsxRuntimeExports.jsx(StyledSubtitles, {
89169
- "$controls": isControlsActive,
89170
- children: currentSubtitle
89171
89294
  })]
89172
89295
  });
89173
89296
  };