UNPKG

@helpscout/hsds-react

Version:

React component library for Help Scout's Design System

99 lines (76 loc) 2.49 kB
"use strict"; 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;