@flexis/ui
Version:
Styleless React Components
57 lines • 3.81 kB
JavaScript
import { __decorate } from "tslib";
import { Component } from 'react';
import PropTypes from 'prop-types';
import { Bind, subscribeEvent } from '../../helpers';
let Offline = /** @class */ (() => {
class Offline extends Component {
constructor() {
super(...arguments);
this.unsubscribeOnlineEvent = null;
this.unsubscribeOfflineEvent = null;
}
render() {
const { children } = this.props;
return typeof children === 'function'
? children(typeof navigator !== 'undefined' && !navigator.onLine)
: null;
}
componentDidMount() {
if (!navigator.onLine) {
this.onChange();
}
this.addEffects();
}
componentWillUnmount() {
this.removeEffects();
}
onChange(event) {
const { onChange } = this.props;
if (event) {
this.forceUpdate();
}
if (typeof onChange === 'function') {
onChange(!navigator.onLine);
}
}
addEffects() {
this.unsubscribeOnlineEvent = subscribeEvent(window, 'online', this.onChange);
this.unsubscribeOfflineEvent = subscribeEvent(window, 'offline', this.onChange);
}
removeEffects() {
this.unsubscribeOnlineEvent();
this.unsubscribeOnlineEvent = null;
this.unsubscribeOfflineEvent();
this.unsubscribeOfflineEvent = null;
}
}
Offline.propTypes = {
children: PropTypes.func,
onChange: PropTypes.func
};
__decorate([
Bind()
], Offline.prototype, "onChange", null);
return Offline;
})();
export default Offline;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiT2ZmbGluZS5qc3giLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29tcG9uZW50cy9PZmZsaW5lL09mZmxpbmUudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBRU4sU0FBUyxFQUNULE1BQU0sT0FBTyxDQUFDO0FBQ2YsT0FBTyxTQUFTLE1BQU0sWUFBWSxDQUFDO0FBQ25DLE9BQU8sRUFDTixJQUFJLEVBQ0osY0FBYyxFQUNkLE1BQU0sZUFBZSxDQUFDO0FBT3ZCO0lBQUEsTUFBcUIsT0FBUSxTQUFRLFNBQWlCO1FBQXREOztZQU9TLDJCQUFzQixHQUFlLElBQUksQ0FBQztZQUMxQyw0QkFBdUIsR0FBZSxJQUFJLENBQUM7UUE2RHBELENBQUM7UUEzREEsTUFBTTtZQUVMLE1BQU0sRUFDTCxRQUFRLEVBQ1IsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDO1lBRWYsT0FBTyxPQUFPLFFBQVEsS0FBSyxVQUFVO2dCQUNwQyxDQUFDLENBQUMsUUFBUSxDQUFDLE9BQU8sU0FBUyxLQUFLLFdBQVcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUM7Z0JBQ2pFLENBQUMsQ0FBQyxJQUFJLENBQUM7UUFDVCxDQUFDO1FBRUQsaUJBQWlCO1lBRWhCLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxFQUFFO2dCQUN0QixJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7YUFDaEI7WUFFRCxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDbkIsQ0FBQztRQUVELG9CQUFvQjtZQUNuQixJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDdEIsQ0FBQztRQUdPLFFBQVEsQ0FBQyxLQUFhO1lBRTdCLE1BQU0sRUFDTCxRQUFRLEVBQ1IsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDO1lBRWYsSUFBSSxLQUFLLEVBQUU7Z0JBQ1YsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO2FBQ25CO1lBRUQsSUFBSSxPQUFPLFFBQVEsS0FBSyxVQUFVLEVBQUU7Z0JBQ25DLFFBQVEsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQzthQUM1QjtRQUNGLENBQUM7UUFFTyxVQUFVO1lBQ2pCLElBQUksQ0FBQyxzQkFBc0IsR0FBRyxjQUFjLENBQzNDLE1BQU0sRUFDTixRQUFRLEVBQ1IsSUFBSSxDQUFDLFFBQVEsQ0FDYixDQUFDO1lBQ0YsSUFBSSxDQUFDLHVCQUF1QixHQUFHLGNBQWMsQ0FDNUMsTUFBTSxFQUNOLFNBQVMsRUFDVCxJQUFJLENBQUMsUUFBUSxDQUNiLENBQUM7UUFDSCxDQUFDO1FBRU8sYUFBYTtZQUNwQixJQUFJLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztZQUM5QixJQUFJLENBQUMsc0JBQXNCLEdBQUcsSUFBSSxDQUFDO1lBQ25DLElBQUksQ0FBQyx1QkFBdUIsRUFBRSxDQUFDO1lBQy9CLElBQUksQ0FBQyx1QkFBdUIsR0FBRyxJQUFJLENBQUM7UUFDckMsQ0FBQzs7SUFsRU0saUJBQVMsR0FBRztRQUNsQixRQUFRLEVBQUUsU0FBUyxDQUFDLElBQUk7UUFDeEIsUUFBUSxFQUFFLFNBQVMsQ0FBQyxJQUFJO0tBQ3hCLENBQUM7SUE4QkY7UUFEQyxJQUFJLEVBQUU7MkNBY047SUFxQkYsY0FBQztLQUFBO2VBckVvQixPQUFPIn0=