{"version":3,"file":"useAutocomplete.mjs","sources":["../../../../../../src/components/va-select/hooks/useAutocomplete.ts"],"sourcesContent":["import { ref, watch, type Ref, type ExtractPropTypes, onMounted } from 'vue'\n\nimport type { SelectOption } from '../types'\n\nexport const useAutocompleteProps = {\n  autocomplete: { type: Boolean, default: false },\n}\n\ntype UseAutocompleteProps = ExtractPropTypes<typeof useAutocompleteProps> & { multiple: boolean }\n\nexport const useAutocomplete = (\n  autocompleteValue: Ref<string>,\n  props: UseAutocompleteProps,\n  value: Ref<SelectOption[]>,\n  dropdownShown: Ref<boolean>,\n  getText: (option: SelectOption) => string,\n) => {\n  const getLastOptionText = (v: SelectOption[]) => v?.length ? getText(v.at(-1)!) : ''\n\n  if (props.autocomplete && !props.multiple) {\n    // Set current value as autocomplete value text\n    autocompleteValue.value = getLastOptionText(value.value)\n  }\n\n  watch(value, (newValue, oldValue) => {\n    if (!props.autocomplete) { return }\n\n    const newValueStringConverted = getLastOptionText(newValue)\n    const oldValueStringConverted = getLastOptionText(oldValue)\n\n    if (newValueStringConverted !== oldValueStringConverted) {\n      autocompleteValue.value = props.multiple ? '' : newValueStringConverted\n      if (!props.multiple) {\n        dropdownShown.value = false\n      }\n    }\n  })\n\n  watch(autocompleteValue, (newValue) => {\n    if (!props.autocomplete) { return }\n\n    if (newValue && newValue !== getLastOptionText(value.value)) {\n      dropdownShown.value = true\n    }\n  })\n\n  const onDropdownClosed = () => {\n    autocompleteValue.value = props.multiple ? '' : getLastOptionText(value.value)\n  }\n\n  watch(dropdownShown, (newValue, oldValue) => {\n    if (!props.autocomplete) { return }\n\n    if (!newValue || oldValue) { onDropdownClosed() }\n  })\n\n  return autocompleteValue\n}\n"],"names":[],"mappings":";AAIO,MAAM,uBAAuB;AAAA,EAClC,cAAc,EAAE,MAAM,SAAS,SAAS,MAAM;AAChD;AAIO,MAAM,kBAAkB,CAC7B,mBACA,OACA,OACA,eACA,YACG;AACG,QAAA,oBAAoB,CAAC,OAAsB,uBAAG,UAAS,QAAQ,EAAE,GAAG,EAAE,CAAE,IAAI;AAElF,MAAI,MAAM,gBAAgB,CAAC,MAAM,UAAU;AAEvB,sBAAA,QAAQ,kBAAkB,MAAM,KAAK;AAAA,EACzD;AAEM,QAAA,OAAO,CAAC,UAAU,aAAa;AAC/B,QAAA,CAAC,MAAM,cAAc;AAAE;AAAA,IAAO;AAE5B,UAAA,0BAA0B,kBAAkB,QAAQ;AACpD,UAAA,0BAA0B,kBAAkB,QAAQ;AAE1D,QAAI,4BAA4B,yBAAyB;AACrC,wBAAA,QAAQ,MAAM,WAAW,KAAK;AAC5C,UAAA,CAAC,MAAM,UAAU;AACnB,sBAAc,QAAQ;AAAA,MACxB;AAAA,IACF;AAAA,EAAA,CACD;AAEK,QAAA,mBAAmB,CAAC,aAAa;AACjC,QAAA,CAAC,MAAM,cAAc;AAAE;AAAA,IAAO;AAElC,QAAI,YAAY,aAAa,kBAAkB,MAAM,KAAK,GAAG;AAC3D,oBAAc,QAAQ;AAAA,IACxB;AAAA,EAAA,CACD;AAED,QAAM,mBAAmB,MAAM;AAC7B,sBAAkB,QAAQ,MAAM,WAAW,KAAK,kBAAkB,MAAM,KAAK;AAAA,EAAA;AAGzE,QAAA,eAAe,CAAC,UAAU,aAAa;AACvC,QAAA,CAAC,MAAM,cAAc;AAAE;AAAA,IAAO;AAE9B,QAAA,CAAC,YAAY,UAAU;AAAmB;IAAE;AAAA,EAAA,CACjD;AAEM,SAAA;AACT;"}