From ef09ded98c6856bf35273d19d77384ef837e3edc Mon Sep 17 00:00:00 2001 From: 1ilit Date: Tue, 19 Sep 2023 15:48:35 +0300 Subject: [PATCH] Handle entering and exiting fullscreen --- src/components/control_panel.jsx | 242 ++++++++++++++++--------------- src/pages/editor.jsx | 1 + src/utils/index.js | 26 ++++ 3 files changed, 155 insertions(+), 114 deletions(-) create mode 100644 src/utils/index.js diff --git a/src/components/control_panel.jsx b/src/components/control_panel.jsx index de8f003..739b9b0 100644 --- a/src/components/control_panel.jsx +++ b/src/components/control_panel.jsx @@ -21,6 +21,7 @@ import { } from "@douyinfe/semi-ui"; import { toPng, toJpeg, toSvg } from "html-to-image"; import { saveAs } from "file-saver"; +import { enterFullscreen, exitFullscreen } from "../utils"; export default function ControlPanel(props) { const [visible, setVisible] = useState(false); @@ -193,18 +194,7 @@ export default function ControlPanel(props) { }, Fullscreen: { children: [], - function: () => { - const element = document.documentElement; - if (element.requestFullscreen) { - element.requestFullscreen(); - } else if (element.mozRequestFullScreen) { - element.mozRequestFullScreen(); - } else if (element.webkitRequestFullscreen) { - element.webkitRequestFullscreen(); - } else if (element.msRequestFullscreen) { - element.msRequestFullscreen(); - } - }, + function: enterFullscreen, }, }, Logs: { @@ -247,9 +237,7 @@ export default function ControlPanel(props) { return ( <> - {props.layout.header && ( - header() - )} + {props.layout.header && header()}
{layoutDropdown()} @@ -396,113 +384,120 @@ export default function ControlPanel(props) { ); function header() { - return ; +
+ + ); } function layoutDropdown() { @@ -657,7 +652,26 @@ export default function ControlPanel(props) { Services - }> + + ) : ( +
+ ) + } + onClick={() => { + if (props.layout.fullscreen) { + exitFullscreen(); + } else { + enterFullscreen(); + } + props.setLayout((prev) => ({ + ...prev, + fullscreen: !prev.fullscreen, + })); + }} + > Fullscreen
diff --git a/src/pages/editor.jsx b/src/pages/editor.jsx index 413cbe9..ffe0655 100644 --- a/src/pages/editor.jsx +++ b/src/pages/editor.jsx @@ -22,6 +22,7 @@ export default function Editor(props) { issues: true, editor: true, shapes: true, + fullscreen: false, }); const dragHandler = (e) => { diff --git a/src/utils/index.js b/src/utils/index.js new file mode 100644 index 0000000..cc83830 --- /dev/null +++ b/src/utils/index.js @@ -0,0 +1,26 @@ +const enterFullscreen = () => { + const element = document.documentElement; + if (element.requestFullscreen) { + element.requestFullscreen(); + } else if (element.mozRequestFullScreen) { + element.mozRequestFullScreen(); + } else if (element.webkitRequestFullscreen) { + element.webkitRequestFullscreen(); + } else if (element.msRequestFullscreen) { + element.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(); + } +}; + +export { enterFullscreen, exitFullscreen };