|
@@ -1,49 +1,49 @@
|
1
|
1
|
import React, { useCallback, useEffect, useRef, useState } from 'react';
|
2
|
2
|
import useResize from '@/utils/hooks/useResize';
|
3
|
3
|
|
4
|
|
-export function useFullScreen() {
|
5
|
|
- const [style, setStyle] = useState({});
|
|
4
|
+export function useFullScreen(elRef) {
|
6
|
5
|
const [isFullScreen, setIsFullScreen] = useState(false);
|
7
|
6
|
const fullScreenRef = useRef();
|
8
|
7
|
fullScreenRef.current = isFullScreen;
|
9
|
8
|
|
10
|
|
- const calcStyle = useCallback(() => {
|
11
|
|
- const container = document.querySelector('main.ant-layout-content');
|
12
|
|
- const header = container.querySelector('.ant-pro-page-container-warp');
|
13
|
|
- const height = container.offsetHeight - header.offsetHeight;
|
14
|
|
-
|
15
|
|
- setStyle({
|
16
|
|
- width: '100%',
|
17
|
|
- height: `${height}px`,
|
18
|
|
- });
|
19
|
|
- }, []);
|
20
|
|
-
|
21
|
|
- const onFullScreen = useCallback((e) => {
|
22
|
|
- document.documentElement.requestFullscreen();
|
23
|
|
- setIsFullScreen(true);
|
24
|
|
- }, []);
|
25
|
|
-
|
26
|
|
- useResize((w, h) => {
|
27
|
|
- if (fullScreenRef.current) {
|
28
|
|
- calcStyle();
|
29
|
|
- } else {
|
30
|
|
- setStyle({
|
31
|
|
- width: `${w}px`,
|
32
|
|
- height: `${h}px`,
|
|
9
|
+ const toggleFullScreen = useCallback((e) => {
|
|
10
|
+ if (!document.fullscreenElement) {
|
|
11
|
+ elRef.current.requestFullscreen().then(() => {
|
|
12
|
+ setIsFullScreen(true);
|
33
|
13
|
});
|
34
|
14
|
}
|
|
15
|
+ }, []);
|
|
16
|
+
|
|
17
|
+ // useResize((w, h) => {
|
|
18
|
+ // if (fullScreenRef.current) {
|
|
19
|
+ // calcStyle();
|
|
20
|
+ // } else {
|
|
21
|
+ // setStyle({
|
|
22
|
+ // width: `${w}px`,
|
|
23
|
+ // height: `${h}px`,
|
|
24
|
+ // });
|
|
25
|
+ // }
|
35
|
26
|
|
36
|
|
- setIsFullScreen(!fullScreenRef.current);
|
37
|
|
- });
|
|
27
|
+ // setIsFullScreen(!fullScreenRef.current);
|
|
28
|
+ // });
|
38
|
29
|
|
39
|
30
|
useEffect(() => {
|
40
|
|
- calcStyle();
|
|
31
|
+ console.log('-----fullscreenchange------>', elRef.current);
|
|
32
|
+ const handleFullScreenChange = (e) => {
|
|
33
|
+ console.log(
|
|
34
|
+ '-----handleFullScreenChange------>',
|
|
35
|
+ document.fullscreenElement,
|
|
36
|
+ fullScreenRef.current,
|
|
37
|
+ );
|
|
38
|
+ setIsFullScreen(document.fullscreenElement === fullScreenRef.current);
|
|
39
|
+ };
|
|
40
|
+
|
|
41
|
+ elRef.current.onfullscreenchange = handleFullScreenChange;
|
|
42
|
+
|
|
43
|
+ // elRef.current.addEventListener('fullscreenchange', handleFullScreenChange);
|
41
|
44
|
|
42
|
|
- //
|
43
|
|
- window.addEventListener('onFullScreenChange', (e) => {
|
44
|
|
- console.log('-------onFullScreenChange----->', e);
|
45
|
|
- });
|
|
45
|
+ return elRef.current.removeEventListener('fullscreenchange', handleFullScreenChange);
|
46
|
46
|
}, []);
|
47
|
47
|
|
48
|
|
- return { style, isFullScreen, onFullScreen };
|
|
48
|
+ return { isFullScreen, toggleFullScreen };
|
49
|
49
|
}
|