You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

1 line
6.0 KiB

{"ast":null,"code":"import { getCurrentInstance, inject, ref, computed } from 'vue';\nimport '../../utils/index.mjs';\nimport { buildProps } from '../../utils/vue/props/runtime.mjs';\nimport { isFunction } from '@vue/shared';\nimport { debugWarn } from '../../utils/error.mjs';\nconst emptyValuesContextKey = Symbol(\"emptyValuesContextKey\");\nconst SCOPE = \"use-empty-values\";\nconst DEFAULT_EMPTY_VALUES = [\"\", void 0, null];\nconst DEFAULT_VALUE_ON_CLEAR = void 0;\nconst useEmptyValuesProps = buildProps({\n emptyValues: Array,\n valueOnClear: {\n type: [String, Number, Boolean, Function],\n default: void 0,\n validator: val => isFunction(val) ? !val() : !val\n }\n});\nconst useEmptyValues = (props, defaultValue) => {\n const config = getCurrentInstance() ? inject(emptyValuesContextKey, ref({})) : ref({});\n const emptyValues = computed(() => props.emptyValues || config.value.emptyValues || DEFAULT_EMPTY_VALUES);\n const valueOnClear = computed(() => {\n if (isFunction(props.valueOnClear)) {\n return props.valueOnClear();\n } else if (props.valueOnClear !== void 0) {\n return props.valueOnClear;\n } else if (isFunction(config.value.valueOnClear)) {\n return config.value.valueOnClear();\n } else if (config.value.valueOnClear !== void 0) {\n return config.value.valueOnClear;\n }\n return defaultValue !== void 0 ? defaultValue : DEFAULT_VALUE_ON_CLEAR;\n });\n const isEmptyValue = value => {\n return emptyValues.value.includes(value);\n };\n if (!emptyValues.value.includes(valueOnClear.value)) {\n debugWarn(SCOPE, \"value-on-clear should be a value of empty-values\");\n }\n return {\n emptyValues,\n valueOnClear,\n isEmptyValue\n };\n};\nexport { DEFAULT_EMPTY_VALUES, DEFAULT_VALUE_ON_CLEAR, SCOPE, emptyValuesContextKey, useEmptyValues, useEmptyValuesProps };","map":{"version":3,"names":["emptyValuesContextKey","Symbol","SCOPE","DEFAULT_EMPTY_VALUES","DEFAULT_VALUE_ON_CLEAR","useEmptyValuesProps","buildProps","emptyValues","Array","valueOnClear","type","String","Number","Boolean","Function","default","validator","val","isFunction","useEmptyValues","props","defaultValue","config","getCurrentInstance","inject","ref","computed","value","isEmptyValue","includes","debugWarn"],"sources":["../../../../../packages/hooks/use-empty-values/index.ts"],"sourcesContent":["import { computed, getCurrentInstance, inject, ref } from 'vue'\nimport { buildProps, debugWarn, isFunction } from '@element-plus/utils'\n\nimport type { ExtractPropTypes, InjectionKey, Ref } from 'vue'\n\ntype EmptyValuesContext = ExtractPropTypes<typeof useEmptyValuesProps>\n\nexport const emptyValuesContextKey: InjectionKey<Ref<EmptyValuesContext>> =\n Symbol('emptyValuesContextKey')\nexport const SCOPE = 'use-empty-values'\nexport const DEFAULT_EMPTY_VALUES = ['', undefined, null]\nexport const DEFAULT_VALUE_ON_CLEAR = undefined\n\nexport const useEmptyValuesProps = buildProps({\n /**\n * @description empty values supported by the component\n */\n emptyValues: Array,\n /**\n * @description return value when cleared, if you want to set `undefined`, use `() => undefined`\n */\n valueOnClear: {\n type: [String, Number, Boolean, Function],\n default: undefined,\n validator: (val: any) => (isFunction(val) ? !val() : !val),\n },\n} as const)\n\nexport const useEmptyValues = (\n props: EmptyValuesContext,\n defaultValue?: null | undefined\n) => {\n const config = getCurrentInstance()\n ? inject(emptyValuesContextKey, ref<EmptyValuesContext>({}))\n : ref<EmptyValuesContext>({})\n\n const emptyValues = computed(\n () => props.emptyValues || config.value.emptyValues || DEFAULT_EMPTY_VALUES\n )\n\n const valueOnClear = computed(() => {\n // function is used for undefined cause undefined can't be a value of prop\n if (isFunction(props.valueOnClear)) {\n return props.valueOnClear()\n } else if (props.valueOnClear !== undefined) {\n return props.valueOnClear\n } else if (isFunction(config.value.valueOnClear)) {\n return config.value.valueOnClear()\n } else if (config.value.valueOnClear !== undefined) {\n return config.value.valueOnClear\n }\n return defaultValue !== undefined ? defaultValue : DEFAULT_VALUE_ON_CLEAR\n })\n\n const isEmptyValue = (value: any) => {\n return emptyValues.value.includes(value)\n }\n\n if (!emptyValues.value.includes(valueOnClear.value)) {\n debugWarn(SCOPE, 'value-on-clear should be a value of empty-values')\n }\n\n return {\n emptyValues,\n valueOnClear,\n isEmptyValue,\n }\n}\n"],"mappings":";;;;;AAEY,MAACA,qBAAqB,GAAGC,MAAM,CAAC,uBAAuB;AACvD,MAACC,KAAK,GAAG;AACT,MAACC,oBAAoB,GAAG,CAAC,EAAE,EAAE,KAAK,CAAC,EAAE,IAAI;AACzC,MAACC,sBAAsB,GAAG,KAAK;AAC/B,MAACC,mBAAmB,GAAGC,UAAU,CAAC;EAC5CC,WAAW,EAAEC,KAAK;EAClBC,YAAY,EAAE;IACZC,IAAI,EAAE,CAACC,MAAM,EAAEC,MAAM,EAAEC,OAAO,EAAEC,QAAQ,CAAC;IACzCC,OAAO,EAAE,KAAK,CAAC;IACfC,SAAS,EAAGC,GAAG,IAAKC,UAAU,CAACD,GAAG,CAAC,GAAG,CAACA,GAAG,EAAE,GAAG,CAACA;EACpD;AACA,CAAC;AACW,MAACE,cAAc,GAAGA,CAACC,KAAK,EAAEC,YAAY,KAAK;EACrD,MAAMC,MAAM,GAAGC,kBAAkB,EAAE,GAAGC,MAAM,CAACxB,qBAAqB,EAAEyB,GAAG,CAAC,EAAE,CAAC,CAAC,GAAGA,GAAG,CAAC,EAAE,CAAC;EACtF,MAAMlB,WAAW,GAAGmB,QAAQ,CAAC,MAAMN,KAAK,CAACb,WAAW,IAAIe,MAAM,CAACK,KAAK,CAACpB,WAAW,IAAIJ,oBAAoB,CAAC;EACzG,MAAMM,YAAY,GAAGiB,QAAQ,CAAC,MAAM;IAClC,IAAIR,UAAU,CAACE,KAAK,CAACX,YAAY,CAAC,EAAE;MAClC,OAAOW,KAAK,CAACX,YAAY,EAAE;IACjC,CAAK,MAAM,IAAIW,KAAK,CAACX,YAAY,KAAK,KAAK,CAAC,EAAE;MACxC,OAAOW,KAAK,CAACX,YAAY;IAC/B,CAAK,MAAM,IAAIS,UAAU,CAACI,MAAM,CAACK,KAAK,CAAClB,YAAY,CAAC,EAAE;MAChD,OAAOa,MAAM,CAACK,KAAK,CAAClB,YAAY,EAAE;IACxC,CAAK,MAAM,IAAIa,MAAM,CAACK,KAAK,CAAClB,YAAY,KAAK,KAAK,CAAC,EAAE;MAC/C,OAAOa,MAAM,CAACK,KAAK,CAAClB,YAAY;IACtC;IACI,OAAOY,YAAY,KAAK,KAAK,CAAC,GAAGA,YAAY,GAAGjB,sBAAsB;EAC1E,CAAG,CAAC;EACF,MAAMwB,YAAY,GAAID,KAAK,IAAK;IAC9B,OAAOpB,WAAW,CAACoB,KAAK,CAACE,QAAQ,CAACF,KAAK,CAAC;EAC5C,CAAG;EACD,IAAI,CAACpB,WAAW,CAACoB,KAAK,CAACE,QAAQ,CAACpB,YAAY,CAACkB,KAAK,CAAC,EAAE;IACnDG,SAAS,CAAC5B,KAAK,EAAE,kDAAkD,CAAC;EACxE;EACE,OAAO;IACLK,WAAW;IACXE,YAAY;IACZmB;EACJ,CAAG;AACH","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}