@rpcbase/ui 0.218.0 → 0.219.0

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 (275) hide show
  1. package/dist/components/AddressAutocompleteInput/index.d.ts.map +1 -1
  2. package/dist/index10.js +3 -3
  3. package/dist/index100.js +4 -5
  4. package/dist/index100.js.map +1 -1
  5. package/dist/index101.js +8 -4
  6. package/dist/index101.js.map +1 -1
  7. package/dist/index102.js +5 -8
  8. package/dist/index102.js.map +1 -1
  9. package/dist/index103.js +4 -5
  10. package/dist/index103.js.map +1 -1
  11. package/dist/index104.js +3 -3
  12. package/dist/index104.js.map +1 -1
  13. package/dist/index105.js +6 -4
  14. package/dist/index105.js.map +1 -1
  15. package/dist/index106.js +145 -6
  16. package/dist/index106.js.map +1 -1
  17. package/dist/index107.js +38 -144
  18. package/dist/index107.js.map +1 -1
  19. package/dist/index108.js +4 -39
  20. package/dist/index108.js.map +1 -1
  21. package/dist/index109.js +7 -4
  22. package/dist/index109.js.map +1 -1
  23. package/dist/index11.js +2 -2
  24. package/dist/index110.js +12 -6
  25. package/dist/index110.js.map +1 -1
  26. package/dist/index111.js +13 -13
  27. package/dist/index111.js.map +1 -1
  28. package/dist/index112.js +7 -13
  29. package/dist/index112.js.map +1 -1
  30. package/dist/index113.js +30 -6
  31. package/dist/index113.js.map +1 -1
  32. package/dist/index114.js +10 -31
  33. package/dist/index114.js.map +1 -1
  34. package/dist/index115.js +10 -10
  35. package/dist/index115.js.map +1 -1
  36. package/dist/index116.js +8 -10
  37. package/dist/index116.js.map +1 -1
  38. package/dist/index117.js +13 -8
  39. package/dist/index117.js.map +1 -1
  40. package/dist/index118.js +101 -13
  41. package/dist/index118.js.map +1 -1
  42. package/dist/index119.js +20 -102
  43. package/dist/index119.js.map +1 -1
  44. package/dist/index12.js +3 -3
  45. package/dist/index120.js +54 -20
  46. package/dist/index120.js.map +1 -1
  47. package/dist/index121.js +70 -51
  48. package/dist/index121.js.map +1 -1
  49. package/dist/index122.js +9 -72
  50. package/dist/index122.js.map +1 -1
  51. package/dist/index123.js +20 -9
  52. package/dist/index123.js.map +1 -1
  53. package/dist/index124.js +16 -20
  54. package/dist/index124.js.map +1 -1
  55. package/dist/index125.js +23 -16
  56. package/dist/index125.js.map +1 -1
  57. package/dist/index126.js +6 -23
  58. package/dist/index126.js.map +1 -1
  59. package/dist/index127.js +5 -6
  60. package/dist/index127.js.map +1 -1
  61. package/dist/index128.js +23 -5
  62. package/dist/index128.js.map +1 -1
  63. package/dist/index129.js +35 -24
  64. package/dist/index129.js.map +1 -1
  65. package/dist/index13.js +2 -2
  66. package/dist/index130.js +16 -35
  67. package/dist/index130.js.map +1 -1
  68. package/dist/index131.js +7 -16
  69. package/dist/index131.js.map +1 -1
  70. package/dist/index132.js +4 -6
  71. package/dist/index132.js.map +1 -1
  72. package/dist/index133.js +4 -4
  73. package/dist/index133.js.map +1 -1
  74. package/dist/index134.js +4 -4
  75. package/dist/index134.js.map +1 -1
  76. package/dist/index135.js +4 -4
  77. package/dist/index135.js.map +1 -1
  78. package/dist/index136.js +3 -4
  79. package/dist/index136.js.map +1 -1
  80. package/dist/index137.js +6 -3
  81. package/dist/index137.js.map +1 -1
  82. package/dist/index138.js +24 -7
  83. package/dist/index138.js.map +1 -1
  84. package/dist/index139.js +8 -24
  85. package/dist/index139.js.map +1 -1
  86. package/dist/index14.js +2 -2
  87. package/dist/index140.js +6 -7
  88. package/dist/index140.js.map +1 -1
  89. package/dist/index141.js +5 -6
  90. package/dist/index141.js.map +1 -1
  91. package/dist/index142.js +3 -5
  92. package/dist/index142.js.map +1 -1
  93. package/dist/index143.js +3 -3
  94. package/dist/index143.js.map +1 -1
  95. package/dist/index144.js +4 -3
  96. package/dist/index144.js.map +1 -1
  97. package/dist/index145.js +3 -4
  98. package/dist/index145.js.map +1 -1
  99. package/dist/index146.js +4 -3
  100. package/dist/index146.js.map +1 -1
  101. package/dist/index147.js +3 -4
  102. package/dist/index147.js.map +1 -1
  103. package/dist/index148.js +3 -3
  104. package/dist/index148.js.map +1 -1
  105. package/dist/index149.js +3 -3
  106. package/dist/index149.js.map +1 -1
  107. package/dist/index15.js +2 -2
  108. package/dist/index150.js +46 -3
  109. package/dist/index150.js.map +1 -1
  110. package/dist/index151.js +2 -2
  111. package/dist/index153.js +2 -2
  112. package/dist/index154.js +1 -1
  113. package/dist/index16.js +2 -2
  114. package/dist/index17.js +1 -1
  115. package/dist/index18.js +7 -7
  116. package/dist/index181.js +1 -1
  117. package/dist/index19.js +3 -3
  118. package/dist/index21.js +1 -1
  119. package/dist/index22.js +2 -2
  120. package/dist/index228.js +1 -1
  121. package/dist/index229.js +1 -1
  122. package/dist/index23.js +1 -1
  123. package/dist/index231.js +1 -1
  124. package/dist/index233.js +1 -1
  125. package/dist/index234.js +1 -1
  126. package/dist/index235.js +4 -4
  127. package/dist/index236.js +2 -2
  128. package/dist/index24.js +1 -1
  129. package/dist/index25.js +1 -1
  130. package/dist/index269.js +1 -1
  131. package/dist/index271.js +4 -4
  132. package/dist/index28.js +2 -2
  133. package/dist/index29.js +3 -37
  134. package/dist/index29.js.map +1 -1
  135. package/dist/index294.js +69 -65
  136. package/dist/index294.js.map +1 -1
  137. package/dist/index295.js +8 -68
  138. package/dist/index295.js.map +1 -1
  139. package/dist/index296.js +14 -9
  140. package/dist/index296.js.map +1 -1
  141. package/dist/index297.js +66 -14
  142. package/dist/index297.js.map +1 -1
  143. package/dist/index298.js +64 -65
  144. package/dist/index298.js.map +1 -1
  145. package/dist/index3.js +92 -86
  146. package/dist/index3.js.map +1 -1
  147. package/dist/index30.js +125 -3
  148. package/dist/index30.js.map +1 -1
  149. package/dist/index31.js +227 -120
  150. package/dist/index31.js.map +1 -1
  151. package/dist/index32.js +21 -229
  152. package/dist/index32.js.map +1 -1
  153. package/dist/index33.js +50 -23
  154. package/dist/index33.js.map +1 -1
  155. package/dist/index34.js +21 -50
  156. package/dist/index34.js.map +1 -1
  157. package/dist/index35.js +126 -18
  158. package/dist/index35.js.map +1 -1
  159. package/dist/index36.js +205 -113
  160. package/dist/index36.js.map +1 -1
  161. package/dist/index37.js +74 -205
  162. package/dist/index37.js.map +1 -1
  163. package/dist/index38.js +115 -87
  164. package/dist/index38.js.map +1 -1
  165. package/dist/index39.js +5 -118
  166. package/dist/index39.js.map +1 -1
  167. package/dist/index4.js +2 -2
  168. package/dist/index40.js +819 -5
  169. package/dist/index40.js.map +1 -1
  170. package/dist/index41.js +56 -819
  171. package/dist/index41.js.map +1 -1
  172. package/dist/index42.js +37 -57
  173. package/dist/index42.js.map +1 -1
  174. package/dist/index45.js +1 -1
  175. package/dist/index46.js +1 -1
  176. package/dist/index49.js +1 -1
  177. package/dist/index5.js +2 -2
  178. package/dist/index50.js +1 -1
  179. package/dist/index51.js +7 -2
  180. package/dist/index51.js.map +1 -1
  181. package/dist/index52.js +34 -2
  182. package/dist/index52.js.map +1 -1
  183. package/dist/index53.js +49 -2
  184. package/dist/index53.js.map +1 -1
  185. package/dist/index54.js +8 -2
  186. package/dist/index54.js.map +1 -1
  187. package/dist/index55.js +11 -6
  188. package/dist/index55.js.map +1 -1
  189. package/dist/index56.js +2 -34
  190. package/dist/index56.js.map +1 -1
  191. package/dist/index57.js +2 -49
  192. package/dist/index57.js.map +1 -1
  193. package/dist/index58.js +3 -7
  194. package/dist/index58.js.map +1 -1
  195. package/dist/index59.js +47 -11
  196. package/dist/index59.js.map +1 -1
  197. package/dist/index6.js +5 -5
  198. package/dist/index60.js +50 -3
  199. package/dist/index60.js.map +1 -1
  200. package/dist/index61.js +7 -47
  201. package/dist/index61.js.map +1 -1
  202. package/dist/index62.js +12 -48
  203. package/dist/index62.js.map +1 -1
  204. package/dist/index63.js +133 -7
  205. package/dist/index63.js.map +1 -1
  206. package/dist/index64.js +10 -14
  207. package/dist/index64.js.map +1 -1
  208. package/dist/index65.js +210 -127
  209. package/dist/index65.js.map +1 -1
  210. package/dist/index66.js +12 -10
  211. package/dist/index66.js.map +1 -1
  212. package/dist/index67.js +44 -214
  213. package/dist/index67.js.map +1 -1
  214. package/dist/index68.js +49 -12
  215. package/dist/index68.js.map +1 -1
  216. package/dist/index69.js +4 -47
  217. package/dist/index69.js.map +1 -1
  218. package/dist/index7.js +2 -2
  219. package/dist/index70.js +5 -49
  220. package/dist/index70.js.map +1 -1
  221. package/dist/index71.js +28 -4
  222. package/dist/index71.js.map +1 -1
  223. package/dist/index72.js +50 -6
  224. package/dist/index72.js.map +1 -1
  225. package/dist/index73.js +9 -28
  226. package/dist/index73.js.map +1 -1
  227. package/dist/index74.js +2 -50
  228. package/dist/index74.js.map +1 -1
  229. package/dist/index75.js +2 -9
  230. package/dist/index75.js.map +1 -1
  231. package/dist/index79.js +52 -47
  232. package/dist/index79.js.map +1 -1
  233. package/dist/index8.js +3 -3
  234. package/dist/index80.js +5 -52
  235. package/dist/index80.js.map +1 -1
  236. package/dist/index81.js +4 -4
  237. package/dist/index81.js.map +1 -1
  238. package/dist/index82.js +15 -4
  239. package/dist/index82.js.map +1 -1
  240. package/dist/index83.js +5 -15
  241. package/dist/index83.js.map +1 -1
  242. package/dist/index84.js +7 -5
  243. package/dist/index84.js.map +1 -1
  244. package/dist/index85.js +15 -6
  245. package/dist/index85.js.map +1 -1
  246. package/dist/index86.js +4 -16
  247. package/dist/index86.js.map +1 -1
  248. package/dist/index87.js +1 -1
  249. package/dist/index87.js.map +1 -1
  250. package/dist/index88.js +5 -4
  251. package/dist/index88.js.map +1 -1
  252. package/dist/index89.js +4 -4
  253. package/dist/index89.js.map +1 -1
  254. package/dist/index9.js +1 -1
  255. package/dist/index90.js +4 -5
  256. package/dist/index90.js.map +1 -1
  257. package/dist/index91.js +2 -2
  258. package/dist/index91.js.map +1 -1
  259. package/dist/index92.js +5 -3
  260. package/dist/index92.js.map +1 -1
  261. package/dist/index93.js +24 -6
  262. package/dist/index93.js.map +1 -1
  263. package/dist/index94.js +6 -24
  264. package/dist/index94.js.map +1 -1
  265. package/dist/index95.js +4 -6
  266. package/dist/index95.js.map +1 -1
  267. package/dist/index96.js +5 -3
  268. package/dist/index96.js.map +1 -1
  269. package/dist/index97.js +5 -6
  270. package/dist/index97.js.map +1 -1
  271. package/dist/index98.js +4 -5
  272. package/dist/index98.js.map +1 -1
  273. package/dist/index99.js +4 -3
  274. package/dist/index99.js.map +1 -1
  275. package/package.json +1 -1
