{"version":3,"file":"BFormSelect-BleWBr-U.mjs","names":["$attrs"],"sources":["../src/components/BFormSelect/BFormSelectOptionGroup.vue","../src/components/BFormSelect/BFormSelectOptionGroup.vue","../src/components/BFormSelect/BFormSelectBase.vue","../src/components/BFormSelect/BFormSelectBase.vue","../src/components/BFormSelect/BFormSelect.vue","../src/components/BFormSelect/BFormSelect.vue"],"sourcesContent":["<template>\n  <optgroup :label=\"props.label\">\n    <slot name=\"first\" />\n    <BFormSelectOption\n      v-for=\"(option, index) in normalizedOptions\"\n      :key=\"index\"\n      v-bind=\"{...$attrs, ...option}\"\n    >\n      <slot name=\"option\" v-bind=\"option\">\n        {{ option.text }}\n      </slot>\n    </BFormSelectOption>\n    <slot />\n  </optgroup>\n</template>\n\n<script setup lang=\"ts\" generic=\"T\">\nimport BFormSelectOption from './BFormSelectOption.vue'\nimport {useDefaults} from '../../composables/useDefaults'\nimport type {BFormSelectOptionGroupProps} from '../../types/ComponentProps'\nimport type {ComputedRef} from 'vue'\nimport {useFormSelect} from '../../composables/useFormSelect'\nimport type {SelectOption} from '../../types/SelectTypes'\nimport type {BFormSelectOptionGroupSlots} from '../../types'\n\nconst _props = withDefaults(defineProps<BFormSelectOptionGroupProps>(), {\n  disabledField: 'disabled',\n  label: undefined,\n  options: () => [],\n  textField: 'text',\n  valueField: 'value',\n})\nconst props = useDefaults(_props, 'BFormSelectOptionGroup')\ndefineSlots<BFormSelectOptionGroupSlots<T>>()\n\n// The form select context is injected by BFormSelectOption components automatically\n// We don't need to handle the selected value here since each BFormSelectOption\n// will inject the context directly\n\n// Type assertion is needed because useFormSelect is not generic-aware.\n// This is acceptable in the wrapper/base pattern where the wrapper (BFormSelect)\n// handles type-safe normalization before passing to base components.\nconst {normalizedOptions} = useFormSelect(() => props.options, props) as {\n  normalizedOptions: ComputedRef<SelectOption<T>[]>\n}\n</script>\n","<template>\n  <optgroup :label=\"props.label\">\n    <slot name=\"first\" />\n    <BFormSelectOption\n      v-for=\"(option, index) in normalizedOptions\"\n      :key=\"index\"\n      v-bind=\"{...$attrs, ...option}\"\n    >\n      <slot name=\"option\" v-bind=\"option\">\n        {{ option.text }}\n      </slot>\n    </BFormSelectOption>\n    <slot />\n  </optgroup>\n</template>\n\n<script setup lang=\"ts\" generic=\"T\">\nimport BFormSelectOption from './BFormSelectOption.vue'\nimport {useDefaults} from '../../composables/useDefaults'\nimport type {BFormSelectOptionGroupProps} from '../../types/ComponentProps'\nimport type {ComputedRef} from 'vue'\nimport {useFormSelect} from '../../composables/useFormSelect'\nimport type {SelectOption} from '../../types/SelectTypes'\nimport type {BFormSelectOptionGroupSlots} from '../../types'\n\nconst _props = withDefaults(defineProps<BFormSelectOptionGroupProps>(), {\n  disabledField: 'disabled',\n  label: undefined,\n  options: () => [],\n  textField: 'text',\n  valueField: 'value',\n})\nconst props = useDefaults(_props, 'BFormSelectOptionGroup')\ndefineSlots<BFormSelectOptionGroupSlots<T>>()\n\n// The form select context is injected by BFormSelectOption components automatically\n// We don't need to handle the selected value here since each BFormSelectOption\n// will inject the context directly\n\n// Type assertion is needed because useFormSelect is not generic-aware.\n// This is acceptable in the wrapper/base pattern where the wrapper (BFormSelect)\n// handles type-safe normalization before passing to base components.\nconst {normalizedOptions} = useFormSelect(() => props.options, props) as {\n  normalizedOptions: ComputedRef<SelectOption<T>[]>\n}\n</script>\n","<template>\n  <select\n    :id=\"computedId\"\n    ref=\"_input\"\n    v-model=\"localValue\"\n    :class=\"computedClasses\"\n    :name=\"props.name\"\n    :form=\"props.form || undefined\"\n    :multiple=\"props.multiple || undefined\"\n    :size=\"computedSelectSize\"\n    :disabled=\"isDisabled\"\n    :required=\"props.required || undefined\"\n    :aria-required=\"props.required || undefined\"\n    :aria-invalid=\"computedAriaInvalid\"\n  >\n    <slot name=\"first\" />\n    <template v-for=\"(option, index) in normalizedOptsWrapper\" :key=\"index\">\n      <BFormSelectOptionGroup\n        v-if=\"isComplex(option)\"\n        :label=\"option.label\"\n        :options=\"option.options\"\n        :value-field=\"props.valueField\"\n        :text-field=\"props.textField\"\n        :disabled-field=\"props.disabledField\"\n      />\n      <BFormSelectOption v-else v-bind=\"option\">\n        <slot name=\"option\" v-bind=\"option\">\n          {{ option.text }}\n        </slot>\n      </BFormSelectOption>\n    </template>\n    <slot />\n  </select>\n</template>\n\n<script setup lang=\"ts\">\nimport type {BFormSelectBaseProps} from '../../types/ComponentProps'\nimport {computed, inject, provide, readonly, useTemplateRef} from 'vue'\nimport BFormSelectOption from './BFormSelectOption.vue'\nimport BFormSelectOptionGroup from './BFormSelectOptionGroup.vue'\nimport {useAriaInvalid} from '../../composables/useAriaInvalid'\nimport {useFocus, useToNumber} from '@vueuse/core'\nimport {useDefaults} from '../../composables/useDefaults'\nimport {useId} from '../../composables/useId'\nimport {useStateClass} from '../../composables/useStateClass'\nimport {useFormSelect} from '../../composables/useFormSelect'\nimport {formGroupKey, formSelectKey} from '../../utils/keys'\n\n/**\n * Base component for BFormSelect - non-generic implementation using useDefaults.\n * Renders a select element with normalized options and option groups.\n * Supports both simple options and complex grouped options.\n */\nconst _props = withDefaults(defineProps<Omit<BFormSelectBaseProps, 'modelValue'>>(), {\n  ariaInvalid: undefined,\n  autofocus: false,\n  disabled: false,\n  disabledField: 'disabled',\n  form: undefined,\n  id: undefined,\n  labelField: 'label',\n  multiple: false,\n  name: undefined,\n  options: () => [],\n  optionsField: 'options',\n  plain: false,\n  required: false,\n  selectSize: 0,\n  size: 'md',\n  state: null,\n  textField: 'text',\n  valueField: 'value',\n})\nconst props = useDefaults(_props, 'BFormSelect')\n\nconst modelValue = defineModel<unknown>({\n  default: '',\n})\n\nconst computedId = useId(() => props.id, 'input')\n\nconst formGroupData = inject(formGroupKey, null)?.(computedId)\nconst isDisabled = computed(() => props.disabled || (formGroupData?.disabled.value ?? false))\n\nconst selectSizeNumber = useToNumber(() => props.selectSize)\n\nconst stateClass = useStateClass(() => props.state)\n\nconst input = useTemplateRef('_input')\n\nconst {focused} = useFocus(input, {\n  initialValue: props.autofocus,\n})\n\nconst computedClasses = computed(() => [\n  stateClass.value,\n  {\n    'form-control': props.plain,\n    [`form-control-${props.size}`]: props.size !== 'md' && props.plain,\n    'form-select': !props.plain,\n    [`form-select-${props.size}`]: props.size !== 'md' && !props.plain,\n  },\n])\n\nconst computedSelectSize = computed(() =>\n  !props.plain && selectSizeNumber.value > 0 ? selectSizeNumber.value : undefined\n)\n\nconst computedAriaInvalid = useAriaInvalid(\n  () => props.ariaInvalid,\n  () => props.state\n)\n\nconst {normalizedOptions, isComplex} = useFormSelect(() => props.options, props)\n\nconst normalizedOptsWrapper = computed(() => normalizedOptions.value)\n\nconst localValue = computed({\n  get: () => modelValue.value,\n  set: (newValue) => {\n    modelValue.value = newValue\n  },\n})\n\n// Provide the current model value for child components to inject\nprovide(formSelectKey, {\n  modelValue: readonly(localValue),\n})\n\ndefineExpose({\n  blur: () => {\n    focused.value = false\n  },\n  element: input,\n  focus: () => {\n    focused.value = true\n  },\n})\n</script>\n","<template>\n  <select\n    :id=\"computedId\"\n    ref=\"_input\"\n    v-model=\"localValue\"\n    :class=\"computedClasses\"\n    :name=\"props.name\"\n    :form=\"props.form || undefined\"\n    :multiple=\"props.multiple || undefined\"\n    :size=\"computedSelectSize\"\n    :disabled=\"isDisabled\"\n    :required=\"props.required || undefined\"\n    :aria-required=\"props.required || undefined\"\n    :aria-invalid=\"computedAriaInvalid\"\n  >\n    <slot name=\"first\" />\n    <template v-for=\"(option, index) in normalizedOptsWrapper\" :key=\"index\">\n      <BFormSelectOptionGroup\n        v-if=\"isComplex(option)\"\n        :label=\"option.label\"\n        :options=\"option.options\"\n        :value-field=\"props.valueField\"\n        :text-field=\"props.textField\"\n        :disabled-field=\"props.disabledField\"\n      />\n      <BFormSelectOption v-else v-bind=\"option\">\n        <slot name=\"option\" v-bind=\"option\">\n          {{ option.text }}\n        </slot>\n      </BFormSelectOption>\n    </template>\n    <slot />\n  </select>\n</template>\n\n<script setup lang=\"ts\">\nimport type {BFormSelectBaseProps} from '../../types/ComponentProps'\nimport {computed, inject, provide, readonly, useTemplateRef} from 'vue'\nimport BFormSelectOption from './BFormSelectOption.vue'\nimport BFormSelectOptionGroup from './BFormSelectOptionGroup.vue'\nimport {useAriaInvalid} from '../../composables/useAriaInvalid'\nimport {useFocus, useToNumber} from '@vueuse/core'\nimport {useDefaults} from '../../composables/useDefaults'\nimport {useId} from '../../composables/useId'\nimport {useStateClass} from '../../composables/useStateClass'\nimport {useFormSelect} from '../../composables/useFormSelect'\nimport {formGroupKey, formSelectKey} from '../../utils/keys'\n\n/**\n * Base component for BFormSelect - non-generic implementation using useDefaults.\n * Renders a select element with normalized options and option groups.\n * Supports both simple options and complex grouped options.\n */\nconst _props = withDefaults(defineProps<Omit<BFormSelectBaseProps, 'modelValue'>>(), {\n  ariaInvalid: undefined,\n  autofocus: false,\n  disabled: false,\n  disabledField: 'disabled',\n  form: undefined,\n  id: undefined,\n  labelField: 'label',\n  multiple: false,\n  name: undefined,\n  options: () => [],\n  optionsField: 'options',\n  plain: false,\n  required: false,\n  selectSize: 0,\n  size: 'md',\n  state: null,\n  textField: 'text',\n  valueField: 'value',\n})\nconst props = useDefaults(_props, 'BFormSelect')\n\nconst modelValue = defineModel<unknown>({\n  default: '',\n})\n\nconst computedId = useId(() => props.id, 'input')\n\nconst formGroupData = inject(formGroupKey, null)?.(computedId)\nconst isDisabled = computed(() => props.disabled || (formGroupData?.disabled.value ?? false))\n\nconst selectSizeNumber = useToNumber(() => props.selectSize)\n\nconst stateClass = useStateClass(() => props.state)\n\nconst input = useTemplateRef('_input')\n\nconst {focused} = useFocus(input, {\n  initialValue: props.autofocus,\n})\n\nconst computedClasses = computed(() => [\n  stateClass.value,\n  {\n    'form-control': props.plain,\n    [`form-control-${props.size}`]: props.size !== 'md' && props.plain,\n    'form-select': !props.plain,\n    [`form-select-${props.size}`]: props.size !== 'md' && !props.plain,\n  },\n])\n\nconst computedSelectSize = computed(() =>\n  !props.plain && selectSizeNumber.value > 0 ? selectSizeNumber.value : undefined\n)\n\nconst computedAriaInvalid = useAriaInvalid(\n  () => props.ariaInvalid,\n  () => props.state\n)\n\nconst {normalizedOptions, isComplex} = useFormSelect(() => props.options, props)\n\nconst normalizedOptsWrapper = computed(() => normalizedOptions.value)\n\nconst localValue = computed({\n  get: () => modelValue.value,\n  set: (newValue) => {\n    modelValue.value = newValue\n  },\n})\n\n// Provide the current model value for child components to inject\nprovide(formSelectKey, {\n  modelValue: readonly(localValue),\n})\n\ndefineExpose({\n  blur: () => {\n    focused.value = false\n  },\n  element: input,\n  focus: () => {\n    focused.value = true\n  },\n})\n</script>\n","<template>\n  <BFormSelectBase v-bind=\"forwardedProps\" v-model=\"modelValue\" :options=\"normalizedOptions as any\">\n    <!-- Forward all slots -->\n    <template #first>\n      <slot name=\"first\" />\n    </template>\n\n    <template #option=\"slotProps\">\n      <slot name=\"option\" v-bind=\"slotProps as any\" />\n    </template>\n\n    <slot />\n  </BFormSelectBase>\n</template>\n\n<script\n  setup\n  lang=\"ts\"\n  generic=\"\n    Options extends readonly (object | string | number | boolean)[] = readonly (\n      | object\n      | string\n      | number\n      | boolean\n    )[]\n  \"\n>\nimport type {BFormSelectProps} from '../../types/ComponentProps'\nimport {computed} from 'vue'\nimport BFormSelectBase from './BFormSelectBase.vue'\nimport type {ComplexSelectOptionRaw, SelectOption} from '../../types/SelectTypes'\nimport type {BFormSelectSlots} from '../../types'\nimport type {OptionsValues} from '../../types/OptionsTypes'\n\n/**\n * Type-safe wrapper component for BFormSelect.\n * Provides generic type safety for options array and strongly-typed modelValue.\n * Uses Options array generic to extract union of all possible values.\n * Normalizes typed options and forwards to BFormSelectBase for rendering.\n * Supports both complex objects and simple scalar types (string, number).\n *\n * For strongly-typed modelValue:\n * - Primitive arrays: modelValue is union of those values (or array if multiple)\n * - Object arrays with 'value' field: modelValue is union of value field types\n * - Use 'as const' on options for literal type inference\n */\nconst props = withDefaults(defineProps<Omit<BFormSelectProps<Options>, 'modelValue'>>(), {\n  ariaInvalid: undefined,\n  autofocus: false,\n  disabled: false,\n  disabledField: 'disabled',\n  form: undefined,\n  id: undefined,\n  labelField: 'label',\n  multiple: false,\n  name: undefined,\n  options: () => [] as unknown as Options,\n  optionsField: 'options',\n  plain: false,\n  required: false,\n  selectSize: 0,\n  size: 'md',\n  state: null,\n  textField: 'text',\n  valueField: 'value',\n})\ndefineSlots<BFormSelectSlots<OptionsValues<Options>>>()\n\n// Type-safe model value - single value or array depending on multiple prop.\n// NOTE: OptionsValues assumes a static \"value\" key; custom valueField is not\n// reflected in the type — modelValue falls back to unknown in that case.\nconst modelValue = defineModel<OptionsValues<Options> | OptionsValues<Options>[] | null>({\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  default: '' as any,\n})\n\n// Normalize a single simple option using custom field names\nconst normalizeSimpleOption = (el: object): SelectOption =>\n  ({\n    ...(el as Record<string, unknown>),\n    value: (el as Record<string, unknown>)[props.valueField as string],\n    text: ((el as Record<string, unknown>)[props.textField as string] as string | undefined) ?? '',\n    disabled:\n      ((el as Record<string, unknown>)[props.disabledField as string] as boolean | undefined) ??\n      false,\n  }) as SelectOption\n\nconst normalizePrimitive = (el: string | number | boolean): SelectOption =>\n  ({value: el, text: String(el), disabled: false}) as SelectOption\n\n// Type-safe normalization of options (supports both simple and complex/grouped)\nconst normalizedOptions = computed(() => {\n  const optionsArray = props.options ?? []\n  const hasComplexOptions = optionsArray.some(\n    (el) =>\n      typeof el !== 'string' &&\n      typeof el !== 'number' &&\n      typeof el !== 'boolean' &&\n      (el as Record<string, unknown>)[props.optionsField as string] !== undefined\n  )\n\n  if (hasComplexOptions) {\n    return optionsArray.map((el) => {\n      if (typeof el === 'string' || typeof el === 'number' || typeof el === 'boolean') {\n        return normalizePrimitive(el)\n      }\n\n      // Check if this is a complex (grouped) option\n      const optionsField = (el as Record<string, unknown>)[props.optionsField as string]\n      if (optionsField !== undefined && Array.isArray(optionsField)) {\n        // Complex option with nested options\n        const label =\n          ((el as Record<string, unknown>)[props.labelField as string] as string | undefined) ??\n          ((el as Record<string, unknown>)[props.textField as string] as string | undefined) ??\n          ''\n        return {\n          label,\n          options: optionsField.map((subOpt: unknown) => {\n            if (\n              typeof subOpt === 'string' ||\n              typeof subOpt === 'number' ||\n              typeof subOpt === 'boolean'\n            ) {\n              return normalizePrimitive(subOpt)\n            }\n            return normalizeSimpleOption(subOpt as object)\n          }),\n        } as ComplexSelectOptionRaw\n      }\n\n      // Simple option - spread all properties from the original object to preserve class, data-*, etc.\n      return normalizeSimpleOption(el as object)\n    })\n  }\n\n  return optionsArray.map((el) => {\n    if (typeof el === 'string' || typeof el === 'number' || typeof el === 'boolean') {\n      return normalizePrimitive(el)\n    }\n    // Spread all properties from the original object to preserve class, data-*, etc.\n    return normalizeSimpleOption(el as object)\n  })\n})\n\n// Forward all props except options (which we normalize), modelValue (handled separately),\n// and field mappings (already used for normalization)\nconst forwardedProps = computed(() => ({\n  ariaInvalid: props.ariaInvalid,\n  autofocus: props.autofocus,\n  disabled: props.disabled,\n  form: props.form,\n  id: props.id,\n  multiple: props.multiple,\n  name: props.name,\n  plain: props.plain,\n  required: props.required,\n  selectSize: props.selectSize,\n  size: props.size,\n  state: props.state,\n}))\n</script>\n","<template>\n  <BFormSelectBase v-bind=\"forwardedProps\" v-model=\"modelValue\" :options=\"normalizedOptions as any\">\n    <!-- Forward all slots -->\n    <template #first>\n      <slot name=\"first\" />\n    </template>\n\n    <template #option=\"slotProps\">\n      <slot name=\"option\" v-bind=\"slotProps as any\" />\n    </template>\n\n    <slot />\n  </BFormSelectBase>\n</template>\n\n<script\n  setup\n  lang=\"ts\"\n  generic=\"\n    Options extends readonly (object | string | number | boolean)[] = readonly (\n      | object\n      | string\n      | number\n      | boolean\n    )[]\n  \"\n>\nimport type {BFormSelectProps} from '../../types/ComponentProps'\nimport {computed} from 'vue'\nimport BFormSelectBase from './BFormSelectBase.vue'\nimport type {ComplexSelectOptionRaw, SelectOption} from '../../types/SelectTypes'\nimport type {BFormSelectSlots} from '../../types'\nimport type {OptionsValues} from '../../types/OptionsTypes'\n\n/**\n * Type-safe wrapper component for BFormSelect.\n * Provides generic type safety for options array and strongly-typed modelValue.\n * Uses Options array generic to extract union of all possible values.\n * Normalizes typed options and forwards to BFormSelectBase for rendering.\n * Supports both complex objects and simple scalar types (string, number).\n *\n * For strongly-typed modelValue:\n * - Primitive arrays: modelValue is union of those values (or array if multiple)\n * - Object arrays with 'value' field: modelValue is union of value field types\n * - Use 'as const' on options for literal type inference\n */\nconst props = withDefaults(defineProps<Omit<BFormSelectProps<Options>, 'modelValue'>>(), {\n  ariaInvalid: undefined,\n  autofocus: false,\n  disabled: false,\n  disabledField: 'disabled',\n  form: undefined,\n  id: undefined,\n  labelField: 'label',\n  multiple: false,\n  name: undefined,\n  options: () => [] as unknown as Options,\n  optionsField: 'options',\n  plain: false,\n  required: false,\n  selectSize: 0,\n  size: 'md',\n  state: null,\n  textField: 'text',\n  valueField: 'value',\n})\ndefineSlots<BFormSelectSlots<OptionsValues<Options>>>()\n\n// Type-safe model value - single value or array depending on multiple prop.\n// NOTE: OptionsValues assumes a static \"value\" key; custom valueField is not\n// reflected in the type — modelValue falls back to unknown in that case.\nconst modelValue = defineModel<OptionsValues<Options> | OptionsValues<Options>[] | null>({\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  default: '' as any,\n})\n\n// Normalize a single simple option using custom field names\nconst normalizeSimpleOption = (el: object): SelectOption =>\n  ({\n    ...(el as Record<string, unknown>),\n    value: (el as Record<string, unknown>)[props.valueField as string],\n    text: ((el as Record<string, unknown>)[props.textField as string] as string | undefined) ?? '',\n    disabled:\n      ((el as Record<string, unknown>)[props.disabledField as string] as boolean | undefined) ??\n      false,\n  }) as SelectOption\n\nconst normalizePrimitive = (el: string | number | boolean): SelectOption =>\n  ({value: el, text: String(el), disabled: false}) as SelectOption\n\n// Type-safe normalization of options (supports both simple and complex/grouped)\nconst normalizedOptions = computed(() => {\n  const optionsArray = props.options ?? []\n  const hasComplexOptions = optionsArray.some(\n    (el) =>\n      typeof el !== 'string' &&\n      typeof el !== 'number' &&\n      typeof el !== 'boolean' &&\n      (el as Record<string, unknown>)[props.optionsField as string] !== undefined\n  )\n\n  if (hasComplexOptions) {\n    return optionsArray.map((el) => {\n      if (typeof el === 'string' || typeof el === 'number' || typeof el === 'boolean') {\n        return normalizePrimitive(el)\n      }\n\n      // Check if this is a complex (grouped) option\n      const optionsField = (el as Record<string, unknown>)[props.optionsField as string]\n      if (optionsField !== undefined && Array.isArray(optionsField)) {\n        // Complex option with nested options\n        const label =\n          ((el as Record<string, unknown>)[props.labelField as string] as string | undefined) ??\n          ((el as Record<string, unknown>)[props.textField as string] as string | undefined) ??\n          ''\n        return {\n          label,\n          options: optionsField.map((subOpt: unknown) => {\n            if (\n              typeof subOpt === 'string' ||\n              typeof subOpt === 'number' ||\n              typeof subOpt === 'boolean'\n            ) {\n              return normalizePrimitive(subOpt)\n            }\n            return normalizeSimpleOption(subOpt as object)\n          }),\n        } as ComplexSelectOptionRaw\n      }\n\n      // Simple option - spread all properties from the original object to preserve class, data-*, etc.\n      return normalizeSimpleOption(el as object)\n    })\n  }\n\n  return optionsArray.map((el) => {\n    if (typeof el === 'string' || typeof el === 'number' || typeof el === 'boolean') {\n      return normalizePrimitive(el)\n    }\n    // Spread all properties from the original object to preserve class, data-*, etc.\n    return normalizeSimpleOption(el as object)\n  })\n})\n\n// Forward all props except options (which we normalize), modelValue (handled separately),\n// and field mappings (already used for normalization)\nconst forwardedProps = computed(() => ({\n  ariaInvalid: props.ariaInvalid,\n  autofocus: props.autofocus,\n  disabled: props.disabled,\n  form: props.form,\n  id: props.id,\n  multiple: props.multiple,\n  name: props.name,\n  plain: props.plain,\n  required: props.required,\n  selectSize: props.selectSize,\n  size: props.size,\n  state: props.state,\n}))\n</script>\n"],"mappings":"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"}