Files
pixelstreamingv2/src/components/ui/FullscreenButton/FullscreenButton.tsx
T
DmitriyB 40c9cf2fe1 fixed
2023-02-15 15:33:43 +05:00

63 lines
1.5 KiB
TypeScript

import { useState, useEffect } from "react";
import { Button } from "../button/button";
import fullscreen from "../../../images/icons/fullscreen.svg";
import fullscreenOff from "../../../images/icons/fullscreenOff.svg";
import { FullScreen, useFullScreenHandle } from "react-full-screen";
export const FullscreenButton = ({ }) => {
const handle = useFullScreenHandle();
const [active, setActive] = useState(Boolean(document.fullscreenElement));
const [button, setButton] = useState({
icon: fullscreen,
inactive: "fullscreen-control-btn",
active: "fullscreen-control-btn-active",
type: "fullscreen",
});
function handleClick() {
setActive(Boolean(document.fullscreenElement))
if (!document.fullscreenElement) {
document.body.requestFullscreen()
} else {
document.exitFullscreen()
}
}
useEffect(() => {
setButton({
icon: active ? fullscreen : fullscreenOff,
inactive: "fullscreen-control-btn",
active: "fullscreen-control-btn-active",
type: "fullscreen",
});
}, [active])
useEffect(() => {
function onFullscreenChange() {
setActive(Boolean(document.fullscreenElement));
}
document.addEventListener('fullscreenchange', onFullscreenChange);
return () => document.removeEventListener('fullscreenchange', onFullscreenChange);
}, []);
return (
<div className="toolbar-button-area">
<Button button={button} active={active} onClick={handleClick}></Button>
</div>
);
};