import { constant, constVoid } from 'fp-ts/lib/function'; import { shallowRef, watch, toRef, computed } from 'vue'; import { exists, isObject } from '../../utils/helpers'; export function getUseModelPropsDefinition(valueKey = 'modelValue', updateKey = 'onUpdate:modelValue') { return { [valueKey]: null, [updateKey]: { type: Function, default: constant(constVoid) } }; } export function useModel(props, valueKey = 'modelValue', updateKey = 'onUpdate:modelValue') { const internalValue = shallowRef(props[valueKey]); watch(toRef(props, valueKey), newVal => { internalValue.value = newVal; }); const value = computed({ get() { return internalValue.value; }, set(val) { internalValue.value = val; if (val !== undefined) { props[updateKey](val); } } }); function onUpdate(e) { // eslint-disable-next-line // @ts-ignore-next-line if (isObject(e.target) && exists(e.target.value)) { // eslint-disable-next-line // @ts-ignore-next-line value.value = e.target.value; } } function set(val) { value.value = val; } return { set, modelValue: value, onNativeInput: onUpdate }; } //# sourceMappingURL=useModel.js.map