@modern-kit/react
Version:
46 lines (42 loc) • 1.28 kB
JavaScript
;
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