UNPKG

vue-hooks-plus

Version:
34 lines (33 loc) 1.24 kB
"use strict"; const vue = require("vue"); const domTarget = require("../utils/domTarget"); const useEffectWithTarget = require("../utils/useEffectWithTarget"); const _interopDefaultLegacy = (e) => e && typeof e === "object" && "default" in e ? e : { default: e }; const useEffectWithTarget__default = /* @__PURE__ */ _interopDefaultLegacy(useEffectWithTarget); function useEventListener(eventName, handler, options = {}) { const handlerRef = vue.ref(handler); useEffectWithTarget__default.default( () => { const targetElement = domTarget.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 ); } module.exports = useEventListener;