angular-phone-number
Version:
A comprehensive international phone number input component for Angular applications with country selection, validation, and formatting.
1 lines • 112 kB
Source Map (JSON)
{"version":3,"file":"angular-phone-number.mjs","sources":["../../../projects/angular-phone-number/src/lib/angular-phone-number.service.ts","../../../projects/angular-phone-number/src/assets/country-dataset.ts","../../../projects/angular-phone-number/src/assets/globe-svg.ts","../../../projects/angular-phone-number/src/lib/angular-phone-number.component.ts","../../../projects/angular-phone-number/src/lib/angular-phone-number.component.html","../../../projects/angular-phone-number/src/public-api.ts","../../../projects/angular-phone-number/src/angular-phone-number.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class AngularPhoneNumberService {\r\n\r\n constructor() { }\r\n}\r\n","import { CountryData } from '../data-types/countryList';\r\n\r\nexport const Countries: CountryData = {\r\n AF: {\r\n flag: 'assets/flags/AF.svg',\r\n code: 'AF',\r\n country: 'Afghanistan',\r\n countryAr: 'أفغانستان',\r\n dialCode: '+93',\r\n },\r\n AX: {\r\n flag: 'assets/flags/AX.svg',\r\n code: 'AX',\r\n country: 'Aland Islands',\r\n countryAr: 'جزر أولاند',\r\n dialCode: '+358',\r\n },\r\n AL: {\r\n flag: 'assets/flags/AL.svg',\r\n code: 'AL',\r\n country: 'Albania',\r\n countryAr: 'ألبانيا',\r\n dialCode: '+355',\r\n },\r\n DZ: {\r\n flag: 'assets/flags/DZ.svg',\r\n code: 'DZ',\r\n country: 'Algeria',\r\n countryAr: 'الجزائر',\r\n dialCode: '+213',\r\n },\r\n AS: {\r\n flag: 'assets/flags/AS.svg',\r\n code: 'AS',\r\n country: 'AmericanSamoa',\r\n countryAr: 'ساموا الأمريكية',\r\n dialCode: '+1684',\r\n },\r\n AD: {\r\n flag: 'assets/flags/AD.svg',\r\n code: 'AD',\r\n country: 'Andorra',\r\n countryAr: 'أندورا',\r\n dialCode: '+376',\r\n },\r\n AO: {\r\n flag: 'assets/flags/AO.svg',\r\n code: 'AO',\r\n country: 'Angola',\r\n countryAr: 'أنجولا',\r\n dialCode: '+244',\r\n },\r\n AI: {\r\n flag: 'assets/flags/AI.svg',\r\n code: 'AI',\r\n country: 'Anguilla',\r\n countryAr: 'أنغويلا',\r\n dialCode: '+1264',\r\n },\r\n AQ: {\r\n flag: 'assets/flags/AQ.svg',\r\n code: 'AQ',\r\n country: 'Antarctica',\r\n countryAr: 'أنتاركتيكا',\r\n dialCode: '+672',\r\n },\r\n AG: {\r\n flag: 'assets/flags/AG.svg',\r\n code: 'AG',\r\n country: 'Antigua and Barbuda',\r\n countryAr: 'أنتيغوا وبربودا',\r\n dialCode: '+1268',\r\n },\r\n AR: {\r\n flag: 'assets/flags/AR.svg',\r\n code: 'AR',\r\n country: 'Argentina',\r\n countryAr: 'الأرجنتين',\r\n dialCode: '+54',\r\n },\r\n AM: {\r\n flag: 'assets/flags/AM.svg',\r\n code: 'AM',\r\n country: 'Armenia',\r\n countryAr: 'أرمينيا',\r\n dialCode: '+374',\r\n },\r\n AW: {\r\n flag: 'assets/flags/AW.svg',\r\n code: 'AW',\r\n country: 'Aruba',\r\n countryAr: 'أروبا',\r\n dialCode: '+297',\r\n },\r\n AC: {\r\n flag: 'assets/flags/AC.svg',\r\n code: 'AC',\r\n country: 'Ascension Island',\r\n countryAr: 'جزيرة أسينشين',\r\n dialCode: '+247',\r\n },\r\n AU: {\r\n flag: 'assets/flags/AU.svg',\r\n code: 'AU',\r\n country: 'Australia',\r\n countryAr: 'أستراليا',\r\n dialCode: '+61',\r\n },\r\n AT: {\r\n flag: 'assets/flags/AT.svg',\r\n code: 'AT',\r\n country: 'Austria',\r\n countryAr: 'النمسا',\r\n dialCode: '+43',\r\n },\r\n AZ: {\r\n flag: 'assets/flags/AZ.svg',\r\n code: 'AZ',\r\n country: 'Azerbaijan',\r\n countryAr: 'أذربيجان',\r\n dialCode: '+994',\r\n },\r\n BS: {\r\n flag: 'assets/flags/BS.svg',\r\n code: 'BS',\r\n country: 'Bahamas',\r\n countryAr: 'باهاماس',\r\n dialCode: '+1242',\r\n },\r\n BH: {\r\n flag: 'assets/flags/BH.svg',\r\n code: 'BH',\r\n country: 'Bahrain',\r\n countryAr: 'البحرين',\r\n dialCode: '+973',\r\n },\r\n BD: {\r\n flag: 'assets/flags/BD.svg',\r\n code: 'BD',\r\n country: 'Bangladesh',\r\n countryAr: 'بنغلاديش',\r\n dialCode: '+880',\r\n },\r\n BB: {\r\n flag: 'assets/flags/BB.svg',\r\n code: 'BB',\r\n country: 'Barbados',\r\n countryAr: 'بربادوس',\r\n dialCode: '+1246',\r\n },\r\n BY: {\r\n flag: 'assets/flags/BY.svg',\r\n code: 'BY',\r\n country: 'Belarus',\r\n countryAr: 'بيلاروس',\r\n dialCode: '+375',\r\n },\r\n BE: {\r\n flag: 'assets/flags/BE.svg',\r\n code: 'BE',\r\n country: 'Belgium',\r\n countryAr: 'بلجيكا',\r\n dialCode: '+32',\r\n },\r\n BZ: {\r\n flag: 'assets/flags/BZ.svg',\r\n code: 'BZ',\r\n country: 'Belize',\r\n countryAr: 'بليز',\r\n dialCode: '+501',\r\n },\r\n BJ: {\r\n flag: 'assets/flags/BJ.svg',\r\n code: 'BJ',\r\n country: 'Benin',\r\n countryAr: 'بنين',\r\n dialCode: '+229',\r\n },\r\n BM: {\r\n flag: 'assets/flags/BM.svg',\r\n code: 'BM',\r\n country: 'Bermuda',\r\n countryAr: 'برمودا',\r\n dialCode: '+1441',\r\n },\r\n BT: {\r\n flag: 'assets/flags/BT.svg',\r\n code: 'BT',\r\n country: 'Bhutan',\r\n countryAr: 'بوتان',\r\n dialCode: '+975',\r\n },\r\n BO: {\r\n flag: 'assets/flags/BO.svg',\r\n code: 'BO',\r\n country: 'Bolivia',\r\n countryAr: 'بوليفيا',\r\n dialCode: '+591',\r\n },\r\n BA: {\r\n flag: 'assets/flags/BA.svg',\r\n code: 'BA',\r\n country: 'Bosnia and Herzegovina',\r\n countryAr: 'البوسنة والهرسك',\r\n dialCode: '+387',\r\n },\r\n BW: {\r\n flag: 'assets/flags/BW.svg',\r\n code: 'BW',\r\n country: 'Botswana',\r\n countryAr: 'بوتسوانا',\r\n dialCode: '+267',\r\n },\r\n BR: {\r\n flag: 'assets/flags/BR.svg',\r\n code: 'BR',\r\n country: 'Brazil',\r\n countryAr: 'برازيل',\r\n dialCode: '+55',\r\n },\r\n IO: {\r\n flag: 'assets/flags/IO.svg',\r\n code: 'IO',\r\n country: 'British Indian Ocean Territory',\r\n countryAr: 'جزر الهند الغربية البريطانية',\r\n dialCode: '+246',\r\n },\r\n BN: {\r\n flag: 'assets/flags/BN.svg',\r\n code: 'BN',\r\n country: 'Brunei Darussalam',\r\n countryAr: 'بروناي',\r\n dialCode: '+673',\r\n },\r\n BG: {\r\n flag: 'assets/flags/BG.svg',\r\n code: 'BG',\r\n country: 'Bulgaria',\r\n countryAr: 'بلغاريا',\r\n dialCode: '+359',\r\n },\r\n BF: {\r\n flag: 'assets/flags/BF.svg',\r\n code: 'BF',\r\n country: 'Burkina Faso',\r\n countryAr: 'بوركينا فاسو',\r\n dialCode: '+226',\r\n },\r\n BI: {\r\n flag: 'assets/flags/BI.svg',\r\n code: 'BI',\r\n country: 'Burundi',\r\n countryAr: 'بوروندي',\r\n dialCode: '+257',\r\n },\r\n KH: {\r\n flag: 'assets/flags/KH.svg',\r\n code: 'KH',\r\n country: 'Cambodia',\r\n countryAr: 'كمبوديا',\r\n dialCode: '+855',\r\n },\r\n CM: {\r\n flag: 'assets/flags/CM.svg',\r\n code: 'CM',\r\n country: 'Cameroon',\r\n countryAr: 'الكاميرون',\r\n dialCode: '+237',\r\n },\r\n CA: {\r\n flag: 'assets/flags/CA.svg',\r\n code: 'CA',\r\n country: 'Canada',\r\n countryAr: 'كندا',\r\n dialCode: '+1',\r\n },\r\n CV: {\r\n flag: 'assets/flags/CV.svg',\r\n code: 'CV',\r\n country: 'Cape Verde',\r\n countryAr: 'الرأس الأخضر',\r\n dialCode: '+238',\r\n },\r\n KY: {\r\n flag: 'assets/flags/KY.svg',\r\n code: 'KY',\r\n country: 'Cayman Islands',\r\n countryAr: 'جزر كايمان',\r\n dialCode: '+1345',\r\n },\r\n CF: {\r\n flag: 'assets/flags/CF.svg',\r\n code: 'CF',\r\n country: 'Central African Republic',\r\n countryAr: 'جمهورية افريقيا الوسطى',\r\n dialCode: '+236',\r\n },\r\n TD: {\r\n flag: 'assets/flags/TD.svg',\r\n code: 'TD',\r\n country: 'Chad',\r\n countryAr: 'تشاد',\r\n dialCode: '+235',\r\n },\r\n CL: {\r\n flag: 'assets/flags/CL.svg',\r\n code: 'CL',\r\n country: 'Chile',\r\n countryAr: 'تشيلي',\r\n dialCode: '+56',\r\n },\r\n CN: {\r\n flag: 'assets/flags/CN.svg',\r\n code: 'CN',\r\n country: 'China',\r\n countryAr: 'الصين',\r\n dialCode: '+86',\r\n },\r\n CX: {\r\n flag: 'assets/flags/CX.svg',\r\n code: 'CX',\r\n country: 'Christmas Island',\r\n countryAr: 'جزيرة كريسماس',\r\n dialCode: '+61',\r\n },\r\n CC: {\r\n flag: 'assets/flags/CC.svg',\r\n code: 'CC',\r\n country: 'Cocos (Keeling) Islands',\r\n countryAr: 'جزر كوكوس',\r\n dialCode: '+61',\r\n },\r\n CO: {\r\n flag: 'assets/flags/CO.svg',\r\n code: 'CO',\r\n country: 'Colombia',\r\n countryAr: 'كولومبيا',\r\n dialCode: '+57',\r\n },\r\n KM: {\r\n flag: 'assets/flags/KM.svg',\r\n code: 'KM',\r\n country: 'Comoros',\r\n countryAr: 'جزر القمر',\r\n dialCode: '+269',\r\n },\r\n CG: {\r\n flag: 'assets/flags/CG.svg',\r\n code: 'CG',\r\n country: 'Congo',\r\n countryAr: 'الكونغو',\r\n dialCode: '+242',\r\n },\r\n CK: {\r\n flag: 'assets/flags/CK.svg',\r\n code: 'CK',\r\n country: 'Cook Islands',\r\n countryAr: 'جزر كوك',\r\n dialCode: '+682',\r\n },\r\n CR: {\r\n flag: 'assets/flags/CR.svg',\r\n code: 'CR',\r\n country: 'Costa Rica',\r\n countryAr: 'كوستاريكا',\r\n dialCode: '+506',\r\n },\r\n CI: {\r\n flag: 'assets/flags/CI.svg',\r\n code: 'CI',\r\n country: \"Cote d'Ivoire\",\r\n countryAr: 'ساحل العاج',\r\n dialCode: '+225',\r\n },\r\n HR: {\r\n flag: 'assets/flags/HR.svg',\r\n code: 'HR',\r\n country: 'Croatia',\r\n countryAr: 'كرواتيا',\r\n dialCode: '+385',\r\n },\r\n CU: {\r\n flag: 'assets/flags/CU.svg',\r\n code: 'CU',\r\n country: 'Cuba',\r\n countryAr: 'كوبا',\r\n dialCode: '+53',\r\n },\r\n CY: {\r\n flag: 'assets/flags/CY.svg',\r\n code: 'CY',\r\n country: 'Cyprus',\r\n countryAr: 'قبرص',\r\n dialCode: '+357',\r\n },\r\n CZ: {\r\n flag: 'assets/flags/CZ.svg',\r\n code: 'CZ',\r\n country: 'Czech Republic',\r\n countryAr: 'الجمهورية التشيكية',\r\n dialCode: '+420',\r\n },\r\n CD: {\r\n flag: 'assets/flags/CD.svg',\r\n code: 'CD',\r\n country: 'Democratic Republic of the Congo',\r\n countryAr: 'جمهورية الكونغو الديمقراطية',\r\n dialCode: '+243',\r\n },\r\n DK: {\r\n flag: 'assets/flags/DK.svg',\r\n code: 'DK',\r\n country: 'Denmark',\r\n countryAr: 'الدنمارك',\r\n dialCode: '+45',\r\n },\r\n DJ: {\r\n flag: 'assets/flags/DJ.svg',\r\n code: 'DJ',\r\n country: 'Djibouti',\r\n countryAr: 'جيبوتي',\r\n dialCode: '+253',\r\n },\r\n DM: {\r\n flag: 'assets/flags/DM.svg',\r\n code: 'DM',\r\n country: 'Dominica',\r\n countryAr: 'دومينيكا',\r\n dialCode: '+1767',\r\n },\r\n DO: {\r\n flag: 'assets/flags/DO.svg',\r\n code: 'DO',\r\n country: 'Dominican Republic',\r\n countryAr: 'جمهورية الدومينيكان',\r\n dialCode: '+1849',\r\n },\r\n EC: {\r\n flag: 'assets/flags/EC.svg',\r\n code: 'EC',\r\n country: 'Ecuador',\r\n countryAr: 'إكوادور',\r\n dialCode: '+593',\r\n },\r\n EG: {\r\n flag: 'assets/flags/EG.svg',\r\n code: 'EG',\r\n country: 'Egypt',\r\n countryAr: 'مصر',\r\n dialCode: '+20',\r\n },\r\n SV: {\r\n flag: 'assets/flags/SV.svg',\r\n code: 'SV',\r\n country: 'El Salvador',\r\n countryAr: 'السلفادور',\r\n dialCode: '+503',\r\n },\r\n GQ: {\r\n flag: 'assets/flags/GQ.svg',\r\n code: 'GQ',\r\n country: 'Equatorial Guinea',\r\n countryAr: 'غينيا الاستوائية',\r\n dialCode: '+240',\r\n },\r\n ER: {\r\n flag: 'assets/flags/ER.svg',\r\n code: 'ER',\r\n country: 'Eritrea',\r\n countryAr: 'إريتريا',\r\n dialCode: '+291',\r\n },\r\n EE: {\r\n flag: 'assets/flags/EE.svg',\r\n code: 'EE',\r\n country: 'Estonia',\r\n countryAr: 'إستونيا',\r\n dialCode: '+372',\r\n },\r\n SZ: {\r\n flag: 'assets/flags/SZ.svg',\r\n code: 'SZ',\r\n country: 'Eswatini',\r\n countryAr: 'إسواتيني',\r\n dialCode: '+268',\r\n },\r\n ET: {\r\n flag: 'assets/flags/ET.svg',\r\n code: 'ET',\r\n country: 'Ethiopia',\r\n countryAr: 'إثيوبيا',\r\n dialCode: '+251',\r\n },\r\n FK: {\r\n flag: 'assets/flags/FK.svg',\r\n code: 'FK',\r\n country: 'Falkland Islands (Malvinas)',\r\n countryAr: 'جزر فوكلاند',\r\n dialCode: '+500',\r\n },\r\n FO: {\r\n flag: 'assets/flags/FO.svg',\r\n code: 'FO',\r\n country: 'Faroe Islands',\r\n countryAr: 'جزر فارو',\r\n dialCode: '+298',\r\n },\r\n FJ: {\r\n flag: 'assets/flags/FJ.svg',\r\n code: 'FJ',\r\n country: 'Fiji',\r\n countryAr: 'فيجي',\r\n dialCode: '+679',\r\n },\r\n FI: {\r\n flag: 'assets/flags/FI.svg',\r\n code: 'FI',\r\n country: 'Finland',\r\n countryAr: 'فنلندا',\r\n dialCode: '+358',\r\n },\r\n FR: {\r\n flag: 'assets/flags/FR.svg',\r\n code: 'FR',\r\n country: 'France',\r\n countryAr: 'فرنسا',\r\n dialCode: '+33',\r\n },\r\n GF: {\r\n flag: 'assets/flags/GF.svg',\r\n code: 'GF',\r\n country: 'French Guiana',\r\n countryAr: 'جويانا الفرنسية',\r\n dialCode: '+594',\r\n },\r\n PF: {\r\n flag: 'assets/flags/PF.svg',\r\n code: 'PF',\r\n country: 'French Polynesia',\r\n countryAr: 'بولينيزيا الفرنسية',\r\n dialCode: '+689',\r\n },\r\n GA: {\r\n flag: 'assets/flags/GA.svg',\r\n code: 'GA',\r\n country: 'Gabon',\r\n countryAr: 'غابون',\r\n dialCode: '+241',\r\n },\r\n GM: {\r\n flag: 'assets/flags/GM.svg',\r\n code: 'GM',\r\n country: 'Gambia',\r\n countryAr: 'غامبيا',\r\n dialCode: '+220',\r\n },\r\n GE: {\r\n flag: 'assets/flags/GE.svg',\r\n code: 'GE',\r\n country: 'Georgia',\r\n countryAr: 'جورجيا',\r\n dialCode: '+995',\r\n },\r\n DE: {\r\n flag: 'assets/flags/DE.svg',\r\n code: 'DE',\r\n country: 'Germany',\r\n countryAr: 'ألمانيا',\r\n dialCode: '+49',\r\n },\r\n GH: {\r\n flag: 'assets/flags/GH.svg',\r\n code: 'GH',\r\n country: 'Ghana',\r\n countryAr: 'غانا',\r\n dialCode: '+233',\r\n },\r\n GI: {\r\n flag: 'assets/flags/GI.svg',\r\n code: 'GI',\r\n country: 'Gibraltar',\r\n countryAr: 'جبل طارق',\r\n dialCode: '+350',\r\n },\r\n GR: {\r\n flag: 'assets/flags/GR.svg',\r\n code: 'GR',\r\n country: 'Greece',\r\n countryAr: 'اليونان',\r\n dialCode: '+30',\r\n },\r\n GL: {\r\n flag: 'assets/flags/GL.svg',\r\n code: 'GL',\r\n country: 'Greenland',\r\n countryAr: 'جرينلاند',\r\n dialCode: '+299',\r\n },\r\n GD: {\r\n flag: 'assets/flags/GD.svg',\r\n code: 'GD',\r\n country: 'Grenada',\r\n countryAr: 'غرينادا',\r\n dialCode: '+1473',\r\n },\r\n GP: {\r\n flag: 'assets/flags/GP.svg',\r\n code: 'GP',\r\n country: 'Guadeloupe',\r\n countryAr: 'غوادلوب',\r\n dialCode: '+590',\r\n },\r\n GU: {\r\n flag: 'assets/flags/GU.svg',\r\n code: 'GU',\r\n country: 'Guam',\r\n countryAr: 'غوام',\r\n dialCode: '+1671',\r\n },\r\n GT: {\r\n flag: 'assets/flags/GT.svg',\r\n code: 'GT',\r\n country: 'Guatemala',\r\n countryAr: 'غواتيمالا',\r\n dialCode: '+502',\r\n },\r\n GG: {\r\n flag: 'assets/flags/GG.svg',\r\n code: 'GG',\r\n country: 'Guernsey',\r\n countryAr: 'جيرنزي',\r\n dialCode: '+44',\r\n },\r\n GN: {\r\n flag: 'assets/flags/GN.svg',\r\n code: 'GN',\r\n country: 'Guinea',\r\n countryAr: 'غينيا',\r\n dialCode: '+224',\r\n },\r\n GW: {\r\n flag: 'assets/flags/GW.svg',\r\n code: 'GW',\r\n country: 'Guinea-Bissau',\r\n countryAr: 'غينيا بيساو',\r\n dialCode: '+245',\r\n },\r\n GY: {\r\n flag: 'assets/flags/GY.svg',\r\n code: 'GY',\r\n country: 'Guyana',\r\n countryAr: 'غيانا',\r\n dialCode: '+592',\r\n },\r\n HT: {\r\n flag: 'assets/flags/HT.svg',\r\n code: 'HT',\r\n country: 'Haiti',\r\n countryAr: 'هايتي',\r\n dialCode: '+509',\r\n },\r\n VA: {\r\n flag: 'assets/flags/VA.svg',\r\n code: 'VA',\r\n country: 'Holy See (Vatican City State)',\r\n countryAr: 'الفاتيكان',\r\n dialCode: '+379',\r\n },\r\n HN: {\r\n flag: 'assets/flags/HN.svg',\r\n code: 'HN',\r\n country: 'Honduras',\r\n countryAr: 'هندوراس',\r\n dialCode: '+504',\r\n },\r\n HK: {\r\n flag: 'assets/flags/HK.svg',\r\n code: 'HK',\r\n country: 'Hong Kong',\r\n countryAr: 'هونج كونج',\r\n dialCode: '+852',\r\n },\r\n HU: {\r\n flag: 'assets/flags/HU.svg',\r\n code: 'HU',\r\n country: 'Hungary',\r\n countryAr: 'هنغاريا',\r\n dialCode: '+36',\r\n },\r\n IS: {\r\n flag: 'assets/flags/IS.svg',\r\n code: 'IS',\r\n country: 'Iceland',\r\n countryAr: 'أيسلندا',\r\n dialCode: '+354',\r\n },\r\n IN: {\r\n flag: 'assets/flags/IN.svg',\r\n code: 'IN',\r\n country: 'India',\r\n countryAr: 'الهند',\r\n dialCode: '+91',\r\n },\r\n ID: {\r\n flag: 'assets/flags/ID.svg',\r\n code: 'ID',\r\n country: 'Indonesia',\r\n countryAr: 'إندونيسيا',\r\n dialCode: '+62',\r\n },\r\n IR: {\r\n flag: 'assets/flags/IR.svg',\r\n code: 'IR',\r\n country: 'Iran',\r\n countryAr: 'إيران',\r\n dialCode: '+98',\r\n },\r\n IQ: {\r\n flag: 'assets/flags/IQ.svg',\r\n code: 'IQ',\r\n country: 'Iraq',\r\n countryAr: 'العراق',\r\n dialCode: '+964',\r\n },\r\n IE: {\r\n flag: 'assets/flags/IE.svg',\r\n code: 'IE',\r\n country: 'Ireland',\r\n countryAr: 'أيرلندا',\r\n dialCode: '+353',\r\n },\r\n IM: {\r\n flag: 'assets/flags/IM.svg',\r\n code: 'IM',\r\n country: 'Isle of Man',\r\n countryAr: 'جزيرة مان',\r\n dialCode: '+44',\r\n },\r\n IL: {\r\n flag: 'assets/flags/IL.svg',\r\n code: 'IL',\r\n country: 'Israel',\r\n countryAr: 'إسرائيل',\r\n dialCode: '+972',\r\n },\r\n IT: {\r\n flag: 'assets/flags/IT.svg',\r\n code: 'IT',\r\n country: 'Italy',\r\n countryAr: 'إيطاليا',\r\n dialCode: '+39',\r\n },\r\n JM: {\r\n flag: 'assets/flags/JM.svg',\r\n code: 'JM',\r\n country: 'Jamaica',\r\n countryAr: 'جامايكا',\r\n dialCode: '+1876',\r\n },\r\n JP: {\r\n flag: 'assets/flags/JP.svg',\r\n code: 'JP',\r\n country: 'Japan',\r\n countryAr: 'اليابان',\r\n dialCode: '+81',\r\n },\r\n JE: {\r\n flag: 'assets/flags/JE.svg',\r\n code: 'JE',\r\n country: 'Jersey',\r\n countryAr: 'جيرسي',\r\n dialCode: '+44',\r\n },\r\n JO: {\r\n flag: 'assets/flags/JO.svg',\r\n code: 'JO',\r\n country: 'Jordan',\r\n countryAr: 'الأردن',\r\n dialCode: '+962',\r\n },\r\n KZ: {\r\n flag: 'assets/flags/KZ.svg',\r\n code: 'KZ',\r\n country: 'Kazakhstan',\r\n countryAr: 'كازاخستان',\r\n dialCode: '+77',\r\n },\r\n KE: {\r\n flag: 'assets/flags/KE.svg',\r\n code: 'KE',\r\n country: 'Kenya',\r\n countryAr: 'كينيا',\r\n dialCode: '+254',\r\n },\r\n KI: {\r\n flag: 'assets/flags/KI.svg',\r\n code: 'KI',\r\n country: 'Kiribati',\r\n countryAr: 'جزر كيريباتي',\r\n dialCode: '+686',\r\n },\r\n KP: {\r\n flag: 'assets/flags/KP.svg',\r\n code: 'KP',\r\n country: \"Korea, Democratic People's Republic of Korea\",\r\n countryAr: 'كوريا الشمالية',\r\n dialCode: '+850',\r\n },\r\n KR: {\r\n flag: 'assets/flags/KR.svg',\r\n code: 'KR',\r\n country: 'Korea, Republic of South Korea',\r\n countryAr: 'كوريا الجنوبية',\r\n dialCode: '+82',\r\n },\r\n XK: {\r\n flag: 'assets/flags/XK.svg',\r\n code: 'XK',\r\n country: 'Kosovo',\r\n countryAr: 'كوسوفو',\r\n dialCode: '+383',\r\n },\r\n KW: {\r\n flag: 'assets/flags/KW.svg',\r\n code: 'KW',\r\n country: 'Kuwait',\r\n countryAr: 'الكويت',\r\n dialCode: '+965',\r\n },\r\n KG: {\r\n flag: 'assets/flags/KG.svg',\r\n code: 'KG',\r\n country: 'Kyrgyzstan',\r\n countryAr: 'قيرغيزستان',\r\n dialCode: '+996',\r\n },\r\n LA: {\r\n flag: 'assets/flags/LA.svg',\r\n code: 'LA',\r\n country: 'Laos',\r\n countryAr: 'لاوس',\r\n dialCode: '+856',\r\n },\r\n LV: {\r\n flag: 'assets/flags/LV.svg',\r\n code: 'LV',\r\n country: 'Latvia',\r\n countryAr: 'لاتفيا',\r\n dialCode: '+371',\r\n },\r\n LB: {\r\n flag: 'assets/flags/LB.svg',\r\n code: 'LB',\r\n country: 'Lebanon',\r\n countryAr: 'لبنان',\r\n dialCode: '+961',\r\n },\r\n LS: {\r\n flag: 'assets/flags/LS.svg',\r\n code: 'LS',\r\n country: 'Lesotho',\r\n countryAr: 'ليسوتو',\r\n dialCode: '+266',\r\n },\r\n LR: {\r\n flag: 'assets/flags/LR.svg',\r\n code: 'LR',\r\n country: 'Liberia',\r\n countryAr: 'ليبيريا',\r\n dialCode: '+231',\r\n },\r\n LY: {\r\n flag: 'assets/flags/LY.svg',\r\n code: 'LY',\r\n country: 'Libya',\r\n countryAr: 'ليبيا',\r\n dialCode: '+218',\r\n },\r\n LI: {\r\n flag: 'assets/flags/LI.svg',\r\n code: 'LI',\r\n country: 'Liechtenstein',\r\n countryAr: 'ليختنشتاين',\r\n dialCode: '+423',\r\n },\r\n LT: {\r\n flag: 'assets/flags/LT.svg',\r\n code: 'LT',\r\n country: 'Lithuania',\r\n countryAr: 'ليتوانيا',\r\n dialCode: '+370',\r\n },\r\n LU: {\r\n flag: 'assets/flags/LU.svg',\r\n code: 'LU',\r\n country: 'Luxembourg',\r\n countryAr: 'لوكسمبورغ',\r\n dialCode: '+352',\r\n },\r\n MO: {\r\n flag: 'assets/flags/MO.svg',\r\n code: 'MO',\r\n country: 'Macau',\r\n countryAr: 'ماكاو',\r\n dialCode: '+853',\r\n },\r\n MG: {\r\n flag: 'assets/flags/MG.svg',\r\n code: 'MG',\r\n country: 'Madagascar',\r\n countryAr: 'مدغشقر',\r\n dialCode: '+261',\r\n },\r\n MW: {\r\n flag: 'assets/flags/MW.svg',\r\n code: 'MW',\r\n country: 'Malawi',\r\n countryAr: 'مالاوي',\r\n dialCode: '+265',\r\n },\r\n MY: {\r\n flag: 'assets/flags/MY.svg',\r\n code: 'MY',\r\n country: 'Malaysia',\r\n countryAr: 'ماليزيا',\r\n dialCode: '+60',\r\n },\r\n MV: {\r\n flag: 'assets/flags/MV.svg',\r\n code: 'MV',\r\n country: 'Maldives',\r\n countryAr: 'جزر المالديف',\r\n dialCode: '+960',\r\n },\r\n ML: {\r\n flag: 'assets/flags/ML.svg',\r\n code: 'ML',\r\n country: 'Mali',\r\n countryAr: 'مالي',\r\n dialCode: '+223',\r\n },\r\n MT: {\r\n flag: 'assets/flags/MT.svg',\r\n code: 'MT',\r\n country: 'Malta',\r\n countryAr: 'مالطا',\r\n dialCode: '+356',\r\n },\r\n MH: {\r\n flag: 'assets/flags/MH.svg',\r\n code: 'MH',\r\n country: 'Marshall Islands',\r\n countryAr: 'جزر مارشال',\r\n dialCode: '+692',\r\n },\r\n MQ: {\r\n flag: 'assets/flags/MQ.svg',\r\n code: 'MQ',\r\n country: 'Martinique',\r\n countryAr: 'مارتينيك',\r\n dialCode: '+596',\r\n },\r\n MR: {\r\n flag: 'assets/flags/MR.svg',\r\n code: 'MR',\r\n country: 'Mauritania',\r\n countryAr: 'موريتانيا',\r\n dialCode: '+222',\r\n },\r\n MU: {\r\n flag: 'assets/flags/MU.svg',\r\n code: 'MU',\r\n country: 'Mauritius',\r\n countryAr: 'موريشيوس',\r\n dialCode: '+230',\r\n },\r\n YT: {\r\n flag: 'assets/flags/YT.svg',\r\n code: 'YT',\r\n country: 'Mayotte',\r\n countryAr: 'مايوت',\r\n dialCode: '+262',\r\n },\r\n MX: {\r\n flag: 'assets/flags/MX.svg',\r\n code: 'MX',\r\n country: 'Mexico',\r\n countryAr: 'المكسيك',\r\n dialCode: '+52',\r\n },\r\n FM: {\r\n flag: 'assets/flags/FM.svg',\r\n code: 'FM',\r\n country: 'Micronesia, Federated States of Micronesia',\r\n countryAr: 'ميكرونيزيا',\r\n dialCode: '+691',\r\n },\r\n MD: {\r\n flag: 'assets/flags/MD.svg',\r\n code: 'MD',\r\n country: 'Moldova',\r\n countryAr: 'مولدوفا',\r\n dialCode: '+373',\r\n },\r\n MC: {\r\n flag: 'assets/flags/MC.svg',\r\n code: 'MC',\r\n country: 'Monaco',\r\n countryAr: 'موناكو',\r\n dialCode: '+377',\r\n },\r\n MN: {\r\n flag: 'assets/flags/MN.svg',\r\n code: 'MN',\r\n country: 'Mongolia',\r\n countryAr: 'منغوليا',\r\n dialCode: '+976',\r\n },\r\n ME: {\r\n flag: 'assets/flags/ME.svg',\r\n code: 'ME',\r\n country: 'Montenegro',\r\n countryAr: 'الجبل الأسود',\r\n dialCode: '+382',\r\n },\r\n MS: {\r\n flag: 'assets/flags/MS.svg',\r\n code: 'MS',\r\n country: 'Montserrat',\r\n countryAr: 'مونتسرات',\r\n dialCode: '+1664',\r\n },\r\n MA: {\r\n flag: 'assets/flags/MA.svg',\r\n code: 'MA',\r\n country: 'Morocco',\r\n countryAr: 'المغرب',\r\n dialCode: '+212',\r\n },\r\n MZ: {\r\n flag: 'assets/flags/MZ.svg',\r\n code: 'MZ',\r\n country: 'Mozambique',\r\n countryAr: 'موزمبيق',\r\n dialCode: '+258',\r\n },\r\n MM: {\r\n flag: 'assets/flags/MM.svg',\r\n code: 'MM',\r\n country: 'Myanmar',\r\n countryAr: 'ميانمار',\r\n dialCode: '+95',\r\n },\r\n NA: {\r\n flag: 'assets/flags/NA.svg',\r\n code: 'NA',\r\n country: 'Namibia',\r\n countryAr: 'ناميبيا',\r\n dialCode: '+264',\r\n },\r\n NR: {\r\n flag: 'assets/flags/NR.svg',\r\n code: 'NR',\r\n country: 'Nauru',\r\n countryAr: 'ناورو',\r\n dialCode: '+674',\r\n },\r\n NP: {\r\n flag: 'assets/flags/NP.svg',\r\n code: 'NP',\r\n country: 'Nepal',\r\n countryAr: 'نيبال',\r\n dialCode: '+977',\r\n },\r\n NL: {\r\n flag: 'assets/flags/NL.svg',\r\n code: 'NL',\r\n country: 'Netherlands',\r\n countryAr: 'هولندا',\r\n dialCode: '+31',\r\n },\r\n NC: {\r\n flag: 'assets/flags/NC.svg',\r\n code: 'NC',\r\n country: 'New Caledonia',\r\n countryAr: 'كاليدونيا الجديدة',\r\n dialCode: '+687',\r\n },\r\n NZ: {\r\n flag: 'assets/flags/NZ.svg',\r\n code: 'NZ',\r\n country: 'New Zealand',\r\n countryAr: 'نيوزيلندا',\r\n dialCode: '+64',\r\n },\r\n NI: {\r\n flag: 'assets/flags/NI.svg',\r\n code: 'NI',\r\n country: 'Nicaragua',\r\n countryAr: 'نيكاراغوا',\r\n dialCode: '+505',\r\n },\r\n NE: {\r\n flag: 'assets/flags/NE.svg',\r\n code: 'NE',\r\n country: 'Niger',\r\n countryAr: 'النيجر',\r\n dialCode: '+227',\r\n },\r\n NG: {\r\n flag: 'assets/flags/NG.svg',\r\n code: 'NG',\r\n country: 'Nigeria',\r\n countryAr: 'نيجيريا',\r\n dialCode: '+234',\r\n },\r\n NU: {\r\n flag: 'assets/flags/NU.svg',\r\n code: 'NU',\r\n country: 'Niue',\r\n countryAr: 'نيو',\r\n dialCode: '+683',\r\n },\r\n NF: {\r\n flag: 'assets/flags/NF.svg',\r\n code: 'NF',\r\n country: 'Norfolk Island',\r\n countryAr: 'نورفولك',\r\n dialCode: '+672',\r\n },\r\n MK: {\r\n flag: 'assets/flags/MK.svg',\r\n code: 'MK',\r\n country: 'North Macedonia',\r\n countryAr: 'مقدونيا الشمالية',\r\n dialCode: '+389',\r\n },\r\n MP: {\r\n flag: 'assets/flags/MP.svg',\r\n code: 'MP',\r\n country: 'Northern Mariana Islands',\r\n countryAr: 'جزر ماريانا الشمالية',\r\n dialCode: '+1670',\r\n },\r\n NO: {\r\n flag: 'assets/flags/NO.svg',\r\n code: 'NO',\r\n country: 'Norway',\r\n countryAr: 'النرويج',\r\n dialCode: '+47',\r\n },\r\n OM: {\r\n flag: 'assets/flags/OM.svg',\r\n code: 'OM',\r\n country: 'Oman',\r\n countryAr: 'عمان',\r\n dialCode: '+968',\r\n },\r\n PK: {\r\n flag: 'assets/flags/PK.svg',\r\n code: 'PK',\r\n country: 'Pakistan',\r\n countryAr: 'باكستان',\r\n dialCode: '+92',\r\n },\r\n PW: {\r\n flag: 'assets/flags/PW.svg',\r\n code: 'PW',\r\n country: 'Palau',\r\n countryAr: 'بالاو',\r\n dialCode: '+680',\r\n },\r\n PS: {\r\n flag: 'assets/flags/PS.svg',\r\n code: 'PS',\r\n country: 'Palestine',\r\n countryAr: 'فلسطين',\r\n dialCode: '+970',\r\n },\r\n PA: {\r\n flag: 'assets/flags/PA.svg',\r\n code: 'PA',\r\n country: 'Panama',\r\n countryAr: 'بنما',\r\n dialCode: '+507',\r\n },\r\n PG: {\r\n flag: 'assets/flags/PG.svg',\r\n code: 'PG',\r\n country: 'Papua New Guinea',\r\n countryAr: 'بابوا غينيا الجديدة',\r\n dialCode: '+675',\r\n },\r\n PY: {\r\n flag: 'assets/flags/PY.svg',\r\n code: 'PY',\r\n country: 'Paraguay',\r\n countryAr: 'باراغواي',\r\n dialCode: '+595',\r\n },\r\n PE: {\r\n flag: 'assets/flags/PE.svg',\r\n code: 'PE',\r\n country: 'Peru',\r\n countryAr: 'بيرو',\r\n dialCode: '+51',\r\n },\r\n PH: {\r\n flag: 'assets/flags/PH.svg',\r\n code: 'PH',\r\n country: 'Philippines',\r\n countryAr: 'الفلبين',\r\n dialCode: '+63',\r\n },\r\n PN: {\r\n flag: 'assets/flags/PN.svg',\r\n code: 'PN',\r\n country: 'Pitcairn',\r\n countryAr: 'بيتكرن',\r\n dialCode: '+872',\r\n },\r\n PL: {\r\n flag: 'assets/flags/PL.svg',\r\n code: 'PL',\r\n country: 'Poland',\r\n countryAr: 'بولندا',\r\n dialCode: '+48',\r\n },\r\n PT: {\r\n flag: 'assets/flags/PT.svg',\r\n code: 'PT',\r\n country: 'Portugal',\r\n countryAr: 'البرتغال',\r\n dialCode: '+351',\r\n },\r\n PR: {\r\n flag: 'assets/flags/PR.svg',\r\n code: 'PR',\r\n country: 'Puerto Rico',\r\n countryAr: 'بورتوريكو',\r\n dialCode: '+1939',\r\n },\r\n QA: {\r\n flag: 'assets/flags/QA.svg',\r\n code: 'QA',\r\n country: 'Qatar',\r\n countryAr: 'قطر',\r\n dialCode: '+974',\r\n },\r\n RE: {\r\n flag: 'assets/flags/RE.svg',\r\n code: 'RE',\r\n country: 'Reunion',\r\n countryAr: 'ريونيون',\r\n dialCode: '+262',\r\n },\r\n RO: {\r\n flag: 'assets/flags/RO.svg',\r\n code: 'RO',\r\n country: 'Romania',\r\n countryAr: 'رومانيا',\r\n dialCode: '+40',\r\n },\r\n RU: {\r\n flag: 'assets/flags/RU.svg',\r\n code: 'RU',\r\n country: 'Russia',\r\n countryAr: 'روسيا',\r\n dialCode: '+7',\r\n },\r\n RW: {\r\n flag: 'assets/flags/RW.svg',\r\n code: 'RW',\r\n country: 'Rwanda',\r\n countryAr: 'رواندا',\r\n dialCode: '+250',\r\n },\r\n BL: {\r\n flag: 'assets/flags/BL.svg',\r\n code: 'BL',\r\n country: 'Saint Barthelemy',\r\n countryAr: 'سان بارتيلمي',\r\n dialCode: '+590',\r\n },\r\n SH: {\r\n flag: 'assets/flags/SH.svg',\r\n code: 'SH',\r\n country: 'Saint Helena, Ascension and Tristan Da Cunha',\r\n countryAr: 'سان هيلينا, أسينشن وتريستان دا كونها',\r\n dialCode: '+290',\r\n },\r\n KN: {\r\n flag: 'assets/flags/KN.svg',\r\n code: 'KN',\r\n country: 'Saint Kitts and Nevis',\r\n countryAr: 'سانت كيتس و نيفيس',\r\n dialCode: '+1869',\r\n },\r\n LC: {\r\n flag: 'assets/flags/LC.svg',\r\n code: 'LC',\r\n country: 'Saint Lucia',\r\n countryAr: 'سانت لوسيا',\r\n dialCode: '+1758',\r\n },\r\n MF: {\r\n flag: 'assets/flags/MF.svg',\r\n code: 'MF',\r\n country: 'Saint Martin',\r\n countryAr: 'سانت مارتن',\r\n dialCode: '+590',\r\n },\r\n PM: {\r\n flag: 'assets/flags/PM.svg',\r\n code: 'PM',\r\n country: 'Saint Pierre and Miquelon',\r\n countryAr: 'سان بيير وميكلون',\r\n dialCode: '+508',\r\n },\r\n VC: {\r\n flag: 'assets/flags/VC.svg',\r\n code: 'VC',\r\n country: 'Saint Vincent and the Grenadines',\r\n countryAr: 'سانت فينسنت والغرينادين',\r\n dialCode: '+1784',\r\n },\r\n WS: {\r\n flag: 'assets/flags/WS.svg',\r\n code: 'WS',\r\n country: 'Samoa',\r\n countryAr: 'ساموا',\r\n dialCode: '+685',\r\n },\r\n SM: {\r\n flag: 'assets/flags/SM.svg',\r\n code: 'SM',\r\n country: 'San Marino',\r\n countryAr: 'سان مارينو',\r\n dialCode: '+378',\r\n },\r\n ST: {\r\n flag: 'assets/flags/ST.svg',\r\n code: 'ST',\r\n country: 'Sao Tome and Principe',\r\n countryAr: 'ساو تومي وبرينسيب',\r\n dialCode: '+239',\r\n },\r\n SA: {\r\n flag: 'assets/flags/SA.svg',\r\n code: 'SA',\r\n country: 'Saudi Arabia',\r\n countryAr: 'السعودية',\r\n dialCode: '+966',\r\n },\r\n SN: {\r\n flag: 'assets/flags/SN.svg',\r\n code: 'SN',\r\n country: 'Senegal',\r\n countryAr: 'السنغال',\r\n dialCode: '+221',\r\n },\r\n RS: {\r\n flag: 'assets/flags/RS.svg',\r\n code: 'RS',\r\n country: 'Serbia',\r\n countryAr: 'صربيا',\r\n dialCode: '+381',\r\n },\r\n SC: {\r\n flag: 'assets/flags/SC.svg',\r\n code: 'SC',\r\n country: 'Seychelles',\r\n countryAr: 'سيشيل',\r\n dialCode: '+248',\r\n },\r\n SL: {\r\n flag: 'assets/flags/SL.svg',\r\n code: 'SL',\r\n country: 'Sierra Leone',\r\n countryAr: 'سيراليون',\r\n dialCode: '+232',\r\n },\r\n SG: {\r\n flag: 'assets/flags/SG.svg',\r\n code: 'SG',\r\n country: 'Singapore',\r\n countryAr: 'سنغافورة',\r\n dialCode: '+65',\r\n },\r\n SX: {\r\n flag: 'assets/flags/SX.svg',\r\n code: 'SX',\r\n country: 'Sint Maarten',\r\n countryAr: 'سانت مارتن',\r\n dialCode: '+1721',\r\n },\r\n SK: {\r\n flag: 'assets/flags/SK.svg',\r\n code: 'SK',\r\n country: 'Slovakia',\r\n countryAr: 'سلوفاكيا',\r\n dialCode: '+421',\r\n },\r\n SI: {\r\n flag: 'assets/flags/SI.svg',\r\n code: 'SI',\r\n country: 'Slovenia',\r\n countryAr: 'سلوفينيا',\r\n dialCode: '+386',\r\n },\r\n SB: {\r\n flag: 'assets/flags/SB.svg',\r\n code: 'SB',\r\n country: 'Solomon Islands',\r\n countryAr: 'جزر سولومون',\r\n dialCode: '+677',\r\n },\r\n SO: {\r\n flag: 'assets/flags/SO.svg',\r\n code: 'SO',\r\n country: 'Somalia',\r\n countryAr: 'الصومال',\r\n dialCode: '+252',\r\n },\r\n ZA: {\r\n flag: 'assets/flags/ZA.svg',\r\n code: 'ZA',\r\n country: 'South Africa',\r\n countryAr: 'جنوب أفريقيا',\r\n dialCode: '+27',\r\n },\r\n GS: {\r\n flag: 'assets/flags/GS.svg',\r\n code: 'GS',\r\n country: 'South Georgia and the South Sandwich Islands',\r\n countryAr: 'جزر جورجيا الجنوبية وجزر ساندويتش الجنوبية',\r\n dialCode: '+500',\r\n },\r\n SS: {\r\n flag: 'assets/flags/SS.svg',\r\n code: 'SS',\r\n country: 'South Sudan',\r\n countryAr: 'جنوب السودان',\r\n dialCode: '+211',\r\n },\r\n ES: {\r\n flag: 'assets/flags/ES.svg',\r\n code: 'ES',\r\n country: 'Spain',\r\n countryAr: 'إسبانيا',\r\n dialCode: '+34',\r\n },\r\n LK: {\r\n flag: 'assets/flags/LK.svg',\r\n code: 'LK',\r\n country: 'Sri Lanka',\r\n countryAr: 'سريلانكا',\r\n dialCode: '+94',\r\n },\r\n SD: {\r\n flag: 'assets/flags/SD.svg',\r\n code: 'SD',\r\n country: 'Sudan',\r\n countryAr: 'السودان',\r\n dialCode: '+249',\r\n },\r\n SR: {\r\n flag: 'assets/flags/SR.svg',\r\n code: 'SR',\r\n country: 'Suriname',\r\n countryAr: 'سورينام',\r\n dialCode: '+597',\r\n },\r\n SJ: {\r\n flag: 'assets/flags/SJ.svg',\r\n code: 'SJ',\r\n country: 'Svalbard and Jan Mayen',\r\n countryAr: 'سفالبارد وجان ماين',\r\n dialCode: '+47',\r\n },\r\n SE: {\r\n flag: 'assets/flags/SE.svg',\r\n code: 'SE',\r\n country: 'Sweden',\r\n countryAr: 'السويد',\r\n dialCode: '+46',\r\n },\r\n CH: {\r\n flag: 'assets/flags/CH.svg',\r\n code: 'CH',\r\n country: 'Switzerland',\r\n countryAr: 'سويسرا',\r\n dialCode: '+41',\r\n },\r\n SY: {\r\n flag: 'assets/flags/SY.svg',\r\n code: 'SY',\r\n country: 'Syrian Arab Republic',\r\n countryAr: 'سوريا',\r\n dialCode: '+963',\r\n },\r\n TW: {\r\n flag: 'assets/flags/TW.svg',\r\n code: 'TW',\r\n country: 'Taiwan',\r\n countryAr: 'تايوان',\r\n dialCode: '+886',\r\n },\r\n TJ: {\r\n flag: 'assets/flags/TJ.svg',\r\n code: 'TJ',\r\n country: 'Tajikistan',\r\n countryAr: 'تاجيكستان',\r\n dialCode: '+992',\r\n },\r\n TZ: {\r\n flag: 'assets/flags/TZ.svg',\r\n code: 'TZ',\r\n country: 'Tanzania, United Republic of Tanzania',\r\n countryAr: 'تنزانيا',\r\n dialCode: '+255',\r\n },\r\n TH: {\r\n flag: 'assets/flags/TH.svg',\r\n code: 'TH',\r\n country: 'Thailand',\r\n countryAr: 'تايلاند',\r\n dialCode: '+66',\r\n },\r\n TL: {\r\n flag: 'assets/flags/TL.svg',\r\n code: 'TL',\r\n country: 'Timor-Leste',\r\n countryAr: 'تيمور الشرقية',\r\n dialCode: '+670',\r\n },\r\n TG: {\r\n flag: 'assets/flags/TG.svg',\r\n code: 'TG',\r\n country: 'Togo',\r\n countryAr: 'توغو',\r\n dialCode: '+228',\r\n },\r\n TK: {\r\n flag: 'assets/flags/TK.svg',\r\n code: 'TK',\r\n country: 'Tokelau',\r\n countryAr: 'تكلاو',\r\n dialCode: '+690',\r\n },\r\n TO: {\r\n flag: 'assets/flags/TO.svg',\r\n code: 'TO',\r\n country: 'Tonga',\r\n countryAr: 'تونغا',\r\n dialCode: '+676',\r\n },\r\n TT: {\r\n flag: 'assets/flags/TT.svg',\r\n code: 'TT',\r\n country: 'Trinidad and Tobago',\r\n countryAr: 'ترينيداد وتوباغو',\r\n dialCode: '+1868',\r\n },\r\n TN: {\r\n flag: 'assets/flags/TN.svg',\r\n code: 'TN',\r\n country: 'Tunisia',\r\n countryAr: 'تونس',\r\n dialCode: '+216',\r\n },\r\n TR: {\r\n flag: 'assets/flags/TR.svg',\r\n code: 'TR',\r\n country: 'Turkey',\r\n countryAr: 'تركيا',\r\n dialCode: '+90',\r\n },\r\n TM: {\r\n flag: 'assets/flags/TM.svg',\r\n code: 'TM',\r\n country: 'Turkmenistan',\r\n countryAr: 'تركمانستان',\r\n dialCode: '+993',\r\n },\r\n TC: {\r\n flag: 'assets/flags/TC.svg',\r\n code: 'TC',\r\n country: 'Turks and Caicos Islands',\r\n countryAr: 'جزر تركس وكايكوس',\r\n dialCode: '+1649',\r\n },\r\n TV: {\r\n flag: 'assets/flags/TV.svg',\r\n code: 'TV',\r\n country: 'Tuvalu',\r\n countryAr: 'توفالو',\r\n dialCode: '+688',\r\n },\r\n UG: {\r\n flag: 'assets/flags/UG.svg',\r\n code: 'UG',\r\n country: 'Uganda',\r\n countryAr: 'أوغندا',\r\n dialCode: '+256',\r\n },\r\n UA: {\r\n flag: 'assets/flags/UA.svg',\r\n code: 'UA',\r\n country: 'Ukraine',\r\n countryAr: 'أوكرانيا',\r\n dialCode: '+380',\r\n },\r\n AE: {\r\n flag: 'assets/flags/AE.svg',\r\n code: 'AE',\r\n country: 'United Arab Emirates',\r\n countryAr: 'الإمارات العربية المتحدة',\r\n dialCode: '+971',\r\n },\r\n GB: {\r\n flag: 'assets/flags/GB.svg',\r\n code: 'GB',\r\n country: 'United Kingdom',\r\n countryAr: 'المملكة المتحدة',\r\n dialCode: '+44',\r\n },\r\n US: {\r\n flag: 'assets/flags/US.svg',\r\n code: 'US',\r\n country: 'United States',\r\n countryAr: 'الولايات المتحدة',\r\n dialCode: '+1',\r\n },\r\n UY: {\r\n flag: 'assets/flags/UY.svg',\r\n code: 'UY',\r\n country: 'Uruguay',\r\n countryAr: 'أوروغواي',\r\n dialCode: '+598',\r\n },\r\n UZ: {\r\n flag: 'assets/flags/UZ.svg',\r\n code: 'UZ',\r\n country: 'Uzbekistan',\r\n countryAr: 'أوزبكستان',\r\n dialCode: '+998',\r\n },\r\n VU: {\r\n flag: 'assets/flags/VU.svg',\r\n code: 'VU',\r\n country: 'Vanuatu',\r\n countryAr: 'فانواتو',\r\n dialCode: '+678',\r\n },\r\n VE: {\r\n flag: 'assets/flags/VE.svg',\r\n code: 'VE',\r\n country: 'Venezuela, Bolivarian Republic of Venezuela',\r\n countryAr: 'فنزويلا',\r\n dialCode: '+58',\r\n },\r\n VN: {\r\n flag: 'assets/flags/VN.svg',\r\n code: 'VN',\r\n country: 'Vietnam',\r\n countryAr: 'فيتنام',\r\n dialCode: '+84',\r\n },\r\n VG: {\r\n flag: 'assets/flags/VG.svg',\r\n code: 'VG',\r\n country: 'Virgin Islands, British',\r\n countryAr: 'جزر العذراء البريطانية',\r\n dialCode: '+1284',\r\n },\r\n VI: {\r\n flag: 'assets/flags/VI.svg',\r\n code: 'VI',\r\n country: 'Virgin Islands, U.S.',\r\n countryAr: 'جزر العذراء الأمريكية',\r\n dialCode: '+1340',\r\n },\r\n WF: {\r\n flag: 'assets/flags/WF.svg',\r\n code: 'WF',\r\n country: 'Wallis and Futuna',\r\n countryAr: 'واليس وفوتونا',\r\n dialCode: '+681',\r\n },\r\n YE: {\r\n flag: 'assets/flags/YE.svg',\r\n code: 'YE',\r\n country: 'Yemen',\r\n countryAr: 'اليمن',\r\n dialCode: '+967',\r\n },\r\n ZM: {\r\n flag: 'assets/flags/ZM.svg',\r\n code: 'ZM',\r\n country: 'Zambia',\r\n countryAr: 'زامبيا',\r\n dialCode: '+260',\r\n },\r\n ZW: {\r\n flag: 'assets/flags/ZW.svg',\r\n code: 'ZW',\r\n country: 'Zimbabwe',\r\n countryAr: 'زمبابوي',\r\n dialCode: '+263',\r\n },\r\n};\r\n","export const globeSVG = `<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"21\" viewBox=\"0 0 20 21\" fill=\"none\">\r\n<path d=\"M10.0003 19.0573C14.6027 19.0573 18.3337 15.3263 18.3337 10.724C18.3337 6.12159 14.6027 2.39062 10.0003 2.39062C5.39795 2.39062 1.66699 6.12159 1.66699 10.724C1.66699 15.3263 5.39795 19.0573 10.0003 19.0573Z\" stroke=\"#8A9AAA\" stroke-width=\"1.5\"/>\r\n<path d=\"M6.66699 10.724C6.66699 15.724 10.0003 19.0573 10.0003 19.0573C10.0003 19.0573 13.3337 15.724 13.3337 10.724C13.3337 5.72396 10.0003 2.39062 10.0003 2.39062C10.0003 2.39062 6.66699 5.72396 6.66699 10.724Z\" stroke=\"#8A9AAA\" stroke-width=\"1.5\" stroke-linejoin=\"round\"/>\r\n<path d=\"M17.5 13.2227H2.5\" stroke=\"#8A9AAA\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n<path d=\"M17.5 8.22266H2.5\" stroke=\"#8A9AAA\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n</svg>`;\r\n","import { Component, ElementRef, EventEmitter, HostListener, Input, Output, SimpleChanges, forwardRef, inject, OnInit, OnChanges } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { ControlValueAccessor, FormsModule, NG_VALIDATORS, NG_VALUE_ACCESSOR, ValidationErrors, Validator } from '@angular/forms';\r\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\r\nimport { Countries } from '../assets/country-dataset';\r\nimport { CountryData } from '../data-types/countryList';\r\nimport { globeSVG } from '../assets/globe-svg';\r\nimport { Country } from '../data-types/country';\r\nimport { isValidPhoneNumber } from 'libphonenumber-js';\r\n\r\n@Component({\r\n selector: 'angular-phone-number',\r\n standalone: true,\r\n imports: [CommonModule, FormsModule],\r\n templateUrl: './angular-phone-number.component.html',\r\n styleUrls: ['./angular-phone-number.component.scss'],\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => AngularPhoneNumber),\r\n multi: true,\r\n },\r\n {\r\n provide: NG_VALIDATORS,\r\n useExisting: forwardRef(() => AngularPhoneNumber),\r\n multi: true,\r\n },\r\n ],\r\n})\r\nexport class AngularPhoneNumber implements ControlValueAccessor, Validator, OnInit, OnChanges {\r\n @Input() error: boolean | undefined = false;\r\n @Input() defaultCountry = 'US'; // Added default value\r\n @Input() preferredCountries: string[] = [];\r\n @Input() border = true;\r\n @Input() disabled = false;\r\n @Input() language: 'ar' | 'en' = 'en';\r\n @Input() mode: 'ar' | 'all' = 'all';\r\n @Input() priorityCountries: string[] = [];\r\n @Output() inputChanged = new EventEmitter<string | number | null>();\r\n @Output() countryChanged = new EventEmitter<Country | null>();\r\n @Output() modalOpened = new EventEmitter<boolean>();\r\n\r\n sanitizer = inject(DomSanitizer);\r\n countryList: CountryData = Countries;\r\n dataSet: Country[] = Object.values(this.countryList);\r\n showModal = false;\r\n selectedCountry!: Country;\r\n inputFocused = false;\r\n value = '';\r\n globeSVG: string = globeSVG;\r\n\r\n // Arab country codes - moved to a static property\r\n private static readonly ARAB_COUNTRY_CODES: string[] = ['SA', 'AE', 'QA', 'BH', 'KW', 'OM', 'JO', 'PS', 'LB', 'SY', 'IQ', 'YE', 'LY', 'EG', 'SD', 'SO', 'DJ', 'MA', 'DZ', 'TN', 'MR'];\r\n\r\n constructor(private elementRef: ElementRef) {}\r\n\r\n // Handle click outside component\r\n @HostListener('document:mousedown', ['$event'])\r\n onClickOutside(event: MouseEvent): void {\r\n const clickedInside = this.elementRef.nativeElement.contains(event.target);\r\n const clickedOnInput = (event.target as HTMLElement).classList.contains('input-box');\r\n\r\n if (!clickedInside || clickedOnInput) {\r\n this.showModal = false;\r\n this.modalOpened.emit(false); // Emit event when modal is closed\r\n }\r\n }\r\n\r\n // Callbacks for ControlValueAccessor\r\n onChange: (value: string) => void = () => {};\r\n onTouched: () => void = () => {};\r\n\r\n // Input event handlers\r\n onBlur(): void {\r\n this.inputFocused = false;\r\n this.onTouched();\r\n }\r\n\r\n onFocus(): void {\r\n this.inputFocused = true;\r\n }\r\n\r\n // ControlValueAccessor implementation\r\n writeValue(value: string): void {\r\n if (value !== undefined) {\r\n this.extractValues(value);\r\n // Don't call onChange here - writeValue shouldn't trigger onChange\r\n }\r\n }\r\n\r\n registerOnChange(fn: (value: string) => void): void {\r\n this.onChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: () => void): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n // Disable the component when needed\r\n setDisabledState(isDisabled: boolean): void {\r\n this.disabled = isDisabled;\r\n }\r\n\r\n ngOnInit(): void {\r\n this.initializeComponent();\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n const shouldResetCountryList = changes['mode'] && !changes['mode'].firstChange;\r\n\r\n if (shouldResetCountryList) {\r\n // Reset country list to default\r\n this.resetCountryList();\r\n }\r\n\r\n const needsReordering = (changes['mode'] && !changes['mode'].firstChange) || (changes['priorityCountries'] && !changes['priorityCountries'].firstChange);\r\n\r\n if (needsReordering) {\r\n this.applyCountryOrdering();\r\n }\r\n }\r\n\r\n /**\r\n * Initialize component with the correct country ordering and filtering\r\n */\r\n private initializeComponent(): void {\r\n // Set default country\r\n this.setDefaultCountry();\r\n\r\n // Apply country ordering\r\n this.applyCountryOrdering();\r\n\r\n // Notify that the modal is closed initially\r\n this.modalOpened.emit(false);\r\n }\r\n\r\n /**\r\n * Apply all ordering rules to the country list\r\n */\r\n private applyCountryOrdering(): void {\r\n // Finally apply preferred countries filter\r\n this.applyPreferredCountriesFilter();\r\n\r\n // First apply mode-based ordering\r\n this.prioritizeArabCountries();\r\n\r\n // Then apply custom priority countries\r\n this.applyPriorityCountries();\r\n }\r\n\r\n /**\r\n * Reset country list to the original dataset\r\n */\r\n private resetCountryList(): void {\r\n this.countryList = { ...Countries };\r\n this.dataSet = Object.values(this.countryList);\r\n }\r\n\r\n /**\r\n * Sets the default country based on input\r\n */\r\n private setDefaultCountry(): void {\r\n if (!this.defaultCountry) {\r\n return;\r\n }\r\n\r\n const defCountryData = this.countryList[this.defaultCountry];\r\n if (defCountryData) {\r\n this.selectedCountry = defCountryData;\r\n }\r\n }\r\n\r\n /**\r\n * Apply preferred countries filter to narrow down the available options\r\n */\r\n private applyPreferredCountriesFilter(): void {\r\n if (!this.preferredCountries || this.preferredCountries.length === 0) {\r\n return;\r\n }\r\n\r\n // Filter the countries to include only preferred countries\r\n const preferredCountryList = Object.fromEntries(Object.entries(this.countryList).filter(([code]) => this.preferredCountries.includes(code)));\r\n\r\n // If preferred countries are found, update the countryList\r\n if (Object.keys(preferredCountryList).length > 0) {\r\n this.countryList = preferredCountryList;\r\n this.dataSet = Object.values(this.countryList);\r\n }\r\n }\r\n\r\n /**\r\n * Toggle the country selection modal\r\n */\r\n toggleModal(): void {\r\n this.showModal = !this.showModal;\r\n this.dataSet = Object.values(this.countryList);\r\n this.modalOpened.emit(this.showModal);\r\n }\r\n\r\n /**\r\n * Update the full phone number value and notify changes\r\n */\r\n setFullPhoneNumber(): void {\r\n const fullPhoneNumber = this.selectedCountry ? `${this.selectedCountry.dialCode}${this.value || ''}` : this.value || '';\r\n\r\n this.onChange(fullPhoneNumber);\r\n }\r\n\r\n /**\r\n * Handle country selection\r\n */\r\n selectCountry(data: Country): void {\r\n this.selectedCountry = data;\r\n this.setFullPhoneNumber();\r\n this.showModal = false;\r\n this.countryChanged.emit(data);\r\n }\r\n\r\n /**\r\n * Extract country code and phone number from input\r\n */\r\n extractValues(phoneNumber: string): void {\r\n if (!phoneNumber) {\r\n this.value = '';\r\n return;\r\n }\r\n\r\n // Ensure we're working with a string\r\n phoneNumber = phoneNumber.toString();\r\n\r\n // Try to match with a country code\r\n const countryCodes = Object.keys(Countries);\r\n const sortedCodes = countryCodes.sort((a, b) => Countries[b].dialCode.length - Countries[a].dialCode.length);\r\n\r\n // Check if the number starts with any country code\r\n for (const code of sortedCodes) {\r\n if (phoneNumber.startsWith(Countries[code].dialCode)) {\r\n this.selectedCountry = Countries[code];\r\n this.value = phoneNumber.substring(Countries[code].dialCode.length);\r\n return;\r\n }\r\n }\r\n\r\n // If no direct match was found, try to extract based on common prefixes\r\n if (phoneNumber.startsWith('+')) {\r\n // Try to match the first 1-4 digits as country code\r\n for (let i = 1; i <= 4; i++) {\r\n const prefix = phoneNumber.substring(0, i + 1); // include the + sign\r\n const matchingCode = countryCodes.find((code) => `+${Countries[code].dialCode.replace('+', '')}` === prefix);\r\n\r\n if (matchingCode) {\r\n this.selectedCountry = Countries[matchingCode];\r\n this.value = phoneNumber.substring(i + 1);\r\n return;\r\n }\r\n }\r\n\r\n // If still not found, just remove the + sign\r\n this.value = phoneNumber.substring(1);\r\n } else {\r\n // No + prefix, just use the value as is\r\n this.value = phoneNumber;\r\n }\r\n }\r\n\r\n /**\r\n * Try to determine the country from user input\r\n */\r\n getCountryWithInput(): void {\r\n if