Files
NapCatQQ/.pnpm-store/v3/files/41/da7e6c9519dd6f73cb0d9c02b36152cb0dd86fdcf436ed4c4a578a22eca75f37d94ced623b4bdeec223db62a1a1b54c4464253cc138bc7141ea634d72d7a3a
T
TanTan e311ca3275
Build NapCat Artifacts / Type Check & Test (push) Waiting to run
docs: 仓库链接指向本镜像仓库
2026-11-13 09:25:58 +08:00

56 lines
1.5 KiB
Plaintext

import { useCallback, useEffect, useRef } from 'react';
import useLatest from '../useLatest';
import { isNumber } from '../utils';
var setRafTimeout = function (callback, delay) {
if (delay === void 0) { delay = 0; }
if (typeof requestAnimationFrame === 'undefined') {
return {
id: setTimeout(callback, delay),
};
}
var handle = {
id: 0,
};
var startTime = Date.now();
var loop = function () {
var current = Date.now();
if (current - startTime >= delay) {
callback();
}
else {
handle.id = requestAnimationFrame(loop);
}
};
handle.id = requestAnimationFrame(loop);
return handle;
};
var cancelAnimationFrameIsNotDefined = function (t) {
return typeof cancelAnimationFrame === 'undefined';
};
var clearRafTimeout = function (handle) {
if (cancelAnimationFrameIsNotDefined(handle.id)) {
return clearTimeout(handle.id);
}
cancelAnimationFrame(handle.id);
};
function useRafTimeout(fn, delay) {
var fnRef = useLatest(fn);
var timerRef = useRef(undefined);
var clear = useCallback(function () {
if (timerRef.current) {
clearRafTimeout(timerRef.current);
}
}, []);
useEffect(function () {
if (!isNumber(delay) || delay < 0) {
return;
}
timerRef.current = setRafTimeout(function () {
fnRef.current();
}, delay);
return clear;
}, [delay]);
return clear;
}
export default useRafTimeout;