use-phone-input 1.0.1 → 1.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (54) hide show
  1. package/README.md +5 -15
  2. package/_chunks/cjs/{chunk-6QTKG4JQ.cjs → chunk-BNJXO6Y2.cjs} +12 -12
  3. package/_chunks/cjs/{chunk-Z3L4BW7E.cjs → chunk-HVPFB36H.cjs} +1 -1
  4. package/_chunks/cjs/chunk-HVPFB36H.cjs.map +1 -0
  5. package/_chunks/cjs/chunk-QQ4PXBPF.cjs +56 -0
  6. package/_chunks/cjs/chunk-QQ4PXBPF.cjs.map +1 -0
  7. package/_chunks/cjs/{chunk-TTYRYB7E.cjs → chunk-TMM3RFL7.cjs} +29 -29
  8. package/_chunks/cjs/{chunk-XMDSXXFO.cjs → chunk-TOZDRR2U.cjs} +2 -2
  9. package/_chunks/cjs/chunk-TOZDRR2U.cjs.map +1 -0
  10. package/_chunks/cjs/{chunk-V55O3DL5.cjs → chunk-Y6MM2SKH.cjs} +19 -29
  11. package/_chunks/cjs/chunk-Y6MM2SKH.cjs.map +1 -0
  12. package/_chunks/js/chunk-3SMH36OE.js +50 -0
  13. package/_chunks/js/chunk-3SMH36OE.js.map +1 -0
  14. package/_chunks/js/{chunk-LWRQEKTA.js → chunk-6O5MTMYZ.js} +1 -1
  15. package/_chunks/js/chunk-6O5MTMYZ.js.map +1 -0
  16. package/_chunks/js/{chunk-DCLYRG4P.js → chunk-A3SI5C2I.js} +2 -2
  17. package/_chunks/js/chunk-A3SI5C2I.js.map +1 -0
  18. package/_chunks/js/{chunk-SCT4B6F4.js → chunk-FVBNNAAU.js} +28 -28
  19. package/_chunks/js/{chunk-BPZLAFFZ.js → chunk-JBOKNAYN.js} +12 -12
  20. package/_chunks/js/{chunk-F6SB65OL.js → chunk-MV2NXZRX.js} +19 -29
  21. package/_chunks/js/chunk-MV2NXZRX.js.map +1 -0
  22. package/createPhoneNumberUtils/index.cjs +2 -2
  23. package/createPhoneNumberUtils/index.js +1 -1
  24. package/index.cjs +15 -15
  25. package/index.js +6 -6
  26. package/isPhoneNumberValid/index.cjs +2 -2
  27. package/isPhoneNumberValid/index.d.ts +1 -1
  28. package/isPhoneNumberValid/index.js +1 -1
  29. package/isPhoneNumberValidAsync/index.cjs +2 -2
  30. package/isPhoneNumberValidAsync/index.d.ts +1 -1
  31. package/isPhoneNumberValidAsync/index.js +1 -1
  32. package/package.json +1 -1
  33. package/phoneNumberUtils/index.cjs +2 -2
  34. package/phoneNumberUtils/index.js +1 -1
  35. package/phoneNumberValidationPatterns/index.cjs +2 -2
  36. package/phoneNumberValidationPatterns/index.js +1 -1
  37. package/types/index.d.ts +2 -1
  38. package/useInternationalPhoneInput/index.cjs +2 -2
  39. package/useInternationalPhoneInput/index.d.ts +3 -1
  40. package/useInternationalPhoneInput/index.js +1 -1
  41. package/_chunks/cjs/chunk-DVKYP35T.cjs +0 -36
  42. package/_chunks/cjs/chunk-DVKYP35T.cjs.map +0 -1
  43. package/_chunks/cjs/chunk-V55O3DL5.cjs.map +0 -1
  44. package/_chunks/cjs/chunk-XMDSXXFO.cjs.map +0 -1
  45. package/_chunks/cjs/chunk-Z3L4BW7E.cjs.map +0 -1
  46. package/_chunks/js/chunk-DCLYRG4P.js.map +0 -1
  47. package/_chunks/js/chunk-F6SB65OL.js.map +0 -1
  48. package/_chunks/js/chunk-H4P2ITTL.js +0 -30
  49. package/_chunks/js/chunk-H4P2ITTL.js.map +0 -1
  50. package/_chunks/js/chunk-LWRQEKTA.js.map +0 -1
  51. /package/_chunks/cjs/{chunk-6QTKG4JQ.cjs.map → chunk-BNJXO6Y2.cjs.map} +0 -0
  52. /package/_chunks/cjs/{chunk-TTYRYB7E.cjs.map → chunk-TMM3RFL7.cjs.map} +0 -0
  53. /package/_chunks/js/{chunk-SCT4B6F4.js.map → chunk-FVBNNAAU.js.map} +0 -0
  54. /package/_chunks/js/{chunk-BPZLAFFZ.js.map → chunk-JBOKNAYN.js.map} +0 -0
package/README.md CHANGED
@@ -30,7 +30,6 @@ pnpm add use-phone-input
30
30
 
