UNPKG

@wener/console

Version:

Base console UI toolkit

51 lines (50 loc) 1.58 kB
import { getGlobalStates } from "@wener/utils"; import { createStore, useStore } from "zustand"; import { requestIdleCallback } from "./requestIdleCallback.js"; function getNetworkStatusStore() { return getGlobalStates("NetworkStatusStore", () => { return createStore((setState, getState, store) => { let close = () => void 0; requestIdleCallback(() => { close = watch((online) => setState({ online: online })); }); return { online: typeof navigator === "undefined" ? true : navigator.onLine ?? true, close() { close(); } }; }); }); } export function useNetworkStatus() { useStore(getNetworkStatusStore()); return getNetworkStatus(); } export function getNetworkStatus() { const { online } = getNetworkStatusStore().getState(); return { online, offline: !online, status: online ? "online" : "offline" }; } function watch(setOnline) { if (typeof window === "undefined") return () => void 0; const handleOffline = () => { setOnline(false); }; const handleOnline = () => { setOnline(true); }; window.addEventListener("offline", handleOffline); window.addEventListener("online", handleOnline); return () => { window.removeEventListener("offline", handleOffline); window.removeEventListener("online", handleOnline); }; } //# sourceMappingURL=NetworkStatus.js.map