{"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"}