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

27 lines
1.3 KiB
Plaintext

import useLatest from '../useLatest';
import { getTargetElement } from '../utils/domTarget';
import getDocumentOrShadow from '../utils/getDocumentOrShadow';
import useEffectWithTarget from '../utils/useEffectWithTarget';
export default function useClickAway(onClickAway, target, eventName) {
if (eventName === void 0) { eventName = 'click'; }
var onClickAwayRef = useLatest(onClickAway);
useEffectWithTarget(function () {
var handler = function (event) {
var targets = Array.isArray(target) ? target : [target];
if (targets.some(function (item) {
var targetElement = getTargetElement(item);
return !targetElement || targetElement.contains(event.target);
})) {
return;
}
onClickAwayRef.current(event);
};
var documentOrShadow = getDocumentOrShadow(target);
var eventNames = Array.isArray(eventName) ? eventName : [eventName];
eventNames.forEach(function (event) { return documentOrShadow.addEventListener(event, handler); });
return function () {
eventNames.forEach(function (event) { return documentOrShadow.removeEventListener(event, handler); });
};
}, Array.isArray(eventName) ? eventName : [eventName], target);
}