@rpcbase/ui 0.259.0 → 0.260.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.
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/PhoneNumberInput/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAEpD,OAAe,EACb,KAAK,KAAK,IAAI,WAAW,EAG1B,MAAM,cAAc,CAAA;AAIrB,OAAO,KAAK,EACV,aAAa,EACb,wBAAwB,EAExB,0BAA0B,EAC3B,MAAM,SAAS,CAAA;AAsChB,YAAY,EACV,aAAa,EACb,wBAAwB,EACxB,wBAAwB,EACxB,qBAAqB,EACrB,8BAA8B,EAC9B,0BAA0B,GAC3B,MAAM,SAAS,CAAA;AA+MhB,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;0CAq1B5B,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/PhoneNumberInput/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAEpD,OAAe,EACb,KAAK,KAAK,IAAI,WAAW,EAG1B,MAAM,cAAc,CAAA;AAIrB,OAAO,KAAK,EACV,aAAa,EACb,wBAAwB,EAExB,0BAA0B,EAC3B,MAAM,SAAS,CAAA;AAsChB,YAAY,EACV,aAAa,EACb,wBAAwB,EACxB,wBAAwB,EACxB,qBAAqB,EACrB,8BAA8B,EAC9B,0BAA0B,GAC3B,MAAM,SAAS,CAAA;AA+MhB,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;0CAm2B5B,CAAA"}
package/dist/index362.js CHANGED
@@ -1,7 +1,7 @@
1
1
  import { cn as e } from "./index12.js";
2
2
  import { getCountryCallingCode as t } from "./index355.js";
3
3
  import { resolveMessages as n } from "./index356.js";
4
- import { COMMON_IDD_PREFIXES as r, buildFallbackSelectedCountry as i, getCachedCountryOptions as a, getLocaleCacheKey as o, getValidCountry as s, normalizeSearchValue as ee, optionMatchIndex as c, parseLocaleCacheKey as te, toSelectedCountry as l } from "./index358.js";
4
+ import { COMMON_IDD_PREFIXES as r, buildFallbackSelectedCountry as i, getCachedCountryOptions as a, getLocaleCacheKey as o, getValidCountry as s, normalizeSearchValue as ee, optionMatchIndex as c, parseLocaleCacheKey as l, toSelectedCountry as te } from "./index358.js";
5
5
  import { formatWithAsYouType as u, getLengthIssue as d, sanitizeDigits as f, stripPrefix as ne } from "./index359.js";
6
6
  import { captureSelectionSnapshot as p, resolveSelection as m, skipFormattingCharactersLeft as re, skipFormattingCharactersRight as ie } from "./index360.js";
7
7
  import { HiddenControl as ae, NullComponent as h, SuggestionContext as oe, SuggestionOption as se, formatCountryOption as ce, suggestionSelectStyles as le } from "./index361.js";
@@ -95,9 +95,9 @@ function x(e, n) {
95
95
  isValid: !1,
96
96
  lengthIssue: null
97
97
  };
98
- let a = i ?? r, { international: o, national: s, formatted: ee, phoneNumber: c, detectedCountry: te } = u(a, n), l = i != null, p = l ? te ?? n ?? null : n ?? te ?? null, m = he(p, c?.countryCallingCode), re = f(a), ie = c?.nationalNumber ?? (m && a.startsWith("+") ? ne(re, m) : f(r));
98
+ let a = i ?? r, { international: o, national: s, formatted: ee, phoneNumber: c, detectedCountry: l } = u(a, n), te = i != null, p = te ? l ?? n ?? null : n ?? l ?? null, m = he(p, c?.countryCallingCode), re = f(a), ie = c?.nationalNumber ?? (m && a.startsWith("+") ? ne(re, m) : f(r));
99
99
  return {
100
- displayValue: l ? o : ee,
100
+ displayValue: te ? o : ee,
101
101
  formattedInternational: c?.formatInternational() ?? o,
102
102
  formattedNational: c?.formatNational() ?? s,
103
103
  e164: c?.number ?? null,
@@ -110,9 +110,9 @@ function x(e, n) {
110
110
  };
111
111
  }
