您最多选择25个主题 主题必须以字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符

utils.js 19KB

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