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

37 lines
1.5 KiB
Plaintext

import useLatest from '../useLatest';
import { getTargetElement } from '../utils/domTarget';
import useEffectWithTarget from '../utils/useEffectWithTarget';
function useEventListener(eventName, handler, options) {
if (options === void 0) { options = {}; }
var _a = options.enable, enable = _a === void 0 ? true : _a;
var handlerRef = useLatest(handler);
useEffectWithTarget(function () {
if (!enable) {
return;
}
var targetElement = getTargetElement(options.target, window);
if (!(targetElement === null || targetElement === void 0 ? void 0 : targetElement.addEventListener)) {
return;
}
var eventListener = function (event) {
return handlerRef.current(event);
};
var eventNameArray = Array.isArray(eventName) ? eventName : [eventName];
eventNameArray.forEach(function (event) {
targetElement.addEventListener(event, eventListener, {
capture: options.capture,
once: options.once,
passive: options.passive,
});
});
return function () {
eventNameArray.forEach(function (event) {
targetElement.removeEventListener(event, eventListener, {
capture: options.capture,
});
});
};
}, [eventName, options.capture, options.once, options.passive, enable], options.target);
}
export default useEventListener;