@razorpay/blade
Version:
The Design System that powers Razorpay
33 lines (28 loc) • 962 B
JavaScript
import React__default from 'react';
import { useIsomorphicLayoutEffect } from './useIsomorphicLayoutEffect.js';
/* eslint-disable consistent-return */
function useInterval(callback, _ref) {
var delay = _ref.delay,
enable = _ref.enable;
var intervalRef = React__default.useRef(null);
var savedCallback = React__default.useRef(callback);
// keep the callback updated
useIsomorphicLayoutEffect(function () {
savedCallback.current = callback;
}, [callback]);
React__default.useEffect(function () {
var tick = function tick() {
return savedCallback.current();
};
if (enable) {
intervalRef.current = window.setInterval(tick, delay);
return function () {
return window.clearInterval(intervalRef.current);
};
}
// eslint-disable-next-line @typescript-eslint/no-empty-function
return function () {};
}, [delay, enable]);
}
export { useInterval };
//# sourceMappingURL=useInterval.js.map