@helpscout/hsds-react
Version:
React component library for Help Scout's Design System
99 lines (76 loc) • 2.49 kB
JavaScript
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
exports.__esModule = true;
exports.default = void 0;
var _inheritsLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/inheritsLoose"));
var _react = _interopRequireDefault(require("react"));
var _propTypes = _interopRequireDefault(require("prop-types"));
var SleepDetector = /*#__PURE__*/function (_React$Component) {
(0, _inheritsLoose2.default)(SleepDetector, _React$Component);
function SleepDetector(props) {
var _this;
_this = _React$Component.call(this, props) || this;
_this.state = {};
return _this;
}
var _proto = SleepDetector.prototype;
_proto.UNSAFE_componentWillMount = function UNSAFE_componentWillMount() {
var _this2 = this;
this.clearInterval();
var _this$props = this.props,
interval = _this$props.interval,
buffer = _this$props.buffer;
var intervalId = setInterval(function () {
var onWake = _this2.props.onWake;
var lastRun = _this2.state.lastRun;
var now = Date.now();
var delayTime = now - lastRun - interval;
if (delayTime > buffer) {
onWake(delayTime);
}
_this2.setState({
lastRun: Date.now()
});
}, interval);
var lastRun = Date.now();
this.setState({
intervalId: intervalId,
lastRun: lastRun
});
};
_proto.componentWillUnmount = function componentWillUnmount() {
this.clearInterval();
};
_proto.clearInterval = function (_clearInterval) {
function clearInterval() {
return _clearInterval.apply(this, arguments);
}
clearInterval.toString = function () {
return _clearInterval.toString();
};
return clearInterval;
}(function () {
var intervalId = this.state.intervalId;
clearInterval(intervalId);
});
_proto.render = function render() {
return null;
};
return SleepDetector;
}(_react.default.Component);
function noop() {}
SleepDetector.defaultProps = {
buffer: 5000,
interval: 10000,
onWake: noop
};
SleepDetector.propTypes = {
/** How often (ms) to check for inactive tab (default is 10000) */
buffer: _propTypes.default.number,
/** How long (ms) of a delay to treat as a "sleep" event */
interval: _propTypes.default.number,
/** Callback to execute when we detect that the page has woken from sleep */
onWake: _propTypes.default.func
};
var _default = SleepDetector;
exports.default = _default;
;