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
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var index = require('./index-Dwz3FwAA.js');
3
+ var index = require('./index-Ciqeqnts.js');
4
4
  var React = require('react');
5
5
 
6
6
  function _mergeNamespaces(n, m) {
@@ -1,4 +1,4 @@
1
- import { r as requireUtils, a as requirePatterns, g as getDefaultExportFromCjs } from './index-KXbxnyZn.esm.js';
1
+ import { r as requireUtils, a as requirePatterns, g as getDefaultExportFromCjs } from './index-CyUx723z.esm.js';
2
2
  import React__default from 'react';
3
3
 
4
4
  function _mergeNamespaces(n, m) {
@@ -1,4 +1,4 @@
1
- import { r as requireUtils, a as requirePatterns, g as getDefaultExportFromCjs } from './index-KXbxnyZn.esm.js';
1
+ import { r as requireUtils, a as requirePatterns, g as getDefaultExportFromCjs } from './index-CyUx723z.esm.js';
2
2
  import React__default from 'react';
3
3
 
4
4
  function _mergeNamespaces(n, m) {
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var index = require('./index-Dwz3FwAA.js');
3
+ var index = require('./index-Ciqeqnts.js');
4
4
  var React = require('react');
5
5
 
6
6
  function _mergeNamespaces(n, m) {
@@ -1,4 +1,4 @@
1
- import { r as requireUtils, a as requirePatterns, g as getDefaultExportFromCjs } from './index-KXbxnyZn.esm.js';
1
+ import { r as requireUtils, a as requirePatterns, g as getDefaultExportFromCjs } from './index-CyUx723z.esm.js';
2
2
  import React__default from 'react';
3
3
 
4
4
  function _mergeNamespaces(n, m) {
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var index = require('./index-Dwz3FwAA.js');
3
+ var index = require('./index-Ciqeqnts.js');
4
4
  var React = require('react');
5
5
 
6
6
  function _mergeNamespaces(n, m) {
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var index = require('./index-Dwz3FwAA.js');
3
+ var index = require('./index-Ciqeqnts.js');
4
4
  var React = require('react');
5
5
 
6
6
  function _mergeNamespaces(n, m) {
@@ -1,4 +1,4 @@
1
- import { r as requireUtils, a as requirePatterns, g as getDefaultExportFromCjs } from './index-KXbxnyZn.esm.js';
1
+ import { r as requireUtils, a as requirePatterns, g as getDefaultExportFromCjs } from './index-CyUx723z.esm.js';
2
2
  import React__default from 'react';
3
3
 
4
4
  function _mergeNamespaces(n, m) {
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var index = require('./index-Dwz3FwAA.js');
3
+ var index = require('./index-Ciqeqnts.js');
4
4
  var React = require('react');
5
5
 
6
6
  function _mergeNamespaces(n, m) {
@@ -1,4 +1,4 @@
1
- import { r as requireUtils, a as requirePatterns, g as getDefaultExportFromCjs } from './index-KXbxnyZn.esm.js';
1
+ import { r as requireUtils, a as requirePatterns, g as getDefaultExportFromCjs } from './index-CyUx723z.esm.js';
2
2
  import React__default from 'react';
3
3
 
4
4
  function _mergeNamespaces(n, m) {
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var index = require('./index-Dwz3FwAA.js');
3
+ var index = require('./index-Ciqeqnts.js');
4
4
  var React = require('react');
5
5
 
6
6
  function _mergeNamespaces(n, m) {
@@ -1,4 +1,4 @@
1
- import { a as requirePatterns, g as getDefaultExportFromCjs } from './index-KXbxnyZn.esm.js';
1
+ import { a as requirePatterns, g as getDefaultExportFromCjs } from './index-CyUx723z.esm.js';
2
2
  import React__default from 'react';
3
3
 
4
4
  function _mergeNamespaces(n, m) {
@@ -1,4 +1,4 @@
1
- import { g as getDefaultExportFromCjs } from './index-KXbxnyZn.esm.js';
1
+ import { g as getDefaultExportFromCjs } from './index-CyUx723z.esm.js';
2
2
  import React__default from 'react';
3
3
 
4
4
  function _mergeNamespaces(n, m) {
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var index = require('./index-Dwz3FwAA.js');
3
+ var index = require('./index-Ciqeqnts.js');
4
4
  var React = require('react');
5
5
 
6
6
  function _mergeNamespaces(n, m) {
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var index = require('./index-Dwz3FwAA.js');
3
+ var index = require('./index-Ciqeqnts.js');
4
4
  var React = require('react');
5
5
 
6
6
  function _mergeNamespaces(n, m) {
@@ -1,4 +1,4 @@
1
- import { r as requireUtils, a as requirePatterns, g as getDefaultExportFromCjs } from './index-KXbxnyZn.esm.js';
1
+ import { r as requireUtils, a as requirePatterns, g as getDefaultExportFromCjs } from './index-CyUx723z.esm.js';
2
2
  import React__default from 'react';
3
3
 
4
4
  function _mergeNamespaces(n, m) {
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var index = require('./index-Dwz3FwAA.js');
3
+ var index = require('./index-Ciqeqnts.js');
4
4
  var React = require('react');
5
5
 
6
6
  function _mergeNamespaces(n, m) {
@@ -1,4 +1,4 @@
1
- import { r as requireUtils, a as requirePatterns, g as getDefaultExportFromCjs } from './index-KXbxnyZn.esm.js';
1
+ import { r as requireUtils, a as requirePatterns, g as getDefaultExportFromCjs } from './index-CyUx723z.esm.js';
2
2
  import React__default from 'react';
3
3
 
4
4
  function _mergeNamespaces(n, m) {
@@ -1,4 +1,4 @@
1
- import { r as requireUtils, a as requirePatterns, g as getDefaultExportFromCjs } from './index-KXbxnyZn.esm.js';
1
+ import { r as requireUtils, a as requirePatterns, g as getDefaultExportFromCjs } from './index-CyUx723z.esm.js';
2
2
  import React__default from 'react';
3
3
 
4
4
  function _mergeNamespaces(n, m) {
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var index = require('./index-Dwz3FwAA.js');
3
+ var index = require('./index-Ciqeqnts.js');
4
4
  var React = require('react');
5
5
 
6
6
  function _mergeNamespaces(n, m) {
@@ -1,3 +1,4 @@
1
1
  import { ReactElement } from 'react';
2
2
  import { PlayerProps } from './Player.interface';
3
3
  export declare const VideoPlayer: ({ customStyles, startTime, loading, setLoading, handleTrackProgress, url, subtitle: subtitleUrl, handleNextVideo, handlePreviousVideo, isNextVideo, isPreviousVideo, isPlaying, setIsPlaying, shouldPlayerBeFocusedOnSpaceClick, showFavorite, isFavorite, toggleFavorite, }: PlayerProps) => ReactElement;
4
+ export default VideoPlayer;
@@ -1,4 +1,4 @@
1
- import React, { RefObject } from 'react';
1
+ import React, { Dispatch, RefObject, SetStateAction } from 'react';
2
2
  import ReactPlayer from 'react-player';
3
3
  import { ControlsProps } from './Controls/Controls.interface';
4
4
  export interface VideoState {
@@ -59,5 +59,6 @@ export interface UsePlayerControlsState extends Omit<ControlsProps, 'isFavorite'
59
59
  isFullscreen: boolean;
60
60
  isControlsActive: boolean;
61
61
  currentSubtitle: string;
62
+ setCurrentSubtitle: Dispatch<SetStateAction<string>>;
62
63
  }
63
64
  export {};
@@ -46,15 +46,19 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
46
46
  }
47
47
  };
48
48
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
49
+ import { useEffect, useRef } from 'react';
49
50
  import ReactPlayer from 'react-player';
50
- import { StyledWrapper, StyledPlayerLoader, StyledControlsContainer, StyledVideoPlayerWrapper, StyledLoader, StyledSubtitles, } from './Player.styles';
51
+ import { StyledWrapper, StyledPlayerLoader, StyledControlsContainer, StyledVideoPlayerWrapper, StyledLoader, StyledSubtitles, injectHLSSubtitleStyles, } from './Player.styles';
51
52
  import Controls from './Controls';
52
53
  import usePlayerControls from './usePlayerControls';
54
+ import { useHLSSubtitles } from 'src/components/VideoPlayer/useHlsSubtitles';
53
55
  export var VideoPlayer = function (_a) {
54
- var customStyles = _a.customStyles, _b = _a.startTime, startTime = _b === void 0 ? 0 : _b, loading = _a.loading, setLoading = _a.setLoading, handleTrackProgress = _a.handleTrackProgress, url = _a.url, subtitleUrl = _a.subtitle, handleNextVideo = _a.handleNextVideo, handlePreviousVideo = _a.handlePreviousVideo, isNextVideo = _a.isNextVideo, isPreviousVideo = _a.isPreviousVideo, isPlaying = _a.isPlaying, setIsPlaying = _a.setIsPlaying, _c = _a.shouldPlayerBeFocusedOnSpaceClick, shouldPlayerBeFocusedOnSpaceClick = _c === void 0 ? false : _c, showFavorite = _a.showFavorite, _d = _a.isFavorite, isFavorite = _d === void 0 ? false : _d, _e = _a.toggleFavorite, toggleFavorite = _e === void 0 ? function () { return __awaiter(void 0, void 0, void 0, function () { return __generator(this, function (_a) {
56
+ var _b, _c, _d;
57
+ var customStyles = _a.customStyles, _e = _a.startTime, startTime = _e === void 0 ? 0 : _e, loading = _a.loading, setLoading = _a.setLoading, handleTrackProgress = _a.handleTrackProgress, url = _a.url, subtitleUrl = _a.subtitle, handleNextVideo = _a.handleNextVideo, handlePreviousVideo = _a.handlePreviousVideo, isNextVideo = _a.isNextVideo, isPreviousVideo = _a.isPreviousVideo, isPlaying = _a.isPlaying, setIsPlaying = _a.setIsPlaying, _f = _a.shouldPlayerBeFocusedOnSpaceClick, shouldPlayerBeFocusedOnSpaceClick = _f === void 0 ? false : _f, showFavorite = _a.showFavorite, _g = _a.isFavorite, isFavorite = _g === void 0 ? false : _g, _h = _a.toggleFavorite, toggleFavorite = _h === void 0 ? function () { return __awaiter(void 0, void 0, void 0, function () { return __generator(this, function (_a) {
55
58
  return [2 /*return*/];
56
- }); }); } : _e;
57
- var _f = usePlayerControls({
59
+ }); }); } : _h;
60
+ var videoRef = useRef(null);
61
+ var _j = usePlayerControls({
58
62
  startTime: startTime,
59
63
  setLoading: setLoading,
60
64
  handleTrackProgress: handleTrackProgress,
@@ -63,25 +67,42 @@ export var VideoPlayer = function (_a) {
63
67
  isPlaying: isPlaying,
64
68
  setIsPlaying: setIsPlaying,
65
69
  shouldPlayerBeFocusedOnSpaceClick: shouldPlayerBeFocusedOnSpaceClick,
66
- }), mouseMoveHandler = _f.mouseMoveHandler, playerContainerRef = _f.playerContainerRef, playPauseHandler = _f.playPauseHandler, handleFullScreen = _f.handleFullScreen, videoPlayerRef = _f.videoPlayerRef, playing = _f.playing, volume = _f.volume, muted = _f.muted, progressHandler = _f.progressHandler, bufferStartHandler = _f.bufferStartHandler, bufferEndHandler = _f.bufferEndHandler, onPlayerStart = _f.onPlayerStart, setVideoState = _f.setVideoState, playbackRate = _f.playbackRate, controlRef = _f.controlRef, rewindHandler = _f.rewindHandler, handleFastForward = _f.handleFastForward, formatCurrentTime = _f.formatCurrentTime, played = _f.played, onSeekMouseDownHandler = _f.onSeekMouseDownHandler, seekHandler = _f.seekHandler, seekMouseUpHandler = _f.seekMouseUpHandler, muteHandler = _f.muteHandler, volumeChangeHandler = _f.volumeChangeHandler, formatDuration = _f.formatDuration, isSubtitlesChecked = _f.isSubtitlesChecked, toggleSubtitlesCheck = _f.toggleSubtitlesCheck, isFullscreen = _f.isFullscreen, isControlsActive = _f.isControlsActive, currentSubtitle = _f.currentSubtitle;
67
- // Make sure we have a valid URL to avoid ReactPlayer errors
68
- var validUrl = url || '';
69
- return (_jsxs(StyledWrapper, { tabIndex: 0, onMouseMove: mouseMoveHandler, ref: playerContainerRef, style: customStyles, onClick: function (e) { return e.stopPropagation(); }, "data-testid": 'video-player-wrapper', children: [_jsx(StyledVideoPlayerWrapper, { onClick: playPauseHandler, onDoubleClick: handleFullScreen, children: _jsx(ReactPlayer, { url: validUrl, ref: videoPlayerRef, className: 'react-player', width: '100%', height: '100%', playing: isPlaying, volume: volume, muted: muted, onProgress: progressHandler, onBuffer: bufferStartHandler, onBufferEnd: bufferEndHandler, onReady: onPlayerStart, onPlay: function () { return setIsPlaying(true); }, onPause: function () { return setIsPlaying(false); }, onEnded: function () {
70
- var _a;
71
- var totalDuration = (_a = videoPlayerRef.current) === null || _a === void 0 ? void 0 : _a.getDuration();
72
- if (totalDuration) {
73
- handleTrackProgress(totalDuration);
74
- }
75
- setVideoState(function (prev) { return (__assign(__assign({}, prev), { playing: false })); });
76
- if (handleNextVideo)
77
- handleNextVideo();
78
- }, controls: false, pip: true, playbackRate: playbackRate, preload: 'metadata', config: {
79
- file: {
80
- hlsOptions: {
81
- autoStartLoad: true,
82
- renderTextTracksNatively: false,
70
+ }), mouseMoveHandler = _j.mouseMoveHandler, playerContainerRef = _j.playerContainerRef, playPauseHandler = _j.playPauseHandler, handleFullScreen = _j.handleFullScreen, videoPlayerRef = _j.videoPlayerRef, playing = _j.playing, volume = _j.volume, muted = _j.muted, progressHandler = _j.progressHandler, bufferStartHandler = _j.bufferStartHandler, bufferEndHandler = _j.bufferEndHandler, onPlayerStart = _j.onPlayerStart, setVideoState = _j.setVideoState, playbackRate = _j.playbackRate, controlRef = _j.controlRef, rewindHandler = _j.rewindHandler, handleFastForward = _j.handleFastForward, formatCurrentTime = _j.formatCurrentTime, played = _j.played, onSeekMouseDownHandler = _j.onSeekMouseDownHandler, seekHandler = _j.seekHandler, seekMouseUpHandler = _j.seekMouseUpHandler, muteHandler = _j.muteHandler, volumeChangeHandler = _j.volumeChangeHandler, formatDuration = _j.formatDuration, isSubtitlesChecked = _j.isSubtitlesChecked, toggleSubtitlesCheck = _j.toggleSubtitlesCheck, isFullscreen = _j.isFullscreen, isControlsActive = _j.isControlsActive, currentSubtitle = _j.currentSubtitle, setCurrentSubtitle = _j.setCurrentSubtitle;
71
+ var setupHLSSubtitleTracking = useHLSSubtitles({
72
+ videoPlayerRef: videoPlayerRef,
73
+ isSubtitlesChecked: isSubtitlesChecked,
74
+ setCurrentSubtitle: setCurrentSubtitle,
75
+ }).setupHLSSubtitleTracking;
76
+ useEffect(function () {
77
+ var cleanup = injectHLSSubtitleStyles();
78
+ return cleanup;
79
+ }, []);
80
+ var handlePlayerReady = function () {
81
+ var _a;
82
+ onPlayerStart();
83
+ setupHLSSubtitleTracking();
84
+ var videoElement = (_a = videoPlayerRef.current) === null || _a === void 0 ? void 0 : _a.getInternalPlayer();
85
+ if (videoElement && videoElement instanceof HTMLVideoElement) {
86
+ videoRef.current = videoElement;
87
+ }
88
+ };
89
+ return (_jsxs(StyledWrapper, { tabIndex: 0, onMouseMove: mouseMoveHandler, ref: playerContainerRef, style: customStyles, onClick: function (e) { return e.stopPropagation(); }, children: [_jsxs(StyledVideoPlayerWrapper, { onClick: playPauseHandler, onDoubleClick: handleFullScreen, children: [_jsx(ReactPlayer, { url: url, ref: videoPlayerRef, className: 'react-player', width: '100%', height: '100%', playing: isPlaying, volume: volume, muted: muted, onProgress: progressHandler, onBuffer: bufferStartHandler, onBufferEnd: bufferEndHandler, onReady: handlePlayerReady, onPlay: function () { return setIsPlaying(true); }, onPause: function () { return setIsPlaying(false); }, onEnded: function () {
90
+ var _a;
91
+ var totalDuration = (_a = videoPlayerRef.current) === null || _a === void 0 ? void 0 : _a.getDuration();
92
+ if (totalDuration) {
93
+ handleTrackProgress(totalDuration);
94
+ }
95
+ setVideoState(function (prev) { return (__assign(__assign({}, prev), { playing: false })); });
96
+ if (handleNextVideo)
97
+ handleNextVideo();
98
+ }, controls: false, pip: true, playbackRate: playbackRate, preload: 'metadata', config: {
99
+ file: {
100
+ hlsOptions: {
101
+ autoStartLoad: true,
102
+ renderTextTracksNatively: true,
103
+ },
83
104
  },
84
- },
85
- } }, validUrl) }), loading && (_jsx(StyledPlayerLoader, { children: _jsx(StyledLoader, {}) })), _jsx(StyledControlsContainer, { ref: controlRef, children: _jsx(Controls, { setVideoState: setVideoState, playbackRate: playbackRate, rewindHandler: rewindHandler, playPauseHandler: playPauseHandler, handleFastForward: handleFastForward, formatCurrentTime: formatCurrentTime, played: played, onSeekMouseDownHandler: onSeekMouseDownHandler, seekHandler: seekHandler, seekMouseUpHandler: seekMouseUpHandler, volume: volume, muted: muted, muteHandler: muteHandler, volumeChangeHandler: volumeChangeHandler, formatDuration: formatDuration, handleFullScreen: handleFullScreen, playing: playing, isSubtitlesChecked: isSubtitlesChecked, toggleSubtitlesCheck: toggleSubtitlesCheck, isFavorite: isFavorite, toggleIsFavorite: toggleFavorite, isFullscreen: isFullscreen, subtitle: !!subtitleUrl, handleSkipBackward: handlePreviousVideo, handleSkipForward: handleNextVideo, isNextVideo: isNextVideo, isPreviousVideo: isPreviousVideo, showFavorite: showFavorite }) }), isSubtitlesChecked && currentSubtitle && (_jsx(StyledSubtitles, { "$controls": isControlsActive, children: currentSubtitle }))] }));
105
+ } }, url), loading && (_jsx(StyledPlayerLoader, { children: _jsx(StyledLoader, {}) })), isSubtitlesChecked && currentSubtitle && (_jsx(StyledSubtitles, { "$controls": isControlsActive, children: currentSubtitle }))] }), _jsx(StyledControlsContainer, { ref: controlRef, children: _jsx(Controls, { setVideoState: setVideoState, playbackRate: playbackRate, rewindHandler: rewindHandler, playPauseHandler: playPauseHandler, handleFastForward: handleFastForward, formatCurrentTime: formatCurrentTime, played: played, onSeekMouseDownHandler: onSeekMouseDownHandler, seekHandler: seekHandler, seekMouseUpHandler: seekMouseUpHandler, volume: volume, muted: muted, muteHandler: muteHandler, volumeChangeHandler: volumeChangeHandler, formatDuration: formatDuration, handleFullScreen: handleFullScreen, playing: playing, isSubtitlesChecked: isSubtitlesChecked, toggleSubtitlesCheck: toggleSubtitlesCheck, isFavorite: isFavorite, toggleIsFavorite: toggleFavorite, isFullscreen: isFullscreen, 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, handleSkipBackward: handlePreviousVideo, handleSkipForward: handleNextVideo, isNextVideo: isNextVideo, isPreviousVideo: isPreviousVideo, showFavorite: showFavorite }) })] }));
86
106
  };
107
+ export default VideoPlayer;
87
108
  //# sourceMappingURL=Player.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Player.js","sourceRoot":"","sources":["../../../src/components/VideoPlayer/Player.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Player.js","sourceRoot":"","sources":["../../../src/components/VideoPlayer/Player.tsx"],"names":[],"mappings":"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"}
@@ -6,3 +6,5 @@ export declare const StyledControlsContainer: import("styled-components/dist/typ
6
6
  export declare const StyledSubtitles: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components/dist/types").Substitute<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, {
7
7
  $controls: boolean;
8
8
  }>> & string;
9
+ export declare const 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";
10
+ export declare const injectHLSSubtitleStyles: () => (() => void);
@@ -13,5 +13,26 @@ export var StyledSubtitles = styled.div(templateObject_7 || (templateObject_7 =
13
13
  var $controls = _a.$controls;
14
14
  return ($controls ? '60px' : '10px');
15
15
  });
16
+ export 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";
17
+ export var injectHLSSubtitleStyles = function () {
18
+ var addSubtitleStyles = function () {
19
+ var existingStyle = document.getElementById('hls-subtitle-styles');
20
+ if (existingStyle) {
21
+ existingStyle.remove();
22
+ }
23
+ var style = document.createElement('style');
24
+ style.id = 'hls-subtitle-styles';
25
+ style.textContent = HLS_SUBTITLE_STYLES;
26
+ document.head.appendChild(style);
27
+ };
28
+ addSubtitleStyles();
29
+ // Return cleanup function
30
+ return function () {
31
+ var existingStyle = document.getElementById('hls-subtitle-styles');
32
+ if (existingStyle) {
33
+ existingStyle.remove();
34
+ }
35
+ };
36
+ };
16
37
  var templateObject_1, templateObject_2, templateObject_3, templateObject_4, templateObject_5, templateObject_6, templateObject_7;
17
38
  //# sourceMappingURL=Player.styles.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Player.styles.js","sourceRoot":"","sources":["../../../src/components/VideoPlayer/Player.styles.tsx"],"names":[],"mappings":";;;;AAAA,OAAO,MAAM,EAAE,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAA;AAErD,MAAM,CAAC,IAAM,wBAAwB,GAAG,MAAM,CAAC,GAAG,ghBAAA,6cAwBjD,IAAA,CAAA;AAED,MAAM,CAAC,IAAM,aAAa,GAAG,MAAM,CAAC,GAAG,wWAAA,qMAa/B,EAAwB,8FAO/B,KAPO,wBAAwB,CAO/B,CAAA;AAED,MAAM,CAAC,IAAM,kBAAkB,GAAG,MAAM,CAAC,GAAG,sVAAA,mRAc3C,IAAA,CAAA;AAED,IAAM,MAAM,GAAG,SAAS,iKAAA,8FAOvB,IAAA,CAAA;AAED,MAAM,CAAC,IAAM,YAAY,GAAG,MAAM,CAAC,GAAG,8kBAAA,qWAUvB,EAAM,oKAUpB,KAVc,MAAM,CAUpB,CAAA;AAED,MAAM,CAAC,IAAM,uBAAuB,GAAG,MAAM,CAAC,GAAG,sPAAA,mLAUhD,IAAA,CAAA;AAED,MAAM,CAAC,IAAM,eAAe,GAAG,MAAM,CAAC,GAAG,wbAAwB,iQAWrD,EAAwD,kHAOnE,KAPW,UAAC,EAAa;QAAX,SAAS,eAAA;IAAe,OAAA,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC;AAA7B,CAA6B,CAOnE,CAAA"}
1
+ {"version":3,"file":"Player.styles.js","sourceRoot":"","sources":["../../../src/components/VideoPlayer/Player.styles.tsx"],"names":[],"mappings":";;;;AAAA,OAAO,MAAM,EAAE,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAA;AAErD,MAAM,CAAC,IAAM,wBAAwB,GAAG,MAAM,CAAC,GAAG,ghBAAA,6cAwBjD,IAAA,CAAA;AAED,MAAM,CAAC,IAAM,aAAa,GAAG,MAAM,CAAC,GAAG,wWAAA,qMAa/B,EAAwB,8FAO/B,KAPO,wBAAwB,CAO/B,CAAA;AAED,MAAM,CAAC,IAAM,kBAAkB,GAAG,MAAM,CAAC,GAAG,sVAAA,mRAc3C,IAAA,CAAA;AAED,IAAM,MAAM,GAAG,SAAS,iKAAA,8FAOvB,IAAA,CAAA;AAED,MAAM,CAAC,IAAM,YAAY,GAAG,MAAM,CAAC,GAAG,8kBAAA,qWAUvB,EAAM,oKAUpB,KAVc,MAAM,CAUpB,CAAA;AAED,MAAM,CAAC,IAAM,uBAAuB,GAAG,MAAM,CAAC,GAAG,sPAAA,mLAUhD,IAAA,CAAA;AAED,MAAM,CAAC,IAAM,eAAe,GAAG,MAAM,CAAC,GAAG,wbAAwB,iQAWrD,EAAwD,kHAOnE,KAPW,UAAC,EAAa;QAAX,SAAS,eAAA;IAAe,OAAA,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC;AAA7B,CAA6B,CAOnE,CAAA;AAED,MAAM,CAAC,IAAM,mBAAmB,GAAG,i1EA6FlC,CAAA;AAED,MAAM,CAAC,IAAM,uBAAuB,GAAG;IACrC,IAAM,iBAAiB,GAAG;QACxB,IAAM,aAAa,GAAG,QAAQ,CAAC,cAAc,CAAC,qBAAqB,CAAC,CAAA;QACpE,IAAI,aAAa,EAAE,CAAC;YAClB,aAAa,CAAC,MAAM,EAAE,CAAA;QACxB,CAAC;QAED,IAAM,KAAK,GAAG,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC,CAAA;QAC7C,KAAK,CAAC,EAAE,GAAG,qBAAqB,CAAA;QAChC,KAAK,CAAC,WAAW,GAAG,mBAAmB,CAAA;QACvC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAA;IAClC,CAAC,CAAA;IAED,iBAAiB,EAAE,CAAA;IAEnB,0BAA0B;IAC1B,OAAO;QACL,IAAM,aAAa,GAAG,QAAQ,CAAC,cAAc,CAAC,qBAAqB,CAAC,CAAA;QACpE,IAAI,aAAa,EAAE,CAAC;YAClB,aAAa,CAAC,MAAM,EAAE,CAAA;QACxB,CAAC;IACH,CAAC,CAAA;AACH,CAAC,CAAA"}
@@ -0,0 +1,12 @@
1
+ import ReactPlayer from 'react-player';
2
+ interface UseHLSSubtitlesProps {
3
+ videoPlayerRef: React.RefObject<ReactPlayer | null>;
4
+ isSubtitlesChecked: boolean;
5
+ setCurrentSubtitle: (subtitle: string) => void;
6
+ }
7
+ interface UseHLSSubtitlesReturn {
8
+ extractHLSSubtitleText: () => void;
9
+ setupHLSSubtitleTracking: () => void;
10
+ }
11
+ export declare const useHLSSubtitles: ({ videoPlayerRef, isSubtitlesChecked, setCurrentSubtitle, }: UseHLSSubtitlesProps) => UseHLSSubtitlesReturn;
12
+ export {};
@@ -0,0 +1,73 @@
1
+ import { useCallback, useEffect, useRef } from 'react';
2
+ export var useHLSSubtitles = function (_a) {
3
+ var videoPlayerRef = _a.videoPlayerRef, isSubtitlesChecked = _a.isSubtitlesChecked, setCurrentSubtitle = _a.setCurrentSubtitle;
4
+ var hlsSubtitleTrackRef = useRef(null);
5
+ var extractHLSSubtitleText = useCallback(function () {
6
+ var _a;
7
+ var videoElement = (_a = videoPlayerRef.current) === null || _a === void 0 ? void 0 : _a.getInternalPlayer();
8
+ if (!videoElement || !videoElement.textTracks)
9
+ return;
10
+ var _loop_1 = function (i) {
11
+ var track = videoElement.textTracks[i];
12
+ if (track.kind === 'subtitles' || track.kind === 'captions') {
13
+ hlsSubtitleTrackRef.current = track;
14
+ var handleCueChange = function () {
15
+ if (isSubtitlesChecked && track.activeCues && track.activeCues.length > 0) {
16
+ var currentCue = track.activeCues[0];
17
+ if (currentCue && currentCue.text) {
18
+ setCurrentSubtitle(currentCue.text);
19
+ }
20
+ }
21
+ else if (isSubtitlesChecked) {
22
+ setCurrentSubtitle('');
23
+ }
24
+ };
25
+ track.removeEventListener('cuechange', handleCueChange);
26
+ track.addEventListener('cuechange', handleCueChange);
27
+ track.mode = isSubtitlesChecked ? 'showing' : 'hidden';
28
+ return "break";
29
+ }
30
+ };
31
+ for (var i = 0; i < videoElement.textTracks.length; i++) {
32
+ var state_1 = _loop_1(i);
33
+ if (state_1 === "break")
34
+ break;
35
+ }
36
+ }, [isSubtitlesChecked, setCurrentSubtitle, videoPlayerRef]);
37
+ var setupHLSSubtitleTracking = useCallback(function () {
38
+ var _a;
39
+ var videoElement = (_a = videoPlayerRef.current) === null || _a === void 0 ? void 0 : _a.getInternalPlayer();
40
+ if (!videoElement)
41
+ return;
42
+ videoElement.classList.add('hls-video-player');
43
+ var checkTextTracks = function (attempt) {
44
+ if (attempt === void 0) { attempt = 0; }
45
+ var textTracks = videoElement.textTracks;
46
+ if (textTracks && textTracks.length > 0) {
47
+ extractHLSSubtitleText();
48
+ }
49
+ else if (attempt < 5) {
50
+ setTimeout(function () { return checkTextTracks(attempt + 1); }, 300 * (attempt + 1));
51
+ }
52
+ };
53
+ checkTextTracks();
54
+ videoElement.addEventListener('loadedmetadata', function () {
55
+ checkTextTracks();
56
+ });
57
+ }, [extractHLSSubtitleText, videoPlayerRef]);
58
+ useEffect(function () {
59
+ extractHLSSubtitleText();
60
+ }, [isSubtitlesChecked, extractHLSSubtitleText]);
61
+ useEffect(function () {
62
+ var _a;
63
+ var videoElement = (_a = videoPlayerRef.current) === null || _a === void 0 ? void 0 : _a.getInternalPlayer();
64
+ if (videoElement && videoElement.textTracks && videoElement.textTracks.length > 0) {
65
+ extractHLSSubtitleText();
66
+ }
67
+ }, [videoPlayerRef.current, extractHLSSubtitleText]);
68
+ return {
69
+ extractHLSSubtitleText: extractHLSSubtitleText,
70
+ setupHLSSubtitleTracking: setupHLSSubtitleTracking,
71
+ };
72
+ };
73
+ //# sourceMappingURL=useHlsSubtitles.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useHlsSubtitles.js","sourceRoot":"","sources":["../../../src/components/VideoPlayer/useHlsSubtitles.ts"],"names":[],"mappings":"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"}
@@ -80,13 +80,19 @@ function usePlayerControls(_a) {
80
80
  var duration = videoPlayerRef.current ? videoPlayerRef.current.getDuration() : 0;
81
81
  var formatCurrentTime = FormatSecondsToTimeString(currentTime);
82
82
  var formatDuration = FormatSecondsToTimeString(duration);
83
+ // Using previous method for old videos(we used to parse subtitles via link)
83
84
  useEffect(function () {
84
- fetch(subtitleUrl)
85
- .then(function (response) { return response.text(); })
86
- .then(function (content) {
87
- var parsedSubtitles = parseVTT(content);
88
- setSubtitles(parsedSubtitles);
89
- });
85
+ if (subtitleUrl) {
86
+ fetch(subtitleUrl)
87
+ .then(function (response) { return response.text(); })
88
+ .then(function (content) {
89
+ var parsedSubtitles = parseVTT(content);
90
+ setSubtitles(parsedSubtitles);
91
+ })
92
+ .catch(function (error) {
93
+ console.error('Error fetching external subtitles:', error);
94
+ });
95
+ }
90
96
  }, [subtitleUrl]);
91
97
  useEffect(function () {
92
98
  var handleFullscreenChange = function () {
@@ -114,8 +120,9 @@ function usePlayerControls(_a) {
114
120
  }
115
121
  }, [videoPlayerRef]);
116
122
  var progressHandler = useCallback(function (state) { return __awaiter(_this, void 0, void 0, function () {
117
- var currentSubtitleEntry, i, sub, i, sub, currentTime_1, now;
118
- return __generator(this, function (_a) {
123
+ var videoElement, hasHLSSubtitles, currentSubtitleEntry, i, sub, i, sub, currentTime_1, now;
124
+ var _a, _b;
125
+ return __generator(this, function (_c) {
119
126
  if (count > 2) {
120
127
  if (controlRef.current) {
121
128
  controlRef.current.style.visibility = 'hidden';
@@ -127,43 +134,46 @@ function usePlayerControls(_a) {
127
134
  isControlsActive) {
128
135
  count += 1;
129
136
  }
130
- if (lastSubtitleIndexRef.current !== null) {
131
- if (state.playedSeconds > lastPlaybackTimeRef.current) {
132
- // Searching forward
133
- for (i = lastSubtitleIndexRef.current; i < subtitles.length; i++) {
134
- sub = subtitles[i];
135
- if (state.playedSeconds >= sub.start && state.playedSeconds <= sub.end) {
136
- currentSubtitleEntry = sub;
137
- lastSubtitleIndexRef.current = i;
138
- break;
137
+ videoElement = (_a = videoPlayerRef.current) === null || _a === void 0 ? void 0 : _a.getInternalPlayer();
138
+ hasHLSSubtitles = ((_b = videoElement === null || videoElement === void 0 ? void 0 : videoElement.textTracks) === null || _b === void 0 ? void 0 : _b.length) > 0;
139
+ if (subtitles.length > 0 && !hasHLSSubtitles && isSubtitlesChecked) {
140
+ currentSubtitleEntry = void 0;
141
+ if (lastSubtitleIndexRef.current !== null) {
142
+ if (state.playedSeconds > lastPlaybackTimeRef.current) {
143
+ for (i = lastSubtitleIndexRef.current; i < subtitles.length; i++) {
144
+ sub = subtitles[i];
145
+ if (state.playedSeconds >= sub.start && state.playedSeconds <= sub.end) {
146
+ currentSubtitleEntry = sub;
147
+ lastSubtitleIndexRef.current = i;
148
+ break;
149
+ }
139
150
  }
140
151
  }
141
- }
142
- else {
143
- // Searching backward
144
- for (i = lastSubtitleIndexRef.current; i >= 0; i--) {
145
- sub = subtitles[i];
146
- if (state.playedSeconds >= sub.start && state.playedSeconds <= sub.end) {
147
- currentSubtitleEntry = sub;
148
- lastSubtitleIndexRef.current = i;
149
- break;
152
+ else {
153
+ for (i = lastSubtitleIndexRef.current; i >= 0; i--) {
154
+ sub = subtitles[i];
155
+ if (state.playedSeconds >= sub.start && state.playedSeconds <= sub.end) {
156
+ currentSubtitleEntry = sub;
157
+ lastSubtitleIndexRef.current = i;
158
+ break;
159
+ }
150
160
  }
151
161
  }
152
162
  }
153
- }
154
- if (!currentSubtitleEntry) {
155
- currentSubtitleEntry = subtitles.find(function (sub) { return state.playedSeconds >= sub.start && state.playedSeconds <= sub.end; });
163
+ if (!currentSubtitleEntry) {
164
+ currentSubtitleEntry = subtitles.find(function (sub) { return state.playedSeconds >= sub.start && state.playedSeconds <= sub.end; });
165
+ if (currentSubtitleEntry) {
166
+ lastSubtitleIndexRef.current = subtitles.indexOf(currentSubtitleEntry);
167
+ }
168
+ }
169
+ lastPlaybackTimeRef.current = state.playedSeconds;
156
170
  if (currentSubtitleEntry) {
157
- lastSubtitleIndexRef.current = subtitles.indexOf(currentSubtitleEntry);
171
+ setCurrentSubtitle(currentSubtitleEntry.text);
172
+ }
173
+ else {
174
+ setCurrentSubtitle(''); // Clear subtitle if none should be displayed
175
+ lastSubtitleIndexRef.current = null;
158
176
  }
159
- }
160
- lastPlaybackTimeRef.current = state.playedSeconds;
161
- if (currentSubtitleEntry) {
162
- setCurrentSubtitle(currentSubtitleEntry.text);
163
- }
164
- else {
165
- setCurrentSubtitle(''); // Clear subtitle if none should be displayed
166
- lastSubtitleIndexRef.current = null;
167
177
  }
168
178
  if (!seeking) {
169
179
  setVideoState(function (prev) { return (__assign(__assign({}, prev), state)); });
@@ -177,7 +187,7 @@ function usePlayerControls(_a) {
177
187
  }
178
188
  return [2 /*return*/];
179
189
  });
180
- }); }, [seeking, handleTrackProgress, isControlsActive, subtitles]);
190
+ }); }, [seeking, handleTrackProgress, isControlsActive, subtitles, isSubtitlesChecked]);
181
191
  var seekHandler = function (e) {
182
192
  var v = parseFloat(e.target.value) / 100;
183
193
  setVideoState(function (prev) { return (__assign(__assign({}, prev), { played: v })); });
@@ -185,7 +195,7 @@ function usePlayerControls(_a) {
185
195
  videoPlayerRef.current.seekTo(v);
186
196
  }
187
197
  };
188
- var seekMouseUpHandler = function (e) {
198
+ var seekMouseUpHandler = function () {
189
199
  setVideoState(function (prev) { return (__assign(__assign({}, prev), { seeking: false })); });
190
200
  if (videoPlayerRef.current) {
191
201
  videoPlayerRef.current.seekTo(videoState.played);
@@ -204,7 +214,7 @@ function usePlayerControls(_a) {
204
214
  setVideoState(function (prev) { return (__assign(__assign({}, prev), { muted: true, prevVolume: volume, volume: 0 })); });
205
215
  }
206
216
  };
207
- var onSeekMouseDownHandler = function (e) {
217
+ var onSeekMouseDownHandler = function () {
208
218
  setVideoState(function (prev) { return (__assign(__assign({}, prev), { seeking: true })); });
209
219
  };
210
220
  var mouseMoveHandler = function () {
@@ -323,6 +333,7 @@ function usePlayerControls(_a) {
323
333
  isFullscreen: isFullscreen,
324
334
  isControlsActive: isControlsActive,
325
335
  currentSubtitle: currentSubtitle,
336
+ setCurrentSubtitle: setCurrentSubtitle,
326
337
  playing: isPlaying,
327
338
  };
328
339
  }