Files
NapCatQQ/.pnpm-store/v3/files/99/4db4b548f0f271043be574a83ed307a3679f7fae5da7ea17db707142e94d132784342b2272c8f95209872c3fd13c1183887b0163eb7b1df5f6f60ef91d0ed7
TanTan e311ca3275
Build NapCat Artifacts / Windows Loader Test (push) Canceled after 0s
Build NapCat Artifacts / Type Check & Test (push) Canceled after 0s
Build NapCat Artifacts / Build NapCat.Framework (push) Canceled after 0s
Build NapCat Artifacts / Build NapCat.Shell (push) Canceled after 0s
docs: 仓库链接指向本镜像仓库
2026-11-13 09:25:58 +08:00

67 lines
1.9 KiB
Plaintext

"use strict";
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports["default"] = void 0;
var _react = require("react");
var _useLatest = _interopRequireDefault(require("../useLatest"));
var _utils = require("../utils");
var setRafInterval = function setRafInterval(callback, delay) {
if (delay === void 0) {
delay = 0;
}
if (typeof requestAnimationFrame === 'undefined') {
return {
id: setInterval(callback, delay)
};
}
var start = Date.now();
var handle = {
id: 0
};
var _loop = function loop() {
var current = Date.now();
if (current - start >= delay) {
callback();
start = Date.now();
}
handle.id = requestAnimationFrame(_loop);
};
handle.id = requestAnimationFrame(_loop);
return handle;
};
var cancelAnimationFrameIsNotDefined = function cancelAnimationFrameIsNotDefined(t) {
return typeof cancelAnimationFrame === 'undefined';
};
var clearRafInterval = function clearRafInterval(handle) {
if (cancelAnimationFrameIsNotDefined(handle.id)) {
return clearInterval(handle.id);
}
cancelAnimationFrame(handle.id);
};
function useRafInterval(fn, delay, options) {
var immediate = options === null || options === void 0 ? void 0 : options.immediate;
var fnRef = (0, _useLatest["default"])(fn);
var timerRef = (0, _react.useRef)(undefined);
var clear = (0, _react.useCallback)(function () {
if (timerRef.current) {
clearRafInterval(timerRef.current);
}
}, []);
(0, _react.useEffect)(function () {
if (!(0, _utils.isNumber)(delay) || delay < 0) {
return;
}
if (immediate) {
fnRef.current();
}
timerRef.current = setRafInterval(function () {
fnRef.current();
}, delay);
return clear;
}, [delay]);
return clear;
}
var _default = exports["default"] = useRafInterval;