UNPKG

yanzhen-design-vue

Version:

48 lines (47 loc) 1.74 kB
"use strict"; 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;