analytica-frontend-lib 1.1.86 → 1.1.88

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.mjs CHANGED
@@ -1924,14 +1924,34 @@ var Modal = ({
1924
1924
  return () => document.removeEventListener("keydown", handleEscape);
1925
1925
  }, [isOpen, closeOnEscape, onClose]);
1926
1926
  useEffect3(() => {
1927
+ if (!isOpen) return;
1928
+ const scrollbarWidth = window.innerWidth - document.documentElement.clientWidth;
1927
1929
  const originalOverflow = document.body.style.overflow;
1928
- if (isOpen) {
1929
- document.body.style.overflow = "hidden";
1930
- } else {
1931
- document.body.style.overflow = originalOverflow;
1930
+ const originalPaddingRight = document.body.style.paddingRight;
1931
+ document.body.style.overflow = "hidden";
1932
+ if (scrollbarWidth > 0) {
1933
+ document.body.style.paddingRight = `${scrollbarWidth}px`;
1934
+ const overlay = document.createElement("div");
1935
+ overlay.id = "modal-scrollbar-overlay";
1936
+ overlay.style.cssText = `
1937
+ position: fixed;
1938
+ top: 0;
1939
+ right: 0;
1940
+ width: ${scrollbarWidth}px;
1941
+ height: 100vh;
1942
+ background-color: rgb(0 0 0 / 0.6);
1943
+ z-index: 40;
1944
+ pointer-events: none;
1945
+ `;
1946
+ document.body.appendChild(overlay);
1932
1947
  }
1933
1948
  return () => {
1934
1949
  document.body.style.overflow = originalOverflow;
1950
+ document.body.style.paddingRight = originalPaddingRight;
1951
+ const overlay = document.getElementById("modal-scrollbar-overlay");
1952
+ if (overlay) {
1953
+ overlay.remove();
1954
+ }
1935
1955
  };
1936
1956
  }, [isOpen]);
1937
1957
  if (!isOpen) return null;
@@ -8649,6 +8669,8 @@ var VideoPlayer = ({
8649
8669
  }
8650
8670
  }, [isPlaying, isFullscreen, showControlsWithTimer, clearControlsTimeout]);
8651
8671
  useEffect15(() => {
8672
+ const video = videoRef.current;
8673
+ if (!video) return;
8652
8674
  const handleFullscreenChange = () => {
8653
8675
  const isCurrentlyFullscreen = !!document.fullscreenElement;
8654
8676
  setIsFullscreen(isCurrentlyFullscreen);
@@ -8656,9 +8678,29 @@ var VideoPlayer = ({
8656
8678
  showControlsWithTimer();
8657
8679
  }
8658
8680
  };
8681
+ const handleWebkitBeginFullscreen = () => {
8682
+ setIsFullscreen(true);
8683
+ showControlsWithTimer();
8684
+ };
8685
+ const handleWebkitEndFullscreen = () => {
8686
+ setIsFullscreen(false);
8687
+ };
8659
8688
  document.addEventListener("fullscreenchange", handleFullscreenChange);
8689
+ video.addEventListener(
8690
+ "webkitbeginfullscreen",
8691
+ handleWebkitBeginFullscreen
8692
+ );
8693
+ video.addEventListener("webkitendfullscreen", handleWebkitEndFullscreen);
8660
8694
  return () => {
8661
8695
  document.removeEventListener("fullscreenchange", handleFullscreenChange);
8696
+ video.removeEventListener(
8697
+ "webkitbeginfullscreen",
8698
+ handleWebkitBeginFullscreen
8699
+ );
8700
+ video.removeEventListener(
8701
+ "webkitendfullscreen",
8702
+ handleWebkitEndFullscreen
8703
+ );
8662
8704
  };
8663
8705
  }, [showControlsWithTimer]);
8664
8706
  useEffect15(() => {
@@ -8765,15 +8807,30 @@ var VideoPlayer = ({
8765
8807
  video.currentTime = newTime;
8766
8808
  }
8767
8809
  }, []);
8810
+ const isSafariIOS = useCallback3(() => {
8811
+ const ua = navigator.userAgent;
8812
+ const isIOS = /iPad|iPhone|iPod/.test(ua);
8813
+ const isWebKit = /WebKit/.test(ua);
8814
+ const isNotChrome = !/CriOS|Chrome/.test(ua);
8815
+ return isIOS && isWebKit && isNotChrome;
8816
+ }, []);
8768
8817
  const toggleFullscreen = useCallback3(() => {
8769
- const container = videoRef.current?.parentElement;
8770
- if (!container) return;
8771
- if (!isFullscreen && container.requestFullscreen) {
8818
+ const video = videoRef.current;
8819
+ const container = video?.parentElement;
8820
+ if (!video || !container) return;
8821
+ if (isSafariIOS()) {
8822
+ const videoElement = video;
8823
+ if (!isFullscreen && videoElement.webkitEnterFullscreen) {
8824
+ videoElement.webkitEnterFullscreen();
8825
+ } else if (isFullscreen && videoElement.webkitExitFullscreen) {
8826
+ videoElement.webkitExitFullscreen();
8827
+ }
8828
+ } else if (!isFullscreen && container.requestFullscreen) {
8772
8829
  container.requestFullscreen();
8773
8830
  } else if (isFullscreen && document.exitFullscreen) {
8774
8831
  document.exitFullscreen();
8775
8832
  }
8776
- }, [isFullscreen]);
8833
+ }, [isFullscreen, isSafariIOS]);
8777
8834
  const handleSpeedChange = useCallback3((speed) => {
8778
8835
  if (videoRef.current) {
8779
8836
  videoRef.current.playbackRate = speed;