42 lines
1.1 KiB
JavaScript
42 lines
1.1 KiB
JavaScript
"use strict";
|
|
Object.defineProperty(exports, "__esModule", {
|
|
value: true
|
|
});
|
|
Object.defineProperty(exports, "useBrowserTimer", {
|
|
enumerable: true,
|
|
get: function() {
|
|
return useBrowserTimer;
|
|
}
|
|
});
|
|
const _interop_require_wildcard = require("@swc/helpers/_/_interop_require_wildcard");
|
|
const _react = /*#__PURE__*/ _interop_require_wildcard._(require("react"));
|
|
function useBrowserTimer(setTimer, cancelTimer) {
|
|
const id = _react.useRef(undefined);
|
|
const set = _react.useCallback((fn, delay)=>{
|
|
if (id.current !== undefined) {
|
|
cancelTimer(id.current);
|
|
}
|
|
id.current = setTimer(fn, delay);
|
|
return id.current;
|
|
}, [
|
|
cancelTimer,
|
|
setTimer
|
|
]);
|
|
const cancel = _react.useCallback(()=>{
|
|
if (id.current !== undefined) {
|
|
cancelTimer(id.current);
|
|
id.current = undefined;
|
|
}
|
|
}, [
|
|
cancelTimer
|
|
]);
|
|
// Clean up the timeout when the component is unloaded
|
|
_react.useEffect(()=>cancel, [
|
|
cancel
|
|
]);
|
|
return [
|
|
set,
|
|
cancel
|
|
];
|
|
}
|