@flexis/ui
Version:
Styleless React Components
92 lines (79 loc) • 4.64 kB
JavaScript
import _classCallCheck from "@babel/runtime-corejs3/helpers/classCallCheck";
import _createClass from "@babel/runtime-corejs3/helpers/createClass";
import _possibleConstructorReturn from "@babel/runtime-corejs3/helpers/possibleConstructorReturn";
import _getPrototypeOf from "@babel/runtime-corejs3/helpers/getPrototypeOf";
import _inherits from "@babel/runtime-corejs3/helpers/inherits";
import { __decorate } from "tslib";
import _React from 'react';
var Component = _React.Component;
import PropTypes from 'prop-types';
import { Bind, subscribeEvent } from '../../helpers';
var Offline =
/** @class */
function () {
var Offline = /*#__PURE__*/function (_Component) {
_inherits(Offline, _Component);
function Offline() {
var _this;
_classCallCheck(this, Offline);
_this = _possibleConstructorReturn(this, _getPrototypeOf(Offline).apply(this, arguments));
_this.unsubscribeOnlineEvent = null;
_this.unsubscribeOfflineEvent = null;
return _this;
}
_createClass(Offline, [{
key: "render",
value: function render() {
var children = this.props.children;
return typeof children === 'function' ? children(typeof navigator !== 'undefined' && !navigator.onLine) : null;
}
}, {
key: "componentDidMount",
value: function componentDidMount() {
if (!navigator.onLine) {
this.onChange();
}
this.addEffects();
}
}, {
key: "componentWillUnmount",
value: function componentWillUnmount() {
this.removeEffects();
}
}, {
key: "onChange",
value: function onChange(event) {
var onChange = this.props.onChange;
if (event) {
this.forceUpdate();
}
if (typeof onChange === 'function') {
onChange(!navigator.onLine);
}
}
}, {
key: "addEffects",
value: function addEffects() {
this.unsubscribeOnlineEvent = subscribeEvent(window, 'online', this.onChange);
this.unsubscribeOfflineEvent = subscribeEvent(window, 'offline', this.onChange);
}
}, {
key: "removeEffects",
value: function removeEffects() {
this.unsubscribeOnlineEvent();
this.unsubscribeOnlineEvent = null;
this.unsubscribeOfflineEvent();
this.unsubscribeOfflineEvent = null;
}
}]);
return Offline;
}(Component);
process.env.NODE_ENV !== "production" ? Offline.propTypes = {
children: PropTypes.func,
onChange: PropTypes.func
} : void 0;
__decorate([Bind()], Offline.prototype, "onChange", null);
return Offline;
}();
export default Offline;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21wb25lbnRzL09mZmxpbmUvT2ZmbGluZS50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsbUJBR08sT0FIUDs7QUFJQSxPQUFPLFNBQVAsTUFBc0IsWUFBdEI7QUFDQSxTQUNDLElBREQsRUFFQyxjQUZELFFBR08sZUFIUDs7QUFVQSxJQUFBLE9BQUE7QUFBQTtBQUFBLFlBQUE7QUFBQSxNQUFxQixPQUFyQjtBQUFBOztBQUFBLHVCQUFBO0FBQUE7O0FBQUE7OztBQU9TLFlBQUEsc0JBQUEsR0FBcUMsSUFBckM7QUFDQSxZQUFBLHVCQUFBLEdBQXNDLElBQXRDO0FBUlQ7QUFxRUM7O0FBckVEO0FBQUE7QUFBQSwrQkFVTztBQUFBLFlBR0osUUFISSxHQUlELEtBQUssS0FKSixDQUdKLFFBSEk7QUFNTCxlQUFPLE9BQU8sUUFBUCxLQUFvQixVQUFwQixHQUNKLFFBQVEsQ0FBQyxPQUFPLFNBQVAsS0FBcUIsV0FBckIsSUFBb0MsQ0FBQyxTQUFTLENBQUMsTUFBaEQsQ0FESixHQUVKLElBRkg7QUFHQTtBQW5CRjtBQUFBO0FBQUEsMENBcUJrQjtBQUVoQixZQUFJLENBQUMsU0FBUyxDQUFDLE1BQWYsRUFBdUI7QUFDdEIsZUFBSyxRQUFMO0FBQ0E7O0FBRUQsYUFBSyxVQUFMO0FBQ0E7QUE1QkY7QUFBQTtBQUFBLDZDQThCcUI7QUFDbkIsYUFBSyxhQUFMO0FBQ0E7QUFoQ0Y7QUFBQTtBQUFBLCtCQW1Da0IsS0FuQ2xCLEVBbUMrQjtBQUFBLFlBRzVCLFFBSDRCLEdBSXpCLEtBQUssS0FKb0IsQ0FHNUIsUUFINEI7O0FBTTdCLFlBQUksS0FBSixFQUFXO0FBQ1YsZUFBSyxXQUFMO0FBQ0E7O0FBRUQsWUFBSSxPQUFPLFFBQVAsS0FBb0IsVUFBeEIsRUFBb0M7QUFDbkMsVUFBQSxRQUFRLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBWixDQUFSO0FBQ0E7QUFDRDtBQWhERjtBQUFBO0FBQUEsbUNBa0RtQjtBQUNqQixhQUFLLHNCQUFMLEdBQThCLGNBQWMsQ0FDM0MsTUFEMkMsRUFFM0MsUUFGMkMsRUFHM0MsS0FBSyxRQUhzQyxDQUE1QztBQUtBLGFBQUssdUJBQUwsR0FBK0IsY0FBYyxDQUM1QyxNQUQ0QyxFQUU1QyxTQUY0QyxFQUc1QyxLQUFLLFFBSHVDLENBQTdDO0FBS0E7QUE3REY7QUFBQTtBQUFBLHNDQStEc0I7QUFDcEIsYUFBSyxzQkFBTDtBQUNBLGFBQUssc0JBQUwsR0FBOEIsSUFBOUI7QUFDQSxhQUFLLHVCQUFMO0FBQ0EsYUFBSyx1QkFBTCxHQUErQixJQUEvQjtBQUNBO0FBcEVGOztBQUFBO0FBQUEsSUFBcUMsU0FBckM7O0FBRVEsMENBQUEsT0FBQSxDQUFBLFNBQUEsR0FBWTtBQUNsQixJQUFBLFFBQVEsRUFBRSxTQUFTLENBQUMsSUFERjtBQUVsQixJQUFBLFFBQVEsRUFBRSxTQUFTLENBQUM7QUFGRixHQUFaOztBQWlDUCxFQUFBLFVBQUEsQ0FBQSxDQURDLElBQUksRUFDTCxDQUFBLEUsaUJBQUEsRSxVQUFBLEVBYUMsSUFiRCxDQUFBOztBQWtDRCxTQUFBLE9BQUE7QUFBQyxDQXJFRCxFQUFBOztlQUFxQixPIiwic291cmNlUm9vdCI6IiJ9