112
112
  var S = g.forwardRef(function(r, u) {
113
- let { value: d, defaultCountry: ne, country: v, locale: y, onChange: b, onCountryChange: fe, className: me, inputClassName: he, disabled: S, readOnly: C, selectProps: ve, autofillShimName: ye, messages: be, renderValidationMessage: xe, ...Se } = r, { onFocus: Ce, onBlur: we, onKeyDown: Te, name: Ee, autoComplete: De, ...Oe } = Se, w = typeof v == "string" ? v : null, T = o(y), E = g.useMemo(() => te(T), [T]), D = g.useMemo(() => n(E, be), [E, be]), O = g.useMemo(() => a(E, T), [T, E]), k = g.useCallback((e) => {
113
+ let { value: d, defaultCountry: ne, country: v, locale: y, onChange: b, onCountryChange: fe, className: me, inputClassName: he, disabled: S, readOnly: C, selectProps: ve, autofillShimName: ye, messages: be, renderValidationMessage: xe, ...Se } = r, { onFocus: Ce, onBlur: we, onKeyDown: Te, name: Ee, autoComplete: De, ...Oe } = Se, w = typeof v == "string" ? v : null, T = o(y), E = g.useMemo(() => l(T), [T]), D = g.useMemo(() => n(E, be), [E, be]), O = g.useMemo(() => a(E, T), [T, E]), k = g.useCallback((e) => {
114
114
  let t = O.find((t) => t.value === e);
115
- return t ? l(t) : i(e);
115
+ return t ? te(t) : i(e);
116
116
  }, [O]), ke = g.useMemo(() => {
117
117
  let e = s(ne ?? v ?? "US");
118
118
  return O.some((t) => t.value === e) ? e : O[0]?.value ?? "US";
@@ -122,8 +122,10 @@ var S = g.forwardRef(function(r, u) {
122
122
  ne
123
123
  ]), Ae = g.useRef(null);
124
124
  Ae.current ||= x(d, w ?? void 0);
125
- let je = Ae.current, [A, Me] = g.useState(w ? null : je.country), [j, Ne] = g.useState(je.displayValue), [M, N] = g.useState(""), [P, F] = g.useState(!1), [I, L] = g.useState(-1), [Pe, Fe] = g.useState(!1), [Ie, R] = g.useState(je.lengthIssue), z = g.useRef(null), B = g.useRef(""), V = g.useRef(null), H = g.useRef("smooth"), U = g.useRef(null), Le = g.useRef(!1), Re = g.useRef(null), W = g.useRef(null), G = w ?? A, ze = w ?? z.current ?? void 0;
125
+ let je = Ae.current, [A, Me] = g.useState(w ? null : je.country), [j, Ne] = g.useState(je.displayValue), [M, N] = g.useState(""), [P, F] = g.useState(!1), [I, L] = g.useState(-1), [Pe, Fe] = g.useState(!1), [Ie, Le] = g.useState(!1), [Re, R] = g.useState(je.lengthIssue), z = g.useRef(null), B = g.useRef(""), V = g.useRef(null), H = g.useRef("smooth"), U = g.useRef(null), ze = g.useRef(!1), Be = g.useRef(null), W = g.useRef(null), G = w ?? A, Ve = w ?? z.current ?? void 0;
126
126
  g.useImperativeHandle(u, () => W.current, []), g.useLayoutEffect(() => {
127
+ Le(!0);
128
+ }, []), g.useLayoutEffect(() => {
127
129
  let e = U.current;
128
130
  if (!e) return;
129
131
  let t = W.current;
@@ -131,11 +133,11 @@ var S = g.forwardRef(function(r, u) {
131
133
  let { start: n, end: r } = e;
132
134
  t.setSelectionRange(n, r);
133
135
  }, [j]);
134
- let Be = ve ?? {}, { styles: Ve, components: He, classNamePrefix: Ue, formatOptionLabel: We, menuPortalTarget: Ge, menuPosition: Ke, ...qe } = Be, { noOptionsMessage: Je, ...Ye } = qe, [Xe, Ze] = g.useState(null), Qe = "menuPortalTarget" in Be, K = Qe ? Ge : Xe, $e = g.useMemo(() => {
135
- let e = Ve?.menuPortal;
136
+ let He = ve ?? {}, Ue = g.useId(), { styles: We, components: Ge, classNamePrefix: Ke, formatOptionLabel: qe, menuPortalTarget: Je, menuPosition: Ye, ...Xe } = He, { instanceId: Ze, noOptionsMessage: Qe, ...$e } = Xe, et = Ze ?? Ue, [tt, nt] = g.useState(null), rt = "menuPortalTarget" in He, K = rt ? Je : tt, it = g.useMemo(() => {
137
+ let e = We?.menuPortal;
136
138
  return {
137
139
  ...le,
138
- ...Ve ?? {},
140
+ ...We ?? {},
139
141
  menuPortal: (t, n) => {
140
142
  let r = {
141
143
  ...t,
@@ -150,20 +152,20 @@ var S = g.forwardRef(function(r, u) {
150
152
  };
151
153
  }
152
154
  };
153
- }, [K, Ve]);
155
+ }, [K, We]);
154
156
  g.useLayoutEffect(() => {
155
- if (Qe || typeof document > "u") return;
157
+ if (rt || typeof document > "u") return;
156
158
  let e = W.current?.closest("[data-slot='dialog-content'], [data-slot='sheet-content'], [role='dialog']") ?? document.body;
157
- Ze(e);
158
- }, [Qe]);
159
- let et = g.useMemo(() => {
159
+ nt(e);
160
+ }, [rt]);
161
+ let at = g.useMemo(() => {
160
162
  let e = {
161
163
  Control: ae,
162
164
  IndicatorsContainer: h,
163
165
  DropdownIndicator: h,
164
166
  IndicatorSeparator: h,
165
167
  ValueContainer: h
166
- }, t = He ?? {};
168
+ }, t = Ge ?? {};
167
169
  return t.Option ? {
168
170
  ...e,
169
171
  ...t
@@ -172,21 +174,21 @@ var S = g.forwardRef(function(r, u) {
172
174
  ...t,
173
175
  Option: se
174
176
  };
175
- }, [He]);
177
+ }, [Ge]);
176
178
  g.useEffect(() => () => {
177
179
  V.current != null && typeof window < "u" && window.clearTimeout(V.current);
178
180
  }, []), g.useEffect(() => {
179
181
  if (d == null) return;
180
- let e = x(d, ze);
182
+ let e = x(d, Ve);
181
183
  B.current = "", Ne(e.displayValue), F(!1), N(""), L(-1), R(e.lengthIssue), !w && e.country !== A && Me(e.country);
182
184
  }, [
183
185
  w,
184
- ze,
186
+ Ve,
185
187
  A,
186
188
  d
187
189
  ]), g.useEffect(() => {
188
190
  let e = G ?? null;
189
- !Le.current && e == null || Le.current && Re.current === e || (Le.current = !0, Re.current = e, fe?.(e, e ? k(e) : null));
191
+ !ze.current && e == null || ze.current && Be.current === e || (ze.current = !0, Be.current = e, fe?.(e, e ? k(e) : null));
190
192
  }, [
191
193
  G,
192
194
  fe,
@@ -201,7 +203,7 @@ var S = g.forwardRef(function(r, u) {
201
203
  typeof window > "u" || (V.current != null && window.clearTimeout(V.current), V.current = window.setTimeout(() => {
202
204
  B.current = "", V.current = null;
203
205
  }, 800));
204
- }, []), tt = g.useCallback((e, t) => {
206
+ }, []), ot = g.useCallback((e, t) => {
205
207
  Ne(e.displayValue), F(!1), N(""), L(-1), R(e.lengthIssue), !w && e.country !== A && Me(e.country), t && (U.current = m(t, e.displayValue)), q({
206
208
  formattedInternational: e.formattedInternational,
207
209
  formattedNational: e.formattedNational,
@@ -216,7 +218,7 @@ var S = g.forwardRef(function(r, u) {
216
218
  w,
217
219
  q,
218
220
  A
219
- ]), nt = g.useCallback((e) => {
221
+ ]), st = g.useCallback((e) => {
220
222
  let n = e.target, r = p(n), i = n.value;
221
223
  B.current = "";
222
224
  let a = pe(i), o = z.current;
@@ -233,12 +235,12 @@ var S = g.forwardRef(function(r, u) {
233
235
  value: e.value,
234
236
  dialCode: e.dialCode
235
237
  }, { allowImplicitInternational: !1 }), s), e);
236
- tt(n, r);
238
+ ot(n, r);
237
239
  return;
238
240
  }
239
241
  let c = x(i, w ?? s ?? void 0);
240
- tt(c, r);
241
- }, [tt, w]), rt = g.useCallback((e) => {
242
+ ot(c, r);
243
+ }, [ot, w]), ct = g.useCallback((e) => {
242
244
  if (!e) return;
243
245
  z.current = e.value;
244
246
  let t = _e(x(ge(j, e), e.value), e);
@@ -297,44 +299,44 @@ var S = g.forwardRef(function(r, u) {
297
299
  g.useEffect(() => {
298
300
  I < 0 && (H.current = "smooth");
299
301
  }, [I]);
300
- let it = g.useCallback(() => {
302
+ let lt = g.useCallback(() => {
301
303
  let e = H.current;
302
304
  return H.current = "smooth", e;
303
- }, []), at = g.useCallback((e) => {
305
+ }, []), ut = g.useCallback((e) => {
304
306
  let t = Y.findIndex((t) => t.value === e.value);
305
307
  t !== -1 && L(t);
306
- }, [Y]), ot = g.useCallback((e, t) => We ? We(e, t) : ce(e), [We]), st = g.useCallback((e) => ot(e, {
308
+ }, [Y]), dt = g.useCallback((e, t) => qe ? qe(e, t) : ce(e), [qe]), ft = g.useCallback((e) => dt(e, {
307
309
  context: "menu",
308
310
  inputValue: M,
309
311
  selectValue: []
310
- }), [M, ot]), ct = g.useMemo(() => ({
312
+ }), [M, dt]), pt = g.useMemo(() => ({
311
313
  highlightedValue: Z?.value ?? null,
312
- setHighlightedOption: at,
313
- renderOptionLabel: st,
314
- consumeScrollBehavior: it
314
+ setHighlightedOption: ut,
315
+ renderOptionLabel: ft,
316
+ consumeScrollBehavior: lt
315
317
  }), [
316
- it,
318
+ lt,
317
319
  Z,
318
- st,
319
- at
320
- ]), Q = G ? O.find((e) => e.value === G) : void 0, lt = Q?.flag ?? "", ut = G ? D.selectedCountryLabel(Q?.name ?? G) : D.selectCountryLabel, dt = !!(G && lt), $ = Ie === "TOO_LONG" ? D.lengthTooLong(Q?.name ?? G ?? null) : null, ft = Q?.name ?? G ?? null, pt = null;
320
+ ft,
321
+ ut
322
+ ]), Q = G ? O.find((e) => e.value === G) : void 0, mt = Q?.flag ?? "", ht = G ? D.selectedCountryLabel(Q?.name ?? G) : D.selectCountryLabel, gt = !!(G && mt), $ = Re === "TOO_LONG" ? D.lengthTooLong(Q?.name ?? G ?? null) : null, _t = Q?.name ?? G ?? null, vt = null;
321
323
  if ($) {
322
324
  let e = xe?.({
323
325
  message: $,
324
326
  code: "TOO_LONG",
325
- countryName: ft
327
+ countryName: _t
326
328
  });
327
- pt = e === void 0 ? /* @__PURE__ */ _("p", {
329
+ vt = e === void 0 ? /* @__PURE__ */ _("p", {
328
330
  className: "mt-1 text-xs text-destructive",
329
331
  children: /* @__PURE__ */ _("span", { children: $ })
330
332
  }) : e;
331
333
  }
332
- let mt = g.useCallback((e) => {
334
+ let yt = g.useCallback((e) => {
333
335
  B.current = `${B.current}${e}`.slice(-12), N(B.current), F(!0), J();
334
- }, [J]), ht = g.useCallback(() => {
336
+ }, [J]), bt = g.useCallback(() => {
335
337
  let e = B.current;
336
338
  e && (B.current = e.slice(0, -1), N(B.current), B.current && J());
337
- }, [J]), gt = g.useCallback((e) => {
339
+ }, [J]), xt = g.useCallback((e) => {
338
340
  if (Te?.(e), e.defaultPrevented) return;
339
341
  let t = e.key;
340
342
  if (e.metaKey || e.ctrlKey || e.altKey) return;
@@ -372,12 +374,12 @@ var S = g.forwardRef(function(r, u) {
372
374
  return;
373
375
  }
374
376
  if (/^[a-z]$/i.test(t)) {
375
- e.preventDefault(), P || (F(!0), L(Y.length > 0 ? 0 : -1)), mt(t.toLowerCase());
377
+ e.preventDefault(), P || (F(!0), L(Y.length > 0 ? 0 : -1)), yt(t.toLowerCase());
376
378
  return;
377
379
  }
378
380
  if (X) {
379
381
  if (t === "Backspace" && B.current) {
380
- e.preventDefault(), ht();
382
+ e.preventDefault(), bt();
381
383
  return;
382
384
  }
383
385
  if (t === "Escape") {
@@ -387,28 +389,28 @@ var S = g.forwardRef(function(r, u) {
387
389
  if (t === "Enter" && Y.length > 0) {
388
390
  e.preventDefault();
389
391
  let t = Z ?? Y[0];
390
- rt(t);
392
+ ct(t);
391
393
  return;
392
394
  }
393
395
  }
394
396
  }, [
395
- mt,
397
+ yt,
396
398
  Y,
397
- rt,
399
+ ct,
398
400
  Z,
399
401
  Te,
400
- ht,
402
+ bt,
401
403
  P,
402
404
  X
403
- ]), _t = g.useCallback((e) => {
405
+ ]), St = g.useCallback((e) => {
404
406
  Fe(!0), Ce?.(e);
405
- }, [Ce]), vt = g.useCallback((e) => {
407
+ }, [Ce]), Ct = g.useCallback((e) => {
406
408
  Fe(!1), F(!1), B.current = "", N(""), we?.(e);
407
- }, [we]), yt = g.useCallback(() => {
409
+ }, [we]), wt = g.useCallback(() => {
408
410
  S || C || (B.current = "", N(""), F(!0), L((e) => e < 0 ? 0 : e), requestAnimationFrame(() => {
409
411
  W.current?.focus();
410
412
  }));
411
- }, [S, C]), bt = ye ?? (Ee ? `${Ee}_shim` : void 0);
413
+ }, [S, C]), Tt = ye ?? (Ee ? `${Ee}_shim` : void 0);
412
414
  return /* @__PURE__ */ ue("div", {
413
415
  className: e("relative flex flex-col", me),
414
416
  children: [
@@ -421,31 +423,31 @@ var S = g.forwardRef(function(r, u) {
421
423
  className: e("flex h-10 w-full rounded-md border border-input bg-background py-2 text-base ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 md:text-sm", "pl-11 pr-3", he),
422
424
  name: Ee,
423
425
  value: j,
424
- onChange: nt,
425
- onFocus: _t,
426
- onBlur: vt,
427
- onKeyDown: gt,
426
+ onChange: st,
427
+ onFocus: St,
428
+ onBlur: Ct,
429
+ onKeyDown: xt,
428
430
  disabled: S,
429
431
  readOnly: C,
430
432
  autoComplete: De ?? "off"
431
433
  }), /* @__PURE__ */ _("button", {
432
434
  type: "button",
433
- className: e("absolute left-3 top-1/2 flex h-6 w-6 -translate-y-1/2 items-center justify-center rounded border text-lg leading-none transition focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2", dt ? "border-transparent" : "border-dashed border-border text-muted-foreground", S ? "cursor-not-allowed opacity-50" : C ? "cursor-default" : "cursor-pointer hover:bg-muted"),
434
- "aria-label": ut,
435
+ className: e("absolute left-3 top-1/2 flex h-6 w-6 -translate-y-1/2 items-center justify-center rounded border text-lg leading-none transition focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2", gt ? "border-transparent" : "border-dashed border-border text-muted-foreground", S ? "cursor-not-allowed opacity-50" : C ? "cursor-default" : "cursor-pointer hover:bg-muted"),
436
+ "aria-label": ht,
435
437
  onMouseDown: (e) => e.preventDefault(),
436
- onClick: yt,
438
+ onClick: wt,
437
439
  tabIndex: -1,
438
440
  disabled: S,
439
441
  children: /* @__PURE__ */ _("span", {
440
442
  "aria-hidden": "true",
441
- children: dt ? lt : "?"
443
+ children: gt ? mt : "?"
442
444
  })
443
445
  })]
444
446
  }),
445
- bt ? /* @__PURE__ */ _("input", {
447
+ Tt ? /* @__PURE__ */ _("input", {
446
448
  tabIndex: -1,
447
449
  autoComplete: "tel",
448
- name: bt,
450
+ name: Tt,
449
451
  "aria-hidden": "true",
450
452
  className: "pointer-events-none absolute left-0 top-0 h-0 w-0 opacity-0"
451
453
  }) : null,
@@ -456,31 +458,32 @@ var S = g.forwardRef(function(r, u) {
456
458
  width: "min(260px, 100%)"
457
459
  },
458
460
  onMouseDown: (e) => e.preventDefault(),
459
- children: /* @__PURE__ */ _(oe.Provider, {
460
- value: ct,
461
+ children: Ie ? /* @__PURE__ */ _(oe.Provider, {
462
+ value: pt,
461
463
  children: /* @__PURE__ */ _(de, {
462
- ...Ye,
464
+ ...$e,
465
+ instanceId: et,
463
466
  menuIsOpen: X,
464
467
  options: Y,
465
468
  value: null,
466
- components: et,
467
- styles: $e,
469
+ components: at,
470
+ styles: it,
468
471
  isClearable: !1,
469
472
  isSearchable: !1,
470
473
  backspaceRemovesValue: !1,
471
474
  tabSelectsValue: !1,
472
475
  menuShouldScrollIntoView: !1,
473
476
  menuPortalTarget: K,
474
- menuPosition: Ke ?? (K ? "fixed" : "absolute"),
475
- onChange: rt,
476
- classNamePrefix: Ue ?? "phone-number-suggestions",
477
+ menuPosition: Ye ?? (K ? "fixed" : "absolute"),
478
+ onChange: ct,
479
+ classNamePrefix: Ke ?? "phone-number-suggestions",
477
480
  placeholder: "",
478
- formatOptionLabel: ot,
479
- noOptionsMessage: Je ?? (() => D.noMatches)
481
+ formatOptionLabel: dt,
482
+ noOptionsMessage: Qe ?? (() => D.noMatches)
480
483
  })
481
- })
484
+ }) : null
482
485
  }),
483
- pt
486
+ vt
484
487
  ]
485
488
  });
486
489
  });
@@ -1 +1 @@
1
- {"version":3,"file":"index362.js","names":["React","CountryCode","getCountryCallingCode","Select","Props","SelectProps","SingleValue","StylesConfig","cn","CountryOption","PhoneNumberChangeDetails","PhoneNumberInputProps","PhoneNumberSelectedCountry","resolveMessages","COMMON_IDD_PREFIXES","DEFAULT_COUNTRY","buildFallbackSelectedCountry","getCachedCountryOptions","getLocaleCacheKey","getValidCountry","normalizeSearchValue","optionMatchIndex","parseLocaleCacheKey","toSelectedCountry","formatWithAsYouType","getLengthIssue","sanitizeDigits","stripPrefix","LengthIssue","captureSelectionSnapshot","resolveSelection","skipFormattingCharactersLeft","skipFormattingCharactersRight","HiddenControl","NullComponent","SuggestionContext","SuggestionOption","formatCountryOption","suggestionSelectStyles","SuggestionContextValue","PhoneNumberInputMessages","PhoneNumberInputValidationCode","INVISIBLE_FORMATTING_CHARACTERS","ParsedInput","Omit","displayValue","lengthIssue","stripInvisibleFormatting","value","replace","stripIddPrefix","digits","prefix","startsWith","slice","length","normalizeImplicitInternationalInput","candidate","phoneNumber","detectedCountry","isValid","normalizeExplicitInternationalInput","cleaned","trim","digitsWithoutIdd","normalizeInternationalInput","explicitInternational","getDialCode","country","parsedDialCode","getInputValueForSelectedCountry","option","Pick","options","allowImplicitInternational","dialCode","normalizedInternational","normalizedDigits","currentDialCode","countryCallingCode","nationalDigits","nationalNumber","preferSelectedCountry","parsed","rawInput","parsePhoneInput","rawValue","baseCountry","formattedInternational","formattedNational","e164","shouldFormat","normalized","international","national","formatted","hasInternationalPrefix","formatInternational","formatNational","number","PhoneNumberInput","forwardRef","HTMLInputElement","props","forwardedRef","defaultCountry","countryProp","locale","onChange","onCountryChange","className","inputClassName","disabled","readOnly","selectProps","autofillShimName","messages","messagesProp","renderValidationMessage","restProps","onFocus","onInputFocus","onBlur","onInputBlur","onKeyDown","onInputKeyDown","name","inputName","autoComplete","inputAutoComplete","restInputProps","controlledCountry","localeCacheKey","localeForBuild","useMemo","resolvedMessages","countryOptions","resolveSelectedCountry","useCallback","match","find","menuPriorityCountry","some","initialStateRef","useRef","current","initialState","undefined","uncontrolledCountry","setUncontrolledCountry","useState","inputValueState","setInputValueState","countryQuery","setCountryQuery","showSuggestions","setShowSuggestions","highlightedIndex","setHighlightedIndex","isFocused","setIsFocused","setLengthIssue","manualSelectionCountryRef","keyboardBufferRef","bufferTimeoutRef","scrollBehaviorRef","ScrollBehavior","pendingSelectionRef","start","end","hasNotifiedCountryRef","lastNotifiedCountryRef","inputRef","activeCountry","explicitFormattingCountry","useImperativeHandle","useLayoutEffect","selection","input","setSelectionRange","selectOverrides","styles","userSelectStyles","components","userSelectComponents","classNamePrefix","userClassNamePrefix","formatOptionLabel","userFormatOptionLabel","menuPortalTarget","userMenuPortalTarget","menuPosition","userMenuPosition","forwardedSelectProps","noOptionsMessage","restForwardedSelectProps","defaultMenuPortalTarget","setDefaultMenuPortalTarget","HTMLElement","hasUserMenuPortalTarget","mergedSelectStyles","userMenuPortal","menuPortal","provided","state","baseWithZIndex","zIndex","base","document","body","portalRect","getBoundingClientRect","left","top","portalTarget","closest","mergedSelectComponents","baseComponents","Control","IndicatorsContainer","DropdownIndicator","IndicatorSeparator","ValueContainer","overrides","Option","useEffect","window","clearTimeout","emitChange","details","selectedCountry","scheduleBufferReset","setTimeout","applyParsedInput","snapshot","ReturnType","handleInputChange","event","ChangeEvent","target","raw","normalizedExplicitInternational","manualCountry","manualDialCode","activeManualCountry","rawDigits","manualOption","handleCountrySelect","nextInputValue","requestAnimationFrame","focus","filteredOptions","results","pushUnique","existing","push","priorityOption","currentOption","query","digitQuery","normalizedQuery","forEach","dialMatches","filter","sort","a","b","aExact","bExact","nameMatches","normalizedSearchableTokens","token","includes","aIndex","bIndex","localeCompare","suggestionMenuIsOpen","highlightedOption","consumeScrollBehavior","behavior","updateHighlightedOption","index","findIndex","selectFormatOptionLabel","NonNullable","meta","optionLabelRenderer","context","inputValue","selectValue","highlightContextValue","highlightedValue","setHighlightedOption","renderOptionLabel","activeOption","activeFlag","flag","inlineFlagLabel","selectedCountryLabel","selectCountryLabel","hasInlineFlag","Boolean","lengthHint","lengthTooLong","countryName","validationNode","ReactNode","rendered","message","code","appendToBuffer","char","popBuffer","handleKeyDown","KeyboardEvent","defaultPrevented","key","metaKey","ctrlKey","altKey","currentTarget","selectionStart","selectionEnd","isCollapsedSelection","nextStart","preventDefault","repeat","next","test","toLowerCase","targetOption","handleFocus","FocusEvent","handleBlur","openCountryMenu","shimName","pointerEvents","width","noMatches","displayName"],"sources":["../src/components/PhoneNumberInput/index.tsx"],"sourcesContent":["import * as React from \"react\"\nimport type { CountryCode } from \"libphonenumber-js\"\nimport { getCountryCallingCode } from \"libphonenumber-js\"\nimport Select, {\n type Props as SelectProps,\n type SingleValue,\n type StylesConfig,\n} from \"react-select\"\n\nimport { cn } from \"@/lib/utils\"\n\nimport type {\n CountryOption,\n PhoneNumberChangeDetails,\n PhoneNumberInputProps,\n PhoneNumberSelectedCountry,\n} from \"./types\"\nimport { resolveMessages } from \"./messages\"\nimport {\n COMMON_IDD_PREFIXES,\n DEFAULT_COUNTRY,\n buildFallbackSelectedCountry,\n getCachedCountryOptions,\n getLocaleCacheKey,\n getValidCountry,\n normalizeSearchValue,\n optionMatchIndex,\n parseLocaleCacheKey,\n toSelectedCountry,\n} from \"./country-options\"\nimport {\n formatWithAsYouType,\n getLengthIssue,\n sanitizeDigits,\n stripPrefix,\n type LengthIssue,\n} from \"./normalization\"\nimport {\n captureSelectionSnapshot,\n resolveSelection,\n skipFormattingCharactersLeft,\n skipFormattingCharactersRight,\n} from \"./selection\"\nimport {\n HiddenControl,\n NullComponent,\n SuggestionContext,\n SuggestionOption,\n formatCountryOption,\n suggestionSelectStyles,\n type SuggestionContextValue,\n} from \"./suggestions\"\n\n\nexport type {\n CountryOption,\n PhoneNumberChangeDetails,\n PhoneNumberInputMessages,\n PhoneNumberInputProps,\n PhoneNumberInputValidationCode,\n PhoneNumberSelectedCountry,\n} from \"./types\"\n\nconst INVISIBLE_FORMATTING_CHARACTERS =\n /[\\u061C\\u200B-\\u200F\\u202A-\\u202E\\u2066-\\u2069\\uFEFF]/g\n\ntype ParsedInput = Omit<PhoneNumberChangeDetails, \"selectedCountry\"> & {\n displayValue: string\n lengthIssue: LengthIssue | null\n}\n\nfunction stripInvisibleFormatting(value: string) {\n return value.replace(INVISIBLE_FORMATTING_CHARACTERS, \"\")\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\nfunction normalizeImplicitInternationalInput(digits: string) {\n const candidate = `+${digits}`\n const { phoneNumber, detectedCountry } = formatWithAsYouType(candidate)\n\n if (phoneNumber?.isValid() && detectedCountry) {\n return candidate\n }\n\n return null\n}\n\nfunction normalizeExplicitInternationalInput(value: string) {\n const cleaned = stripInvisibleFormatting(value).trim()\n if (!cleaned) {\n return null\n }\n\n if (cleaned.startsWith(\"+\")) {\n const digits = sanitizeDigits(cleaned)\n if (!digits) {\n return \"+\"\n }\n\n const digitsWithoutIdd = stripIddPrefix(digits)\n return digitsWithoutIdd ? `+${digitsWithoutIdd}` : \"+\"\n }\n\n const digits = sanitizeDigits(cleaned)\n if (!digits) {\n return null\n }\n\n const digitsWithoutIdd = stripIddPrefix(digits)\n if (digitsWithoutIdd !== digits) {\n return digitsWithoutIdd ? `+${digitsWithoutIdd}` : \"+\"\n }\n\n return null\n}\n\nfunction normalizeInternationalInput(value: string) {\n const explicitInternational = normalizeExplicitInternationalInput(value)\n if (explicitInternational != null) {\n return explicitInternational\n }\n\n const cleaned = stripInvisibleFormatting(value).trim()\n const digits = sanitizeDigits(cleaned)\n if (!digits) {\n return null\n }\n\n return normalizeImplicitInternationalInput(digits)\n}\n\nfunction getDialCode(country: CountryCode | null, parsedDialCode: string | undefined) {\n if (parsedDialCode) {\n return parsedDialCode\n }\n return country ? getCountryCallingCode(country) : null\n}\n\nfunction getInputValueForSelectedCountry(\n value: string,\n option: Pick<CountryOption, \"dialCode\" | \"value\">,\n options?: { allowImplicitInternational?: boolean }\n) {\n const cleaned = stripInvisibleFormatting(value).trim()\n const digits = sanitizeDigits(cleaned)\n\n if (!digits) {\n return `+${option.dialCode}`\n }\n\n const normalizedInternational =\n options?.allowImplicitInternational === false\n ? normalizeExplicitInternationalInput(cleaned)\n : normalizeInternationalInput(cleaned)\n if (normalizedInternational) {\n const normalizedDigits = sanitizeDigits(normalizedInternational)\n if (normalizedDigits.startsWith(option.dialCode)) {\n return normalizedInternational\n }\n\n const { phoneNumber } = formatWithAsYouType(normalizedInternational)\n const currentDialCode = phoneNumber?.countryCallingCode\n const nationalDigits =\n currentDialCode && normalizedDigits.startsWith(currentDialCode)\n ? normalizedDigits.slice(currentDialCode.length)\n : phoneNumber?.nationalNumber ?? normalizedDigits\n\n return `+${option.dialCode}${nationalDigits}`\n }\n\n const { phoneNumber } = formatWithAsYouType(cleaned, option.value)\n return `+${option.dialCode}${phoneNumber?.nationalNumber ?? digits}`\n}\n\nfunction preferSelectedCountry(\n parsed: ParsedInput,\n option: Pick<CountryOption, \"dialCode\" | \"value\">\n): ParsedInput {\n return {\n ...parsed,\n country: option.value,\n countryCallingCode: option.dialCode,\n lengthIssue: getLengthIssue(parsed.rawInput, option.value),\n }\n}\n\nfunction parsePhoneInput(rawValue: string | undefined, baseCountry?: CountryCode): ParsedInput {\n const cleaned = stripInvisibleFormatting(rawValue ?? \"\").trim()\n\n if (!cleaned) {\n const country = baseCountry ?? null\n const countryCallingCode = country ? getCountryCallingCode(country) : null\n\n return {\n displayValue: \"\",\n formattedInternational: \"\",\n formattedNational: \"\",\n e164: null,\n country,\n countryCallingCode,\n nationalNumber: \"\",\n rawInput: \"\",\n isValid: false,\n lengthIssue: null,\n }\n }\n\n const normalizedInternational = normalizeInternationalInput(cleaned)\n const shouldFormat = normalizedInternational != null || baseCountry != null\n\n if (!shouldFormat) {\n return {\n displayValue: cleaned,\n formattedInternational: cleaned,\n formattedNational: cleaned,\n e164: null,\n country: null,\n countryCallingCode: null,\n nationalNumber: sanitizeDigits(cleaned),\n rawInput: cleaned,\n isValid: false,\n lengthIssue: null,\n }\n }\n\n const normalized = normalizedInternational ?? cleaned\n const {\n international,\n national,\n formatted,\n phoneNumber,\n detectedCountry,\n } = formatWithAsYouType(normalized, baseCountry)\n const hasInternationalPrefix = normalizedInternational != null\n const country = hasInternationalPrefix\n ? detectedCountry ?? baseCountry ?? null\n : baseCountry ?? detectedCountry ?? null\n const countryCallingCode = getDialCode(country, phoneNumber?.countryCallingCode)\n const normalizedDigits = sanitizeDigits(normalized)\n const nationalNumber =\n phoneNumber?.nationalNumber ??\n (countryCallingCode && normalized.startsWith(\"+\")\n ? stripPrefix(normalizedDigits, countryCallingCode)\n : sanitizeDigits(cleaned))\n const displayValue = hasInternationalPrefix ? international : formatted\n\n return {\n displayValue,\n formattedInternational: phoneNumber?.formatInternational() ?? international,\n formattedNational: phoneNumber?.formatNational() ?? national,\n e164: phoneNumber?.number ?? null,\n country,\n countryCallingCode,\n nationalNumber,\n rawInput: normalized,\n isValid: phoneNumber?.isValid() ?? false,\n lengthIssue: country ? getLengthIssue(normalized, country) : null,\n }\n}\n\nexport const PhoneNumberInput = React.forwardRef<HTMLInputElement, PhoneNumberInputProps>(\n function PhoneNumberInput(props, forwardedRef) {\n const {\n value,\n defaultCountry,\n country: countryProp,\n locale,\n onChange,\n onCountryChange,\n className,\n inputClassName,\n disabled,\n readOnly,\n selectProps,\n autofillShimName,\n messages: messagesProp,\n renderValidationMessage,\n ...restProps\n } = props\n\n const {\n onFocus: onInputFocus,\n onBlur: onInputBlur,\n onKeyDown: onInputKeyDown,\n name: inputName,\n autoComplete: inputAutoComplete,\n ...restInputProps\n } = restProps\n\n const controlledCountry = typeof countryProp === \"string\" ? countryProp : null\n const localeCacheKey = getLocaleCacheKey(locale)\n const localeForBuild = React.useMemo(\n () => parseLocaleCacheKey(localeCacheKey),\n [localeCacheKey]\n )\n const resolvedMessages = React.useMemo(\n () => resolveMessages(localeForBuild, messagesProp),\n [localeForBuild, messagesProp]\n )\n const countryOptions = React.useMemo(\n () => getCachedCountryOptions(localeForBuild, localeCacheKey),\n [localeCacheKey, localeForBuild]\n )\n const resolveSelectedCountry = React.useCallback(\n (country: CountryCode): PhoneNumberSelectedCountry => {\n const match = countryOptions.find((candidate) => candidate.value === country)\n if (match) {\n return toSelectedCountry(match)\n }\n return buildFallbackSelectedCountry(country)\n },\n [countryOptions]\n )\n const menuPriorityCountry = React.useMemo(() => {\n const candidate = getValidCountry(defaultCountry ?? countryProp ?? DEFAULT_COUNTRY)\n if (countryOptions.some((option) => option.value === candidate)) {\n return candidate\n }\n return countryOptions[0]?.value ?? DEFAULT_COUNTRY\n }, [countryOptions, countryProp, defaultCountry])\n\n const initialStateRef = React.useRef<ParsedInput | null>(null)\n\n if (!initialStateRef.current) {\n const initialState = parsePhoneInput(value, controlledCountry ?? undefined)\n initialStateRef.current = initialState\n }\n\n const initialState = initialStateRef.current\n\n const [uncontrolledCountry, setUncontrolledCountry] = React.useState<CountryCode | null>(\n controlledCountry ? null : initialState.country\n )\n const [inputValueState, setInputValueState] = React.useState(initialState.displayValue)\n const [countryQuery, setCountryQuery] = React.useState(\"\")\n const [showSuggestions, setShowSuggestions] = React.useState(false)\n const [highlightedIndex, setHighlightedIndex] = React.useState<number>(-1)\n const [isFocused, setIsFocused] = React.useState(false)\n const [lengthIssue, setLengthIssue] = React.useState<LengthIssue | null>(\n initialState.lengthIssue\n )\n\n const manualSelectionCountryRef = React.useRef<CountryCode | null>(null)\n const keyboardBufferRef = React.useRef(\"\")\n const bufferTimeoutRef = React.useRef<number | null>(null)\n const scrollBehaviorRef = React.useRef<ScrollBehavior>(\"smooth\")\n const pendingSelectionRef = React.useRef<{ start: number; end: number } | null>(null)\n const hasNotifiedCountryRef = React.useRef(false)\n const lastNotifiedCountryRef = React.useRef<CountryCode | null>(null)\n const inputRef = React.useRef<HTMLInputElement | null>(null)\n\n const activeCountry = controlledCountry ?? uncontrolledCountry\n const explicitFormattingCountry = controlledCountry ?? manualSelectionCountryRef.current ?? undefined\n\n React.useImperativeHandle(forwardedRef, () => inputRef.current as HTMLInputElement, [])\n\n React.useLayoutEffect(() => {\n const selection = pendingSelectionRef.current\n if (!selection) {\n return\n }\n\n const input = inputRef.current\n pendingSelectionRef.current = null\n if (!input) {\n return\n }\n\n const { start, end } = selection\n input.setSelectionRange(start, end)\n }, [inputValueState])\n\n const selectOverrides = selectProps ?? {}\n const {\n styles: userSelectStyles,\n components: userSelectComponents,\n classNamePrefix: userClassNamePrefix,\n formatOptionLabel: userFormatOptionLabel,\n menuPortalTarget: userMenuPortalTarget,\n menuPosition: userMenuPosition,\n ...forwardedSelectProps\n } = selectOverrides\n const { noOptionsMessage, ...restForwardedSelectProps } = forwardedSelectProps\n const [defaultMenuPortalTarget, setDefaultMenuPortalTarget] =\n React.useState<HTMLElement | null>(null)\n const hasUserMenuPortalTarget = \"menuPortalTarget\" in selectOverrides\n const menuPortalTarget = hasUserMenuPortalTarget\n ? userMenuPortalTarget\n : defaultMenuPortalTarget\n\n const mergedSelectStyles = React.useMemo<StylesConfig<CountryOption, false>>(\n () => {\n const userMenuPortal = userSelectStyles?.menuPortal\n\n return {\n ...suggestionSelectStyles,\n ...(userSelectStyles ?? {}),\n menuPortal: (provided, state) => {\n const baseWithZIndex = {\n ...provided,\n zIndex: 1300,\n }\n const base = userMenuPortal ? userMenuPortal(baseWithZIndex, state) : baseWithZIndex\n\n if (typeof document === \"undefined\" || !menuPortalTarget || menuPortalTarget === document.body) {\n return base\n }\n\n const portalRect = menuPortalTarget.getBoundingClientRect()\n return {\n ...base,\n left: typeof base.left === \"number\" ? base.left - portalRect.left : base.left,\n top: typeof base.top === \"number\" ? base.top - portalRect.top : base.top,\n }\n },\n }\n },\n [menuPortalTarget, userSelectStyles]\n )\n\n React.useLayoutEffect(() => {\n if (hasUserMenuPortalTarget || typeof document === \"undefined\") {\n return\n }\n\n const portalTarget =\n inputRef.current?.closest<HTMLElement>(\n \"[data-slot='dialog-content'], [data-slot='sheet-content'], [role='dialog']\"\n ) ?? document.body\n setDefaultMenuPortalTarget(portalTarget)\n }, [hasUserMenuPortalTarget])\n\n const mergedSelectComponents = React.useMemo(() => {\n const baseComponents = {\n Control: HiddenControl,\n IndicatorsContainer: NullComponent,\n DropdownIndicator: NullComponent,\n IndicatorSeparator: NullComponent,\n ValueContainer: NullComponent,\n }\n\n const overrides = userSelectComponents ?? {}\n\n if (!overrides.Option) {\n return {\n ...baseComponents,\n ...overrides,\n Option: SuggestionOption,\n }\n }\n\n return {\n ...baseComponents,\n ...overrides,\n }\n }, [userSelectComponents])\n\n React.useEffect(() => () => {\n if (bufferTimeoutRef.current != null && typeof window !== \"undefined\") {\n window.clearTimeout(bufferTimeoutRef.current)\n }\n }, [])\n\n React.useEffect(() => {\n if (value == null) {\n return\n }\n\n const parsed = parsePhoneInput(value, explicitFormattingCountry)\n keyboardBufferRef.current = \"\"\n\n setInputValueState(parsed.displayValue)\n setShowSuggestions(false)\n setCountryQuery(\"\")\n setHighlightedIndex(-1)\n setLengthIssue(parsed.lengthIssue)\n\n if (!controlledCountry && parsed.country !== uncontrolledCountry) {\n setUncontrolledCountry(parsed.country)\n }\n }, [controlledCountry, explicitFormattingCountry, uncontrolledCountry, value])\n\n React.useEffect(() => {\n const country = activeCountry ?? null\n if (!hasNotifiedCountryRef.current && country == null) {\n return\n }\n\n if (hasNotifiedCountryRef.current && lastNotifiedCountryRef.current === country) {\n return\n }\n\n hasNotifiedCountryRef.current = true\n lastNotifiedCountryRef.current = country\n onCountryChange?.(country, country ? resolveSelectedCountry(country) : null)\n }, [activeCountry, onCountryChange, resolveSelectedCountry])\n\n const emitChange = React.useCallback(\n (details: Omit<PhoneNumberChangeDetails, \"selectedCountry\">) => {\n onChange?.({\n ...details,\n selectedCountry: details.country ? resolveSelectedCountry(details.country) : null,\n })\n },\n [onChange, resolveSelectedCountry]\n )\n\n const scheduleBufferReset = React.useCallback(() => {\n if (typeof window === \"undefined\") {\n return\n }\n\n if (bufferTimeoutRef.current != null) {\n window.clearTimeout(bufferTimeoutRef.current)\n }\n\n bufferTimeoutRef.current = window.setTimeout(() => {\n keyboardBufferRef.current = \"\"\n bufferTimeoutRef.current = null\n }, 800)\n }, [])\n\n const applyParsedInput = React.useCallback(\n (parsed: ParsedInput, snapshot: ReturnType<typeof captureSelectionSnapshot> | null) => {\n setInputValueState(parsed.displayValue)\n setShowSuggestions(false)\n setCountryQuery(\"\")\n setHighlightedIndex(-1)\n setLengthIssue(parsed.lengthIssue)\n\n if (!controlledCountry && parsed.country !== uncontrolledCountry) {\n setUncontrolledCountry(parsed.country)\n }\n\n if (snapshot) {\n pendingSelectionRef.current = resolveSelection(snapshot, parsed.displayValue)\n }\n\n emitChange({\n formattedInternational: parsed.formattedInternational,\n formattedNational: parsed.formattedNational,\n e164: parsed.e164,\n country: parsed.country,\n countryCallingCode: parsed.countryCallingCode,\n nationalNumber: parsed.nationalNumber,\n rawInput: parsed.rawInput,\n isValid: parsed.isValid,\n })\n },\n [controlledCountry, emitChange, uncontrolledCountry]\n )\n\n const handleInputChange = React.useCallback(\n (event: React.ChangeEvent<HTMLInputElement>) => {\n const target = event.target\n const snapshot = captureSelectionSnapshot(target)\n const raw = target.value\n keyboardBufferRef.current = \"\"\n\n const normalizedExplicitInternational = normalizeExplicitInternationalInput(raw)\n const manualCountry = manualSelectionCountryRef.current\n if (normalizedExplicitInternational != null && manualCountry) {\n const manualDialCode = getCountryCallingCode(manualCountry)\n if (!sanitizeDigits(normalizedExplicitInternational).startsWith(manualDialCode)) {\n manualSelectionCountryRef.current = null\n }\n } else if (normalizedExplicitInternational != null) {\n manualSelectionCountryRef.current = null\n }\n\n const activeManualCountry = manualSelectionCountryRef.current\n const rawDigits = sanitizeDigits(raw)\n if (\n !controlledCountry &&\n activeManualCountry &&\n normalizedExplicitInternational == null &&\n rawDigits\n ) {\n const manualOption = {\n value: activeManualCountry,\n dialCode: getCountryCallingCode(activeManualCountry),\n }\n const parsed = preferSelectedCountry(\n parsePhoneInput(\n getInputValueForSelectedCountry(\n raw,\n {\n value: manualOption.value,\n dialCode: manualOption.dialCode,\n },\n { allowImplicitInternational: false }\n ),\n activeManualCountry\n ),\n manualOption\n )\n applyParsedInput(parsed, snapshot)\n return\n }\n\n const baseCountry = controlledCountry ?? activeManualCountry ?? undefined\n const parsed = parsePhoneInput(raw, baseCountry)\n applyParsedInput(parsed, snapshot)\n },\n [applyParsedInput, controlledCountry]\n )\n\n const handleCountrySelect = React.useCallback(\n (option: SingleValue<CountryOption>) => {\n if (!option) {\n return\n }\n\n manualSelectionCountryRef.current = option.value\n const nextInputValue = getInputValueForSelectedCountry(inputValueState, option)\n const parsed = preferSelectedCountry(\n parsePhoneInput(nextInputValue, option.value),\n option\n )\n\n setInputValueState(parsed.displayValue)\n pendingSelectionRef.current = {\n start: parsed.displayValue.length,\n end: parsed.displayValue.length,\n }\n setShowSuggestions(false)\n setCountryQuery(\"\")\n setHighlightedIndex(-1)\n setLengthIssue(parsed.lengthIssue)\n\n if (!controlledCountry) {\n setUncontrolledCountry(option.value)\n }\n\n emitChange({\n formattedInternational: parsed.formattedInternational,\n formattedNational: parsed.formattedNational,\n e164: parsed.e164,\n country: parsed.country,\n countryCallingCode: parsed.countryCallingCode,\n nationalNumber: parsed.nationalNumber,\n rawInput: parsed.rawInput,\n isValid: parsed.isValid,\n })\n\n requestAnimationFrame(() => {\n inputRef.current?.focus()\n })\n },\n [controlledCountry, emitChange, inputValueState]\n )\n\n const filteredOptions = React.useMemo(() => {\n if (!showSuggestions) {\n return [] as CountryOption[]\n }\n\n const results: CountryOption[] = []\n\n const pushUnique = (option: CountryOption | undefined) => {\n if (option && !results.some((existing) => existing.value === option.value)) {\n results.push(option)\n }\n }\n\n const priorityOption = countryOptions.find((option) => option.value === menuPriorityCountry)\n const currentOption = activeCountry\n ? countryOptions.find((option) => option.value === activeCountry)\n : undefined\n const query = countryQuery.trim()\n const digitQuery = sanitizeDigits(query)\n const normalizedQuery = normalizeSearchValue(query)\n\n if (!digitQuery && !normalizedQuery) {\n pushUnique(currentOption)\n pushUnique(priorityOption)\n countryOptions.forEach(pushUnique)\n return results\n }\n\n if (digitQuery) {\n const dialMatches = countryOptions\n .filter((option) => option.dialCode.startsWith(digitQuery))\n .sort((a, b) => {\n const aExact = a.dialCode === digitQuery\n const bExact = b.dialCode === digitQuery\n if (aExact && !bExact) {\n return -1\n }\n if (!aExact && bExact) {\n return 1\n }\n return a.dialCode.length - b.dialCode.length\n })\n dialMatches.forEach(pushUnique)\n }\n\n if (normalizedQuery) {\n const nameMatches = countryOptions\n .filter((option) =>\n option.normalizedSearchableTokens.some((token) => token.includes(normalizedQuery))\n )\n .sort((a, b) => {\n const aIndex = optionMatchIndex(a.normalizedSearchableTokens, normalizedQuery)\n const bIndex = optionMatchIndex(b.normalizedSearchableTokens, normalizedQuery)\n if (aIndex !== bIndex) {\n return aIndex - bIndex\n }\n return a.name.localeCompare(b.name)\n })\n nameMatches.forEach(pushUnique)\n }\n\n pushUnique(currentOption)\n pushUnique(priorityOption)\n if (results.length === 0) {\n countryOptions.forEach(pushUnique)\n }\n\n return results\n }, [activeCountry, countryOptions, countryQuery, menuPriorityCountry, showSuggestions])\n\n const suggestionMenuIsOpen = isFocused && showSuggestions && filteredOptions.length > 0\n\n React.useEffect(() => {\n if (!suggestionMenuIsOpen) {\n scrollBehaviorRef.current = \"smooth\"\n }\n }, [suggestionMenuIsOpen])\n\n React.useEffect(() => {\n if (!suggestionMenuIsOpen) {\n setHighlightedIndex(-1)\n return\n }\n\n if (filteredOptions.length === 0) {\n setHighlightedIndex(-1)\n return\n }\n\n setHighlightedIndex((current) => {\n if (current < 0 || current >= filteredOptions.length) {\n return 0\n }\n return current\n })\n }, [filteredOptions, suggestionMenuIsOpen])\n\n const highlightedOption =\n highlightedIndex >= 0 ? filteredOptions[highlightedIndex] ?? null : null\n\n React.useEffect(() => {\n if (highlightedIndex < 0) {\n scrollBehaviorRef.current = \"smooth\"\n }\n }, [highlightedIndex])\n\n const consumeScrollBehavior = React.useCallback(() => {\n const behavior = scrollBehaviorRef.current\n scrollBehaviorRef.current = \"smooth\"\n return behavior\n }, [])\n\n const updateHighlightedOption = React.useCallback(\n (option: CountryOption) => {\n const index = filteredOptions.findIndex((candidate) => candidate.value === option.value)\n if (index !== -1) {\n setHighlightedIndex(index)\n }\n },\n [filteredOptions]\n )\n\n const selectFormatOptionLabel = React.useCallback<\n NonNullable<SelectProps<CountryOption, false>[\"formatOptionLabel\"]>\n >(\n (option, meta) => {\n if (userFormatOptionLabel) {\n return userFormatOptionLabel(option, meta)\n }\n return formatCountryOption(option)\n },\n [userFormatOptionLabel]\n )\n\n const optionLabelRenderer = React.useCallback(\n (option: CountryOption) =>\n selectFormatOptionLabel(option, {\n context: \"menu\",\n inputValue: countryQuery,\n selectValue: [],\n }),\n [countryQuery, selectFormatOptionLabel]\n )\n\n const highlightContextValue = React.useMemo<SuggestionContextValue>(\n () => ({\n highlightedValue: highlightedOption?.value ?? null,\n setHighlightedOption: updateHighlightedOption,\n renderOptionLabel: optionLabelRenderer,\n consumeScrollBehavior,\n }),\n [consumeScrollBehavior, highlightedOption, optionLabelRenderer, updateHighlightedOption]\n )\n\n const activeOption = activeCountry\n ? countryOptions.find((option) => option.value === activeCountry)\n : undefined\n const activeFlag = activeOption?.flag ?? \"\"\n const inlineFlagLabel = activeCountry\n ? resolvedMessages.selectedCountryLabel(activeOption?.name ?? activeCountry)\n : resolvedMessages.selectCountryLabel\n const hasInlineFlag = Boolean(activeCountry && activeFlag)\n const lengthHint =\n lengthIssue === \"TOO_LONG\"\n ? resolvedMessages.lengthTooLong(activeOption?.name ?? activeCountry ?? null)\n : null\n const countryName = activeOption?.name ?? activeCountry ?? null\n\n let validationNode: React.ReactNode = null\n if (lengthHint) {\n const rendered = renderValidationMessage?.({\n message: lengthHint,\n code: \"TOO_LONG\",\n countryName,\n })\n validationNode =\n rendered === undefined ? (\n <p className=\"mt-1 text-xs text-destructive\">\n <span>{lengthHint}</span>\n </p>\n ) : (\n rendered\n )\n }\n\n const appendToBuffer = React.useCallback(\n (char: string) => {\n keyboardBufferRef.current = `${keyboardBufferRef.current}${char}`.slice(-12)\n setCountryQuery(keyboardBufferRef.current)\n setShowSuggestions(true)\n scheduleBufferReset()\n },\n [scheduleBufferReset]\n )\n\n const popBuffer = React.useCallback(() => {\n const current = keyboardBufferRef.current\n if (!current) {\n return\n }\n keyboardBufferRef.current = current.slice(0, -1)\n setCountryQuery(keyboardBufferRef.current)\n if (keyboardBufferRef.current) {\n scheduleBufferReset()\n }\n }, [scheduleBufferReset])\n\n const handleKeyDown = React.useCallback(\n (event: React.KeyboardEvent<HTMLInputElement>) => {\n onInputKeyDown?.(event)\n if (event.defaultPrevented) {\n return\n }\n\n const key = event.key\n\n if (event.metaKey || event.ctrlKey || event.altKey) {\n return\n }\n\n const target = event.currentTarget\n const value = target.value\n const selectionStart = target.selectionStart ?? 0\n const selectionEnd = target.selectionEnd ?? selectionStart\n const isCollapsedSelection = selectionStart === selectionEnd\n\n if (key === \"Backspace\" && isCollapsedSelection) {\n const nextStart = skipFormattingCharactersLeft(value, selectionStart)\n if (nextStart !== selectionStart) {\n target.setSelectionRange(nextStart, nextStart)\n }\n } else if (key === \"ArrowLeft\" && isCollapsedSelection) {\n const nextStart = skipFormattingCharactersLeft(value, selectionStart)\n if (nextStart !== selectionStart) {\n event.preventDefault()\n target.setSelectionRange(nextStart, nextStart)\n return\n }\n } else if (key === \"ArrowRight\" && isCollapsedSelection) {\n const nextStart = skipFormattingCharactersRight(value, selectionEnd)\n if (nextStart !== selectionEnd) {\n event.preventDefault()\n target.setSelectionRange(nextStart, nextStart)\n return\n }\n }\n\n if (key === \"ArrowDown\") {\n scrollBehaviorRef.current = event.repeat ? \"auto\" : \"smooth\"\n event.preventDefault()\n if (!showSuggestions) {\n setShowSuggestions(true)\n setHighlightedIndex(filteredOptions.length > 0 ? 0 : -1)\n return\n }\n\n if (filteredOptions.length > 0) {\n setHighlightedIndex((current) => {\n const next = current < 0 ? 0 : (current + 1) % filteredOptions.length\n return next\n })\n }\n return\n }\n\n if (key === \"ArrowUp\") {\n scrollBehaviorRef.current = event.repeat ? \"auto\" : \"smooth\"\n event.preventDefault()\n if (!showSuggestions) {\n setShowSuggestions(true)\n setHighlightedIndex(filteredOptions.length > 0 ? filteredOptions.length - 1 : -1)\n return\n }\n\n if (filteredOptions.length > 0) {\n setHighlightedIndex((current) => {\n if (current < 0) {\n return filteredOptions.length - 1\n }\n return (current - 1 + filteredOptions.length) % filteredOptions.length\n })\n }\n return\n }\n\n if (/^[a-z]$/i.test(key)) {\n event.preventDefault()\n if (!showSuggestions) {\n setShowSuggestions(true)\n setHighlightedIndex(filteredOptions.length > 0 ? 0 : -1)\n }\n appendToBuffer(key.toLowerCase())\n return\n }\n\n if (suggestionMenuIsOpen) {\n if (key === \"Backspace\" && keyboardBufferRef.current) {\n event.preventDefault()\n popBuffer()\n return\n }\n\n if (key === \"Escape\") {\n event.preventDefault()\n keyboardBufferRef.current = \"\"\n setCountryQuery(\"\")\n setShowSuggestions(false)\n return\n }\n\n if (key === \"Enter\" && filteredOptions.length > 0) {\n event.preventDefault()\n const targetOption = highlightedOption ?? filteredOptions[0]\n handleCountrySelect(targetOption)\n return\n }\n }\n },\n [\n appendToBuffer,\n filteredOptions,\n handleCountrySelect,\n highlightedOption,\n onInputKeyDown,\n popBuffer,\n showSuggestions,\n suggestionMenuIsOpen,\n ]\n )\n\n const handleFocus = React.useCallback(\n (event: React.FocusEvent<HTMLInputElement>) => {\n setIsFocused(true)\n onInputFocus?.(event)\n },\n [onInputFocus]\n )\n\n const handleBlur = React.useCallback(\n (event: React.FocusEvent<HTMLInputElement>) => {\n setIsFocused(false)\n setShowSuggestions(false)\n keyboardBufferRef.current = \"\"\n setCountryQuery(\"\")\n onInputBlur?.(event)\n },\n [onInputBlur]\n )\n\n const openCountryMenu = React.useCallback(() => {\n if (disabled || readOnly) {\n return\n }\n\n keyboardBufferRef.current = \"\"\n setCountryQuery(\"\")\n setShowSuggestions(true)\n setHighlightedIndex((current) => (current < 0 ? 0 : current))\n\n requestAnimationFrame(() => {\n inputRef.current?.focus()\n })\n }, [disabled, readOnly])\n\n const shimName = autofillShimName ?? (inputName ? `${inputName}_shim` : undefined)\n\n return (\n <div className={cn(\"relative flex flex-col\", className)}>\n <div className=\"relative\">\n <input\n {...restInputProps}\n ref={inputRef}\n type=\"tel\"\n className={cn(\n \"flex h-10 w-full rounded-md border border-input bg-background py-2 text-base ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 md:text-sm\",\n \"pl-11 pr-3\",\n inputClassName\n )}\n name={inputName}\n value={inputValueState}\n onChange={handleInputChange}\n onFocus={handleFocus}\n onBlur={handleBlur}\n onKeyDown={handleKeyDown}\n disabled={disabled}\n readOnly={readOnly}\n autoComplete={inputAutoComplete ?? \"off\"}\n />\n <button\n type=\"button\"\n className={cn(\n \"absolute left-3 top-1/2 flex h-6 w-6 -translate-y-1/2 items-center justify-center rounded border text-lg leading-none transition focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2\",\n hasInlineFlag\n ? \"border-transparent\"\n : \"border-dashed border-border text-muted-foreground\",\n disabled\n ? \"cursor-not-allowed opacity-50\"\n : readOnly\n ? \"cursor-default\"\n : \"cursor-pointer hover:bg-muted\"\n )}\n aria-label={inlineFlagLabel}\n onMouseDown={(event) => event.preventDefault()}\n onClick={openCountryMenu}\n tabIndex={-1}\n disabled={disabled}\n >\n <span aria-hidden=\"true\">\n {hasInlineFlag ? activeFlag : \"?\"}\n </span>\n </button>\n </div>\n\n {shimName ? (\n <input\n tabIndex={-1}\n autoComplete=\"tel\"\n name={shimName}\n aria-hidden=\"true\"\n className=\"pointer-events-none absolute left-0 top-0 h-0 w-0 opacity-0\"\n />\n ) : null}\n\n <div\n className=\"absolute left-0 top-full z-30 mt-1\"\n style={{\n pointerEvents: suggestionMenuIsOpen ? \"auto\" : \"none\",\n width: \"min(260px, 100%)\",\n }}\n onMouseDown={(event) => event.preventDefault()}\n >\n <SuggestionContext.Provider value={highlightContextValue}>\n <Select<CountryOption, false>\n {...restForwardedSelectProps}\n menuIsOpen={suggestionMenuIsOpen}\n options={filteredOptions}\n value={null}\n components={mergedSelectComponents}\n styles={mergedSelectStyles}\n isClearable={false}\n isSearchable={false}\n backspaceRemovesValue={false}\n tabSelectsValue={false}\n menuShouldScrollIntoView={false}\n menuPortalTarget={menuPortalTarget}\n menuPosition={userMenuPosition ?? (menuPortalTarget ? \"fixed\" : \"absolute\")}\n onChange={handleCountrySelect}\n classNamePrefix={userClassNamePrefix ?? \"phone-number-suggestions\"}\n placeholder=\"\"\n formatOptionLabel={selectFormatOptionLabel}\n noOptionsMessage={\n noOptionsMessage ?? (() => resolvedMessages.noMatches)\n }\n />\n </SuggestionContext.Provider>\n </div>\n\n {validationNode}\n </div>\n )\n }\n)\n\nPhoneNumberInput.displayName = \"PhoneNumberInput\"\n"],"mappings":"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"}
1
+ {"version":3,"file":"index362.js","names":["React","CountryCode","getCountryCallingCode","Select","Props","SelectProps","SingleValue","StylesConfig","cn","CountryOption","PhoneNumberChangeDetails","PhoneNumberInputProps","PhoneNumberSelectedCountry","resolveMessages","COMMON_IDD_PREFIXES","DEFAULT_COUNTRY","buildFallbackSelectedCountry","getCachedCountryOptions","getLocaleCacheKey","getValidCountry","normalizeSearchValue","optionMatchIndex","parseLocaleCacheKey","toSelectedCountry","formatWithAsYouType","getLengthIssue","sanitizeDigits","stripPrefix","LengthIssue","captureSelectionSnapshot","resolveSelection","skipFormattingCharactersLeft","skipFormattingCharactersRight","HiddenControl","NullComponent","SuggestionContext","SuggestionOption","formatCountryOption","suggestionSelectStyles","SuggestionContextValue","PhoneNumberInputMessages","PhoneNumberInputValidationCode","INVISIBLE_FORMATTING_CHARACTERS","ParsedInput","Omit","displayValue","lengthIssue","stripInvisibleFormatting","value","replace","stripIddPrefix","digits","prefix","startsWith","slice","length","normalizeImplicitInternationalInput","candidate","phoneNumber","detectedCountry","isValid","normalizeExplicitInternationalInput","cleaned","trim","digitsWithoutIdd","normalizeInternationalInput","explicitInternational","getDialCode","country","parsedDialCode","getInputValueForSelectedCountry","option","Pick","options","allowImplicitInternational","dialCode","normalizedInternational","normalizedDigits","currentDialCode","countryCallingCode","nationalDigits","nationalNumber","preferSelectedCountry","parsed","rawInput","parsePhoneInput","rawValue","baseCountry","formattedInternational","formattedNational","e164","shouldFormat","normalized","international","national","formatted","hasInternationalPrefix","formatInternational","formatNational","number","PhoneNumberInput","forwardRef","HTMLInputElement","props","forwardedRef","defaultCountry","countryProp","locale","onChange","onCountryChange","className","inputClassName","disabled","readOnly","selectProps","autofillShimName","messages","messagesProp","renderValidationMessage","restProps","onFocus","onInputFocus","onBlur","onInputBlur","onKeyDown","onInputKeyDown","name","inputName","autoComplete","inputAutoComplete","restInputProps","controlledCountry","localeCacheKey","localeForBuild","useMemo","resolvedMessages","countryOptions","resolveSelectedCountry","useCallback","match","find","menuPriorityCountry","some","initialStateRef","useRef","current","initialState","undefined","uncontrolledCountry","setUncontrolledCountry","useState","inputValueState","setInputValueState","countryQuery","setCountryQuery","showSuggestions","setShowSuggestions","highlightedIndex","setHighlightedIndex","isFocused","setIsFocused","shouldRenderSelect","setShouldRenderSelect","setLengthIssue","manualSelectionCountryRef","keyboardBufferRef","bufferTimeoutRef","scrollBehaviorRef","ScrollBehavior","pendingSelectionRef","start","end","hasNotifiedCountryRef","lastNotifiedCountryRef","inputRef","activeCountry","explicitFormattingCountry","useImperativeHandle","useLayoutEffect","selection","input","setSelectionRange","selectOverrides","generatedSelectInstanceId","useId","styles","userSelectStyles","components","userSelectComponents","classNamePrefix","userClassNamePrefix","formatOptionLabel","userFormatOptionLabel","menuPortalTarget","userMenuPortalTarget","menuPosition","userMenuPosition","forwardedSelectProps","instanceId","userSelectInstanceId","noOptionsMessage","restForwardedSelectProps","selectInstanceId","defaultMenuPortalTarget","setDefaultMenuPortalTarget","HTMLElement","hasUserMenuPortalTarget","mergedSelectStyles","userMenuPortal","menuPortal","provided","state","baseWithZIndex","zIndex","base","document","body","portalRect","getBoundingClientRect","left","top","portalTarget","closest","mergedSelectComponents","baseComponents","Control","IndicatorsContainer","DropdownIndicator","IndicatorSeparator","ValueContainer","overrides","Option","useEffect","window","clearTimeout","emitChange","details","selectedCountry","scheduleBufferReset","setTimeout","applyParsedInput","snapshot","ReturnType","handleInputChange","event","ChangeEvent","target","raw","normalizedExplicitInternational","manualCountry","manualDialCode","activeManualCountry","rawDigits","manualOption","handleCountrySelect","nextInputValue","requestAnimationFrame","focus","filteredOptions","results","pushUnique","existing","push","priorityOption","currentOption","query","digitQuery","normalizedQuery","forEach","dialMatches","filter","sort","a","b","aExact","bExact","nameMatches","normalizedSearchableTokens","token","includes","aIndex","bIndex","localeCompare","suggestionMenuIsOpen","highlightedOption","consumeScrollBehavior","behavior","updateHighlightedOption","index","findIndex","selectFormatOptionLabel","NonNullable","meta","optionLabelRenderer","context","inputValue","selectValue","highlightContextValue","highlightedValue","setHighlightedOption","renderOptionLabel","activeOption","activeFlag","flag","inlineFlagLabel","selectedCountryLabel","selectCountryLabel","hasInlineFlag","Boolean","lengthHint","lengthTooLong","countryName","validationNode","ReactNode","rendered","message","code","appendToBuffer","char","popBuffer","handleKeyDown","KeyboardEvent","defaultPrevented","key","metaKey","ctrlKey","altKey","currentTarget","selectionStart","selectionEnd","isCollapsedSelection","nextStart","preventDefault","repeat","next","test","toLowerCase","targetOption","handleFocus","FocusEvent","handleBlur","openCountryMenu","shimName","pointerEvents","width","noMatches","displayName"],"sources":["../src/components/PhoneNumberInput/index.tsx"],"sourcesContent":["import * as React from \"react\"\nimport type { CountryCode } from \"libphonenumber-js\"\nimport { getCountryCallingCode } from \"libphonenumber-js\"\nimport Select, {\n type Props as SelectProps,\n type SingleValue,\n type StylesConfig,\n} from \"react-select\"\n\nimport { cn } from \"@/lib/utils\"\n\nimport type {\n CountryOption,\n PhoneNumberChangeDetails,\n PhoneNumberInputProps,\n PhoneNumberSelectedCountry,\n} from \"./types\"\nimport { resolveMessages } from \"./messages\"\nimport {\n COMMON_IDD_PREFIXES,\n DEFAULT_COUNTRY,\n buildFallbackSelectedCountry,\n getCachedCountryOptions,\n getLocaleCacheKey,\n getValidCountry,\n normalizeSearchValue,\n optionMatchIndex,\n parseLocaleCacheKey,\n toSelectedCountry,\n} from \"./country-options\"\nimport {\n formatWithAsYouType,\n getLengthIssue,\n sanitizeDigits,\n stripPrefix,\n type LengthIssue,\n} from \"./normalization\"\nimport {\n captureSelectionSnapshot,\n resolveSelection,\n skipFormattingCharactersLeft,\n skipFormattingCharactersRight,\n} from \"./selection\"\nimport {\n HiddenControl,\n NullComponent,\n SuggestionContext,\n SuggestionOption,\n formatCountryOption,\n suggestionSelectStyles,\n type SuggestionContextValue,\n} from \"./suggestions\"\n\n\nexport type {\n CountryOption,\n PhoneNumberChangeDetails,\n PhoneNumberInputMessages,\n PhoneNumberInputProps,\n PhoneNumberInputValidationCode,\n PhoneNumberSelectedCountry,\n} from \"./types\"\n\nconst INVISIBLE_FORMATTING_CHARACTERS =\n /[\\u061C\\u200B-\\u200F\\u202A-\\u202E\\u2066-\\u2069\\uFEFF]/g\n\ntype ParsedInput = Omit<PhoneNumberChangeDetails, \"selectedCountry\"> & {\n displayValue: string\n lengthIssue: LengthIssue | null\n}\n\nfunction stripInvisibleFormatting(value: string) {\n return value.replace(INVISIBLE_FORMATTING_CHARACTERS, \"\")\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\nfunction normalizeImplicitInternationalInput(digits: string) {\n const candidate = `+${digits}`\n const { phoneNumber, detectedCountry } = formatWithAsYouType(candidate)\n\n if (phoneNumber?.isValid() && detectedCountry) {\n return candidate\n }\n\n return null\n}\n\nfunction normalizeExplicitInternationalInput(value: string) {\n const cleaned = stripInvisibleFormatting(value).trim()\n if (!cleaned) {\n return null\n }\n\n if (cleaned.startsWith(\"+\")) {\n const digits = sanitizeDigits(cleaned)\n if (!digits) {\n return \"+\"\n }\n\n const digitsWithoutIdd = stripIddPrefix(digits)\n return digitsWithoutIdd ? `+${digitsWithoutIdd}` : \"+\"\n }\n\n const digits = sanitizeDigits(cleaned)\n if (!digits) {\n return null\n }\n\n const digitsWithoutIdd = stripIddPrefix(digits)\n if (digitsWithoutIdd !== digits) {\n return digitsWithoutIdd ? `+${digitsWithoutIdd}` : \"+\"\n }\n\n return null\n}\n\nfunction normalizeInternationalInput(value: string) {\n const explicitInternational = normalizeExplicitInternationalInput(value)\n if (explicitInternational != null) {\n return explicitInternational\n }\n\n const cleaned = stripInvisibleFormatting(value).trim()\n const digits = sanitizeDigits(cleaned)\n if (!digits) {\n return null\n }\n\n return normalizeImplicitInternationalInput(digits)\n}\n\nfunction getDialCode(country: CountryCode | null, parsedDialCode: string | undefined) {\n if (parsedDialCode) {\n return parsedDialCode\n }\n return country ? getCountryCallingCode(country) : null\n}\n\nfunction getInputValueForSelectedCountry(\n value: string,\n option: Pick<CountryOption, \"dialCode\" | \"value\">,\n options?: { allowImplicitInternational?: boolean }\n) {\n const cleaned = stripInvisibleFormatting(value).trim()\n const digits = sanitizeDigits(cleaned)\n\n if (!digits) {\n return `+${option.dialCode}`\n }\n\n const normalizedInternational =\n options?.allowImplicitInternational === false\n ? normalizeExplicitInternationalInput(cleaned)\n : normalizeInternationalInput(cleaned)\n if (normalizedInternational) {\n const normalizedDigits = sanitizeDigits(normalizedInternational)\n if (normalizedDigits.startsWith(option.dialCode)) {\n return normalizedInternational\n }\n\n const { phoneNumber } = formatWithAsYouType(normalizedInternational)\n const currentDialCode = phoneNumber?.countryCallingCode\n const nationalDigits =\n currentDialCode && normalizedDigits.startsWith(currentDialCode)\n ? normalizedDigits.slice(currentDialCode.length)\n : phoneNumber?.nationalNumber ?? normalizedDigits\n\n return `+${option.dialCode}${nationalDigits}`\n }\n\n const { phoneNumber } = formatWithAsYouType(cleaned, option.value)\n return `+${option.dialCode}${phoneNumber?.nationalNumber ?? digits}`\n}\n\nfunction preferSelectedCountry(\n parsed: ParsedInput,\n option: Pick<CountryOption, \"dialCode\" | \"value\">\n): ParsedInput {\n return {\n ...parsed,\n country: option.value,\n countryCallingCode: option.dialCode,\n lengthIssue: getLengthIssue(parsed.rawInput, option.value),\n }\n}\n\nfunction parsePhoneInput(rawValue: string | undefined, baseCountry?: CountryCode): ParsedInput {\n const cleaned = stripInvisibleFormatting(rawValue ?? \"\").trim()\n\n if (!cleaned) {\n const country = baseCountry ?? null\n const countryCallingCode = country ? getCountryCallingCode(country) : null\n\n return {\n displayValue: \"\",\n formattedInternational: \"\",\n formattedNational: \"\",\n e164: null,\n country,\n countryCallingCode,\n nationalNumber: \"\",\n rawInput: \"\",\n isValid: false,\n lengthIssue: null,\n }\n }\n\n const normalizedInternational = normalizeInternationalInput(cleaned)\n const shouldFormat = normalizedInternational != null || baseCountry != null\n\n if (!shouldFormat) {\n return {\n displayValue: cleaned,\n formattedInternational: cleaned,\n formattedNational: cleaned,\n e164: null,\n country: null,\n countryCallingCode: null,\n nationalNumber: sanitizeDigits(cleaned),\n rawInput: cleaned,\n isValid: false,\n lengthIssue: null,\n }\n }\n\n const normalized = normalizedInternational ?? cleaned\n const {\n international,\n national,\n formatted,\n phoneNumber,\n detectedCountry,\n } = formatWithAsYouType(normalized, baseCountry)\n const hasInternationalPrefix = normalizedInternational != null\n const country = hasInternationalPrefix\n ? detectedCountry ?? baseCountry ?? null\n : baseCountry ?? detectedCountry ?? null\n const countryCallingCode = getDialCode(country, phoneNumber?.countryCallingCode)\n const normalizedDigits = sanitizeDigits(normalized)\n const nationalNumber =\n phoneNumber?.nationalNumber ??\n (countryCallingCode && normalized.startsWith(\"+\")\n ? stripPrefix(normalizedDigits, countryCallingCode)\n : sanitizeDigits(cleaned))\n const displayValue = hasInternationalPrefix ? international : formatted\n\n return {\n displayValue,\n formattedInternational: phoneNumber?.formatInternational() ?? international,\n formattedNational: phoneNumber?.formatNational() ?? national,\n e164: phoneNumber?.number ?? null,\n country,\n countryCallingCode,\n nationalNumber,\n rawInput: normalized,\n isValid: phoneNumber?.isValid() ?? false,\n lengthIssue: country ? getLengthIssue(normalized, country) : null,\n }\n}\n\nexport const PhoneNumberInput = React.forwardRef<HTMLInputElement, PhoneNumberInputProps>(\n function PhoneNumberInput(props, forwardedRef) {\n const {\n value,\n defaultCountry,\n country: countryProp,\n locale,\n onChange,\n onCountryChange,\n className,\n inputClassName,\n disabled,\n readOnly,\n selectProps,\n autofillShimName,\n messages: messagesProp,\n renderValidationMessage,\n ...restProps\n } = props\n\n const {\n onFocus: onInputFocus,\n onBlur: onInputBlur,\n onKeyDown: onInputKeyDown,\n name: inputName,\n autoComplete: inputAutoComplete,\n ...restInputProps\n } = restProps\n\n const controlledCountry = typeof countryProp === \"string\" ? countryProp : null\n const localeCacheKey = getLocaleCacheKey(locale)\n const localeForBuild = React.useMemo(\n () => parseLocaleCacheKey(localeCacheKey),\n [localeCacheKey]\n )\n const resolvedMessages = React.useMemo(\n () => resolveMessages(localeForBuild, messagesProp),\n [localeForBuild, messagesProp]\n )\n const countryOptions = React.useMemo(\n () => getCachedCountryOptions(localeForBuild, localeCacheKey),\n [localeCacheKey, localeForBuild]\n )\n const resolveSelectedCountry = React.useCallback(\n (country: CountryCode): PhoneNumberSelectedCountry => {\n const match = countryOptions.find((candidate) => candidate.value === country)\n if (match) {\n return toSelectedCountry(match)\n }\n return buildFallbackSelectedCountry(country)\n },\n [countryOptions]\n )\n const menuPriorityCountry = React.useMemo(() => {\n const candidate = getValidCountry(defaultCountry ?? countryProp ?? DEFAULT_COUNTRY)\n if (countryOptions.some((option) => option.value === candidate)) {\n return candidate\n }\n return countryOptions[0]?.value ?? DEFAULT_COUNTRY\n }, [countryOptions, countryProp, defaultCountry])\n\n const initialStateRef = React.useRef<ParsedInput | null>(null)\n\n if (!initialStateRef.current) {\n const initialState = parsePhoneInput(value, controlledCountry ?? undefined)\n initialStateRef.current = initialState\n }\n\n const initialState = initialStateRef.current\n\n const [uncontrolledCountry, setUncontrolledCountry] = React.useState<CountryCode | null>(\n controlledCountry ? null : initialState.country\n )\n const [inputValueState, setInputValueState] = React.useState(initialState.displayValue)\n const [countryQuery, setCountryQuery] = React.useState(\"\")\n const [showSuggestions, setShowSuggestions] = React.useState(false)\n const [highlightedIndex, setHighlightedIndex] = React.useState<number>(-1)\n const [isFocused, setIsFocused] = React.useState(false)\n const [shouldRenderSelect, setShouldRenderSelect] = React.useState(false)\n const [lengthIssue, setLengthIssue] = React.useState<LengthIssue | null>(\n initialState.lengthIssue\n )\n\n const manualSelectionCountryRef = React.useRef<CountryCode | null>(null)\n const keyboardBufferRef = React.useRef(\"\")\n const bufferTimeoutRef = React.useRef<number | null>(null)\n const scrollBehaviorRef = React.useRef<ScrollBehavior>(\"smooth\")\n const pendingSelectionRef = React.useRef<{ start: number; end: number } | null>(null)\n const hasNotifiedCountryRef = React.useRef(false)\n const lastNotifiedCountryRef = React.useRef<CountryCode | null>(null)\n const inputRef = React.useRef<HTMLInputElement | null>(null)\n\n const activeCountry = controlledCountry ?? uncontrolledCountry\n const explicitFormattingCountry = controlledCountry ?? manualSelectionCountryRef.current ?? undefined\n\n React.useImperativeHandle(forwardedRef, () => inputRef.current as HTMLInputElement, [])\n\n React.useLayoutEffect(() => {\n setShouldRenderSelect(true)\n }, [])\n\n React.useLayoutEffect(() => {\n const selection = pendingSelectionRef.current\n if (!selection) {\n return\n }\n\n const input = inputRef.current\n pendingSelectionRef.current = null\n if (!input) {\n return\n }\n\n const { start, end } = selection\n input.setSelectionRange(start, end)\n }, [inputValueState])\n\n const selectOverrides = selectProps ?? {}\n const generatedSelectInstanceId = React.useId()\n const {\n styles: userSelectStyles,\n components: userSelectComponents,\n classNamePrefix: userClassNamePrefix,\n formatOptionLabel: userFormatOptionLabel,\n menuPortalTarget: userMenuPortalTarget,\n menuPosition: userMenuPosition,\n ...forwardedSelectProps\n } = selectOverrides\n const {\n instanceId: userSelectInstanceId,\n noOptionsMessage,\n ...restForwardedSelectProps\n } = forwardedSelectProps\n const selectInstanceId = userSelectInstanceId ?? generatedSelectInstanceId\n const [defaultMenuPortalTarget, setDefaultMenuPortalTarget] =\n React.useState<HTMLElement | null>(null)\n const hasUserMenuPortalTarget = \"menuPortalTarget\" in selectOverrides\n const menuPortalTarget = hasUserMenuPortalTarget\n ? userMenuPortalTarget\n : defaultMenuPortalTarget\n\n const mergedSelectStyles = React.useMemo<StylesConfig<CountryOption, false>>(\n () => {\n const userMenuPortal = userSelectStyles?.menuPortal\n\n return {\n ...suggestionSelectStyles,\n ...(userSelectStyles ?? {}),\n menuPortal: (provided, state) => {\n const baseWithZIndex = {\n ...provided,\n zIndex: 1300,\n }\n const base = userMenuPortal ? userMenuPortal(baseWithZIndex, state) : baseWithZIndex\n\n if (typeof document === \"undefined\" || !menuPortalTarget || menuPortalTarget === document.body) {\n return base\n }\n\n const portalRect = menuPortalTarget.getBoundingClientRect()\n return {\n ...base,\n left: typeof base.left === \"number\" ? base.left - portalRect.left : base.left,\n top: typeof base.top === \"number\" ? base.top - portalRect.top : base.top,\n }\n },\n }\n },\n [menuPortalTarget, userSelectStyles]\n )\n\n React.useLayoutEffect(() => {\n if (hasUserMenuPortalTarget || typeof document === \"undefined\") {\n return\n }\n\n const portalTarget =\n inputRef.current?.closest<HTMLElement>(\n \"[data-slot='dialog-content'], [data-slot='sheet-content'], [role='dialog']\"\n ) ?? document.body\n setDefaultMenuPortalTarget(portalTarget)\n }, [hasUserMenuPortalTarget])\n\n const mergedSelectComponents = React.useMemo(() => {\n const baseComponents = {\n Control: HiddenControl,\n IndicatorsContainer: NullComponent,\n DropdownIndicator: NullComponent,\n IndicatorSeparator: NullComponent,\n ValueContainer: NullComponent,\n }\n\n const overrides = userSelectComponents ?? {}\n\n if (!overrides.Option) {\n return {\n ...baseComponents,\n ...overrides,\n Option: SuggestionOption,\n }\n }\n\n return {\n ...baseComponents,\n ...overrides,\n }\n }, [userSelectComponents])\n\n React.useEffect(() => () => {\n if (bufferTimeoutRef.current != null && typeof window !== \"undefined\") {\n window.clearTimeout(bufferTimeoutRef.current)\n }\n }, [])\n\n React.useEffect(() => {\n if (value == null) {\n return\n }\n\n const parsed = parsePhoneInput(value, explicitFormattingCountry)\n keyboardBufferRef.current = \"\"\n\n setInputValueState(parsed.displayValue)\n setShowSuggestions(false)\n setCountryQuery(\"\")\n setHighlightedIndex(-1)\n setLengthIssue(parsed.lengthIssue)\n\n if (!controlledCountry && parsed.country !== uncontrolledCountry) {\n setUncontrolledCountry(parsed.country)\n }\n }, [controlledCountry, explicitFormattingCountry, uncontrolledCountry, value])\n\n React.useEffect(() => {\n const country = activeCountry ?? null\n if (!hasNotifiedCountryRef.current && country == null) {\n return\n }\n\n if (hasNotifiedCountryRef.current && lastNotifiedCountryRef.current === country) {\n return\n }\n\n hasNotifiedCountryRef.current = true\n lastNotifiedCountryRef.current = country\n onCountryChange?.(country, country ? resolveSelectedCountry(country) : null)\n }, [activeCountry, onCountryChange, resolveSelectedCountry])\n\n const emitChange = React.useCallback(\n (details: Omit<PhoneNumberChangeDetails, \"selectedCountry\">) => {\n onChange?.({\n ...details,\n selectedCountry: details.country ? resolveSelectedCountry(details.country) : null,\n })\n },\n [onChange, resolveSelectedCountry]\n )\n\n const scheduleBufferReset = React.useCallback(() => {\n if (typeof window === \"undefined\") {\n return\n }\n\n if (bufferTimeoutRef.current != null) {\n window.clearTimeout(bufferTimeoutRef.current)\n }\n\n bufferTimeoutRef.current = window.setTimeout(() => {\n keyboardBufferRef.current = \"\"\n bufferTimeoutRef.current = null\n }, 800)\n }, [])\n\n const applyParsedInput = React.useCallback(\n (parsed: ParsedInput, snapshot: ReturnType<typeof captureSelectionSnapshot> | null) => {\n setInputValueState(parsed.displayValue)\n setShowSuggestions(false)\n setCountryQuery(\"\")\n setHighlightedIndex(-1)\n setLengthIssue(parsed.lengthIssue)\n\n if (!controlledCountry && parsed.country !== uncontrolledCountry) {\n setUncontrolledCountry(parsed.country)\n }\n\n if (snapshot) {\n pendingSelectionRef.current = resolveSelection(snapshot, parsed.displayValue)\n }\n\n emitChange({\n formattedInternational: parsed.formattedInternational,\n formattedNational: parsed.formattedNational,\n e164: parsed.e164,\n country: parsed.country,\n countryCallingCode: parsed.countryCallingCode,\n nationalNumber: parsed.nationalNumber,\n rawInput: parsed.rawInput,\n isValid: parsed.isValid,\n })\n },\n [controlledCountry, emitChange, uncontrolledCountry]\n )\n\n const handleInputChange = React.useCallback(\n (event: React.ChangeEvent<HTMLInputElement>) => {\n const target = event.target\n const snapshot = captureSelectionSnapshot(target)\n const raw = target.value\n keyboardBufferRef.current = \"\"\n\n const normalizedExplicitInternational = normalizeExplicitInternationalInput(raw)\n const manualCountry = manualSelectionCountryRef.current\n if (normalizedExplicitInternational != null && manualCountry) {\n const manualDialCode = getCountryCallingCode(manualCountry)\n if (!sanitizeDigits(normalizedExplicitInternational).startsWith(manualDialCode)) {\n manualSelectionCountryRef.current = null\n }\n } else if (normalizedExplicitInternational != null) {\n manualSelectionCountryRef.current = null\n }\n\n const activeManualCountry = manualSelectionCountryRef.current\n const rawDigits = sanitizeDigits(raw)\n if (\n !controlledCountry &&\n activeManualCountry &&\n normalizedExplicitInternational == null &&\n rawDigits\n ) {\n const manualOption = {\n value: activeManualCountry,\n dialCode: getCountryCallingCode(activeManualCountry),\n }\n const parsed = preferSelectedCountry(\n parsePhoneInput(\n getInputValueForSelectedCountry(\n raw,\n {\n value: manualOption.value,\n dialCode: manualOption.dialCode,\n },\n { allowImplicitInternational: false }\n ),\n activeManualCountry\n ),\n manualOption\n )\n applyParsedInput(parsed, snapshot)\n return\n }\n\n const baseCountry = controlledCountry ?? activeManualCountry ?? undefined\n const parsed = parsePhoneInput(raw, baseCountry)\n applyParsedInput(parsed, snapshot)\n },\n [applyParsedInput, controlledCountry]\n )\n\n const handleCountrySelect = React.useCallback(\n (option: SingleValue<CountryOption>) => {\n if (!option) {\n return\n }\n\n manualSelectionCountryRef.current = option.value\n const nextInputValue = getInputValueForSelectedCountry(inputValueState, option)\n const parsed = preferSelectedCountry(\n parsePhoneInput(nextInputValue, option.value),\n option\n )\n\n setInputValueState(parsed.displayValue)\n pendingSelectionRef.current = {\n start: parsed.displayValue.length,\n end: parsed.displayValue.length,\n }\n setShowSuggestions(false)\n setCountryQuery(\"\")\n setHighlightedIndex(-1)\n setLengthIssue(parsed.lengthIssue)\n\n if (!controlledCountry) {\n setUncontrolledCountry(option.value)\n }\n\n emitChange({\n formattedInternational: parsed.formattedInternational,\n formattedNational: parsed.formattedNational,\n e164: parsed.e164,\n country: parsed.country,\n countryCallingCode: parsed.countryCallingCode,\n nationalNumber: parsed.nationalNumber,\n rawInput: parsed.rawInput,\n isValid: parsed.isValid,\n })\n\n requestAnimationFrame(() => {\n inputRef.current?.focus()\n })\n },\n [controlledCountry, emitChange, inputValueState]\n )\n\n const filteredOptions = React.useMemo(() => {\n if (!showSuggestions) {\n return [] as CountryOption[]\n }\n\n const results: CountryOption[] = []\n\n const pushUnique = (option: CountryOption | undefined) => {\n if (option && !results.some((existing) => existing.value === option.value)) {\n results.push(option)\n }\n }\n\n const priorityOption = countryOptions.find((option) => option.value === menuPriorityCountry)\n const currentOption = activeCountry\n ? countryOptions.find((option) => option.value === activeCountry)\n : undefined\n const query = countryQuery.trim()\n const digitQuery = sanitizeDigits(query)\n const normalizedQuery = normalizeSearchValue(query)\n\n if (!digitQuery && !normalizedQuery) {\n pushUnique(currentOption)\n pushUnique(priorityOption)\n countryOptions.forEach(pushUnique)\n return results\n }\n\n if (digitQuery) {\n const dialMatches = countryOptions\n .filter((option) => option.dialCode.startsWith(digitQuery))\n .sort((a, b) => {\n const aExact = a.dialCode === digitQuery\n const bExact = b.dialCode === digitQuery\n if (aExact && !bExact) {\n return -1\n }\n if (!aExact && bExact) {\n return 1\n }\n return a.dialCode.length - b.dialCode.length\n })\n dialMatches.forEach(pushUnique)\n }\n\n if (normalizedQuery) {\n const nameMatches = countryOptions\n .filter((option) =>\n option.normalizedSearchableTokens.some((token) => token.includes(normalizedQuery))\n )\n .sort((a, b) => {\n const aIndex = optionMatchIndex(a.normalizedSearchableTokens, normalizedQuery)\n const bIndex = optionMatchIndex(b.normalizedSearchableTokens, normalizedQuery)\n if (aIndex !== bIndex) {\n return aIndex - bIndex\n }\n return a.name.localeCompare(b.name)\n })\n nameMatches.forEach(pushUnique)\n }\n\n pushUnique(currentOption)\n pushUnique(priorityOption)\n if (results.length === 0) {\n countryOptions.forEach(pushUnique)\n }\n\n return results\n }, [activeCountry, countryOptions, countryQuery, menuPriorityCountry, showSuggestions])\n\n const suggestionMenuIsOpen = isFocused && showSuggestions && filteredOptions.length > 0\n\n React.useEffect(() => {\n if (!suggestionMenuIsOpen) {\n scrollBehaviorRef.current = \"smooth\"\n }\n }, [suggestionMenuIsOpen])\n\n React.useEffect(() => {\n if (!suggestionMenuIsOpen) {\n setHighlightedIndex(-1)\n return\n }\n\n if (filteredOptions.length === 0) {\n setHighlightedIndex(-1)\n return\n }\n\n setHighlightedIndex((current) => {\n if (current < 0 || current >= filteredOptions.length) {\n return 0\n }\n return current\n })\n }, [filteredOptions, suggestionMenuIsOpen])\n\n const highlightedOption =\n highlightedIndex >= 0 ? filteredOptions[highlightedIndex] ?? null : null\n\n React.useEffect(() => {\n if (highlightedIndex < 0) {\n scrollBehaviorRef.current = \"smooth\"\n }\n }, [highlightedIndex])\n\n const consumeScrollBehavior = React.useCallback(() => {\n const behavior = scrollBehaviorRef.current\n scrollBehaviorRef.current = \"smooth\"\n return behavior\n }, [])\n\n const updateHighlightedOption = React.useCallback(\n (option: CountryOption) => {\n const index = filteredOptions.findIndex((candidate) => candidate.value === option.value)\n if (index !== -1) {\n setHighlightedIndex(index)\n }\n },\n [filteredOptions]\n )\n\n const selectFormatOptionLabel = React.useCallback<\n NonNullable<SelectProps<CountryOption, false>[\"formatOptionLabel\"]>\n >(\n (option, meta) => {\n if (userFormatOptionLabel) {\n return userFormatOptionLabel(option, meta)\n }\n return formatCountryOption(option)\n },\n [userFormatOptionLabel]\n )\n\n const optionLabelRenderer = React.useCallback(\n (option: CountryOption) =>\n selectFormatOptionLabel(option, {\n context: \"menu\",\n inputValue: countryQuery,\n selectValue: [],\n }),\n [countryQuery, selectFormatOptionLabel]\n )\n\n const highlightContextValue = React.useMemo<SuggestionContextValue>(\n () => ({\n highlightedValue: highlightedOption?.value ?? null,\n setHighlightedOption: updateHighlightedOption,\n renderOptionLabel: optionLabelRenderer,\n consumeScrollBehavior,\n }),\n [consumeScrollBehavior, highlightedOption, optionLabelRenderer, updateHighlightedOption]\n )\n\n const activeOption = activeCountry\n ? countryOptions.find((option) => option.value === activeCountry)\n : undefined\n const activeFlag = activeOption?.flag ?? \"\"\n const inlineFlagLabel = activeCountry\n ? resolvedMessages.selectedCountryLabel(activeOption?.name ?? activeCountry)\n : resolvedMessages.selectCountryLabel\n const hasInlineFlag = Boolean(activeCountry && activeFlag)\n const lengthHint =\n lengthIssue === \"TOO_LONG\"\n ? resolvedMessages.lengthTooLong(activeOption?.name ?? activeCountry ?? null)\n : null\n const countryName = activeOption?.name ?? activeCountry ?? null\n\n let validationNode: React.ReactNode = null\n if (lengthHint) {\n const rendered = renderValidationMessage?.({\n message: lengthHint,\n code: \"TOO_LONG\",\n countryName,\n })\n validationNode =\n rendered === undefined ? (\n <p className=\"mt-1 text-xs text-destructive\">\n <span>{lengthHint}</span>\n </p>\n ) : (\n rendered\n )\n }\n\n const appendToBuffer = React.useCallback(\n (char: string) => {\n keyboardBufferRef.current = `${keyboardBufferRef.current}${char}`.slice(-12)\n setCountryQuery(keyboardBufferRef.current)\n setShowSuggestions(true)\n scheduleBufferReset()\n },\n [scheduleBufferReset]\n )\n\n const popBuffer = React.useCallback(() => {\n const current = keyboardBufferRef.current\n if (!current) {\n return\n }\n keyboardBufferRef.current = current.slice(0, -1)\n setCountryQuery(keyboardBufferRef.current)\n if (keyboardBufferRef.current) {\n scheduleBufferReset()\n }\n }, [scheduleBufferReset])\n\n const handleKeyDown = React.useCallback(\n (event: React.KeyboardEvent<HTMLInputElement>) => {\n onInputKeyDown?.(event)\n if (event.defaultPrevented) {\n return\n }\n\n const key = event.key\n\n if (event.metaKey || event.ctrlKey || event.altKey) {\n return\n }\n\n const target = event.currentTarget\n const value = target.value\n const selectionStart = target.selectionStart ?? 0\n const selectionEnd = target.selectionEnd ?? selectionStart\n const isCollapsedSelection = selectionStart === selectionEnd\n\n if (key === \"Backspace\" && isCollapsedSelection) {\n const nextStart = skipFormattingCharactersLeft(value, selectionStart)\n if (nextStart !== selectionStart) {\n target.setSelectionRange(nextStart, nextStart)\n }\n } else if (key === \"ArrowLeft\" && isCollapsedSelection) {\n const nextStart = skipFormattingCharactersLeft(value, selectionStart)\n if (nextStart !== selectionStart) {\n event.preventDefault()\n target.setSelectionRange(nextStart, nextStart)\n return\n }\n } else if (key === \"ArrowRight\" && isCollapsedSelection) {\n const nextStart = skipFormattingCharactersRight(value, selectionEnd)\n if (nextStart !== selectionEnd) {\n event.preventDefault()\n target.setSelectionRange(nextStart, nextStart)\n return\n }\n }\n\n if (key === \"ArrowDown\") {\n scrollBehaviorRef.current = event.repeat ? \"auto\" : \"smooth\"\n event.preventDefault()\n if (!showSuggestions) {\n setShowSuggestions(true)\n setHighlightedIndex(filteredOptions.length > 0 ? 0 : -1)\n return\n }\n\n if (filteredOptions.length > 0) {\n setHighlightedIndex((current) => {\n const next = current < 0 ? 0 : (current + 1) % filteredOptions.length\n return next\n })\n }\n return\n }\n\n if (key === \"ArrowUp\") {\n scrollBehaviorRef.current = event.repeat ? \"auto\" : \"smooth\"\n event.preventDefault()\n if (!showSuggestions) {\n setShowSuggestions(true)\n setHighlightedIndex(filteredOptions.length > 0 ? filteredOptions.length - 1 : -1)\n return\n }\n\n if (filteredOptions.length > 0) {\n setHighlightedIndex((current) => {\n if (current < 0) {\n return filteredOptions.length - 1\n }\n return (current - 1 + filteredOptions.length) % filteredOptions.length\n })\n }\n return\n }\n\n if (/^[a-z]$/i.test(key)) {\n event.preventDefault()\n if (!showSuggestions) {\n setShowSuggestions(true)\n setHighlightedIndex(filteredOptions.length > 0 ? 0 : -1)\n }\n appendToBuffer(key.toLowerCase())\n return\n }\n\n if (suggestionMenuIsOpen) {\n if (key === \"Backspace\" && keyboardBufferRef.current) {\n event.preventDefault()\n popBuffer()\n return\n }\n\n if (key === \"Escape\") {\n event.preventDefault()\n keyboardBufferRef.current = \"\"\n setCountryQuery(\"\")\n setShowSuggestions(false)\n return\n }\n\n if (key === \"Enter\" && filteredOptions.length > 0) {\n event.preventDefault()\n const targetOption = highlightedOption ?? filteredOptions[0]\n handleCountrySelect(targetOption)\n return\n }\n }\n },\n [\n appendToBuffer,\n filteredOptions,\n handleCountrySelect,\n highlightedOption,\n onInputKeyDown,\n popBuffer,\n showSuggestions,\n suggestionMenuIsOpen,\n ]\n )\n\n const handleFocus = React.useCallback(\n (event: React.FocusEvent<HTMLInputElement>) => {\n setIsFocused(true)\n onInputFocus?.(event)\n },\n [onInputFocus]\n )\n\n const handleBlur = React.useCallback(\n (event: React.FocusEvent<HTMLInputElement>) => {\n setIsFocused(false)\n setShowSuggestions(false)\n keyboardBufferRef.current = \"\"\n setCountryQuery(\"\")\n onInputBlur?.(event)\n },\n [onInputBlur]\n )\n\n const openCountryMenu = React.useCallback(() => {\n if (disabled || readOnly) {\n return\n }\n\n keyboardBufferRef.current = \"\"\n setCountryQuery(\"\")\n setShowSuggestions(true)\n setHighlightedIndex((current) => (current < 0 ? 0 : current))\n\n requestAnimationFrame(() => {\n inputRef.current?.focus()\n })\n }, [disabled, readOnly])\n\n const shimName = autofillShimName ?? (inputName ? `${inputName}_shim` : undefined)\n\n return (\n <div className={cn(\"relative flex flex-col\", className)}>\n <div className=\"relative\">\n <input\n {...restInputProps}\n ref={inputRef}\n type=\"tel\"\n className={cn(\n \"flex h-10 w-full rounded-md border border-input bg-background py-2 text-base ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 md:text-sm\",\n \"pl-11 pr-3\",\n inputClassName\n )}\n name={inputName}\n value={inputValueState}\n onChange={handleInputChange}\n onFocus={handleFocus}\n onBlur={handleBlur}\n onKeyDown={handleKeyDown}\n disabled={disabled}\n readOnly={readOnly}\n autoComplete={inputAutoComplete ?? \"off\"}\n />\n <button\n type=\"button\"\n className={cn(\n \"absolute left-3 top-1/2 flex h-6 w-6 -translate-y-1/2 items-center justify-center rounded border text-lg leading-none transition focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2\",\n hasInlineFlag\n ? \"border-transparent\"\n : \"border-dashed border-border text-muted-foreground\",\n disabled\n ? \"cursor-not-allowed opacity-50\"\n : readOnly\n ? \"cursor-default\"\n : \"cursor-pointer hover:bg-muted\"\n )}\n aria-label={inlineFlagLabel}\n onMouseDown={(event) => event.preventDefault()}\n onClick={openCountryMenu}\n tabIndex={-1}\n disabled={disabled}\n >\n <span aria-hidden=\"true\">\n {hasInlineFlag ? activeFlag : \"?\"}\n </span>\n </button>\n </div>\n\n {shimName ? (\n <input\n tabIndex={-1}\n autoComplete=\"tel\"\n name={shimName}\n aria-hidden=\"true\"\n className=\"pointer-events-none absolute left-0 top-0 h-0 w-0 opacity-0\"\n />\n ) : null}\n\n <div\n className=\"absolute left-0 top-full z-30 mt-1\"\n style={{\n pointerEvents: suggestionMenuIsOpen ? \"auto\" : \"none\",\n width: \"min(260px, 100%)\",\n }}\n onMouseDown={(event) => event.preventDefault()}\n >\n {shouldRenderSelect ? (\n <SuggestionContext.Provider value={highlightContextValue}>\n <Select<CountryOption, false>\n {...restForwardedSelectProps}\n instanceId={selectInstanceId}\n menuIsOpen={suggestionMenuIsOpen}\n options={filteredOptions}\n value={null}\n components={mergedSelectComponents}\n styles={mergedSelectStyles}\n isClearable={false}\n isSearchable={false}\n backspaceRemovesValue={false}\n tabSelectsValue={false}\n menuShouldScrollIntoView={false}\n menuPortalTarget={menuPortalTarget}\n menuPosition={userMenuPosition ?? (menuPortalTarget ? \"fixed\" : \"absolute\")}\n onChange={handleCountrySelect}\n classNamePrefix={userClassNamePrefix ?? \"phone-number-suggestions\"}\n placeholder=\"\"\n formatOptionLabel={selectFormatOptionLabel}\n noOptionsMessage={\n noOptionsMessage ?? (() => resolvedMessages.noMatches)\n }\n />\n </SuggestionContext.Provider>\n ) : null}\n </div>\n\n {validationNode}\n </div>\n )\n }\n)\n\nPhoneNumberInput.displayName = \"PhoneNumberInput\"\n"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rpcbase/ui",
3
- "version": "0.259.0",
3
+ "version": "0.260.0",
4
4
  "license": "SEE LICENSE IN LICENSE",
5
5
  "type": "module",
6
6
  "sideEffects": [