{"version":3,"file":"index.js","names":["unavailable"],"sources":["esm/platform/keep-awake/index.js"],"sourcesContent":["import { useEffect, useId } from \"react\";\nimport { KeepAwake as unavailable } from \"./unavailable\";\nimport {\n  assertKeepAwakeEnabled,\n  assertKeepAwakeTag,\n  normalizeKeepAwakeTag\n} from \"./validate\";\nconst active = /* @__PURE__ */ new Set();\nlet lock;\nlet operation = Promise.resolve();\nfunction live() {\n  return !!lock && !lock.released;\n}\nfunction apply(owner) {\n  const next = operation.catch(() => {\n  }).then(async () => {\n    if (active.size === 0) {\n      await lock?.release();\n      lock = void 0;\n      return;\n    }\n    if (live()) return;\n    if (!navigator.wakeLock)\n      throw new Error(`KeepAwake.${owner}: Screen Wake Lock is unavailable`);\n    lock = await navigator.wakeLock.request(\"screen\");\n  });\n  operation = next;\n  return next;\n}\nconst KeepAwake = Object.freeze({\n  isEnabled: async () => typeof window !== \"undefined\" && active.size > 0 && live(),\n  setEnabled: (enabled) => {\n    assertKeepAwakeEnabled(enabled);\n    if (typeof window === \"undefined\") return unavailable.setEnabled(enabled);\n    if (enabled) active.add(normalizeKeepAwakeTag(void 0));\n    else active.delete(normalizeKeepAwakeTag(void 0));\n    return apply(\"setEnabled\");\n  },\n  activate: (tag) => {\n    assertKeepAwakeTag(tag, \"activate\");\n    if (typeof window === \"undefined\") return unavailable.activate(tag);\n    active.add(normalizeKeepAwakeTag(tag));\n    return apply(\"activate\");\n  },\n  deactivate: (tag) => {\n    assertKeepAwakeTag(tag, \"deactivate\");\n    if (typeof window === \"undefined\") return unavailable.deactivate(tag);\n    active.delete(normalizeKeepAwakeTag(tag));\n    return apply(\"deactivate\");\n  }\n});\nfunction useKeepAwake(tag) {\n  const fallback = useId();\n  assertKeepAwakeTag(tag, \"useKeepAwake\");\n  const effective = tag ?? fallback;\n  useEffect(() => {\n    if (typeof window === \"undefined\") return;\n    KeepAwake.activate(effective).catch((error) => {\n      console.error(`Failed to keep the screen awake: ${String(error)}`);\n    });\n    return () => {\n      KeepAwake.deactivate(effective).catch(() => {\n      });\n    };\n  }, [effective]);\n}\nexport {\n  KeepAwake,\n  useKeepAwake\n};\n//# sourceMappingURL=index.js.map\n"],"mappings":";;;;;AAOA,MAAM,yBAAyB,IAAI,IAAI;AACvC,IAAI;AACJ,IAAI,YAAY,QAAQ,QAAQ;AAChC,SAAS,OAAO;CACd,OAAO,CAAC,CAAC,QAAQ,CAAC,KAAK;AACzB;AACA,SAAS,MAAM,OAAO;CACpB,MAAM,OAAO,UAAU,YAAY,CACnC,CAAC,CAAC,CAAC,KAAK,YAAY;EAClB,IAAI,OAAO,SAAS,GAAG;GACrB,MAAM,MAAM,QAAQ;GACpB,OAAO,KAAK;GACZ;EACF;EACA,IAAI,KAAK,GAAG;EACZ,IAAI,CAAC,UAAU,UACb,MAAM,IAAI,MAAM,aAAa,MAAM,kCAAkC;EACvE,OAAO,MAAM,UAAU,SAAS,QAAQ,QAAQ;CAClD,CAAC;CACD,YAAY;CACZ,OAAO;AACT;AACA,MAAM,YAAY,OAAO,OAAO;CAC9B,WAAW,YAAY,OAAO,WAAW,eAAe,OAAO,OAAO,KAAK,KAAK;CAChF,aAAa,YAAY;EACvB,uBAAuB,OAAO;EAC9B,IAAI,OAAO,WAAW,aAAa,OAAOA,YAAY,WAAW,OAAO;EACxE,IAAI,SAAS,OAAO,IAAI,sBAAsB,KAAK,CAAC,CAAC;OAChD,OAAO,OAAO,sBAAsB,KAAK,CAAC,CAAC;EAChD,OAAO,MAAM,YAAY;CAC3B;CACA,WAAW,QAAQ;EACjB,mBAAmB,KAAK,UAAU;EAClC,IAAI,OAAO,WAAW,aAAa,OAAOA,YAAY,SAAS,GAAG;EAClE,OAAO,IAAI,sBAAsB,GAAG,CAAC;EACrC,OAAO,MAAM,UAAU;CACzB;CACA,aAAa,QAAQ;EACnB,mBAAmB,KAAK,YAAY;EACpC,IAAI,OAAO,WAAW,aAAa,OAAOA,YAAY,WAAW,GAAG;EACpE,OAAO,OAAO,sBAAsB,GAAG,CAAC;EACxC,OAAO,MAAM,YAAY;CAC3B;AACF,CAAC;AACD,SAAS,aAAa,KAAK;CACzB,MAAM,WAAW,MAAM;CACvB,mBAAmB,KAAK,cAAc;CACtC,MAAM,YAAY,OAAO;CACzB,gBAAgB;EACd,IAAI,OAAO,WAAW,aAAa;EACnC,UAAU,SAAS,SAAS,CAAC,CAAC,OAAO,UAAU;GAC7C,QAAQ,MAAM,oCAAoC,OAAO,KAAK,GAAG;EACnE,CAAC;EACD,aAAa;GACX,UAAU,WAAW,SAAS,CAAC,CAAC,YAAY,CAC5C,CAAC;EACH;CACF,GAAG,CAAC,SAAS,CAAC;AAChB"}