UNPKG

one

Version:

One is a React framework for web, iOS, and Android apps.

1 lines • 3.68 kB
{"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"}