vue-hooks-plus
Version:
Vue hooks library
34 lines (33 loc) • 1.24 kB
JavaScript
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;
;