tdesign-mobile-vue
Version:
tdesign-mobile-vue
1 lines • 5.03 kB
Source Map (JSON)
{"version":3,"file":"useVModel.mjs","sources":["../../src/hooks/useVModel.tsx"],"sourcesContent":["import { ref, Ref, getCurrentInstance, ComponentInternalInstance } from 'vue';\nimport { kebabCase } from 'lodash-es';\n\nexport type ChangeHandler<T> = (value: T, ...args: any[]) => void;\n\nexport default function useVModel<T>(\n value: Ref<T>,\n modelValue: Ref<T>,\n defaultValue: T,\n onChange?: (...args: any) => any,\n propName = 'value',\n // emit 和 eventName 用于支持 v-model 和 xxx.sync 语法糖\n): [Ref<T>, ChangeHandler<T>] {\n const { emit, vnode } = getCurrentInstance() as ComponentInternalInstance;\n const internalValue = ref<T>() as Ref<T>;\n internalValue.value = defaultValue;\n const vProps = vnode.props || {};\n const isVM =\n Object.prototype.hasOwnProperty.call(vProps, 'modelValue') ||\n Object.prototype.hasOwnProperty.call(vProps, 'model-value');\n const isVMP =\n Object.prototype.hasOwnProperty.call(vProps, propName) ||\n Object.prototype.hasOwnProperty.call(vProps, kebabCase(propName));\n // 受控模式 v-model:propName\n if (isVMP || typeof value.value !== 'undefined') {\n return [\n value,\n (newValue, ...args) => {\n emit?.(`update:${propName}`, newValue, ...args);\n onChange?.(newValue, ...args);\n },\n ];\n }\n\n // 受控模式:modelValue v-model\n if (isVM || typeof modelValue.value !== 'undefined') {\n return [\n modelValue,\n (newValue, ...args) => {\n emit?.(`update:modelValue`, newValue, ...args);\n onChange?.(newValue, ...args);\n },\n ];\n }\n\n // 非受控模式\n return [\n internalValue,\n (newValue, ...args) => {\n internalValue.value = newValue;\n onChange?.(newValue, ...args);\n },\n ];\n}\n\n// emits name\nexport const UPDATE_MODEL = 'update:modelValue';\nexport const UPDATE_VALUE = 'update:value';\n"],"names":["useVModel","value","modelValue","defaultValue","onChange","propName","_getCurrentInstance","getCurrentInstance","emit","vnode","internalValue","ref","vProps","props","isVM","Object","prototype","hasOwnProperty","call","isVMP","kebabCase","newValue","_len","arguments","length","args","Array","_key","apply","concat","_len2","_key2","_len3","_key3","UPDATE_MODEL","UPDATE_VALUE"],"mappings":"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"}