suada-components 1.9.1 → 1.10.0

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 (65) hide show
  1. package/dist/{DailyMotion-B-Q4fBEb.js → DailyMotion-DacNkqsi.js} +1 -1
  2. package/dist/{DailyMotion-BAvo3Toe.esm.js → DailyMotion-gaY-1HqX.esm.js} +1 -1
  3. package/dist/{components/Facebook-CDrTA2_L.esm.js → Facebook-C_tH1Bi_.esm.js} +1 -1
  4. package/dist/{components/Facebook-YxZce26V.js → Facebook-D4wLMJkY.js} +1 -1
  5. package/dist/{FilePlayer-CQ80KWY2.js → FilePlayer-B4s5OcYq.js} +1 -1
  6. package/dist/{FilePlayer-BOZIvaDy.esm.js → FilePlayer-DqR2mvGK.esm.js} +1 -1
  7. package/dist/{Kaltura-B12Xdl6X.esm.js → Kaltura-C9QbmEfO.esm.js} +1 -1
  8. package/dist/{components/Kaltura-krSxvIBr.js → Kaltura-kCqUZWuf.js} +1 -1
  9. package/dist/{Mixcloud-DGQnlDAK.js → Mixcloud-2c71b3Nf.js} +1 -1
  10. package/dist/{Mixcloud-JfeQIOki.esm.js → Mixcloud-ib_DIXF1.esm.js} +1 -1
  11. package/dist/{Mux-CiKZc8gj.js → Mux-BsXgGo6C.js} +1 -1
  12. package/dist/{components/Mux-BZleoaJh.esm.js → Mux-CJ6kEh1R.esm.js} +1 -1
  13. package/dist/{Preview-DvZKrgm5.js → Preview-gEkhA4mX.js} +1 -1
  14. package/dist/{Preview-DSovY9gr.esm.js → Preview-kqr7fWet.esm.js} +1 -1
  15. package/dist/{SoundCloud-Di7z3nmP.js → SoundCloud-BWup2g--.js} +1 -1
  16. package/dist/{SoundCloud-j_R0lK8D.esm.js → SoundCloud-DJM0bsQG.esm.js} +1 -1
  17. package/dist/{Streamable-CRhXZIKP.esm.js → Streamable-CJltauTy.esm.js} +1 -1
  18. package/dist/{Streamable-CV1mgzRv.js → Streamable-UeTHV2nZ.js} +1 -1
  19. package/dist/{components/Twitch-CXOhay4a.esm.js → Twitch-C9qq_89Q.esm.js} +1 -1
  20. package/dist/{Twitch-Dj66vkCD.js → Twitch-_N8mEsiS.js} +1 -1
  21. package/dist/{components/Vidyard-Cn_LcGwi.js → Vidyard-CQuxB99Z.js} +1 -1
  22. package/dist/{components/Vidyard-YcZH6kkW.esm.js → Vidyard-gtcLQdYd.esm.js} +1 -1
  23. package/dist/{Vimeo-Ba9C6utC.esm.js → Vimeo-Dzp5eoLi.esm.js} +1 -1
  24. package/dist/{Vimeo-DePzl7Sn.js → Vimeo-nhXVoFTb.js} +1 -1
  25. package/dist/{components/Wistia-COWrV8QC.js → Wistia-C1DqA9IW.js} +1 -1
  26. package/dist/{components/Wistia-PneZ48dn.esm.js → Wistia-DV3BO3z9.esm.js} +1 -1
  27. package/dist/{components/YouTube-BUyvzJQw.esm.js → YouTube-BKwvJCnt.esm.js} +1 -1
  28. package/dist/{YouTube-vwMoW93C.js → YouTube-DDou5phH.js} +1 -1
  29. package/dist/components/{DailyMotion-Cr_8IZRR.js → DailyMotion-B8IJNjSc.js} +1 -1
  30. package/dist/components/{DailyMotion-D2n1NDDi.esm.js → DailyMotion-COg3zgIZ.esm.js} +1 -1
  31. package/dist/{Facebook-CASik-P5.js → components/Facebook-DJ7a3Bj8.js} +1 -1
  32. package/dist/{Facebook-C8GOujDt.esm.js → components/Facebook-NS80Vk6j.esm.js} +1 -1
  33. package/dist/components/{FilePlayer-BzkVMbQ8.esm.js → FilePlayer-D-fc3B0E.esm.js} +1 -1
  34. package/dist/components/{FilePlayer-DqqTufgX.js → FilePlayer-SyLt5qGX.js} +1 -1
  35. package/dist/{Kaltura-nYc5k7UB.js → components/Kaltura-BTFxSMxP.js} +1 -1
  36. package/dist/components/{Kaltura-B0UZLr6g.esm.js → Kaltura-CmFIWSef.esm.js} +1 -1
  37. package/dist/components/{Mixcloud-D9qk3D6i.esm.js → Mixcloud-CO5MsWUJ.esm.js} +1 -1
  38. package/dist/components/{Mixcloud-BCT5e47d.js → Mixcloud-DHAfVpcc.js} +1 -1
  39. package/dist/{Mux-BHWzpAR-.esm.js → components/Mux-C8-HithD.esm.js} +1 -1
  40. package/dist/components/{Mux-D_si09u2.js → Mux-bycDxP8G.js} +1 -1
  41. package/dist/components/{Preview-DQLbQ8_C.esm.js → Preview-Clg3y6sj.esm.js} +1 -1
  42. package/dist/components/{Preview-CmduMeEZ.js → Preview-CzpcknZI.js} +1 -1
  43. package/dist/components/{SoundCloud-BHgTfaW7.js → SoundCloud-Dz9DeIIM.js} +1 -1
  44. package/dist/components/{SoundCloud-BgnX8kOF.esm.js → SoundCloud-LfWEBVy1.esm.js} +1 -1
  45. package/dist/components/{Streamable-DbRbUflP.esm.js → Streamable-BpcVhi4M.esm.js} +1 -1
  46. package/dist/components/{Streamable-DTAzjVwd.js → Streamable-Cs_c-7jS.js} +1 -1
  47. package/dist/{Twitch-6icfp-ZE.esm.js → components/Twitch-BJ9aSIM2.esm.js} +1 -1
  48. package/dist/components/{Twitch-CnEk-l9R.js → Twitch-C9bksXF6.js} +1 -1
  49. package/dist/components/VideoPlayer/usePlayerControls.js +37 -27
  50. package/dist/components/VideoPlayer/usePlayerControls.js.map +1 -1
  51. package/dist/{Vidyard-B-qmApe9.js → components/Vidyard-CsUFSBXh.js} +1 -1
  52. package/dist/{Vidyard--KX47pZ0.esm.js → components/Vidyard-Dc8NHJ7p.esm.js} +1 -1
  53. package/dist/components/{Vimeo-Cv0qx3aR.esm.js → Vimeo-CwlScNtK.esm.js} +1 -1
  54. package/dist/components/{Vimeo-BUVxWt7t.js → Vimeo-D6C93592.js} +1 -1
  55. package/dist/{Wistia-CXYB3Yus.js → components/Wistia-Bxvdn3oO.js} +1 -1
  56. package/dist/{Wistia-DWJcdcY2.esm.js → components/Wistia-Cwl4fNWW.esm.js} +1 -1
  57. package/dist/components/{YouTube-DeQdfkWm.js → YouTube-BF85SRPF.js} +1 -1
  58. package/dist/{YouTube-DdBVPxzz.esm.js → components/YouTube-DKkYzN7-.esm.js} +1 -1
  59. package/dist/components/{index-Bs-XxxV4.js → index-C08W0lXg.js} +186 -173
  60. package/dist/components/{index-C4Mk2H3N.esm.js → index-F6zEoSWf.esm.js} +186 -173
  61. package/dist/components/index.esm.js +1 -1
  62. package/dist/{index-Bp-idbg5.esm.js → index-CcTTuhg8.esm.js} +186 -173
  63. package/dist/{index-CSj9NYxJ.js → index-Dq4qpx9F.js} +186 -173
  64. package/dist/index.esm.js +1 -1
  65. package/package.json +1 -1
