📄 index.ts
¶
📊 Analysis Summary¶
Metric | Count |
---|---|
🔧 Functions | 7 |
📦 Imports | 10 |
📊 Variables & Constants | 6 |
⚡ Async/Await Patterns | 4 |
🟢 Vue Composition API | 4 |
📐 Interfaces | 1 |
📑 Type Aliases | 1 |
📚 Table of Contents¶
- Imports
- Variables & Constants
- Async/Await Patterns
- Vue Composition API
- Functions
- Interfaces
- Type Aliases
🛠️ File Location:¶
📂 packages/core/useFullscreen/index.ts
📦 Imports¶
Name | Source |
---|---|
ConfigurableDocument |
../_configurable |
MaybeElementRef |
../unrefElement |
tryOnMounted |
@vueuse/shared |
tryOnScopeDispose |
@vueuse/shared |
computed |
vue |
shallowRef |
vue |
defaultDocument |
../_configurable |
unrefElement |
../unrefElement |
useEventListener |
../useEventListener |
useSupported |
../useSupported |
Variables & Constants¶
Name | Type | Kind | Value | Exported |
---|---|---|---|---|
eventHandlers |
"fullscreenchange"[] |
const | `[ | |
'fullscreenchange', | ||||
'webkitfullscreenchange', | ||||
'webkitendfullscreen', | ||||
'mozfullscreenchange', | ||||
'MSFullscreenChange', | ||||
] as any as 'fullscreenchange'[]` | ✗ | |||
fullscreenElementMethod |
"fullscreenElement" |
const | `[ | |
'fullscreenElement', | ||||
'webkitFullscreenElement', | ||||
'mozFullScreenElement', | ||||
'msFullscreenElement', | ||||
].find(m => (document && m in document)) as 'fullscreenElement' | undefined` | ✗ | ||
target |
any |
const | targetRef.value |
✗ |
target |
any |
let/var | targetRef.value |
✗ |
target |
any |
let/var | targetRef.value |
✗ |
listenerOptions |
{ capture: boolean; passive: boolean; } |
const | { capture: false, passive: true } |
✗ |
Async/Await Patterns¶
Type | Function | Await Expressions | Promise Chains |
---|---|---|---|
await-expression | useFullscreen |
documentexitMethod.value, targetexitMethod.value, exit(), targetrequestMethod.value, (isFullscreen.value ? exit() : enter()) | none |
async-function | exit |
documentexitMethod.value, targetexitMethod.value | none |
async-function | enter |
exit(), targetrequestMethod.value | none |
async-function | toggle |
(isFullscreen.value ? exit() : enter()) | none |
Vue Composition API¶
Name | Type | Reactive Variables | Composables |
---|---|---|---|
computed |
computed | none | none |
computed |
computed | none | none |
computed |
computed | none | none |
computed |
computed | none | none |
Functions¶
useFullscreen(target: MaybeElementRef, options: UseFullscreenOptions): { isSupported: any; isFullscreen: any; enter: () => Promise<void>; exit: () => Promise<void>; toggle: () => Promise<void>; }
¶
Code
export function useFullscreen(
target?: MaybeElementRef,
options: UseFullscreenOptions = {},
) {
const {
document = defaultDocument,
autoExit = false,
} = options
const targetRef = computed(() => unrefElement(target) ?? document?.documentElement)
const isFullscreen = shallowRef(false)
const requestMethod = computed<'requestFullscreen' | undefined>(() => {
return [
'requestFullscreen',
'webkitRequestFullscreen',
'webkitEnterFullscreen',
'webkitEnterFullScreen',
'webkitRequestFullScreen',
'mozRequestFullScreen',
'msRequestFullscreen',
].find(m => (document && m in document) || (targetRef.value && m in targetRef.value)) as any
})
const exitMethod = computed<'exitFullscreen' | undefined>(() => {
return [
'exitFullscreen',
'webkitExitFullscreen',
'webkitExitFullScreen',
'webkitCancelFullScreen',
'mozCancelFullScreen',
'msExitFullscreen',
].find(m => (document && m in document) || (targetRef.value && m in targetRef.value)) as any
})
const fullscreenEnabled = computed<'fullscreenEnabled' | undefined>(() => {
return [
'fullScreen',
'webkitIsFullScreen',
'webkitDisplayingFullscreen',
'mozFullScreen',
'msFullscreenElement',
].find(m => (document && m in document) || (targetRef.value && m in targetRef.value)) as any
})
const fullscreenElementMethod = [
'fullscreenElement',
'webkitFullscreenElement',
'mozFullScreenElement',
'msFullscreenElement',
].find(m => (document && m in document)) as 'fullscreenElement' | undefined
const isSupported = useSupported(() =>
targetRef.value
&& document
&& requestMethod.value !== undefined
&& exitMethod.value !== undefined
&& fullscreenEnabled.value !== undefined)
const isCurrentElementFullScreen = (): boolean => {
if (fullscreenElementMethod)
return document?.[fullscreenElementMethod] === targetRef.value
return false
}
const isElementFullScreen = (): boolean => {
if (fullscreenEnabled.value) {
if (document && document[fullscreenEnabled.value] != null) {
return document[fullscreenEnabled.value]
}
else {
const target = targetRef.value
// @ts-expect-error - Fallback for WebKit and iOS Safari browsers
if (target?.[fullscreenEnabled.value] != null) {
// @ts-expect-error - Fallback for WebKit and iOS Safari browsers
return Boolean(target[fullscreenEnabled.value])
}
}
}
return false
}
async function exit() {
if (!isSupported.value || !isFullscreen.value)
return
if (exitMethod.value) {
if (document?.[exitMethod.value] != null) {
await document[exitMethod.value]()
}
else {
const target = targetRef.value
// @ts-expect-error - Fallback for Safari iOS
if (target?.[exitMethod.value] != null)
// @ts-expect-error - Fallback for Safari iOS
await target[exitMethod.value]()
}
}
isFullscreen.value = false
}
async function enter() {
if (!isSupported.value || isFullscreen.value)
return
if (isElementFullScreen())
await exit()
const target = targetRef.value
if (requestMethod.value && target?.[requestMethod.value] != null) {
await target[requestMethod.value]()
isFullscreen.value = true
}
}
async function toggle() {
await (isFullscreen.value ? exit() : enter())
}
const handlerCallback = () => {
const isElementFullScreenValue = isElementFullScreen()
if (!isElementFullScreenValue || (isElementFullScreenValue && isCurrentElementFullScreen()))
isFullscreen.value = isElementFullScreenValue
}
const listenerOptions = { capture: false, passive: true }
useEventListener(document, eventHandlers, handlerCallback, listenerOptions)
useEventListener(() => unrefElement(targetRef), eventHandlers, handlerCallback, listenerOptions)
tryOnMounted(handlerCallback, false)
if (autoExit)
tryOnScopeDispose(exit)
return {
isSupported,
isFullscreen,
enter,
exit,
toggle,
}
}
-
JSDoc:
-
Parameters:
target: MaybeElementRef
options: UseFullscreenOptions
- Return Type:
{ isSupported: any; isFullscreen: any; enter: () => Promise<void>; exit: () => Promise<void>; toggle: () => Promise<void>; }
- Calls:
computed (from vue)
unrefElement (from ../unrefElement)
shallowRef (from vue)
[ 'requestFullscreen', 'webkitRequestFullscreen', 'webkitEnterFullscreen', 'webkitEnterFullScreen', 'webkitRequestFullScreen', 'mozRequestFullScreen', 'msRequestFullscreen', ].find
[ 'exitFullscreen', 'webkitExitFullscreen', 'webkitExitFullScreen', 'webkitCancelFullScreen', 'mozCancelFullScreen', 'msExitFullscreen', ].find
[ 'fullScreen', 'webkitIsFullScreen', 'webkitDisplayingFullscreen', 'mozFullScreen', 'msFullscreenElement', ].find
[ 'fullscreenElement', 'webkitFullscreenElement', 'mozFullScreenElement', 'msFullscreenElement', ].find
useSupported (from ../useSupported)
Boolean
complex_call_3670
complex_call_3933
isElementFullScreen
exit
complex_call_4272
enter
isCurrentElementFullScreen
useEventListener (from ../useEventListener)
tryOnMounted (from @vueuse/shared)
tryOnScopeDispose (from @vueuse/shared)
- Internal Comments:
isCurrentElementFullScreen(): boolean
¶
Code
- Return Type:
boolean
isElementFullScreen(): boolean
¶
Code
(): boolean => {
if (fullscreenEnabled.value) {
if (document && document[fullscreenEnabled.value] != null) {
return document[fullscreenEnabled.value]
}
else {
const target = targetRef.value
// @ts-expect-error - Fallback for WebKit and iOS Safari browsers
if (target?.[fullscreenEnabled.value] != null) {
// @ts-expect-error - Fallback for WebKit and iOS Safari browsers
return Boolean(target[fullscreenEnabled.value])
}
}
}
return false
}
- Return Type:
boolean
- Calls:
Boolean
- Internal Comments:
exit(): Promise<void>
¶
Code
async function exit() {
if (!isSupported.value || !isFullscreen.value)
return
if (exitMethod.value) {
if (document?.[exitMethod.value] != null) {
await document[exitMethod.value]()
}
else {
const target = targetRef.value
// @ts-expect-error - Fallback for Safari iOS
if (target?.[exitMethod.value] != null)
// @ts-expect-error - Fallback for Safari iOS
await target[exitMethod.value]()
}
}
isFullscreen.value = false
}
- Return Type:
Promise<void>
- Calls:
complex_call_3670
complex_call_3933
- Internal Comments:
enter(): Promise<void>
¶
Code
- Return Type:
Promise<void>
- Calls:
isElementFullScreen
exit
complex_call_4272
toggle(): Promise<void>
¶
- Return Type:
Promise<void>
- Calls:
exit
enter
handlerCallback(): void
¶
Code
- Return Type:
void
- Calls:
isElementFullScreen
isCurrentElementFullScreen
Interfaces¶
UseFullscreenOptions
¶
Interface Code
Properties¶
Name | Type | Optional | Description |
---|---|---|---|
autoExit |
boolean |
✓ |