{"version":3,"file":"phone-input2.mjs","sources":["../../../../../../packages/components/phone-input/src/phone-input.vue"],"sourcesContent":["<template>\n  <BInput\n    :id=\"instanceId\"\n    ref=\"PhoneNumberInput\"\n    :model-value=\"formattedNumber\"\n    :placeholder=\"inputPlaceholder\"\n    :disabled=\"disabled\"\n    v-bind=\"$attrs\"\n    :size=\"size\"\n    :large=\"large\"\n    :small=\"small\"\n    type=\"tel\"\n    clearable\n    prefix-class=\"is-select\"\n    :class=\"[ns.b(), ns.is('no-flags', noFlags), ns.is('focus', inputFocused)]\"\n    data-test-name=\"phone-input\"\n    data-test-variant=\"\"\n    data-test-state=\"\"\n    @focus=\"inputFocused = true\"\n    @blur=\"onBlur\"\n    @update:model-value=\"emitsValueAndResults($event)\"\n    @keydown=\"onKeydown($event)\"\n  >\n    <template #prefix>\n      <BSelect\n        v-if=\"!noCountrySelector && countryOptions\"\n        ref=\"CountrySelector\"\n        :class=\"[ns.e('select'), ns.is('no-country-code', !countryCode)]\"\n        :model-value=\"countryCode\"\n        :disabled=\"disabled\"\n        :size=\"size\"\n        :large=\"large\"\n        :small=\"small\"\n        :placeholder=\"''\"\n        @update:model-value=\"setCountryCode($event as CountryCode, true)\"\n        @focus=\"inputFocused = true\"\n      >\n        <template\n          v-if=\"countryCode && !noFlags && !noCountrySelector\"\n          #selected=\"{ value }\"\n        >\n          <div class=\"b-flag__wrapper\">\n            <div class=\"b-flag\" :class=\"`b-flag-${value.toLowerCase()}`\" />\n          </div>\n        </template>\n        <template v-if=\"showCountriesFilter\" #dropdownHeader>\n          <BInput\n            v-model=\"filterValue\"\n            small\n            placeholder=\"Filter by name\"\n            @focus=\"inputFocused = true\"\n          />\n        </template>\n        <BOption\n          v-for=\"item in countryOptions\"\n          :key=\"item.iso2\"\n          :value=\"item.iso2\"\n          :class=\"ns.e('select-option')\"\n        >\n          <span class=\"b-flag__wrapper\">\n            <span\n              v-if=\"!noFlags && typeof item.iso2 === 'string'\"\n              class=\"b-flag\"\n              :class=\"[`b-flag-${item.iso2.toLowerCase()}`]\"\n            />\n          </span>\n\n          <span :class=\"ns.e('select-option-name')\">\n            {{ item.name }}\n          </span>\n          <span v-if=\"showCodeOnList\" :class=\"ns.e('select-option-code')\">\n            ({{ item.dialCode }})\n          </span>\n        </BOption>\n      </BSelect>\n    </template>\n  </BInput>\n</template>\n\n<script lang=\"ts\" setup>\nimport {\n  computed,\n  getCurrentInstance,\n  onBeforeMount,\n  onMounted,\n  ref,\n  watch,\n} from 'vue'\nimport { CountryCode } from 'libphonenumber-js'\nimport { BInput } from '@bigin/components/input'\nimport { BOption, BSelect } from '@bigin/components/select'\nimport { useNamespace } from '@bigin/hooks'\nimport locales from './constants/locales'\nimport {\n  browserLocale,\n  fetchCountryCode,\n  getAsYouTypeFormat,\n  getCountriesList,\n  getExamplePhoneNumber,\n  getResultsFromPhoneNumber,\n  isCountryAvailable,\n  loadPhoneNumberExamplesFile,\n  sanitizePhoneNumber,\n  truthyFilter,\n  useInstanceUniqId,\n} from './utils'\nimport { phoneInputEmits, phoneInputProps } from './phone-input'\nimport type { Result } from './types'\n\ndefineOptions({ name: 'BPhoneInput', components: { BInput, BSelect, BOption } })\n\nconst props = defineProps(phoneInputProps)\nconst emits = defineEmits(phoneInputEmits)\nconst ns = useNamespace('phone-input')\n\nconst instance = getCurrentInstance()\nconst { instanceId } = useInstanceUniqId({\n  componentName: 'BInput',\n  instance,\n  providedId: props.id,\n})\n\nconst results = ref<Partial<Result>>({})\nconst countryCode = ref<CountryCode>()\nconst formattedNumber = ref<string>()\nconst cursorPosition = ref<number | null>()\nconst examplesFileLoaded = ref(false)\nconst inputFocused = ref(false)\nconst lastKeyPressed = ref<KeyboardEvent['key']>()\nconst CountrySelector = ref<typeof BSelect>()\nconst PhoneNumberInput = ref<typeof BInput>()\n\nonBeforeMount(async () => {\n  try {\n    formattedNumber.value = props.modelValue ?? props.defaultPhoneNumber\n\n    if (props.defaultCountryCode) {\n      setCountryCode(props.defaultCountryCode)\n    }\n\n    if (props.fetchCountry) {\n      const locale = await fetchCountryCode()\n      if (locale) setCountryCode(locale)\n    }\n\n    getAndEmitResults(formattedNumber.value)\n  } catch (error) {\n    throw new Error(`[BPhoneInput](onBeforeMount) ${error}`)\n  }\n\n  try {\n    if (!props.noExample && !examplesFileLoaded.value) {\n      await loadPhoneNumberExamplesFile()\n      examplesFileLoaded.value = true\n    }\n  } catch {\n    throw new Error(\n      '[BPhoneInput](onBeforeMount) while loading phone number examples file'\n    )\n  }\n})\n\nonMounted(() => {\n  try {\n    if (\n      !props.defaultCountryCode &&\n      !props.noUseBrowserLocale &&\n      !countryCode.value\n    ) {\n      const locale = browserLocale()\n      if (locale) {\n        setCountryCode(locale)\n      }\n    }\n\n    if (props.defaultCountryCode && props.fetchCountry) {\n      throw String(\n        \"Do not use 'fetch-country' and 'default-country-code' options in the same time\"\n      )\n    }\n    if (props.defaultCountryCode && props.noUseBrowserLocale) {\n      throw String(\n        \"If you use a 'default-country-code', do not use 'no-use-browser-locale' options\"\n      )\n    }\n  } catch (error) {\n    // eslint-disable-next-line no-console\n    console.warn(`[BPhoneInput](mounted) ${error}`)\n  }\n})\n\nconst countries = computed(() => getCountriesList(props.customCountriesList))\n\nconst t = computed(() => ({\n  ...locales,\n  ...props.translations,\n}))\n\nconst filterValue = ref('')\n\nconst isValid = computed(() => {\n  return results.value?.isValid\n})\n\nconst countriesList = computed(() => {\n  return countries.value?.filter(\n    (item) => !props.ignoredCountries?.includes(item.iso2)\n  )\n})\n\nconst countriesFiltered = computed(() => {\n  const countries = props.onlyCountries || props.preferredCountries\n  return countries?.map((country) =>\n    countriesList.value?.find((item) => item.iso2.includes(country))\n  )\n})\n\nconst otherCountries = computed(() => {\n  return countriesList.value?.filter(\n    (item) => !props.preferredCountries?.includes(item.iso2)\n  )\n})\n\nconst countriesSorted = computed(() => {\n  return props.preferredCountries\n    ? [...(countriesFiltered.value ?? []), ...(otherCountries.value ?? [])]\n    : props.onlyCountries\n    ? countriesFiltered.value\n    : countriesList.value\n})\n\nconst countryOptions = computed(() => {\n  return countriesSorted.value\n    ?.map((country) => {\n      return country\n        ? {\n            ...country,\n            dialCode: `+${country.dialCode}`,\n          }\n        : undefined\n    })\n    .filter((i) =>\n      i?.name.toLowerCase().includes(filterValue.value.toLowerCase())\n    )\n    .filter(truthyFilter)\n})\n\nconst inputPlaceholder = computed(() => {\n  if (props.placeholder) {\n    return props.placeholder\n  }\n\n  const defaultPlaceholder = t.value.phoneInput.placeholder\n\n  if (props.noExample || !examplesFileLoaded.value) {\n    return defaultPlaceholder\n  } else {\n    const example = getPhoneNumberExample()\n    return isValid.value || !example\n      ? defaultPlaceholder\n      : `${t.value.phoneInput.example} ${example}`\n  }\n})\n\nwatch(\n  () => props.modelValue,\n  (phoneNumber, oldPhoneNumber) => {\n    if (phoneNumber !== oldPhoneNumber) {\n      emitsValueAndResults(phoneNumber)\n    }\n  }\n)\n\nwatch(\n  () => props.defaultPhoneNumber,\n  (phoneNumber, oldPhoneNumber) => {\n    if (phoneNumber !== oldPhoneNumber) {\n      emitsValueAndResults(phoneNumber)\n    }\n  }\n)\n\nwatch(\n  () => props.defaultCountryCode,\n  (countryCode, oldCountryCode) => {\n    if (countryCode && countryCode !== oldCountryCode) {\n      setCountryCode(countryCode)\n      emitsValueAndResults()\n    }\n  }\n)\n\nconst onKeydown = (event: KeyboardEvent) => {\n  lastKeyPressed.value = event.key\n\n  const target = event.target as HTMLInputElement | undefined\n\n  cursorPosition.value = target?.selectionStart\n}\n\nconst getPhoneNumberExample = () => {\n  try {\n    const phoneNumber = countryCode.value\n      ? getExamplePhoneNumber(countryCode.value)\n      : undefined\n    return phoneNumber ? phoneNumber.formatNational() : undefined\n  } catch (error) {\n    throw new Error(`[BPhoneInput](getPhoneNumberExample) ${error}`)\n  }\n}\n\nconst autoUpdateCountryCodeFromPhoneNumber = () => {\n  if (\n    results.value &&\n    results.value.countryCode &&\n    countryCode.value !== results.value.countryCode\n  ) {\n    setCountryCode(results.value.countryCode)\n  }\n}\n\nconst sanitizeNumber = (phoneNumber?: string) => {\n  phoneNumber = sanitizePhoneNumber(phoneNumber)\n\n  const backSpacePressed = lastKeyPressed.value === 'Backspace'\n\n  const lastCharacOfPhoneNumber = phoneNumber\n    ? phoneNumber.charAt(phoneNumber.length - 1)\n    : ''\n  const lastCharIsParanthese = lastCharacOfPhoneNumber === ')'\n\n  if (backSpacePressed && lastCharIsParanthese) {\n    phoneNumber = phoneNumber?.trim().slice(0, -2)\n  }\n\n  return phoneNumber\n}\n\nconst getAndEmitResults = (\n  phoneNumber?: string,\n  noAutoUpdateCountryCode?: boolean\n) => {\n  results.value = getResultsFromPhoneNumber(countryCode.value, phoneNumber)\n\n  if (!noAutoUpdateCountryCode) {\n    autoUpdateCountryCodeFromPhoneNumber()\n  }\n\n  emits('update', results.value)\n}\n\nconst emitsValueAndResults = (\n  phoneNumber = props.modelValue,\n  noAutoUpdateCountryCode?: boolean\n) => {\n  try {\n    getAndEmitResults(phoneNumber, noAutoUpdateCountryCode)\n\n    emitValue(phoneNumber)\n  } catch (error) {\n    throw new Error(`[BPhoneInput](emitsValueAndResults) ${error}`)\n  }\n}\n\nconst emitValue = (phoneNumber?: string) => {\n  formattedNumber.value = sanitizeNumber(phoneNumber)\n\n  const { isValid, e164, formatNational } = getResultsFromPhoneNumber(\n    countryCode.value,\n    phoneNumber\n  )\n\n  const hasDeletedCharac =\n    formattedNumber.value &&\n    phoneNumber &&\n    formattedNumber.value?.length > phoneNumber?.length\n\n  const cursorIsAtEnd =\n    phoneNumber && cursorPosition.value\n      ? cursorPosition.value + 1 >= phoneNumber.length\n      : true\n\n  const shouldUseAsYoutType = (!hasDeletedCharac && cursorIsAtEnd) || isValid\n\n  if (countryCode.value) {\n    const isFullNumber = formattedNumber.value?.includes('+')\n\n    formattedNumber.value =\n      formatNational && isFullNumber\n        ? formatNational\n        : shouldUseAsYoutType\n        ? getAsYouTypeFormat(countryCode.value, formattedNumber.value)\n        : formattedNumber.value\n  }\n\n  const valueToEmit = isValid ? e164 : formattedNumber.value\n\n  if (valueToEmit !== props.modelValue) {\n    emits('update:modelValue', valueToEmit)\n  }\n}\n\nconst onBlur = () => {\n  inputFocused.value = true\n\n  if (countryCode.value) {\n    formattedNumber.value = getAsYouTypeFormat(\n      countryCode.value,\n      formattedNumber.value\n    )\n  }\n}\n\nconst setCountryCode = (\n  selectedCountryCode: string,\n  autoFocusInput = false\n) => {\n  try {\n    const countryAvailable = isCountryAvailable(selectedCountryCode)\n\n    if (countryAvailable) {\n      countryCode.value = selectedCountryCode as CountryCode\n      emits('countryCode', selectedCountryCode)\n      emitsValueAndResults(props.modelValue, true)\n    }\n\n    if (autoFocusInput) {\n      focusPhoneNumberInput()\n      if (formattedNumber.value && formattedNumber.value.includes('+')) {\n        formattedNumber.value = undefined\n      }\n    }\n  } catch (error) {\n    throw new Error(`[BPhoneInput](setCountryCode) ${error}`)\n  }\n}\n\nconst focusPhoneNumberInput = () => {\n  try {\n    PhoneNumberInput.value?.$el.querySelector('input')?.focus()\n  } catch (error) {\n    throw new Error(`[BPhoneInput](focusPhoneNumberInput) ${error}`)\n  }\n}\n</script>\n"],"names":["DO_defineComponent","countries","countryCode","isValid"],"mappings":"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"}