UNPKG

@modern-kit/react

Version:
46 lines (42 loc) 1.28 kB
'use strict'; var utils = require('@modern-kit/utils'); var hooksUsePreservedCallback = require('../usePreservedCallback/index.cjs'); var React = require('react'); const getSnapshot = () => { return navigator.onLine; }; const getServerSnapshot = () => { return true; }; const subscribe = (onStoreChange, onlineAction, offlineAction) => { const handleOnlineCallback = (event) => { onlineAction(event); return onStoreChange(); }; const handleOfflineCallback = (event) => { offlineAction(event); return onStoreChange(); }; window.addEventListener("online", handleOnlineCallback); window.addEventListener("offline", handleOfflineCallback); return () => { window.removeEventListener("online", handleOnlineCallback); window.removeEventListener("offline", handleOfflineCallback); }; }; function useNetwork({ onlineAction = utils.noop, offlineAction = utils.noop } = {}) { const preservedSubscribe = hooksUsePreservedCallback.usePreservedCallback( (onStoreChange) => subscribe(onStoreChange, onlineAction, offlineAction) ); const isOnline = React.useSyncExternalStore( preservedSubscribe, getSnapshot, getServerSnapshot ); return isOnline; } exports.useNetwork = useNetwork; //# sourceMappingURL=index.cjs.map