mirror of
https://github.com/OpenSignLabs/OpenSign.git
synced 2026-09-04 16:58:05 +02:00
83 lines
2.4 KiB
React
83 lines
2.4 KiB
React
// FullScreenButton.js
|
|
import React, { useState, useEffect } from "react";
|
|
|
|
const FullScreenButton = () => {
|
|
const [isFullScreen, setIsFullScreen] = useState(false);
|
|
|
|
useEffect(() => {
|
|
document.addEventListener("fullscreenchange", handleFullScreenChange);
|
|
document.addEventListener("webkitfullscreenchange", handleFullScreenChange);
|
|
document.addEventListener("mozfullscreenchange", handleFullScreenChange);
|
|
document.addEventListener("MSFullscreenChange", handleFullScreenChange);
|
|
|
|
return () => {
|
|
document.removeEventListener("fullscreenchange", handleFullScreenChange);
|
|
document.removeEventListener(
|
|
"webkitfullscreenchange",
|
|
handleFullScreenChange
|
|
);
|
|
document.removeEventListener(
|
|
"mozfullscreenchange",
|
|
handleFullScreenChange
|
|
);
|
|
document.removeEventListener(
|
|
"MSFullscreenChange",
|
|
handleFullScreenChange
|
|
);
|
|
};
|
|
}, []);
|
|
|
|
const handleFullScreenChange = () => {
|
|
setIsFullScreen(!!document.fullscreenElement);
|
|
};
|
|
|
|
const toggleFullScreen = () => {
|
|
if (isFullScreen) {
|
|
exitFullScreen();
|
|
} else {
|
|
requestFullScreen();
|
|
}
|
|
};
|
|
|
|
const requestFullScreen = () => {
|
|
if (document.documentElement.requestFullscreen) {
|
|
document.documentElement.requestFullscreen();
|
|
} else if (document.documentElement.mozRequestFullScreen) {
|
|
document.documentElement.mozRequestFullScreen();
|
|
} else if (document.documentElement.webkitRequestFullscreen) {
|
|
document.documentElement.webkitRequestFullscreen();
|
|
} else if (document.documentElement.msRequestFullscreen) {
|
|
document.documentElement.msRequestFullscreen();
|
|
}
|
|
};
|
|
|
|
const exitFullScreen = () => {
|
|
if (document.exitFullscreen) {
|
|
document.exitFullscreen();
|
|
} else if (document.mozCancelFullScreen) {
|
|
document.mozCancelFullScreen();
|
|
} else if (document.webkitExitFullscreen) {
|
|
document.webkitExitFullscreen();
|
|
} else if (document.msExitFullscreen) {
|
|
document.msExitFullscreen();
|
|
}
|
|
};
|
|
|
|
return (
|
|
<div className="flex items-center">
|
|
<button
|
|
onClick={toggleFullScreen}
|
|
className="text-base-content p-2 text-sm focus:outline-none"
|
|
>
|
|
{isFullScreen ? (
|
|
<i className="fa-light fa-compress"></i>
|
|
) : (
|
|
<i className="fa-light fa-maximize"></i>
|
|
)}
|
|
</button>
|
|
</div>
|
|
);
|
|
};
|
|
|
|
export default FullScreenButton;
|