one
Version:
One is a React framework for web, iOS, and Android apps.
1 lines • 7.72 kB
Source Map (JSON)
{"version":3,"file":"index.js","names":[],"sources":["esm/platform/battery/index.js"],"sourcesContent":["import { useEffect, useState } from \"react\";\nimport {\n assertLevelListener,\n assertLowPowerModeListener,\n assertStateListener\n} from \"./validate\";\nfunction getBatteryFn() {\n if (typeof navigator === \"undefined\") return void 0;\n const getBattery = navigator.getBattery;\n return typeof getBattery === \"function\" ? getBattery : void 0;\n}\nasync function systemBattery() {\n const getBattery = getBatteryFn();\n if (!getBattery) return void 0;\n try {\n return await getBattery();\n } catch {\n return void 0;\n }\n}\nasync function getLevel() {\n const battery = await systemBattery();\n return battery ? battery.level : 1;\n}\nfunction stateOf(battery) {\n if (!battery) return \"unknown\";\n return battery.charging ? \"charging\" : \"unplugged\";\n}\nasync function getState() {\n return stateOf(await systemBattery());\n}\nasync function getPowerState() {\n const battery = await systemBattery();\n return {\n batteryLevel: battery ? battery.level : 1,\n batteryState: stateOf(battery),\n lowPowerMode: false\n };\n}\nasync function isLowPowerModeEnabled() {\n return false;\n}\nfunction isAvailable() {\n return getBatteryFn() !== void 0;\n}\nfunction listen(event, listener) {\n if (typeof window === \"undefined\")\n return {\n remove: () => {\n }\n };\n let removed = false;\n void systemBattery().then((battery) => {\n if (removed) return;\n battery?.addEventListener(event, listener);\n });\n return {\n remove: () => {\n removed = true;\n void systemBattery().then((battery) => {\n battery?.removeEventListener(event, listener);\n });\n }\n };\n}\nfunction addLevelListener(listener) {\n assertLevelListener(listener);\n return listen(\"levelchange\", () => {\n void getLevel().then((batteryLevel) => listener({ batteryLevel }));\n });\n}\nfunction addStateListener(listener) {\n assertStateListener(listener);\n return listen(\"chargingchange\", () => {\n void getState().then((batteryState) => listener({ batteryState }));\n });\n}\nfunction addLowPowerModeListener(listener) {\n assertLowPowerModeListener(listener);\n return { remove: () => {\n } };\n}\nfunction useBatteryLevel() {\n const [level, setLevel] = useState(1);\n useEffect(() => {\n let active = true;\n let fromEvent = false;\n void getLevel().then((next) => {\n if (active && !fromEvent) setLevel(next);\n });\n const subscription = addLevelListener((event) => {\n if (active) {\n fromEvent = true;\n setLevel(event.batteryLevel);\n }\n });\n return () => {\n active = false;\n subscription.remove();\n };\n }, []);\n return level;\n}\nfunction useBatteryState() {\n const [state, setState] = useState(\"unknown\");\n useEffect(() => {\n let active = true;\n let fromEvent = false;\n void getState().then((next) => {\n if (active && !fromEvent) setState(next);\n });\n const subscription = addStateListener((event) => {\n if (active) {\n fromEvent = true;\n setState(event.batteryState);\n }\n });\n return () => {\n active = false;\n subscription.remove();\n };\n }, []);\n return state;\n}\nfunction useLowPowerMode() {\n const [enabled] = useState(false);\n return enabled;\n}\nfunction usePowerState() {\n const [power, setPower] = useState({\n batteryLevel: 1,\n batteryState: \"unknown\",\n lowPowerMode: false\n });\n useEffect(() => {\n let active = true;\n let levelFromEvent = false;\n let stateFromEvent = false;\n void getPowerState().then((next) => {\n if (!active) return;\n setPower((current) => ({\n batteryLevel: levelFromEvent ? current.batteryLevel : next.batteryLevel,\n batteryState: stateFromEvent ? current.batteryState : next.batteryState,\n lowPowerMode: next.lowPowerMode\n }));\n });\n const onLevel = addLevelListener((event) => {\n if (active) {\n levelFromEvent = true;\n setPower((current) => ({ ...current, batteryLevel: event.batteryLevel }));\n }\n });\n const onState = addStateListener((event) => {\n if (active) {\n stateFromEvent = true;\n setPower((current) => ({ ...current, batteryState: event.batteryState }));\n }\n });\n return () => {\n active = false;\n onLevel.remove();\n onState.remove();\n };\n }, []);\n return power;\n}\nconst Battery = Object.freeze({\n getLevel,\n getState,\n getPowerState,\n isLowPowerModeEnabled,\n isAvailable,\n addLevelListener,\n addStateListener,\n addLowPowerModeListener\n});\nexport {\n Battery,\n useBatteryLevel,\n useBatteryState,\n useLowPowerMode,\n usePowerState\n};\n//# sourceMappingURL=index.js.map\n"],"mappings":"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"}