{"version":3,"file":"phone-input.mjs","sources":["../../../../../../packages/components/phone-input/src/phone-input.ts"],"sourcesContent":["import { isObject, isString } from '@vue/shared'\nimport {\n  buildProps,\n  definePropType,\n  iconPropType,\n  isUndefined,\n  mutable,\n} from '@bigin/utils'\nimport { UPDATE_MODEL_EVENT } from '@bigin/constants'\nimport { useSizeProp } from '@bigin/hooks'\nimport { isCountryAvailable } from './utils'\nimport type {\n  CountryCallingCode,\n  CountryCode,\n  NationalNumber,\n  NumberType,\n} from 'libphonenumber-js'\nimport type PhoneInput from './phone-input.vue'\nimport type { ExtractPropTypes, PropType, StyleValue } from 'vue'\n\nimport type locales from './constants/locales'\n\nexport type Result = {\n  isValid: boolean\n  countryCode?: CountryCode\n  countryCallingCode?: CountryCallingCode\n  nationalNumber?: NationalNumber\n  type?: NumberType\n  formatInternational?: string\n  formatNational?: string\n  uri?: string\n  e164?: string\n}\n\nexport type Translations = typeof locales\n\nexport type Country = {\n  iso2: CountryCode\n  dialCode: CountryCallingCode\n  name: string\n}\n\nexport const phoneInputProps = buildProps({\n  id: {\n    type: String,\n    default: undefined,\n  },\n  size: useSizeProp,\n  disabled: Boolean,\n  type: {\n    type: String,\n    default: 'phone',\n  },\n  autocomplete: {\n    type: String,\n    default: 'off',\n  },\n  formatter: {\n    type: Function,\n  },\n  parser: {\n    type: Function,\n  },\n  placeholder: {\n    type: String,\n  },\n  form: {\n    type: String,\n    default: '',\n  },\n  readonly: {\n    type: Boolean,\n    default: false,\n  },\n  clearable: {\n    type: Boolean,\n    default: false,\n  },\n  showPassword: {\n    type: Boolean,\n    default: false,\n  },\n  showWordLimit: {\n    type: Boolean,\n    default: false,\n  },\n  suffixIcon: {\n    type: iconPropType,\n    default: '',\n  },\n  suffixClass: {\n    type: String,\n    default: '',\n  },\n  prependClass: {\n    type: String,\n    default: '',\n  },\n  appendClass: {\n    type: String,\n    default: '',\n  },\n  containerRole: {\n    type: String,\n    default: undefined,\n  },\n  label: {\n    type: String,\n    default: undefined,\n  },\n  tabindex: {\n    type: [String, Number],\n    default: 0,\n  },\n  validateEvent: {\n    type: Boolean,\n    default: true,\n  },\n  inputStyle: {\n    type: definePropType<StyleValue>([Object, Array, String]),\n    default: () => mutable({} as const),\n  },\n  inputClass: {\n    type: String,\n    default: '',\n  },\n  rounded: {\n    type: Boolean,\n    default: false,\n  },\n  large: {\n    type: Boolean,\n    default: false,\n  },\n  small: {\n    type: Boolean,\n    default: false,\n  },\n  modelValue: {\n    type: String,\n    validator: (prop: string) => {\n      return typeof prop === 'string' || prop === undefined\n    },\n    default: undefined,\n  },\n  defaultPhoneNumber: { type: String, default: undefined },\n  defaultCountryCode: {\n    type: String as PropType<CountryCode>,\n    default: undefined,\n    validator: (code: CountryCode) => {\n      return isCountryAvailable(code)\n    },\n  },\n  preferredCountries: {\n    type: Array as PropType<CountryCode[]>,\n    default: undefined,\n  },\n  ignoredCountries: {\n    type: Array as PropType<CountryCode[]>,\n    default: undefined,\n  },\n  onlyCountries: {\n    type: Array as PropType<CountryCode[]>,\n    default: undefined,\n  },\n  translations: {\n    type: Object as PropType<Translations>,\n    default: undefined,\n  },\n  noFlags: { type: Boolean, default: false },\n  noExample: { type: Boolean, default: false },\n  noUseBrowserLocale: { type: Boolean, default: false },\n  fetchCountry: { type: Boolean, default: false },\n  noCountrySelector: { type: Boolean, default: false },\n  showCodeOnList: { type: Boolean, default: false },\n  customCountriesList: {\n    type: Object as PropType<Record<CountryCode, string>>,\n    default: undefined,\n  },\n  showCountriesFilter: {\n    type: Boolean,\n    default: true,\n  },\n} as const)\nexport type PhoneInputProps = ExtractPropTypes<typeof phoneInputProps>\n\nexport const phoneInputEmits = {\n  [UPDATE_MODEL_EVENT]: (value: string | undefined) =>\n    isString(value) || isUndefined(value),\n  input: (value: string) => isString(value),\n  change: (value: string) => isString(value),\n  focus: (evt: FocusEvent) => evt instanceof FocusEvent,\n  blur: (evt: FocusEvent) => evt instanceof FocusEvent,\n  clear: () => true,\n  mouseleave: (evt: MouseEvent) => evt instanceof MouseEvent,\n  mouseenter: (evt: MouseEvent) => evt instanceof MouseEvent,\n  keydown: (evt: KeyboardEvent | Event) => evt instanceof Event,\n  compositionstart: (evt: CompositionEvent) => evt instanceof CompositionEvent,\n  compositionupdate: (evt: CompositionEvent) => evt instanceof CompositionEvent,\n  compositionend: (evt: CompositionEvent) => evt instanceof CompositionEvent,\n  countryCode: (value: string) => isString(value),\n  update: (value: Partial<Result>) => isObject(value),\n}\nexport type PhoneInputEmits = typeof phoneInputEmits\n\nexport type PhoneInputInstance = InstanceType<typeof PhoneInput>\n"],"names":[],"mappings":"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"}