12345678910111213141516171819202122232425262728293031323334353637383940414243 |
- "use strict";
-
- exports.__esModule = true;
- exports.default = void 0;
-
- var _react = require("react");
-
- var _useCommittedRef = _interopRequireDefault(require("./useCommittedRef"));
-
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
- function useInterval(fn, ms, paused) {
- if (paused === void 0) {
- paused = false;
- }
-
- var handle;
- var fnRef = (0, _useCommittedRef.default)(fn); // this ref is necessary b/c useEffect will sometimes miss a paused toggle
- // orphaning a setTimeout chain in the aether, so relying on it's refresh logic is not reliable.
-
- var pausedRef = (0, _useCommittedRef.default)(paused);
-
- var tick = function tick() {
- if (pausedRef.current) return;
- fnRef.current();
- schedule(); // eslint-disable-line no-use-before-define
- };
-
- var schedule = function schedule() {
- clearTimeout(handle);
- handle = setTimeout(tick, ms);
- };
-
- (0, _react.useEffect)(function () {
- schedule();
- return function () {
- return clearTimeout(handle);
- };
- }, [paused]);
- }
-
- var _default = useInterval;
- exports.default = _default;
|