vuestic-ui
Version:
Vue 3 UI Framework
47 lines (46 loc) • 1.24 kB
JavaScript
import { computed, unref, isRef, reactive } from "vue";
const useReactiveComputed = (obj) => {
const objectRef = typeof obj === "function" ? computed(obj) : computed(obj);
const proxy = new Proxy(objectRef, {
get(target, p, receiver) {
if (typeof objectRef.value !== "object") {
return void 0;
}
return unref(Reflect.get(objectRef.value, p, receiver));
},
set(target, p, value) {
if (isRef(objectRef.value[p]) && !isRef(value)) {
objectRef.value[p].value = value;
} else {
objectRef.value[p] = value;
}
return true;
},
deleteProperty(target, p) {
return Reflect.deleteProperty(objectRef.value, p);
},
has(target, p) {
if (typeof objectRef.value !== "object") {
return false;
}
return Reflect.has(objectRef.value, p);
},
ownKeys() {
if (typeof objectRef.value !== "object") {
return [];
}
return Object.keys(objectRef.value);
},
getOwnPropertyDescriptor() {
return {
enumerable: true,
configurable: true
};
}
});
return reactive(proxy);
};
export {
useReactiveComputed as u
};
//# sourceMappingURL=useReactiveComputed.mjs.map