{"version":3,"file":"useVModel.mjs","sources":["../../../components/hooks/useVModel.ts"],"sourcesContent":["import { ref, Ref, getCurrentInstance } from 'vue';\nimport { kebabCase } from 'lodash-es';\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":["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"],"mappings":"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"}