mirror of
https://github.com/OpenCut-app/OpenCut.git
synced 2026-07-13 21:52:53 +02:00
31 lines
778 B
TypeScript
31 lines
778 B
TypeScript
import { useCallback, useEffect, useState } from "react";
|
|
|
|
export function useFullscreen({
|
|
containerRef,
|
|
}: {
|
|
containerRef: React.RefObject<HTMLElement | null>;
|
|
}) {
|
|
const [isFullscreen, setIsFullscreen] = useState(false);
|
|
|
|
useEffect(() => {
|
|
const handleChange = () => {
|
|
setIsFullscreen(document.fullscreenElement !== null);
|
|
};
|
|
document.addEventListener("fullscreenchange", handleChange);
|
|
return () => {
|
|
document.removeEventListener("fullscreenchange", handleChange);
|
|
};
|
|
}, []);
|
|
|
|
const toggleFullscreen = useCallback(() => {
|
|
if (!containerRef.current) return;
|
|
if (document.fullscreenElement) {
|
|
document.exitFullscreen();
|
|
} else {
|
|
containerRef.current.requestFullscreen();
|
|
}
|
|
}, [containerRef]);
|
|
|
|
return { isFullscreen, toggleFullscreen };
|
|
}
|