{"version":3,"file":"index.mjs","sources":["../../../../../../../packages/components/phone-input/src/utils/index.ts"],"sourcesContent":["import { computed } from 'vue'\nimport {\n  AsYouType,\n  type CountryCode,\n  type Examples,\n  getCountries,\n  getCountryCallingCode,\n  getExampleNumber,\n  isSupportedCountry,\n  parsePhoneNumberFromString,\n} from 'libphonenumber-js'\nimport { countriesNameListByIsoCode } from './countries-name-list-by-iso-code'\nimport type { getCurrentInstance } from 'vue'\nimport type { Country, Result } from '../types'\n\nexport function getCountryName(\n  code: CountryCode | string,\n  customCountriesNameListByIsoCode?: Record<CountryCode, string>\n): string | undefined {\n  return {\n    ...countriesNameListByIsoCode,\n    ...customCountriesNameListByIsoCode,\n  }[code]\n}\n\nconst PHONE_CHAR_REGEX = /^[\\d ().-]+$/\nconst NON_ALPHA_REGEX = /^[^a-z]+$/i\n\nlet examples: Examples\n\nexport async function loadPhoneNumberExamplesFile() {\n  const { default: data } = await import(\n    'libphonenumber-js/examples.mobile.json'\n  )\n\n  examples = data\n  return examples\n}\n\nexport function getExamplePhoneNumber(countryCode: CountryCode) {\n  return getExampleNumber(countryCode, examples)\n}\n\nexport function sanitizePhoneNumber(input?: string) {\n  if (!input) {\n    return\n  }\n\n  const hasNonAlpha = NON_ALPHA_REGEX.test(input)\n  const hasPhoneChar = PHONE_CHAR_REGEX.test(input)\n\n  if (!hasNonAlpha && !hasPhoneChar) {\n    return input.replace(/[^\\d.]/g, '')\n  }\n\n  return input\n}\n\nexport function getCountriesList(\n  customCountriesNameListByIsoCode?: Record<CountryCode, string>\n): Country[] | undefined {\n  const countriesList: Country[] = []\n  const isoList = getCountries()\n\n  for (const iso2 of isoList) {\n    const name = getCountryName(iso2, customCountriesNameListByIsoCode)\n\n    if (name) {\n      try {\n        const dialCode = getCountryCallingCode(iso2)\n        countriesList.push({\n          iso2,\n          dialCode,\n          name,\n        })\n      } catch (error) {\n        // eslint-disable-next-line no-console\n        console.error(`[MazPhoneNumberInput](getCountryCallingCode) ${error}`)\n      }\n    }\n  }\n\n  return countriesList\n}\n\nexport function browserLocale() {\n  try {\n    if (typeof window === 'undefined') {\n      return\n    }\n\n    const browserLocale = window.navigator.language\n\n    if (!browserLocale) {\n      return\n    }\n\n    let locale = browserLocale.slice(3, 7).toUpperCase()\n\n    if (locale === '') {\n      locale = browserLocale.slice(0, 2).toUpperCase()\n    }\n\n    if (locale === 'EN') {\n      locale = 'US'\n    }\n    if (locale === 'JA') {\n      locale = 'JP'\n    }\n\n    return locale\n  } catch (error) {\n    throw new Error(`[MazPhoneNumberInput](browserLocale) ${error}`)\n  }\n}\n\nexport function isCountryAvailable(locale: string) {\n  try {\n    const response = isSupportedCountry(locale)\n\n    if (!response) {\n      console.error(\n        `[MazPhoneNumberInput](isCountryAvailable) The code country \"${locale}\" is not available`\n      )\n    }\n\n    return response\n  } catch (error) {\n    throw new Error(`[MazPhoneNumberInput](isCountryAvailable) ${error}`)\n  }\n}\n\nexport const getResultsFromPhoneNumber = (\n  countryCode?: CountryCode,\n  phoneNumber?: string\n): Result => {\n  try {\n    if (!phoneNumber) {\n      return {\n        isValid: false,\n        countryCode,\n      }\n    }\n    const parsing = parsePhoneNumberFromString(phoneNumber, countryCode)\n\n    return {\n      isValid: parsing?.isValid() ?? false,\n      isPossible: parsing?.isPossible(),\n      countryCode: parsing?.country,\n      countryCallingCode: parsing?.countryCallingCode,\n      nationalNumber: parsing?.nationalNumber,\n      type: parsing?.getType(),\n      formatInternational: parsing?.formatInternational(),\n      formatNational: parsing?.formatNational(),\n      uri: parsing?.getURI(),\n      e164: parsing?.format('E.164'),\n      rfc3966: parsing?.format('RFC3966'),\n    }\n  } catch (error) {\n    throw new Error(`[MazPhoneNumberInput](getResultsFromPhoneNumber) ${error}`)\n  }\n}\n\nexport function getAsYouTypeFormat(\n  countryCode: CountryCode,\n  phoneNumber?: string\n) {\n  try {\n    if (!phoneNumber) {\n      return\n    }\n\n    return countryCode\n      ? new AsYouType(countryCode).input(phoneNumber)\n      : phoneNumber\n  } catch (error) {\n    throw new Error(`[MazPhoneNumberInput](getAsYouTypeFormat) ${error}`)\n  }\n}\n\ninterface IpWhoResponse {\n  ip: string\n  success: true\n  type?: string\n  continent?: string\n  continent_code?: string\n  country?: string\n  country_code?: string\n  region?: string\n  region_code?: string\n  city?: string\n  latitude?: number\n  longitude?: number\n  is_eu: true\n  postal?: string\n  calling_code?: string\n  capital?: string\n  borders?: string\n  flag: {\n    img?: string\n    emoji?: string\n    emoji_unicode?: string\n  }\n  connection: {\n    asn?: number\n    org?: string\n    isp?: string\n    domain?: string\n  }\n  timezone: {\n    id?: string\n    abbr?: string\n    is_dst: false\n    offset?: number\n    utc?: string\n    current_time?: string\n  }\n}\n\nexport async function fetchCountryCode() {\n  try {\n    const reponse = await fetch('https://ipwho.is')\n    // eslint-disable-next-line camelcase\n    const { country_code } = (await reponse.json()) as IpWhoResponse\n\n    // eslint-disable-next-line camelcase\n    return country_code\n  } catch (error) {\n    throw new Error(`[MazPhoneNumberInput](fetchCountryCode) ${error}`)\n  }\n}\n\nexport type Truthy<T> = T extends false | '' | 0 | null | undefined ? never : T\nexport function truthyFilter<T>(value: T): value is Truthy<T> {\n  return !!value\n}\n\nexport const useInstanceUniqId = ({\n  componentName,\n  instance,\n  providedId,\n}: {\n  componentName: string\n  instance?: ReturnType<typeof getCurrentInstance>\n  providedId?: string\n}) => {\n  const instanceId = computed(\n    () => providedId ?? `${componentName}-${instance?.uid}`\n  )\n\n  return {\n    instanceId,\n  }\n}\n"],"names":["browserLocale"],"mappings":";;;;AAegB,SAAA,cAAA,CACd,MACA,gCACoB,EAAA;AACpB,EAAO,OAAA;AAAA,IACL,GAAG,0BAAA;AAAA,IACH,GAAG,gCAAA;AAAA,GACH,CAAA,IAAA,CAAA,CAAA;AACJ,CAAA;AAEA,MAAM,gBAAmB,GAAA,cAAA,CAAA;AACzB,MAAM,eAAkB,GAAA,YAAA,CAAA;AAExB,IAAI,QAAA,CAAA;AAEJ,eAAsB,2BAA8B,GAAA;AAClD,EAAA,MAAM,EAAE,OAAA,EAAS,IAAK,EAAA,GAAI,MAAM,OAC9B,wCAAA,CAAA,CAAA;AAGF,EAAW,QAAA,GAAA,IAAA,CAAA;AACX,EAAO,OAAA,QAAA,CAAA;AACT,CAAA;AAEO,SAAS,sBAAsB,WAA0B,EAAA;AAC9D,EAAO,OAAA,gBAAA,CAAiB,aAAa,QAAQ,CAAA,CAAA;AAC/C,CAAA;AAEO,SAAS,oBAAoB,KAAgB,EAAA;AAClD,EAAA,IAAI,CAAC,KAAO,EAAA;AACV,IAAA,OAAA;AAAA,GACF;AAEA,EAAM,MAAA,WAAA,GAAc,eAAgB,CAAA,IAAA,CAAK,KAAK,CAAA,CAAA;AAC9C,EAAM,MAAA,YAAA,GAAe,gBAAiB,CAAA,IAAA,CAAK,KAAK,CAAA,CAAA;AAEhD,EAAI,IAAA,CAAC,WAAe,IAAA,CAAC,YAAc,EAAA;AACjC,IAAO,OAAA,KAAA,CAAM,OAAQ,CAAA,SAAA,EAAW,EAAE,CAAA,CAAA;AAAA,GACpC;AAEA,EAAO,OAAA,KAAA,CAAA;AACT,CAAA;AAEO,SAAS,iBACd,gCACuB,EAAA;AACvB,EAAA,MAAM,gBAA2B,EAAC,CAAA;AAClC,EAAA,MAAM,UAAU,YAAa,EAAA,CAAA;AAE7B,EAAA,KAAA,MAAW,QAAQ,OAAS,EAAA;AAC1B,IAAM,MAAA,IAAA,GAAO,cAAe,CAAA,IAAA,EAAM,gCAAgC,CAAA,CAAA;AAElE,IAAA,IAAI,IAAM,EAAA;AACR,MAAI,IAAA;AACF,QAAM,MAAA,QAAA,GAAW,sBAAsB,IAAI,CAAA,CAAA;AAC3C,QAAA,aAAA,CAAc,IAAK,CAAA;AAAA,UACjB,IAAA;AAAA,UACA,QAAA;AAAA,UACA,IAAA;AAAA,SACD,CAAA,CAAA;AAAA,eACM,KAAP,EAAA;AAEA,QAAQ,OAAA,CAAA,KAAA,CAAM,gDAAgD,KAAO,CAAA,CAAA,CAAA,CAAA;AAAA,OACvE;AAAA,KACF;AAAA,GACF;AAEA,EAAO,OAAA,aAAA,CAAA;AACT,CAAA;AAEO,SAAS,aAAgB,GAAA;AAC9B,EAAI,IAAA;AACF,IAAI,IAAA,OAAO,WAAW,WAAa,EAAA;AACjC,MAAA,OAAA;AAAA,KACF;AAEA,IAAMA,MAAAA,cAAAA,GAAgB,OAAO,SAAU,CAAA,QAAA,CAAA;AAEvC,IAAA,IAAI,CAACA,cAAe,EAAA;AAClB,MAAA,OAAA;AAAA,KACF;AAEA,IAAA,IAAI,SAASA,cAAc,CAAA,KAAA,CAAM,CAAG,EAAA,CAAC,EAAE,WAAY,EAAA,CAAA;AAEnD,IAAA,IAAI,WAAW,EAAI,EAAA;AACjB,MAAA,MAAA,GAASA,cAAc,CAAA,KAAA,CAAM,CAAG,EAAA,CAAC,EAAE,WAAY,EAAA,CAAA;AAAA,KACjD;AAEA,IAAA,IAAI,WAAW,IAAM,EAAA;AACnB,MAAS,MAAA,GAAA,IAAA,CAAA;AAAA,KACX;AACA,IAAA,IAAI,WAAW,IAAM,EAAA;AACnB,MAAS,MAAA,GAAA,IAAA,CAAA;AAAA,KACX;AAEA,IAAO,OAAA,MAAA,CAAA;AAAA,WACA,KAAP,EAAA;AACA,IAAM,MAAA,IAAI,KAAM,CAAA,CAAA,qCAAA,EAAwC,KAAO,CAAA,CAAA,CAAA,CAAA;AAAA,GACjE;AACF,CAAA;AAEO,SAAS,mBAAmB,MAAgB,EAAA;AACjD,EAAI,IAAA;AACF,IAAM,MAAA,QAAA,GAAW,mBAAmB,MAAM,CAAA,CAAA;AAE1C,IAAA,IAAI,CAAC,QAAU,EAAA;AACb,MAAQ,OAAA,CAAA,KAAA;AAAA,QACN,CAA+D,4DAAA,EAAA,MAAA,CAAA,kBAAA,CAAA;AAAA,OACjE,CAAA;AAAA,KACF;AAEA,IAAO,OAAA,QAAA,CAAA;AAAA,WACA,KAAP,EAAA;AACA,IAAM,MAAA,IAAI,KAAM,CAAA,CAAA,0CAAA,EAA6C,KAAO,CAAA,CAAA,CAAA,CAAA;AAAA,GACtE;AACF,CAAA;AAEa,MAAA,yBAAA,GAA4B,CACvC,WAAA,EACA,WACW,KAAA;AACX,EAAI,IAAA;AACF,IAAA,IAAI,CAAC,WAAa,EAAA;AAChB,MAAO,OAAA;AAAA,QACL,OAAS,EAAA,KAAA;AAAA,QACT,WAAA;AAAA,OACF,CAAA;AAAA,KACF;AACA,IAAM,MAAA,OAAA,GAAU,0BAA2B,CAAA,WAAA,EAAa,WAAW,CAAA,CAAA;AAEnE,IAAO,OAAA;AAAA,MACL,OAAA,EAAS,OAAS,EAAA,OAAA,EAAa,IAAA,KAAA;AAAA,MAC/B,UAAA,EAAY,SAAS,UAAW,EAAA;AAAA,MAChC,aAAa,OAAS,EAAA,OAAA;AAAA,MACtB,oBAAoB,OAAS,EAAA,kBAAA;AAAA,MAC7B,gBAAgB,OAAS,EAAA,cAAA;AAAA,MACzB,IAAA,EAAM,SAAS,OAAQ,EAAA;AAAA,MACvB,mBAAA,EAAqB,SAAS,mBAAoB,EAAA;AAAA,MAClD,cAAA,EAAgB,SAAS,cAAe,EAAA;AAAA,MACxC,GAAA,EAAK,SAAS,MAAO,EAAA;AAAA,MACrB,IAAA,EAAM,OAAS,EAAA,MAAA,CAAO,OAAO,CAAA;AAAA,MAC7B,OAAA,EAAS,OAAS,EAAA,MAAA,CAAO,SAAS,CAAA;AAAA,KACpC,CAAA;AAAA,WACO,KAAP,EAAA;AACA,IAAM,MAAA,IAAI,KAAM,CAAA,CAAA,iDAAA,EAAoD,KAAO,CAAA,CAAA,CAAA,CAAA;AAAA,GAC7E;AACF,EAAA;AAEgB,SAAA,kBAAA,CACd,aACA,WACA,EAAA;AACA,EAAI,IAAA;AACF,IAAA,IAAI,CAAC,WAAa,EAAA;AAChB,MAAA,OAAA;AAAA,KACF;AAEA,IAAA,OAAO,cACH,IAAI,SAAA,CAAU,WAAW,CAAE,CAAA,KAAA,CAAM,WAAW,CAC5C,GAAA,WAAA,CAAA;AAAA,WACG,KAAP,EAAA;AACA,IAAM,MAAA,IAAI,KAAM,CAAA,CAAA,0CAAA,EAA6C,KAAO,CAAA,CAAA,CAAA,CAAA;AAAA,GACtE;AACF,CAAA;AAyCA,eAAsB,gBAAmB,GAAA;AACvC,EAAI,IAAA;AACF,IAAM,MAAA,OAAA,GAAU,MAAM,KAAA,CAAM,kBAAkB,CAAA,CAAA;AAE9C,IAAA,MAAM,EAAE,YAAA,EAAkB,GAAA,MAAM,QAAQ,IAAK,EAAA,CAAA;AAG7C,IAAO,OAAA,YAAA,CAAA;AAAA,WACA,KAAP,EAAA;AACA,IAAM,MAAA,IAAI,KAAM,CAAA,CAAA,wCAAA,EAA2C,KAAO,CAAA,CAAA,CAAA,CAAA;AAAA,GACpE;AACF,CAAA;AAGO,SAAS,aAAgB,KAA8B,EAAA;AAC5D,EAAA,OAAO,CAAC,CAAC,KAAA,CAAA;AACX,CAAA;AAEO,MAAM,oBAAoB,CAAC;AAAA,EAChC,aAAA;AAAA,EACA,QAAA;AAAA,EACA,UAAA;AACF,CAIM,KAAA;AACJ,EAAA,MAAM,UAAa,GAAA,QAAA;AAAA,IACjB,MAAM,UAAA,IAAc,CAAG,EAAA,aAAA,CAAA,CAAA,EAAiB,QAAU,EAAA,GAAA,CAAA,CAAA;AAAA,GACpD,CAAA;AAEA,EAAO,OAAA;AAAA,IACL,UAAA;AAAA,GACF,CAAA;AACF;;;;"}