yanzhen-design-vue
Version:
48 lines (47 loc) • 1.74 kB
JavaScript
;
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
const vue = require("vue");
const lodashEs = require("lodash-es");
const utils = require("@yanzhen-libs/utils");
const utilsVue = require("@yanzhen-libs/utils-vue");
const useContactsSelectedData = require("../hook/use-contacts-selected-data.cjs");
const handleDataType = require("../utils/handleDataType.cjs");
const contactsDataTypeKey = Symbol("contacts-data-type-key");
function createContactsDefaultRef(...args) {
const types = args.filter(lodashEs.isString);
const dataType = types.join(".");
const _ref = vue.ref([]);
function setItemType(item) {
if (!utils.isEmptyValue(item.dataType)) {
item.type = handleDataType.handleDataType(item, types[0]);
}
if (utils.isEmptyValue(item.dataType)) {
item.dataType = dataType;
}
utils.def(item, contactsDataTypeKey, dataType);
return item;
}
function handlePush(...items) {
if (lodashEs.isArray(items)) useContactsSelectedData.handleContactsData([], items, setItemType);
utilsVue.unref(_ref).push(...items);
}
return vue.computed({
get() {
const items = utilsVue.unref(_ref);
return new Proxy(items, {
get(target, p, receiver) {
if (p === "push") return handlePush;
return Reflect.get(target, p, receiver);
},
set(target, p, value, receiver) {
return Reflect.set(target, p, value, receiver);
}
});
},
set(items) {
_ref.value = lodashEs.isArray(items) ? items : [];
if (lodashEs.isArray(items)) useContactsSelectedData.handleContactsData([], items, setItemType);
}
});
}
exports.createContactsDefaultRef = createContactsDefaultRef;