UNPKG

vue-hooks-plus

Version:
33 lines (32 loc) 999 B
import { ref } from "vue"; import { getTargetElement } from "../utils/domTarget"; import useEffectWithTarget from "../utils/useEffectWithTarget"; function useEventListener(eventName, handler, options = {}) { const handlerRef = ref(handler); useEffectWithTarget( () => { const targetElement = getTargetElement(options.target, window); if (!(targetElement == null ? void 0 : targetElement.addEventListener)) { return; } const eventListener = (event) => { return handlerRef.value(event); }; targetElement.addEventListener(eventName, eventListener, { capture: options.capture, once: options.once, passive: options.passive }); return () => { targetElement.removeEventListener(eventName, eventListener, { capture: options.capture }); }; }, [eventName, options.capture, options.once, options.passive], options.target ); } export { useEventListener as default };