UNPKG

vue-hooks-plus

Version:
40 lines (39 loc) 1.54 kB
"use strict"; const vue = require("vue"); const depsAreSame = require("./depsAreSame"); const domTarget = require("./domTarget"); const _interopDefaultLegacy = (e) => e && typeof e === "object" && "default" in e ? e : { default: e }; const depsAreSame__default = /* @__PURE__ */ _interopDefaultLegacy(depsAreSame); const createEffectWithTarget = (useEffectType) => { const useEffectWithTarget = (effect, deps, target) => { const hasInitRef = vue.ref(false); const lastElementRef = vue.ref([]); const lastDepsRef = vue.ref([]); const unLoadRef = vue.ref(); useEffectType(() => { var _a; const targets = Array.isArray(target) ? target : [target]; const els = targets.map((item) => domTarget.getTargetElement(item)); if (!hasInitRef.value) { hasInitRef.value = true; lastElementRef.value = els; lastDepsRef.value = deps; unLoadRef.value = effect(); return; } if (els.length !== lastElementRef.value.length || !depsAreSame__default.default(els, lastElementRef.value) || !depsAreSame__default.default(deps, lastDepsRef.value)) { (_a = unLoadRef.value) == null ? void 0 : _a.call(unLoadRef); lastElementRef.value = els; lastDepsRef.value = deps; unLoadRef.value = effect(); } }); vue.onUnmounted(() => { var _a; (_a = unLoadRef.value) == null ? void 0 : _a.call(unLoadRef); hasInitRef.value = false; }); }; return useEffectWithTarget; }; module.exports = createEffectWithTarget;