123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799 |
- // @flow
-
- export const countries = [
- { name: 'Afghanistan',
- dialCode: '93',
- code: 'af' },
- { name: 'Aland Islands',
- dialCode: '358',
- code: 'ax' },
- { name: 'Albania',
- dialCode: '355',
- code: 'al' },
- { name: 'Algeria',
- dialCode: '213',
- code: 'dz' },
- { name: 'AmericanSamoa',
- dialCode: '1684',
- code: 'as' },
- { name: 'Andorra',
- dialCode: '376',
- code: 'ad' },
- { name: 'Angola',
- dialCode: '244',
- code: 'ao' },
- { name: 'Anguilla',
- dialCode: '1264',
- code: 'ai' },
- { name: 'Antarctica',
- dialCode: '672',
- code: 'aq' },
- { name: 'Antigua and Barbuda',
- dialCode: '1268',
- code: 'ag' },
- { name: 'Argentina',
- dialCode: '54',
- code: 'ar' },
- { name: 'Armenia',
- dialCode: '374',
- code: 'am' },
- { name: 'Aruba',
- dialCode: '297',
- code: 'aw' },
- { name: 'Australia',
- dialCode: '61',
- code: 'au' },
- { name: 'Austria',
- dialCode: '43',
- code: 'at' },
- { name: 'Azerbaijan',
- dialCode: '994',
- code: 'az' },
- { name: 'Bahamas',
- dialCode: '1242',
- code: 'bs' },
- { name: 'Bahrain',
- dialCode: '973',
- code: 'bh' },
- { name: 'Bangladesh',
- dialCode: '880',
- code: 'bd' },
- { name: 'Barbados',
- dialCode: '1246',
- code: 'bb' },
- { name: 'Belarus',
- dialCode: '375',
- code: 'by' },
- { name: 'Belgium',
- dialCode: '32',
- code: 'be' },
- { name: 'Belize',
- dialCode: '501',
- code: 'bz' },
- { name: 'Benin',
- dialCode: '229',
- code: 'bj' },
- { name: 'Bermuda',
- dialCode: '1441',
- code: 'bm' },
- { name: 'Bhutan',
- dialCode: '975',
- code: 'bt' },
- { name: 'Bolivia, Plurinational State of',
- dialCode: '591',
- code: 'bo' },
- { name: 'Bosnia and Herzegovina',
- dialCode: '387',
- code: 'ba' },
- { name: 'Botswana',
- dialCode: '267',
- code: 'bw' },
- { name: 'Brazil',
- dialCode: '55',
- code: 'br' },
- { name: 'British Indian Ocean Territory',
- dialCode: '246',
- code: 'io' },
- { name: 'Brunei Darussalam',
- dialCode: '673',
- code: 'bn' },
- { name: 'Bulgaria',
- dialCode: '359',
- code: 'bg' },
- { name: 'Burkina Faso',
- dialCode: '226',
- code: 'bf' },
- { name: 'Burundi',
- dialCode: '257',
- code: 'bi' },
- { name: 'Cambodia',
- dialCode: '855',
- code: 'kh' },
- { name: 'Cameroon',
- dialCode: '237',
- code: 'cm' },
- { name: 'Canada',
- dialCode: '1',
- code: 'ca' },
- { name: 'Cape Verde',
- dialCode: '238',
- code: 'cv' },
- { name: 'Cayman Islands',
- dialCode: ' 345',
- code: 'ky' },
- { name: 'Central African Republic',
- dialCode: '236',
- code: 'cf' },
- { name: 'Chad',
- dialCode: '235',
- code: 'td' },
- { name: 'Chile',
- dialCode: '56',
- code: 'cl' },
- { name: 'China',
- dialCode: '86',
- code: 'cn' },
- { name: 'Christmas Island',
- dialCode: '61',
- code: 'cx' },
- { name: 'Cocos (Keeling) Islands',
- dialCode: '61',
- code: 'cc' },
- { name: 'Colombia',
- dialCode: '57',
- code: 'co' },
- { name: 'Comoros',
- dialCode: '269',
- code: 'km' },
- { name: 'Congo',
- dialCode: '242',
- code: 'cg' },
- {
- name: 'Congo, The Democratic Republic of the Congo',
- dialCode: '243',
- code: 'cd'
- },
- { name: 'Cook Islands',
- dialCode: '682',
- code: 'ck' },
- { name: 'Costa Rica',
- dialCode: '506',
- code: 'cr' },
- { name: 'Cote d\'Ivoire',
- dialCode: '225',
- code: 'ci' },
- { name: 'Croatia',
- dialCode: '385',
- code: 'hr' },
- { name: 'Cuba',
- dialCode: '53',
- code: 'cu' },
- { name: 'Cyprus',
- dialCode: '357',
- code: 'cy' },
- { name: 'Czech Republic',
- dialCode: '420',
- code: 'cz' },
- { name: 'Denmark',
- dialCode: '45',
- code: 'dk' },
- { name: 'Djibouti',
- dialCode: '253',
- code: 'dj' },
- { name: 'Dominica',
- dialCode: '1767',
- code: 'dm' },
- { name: 'Dominican Republic',
- dialCode: '1849',
- code: 'do' },
- { name: 'Ecuador',
- dialCode: '593',
- code: 'ec' },
- { name: 'Egypt',
- dialCode: '20',
- code: 'eg' },
- { name: 'El Salvador',
- dialCode: '503',
- code: 'sv' },
- { name: 'Equatorial Guinea',
- dialCode: '240',
- code: 'gq' },
- { name: 'Eritrea',
- dialCode: '291',
- code: 'er' },
- { name: 'Estonia',
- dialCode: '372',
- code: 'ee' },
- { name: 'Ethiopia',
- dialCode: '251',
- code: 'et' },
- { name: 'Falkland Islands (Malvinas)',
- dialCode: '500',
- code: 'fk' },
- { name: 'Faroe Islands',
- dialCode: '298',
- code: 'fo' },
- { name: 'Fiji',
- dialCode: '679',
- code: 'fj' },
- { name: 'Finland',
- dialCode: '358',
- code: 'fi' },
- { name: 'France',
- dialCode: '33',
- code: 'fr' },
- { name: 'French Guiana',
- dialCode: '594',
- code: 'gf' },
- { name: 'French Polynesia',
- dialCode: '689',
- code: 'pf' },
- { name: 'Gabon',
- dialCode: '241',
- code: 'ga' },
- { name: 'Gambia',
- dialCode: '220',
- code: 'gm' },
- { name: 'Georgia',
- dialCode: '995',
- code: 'ge' },
- { name: 'Germany',
- dialCode: '49',
- code: 'de' },
- { name: 'Ghana',
- dialCode: '233',
- code: 'gh' },
- { name: 'Gibraltar',
- dialCode: '350',
- code: 'gi' },
- { name: 'Greece',
- dialCode: '30',
- code: 'gr' },
- { name: 'Greenland',
- dialCode: '299',
- code: 'gl' },
- { name: 'Grenada',
- dialCode: '1473',
- code: 'gd' },
- { name: 'Guadeloupe',
- dialCode: '590',
- code: 'gp' },
- { name: 'Guam',
- dialCode: '1671',
- code: 'gu' },
- { name: 'Guatemala',
- dialCode: '502',
- code: 'gt' },
- { name: 'Guernsey',
- dialCode: '44',
- code: 'gg' },
- { name: 'Guinea',
- dialCode: '224',
- code: 'gn' },
- { name: 'Guinea-Bissau',
- dialCode: '245',
- code: 'gw' },
- { name: 'Guyana',
- dialCode: '595',
- code: 'gy' },
- { name: 'Haiti',
- dialCode: '509',
- code: 'ht' },
- { name: 'Holy See (Vatican City State)',
- dialCode: '379',
- code: 'va' },
- { name: 'Honduras',
- dialCode: '504',
- code: 'hn' },
- { name: 'Hong Kong',
- dialCode: '852',
- code: 'hk' },
- { name: 'Hungary',
- dialCode: '36',
- code: 'hu' },
- { name: 'Iceland',
- dialCode: '354',
- code: 'is' },
- { name: 'India',
- dialCode: '91',
- code: 'in' },
- { name: 'Indonesia',
- dialCode: '62',
- code: 'id' },
- {
- name: 'Iran, Islamic Republic of Persian Gulf',
- dialCode: '98',
- code: 'ir'
- },
- { name: 'Iraq',
- dialCode: '964',
- code: 'iq' },
- { name: 'Ireland',
- dialCode: '353',
- code: 'ie' },
- { name: 'Isle of Man',
- dialCode: '44',
- code: 'im' },
- { name: 'Israel',
- dialCode: '972',
- code: 'il' },
- { name: 'Italy',
- dialCode: '39',
- code: 'it' },
- { name: 'Jamaica',
- dialCode: '1876',
- code: 'jm' },
- { name: 'Japan',
- dialCode: '81',
- code: 'jp' },
- { name: 'Jersey',
- dialCode: '44',
- code: 'je' },
- { name: 'Jordan',
- dialCode: '962',
- code: 'jo' },
- { name: 'Kazakhstan',
- dialCode: '77',
- code: 'kz' },
- { name: 'Kenya',
- dialCode: '254',
- code: 'ke' },
- { name: 'Kiribati',
- dialCode: '686',
- code: 'ki' },
- {
- name: 'Korea, Democratic People\'s Republic of Korea',
- dialCode: '850',
- code: 'kp'
- },
- { name: 'Korea, Republic of South Korea',
- dialCode: '82',
- code: 'kr' },
- { name: 'Kuwait',
- dialCode: '965',
- code: 'kw' },
- { name: 'Kyrgyzstan',
- dialCode: '996',
- code: 'kg' },
- { name: 'Laos',
- dialCode: '856',
- code: 'la' },
- { name: 'Latvia',
- dialCode: '371',
- code: 'lv' },
- { name: 'Lebanon',
- dialCode: '961',
- code: 'lb' },
- { name: 'Lesotho',
- dialCode: '266',
- code: 'ls' },
- { name: 'Liberia',
- dialCode: '231',
- code: 'lr' },
- { name: 'Libyan Arab Jamahiriya',
- dialCode: '218',
- code: 'ly' },
- { name: 'Liechtenstein',
- dialCode: '423',
- code: 'li' },
- { name: 'Lithuania',
- dialCode: '370',
- code: 'lt' },
- { name: 'Luxembourg',
- dialCode: '352',
- code: 'lu' },
- { name: 'Macao',
- dialCode: '853',
- code: 'mo' },
- { name: 'Macedonia',
- dialCode: '389',
- code: 'mk' },
- { name: 'Madagascar',
- dialCode: '261',
- code: 'mg' },
- { name: 'Malawi',
- dialCode: '265',
- code: 'mw' },
- { name: 'Malaysia',
- dialCode: '60',
- code: 'my' },
- { name: 'Maldives',
- dialCode: '960',
- code: 'mv' },
- { name: 'Mali',
- dialCode: '223',
- code: 'ml' },
- { name: 'Malta',
- dialCode: '356',
- code: 'mt' },
- { name: 'Marshall Islands',
- dialCode: '692',
- code: 'mh' },
- { name: 'Martinique',
- dialCode: '596',
- code: 'mq' },
- { name: 'Mauritania',
- dialCode: '222',
- code: 'mr' },
- { name: 'Mauritius',
- dialCode: '230',
- code: 'mu' },
- { name: 'Mayotte',
- dialCode: '262',
- code: 'yt' },
- { name: 'Mexico',
- dialCode: '52',
- code: 'mx' },
- {
- name: 'Micronesia, Federated States of Micronesia',
- dialCode: '691',
- code: 'fm'
- },
- { name: 'Moldova',
- dialCode: '373',
- code: 'md' },
- { name: 'Monaco',
- dialCode: '377',
- code: 'mc' },
- { name: 'Mongolia',
- dialCode: '976',
- code: 'mn' },
- { name: 'Montenegro',
- dialCode: '382',
- code: 'me' },
- { name: 'Montserrat',
- dialCode: '1664',
- code: 'ms' },
- { name: 'Morocco',
- dialCode: '212',
- code: 'ma' },
- { name: 'Mozambique',
- dialCode: '258',
- code: 'mz' },
- { name: 'Myanmar',
- dialCode: '95',
- code: 'mm' },
- { name: 'Namibia',
- dialCode: '264',
- code: 'na' },
- { name: 'Nauru',
- dialCode: '674',
- code: 'nr' },
- { name: 'Nepal',
- dialCode: '977',
- code: 'np' },
- { name: 'Netherlands',
- dialCode: '31',
- code: 'nl' },
- { name: 'Netherlands Antilles',
- dialCode: '599',
- code: 'an' },
- { name: 'New Caledonia',
- dialCode: '687',
- code: 'nc' },
- { name: 'New Zealand',
- dialCode: '64',
- code: 'nz' },
- { name: 'Nicaragua',
- dialCode: '505',
- code: 'ni' },
- { name: 'Niger',
- dialCode: '227',
- code: 'ne' },
- { name: 'Nigeria',
- dialCode: '234',
- code: 'ng' },
- { name: 'Niue',
- dialCode: '683',
- code: 'nu' },
- { name: 'Norfolk Island',
- dialCode: '672',
- code: 'nf' },
- { name: 'Northern Mariana Islands',
- dialCode: '1670',
- code: 'mp' },
- { name: 'Norway',
- dialCode: '47',
- code: 'no' },
- { name: 'Oman',
- dialCode: '968',
- code: 'om' },
- { name: 'Pakistan',
- dialCode: '92',
- code: 'pk' },
- { name: 'Palau',
- dialCode: '680',
- code: 'pw' },
- { name: 'Palestinian Territory, Occupied',
- dialCode: '970',
- code: 'ps' },
- { name: 'Panama',
- dialCode: '507',
- code: 'pa' },
- { name: 'Papua New Guinea',
- dialCode: '675',
- code: 'pg' },
- { name: 'Paraguay',
- dialCode: '595',
- code: 'py' },
- { name: 'Peru',
- dialCode: '51',
- code: 'pe' },
- { name: 'Philippines',
- dialCode: '63',
- code: 'ph' },
- { name: 'Pitcairn',
- dialCode: '872',
- code: 'pn' },
- { name: 'Poland',
- dialCode: '48',
- code: 'pl' },
- { name: 'Portugal',
- dialCode: '351',
- code: 'pt' },
- { name: 'Puerto Rico',
- dialCode: '1939',
- code: 'pr' },
- { name: 'Qatar',
- dialCode: '974',
- code: 'qa' },
- { name: 'Romania',
- dialCode: '40',
- code: 'ro' },
- { name: 'Russia',
- dialCode: '7',
- code: 'ru' },
- { name: 'Rwanda',
- dialCode: '250',
- code: 'rw' },
- { name: 'Reunion',
- dialCode: '262',
- code: 're' },
- { name: 'Saint Barthelemy',
- dialCode: '590',
- code: 'bl' },
- {
- name: 'Saint Helena, Ascension and Tristan Da Cunha',
- dialCode: '290',
- code: 'sh'
- },
- { name: 'Saint Kitts and Nevis',
- dialCode: '1869',
- code: 'kn' },
- { name: 'Saint Lucia',
- dialCode: '1758',
- code: 'lc' },
- { name: 'Saint Martin',
- dialCode: '590',
- code: 'mf' },
- { name: 'Saint Pierre and Miquelon',
- dialCode: '508',
- code: 'pm' },
- { name: 'Saint Vincent and the Grenadines',
- dialCode: '1784',
- code: 'vc' },
- { name: 'Samoa',
- dialCode: '685',
- code: 'ws' },
- { name: 'San Marino',
- dialCode: '378',
- code: 'sm' },
- { name: 'Sao Tome and Principe',
- dialCode: '239',
- code: 'st' },
- { name: 'Saudi Arabia',
- dialCode: '966',
- code: 'sa' },
- { name: 'Senegal',
- dialCode: '221',
- code: 'sn' },
- { name: 'Serbia',
- dialCode: '381',
- code: 'rs' },
- { name: 'Seychelles',
- dialCode: '248',
- code: 'sc' },
- { name: 'Sierra Leone',
- dialCode: '232',
- code: 'sl' },
- { name: 'Singapore',
- dialCode: '65',
- code: 'sg' },
- { name: 'Slovakia',
- dialCode: '421',
- code: 'sk' },
- { name: 'Slovenia',
- dialCode: '386',
- code: 'si' },
- { name: 'Solomon Islands',
- dialCode: '677',
- code: 'sb' },
- { name: 'Somalia',
- dialCode: '252',
- code: 'so' },
- { name: 'South Africa',
- dialCode: '27',
- code: 'za' },
- { name: 'South Sudan',
- dialCode: '211',
- code: 'ss' },
- {
- name: 'South Georgia and the South Sandwich Islands',
- dialCode: '500',
- code: 'gs'
- },
- { name: 'Spain',
- dialCode: '34',
- code: 'es' },
- { name: 'Sri Lanka',
- dialCode: '94',
- code: 'lk' },
- { name: 'Sudan',
- dialCode: '249',
- code: 'sd' },
- { name: 'Suriname',
- dialCode: '597',
- code: 'sr' },
- { name: 'Svalbard and Jan Mayen',
- dialCode: '47',
- code: 'sj' },
- { name: 'Swaziland',
- dialCode: '268',
- code: 'sz' },
- { name: 'Sweden',
- dialCode: '46',
- code: 'se' },
- { name: 'Switzerland',
- dialCode: '41',
- code: 'ch' },
- { name: 'Syrian Arab Republic',
- dialCode: '963',
- code: 'sy' },
- { name: 'Taiwan',
- dialCode: '886',
- code: 'tw' },
- { name: 'Tajikistan',
- dialCode: '992',
- code: 'tj' },
- {
- name: 'Tanzania, United Republic of Tanzania',
- dialCode: '255',
- code: 'tz'
- },
- { name: 'Thailand',
- dialCode: '66',
- code: 'th' },
- { name: 'Timor-Leste',
- dialCode: '670',
- code: 'tl' },
- { name: 'Togo',
- dialCode: '228',
- code: 'tg' },
- { name: 'Tokelau',
- dialCode: '690',
- code: 'tk' },
- { name: 'Tonga',
- dialCode: '676',
- code: 'to' },
- { name: 'Trinidad and Tobago',
- dialCode: '1868',
- code: 'tt' },
- { name: 'Tunisia',
- dialCode: '216',
- code: 'tn' },
- { name: 'Turkey',
- dialCode: '90',
- code: 'tr' },
- { name: 'Turkmenistan',
- dialCode: '993',
- code: 'tm' },
- { name: 'Turks and Caicos Islands',
- dialCode: '1649',
- code: 'tc' },
- { name: 'Tuvalu',
- dialCode: '688',
- code: 'tv' },
- { name: 'Uganda',
- dialCode: '256',
- code: 'ug' },
- { name: 'Ukraine',
- dialCode: '380',
- code: 'ua' },
- { name: 'United Arab Emirates',
- dialCode: '971',
- code: 'ae' },
- { name: 'United Kingdom',
- dialCode: '44',
- code: 'gb' },
- { name: 'United States',
- dialCode: '1',
- code: 'us' },
- { name: 'Uruguay',
- dialCode: '598',
- code: 'uy' },
- { name: 'Uzbekistan',
- dialCode: '998',
- code: 'uz' },
- { name: 'Vanuatu',
- dialCode: '678',
- code: 'vu' },
- {
- name: 'Venezuela, Bolivarian Republic of Venezuela',
- dialCode: '58',
- code: 've'
- },
- { name: 'Vietnam',
- dialCode: '84',
- code: 'vn' },
- { name: 'Virgin Islands, British',
- dialCode: '1284',
- code: 'vg' },
- { name: 'Virgin Islands, U.S.',
- dialCode: '1340',
- code: 'vi' },
- { name: 'Wallis and Futuna',
- dialCode: '681',
- code: 'wf' },
- { name: 'Yemen',
- dialCode: '967',
- code: 'ye' },
- { name: 'Zambia',
- dialCode: '260',
- code: 'zm' },
- { name: 'Zimbabwe',
- dialCode: '263',
- code: 'zw' }
- ];
-
- const countriesByCodeMap = countries.reduce((result, country) => {
- result[country.dialCode] = country;
-
- return result;
- }, {});
-
- /**
- * Map between country dial codes and country objects.
- *
- */
- const codesByNumbersMap = countries.reduce((result, country) => {
- result[country.dialCode] = country.code;
-
- return result;
- }, {});
-
- /**
- * Returns the corresponding country code from a phone number.
- *
- * @param {string} phoneNumber - The phone number.
- * @returns {string}
- */
- export function getCountryCodeFromPhone(phoneNumber: string): string {
- const number = phoneNumber.replace(/[+.\s]/g, '');
-
-
- for (let i = 4; i > 0; i--) {
- const prefix = number.slice(0, i);
-
- if (codesByNumbersMap[prefix]) {
- return codesByNumbersMap[prefix];
- }
- }
-
- return '';
- }
-
- /**
- * Returns the corresponding country for a text starting with the dial code.
- *
- * @param {string} text - The text containing the dial code.
- * @returns {Object}
- */
- export function getCountryFromDialCodeText(text: string): Object {
- return (
- countriesByCodeMap[text.slice(0, 4)]
- || countriesByCodeMap[text.slice(0, 3)]
- || countriesByCodeMap[text.slice(0, 2)]
- || countriesByCodeMap[text.slice(0, 1)]
- || null
- );
- }
|