@sandlada/vue-mdc
Version:

45 lines (44 loc) • 920 B
JavaScript
import { watch } from "vue";
function useObserveProps(propMap) {
let map = /* @__PURE__ */ new Map();
const observe = (prop) => {
if (map.has(prop.id)) {
return;
}
const watchHandle = watch(prop.property, prop.callback, { ...prop.options });
map.set(prop.id, {
callback: prop.callback,
options: prop.options,
property: prop.property,
watchHandle
});
};
const unobserve = (propId) => {
if (map.has(propId)) {
return;
}
const target = map.get(propId);
target.watchHandle.stop();
};
const unobseveAll = () => {
if (map.size === 0) {
return;
}
map.forEach((value) => {
value.watchHandle.stop();
});
map.clear();
};
propMap.forEach((value) => {
observe(value);
});
return {
observe,
unobserve,
unobseveAll
};
}
export {
useObserveProps
};
//# sourceMappingURL=observe-props.js.map