@@ -81355,7 +81355,7 @@ function requirePlayers () {
81355
81355
  canPlay: import_patterns.canPlay.youtube,
81356
81356
  lazyPlayer: (0, import_utils.lazy)(() => import(
81357
81357
  /* webpackChunkName: 'reactPlayerYouTube' */
81358
- './YouTube-DdBVPxzz.esm.js'
81358
+ './YouTube-BKwvJCnt.esm.js'
81359
81359
  ).then(function (n) { return n.Y; }))
81360
81360
  },
81361
81361
  {
@@ -81364,7 +81364,7 @@ function requirePlayers () {
81364
81364
  canPlay: import_patterns.canPlay.soundcloud,
81365
81365
  lazyPlayer: (0, import_utils.lazy)(() => import(
81366
81366
  /* webpackChunkName: 'reactPlayerSoundCloud' */
81367
- './SoundCloud-j_R0lK8D.esm.js'
81367
+ './SoundCloud-DJM0bsQG.esm.js'
81368
81368
  ).then(function (n) { return n.S; }))
81369
81369
  },
81370
81370
  {
@@ -81373,7 +81373,7 @@ function requirePlayers () {
81373
81373
  canPlay: import_patterns.canPlay.vimeo,
81374
81374
  lazyPlayer: (0, import_utils.lazy)(() => import(
81375
81375
  /* webpackChunkName: 'reactPlayerVimeo' */
81376
- './Vimeo-Ba9C6utC.esm.js'
81376
+ './Vimeo-Dzp5eoLi.esm.js'
81377
81377
  ).then(function (n) { return n.V; }))
81378
81378
  },
81379
81379
  {
@@ -81382,7 +81382,7 @@ function requirePlayers () {
81382
81382
  canPlay: import_patterns.canPlay.mux,
81383
81383
  lazyPlayer: (0, import_utils.lazy)(() => import(
81384
81384
  /* webpackChunkName: 'reactPlayerMux' */
81385
- './Mux-BHWzpAR-.esm.js'
81385
+ './Mux-CJ6kEh1R.esm.js'
81386
81386
  ).then(function (n) { return n.M; }))
81387
81387
  },
81388
81388
  {
@@ -81391,7 +81391,7 @@ function requirePlayers () {
81391
81391
  canPlay: import_patterns.canPlay.facebook,
81392
81392
  lazyPlayer: (0, import_utils.lazy)(() => import(
81393
81393
  /* webpackChunkName: 'reactPlayerFacebook' */
81394
- './Facebook-C8GOujDt.esm.js'
81394
+ './Facebook-C_tH1Bi_.esm.js'
81395
81395
  ).then(function (n) { return n.F; }))
81396
81396
  },
81397
81397
  {
@@ -81400,7 +81400,7 @@ function requirePlayers () {
81400
81400
  canPlay: import_patterns.canPlay.streamable,
81401
81401
  lazyPlayer: (0, import_utils.lazy)(() => import(
81402
81402
  /* webpackChunkName: 'reactPlayerStreamable' */
81403
- './Streamable-CRhXZIKP.esm.js'
81403
+ './Streamable-CJltauTy.esm.js'
81404
81404
  ).then(function (n) { return n.S; }))
81405
81405
  },
81406
81406
  {
@@ -81409,7 +81409,7 @@ function requirePlayers () {
81409
81409
  canPlay: import_patterns.canPlay.wistia,
81410
81410
  lazyPlayer: (0, import_utils.lazy)(() => import(
81411
81411
  /* webpackChunkName: 'reactPlayerWistia' */
81412
- './Wistia-DWJcdcY2.esm.js'
81412
+ './Wistia-DV3BO3z9.esm.js'
81413
81413
  ).then(function (n) { return n.W; }))
81414
81414
  },
81415
81415
  {
@@ -81418,7 +81418,7 @@ function requirePlayers () {
81418
81418
  canPlay: import_patterns.canPlay.twitch,
81419
81419
  lazyPlayer: (0, import_utils.lazy)(() => import(
81420
81420
  /* webpackChunkName: 'reactPlayerTwitch' */
81421
- './Twitch-6icfp-ZE.esm.js'
81421
+ './Twitch-C9qq_89Q.esm.js'
81422
81422
  ).then(function (n) { return n.T; }))
81423
81423
  },
81424
81424
  {
@@ -81427,7 +81427,7 @@ function requirePlayers () {
81427
81427
  canPlay: import_patterns.canPlay.dailymotion,
81428
81428
  lazyPlayer: (0, import_utils.lazy)(() => import(
81429
81429
  /* webpackChunkName: 'reactPlayerDailyMotion' */
81430
- './DailyMotion-BAvo3Toe.esm.js'
81430
+ './DailyMotion-gaY-1HqX.esm.js'
81431
81431
  ).then(function (n) { return n.D; }))
81432
81432
  },
81433
81433
  {
@@ -81436,7 +81436,7 @@ function requirePlayers () {
81436
81436
  canPlay: import_patterns.canPlay.mixcloud,
81437
81437
  lazyPlayer: (0, import_utils.lazy)(() => import(
81438
81438
  /* webpackChunkName: 'reactPlayerMixcloud' */
81439
- './Mixcloud-JfeQIOki.esm.js'
81439
+ './Mixcloud-ib_DIXF1.esm.js'
81440
81440
  ).then(function (n) { return n.M; }))
81441
81441
  },
81442
81442
  {
@@ -81445,7 +81445,7 @@ function requirePlayers () {
81445
81445
  canPlay: import_patterns.canPlay.vidyard,
81446
81446
  lazyPlayer: (0, import_utils.lazy)(() => import(
81447
81447
  /* webpackChunkName: 'reactPlayerVidyard' */
81448
- './Vidyard--KX47pZ0.esm.js'
81448
+ './Vidyard-gtcLQdYd.esm.js'
81449
81449
  ).then(function (n) { return n.V; }))
81450
81450
  },
81451
81451
  {
@@ -81454,7 +81454,7 @@ function requirePlayers () {
81454
81454
  canPlay: import_patterns.canPlay.kaltura,
81455
81455
  lazyPlayer: (0, import_utils.lazy)(() => import(
81456
81456
  /* webpackChunkName: 'reactPlayerKaltura' */
81457
- './Kaltura-B12Xdl6X.esm.js'
81457
+ './Kaltura-C9QbmEfO.esm.js'
81458
81458
  ).then(function (n) { return n.K; }))
81459
81459
  },
81460
81460
  {
@@ -81466,7 +81466,7 @@ function requirePlayers () {
81466
81466
  },
81467
81467
  lazyPlayer: (0, import_utils.lazy)(() => import(
81468
81468
  /* webpackChunkName: 'reactPlayerFilePlayer' */
81469
- './FilePlayer-BOZIvaDy.esm.js'
81469
+ './FilePlayer-DqR2mvGK.esm.js'
81470
81470
  ).then(function (n) { return n.F; }))
81471
81471
  }
81472
81472
  ];
@@ -82287,7 +82287,7 @@ function requireReactPlayer () {
82287
82287
  var import_Player = __toESM(/*@__PURE__*/ requirePlayer());
82288
82288
  const Preview = (0, import_utils.lazy)(() => import(
82289
82289
  /* webpackChunkName: 'reactPlayerPreview' */
82290
- './Preview-DSovY9gr.esm.js'
82290
+ './Preview-kqr7fWet.esm.js'
82291
82291
  ).then(function (n) { return n.P; }));
82292
82292
  const IS_BROWSER = typeof window !== "undefined" && window.document && typeof document !== "undefined";
82293
82293
  const IS_GLOBAL = typeof commonjsGlobal !== "undefined" && commonjsGlobal.window && commonjsGlobal.window.document;
@@ -88738,6 +88738,131 @@ var useEventListener = function useEventListener(eventName, handler, element, sh
88738
88738
  }, [eventName, element, shouldRun]);
88739
88739
  };
88740
88740
 
88741
+ var PiPContext = /*#__PURE__*/createContext(undefined);
88742
+ var PiPProvider = function PiPProvider(_a) {
88743
+ var children = _a.children;
88744
+ var _b = useState(false),
88745
+ isPiPActive = _b[0],
88746
+ setIsPiPActive = _b[1];
88747
+ var _c = useState(null),
88748
+ pipVideoState = _c[0],
88749
+ setPipVideoState = _c[1];
88750
+ var videoElementRef = useRef(null);
88751
+ var updateVideoState = useCallback(function (state) {
88752
+ setPipVideoState(function (prev) {
88753
+ return prev ? __assign(__assign({}, prev), state) : null;
88754
+ });
88755
+ }, []);
88756
+ var registerVideoElement = useCallback(function (element) {
88757
+ videoElementRef.current = element;
88758
+ }, []);
88759
+ var unregisterVideoElement = useCallback(function () {
88760
+ videoElementRef.current = null;
88761
+ }, []);
88762
+ var enterPiP = useCallback(function (videoElement, videoState) {
88763
+ return __awaiter(void 0, void 0, void 0, function () {
88764
+ var error_1;
88765
+ return __generator(this, function (_a) {
88766
+ switch (_a.label) {
88767
+ case 0:
88768
+ if (!document.pictureInPictureEnabled) {
88769
+ console.warn('Picture-in-Picture is not supported in this browser');
88770
+ return [2 /*return*/, false];
88771
+ }
88772
+ if (document.pictureInPictureElement) {
88773
+ console.warn('Another video is already in Picture-in-Picture mode');
88774
+ return [2 /*return*/, false];
88775
+ }
88776
+ _a.label = 1;
88777
+ case 1:
88778
+ _a.trys.push([1, 5,, 6]);
88779
+ // Store video state
88780
+ setPipVideoState(videoState);
88781
+ videoElementRef.current = videoElement;
88782
+ if (!(videoElement.paused && videoState.isPlaying)) return [3 /*break*/, 3];
88783
+ return [4 /*yield*/, videoElement.play()];
88784
+ case 2:
88785
+ _a.sent();
88786
+ _a.label = 3;
88787
+ case 3:
88788
+ return [4 /*yield*/, videoElement.requestPictureInPicture()];
88789
+ case 4:
88790
+ _a.sent();
88791
+ return [2 /*return*/, true];
88792
+ case 5:
88793
+ error_1 = _a.sent();
88794
+ console.error('Failed to enter picture-in-picture:', error_1);
88795
+ return [2 /*return*/, false];
88796
+ case 6:
88797
+ return [2 /*return*/];
88798
+ }
88799
+ });
88800
+ });
88801
+ }, []);
88802
+ var exitPiP = useCallback(function () {
88803
+ return __awaiter(void 0, void 0, void 0, function () {
88804
+ var error_2;
88805
+ return __generator(this, function (_a) {
88806
+ switch (_a.label) {
88807
+ case 0:
88808
+ _a.trys.push([0, 3,, 4]);
88809
+ if (!document.pictureInPictureElement) return [3 /*break*/, 2];
88810
+ return [4 /*yield*/, document.exitPictureInPicture()];
88811
+ case 1:
88812
+ _a.sent();
88813
+ _a.label = 2;
88814
+ case 2:
88815
+ return [2 /*return*/, true];
88816
+ case 3:
88817
+ error_2 = _a.sent();
88818
+ console.error('Failed to exit picture-in-picture:', error_2);
88819
+ return [2 /*return*/, false];
88820
+ case 4:
88821
+ return [2 /*return*/];
88822
+ }
88823
+ });
88824
+ });
88825
+ }, []);
88826
+ // Listen for PiP events
88827
+ useEffect(function () {
88828
+ var handlePiPEnter = function handlePiPEnter() {
88829
+ setIsPiPActive(true);
88830
+ };
88831
+ var handlePiPLeave = function handlePiPLeave() {
88832
+ setIsPiPActive(false);
88833
+ // Keep the video state for potential restoration
88834
+ // but don't clear it immediately
88835
+ };
88836
+ document.addEventListener('enterpictureinpicture', handlePiPEnter);
88837
+ document.addEventListener('leavepictureinpicture', handlePiPLeave);
88838
+ return function () {
88839
+ document.removeEventListener('enterpictureinpicture', handlePiPEnter);
88840
+ document.removeEventListener('leavepictureinpicture', handlePiPLeave);
88841
+ };
88842
+ }, []);
88843
+ var value = {
88844
+ isPiPActive: isPiPActive,
88845
+ pipVideoState: pipVideoState,
88846
+ enterPiP: enterPiP,
88847
+ exitPiP: exitPiP,
88848
+ updateVideoState: updateVideoState,
88849
+ registerVideoElement: registerVideoElement,
88850
+ unregisterVideoElement: unregisterVideoElement
88851
+ };
88852
+ return jsxRuntimeExports.jsx(PiPContext.Provider, {
88853
+ value: value,
88854
+ children: children
88855
+ });
88856
+ };
88857
+
88858
+ var usePiP = function usePiP() {
88859
+ var context = useContext(PiPContext);
88860
+ if (context === undefined) {
88861
+ throw new Error('usePiP must be used within a PiPProvider');
88862
+ }
88863
+ return context;
88864
+ };
88865
+
88741
88866
  var count = 0;
88742
88867
  var defaultVideoState = {
88743
88868
  muted: false,
@@ -88769,26 +88894,30 @@ function usePlayerControls(_a) {
88769
88894
  isSubtitlesChecked = _e[0],
88770
88895
  setIsSubtitlesChecked = _e[1];
88771
88896
  var _f = useState(false),
88772
- isPiPActive = _f[0],
88773
- setIsPiPActive = _f[1];
88897
+ isFullscreen = _f[0],
88898
+ setIsFullscreen = _f[1];
88774
88899
  var _g = useState(false),
88775
- isFullscreen = _g[0],
88776
- setIsFullscreen = _g[1];
88777
- var _h = useState(false),
88778
- isControlsActive = _h[0],
88779
- setIsControlsActive = _h[1];
88900
+ isControlsActive = _g[0],
88901
+ setIsControlsActive = _g[1];
88780
88902
  var videoPlayerRef = useRef(null);
88781
88903
  var controlRef = useRef(null);
88782
88904
  var playerContainerRef = useRef(null);
88783
- var _j = useState([]),
88784
- subtitles = _j[0],
88785
- setSubtitles = _j[1];
88786
- var _k = useState(''),
88787
- currentSubtitle = _k[0],
88788
- setCurrentSubtitle = _k[1];
88905
+ var _h = useState([]),
88906
+ subtitles = _h[0],
88907
+ setSubtitles = _h[1];
88908
+ var _j = useState(''),
88909
+ currentSubtitle = _j[0],
88910
+ setCurrentSubtitle = _j[1];
88789
88911
  var lastSubtitleIndexRef = useRef(null);
88790
88912
  var lastPlaybackTimeRef = useRef(0);
88791
88913
  var lastCallTimeRef = useRef(Date.now());
88914
+ // Use PiP context instead of local state
88915
+ var _k = usePiP(),
88916
+ isPiPActive = _k.isPiPActive,
88917
+ enterPiP = _k.enterPiP,
88918
+ exitPiP = _k.exitPiP,
88919
+ registerVideoElement = _k.registerVideoElement,
88920
+ unregisterVideoElement = _k.unregisterVideoElement;
88792
88921
  var muted = videoState.muted,
88793
88922
  volume = videoState.volume,
88794
88923
  prevVolume = videoState.prevVolume,
@@ -88818,10 +88947,21 @@ function usePlayerControls(_a) {
88818
88947
  setIsFullscreen(!!document.fullscreenElement);
88819
88948
  };
88820
88949
  var handlePiPEnter = function handlePiPEnter() {
88821
- setIsPiPActive(true);
88950
+ var _a;
88951
+ // Use context method to update global PiP state
88952
+ var videoElement = (_a = videoPlayerRef.current) === null || _a === void 0 ? void 0 : _a.getInternalPlayer();
88953
+ if (videoElement && videoElement instanceof HTMLVideoElement) {
88954
+ enterPiP(videoElement, {
88955
+ url: url,
88956
+ currentTime: videoElement.currentTime,
88957
+ isPlaying: isPlaying,
88958
+ volume: videoState.volume,
88959
+ muted: videoState.muted
88960
+ });
88961
+ }
88822
88962
  };
88823
88963
  var handlePiPLeave = function handlePiPLeave() {
88824
- setIsPiPActive(false);
88964
+ exitPiP();
88825
88965
  };
88826
88966
  document.addEventListener('fullscreenchange', handleFullscreenChange);
88827
88967
  document.addEventListener('enterpictureinpicture', handlePiPEnter);
@@ -88831,6 +88971,8 @@ function usePlayerControls(_a) {
88831
88971
  if (videoElement && videoElement instanceof HTMLVideoElement) {
88832
88972
  videoElement.addEventListener('enterpictureinpicture', handlePiPEnter);
88833
88973
  videoElement.addEventListener('leavepictureinpicture', handlePiPLeave);
88974
+ // Register video element with PiP context
88975
+ registerVideoElement(videoElement);
88834
88976
  }
88835
88977
  return function () {
88836
88978
  document.removeEventListener('fullscreenchange', handleFullscreenChange);
@@ -88841,8 +88983,10 @@ function usePlayerControls(_a) {
88841
88983
  videoElement.removeEventListener('enterpictureinpicture', handlePiPEnter);
88842
88984
  videoElement.removeEventListener('leavepictureinpicture', handlePiPLeave);
88843
88985
  }
88986
+ // Unregister video element from PiP context
88987
+ unregisterVideoElement();
88844
88988
  };
88845
- }, [url]); // Re-run when URL changes to ensure proper cleanup and setup
88989
+ }, [url, enterPiP, exitPiP, registerVideoElement, unregisterVideoElement, isPlaying, videoState.volume, videoState.muted]); // Re-run when URL changes to ensure proper cleanup and setup
88846
88990
  useEffect(function () {
88847
88991
  setStartPlayed(false);
88848
88992
  }, [url]);
@@ -89055,25 +89199,19 @@ function usePlayerControls(_a) {
89055
89199
  console.warn('Picture-in-Picture is not supported in this browser');
89056
89200
  return;
89057
89201
  }
89058
- if (document.pictureInPictureElement) {
89059
- document.exitPictureInPicture()["catch"](function (error) {
89060
- console.error('Failed to exit picture-in-picture:', error);
89061
- });
89202
+ if (isPiPActive) {
89203
+ // Exit PiP using context method
89204
+ exitPiP();
89062
89205
  } else {
89063
- // Ensure the video is playing before entering PiP mode
89064
- if (videoElement.paused && isPlaying) {
89065
- videoElement.play().then(function () {
89066
- videoElement.requestPictureInPicture()["catch"](function (error) {
89067
- console.error('Failed to enter picture-in-picture:', error);
89068
- });
89069
- })["catch"](function (error) {
89070
- console.error('Failed to play video before PiP:', error);
89071
- });
89072
- } else {
89073
- videoElement.requestPictureInPicture()["catch"](function (error) {
89074
- console.error('Failed to enter picture-in-picture:', error);
89075
- });
89076
- }
89206
+ // Enter PiP using context method
89207
+ var pipVideoState = {
89208
+ url: url,
89209
+ currentTime: videoElement.currentTime,
89210
+ isPlaying: isPlaying,
89211
+ volume: videoState.volume,
89212
+ muted: videoState.muted
89213
+ };
89214
+ enterPiP(videoElement, pipVideoState);
89077
89215
  }
89078
89216
  };
89079
89217
  var handleKeyDown = useCallback(function (event) {
@@ -89448,131 +89586,6 @@ var VideoPlayer = function VideoPlayer(_a) {
89448
89586
  });
89449
89587
  };
89450
89588
 
89451
- var PiPContext = /*#__PURE__*/createContext(undefined);
89452
- var PiPProvider = function PiPProvider(_a) {
89453
- var children = _a.children;
89454
- var _b = useState(false),
89455
- isPiPActive = _b[0],
89456
- setIsPiPActive = _b[1];
89457
- var _c = useState(null),
89458
- pipVideoState = _c[0],
89459
- setPipVideoState = _c[1];
89460
- var videoElementRef = useRef(null);
89461
- var updateVideoState = useCallback(function (state) {
89462
- setPipVideoState(function (prev) {
89463
- return prev ? __assign(__assign({}, prev), state) : null;
89464
- });
89465
- }, []);
89466
- var registerVideoElement = useCallback(function (element) {
89467
- videoElementRef.current = element;
89468
- }, []);
89469
- var unregisterVideoElement = useCallback(function () {
89470
- videoElementRef.current = null;
89471
- }, []);
89472
- var enterPiP = useCallback(function (videoElement, videoState) {
89473
- return __awaiter(void 0, void 0, void 0, function () {
89474
- var error_1;
89475
- return __generator(this, function (_a) {
89476
- switch (_a.label) {
89477
- case 0:
89478
- if (!document.pictureInPictureEnabled) {
89479
- console.warn('Picture-in-Picture is not supported in this browser');
89480
- return [2 /*return*/, false];
89481
- }
89482
- if (document.pictureInPictureElement) {
89483
- console.warn('Another video is already in Picture-in-Picture mode');
89484
- return [2 /*return*/, false];
89485
- }
89486
- _a.label = 1;
89487
- case 1:
89488
- _a.trys.push([1, 5,, 6]);
89489
- // Store video state
89490
- setPipVideoState(videoState);
89491
- videoElementRef.current = videoElement;
89492
- if (!(videoElement.paused && videoState.isPlaying)) return [3 /*break*/, 3];
89493
- return [4 /*yield*/, videoElement.play()];
89494
- case 2:
89495
- _a.sent();
89496
- _a.label = 3;
89497
- case 3:
89498
- return [4 /*yield*/, videoElement.requestPictureInPicture()];
89499
- case 4:
89500
- _a.sent();
89501
- return [2 /*return*/, true];
89502
- case 5:
89503
- error_1 = _a.sent();
89504
- console.error('Failed to enter picture-in-picture:', error_1);
89505
- return [2 /*return*/, false];
89506
- case 6:
89507
- return [2 /*return*/];
89508
- }
89509
- });
89510
- });
89511
- }, []);
89512
- var exitPiP = useCallback(function () {
89513
- return __awaiter(void 0, void 0, void 0, function () {
89514
- var error_2;
89515
- return __generator(this, function (_a) {
89516
- switch (_a.label) {
89517
- case 0:
89518
- _a.trys.push([0, 3,, 4]);
89519
- if (!document.pictureInPictureElement) return [3 /*break*/, 2];
89520
- return [4 /*yield*/, document.exitPictureInPicture()];
89521
- case 1:
89522
- _a.sent();
89523
- _a.label = 2;
89524
- case 2:
89525
- return [2 /*return*/, true];
89526
- case 3:
89527
- error_2 = _a.sent();
89528
- console.error('Failed to exit picture-in-picture:', error_2);
89529
- return [2 /*return*/, false];
89530
- case 4:
89531
- return [2 /*return*/];
89532
- }
89533
- });
89534
- });
89535
- }, []);
89536
- // Listen for PiP events
89537
- useEffect(function () {
89538
- var handlePiPEnter = function handlePiPEnter() {
89539
- setIsPiPActive(true);
89540
- };
89541
- var handlePiPLeave = function handlePiPLeave() {
89542
- setIsPiPActive(false);
89543
- // Keep the video state for potential restoration
89544
- // but don't clear it immediately
89545
- };
89546
- document.addEventListener('enterpictureinpicture', handlePiPEnter);
89547
- document.addEventListener('leavepictureinpicture', handlePiPLeave);
89548
- return function () {
89549
- document.removeEventListener('enterpictureinpicture', handlePiPEnter);
89550
- document.removeEventListener('leavepictureinpicture', handlePiPLeave);
89551
- };
89552
- }, []);
89553
- var value = {
89554
- isPiPActive: isPiPActive,
89555
- pipVideoState: pipVideoState,
89556
- enterPiP: enterPiP,
89557
- exitPiP: exitPiP,
89558
- updateVideoState: updateVideoState,
89559
- registerVideoElement: registerVideoElement,
89560
- unregisterVideoElement: unregisterVideoElement
89561
- };
89562
- return jsxRuntimeExports.jsx(PiPContext.Provider, {
89563
- value: value,
89564
- children: children
89565
- });
89566
- };
89567
-
89568
- var usePiP = function usePiP() {
89569
- var context = useContext(PiPContext);
89570
- if (context === undefined) {
89571
- throw new Error('usePiP must be used within a PiPProvider');
89572
- }
89573
- return context;
89574
- };
89575
-
89576
89589
  var Whiteboard = dt.div(templateObject_1$6 || (templateObject_1$6 = __makeTemplateObject(["\n background-color: #ffffff;\n padding: 20px;\n width: 100%;\n display: flex;\n align-items: center;\n justify-content: center;\n min-height: 75vh;\n border: 1px solid #e7e9ed;\n border-radius: 4px;\n flex-direction: column;\n padding: 40px;\n"], ["\n background-color: #ffffff;\n padding: 20px;\n width: 100%;\n display: flex;\n align-items: center;\n justify-content: center;\n min-height: 75vh;\n border: 1px solid #e7e9ed;\n border-radius: 4px;\n flex-direction: column;\n padding: 40px;\n"])));
89577
89590
  var CenteredText = dt.div(templateObject_2$4 || (templateObject_2$4 = __makeTemplateObject(["\n font-weight: 800;\n display: flex;\n flex-direction: column;\n align-items: center;\n font-size: 20px;\n font-family: 'Open Sans', sans-serif;\n text-align: center;\n gap: 8px;\n margin-top: ", ";\n\n h1 {\n font-size: 18px;\n font-weight: 800;\n }\n\n h4 {\n color: #68707a;\n font-size: 16px;\n font-weight: 500;\n }\n"], ["\n font-weight: 800;\n display: flex;\n flex-direction: column;\n align-items: center;\n font-size: 20px;\n font-family: 'Open Sans', sans-serif;\n text-align: center;\n gap: 8px;\n margin-top: ", ";\n\n h1 {\n font-size: 18px;\n font-weight: 800;\n }\n\n h4 {\n color: #68707a;\n font-size: 16px;\n font-weight: 500;\n }\n"])), function (_a) {
89578
89591
  var marginTop = _a.marginTop;