2
2
3
3
import { MaybeRef } from '@vueuse/shared'
4
4
import { ref } from 'vue-demi'
5
+ import { useEventListener } from '../useEventListener'
5
6
import { ConfigurableDocument , defaultDocument } from '../_configurable'
6
7
7
8
type FunctionMap = [
@@ -75,7 +76,7 @@ export function useFullscreen(
75
76
const isFullscreen = ref ( false )
76
77
let isSupported = false
77
78
78
- let map : FunctionMap
79
+ let map : FunctionMap = functionsMap [ 0 ]
79
80
80
81
if ( ! document ) {
81
82
isSupported = false
@@ -90,11 +91,13 @@ export function useFullscreen(
90
91
}
91
92
}
92
93
94
+ const [ REQUEST , EXIT , ELEMENT , _ , EVENT ] = map
95
+
93
96
async function exit ( ) {
94
97
if ( ! isSupported )
95
98
return
96
- if ( document ?. [ map [ 2 ] ] ) // fullscreenElement
97
- await document [ map [ 1 ] ] ( ) // exit
99
+ if ( document ?. [ ELEMENT ] )
100
+ await document [ EXIT ] ( )
98
101
99
102
isFullscreen . value = false
100
103
}
@@ -106,7 +109,7 @@ export function useFullscreen(
106
109
await exit ( )
107
110
108
111
if ( targetRef . value ) {
109
- await targetRef . value ! [ map [ 0 ] ] ( ) // requestFullScreen
112
+ await targetRef . value [ REQUEST ] ( )
110
113
isFullscreen . value = true
111
114
}
112
115
}
@@ -118,6 +121,12 @@ export function useFullscreen(
118
121
await enter ( )
119
122
}
120
123
124
+ if ( document ) {
125
+ useEventListener ( document , EVENT , ( ) => {
126
+ isFullscreen . value = ! ! document ?. [ ELEMENT ]
127
+ } , false )
128
+ }
129
+
121
130
return {
122
131
isSupported,
123
132
isFullscreen,
0 commit comments