package/dist/index37.js CHANGED
@@ -1,225 +1,94 @@
1
- import { MAX_DIAL_CODE_LENGTH as W, COMMON_IDD_PREFIXES as $, DEFAULT_COUNTRY as x, COUNTRY_DIAL_CODES as C } from "./index36.js";
2
- import { getCountryCallingCode as p } from "./index40.js";
3
- import { AsYouType as I } from "./index77.js";
4
- import { validatePhoneNumberLength as D } from "./index78.js";
5
- function g(t) {
6
- return t.replace(/\D/g, "");
1
+ function c(t) {
2
+ if (!t)
3
+ return !1;
4
+ const e = t.charCodeAt(0);
5
+ return e >= 48 && e <= 57;
7
6
  }
8
- function P(t) {
9
- return t ? t.length > W ? !1 : C.some((e) => e.startsWith(t)) : !0;
7
+ function l(t, e) {
8
+ let n = 0;
9
+ const r = Math.min(e, t.length);
10
+ for (let i = 0; i < r; i += 1)
11
+ c(t[i] ?? "") && (n += 1);
12
+ return n;
10
13
  }
11
- const N = /[\u061C\u200B-\u200F\u202A-\u202E\u2066-\u2069\uFEFF]/g;
12
- function T(t) {
13
- return t.replace(N, "");
14
+ function a(t, e) {
15
+ if (e <= 0)
16
+ return t.startsWith("+") ? Math.min(1, t.length) : 0;
17
+ let n = 0;
18
+ for (let r = 0; r < t.length; r += 1)
19
+ if (c(t[r] ?? "") && (n += 1, n === e))
20
+ return r + 1;
21
+ return t.length;
14
22
  }
15
- function q(t, e, s = {}) {
16
- const {
17
- force: u = !1
18
- } = s, o = `+${e}`;
19
- if (!t.startsWith(o) || !u)
20
- return t;
21
- const i = t.slice(o.length).trimStart();
22
- if (i.startsWith("0"))
23
- return t;
24
- if (!i)
25
- return `${o} 0`;
26
- const [n, ...r] = i.split(" "), f = `0${n ?? ""}`, l = r.length > 0 ? ` ${r.join(" ")}` : "";
27
- return `${o} ${f}${l}`.replace(/\s\s+/g, " ").trimEnd();
28
- }
29
- const O = {
30
- GG: "GB",
31
- JE: "GB",
32
- IM: "GB"
33
- };
34
- function y(t) {
35
- if (t)
36
- return O[t] ?? t;
23
+ function g(t) {
24
+ return !t || c(t) ? !1 : t !== "+";
37
25
  }
38
- function _(t, e, s) {
39
- if (!t || !s || (t.nationalNumber ?? "").length < 4)
40
- return;
41
- const o = t.countryCallingCode;
42
- if (!o)
43
- return;
44
- const i = t.getMetadata, n = (typeof i == "function" ? i() : null)?.country_calling_codes?.[o];
45
- if (!n || n.length === 0)
46
- return;
47
- const r = [];
48
- for (const f of n) {
49
- const l = y(f);
50
- l && !r.includes(l) && r.push(l);
26
+ function h(t, e) {
27
+ let n = e;
28
+ for (; n > 0; ) {
29
+ const r = t[n - 1] ?? "";
30
+ if (!g(r))
31
+ break;
32
+ n -= 1;
51
33
  }
52
- if (r.length !== 0)
53
- return e && r.includes(e) ? e : r.includes(x) ? x : r[0];
34
+ return n;
54
35
  }
55
- function B(t, e, s, u) {
56
- if (!t)
57
- return !1;
58
- if (!u)
59
- return t.startsWith("0");
60
- if (!s || !t.startsWith(s) || !t.slice(s.length).startsWith("0"))
61
- return !1;
62
- const o = t.slice(s.length + 1), i = e.startsWith(s) ? e.slice(s.length) : e;
63
- return o === i;
64
- }
65
- function S(t) {
66
- for (const e of $)
67
- if (t.startsWith(e))
68
- return t.slice(e.length);
69
- return t;
70
- }
71
- function M(t, e, s = {}) {
72
- const {
73
- allowJustPlus: u = !1,
74
- removeNationalPrefix: o = !0,
75
- previousValue: i
76
- } = s, n = T(t).trim();
77
- if (!n)
78
- return "";
79
- if (n === "+")
80
- return u ? "+" : "";
81
- if (n.startsWith("+")) {
82
- const a = g(n);
83
- if (!a)
84
- return u ? "+" : "";
85
- const d = S(a);
86
- if (d !== a)
87
- return d ? `+${d}` : u ? "+" : "";
88
- if (o && e) {
89
- const h = p(e);
90
- if (a.startsWith(h) && a.slice(h.length).startsWith("0")) {
91
- const E = a.slice(h.length + 1);
92
- return E ? `+${h}${E}` : `+${h}`;
93
- }
94
- }
95
- return `+${a}`;
36
+ function S(t, e) {
37
+ let n = e;
38
+ for (; n < t.length; ) {
39
+ const r = t[n] ?? "";
40
+ if (!g(r))
41
+ break;
42
+ n += 1;
96
43
  }
97
- const r = g(n);
98
- if (!r)
99
- return "";
100
- const f = S(r);
101
- if (f !== r)
102
- return f ? `+${f}` : u ? "+" : "";
103
- const l = typeof i == "string" ? i : "", m = l && l.startsWith("+") ? g(l) : "";
104
- if (m && m.length > r.length && m.endsWith(r) && m.length - r.length <= W)
105
- return `+${r}`;
106
- if (r === "0")
107
- return "0";
108
- if (o && e && r.length > 1 && r.startsWith("0") && !r.startsWith("00")) {
109
- const a = p(e), d = r.slice(1);
110
- return d ? `+${a}${d}` : `+${a}`;
111
- }
112
- return e ? r.length <= 4 ? `+${r}` : `+${p(e)}${r}` : r;
44
+ return n;
113
45
  }
114
- function Y(t, e) {
115
- if (t === "+")
116
- return {
117
- international: "+",
118
- national: "",
119
- formatted: "+",
120
- phoneNumber: null,
121
- detectedCountry: void 0,
122
- inferredCountry: void 0,
123
- hasExplicitInternationalPrefix: !0
124
- };
125
- const s = /^\s*\+/.test(t), u = e ? new I(e) : new I(), o = u.input(t), i = u.getNumber(), c = g(t), n = y(i?.country ?? u.country ?? void 0), r = n ?? !i ? void 0 : y(_(i, e, c)), f = i?.formatInternational() ?? o, l = i?.formatNational() ?? g(f);
46
+ function m(t) {
47
+ const {
48
+ value: e
49
+ } = t, n = t.selectionStart ?? e.length, r = t.selectionEnd ?? n, i = n <= 1 && e.startsWith("+"), o = r <= 1 && e.startsWith("+");
126
50
  return {
127
- international: f,
128
- national: l,
129
- formatted: o,
130
- phoneNumber: i,
131
- detectedCountry: n,
132
- inferredCountry: r,
133
- hasExplicitInternationalPrefix: s
51
+ selectionStart: n,
52
+ selectionEnd: r,
53
+ startDigits: l(e, n),
54
+ endDigits: l(e, r),
55
+ preserveStartIndex: i,
56
+ preserveEndIndex: o,
57
+ wasAtStart: n === 0,
58
+ wasAtEnd: r === e.length
134
59
  };
135
60
  }
136
- function v(t, e) {
137
- return t.startsWith(e) ? t.slice(e.length) : t;
138
- }
139
- function H(t, e) {
140
- if (!e || !t)
141
- return null;
142
- try {
143
- return D(t, e) === "TOO_LONG" ? "TOO_LONG" : null;
144
- } catch {
145
- return null;
146
- }
147
- }
148
- function U(t, e, s, u = {}) {
149
- const {
150
- hasRemovedNationalPrefix: o = !1,
151
- detectedCountry: i,
152
- hasExplicitInternationalPrefix: c = !1
153
- } = u;
154
- if (!t)
155
- return {
156
- shouldSuggest: !1,
157
- query: ""
158
- };
159
- if (t === "+")
160
- return {
161
- shouldSuggest: !0,
162
- query: ""
163
- };
164
- const n = g(t);
165
- if (!n)
166
- return {
167
- shouldSuggest: !0,
168
- query: ""
169
- };
170
- if (o)
171
- return {
172
- shouldSuggest: !1,
173
- query: ""
174
- };
175
- if (c && !i)
176
- return P(n) ? {
177
- shouldSuggest: !0,
178
- query: n
179
- } : {
180
- shouldSuggest: !1,
181
- query: ""
182
- };
183
- let r = s?.countryCallingCode ?? null;
184
- if (!r) {
185
- if (e) {
186
- const l = p(e);
187
- n.startsWith(l) && (r = l);
188
- } else if (!c)
61
+ function u(t, e) {
62
+ if (t.selectionStart === t.selectionEnd) {
63
+ if (t.wasAtEnd) {
64
+ const f = e.length;
189
65
  return {
190
- shouldSuggest: !1,
191
- query: ""
66
+ start: f,
67
+ end: f
68
+ };
69
+ }
70
+ if (t.wasAtStart)
71
+ return {
72
+ start: 0,
73
+ end: 0
192
74
  };
193
75
  }
194
- return r ? v(n, r).length === 0 ? {
195
- shouldSuggest: !0,
196
- query: n
197
- } : {
198
- shouldSuggest: !1,
199
- query: ""
76
+ const n = t.preserveStartIndex ? Math.min(t.selectionStart, e.length) : a(e, t.startDigits), r = t.preserveEndIndex ? Math.min(t.selectionEnd, e.length) : a(e, t.endDigits);
77
+ let i = n, o = r;
78
+ t.wasAtStart && (i = 0), t.wasAtEnd && (o = e.length), t.selectionStart === t.selectionEnd && (i = o);
79
+ const d = Math.min(Math.max(i, 0), e.length), s = Math.min(Math.max(o, 0), e.length);
80
+ return d > s ? {
81
+ start: s,
82
+ end: s
200
83
  } : {
201
- shouldSuggest: !0,
202
- query: n
84
+ start: d,
85
+ end: s
203
86
  };
204
87
  }
205
- function V(t, e) {
206
- if (t.shouldSuggest)
207
- return !1;
208
- const {
209
- hasExplicitInternationalPrefix: s = !1,
210
- detectedCountry: u
211
- } = e;
212
- return s ? !!u : !0;
213
- }
214
88
  export {
215
- B as detectNationalPrefixForDisplay,
216
- Y as formatWithAsYouType,
217
- H as getLengthIssue,
218
- U as getSuggestionState,
219
- q as injectNationalPrefixDisplay,
220
- M as normalizeInputValue,
221
- g as sanitizeDigits,
222
- V as shouldDisplayExplicitCountrySelection,
223
- v as stripPrefix
89
+ m as captureSelectionSnapshot,
90
+ u as resolveSelection,
91
+ h as skipFormattingCharactersLeft,
92
+ S as skipFormattingCharactersRight
224
93
  };
225
94
  //# sourceMappingURL=index37.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index37.js","sources":["../src/components/PhoneNumberInput/normalization.ts"],"sourcesContent":["import type { CountryCode } from \"libphonenumber-js\"\nimport { AsYouType, getCountryCallingCode, validatePhoneNumberLength } from \"libphonenumber-js\"\n\nimport {\n COMMON_IDD_PREFIXES,\n COUNTRY_DIAL_CODES,\n DEFAULT_COUNTRY,\n MAX_DIAL_CODE_LENGTH,\n} from \"./country-options\"\n\n\nexport type LengthIssue = \"TOO_LONG\"\n\nexport function sanitizeDigits(value: string) {\n return value.replace(/\\D/g, \"\")\n}\n\nfunction isDialCodeProgress(digits: string) {\n if (!digits) {\n return true\n }\n\n if (digits.length > MAX_DIAL_CODE_LENGTH) {\n return false\n }\n\n return COUNTRY_DIAL_CODES.some((dial) => dial.startsWith(digits))\n}\n\nconst INVISIBLE_FORMATTING_CHARACTERS =\n /[\\u061C\\u200B-\\u200F\\u202A-\\u202E\\u2066-\\u2069\\uFEFF]/g\n\nfunction stripInvisibleFormatting(value: string) {\n return value.replace(INVISIBLE_FORMATTING_CHARACTERS, \"\")\n}\n\nexport function injectNationalPrefixDisplay(\n international: string,\n dialCode: string,\n options: { force?: boolean } = {}\n) {\n // Preserve a user-typed national trunk (e.g. the French \"0\") purely for display\n // so validation can continue to use the canonical E.164 representation internally.\n const { force = false } = options\n const prefix = `+${dialCode}`\n\n if (!international.startsWith(prefix)) {\n return international\n }\n\n if (!force) {\n return international\n }\n\n const remainder = international.slice(prefix.length).trimStart()\n const alreadyHasTrunk = remainder.startsWith(\"0\")\n\n if (alreadyHasTrunk) {\n return international\n }\n\n if (!remainder) {\n return `${prefix} 0`\n }\n\n const [firstGroup, ...restGroups] = remainder.split(\" \")\n const rebuiltFirstGroup = `0${firstGroup ?? \"\"}`\n const rebuiltRemainder = restGroups.length > 0 ? ` ${restGroups.join(\" \")}` : \"\"\n\n return `${prefix} ${rebuiltFirstGroup}${rebuiltRemainder}`.replace(/\\s\\s+/g, \" \").trimEnd()\n}\n\nconst DETECTED_COUNTRY_OVERRIDES: Partial<Record<CountryCode, CountryCode>> = {\n GG: \"GB\",\n JE: \"GB\",\n IM: \"GB\",\n}\n\nfunction canonicalizeDetectedCountry(candidate: CountryCode | undefined): CountryCode | undefined {\n if (!candidate) {\n return undefined\n }\n return DETECTED_COUNTRY_OVERRIDES[candidate] ?? candidate\n}\n\ntype AsYouTypeNumber = ReturnType<AsYouType[\"getNumber\"]>\n\nfunction inferCountryFromDialCode(\n phoneNumber: AsYouTypeNumber,\n baseCountry: CountryCode | undefined,\n normalizedDigits: string\n): CountryCode | undefined {\n if (!phoneNumber) {\n return undefined\n }\n\n if (!normalizedDigits) {\n return undefined\n }\n\n const nationalDigits = phoneNumber.nationalNumber ?? \"\"\n if (nationalDigits.length < 4) {\n return undefined\n }\n\n const dial = phoneNumber.countryCallingCode\n if (!dial) {\n return undefined\n }\n\n const metadataGetter = (phoneNumber as unknown as { getMetadata?: () => unknown }).getMetadata\n const metadata =\n typeof metadataGetter === \"function\"\n ? (metadataGetter() as {\n country_calling_codes?: Record<string, string[]>\n } | null)\n : null\n\n const candidates = metadata?.country_calling_codes?.[dial]\n if (!candidates || candidates.length === 0) {\n return undefined\n }\n\n const canonicalCandidates: CountryCode[] = []\n for (const candidate of candidates) {\n const canonical = canonicalizeDetectedCountry(candidate as CountryCode)\n if (canonical && !canonicalCandidates.includes(canonical)) {\n canonicalCandidates.push(canonical)\n }\n }\n\n if (canonicalCandidates.length === 0) {\n return undefined\n }\n\n if (baseCountry && canonicalCandidates.includes(baseCountry)) {\n return baseCountry\n }\n\n if (canonicalCandidates.includes(DEFAULT_COUNTRY)) {\n return DEFAULT_COUNTRY\n }\n\n return canonicalCandidates[0]\n}\n\nexport function detectNationalPrefixForDisplay(\n rawDigits: string,\n internationalDigits: string,\n dialCode: string,\n hasExplicitInternationalPrefix: boolean\n) {\n if (!rawDigits) {\n return false\n }\n\n if (!hasExplicitInternationalPrefix) {\n return rawDigits.startsWith(\"0\")\n }\n\n if (!dialCode) {\n return false\n }\n\n if (!rawDigits.startsWith(dialCode)) {\n return false\n }\n\n if (!rawDigits.slice(dialCode.length).startsWith(\"0\")) {\n return false\n }\n\n const rawAfterTrunk = rawDigits.slice(dialCode.length + 1)\n const internationalAfterDial = internationalDigits.startsWith(dialCode)\n ? internationalDigits.slice(dialCode.length)\n : internationalDigits\n\n return rawAfterTrunk === internationalAfterDial\n}\n\nfunction stripIddPrefix(digits: string) {\n for (const prefix of COMMON_IDD_PREFIXES) {\n if (digits.startsWith(prefix)) {\n return digits.slice(prefix.length)\n }\n }\n return digits\n}\n\nexport function normalizeInputValue(\n rawValue: string,\n country: CountryCode | undefined,\n options: {\n allowJustPlus?: boolean\n removeNationalPrefix?: boolean\n previousValue?: string\n } = {}\n) {\n const { allowJustPlus = false, removeNationalPrefix = true, previousValue } = options\n const cleaned = stripInvisibleFormatting(rawValue)\n const trimmed = cleaned.trim()\n\n if (!trimmed) {\n return \"\"\n }\n\n if (trimmed === \"+\") {\n return allowJustPlus ? \"+\" : \"\"\n }\n\n if (trimmed.startsWith(\"+\")) {\n const digits = sanitizeDigits(trimmed)\n if (!digits) {\n return allowJustPlus ? \"+\" : \"\"\n }\n const digitsWithoutIdd = stripIddPrefix(digits)\n if (digitsWithoutIdd !== digits) {\n return digitsWithoutIdd ? `+${digitsWithoutIdd}` : allowJustPlus ? \"+\" : \"\"\n }\n if (removeNationalPrefix && country) {\n const dial = getCountryCallingCode(country)\n if (digits.startsWith(dial) && digits.slice(dial.length).startsWith(\"0\")) {\n const withoutPrefix = digits.slice(dial.length + 1)\n return withoutPrefix ? `+${dial}${withoutPrefix}` : `+${dial}`\n }\n }\n return `+${digits}`\n }\n\n const digitsOnly = sanitizeDigits(trimmed)\n if (!digitsOnly) {\n return \"\"\n }\n\n const digitsWithoutIdd = stripIddPrefix(digitsOnly)\n if (digitsWithoutIdd !== digitsOnly) {\n return digitsWithoutIdd ? `+${digitsWithoutIdd}` : allowJustPlus ? \"+\" : \"\"\n }\n\n const previousNormalized = typeof previousValue === \"string\" ? previousValue : \"\"\n const previousDigits =\n previousNormalized && previousNormalized.startsWith(\"+\")\n ? sanitizeDigits(previousNormalized)\n : \"\"\n\n if (previousDigits && previousDigits.length > digitsOnly.length) {\n if (previousDigits.endsWith(digitsOnly)) {\n const removedPrefixLength = previousDigits.length - digitsOnly.length\n if (removedPrefixLength <= MAX_DIAL_CODE_LENGTH) {\n return `+${digitsOnly}`\n }\n }\n }\n\n if (digitsOnly === \"0\") {\n return \"0\"\n }\n\n if (\n removeNationalPrefix &&\n country &&\n digitsOnly.length > 1 &&\n digitsOnly.startsWith(\"0\") &&\n !digitsOnly.startsWith(\"00\")\n ) {\n const dial = getCountryCallingCode(country)\n const withoutPrefix = digitsOnly.slice(1)\n return withoutPrefix ? `+${dial}${withoutPrefix}` : `+${dial}`\n }\n\n if (!country) {\n return digitsOnly\n }\n\n if (digitsOnly.length <= 4) {\n return `+${digitsOnly}`\n }\n\n const dial = getCountryCallingCode(country)\n return `+${dial}${digitsOnly}`\n}\n\nexport function formatWithAsYouType(value: string, baseCountry?: CountryCode) {\n if (value === \"+\") {\n return {\n international: \"+\",\n national: \"\",\n formatted: \"+\",\n phoneNumber: null,\n detectedCountry: undefined,\n inferredCountry: undefined,\n hasExplicitInternationalPrefix: true,\n }\n }\n\n const hasExplicitInternationalPrefix = /^\\s*\\+/.test(value)\n const formatter = baseCountry ? new AsYouType(baseCountry) : new AsYouType()\n const formatted = formatter.input(value)\n const phoneNumber = formatter.getNumber()\n const digits = sanitizeDigits(value)\n const detectedCountry = canonicalizeDetectedCountry(\n (phoneNumber?.country ?? formatter.country ?? undefined) as CountryCode | undefined\n )\n const inferredCountry =\n detectedCountry ?? !phoneNumber\n ? undefined\n : canonicalizeDetectedCountry(\n inferCountryFromDialCode(phoneNumber, baseCountry, digits)\n )\n\n const international = phoneNumber?.formatInternational() ?? formatted\n const national = phoneNumber?.formatNational() ?? sanitizeDigits(international)\n\n return {\n international,\n national,\n formatted,\n phoneNumber,\n detectedCountry,\n inferredCountry,\n hasExplicitInternationalPrefix,\n }\n}\n\nexport function stripPrefix(value: string, prefix: string) {\n return value.startsWith(prefix) ? value.slice(prefix.length) : value\n}\n\nexport function getLengthIssue(value: string, country: CountryCode | undefined): LengthIssue | null {\n if (!country || !value) {\n return null\n }\n\n try {\n const result = validatePhoneNumberLength(value, country)\n return result === \"TOO_LONG\" ? \"TOO_LONG\" : null\n } catch {\n return null\n }\n}\n\ntype SuggestionState = {\n shouldSuggest: boolean\n query: string\n}\n\nexport function getSuggestionState(\n normalized: string,\n baseCountry: CountryCode | undefined,\n phoneNumber: ReturnType<AsYouType[\"getNumber\"]>,\n options: {\n hasRemovedNationalPrefix?: boolean\n detectedCountry?: CountryCode\n hasExplicitInternationalPrefix?: boolean\n } = {}\n): SuggestionState {\n const {\n hasRemovedNationalPrefix = false,\n detectedCountry,\n hasExplicitInternationalPrefix = false,\n } = options\n\n if (!normalized) {\n return { shouldSuggest: false, query: \"\" }\n }\n\n if (normalized === \"+\") {\n return { shouldSuggest: true, query: \"\" }\n }\n\n const digits = sanitizeDigits(normalized)\n if (!digits) {\n return { shouldSuggest: true, query: \"\" }\n }\n\n if (hasRemovedNationalPrefix) {\n return { shouldSuggest: false, query: \"\" }\n }\n\n if (hasExplicitInternationalPrefix && !detectedCountry) {\n if (!isDialCodeProgress(digits)) {\n return { shouldSuggest: false, query: \"\" }\n }\n return { shouldSuggest: true, query: digits }\n }\n\n let dial = phoneNumber?.countryCallingCode ?? null\n if (!dial) {\n if (baseCountry) {\n const baseDial = getCountryCallingCode(baseCountry)\n if (digits.startsWith(baseDial)) {\n dial = baseDial\n }\n } else if (!hasExplicitInternationalPrefix) {\n return { shouldSuggest: false, query: \"\" }\n }\n }\n\n if (!dial) {\n return { shouldSuggest: true, query: digits }\n }\n\n const nationalDigits = stripPrefix(digits, dial)\n if (nationalDigits.length === 0) {\n return { shouldSuggest: true, query: digits }\n }\n\n return { shouldSuggest: false, query: \"\" }\n}\n\nexport function shouldDisplayExplicitCountrySelection(\n suggestion: SuggestionState,\n options: { detectedCountry?: CountryCode; hasExplicitInternationalPrefix?: boolean }\n) {\n if (suggestion.shouldSuggest) {\n return false\n }\n\n const { hasExplicitInternationalPrefix = false, detectedCountry } = options\n\n if (!hasExplicitInternationalPrefix) {\n return true\n }\n\n return Boolean(detectedCountry)\n}\n"],"names":["sanitizeDigits","value","replace","isDialCodeProgress","digits","length","MAX_DIAL_CODE_LENGTH","COUNTRY_DIAL_CODES","some","dial","startsWith","INVISIBLE_FORMATTING_CHARACTERS","stripInvisibleFormatting","injectNationalPrefixDisplay","international","dialCode","options","force","prefix","remainder","slice","trimStart","firstGroup","restGroups","split","rebuiltFirstGroup","rebuiltRemainder","join","trimEnd","DETECTED_COUNTRY_OVERRIDES","GG","JE","IM","canonicalizeDetectedCountry","candidate","inferCountryFromDialCode","phoneNumber","baseCountry","normalizedDigits","nationalNumber","countryCallingCode","metadataGetter","getMetadata","candidates","country_calling_codes","canonicalCandidates","canonical","includes","push","DEFAULT_COUNTRY","detectNationalPrefixForDisplay","rawDigits","internationalDigits","hasExplicitInternationalPrefix","rawAfterTrunk","internationalAfterDial","stripIddPrefix","COMMON_IDD_PREFIXES","normalizeInputValue","rawValue","country","allowJustPlus","removeNationalPrefix","previousValue","trimmed","trim","digitsWithoutIdd","getCountryCallingCode","withoutPrefix","digitsOnly","previousNormalized","previousDigits","endsWith","formatWithAsYouType","national","formatted","detectedCountry","undefined","inferredCountry","test","formatter","AsYouType","input","getNumber","formatInternational","formatNational","stripPrefix","getLengthIssue","validatePhoneNumberLength","getSuggestionState","normalized","hasRemovedNationalPrefix","shouldSuggest","query","baseDial","shouldDisplayExplicitCountrySelection","suggestion","Boolean"],"mappings":";;;;AAaO,SAASA,EAAeC,GAAe;AAC5C,SAAOA,EAAMC,QAAQ,OAAO,EAAE;AAChC;AAEA,SAASC,EAAmBC,GAAgB;AAC1C,SAAKA,IAIDA,EAAOC,SAASC,IACX,KAGFC,EAAmBC,KAAMC,CAAAA,MAASA,EAAKC,WAAWN,CAAM,CAAC,IAPvD;AAQX;AAEA,MAAMO,IACJ;AAEF,SAASC,EAAyBX,GAAe;AAC/C,SAAOA,EAAMC,QAAQS,GAAiC,EAAE;AAC1D;AAEO,SAASE,EACdC,GACAC,GACAC,IAA+B,CAAA,GAC/B;AAGA,QAAM;AAAA,IAAEC,OAAAA,IAAQ;AAAA,EAAA,IAAUD,GACpBE,IAAS,IAAIH,CAAQ;AAM3B,MAJI,CAACD,EAAcJ,WAAWQ,CAAM,KAIhC,CAACD;AACH,WAAOH;AAGT,QAAMK,IAAYL,EAAcM,MAAMF,EAAOb,MAAM,EAAEgB,UAAAA;AAGrD,MAFwBF,EAAUT,WAAW,GAAG;AAG9C,WAAOI;AAGT,MAAI,CAACK;AACH,WAAO,GAAGD,CAAM;AAGlB,QAAM,CAACI,GAAY,GAAGC,CAAU,IAAIJ,EAAUK,MAAM,GAAG,GACjDC,IAAoB,IAAIH,KAAc,EAAE,IACxCI,IAAmBH,EAAWlB,SAAS,IAAI,IAAIkB,EAAWI,KAAK,GAAG,CAAC,KAAK;AAE9E,SAAO,GAAGT,CAAM,IAAIO,CAAiB,GAAGC,CAAgB,GAAGxB,QAAQ,UAAU,GAAG,EAAE0B,QAAAA;AACpF;AAEA,MAAMC,IAAwE;AAAA,EAC5EC,IAAI;AAAA,EACJC,IAAI;AAAA,EACJC,IAAI;AACN;AAEA,SAASC,EAA4BC,GAA6D;AAChG,MAAKA;AAGL,WAAOL,EAA2BK,CAAS,KAAKA;AAClD;AAIA,SAASC,EACPC,GACAC,GACAC,GACyB;AAUzB,MATI,CAACF,KAID,CAACE,MAIkBF,EAAYG,kBAAkB,IAClClC,SAAS;AAC1B;AAGF,QAAMI,IAAO2B,EAAYI;AACzB,MAAI,CAAC/B;AACH;AAGF,QAAMgC,IAAkBL,EAA2DM,aAQ7EC,KANJ,OAAOF,KAAmB,aACrBA,MAGD,OAEuBG,wBAAwBnC,CAAI;AACzD,MAAI,CAACkC,KAAcA,EAAWtC,WAAW;AACvC;AAGF,QAAMwC,IAAqC,CAAA;AAC3C,aAAWX,KAAaS,GAAY;AAClC,UAAMG,IAAYb,EAA4BC,CAAwB;AACtE,IAAIY,KAAa,CAACD,EAAoBE,SAASD,CAAS,KACtDD,EAAoBG,KAAKF,CAAS;AAAA,EAEtC;AAEA,MAAID,EAAoBxC,WAAW;AAInC,WAAIgC,KAAeQ,EAAoBE,SAASV,CAAW,IAClDA,IAGLQ,EAAoBE,SAASE,CAAe,IACvCA,IAGFJ,EAAoB,CAAC;AAC9B;AAEO,SAASK,EACdC,GACAC,GACArC,GACAsC,GACA;AACA,MAAI,CAACF;AACH,WAAO;AAGT,MAAI,CAACE;AACH,WAAOF,EAAUzC,WAAW,GAAG;AAWjC,MARI,CAACK,KAID,CAACoC,EAAUzC,WAAWK,CAAQ,KAI9B,CAACoC,EAAU/B,MAAML,EAASV,MAAM,EAAEK,WAAW,GAAG;AAClD,WAAO;AAGT,QAAM4C,IAAgBH,EAAU/B,MAAML,EAASV,SAAS,CAAC,GACnDkD,IAAyBH,EAAoB1C,WAAWK,CAAQ,IAClEqC,EAAoBhC,MAAML,EAASV,MAAM,IACzC+C;AAEJ,SAAOE,MAAkBC;AAC3B;AAEA,SAASC,EAAepD,GAAgB;AACtC,aAAWc,KAAUuC;AACnB,QAAIrD,EAAOM,WAAWQ,CAAM;AAC1B,aAAOd,EAAOgB,MAAMF,EAAOb,MAAM;AAGrC,SAAOD;AACT;AAEO,SAASsD,EACdC,GACAC,GACA5C,IAII,CAAA,GACJ;AACA,QAAM;AAAA,IAAE6C,eAAAA,IAAgB;AAAA,IAAOC,sBAAAA,IAAuB;AAAA,IAAMC,eAAAA;AAAAA,EAAAA,IAAkB/C,GAExEgD,IADUpD,EAAyB+C,CAAQ,EACzBM,KAAAA;AAExB,MAAI,CAACD;AACH,WAAO;AAGT,MAAIA,MAAY;AACd,WAAOH,IAAgB,MAAM;AAG/B,MAAIG,EAAQtD,WAAW,GAAG,GAAG;AAC3B,UAAMN,IAASJ,EAAegE,CAAO;AACrC,QAAI,CAAC5D;AACH,aAAOyD,IAAgB,MAAM;AAE/B,UAAMK,IAAmBV,EAAepD,CAAM;AAC9C,QAAI8D,MAAqB9D;AACvB,aAAO8D,IAAmB,IAAIA,CAAgB,KAAKL,IAAgB,MAAM;AAE3E,QAAIC,KAAwBF,GAAS;AACnC,YAAMnD,IAAO0D,EAAsBP,CAAO;AAC1C,UAAIxD,EAAOM,WAAWD,CAAI,KAAKL,EAAOgB,MAAMX,EAAKJ,MAAM,EAAEK,WAAW,GAAG,GAAG;AACxE,cAAM0D,IAAgBhE,EAAOgB,MAAMX,EAAKJ,SAAS,CAAC;AAClD,eAAO+D,IAAgB,IAAI3D,CAAI,GAAG2D,CAAa,KAAK,IAAI3D,CAAI;AAAA,MAC9D;AAAA,IACF;AACA,WAAO,IAAIL,CAAM;AAAA,EACnB;AAEA,QAAMiE,IAAarE,EAAegE,CAAO;AACzC,MAAI,CAACK;AACH,WAAO;AAGT,QAAMH,IAAmBV,EAAea,CAAU;AAClD,MAAIH,MAAqBG;AACvB,WAAOH,IAAmB,IAAIA,CAAgB,KAAKL,IAAgB,MAAM;AAG3E,QAAMS,IAAqB,OAAOP,KAAkB,WAAWA,IAAgB,IACzEQ,IACJD,KAAsBA,EAAmB5D,WAAW,GAAG,IACnDV,EAAesE,CAAkB,IACjC;AAEN,MAAIC,KAAkBA,EAAelE,SAASgE,EAAWhE,UACnDkE,EAAeC,SAASH,CAAU,KACRE,EAAelE,SAASgE,EAAWhE,UACpCC;AACzB,WAAO,IAAI+D,CAAU;AAK3B,MAAIA,MAAe;AACjB,WAAO;AAGT,MACEP,KACAF,KACAS,EAAWhE,SAAS,KACpBgE,EAAW3D,WAAW,GAAG,KACzB,CAAC2D,EAAW3D,WAAW,IAAI,GAC3B;AACA,UAAMD,IAAO0D,EAAsBP,CAAO,GACpCQ,IAAgBC,EAAWjD,MAAM,CAAC;AACxC,WAAOgD,IAAgB,IAAI3D,CAAI,GAAG2D,CAAa,KAAK,IAAI3D,CAAI;AAAA,EAC9D;AAEA,SAAKmD,IAIDS,EAAWhE,UAAU,IAChB,IAAIgE,CAAU,KAIhB,IADMF,EAAsBP,CAAO,CAC3B,GAAGS,CAAU,KARnBA;AASX;AAEO,SAASI,EAAoBxE,GAAeoC,GAA2B;AAC5E,MAAIpC,MAAU;AACZ,WAAO;AAAA,MACLa,eAAe;AAAA,MACf4D,UAAU;AAAA,MACVC,WAAW;AAAA,MACXvC,aAAa;AAAA,MACbwC,iBAAiBC;AAAAA,MACjBC,iBAAiBD;AAAAA,MACjBxB,gCAAgC;AAAA,IAAA;AAIpC,QAAMA,IAAiC,SAAS0B,KAAK9E,CAAK,GACpD+E,IAAY3C,IAAc,IAAI4C,EAAU5C,CAAW,IAAI,IAAI4C,EAAAA,GAC3DN,IAAYK,EAAUE,MAAMjF,CAAK,GACjCmC,IAAc4C,EAAUG,UAAAA,GACxB/E,IAASJ,EAAeC,CAAK,GAC7B2E,IAAkB3C,EACrBG,GAAawB,WAAWoB,EAAUpB,WAAWiB,MAChD,GACMC,IACJF,KAAmB,CAACxC,IAChByC,SACA5C,EACEE,EAAyBC,GAAaC,GAAajC,CAAM,CAC3D,GAEAU,IAAgBsB,GAAagD,oBAAAA,KAAyBT,GACtDD,IAAWtC,GAAaiD,eAAAA,KAAoBrF,EAAec,CAAa;AAE9E,SAAO;AAAA,IACLA,eAAAA;AAAAA,IACA4D,UAAAA;AAAAA,IACAC,WAAAA;AAAAA,IACAvC,aAAAA;AAAAA,IACAwC,iBAAAA;AAAAA,IACAE,iBAAAA;AAAAA,IACAzB,gCAAAA;AAAAA,EAAAA;AAEJ;AAEO,SAASiC,EAAYrF,GAAeiB,GAAgB;AACzD,SAAOjB,EAAMS,WAAWQ,CAAM,IAAIjB,EAAMmB,MAAMF,EAAOb,MAAM,IAAIJ;AACjE;AAEO,SAASsF,EAAetF,GAAe2D,GAAsD;AAClG,MAAI,CAACA,KAAW,CAAC3D;AACf,WAAO;AAGT,MAAI;AAEF,WADeuF,EAA0BvF,GAAO2D,CAAO,MACrC,aAAa,aAAa;AAAA,EAC9C,QAAQ;AACN,WAAO;AAAA,EACT;AACF;AAOO,SAAS6B,EACdC,GACArD,GACAD,GACApB,IAII,CAAA,GACa;AACjB,QAAM;AAAA,IACJ2E,0BAAAA,IAA2B;AAAA,IAC3Bf,iBAAAA;AAAAA,IACAvB,gCAAAA,IAAiC;AAAA,EAAA,IAC/BrC;AAEJ,MAAI,CAAC0E;AACH,WAAO;AAAA,MAAEE,eAAe;AAAA,MAAOC,OAAO;AAAA,IAAA;AAGxC,MAAIH,MAAe;AACjB,WAAO;AAAA,MAAEE,eAAe;AAAA,MAAMC,OAAO;AAAA,IAAA;AAGvC,QAAMzF,IAASJ,EAAe0F,CAAU;AACxC,MAAI,CAACtF;AACH,WAAO;AAAA,MAAEwF,eAAe;AAAA,MAAMC,OAAO;AAAA,IAAA;AAGvC,MAAIF;AACF,WAAO;AAAA,MAAEC,eAAe;AAAA,MAAOC,OAAO;AAAA,IAAA;AAGxC,MAAIxC,KAAkC,CAACuB;AACrC,WAAKzE,EAAmBC,CAAM,IAGvB;AAAA,MAAEwF,eAAe;AAAA,MAAMC,OAAOzF;AAAAA,IAAAA,IAF5B;AAAA,MAAEwF,eAAe;AAAA,MAAOC,OAAO;AAAA,IAAA;AAK1C,MAAIpF,IAAO2B,GAAaI,sBAAsB;AAC9C,MAAI,CAAC/B;AACH,QAAI4B,GAAa;AACf,YAAMyD,IAAW3B,EAAsB9B,CAAW;AAClD,MAAIjC,EAAOM,WAAWoF,CAAQ,MAC5BrF,IAAOqF;AAAAA,IAEX,WAAW,CAACzC;AACV,aAAO;AAAA,QAAEuC,eAAe;AAAA,QAAOC,OAAO;AAAA,MAAA;AAAA;AAI1C,SAAKpF,IAIkB6E,EAAYlF,GAAQK,CAAI,EAC5BJ,WAAW,IACrB;AAAA,IAAEuF,eAAe;AAAA,IAAMC,OAAOzF;AAAAA,EAAAA,IAGhC;AAAA,IAAEwF,eAAe;AAAA,IAAOC,OAAO;AAAA,EAAA,IAR7B;AAAA,IAAED,eAAe;AAAA,IAAMC,OAAOzF;AAAAA,EAAAA;AASzC;AAEO,SAAS2F,EACdC,GACAhF,GACA;AACA,MAAIgF,EAAWJ;AACb,WAAO;AAGT,QAAM;AAAA,IAAEvC,gCAAAA,IAAiC;AAAA,IAAOuB,iBAAAA;AAAAA,EAAAA,IAAoB5D;AAEpE,SAAKqC,IAIE4C,EAAQrB,IAHN;AAIX;"}
1
+ {"version":3,"file":"index37.js","sources":["../src/components/PhoneNumberInput/selection.ts"],"sourcesContent":["function isDigitCharacter(char: string) {\n if (!char) {\n return false\n }\n const code = char.charCodeAt(0)\n return code >= 48 && code <= 57\n}\n\nfunction countDigitsBefore(value: string, index: number) {\n let count = 0\n const limit = Math.min(index, value.length)\n for (let position = 0; position < limit; position += 1) {\n if (isDigitCharacter(value[position] ?? \"\")) {\n count += 1\n }\n }\n return count\n}\n\nfunction findIndexForDigitCount(value: string, digitCount: number) {\n if (digitCount <= 0) {\n return value.startsWith(\"+\") ? Math.min(1, value.length) : 0\n }\n\n let seen = 0\n for (let index = 0; index < value.length; index += 1) {\n if (isDigitCharacter(value[index] ?? \"\")) {\n seen += 1\n if (seen === digitCount) {\n return index + 1\n }\n }\n }\n\n return value.length\n}\n\nfunction isFormattingCharacter(char: string) {\n if (!char) {\n return false\n }\n if (isDigitCharacter(char)) {\n return false\n }\n return char !== \"+\"\n}\n\nexport function skipFormattingCharactersLeft(value: string, index: number) {\n let position = index\n while (position > 0) {\n const next = value[position - 1] ?? \"\"\n if (!isFormattingCharacter(next)) {\n break\n }\n position -= 1\n }\n return position\n}\n\nexport function skipFormattingCharactersRight(value: string, index: number) {\n let position = index\n while (position < value.length) {\n const next = value[position] ?? \"\"\n if (!isFormattingCharacter(next)) {\n break\n }\n position += 1\n }\n return position\n}\n\ntype SelectionSnapshot = {\n selectionStart: number\n selectionEnd: number\n startDigits: number\n endDigits: number\n preserveStartIndex: boolean\n preserveEndIndex: boolean\n wasAtStart: boolean\n wasAtEnd: boolean\n}\n\nexport function captureSelectionSnapshot(input: HTMLInputElement): SelectionSnapshot {\n const { value } = input\n const selectionStart = input.selectionStart ?? value.length\n const selectionEnd = input.selectionEnd ?? selectionStart\n const preserveStartIndex = selectionStart <= 1 && value.startsWith(\"+\")\n const preserveEndIndex = selectionEnd <= 1 && value.startsWith(\"+\")\n\n return {\n selectionStart,\n selectionEnd,\n startDigits: countDigitsBefore(value, selectionStart),\n endDigits: countDigitsBefore(value, selectionEnd),\n preserveStartIndex,\n preserveEndIndex,\n wasAtStart: selectionStart === 0,\n wasAtEnd: selectionEnd === value.length,\n }\n}\n\nexport function resolveSelection(snapshot: SelectionSnapshot, value: string) {\n if (snapshot.selectionStart === snapshot.selectionEnd) {\n if (snapshot.wasAtEnd) {\n const end = value.length\n return { start: end, end }\n }\n if (snapshot.wasAtStart) {\n return { start: 0, end: 0 }\n }\n }\n\n const start = snapshot.preserveStartIndex\n ? Math.min(snapshot.selectionStart, value.length)\n : findIndexForDigitCount(value, snapshot.startDigits)\n const end = snapshot.preserveEndIndex\n ? Math.min(snapshot.selectionEnd, value.length)\n : findIndexForDigitCount(value, snapshot.endDigits)\n\n let resolvedStart = start\n let resolvedEnd = end\n\n if (snapshot.wasAtStart) {\n resolvedStart = 0\n }\n\n if (snapshot.wasAtEnd) {\n resolvedEnd = value.length\n }\n\n if (snapshot.selectionStart === snapshot.selectionEnd) {\n resolvedStart = resolvedEnd\n }\n\n const clampedStart = Math.min(Math.max(resolvedStart, 0), value.length)\n const clampedEnd = Math.min(Math.max(resolvedEnd, 0), value.length)\n\n if (clampedStart > clampedEnd) {\n return { start: clampedEnd, end: clampedEnd }\n }\n\n return { start: clampedStart, end: clampedEnd }\n}\n\n"],"names":["isDigitCharacter","char","code","charCodeAt","countDigitsBefore","value","index","count","limit","Math","min","length","position","findIndexForDigitCount","digitCount","startsWith","seen","isFormattingCharacter","skipFormattingCharactersLeft","next","skipFormattingCharactersRight","captureSelectionSnapshot","input","selectionStart","selectionEnd","preserveStartIndex","preserveEndIndex","startDigits","endDigits","wasAtStart","wasAtEnd","resolveSelection","snapshot","end","start","resolvedStart","resolvedEnd","clampedStart","max","clampedEnd"],"mappings":"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"}
package/dist/index38.js CHANGED
@@ -1,94 +1,122 @@
1
- function c(t) {
2
- if (!t)
3
- return !1;
4
- const e = t.charCodeAt(0);
5
- return e >= 48 && e <= 57;
6
- }
7
- function l(t, e) {
8
- let n = 0;
9
- const r = Math.min(e, t.length);
10
- for (let i = 0; i < r; i += 1)
11
- c(t[i] ?? "") && (n += 1);
12
- return n;
13
- }
14
- function a(t, e) {
15
- if (e <= 0)
16
- return t.startsWith("+") ? Math.min(1, t.length) : 0;
17
- let n = 0;
18
- for (let r = 0; r < t.length; r += 1)
19
- if (c(t[r] ?? "") && (n += 1, n === e))
20
- return r + 1;
21
- return t.length;
22
- }
23
- function g(t) {
24
- return !t || c(t) ? !1 : t !== "+";
25
- }
26
- function h(t, e) {
27
- let n = e;
28
- for (; n > 0; ) {
29
- const r = t[n - 1] ?? "";
30
- if (!g(r))
31
- break;
32
- n -= 1;
1
+ import { j as r } from "./index28.js";
2
+ import { c as M } from "./index29.js";
3
+ import * as p from "react";
4
+ import { cn as E } from "./index2.js";
5
+ const P = p.createContext(null);
6
+ function T(t, e) {
7
+ if (typeof t == "function") {
8
+ t(e);
9
+ return;
33
10
  }
34
- return n;
11
+ t && typeof t == "object" && Reflect.set(t, "current", e);
35
12
  }
36
- function S(t, e) {
37
- let n = e;
38
- for (; n < t.length; ) {
39
- const r = t[n] ?? "";
40
- if (!g(r))
41
- break;
42
- n += 1;
43
- }
44
- return n;
45
- }
46
- function m(t) {
47
- const {
48
- value: e
49
- } = t, n = t.selectionStart ?? e.length, r = t.selectionEnd ?? n, i = n <= 1 && e.startsWith("+"), o = r <= 1 && e.startsWith("+");
50
- return {
51
- selectionStart: n,
52
- selectionEnd: r,
53
- startDigits: l(e, n),
54
- endDigits: l(e, r),
55
- preserveStartIndex: i,
56
- preserveEndIndex: o,
57
- wasAtStart: n === 0,
58
- wasAtEnd: r === e.length
59
- };
13
+ const V = (t) => {
14
+ const e = M.c(30), n = p.useContext(P), o = n?.highlightedValue === t.data.value;
15
+ let l, i, c;
16
+ e[0] !== t.innerProps ? ({
17
+ onMouseMove: l,
18
+ className: i,
19
+ ...c
20
+ } = t.innerProps, e[0] = t.innerProps, e[1] = l, e[2] = i, e[3] = c) : (l = e[1], i = e[2], c = e[3]);
21
+ let f;
22
+ e[4] !== n?.renderOptionLabel ? (f = n?.renderOptionLabel ?? z, e[4] = n?.renderOptionLabel, e[5] = f) : f = e[5];
23
+ const b = f, N = p.useRef(null), {
24
+ innerRef: S
25
+ } = t;
26
+ let m;
27
+ e[6] !== S ? (m = (s) => {
28
+ N.current = s, T(S, s);
29
+ }, e[6] = S, e[7] = m) : m = e[7];
30
+ const j = m;
31
+ let g;
32
+ e[8] !== n?.consumeScrollBehavior || e[9] !== o ? (g = () => {
33
+ if (!o)
34
+ return;
35
+ const s = n?.consumeScrollBehavior, B = s ? s() : "smooth", d = N.current;
36
+ if (!d)
37
+ return;
38
+ const R = d.parentElement;
39
+ if (!R)
40
+ return;
41
+ const O = d.offsetTop, H = O + d.offsetHeight, w = R.scrollTop, L = w + R.clientHeight;
42
+ O >= w && H <= L || d.scrollIntoView({
43
+ block: "nearest",
44
+ behavior: B
45
+ });
46
+ }, e[8] = n?.consumeScrollBehavior, e[9] = o, e[10] = g) : g = e[10];
47
+ let h;
48
+ e[11] !== n || e[12] !== o ? (h = [n, o], e[11] = n, e[12] = o, e[13] = h) : h = e[13], p.useEffect(g, h);
49
+ let x;
50
+ e[14] !== n || e[15] !== l || e[16] !== t.data ? (x = (s) => {
51
+ l?.(s), n?.setHighlightedOption(t.data);
52
+ }, e[14] = n, e[15] = l, e[16] = t.data, e[17] = x) : x = e[17];
53
+ const y = x, C = o ? "bg-muted text-foreground" : "text-foreground hover:bg-muted";
54
+ let a;
55
+ e[18] !== i || e[19] !== C ? (a = E("flex cursor-pointer items-center justify-between gap-3 px-3 py-2 text-sm", i, C), e[18] = i, e[19] = C, e[20] = a) : a = e[20];
56
+ let u;
57
+ e[21] !== t.data || e[22] !== b ? (u = b(t.data), e[21] = t.data, e[22] = b, e[23] = u) : u = e[23];
58
+ let v;
59
+ return e[24] !== j || e[25] !== y || e[26] !== c || e[27] !== a || e[28] !== u ? (v = /* @__PURE__ */ r.jsx("div", { ref: j, ...c, onMouseMove: y, className: a, children: u }), e[24] = j, e[25] = y, e[26] = c, e[27] = a, e[28] = u, e[29] = v) : v = e[29], v;
60
+ }, $ = {
61
+ control: () => ({
62
+ display: "none"
63
+ }),
64
+ menu: (t) => ({
65
+ ...t,
66
+ marginTop: 4,
67
+ borderRadius: "var(--radius)",
68
+ boxShadow: "0 18px 36px rgba(15, 23, 42, 0.18)",
69
+ backgroundColor: "hsl(var(--popover))",
70
+ overflow: "hidden",
71
+ zIndex: 20
72
+ }),
73
+ menuList: (t) => ({
74
+ ...t,
75
+ maxHeight: 240,
76
+ padding: 0
77
+ }),
78
+ option: (t, e) => ({
79
+ ...t,
80
+ fontSize: "0.875rem",
81
+ backgroundColor: e.isFocused ? "hsl(var(--muted))" : e.isSelected ? "hsl(var(--accent))" : "transparent",
82
+ color: e.isSelected ? "hsl(var(--accent-foreground))" : "hsl(var(--foreground))",
83
+ cursor: "pointer"
84
+ }),
85
+ noOptionsMessage: (t) => ({
86
+ ...t,
87
+ fontSize: "0.875rem",
88
+ color: "hsl(var(--muted-foreground))"
89
+ })
90
+ }, A = (t) => {
91
+ const e = M.c(3);
92
+ let n;
93
+ e[0] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel") ? (n = {
94
+ display: "none"
95
+ }, e[0] = n) : n = e[0];
96
+ let o;
97
+ return e[1] !== t.children ? (o = /* @__PURE__ */ r.jsx("div", { style: n, children: t.children }), e[1] = t.children, e[2] = o) : o = e[2], o;
98
+ }, q = () => null;
99
+ function k(t) {
100
+ return /* @__PURE__ */ r.jsxs(r.Fragment, { children: [
101
+ /* @__PURE__ */ r.jsxs("span", { className: "flex min-w-0 items-center gap-2", children: [
102
+ t.flag ? /* @__PURE__ */ r.jsx("span", { "aria-hidden": "true", className: "text-lg leading-none", children: t.flag }) : null,
103
+ /* @__PURE__ */ r.jsx("span", { className: "truncate", children: t.name })
104
+ ] }),
105
+ /* @__PURE__ */ r.jsxs("span", { className: "text-xs text-muted-foreground", children: [
106
+ "+",
107
+ t.dialCode
108
+ ] })
109
+ ] });
60
110
  }
61
- function u(t, e) {
62
- if (t.selectionStart === t.selectionEnd) {
63
- if (t.wasAtEnd) {
64
- const f = e.length;
65
- return {
66
- start: f,
67
- end: f
68
- };
69
- }
70
- if (t.wasAtStart)
71
- return {
72
- start: 0,
73
- end: 0
74
- };
75
- }
76
- const n = t.preserveStartIndex ? Math.min(t.selectionStart, e.length) : a(e, t.startDigits), r = t.preserveEndIndex ? Math.min(t.selectionEnd, e.length) : a(e, t.endDigits);
77
- let i = n, o = r;
78
- t.wasAtStart && (i = 0), t.wasAtEnd && (o = e.length), t.selectionStart === t.selectionEnd && (i = o);
79
- const d = Math.min(Math.max(i, 0), e.length), s = Math.min(Math.max(o, 0), e.length);
80
- return d > s ? {
81
- start: s,
82
- end: s
83
- } : {
84
- start: d,
85
- end: s
86
- };
111
+ function z(t) {
112
+ return k(t);
87
113
  }
88
114
  export {
89
- m as captureSelectionSnapshot,
90
- u as resolveSelection,
91
- h as skipFormattingCharactersLeft,
92
- S as skipFormattingCharactersRight
115
+ A as HiddenControl,
116
+ q as NullComponent,
117
+ P as SuggestionContext,
118
+ V as SuggestionOption,
119
+ k as formatCountryOption,
120
+ $ as suggestionSelectStyles
93
121
  };
94
122
  //# sourceMappingURL=index38.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index38.js","sources":["../src/components/PhoneNumberInput/selection.ts"],"sourcesContent":["function isDigitCharacter(char: string) {\n if (!char) {\n return false\n }\n const code = char.charCodeAt(0)\n return code >= 48 && code <= 57\n}\n\nfunction countDigitsBefore(value: string, index: number) {\n let count = 0\n const limit = Math.min(index, value.length)\n for (let position = 0; position < limit; position += 1) {\n if (isDigitCharacter(value[position] ?? \"\")) {\n count += 1\n }\n }\n return count\n}\n\nfunction findIndexForDigitCount(value: string, digitCount: number) {\n if (digitCount <= 0) {\n return value.startsWith(\"+\") ? Math.min(1, value.length) : 0\n }\n\n let seen = 0\n for (let index = 0; index < value.length; index += 1) {\n if (isDigitCharacter(value[index] ?? \"\")) {\n seen += 1\n if (seen === digitCount) {\n return index + 1\n }\n }\n }\n\n return value.length\n}\n\nfunction isFormattingCharacter(char: string) {\n if (!char) {\n return false\n }\n if (isDigitCharacter(char)) {\n return false\n }\n return char !== \"+\"\n}\n\nexport function skipFormattingCharactersLeft(value: string, index: number) {\n let position = index\n while (position > 0) {\n const next = value[position - 1] ?? \"\"\n if (!isFormattingCharacter(next)) {\n break\n }\n position -= 1\n }\n return position\n}\n\nexport function skipFormattingCharactersRight(value: string, index: number) {\n let position = index\n while (position < value.length) {\n const next = value[position] ?? \"\"\n if (!isFormattingCharacter(next)) {\n break\n }\n position += 1\n }\n return position\n}\n\ntype SelectionSnapshot = {\n selectionStart: number\n selectionEnd: number\n startDigits: number\n endDigits: number\n preserveStartIndex: boolean\n preserveEndIndex: boolean\n wasAtStart: boolean\n wasAtEnd: boolean\n}\n\nexport function captureSelectionSnapshot(input: HTMLInputElement): SelectionSnapshot {\n const { value } = input\n const selectionStart = input.selectionStart ?? value.length\n const selectionEnd = input.selectionEnd ?? selectionStart\n const preserveStartIndex = selectionStart <= 1 && value.startsWith(\"+\")\n const preserveEndIndex = selectionEnd <= 1 && value.startsWith(\"+\")\n\n return {\n selectionStart,\n selectionEnd,\n startDigits: countDigitsBefore(value, selectionStart),\n endDigits: countDigitsBefore(value, selectionEnd),\n preserveStartIndex,\n preserveEndIndex,\n wasAtStart: selectionStart === 0,\n wasAtEnd: selectionEnd === value.length,\n }\n}\n\nexport function resolveSelection(snapshot: SelectionSnapshot, value: string) {\n if (snapshot.selectionStart === snapshot.selectionEnd) {\n if (snapshot.wasAtEnd) {\n const end = value.length\n return { start: end, end }\n }\n if (snapshot.wasAtStart) {\n return { start: 0, end: 0 }\n }\n }\n\n const start = snapshot.preserveStartIndex\n ? Math.min(snapshot.selectionStart, value.length)\n : findIndexForDigitCount(value, snapshot.startDigits)\n const end = snapshot.preserveEndIndex\n ? Math.min(snapshot.selectionEnd, value.length)\n : findIndexForDigitCount(value, snapshot.endDigits)\n\n let resolvedStart = start\n let resolvedEnd = end\n\n if (snapshot.wasAtStart) {\n resolvedStart = 0\n }\n\n if (snapshot.wasAtEnd) {\n resolvedEnd = value.length\n }\n\n if (snapshot.selectionStart === snapshot.selectionEnd) {\n resolvedStart = resolvedEnd\n }\n\n const clampedStart = Math.min(Math.max(resolvedStart, 0), value.length)\n const clampedEnd = Math.min(Math.max(resolvedEnd, 0), value.length)\n\n if (clampedStart > clampedEnd) {\n return { start: clampedEnd, end: clampedEnd }\n }\n\n return { start: clampedStart, end: clampedEnd }\n}\n\n"],"names":["isDigitCharacter","char","code","charCodeAt","countDigitsBefore","value","index","count","limit","Math","min","length","position","findIndexForDigitCount","digitCount","startsWith","seen","isFormattingCharacter","skipFormattingCharactersLeft","next","skipFormattingCharactersRight","captureSelectionSnapshot","input","selectionStart","selectionEnd","preserveStartIndex","preserveEndIndex","startDigits","endDigits","wasAtStart","wasAtEnd","resolveSelection","snapshot","end","start","resolvedStart","resolvedEnd","clampedStart","max","clampedEnd"],"mappings":"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"}
1
+ {"version":3,"file":"index38.js","sources":["../src/components/PhoneNumberInput/suggestions.tsx"],"sourcesContent":["import * as React from \"react\"\nimport type { CountryCode } from \"libphonenumber-js\"\nimport type { ControlProps, OptionProps, StylesConfig } from \"react-select\"\n\nimport { cn } from \"@/lib/utils\"\n\nimport type { CountryOption } from \"./types\"\n\n\nexport type SuggestionContextValue = {\n highlightedValue: CountryCode | null\n setHighlightedOption: (option: CountryOption) => void\n renderOptionLabel: (option: CountryOption) => React.ReactNode\n consumeScrollBehavior: () => ScrollBehavior\n}\n\nexport const SuggestionContext = React.createContext<SuggestionContextValue | null>(null)\n\nfunction assignOptionRef(ref: React.Ref<HTMLDivElement> | undefined, node: HTMLDivElement | null) {\n if (typeof ref === \"function\") {\n ref(node)\n return\n }\n if (ref && typeof ref === \"object\") {\n Reflect.set(ref, \"current\", node)\n }\n}\n\nexport const SuggestionOption = (props: OptionProps<CountryOption, false>) => {\n const context = React.useContext(SuggestionContext)\n const isActive = context?.highlightedValue === props.data.value\n const { onMouseMove, className: receivedClassName, ...restInnerProps } = props.innerProps\n const renderLabel =\n context?.renderOptionLabel ?? ((option: CountryOption) => formatCountryOption(option))\n const optionRef = React.useRef<HTMLDivElement | null>(null)\n const { innerRef } = props\n\n const assignRef = React.useCallback(\n (node: HTMLDivElement | null) => {\n optionRef.current = node\n assignOptionRef(innerRef, node)\n },\n [innerRef]\n )\n\n React.useEffect(() => {\n if (!isActive) {\n return\n }\n\n const consumeScrollBehavior = context?.consumeScrollBehavior\n const behavior = consumeScrollBehavior ? consumeScrollBehavior() : \"smooth\"\n\n const target = optionRef.current\n if (!target) {\n return\n }\n\n const parent = target.parentElement\n if (!parent) {\n return\n }\n\n const top = target.offsetTop\n const bottom = top + target.offsetHeight\n const viewTop = parent.scrollTop\n const viewBottom = viewTop + parent.clientHeight\n\n if (top >= viewTop && bottom <= viewBottom) {\n return\n }\n\n target.scrollIntoView({\n block: \"nearest\",\n behavior,\n })\n }, [context, isActive])\n\n const handleMouseMove = (event: React.MouseEvent<HTMLDivElement>) => {\n onMouseMove?.(event)\n context?.setHighlightedOption(props.data)\n }\n\n return (\n <div\n ref={assignRef}\n {...restInnerProps}\n onMouseMove={handleMouseMove}\n className={cn(\n \"flex cursor-pointer items-center justify-between gap-3 px-3 py-2 text-sm\",\n receivedClassName,\n isActive ? \"bg-muted text-foreground\" : \"text-foreground hover:bg-muted\"\n )}\n >\n {renderLabel(props.data)}\n </div>\n )\n}\n\nexport const suggestionSelectStyles: StylesConfig<CountryOption, false> = {\n control: () => ({\n display: \"none\",\n }),\n menu: (provided) => ({\n ...provided,\n marginTop: 4,\n borderRadius: \"var(--radius)\",\n boxShadow: \"0 18px 36px rgba(15, 23, 42, 0.18)\",\n backgroundColor: \"hsl(var(--popover))\",\n overflow: \"hidden\",\n zIndex: 20,\n }),\n menuList: (provided) => ({\n ...provided,\n maxHeight: 240,\n padding: 0,\n }),\n option: (provided, state) => ({\n ...provided,\n fontSize: \"0.875rem\",\n backgroundColor: state.isFocused\n ? \"hsl(var(--muted))\"\n : state.isSelected\n ? \"hsl(var(--accent))\"\n : \"transparent\",\n color: state.isSelected\n ? \"hsl(var(--accent-foreground))\"\n : \"hsl(var(--foreground))\",\n cursor: \"pointer\",\n }),\n noOptionsMessage: (provided) => ({\n ...provided,\n fontSize: \"0.875rem\",\n color: \"hsl(var(--muted-foreground))\",\n }),\n}\n\nexport const HiddenControl = (props: ControlProps<CountryOption, false>) => (\n <div style={{ display: \"none\" }}>{props.children}</div>\n)\n\nexport const NullComponent = () => null\n\nexport function formatCountryOption(option: CountryOption) {\n return (\n <>\n <span className=\"flex min-w-0 items-center gap-2\">\n {option.flag ? (\n <span aria-hidden=\"true\" className=\"text-lg leading-none\">\n {option.flag}\n </span>\n ) : null}\n <span className=\"truncate\">{option.name}</span>\n </span>\n <span className=\"text-xs text-muted-foreground\">+{option.dialCode}</span>\n </>\n )\n}\n"],"names":["SuggestionContext","React","createContext","assignOptionRef","ref","node","Reflect","set","SuggestionOption","props","$","_c","context","useContext","isActive","highlightedValue","data","value","onMouseMove","receivedClassName","restInnerProps","innerProps","className","t0","renderOptionLabel","_temp","renderLabel","optionRef","useRef","innerRef","t1","current","assignRef","t2","consumeScrollBehavior","behavior","target","parent","parentElement","top","offsetTop","bottom","offsetHeight","viewTop","scrollTop","viewBottom","clientHeight","scrollIntoView","block","t3","useEffect","t4","event","setHighlightedOption","handleMouseMove","t5","t6","cn","t7","t8","jsx","suggestionSelectStyles","control","display","menu","provided","marginTop","borderRadius","boxShadow","backgroundColor","overflow","zIndex","menuList","maxHeight","padding","option","state","fontSize","isFocused","isSelected","color","cursor","noOptionsMessage","HiddenControl","Symbol","for","children","NullComponent","formatCountryOption","jsxs","Fragment","flag","name","dialCode"],"mappings":"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"}