You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

utils.ts 19KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805
  1. export const countries = [
  2. { name: 'Afghanistan',
  3. dialCode: '93',
  4. code: 'af' },
  5. { name: 'Aland Islands',
  6. dialCode: '358',
  7. code: 'ax' },
  8. { name: 'Albania',
  9. dialCode: '355',
  10. code: 'al' },
  11. { name: 'Algeria',
  12. dialCode: '213',
  13. code: 'dz' },
  14. { name: 'AmericanSamoa',
  15. dialCode: '1684',
  16. code: 'as' },
  17. { name: 'Andorra',
  18. dialCode: '376',
  19. code: 'ad' },
  20. { name: 'Angola',
  21. dialCode: '244',
  22. code: 'ao' },
  23. { name: 'Anguilla',
  24. dialCode: '1264',
  25. code: 'ai' },
  26. { name: 'Antarctica',
  27. dialCode: '672',
  28. code: 'aq' },
  29. { name: 'Antigua and Barbuda',
  30. dialCode: '1268',
  31. code: 'ag' },
  32. { name: 'Argentina',
  33. dialCode: '54',
  34. code: 'ar' },
  35. { name: 'Armenia',
  36. dialCode: '374',
  37. code: 'am' },
  38. { name: 'Aruba',
  39. dialCode: '297',
  40. code: 'aw' },
  41. { name: 'Australia',
  42. dialCode: '61',
  43. code: 'au' },
  44. { name: 'Austria',
  45. dialCode: '43',
  46. code: 'at' },
  47. { name: 'Azerbaijan',
  48. dialCode: '994',
  49. code: 'az' },
  50. { name: 'Bahamas',
  51. dialCode: '1242',
  52. code: 'bs' },
  53. { name: 'Bahrain',
  54. dialCode: '973',
  55. code: 'bh' },
  56. { name: 'Bangladesh',
  57. dialCode: '880',
  58. code: 'bd' },
  59. { name: 'Barbados',
  60. dialCode: '1246',
  61. code: 'bb' },
  62. { name: 'Belarus',
  63. dialCode: '375',
  64. code: 'by' },
  65. { name: 'Belgium',
  66. dialCode: '32',
  67. code: 'be' },
  68. { name: 'Belize',
  69. dialCode: '501',
  70. code: 'bz' },
  71. { name: 'Benin',
  72. dialCode: '229',
  73. code: 'bj' },
  74. { name: 'Bermuda',
  75. dialCode: '1441',
  76. code: 'bm' },
  77. { name: 'Bhutan',
  78. dialCode: '975',
  79. code: 'bt' },
  80. { name: 'Bolivia, Plurinational State of',
  81. dialCode: '591',
  82. code: 'bo' },
  83. { name: 'Bosnia and Herzegovina',
  84. dialCode: '387',
  85. code: 'ba' },
  86. { name: 'Botswana',
  87. dialCode: '267',
  88. code: 'bw' },
  89. { name: 'Brazil',
  90. dialCode: '55',
  91. code: 'br' },
  92. { name: 'British Indian Ocean Territory',
  93. dialCode: '246',
  94. code: 'io' },
  95. { name: 'Brunei Darussalam',
  96. dialCode: '673',
  97. code: 'bn' },
  98. { name: 'Bulgaria',
  99. dialCode: '359',
  100. code: 'bg' },
  101. { name: 'Burkina Faso',
  102. dialCode: '226',
  103. code: 'bf' },
  104. { name: 'Burundi',
  105. dialCode: '257',
  106. code: 'bi' },
  107. { name: 'Cambodia',
  108. dialCode: '855',
  109. code: 'kh' },
  110. { name: 'Cameroon',
  111. dialCode: '237',
  112. code: 'cm' },
  113. { name: 'Canada',
  114. dialCode: '1',
  115. code: 'ca' },
  116. { name: 'Cape Verde',
  117. dialCode: '238',
  118. code: 'cv' },
  119. { name: 'Cayman Islands',
  120. dialCode: ' 345',
  121. code: 'ky' },
  122. { name: 'Central African Republic',
  123. dialCode: '236',
  124. code: 'cf' },
  125. { name: 'Chad',
  126. dialCode: '235',
  127. code: 'td' },
  128. { name: 'Chile',
  129. dialCode: '56',
  130. code: 'cl' },
  131. { name: 'China',
  132. dialCode: '86',
  133. code: 'cn' },
  134. { name: 'Christmas Island',
  135. dialCode: '61',
  136. code: 'cx' },
  137. { name: 'Cocos (Keeling) Islands',
  138. dialCode: '61',
  139. code: 'cc' },
  140. { name: 'Colombia',
  141. dialCode: '57',
  142. code: 'co' },
  143. { name: 'Comoros',
  144. dialCode: '269',
  145. code: 'km' },
  146. { name: 'Congo',
  147. dialCode: '242',
  148. code: 'cg' },
  149. {
  150. name: 'Congo, The Democratic Republic of the Congo',
  151. dialCode: '243',
  152. code: 'cd'
  153. },
  154. { name: 'Cook Islands',
  155. dialCode: '682',
  156. code: 'ck' },
  157. { name: 'Costa Rica',
  158. dialCode: '506',
  159. code: 'cr' },
  160. { name: 'Cote d\'Ivoire',
  161. dialCode: '225',
  162. code: 'ci' },
  163. { name: 'Croatia',
  164. dialCode: '385',
  165. code: 'hr' },
  166. { name: 'Cuba',
  167. dialCode: '53',
  168. code: 'cu' },
  169. { name: 'Cyprus',
  170. dialCode: '357',
  171. code: 'cy' },
  172. { name: 'Czech Republic',
  173. dialCode: '420',
  174. code: 'cz' },
  175. { name: 'Denmark',
  176. dialCode: '45',
  177. code: 'dk' },
  178. { name: 'Djibouti',
  179. dialCode: '253',
  180. code: 'dj' },
  181. { name: 'Dominica',
  182. dialCode: '1767',
  183. code: 'dm' },
  184. { name: 'Dominican Republic',
  185. dialCode: '1849',
  186. code: 'do' },
  187. { name: 'Ecuador',
  188. dialCode: '593',
  189. code: 'ec' },
  190. { name: 'Egypt',
  191. dialCode: '20',
  192. code: 'eg' },
  193. { name: 'El Salvador',
  194. dialCode: '503',
  195. code: 'sv' },
  196. { name: 'Equatorial Guinea',
  197. dialCode: '240',
  198. code: 'gq' },
  199. { name: 'Eritrea',
  200. dialCode: '291',
  201. code: 'er' },
  202. { name: 'Estonia',
  203. dialCode: '372',
  204. code: 'ee' },
  205. { name: 'Ethiopia',
  206. dialCode: '251',
  207. code: 'et' },
  208. { name: 'Falkland Islands (Malvinas)',
  209. dialCode: '500',
  210. code: 'fk' },
  211. { name: 'Faroe Islands',
  212. dialCode: '298',
  213. code: 'fo' },
  214. { name: 'Fiji',
  215. dialCode: '679',
  216. code: 'fj' },
  217. { name: 'Finland',
  218. dialCode: '358',
  219. code: 'fi' },
  220. { name: 'France',
  221. dialCode: '33',
  222. code: 'fr' },
  223. { name: 'French Guiana',
  224. dialCode: '594',
  225. code: 'gf' },
  226. { name: 'French Polynesia',
  227. dialCode: '689',
  228. code: 'pf' },
  229. { name: 'Gabon',
  230. dialCode: '241',
  231. code: 'ga' },
  232. { name: 'Gambia',
  233. dialCode: '220',
  234. code: 'gm' },
  235. { name: 'Georgia',
  236. dialCode: '995',
  237. code: 'ge' },
  238. { name: 'Germany',
  239. dialCode: '49',
  240. code: 'de' },
  241. { name: 'Ghana',
  242. dialCode: '233',
  243. code: 'gh' },
  244. { name: 'Gibraltar',
  245. dialCode: '350',
  246. code: 'gi' },
  247. { name: 'Greece',
  248. dialCode: '30',
  249. code: 'gr' },
  250. { name: 'Greenland',
  251. dialCode: '299',
  252. code: 'gl' },
  253. { name: 'Grenada',
  254. dialCode: '1473',
  255. code: 'gd' },
  256. { name: 'Guadeloupe',
  257. dialCode: '590',
  258. code: 'gp' },
  259. { name: 'Guam',
  260. dialCode: '1671',
  261. code: 'gu' },
  262. { name: 'Guatemala',
  263. dialCode: '502',
  264. code: 'gt' },
  265. { name: 'Guernsey',
  266. dialCode: '44',
  267. code: 'gg' },
  268. { name: 'Guinea',
  269. dialCode: '224',
  270. code: 'gn' },
  271. { name: 'Guinea-Bissau',
  272. dialCode: '245',
  273. code: 'gw' },
  274. { name: 'Guyana',
  275. dialCode: '595',
  276. code: 'gy' },
  277. { name: 'Haiti',
  278. dialCode: '509',
  279. code: 'ht' },
  280. { name: 'Holy See (Vatican City State)',
  281. dialCode: '379',
  282. code: 'va' },
  283. { name: 'Honduras',
  284. dialCode: '504',
  285. code: 'hn' },
  286. { name: 'Hong Kong',
  287. dialCode: '852',
  288. code: 'hk' },
  289. { name: 'Hungary',
  290. dialCode: '36',
  291. code: 'hu' },
  292. { name: 'Iceland',
  293. dialCode: '354',
  294. code: 'is' },
  295. { name: 'India',
  296. dialCode: '91',
  297. code: 'in' },
  298. { name: 'Indonesia',
  299. dialCode: '62',
  300. code: 'id' },
  301. {
  302. name: 'Iran, Islamic Republic of Persian Gulf',
  303. dialCode: '98',
  304. code: 'ir'
  305. },
  306. { name: 'Iraq',
  307. dialCode: '964',
  308. code: 'iq' },
  309. { name: 'Ireland',
  310. dialCode: '353',
  311. code: 'ie' },
  312. { name: 'Isle of Man',
  313. dialCode: '44',
  314. code: 'im' },
  315. { name: 'Israel',
  316. dialCode: '972',
  317. code: 'il' },
  318. { name: 'Italy',
  319. dialCode: '39',
  320. code: 'it' },
  321. { name: 'Jamaica',
  322. dialCode: '1876',
  323. code: 'jm' },
  324. { name: 'Japan',
  325. dialCode: '81',
  326. code: 'jp' },
  327. { name: 'Jersey',
  328. dialCode: '44',
  329. code: 'je' },
  330. { name: 'Jordan',
  331. dialCode: '962',
  332. code: 'jo' },
  333. { name: 'Kazakhstan',
  334. dialCode: '77',
  335. code: 'kz' },
  336. { name: 'Kenya',
  337. dialCode: '254',
  338. code: 'ke' },
  339. { name: 'Kiribati',
  340. dialCode: '686',
  341. code: 'ki' },
  342. {
  343. name: 'Korea, Democratic People\'s Republic of Korea',
  344. dialCode: '850',
  345. code: 'kp'
  346. },
  347. { name: 'Korea, Republic of South Korea',
  348. dialCode: '82',
  349. code: 'kr' },
  350. { name: 'Kuwait',
  351. dialCode: '965',
  352. code: 'kw' },
  353. { name: 'Kyrgyzstan',
  354. dialCode: '996',
  355. code: 'kg' },
  356. { name: 'Laos',
  357. dialCode: '856',
  358. code: 'la' },
  359. { name: 'Latvia',
  360. dialCode: '371',
  361. code: 'lv' },
  362. { name: 'Lebanon',
  363. dialCode: '961',
  364. code: 'lb' },
  365. { name: 'Lesotho',
  366. dialCode: '266',
  367. code: 'ls' },
  368. { name: 'Liberia',
  369. dialCode: '231',
  370. code: 'lr' },
  371. { name: 'Libyan Arab Jamahiriya',
  372. dialCode: '218',
  373. code: 'ly' },
  374. { name: 'Liechtenstein',
  375. dialCode: '423',
  376. code: 'li' },
  377. { name: 'Lithuania',
  378. dialCode: '370',
  379. code: 'lt' },
  380. { name: 'Luxembourg',
  381. dialCode: '352',
  382. code: 'lu' },
  383. { name: 'Macao',
  384. dialCode: '853',
  385. code: 'mo' },
  386. { name: 'Macedonia',
  387. dialCode: '389',
  388. code: 'mk' },
  389. { name: 'Madagascar',
  390. dialCode: '261',
  391. code: 'mg' },
  392. { name: 'Malawi',
  393. dialCode: '265',
  394. code: 'mw' },
  395. { name: 'Malaysia',
  396. dialCode: '60',
  397. code: 'my' },
  398. { name: 'Maldives',
  399. dialCode: '960',
  400. code: 'mv' },
  401. { name: 'Mali',
  402. dialCode: '223',
  403. code: 'ml' },
  404. { name: 'Malta',
  405. dialCode: '356',
  406. code: 'mt' },
  407. { name: 'Marshall Islands',
  408. dialCode: '692',
  409. code: 'mh' },
  410. { name: 'Martinique',
  411. dialCode: '596',
  412. code: 'mq' },
  413. { name: 'Mauritania',
  414. dialCode: '222',
  415. code: 'mr' },
  416. { name: 'Mauritius',
  417. dialCode: '230',
  418. code: 'mu' },
  419. { name: 'Mayotte',
  420. dialCode: '262',
  421. code: 'yt' },
  422. { name: 'Mexico',
  423. dialCode: '52',
  424. code: 'mx' },
  425. {
  426. name: 'Micronesia, Federated States of Micronesia',
  427. dialCode: '691',
  428. code: 'fm'
  429. },
  430. { name: 'Moldova',
  431. dialCode: '373',
  432. code: 'md' },
  433. { name: 'Monaco',
  434. dialCode: '377',
  435. code: 'mc' },
  436. { name: 'Mongolia',
  437. dialCode: '976',
  438. code: 'mn' },
  439. { name: 'Montenegro',
  440. dialCode: '382',
  441. code: 'me' },
  442. { name: 'Montserrat',
  443. dialCode: '1664',
  444. code: 'ms' },
  445. { name: 'Morocco',
  446. dialCode: '212',
  447. code: 'ma' },
  448. { name: 'Mozambique',
  449. dialCode: '258',
  450. code: 'mz' },
  451. { name: 'Myanmar',
  452. dialCode: '95',
  453. code: 'mm' },
  454. { name: 'Namibia',
  455. dialCode: '264',
  456. code: 'na' },
  457. { name: 'Nauru',
  458. dialCode: '674',
  459. code: 'nr' },
  460. { name: 'Nepal',
  461. dialCode: '977',
  462. code: 'np' },
  463. { name: 'Netherlands',
  464. dialCode: '31',
  465. code: 'nl' },
  466. { name: 'Netherlands Antilles',
  467. dialCode: '599',
  468. code: 'an' },
  469. { name: 'New Caledonia',
  470. dialCode: '687',
  471. code: 'nc' },
  472. { name: 'New Zealand',
  473. dialCode: '64',
  474. code: 'nz' },
  475. { name: 'Nicaragua',
  476. dialCode: '505',
  477. code: 'ni' },
  478. { name: 'Niger',
  479. dialCode: '227',
  480. code: 'ne' },
  481. { name: 'Nigeria',
  482. dialCode: '234',
  483. code: 'ng' },
  484. { name: 'Niue',
  485. dialCode: '683',
  486. code: 'nu' },
  487. { name: 'Norfolk Island',
  488. dialCode: '672',
  489. code: 'nf' },
  490. { name: 'Northern Mariana Islands',
  491. dialCode: '1670',
  492. code: 'mp' },
  493. { name: 'Norway',
  494. dialCode: '47',
  495. code: 'no' },
  496. { name: 'Oman',
  497. dialCode: '968',
  498. code: 'om' },
  499. { name: 'Pakistan',
  500. dialCode: '92',
  501. code: 'pk' },
  502. { name: 'Palau',
  503. dialCode: '680',
  504. code: 'pw' },
  505. { name: 'Palestinian Territory, Occupied',
  506. dialCode: '970',
  507. code: 'ps' },
  508. { name: 'Panama',
  509. dialCode: '507',
  510. code: 'pa' },
  511. { name: 'Papua New Guinea',
  512. dialCode: '675',
  513. code: 'pg' },
  514. { name: 'Paraguay',
  515. dialCode: '595',
  516. code: 'py' },
  517. { name: 'Peru',
  518. dialCode: '51',
  519. code: 'pe' },
  520. { name: 'Philippines',
  521. dialCode: '63',
  522. code: 'ph' },
  523. { name: 'Pitcairn',
  524. dialCode: '872',
  525. code: 'pn' },
  526. { name: 'Poland',
  527. dialCode: '48',
  528. code: 'pl' },
  529. { name: 'Portugal',
  530. dialCode: '351',
  531. code: 'pt' },
  532. { name: 'Puerto Rico',
  533. dialCode: '1939',
  534. code: 'pr' },
  535. { name: 'Qatar',
  536. dialCode: '974',
  537. code: 'qa' },
  538. { name: 'Romania',
  539. dialCode: '40',
  540. code: 'ro' },
  541. { name: 'Russia',
  542. dialCode: '7',
  543. code: 'ru' },
  544. { name: 'Rwanda',
  545. dialCode: '250',
  546. code: 'rw' },
  547. { name: 'Reunion',
  548. dialCode: '262',
  549. code: 're' },
  550. { name: 'Saint Barthelemy',
  551. dialCode: '590',
  552. code: 'bl' },
  553. {
  554. name: 'Saint Helena, Ascension and Tristan Da Cunha',
  555. dialCode: '290',
  556. code: 'sh'
  557. },
  558. { name: 'Saint Kitts and Nevis',
  559. dialCode: '1869',
  560. code: 'kn' },
  561. { name: 'Saint Lucia',
  562. dialCode: '1758',
  563. code: 'lc' },
  564. { name: 'Saint Martin',
  565. dialCode: '590',
  566. code: 'mf' },
  567. { name: 'Saint Pierre and Miquelon',
  568. dialCode: '508',
  569. code: 'pm' },
  570. { name: 'Saint Vincent and the Grenadines',
  571. dialCode: '1784',
  572. code: 'vc' },
  573. { name: 'Samoa',
  574. dialCode: '685',
  575. code: 'ws' },
  576. { name: 'San Marino',
  577. dialCode: '378',
  578. code: 'sm' },
  579. { name: 'Sao Tome and Principe',
  580. dialCode: '239',
  581. code: 'st' },
  582. { name: 'Saudi Arabia',
  583. dialCode: '966',
  584. code: 'sa' },
  585. { name: 'Senegal',
  586. dialCode: '221',
  587. code: 'sn' },
  588. { name: 'Serbia',
  589. dialCode: '381',
  590. code: 'rs' },
  591. { name: 'Seychelles',
  592. dialCode: '248',
  593. code: 'sc' },
  594. { name: 'Sierra Leone',
  595. dialCode: '232',
  596. code: 'sl' },
  597. { name: 'Singapore',
  598. dialCode: '65',
  599. code: 'sg' },
  600. { name: 'Slovakia',
  601. dialCode: '421',
  602. code: 'sk' },
  603. { name: 'Slovenia',
  604. dialCode: '386',
  605. code: 'si' },
  606. { name: 'Solomon Islands',
  607. dialCode: '677',
  608. code: 'sb' },
  609. { name: 'Somalia',
  610. dialCode: '252',
  611. code: 'so' },
  612. { name: 'South Africa',
  613. dialCode: '27',
  614. code: 'za' },
  615. { name: 'South Sudan',
  616. dialCode: '211',
  617. code: 'ss' },
  618. {
  619. name: 'South Georgia and the South Sandwich Islands',
  620. dialCode: '500',
  621. code: 'gs'
  622. },
  623. { name: 'Spain',
  624. dialCode: '34',
  625. code: 'es' },
  626. { name: 'Sri Lanka',
  627. dialCode: '94',
  628. code: 'lk' },
  629. { name: 'Sudan',
  630. dialCode: '249',
  631. code: 'sd' },
  632. { name: 'Suriname',
  633. dialCode: '597',
  634. code: 'sr' },
  635. { name: 'Svalbard and Jan Mayen',
  636. dialCode: '47',
  637. code: 'sj' },
  638. { name: 'Swaziland',
  639. dialCode: '268',
  640. code: 'sz' },
  641. { name: 'Sweden',
  642. dialCode: '46',
  643. code: 'se' },
  644. { name: 'Switzerland',
  645. dialCode: '41',
  646. code: 'ch' },
  647. { name: 'Syrian Arab Republic',
  648. dialCode: '963',
  649. code: 'sy' },
  650. { name: 'Taiwan',
  651. dialCode: '886',
  652. code: 'tw' },
  653. { name: 'Tajikistan',
  654. dialCode: '992',
  655. code: 'tj' },
  656. {
  657. name: 'Tanzania, United Republic of Tanzania',
  658. dialCode: '255',
  659. code: 'tz'
  660. },
  661. { name: 'Thailand',
  662. dialCode: '66',
  663. code: 'th' },
  664. { name: 'Timor-Leste',
  665. dialCode: '670',
  666. code: 'tl' },
  667. { name: 'Togo',
  668. dialCode: '228',
  669. code: 'tg' },
  670. { name: 'Tokelau',
  671. dialCode: '690',
  672. code: 'tk' },
  673. { name: 'Tonga',
  674. dialCode: '676',
  675. code: 'to' },
  676. { name: 'Trinidad and Tobago',
  677. dialCode: '1868',
  678. code: 'tt' },
  679. { name: 'Tunisia',
  680. dialCode: '216',
  681. code: 'tn' },
  682. { name: 'Turkey',
  683. dialCode: '90',
  684. code: 'tr' },
  685. { name: 'Turkmenistan',
  686. dialCode: '993',
  687. code: 'tm' },
  688. { name: 'Turks and Caicos Islands',
  689. dialCode: '1649',
  690. code: 'tc' },
  691. { name: 'Tuvalu',
  692. dialCode: '688',
  693. code: 'tv' },
  694. { name: 'Uganda',
  695. dialCode: '256',
  696. code: 'ug' },
  697. { name: 'Ukraine',
  698. dialCode: '380',
  699. code: 'ua' },
  700. { name: 'United Arab Emirates',
  701. dialCode: '971',
  702. code: 'ae' },
  703. { name: 'United Kingdom',
  704. dialCode: '44',
  705. code: 'gb' },
  706. { name: 'United States',
  707. dialCode: '1',
  708. code: 'us' },
  709. { name: 'Uruguay',
  710. dialCode: '598',
  711. code: 'uy' },
  712. { name: 'Uzbekistan',
  713. dialCode: '998',
  714. code: 'uz' },
  715. { name: 'Vanuatu',
  716. dialCode: '678',
  717. code: 'vu' },
  718. {
  719. name: 'Venezuela, Bolivarian Republic of Venezuela',
  720. dialCode: '58',
  721. code: 've'
  722. },
  723. { name: 'Vietnam',
  724. dialCode: '84',
  725. code: 'vn' },
  726. { name: 'Virgin Islands, British',
  727. dialCode: '1284',
  728. code: 'vg' },
  729. { name: 'Virgin Islands, U.S.',
  730. dialCode: '1340',
  731. code: 'vi' },
  732. { name: 'Wallis and Futuna',
  733. dialCode: '681',
  734. code: 'wf' },
  735. { name: 'Yemen',
  736. dialCode: '967',
  737. code: 'ye' },
  738. { name: 'Zambia',
  739. dialCode: '260',
  740. code: 'zm' },
  741. { name: 'Zimbabwe',
  742. dialCode: '263',
  743. code: 'zw' }
  744. ];
  745. const countriesByCodeMap = countries.reduce<any>((result, country) => {
  746. result[country.dialCode] = country;
  747. return result;
  748. }, {});
  749. /**
  750. * Map between country dial codes and country objects.
  751. *
  752. */
  753. const codesByNumbersMap = countries.reduce<any>((result, country) => {
  754. result[country.dialCode] = country.code;
  755. return result;
  756. }, {});
  757. /**
  758. * Returns the corresponding country code from a phone number.
  759. *
  760. * @param {string} phoneNumber - The phone number.
  761. * @returns {string}
  762. */
  763. export function getCountryCodeFromPhone(phoneNumber: string): string {
  764. const number = phoneNumber.replace(/[+.\s]/g, '');
  765. for (let i = 4; i > 0; i--) {
  766. const prefix = number.slice(0, i);
  767. if (codesByNumbersMap[prefix]) {
  768. return codesByNumbersMap[prefix];
  769. }
  770. }
  771. return '';
  772. }
  773. /**
  774. * Returns the corresponding country for a text starting with the dial code.
  775. *
  776. * @param {string} text - The text containing the dial code.
  777. * @returns {Object}
  778. */
  779. export function getCountryFromDialCodeText(text: string) {
  780. return (
  781. countriesByCodeMap[text.slice(0, 4)]
  782. || countriesByCodeMap[text.slice(0, 3)]
  783. || countriesByCodeMap[text.slice(0, 2)]
  784. || countriesByCodeMap[text.slice(0, 1)]
  785. || null
  786. );
  787. }
  788. /**
  789. * Returns whether the display name is present.
  790. *
  791. * @param {string} value - The display name.
  792. * @returns {boolean}
  793. */
  794. export const hasDisplayName = (value: string): boolean => Boolean(value) && value.trim() !== '';