UNPKG

react-screen-wake-lock

Version:

React implementation of the Screen Wake Lock API. It provides a way to prevent devices from dimming or locking the screen when an application needs to keep running.

1 lines 4.22 kB
{"version":3,"file":"react-screen-wake-lock.cjs","sources":["../src/use-wake-lock.ts"],"sourcesContent":["import * as React from 'react';\n\nconst warn = (content: string) =>\n console.warn('[react-screen-wake-lock]: ' + content);\n\nexport interface WakeLockOptions {\n onError?: (error: Error) => void;\n onRequest?: () => void;\n onRelease?: EventListener;\n}\n\nexport const useWakeLock = ({\n onError,\n onRequest,\n onRelease,\n}: WakeLockOptions | undefined = {}) => {\n const [released, setReleased] = React.useState<boolean | undefined>();\n const wakeLock = React.useRef<WakeLockSentinel | null>(null);\n\n // https://caniuse.com/mdn-api_wakelock\n const isSupported = typeof window !== 'undefined' && 'wakeLock' in navigator;\n\n const request = React.useCallback(\n async (type: WakeLockType = 'screen') => {\n const isWakeLockAlreadyDefined = wakeLock.current != null;\n if (!isSupported) {\n return warn(\n \"Calling the `request` function has no effect, Wake Lock Screen API isn't supported\"\n );\n }\n if (isWakeLockAlreadyDefined) {\n return warn(\n 'Calling `request` multiple times without `release` has no effect'\n );\n }\n\n try {\n wakeLock.current = await navigator.wakeLock.request(type);\n\n wakeLock.current.onrelease = (e: Event) => {\n // Default to `true` - `released` API is experimental: https://caniuse.com/mdn-api_wakelocksentinel_released\n setReleased((wakeLock.current && wakeLock.current.released) || true);\n onRelease && onRelease(e);\n wakeLock.current = null;\n };\n\n onRequest && onRequest();\n setReleased((wakeLock.current && wakeLock.current.released) || false);\n } catch (error: any) {\n onError && onError(error);\n }\n },\n [isSupported, onRequest, onError, onRelease]\n );\n\n const release = React.useCallback(async () => {\n const isWakeLockUndefined = wakeLock.current == null;\n if (!isSupported) {\n return warn(\n \"Calling the `release` function has no effect, Wake Lock Screen API isn't supported\"\n );\n }\n\n if (isWakeLockUndefined) {\n return warn('Calling `release` before `request` has no effect.');\n }\n\n wakeLock.current && (await wakeLock.current.release());\n }, [isSupported]);\n\n return {\n isSupported,\n request,\n released,\n release,\n type: (wakeLock.current && wakeLock.current.type) || undefined,\n };\n};\n"],"names":["warn","content","console","_temp","_ref","onError","onRequest","onRelease","_React$useState","React","useState","released","setReleased","wakeLock","useRef","isSupported","window","navigator","request","useCallback","type","isWakeLockAlreadyDefined","current","Promise","resolve","_temp2","then","_navigator$wakeLock$r","onrelease","e","_catch","error","reject","release","_temp3","_wakeLock$current$rel","undefined"],"mappings":"qTAEMA,EAAO,SAACC,GACZ,OAAAC,QAAQF,KAAK,6BAA+BC,EAAQ,sBAQ3B,SAAHE,OAIeC,OAAA,IAAAD,EAAN,CAAA,EAAEA,EAHjCE,EAAOD,EAAPC,QACAC,EAASF,EAATE,UACAC,EAASH,EAATG,UAEAC,EAAgCC,EAAMC,WAA/BC,EAAQH,EAAEI,GAAAA,EAAWJ,EAC5B,GAAMK,EAAWJ,EAAMK,OAAgC,MAGjDC,EAAgC,oBAAXC,QAA0B,aAAcC,UAE7DC,EAAUT,EAAMU,YAAW,SACxBC,QAAA,IAAAA,IAAAA,EAAqB,UAAQ,IAClC,IAAMC,EAA+C,MAApBR,EAASS,QAC1C,IAAKP,EACH,OAAAQ,QAAAC,QAAOxB,EACL,uFAGJ,GAAIqB,EACF,OAAAE,QAAAC,QAAOxB,EACL,qEAEH,IAAAyB,0BAEGF,QAAAC,QACuBP,UAAUJ,SAASK,QAAQE,IAAKM,KAAA,SAAAC,GAAzDd,EAASS,QAAOK,EAEhBd,EAASS,QAAQM,UAAY,SAACC,GAE5BjB,EAAaC,EAASS,SAAWT,EAASS,QAAQX,WAAa,GAC/DJ,GAAaA,EAAUsB,GACvBhB,EAASS,QAAU,IACrB,EAEAhB,GAAaA,IACbM,EAAaC,EAASS,SAAWT,EAASS,QAAQX,WAAa,EAAO,4DAbvEmB,CAAA,EAcQC,SAAAA,GACP1B,GAAWA,EAAQ0B,EACrB,GAAC,OAAAR,QAAAC,QAAAC,GAAAA,EAAAC,KAAAD,EAAAC,KAAA,WAAA,QAAA,EACH,CAAC,MAAAG,GAAA,OAAAN,QAAAS,OAAAH,EACD,CAAA,EAAA,CAACd,EAAaT,EAAWD,EAASE,IAG9B0B,EAAUxB,EAAMU,YAAW,WAAA,IAE/B,OAOEI,QAAAC,QAPGT,EAD2C,MAApBF,EAASS,QAQ5BtB,EAAK,qDAGda,EAASS,QAAOC,QAAAC,QAAWX,EAASS,QAAQW,WAASP,KAZVQ,SAAAC,GAYY,QAAFD,EAT5ClC,EACL,sFASN,CAAC,MAAA6B,GAAAN,OAAAA,QAAAS,OAAAH,EAAE,CAAA,EAAA,CAACd,IAEJ,MAAO,CACLA,YAAAA,EACAG,QAAAA,EACAP,SAAAA,EACAsB,QAAAA,EACAb,KAAOP,EAASS,SAAWT,EAASS,QAAQF,WAASgB,EAEzD"}