UNPKG

@oieduardorabelo/use-navigator-online

Version:

React Hooks to detect when your browser is online/offline.

74 lines (59 loc) 1.85 kB
'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); var react = require('react'); function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); } var defaultState = { whenOnline: 'online', whenOffline: 'offline', startOnline: true }; function useNavigatorOnline(state) { if (state === void 0) { state = {}; } var _defaultState$state = _extends({}, defaultState, state), whenOnline = _defaultState$state.whenOnline, whenOffline = _defaultState$state.whenOffline, startOnline = _defaultState$state.startOnline; var _useState = react.useState(startOnline), value = _useState[0], setValue = _useState[1]; react.useEffect(function () { if (window.navigator.onLine !== value) { setValue(window.navigator.onLine); return; } function handleOnlineStatus() { setValue(window.navigator.onLine); } window.addEventListener('online', handleOnlineStatus); window.addEventListener('offline', handleOnlineStatus); return function () { window.removeEventListener('online', handleOnlineStatus); window.removeEventListener('offline', handleOnlineStatus); }; }, [value, setValue]); var isOnline = value === true; var isOffline = value === false; var status = isOnline ? whenOnline : whenOffline; return { status: status, isOnline: isOnline, isOffline: isOffline }; } exports.useNavigatorOnline = useNavigatorOnline; //# sourceMappingURL=use-navigator-online.cjs.development.js.map