{"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;;;;"}