📄 useWakeLock¶
📊 Analysis Summary¶
| Metric | Count |
|---|---|
| 🔧 Functions | 4 |
| 📦 Imports | 14 |
| ⚡ Async/Await Patterns | 4 |
| 🟢 Vue Composition API | 1 |
| 📐 Interfaces | 2 |
| 📑 Type Aliases | 3 |
📚 Table of Contents¶
🛠️ File Location:¶
📂 packages/core/useWakeLock/index.ts
📦 Imports¶
| Name | Source |
|---|---|
ComputedRef |
vue |
ShallowRef |
vue |
ConfigurableDocument |
../_configurable |
ConfigurableNavigator |
../_configurable |
Supportable |
../types |
tryOnScopeDispose |
@vueuse/shared |
whenever |
@vueuse/shared |
computed |
vue |
shallowRef |
vue |
defaultDocument |
../_configurable |
defaultNavigator |
../_configurable |
useDocumentVisibility |
../useDocumentVisibility |
useEventListener |
../useEventListener |
useSupported |
../useSupported |
Async/Await Patterns¶
| Type | Function | Await Expressions | Promise Chains |
|---|---|---|---|
| await-expression | useWakeLock |
sentinel.value?.release(), (navigator as NavigatorWithWakeLock).wakeLock.requ... | none |
| async-function | forceRequest |
sentinel.value?.release(), (navigator as NavigatorWithWakeLock).wakeLock.requ... | none |
| async-function | request |
forceRequest(type) | none |
| async-function | release |
s?.release() | none |
Vue Composition API¶
| Name | Type | Reactive Variables | Composables |
|---|---|---|---|
computed |
computed | none | none |
Functions¶
useWakeLock(options: UseWakeLockOptions): UseWakeLockReturn¶
Reactive Screen Wake Lock API.
Parameters:
optionsany: No description
See: https://vueuse.org/useWakeLock
Tags: @__NO_SIDE_EFFECTS__
Raw JSDoc
Calls:
shallowRef (from vue)useDocumentVisibility (from ../useDocumentVisibility)useSupported (from ../useSupported)computed (from vue)useEventListener (from ../useEventListener)whenever (from @vueuse/shared)forceRequestsentinel.value?.release(navigator as NavigatorWithWakeLock).wakeLock.requests?.releasetryOnScopeDispose (from @vueuse/shared)release
Code
export function useWakeLock(options: UseWakeLockOptions = {}): UseWakeLockReturn {
const {
navigator = defaultNavigator,
document = defaultDocument,
} = options
const requestedType = shallowRef<WakeLockType | false>(false)
const sentinel = shallowRef<WakeLockSentinel | null>(null)
const documentVisibility = useDocumentVisibility({ document })
const isSupported = useSupported(() => navigator && 'wakeLock' in navigator)
const isActive = computed(() => !!sentinel.value && documentVisibility.value === 'visible')
if (isSupported.value) {
useEventListener(sentinel, 'release', () => {
requestedType.value = sentinel.value?.type ?? false
}, { passive: true })
whenever(
() => documentVisibility.value === 'visible' && document?.visibilityState === 'visible' && requestedType.value,
(type) => {
requestedType.value = false
forceRequest(type)
},
)
}
async function forceRequest(type: WakeLockType) {
await sentinel.value?.release()
sentinel.value = isSupported.value
? await (navigator as NavigatorWithWakeLock).wakeLock.request(type)
: null
}
async function request(type: WakeLockType) {
if (documentVisibility.value === 'visible')
await forceRequest(type)
else
requestedType.value = type
}
async function release() {
requestedType.value = false
const s = sentinel.value
sentinel.value = null
await s?.release()
}
tryOnScopeDispose(() => {
release()
})
return {
sentinel,
isSupported,
isActive,
request,
forceRequest,
release,
}
}
Internal helpers¶
Declared inside another function in this file.
forceRequest(type: WakeLockType): Promise<void>¶
Parameters:
typeWakeLockType
Returns: Promise<void>
Calls:
sentinel.value?.release(navigator as NavigatorWithWakeLock).wakeLock.request
Code
request(type: WakeLockType): Promise<void>¶
Parameters:
typeWakeLockType
Returns: Promise<void>
Calls:
forceRequest
Code
release(): Promise<void>¶
Returns: Promise<void>
Calls:
s?.release
Code
Interfaces¶
WakeLockSentinel¶
Interface Code
Properties¶
| Name | Type | Optional | Description |
|---|---|---|---|
type |
WakeLockType |
✗ | not shown |
released |
boolean |
✗ | not shown |
release |
() => Promise<void> |
✗ | not shown |
UseWakeLockReturn¶
Interface Code
Properties¶
| Name | Type | Optional | Description |
|---|---|---|---|
sentinel |
ShallowRef<WakeLockSentinel \| null> |
✗ | not shown |
isActive |
ComputedRef<boolean> |
✗ | not shown |
request |
(type: WakeLockType) => Promise<void> |
✗ | not shown |
forceRequest |
(type: WakeLockType) => Promise<void> |
✗ | not shown |
release |
() => Promise<void> |
✗ | not shown |
Type Aliases¶
WakeLockType¶
NavigatorWithWakeLock¶
type NavigatorWithWakeLock = Navigator & {
wakeLock: { request: (type: WakeLockType) => Promise<WakeLockSentinel> }
};
UseWakeLockOptions¶
Generated by Syntax Scribe