import { useState, useEffect, useCallback } from 'react';
export function useFullscreen() {
const [isFullscreen, setIsFullscreen] = useState(false);
useEffect(() => {
const handleFullscreenChange = () => {
setIsFullscreen(!!document.fullscreenElement);
};
document.addEventListener('fullscreenchange', handleFullscreenChange);
return () => {
document.removeEventListener('fullscreenchange', handleFullscreenChange);
};
}, []);
const enterFullscreen = useCallback((element: HTMLElement) => {
if (element.requestFullscreen) {
element.requestFullscreen().catch((err) => {
console.error('Error attempting to enable fullscreen:', err);
});
}
}, []);
const exitFullscreen = useCallback(() => {
if (document.fullscreenElement) {
document.exitFullscreen();
}
}, []);
const toggleFullscreen = useCallback((element: HTMLElement) => {
if (document.fullscreenElement) {
exitFullscreen();
} else {
enterFullscreen(element);
}
}, [enterFullscreen, exitFullscreen]);
return {
isFullscreen,
enterFullscreen,
exitFullscreen,
toggleFullscreen,
};
}