xdesign-vue-next
Version:
XDesign Component for vue-next
1 lines • 3.33 kB
Source Map (JSON)
{"version":3,"file":"useVModel.mjs","sources":["../../src/hooks/useVModel.ts"],"sourcesContent":["import { ref, Ref, getCurrentInstance } from 'vue';\nimport kebabCase from 'lodash/kebabCase';\n\nexport type ChangeHandler<T, P extends any[]> = (value: T, ...args: P) => void;\n\nexport default function useVModel<T, P extends any[]>(\n value: Ref<T>,\n modelValue: Ref<T>,\n defaultValue: T,\n onChange: ChangeHandler<T, P>,\n propName = 'value',\n): [Ref<T>, ChangeHandler<T, P>] {\n const { emit, vnode } = getCurrentInstance();\n const internalValue: Ref<T> = ref();\n\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\n if (isVM) {\n return [\n modelValue,\n (newValue, ...args) => {\n emit('update:modelValue', newValue);\n onChange?.(newValue, ...args);\n },\n ];\n }\n\n if (isVMP) {\n return [\n value,\n (newValue, ...args) => {\n emit(`update:${propName}`, newValue);\n onChange?.(newValue, ...args);\n },\n ];\n }\n\n internalValue.value = defaultValue;\n return [\n internalValue,\n (newValue, ...args) => {\n internalValue.value = newValue;\n onChange?.(newValue, ...args);\n },\n ];\n}\n"],"names":["kebabCase","emit","args","onChange"],"mappings":";;;;;;;;;;;;;;;;;;AAKA,SAAA,SAAA,CAAA,KAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA;AAMiC,EAAA,IAAA,QAAA,GAAA,SAAA,CAAA,MAAA,GAAA,CAAA,IAAA,SAAA,CAAA,CAAA,CAAA,KAAA,SAAA,GAAA,SAAA,CAAA,CAAA,CAAA,GAAA,OAAA,CAAA;AAC/B,EAAA,IAAA,mBAAA,GAAA,kBAAA,EAAA;;;AACA,EAAA,IAAA,aAAA,GAAA,GAAA,EAAA,CAAA;AAEM,EAAA,IAAA,MAAA,GAAA,KAAA,CAAA,KAAA,IAAA,EAAA,CAAA;;AAIN,EAAA,IAAA,KAAA,GAAA,MAAA,CAAA,SAAA,CAAA,cAAA,CAAA,IAAA,CAAA,MAAA,EAAA,QAAA,CAAA,IAAA,MAAA,CAAA,SAAA,CAAA,cAAA,CAAA,IAAA,CAAA,MAAA,EAAAA,WAAA,CAAA,QAAA,CAAA,CAAA,CAAA;AAIA,EAAA,IAAA,IAAA,EAAA;AACS,IAAA,OAAA,CAAA,UAAA,EAAA,UAAA,QAAA,EAAA;AAGHC,MAAAA,IAAAA,CAAAA,mBAAAA,EAAAA,QAAAA,CAAAA,CAAAA;;AADYC,QAAAA,IAAAA,CAAAA,IAAAA,GAAAA,CAAAA,CAAAA,GAAAA,SAAAA,CAAAA,IAAAA,CAAAA,CAAAA;AAAS,OAAA;AAEVC,MAAAA,QAAAA,KAAAA,IAAAA,IAAAA,QAAAA,KAAAA,KAAAA,CAAAA,GAAAA,KAAAA,CAAAA,GAAAA,QAAAA,CAAAA,KAAAA,CAAAA,KAAAA,CAAAA,EAAAA,CAAAA,QAAAA,CAAAA,CAAAA,MAAAA,CAAAA,IAAAA,CAAAA,CAAAA,CAAAA;AACb,KAAA,CAAA,CAAA;AAEJ,GAAA;AAEA,EAAA,IAAA,KAAA,EAAA;AACS,IAAA,OAAA,CAAA,KAAA,EAAA,UAAA,QAAA,EAAA;AAGEF,MAAAA,IAAAA,CAAAA,SAAAA,CAAAA,MAAAA,CAAAA,QAAAA,CAAAA,EAAAA,QAAAA,CAAAA,CAAAA;;AADOC,QAAAA,IAAAA,CAAAA,KAAAA,GAAAA,CAAAA,CAAAA,GAAAA,SAAAA,CAAAA,KAAAA,CAAAA,CAAAA;AAAS,OAAA;AAEVC,MAAAA,QAAAA,KAAAA,IAAAA,IAAAA,QAAAA,KAAAA,KAAAA,CAAAA,GAAAA,KAAAA,CAAAA,GAAAA,QAAAA,CAAAA,KAAAA,CAAAA,KAAAA,CAAAA,EAAAA,CAAAA,QAAAA,CAAAA,CAAAA,MAAAA,CAAAA,IAAAA,CAAAA,CAAAA,CAAAA;AACb,KAAA,CAAA,CAAA;AAEJ,GAAA;;AAGO,EAAA,OAAA,CAAA,aAAA,EAAA,UAAA,QAAA,EAAA;;;AAESD,MAAAA,IAAAA,CAAAA,KAAAA,GAAAA,CAAAA,CAAAA,GAAAA,SAAAA,CAAAA,KAAAA,CAAAA,CAAAA;AAAS,KAAA;AAEVC,IAAAA,QAAAA,KAAAA,IAAAA,IAAAA,QAAAA,KAAAA,KAAAA,CAAAA,GAAAA,KAAAA,CAAAA,GAAAA,QAAAA,CAAAA,KAAAA,CAAAA,KAAAA,CAAAA,EAAAA,CAAAA,QAAAA,CAAAA,CAAAA,MAAAA,CAAAA,IAAAA,CAAAA,CAAAA,CAAAA;AACb,GAAA,CAAA,CAAA;AAEJ;;;;"}