31
31
  - [useInternationalPhoneInput](#useinternationalphoneinput)
32
32
  - [createPhoneNumberUtils](#createphonenumberutils)
33
- - [phoneNumberUtils](#phonenumberutils)
34
33
  - [isPhoneNumberValid](#isphonenumbervalid)
35
34
  - [isPhoneNumberValidAsync](#isphonenumbervalidasync)
36
35
 
@@ -90,6 +89,7 @@ const PhoneInput = () => {
90
89
  setCountry(e.target.value);
91
90
  }}
92
91
  >
92
+ <option value=''>-</option>
93
93
  {phoneNumberUtils.iso2List.map((iso2) => (
94
94
  <option key={iso2} value={iso2}>
95
95
  {iso2}
@@ -106,11 +106,11 @@ const PhoneInput = () => {
106
106
 
107
107
  ### createPhoneNumberUtils
108
108
 
109
- Generate utils for specific list of countries, use it if you need to handle specific countries numbers, otherwise just use [phoneNumberUtils](#phonenumberutils)
109
+ Generate utils for specific list of countries, use it if you need to handle specific countries phone numbers, otherwise just use `phoneNumberUtils`, like in the example above
110
110
 
111
111
  ```ts
112
112
  type PhoneNumberUtils = {
113
- toPhoneNumber(value: string): PhoneNumber;
113
+ toPhoneNumber(value: string, estimatedIso2?: ISO2): PhoneNumber;
114
114
  getCountryCode<T extends string>(
115
115
  iso2: T
116
116
  ): T extends ISO2 ? string : undefined;
@@ -137,19 +137,9 @@ const phoneNumberUtils = createPhoneNumberUtils([CA, US]);
137
137
 
138
138
  ---
139
139
 
140
- ### phoneNumberUtils
141
-
142
- Utils for all countries
143
-
144
- ```ts
145
- const phoneNumberUtils: PhoneNumberUtils;
146
- ```
147
-
148
- ---
149
-
150
140
  ### isPhoneNumberValid
151
141
 
152
- Check if a given international phone number is valid based on provided phoneValidationPatterns validation patterns
142
+ Checks if the given international phone number is valid based on the provided phone verification patterns
153
143
 
154
144
  ```ts
155
145
  const isPhoneNumberValid: (
@@ -177,7 +167,7 @@ isPhoneNumberValid({ CA, US }, value);
177
167
 
178
168
  ### isPhoneNumberValidAsync
179
169
 
180
- Check if a given international phone number is valid.
170
+ Checks if a given international phone number is valid
181
171
 
182
172
  > This method uses [dynamic import](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/import) under the hood, use only if your builder supports it
183
173
 
@@ -2,40 +2,40 @@
2
2
 
3
3
  var chunkOVCFPFUF_cjs = require('./chunk-OVCFPFUF.cjs');
4
4
  var chunkCBBYCVXL_cjs = require('./chunk-CBBYCVXL.cjs');
5
- var chunkMB4DLJXJ_cjs = require('./chunk-MB4DLJXJ.cjs');
6
5
  var chunkMTSLQBSM_cjs = require('./chunk-MTSLQBSM.cjs');
6
+ var chunkMB4DLJXJ_cjs = require('./chunk-MB4DLJXJ.cjs');
7
7
  var chunkLCQWIQ3J_cjs = require('./chunk-LCQWIQ3J.cjs');
8
8
  var chunk6W4VJOEN_cjs = require('./chunk-6W4VJOEN.cjs');
9
9
  var chunkTU5CEQRK_cjs = require('./chunk-TU5CEQRK.cjs');
10
10
  var chunkTATWBDPL_cjs = require('./chunk-TATWBDPL.cjs');
11
11
  var chunk5PLT62KZ_cjs = require('./chunk-5PLT62KZ.cjs');
12
12
  var chunkHUREGWZX_cjs = require('./chunk-HUREGWZX.cjs');
13
- var chunkEXKHPMOP_cjs = require('./chunk-EXKHPMOP.cjs');
14
13
  var chunkWAAEVS7Y_cjs = require('./chunk-WAAEVS7Y.cjs');
14
+ var chunkEXKHPMOP_cjs = require('./chunk-EXKHPMOP.cjs');
15
15
  var chunkCMBS4ALQ_cjs = require('./chunk-CMBS4ALQ.cjs');
16
16
  var chunkJ7DEQTR7_cjs = require('./chunk-J7DEQTR7.cjs');
17
17
  var chunkDDGPEWZZ_cjs = require('./chunk-DDGPEWZZ.cjs');
18
18
  var chunkHCLR2ZL7_cjs = require('./chunk-HCLR2ZL7.cjs');
19
19
  var chunkFRUF7AII_cjs = require('./chunk-FRUF7AII.cjs');
20
20
  var chunkQAKR6VSY_cjs = require('./chunk-QAKR6VSY.cjs');
21
+ var chunk5XWAKIMO_cjs = require('./chunk-5XWAKIMO.cjs');
21
22
  var chunkJT3EHOOK_cjs = require('./chunk-JT3EHOOK.cjs');
22
23
  var chunkND44INTB_cjs = require('./chunk-ND44INTB.cjs');
23
- var chunk5XWAKIMO_cjs = require('./chunk-5XWAKIMO.cjs');
24
24
  var chunkC2S5TJSC_cjs = require('./chunk-C2S5TJSC.cjs');
25
25
  var chunkXLKHNNBU_cjs = require('./chunk-XLKHNNBU.cjs');
26
26
  var chunkOTREMAGY_cjs = require('./chunk-OTREMAGY.cjs');
27
27
  var chunkLW6Y4JLR_cjs = require('./chunk-LW6Y4JLR.cjs');
28
28
  var chunkQRVGX2UF_cjs = require('./chunk-QRVGX2UF.cjs');
29
29
  var chunkZMREQEMC_cjs = require('./chunk-ZMREQEMC.cjs');
30
- var chunk4GT6WLAE_cjs = require('./chunk-4GT6WLAE.cjs');
31
30
  var chunkQCXWT6RR_cjs = require('./chunk-QCXWT6RR.cjs');
32
- var chunkZLTWZTMJ_cjs = require('./chunk-ZLTWZTMJ.cjs');
31
+ var chunk4GT6WLAE_cjs = require('./chunk-4GT6WLAE.cjs');
32
+ var chunk22SI5NON_cjs = require('./chunk-22SI5NON.cjs');
33
33
  var chunkQVPNUFOW_cjs = require('./chunk-QVPNUFOW.cjs');
34
34
  var chunkU56BZG3J_cjs = require('./chunk-U56BZG3J.cjs');
35
- var chunkQRLLHRD3_cjs = require('./chunk-QRLLHRD3.cjs');
36
35
  var chunkDV7YY3VE_cjs = require('./chunk-DV7YY3VE.cjs');
37
- var chunkEHV7RTFN_cjs = require('./chunk-EHV7RTFN.cjs');
36
+ var chunkQRLLHRD3_cjs = require('./chunk-QRLLHRD3.cjs');
38
37
  var chunkEEXZXI54_cjs = require('./chunk-EEXZXI54.cjs');
38
+ var chunkEHV7RTFN_cjs = require('./chunk-EHV7RTFN.cjs');
39
39
  var chunkMYI5BVEI_cjs = require('./chunk-MYI5BVEI.cjs');
40
40
  var chunkE6M5K4LG_cjs = require('./chunk-E6M5K4LG.cjs');
41
41
  var chunkG4UAX5K5_cjs = require('./chunk-G4UAX5K5.cjs');
@@ -44,11 +44,11 @@ var chunkS2C34WII_cjs = require('./chunk-S2C34WII.cjs');
44
44
  var chunkJEKVC32K_cjs = require('./chunk-JEKVC32K.cjs');
45
45
  var chunkGWV7K2RN_cjs = require('./chunk-GWV7K2RN.cjs');
46
46
  var chunk5INTZVO2_cjs = require('./chunk-5INTZVO2.cjs');
47
- var chunk22SI5NON_cjs = require('./chunk-22SI5NON.cjs');
47
+ var chunkZLTWZTMJ_cjs = require('./chunk-ZLTWZTMJ.cjs');
48
48
  var chunkEUOGKSQO_cjs = require('./chunk-EUOGKSQO.cjs');
49
49
  var chunkLUJK4AZQ_cjs = require('./chunk-LUJK4AZQ.cjs');
50
- var chunk2KX2E5U3_cjs = require('./chunk-2KX2E5U3.cjs');
51
50
  var chunk4ZAQJY7Q_cjs = require('./chunk-4ZAQJY7Q.cjs');
51
+ var chunk2KX2E5U3_cjs = require('./chunk-2KX2E5U3.cjs');
52
52
  var chunkMW3IXQFV_cjs = require('./chunk-MW3IXQFV.cjs');
53
53
  var chunkEJY6WMPF_cjs = require('./chunk-EJY6WMPF.cjs');
54
54
  var chunkUGRDMMYY_cjs = require('./chunk-UGRDMMYY.cjs');
@@ -109,8 +109,8 @@ var chunkFCDSGNES_cjs = require('./chunk-FCDSGNES.cjs');
109
109
  var chunkN2ICDU5W_cjs = require('./chunk-N2ICDU5W.cjs');
110
110
  var chunkNH43PRKC_cjs = require('./chunk-NH43PRKC.cjs');
111
111
  var chunkADULHX3N_cjs = require('./chunk-ADULHX3N.cjs');
112
- var chunk326T7P2B_cjs = require('./chunk-326T7P2B.cjs');
113
112
  var chunk32QWLFAH_cjs = require('./chunk-32QWLFAH.cjs');
113
+ var chunk326T7P2B_cjs = require('./chunk-326T7P2B.cjs');
114
114
  var chunkWTTFGRCC_cjs = require('./chunk-WTTFGRCC.cjs');
115
115
  var chunkPWEYXSG2_cjs = require('./chunk-PWEYXSG2.cjs');
116
116
  var chunkYP3NRNMG_cjs = require('./chunk-YP3NRNMG.cjs');
@@ -203,8 +203,8 @@ var chunkXHEN7PWN_cjs = require('./chunk-XHEN7PWN.cjs');
203
203
  var chunkSF5CR2P6_cjs = require('./chunk-SF5CR2P6.cjs');
204
204
  var chunkZRRFF3BP_cjs = require('./chunk-ZRRFF3BP.cjs');
205
205
  var chunkC72AJ3QI_cjs = require('./chunk-C72AJ3QI.cjs');
206
- var chunk23ANI6VC_cjs = require('./chunk-23ANI6VC.cjs');
207
206
  var chunkAPAAV5OL_cjs = require('./chunk-APAAV5OL.cjs');
207
+ var chunk23ANI6VC_cjs = require('./chunk-23ANI6VC.cjs');
208
208
  var chunkCKJ3SY6Z_cjs = require('./chunk-CKJ3SY6Z.cjs');
209
209
  var chunkSD7G3BLT_cjs = require('./chunk-SD7G3BLT.cjs');
210
210
  var chunkFJYDCWPI_cjs = require('./chunk-FJYDCWPI.cjs');
@@ -486,4 +486,4 @@ var phoneNumberValidationPatterns_default = phoneNumberValidationPatterns;
486
486
 
487
487
  exports.phoneNumberValidationPatterns_default = phoneNumberValidationPatterns_default;
488
488
  //# sourceMappingURL=out.js.map
489
- //# sourceMappingURL=chunk-6QTKG4JQ.cjs.map
489
+ //# sourceMappingURL=chunk-BNJXO6Y2.cjs.map
@@ -6,4 +6,4 @@ var isPhoneNumberValid_default = isPhoneNumberValid;
6
6
 
7
7
  exports.isPhoneNumberValid_default = isPhoneNumberValid_default;
8
8
  //# sourceMappingURL=out.js.map
9
- //# sourceMappingURL=chunk-Z3L4BW7E.cjs.map
9
+ //# sourceMappingURL=chunk-HVPFB36H.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/isPhoneNumberValid/index.ts"],"names":[],"mappings":";AAOA,IAAM,qBAAqB,CACzB,yBACA,EAAE,MAAM,eAAe,MACpB,CAAC,CAAC,QAAQ,wBAAwB,IAAI,EAAE,KAAK,cAAc;AAEhE,IAAO,6BAAQ","sourcesContent":["import { PhoneNumber } from '../types';\n\n/**\n * Checks if the given international phone number is valid based on the provided {@link phoneValidationPatterns validation patterns}.\n * @param phoneValidationPatterns - Object containing validation patterns for different countries, keyed by ISO2 country code.\n * @returns `true` if the phone number is valid, `false` otherwise.\n */\nconst isPhoneNumberValid = (\n phoneValidationPatterns: Record<string, RegExp>,\n { iso2, nationalNumber }: PhoneNumber\n) => !!iso2 && phoneValidationPatterns[iso2].test(nationalNumber);\n\nexport default isPhoneNumberValid;\n"]}
@@ -0,0 +1,56 @@
1
+ 'use strict';
2
+
3
+ var useConst = require('react-helpful-utils/useConst');
4
+
5
+ function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
6
+
7
+ var useConst__default = /*#__PURE__*/_interopDefault(useConst);
8
+
9
+ // src/useInternationalPhoneInput/index.ts
10
+ var useInternationalPhoneInput = (utils, value, onChange) => {
11
+ const data = useConst__default.default(() => {
12
+ let estimatedIso2;
13
+ return [
14
+ value,
15
+ onChange,
16
+ (e) => {
17
+ const prevValue = data[0];
18
+ const nextValue = utils.toPhoneNumber(e.target.value, estimatedIso2);
19
+ if (prevValue.formattedValue != nextValue.formattedValue) {
20
+ if (estimatedIso2 && estimatedIso2 != nextValue.iso2) {
21
+ estimatedIso2 = void 0;
22
+ }
23
+ data[1](nextValue);
24
+ }
25
+ },
26
+ (iso2) => {
27
+ const prevValue = data[0];
28
+ if (iso2 != prevValue.iso2) {
29
+ estimatedIso2 = iso2;
30
+ const nextValue = utils.toPhoneNumber(
31
+ utils.getCountryCode(iso2) || "",
32
+ estimatedIso2
33
+ );
34
+ if (prevValue.formattedValue != nextValue.formattedValue) {
35
+ data[1](nextValue);
36
+ }
37
+ }
38
+ }
39
+ ];
40
+ });
41
+ data[0] = value;
42
+ data[1] = onChange;
43
+ return {
44
+ inputProps: {
45
+ type: "tel",
46
+ value: value.formattedValue,
47
+ onChange: data[2]
48
+ },
49
+ setCountry: data[3]
50
+ };
51
+ };
52
+ var useInternationalPhoneInput_default = useInternationalPhoneInput;
53
+
54
+ exports.useInternationalPhoneInput_default = useInternationalPhoneInput_default;
55
+ //# sourceMappingURL=out.js.map
56
+ //# sourceMappingURL=chunk-QQ4PXBPF.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/useInternationalPhoneInput/index.ts"],"names":[],"mappings":";AAEA,OAAO,cAAc;AA0CrB,IAAM,6BAA6B,CACjC,OACA,OACA,aACG;AACH,QAAM,OAAO,SAAoB,MAAM;AACrC,QAAI;AAEJ,WAAO;AAAA,MACL;AAAA,MACA;AAAA,MACA,CAAC,MAAM;AACL,cAAM,YAAY,KAAK,CAAC;AAExB,cAAM,YAAY,MAAM,cAAc,EAAE,OAAO,OAAO,aAAa;AAEnE,YAAI,UAAU,kBAAkB,UAAU,gBAAgB;AACxD,cAAI,iBAAiB,iBAAiB,UAAU,MAAM;AACpD,4BAAgB;AAAA,UAClB;AAEA,eAAK,CAAC,EAAE,SAAS;AAAA,QACnB;AAAA,MACF;AAAA,MACA,CAAC,SAAS;AACR,cAAM,YAAY,KAAK,CAAC;AAExB,YAAI,QAAQ,UAAU,MAAM;AAC1B,0BAAgB;AAEhB,gBAAM,YAAY,MAAM;AAAA,YACtB,MAAM,eAAe,IAAI,KAAK;AAAA,YAC9B;AAAA,UACF;AAEA,cAAI,UAAU,kBAAkB,UAAU,gBAAgB;AACxD,iBAAK,CAAC,EAAE,SAAS;AAAA,UACnB;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,EACF,CAAC;AAED,OAAK,CAAC,IAAI;AAEV,OAAK,CAAC,IAAI;AAEV,SAAO;AAAA,IACL,YAAY;AAAA,MACV,MAAM;AAAA,MACN,OAAO,MAAM;AAAA,MACb,UAAU,KAAK,CAAC;AAAA,IAClB;AAAA,IACA,YAAY,KAAK,CAAC;AAAA,EACpB;AACF;AAEA,IAAO,qCAAQ","sourcesContent":["import { DataTuple, PhoneNumberUtils, PhoneNumber } from '../types';\n\nimport useConst from 'react-helpful-utils/useConst';\nimport ISO2 from '../types/ISO2';\n\n/**\n * @example\n * ```jsx\n * import phoneNumberUtils from 'use-phone-input/phoneNumberUtils';\n * import useInternationalPhoneInput from 'use-phone-input/useInternationalPhoneInput';\n *\n * // use it if you want to have no prefix in formatted phone number\n * phoneNumberUtils.setPrefix('');\n *\n * const PhoneInput = () => {\n * const [phone, setPhone] = useState(phoneNumberUtils.toPhoneNumber(''));\n *\n * const { inputProps, setCountry } = useInternationalPhoneInput(\n * phoneNumberUtils,\n * phone,\n * setPhone\n * );\n *\n * return (\n * <div>\n * <select\n * value={phone.iso2}\n * onChange={(e) => {\n * setCountry(e.target.value);\n * }}\n * >\n * <option value=\"\">-</option>\n * {phoneNumberUtils.iso2List.map((iso2) => (\n * <option key={iso2} value={iso2}>\n * {iso2}\n * </option>\n * ))}\n * </select>\n * <input {...inputProps} />\n * </div>\n * );\n * };\n * ```\n */\nconst useInternationalPhoneInput = (\n utils: PhoneNumberUtils,\n value: PhoneNumber,\n onChange: (value: PhoneNumber) => void\n) => {\n const data = useConst<DataTuple>(() => {\n let estimatedIso2: ISO2 | undefined;\n\n return [\n value,\n onChange,\n (e) => {\n const prevValue = data[0];\n\n const nextValue = utils.toPhoneNumber(e.target.value, estimatedIso2);\n\n if (prevValue.formattedValue != nextValue.formattedValue) {\n if (estimatedIso2 && estimatedIso2 != nextValue.iso2) {\n estimatedIso2 = undefined;\n }\n\n data[1](nextValue);\n }\n },\n (iso2) => {\n const prevValue = data[0];\n\n if (iso2 != prevValue.iso2) {\n estimatedIso2 = iso2;\n\n const nextValue = utils.toPhoneNumber(\n utils.getCountryCode(iso2) || '',\n estimatedIso2\n );\n\n if (prevValue.formattedValue != nextValue.formattedValue) {\n data[1](nextValue);\n }\n }\n },\n ];\n });\n\n data[0] = value;\n\n data[1] = onChange;\n\n return {\n inputProps: {\n type: 'tel' as const,\n value: value.formattedValue,\n onChange: data[2],\n },\n setCountry: data[3],\n };\n};\n\nexport default useInternationalPhoneInput;\n"]}
@@ -74,13 +74,13 @@ var chunk3XYN3URS_cjs = require('./chunk-3XYN3URS.cjs');
74
74
  var chunkFD45BIEU_cjs = require('./chunk-FD45BIEU.cjs');
75
75
  var chunkSHXZXLOB_cjs = require('./chunk-SHXZXLOB.cjs');
76
76
  var chunkLTKZRCX7_cjs = require('./chunk-LTKZRCX7.cjs');
77
- var chunk76MG2AOC_cjs = require('./chunk-76MG2AOC.cjs');
78
77
  var chunk5A3BVHMY_cjs = require('./chunk-5A3BVHMY.cjs');
78
+ var chunk76MG2AOC_cjs = require('./chunk-76MG2AOC.cjs');
79
79
  var chunk6Y7OY3JB_cjs = require('./chunk-6Y7OY3JB.cjs');
80
80
  var chunk7L5OB52R_cjs = require('./chunk-7L5OB52R.cjs');
81
81
  var chunkVEB6WEB2_cjs = require('./chunk-VEB6WEB2.cjs');
82
- var chunk3ZYA2DHX_cjs = require('./chunk-3ZYA2DHX.cjs');
83
82
  var chunkGGOCMABE_cjs = require('./chunk-GGOCMABE.cjs');
83
+ var chunk3ZYA2DHX_cjs = require('./chunk-3ZYA2DHX.cjs');
84
84
  var chunkXGW453JL_cjs = require('./chunk-XGW453JL.cjs');
85
85
  var chunkHYL4S6RG_cjs = require('./chunk-HYL4S6RG.cjs');
86
86
  var chunkK5HAKKAC_cjs = require('./chunk-K5HAKKAC.cjs');
@@ -96,24 +96,24 @@ var chunkI6OSXTRT_cjs = require('./chunk-I6OSXTRT.cjs');
96
96
  var chunkTWLFFWM3_cjs = require('./chunk-TWLFFWM3.cjs');
97
97
  var chunkREO7JCLY_cjs = require('./chunk-REO7JCLY.cjs');
98
98
  var chunkJMX4AEI7_cjs = require('./chunk-JMX4AEI7.cjs');
99
- var chunkRGNTZQ5R_cjs = require('./chunk-RGNTZQ5R.cjs');
100
99
  var chunkIEGOHDJ6_cjs = require('./chunk-IEGOHDJ6.cjs');
100
+ var chunkRGNTZQ5R_cjs = require('./chunk-RGNTZQ5R.cjs');
101
101
  var chunkRPS4VA3R_cjs = require('./chunk-RPS4VA3R.cjs');
102
102
  var chunkXNAFPDBJ_cjs = require('./chunk-XNAFPDBJ.cjs');
103
103
  var chunkKOZRD6UX_cjs = require('./chunk-KOZRD6UX.cjs');
104
104
  var chunkLHAZGZBO_cjs = require('./chunk-LHAZGZBO.cjs');
105
- var chunkS5F65TDB_cjs = require('./chunk-S5F65TDB.cjs');
106
105
  var chunkVDYJRRTD_cjs = require('./chunk-VDYJRRTD.cjs');
106
+ var chunkS5F65TDB_cjs = require('./chunk-S5F65TDB.cjs');
107
107
  var chunkSDXKUNDR_cjs = require('./chunk-SDXKUNDR.cjs');
108
108
  var chunkHJYCU42L_cjs = require('./chunk-HJYCU42L.cjs');
109
- var chunkE7WQZMDN_cjs = require('./chunk-E7WQZMDN.cjs');
110
109
  var chunk4PORU7MD_cjs = require('./chunk-4PORU7MD.cjs');
111
110
  var chunk6JLEHX7A_cjs = require('./chunk-6JLEHX7A.cjs');
111
+ var chunkE7WQZMDN_cjs = require('./chunk-E7WQZMDN.cjs');
112
112
  var chunk7SKK4FNJ_cjs = require('./chunk-7SKK4FNJ.cjs');
113
113
  var chunkNMHC6R7O_cjs = require('./chunk-NMHC6R7O.cjs');
114
114
  var chunkPQUHRURZ_cjs = require('./chunk-PQUHRURZ.cjs');
115
- var chunk4LM4LBGZ_cjs = require('./chunk-4LM4LBGZ.cjs');
116
115
  var chunkRPNXYCV5_cjs = require('./chunk-RPNXYCV5.cjs');
116
+ var chunk4LM4LBGZ_cjs = require('./chunk-4LM4LBGZ.cjs');
117
117
  var chunkWBY6GK6Q_cjs = require('./chunk-WBY6GK6Q.cjs');
118
118
  var chunk6LHRBZM2_cjs = require('./chunk-6LHRBZM2.cjs');
119
119
  var chunk4IKTPTW3_cjs = require('./chunk-4IKTPTW3.cjs');
@@ -124,56 +124,56 @@ var chunkTOCABKLR_cjs = require('./chunk-TOCABKLR.cjs');
124
124
  var chunk2Z4OZUO2_cjs = require('./chunk-2Z4OZUO2.cjs');
125
125
  var chunkY2ZY2CKZ_cjs = require('./chunk-Y2ZY2CKZ.cjs');
126
126
  var chunk5FK446RT_cjs = require('./chunk-5FK446RT.cjs');
127
- var chunkSS6IIHFX_cjs = require('./chunk-SS6IIHFX.cjs');
128
127
  var chunkUU5VGYXH_cjs = require('./chunk-UU5VGYXH.cjs');
128
+ var chunkSS6IIHFX_cjs = require('./chunk-SS6IIHFX.cjs');
129
129
  var chunkCEYTG3EQ_cjs = require('./chunk-CEYTG3EQ.cjs');
130
130
  var chunkIOGVUBZ7_cjs = require('./chunk-IOGVUBZ7.cjs');
131
131
  var chunkVAVYZR4W_cjs = require('./chunk-VAVYZR4W.cjs');
132
132
  var chunk5LTNMA6V_cjs = require('./chunk-5LTNMA6V.cjs');
133
133
  var chunkYR6CRVLB_cjs = require('./chunk-YR6CRVLB.cjs');
134
134
  var chunk6PPYXEDX_cjs = require('./chunk-6PPYXEDX.cjs');
135
- var chunkGBQO5M27_cjs = require('./chunk-GBQO5M27.cjs');
136
135
  var chunkJUEJBFVX_cjs = require('./chunk-JUEJBFVX.cjs');
137
- var chunkRSYN2HRC_cjs = require('./chunk-RSYN2HRC.cjs');
136
+ var chunkGBQO5M27_cjs = require('./chunk-GBQO5M27.cjs');
138
137
  var chunk4IELLYG7_cjs = require('./chunk-4IELLYG7.cjs');
138
+ var chunkRSYN2HRC_cjs = require('./chunk-RSYN2HRC.cjs');
139
139
  var chunkX7PPFHTJ_cjs = require('./chunk-X7PPFHTJ.cjs');
140
140
  var chunkBU6FLKHX_cjs = require('./chunk-BU6FLKHX.cjs');
141
141
  var chunk4MCYWISC_cjs = require('./chunk-4MCYWISC.cjs');
142
142
  var chunkSVC5BLH3_cjs = require('./chunk-SVC5BLH3.cjs');
143
143
  var chunk5MIJSN5I_cjs = require('./chunk-5MIJSN5I.cjs');
144
144
  var chunkDDPYLW26_cjs = require('./chunk-DDPYLW26.cjs');
145
- var chunkMH2TW6YG_cjs = require('./chunk-MH2TW6YG.cjs');
146
- var chunkTTTTW34J_cjs = require('./chunk-TTTTW34J.cjs');
145
+ var chunkDF5HSNTT_cjs = require('./chunk-DF5HSNTT.cjs');
147
146
  var chunkIPADRS4K_cjs = require('./chunk-IPADRS4K.cjs');
147
+ var chunkTTTTW34J_cjs = require('./chunk-TTTTW34J.cjs');
148
148
  var chunk5G5CO5UE_cjs = require('./chunk-5G5CO5UE.cjs');
149
149
  var chunkOQVZ7HZY_cjs = require('./chunk-OQVZ7HZY.cjs');
150
- var chunkJ7L4BF6E_cjs = require('./chunk-J7L4BF6E.cjs');
151
150
  var chunkTH5UCL7O_cjs = require('./chunk-TH5UCL7O.cjs');
151
+ var chunkJ7L4BF6E_cjs = require('./chunk-J7L4BF6E.cjs');
152
152
  var chunkTAXZQDZG_cjs = require('./chunk-TAXZQDZG.cjs');
153
153
  var chunkPVJ6YJMO_cjs = require('./chunk-PVJ6YJMO.cjs');
154
154
  var chunkFXYT7UM2_cjs = require('./chunk-FXYT7UM2.cjs');
155
155
  var chunk65SJ3OWX_cjs = require('./chunk-65SJ3OWX.cjs');
156
156
  var chunkA7RCMWP7_cjs = require('./chunk-A7RCMWP7.cjs');
157
157
  var chunk7QHIG5FV_cjs = require('./chunk-7QHIG5FV.cjs');
158
- var chunkJ5HAHGYP_cjs = require('./chunk-J5HAHGYP.cjs');
159
158
  var chunkLIRHCUQV_cjs = require('./chunk-LIRHCUQV.cjs');
160
- var chunkDF5HSNTT_cjs = require('./chunk-DF5HSNTT.cjs');
159
+ var chunkJ5HAHGYP_cjs = require('./chunk-J5HAHGYP.cjs');
160
+ var chunkMH2TW6YG_cjs = require('./chunk-MH2TW6YG.cjs');
161
161
  var chunkFFLRZJF5_cjs = require('./chunk-FFLRZJF5.cjs');
162
- var chunk3LRABZFY_cjs = require('./chunk-3LRABZFY.cjs');
163
162
  var chunk5G3MS4UT_cjs = require('./chunk-5G3MS4UT.cjs');
163
+ var chunk3LRABZFY_cjs = require('./chunk-3LRABZFY.cjs');
164
164
  var chunkLJVLK3DV_cjs = require('./chunk-LJVLK3DV.cjs');
165
165
  var chunk24AWGL5H_cjs = require('./chunk-24AWGL5H.cjs');
166
166
  var chunkFOSBSHRV_cjs = require('./chunk-FOSBSHRV.cjs');
167
- var chunkI22AC3TR_cjs = require('./chunk-I22AC3TR.cjs');
168
167
  var chunkYCKNZLNB_cjs = require('./chunk-YCKNZLNB.cjs');
168
+ var chunkI22AC3TR_cjs = require('./chunk-I22AC3TR.cjs');
169
169
  var chunkVE76XCJJ_cjs = require('./chunk-VE76XCJJ.cjs');
170
170
  var chunkV3PL53TB_cjs = require('./chunk-V3PL53TB.cjs');
171
171
  var chunkVN2FUZWA_cjs = require('./chunk-VN2FUZWA.cjs');
172
172
  var chunkHVHKKSNY_cjs = require('./chunk-HVHKKSNY.cjs');
173
173
  var chunkDKO5O2FC_cjs = require('./chunk-DKO5O2FC.cjs');
174
174
  var chunkCEQPNPUV_cjs = require('./chunk-CEQPNPUV.cjs');
175
- var chunkJMOK6BRA_cjs = require('./chunk-JMOK6BRA.cjs');
176
175
  var chunkHTQDO3DZ_cjs = require('./chunk-HTQDO3DZ.cjs');
176
+ var chunkJMOK6BRA_cjs = require('./chunk-JMOK6BRA.cjs');
177
177
  var chunk376GNAYD_cjs = require('./chunk-376GNAYD.cjs');
178
178
  var chunkDEHG7OQW_cjs = require('./chunk-DEHG7OQW.cjs');
179
179
  var chunk3VKNN3WJ_cjs = require('./chunk-3VKNN3WJ.cjs');
@@ -198,33 +198,33 @@ var chunkIPKE7YFV_cjs = require('./chunk-IPKE7YFV.cjs');
198
198
  var chunk6UDIL3CX_cjs = require('./chunk-6UDIL3CX.cjs');
199
199
  var chunkDPEZ7LPD_cjs = require('./chunk-DPEZ7LPD.cjs');
200
200
  var chunkU24GIINJ_cjs = require('./chunk-U24GIINJ.cjs');
201
+ var chunkN7HJQCZB_cjs = require('./chunk-N7HJQCZB.cjs');
201
202
  var chunkGTW6WOFY_cjs = require('./chunk-GTW6WOFY.cjs');
202
- var chunk7WHS6XWN_cjs = require('./chunk-7WHS6XWN.cjs');
203
203
  var chunk2M4YSY6H_cjs = require('./chunk-2M4YSY6H.cjs');
204
204
  var chunkROMUNGBX_cjs = require('./chunk-ROMUNGBX.cjs');
205
205
  var chunkRQTEA3WW_cjs = require('./chunk-RQTEA3WW.cjs');
206
206
  var chunkWBTWTMF3_cjs = require('./chunk-WBTWTMF3.cjs');
207
- var chunkPQRG76VP_cjs = require('./chunk-PQRG76VP.cjs');
208
207
  var chunkHSP7XB6G_cjs = require('./chunk-HSP7XB6G.cjs');
208
+ var chunkPQRG76VP_cjs = require('./chunk-PQRG76VP.cjs');
209
209
  var chunkLQCZJJBA_cjs = require('./chunk-LQCZJJBA.cjs');
210
- var chunkV3F4LGWT_cjs = require('./chunk-V3F4LGWT.cjs');
211
210
  var chunkRPS7DM7M_cjs = require('./chunk-RPS7DM7M.cjs');
211
+ var chunkV3F4LGWT_cjs = require('./chunk-V3F4LGWT.cjs');
212
212
  var chunkX6VPI6AI_cjs = require('./chunk-X6VPI6AI.cjs');
213
213
  var chunkN7LXYXVN_cjs = require('./chunk-N7LXYXVN.cjs');
214
214
  var chunk2IOIZJCI_cjs = require('./chunk-2IOIZJCI.cjs');
215
215
  var chunkTS27J4JV_cjs = require('./chunk-TS27J4JV.cjs');
216
- var chunkN7HJQCZB_cjs = require('./chunk-N7HJQCZB.cjs');
217
- var chunkC2DVHCMH_cjs = require('./chunk-C2DVHCMH.cjs');
216
+ var chunk7WHS6XWN_cjs = require('./chunk-7WHS6XWN.cjs');
218
217
  var chunkNDTD2EIJ_cjs = require('./chunk-NDTD2EIJ.cjs');
218
+ var chunkC2DVHCMH_cjs = require('./chunk-C2DVHCMH.cjs');
219
219
  var chunkDXV45EOG_cjs = require('./chunk-DXV45EOG.cjs');
220
- var chunkANY42KAM_cjs = require('./chunk-ANY42KAM.cjs');
221
220
  var chunkBPBF3ISY_cjs = require('./chunk-BPBF3ISY.cjs');
221
+ var chunkANY42KAM_cjs = require('./chunk-ANY42KAM.cjs');
222
222
  var chunkI5MLEMJY_cjs = require('./chunk-I5MLEMJY.cjs');
223
223
  var chunkQLGSRRUE_cjs = require('./chunk-QLGSRRUE.cjs');
224
224
  var chunkDNJFKC4N_cjs = require('./chunk-DNJFKC4N.cjs');
225
225
  var chunkR7FZPZAQ_cjs = require('./chunk-R7FZPZAQ.cjs');
226
- var chunkCI5JWAMO_cjs = require('./chunk-CI5JWAMO.cjs');
227
226
  var chunkPB7Y4CWZ_cjs = require('./chunk-PB7Y4CWZ.cjs');
227
+ var chunkCI5JWAMO_cjs = require('./chunk-CI5JWAMO.cjs');
228
228
  var chunk46O2JQME_cjs = require('./chunk-46O2JQME.cjs');
229
229
  var chunkM3PXYWLA_cjs = require('./chunk-M3PXYWLA.cjs');
230
230
  var chunk73WEZJYZ_cjs = require('./chunk-73WEZJYZ.cjs');
@@ -232,17 +232,17 @@ var chunkQJCSEHL3_cjs = require('./chunk-QJCSEHL3.cjs');
232
232
  var chunkJSX4JMXO_cjs = require('./chunk-JSX4JMXO.cjs');
233
233
  var chunkPPWENMGT_cjs = require('./chunk-PPWENMGT.cjs');
234
234
  var chunkNKAI6IUS_cjs = require('./chunk-NKAI6IUS.cjs');
235
- var chunk3V364Y5Q_cjs = require('./chunk-3V364Y5Q.cjs');
236
235
  var chunkGTTCPHSS_cjs = require('./chunk-GTTCPHSS.cjs');
236
+ var chunk3V364Y5Q_cjs = require('./chunk-3V364Y5Q.cjs');
237
+ var chunk2EQKUUCB_cjs = require('./chunk-2EQKUUCB.cjs');
237
238
  var chunkDSQ3XOS7_cjs = require('./chunk-DSQ3XOS7.cjs');
238
239
  var chunkEEIN55DQ_cjs = require('./chunk-EEIN55DQ.cjs');
239
- var chunk2EQKUUCB_cjs = require('./chunk-2EQKUUCB.cjs');
240
240
  var chunkSJ554GN7_cjs = require('./chunk-SJ554GN7.cjs');
241
- var chunkV55O3DL5_cjs = require('./chunk-V55O3DL5.cjs');
241
+ var chunkY6MM2SKH_cjs = require('./chunk-Y6MM2SKH.cjs');
242
242
  var chunkUJBPUSNZ_cjs = require('./chunk-UJBPUSNZ.cjs');
243
243
 
244
244
  // src/phoneNumberUtils/index.ts
245
- var phoneNumberUtils = chunkV55O3DL5_cjs.createPhoneNumberUtils_default([
245
+ var phoneNumberUtils = chunkY6MM2SKH_cjs.createPhoneNumberUtils_default([
246
246
  chunkGTTCPHSS_cjs.AF_default,
247
247
  chunkEEIN55DQ_cjs.AL_default,
248
248
  chunk376GNAYD_cjs.DZ_default,
@@ -487,4 +487,4 @@ var phoneNumberUtils_default = phoneNumberUtils;
487
487
 
488
488
  exports.phoneNumberUtils_default = phoneNumberUtils_default;
489
489
  //# sourceMappingURL=out.js.map
490
- //# sourceMappingURL=chunk-TTYRYB7E.cjs.map
490
+ //# sourceMappingURL=chunk-TMM3RFL7.cjs.map
@@ -4,11 +4,11 @@
4
4
  var isPhoneNumberValidAsync = async ({
5
5
  iso2,
6
6
  nationalNumber
7
- }) => !!iso2 && (await import(`../../phoneValidationPatterns/${iso2}/index.cjs`)).default.test(
7
+ }) => !!iso2 && (await import(`../../phoneNumberValidationPatterns/${iso2}/index.cjs`)).default.test(
8
8
  nationalNumber
9
9
  );
10
10
  var isPhoneNumberValidAsync_default = isPhoneNumberValidAsync;
11
11
 
12
12
  exports.isPhoneNumberValidAsync_default = isPhoneNumberValidAsync_default;
13
13
  //# sourceMappingURL=out.js.map
14
- //# sourceMappingURL=chunk-XMDSXXFO.cjs.map
14
+ //# sourceMappingURL=chunk-TOZDRR2U.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/isPhoneNumberValidAsync/index.ts"],"names":[],"mappings":";AAOA,IAAM,0BAA0B,OAAO;AAAA,EACrC;AAAA,EACA;AACF,MACE,CAAC,CAAC,SACD,MAAM,OAAO,oCAAoC,IAAI,KAAK,QAAQ;AAAA,EACjE;AACF;AAEF,IAAO,kCAAQ","sourcesContent":["import { PhoneNumber } from '../types';\n\n/**\n * Checks if the given international phone number is valid\n *\n * > **This method uses [dynamic import](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/import) under the hood, use only if your builder supports it**\n */\nconst isPhoneNumberValidAsync = async ({\n iso2,\n nationalNumber,\n}: PhoneNumber): Promise<boolean> =>\n !!iso2 &&\n (await import(`../phoneNumberValidationPatterns/${iso2}`)).default.test(\n nationalNumber\n );\n\nexport default isPhoneNumberValidAsync;\n"]}
@@ -25,27 +25,19 @@ var createPhoneNumberUtils = (data, prefix = "+") => {
25
25
  prefix = newPrefix;
26
26
  },
27
27
  getCountryCode: iso2DataMap.get.bind(iso2DataMap),
28
- toPhoneNumber(value, data2) {
29
- let isSame;
28
+ toPhoneNumber(value, estimatedIso2) {
30
29
  let countries;
31
30
  let countryCode = "";
32
31
  const withPrefix = prefix && value.startsWith(prefix);
33
- const prevValue = data2 && data2[0];
34
32
  value = (withPrefix ? value.slice(prefix.length) : value).replace(
35
33
  /\D/g,
36
34
  ""
37
35
  );
38
- if (prevValue && prevValue.iso2 && value.startsWith(prevValue.countryCode)) {
39
- isSame = true;
40
- countryCode = prevValue.countryCode;
41
- countries = callingCodeDataMap.get(countryCode);
42
- } else {
43
- for (let i = Math.min(chunkIHCU6GJO_cjs.MAX_CALLING_CODE_LENGTH, value.length); i > 0; i--) {
44
- countryCode = value.slice(0, i);
45
- if (callingCodeDataMap.has(countryCode)) {
46
- countries = callingCodeDataMap.get(countryCode);
47
- break;
48
- }
36
+ for (let i = Math.min(chunkIHCU6GJO_cjs.MAX_CALLING_CODE_LENGTH, value.length); i > 0; i--) {
37
+ countryCode = value.slice(0, i);
38
+ if (callingCodeDataMap.has(countryCode)) {
39
+ countries = callingCodeDataMap.get(countryCode);
40
+ break;
49
41
  }
50
42
  }
51
43
  let nationalNumber = value.slice(countryCode.length);
@@ -58,16 +50,22 @@ var createPhoneNumberUtils = (data, prefix = "+") => {
58
50
  countryData = countries[0];
59
51
  } else {
60
52
  let mainCountry;
53
+ let estimatedCountry;
61
54
  for (let i = 0; i < countriesCount; i++) {
62
55
  const item = countries[i];
63
56
  if (item.length % 2) {
57
+ if (item[item.length - 1].test(nationalNumber)) {
58
+ countryData = item;
59
+ break;
60
+ }
61
+ if (estimatedIso2 == item[1]) {
62
+ estimatedCountry = item;
63
+ }
64
+ } else {
64
65
  mainCountry = item;
65
- } else if (item[item.length - 1].test(nationalNumber)) {
66
- countryData = item;
67
- break;
68
66
  }
69
67
  }
70
- countryData || (countryData = mainCountry || countries[countriesCount - 1]);
68
+ countryData || (countryData = estimatedCountry || mainCountry || countries[countriesCount - 1]);
71
69
  }
72
70
  const formatsEnd = countryData.length - countryData.length % 2;
73
71
  iso2 = countryData[1];
@@ -75,8 +73,7 @@ var createPhoneNumberUtils = (data, prefix = "+") => {
75
73
  0,
76
74
  countryData[formatsEnd - 2]
77
75
  );
78
- isSame && (isSame = prevValue && nationalNumber == prevValue.nationalNumber);
79
- if (nationalNumber && !isSame) {
76
+ if (nationalNumber) {
80
77
  for (let i = 2; i < formatsEnd; i += 2) {
81
78
  if (nationalNumber.length <= countryData[i]) {
82
79
  const format = countryData[i + 1];
@@ -98,19 +95,12 @@ var createPhoneNumberUtils = (data, prefix = "+") => {
98
95
  nationalNumber = nationalNumber.slice(0, chunkIHCU6GJO_cjs.MAX_NUMBER_LENGTH);
99
96
  formattedValue += nationalNumber;
100
97
  }
101
- const nextValue = {
98
+ return {
102
99
  countryCode,
103
100
  iso2,
104
101
  nationalNumber,
105
102
  formattedValue
106
103
  };
107
- if (!data2) {
108
- return nextValue;
109
- }
110
- if (!isSame) {
111
- data2[0] = nextValue;
112
- data2[1](nextValue);
113
- }
114
104
  }
115
105
  };
116
106
  };
@@ -118,4 +108,4 @@ var createPhoneNumberUtils_default = createPhoneNumberUtils;
118
108
 
119
109
  exports.createPhoneNumberUtils_default = createPhoneNumberUtils_default;
120
110
  //# sourceMappingURL=out.js.map
121
- //# sourceMappingURL=chunk-V55O3DL5.cjs.map
111
+ //# sourceMappingURL=chunk-Y6MM2SKH.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/createPhoneNumberUtils/index.ts"],"names":["i"],"mappings":"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","sourcesContent":["import type { PhoneNumberUtils } from '../types';\nimport type PhoneNumberData from '../types/PhoneNumberData';\nimport type ISO2 from '../types/ISO2';\nimport {\n MASK_SYMBOL,\n MAX_CALLING_CODE_LENGTH,\n MAX_NUMBER_LENGTH,\n} from '../constants';\n\n/**\n * Generates utility functions for formatting, parsing, and managing international phone numbers\n * @param [prefix='+'] - Default prefix for country calling codes\n * @returns An object containing utility functions for phone number handling\n */\nconst createPhoneNumberUtils = (\n data: PhoneNumberData[],\n prefix = '+'\n): PhoneNumberUtils => {\n const callingCodeDataMap = new Map<string, PhoneNumberData[]>();\n\n const iso2DataMap = new Map<string, string>();\n\n const iso2List: ISO2[] = [];\n\n for (let i = 0; i < data.length; i++) {\n const item = data[i];\n\n const callingCode = String(item[0]);\n\n const iso2 = item[1];\n\n iso2List.push(iso2);\n\n iso2DataMap.set(iso2, callingCode);\n\n if (callingCodeDataMap.has(callingCode)) {\n callingCodeDataMap.get(callingCode)!.push(item);\n } else {\n callingCodeDataMap.set(callingCode, [item]);\n }\n }\n\n return {\n iso2List,\n setPrefix(newPrefix) {\n prefix = newPrefix;\n },\n getCountryCode: iso2DataMap.get.bind(iso2DataMap),\n toPhoneNumber(value, estimatedIso2) {\n let countries: PhoneNumberData[] | undefined;\n\n let countryCode: string = '';\n\n const withPrefix = prefix && value.startsWith(prefix);\n\n value = (withPrefix ? value.slice(prefix.length) : value).replace(\n /\\D/g,\n ''\n );\n\n for (\n let i = Math.min(MAX_CALLING_CODE_LENGTH, value.length);\n i > 0;\n i--\n ) {\n countryCode = value.slice(0, i);\n\n if (callingCodeDataMap.has(countryCode)) {\n countries = callingCodeDataMap.get(countryCode)!;\n\n break;\n }\n }\n\n let nationalNumber = value.slice(countryCode.length);\n\n let iso2: ISO2 | '' = '';\n\n let formattedValue =\n ((withPrefix || countryCode) && prefix) + countryCode;\n\n if (countries) {\n let countryData: PhoneNumberData;\n\n const countriesCount = countries.length;\n\n if (countriesCount == 1) {\n countryData = countries[0];\n } else {\n let mainCountry: PhoneNumberData | undefined;\n\n let estimatedCountry: PhoneNumberData | undefined;\n\n for (let i = 0; i < countriesCount; i++) {\n const item = countries[i];\n\n if (item.length % 2) {\n if ((item[item.length - 1] as RegExp).test(nationalNumber)) {\n countryData = item;\n\n break;\n }\n\n if (estimatedIso2 == item[1]) {\n estimatedCountry = item;\n }\n } else {\n mainCountry = item;\n }\n }\n\n countryData ||=\n estimatedCountry || mainCountry || countries[countriesCount - 1];\n }\n\n const formatsEnd = countryData.length - (countryData.length % 2);\n\n iso2 = countryData[1];\n\n nationalNumber = nationalNumber.slice(\n 0,\n countryData[formatsEnd - 2] as number\n );\n\n if (nationalNumber) {\n for (let i = 2; i < formatsEnd; i += 2) {\n if (nationalNumber.length <= (countryData[i] as number)) {\n const format = countryData[i + 1] as string;\n\n formattedValue += ' ';\n\n for (let i = 0, shift = 0; i < nationalNumber.length; i++) {\n const p = format[i + shift];\n\n if (p == MASK_SYMBOL) {\n formattedValue += nationalNumber[i];\n } else {\n formattedValue += p + nationalNumber[i];\n\n shift++;\n }\n }\n\n break;\n }\n }\n }\n } else {\n nationalNumber = nationalNumber.slice(0, MAX_NUMBER_LENGTH);\n\n formattedValue += nationalNumber;\n }\n\n return {\n countryCode,\n iso2,\n nationalNumber,\n formattedValue,\n };\n },\n };\n};\n\nexport default createPhoneNumberUtils;\n"]}
@@ -0,0 +1,50 @@
1
+ import useConst from 'react-helpful-utils/useConst';
2
+
3
+ // src/useInternationalPhoneInput/index.ts
4
+ var useInternationalPhoneInput = (utils, value, onChange) => {
5
+ const data = useConst(() => {
6
+ let estimatedIso2;
7
+ return [
8
+ value,
9
+ onChange,
10
+ (e) => {
11
+ const prevValue = data[0];
12
+ const nextValue = utils.toPhoneNumber(e.target.value, estimatedIso2);
13
+ if (prevValue.formattedValue != nextValue.formattedValue) {
14
+ if (estimatedIso2 && estimatedIso2 != nextValue.iso2) {
15
+ estimatedIso2 = void 0;
16
+ }
17
+ data[1](nextValue);
18
+ }
19
+ },
20
+ (iso2) => {
21
+ const prevValue = data[0];
22
+ if (iso2 != prevValue.iso2) {
23
+ estimatedIso2 = iso2;
24
+ const nextValue = utils.toPhoneNumber(
25
+ utils.getCountryCode(iso2) || "",
26
+ estimatedIso2
27
+ );
28
+ if (prevValue.formattedValue != nextValue.formattedValue) {
29
+ data[1](nextValue);
30
+ }
31
+ }
32
+ }
33
+ ];
34
+ });
35
+ data[0] = value;
36
+ data[1] = onChange;
37
+ return {
38
+ inputProps: {
39
+ type: "tel",
40
+ value: value.formattedValue,
41
+ onChange: data[2]
42
+ },
43
+ setCountry: data[3]
44
+ };
45
+ };
46
+ var useInternationalPhoneInput_default = useInternationalPhoneInput;
47
+
48
+ export { useInternationalPhoneInput_default };
49
+ //# sourceMappingURL=out.js.map
50
+ //# sourceMappingURL=chunk-3SMH36OE.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/useInternationalPhoneInput/index.ts"],"names":[],"mappings":";AAEA,OAAO,cAAc;AA0CrB,IAAM,6BAA6B,CACjC,OACA,OACA,aACG;AACH,QAAM,OAAO,SAAoB,MAAM;AACrC,QAAI;AAEJ,WAAO;AAAA,MACL;AAAA,MACA;AAAA,MACA,CAAC,MAAM;AACL,cAAM,YAAY,KAAK,CAAC;AAExB,cAAM,YAAY,MAAM,cAAc,EAAE,OAAO,OAAO,aAAa;AAEnE,YAAI,UAAU,kBAAkB,UAAU,gBAAgB;AACxD,cAAI,iBAAiB,iBAAiB,UAAU,MAAM;AACpD,4BAAgB;AAAA,UAClB;AAEA,eAAK,CAAC,EAAE,SAAS;AAAA,QACnB;AAAA,MACF;AAAA,MACA,CAAC,SAAS;AACR,cAAM,YAAY,KAAK,CAAC;AAExB,YAAI,QAAQ,UAAU,MAAM;AAC1B,0BAAgB;AAEhB,gBAAM,YAAY,MAAM;AAAA,YACtB,MAAM,eAAe,IAAI,KAAK;AAAA,YAC9B;AAAA,UACF;AAEA,cAAI,UAAU,kBAAkB,UAAU,gBAAgB;AACxD,iBAAK,CAAC,EAAE,SAAS;AAAA,UACnB;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,EACF,CAAC;AAED,OAAK,CAAC,IAAI;AAEV,OAAK,CAAC,IAAI;AAEV,SAAO;AAAA,IACL,YAAY;AAAA,MACV,MAAM;AAAA,MACN,OAAO,MAAM;AAAA,MACb,UAAU,KAAK,CAAC;AAAA,IAClB;AAAA,IACA,YAAY,KAAK,CAAC;AAAA,EACpB;AACF;AAEA,IAAO,qCAAQ","sourcesContent":["import { DataTuple, PhoneNumberUtils, PhoneNumber } from '../types';\n\nimport useConst from 'react-helpful-utils/useConst';\nimport ISO2 from '../types/ISO2';\n\n/**\n * @example\n * ```jsx\n * import phoneNumberUtils from 'use-phone-input/phoneNumberUtils';\n * import useInternationalPhoneInput from 'use-phone-input/useInternationalPhoneInput';\n *\n * // use it if you want to have no prefix in formatted phone number\n * phoneNumberUtils.setPrefix('');\n *\n * const PhoneInput = () => {\n * const [phone, setPhone] = useState(phoneNumberUtils.toPhoneNumber(''));\n *\n * const { inputProps, setCountry } = useInternationalPhoneInput(\n * phoneNumberUtils,\n * phone,\n * setPhone\n * );\n *\n * return (\n * <div>\n * <select\n * value={phone.iso2}\n * onChange={(e) => {\n * setCountry(e.target.value);\n * }}\n * >\n * <option value=\"\">-</option>\n * {phoneNumberUtils.iso2List.map((iso2) => (\n * <option key={iso2} value={iso2}>\n * {iso2}\n * </option>\n * ))}\n * </select>\n * <input {...inputProps} />\n * </div>\n * );\n * };\n * ```\n */\nconst useInternationalPhoneInput = (\n utils: PhoneNumberUtils,\n value: PhoneNumber,\n onChange: (value: PhoneNumber) => void\n) => {\n const data = useConst<DataTuple>(() => {\n let estimatedIso2: ISO2 | undefined;\n\n return [\n value,\n onChange,\n (e) => {\n const prevValue = data[0];\n\n const nextValue = utils.toPhoneNumber(e.target.value, estimatedIso2);\n\n if (prevValue.formattedValue != nextValue.formattedValue) {\n if (estimatedIso2 && estimatedIso2 != nextValue.iso2) {\n estimatedIso2 = undefined;\n }\n\n data[1](nextValue);\n }\n },\n (iso2) => {\n const prevValue = data[0];\n\n if (iso2 != prevValue.iso2) {\n estimatedIso2 = iso2;\n\n const nextValue = utils.toPhoneNumber(\n utils.getCountryCode(iso2) || '',\n estimatedIso2\n );\n\n if (prevValue.formattedValue != nextValue.formattedValue) {\n data[1](nextValue);\n }\n }\n },\n ];\n });\n\n data[0] = value;\n\n data[1] = onChange;\n\n return {\n inputProps: {\n type: 'tel' as const,\n value: value.formattedValue,\n onChange: data[2],\n },\n setCountry: data[3],\n };\n};\n\nexport default useInternationalPhoneInput;\n"]}
@@ -4,4 +4,4 @@ var isPhoneNumberValid_default = isPhoneNumberValid;
4
4
 
5
5
  export { isPhoneNumberValid_default };
6
6
  //# sourceMappingURL=out.js.map
7
- //# sourceMappingURL=chunk-LWRQEKTA.js.map
7
+ //# sourceMappingURL=chunk-6O5MTMYZ.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/isPhoneNumberValid/index.ts"],"names":[],"mappings":";AAOA,IAAM,qBAAqB,CACzB,yBACA,EAAE,MAAM,eAAe,MACpB,CAAC,CAAC,QAAQ,wBAAwB,IAAI,EAAE,KAAK,cAAc;AAEhE,IAAO,6BAAQ","sourcesContent":["import { PhoneNumber } from '../types';\n\n/**\n * Checks if the given international phone number is valid based on the provided {@link phoneValidationPatterns validation patterns}.\n * @param phoneValidationPatterns - Object containing validation patterns for different countries, keyed by ISO2 country code.\n * @returns `true` if the phone number is valid, `false` otherwise.\n */\nconst isPhoneNumberValid = (\n phoneValidationPatterns: Record<string, RegExp>,\n { iso2, nationalNumber }: PhoneNumber\n) => !!iso2 && phoneValidationPatterns[iso2].test(nationalNumber);\n\nexport default isPhoneNumberValid;\n"]}
@@ -2,11 +2,11 @@
2
2
  var isPhoneNumberValidAsync = async ({
3
3
  iso2,
4
4
  nationalNumber
5
- }) => !!iso2 && (await import(`../../phoneValidationPatterns/${iso2}/index.js`)).default.test(
5
+ }) => !!iso2 && (await import(`../../phoneNumberValidationPatterns/${iso2}/index.js`)).default.test(
6
6
  nationalNumber
7
7
  );
8
8
  var isPhoneNumberValidAsync_default = isPhoneNumberValidAsync;
9
9
 
10
10
  export { isPhoneNumberValidAsync_default };
11
11
  //# sourceMappingURL=out.js.map
12
- //# sourceMappingURL=chunk-DCLYRG4P.js.map
12
+ //# sourceMappingURL=chunk-A3SI5C2I.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/isPhoneNumberValidAsync/index.ts"],"names":[],"mappings":";AAOA,IAAM,0BAA0B,OAAO;AAAA,EACrC;AAAA,EACA;AACF,MACE,CAAC,CAAC,SACD,MAAM,OAAO,oCAAoC,IAAI,KAAK,QAAQ;AAAA,EACjE;AACF;AAEF,IAAO,kCAAQ","sourcesContent":["import { PhoneNumber } from '../types';\n\n/**\n * Checks if the given international phone number is valid\n *\n * > **This method uses [dynamic import](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/import) under the hood, use only if your builder supports it**\n */\nconst isPhoneNumberValidAsync = async ({\n iso2,\n nationalNumber,\n}: PhoneNumber): Promise<boolean> =>\n !!iso2 &&\n (await import(`../phoneNumberValidationPatterns/${iso2}`)).default.test(\n nationalNumber\n );\n\nexport default isPhoneNumberValidAsync;\n"]}