UNPKG

yanzhen-design-vue

Version:

68 lines (67 loc) 2.37 kB
"use strict"; Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" }); const vue = require("vue"); const utilsVue = require("@yanzhen-libs/utils-vue"); const utils = require("@yanzhen-libs/utils"); const selectCommonProps = require("../../../select/src/hooks/select-common-props.cjs"); require("../constants/index.cjs"); const option = require("../constants/option.cjs"); function cascaderOptionsProps() { return selectCommonProps.optionsProps([...option.cascaderOptionType]); } function useCascaderItemProps() { return utilsVue.buildProps({ value: { type: utilsVue.definePropType([String, Number]) }, avatar: String, label: String, type: String }); } const cascaderMap = /* @__PURE__ */ new WeakMap(); function useCascaderOptions(props) { const key = utilsVue.useProp("options"); if (cascaderMap.has(key)) { return cascaderMap.get(key); } const options = utilsVue.useOptions([...option.cascaderOptionType]); cascaderMap.set(key, options); function handleOptionsProxy(target, mode = "city") { const childrenKey = "children"; return new Proxy(target, { get(target2, p, receiver) { const value = Reflect.get(target2, p, receiver); if (utils.isNumeral(p)) { return new Proxy(value, { get(target3, p2, receiver2) { if (childrenKey === p2) { let children = target3[childrenKey]; switch (mode) { case "city": children = target3[childrenKey]; if (props.mode === "province") return []; if (!utils.isEmptyArray(children)) { return handleOptionsProxy(children, "district"); } break; case "district": children = target3[childrenKey]; if (props.mode === "city") return []; break; } return children; } return Reflect.get(target3, p2, receiver2); } }); } return value; } }); } return handleOptionsProxy(vue.unref(options.value)); } exports.cascaderOptionsProps = cascaderOptionsProps; exports.useCascaderItemProps = useCascaderItemProps; exports.useCascaderOptions = useCascaderOptions;