{"version":3,"file":"useFormSelect-D2FHF0O9.mjs","sources":["../src/components/BFormSelect/BFormSelectOption.vue","../src/composables/useFormSelect.ts"],"sourcesContent":["<template>\n  <option :value=\"props.value\" :disabled=\"props.disabled\">\n    <slot />\n  </option>\n</template>\n\n<script setup lang=\"ts\" generic=\"T\">\nimport {useDefaults} from '../../composables/useDefaults'\nimport type {BFormSelectOptionProps} from '../../types/ComponentProps'\n\nconst _props = withDefaults(defineProps<BFormSelectOptionProps<T>>(), {\n  disabled: false,\n  value: undefined,\n})\nconst props = useDefaults<BFormSelectOptionProps<T>>(_props, 'BFormSelectOption')\n\ndefineSlots<{\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  default?: (props: Record<string, never>) => any\n}>()\n</script>\n","import {computed, type MaybeRefOrGetter, toValue} from 'vue'\nimport {get} from '../utils/object'\nimport type {ComplexSelectOptionRaw, SelectOption} from '../types/SelectTypes'\n\nexport const useFormSelect = (\n  options: MaybeRefOrGetter<ReadonlyArray<unknown>>,\n  props: MaybeRefOrGetter<Record<string, unknown>>\n) => {\n  const isComplex = (option: unknown): option is ComplexSelectOptionRaw =>\n    typeof option === 'object' && option !== null && 'options' in option\n\n  const normalizeOption = (option: unknown): ComplexSelectOptionRaw | SelectOption => {\n    const propsValue = toValue(props)\n\n    if (typeof option === 'string') {\n      return {value: option, text: option}\n    }\n    if (typeof option === 'number') {\n      return {value: option, text: `${option}`}\n    }\n    if (option instanceof Date) {\n      return {value: option, text: option.toLocaleString()}\n    }\n\n    const value: unknown = get(option, propsValue.valueField as string)\n    const text: string = get(option, propsValue.textField as string)\n    const disabled: boolean = get(option, propsValue.disabledField as string)\n\n    const opts: undefined | unknown[] = propsValue.optionsField\n      ? get(option, propsValue.optionsField as string)\n      : undefined\n\n    if (opts !== undefined) {\n      return {\n        label: get(option, propsValue.labelField as string) || text,\n        options: opts,\n      } as ComplexSelectOptionRaw\n    }\n\n    return {\n      ...(typeof option === 'object' ? option : undefined),\n      value,\n      text,\n      disabled,\n    } as SelectOption\n  }\n\n  const normalizeOptions = (\n    opts: ReadonlyArray<unknown>\n  ): (ComplexSelectOptionRaw | SelectOption)[] => opts.map((option) => normalizeOption(option))\n\n  const normalizedOptions = computed(() => normalizeOptions(toValue(options)))\n\n  return {normalizedOptions, isComplex}\n}\n"],"names":[],"mappings":";;;;;;;;;;;AAUA,UAAM,SAAS;AAIT,UAAA,QAAQ,YAAuC,QAAQ,mBAAmB;;;;;;;;;;;ACVnE,MAAA,gBAAgB,CAC3B,SACA,UACG;AACG,QAAA,YAAY,CAAC,WACjB,OAAO,WAAW,YAAY,WAAW,QAAQ,aAAa;AAE1D,QAAA,kBAAkB,CAAC,WAA2D;AAC5E,UAAA,aAAa,QAAQ,KAAK;AAE5B,QAAA,OAAO,WAAW,UAAU;AAC9B,aAAO,EAAC,OAAO,QAAQ,MAAM,OAAM;AAAA,IAAA;AAEjC,QAAA,OAAO,WAAW,UAAU;AAC9B,aAAO,EAAC,OAAO,QAAQ,MAAM,GAAG,MAAM,GAAE;AAAA,IAAA;AAE1C,QAAI,kBAAkB,MAAM;AAC1B,aAAO,EAAC,OAAO,QAAQ,MAAM,OAAO,iBAAgB;AAAA,IAAA;AAGtD,UAAM,QAAiB,IAAI,QAAQ,WAAW,UAAoB;AAClE,UAAM,OAAe,IAAI,QAAQ,WAAW,SAAmB;AAC/D,UAAM,WAAoB,IAAI,QAAQ,WAAW,aAAuB;AAExE,UAAM,OAA8B,WAAW,eAC3C,IAAI,QAAQ,WAAW,YAAsB,IAC7C;AAEJ,QAAI,SAAS,QAAW;AACf,aAAA;AAAA,QACL,OAAO,IAAI,QAAQ,WAAW,UAAoB,KAAK;AAAA,QACvD,SAAS;AAAA,MACX;AAAA,IAAA;AAGK,WAAA;AAAA,MACL,GAAI,OAAO,WAAW,WAAW,SAAS;AAAA,MAC1C;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,EACF;AAEM,QAAA,mBAAmB,CACvB,SAC8C,KAAK,IAAI,CAAC,WAAW,gBAAgB,MAAM,CAAC;AAE5F,QAAM,oBAAoB,SAAS,MAAM,iBAAiB,QAAQ,OAAO,CAAC,CAAC;AAEpE,SAAA,EAAC,mBAAmB,UAAS;AACtC;"}