@desource/phone-mask-react 0.3.0 → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (37) hide show
  1. package/CHANGELOG.md +34 -0
  2. package/README.md +28 -22
  3. package/dist/esm/components/PhoneInput.d.ts +2 -9
  4. package/dist/esm/components/PhoneInput.d.ts.map +1 -1
  5. package/dist/esm/hooks/internal/useCopyAction.d.ts +14 -0
  6. package/dist/esm/hooks/internal/useCopyAction.d.ts.map +1 -0
  7. package/dist/esm/hooks/internal/useCountry.d.ts +21 -0
  8. package/dist/esm/hooks/internal/useCountry.d.ts.map +1 -0
  9. package/dist/esm/hooks/internal/useCountrySelector.d.ts +32 -0
  10. package/dist/esm/hooks/internal/useCountrySelector.d.ts.map +1 -0
  11. package/dist/esm/hooks/internal/useFormatter.d.ts +45 -0
  12. package/dist/esm/hooks/internal/useFormatter.d.ts.map +1 -0
  13. package/dist/esm/hooks/internal/useInputHandlers.d.ts +21 -0
  14. package/dist/esm/hooks/internal/useInputHandlers.d.ts.map +1 -0
  15. package/dist/esm/hooks/internal/useTheme.d.ts +9 -0
  16. package/dist/esm/hooks/internal/useTheme.d.ts.map +1 -0
  17. package/dist/esm/hooks/internal/useValidationHint.d.ts +6 -0
  18. package/dist/esm/hooks/internal/useValidationHint.d.ts.map +1 -0
  19. package/dist/esm/hooks/usePhoneMask.d.ts +2 -1
  20. package/dist/esm/hooks/usePhoneMask.d.ts.map +1 -1
  21. package/dist/esm/hooks/utility/useClipboard.d.ts +6 -0
  22. package/dist/esm/hooks/utility/useClipboard.d.ts.map +1 -0
  23. package/dist/esm/hooks/utility/useTimer.d.ts +9 -0
  24. package/dist/esm/hooks/utility/useTimer.d.ts.map +1 -0
  25. package/dist/esm/index.d.ts.map +1 -1
  26. package/dist/esm/index.js +758 -704
  27. package/dist/esm/index.js.map +1 -1
  28. package/dist/esm/types.d.ts +15 -19
  29. package/dist/esm/types.d.ts.map +1 -1
  30. package/dist/phone-mask-react.cjs +1 -1
  31. package/dist/phone-mask-react.cjs.map +1 -1
  32. package/dist/phone-mask-react.css +1 -1
  33. package/package.json +13 -11
  34. package/dist/esm/consts.d.ts +0 -4
  35. package/dist/esm/consts.d.ts.map +0 -1
  36. package/dist/esm/utils.d.ts +0 -16
  37. package/dist/esm/utils.d.ts.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"phone-mask-react.cjs","sources":["../../phone-mask/dist/esm/data.min.js","../../phone-mask/dist/esm/country-code-emodji.js","../../phone-mask/dist/esm/entries.js","../../phone-mask/dist/esm/utils.js","../../phone-mask/dist/esm/services/geoip/consts.js","../../phone-mask/dist/esm/services/geoip/utils.js","../src/utils.ts","../src/consts.ts","../src/components/PhoneInput.tsx","../src/hooks/usePhoneMask.ts","../src/index.ts"],"sourcesContent":["const M={AC:\"+247 #####\",AD:[\"+376 ### ###\",\"+376 #### ####\"],AE:[\"+971 # ### ####\",\"+971 ## ### ####\",\"+971 ### ######\",\"+971 ### # #####\"],AF:\"+93 ## ### ####\",AG:\"+1 ###-###-####\",AI:\"+1 ###-###-####\",AL:[\"+355 ## ### ###\",\"+355 ## ### ####\",\"+355 ### ####\",\"+355 ### ###\",\"+355 ### #####\"],AM:[\"+374 ## ######\",\"+374 ### ## ###\"],AO:\"+244 ### ### ###\",AR:[\"+54 ## ####-####\",\"+54 # ## ####-####\",\"+54 ###-###-####\"],AS:\"+1 ###-###-####\",AT:[\"+43 # #########\",\"+43 ### ######\"],AU:[\"+61 # #### ####\",\"+61 ### ### ###\",\"+61 #### ### ###\",\"+61 ## ### ##\"],AW:\"+297 ### ####\",AX:[\"+358 ## #######\",\"+358 ### ######\"],AZ:[\"+994 ## ### ## ##\",\"+994 ### ## ## ##\"],BA:[\"+387 ## ###-###\",\"+387 ## ### ###\"],BB:\"+1 ###-###-####\",BD:[\"+880 #-#######\",\"+880 ####-######\",\"+880 ###-#######\"],BE:[\"+32 ## ## ## ##\",\"+32 ### ## ## ##\",\"+32 ### ## ###\"],BF:\"+226 ## ## ## ##\",BG:[\"+359 # ### ###\",\"+359 ## ### ###\",\"+359 ### ## ###\"],BH:\"+973 #### ####\",BI:\"+257 ## ## ## ##\",BJ:[\"+229 ## ## ## ## ##\",\"+229 ## ## ## ##\"],BL:\"+590 ### ## ## ##\",BM:\"+1 ###-###-####\",BN:\"+673 ### ####\",BO:[\"+591 # #######\",\"+591 ########\",\"+591 ### ## ####\"],BQ:\"+599 ### ####\",BR:[\"+55 ## ####-####\",\"+55 ## #####-####\",\"+55 ### ## ####\",\"+55 ####-####\"],BS:\"+1 ###-###-####\",BT:[\"+975 # ### ###\",\"+975 ## ## ## ##\"],BW:[\"+267 ### ####\",\"+267 ## ### ###\",\"+267 #### ### ###\",\"+267 ## #####\"],BY:[\"+375 ### ##-##-##\",\"+375 ## ###-##-##\",\"+375 ### ### ####\"],BZ:[\"+501 ###-####\",\"+501 #-###-####-###\"],CA:\"+1 ###-###-####\",CC:[\"+61 # #### ####\",\"+61 ### ### ###\",\"+61 #### ### ###\"],CD:[\"+243 ## #####\",\"+243 ### ### ###\"],CF:\"+236 ## ## ## ##\",CG:[\"+242 ## ### ####\",\"+242 # #### ####\"],CH:[\"+41 ## ### ## ##\",\"+41 ### ### ###\"],CI:[\"+225 ## ## # #####\",\"+225 ## ## ## ####\"],CK:\"+682 ## ###\",CL:[\"+56 ### ### ###\",\"+56 # #### ####\",\"+56 ### ### ####\",\"+56 ## ### ####\"],CM:[\"+237 # ## ## ## ##\",\"+237 ## ## ## ##\"],CN:[\"+86 ## #### ####\",\"+86 ### #### ####\",\"+86 ### ### ####\",\"+86 ########\"],CO:[\"+57 ### #######\",\"+57 # ### #######\"],CR:[\"+506 #### ####\",\"+506 ###-###-####\"],CU:[\"+53 # #######\",\"+53 ### #######\"],CV:\"+238 ### ## ##\",CW:[\"+599 # ### ####\",\"+599 ### ####\"],CX:[\"+61 # #### ####\",\"+61 ### ### ###\",\"+61 #### ### ###\"],CY:\"+357 ## ######\",CZ:\"+420 ### ### ###\",DE:[\"+49 ## ######\",\"+49 #### #######\",\"+49 ### ##########\",\"+49 ### # ######\",\"+49 ### # ####\",\"+49 ### #### ####\",\"+49 ########\"],DJ:\"+253 ## ## ## ##\",DK:\"+45 ## ## ## ##\",DM:\"+1 ###-###-####\",DO:\"+1 ###-###-####\",DZ:[\"+213 ## ## ## ##\",\"+213 ### ## ## ##\",\"+213 ## ### ## ##\"],EC:[\"+593 #-###-####\",\"+593 ## ### ####\",\"+593 #### ### ####\"],EE:[\"+372 ### ####\",\"+372 #### ####\",\"+372 ## ## ####\"],EG:[\"+20 # ########\",\"+20 ## ########\",\"+20 ### ### ####\"],EH:[\"+212 # ## ## ## ##\",\"+212 ##-#######\"],ER:\"+291 # ### ###\",ES:[\"+34 ### ## ## ##\",\"+34 ### ### ###\"],ET:\"+251 ## ### ####\",FI:[\"+358 ## #######\",\"+358 ### ######\"],FJ:[\"+679 ### ####\",\"+679 #### ### ####\"],FK:\"+500 #####\",FM:\"+691 ### ####\",FO:\"+298 ######\",FR:[\"+33 # ## ## ## ##\",\"+33 ### ## ## ##\"],GA:\"+241 ## ## ## ##\",GB:[\"+44 ### ### ####\",\"+44 #### ######\",\"+44 ## #### ####\"],GD:\"+1 ###-###-####\",GE:[\"+995 ## ### ## ##\",\"+995 ### ## ## ##\",\"+995 ### ### ###\"],GF:\"+594 ### ## ## ##\",GG:[\"+44 #### ######\",\"+44 ### ### ####\",\"+44 ## #### ####\"],GH:[\"+233 ## ### ####\",\"+233 ### #####\"],GI:[\"+350 ### #####\",\"+350 ########\"],GL:\"+299 ## ## ##\",GM:\"+220 ### ####\",GN:[\"+224 ## ## ## ##\",\"+224 ### ## ## ##\"],GP:\"+590 ### ## ## ##\",GQ:[\"+240 ### ### ###\",\"+240 ### ######\"],GR:[\"+30 ## #### ####\",\"+30 ### ### ####\"],GT:[\"+502 #### ####\",\"+502 #### ### ####\"],GU:\"+1 ###-###-####\",GW:[\"+245 ### ### ###\",\"+245 ### ####\"],GY:\"+592 ### ####\",HK:[\"+852 #### ####\",\"+852 ### ### ###\",\"+852 ### ## ### ###\"],HN:[\"+504 ####-####\",\"+504 ###########\"],HR:[\"+385 # #### ###\",\"+385 ## ### ####\",\"+385 ### ### ###\",\"+385 ## ## ###\",\"+385 ## ### ###\"],HT:\"+509 ## ## ####\",HU:[\"+36 # ### ####\",\"+36 ## ### ####\",\"+36 ## ### ###\"],ID:[\"+62 ## #######\",\"+62 ###-###-###\",\"+62 ### #######\",\"+62 ### # ### ###\",\"+62 ### ### ####\"],IE:[\"+353 ## #####\",\"+353 ## ### ####\",\"+353 #### ### ###\",\"+353 ### ### ###\"],IL:[\"+972 #-###-####\",\"+972 ##-###-####\",\"+972 #-###-###-###\"],IM:[\"+44 #### ######\",\"+44 ### ### ####\",\"+44 ## #### ####\"],IN:[\"+91 ##### #####\",\"+91 #### ## ####\",\"+91 #### ### ### ###\",\"+91 #### ### ####\"],IO:\"+246 ### ####\",IQ:[\"+964 # ### ####\",\"+964 ### ### ####\"],IR:[\"+98 ## #### ####\",\"+98 ### ### ####\"],IS:\"+354 ### ####\",IT:[\"+39 ## #### ####\",\"+39 ### ### ####\",\"+39 ### ### ###\"],JE:[\"+44 #### ######\",\"+44 ### ### ####\",\"+44 ## #### ####\"],JM:\"+1 ###-###-####\",JO:[\"+962 # ### ####\",\"+962 # #### ####\",\"+962 ### #####\",\"+962 ## #######\"],JP:[\"+81 #-####-####\",\"+81 ##-####-####\",\"+81 ###-###-###\",\"+81 ##-###-####\"],KE:[\"+254 ## #######\",\"+254 ### ######\",\"+254 ### ### ###\"],KG:[\"+996 ### ### ###\",\"+996 ### ### # ##\"],KH:[\"+855 ## ### ###\",\"+855 #### ### ###\"],KI:[\"+686 #####\",\"+686 ########\"],KM:\"+269 ### ## ##\",KN:\"+1 ###-###-####\",KP:[\"+850 # ### ####\",\"+850 ### ### ####\"],KR:[\"+82 #-###-####\",\"+82 ##-####-####\",\"+82 ##-###-####\"],KW:[\"+965 #### ####\",\"+965 ### #####\",\"+965 #### ###\"],KY:\"+1 ###-###-####\",KZ:[\"+7 ##### # ## ##\",\"+7 ### ### ####\",\"+7 ### ###-##-##\"],LA:[\"+856 ## ### ###\",\"+856 ## ## ### ###\"],LB:[\"+961 # ### ###\",\"+961 ## ### ###\"],LC:\"+1 ###-###-####\",LI:[\"+423 ### ## ##\",\"+423 ### ### ###\"],LK:[\"+94 ### ### ###\",\"+94 ## ### ####\"],LR:[\"+231 ## ### ###\",\"+231 ## ### ####\"],LS:\"+266 #### ####\",LT:[\"+370 ### #####\",\"+370 ### ## ###\"],LU:[\"+352 ## ## ## ##\",\"+352 ### ### ###\",\"+352 ### ## ###\"],LV:\"+371 ## ### ###\",LY:\"+218 ##-#######\",MA:[\"+212 # ## ## ## ##\",\"+212 ##-#######\"],MC:[\"+377 ## ## ## ##\",\"+377 # ## ## ## ##\"],MD:[\"+373 ## ### ###\",\"+373 ### ## ###\",\"+373 ### #####\"],ME:\"+382 ## ### ###\",MF:\"+590 ### ## ## ##\",MG:\"+261 ## ## ### ##\",MH:\"+692 ###-####\",MK:[\"+389 # ### ####\",\"+389 ## ### ###\",\"+389 ### # ## ##\"],ML:\"+223 ## ## ## ##\",MM:[\"+95 # ### ###\",\"+95 # ### ####\",\"+95 ### ### ####\"],MN:\"+976 #### ####\",MO:[\"+853 #### ####\",\"+853 #### ###\"],MP:\"+1 ###-###-####\",MQ:\"+596 ### ## ## ##\",MR:\"+222 ## ## ## ##\",MS:\"+1 ###-###-####\",MT:\"+356 #### ####\",MU:[\"+230 #### ####\",\"+230 ### ####\"],MV:[\"+960 ###-####\",\"+960 ### ### ####\"],MW:[\"+265 # ### ###\",\"+265 ### ## ## ##\"],MX:\"+52 ### ### ####\",MY:[\"+60 #-#### ####\",\"+60 ##-### ####\",\"+60 #-###-##-####\",\"+60 ###-### ####\"],MZ:[\"+258 ## ### ###\",\"+258 ## ### ####\",\"+258 ### ### ###\"],NA:[\"+264 ## ### ###\",\"+264 ## ### ####\",\"+264 ### ### ###\"],NC:\"+687 ##.##.##\",NE:[\"+227 ## ## ## ##\",\"+227 ## ### ###\"],NF:[\"+672 ## ####\",\"+672 # #####\"],NG:[\"+234 #### ## ####\",\"+234 ### ### ####\",\"+234 ### #### ####\"],NI:\"+505 #### ####\",NL:[\"+31 ## ### ####\",\"+31 # ########\",\"+31 ### ####\",\"+31 ## #######\"],NO:[\"+47 ## ## ## ##\",\"+47 ### ## ###\"],NP:[\"+977 #-#######\",\"+977 ###-#######\",\"+977 ###########\"],NR:\"+674 ### ####\",NU:[\"+683 ####\",\"+683 ### ####\"],NZ:[\"+64 # ### ####\",\"+64 ## ### ####\",\"+64 ### ### ###\"],OM:[\"+968 ## ######\",\"+968 #### ####\",\"+968 ### #####\"],PA:[\"+507 ###-####\",\"+507 ####-####\"],PE:[\"+51 # #######\",\"+51 ### ### ###\",\"+51 ### #####\"],PF:[\"+689 ## ## ## ##\",\"+689 ### ## ## ##\"],PG:[\"+675 ### ####\",\"+675 #### ####\"],PH:[\"+63 # #### ####\",\"+63 ### ### ####\",\"+63 #### # ### ####\"],PK:[\"+92 ## ########\",\"+92 ### #######\",\"+92 ### ### ##\",\"+92 #### #####\"],PL:[\"+48 ## ### ## ##\",\"+48 ### ### ###\"],PM:[\"+508 ## ## ##\",\"+508 ### ## ## ##\"],PR:\"+1 ###-###-####\",PS:[\"+970 # ### ####\",\"+970 ### ### ###\",\"+970 #### ### ###\"],PT:[\"+351 ## ### ####\",\"+351 ### ### ###\"],PW:\"+680 ### ####\",PY:[\"+595 ## ### ####\",\"+595 ### ######\",\"+595 #### ### ####\"],QA:[\"+974 #### ####\",\"+974 ### ####\"],RE:\"+262 ### ## ## ##\",RO:[\"+40 ## ### ####\",\"+40 ### ### ###\"],RS:[\"+381 ## ######\",\"+381 ## #######\",\"+381 ### #####\"],RU:\"+7 ### ###-##-##\",RW:\"+250 ### ### ###\",SA:[\"+966 ## ### ####\",\"+966 ### ### ####\",\"+966 #### #####\"],SB:[\"+677 #####\",\"+677 ## #####\"],SC:[\"+248 # ### ###\",\"+248 #######\"],SD:\"+249 ## ### ####\",SE:[\"+46 # ## ## ##\",\"+46 ## ### ## ##\",\"+46 ## ## ## ##\",\"+46 ### ## ## ###\"],SG:[\"+65 #### ####\",\"+65 #### ### ####\"],SH:\"+290 #####\",SI:[\"+386 # ### ## ##\",\"+386 ## ### ###\",\"+386 ## ######\",\"+386 ### #####\"],SJ:[\"+47 ## ## ## ##\",\"+47 ### ## ###\"],SK:[\"+421 #/### ### ##\",\"+421 ### ### ###\",\"+421 #######\"],SL:\"+232 ## ######\",SM:[\"+378 #### ######\",\"+378 ## ## ## ##\"],SN:[\"+221 ## ### ## ##\",\"+221 ### ## ## ##\"],SO:[\"+252 # ######\",\"+252 # #######\"],SR:[\"+597 ###-###\",\"+597 ###-####\",\"+597 ##-##-##\"],SS:\"+211 ### ### ###\",ST:\"+239 ### ####\",SV:[\"+503 #### ####\",\"+503 ### ####\"],SX:\"+1 ###-###-####\",SY:[\"+963 ## ### ####\",\"+963 ### ### ###\"],SZ:[\"+268 #### ####\",\"+268 ##### ####\"],TA:\"+290 ####\",TC:\"+1 ###-###-####\",TD:\"+235 ## ## ## ##\",TG:\"+228 ## ## ## ##\",TH:[\"+66 # ### ####\",\"+66 ## ### ####\",\"+66 #### ### ###\"],TJ:[\"+992 ### ## ####\",\"+992 ## ### ####\"],TK:\"+690 ####\",TL:[\"+670 ### ####\",\"+670 #### ####\"],TM:[\"+993 ## ##-##-##\",\"+993 ## ######\"],TN:\"+216 ## ### ###\",TO:[\"+676 ##-###\",\"+676 ### ####\",\"+676 #### ###\"],TR:[\"+90 ### ### ## ##\",\"+90 ### ### ####\"],TT:\"+1 ###-###-####\",TV:[\"+688 ## ###\",\"+688 ## ####\"],TW:[\"+886 # #### ####\",\"+886 ### ### ###\",\"+886 ## ### ####\",\"+886 ## #### ####\"],TZ:[\"+255 ## ### ####\",\"+255 ### ### ###\",\"+255 ### ## ####\"],UA:[\"+380 #### #####\",\"+380 ## ### ####\",\"+380 ### ### ###\"],UG:[\"+256 ## #######\",\"+256 ### ######\"],US:\"+1 ###-###-####\",UY:[\"+598 #### ####\",\"+598 ## ### ###\",\"+598 ### ####\"],UZ:\"+998 ## ### ## ##\",VA:[\"+39 ## #### ####\",\"+39 ### ### ####\",\"+39 ### ### ###\"],VC:\"+1 ###-###-####\",VE:\"+58 ###-#######\",VG:\"+1 ###-###-####\",VI:\"+1 ###-###-####\",VN:[\"+84 ### #### ###\",\"+84 ### ### ###\",\"+84 #### ######\",\"+84 ## ### ## ##\"],VU:[\"+678 #####\",\"+678 ### ####\"],WF:[\"+681 ## ## ##\",\"+681 ### ## ## ##\"],WS:[\"+685 #####\",\"+685 ## #####\",\"+685 ### ###\"],XK:[\"+383 ## ### ###\",\"+383 ### #####\"],YE:[\"+967 # ### ###\",\"+967 ### ### ###\"],YT:\"+262 ### ## ## ##\",ZA:[\"+27 ## ### ####\",\"+27 ### ### ###\"],ZM:[\"+260 ### ### ###\",\"+260 ## #######\",\"+260 #########\"],ZW:[\"+263 ## #####\",\"+263 ## ### ####\",\"+263 ### ####\",\"+263 #### ######\"]};export{M as default};\n","const t=/^[a-z]{2}$/i,countryCodeEmoji=o=>{if(!t.test(o)){const t=typeof o;throw new TypeError(`cc argument must be an ISO 3166-1 alpha-2 string, but got '${\"string\"===t?o:t}' instead.`)}const e=[...o.toUpperCase()].map(t=>(t.codePointAt(0)??0)+127397);return String.fromCodePoint(...e)};export{countryCodeEmoji};\n","import e from\"./data.min.js\";import{countryCodeEmoji as n}from\"./country-code-emodji.js\";const t=Object.entries(e),divideMask=e=>e.split(/ (.*)/s);function getCodeAndMask(e){let n=\"\",t=\"\";if(Array.isArray(e)){const o=[];for(const t of e){const[e,s]=divideMask(t);n||(n=e),o.push(s)}t=o}else{const[o,s]=divideMask(e);n=o,t=s}return[n,t]}const o=e,s=t.map(([e,n])=>({id:e,mask:n})),a=t.reduce((e,[n,t])=>{const[o,s]=getCodeAndMask(t);return e[n]={code:o,mask:s},e},{}),r=t.map(([e,n])=>{const[t,o]=getCodeAndMask(n);return{id:e,code:t,mask:o}}),d=t.reduce((e,[t,o])=>{const[s,a]=getCodeAndMask(o);return e[t]={code:s,mask:a,flag:n(t)},e},{}),c=t.map(([e,t])=>{const[o,s]=getCodeAndMask(t);return{id:e,code:o,mask:s,flag:n(e)}}),MasksFullMap=e=>{const o=new Intl.DisplayNames([e],{type:\"region\"});return t.reduce((e,[t,s])=>{const[a,r]=getCodeAndMask(s),d=o.of(t)??\"\";return e[t]={code:a,mask:r,name:d,flag:n(t)},e},{})},MasksFull=e=>{const o=new Intl.DisplayNames([e],{type:\"region\"});return t.map(([e,t])=>{const[s,a]=getCodeAndMask(t);return{id:e,code:s,mask:a,name:o.of(e)??\"\",flag:n(e)}})},m=t.reduce((e,[t,o])=>{const[s,a]=getCodeAndMask(o),r=new Intl.DisplayNames([\"en\"],{type:\"region\"});return e[t]={code:s,mask:a,name:r.of(t)??\"\",flag:n(t)},e},{}),i=t.map(([e,t])=>{const[o,s]=getCodeAndMask(t);return{id:e,code:o,mask:s,name:new Intl.DisplayNames([\"en\"],{type:\"region\"}).of(e)??\"\",flag:n(e)}}),g=n;export{r as Masks,s as MasksBase,o as MasksBaseMap,MasksFull,i as MasksFullEn,MasksFullMap,m as MasksFullMapEn,a as MasksMap,c as MasksWithFlag,d as MasksWithFlagMap,g as getFlagEmoji};\n","import{MasksFullMapEn as t,MasksFullMap as n}from\"./entries.js\";function getNavigatorLang(){return\"undefined\"!=typeof navigator&&navigator.language||\"en\"}function getMasksFullMapByLocale(e){return e.toLowerCase().startsWith(\"en\")?t:n(e)}function getCountry(t,n){const e=getMasksFullMapByLocale(n),r=t.toUpperCase();return r in e?{id:r,...e[r]}:{id:\"US\",...e.US}}function toArray(t){return Array.isArray(t)?t:[t]}function countPlaceholders(t){return(t.match(/#/g)||[]).length}function removeCountryCodePrefix(t){return t.replace(/^\\+\\d+\\s?/,\"\")}function pickMaskVariant(t,n){if(1===t.length)return t[0];const e=t.map(t=>({mask:t,count:countPlaceholders(t)})),r=e.filter(t=>t.count>=n).sort((t,n)=>t.count-n.count);if(r.length>0)return r[0].mask;const o=e.sort((t,n)=>n.count-t.count)[0];return o?o.mask:t[0]}function formatDigitsWithMap(t,n){let e=\"\";const r=[];let o=0;const a=n.length,i=t.length;for(let u=0;u<i;u++){const i=t[u];if(\"#\"===i){if(!(o<a))break;e+=n[o],r.push(o),o++}else{const n=-1!==t.indexOf(\"#\",u+1)&&o<a;(e.length>0||n)&&(e+=i,r.push(-1))}}return{display:e,map:r}}export{countPlaceholders,formatDigitsWithMap,getCountry,getMasksFullMapByLocale,getNavigatorLang,pickMaskVariant,removeCountryCodePrefix,toArray};\n","const o=\"https://ipapi.co/json/\",e=1500,p=\"@desource/phone-mask:geo\",s=864e5;export{s as CACHE_EXPIRY_MS,p as CACHE_KEY,o as GEO_IP_API_URL,e as GEO_IP_TIMEOUT_MS};\n","import{GEO_IP_API_URL as t,GEO_IP_TIMEOUT_MS as o,CACHE_KEY as e,CACHE_EXPIRY_MS as r}from\"./consts.js\";async function detectCountryFromGeoIP(e=t,r=o){const c=new AbortController,n=setTimeout(()=>c.abort(),r);try{const t=await fetch(e,{signal:c.signal,headers:{Accept:\"application/json\"}});if(clearTimeout(n),!t.ok)return null;const o=await t.json();return(o.country||o.country_code||o.countryCode||o.country_code2||\"\").toString().toUpperCase()||null}catch{return clearTimeout(n),null}}async function detectByGeoIp(t){try{const o=localStorage.getItem(e);if(o){const c=JSON.parse(o),n=Date.now()-c.ts>r;if(!n&&c.country_code&&t(c.country_code))return c.country_code.toUpperCase();n&&localStorage.removeItem(e)}}catch{}const o=await detectCountryFromGeoIP();if(o&&t(o)){try{localStorage.setItem(e,JSON.stringify({country_code:o,ts:Date.now()}))}catch{}return o}return null}export{detectByGeoIp,detectCountryFromGeoIP};\n","// Shared phone formatting utilities\nimport {\n toArray,\n countPlaceholders,\n removeCountryCodePrefix,\n pickMaskVariant,\n formatDigitsWithMap,\n type MaskFull\n} from '@desource/phone-mask';\nimport type { FormatterHelpers } from './types';\n\nexport function createPhoneFormatter(country: MaskFull): FormatterHelpers {\n const variants = toArray(country.mask);\n const variantsDigits = variants.map((m) => countPlaceholders(removeCountryCodePrefix(m)));\n const maxDigits = Math.max(...variantsDigits);\n\n const getMask = (digitLength: number) => {\n const mask = pickMaskVariant(variants, digitLength);\n return removeCountryCodePrefix(mask);\n };\n\n return {\n formatDisplay: (digits: string) => {\n const template = getMask(digits.length);\n return formatDigitsWithMap(template, digits).display;\n },\n\n getMaxDigits: () => maxDigits,\n\n getPlaceholder: () => {\n // Always use minimal mask as a placeholder\n const template = getMask(0);\n return template;\n },\n\n getCaretPosition: (digitIndex: number) => {\n const template = getMask(digitIndex);\n const { display, map } = formatDigitsWithMap(template, '0'.repeat(digitIndex));\n\n for (let i = 0; i < map.length; i++) {\n if (map[i] === digitIndex) return i;\n }\n if (digitIndex >= map.length) return display.length;\n\n for (let i = 0; i < map.length; i++) {\n if (map[i]! > digitIndex) return i;\n }\n return display.length;\n },\n\n getDigitRange: (digits: string, selStart: number, selEnd: number) => {\n const template = getMask(digits.length);\n const { map } = formatDigitsWithMap(template, digits);\n\n let min = Infinity;\n let max = -Infinity;\n\n for (let i = selStart; i < selEnd && i < map.length; i++) {\n const digitIdx = map[i];\n if (digitIdx !== undefined && digitIdx >= 0) {\n min = Math.min(min, digitIdx);\n max = Math.max(max, digitIdx);\n }\n }\n\n return min === Infinity ? null : [min, max + 1];\n },\n\n isComplete: (digits: string) => {\n return variantsDigits.includes(digits.length);\n }\n };\n}\n\n/**\n * Caret manipulation helper\n */\nexport function setCaret(el: HTMLInputElement | null, position: number): void {\n if (!el) return;\n try {\n el.setSelectionRange(position, position);\n } catch {\n // Silently fail if element doesn't support selection\n }\n}\n\n/**\n * Extract digits from any string\n */\nexport function extractDigits(value: string, maxLength?: number): string {\n const digits = value.replace(/\\D/g, '');\n return maxLength ? digits.slice(0, maxLength) : digits;\n}\n\n/**\n * Parse selection range for digit operations\n */\nexport function getSelection(el: HTMLInputElement | null): [number, number] {\n if (!el) return [0, 0];\n return [el.selectionStart ?? 0, el.selectionEnd ?? 0];\n}\n","export const Delimiters = [' ', '-', '(', ')'];\nexport const NavigationKeys = ['ArrowLeft', 'ArrowRight', 'ArrowUp', 'ArrowDown', 'Home', 'End', 'Tab'];\nexport const InvalidPattern = /[^\\d\\s\\-()]/;\n","import React, {\n useImperativeHandle,\n useRef,\n useState,\n useEffect,\n useCallback,\n useMemo,\n type CSSProperties,\n type Ref\n} from 'react';\nimport { createPortal } from 'react-dom';\nimport {\n getNavigatorLang,\n getCountry,\n getMasksFullMapByLocale,\n detectByGeoIp,\n type CountryKey,\n type MaskFull\n} from '@desource/phone-mask';\nimport { createPhoneFormatter, extractDigits, setCaret, getSelection } from '../utils';\nimport { Delimiters, NavigationKeys, InvalidPattern } from '../consts';\nimport type { PhoneInputProps, PhoneInputRef, PhoneNumber } from '../types';\n\n/** Get all countries */\nfunction getCountries(locale: string): MaskFull[] {\n const map = getMasksFullMapByLocale(locale);\n\n return Object.entries(map).map(([id, data]) => ({ id: id as CountryKey, ...data }));\n}\n\ntype PhoneInputComponent = PhoneInputProps & { ref?: Ref<PhoneInputRef> };\n\nexport const PhoneInput = ({ ref, ...props }: PhoneInputComponent) => {\n const {\n value = '',\n country: propCountry,\n detect = true,\n locale: propLocale,\n size = 'normal',\n theme = 'auto',\n disabled = false,\n readonly = false,\n showCopy = true,\n showClear = false,\n withValidity = true,\n searchPlaceholder = 'Search country or code...',\n noResultsText = 'No countries found',\n clearButtonLabel = 'Clear phone number',\n dropdownClass = '',\n disableDefaultStyles = false,\n onChange,\n onPhoneChange,\n onCountryChange,\n onValidationChange,\n onFocus,\n onBlur,\n onCopy,\n onClear,\n renderActionsBefore,\n renderFlag,\n renderCopySvg,\n renderClearSvg\n } = props;\n\n const telRef = useRef<HTMLInputElement>(null);\n const rootRef = useRef<HTMLDivElement>(null);\n const dropdownRef = useRef<HTMLDivElement>(null);\n const searchRef = useRef<HTMLInputElement>(null);\n const liveRef = useRef<HTMLDivElement>(null);\n const selectorRef = useRef<HTMLDivElement>(null);\n\n const locale = propLocale || getNavigatorLang();\n const [country, setCountry] = useState<MaskFull>(() => getCountry(propCountry || 'US', locale));\n const [digits, setDigits] = useState<string>('');\n const [dropdownOpen, setDropdownOpen] = useState(false);\n const [isClosing, setIsClosing] = useState(false);\n const [search, setSearch] = useState('');\n const [focusedIndex, setFocusedIndex] = useState(0);\n const [copied, setCopied] = useState(false);\n const [isCopying, setIsCopying] = useState(false);\n const [dropdownStyle, setDropdownStyle] = useState<CSSProperties>({});\n const [showValidationHint, setShowValidationHint] = useState(false);\n const validationTimerRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n const closeTimerRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n const copyTimerRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n const [hasDropdown, setHasDropdown] = useState<boolean>(!propCountry);\n\n const formatter = useMemo(() => createPhoneFormatter(country), [country]);\n const countries = useMemo(() => getCountries(locale), [locale]);\n\n const displayValue = formatter.formatDisplay(digits);\n const displayPlaceholder = formatter.getPlaceholder();\n const isComplete = formatter.isComplete(digits);\n const isEmpty = digits.length === 0;\n const shouldShowWarn = showValidationHint && !isEmpty && !isComplete;\n\n const full = `${country.code}${digits}`;\n const fullFormatted = digits ? `${country.code} ${displayValue}` : '';\n\n const filteredCountries = useMemo(() => {\n const raw = search.trim();\n if (!raw) return countries;\n const q = raw.toUpperCase();\n const qDigits = q.replace(/\\D/g, '');\n const isNumeric = qDigits.length > 0;\n\n return countries\n .map((c) => {\n const nameUpper = c.name.toUpperCase();\n const idUpper = c.id.toUpperCase();\n const codeUpper = c.code.toUpperCase();\n const codeDigits = c.code.replace(/\\D/g, '');\n let score = 0;\n if (nameUpper.startsWith(q)) score = 1000;\n else if (nameUpper.includes(q)) score = 500;\n\n if (codeUpper.startsWith(q)) score += 100;\n else if (codeUpper.includes(q)) score += 50;\n\n if (idUpper === q) score += 200;\n else if (idUpper.startsWith(q)) score += 150;\n\n if (isNumeric && codeDigits.startsWith(qDigits)) score += 80;\n else if (isNumeric && codeDigits.includes(qDigits)) score += 40;\n\n return { country: c, score };\n })\n .filter((x) => x.score > 0)\n .sort((a, b) => (b.score !== a.score ? b.score - a.score : a.country.name.localeCompare(b.country.name)))\n .map((x) => x.country);\n }, [countries, search]);\n\n const inactive = disabled || readonly;\n const showCopyButton = showCopy && !isEmpty && !disabled;\n const showClearButton = showClear && !isEmpty && !inactive;\n\n // Country initialization and detection with cache + locale fallback\n useEffect(() => {\n setHasDropdown(!propCountry && countries.length > 1);\n\n const hasCountry = (code?: string | null) => {\n if (!code) return false;\n const id = code.toUpperCase();\n return countries.some((c) => c.id === id);\n };\n\n const detectFromLocale = (): string | null => {\n const lang = typeof navigator !== 'undefined' && navigator.language ? navigator.language : '';\n // Use Intl.Locale when available\n try {\n if (Intl.Locale) {\n const loc = new Intl.Locale(lang);\n if (loc?.region && hasCountry(loc.region)) return loc.region.toUpperCase();\n }\n } catch {\n /* ignore */\n }\n const parts = lang.split(/[-_]/);\n if (parts.length > 1 && hasCountry(parts[1])) return parts[1].toUpperCase();\n return null;\n };\n\n (async () => {\n if (propCountry && hasCountry(propCountry)) {\n const newCountry = getCountry(propCountry, locale);\n setCountry((prev) => {\n if (prev.id === newCountry.id) return prev;\n onCountryChange?.(newCountry);\n return newCountry;\n });\n return;\n }\n if (!detect) return;\n const geo = await detectByGeoIp(hasCountry);\n if (geo) {\n const detected = getCountry(geo, locale);\n setCountry((prev) => {\n if (prev.id === detected.id) return prev;\n onCountryChange?.(detected);\n return detected;\n });\n return;\n }\n const loc = detectFromLocale();\n if (loc) {\n const detected = getCountry(loc, locale);\n setCountry((prev) => {\n if (prev.id === detected.id) return prev;\n onCountryChange?.(detected);\n return detected;\n });\n }\n })();\n }, [propCountry, detect, countries, locale]);\n\n // Clamp digits when country or formatter changes\n useEffect(() => {\n const maxDigits = formatter.getMaxDigits();\n if (digits.length > maxDigits) {\n setDigits((d) => d.slice(0, maxDigits));\n }\n }, [formatter]);\n\n // Sync value prop\n useEffect(() => {\n const incomingDigits = extractDigits(value || '');\n if (incomingDigits !== digits) {\n setDigits(incomingDigits);\n }\n }, [value]);\n\n // Notify validation changes\n useEffect(() => {\n onValidationChange?.(isComplete);\n }, [isComplete, onValidationChange]);\n\n // Emit onChange and onPhoneChange\n const emitChange = useCallback(() => {\n onChange?.(digits);\n const phoneData: PhoneNumber = { full, fullFormatted, digits };\n onPhoneChange?.(phoneData);\n }, [digits, full, fullFormatted, onChange, onPhoneChange]);\n\n useEffect(() => {\n emitChange();\n }, [emitChange]);\n\n // Input handlers\n const handleBeforeInput = useCallback((e: InputEvent) => {\n const data = e.data;\n if (e.inputType !== 'insertText' || !data) return;\n const el = telRef.current;\n if (!el) return;\n if (InvalidPattern.test(data) || (data === ' ' && el.value.endsWith(' '))) {\n e.preventDefault();\n }\n }, []);\n\n const handleInput = useCallback(() => {\n const el = telRef.current;\n if (!el || inactive) return;\n const raw = el.value || '';\n const maxDigits = formatter.getMaxDigits();\n const newDigits = extractDigits(raw, maxDigits);\n setDigits(newDigits);\n setTimeout(() => {\n const pos = formatter.getCaretPosition(newDigits.length);\n setCaret(el, pos);\n }, 0);\n // validation hint debounce (500ms)\n setShowValidationHint(false);\n if (validationTimerRef.current) clearTimeout(validationTimerRef.current);\n if (newDigits.length > 0) {\n validationTimerRef.current = setTimeout(() => {\n setShowValidationHint(true);\n }, 500);\n }\n }, [formatter, inactive]);\n\n const handleKeydown = useCallback(\n (e: KeyboardEvent) => {\n if (inactive) return;\n const el = telRef.current;\n if (!el) return;\n\n if (e.ctrlKey || e.metaKey || e.altKey || NavigationKeys.includes(e.key)) return;\n\n const [selStart, selEnd] = getSelection(el);\n\n // debounce validation hint during typing (300ms)\n setShowValidationHint(false);\n if (validationTimerRef.current) clearTimeout(validationTimerRef.current);\n const scheduleHint = () => {\n if (validationTimerRef.current) clearTimeout(validationTimerRef.current);\n validationTimerRef.current = setTimeout(() => {\n setShowValidationHint(true);\n }, 300);\n };\n\n if (e.key === 'Backspace') {\n e.preventDefault();\n if (selStart !== selEnd) {\n const range = formatter.getDigitRange(digits, selStart, selEnd);\n if (range) {\n const [start, end] = range;\n setDigits(digits.slice(0, start) + digits.slice(end));\n setTimeout(() => setCaret(el, formatter.getCaretPosition(start)), 0);\n }\n } else if (selStart > 0) {\n let prevPos = selStart - 1;\n while (prevPos >= 0 && Delimiters.includes(el.value[prevPos]!)) prevPos--;\n if (prevPos >= 0) {\n const range = formatter.getDigitRange(digits, prevPos, prevPos + 1);\n if (range) {\n const [start] = range;\n setDigits(digits.slice(0, start) + digits.slice(start + 1));\n setTimeout(() => setCaret(el, formatter.getCaretPosition(start)), 0);\n }\n }\n }\n scheduleHint();\n return;\n }\n\n if (e.key === 'Delete') {\n e.preventDefault();\n if (selStart !== selEnd) {\n const range = formatter.getDigitRange(digits, selStart, selEnd);\n if (range) {\n const [start, end] = range;\n setDigits(digits.slice(0, start) + digits.slice(end));\n setTimeout(() => setCaret(el, formatter.getCaretPosition(start)), 0);\n }\n } else if (selStart < el.value.length) {\n const range = formatter.getDigitRange(digits, selStart, selStart + 1);\n if (range) {\n const [start] = range;\n setDigits(digits.slice(0, start) + digits.slice(start + 1));\n setTimeout(() => setCaret(el, formatter.getCaretPosition(start)), 0);\n }\n }\n scheduleHint();\n return;\n }\n\n if (/^[0-9]$/.test(e.key)) {\n if (digits.length >= formatter.getMaxDigits()) e.preventDefault();\n scheduleHint();\n return;\n }\n\n if (e.key.length === 1) e.preventDefault();\n scheduleHint();\n },\n [inactive, formatter, digits]\n );\n\n const handlePaste = useCallback(\n (e: ClipboardEvent) => {\n if (inactive) return;\n e.preventDefault();\n const el = telRef.current;\n if (!el) return;\n\n const text = e.clipboardData?.getData('text') || '';\n const maxDigits = formatter.getMaxDigits();\n const pastedDigits = extractDigits(text, maxDigits);\n if (!pastedDigits) return;\n\n const [selStart, selEnd] = getSelection(el);\n if (selStart !== selEnd) {\n const range = formatter.getDigitRange(digits, selStart, selEnd);\n if (range) {\n const [start, end] = range;\n const newDigits = extractDigits(digits.slice(0, start) + pastedDigits + digits.slice(end), maxDigits);\n setDigits(newDigits);\n setTimeout(() => setCaret(el, formatter.getCaretPosition(start + pastedDigits.length)), 0);\n }\n } else {\n const range = formatter.getDigitRange(digits, selStart, selStart);\n const insertIndex = range ? range[0] : digits.length;\n const newDigits = extractDigits(\n digits.slice(0, insertIndex) + pastedDigits + digits.slice(insertIndex),\n maxDigits\n );\n setDigits(newDigits);\n setTimeout(() => setCaret(el, formatter.getCaretPosition(insertIndex + pastedDigits.length)), 0);\n }\n // show validation hint after paste (300ms)\n setShowValidationHint(false);\n if (validationTimerRef.current) clearTimeout(validationTimerRef.current);\n validationTimerRef.current = setTimeout(() => {\n setShowValidationHint(true);\n }, 300);\n },\n [inactive, formatter, digits]\n );\n\n // Close dropdown with animation\n const closeDropdown = useCallback(() => {\n if (!dropdownOpen) return;\n setIsClosing(true);\n if (closeTimerRef.current) clearTimeout(closeTimerRef.current);\n closeTimerRef.current = setTimeout(() => {\n setDropdownOpen(false);\n setIsClosing(false);\n }, 200);\n }, [dropdownOpen]);\n\n // Input focus behavior (close dropdown, keep existing hint state)\n const handleFocusInput = useCallback(\n (e: React.FocusEvent<HTMLInputElement>) => {\n if (validationTimerRef.current) clearTimeout(validationTimerRef.current);\n closeDropdown();\n onFocus?.(e);\n },\n [onFocus, closeDropdown]\n );\n\n // Attach native event listeners\n useEffect(() => {\n const el = telRef.current;\n if (!el) return;\n\n const beforeInputHandler = handleBeforeInput as unknown as (evt: Event) => void;\n const keydownHandler = handleKeydown as unknown as (evt: Event) => void;\n const pasteHandler = handlePaste as unknown as (evt: Event) => void;\n\n el.addEventListener('beforeinput', beforeInputHandler);\n el.addEventListener('keydown', keydownHandler);\n el.addEventListener('paste', pasteHandler);\n\n return () => {\n el.removeEventListener('beforeinput', beforeInputHandler);\n el.removeEventListener('keydown', keydownHandler);\n el.removeEventListener('paste', pasteHandler);\n };\n }, [handleBeforeInput, handleKeydown, handlePaste]);\n\n // Country selection\n const selectCountry = useCallback(\n (code: CountryKey) => {\n const newCountry = getCountry(code, locale);\n setCountry(newCountry);\n closeDropdown();\n setSearch('');\n setFocusedIndex(0);\n onCountryChange?.(newCountry);\n setTimeout(() => telRef.current?.focus(), 0);\n },\n [locale, onCountryChange, closeDropdown]\n );\n\n // Dropdown positioning\n const positionDropdown = useCallback(() => {\n if (!rootRef.current) return;\n const rect = rootRef.current.getBoundingClientRect();\n setDropdownStyle({\n top: `${rect.bottom + window.scrollY + 8}px`,\n left: `${rect.left + window.scrollX}px`,\n width: `${rect.width}px`\n });\n }, []);\n\n useEffect(() => {\n if (!dropdownOpen) return;\n\n positionDropdown();\n const focusTimer = setTimeout(() => searchRef.current?.focus({ preventScroll: true }), 0);\n\n const onDocClick = (ev: Event) => {\n const target = ev.target as Node | null;\n const dropdownEl = dropdownRef.current;\n const selectorEl = selectorRef.current;\n if (!target) return;\n if (dropdownEl?.contains(target)) return;\n if (selectorEl?.contains(target)) return;\n closeDropdown();\n };\n\n window.addEventListener('resize', positionDropdown);\n window.addEventListener('scroll', positionDropdown, true);\n window.addEventListener('click', onDocClick, true);\n\n return () => {\n clearTimeout(focusTimer);\n window.removeEventListener('resize', positionDropdown);\n window.removeEventListener('scroll', positionDropdown, true);\n window.removeEventListener('click', onDocClick, true);\n };\n }, [dropdownOpen, positionDropdown, closeDropdown]);\n\n // Cleanup timers\n useEffect(() => {\n return () => {\n if (closeTimerRef.current) clearTimeout(closeTimerRef.current);\n if (copyTimerRef.current) clearTimeout(copyTimerRef.current);\n if (validationTimerRef.current) clearTimeout(validationTimerRef.current);\n };\n }, []);\n\n // Copy functionality\n const handleCopyClick = useCallback(async () => {\n if (isCopying) return;\n const trimmedValue = fullFormatted.trim();\n if (!trimmedValue) return;\n\n setIsCopying(true);\n try {\n await navigator.clipboard.writeText(trimmedValue);\n setCopied(true);\n onCopy?.(trimmedValue);\n if (liveRef.current) liveRef.current.textContent = 'Phone number copied to clipboard';\n\n if (copyTimerRef.current) clearTimeout(copyTimerRef.current);\n copyTimerRef.current = setTimeout(() => {\n setCopied(false);\n copyTimerRef.current = null;\n }, 1800);\n } catch (err) {\n console.warn('Copy failed', err);\n } finally {\n setIsCopying(false);\n }\n }, [fullFormatted, onCopy, isCopying]);\n\n // Clear functionality\n const handleClearClick = useCallback(() => {\n setDigits('');\n setShowValidationHint(false);\n if (validationTimerRef.current) clearTimeout(validationTimerRef.current);\n onChange?.('');\n onPhoneChange?.({ full: '', fullFormatted: '', digits: '' });\n onClear?.();\n setTimeout(() => telRef.current?.focus(), 0);\n }, [onChange, onPhoneChange, onClear]);\n\n // Imperative handle\n useImperativeHandle(\n ref,\n () => ({\n focus: () => telRef.current?.focus(),\n blur: () => telRef.current?.blur(),\n clear: () => {\n setDigits('');\n setShowValidationHint(false);\n if (validationTimerRef.current) clearTimeout(validationTimerRef.current);\n onChange?.('');\n onPhoneChange?.({ full: '', fullFormatted: '', digits: '' });\n onClear?.();\n },\n selectCountry,\n getFullNumber: () => full,\n getFullFormattedNumber: () => fullFormatted,\n getDigits: () => digits,\n isValid: () => isComplete,\n isComplete: () => isComplete\n }),\n [selectCountry, full, fullFormatted, digits, isComplete, onClear, onChange, onPhoneChange]\n );\n\n const scrollFocusedIntoView = (index: number) => {\n setTimeout(() => {\n const list = dropdownRef.current?.lastElementChild;\n const option = list?.children[index];\n if (!list || !option) return;\n\n // Scroll only the list container with smooth behavior\n const listRect = list.getBoundingClientRect();\n const optionRect = option.getBoundingClientRect();\n\n let scrollAmount = 0;\n\n if (optionRect.top < listRect.top) {\n scrollAmount = list.scrollTop - (listRect.top - optionRect.top); // Option is above visible area\n } else if (optionRect.bottom > listRect.bottom) {\n scrollAmount = list.scrollTop + (optionRect.bottom - listRect.bottom); // Option is below visible area\n } else {\n return; // Already visible, no need to scroll\n }\n\n list.scrollTo({ top: scrollAmount, behavior: 'smooth' });\n }, 0);\n };\n\n // Keyboard navigation for dropdown\n const handleSearchKeydown = useCallback(\n (e: React.KeyboardEvent) => {\n if (e.key === 'ArrowDown') {\n e.preventDefault();\n setFocusedIndex((i) => {\n const next = Math.min(i + 1, filteredCountries.length - 1);\n scrollFocusedIntoView(next);\n return next;\n });\n } else if (e.key === 'ArrowUp') {\n e.preventDefault();\n setFocusedIndex((i) => {\n const prev = Math.max(i - 1, 0);\n scrollFocusedIntoView(prev);\n return prev;\n });\n } else if (e.key === 'Enter' && filteredCountries[focusedIndex]) {\n e.preventDefault();\n selectCountry(filteredCountries[focusedIndex]!.id);\n } else if (e.key === 'Escape') {\n closeDropdown();\n }\n },\n [filteredCountries, focusedIndex, selectCountry, closeDropdown]\n );\n\n // Theme class\n const themeClass = useMemo(() => {\n if (theme !== 'auto') return `theme-${theme}`;\n if (typeof window !== 'undefined' && window.matchMedia?.('(prefers-color-scheme: dark)').matches) {\n return 'theme-dark';\n }\n return 'theme-light';\n }, [theme]);\n\n const rootClasses = [\n 'phone-input',\n `size-${size}`,\n themeClass,\n disabled && 'is-disabled',\n readonly && 'is-readonly',\n disableDefaultStyles && 'is-unstyled',\n withValidity && shouldShowWarn && 'is-incomplete',\n withValidity && isComplete && 'is-complete'\n ]\n .filter(Boolean)\n .join(' ');\n\n const actionsCount = +showCopyButton + +showClearButton + (renderActionsBefore ? 1 : 0);\n\n return (\n <>\n <div\n ref={rootRef}\n className={rootClasses}\n style={{ '--pi-actions-count': actionsCount } as CSSProperties}\n role=\"group\"\n aria-label=\"Phone input with country selector\"\n >\n {/* Country Selector */}\n <div className=\"pi-selector\" ref={selectorRef}>\n <button\n type=\"button\"\n className={`pi-selector-btn ${!hasDropdown || readonly ? 'no-dropdown' : ''}`}\n disabled={disabled}\n tabIndex={inactive || !hasDropdown ? -1 : undefined}\n aria-label={`Selected country: ${country.name}`}\n aria-expanded={dropdownOpen}\n aria-haspopup={hasDropdown ? 'listbox' : undefined}\n onClick={() => {\n if (inactive || !hasDropdown) return;\n if (dropdownOpen) {\n closeDropdown();\n } else {\n if (closeTimerRef.current) clearTimeout(closeTimerRef.current);\n setIsClosing(false);\n setDropdownOpen(true);\n setFocusedIndex(0);\n }\n }}\n >\n <span className=\"pi-flag\" role=\"img\" aria-label={`${country.name} flag`}>\n {renderFlag ? renderFlag(country) : country.flag}\n </span>\n <span className=\"pi-code\">{country.code}</span>\n {!inactive && hasDropdown && (\n <svg\n className={`pi-chevron ${dropdownOpen ? 'is-open' : ''}`}\n width=\"12\"\n height=\"12\"\n viewBox=\"0 0 12 12\"\n fill=\"none\"\n aria-hidden=\"true\"\n >\n <path\n d=\"M2.5 4.5L6 8L9.5 4.5\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n )}\n </button>\n </div>\n\n {/* Input Container */}\n <div className=\"pi-input-wrap\">\n <input\n ref={telRef}\n type=\"tel\"\n inputMode=\"tel\"\n autoComplete=\"tel-national\"\n autoCorrect=\"off\"\n autoCapitalize=\"off\"\n spellCheck={false}\n className=\"pi-input\"\n placeholder={displayPlaceholder}\n value={displayValue}\n disabled={disabled}\n readOnly={readonly}\n aria-invalid={shouldShowWarn}\n onInput={handleInput}\n onFocus={handleFocusInput}\n onBlur={onBlur}\n />\n\n {/* Action Buttons */}\n <div className=\"pi-actions\" role=\"toolbar\" aria-label=\"Phone input actions\">\n {renderActionsBefore && renderActionsBefore()}\n\n {showCopyButton && (\n <button\n type=\"button\"\n className={`pi-btn ${copied ? 'is-copied' : ''}`}\n aria-label={copied ? 'Copied' : `Copy ${country.code} ${displayValue}`}\n title={copied ? 'Copied' : 'Copy phone number'}\n onClick={handleCopyClick}\n >\n {renderCopySvg ? (\n renderCopySvg(copied)\n ) : copied ? (\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" aria-hidden=\"true\">\n <path d=\"M6.5 11.5L3 8L4.06 6.94L6.5 9.38L11.94 3.94L13 5L6.5 11.5Z\" fill=\"currentColor\" />\n </svg>\n ) : (\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" aria-hidden=\"true\">\n <path\n d=\"M13.5 5.5V13.5H5.5V5.5H13.5ZM13.5 4H5.5C4.67 4 4 4.67 4 5.5V13.5C4 14.33 4.67 15 5.5 15H13.5C14.33 15 15 14.33 15 13.5V5.5C15 4.67 14.33 4 13.5 4ZM10.5 1H2.5V11H4V2.5H10.5V1Z\"\n fill=\"currentColor\"\n />\n </svg>\n )}\n </button>\n )}\n\n {showClearButton && (\n <button\n type=\"button\"\n className=\"pi-btn\"\n aria-label={clearButtonLabel}\n title={clearButtonLabel}\n onClick={handleClearClick}\n >\n {renderClearSvg ? (\n renderClearSvg()\n ) : (\n <svg width=\"11\" height=\"11\" viewBox=\"0 0 14 14\" fill=\"none\" aria-hidden=\"true\">\n <path\n d=\"M14 1.41L12.59 0L7 5.59L1.41 0L0 1.41L5.59 7L0 12.59L1.41 14L7 8.41L12.59 14L14 12.59L8.41 7L14 1.41Z\"\n fill=\"currentColor\"\n />\n </svg>\n )}\n </button>\n )}\n </div>\n </div>\n </div>\n\n {/* Dropdown */}\n {dropdownOpen &&\n typeof document !== 'undefined' &&\n createPortal(\n <div\n ref={dropdownRef}\n className={`phone-dropdown ${dropdownClass} ${themeClass} ${isClosing ? 'is-closing' : ''}`}\n style={dropdownStyle}\n role=\"dialog\"\n aria-modal=\"false\"\n aria-label=\"Select country\"\n >\n <div className=\"pi-search-wrap\">\n <input\n ref={searchRef}\n type=\"search\"\n className=\"pi-search\"\n aria-label=\"Search countries\"\n placeholder={searchPlaceholder}\n value={search}\n onChange={(e) => {\n setSearch(e.target.value);\n setFocusedIndex(0);\n }}\n onKeyDown={handleSearchKeydown}\n />\n </div>\n <ul className=\"pi-options\" role=\"listbox\" aria-activedescendant={`option-${focusedIndex}`} tabIndex={-1}>\n {filteredCountries.length > 0 ? (\n filteredCountries.map((c, idx) => (\n <li\n key={c.id}\n id={`option-${idx}`}\n role=\"option\"\n className={`pi-option ${idx === focusedIndex ? 'is-focused' : ''} ${\n c.id === country.id ? 'is-selected' : ''\n }`}\n aria-selected={c.id === country.id}\n title={c.name}\n onClick={() => selectCountry(c.id)}\n onMouseEnter={() => setFocusedIndex(idx)}\n >\n <span className=\"pi-flag\" role=\"img\" aria-label={`${c.name} flag`}>\n {renderFlag ? renderFlag(c) : c.flag}\n </span>\n <span className=\"pi-opt-name\">{c.name}</span>\n <span className=\"pi-opt-code\">{c.code}</span>\n </li>\n ))\n ) : (\n <li className=\"pi-empty\">{noResultsText}</li>\n )}\n </ul>\n </div>,\n document.body\n )}\n\n {/* Screen reader announcements */}\n <div ref={liveRef} className=\"sr-only\" role=\"status\" aria-live=\"polite\" aria-atomic=\"true\" />\n </>\n );\n};\n\nPhoneInput.displayName = 'PhoneInput';\n","import { useRef, useState, useEffect, useCallback } from 'react';\nimport { getNavigatorLang, getCountry, detectCountryFromGeoIP, type MaskFull } from '@desource/phone-mask';\nimport { createPhoneFormatter, extractDigits, getSelection, setCaret } from '../utils';\nimport { Delimiters, InvalidPattern, NavigationKeys } from '../consts';\nimport type { UsePhoneMaskOptions, UsePhoneMaskReturn, PhoneNumber } from '../types';\n\n/**\n * Detect country from browser locale.\n */\nfunction detectCountryFromLocale(): string | null {\n try {\n const lang = getNavigatorLang();\n\n try {\n const loc = new Intl.Locale(lang);\n if (loc.region) return loc.region.toUpperCase();\n } catch {\n // Ignore\n }\n\n const parts = lang.split(/[-_]/);\n if (parts.length > 1) return parts[1]?.toUpperCase() || null;\n } catch {\n // Ignore\n }\n\n return null;\n}\n\n/**\n * React hook for phone number masking.\n * Provides low-level phone masking functionality for custom input implementations.\n */\nexport function usePhoneMask(options: UsePhoneMaskOptions = {}): UsePhoneMaskReturn {\n const inputRef = useRef<HTMLInputElement>(null);\n const [digits, setDigits] = useState<string>('');\n const [country, setCountryState] = useState<MaskFull>(() => {\n const locale = options.locale || getNavigatorLang();\n return getCountry(options.country || 'US', locale);\n });\n\n const locale = options.locale || getNavigatorLang();\n const formatter = createPhoneFormatter(country);\n\n const displayValue = formatter.formatDisplay(digits);\n const full = `${country.code}${digits}`;\n const fullFormatted = digits ? `${country.code} ${displayValue}` : '';\n const isComplete = formatter.isComplete(digits);\n const isEmpty = digits.length === 0;\n const shouldShowWarn = !isEmpty && !isComplete;\n\n // Initialize country detection\n useEffect(() => {\n if (!options.detect) return;\n\n (async () => {\n const geoCountry = await detectCountryFromGeoIP();\n if (geoCountry) {\n const detected = getCountry(geoCountry, locale);\n setCountryState(detected);\n options.onCountryChange?.(detected);\n return;\n }\n\n const localeCountry = detectCountryFromLocale();\n if (localeCountry) {\n const detected = getCountry(localeCountry, locale);\n setCountryState(detected);\n options.onCountryChange?.(detected);\n }\n })();\n }, [options.detect]);\n\n // Sync country when prop changes\n useEffect(() => {\n if (options.country) {\n const newCountry = getCountry(options.country, locale);\n if (newCountry.id !== country.id) {\n setCountryState(newCountry);\n options.onCountryChange?.(newCountry);\n }\n }\n }, [options.country, locale]);\n\n // Update display when digits or country change\n useEffect(() => {\n const el = inputRef.current;\n if (!el) return;\n\n el.value = displayValue;\n el.placeholder = formatter.getPlaceholder();\n }, [displayValue, formatter]);\n\n // Notify onChange callback\n useEffect(() => {\n if (options.onChange) {\n const phoneData: PhoneNumber = {\n full,\n fullFormatted,\n digits\n };\n options.onChange(phoneData);\n }\n }, [digits, full, fullFormatted]);\n\n // Event handler: beforeinput\n const handleBeforeInput = useCallback((e: InputEvent) => {\n const data = e.data;\n if (e.inputType !== 'insertText' || !data) return;\n\n const el = inputRef.current;\n if (!el) return;\n\n // Block invalid characters & multiple spaces\n if (InvalidPattern.test(data) || (data === ' ' && el.value.endsWith(' '))) {\n e.preventDefault();\n }\n }, []);\n\n // Event handler: input\n const handleInput = useCallback(() => {\n const el = inputRef.current;\n if (!el) return;\n\n const raw = el.value || '';\n const maxDigits = formatter.getMaxDigits();\n const newDigits = extractDigits(raw, maxDigits);\n\n setDigits(newDigits);\n\n // Set caret position after state update\n setTimeout(() => {\n const pos = formatter.getCaretPosition(newDigits.length);\n setCaret(el, pos);\n }, 0);\n }, [formatter]);\n\n // Event handler: keydown\n const handleKeydown = useCallback(\n (e: KeyboardEvent) => {\n const el = inputRef.current;\n if (!el) return;\n\n // Allow meta & navigation keys\n if (e.ctrlKey || e.metaKey || e.altKey || NavigationKeys.includes(e.key)) return;\n\n const [selStart, selEnd] = getSelection(el);\n\n if (e.key === 'Backspace') {\n e.preventDefault();\n\n if (selStart !== selEnd) {\n const range = formatter.getDigitRange(digits, selStart, selEnd);\n if (range) {\n const [start, end] = range;\n const newDigits = digits.slice(0, start) + digits.slice(end);\n setDigits(newDigits);\n setTimeout(() => {\n const pos = formatter.getCaretPosition(start);\n setCaret(el, pos);\n }, 0);\n }\n return;\n }\n\n if (selStart > 0) {\n const displayStr = el.value;\n let prevPos = selStart - 1;\n while (prevPos >= 0 && Delimiters.includes(displayStr[prevPos]!)) {\n prevPos--;\n }\n\n if (prevPos >= 0) {\n const range = formatter.getDigitRange(digits, prevPos, prevPos + 1);\n if (range) {\n const [start] = range;\n const newDigits = digits.slice(0, start) + digits.slice(start + 1);\n setDigits(newDigits);\n setTimeout(() => {\n const pos = formatter.getCaretPosition(start);\n setCaret(el, pos);\n }, 0);\n }\n }\n }\n return;\n }\n\n if (e.key === 'Delete') {\n e.preventDefault();\n\n if (selStart !== selEnd) {\n const range = formatter.getDigitRange(digits, selStart, selEnd);\n if (range) {\n const [start, end] = range;\n const newDigits = digits.slice(0, start) + digits.slice(end);\n setDigits(newDigits);\n setTimeout(() => {\n const pos = formatter.getCaretPosition(start);\n setCaret(el, pos);\n }, 0);\n }\n return;\n }\n\n if (selStart < el.value.length) {\n const range = formatter.getDigitRange(digits, selStart, selStart + 1);\n if (range) {\n const [start] = range;\n const newDigits = digits.slice(0, start) + digits.slice(start + 1);\n setDigits(newDigits);\n setTimeout(() => {\n const pos = formatter.getCaretPosition(start);\n setCaret(el, pos);\n }, 0);\n }\n }\n return;\n }\n\n // Block max digits\n if (/^[0-9]$/.test(e.key)) {\n if (digits.length >= formatter.getMaxDigits()) {\n e.preventDefault();\n }\n return;\n }\n\n // Block non-numeric\n if (e.key.length === 1) {\n e.preventDefault();\n }\n },\n [digits, formatter]\n );\n\n // Event handler: paste\n const handlePaste = useCallback(\n (e: ClipboardEvent) => {\n e.preventDefault();\n\n const el = inputRef.current;\n if (!el) return;\n\n const text = e.clipboardData?.getData('text') || '';\n const maxDigits = formatter.getMaxDigits();\n const pastedDigits = extractDigits(text, maxDigits);\n\n if (pastedDigits.length === 0) return;\n\n const [selStart, selEnd] = getSelection(el);\n\n if (selStart !== selEnd) {\n const range = formatter.getDigitRange(digits, selStart, selEnd);\n\n if (range) {\n const [start, end] = range;\n const left = digits.slice(0, start);\n const right = digits.slice(end);\n const newDigits = extractDigits(left + pastedDigits + right, maxDigits);\n setDigits(newDigits);\n setTimeout(() => {\n const pos = formatter.getCaretPosition(start + pastedDigits.length);\n setCaret(el, pos);\n }, 0);\n return;\n }\n }\n\n const range = formatter.getDigitRange(digits, selStart, selStart);\n const insertIndex = range ? range[0] : digits.length;\n\n const left = digits.slice(0, insertIndex);\n const right = digits.slice(insertIndex);\n const newDigits = extractDigits(left + pastedDigits + right, maxDigits);\n setDigits(newDigits);\n\n setTimeout(() => {\n const pos = formatter.getCaretPosition(insertIndex + pastedDigits.length);\n setCaret(el, pos);\n }, 0);\n },\n [digits, formatter]\n );\n\n // Attach event listeners\n useEffect(() => {\n const el = inputRef.current;\n if (!el) return;\n\n el.setAttribute('type', 'tel');\n el.setAttribute('inputmode', 'tel');\n el.setAttribute('placeholder', formatter.getPlaceholder());\n\n const beforeInputHandler = handleBeforeInput as unknown as (evt: Event) => void;\n const keydownHandler = handleKeydown as unknown as (evt: Event) => void;\n const pasteHandler = handlePaste as unknown as (evt: Event) => void;\n\n el.addEventListener('beforeinput', beforeInputHandler);\n el.addEventListener('input', handleInput);\n el.addEventListener('keydown', keydownHandler);\n el.addEventListener('paste', pasteHandler);\n\n return () => {\n el.removeEventListener('beforeinput', beforeInputHandler);\n el.removeEventListener('input', handleInput);\n el.removeEventListener('keydown', keydownHandler);\n el.removeEventListener('paste', pasteHandler);\n };\n }, [handleBeforeInput, handleInput, handleKeydown, handlePaste, formatter]);\n\n const setCountry = useCallback(\n (countryCode: string) => {\n const newCountry = getCountry(countryCode, locale);\n setCountryState(newCountry);\n const newFormatter = createPhoneFormatter(newCountry);\n const maxDigits = newFormatter.getMaxDigits();\n if (digits.length > maxDigits) {\n setDigits(digits.slice(0, maxDigits));\n }\n options.onCountryChange?.(newCountry);\n },\n [locale, digits, options]\n );\n\n const clear = useCallback(() => {\n setDigits('');\n const el = inputRef.current;\n if (el) {\n el.value = '';\n }\n }, []);\n\n return {\n ref: inputRef,\n digits,\n full,\n fullFormatted,\n isComplete,\n isEmpty,\n shouldShowWarn,\n country,\n setCountry,\n clear\n };\n}\n","import {\n getFlagEmoji,\n countPlaceholders,\n formatDigitsWithMap,\n pickMaskVariant,\n removeCountryCodePrefix,\n toArray\n} from '@desource/phone-mask';\n\nexport { PhoneInput } from './components/PhoneInput';\nexport { usePhoneMask } from './hooks/usePhoneMask';\nexport type {\n PhoneInputProps,\n PhoneInputRef,\n PhoneNumber,\n UsePhoneMaskOptions,\n UsePhoneMaskReturn,\n Size as PhoneInputSize,\n Theme as PhoneInputTheme\n} from './types';\n\nexport type {\n CountryKey as PCountryKey,\n MaskBase as PMaskBase,\n MaskBaseMap as PMaskBaseMap,\n Mask as PMask,\n MaskMap as PMaskMap,\n MaskWithFlag as PMaskWithFlag,\n MaskWithFlagMap as PMaskWithFlagMap,\n MaskFull as PMaskFull,\n MaskFullMap as PMaskFullMap\n} from '@desource/phone-mask';\n\nexport const PMaskHelpers = {\n getFlagEmoji,\n countPlaceholders,\n formatDigitsWithMap,\n pickMaskVariant,\n removeCountryCodePrefix,\n toArray\n};\n"],"names":["M","t","countryCodeEmoji","o","e","divideMask","getCodeAndMask","n","s","a","MasksFullMap","r","d","m","g","getNavigatorLang","getMasksFullMapByLocale","getCountry","toArray","countPlaceholders","removeCountryCodePrefix","pickMaskVariant","formatDigitsWithMap","i","u","p","detectCountryFromGeoIP","c","detectByGeoIp","createPhoneFormatter","country","variants","variantsDigits","maxDigits","getMask","digitLength","mask","digits","template","digitIndex","display","map","selStart","selEnd","min","max","digitIdx","setCaret","el","position","extractDigits","value","maxLength","getSelection","Delimiters","NavigationKeys","InvalidPattern","getCountries","locale","id","data","PhoneInput","ref","props","propCountry","detect","propLocale","size","theme","disabled","readonly","showCopy","showClear","withValidity","searchPlaceholder","noResultsText","clearButtonLabel","dropdownClass","disableDefaultStyles","onChange","onPhoneChange","onCountryChange","onValidationChange","onFocus","onBlur","onCopy","onClear","renderActionsBefore","renderFlag","renderCopySvg","renderClearSvg","telRef","useRef","rootRef","dropdownRef","searchRef","liveRef","selectorRef","setCountry","useState","setDigits","dropdownOpen","setDropdownOpen","isClosing","setIsClosing","search","setSearch","focusedIndex","setFocusedIndex","copied","setCopied","isCopying","setIsCopying","dropdownStyle","setDropdownStyle","showValidationHint","setShowValidationHint","validationTimerRef","closeTimerRef","copyTimerRef","hasDropdown","setHasDropdown","formatter","useMemo","countries","displayValue","displayPlaceholder","isComplete","isEmpty","shouldShowWarn","full","fullFormatted","filteredCountries","raw","q","qDigits","isNumeric","nameUpper","idUpper","codeUpper","codeDigits","score","x","b","inactive","showCopyButton","showClearButton","useEffect","hasCountry","code","detectFromLocale","lang","loc","parts","newCountry","prev","geo","detected","incomingDigits","emitChange","useCallback","handleBeforeInput","handleInput","newDigits","pos","handleKeydown","scheduleHint","range","start","end","prevPos","handlePaste","text","pastedDigits","insertIndex","closeDropdown","handleFocusInput","beforeInputHandler","keydownHandler","pasteHandler","selectCountry","positionDropdown","rect","focusTimer","onDocClick","ev","target","dropdownEl","selectorEl","handleCopyClick","trimmedValue","err","handleClearClick","useImperativeHandle","scrollFocusedIntoView","index","list","option","listRect","optionRect","scrollAmount","handleSearchKeydown","next","themeClass","rootClasses","actionsCount","jsxs","Fragment","jsx","createPortal","idx","detectCountryFromLocale","usePhoneMask","options","inputRef","setCountryState","geoCountry","localeCountry","phoneData","displayStr","left","right","countryCode","clear","PMaskHelpers","getFlagEmoji"],"mappings":"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"}
1
+ {"version":3,"file":"phone-mask-react.cjs","sources":["../../phone-mask/dist/esm/data.min.js","../../phone-mask/dist/esm/country-code-emodji.js","../../phone-mask/dist/esm/entries.js","../../phone-mask/dist/esm/utils.js","../../phone-mask/dist/esm/handlers.js","../../phone-mask/dist/esm/formatter.js","../../phone-mask/dist/esm/services/geoip/consts.js","../../phone-mask/dist/esm/services/geoip/utils.js","../src/hooks/internal/useFormatter.ts","../src/hooks/internal/useCountry.ts","../src/hooks/utility/useTimer.ts","../src/hooks/internal/useValidationHint.ts","../src/hooks/internal/useInputHandlers.ts","../src/hooks/internal/useCountrySelector.ts","../src/hooks/utility/useClipboard.ts","../src/hooks/internal/useCopyAction.ts","../src/hooks/internal/useTheme.ts","../src/components/PhoneInput.tsx","../src/hooks/usePhoneMask.ts","../src/index.ts"],"sourcesContent":["const M={AC:\"+247 #####\",AD:[\"+376 ### ###\",\"+376 #### ####\"],AE:[\"+971 # ### ####\",\"+971 ## ### ####\",\"+971 ### ######\",\"+971 ### # #####\"],AF:\"+93 ## ### ####\",AG:\"+1 ###-###-####\",AI:\"+1 ###-###-####\",AL:[\"+355 ## ### ###\",\"+355 ## ### ####\",\"+355 ### ####\",\"+355 ### ###\",\"+355 ### #####\"],AM:[\"+374 ## ######\",\"+374 ### ## ###\"],AO:\"+244 ### ### ###\",AR:[\"+54 ## ####-####\",\"+54 # ## ####-####\",\"+54 ###-###-####\"],AS:\"+1 ###-###-####\",AT:[\"+43 # #########\",\"+43 ### ######\"],AU:[\"+61 # #### ####\",\"+61 ### ### ###\",\"+61 #### ### ###\",\"+61 ## ### ##\"],AW:\"+297 ### ####\",AX:[\"+358 ## #######\",\"+358 ### ######\"],AZ:[\"+994 ## ### ## ##\",\"+994 ### ## ## ##\"],BA:[\"+387 ## ###-###\",\"+387 ## ### ###\"],BB:\"+1 ###-###-####\",BD:[\"+880 #-#######\",\"+880 ####-######\",\"+880 ###-#######\"],BE:[\"+32 ## ## ## ##\",\"+32 ### ## ## ##\",\"+32 ### ## ###\"],BF:\"+226 ## ## ## ##\",BG:[\"+359 # ### ###\",\"+359 ## ### ###\",\"+359 ### ## ###\"],BH:\"+973 #### ####\",BI:\"+257 ## ## ## ##\",BJ:[\"+229 ## ## ## ## ##\",\"+229 ## ## ## ##\"],BL:\"+590 ### ## ## ##\",BM:\"+1 ###-###-####\",BN:\"+673 ### ####\",BO:[\"+591 # #######\",\"+591 ########\",\"+591 ### ## ####\"],BQ:\"+599 ### ####\",BR:[\"+55 ## ####-####\",\"+55 ## #####-####\",\"+55 ### ## ####\",\"+55 ####-####\"],BS:\"+1 ###-###-####\",BT:[\"+975 # ### ###\",\"+975 ## ## ## ##\"],BW:[\"+267 ### ####\",\"+267 ## ### ###\",\"+267 #### ### ###\",\"+267 ## #####\"],BY:[\"+375 ### ##-##-##\",\"+375 ## ###-##-##\",\"+375 ### ### ####\"],BZ:[\"+501 ###-####\",\"+501 #-###-####-###\"],CA:\"+1 ###-###-####\",CC:[\"+61 # #### ####\",\"+61 ### ### ###\",\"+61 #### ### ###\"],CD:[\"+243 ## #####\",\"+243 ### ### ###\"],CF:\"+236 ## ## ## ##\",CG:[\"+242 ## ### ####\",\"+242 # #### ####\"],CH:[\"+41 ## ### ## ##\",\"+41 ### ### ###\"],CI:[\"+225 ## ## # #####\",\"+225 ## ## ## ####\"],CK:\"+682 ## ###\",CL:[\"+56 ### ### ###\",\"+56 # #### ####\",\"+56 ### ### ####\",\"+56 ## ### ####\"],CM:[\"+237 # ## ## ## ##\",\"+237 ## ## ## ##\"],CN:[\"+86 ## #### ####\",\"+86 ### #### ####\",\"+86 ### ### ####\",\"+86 ########\"],CO:[\"+57 ### #######\",\"+57 # ### #######\"],CR:[\"+506 #### ####\",\"+506 ###-###-####\"],CU:[\"+53 # #######\",\"+53 ### #######\"],CV:\"+238 ### ## ##\",CW:[\"+599 # ### ####\",\"+599 ### ####\"],CX:[\"+61 # #### ####\",\"+61 ### ### ###\",\"+61 #### ### ###\"],CY:\"+357 ## ######\",CZ:\"+420 ### ### ###\",DE:[\"+49 ## ######\",\"+49 #### #######\",\"+49 ### ##########\",\"+49 ### # ######\",\"+49 ### # ####\",\"+49 ### #### ####\",\"+49 ########\"],DJ:\"+253 ## ## ## ##\",DK:\"+45 ## ## ## ##\",DM:\"+1 ###-###-####\",DO:\"+1 ###-###-####\",DZ:[\"+213 ## ## ## ##\",\"+213 ### ## ## ##\",\"+213 ## ### ## ##\"],EC:[\"+593 #-###-####\",\"+593 ## ### ####\",\"+593 #### ### ####\"],EE:[\"+372 ### ####\",\"+372 #### ####\",\"+372 ## ## ####\"],EG:[\"+20 # ########\",\"+20 ## ########\",\"+20 ### ### ####\"],EH:[\"+212 # ## ## ## ##\",\"+212 ##-#######\"],ER:\"+291 # ### ###\",ES:[\"+34 ### ## ## ##\",\"+34 ### ### ###\"],ET:\"+251 ## ### ####\",FI:[\"+358 ## #######\",\"+358 ### ######\"],FJ:[\"+679 ### ####\",\"+679 #### ### ####\"],FK:\"+500 #####\",FM:\"+691 ### ####\",FO:\"+298 ######\",FR:[\"+33 # ## ## ## ##\",\"+33 ### ## ## ##\"],GA:\"+241 ## ## ## ##\",GB:[\"+44 ### ### ####\",\"+44 #### ######\",\"+44 ## #### ####\"],GD:\"+1 ###-###-####\",GE:[\"+995 ## ### ## ##\",\"+995 ### ## ## ##\",\"+995 ### ### ###\"],GF:\"+594 ### ## ## ##\",GG:[\"+44 #### ######\",\"+44 ### ### ####\",\"+44 ## #### ####\"],GH:[\"+233 ## ### ####\",\"+233 ### #####\"],GI:[\"+350 ### #####\",\"+350 ########\"],GL:\"+299 ## ## ##\",GM:\"+220 ### ####\",GN:[\"+224 ## ## ## ##\",\"+224 ### ## ## ##\"],GP:\"+590 ### ## ## ##\",GQ:[\"+240 ### ### ###\",\"+240 ### ######\"],GR:[\"+30 ## #### ####\",\"+30 ### ### ####\"],GT:[\"+502 #### ####\",\"+502 #### ### ####\"],GU:\"+1 ###-###-####\",GW:[\"+245 ### ### ###\",\"+245 ### ####\"],GY:\"+592 ### ####\",HK:[\"+852 #### ####\",\"+852 ### ### ###\",\"+852 ### ## ### ###\"],HN:[\"+504 ####-####\",\"+504 ###########\"],HR:[\"+385 # #### ###\",\"+385 ## ### ####\",\"+385 ### ### ###\",\"+385 ## ## ###\",\"+385 ## ### ###\"],HT:\"+509 ## ## ####\",HU:[\"+36 # ### ####\",\"+36 ## ### ####\",\"+36 ## ### ###\"],ID:[\"+62 ## #######\",\"+62 ###-###-###\",\"+62 ### #######\",\"+62 ### # ### ###\",\"+62 ### ### ####\"],IE:[\"+353 ## #####\",\"+353 ## ### ####\",\"+353 #### ### ###\",\"+353 ### ### ###\"],IL:[\"+972 #-###-####\",\"+972 ##-###-####\",\"+972 #-###-###-###\"],IM:[\"+44 #### ######\",\"+44 ### ### ####\",\"+44 ## #### ####\"],IN:[\"+91 ##### #####\",\"+91 #### ## ####\",\"+91 #### ### ### ###\",\"+91 #### ### ####\"],IO:\"+246 ### ####\",IQ:[\"+964 # ### ####\",\"+964 ### ### ####\"],IR:[\"+98 ## #### ####\",\"+98 ### ### ####\"],IS:\"+354 ### ####\",IT:[\"+39 ## #### ####\",\"+39 ### ### ####\",\"+39 ### ### ###\"],JE:[\"+44 #### ######\",\"+44 ### ### ####\",\"+44 ## #### ####\"],JM:\"+1 ###-###-####\",JO:[\"+962 # ### ####\",\"+962 # #### ####\",\"+962 ### #####\",\"+962 ## #######\"],JP:[\"+81 #-####-####\",\"+81 ##-####-####\",\"+81 ###-###-###\",\"+81 ##-###-####\"],KE:[\"+254 ## #######\",\"+254 ### ######\",\"+254 ### ### ###\"],KG:[\"+996 ### ### ###\",\"+996 ### ### # ##\"],KH:[\"+855 ## ### ###\",\"+855 #### ### ###\"],KI:[\"+686 #####\",\"+686 ########\"],KM:\"+269 ### ## ##\",KN:\"+1 ###-###-####\",KP:[\"+850 # ### ####\",\"+850 ### ### ####\"],KR:[\"+82 #-###-####\",\"+82 ##-####-####\",\"+82 ##-###-####\"],KW:[\"+965 #### ####\",\"+965 ### #####\",\"+965 #### ###\"],KY:\"+1 ###-###-####\",KZ:[\"+7 ##### # ## ##\",\"+7 ### ### ####\",\"+7 ### ###-##-##\"],LA:[\"+856 ## ### ###\",\"+856 ## ## ### ###\"],LB:[\"+961 # ### ###\",\"+961 ## ### ###\"],LC:\"+1 ###-###-####\",LI:[\"+423 ### ## ##\",\"+423 ### ### ###\"],LK:[\"+94 ### ### ###\",\"+94 ## ### ####\"],LR:[\"+231 ## ### ###\",\"+231 ## ### ####\"],LS:\"+266 #### ####\",LT:[\"+370 ### #####\",\"+370 ### ## ###\"],LU:[\"+352 ## ## ## ##\",\"+352 ### ### ###\",\"+352 ### ## ###\"],LV:\"+371 ## ### ###\",LY:\"+218 ##-#######\",MA:[\"+212 # ## ## ## ##\",\"+212 ##-#######\"],MC:[\"+377 ## ## ## ##\",\"+377 # ## ## ## ##\"],MD:[\"+373 ## ### ###\",\"+373 ### ## ###\",\"+373 ### #####\"],ME:\"+382 ## ### ###\",MF:\"+590 ### ## ## ##\",MG:\"+261 ## ## ### ##\",MH:\"+692 ###-####\",MK:[\"+389 # ### ####\",\"+389 ## ### ###\",\"+389 ### # ## ##\"],ML:\"+223 ## ## ## ##\",MM:[\"+95 # ### ###\",\"+95 # ### ####\",\"+95 ### ### ####\"],MN:\"+976 #### ####\",MO:[\"+853 #### ####\",\"+853 #### ###\"],MP:\"+1 ###-###-####\",MQ:\"+596 ### ## ## ##\",MR:\"+222 ## ## ## ##\",MS:\"+1 ###-###-####\",MT:\"+356 #### ####\",MU:[\"+230 #### ####\",\"+230 ### ####\"],MV:[\"+960 ###-####\",\"+960 ### ### ####\"],MW:[\"+265 # ### ###\",\"+265 ### ## ## ##\"],MX:\"+52 ### ### ####\",MY:[\"+60 #-#### ####\",\"+60 ##-### ####\",\"+60 #-###-##-####\",\"+60 ###-### ####\"],MZ:[\"+258 ## ### ###\",\"+258 ## ### ####\",\"+258 ### ### ###\"],NA:[\"+264 ## ### ###\",\"+264 ## ### ####\",\"+264 ### ### ###\"],NC:\"+687 ##.##.##\",NE:[\"+227 ## ## ## ##\",\"+227 ## ### ###\"],NF:[\"+672 ## ####\",\"+672 # #####\"],NG:[\"+234 #### ## ####\",\"+234 ### ### ####\",\"+234 ### #### ####\"],NI:\"+505 #### ####\",NL:[\"+31 ## ### ####\",\"+31 # ########\",\"+31 ### ####\",\"+31 ## #######\"],NO:[\"+47 ## ## ## ##\",\"+47 ### ## ###\"],NP:[\"+977 #-#######\",\"+977 ###-#######\",\"+977 ###########\"],NR:\"+674 ### ####\",NU:[\"+683 ####\",\"+683 ### ####\"],NZ:[\"+64 # ### ####\",\"+64 ## ### ####\",\"+64 ### ### ###\"],OM:[\"+968 ## ######\",\"+968 #### ####\",\"+968 ### #####\"],PA:[\"+507 ###-####\",\"+507 ####-####\"],PE:[\"+51 # #######\",\"+51 ### ### ###\",\"+51 ### #####\"],PF:[\"+689 ## ## ## ##\",\"+689 ### ## ## ##\"],PG:[\"+675 ### ####\",\"+675 #### ####\"],PH:[\"+63 # #### ####\",\"+63 ### ### ####\",\"+63 #### # ### ####\"],PK:[\"+92 ## ########\",\"+92 ### #######\",\"+92 ### ### ##\",\"+92 #### #####\"],PL:[\"+48 ## ### ## ##\",\"+48 ### ### ###\"],PM:[\"+508 ## ## ##\",\"+508 ### ## ## ##\"],PR:\"+1 ###-###-####\",PS:[\"+970 # ### ####\",\"+970 ### ### ###\",\"+970 #### ### ###\"],PT:[\"+351 ## ### ####\",\"+351 ### ### ###\"],PW:\"+680 ### ####\",PY:[\"+595 ## ### ####\",\"+595 ### ######\",\"+595 #### ### ####\"],QA:[\"+974 #### ####\",\"+974 ### ####\"],RE:\"+262 ### ## ## ##\",RO:[\"+40 ## ### ####\",\"+40 ### ### ###\"],RS:[\"+381 ## ######\",\"+381 ## #######\",\"+381 ### #####\"],RU:\"+7 ### ###-##-##\",RW:\"+250 ### ### ###\",SA:[\"+966 ## ### ####\",\"+966 ### ### ####\",\"+966 #### #####\"],SB:[\"+677 #####\",\"+677 ## #####\"],SC:[\"+248 # ### ###\",\"+248 #######\"],SD:\"+249 ## ### ####\",SE:[\"+46 # ## ## ##\",\"+46 ## ### ## ##\",\"+46 ## ## ## ##\",\"+46 ### ## ## ###\"],SG:[\"+65 #### ####\",\"+65 #### ### ####\"],SH:\"+290 #####\",SI:[\"+386 # ### ## ##\",\"+386 ## ### ###\",\"+386 ## ######\",\"+386 ### #####\"],SJ:[\"+47 ## ## ## ##\",\"+47 ### ## ###\"],SK:[\"+421 #/### ### ##\",\"+421 ### ### ###\",\"+421 #######\"],SL:\"+232 ## ######\",SM:[\"+378 #### ######\",\"+378 ## ## ## ##\"],SN:[\"+221 ## ### ## ##\",\"+221 ### ## ## ##\"],SO:[\"+252 # ######\",\"+252 # #######\"],SR:[\"+597 ###-###\",\"+597 ###-####\",\"+597 ##-##-##\"],SS:\"+211 ### ### ###\",ST:\"+239 ### ####\",SV:[\"+503 #### ####\",\"+503 ### ####\"],SX:\"+1 ###-###-####\",SY:[\"+963 ## ### ####\",\"+963 ### ### ###\"],SZ:[\"+268 #### ####\",\"+268 ##### ####\"],TA:\"+290 ####\",TC:\"+1 ###-###-####\",TD:\"+235 ## ## ## ##\",TG:\"+228 ## ## ## ##\",TH:[\"+66 # ### ####\",\"+66 ## ### ####\",\"+66 #### ### ###\"],TJ:[\"+992 ### ## ####\",\"+992 ## ### ####\"],TK:\"+690 ####\",TL:[\"+670 ### ####\",\"+670 #### ####\"],TM:[\"+993 ## ##-##-##\",\"+993 ## ######\"],TN:\"+216 ## ### ###\",TO:[\"+676 ##-###\",\"+676 ### ####\",\"+676 #### ###\"],TR:[\"+90 ### ### ## ##\",\"+90 ### ### ####\"],TT:\"+1 ###-###-####\",TV:[\"+688 ## ###\",\"+688 ## ####\"],TW:[\"+886 # #### ####\",\"+886 ### ### ###\",\"+886 ## ### ####\",\"+886 ## #### ####\"],TZ:[\"+255 ## ### ####\",\"+255 ### ### ###\",\"+255 ### ## ####\"],UA:[\"+380 #### #####\",\"+380 ## ### ####\",\"+380 ### ### ###\"],UG:[\"+256 ## #######\",\"+256 ### ######\"],US:\"+1 ###-###-####\",UY:[\"+598 #### ####\",\"+598 ## ### ###\",\"+598 ### ####\"],UZ:\"+998 ## ### ## ##\",VA:[\"+39 ## #### ####\",\"+39 ### ### ####\",\"+39 ### ### ###\"],VC:\"+1 ###-###-####\",VE:\"+58 ###-#######\",VG:\"+1 ###-###-####\",VI:\"+1 ###-###-####\",VN:[\"+84 ### #### ###\",\"+84 ### ### ###\",\"+84 #### ######\",\"+84 ## ### ## ##\"],VU:[\"+678 #####\",\"+678 ### ####\"],WF:[\"+681 ## ## ##\",\"+681 ### ## ## ##\"],WS:[\"+685 #####\",\"+685 ## #####\",\"+685 ### ###\"],XK:[\"+383 ## ### ###\",\"+383 ### #####\"],YE:[\"+967 # ### ###\",\"+967 ### ### ###\"],YT:\"+262 ### ## ## ##\",ZA:[\"+27 ## ### ####\",\"+27 ### ### ###\"],ZM:[\"+260 ### ### ###\",\"+260 ## #######\",\"+260 #########\"],ZW:[\"+263 ## #####\",\"+263 ## ### ####\",\"+263 ### ####\",\"+263 #### ######\"]};export{M as default};\n","const t=/^[a-z]{2}$/i,countryCodeEmoji=o=>{if(!t.test(o)){const t=typeof o;throw new TypeError(`cc argument must be an ISO 3166-1 alpha-2 string, but got '${\"string\"===t?o:t}' instead.`)}const e=[...o.toUpperCase()].map(t=>(t.codePointAt(0)??0)+127397);return String.fromCodePoint(...e)};export{countryCodeEmoji};\n","import e from\"./data.min.js\";import{countryCodeEmoji as t}from\"./country-code-emodji.js\";const o=\"en\",n=new Map,getDisplayNames=e=>{const t=e.toLowerCase(),s=n.get(t);if(s)return s;const r=new Intl.DisplayNames([e],{type:\"region\"});if(n.size>=10)for(const e of n.keys())if(e!==o){n.delete(e);break}return n.set(t,r),r},s=Object.entries(e),divideMask=e=>e.split(/ (.*)/s);function getCodeAndMask(e){let t=\"\",o=\"\";if(Array.isArray(e)){const n=[];for(const o of e){const[e,s]=divideMask(o);t||(t=e),n.push(s)}o=n}else{const[n,s]=divideMask(e);t=n,o=s}return[t,o]}const r=e,a=s.map(([e,t])=>({id:e,mask:t})),d=s.reduce((e,[t,o])=>{const[n,s]=getCodeAndMask(o);return e[t]={code:n,mask:s},e},{}),c=s.map(([e,t])=>{const[o,n]=getCodeAndMask(t);return{id:e,code:o,mask:n}}),m=s.reduce((e,[o,n])=>{const[s,r]=getCodeAndMask(n);return e[o]={code:s,mask:r,flag:t(o)},e},{}),i=s.map(([e,o])=>{const[n,s]=getCodeAndMask(o);return{id:e,code:n,mask:s,flag:t(e)}}),MasksFullMap=e=>{const o=getDisplayNames(e);return s.reduce((e,[n,s])=>{const[r,a]=getCodeAndMask(s),d=o.of(n)??\"\";return e[n]={code:r,mask:a,name:d,flag:t(n)},e},{})},MasksFull=e=>{const o=getDisplayNames(e);return s.map(([e,n])=>{const[s,r]=getCodeAndMask(n);return{id:e,code:s,mask:r,name:o.of(e)??\"\",flag:t(e)}})},f=MasksFullMap(o),u=MasksFull(o),k=t;export{c as Masks,a as MasksBase,r as MasksBaseMap,MasksFull,u as MasksFullEn,MasksFullMap,f as MasksFullMapEn,d as MasksMap,i as MasksWithFlag,m as MasksWithFlagMap,k as getFlagEmoji};\n","import{MasksFullMap as t,MasksFullMapEn as e}from\"./entries.js\";function getNavigatorLang(){return\"undefined\"!=typeof navigator&&navigator.language||\"en\"}function detectCountryFromLocale(){try{const t=getNavigatorLang();try{const e=new Intl.Locale(t);if(e.region)return e.region.toUpperCase()}catch{}const e=t.split(/[-_]/);if(e.length>1)return e[1]?.toUpperCase()||null}catch{}return null}function hasCountry(t){const r=e;return t.toUpperCase()in r}function getCountry(e,r){const n=t(r),o=e.toUpperCase();return o in n?{id:o,...n[o]}:{id:\"US\",...n.US}}function parseCountryCode(t,e){return t&&hasCountry(t)?t.toUpperCase():e||\"\"}function toArray(t){return Array.isArray(t)?t:[t]}function countPlaceholders(t){return(t.match(/#/g)||[]).length}function removeCountryCodePrefix(t){return t.replace(/^\\+\\d+\\s?/,\"\")}function pickMaskVariant(t,e){if(1===t.length)return t[0];const r=t.map(t=>({mask:t,count:countPlaceholders(t)})),n=r.filter(t=>t.count>=e).sort((t,e)=>t.count-e.count);if(n.length>0)return n[0].mask;const o=r.sort((t,e)=>e.count-t.count)[0];return o?o.mask:t[0]}function formatDigitsWithMap(t,e){let r=\"\";const n=[];let o=0;const a=e.length,s=t.length;for(let c=0;c<s;c++){const s=t[c];if(\"#\"===s){if(!(o<a))break;r+=e[o],n.push(o),o++}else{const e=-1!==t.indexOf(\"#\",c+1)&&o<a;(r.length>0||e)&&(r+=s,n.push(-1))}}return{display:r,map:n}}function filterCountries(t,e){const r=e.trim().toUpperCase();if(!r)return t;const n=r.replace(/\\D/g,\"\"),o=n.length>0;return t.map(t=>{const e=t.name.toUpperCase(),a=t.id.toUpperCase(),s=t.code.toUpperCase(),c=t.code.replace(/\\D/g,\"\");let i=0;return e.startsWith(r)?i=1e3:e.includes(r)&&(i=500),s.startsWith(r)?i+=100:s.includes(r)&&(i+=50),a===r?i+=200:a.startsWith(r)&&(i+=150),o&&c.startsWith(n)?i+=80:o&&c.includes(n)&&(i+=40),{country:t,score:i}}).filter(t=>t.score>0).sort((t,e)=>e.score!==t.score?e.score-t.score:t.country.name.localeCompare(e.country.name)).map(t=>t.country)}export{countPlaceholders,detectCountryFromLocale,filterCountries,formatDigitsWithMap,getCountry,getNavigatorLang,hasCountry,parseCountryCode,pickMaskVariant,removeCountryCodePrefix,toArray};\n","const t=[\" \",\"-\",\"(\",\")\"],e=[\"ArrowLeft\",\"ArrowRight\",\"ArrowUp\",\"ArrowDown\",\"Home\",\"End\",\"Tab\"],i=/[^\\d\\s\\-()]/;function extractDigits(t,e){const i=t.replace(/\\D/g,\"\");return e?i.slice(0,e):i}function getSelection(t){return t?[t.selectionStart??0,t.selectionEnd??0]:[0,0]}function setCaret(t,e){if(t)try{t.setSelectionRange(e,e)}catch{}}function processBeforeInput(t){if(!t.target)return;const e=t.target,n=t.data;\"insertText\"===t.inputType&&n&&(i.test(n)||\" \"===n&&e.value.endsWith(\" \"))&&t.preventDefault()}function processInput(t,e){if(!t.target)return;const i=t.target,{formatter:n}=e,r=n.getMaxDigits(),s=extractDigits(i.value,r);return{newDigits:s,caretDigitIndex:s.length}}function processKeydown(i,n){if(!i.target)return;const r=i.target,{digits:s,formatter:c}=n;if(i.ctrlKey||i.metaKey||i.altKey||e.includes(i.key))return;const[g,a]=getSelection(r);if(\"Backspace\"!==i.key)if(\"Delete\"!==i.key)/^[0-9]$/.test(i.key)?s.length>=c.getMaxDigits()&&i.preventDefault():1===i.key.length&&i.preventDefault();else{if(i.preventDefault(),g!==a){const t=c.getDigitRange(s,g,a);if(t){const[e,i]=t;return{newDigits:s.slice(0,e)+s.slice(i),caretDigitIndex:e}}}if(g<r.value.length){const t=c.getDigitRange(s,g,r.value.length);if(t){const[e]=t;return{newDigits:s.slice(0,e)+s.slice(e+1),caretDigitIndex:e}}}}else{if(i.preventDefault(),g!==a){const t=c.getDigitRange(s,g,a);if(t){const[e,i]=t;return{newDigits:s.slice(0,e)+s.slice(i),caretDigitIndex:e}}}if(g>0){const e=r.value;let i=g-1;for(;i>=0&&t.includes(e[i]);)i--;if(i>=0){const t=c.getDigitRange(s,i,i+1);if(t){const[e]=t;return{newDigits:s.slice(0,e)+s.slice(e+1),caretDigitIndex:e}}}}}}function processPaste(t,e){if(!t.target)return;t.preventDefault();const i=t.target,{digits:n,formatter:r}=e,s=t.clipboardData?.getData(\"text\")||\"\",c=r.getMaxDigits(),g=extractDigits(s,c);if(0===g.length)return;const[a,o]=getSelection(i);if(a!==o){const t=r.getDigitRange(n,a,o);if(t){const[e,i]=t;return{newDigits:extractDigits(n.slice(0,e)+g+n.slice(i),c),caretDigitIndex:e+g.length}}}const l=r.getDigitRange(n,0,a),f=l?l[1]:0;return{newDigits:extractDigits(n.slice(0,f)+g+n.slice(f),c),caretDigitIndex:f+g.length}}export{t as DELIMITERS,i as INVALID_PATTERN,e as NAVIGATION_KEYS,extractDigits,getSelection,processBeforeInput,processInput,processKeydown,processPaste,setCaret};\n","import{countPlaceholders as t,removeCountryCodePrefix as e,formatDigitsWithMap as n,toArray as r,pickMaskVariant as l}from\"./utils.js\";function createPhoneFormatter(o){const a=r(o.mask),i=a.map(n=>t(e(n))),g=Math.max(...i),getMask=t=>{const n=l(a,t);return e(n)};return{formatDisplay:t=>{const e=getMask(t.length);return n(e,t).display},getMaxDigits:()=>g,getPlaceholder:()=>getMask(0),getCaretPosition:t=>{const e=getMask(t),{display:r,map:l}=n(e,\"0\".repeat(t));for(let e=0;e<l.length;e++)if(l[e]===t)return e;if(t>=l.length)return r.length;for(let e=0;e<l.length;e++)if(l[e]>t)return e;return r.length},getDigitRange:(t,e,r)=>{const l=getMask(t.length),{map:o}=n(l,t);let a=1/0,i=-1/0;for(let t=e;t<r&&t<o.length;t++){const e=o[t];void 0!==e&&e>=0&&(a=Math.min(a,e),i=Math.max(i,e))}return a===1/0?null:[a,i+1]},isComplete:t=>i.includes(t.length)}}export{createPhoneFormatter};\n","const o=\"https://ipapi.co/json/\",e=1500,p=\"@desource/phone-mask:geo\",s=864e5;export{s as CACHE_EXPIRY_MS,p as CACHE_KEY,o as GEO_IP_API_URL,e as GEO_IP_TIMEOUT_MS};\n","import{parseCountryCode as t}from\"../../utils.js\";import{GEO_IP_API_URL as o,GEO_IP_TIMEOUT_MS as e,CACHE_KEY as r,CACHE_EXPIRY_MS as n}from\"./consts.js\";async function detectCountryFromGeoIP(t=o,r=e){const n=new AbortController,c=setTimeout(()=>n.abort(),r);try{const o=await fetch(t,{signal:n.signal,headers:{Accept:\"application/json\"}});if(clearTimeout(c),!o.ok)return null;const e=await o.json();return(e.country||e.country_code||e.countryCode||e.country_code2||\"\").toString().toUpperCase()||null}catch{return clearTimeout(c),null}}async function detectByGeoIp(){try{const o=localStorage.getItem(r);if(o){const e=JSON.parse(o),c=Date.now()-e.ts>n,a=t(e.country_code);if(a&&!c)return a;localStorage.removeItem(r)}}catch{}const o=await detectCountryFromGeoIP(),e=t(o);if(e){try{const t=JSON.stringify({country_code:e,ts:Date.now()});localStorage.setItem(r,t)}catch{}return e}return null}export{detectByGeoIp,detectCountryFromGeoIP};\n","import { useEffect, useMemo } from 'react';\nimport { extractDigits, createPhoneFormatter, type MaskFull, type FormatterHelpers } from '@desource/phone-mask';\n\nimport type { PhoneNumber } from '../../types';\n\n/** Configuration options for the useFormatter hook */\nexport interface UseFormatterOptions {\n /** Pre-resolved country data */\n country: MaskFull;\n /**\n * Controlled value (digits only, without country code)\n * The parent is responsible for managing state via onChange callback.\n */\n value: string;\n /** Callback when the digits value changes. */\n onChange: (digits: string) => void;\n /** Callback when the phone number changes. */\n onPhoneChange?: (value: PhoneNumber) => void;\n /** Callback when validation state (isComplete) changes */\n onValidationChange?: (isComplete: boolean) => void;\n}\n\n/** Return type for useFormatter hook */\nexport interface UseFormatterReturn {\n /** Raw digits without formatting */\n digits: string;\n /** Phone formatter instance */\n formatter: FormatterHelpers;\n /** Placeholder from formatter */\n displayPlaceholder: string;\n /** Formatted display string */\n displayValue: string;\n /** Full phone number with country code */\n full: string;\n /** Full phone number formatted */\n fullFormatted: string;\n /** Whether the phone number is complete */\n isComplete: boolean;\n /** Whether the input is empty */\n isEmpty: boolean;\n /** Whether to show validation warning */\n shouldShowWarn: boolean;\n}\n\n/**\n * Hook for phone number formatting and derived computations.\n * Receives pre-resolved country data; country management is handled by the caller.\n */\nexport function useFormatter({\n country,\n value,\n onChange,\n onPhoneChange,\n onValidationChange\n}: UseFormatterOptions): UseFormatterReturn {\n const formatter = useMemo(() => createPhoneFormatter(country), [country]);\n const maxDigits = formatter.getMaxDigits();\n const digits = useMemo(() => extractDigits(value, maxDigits), [value, maxDigits]);\n\n const displayPlaceholder = formatter.getPlaceholder();\n const displayValue = formatter.formatDisplay(digits);\n\n const full = digits ? `${country.code}${digits}` : '';\n const fullFormatted = displayValue ? `${country.code} ${displayValue}` : '';\n\n const isComplete = formatter.isComplete(digits);\n const isEmpty = digits.length === 0;\n const shouldShowWarn = !isEmpty && !isComplete;\n\n // Memoize phoneData to prevent infinite loops in useEffect\n const phoneData = useMemo<PhoneNumber>(() => ({ full, fullFormatted, digits }), [full, fullFormatted, digits]);\n\n // Clamp digits on formatter changes\n useEffect(() => {\n if (value !== digits) {\n onChange(digits);\n }\n }, [value, digits, onChange]);\n\n // Effect: Emit onPhoneChange\n useEffect(() => {\n onPhoneChange?.(phoneData);\n }, [phoneData, onPhoneChange]);\n\n // Effect: Emit onValidationChange\n useEffect(() => {\n onValidationChange?.(isComplete);\n }, [isComplete, onValidationChange]);\n\n return {\n digits,\n formatter,\n displayPlaceholder,\n displayValue,\n full,\n fullFormatted,\n isComplete,\n isEmpty,\n shouldShowWarn\n };\n}\n","import { useState, useEffect, useMemo, useCallback } from 'react';\nimport {\n getNavigatorLang,\n getCountry,\n parseCountryCode,\n detectByGeoIp,\n detectCountryFromLocale,\n type MaskFull\n} from '@desource/phone-mask';\n\nexport interface UseCountryOptions {\n /** Country ISO code (e.g., 'US', 'DE', 'GB') */\n country?: string;\n /** Locale for country names (default: navigator.language) */\n locale?: string;\n /** Auto-detect country from IP/locale (default: false) */\n detect?: boolean;\n /** Callback when country changes */\n onCountryChange?: (country: MaskFull) => void;\n}\n\nexport interface UseCountryReturn {\n /** Current country data */\n country: MaskFull;\n /** Change country programmatically */\n setCountry: (countryCode?: string | null) => boolean;\n /** Computed locale value */\n locale: string;\n}\n\nexport function useCountry({\n country: countryOption,\n locale: localeOption,\n detect,\n onCountryChange\n}: UseCountryOptions): UseCountryReturn {\n const locale = useMemo<string>(() => localeOption || getNavigatorLang(), [localeOption]);\n\n const [countryCode, setCountryCode] = useState<string>(parseCountryCode(countryOption, 'US'));\n\n const country = useMemo<MaskFull>(() => getCountry(countryCode, locale), [countryCode, locale]);\n\n const shouldDetect = !!detect && !countryOption;\n\n const setCountry = useCallback((countryCode?: string | null) => {\n const code = parseCountryCode(countryCode);\n\n if (code) {\n setCountryCode(code);\n return true;\n }\n\n return false;\n }, []);\n\n const detectCountry = useCallback(async () => {\n const geoCountry = await detectByGeoIp();\n\n if (setCountry(geoCountry)) return;\n\n const localeCountry = detectCountryFromLocale();\n\n setCountry(localeCountry);\n }, [setCountry]);\n\n useEffect(() => {\n if (countryOption && countryOption !== countryCode) {\n setCountry(countryOption);\n }\n }, [countryCode, countryOption, setCountry]);\n\n // Effect: Country detection\n useEffect(() => {\n if (shouldDetect) {\n detectCountry();\n }\n }, [shouldDetect, detectCountry]);\n\n // Effect: Emit onCountryChange\n useEffect(() => {\n onCountryChange?.(country);\n }, [country, onCountryChange]);\n\n return { country, setCountry, locale };\n}\n","import { useRef, useCallback, useEffect, useMemo } from 'react';\n\n/**\n * Custom hook for managing timers with automatic cleanup\n * @returns Object with set and clear methods for timer control\n */\nexport function useTimer() {\n const timerRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n\n const clear = useCallback(() => {\n if (timerRef.current) {\n clearTimeout(timerRef.current);\n timerRef.current = null;\n }\n }, []);\n\n const set = useCallback(\n (callback: () => void, delay: number) => {\n clear();\n timerRef.current = setTimeout(callback, delay);\n },\n [clear]\n );\n\n // Auto cleanup on unmount\n useEffect(() => {\n return clear;\n }, [clear]);\n\n return useMemo(() => ({ set, clear }), [set, clear]);\n}\n","import { useState, useCallback } from 'react';\nimport { useTimer } from '../utility/useTimer';\n\nexport function useValidationHint() {\n const [showValidationHint, setShowValidationHint] = useState(false);\n\n const validationTimer = useTimer();\n\n const clearValidationHint = useCallback(\n (hideHint = true) => {\n if (hideHint) setShowValidationHint(false);\n validationTimer.clear();\n },\n [validationTimer]\n );\n\n const scheduleValidationHint = useCallback(\n (delay: number) => {\n setShowValidationHint(false);\n validationTimer.set(() => {\n setShowValidationHint(true);\n }, delay);\n },\n [validationTimer]\n );\n\n return { showValidationHint, clearValidationHint, scheduleValidationHint };\n}\n","import React, { useCallback } from 'react';\nimport {\n processBeforeInput,\n processInput,\n processKeydown,\n processPaste,\n setCaret,\n type FormatterHelpers\n} from '@desource/phone-mask';\n\nexport interface UseInputHandlersOptions {\n formatter: FormatterHelpers;\n digits: string;\n inactive?: boolean;\n onChange?: (newDigits: string) => void;\n scheduleValidationHint?: (delay: number) => void;\n}\n\nexport interface UseInputHandlersReturn {\n handleBeforeInput: (e: React.SyntheticEvent<HTMLInputElement> | InputEvent) => void;\n handleInput: (e: React.SyntheticEvent<HTMLInputElement> | Event) => void;\n handleKeydown: (e: React.KeyboardEvent<HTMLInputElement> | KeyboardEvent) => void;\n handlePaste: (e: React.ClipboardEvent<HTMLInputElement> | ClipboardEvent) => void;\n}\n\n// Extract native event from React synthetic event, or return event as-is\nfunction getNativeEvent(e: React.SyntheticEvent | Event): Event {\n return 'nativeEvent' in e ? e.nativeEvent : e;\n}\n\nconst HINT_DELAY_INPUT = 500;\nconst HINT_DELAY_ACTION = 300;\n\n/**\n * React hook that provides event handlers for phone input masking.\n * Handlers are compatible with both native events and React synthetic events.\n */\nexport function useInputHandlers(options: UseInputHandlersOptions): UseInputHandlersReturn {\n const { formatter, digits, inactive, onChange, scheduleValidationHint } = options;\n\n // Helper: Schedule caret position update\n const scheduleCaretUpdate = useCallback(\n (el: HTMLInputElement | null, digitIndex: number) => {\n setTimeout(() => {\n if (!el) return;\n const pos = formatter.getCaretPosition(digitIndex);\n setCaret(el, pos);\n }, 0);\n },\n [formatter]\n );\n\n const handleBeforeInput = useCallback((e: React.SyntheticEvent<HTMLInputElement> | InputEvent) => {\n processBeforeInput(getNativeEvent(e) as InputEvent);\n }, []);\n\n const handleInput = useCallback(\n (e: React.SyntheticEvent<HTMLInputElement> | Event) => {\n if (inactive) return;\n\n const evt = getNativeEvent(e);\n const result = processInput(evt, { formatter });\n\n if (!result) return;\n\n onChange?.(result.newDigits);\n scheduleCaretUpdate(evt.target as HTMLInputElement | null, result.caretDigitIndex);\n scheduleValidationHint?.(HINT_DELAY_INPUT);\n },\n [inactive, formatter, onChange, scheduleCaretUpdate, scheduleValidationHint]\n );\n\n const handleKeydown = useCallback(\n (e: React.KeyboardEvent<HTMLInputElement> | KeyboardEvent) => {\n if (inactive) return;\n\n const evt = getNativeEvent(e) as KeyboardEvent;\n const result = processKeydown(evt, { digits, formatter });\n\n if (!result) return;\n\n onChange?.(result.newDigits);\n scheduleCaretUpdate(evt.target as HTMLInputElement | null, result.caretDigitIndex);\n scheduleValidationHint?.(HINT_DELAY_ACTION);\n },\n [inactive, digits, formatter, onChange, scheduleCaretUpdate, scheduleValidationHint]\n );\n\n const handlePaste = useCallback(\n (e: React.ClipboardEvent<HTMLInputElement> | ClipboardEvent) => {\n if (inactive) return;\n\n const evt = getNativeEvent(e) as ClipboardEvent;\n const result = processPaste(evt, { digits, formatter });\n\n if (!result) return;\n\n onChange?.(result.newDigits);\n scheduleCaretUpdate(evt.target as HTMLInputElement | null, result.caretDigitIndex);\n scheduleValidationHint?.(HINT_DELAY_ACTION);\n },\n [inactive, digits, formatter, onChange, scheduleCaretUpdate, scheduleValidationHint]\n );\n\n return {\n handleBeforeInput,\n handleInput,\n handleKeydown,\n handlePaste\n };\n}\n","import React, { useState, useCallback, useMemo, useEffect, type RefObject, type CSSProperties } from 'react';\n\nimport { MasksFull, filterCountries, type CountryKey } from '@desource/phone-mask';\n\ninterface UseCountrySelectOptions {\n rootRef: RefObject<HTMLDivElement | null>;\n dropdownRef: RefObject<HTMLDivElement | null>;\n searchRef: RefObject<HTMLInputElement | null>;\n selectorRef: RefObject<HTMLDivElement | null>;\n locale: string;\n onSelectCountry: (code: CountryKey) => void;\n countryOption?: string;\n inactive?: boolean;\n onAfterSelect?: () => void;\n}\n\nexport function useCountrySelector({\n rootRef,\n dropdownRef,\n searchRef,\n selectorRef,\n locale,\n countryOption,\n inactive,\n onSelectCountry,\n onAfterSelect\n}: UseCountrySelectOptions) {\n const [search, setSearch] = useState('');\n const [dropdownOpen, setDropdownOpen] = useState(false);\n const [dropdownStyle, setDropdownStyle] = useState<CSSProperties>({});\n const [isClosing, setIsClosing] = useState(false);\n const [focusedIndex, setFocusedIndex] = useState(0);\n\n const countries = useMemo(() => MasksFull(locale), [locale]);\n const filteredCountries = useMemo(() => filterCountries(countries, search), [countries, search]);\n const hasDropdown = useMemo(() => !countryOption && countries.length > 1, [countryOption, countries]);\n\n const focusSearch = useCallback(() => {\n setTimeout(() => searchRef.current?.focus({ preventScroll: true }), 0);\n }, []);\n\n // Close dropdown with animation — actual DOM removal happens in handleDropdownAnimationEnd\n const closeDropdown = useCallback(() => {\n if (!dropdownOpen) return;\n setIsClosing(true);\n }, [dropdownOpen]);\n\n const openDropdown = useCallback(() => {\n setIsClosing(false);\n setDropdownOpen(true);\n setFocusedIndex(0);\n focusSearch();\n }, [focusSearch]);\n\n // Called via onAnimationEnd on the dropdown element\n const handleDropdownAnimationEnd = useCallback(() => {\n if (!isClosing) return;\n setDropdownOpen(false);\n setIsClosing(false);\n }, [isClosing]);\n\n const toggleDropdown = useCallback(() => {\n if (inactive || !hasDropdown) return;\n if (dropdownOpen) {\n closeDropdown();\n } else {\n openDropdown();\n }\n }, [inactive, dropdownOpen, hasDropdown, openDropdown, closeDropdown]);\n\n const selectCountry = useCallback(\n (code: CountryKey) => {\n onSelectCountry(code);\n closeDropdown();\n setSearch('');\n setFocusedIndex(0);\n onAfterSelect?.();\n },\n [onSelectCountry, closeDropdown, onAfterSelect]\n );\n\n const handleSearchChange = useCallback((e: React.ChangeEvent<HTMLInputElement>) => {\n setSearch(e.target.value);\n setFocusedIndex(0);\n }, []);\n\n // Close dropdown on outside click\n const onDocClick = useCallback(\n (ev: Event) => {\n const target = ev.target as Node | null;\n const dropdownEl = dropdownRef.current;\n const selectorEl = selectorRef.current;\n if (!target) return;\n if (dropdownEl?.contains(target)) return;\n if (selectorEl?.contains(target)) return;\n closeDropdown();\n },\n [closeDropdown]\n );\n\n // Dropdown positioning\n const positionDropdown = useCallback((e?: Event | UIEvent) => {\n if (e?.type === 'scroll' && e.target && dropdownRef.current?.contains(e.target as Node)) return;\n if (!rootRef?.current) return;\n\n const rect = rootRef.current.getBoundingClientRect();\n\n setDropdownStyle({\n top: `${rect.bottom + window.scrollY + 8}px`,\n left: `${rect.left + window.scrollX}px`,\n width: `${rect.width}px`\n });\n }, []);\n\n const scrollFocusedIntoView = useCallback((index: number) => {\n setTimeout(() => {\n const list = dropdownRef.current?.lastElementChild;\n const option = list?.children[index];\n if (!list || !option) return;\n\n const listRect = list.getBoundingClientRect();\n const optionRect = option.getBoundingClientRect();\n\n let scrollAmount = 0;\n\n if (optionRect.top < listRect.top) {\n scrollAmount = list.scrollTop - (listRect.top - optionRect.top);\n } else if (optionRect.bottom > listRect.bottom) {\n scrollAmount = list.scrollTop + (optionRect.bottom - listRect.bottom);\n } else {\n return;\n }\n\n list.scrollTo({ top: scrollAmount, behavior: 'smooth' });\n }, 0);\n }, []);\n\n // Keyboard navigation for dropdown\n const handleSearchKeydown = useCallback(\n (e: React.KeyboardEvent) => {\n if (e.key === 'ArrowDown') {\n e.preventDefault();\n setFocusedIndex((i) => {\n const next = Math.min(i + 1, filteredCountries.length - 1);\n scrollFocusedIntoView(next);\n return next;\n });\n } else if (e.key === 'ArrowUp') {\n e.preventDefault();\n setFocusedIndex((i) => {\n const prev = Math.max(i - 1, 0);\n scrollFocusedIntoView(prev);\n return prev;\n });\n } else if (e.key === 'Enter' && filteredCountries[focusedIndex]) {\n e.preventDefault();\n selectCountry(filteredCountries[focusedIndex]!.id);\n } else if (e.key === 'Escape') {\n closeDropdown();\n }\n },\n [filteredCountries, focusedIndex, selectCountry, closeDropdown, scrollFocusedIntoView]\n );\n\n useEffect(() => {\n if (!hasDropdown && dropdownOpen) {\n closeDropdown();\n }\n }, [hasDropdown, dropdownOpen, closeDropdown]);\n\n useEffect(() => {\n if (!dropdownOpen) return;\n\n positionDropdown();\n\n window.addEventListener('resize', positionDropdown);\n window.addEventListener('scroll', positionDropdown, true);\n window.addEventListener('click', onDocClick, true);\n\n return () => {\n window.removeEventListener('resize', positionDropdown);\n window.removeEventListener('scroll', positionDropdown, true);\n window.removeEventListener('click', onDocClick, true);\n };\n }, [dropdownOpen, positionDropdown, onDocClick]);\n\n return {\n // State\n dropdownOpen,\n isClosing,\n search,\n focusedIndex,\n dropdownStyle,\n // Derived\n filteredCountries,\n hasDropdown,\n // Actions\n openDropdown,\n closeDropdown,\n toggleDropdown,\n selectCountry,\n setFocusedIndex,\n handleSearchChange,\n handleSearchKeydown,\n handleDropdownAnimationEnd\n };\n}\n","import { useState, useCallback } from 'react';\nimport { useTimer } from './useTimer';\n\nexport function useClipboard(delay = 1_800) {\n const [copied, setCopied] = useState(false);\n const [isCopying, setIsCopying] = useState(false);\n const copyTimer = useTimer();\n\n const copy = useCallback(\n async (text: string) => {\n if (isCopying) return false;\n const trimmedText = text.trim();\n if (!trimmedText) return false;\n setIsCopying(true);\n try {\n await navigator.clipboard.writeText(trimmedText);\n setCopied(true);\n copyTimer.set(() => {\n setCopied(false);\n }, delay);\n return true;\n } catch (err) {\n console.warn('Copy failed', err);\n return false;\n } finally {\n setIsCopying(false);\n }\n },\n [isCopying, copyTimer]\n );\n\n return { copied, isCopying, copy };\n}\n","import { useMemo, useCallback, type RefObject } from 'react';\nimport { useClipboard } from '../utility/useClipboard';\nimport { useTimer } from '../utility/useTimer';\n\ninterface UseCopyActionOptions {\n fullFormatted: string;\n liveRef?: RefObject<HTMLElement | null>;\n onCopy?: (value: string) => void;\n}\n\nconst DELAY = 1_800;\n\nexport function useCopyAction({ liveRef, fullFormatted, onCopy }: UseCopyActionOptions) {\n const liveTimer = useTimer();\n const { copied, copy } = useClipboard(DELAY);\n\n const copyAriaLabel = useMemo(() => (copied ? 'Copied' : `Copy ${fullFormatted}`), [copied, fullFormatted]);\n const copyButtonTitle = useMemo(() => (copied ? 'Copied' : 'Copy phone number'), [copied]);\n\n const announceToScreenReader = useCallback(\n (message: string) => {\n if (!liveRef?.current) return;\n liveRef.current.textContent = message;\n liveTimer.set(() => {\n if (liveRef.current) liveRef.current.textContent = '';\n }, DELAY);\n },\n [liveRef, liveTimer]\n );\n\n const onCopyClick = useCallback(async () => {\n const valueToCopy = fullFormatted.trim();\n const success = await copy(valueToCopy);\n if (success) {\n onCopy?.(valueToCopy);\n announceToScreenReader('Phone number copied to clipboard');\n }\n }, [fullFormatted, copy, onCopy, announceToScreenReader]);\n\n return {\n copied,\n copyAriaLabel,\n copyButtonTitle,\n onCopyClick\n };\n}\n","import { useEffect, useState, useMemo } from 'react';\n\nimport type { Theme } from '../../types';\n\ninterface UseThemeOptions {\n theme: Theme;\n}\n\nexport function useTheme({ theme }: UseThemeOptions) {\n const [systemDark, setSystemDark] = useState(false);\n\n const themeClass = useMemo(() => {\n return theme !== 'auto' ? `theme-${theme}` : systemDark ? 'theme-dark' : 'theme-light';\n }, [theme, systemDark]);\n\n // Track system color scheme reactively so theme:'auto' responds to OS changes at runtime\n useEffect(() => {\n if (typeof window === 'undefined') return;\n const mq = window.matchMedia?.('(prefers-color-scheme: dark)') ?? null;\n if (!mq) return;\n setSystemDark(mq.matches);\n\n const handler = (e: MediaQueryListEvent) => {\n setSystemDark(e.matches);\n };\n\n mq.addEventListener('change', handler);\n\n return () => mq.removeEventListener('change', handler);\n }, []);\n\n return {\n themeClass\n };\n}\n","import React, {\n forwardRef,\n useImperativeHandle,\n useRef,\n useCallback,\n type CSSProperties,\n type ForwardedRef\n} from 'react';\nimport { createPortal } from 'react-dom';\nimport { useFormatter } from '../hooks/internal/useFormatter';\nimport { useCountry } from '../hooks/internal/useCountry';\nimport { useValidationHint } from '../hooks/internal/useValidationHint';\nimport { useInputHandlers } from '../hooks/internal/useInputHandlers';\nimport { useCountrySelector } from '../hooks/internal/useCountrySelector';\nimport { useCopyAction } from '../hooks/internal/useCopyAction';\nimport { useTheme } from '../hooks/internal/useTheme';\n\nimport type { PhoneInputProps, PhoneInputRef } from '../types';\n\nconst PhoneInputInner = (props: PhoneInputProps, ref: ForwardedRef<PhoneInputRef>) => {\n const {\n value = '',\n country: propCountry,\n detect = true,\n locale: propLocale,\n size = 'normal',\n theme = 'auto',\n disabled = false,\n readonly = false,\n showCopy = true,\n showClear = false,\n withValidity = true,\n searchPlaceholder = 'Search country or code...',\n noResultsText = 'No countries found',\n clearButtonLabel = 'Clear phone number',\n dropdownClass = '',\n disableDefaultStyles = false,\n onChange,\n onPhoneChange,\n onCountryChange,\n onValidationChange,\n onFocus,\n onBlur,\n onCopy,\n onClear,\n renderActionsBefore,\n renderFlag,\n renderCopySvg,\n renderClearSvg\n } = props;\n\n const { country, setCountry, locale } = useCountry({\n country: propCountry,\n locale: propLocale,\n detect,\n onCountryChange\n });\n\n const {\n digits,\n formatter,\n displayPlaceholder,\n displayValue,\n full,\n fullFormatted,\n isComplete,\n isEmpty,\n shouldShowWarn\n } = useFormatter({\n country,\n value,\n onChange,\n onPhoneChange,\n onValidationChange\n });\n\n const { showValidationHint, clearValidationHint, scheduleValidationHint } = useValidationHint();\n\n const telRef = useRef<HTMLInputElement>(null);\n const rootRef = useRef<HTMLDivElement>(null);\n const liveRef = useRef<HTMLDivElement>(null);\n const dropdownRef = useRef<HTMLDivElement>(null);\n const searchRef = useRef<HTMLInputElement>(null);\n const selectorRef = useRef<HTMLDivElement>(null);\n\n const inactive = disabled || readonly;\n const incomplete = showValidationHint && shouldShowWarn;\n\n const showCopyButton = showCopy && !isEmpty && !disabled;\n const showClearButton = showClear && !isEmpty && !inactive;\n\n const {\n copied,\n copyAriaLabel,\n copyButtonTitle,\n onCopyClick: handleCopyClick\n } = useCopyAction({\n liveRef,\n fullFormatted,\n onCopy\n });\n\n const focusInput = useCallback(() => {\n setTimeout(() => telRef.current?.focus(), 0);\n }, []);\n\n const { handleBeforeInput, handleInput, handleKeydown, handlePaste } = useInputHandlers({\n formatter,\n digits,\n inactive,\n onChange,\n scheduleValidationHint\n });\n\n const {\n dropdownOpen,\n isClosing,\n search,\n focusedIndex,\n dropdownStyle,\n filteredCountries,\n hasDropdown,\n closeDropdown,\n toggleDropdown,\n selectCountry,\n setFocusedIndex,\n handleSearchChange,\n handleSearchKeydown,\n handleDropdownAnimationEnd\n } = useCountrySelector({\n rootRef,\n dropdownRef,\n searchRef,\n selectorRef,\n locale,\n inactive,\n countryOption: propCountry,\n onSelectCountry: setCountry,\n onAfterSelect: focusInput\n });\n\n // Input focus behavior (close dropdown, clear validation timer, and call onFocus callback)\n const handleFocus = useCallback(\n (e: React.FocusEvent<HTMLInputElement>) => {\n clearValidationHint(false);\n closeDropdown();\n onFocus?.(e);\n },\n [onFocus, closeDropdown, clearValidationHint]\n );\n\n const clear = useCallback(() => {\n onChange?.('');\n clearValidationHint();\n onClear?.();\n }, [onChange, onClear, clearValidationHint]);\n\n // Clear functionality\n const handleClearClick = useCallback(() => {\n clear();\n focusInput();\n }, [clear, focusInput]);\n\n // Imperative handle\n useImperativeHandle(\n ref,\n () => ({\n focus: focusInput,\n blur: () => telRef.current?.blur(),\n clear,\n selectCountry,\n getFullNumber: () => full,\n getFullFormattedNumber: () => fullFormatted,\n getDigits: () => digits,\n isValid: () => isComplete,\n isComplete: () => isComplete\n }),\n [focusInput, selectCountry, full, fullFormatted, digits, isComplete, clear]\n );\n\n const { themeClass } = useTheme({ theme });\n\n const rootClasses = [\n 'phone-input',\n `size-${size}`,\n themeClass,\n disabled && 'is-disabled',\n readonly && 'is-readonly',\n disableDefaultStyles && 'is-unstyled',\n withValidity && incomplete && 'is-incomplete',\n withValidity && isComplete && 'is-complete'\n ]\n .filter(Boolean)\n .join(' ');\n\n const actionsCount = +showCopyButton + +showClearButton + (renderActionsBefore ? 1 : 0);\n\n return (\n <>\n <div\n ref={rootRef}\n className={rootClasses}\n style={{ '--pi-actions-count': actionsCount } as CSSProperties}\n role=\"group\"\n aria-label=\"Phone input with country selector\"\n >\n {/* Country Selector */}\n <div className=\"pi-selector\" ref={selectorRef}>\n <button\n type=\"button\"\n className={`pi-selector-btn ${!hasDropdown || readonly ? 'no-dropdown' : ''}`}\n disabled={disabled}\n tabIndex={inactive || !hasDropdown ? -1 : undefined}\n aria-label={`Selected country: ${country.name}`}\n aria-expanded={dropdownOpen}\n aria-haspopup={hasDropdown ? 'listbox' : undefined}\n onClick={toggleDropdown}\n >\n <span className=\"pi-flag\" role=\"img\" aria-label={`${country.name} flag`}>\n {renderFlag ? renderFlag(country) : country.flag}\n </span>\n <span className=\"pi-code\">{country.code}</span>\n {!inactive && hasDropdown && (\n <svg\n className={`pi-chevron ${dropdownOpen ? 'is-open' : ''}`}\n width=\"12\"\n height=\"12\"\n viewBox=\"0 0 12 12\"\n fill=\"none\"\n aria-hidden=\"true\"\n >\n <path\n d=\"M2.5 4.5L6 8L9.5 4.5\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n )}\n </button>\n </div>\n\n {/* Input Container */}\n <div className=\"pi-input-wrap\">\n <input\n ref={telRef}\n type=\"tel\"\n inputMode=\"tel\"\n autoComplete=\"tel-national\"\n autoCorrect=\"off\"\n autoCapitalize=\"off\"\n spellCheck={false}\n className=\"pi-input\"\n placeholder={displayPlaceholder}\n value={displayValue}\n disabled={disabled}\n readOnly={readonly}\n aria-invalid={incomplete}\n onInput={handleInput}\n onBeforeInput={handleBeforeInput}\n onKeyDown={handleKeydown}\n onPaste={handlePaste}\n onFocus={handleFocus}\n onBlur={onBlur}\n />\n\n {/* Action Buttons */}\n <div className=\"pi-actions\" role=\"toolbar\" aria-label=\"Phone input actions\">\n {renderActionsBefore && renderActionsBefore()}\n\n {showCopyButton && (\n <button\n type=\"button\"\n className={`pi-btn pi-btn-copy ${copied ? 'is-copied' : ''}`}\n aria-label={copyAriaLabel}\n title={copyButtonTitle}\n onClick={handleCopyClick}\n >\n {renderCopySvg ? (\n renderCopySvg(copied)\n ) : copied ? (\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" aria-hidden=\"true\">\n <path d=\"M6.5 11.5L3 8L4.06 6.94L6.5 9.38L11.94 3.94L13 5L6.5 11.5Z\" fill=\"currentColor\" />\n </svg>\n ) : (\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" aria-hidden=\"true\">\n <path\n d=\"M13.5 5.5V13.5H5.5V5.5H13.5ZM13.5 4H5.5C4.67 4 4 4.67 4 5.5V13.5C4 14.33 4.67 15 5.5 15H13.5C14.33 15 15 14.33 15 13.5V5.5C15 4.67 14.33 4 13.5 4ZM10.5 1H2.5V11H4V2.5H10.5V1Z\"\n fill=\"currentColor\"\n />\n </svg>\n )}\n </button>\n )}\n\n {showClearButton && (\n <button\n type=\"button\"\n className=\"pi-btn pi-btn-clear\"\n aria-label={clearButtonLabel}\n title={clearButtonLabel}\n onClick={handleClearClick}\n >\n {renderClearSvg ? (\n renderClearSvg()\n ) : (\n <svg width=\"11\" height=\"11\" viewBox=\"0 0 14 14\" fill=\"none\" aria-hidden=\"true\">\n <path\n d=\"M14 1.41L12.59 0L7 5.59L1.41 0L0 1.41L5.59 7L0 12.59L1.41 14L7 8.41L12.59 14L14 12.59L8.41 7L14 1.41Z\"\n fill=\"currentColor\"\n />\n </svg>\n )}\n </button>\n )}\n </div>\n </div>\n </div>\n\n {/* Dropdown */}\n {dropdownOpen &&\n typeof document !== 'undefined' &&\n createPortal(\n <div\n ref={dropdownRef}\n className={`phone-dropdown ${dropdownClass} ${themeClass} ${isClosing ? 'is-closing' : ''}`}\n style={dropdownStyle}\n role=\"dialog\"\n aria-modal=\"false\"\n aria-label=\"Select country\"\n onAnimationEnd={handleDropdownAnimationEnd}\n >\n <div className=\"pi-search-wrap\">\n <input\n ref={searchRef}\n type=\"search\"\n className=\"pi-search\"\n aria-label=\"Search countries\"\n placeholder={searchPlaceholder}\n value={search}\n onChange={handleSearchChange}\n onKeyDown={handleSearchKeydown}\n />\n </div>\n <ul className=\"pi-options\" role=\"listbox\" aria-activedescendant={`option-${focusedIndex}`} tabIndex={-1}>\n {filteredCountries.length > 0 ? (\n filteredCountries.map((c, idx) => (\n <li\n key={c.id}\n id={`option-${idx}`}\n role=\"option\"\n className={`pi-option ${idx === focusedIndex ? 'is-focused' : ''} ${\n c.id === country.id ? 'is-selected' : ''\n }`}\n aria-selected={c.id === country.id}\n title={c.name}\n onClick={() => selectCountry(c.id)}\n onMouseEnter={() => setFocusedIndex(idx)}\n >\n <span className=\"pi-flag\" role=\"img\" aria-label={`${c.name} flag`}>\n {renderFlag ? renderFlag(c) : c.flag}\n </span>\n <span className=\"pi-opt-name\">{c.name}</span>\n <span className=\"pi-opt-code\">{c.code}</span>\n </li>\n ))\n ) : (\n <li className=\"pi-empty\">{noResultsText}</li>\n )}\n </ul>\n </div>,\n document.body\n )}\n\n {/* Screen reader announcements */}\n <div ref={liveRef} className=\"sr-only\" role=\"status\" aria-live=\"polite\" aria-atomic=\"true\" />\n </>\n );\n};\n\nexport const PhoneInput = forwardRef<PhoneInputRef, PhoneInputProps>(PhoneInputInner);\n\nPhoneInput.displayName = 'PhoneInput';\n","import { useRef, useEffect, useCallback } from 'react';\nimport { useFormatter } from './internal/useFormatter';\nimport { useCountry } from './internal/useCountry';\nimport { useInputHandlers } from './internal/useInputHandlers';\n\nimport type { UsePhoneMaskOptions, UsePhoneMaskReturn } from '../types';\n\n/**\n * React hook for phone number masking.\n * Provides low-level phone masking functionality for custom input implementations.\n * Works in controlled mode — caller manages value state via onChange callback.\n */\nexport function usePhoneMask(options: UsePhoneMaskOptions): UsePhoneMaskReturn {\n const inputRef = useRef<HTMLInputElement>(null);\n\n const { country, setCountry } = useCountry({\n country: options.country,\n locale: options.locale,\n detect: options.detect,\n onCountryChange: options.onCountryChange\n });\n\n const {\n digits,\n formatter,\n displayPlaceholder,\n displayValue,\n full,\n fullFormatted,\n isComplete,\n isEmpty,\n shouldShowWarn\n } = useFormatter({\n country,\n value: options.value,\n onChange: options.onChange,\n onPhoneChange: options.onPhoneChange\n });\n\n // Use consolidated input handlers\n const { handleBeforeInput, handleInput, handleKeydown, handlePaste } = useInputHandlers({\n formatter,\n digits,\n onChange: options.onChange\n });\n\n // after mount, set input type to tel for better experience\n useEffect(() => {\n const el = inputRef.current;\n if (!el) return;\n el.setAttribute('type', 'tel');\n el.setAttribute('inputmode', 'tel');\n }, []);\n\n // Update display when digits or placeholder changes\n useEffect(() => {\n const el = inputRef.current;\n if (!el) return;\n\n el.value = displayValue;\n\n el.setAttribute('placeholder', displayPlaceholder);\n }, [displayValue, displayPlaceholder]);\n\n // Attach event listeners\n useEffect(() => {\n const el = inputRef.current;\n if (!el) return;\n\n const beforeInputHandler = handleBeforeInput;\n const inputHandler = handleInput;\n const keydownHandler = handleKeydown;\n const pasteHandler = handlePaste;\n\n el.addEventListener('beforeinput', beforeInputHandler);\n el.addEventListener('input', inputHandler);\n el.addEventListener('keydown', keydownHandler);\n el.addEventListener('paste', pasteHandler);\n\n return () => {\n el.removeEventListener('beforeinput', beforeInputHandler);\n el.removeEventListener('input', inputHandler);\n el.removeEventListener('keydown', keydownHandler);\n el.removeEventListener('paste', pasteHandler);\n };\n }, [handleBeforeInput, handleInput, handleKeydown, handlePaste]);\n\n const clear = useCallback(() => {\n options.onChange('');\n }, [options.onChange]);\n\n return {\n ref: inputRef,\n digits,\n full,\n fullFormatted,\n isComplete,\n isEmpty,\n shouldShowWarn,\n country,\n setCountry,\n clear\n };\n}\n","import {\n getFlagEmoji,\n countPlaceholders,\n formatDigitsWithMap,\n pickMaskVariant,\n removeCountryCodePrefix,\n toArray\n} from '@desource/phone-mask';\n\nexport { PhoneInput } from './components/PhoneInput';\nexport { usePhoneMask } from './hooks/usePhoneMask';\n\nexport type {\n PhoneInputProps,\n PhoneInputRef,\n PhoneNumber,\n UsePhoneMaskOptions,\n UsePhoneMaskReturn,\n Size as PhoneInputSize,\n Theme as PhoneInputTheme\n} from './types';\n\nexport type {\n CountryKey as PCountryKey,\n MaskBase as PMaskBase,\n MaskBaseMap as PMaskBaseMap,\n Mask as PMask,\n MaskMap as PMaskMap,\n MaskWithFlag as PMaskWithFlag,\n MaskWithFlagMap as PMaskWithFlagMap,\n MaskFull as PMaskFull,\n MaskFullMap as PMaskFullMap\n} from '@desource/phone-mask';\n\nexport const PMaskHelpers = {\n getFlagEmoji,\n countPlaceholders,\n formatDigitsWithMap,\n pickMaskVariant,\n removeCountryCodePrefix,\n toArray\n};\n"],"names":["M","t","countryCodeEmoji","o","e","n","getDisplayNames","s","divideMask","getCodeAndMask","r","MasksFullMap","a","d","MasksFull","f","k","getNavigatorLang","detectCountryFromLocale","hasCountry","getCountry","parseCountryCode","toArray","countPlaceholders","removeCountryCodePrefix","pickMaskVariant","formatDigitsWithMap","filterCountries","c","i","extractDigits","getSelection","setCaret","processBeforeInput","processInput","processKeydown","g","processPaste","l","createPhoneFormatter","getMask","p","detectCountryFromGeoIP","detectByGeoIp","useFormatter","country","value","onChange","onPhoneChange","onValidationChange","formatter","useMemo","maxDigits","digits","displayPlaceholder","displayValue","full","fullFormatted","isComplete","isEmpty","shouldShowWarn","phoneData","useEffect","useCountry","countryOption","localeOption","detect","onCountryChange","locale","countryCode","setCountryCode","useState","shouldDetect","setCountry","useCallback","code","detectCountry","geoCountry","localeCountry","useTimer","timerRef","useRef","clear","set","callback","delay","useValidationHint","showValidationHint","setShowValidationHint","validationTimer","clearValidationHint","hideHint","scheduleValidationHint","getNativeEvent","HINT_DELAY_INPUT","HINT_DELAY_ACTION","useInputHandlers","options","inactive","scheduleCaretUpdate","el","digitIndex","pos","handleBeforeInput","handleInput","evt","result","handleKeydown","handlePaste","useCountrySelector","rootRef","dropdownRef","searchRef","selectorRef","onSelectCountry","onAfterSelect","search","setSearch","dropdownOpen","setDropdownOpen","dropdownStyle","setDropdownStyle","isClosing","setIsClosing","focusedIndex","setFocusedIndex","countries","filteredCountries","hasDropdown","focusSearch","closeDropdown","openDropdown","handleDropdownAnimationEnd","toggleDropdown","selectCountry","handleSearchChange","onDocClick","ev","target","dropdownEl","selectorEl","positionDropdown","rect","scrollFocusedIntoView","index","list","option","listRect","optionRect","scrollAmount","handleSearchKeydown","next","prev","useClipboard","copied","setCopied","isCopying","setIsCopying","copyTimer","copy","text","trimmedText","err","DELAY","useCopyAction","liveRef","onCopy","liveTimer","copyAriaLabel","copyButtonTitle","announceToScreenReader","message","onCopyClick","valueToCopy","useTheme","theme","systemDark","setSystemDark","themeClass","mq","handler","PhoneInputInner","props","ref","propCountry","propLocale","size","disabled","readonly","showCopy","showClear","withValidity","searchPlaceholder","noResultsText","clearButtonLabel","dropdownClass","disableDefaultStyles","onFocus","onBlur","onClear","renderActionsBefore","renderFlag","renderCopySvg","renderClearSvg","telRef","incomplete","showCopyButton","showClearButton","handleCopyClick","focusInput","handleFocus","handleClearClick","useImperativeHandle","rootClasses","actionsCount","jsxs","Fragment","jsx","createPortal","idx","PhoneInput","forwardRef","usePhoneMask","inputRef","beforeInputHandler","inputHandler","keydownHandler","pasteHandler","PMaskHelpers","getFlagEmoji"],"mappings":"gKAAMA,GAAE,CAAC,GAAG,aAAa,GAAG,CAAC,eAAe,gBAAgB,EAAE,GAAG,CAAC,kBAAkB,mBAAmB,kBAAkB,kBAAkB,EAAE,GAAG,kBAAkB,GAAG,kBAAkB,GAAG,kBAAkB,GAAG,CAAC,kBAAkB,mBAAmB,gBAAgB,eAAe,gBAAgB,EAAE,GAAG,CAAC,iBAAiB,iBAAiB,EAAE,GAAG,mBAAmB,GAAG,CAAC,mBAAmB,qBAAqB,kBAAkB,EAAE,GAAG,kBAAkB,GAAG,CAAC,kBAAkB,gBAAgB,EAAE,GAAG,CAAC,kBAAkB,kBAAkB,mBAAmB,eAAe,EAAE,GAAG,gBAAgB,GAAG,CAAC,kBAAkB,iBAAiB,EAAE,GAAG,CAAC,oBAAoB,mBAAmB,EAAE,GAAG,CAAC,kBAAkB,iBAAiB,EAAE,GAAG,kBAAkB,GAAG,CAAC,iBAAiB,mBAAmB,kBAAkB,EAAE,GAAG,CAAC,kBAAkB,mBAAmB,gBAAgB,EAAE,GAAG,mBAAmB,GAAG,CAAC,iBAAiB,kBAAkB,iBAAiB,EAAE,GAAG,iBAAiB,GAAG,mBAAmB,GAAG,CAAC,sBAAsB,kBAAkB,EAAE,GAAG,oBAAoB,GAAG,kBAAkB,GAAG,gBAAgB,GAAG,CAAC,iBAAiB,gBAAgB,kBAAkB,EAAE,GAAG,gBAAgB,GAAG,CAAC,mBAAmB,oBAAoB,kBAAkB,eAAe,EAAE,GAAG,kBAAkB,GAAG,CAAC,iBAAiB,kBAAkB,EAAE,GAAG,CAAC,gBAAgB,kBAAkB,oBAAoB,eAAe,EAAE,GAAG,CAAC,oBAAoB,oBAAoB,mBAAmB,EAAE,GAAG,CAAC,gBAAgB,qBAAqB,EAAE,GAAG,kBAAkB,GAAG,CAAC,kBAAkB,kBAAkB,kBAAkB,EAAE,GAAG,CAAC,gBAAgB,kBAAkB,EAAE,GAAG,mBAAmB,GAAG,CAAC,mBAAmB,kBAAkB,EAAE,GAAG,CAAC,mBAAmB,iBAAiB,EAAE,GAAG,CAAC,qBAAqB,oBAAoB,EAAE,GAAG,cAAc,GAAG,CAAC,kBAAkB,kBAAkB,mBAAmB,iBAAiB,EAAE,GAAG,CAAC,qBAAqB,kBAAkB,EAAE,GAAG,CAAC,mBAAmB,oBAAoB,mBAAmB,cAAc,EAAE,GAAG,CAAC,kBAAkB,mBAAmB,EAAE,GAAG,CAAC,iBAAiB,mBAAmB,EAAE,GAAG,CAAC,gBAAgB,iBAAiB,EAAE,GAAG,iBAAiB,GAAG,CAAC,kBAAkB,eAAe,EAAE,GAAG,CAAC,kBAAkB,kBAAkB,kBAAkB,EAAE,GAAG,iBAAiB,GAAG,mBAAmB,GAAG,CAAC,gBAAgB,mBAAmB,qBAAqB,mBAAmB,iBAAiB,oBAAoB,cAAc,EAAE,GAAG,mBAAmB,GAAG,kBAAkB,GAAG,kBAAkB,GAAG,kBAAkB,GAAG,CAAC,mBAAmB,oBAAoB,mBAAmB,EAAE,GAAG,CAAC,kBAAkB,mBAAmB,oBAAoB,EAAE,GAAG,CAAC,gBAAgB,iBAAiB,iBAAiB,EAAE,GAAG,CAAC,iBAAiB,kBAAkB,kBAAkB,EAAE,GAAG,CAAC,qBAAqB,iBAAiB,EAAE,GAAG,iBAAiB,GAAG,CAAC,mBAAmB,iBAAiB,EAAE,GAAG,mBAAmB,GAAG,CAAC,kBAAkB,iBAAiB,EAAE,GAAG,CAAC,gBAAgB,oBAAoB,EAAE,GAAG,aAAa,GAAG,gBAAgB,GAAG,cAAc,GAAG,CAAC,oBAAoB,kBAAkB,EAAE,GAAG,mBAAmB,GAAG,CAAC,mBAAmB,kBAAkB,kBAAkB,EAAE,GAAG,kBAAkB,GAAG,CAAC,oBAAoB,oBAAoB,kBAAkB,EAAE,GAAG,oBAAoB,GAAG,CAAC,kBAAkB,mBAAmB,kBAAkB,EAAE,GAAG,CAAC,mBAAmB,gBAAgB,EAAE,GAAG,CAAC,iBAAiB,eAAe,EAAE,GAAG,gBAAgB,GAAG,gBAAgB,GAAG,CAAC,mBAAmB,mBAAmB,EAAE,GAAG,oBAAoB,GAAG,CAAC,mBAAmB,iBAAiB,EAAE,GAAG,CAAC,mBAAmB,kBAAkB,EAAE,GAAG,CAAC,iBAAiB,oBAAoB,EAAE,GAAG,kBAAkB,GAAG,CAAC,mBAAmB,eAAe,EAAE,GAAG,gBAAgB,GAAG,CAAC,iBAAiB,mBAAmB,qBAAqB,EAAE,GAAG,CAAC,iBAAiB,kBAAkB,EAAE,GAAG,CAAC,kBAAkB,mBAAmB,mBAAmB,iBAAiB,iBAAiB,EAAE,GAAG,kBAAkB,GAAG,CAAC,iBAAiB,kBAAkB,gBAAgB,EAAE,GAAG,CAAC,iBAAiB,kBAAkB,kBAAkB,oBAAoB,kBAAkB,EAAE,GAAG,CAAC,gBAAgB,mBAAmB,oBAAoB,kBAAkB,EAAE,GAAG,CAAC,kBAAkB,mBAAmB,oBAAoB,EAAE,GAAG,CAAC,kBAAkB,mBAAmB,kBAAkB,EAAE,GAAG,CAAC,kBAAkB,mBAAmB,uBAAuB,mBAAmB,EAAE,GAAG,gBAAgB,GAAG,CAAC,kBAAkB,mBAAmB,EAAE,GAAG,CAAC,mBAAmB,kBAAkB,EAAE,GAAG,gBAAgB,GAAG,CAAC,mBAAmB,mBAAmB,iBAAiB,EAAE,GAAG,CAAC,kBAAkB,mBAAmB,kBAAkB,EAAE,GAAG,kBAAkB,GAAG,CAAC,kBAAkB,mBAAmB,iBAAiB,iBAAiB,EAAE,GAAG,CAAC,kBAAkB,mBAAmB,kBAAkB,iBAAiB,EAAE,GAAG,CAAC,kBAAkB,kBAAkB,kBAAkB,EAAE,GAAG,CAAC,mBAAmB,mBAAmB,EAAE,GAAG,CAAC,kBAAkB,mBAAmB,EAAE,GAAG,CAAC,aAAa,eAAe,EAAE,GAAG,iBAAiB,GAAG,kBAAkB,GAAG,CAAC,kBAAkB,mBAAmB,EAAE,GAAG,CAAC,iBAAiB,mBAAmB,iBAAiB,EAAE,GAAG,CAAC,iBAAiB,iBAAiB,eAAe,EAAE,GAAG,kBAAkB,GAAG,CAAC,mBAAmB,kBAAkB,kBAAkB,EAAE,GAAG,CAAC,kBAAkB,oBAAoB,EAAE,GAAG,CAAC,iBAAiB,iBAAiB,EAAE,GAAG,kBAAkB,GAAG,CAAC,iBAAiB,kBAAkB,EAAE,GAAG,CAAC,kBAAkB,iBAAiB,EAAE,GAAG,CAAC,kBAAkB,kBAAkB,EAAE,GAAG,iBAAiB,GAAG,CAAC,iBAAiB,iBAAiB,EAAE,GAAG,CAAC,mBAAmB,mBAAmB,iBAAiB,EAAE,GAAG,kBAAkB,GAAG,kBAAkB,GAAG,CAAC,qBAAqB,iBAAiB,EAAE,GAAG,CAAC,mBAAmB,oBAAoB,EAAE,GAAG,CAAC,kBAAkB,kBAAkB,gBAAgB,EAAE,GAAG,kBAAkB,GAAG,oBAAoB,GAAG,oBAAoB,GAAG,gBAAgB,GAAG,CAAC,kBAAkB,kBAAkB,kBAAkB,EAAE,GAAG,mBAAmB,GAAG,CAAC,gBAAgB,iBAAiB,kBAAkB,EAAE,GAAG,iBAAiB,GAAG,CAAC,iBAAiB,eAAe,EAAE,GAAG,kBAAkB,GAAG,oBAAoB,GAAG,mBAAmB,GAAG,kBAAkB,GAAG,iBAAiB,GAAG,CAAC,iBAAiB,eAAe,EAAE,GAAG,CAAC,gBAAgB,mBAAmB,EAAE,GAAG,CAAC,iBAAiB,mBAAmB,EAAE,GAAG,mBAAmB,GAAG,CAAC,kBAAkB,kBAAkB,oBAAoB,kBAAkB,EAAE,GAAG,CAAC,kBAAkB,mBAAmB,kBAAkB,EAAE,GAAG,CAAC,kBAAkB,mBAAmB,kBAAkB,EAAE,GAAG,gBAAgB,GAAG,CAAC,mBAAmB,iBAAiB,EAAE,GAAG,CAAC,eAAe,cAAc,EAAE,GAAG,CAAC,oBAAoB,oBAAoB,oBAAoB,EAAE,GAAG,iBAAiB,GAAG,CAAC,kBAAkB,iBAAiB,eAAe,gBAAgB,EAAE,GAAG,CAAC,kBAAkB,gBAAgB,EAAE,GAAG,CAAC,iBAAiB,mBAAmB,kBAAkB,EAAE,GAAG,gBAAgB,GAAG,CAAC,YAAY,eAAe,EAAE,GAAG,CAAC,iBAAiB,kBAAkB,iBAAiB,EAAE,GAAG,CAAC,iBAAiB,iBAAiB,gBAAgB,EAAE,GAAG,CAAC,gBAAgB,gBAAgB,EAAE,GAAG,CAAC,gBAAgB,kBAAkB,eAAe,EAAE,GAAG,CAAC,mBAAmB,mBAAmB,EAAE,GAAG,CAAC,gBAAgB,gBAAgB,EAAE,GAAG,CAAC,kBAAkB,mBAAmB,qBAAqB,EAAE,GAAG,CAAC,kBAAkB,kBAAkB,iBAAiB,gBAAgB,EAAE,GAAG,CAAC,mBAAmB,iBAAiB,EAAE,GAAG,CAAC,gBAAgB,mBAAmB,EAAE,GAAG,kBAAkB,GAAG,CAAC,kBAAkB,mBAAmB,mBAAmB,EAAE,GAAG,CAAC,mBAAmB,kBAAkB,EAAE,GAAG,gBAAgB,GAAG,CAAC,mBAAmB,kBAAkB,oBAAoB,EAAE,GAAG,CAAC,iBAAiB,eAAe,EAAE,GAAG,oBAAoB,GAAG,CAAC,kBAAkB,iBAAiB,EAAE,GAAG,CAAC,iBAAiB,kBAAkB,gBAAgB,EAAE,GAAG,mBAAmB,GAAG,mBAAmB,GAAG,CAAC,mBAAmB,oBAAoB,iBAAiB,EAAE,GAAG,CAAC,aAAa,eAAe,EAAE,GAAG,CAAC,iBAAiB,cAAc,EAAE,GAAG,mBAAmB,GAAG,CAAC,iBAAiB,mBAAmB,kBAAkB,mBAAmB,EAAE,GAAG,CAAC,gBAAgB,mBAAmB,EAAE,GAAG,aAAa,GAAG,CAAC,mBAAmB,kBAAkB,iBAAiB,gBAAgB,EAAE,GAAG,CAAC,kBAAkB,gBAAgB,EAAE,GAAG,CAAC,oBAAoB,mBAAmB,cAAc,EAAE,GAAG,iBAAiB,GAAG,CAAC,mBAAmB,kBAAkB,EAAE,GAAG,CAAC,oBAAoB,mBAAmB,EAAE,GAAG,CAAC,gBAAgB,gBAAgB,EAAE,GAAG,CAAC,eAAe,gBAAgB,eAAe,EAAE,GAAG,mBAAmB,GAAG,gBAAgB,GAAG,CAAC,iBAAiB,eAAe,EAAE,GAAG,kBAAkB,GAAG,CAAC,mBAAmB,kBAAkB,EAAE,GAAG,CAAC,iBAAiB,iBAAiB,EAAE,GAAG,YAAY,GAAG,kBAAkB,GAAG,mBAAmB,GAAG,mBAAmB,GAAG,CAAC,iBAAiB,kBAAkB,kBAAkB,EAAE,GAAG,CAAC,mBAAmB,kBAAkB,EAAE,GAAG,YAAY,GAAG,CAAC,gBAAgB,gBAAgB,EAAE,GAAG,CAAC,mBAAmB,gBAAgB,EAAE,GAAG,kBAAkB,GAAG,CAAC,cAAc,gBAAgB,eAAe,EAAE,GAAG,CAAC,oBAAoB,kBAAkB,EAAE,GAAG,kBAAkB,GAAG,CAAC,cAAc,cAAc,EAAE,GAAG,CAAC,mBAAmB,mBAAmB,mBAAmB,mBAAmB,EAAE,GAAG,CAAC,mBAAmB,mBAAmB,kBAAkB,EAAE,GAAG,CAAC,kBAAkB,mBAAmB,kBAAkB,EAAE,GAAG,CAAC,kBAAkB,iBAAiB,EAAE,GAAG,kBAAkB,GAAG,CAAC,iBAAiB,kBAAkB,eAAe,EAAE,GAAG,oBAAoB,GAAG,CAAC,mBAAmB,mBAAmB,iBAAiB,EAAE,GAAG,kBAAkB,GAAG,kBAAkB,GAAG,kBAAkB,GAAG,kBAAkB,GAAG,CAAC,mBAAmB,kBAAkB,kBAAkB,kBAAkB,EAAE,GAAG,CAAC,aAAa,eAAe,EAAE,GAAG,CAAC,gBAAgB,mBAAmB,EAAE,GAAG,CAAC,aAAa,gBAAgB,cAAc,EAAE,GAAG,CAAC,kBAAkB,gBAAgB,EAAE,GAAG,CAAC,iBAAiB,kBAAkB,EAAE,GAAG,oBAAoB,GAAG,CAAC,kBAAkB,iBAAiB,EAAE,GAAG,CAAC,mBAAmB,kBAAkB,gBAAgB,EAAE,GAAG,CAAC,gBAAgB,mBAAmB,gBAAgB,kBAAkB,CAAC,ECAr1TC,GAAE,cAAcC,EAAiBC,GAAG,CAAC,GAAG,CAACF,GAAE,KAAKE,CAAC,EAAE,CAAC,MAAMF,EAAE,OAAOE,EAAE,MAAM,IAAI,UAAU,8DAAyEF,IAAX,SAAaE,EAAEF,CAAC,YAAY,CAAC,CAAC,MAAMG,EAAE,CAAC,GAAGD,EAAE,aAAa,EAAE,IAAIF,IAAIA,EAAE,YAAY,CAAC,GAAG,GAAG,MAAM,EAAE,OAAO,OAAO,cAAc,GAAGG,CAAC,CAAC,ECA/LD,GAAE,KAAKE,EAAE,IAAI,IAAIC,GAAgB,GAAG,CAAC,MAAM,EAAE,EAAE,YAAW,EAAGC,EAAEF,EAAE,IAAI,CAAC,EAAE,GAAGE,EAAE,OAAOA,EAAE,MAAM,EAAE,IAAI,KAAK,aAAa,CAAC,CAAC,EAAE,CAAC,KAAK,QAAQ,CAAC,EAAE,GAAGF,EAAE,MAAM,IAAG,UAAUD,KAAKC,EAAE,OAAO,GAAGD,IAAID,GAAE,CAACE,EAAE,OAAOD,CAAC,EAAE,KAAK,EAAC,OAAOC,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,EAAEE,EAAE,OAAO,QAAQH,EAAC,EAAEI,GAAW,GAAG,EAAE,MAAM,QAAQ,EAAE,SAASC,EAAe,EAAE,CAAC,IAAI,EAAE,GAAGN,EAAE,GAAG,GAAG,MAAM,QAAQ,CAAC,EAAE,CAAC,MAAME,EAAE,CAAA,EAAG,UAAUF,KAAK,EAAE,CAAC,KAAK,CAACC,EAAEG,CAAC,EAAEC,GAAWL,CAAC,EAAE,IAAI,EAAEC,GAAGC,EAAE,KAAKE,CAAC,CAAC,CAACJ,EAAEE,CAAC,KAAK,CAAC,KAAK,CAACA,EAAE,CAAC,EAAEG,GAAW,CAAC,EAAE,EAAEH,EAAEF,EAAE,CAAC,CAAC,MAAM,CAAC,EAAEA,CAAC,CAAC,CAAaI,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAIA,EAAE,OAAO,CAAC,EAAE,CAAC,EAAEJ,CAAC,IAAI,CAAC,KAAK,CAACE,EAAE,CAAC,EAAEI,EAAeN,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,KAAKE,EAAE,KAAK,CAAC,EAAE,CAAC,EAAE,CAAA,CAAE,EAAIE,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAACJ,EAAEE,CAAC,EAAEI,EAAe,CAAC,EAAE,MAAM,CAAC,GAAG,EAAE,KAAKN,EAAE,KAAKE,CAAC,CAAC,CAAC,EAAIE,EAAE,OAAO,CAAC,EAAE,CAACJ,EAAE,CAAC,IAAI,CAAC,KAAK,CAACI,EAAEG,CAAC,EAAED,EAAe,CAAC,EAAE,OAAO,EAAEN,CAAC,EAAE,CAAC,KAAKI,EAAE,KAAKG,EAAE,KAAKT,EAAEE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAA,CAAE,EAAII,EAAE,IAAI,CAAC,CAAC,EAAEJ,CAAC,IAAI,CAAC,KAAK,CAAC,EAAEI,CAAC,EAAEE,EAAeN,CAAC,EAAE,MAAM,CAAC,GAAG,EAAE,KAAK,EAAE,KAAKI,EAAE,KAAKN,EAAE,CAAC,CAAC,CAAC,CAAC,EAAC,MAACU,GAAa,GAAG,CAAC,MAAMR,EAAEG,GAAgB,CAAC,EAAE,OAAOC,EAAE,OAAO,CAACH,EAAE,CAACC,EAAE,CAAC,IAAI,CAAC,KAAK,CAACK,EAAEE,CAAC,EAAEH,EAAe,CAAC,EAAEI,EAAEV,EAAE,GAAGE,CAAC,GAAG,GAAG,OAAOD,EAAEC,CAAC,EAAE,CAAC,KAAKK,EAAE,KAAKE,EAAE,KAAKC,EAAE,KAAKZ,EAAEI,CAAC,CAAC,EAAED,CAAC,EAAE,CAAA,CAAE,CAAC,EAAEU,GAAU,GAAG,CAAC,MAAMX,EAAEG,GAAgB,CAAC,EAAE,OAAOC,EAAE,IAAI,CAAC,CAACH,EAAEC,CAAC,IAAI,CAAC,KAAK,CAAC,EAAEK,CAAC,EAAED,EAAeJ,CAAC,EAAE,MAAM,CAAC,GAAGD,EAAE,KAAK,EAAE,KAAKM,EAAE,KAAKP,EAAE,GAAGC,CAAC,GAAG,GAAG,KAAKH,EAAEG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAEW,GAAEJ,GAAaR,EAAC,EAAIW,GAAUX,EAAC,EAAC,MAACa,GAAEf,ECAvtC,SAASgB,IAAkB,CAAC,OAAmB,OAAO,UAApB,KAA+B,UAAU,UAAU,IAAI,CAAC,SAASC,IAAyB,CAAC,GAAG,CAAC,MAAMjB,EAAEgB,KAAmB,GAAG,CAAC,MAAMb,EAAE,IAAI,KAAK,OAAOH,CAAC,EAAE,GAAGG,EAAE,OAAO,OAAOA,EAAE,OAAO,YAAW,CAAE,MAAM,CAAC,CAAC,MAAMA,EAAEH,EAAE,MAAM,MAAM,EAAE,GAAGG,EAAE,OAAO,EAAE,OAAOA,EAAE,CAAC,GAAG,YAAW,GAAI,IAAI,MAAM,CAAC,CAAC,OAAO,IAAI,CAAC,SAASe,GAAWlB,EAAE,CAAC,MAAMS,EAAEN,GAAE,OAAOH,EAAE,YAAW,IAAKS,CAAC,CAAC,SAASU,GAAW,EAAEV,EAAE,CAAC,MAAM,EAAET,GAAES,CAAC,EAAEP,EAAE,EAAE,YAAW,EAAG,OAAOA,KAAK,EAAE,CAAC,GAAGA,EAAE,GAAG,EAAEA,CAAC,CAAC,EAAE,CAAC,GAAG,KAAK,GAAG,EAAE,EAAE,CAAC,CAAC,SAASkB,GAAiBpB,EAAEG,EAAE,CAAC,OAAOH,GAAGkB,GAAWlB,CAAC,EAAEA,EAAE,cAAcG,GAAG,EAAE,CAAC,SAASkB,GAAQrB,EAAE,CAAC,OAAO,MAAM,QAAQA,CAAC,EAAEA,EAAE,CAACA,CAAC,CAAC,CAAC,SAASsB,GAAkBtB,EAAE,CAAC,OAAOA,EAAE,MAAM,IAAI,GAAG,CAAA,GAAI,MAAM,CAAC,SAASuB,GAAwBvB,EAAE,CAAC,OAAOA,EAAE,QAAQ,YAAY,EAAE,CAAC,CAAC,SAASwB,GAAgBxB,EAAEG,EAAE,CAAC,GAAOH,EAAE,SAAN,EAAa,OAAOA,EAAE,CAAC,EAAE,MAAMS,EAAET,EAAE,IAAIA,IAAI,CAAC,KAAKA,EAAE,MAAMsB,GAAkBtB,CAAC,CAAC,EAAE,EAAEI,EAAEK,EAAE,OAAOT,GAAGA,EAAE,OAAOG,CAAC,EAAE,KAAK,CAACH,EAAEG,IAAIH,EAAE,MAAMG,EAAE,KAAK,EAAE,GAAGC,EAAE,OAAO,EAAE,OAAOA,EAAE,CAAC,EAAE,KAAK,MAAMF,EAAEO,EAAE,KAAK,CAACT,EAAEG,IAAIA,EAAE,MAAMH,EAAE,KAAK,EAAE,CAAC,EAAE,OAAOE,EAAEA,EAAE,KAAKF,EAAE,CAAC,CAAC,CAAC,SAASyB,EAAoBzB,EAAEG,EAAE,CAAC,IAAIM,EAAE,GAAG,MAAML,EAAE,CAAA,EAAG,IAAIF,EAAE,EAAE,MAAMS,EAAER,EAAE,OAAOG,EAAEN,EAAE,OAAO,QAAQ,EAAE,EAAE,EAAEM,EAAE,IAAI,CAAC,MAAMA,EAAEN,EAAE,CAAC,EAAE,GAASM,IAAN,IAAQ,CAAC,GAAG,EAAEJ,EAAES,GAAG,MAAMF,GAAGN,EAAED,CAAC,EAAEE,EAAE,KAAKF,CAAC,EAAEA,GAAG,KAAK,CAAC,MAAMC,EAAOH,EAAE,QAAQ,IAAI,EAAE,CAAC,IAAtB,IAAyBE,EAAES,GAAGF,EAAE,OAAO,GAAGN,KAAKM,GAAGH,EAAEF,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,QAAQK,EAAE,IAAIL,CAAC,CAAC,CAAC,SAASsB,GAAgB1B,EAAEG,EAAE,CAAC,MAAMM,EAAEN,EAAE,KAAI,EAAG,YAAW,EAAG,GAAG,CAACM,EAAE,OAAOT,EAAE,MAAMI,EAAEK,EAAE,QAAQ,MAAM,EAAE,EAAEP,EAAEE,EAAE,OAAO,EAAE,OAAOJ,EAAE,IAAIA,GAAG,CAAC,MAAMG,EAAEH,EAAE,KAAK,YAAW,EAAGW,EAAEX,EAAE,GAAG,YAAW,EAAGM,EAAEN,EAAE,KAAK,YAAW,EAAG2B,EAAE3B,EAAE,KAAK,QAAQ,MAAM,EAAE,EAAE,IAAI4B,EAAE,EAAE,OAAOzB,EAAE,WAAWM,CAAC,EAAEmB,EAAE,IAAIzB,EAAE,SAASM,CAAC,IAAImB,EAAE,KAAKtB,EAAE,WAAWG,CAAC,EAAEmB,GAAG,IAAItB,EAAE,SAASG,CAAC,IAAImB,GAAG,IAAIjB,IAAIF,EAAEmB,GAAG,IAAIjB,EAAE,WAAWF,CAAC,IAAImB,GAAG,KAAK1B,GAAGyB,EAAE,WAAWvB,CAAC,EAAEwB,GAAG,GAAG1B,GAAGyB,EAAE,SAASvB,CAAC,IAAIwB,GAAG,IAAI,CAAC,QAAQ5B,EAAE,MAAM4B,CAAC,CAAC,CAAC,EAAE,OAAO5B,GAAGA,EAAE,MAAM,CAAC,EAAE,KAAK,CAACA,EAAEG,IAAIA,EAAE,QAAQH,EAAE,MAAMG,EAAE,MAAMH,EAAE,MAAMA,EAAE,QAAQ,KAAK,cAAcG,EAAE,QAAQ,IAAI,CAAC,EAAE,IAAIH,GAAGA,EAAE,OAAO,CAAC,CCA74D,MAAMA,GAAE,CAAC,IAAI,IAAI,IAAI,GAAG,EAAEG,GAAE,CAAC,YAAY,aAAa,UAAU,YAAY,OAAO,MAAM,KAAK,EAAEyB,GAAE,cAAc,SAASC,EAAc7B,EAAEG,EAAE,CAAC,MAAMyB,EAAE5B,EAAE,QAAQ,MAAM,EAAE,EAAE,OAAOG,EAAEyB,EAAE,MAAM,EAAEzB,CAAC,EAAEyB,CAAC,CAAC,SAASE,GAAa9B,EAAE,CAAC,OAAOA,EAAE,CAACA,EAAE,gBAAgB,EAAEA,EAAE,cAAc,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS+B,GAAS/B,EAAEG,EAAE,CAAC,GAAGH,EAAE,GAAG,CAACA,EAAE,kBAAkBG,EAAEA,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS6B,GAAmBhC,EAAE,CAAC,GAAG,CAACA,EAAE,OAAO,OAAO,MAAMG,EAAEH,EAAE,OAAO,EAAEA,EAAE,KAAoBA,EAAE,YAAjB,cAA4B,IAAI4B,GAAE,KAAK,CAAC,GAAS,IAAN,KAASzB,EAAE,MAAM,SAAS,GAAG,IAAIH,EAAE,eAAc,CAAE,CAAC,SAASiC,GAAajC,EAAEG,EAAE,CAAC,GAAG,CAACH,EAAE,OAAO,OAAO,MAAM4B,EAAE5B,EAAE,OAAO,CAAC,UAAUI,CAAC,EAAED,EAAEM,EAAEL,EAAE,aAAY,EAAGE,EAAEuB,EAAcD,EAAE,MAAMnB,CAAC,EAAE,MAAM,CAAC,UAAUH,EAAE,gBAAgBA,EAAE,MAAM,CAAC,CAAC,SAAS4B,GAAeN,EAAExB,EAAE,CAAC,GAAG,CAACwB,EAAE,OAAO,OAAO,MAAMnB,EAAEmB,EAAE,OAAO,CAAC,OAAOtB,EAAE,UAAUqB,CAAC,EAAEvB,EAAE,GAAGwB,EAAE,SAASA,EAAE,SAASA,EAAE,QAAQzB,GAAE,SAASyB,EAAE,GAAG,EAAE,OAAO,KAAK,CAACO,EAAExB,CAAC,EAAEmB,GAAarB,CAAC,EAAE,GAAiBmB,EAAE,MAAhB,YAAoB,GAAcA,EAAE,MAAb,SAAiB,UAAU,KAAKA,EAAE,GAAG,EAAEtB,EAAE,QAAQqB,EAAE,gBAAgBC,EAAE,eAAc,EAAOA,EAAE,IAAI,SAAV,GAAkBA,EAAE,eAAc,MAAO,CAAC,GAAGA,EAAE,eAAc,EAAGO,IAAIxB,EAAE,CAAC,MAAMX,EAAE2B,EAAE,cAAcrB,EAAE6B,EAAExB,CAAC,EAAE,GAAGX,EAAE,CAAC,KAAK,CAACG,EAAEyB,CAAC,EAAE5B,EAAE,MAAM,CAAC,UAAUM,EAAE,MAAM,EAAEH,CAAC,EAAEG,EAAE,MAAMsB,CAAC,EAAE,gBAAgBzB,CAAC,CAAC,CAAC,CAAC,GAAGgC,EAAE1B,EAAE,MAAM,OAAO,CAAC,MAAMT,EAAE2B,EAAE,cAAcrB,EAAE6B,EAAE1B,EAAE,MAAM,MAAM,EAAE,GAAGT,EAAE,CAAC,KAAK,CAACG,CAAC,EAAEH,EAAE,MAAM,CAAC,UAAUM,EAAE,MAAM,EAAEH,CAAC,EAAEG,EAAE,MAAMH,EAAE,CAAC,EAAE,gBAAgBA,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAGyB,EAAE,eAAc,EAAGO,IAAIxB,EAAE,CAAC,MAAMX,EAAE2B,EAAE,cAAcrB,EAAE6B,EAAExB,CAAC,EAAE,GAAGX,EAAE,CAAC,KAAK,CAACG,EAAEyB,CAAC,EAAE5B,EAAE,MAAM,CAAC,UAAUM,EAAE,MAAM,EAAEH,CAAC,EAAEG,EAAE,MAAMsB,CAAC,EAAE,gBAAgBzB,CAAC,CAAC,CAAC,CAAC,GAAGgC,EAAE,EAAE,CAAC,MAAMhC,EAAEM,EAAE,MAAM,IAAImB,EAAEO,EAAE,EAAE,KAAKP,GAAG,GAAG5B,GAAE,SAASG,EAAEyB,CAAC,CAAC,GAAGA,IAAI,GAAGA,GAAG,EAAE,CAAC,MAAM5B,EAAE2B,EAAE,cAAcrB,EAAEsB,EAAEA,EAAE,CAAC,EAAE,GAAG5B,EAAE,CAAC,KAAK,CAACG,CAAC,EAAEH,EAAE,MAAM,CAAC,UAAUM,EAAE,MAAM,EAAEH,CAAC,EAAEG,EAAE,MAAMH,EAAE,CAAC,EAAE,gBAAgBA,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAASiC,GAAapC,EAAEG,EAAE,CAAC,GAAG,CAACH,EAAE,OAAO,OAAOA,EAAE,eAAc,EAAG,MAAM4B,EAAE5B,EAAE,OAAO,CAAC,OAAOI,EAAE,UAAUK,CAAC,EAAEN,EAAEG,EAAEN,EAAE,eAAe,QAAQ,MAAM,GAAG,GAAG2B,EAAElB,EAAE,aAAY,EAAG0B,EAAEN,EAAcvB,EAAEqB,CAAC,EAAE,GAAOQ,EAAE,SAAN,EAAa,OAAO,KAAK,CAACxB,EAAET,CAAC,EAAE4B,GAAaF,CAAC,EAAE,GAAGjB,IAAIT,EAAE,CAAC,MAAMF,EAAES,EAAE,cAAcL,EAAEO,EAAET,CAAC,EAAE,GAAGF,EAAE,CAAC,KAAK,CAACG,EAAEyB,CAAC,EAAE5B,EAAE,MAAM,CAAC,UAAU6B,EAAczB,EAAE,MAAM,EAAED,CAAC,EAAEgC,EAAE/B,EAAE,MAAMwB,CAAC,EAAED,CAAC,EAAE,gBAAgBxB,EAAEgC,EAAE,MAAM,CAAC,CAAC,CAAC,MAAME,EAAE5B,EAAE,cAAcL,EAAE,EAAEO,CAAC,EAAE,EAAE0B,EAAEA,EAAE,CAAC,EAAE,EAAE,MAAM,CAAC,UAAUR,EAAczB,EAAE,MAAM,EAAE,CAAC,EAAE+B,EAAE/B,EAAE,MAAM,CAAC,EAAEuB,CAAC,EAAE,gBAAgB,EAAEQ,EAAE,MAAM,CAAC,CCA/9D,SAASG,GAAqBpC,EAAE,CAAC,MAAMS,EAAEF,GAAEP,EAAE,IAAI,EAAE0B,EAAEjB,EAAE,IAAIP,GAAGJ,GAAEG,GAAEC,CAAC,CAAC,CAAC,EAAE+B,EAAE,KAAK,IAAI,GAAGP,CAAC,EAAEW,EAAQvC,GAAG,CAAC,MAAMI,EAAEiC,GAAE1B,EAAEX,CAAC,EAAE,OAAOG,GAAEC,CAAC,CAAC,EAAE,MAAM,CAAC,cAAcJ,GAAG,CAAC,MAAMG,EAAEoC,EAAQvC,EAAE,MAAM,EAAE,OAAOI,EAAED,EAAEH,CAAC,EAAE,OAAO,EAAE,aAAa,IAAImC,EAAE,eAAe,IAAII,EAAQ,CAAC,EAAE,iBAAiBvC,GAAG,CAAC,MAAMG,EAAEoC,EAAQvC,CAAC,EAAE,CAAC,QAAQS,EAAE,IAAI,CAAC,EAAEL,EAAED,EAAE,IAAI,OAAOH,CAAC,CAAC,EAAE,QAAQG,EAAE,EAAEA,EAAE,EAAE,OAAOA,IAAI,GAAG,EAAEA,CAAC,IAAIH,EAAE,OAAOG,EAAE,GAAGH,GAAG,EAAE,OAAO,OAAOS,EAAE,OAAO,QAAQN,EAAE,EAAEA,EAAE,EAAE,OAAOA,IAAI,GAAG,EAAEA,CAAC,EAAEH,EAAE,OAAOG,EAAE,OAAOM,EAAE,MAAM,EAAE,cAAc,CAACT,EAAEG,EAAEM,IAAI,CAAC,MAAM,EAAE8B,EAAQvC,EAAE,MAAM,EAAE,CAAC,IAAIE,CAAC,EAAEE,EAAE,EAAEJ,CAAC,EAAE,IAAIW,EAAE,IAAIiB,EAAE,KAAK,QAAQ5B,EAAEG,EAAEH,EAAES,GAAGT,EAAEE,EAAE,OAAOF,IAAI,CAAC,MAAMG,EAAED,EAAEF,CAAC,EAAWG,IAAT,QAAYA,GAAG,IAAIQ,EAAE,KAAK,IAAIA,EAAER,CAAC,EAAEyB,EAAE,KAAK,IAAIA,EAAEzB,CAAC,EAAE,CAAC,OAAOQ,IAAI,IAAI,KAAK,CAACA,EAAEiB,EAAE,CAAC,CAAC,EAAE,WAAW5B,GAAG4B,EAAE,SAAS5B,EAAE,MAAM,CAAC,CAAC,CCAj1B,MAAME,GAAE,yBAAyBC,GAAE,KAAKqC,GAAE,2BAA2BlC,GAAE,MCAmF,eAAemC,GAAuBzC,EAAEE,GAAEO,EAAEN,GAAE,CAAC,MAAM,EAAE,IAAI,gBAAgBwB,EAAE,WAAW,IAAI,EAAE,MAAK,EAAGlB,CAAC,EAAE,GAAG,CAAC,MAAMP,EAAE,MAAM,MAAMF,EAAE,CAAC,OAAO,EAAE,OAAO,QAAQ,CAAC,OAAO,kBAAkB,CAAC,CAAC,EAAE,GAAG,aAAa2B,CAAC,EAAE,CAACzB,EAAE,GAAG,OAAO,KAAK,MAAMC,EAAE,MAAMD,EAAE,KAAI,EAAG,OAAOC,EAAE,SAASA,EAAE,cAAcA,EAAE,aAAaA,EAAE,eAAe,IAAI,SAAQ,EAAG,YAAW,GAAI,IAAI,MAAM,CAAC,OAAO,aAAawB,CAAC,EAAE,IAAI,CAAC,CAAC,eAAee,IAAe,CAAC,GAAG,CAAC,MAAMxC,EAAE,aAAa,QAAQO,EAAC,EAAE,GAAGP,EAAE,CAAC,MAAMC,EAAE,KAAK,MAAMD,CAAC,EAAEyB,EAAE,KAAK,IAAG,EAAGxB,EAAE,GAAGC,GAAEO,EAAEX,GAAEG,EAAE,YAAY,EAAE,GAAGQ,GAAG,CAACgB,EAAE,OAAOhB,EAAE,aAAa,WAAWF,EAAC,CAAC,CAAC,MAAM,CAAC,CAAC,MAAMP,EAAE,MAAMuC,GAAsB,EAAGtC,EAAEH,GAAEE,CAAC,EAAE,GAAGC,EAAE,CAAC,GAAG,CAAC,MAAMH,EAAE,KAAK,UAAU,CAAC,aAAaG,EAAE,GAAG,KAAK,IAAG,CAAE,CAAC,EAAE,aAAa,QAAQM,GAAET,CAAC,CAAC,MAAM,CAAC,CAAC,OAAOG,CAAC,CAAC,OAAO,IAAI,CCgDj3B,SAASwC,GAAa,CAC3B,QAAAC,EACA,MAAAC,EACA,SAAAC,EACA,cAAAC,EACA,mBAAAC,CACF,EAA4C,CAC1C,MAAMC,EAAYC,EAAAA,QAAQ,IAAMZ,GAAqBM,CAAO,EAAG,CAACA,CAAO,CAAC,EAClEO,EAAYF,EAAU,aAAA,EACtBG,EAASF,UAAQ,IAAMrB,EAAcgB,EAAOM,CAAS,EAAG,CAACN,EAAOM,CAAS,CAAC,EAE1EE,EAAqBJ,EAAU,eAAA,EAC/BK,EAAeL,EAAU,cAAcG,CAAM,EAE7CG,EAAOH,EAAS,GAAGR,EAAQ,IAAI,GAAGQ,CAAM,GAAK,GAC7CI,EAAgBF,EAAe,GAAGV,EAAQ,IAAI,IAAIU,CAAY,GAAK,GAEnEG,EAAaR,EAAU,WAAWG,CAAM,EACxCM,EAAUN,EAAO,SAAW,EAC5BO,EAAiB,CAACD,GAAW,CAACD,EAG9BG,EAAYV,EAAAA,QAAqB,KAAO,CAAE,KAAAK,EAAM,cAAAC,EAAe,OAAAJ,CAAA,GAAW,CAACG,EAAMC,EAAeJ,CAAM,CAAC,EAG7GS,OAAAA,EAAAA,UAAU,IAAM,CACVhB,IAAUO,GACZN,EAASM,CAAM,CAEnB,EAAG,CAACP,EAAOO,EAAQN,CAAQ,CAAC,EAG5Be,EAAAA,UAAU,IAAM,CACdd,IAAgBa,CAAS,CAC3B,EAAG,CAACA,EAAWb,CAAa,CAAC,EAG7Bc,EAAAA,UAAU,IAAM,CACdb,IAAqBS,CAAU,CACjC,EAAG,CAACA,EAAYT,CAAkB,CAAC,EAE5B,CACL,OAAAI,EACA,UAAAH,EACA,mBAAAI,EACA,aAAAC,EACA,KAAAC,EACA,cAAAC,EACA,WAAAC,EACA,QAAAC,EACA,eAAAC,CAAA,CAEJ,CCtEO,SAASG,GAAW,CACzB,QAASC,EACT,OAAQC,EACR,OAAAC,EACA,gBAAAC,CACF,EAAwC,CACtC,MAAMC,EAASjB,EAAAA,QAAgB,IAAMc,GAAgBhD,KAAoB,CAACgD,CAAY,CAAC,EAEjF,CAACI,EAAaC,CAAc,EAAIC,EAAAA,SAAiBlD,GAAiB2C,EAAe,IAAI,CAAC,EAEtFnB,EAAUM,UAAkB,IAAM/B,GAAWiD,EAAaD,CAAM,EAAG,CAACC,EAAaD,CAAM,CAAC,EAExFI,EAAe,CAAC,CAACN,GAAU,CAACF,EAE5BS,EAAaC,cAAaL,GAAgC,CAC9D,MAAMM,EAAOtD,GAAiBgD,CAAW,EAEzC,OAAIM,GACFL,EAAeK,CAAI,EACZ,IAGF,EACT,EAAG,CAAA,CAAE,EAECC,EAAgBF,EAAAA,YAAY,SAAY,CAC5C,MAAMG,EAAa,MAAMlC,GAAA,EAEzB,GAAI8B,EAAWI,CAAU,EAAG,OAE5B,MAAMC,EAAgB5D,GAAA,EAEtBuD,EAAWK,CAAa,CAC1B,EAAG,CAACL,CAAU,CAAC,EAEfX,OAAAA,EAAAA,UAAU,IAAM,CACVE,GAAiBA,IAAkBK,GACrCI,EAAWT,CAAa,CAE5B,EAAG,CAACK,EAAaL,EAAeS,CAAU,CAAC,EAG3CX,EAAAA,UAAU,IAAM,CACVU,GACFI,EAAA,CAEJ,EAAG,CAACJ,EAAcI,CAAa,CAAC,EAGhCd,EAAAA,UAAU,IAAM,CACdK,IAAkBtB,CAAO,CAC3B,EAAG,CAACA,EAASsB,CAAe,CAAC,EAEtB,CAAE,QAAAtB,EAAS,WAAA4B,EAAY,OAAAL,CAAA,CAChC,CC9EO,SAASW,IAAW,CACzB,MAAMC,EAAWC,EAAAA,OAA6C,IAAI,EAE5DC,EAAQR,EAAAA,YAAY,IAAM,CAC1BM,EAAS,UACX,aAAaA,EAAS,OAAO,EAC7BA,EAAS,QAAU,KAEvB,EAAG,CAAA,CAAE,EAECG,EAAMT,EAAAA,YACV,CAACU,EAAsBC,IAAkB,CACvCH,EAAA,EACAF,EAAS,QAAU,WAAWI,EAAUC,CAAK,CAC/C,EACA,CAACH,CAAK,CAAA,EAIRpB,OAAAA,EAAAA,UAAU,IACDoB,EACN,CAACA,CAAK,CAAC,EAEH/B,EAAAA,QAAQ,KAAO,CAAE,IAAAgC,EAAK,MAAAD,IAAU,CAACC,EAAKD,CAAK,CAAC,CACrD,CC3BO,SAASI,IAAoB,CAClC,KAAM,CAACC,EAAoBC,CAAqB,EAAIjB,EAAAA,SAAS,EAAK,EAE5DkB,EAAkBV,GAAA,EAElBW,EAAsBhB,EAAAA,YAC1B,CAACiB,EAAW,KAAS,CACfA,KAAgC,EAAK,EACzCF,EAAgB,MAAA,CAClB,EACA,CAACA,CAAe,CAAA,EAGZG,EAAyBlB,EAAAA,YAC5BW,GAAkB,CACjBG,EAAsB,EAAK,EAC3BC,EAAgB,IAAI,IAAM,CACxBD,EAAsB,EAAI,CAC5B,EAAGH,CAAK,CACV,EACA,CAACI,CAAe,CAAA,EAGlB,MAAO,CAAE,mBAAAF,EAAoB,oBAAAG,EAAqB,uBAAAE,CAAA,CACpD,CCDA,SAASC,EAAe,EAAwC,CAC9D,MAAO,gBAAiB,EAAI,EAAE,YAAc,CAC9C,CAEA,MAAMC,GAAmB,IACnBC,GAAoB,IAMnB,SAASC,GAAiBC,EAA0D,CACzF,KAAM,CAAE,UAAA/C,EAAW,OAAAG,EAAQ,SAAA6C,EAAU,SAAAnD,EAAU,uBAAA6C,GAA2BK,EAGpEE,EAAsBzB,EAAAA,YAC1B,CAAC0B,EAA6BC,IAAuB,CACnD,WAAW,IAAM,CACf,GAAI,CAACD,EAAI,OACT,MAAME,EAAMpD,EAAU,iBAAiBmD,CAAU,EACjDrE,GAASoE,EAAIE,CAAG,CAClB,EAAG,CAAC,CACN,EACA,CAACpD,CAAS,CAAA,EAGNqD,EAAoB7B,cAAatE,GAA2D,CAChG6B,GAAmB4D,EAAezF,CAAC,CAAe,CACpD,EAAG,CAAA,CAAE,EAECoG,EAAc9B,EAAAA,YACjBtE,GAAsD,CACrD,GAAI8F,EAAU,OAEd,MAAMO,EAAMZ,EAAezF,CAAC,EACtBsG,EAASxE,GAAauE,EAAK,CAAE,UAAAvD,EAAW,EAEzCwD,IAEL3D,IAAW2D,EAAO,SAAS,EAC3BP,EAAoBM,EAAI,OAAmCC,EAAO,eAAe,EACjFd,IAAyBE,EAAgB,EAC3C,EACA,CAACI,EAAUhD,EAAWH,EAAUoD,EAAqBP,CAAsB,CAAA,EAGvEe,EAAgBjC,EAAAA,YACnBtE,GAA6D,CAC5D,GAAI8F,EAAU,OAEd,MAAMO,EAAMZ,EAAezF,CAAC,EACtBsG,EAASvE,GAAesE,EAAK,CAAE,OAAApD,EAAQ,UAAAH,EAAW,EAEnDwD,IAEL3D,IAAW2D,EAAO,SAAS,EAC3BP,EAAoBM,EAAI,OAAmCC,EAAO,eAAe,EACjFd,IAAyBG,EAAiB,EAC5C,EACA,CAACG,EAAU7C,EAAQH,EAAWH,EAAUoD,EAAqBP,CAAsB,CAAA,EAG/EgB,EAAclC,EAAAA,YACjBtE,GAA+D,CAC9D,GAAI8F,EAAU,OAEd,MAAMO,EAAMZ,EAAezF,CAAC,EACtBsG,EAASrE,GAAaoE,EAAK,CAAE,OAAApD,EAAQ,UAAAH,EAAW,EAEjDwD,IAEL3D,IAAW2D,EAAO,SAAS,EAC3BP,EAAoBM,EAAI,OAAmCC,EAAO,eAAe,EACjFd,IAAyBG,EAAiB,EAC5C,EACA,CAACG,EAAU7C,EAAQH,EAAWH,EAAUoD,EAAqBP,CAAsB,CAAA,EAGrF,MAAO,CACL,kBAAAW,EACA,YAAAC,EACA,cAAAG,EACA,YAAAC,CAAA,CAEJ,CC9FO,SAASC,GAAmB,CACjC,QAAAC,EACA,YAAAC,EACA,UAAAC,EACA,YAAAC,EACA,OAAA7C,EACA,cAAAJ,EACA,SAAAkC,EACA,gBAAAgB,EACA,cAAAC,CACF,EAA4B,CAC1B,KAAM,CAACC,EAAQC,CAAS,EAAI9C,EAAAA,SAAS,EAAE,EACjC,CAAC+C,EAAcC,CAAe,EAAIhD,EAAAA,SAAS,EAAK,EAChD,CAACiD,EAAeC,CAAgB,EAAIlD,EAAAA,SAAwB,CAAA,CAAE,EAC9D,CAACmD,EAAWC,CAAY,EAAIpD,EAAAA,SAAS,EAAK,EAC1C,CAACqD,EAAcC,CAAe,EAAItD,EAAAA,SAAS,CAAC,EAE5CuD,EAAY3E,EAAAA,QAAQ,IAAMrC,GAAUsD,CAAM,EAAG,CAACA,CAAM,CAAC,EACrD2D,EAAoB5E,UAAQ,IAAMxB,GAAgBmG,EAAWV,CAAM,EAAG,CAACU,EAAWV,CAAM,CAAC,EACzFY,EAAc7E,EAAAA,QAAQ,IAAM,CAACa,GAAiB8D,EAAU,OAAS,EAAG,CAAC9D,EAAe8D,CAAS,CAAC,EAE9FG,EAAcvD,EAAAA,YAAY,IAAM,CACpC,WAAW,IAAMsC,EAAU,SAAS,MAAM,CAAE,cAAe,GAAM,EAAG,CAAC,CACvE,EAAG,CAAA,CAAE,EAGCkB,EAAgBxD,EAAAA,YAAY,IAAM,CACjC4C,GACLK,EAAa,EAAI,CACnB,EAAG,CAACL,CAAY,CAAC,EAEXa,EAAezD,EAAAA,YAAY,IAAM,CACrCiD,EAAa,EAAK,EAClBJ,EAAgB,EAAI,EACpBM,EAAgB,CAAC,EACjBI,EAAA,CACF,EAAG,CAACA,CAAW,CAAC,EAGVG,EAA6B1D,EAAAA,YAAY,IAAM,CAC9CgD,IACLH,EAAgB,EAAK,EACrBI,EAAa,EAAK,EACpB,EAAG,CAACD,CAAS,CAAC,EAERW,EAAiB3D,EAAAA,YAAY,IAAM,CACnCwB,GAAY,CAAC8B,IACbV,EACFY,EAAA,EAEAC,EAAA,EAEJ,EAAG,CAACjC,EAAUoB,EAAcU,EAAaG,EAAcD,CAAa,CAAC,EAE/DI,EAAgB5D,EAAAA,YACnBC,GAAqB,CACpBuC,EAAgBvC,CAAI,EACpBuD,EAAA,EACAb,EAAU,EAAE,EACZQ,EAAgB,CAAC,EACjBV,IAAA,CACF,EACA,CAACD,EAAiBgB,EAAef,CAAa,CAAA,EAG1CoB,EAAqB7D,cAAatE,GAA2C,CACjFiH,EAAUjH,EAAE,OAAO,KAAK,EACxByH,EAAgB,CAAC,CACnB,EAAG,CAAA,CAAE,EAGCW,EAAa9D,EAAAA,YAChB+D,GAAc,CACb,MAAMC,EAASD,EAAG,OACZE,EAAa5B,EAAY,QACzB6B,EAAa3B,EAAY,QAC1ByB,IACDC,GAAY,SAASD,CAAM,GAC3BE,GAAY,SAASF,CAAM,GAC/BR,EAAA,EACF,EACA,CAACA,CAAa,CAAA,EAIVW,EAAmBnE,cAAatE,GAAwB,CAE5D,GADIA,GAAG,OAAS,UAAYA,EAAE,QAAU2G,EAAY,SAAS,SAAS3G,EAAE,MAAc,GAClF,CAAC0G,GAAS,QAAS,OAEvB,MAAMgC,EAAOhC,EAAQ,QAAQ,sBAAA,EAE7BW,EAAiB,CACf,IAAK,GAAGqB,EAAK,OAAS,OAAO,QAAU,CAAC,KACxC,KAAM,GAAGA,EAAK,KAAO,OAAO,OAAO,KACnC,MAAO,GAAGA,EAAK,KAAK,IAAA,CACrB,CACH,EAAG,CAAA,CAAE,EAECC,EAAwBrE,cAAasE,GAAkB,CAC3D,WAAW,IAAM,CACf,MAAMC,EAAOlC,EAAY,SAAS,iBAC5BmC,EAASD,GAAM,SAASD,CAAK,EACnC,GAAI,CAACC,GAAQ,CAACC,EAAQ,OAEtB,MAAMC,EAAWF,EAAK,sBAAA,EAChBG,EAAaF,EAAO,sBAAA,EAE1B,IAAIG,EAAe,EAEnB,GAAID,EAAW,IAAMD,EAAS,IAC5BE,EAAeJ,EAAK,WAAaE,EAAS,IAAMC,EAAW,aAClDA,EAAW,OAASD,EAAS,OACtCE,EAAeJ,EAAK,WAAaG,EAAW,OAASD,EAAS,YAE9D,QAGFF,EAAK,SAAS,CAAE,IAAKI,EAAc,SAAU,SAAU,CACzD,EAAG,CAAC,CACN,EAAG,CAAA,CAAE,EAGCC,GAAsB5E,EAAAA,YACzBtE,GAA2B,CACtBA,EAAE,MAAQ,aACZA,EAAE,eAAA,EACFyH,EAAiBhG,GAAM,CACrB,MAAM0H,EAAO,KAAK,IAAI1H,EAAI,EAAGkG,EAAkB,OAAS,CAAC,EACzD,OAAAgB,EAAsBQ,CAAI,EACnBA,CACT,CAAC,GACQnJ,EAAE,MAAQ,WACnBA,EAAE,eAAA,EACFyH,EAAiBhG,GAAM,CACrB,MAAM2H,EAAO,KAAK,IAAI3H,EAAI,EAAG,CAAC,EAC9B,OAAAkH,EAAsBS,CAAI,EACnBA,CACT,CAAC,GACQpJ,EAAE,MAAQ,SAAW2H,EAAkBH,CAAY,GAC5DxH,EAAE,eAAA,EACFkI,EAAcP,EAAkBH,CAAY,EAAG,EAAE,GACxCxH,EAAE,MAAQ,UACnB8H,EAAA,CAEJ,EACA,CAACH,EAAmBH,EAAcU,EAAeJ,EAAea,CAAqB,CAAA,EAGvFjF,OAAAA,EAAAA,UAAU,IAAM,CACV,CAACkE,GAAeV,GAClBY,EAAA,CAEJ,EAAG,CAACF,EAAaV,EAAcY,CAAa,CAAC,EAE7CpE,EAAAA,UAAU,IAAM,CACd,GAAKwD,EAEL,OAAAuB,EAAA,EAEA,OAAO,iBAAiB,SAAUA,CAAgB,EAClD,OAAO,iBAAiB,SAAUA,EAAkB,EAAI,EACxD,OAAO,iBAAiB,QAASL,EAAY,EAAI,EAE1C,IAAM,CACX,OAAO,oBAAoB,SAAUK,CAAgB,EACrD,OAAO,oBAAoB,SAAUA,EAAkB,EAAI,EAC3D,OAAO,oBAAoB,QAASL,EAAY,EAAI,CACtD,CACF,EAAG,CAAClB,EAAcuB,EAAkBL,CAAU,CAAC,EAExC,CAEL,aAAAlB,EACA,UAAAI,EACA,OAAAN,EACA,aAAAQ,EACA,cAAAJ,EAEA,kBAAAO,EACA,YAAAC,EAEA,aAAAG,EACA,cAAAD,EACA,eAAAG,EACA,cAAAC,EACA,gBAAAT,EACA,mBAAAU,EACA,oBAAAe,GACA,2BAAAlB,CAAA,CAEJ,CC3MO,SAASqB,GAAapE,EAAQ,KAAO,CAC1C,KAAM,CAACqE,EAAQC,CAAS,EAAIpF,EAAAA,SAAS,EAAK,EACpC,CAACqF,EAAWC,CAAY,EAAItF,EAAAA,SAAS,EAAK,EAC1CuF,EAAY/E,GAAA,EAEZgF,EAAOrF,EAAAA,YACX,MAAOsF,GAAiB,CACtB,GAAIJ,EAAW,MAAO,GACtB,MAAMK,EAAcD,EAAK,KAAA,EACzB,GAAI,CAACC,EAAa,MAAO,GACzBJ,EAAa,EAAI,EACjB,GAAI,CACF,aAAM,UAAU,UAAU,UAAUI,CAAW,EAC/CN,EAAU,EAAI,EACdG,EAAU,IAAI,IAAM,CAClBH,EAAU,EAAK,CACjB,EAAGtE,CAAK,EACD,EACT,OAAS6E,EAAK,CACZ,eAAQ,KAAK,cAAeA,CAAG,EACxB,EACT,QAAA,CACEL,EAAa,EAAK,CACpB,CACF,EACA,CAACD,EAAWE,CAAS,CAAA,EAGvB,MAAO,CAAE,OAAAJ,EAAQ,UAAAE,EAAW,KAAAG,CAAA,CAC9B,CCtBA,MAAMI,GAAQ,KAEP,SAASC,GAAc,CAAE,QAAAC,EAAS,cAAA5G,EAAe,OAAA6G,GAAgC,CACtF,MAAMC,EAAYxF,GAAA,EACZ,CAAE,OAAA2E,EAAQ,KAAAK,GAASN,GAAaU,EAAK,EAErCK,EAAgBrH,EAAAA,QAAQ,IAAOuG,EAAS,SAAW,QAAQjG,CAAa,GAAK,CAACiG,EAAQjG,CAAa,CAAC,EACpGgH,EAAkBtH,EAAAA,QAAQ,IAAOuG,EAAS,SAAW,oBAAsB,CAACA,CAAM,CAAC,EAEnFgB,EAAyBhG,EAAAA,YAC5BiG,GAAoB,CACdN,GAAS,UACdA,EAAQ,QAAQ,YAAcM,EAC9BJ,EAAU,IAAI,IAAM,CACdF,EAAQ,UAASA,EAAQ,QAAQ,YAAc,GACrD,EAAGF,EAAK,EACV,EACA,CAACE,EAASE,CAAS,CAAA,EAGfK,EAAclG,EAAAA,YAAY,SAAY,CAC1C,MAAMmG,EAAcpH,EAAc,KAAA,EAClB,MAAMsG,EAAKc,CAAW,IAEpCP,IAASO,CAAW,EACpBH,EAAuB,kCAAkC,EAE7D,EAAG,CAACjH,EAAesG,EAAMO,EAAQI,CAAsB,CAAC,EAExD,MAAO,CACL,OAAAhB,EACA,cAAAc,EACA,gBAAAC,EACA,YAAAG,CAAA,CAEJ,CCrCO,SAASE,GAAS,CAAE,MAAAC,GAA0B,CACnD,KAAM,CAACC,EAAYC,CAAa,EAAI1G,EAAAA,SAAS,EAAK,EAE5C2G,EAAa/H,EAAAA,QAAQ,IAClB4H,IAAU,OAAS,SAASA,CAAK,GAAKC,EAAa,aAAe,cACxE,CAACD,EAAOC,CAAU,CAAC,EAGtBlH,OAAAA,EAAAA,UAAU,IAAM,CACd,GAAI,OAAO,OAAW,IAAa,OACnC,MAAMqH,EAAK,OAAO,aAAa,8BAA8B,GAAK,KAClE,GAAI,CAACA,EAAI,OACTF,EAAcE,EAAG,OAAO,EAExB,MAAMC,EAAWhL,GAA2B,CAC1C6K,EAAc7K,EAAE,OAAO,CACzB,EAEA,OAAA+K,EAAG,iBAAiB,SAAUC,CAAO,EAE9B,IAAMD,EAAG,oBAAoB,SAAUC,CAAO,CACvD,EAAG,CAAA,CAAE,EAEE,CACL,WAAAF,CAAA,CAEJ,CCfA,MAAMG,GAAkB,CAACC,EAAwBC,IAAqC,CACpF,KAAM,CACJ,MAAAzI,EAAQ,GACR,QAAS0I,EACT,OAAAtH,EAAS,GACT,OAAQuH,EACR,KAAAC,EAAO,SACP,MAAAX,EAAQ,OACR,SAAAY,EAAW,GACX,SAAAC,EAAW,GACX,SAAAC,EAAW,GACX,UAAAC,EAAY,GACZ,aAAAC,EAAe,GACf,kBAAAC,EAAoB,4BACpB,cAAAC,EAAgB,qBAChB,iBAAAC,EAAmB,qBACnB,cAAAC,EAAgB,GAChB,qBAAAC,EAAuB,GACvB,SAAArJ,EACA,cAAAC,EACA,gBAAAmB,EACA,mBAAAlB,EACA,QAAAoJ,EACA,OAAAC,EACA,OAAAhC,EACA,QAAAiC,EACA,oBAAAC,EACA,WAAAC,EACA,cAAAC,EACA,eAAAC,CAAA,EACErB,EAEE,CAAE,QAAAzI,EAAS,WAAA4B,EAAY,OAAAL,EAAA,EAAWL,GAAW,CACjD,QAASyH,EACT,OAAQC,EACR,OAAAvH,EACA,gBAAAC,CAAA,CACD,EAEK,CACJ,OAAAd,EACA,UAAAH,EACA,mBAAAI,EACA,aAAAC,EACA,KAAAC,EACA,cAAAC,EACA,WAAAC,EACA,QAAAC,GACA,eAAAC,EAAA,EACEhB,GAAa,CACf,QAAAC,EACA,MAAAC,EACA,SAAAC,EACA,cAAAC,EACA,mBAAAC,CAAA,CACD,EAEK,CAAE,mBAAAsC,GAAoB,oBAAAG,EAAqB,uBAAAE,EAAA,EAA2BN,GAAA,EAEtEsH,GAAS3H,EAAAA,OAAyB,IAAI,EACtC6B,GAAU7B,EAAAA,OAAuB,IAAI,EACrCoF,GAAUpF,EAAAA,OAAuB,IAAI,EACrC8B,GAAc9B,EAAAA,OAAuB,IAAI,EACzC+B,GAAY/B,EAAAA,OAAyB,IAAI,EACzCgC,GAAchC,EAAAA,OAAuB,IAAI,EAEzCiB,EAAWyF,GAAYC,EACvBiB,GAAatH,IAAsB3B,GAEnCkJ,GAAiBjB,GAAY,CAAClI,IAAW,CAACgI,EAC1CoB,GAAkBjB,GAAa,CAACnI,IAAW,CAACuC,EAE5C,CACJ,OAAAwD,GACA,cAAAc,GACA,gBAAAC,GACA,YAAauC,EAAA,EACX5C,GAAc,CAChB,QAAAC,GACA,cAAA5G,EACA,OAAA6G,CAAA,CACD,EAEK2C,EAAavI,EAAAA,YAAY,IAAM,CACnC,WAAW,IAAMkI,GAAO,SAAS,MAAA,EAAS,CAAC,CAC7C,EAAG,CAAA,CAAE,EAEC,CAAE,kBAAArG,GAAmB,YAAAC,GAAa,cAAAG,GAAe,YAAAC,EAAA,EAAgBZ,GAAiB,CACtF,UAAA9C,EACA,OAAAG,EACA,SAAA6C,EACA,SAAAnD,EACA,uBAAA6C,EAAA,CACD,EAEK,CACJ,aAAA0B,GACA,UAAAI,GACA,OAAAN,GACA,aAAAQ,GACA,cAAAJ,GACA,kBAAAO,GACA,YAAAC,EACA,cAAAE,GACA,eAAAG,GACA,cAAAC,GACA,gBAAAT,GACA,mBAAAU,GACA,oBAAAe,GACA,2BAAAlB,EAAA,EACEvB,GAAmB,CACrB,QAAAC,GACA,YAAAC,GACA,UAAAC,GACA,YAAAC,GACA,OAAA7C,GACA,SAAA8B,EACA,cAAesF,EACf,gBAAiB/G,EACjB,cAAewI,CAAA,CAChB,EAGKC,GAAcxI,EAAAA,YACjBtE,GAA0C,CACzCsF,EAAoB,EAAK,EACzBwC,GAAA,EACAmE,IAAUjM,CAAC,CACb,EACA,CAACiM,EAASnE,GAAexC,CAAmB,CAAA,EAGxCR,EAAQR,EAAAA,YAAY,IAAM,CAC9B3B,IAAW,EAAE,EACb2C,EAAA,EACA6G,IAAA,CACF,EAAG,CAACxJ,EAAUwJ,EAAS7G,CAAmB,CAAC,EAGrCyH,GAAmBzI,EAAAA,YAAY,IAAM,CACzCQ,EAAA,EACA+H,EAAA,CACF,EAAG,CAAC/H,EAAO+H,CAAU,CAAC,EAGtBG,EAAAA,oBACE7B,EACA,KAAO,CACL,MAAO0B,EACP,KAAM,IAAML,GAAO,SAAS,KAAA,EAC5B,MAAA1H,EACA,cAAAoD,GACA,cAAe,IAAM9E,EACrB,uBAAwB,IAAMC,EAC9B,UAAW,IAAMJ,EACjB,QAAS,IAAMK,EACf,WAAY,IAAMA,CAAA,GAEpB,CAACuJ,EAAY3E,GAAe9E,EAAMC,EAAeJ,EAAQK,EAAYwB,CAAK,CAAA,EAG5E,KAAM,CAAE,WAAAgG,EAAA,EAAeJ,GAAS,CAAE,MAAAC,EAAO,EAEnCsC,GAAc,CAClB,cACA,QAAQ3B,CAAI,GACZR,GACAS,GAAY,cACZC,GAAY,cACZQ,GAAwB,cACxBL,GAAgBc,IAAc,gBAC9Bd,GAAgBrI,GAAc,aAAA,EAE7B,OAAO,OAAO,EACd,KAAK,GAAG,EAEL4J,GAAe,CAACR,IAAiB,CAACC,IAAmBP,EAAsB,EAAI,GAErF,OACEe,EAAAA,KAAAC,WAAA,CACE,SAAA,CAAAD,EAAAA,KAAC,MAAA,CACC,IAAKzG,GACL,UAAWuG,GACX,MAAO,CAAE,qBAAsBC,EAAA,EAC/B,KAAK,QACL,aAAW,oCAGX,SAAA,CAAAG,EAAAA,IAAC,MAAA,CAAI,UAAU,cAAc,IAAKxG,GAChC,SAAAsG,EAAAA,KAAC,SAAA,CACC,KAAK,SACL,UAAW,mBAAmB,CAACvF,GAAe4D,EAAW,cAAgB,EAAE,GAC3E,SAAAD,EACA,SAAUzF,GAAY,CAAC8B,EAAc,GAAK,OAC1C,aAAY,qBAAqBnF,EAAQ,IAAI,GAC7C,gBAAeyE,GACf,gBAAeU,EAAc,UAAY,OACzC,QAASK,GAET,SAAA,CAAAoF,MAAC,OAAA,CAAK,UAAU,UAAU,KAAK,MAAM,aAAY,GAAG5K,EAAQ,IAAI,QAC7D,SAAA4J,EAAaA,EAAW5J,CAAO,EAAIA,EAAQ,KAC9C,EACA4K,EAAAA,IAAC,OAAA,CAAK,UAAU,UAAW,WAAQ,KAAK,EACvC,CAACvH,GAAY8B,GACZyF,EAAAA,IAAC,MAAA,CACC,UAAW,cAAcnG,GAAe,UAAY,EAAE,GACtD,MAAM,KACN,OAAO,KACP,QAAQ,YACR,KAAK,OACL,cAAY,OAEZ,SAAAmG,EAAAA,IAAC,OAAA,CACC,EAAE,uBACF,OAAO,eACP,YAAY,MACZ,cAAc,QACd,eAAe,OAAA,CAAA,CACjB,CAAA,CACF,CAAA,CAAA,EAGN,EAGAF,EAAAA,KAAC,MAAA,CAAI,UAAU,gBACb,SAAA,CAAAE,EAAAA,IAAC,QAAA,CACC,IAAKb,GACL,KAAK,MACL,UAAU,MACV,aAAa,eACb,YAAY,MACZ,eAAe,MACf,WAAY,GACZ,UAAU,WACV,YAAatJ,EACb,MAAOC,EACP,SAAAoI,EACA,SAAUC,EACV,eAAciB,GACd,QAASrG,GACT,cAAeD,GACf,UAAWI,GACX,QAASC,GACT,QAASsG,GACT,OAAAZ,CAAA,CAAA,SAID,MAAA,CAAI,UAAU,aAAa,KAAK,UAAU,aAAW,sBACnD,SAAA,CAAAE,GAAuBA,EAAA,EAEvBM,IACCW,EAAAA,IAAC,SAAA,CACC,KAAK,SACL,UAAW,sBAAsB/D,GAAS,YAAc,EAAE,GAC1D,aAAYc,GACZ,MAAOC,GACP,QAASuC,GAER,WACCN,EAAchD,EAAM,EAClBA,SACD,MAAA,CAAI,MAAM,KAAK,OAAO,KAAK,QAAQ,YAAY,KAAK,OAAO,cAAY,OACtE,SAAA+D,MAAC,OAAA,CAAK,EAAE,6DAA6D,KAAK,cAAA,CAAe,CAAA,CAC3F,QAEC,MAAA,CAAI,MAAM,KAAK,OAAO,KAAK,QAAQ,YAAY,KAAK,OAAO,cAAY,OACtE,SAAAA,EAAAA,IAAC,OAAA,CACC,EAAE,iLACF,KAAK,cAAA,CAAA,CACP,CACF,CAAA,CAAA,EAKLV,IACCU,EAAAA,IAAC,SAAA,CACC,KAAK,SACL,UAAU,sBACV,aAAYvB,EACZ,MAAOA,EACP,QAASiB,GAER,SAAAR,EACCA,EAAA,EAEAc,EAAAA,IAAC,OAAI,MAAM,KAAK,OAAO,KAAK,QAAQ,YAAY,KAAK,OAAO,cAAY,OACtE,SAAAA,EAAAA,IAAC,OAAA,CACC,EAAE,wGACF,KAAK,cAAA,CAAA,CACP,CACF,CAAA,CAAA,CAEJ,CAAA,CAEJ,CAAA,CAAA,CACF,CAAA,CAAA,CAAA,EAIDnG,IACC,OAAO,SAAa,KACpBoG,GAAAA,aACEH,EAAAA,KAAC,MAAA,CACC,IAAKxG,GACL,UAAW,kBAAkBoF,CAAa,IAAIjB,EAAU,IAAIxD,GAAY,aAAe,EAAE,GACzF,MAAOF,GACP,KAAK,SACL,aAAW,QACX,aAAW,iBACX,eAAgBY,GAEhB,SAAA,CAAAqF,EAAAA,IAAC,MAAA,CAAI,UAAU,iBACb,SAAAA,EAAAA,IAAC,QAAA,CACC,IAAKzG,GACL,KAAK,SACL,UAAU,YACV,aAAW,mBACX,YAAagF,EACb,MAAO5E,GACP,SAAUmB,GACV,UAAWe,EAAA,CAAA,EAEf,QACC,KAAA,CAAG,UAAU,aAAa,KAAK,UAAU,wBAAuB,UAAU1B,EAAY,GAAI,SAAU,GAClG,YAAkB,OAAS,EAC1BG,GAAkB,IAAI,CAACnG,EAAG+L,KACxBJ,EAAAA,KAAC,KAAA,CAEC,GAAI,UAAUI,EAAG,GACjB,KAAK,SACL,UAAW,aAAaA,KAAQ/F,GAAe,aAAe,EAAE,IAC9DhG,EAAE,KAAOiB,EAAQ,GAAK,cAAgB,EACxC,GACA,gBAAejB,EAAE,KAAOiB,EAAQ,GAChC,MAAOjB,EAAE,KACT,QAAS,IAAM0G,GAAc1G,EAAE,EAAE,EACjC,aAAc,IAAMiG,GAAgB8F,EAAG,EAEvC,SAAA,CAAAF,MAAC,OAAA,CAAK,UAAU,UAAU,KAAK,MAAM,aAAY,GAAG7L,EAAE,IAAI,QACvD,SAAA6K,EAAaA,EAAW7K,CAAC,EAAIA,EAAE,KAClC,EACA6L,EAAAA,IAAC,OAAA,CAAK,UAAU,cAAe,WAAE,KAAK,EACtCA,EAAAA,IAAC,OAAA,CAAK,UAAU,cAAe,WAAE,IAAA,CAAK,CAAA,CAAA,EAfjC7L,EAAE,EAAA,CAiBV,EAED6L,EAAAA,IAAC,MAAG,UAAU,WAAY,WAAc,CAAA,CAE5C,CAAA,CAAA,CAAA,EAEF,SAAS,IAAA,EAIbA,EAAAA,IAAC,MAAA,CAAI,IAAKpD,GAAS,UAAU,UAAU,KAAK,SAAS,YAAU,SAAS,cAAY,MAAA,CAAO,CAAA,EAC7F,CAEJ,EAEauD,GAAaC,EAAAA,WAA2CxC,EAAe,EAEpFuC,GAAW,YAAc,aCnXlB,SAASE,GAAa7H,EAAkD,CAC7E,MAAM8H,EAAW9I,EAAAA,OAAyB,IAAI,EAExC,CAAE,QAAApC,EAAS,WAAA4B,CAAA,EAAeV,GAAW,CACzC,QAASkC,EAAQ,QACjB,OAAQA,EAAQ,OAChB,OAAQA,EAAQ,OAChB,gBAAiBA,EAAQ,eAAA,CAC1B,EAEK,CACJ,OAAA5C,EACA,UAAAH,EACA,mBAAAI,EACA,aAAAC,EACA,KAAAC,EACA,cAAAC,EACA,WAAAC,EACA,QAAAC,EACA,eAAAC,CAAA,EACEhB,GAAa,CACf,QAAAC,EACA,MAAOoD,EAAQ,MACf,SAAUA,EAAQ,SAClB,cAAeA,EAAQ,aAAA,CACxB,EAGK,CAAE,kBAAAM,EAAmB,YAAAC,EAAa,cAAAG,EAAe,YAAAC,CAAA,EAAgBZ,GAAiB,CACtF,UAAA9C,EACA,OAAAG,EACA,SAAU4C,EAAQ,QAAA,CACnB,EAGDnC,EAAAA,UAAU,IAAM,CACd,MAAMsC,EAAK2H,EAAS,QACf3H,IACLA,EAAG,aAAa,OAAQ,KAAK,EAC7BA,EAAG,aAAa,YAAa,KAAK,EACpC,EAAG,CAAA,CAAE,EAGLtC,EAAAA,UAAU,IAAM,CACd,MAAMsC,EAAK2H,EAAS,QACf3H,IAELA,EAAG,MAAQ7C,EAEX6C,EAAG,aAAa,cAAe9C,CAAkB,EACnD,EAAG,CAACC,EAAcD,CAAkB,CAAC,EAGrCQ,EAAAA,UAAU,IAAM,CACd,MAAMsC,EAAK2H,EAAS,QACpB,GAAI,CAAC3H,EAAI,OAET,MAAM4H,EAAqBzH,EACrB0H,EAAezH,EACf0H,EAAiBvH,EACjBwH,EAAevH,EAErB,OAAAR,EAAG,iBAAiB,cAAe4H,CAAkB,EACrD5H,EAAG,iBAAiB,QAAS6H,CAAY,EACzC7H,EAAG,iBAAiB,UAAW8H,CAAc,EAC7C9H,EAAG,iBAAiB,QAAS+H,CAAY,EAElC,IAAM,CACX/H,EAAG,oBAAoB,cAAe4H,CAAkB,EACxD5H,EAAG,oBAAoB,QAAS6H,CAAY,EAC5C7H,EAAG,oBAAoB,UAAW8H,CAAc,EAChD9H,EAAG,oBAAoB,QAAS+H,CAAY,CAC9C,CACF,EAAG,CAAC5H,EAAmBC,EAAaG,EAAeC,CAAW,CAAC,EAE/D,MAAM1B,EAAQR,EAAAA,YAAY,IAAM,CAC9BuB,EAAQ,SAAS,EAAE,CACrB,EAAG,CAACA,EAAQ,QAAQ,CAAC,EAErB,MAAO,CACL,IAAK8H,EACL,OAAA1K,EACA,KAAAG,EACA,cAAAC,EACA,WAAAC,EACA,QAAAC,EACA,eAAAC,EACA,QAAAf,EACA,WAAA4B,EACA,MAAAS,CAAA,CAEJ,CCrEO,MAAMkJ,GAAe,CAAA,aAC1BC,GACA,kBAAA9M,GACA,oBAAAG,EACA,gBAAAD,GACA,wBAAAD,GACA,QAAAF,EACF"}
@@ -1 +1 @@
1
- .phone-input,.phone-dropdown{--pi-bg: #ffffff;--pi-fg: #111827;--pi-muted: #6b7280;--pi-border: #e5e7eb;--pi-border-hover: #d1d5db;--pi-border-focus: #3b82f6;--pi-radius: 8px;--pi-padding: 12px;--pi-font-size: 16px;--pi-height: 44px;--pi-actions-size: 32px;--pi-shadow: 0 1px 2px 0 rgb(0 0 0 / .05);--pi-shadow-lg: 0 10px 15px -3px rgb(0 0 0 / .1), 0 4px 6px -2px rgb(0 0 0 / .05);--pi-warning: #f59e0b;--pi-warning-light: #fbbf24;--pi-success: #10b981;--pi-focus-ring: 3px solid rgb(59 130 246 / .15);--pi-focus-ring-warning: 3px solid rgb(245 158 11 / .15);--pi-focus-ring-success: 3px solid rgb(16 185 129 / .15);--pi-disabled-bg: #f9fafb;--pi-disabled-fg: #9ca3af}.phone-input.theme-dark,.phone-dropdown.theme-dark{--pi-bg: #1f2937;--pi-fg: #f9fafb;--pi-muted: #9ca3af;--pi-border: #374151;--pi-border-hover: #4b5563;--pi-border-focus: #60a5fa;--pi-shadow: 0 1px 3px 0 rgb(0 0 0 / .3);--pi-shadow-lg: 0 20px 25px -5px rgb(0 0 0 / .3), 0 10px 10px -5px rgb(0 0 0 / .2);--pi-warning: #fbbf24;--pi-warning-light: #fcd34d;--pi-focus-ring: 3px solid rgb(96 165 250 / .2);--pi-focus-ring-warning: 3px solid rgb(251 191 24 / .2);--pi-focus-ring-success: 3px solid rgb(16 185 129 / .2);--pi-disabled-bg: #374151}.phone-input *,.phone-input *:before,.phone-input *:after,.phone-dropdown *,.phone-dropdown *:before,.phone-dropdown *:after{box-sizing:border-box}.phone-input button,.phone-input input,.phone-dropdown button,.phone-dropdown input{margin:0;padding:0;border:none;background:none;font:inherit;color:inherit}.phone-input button,.phone-dropdown button{cursor:pointer}.phone-input button:disabled,.phone-dropdown button:disabled{cursor:not-allowed}.phone-input input,.phone-dropdown input{outline:none}.phone-input input::placeholder,.phone-dropdown input::placeholder{opacity:.5}.phone-input input:disabled,.phone-dropdown input:disabled{cursor:not-allowed}.phone-input,.phone-dropdown{font-size:var(--pi-font-size);background:var(--pi-bg);color:var(--pi-fg);border-radius:var(--pi-radius);border:1px solid var(--pi-border)}.phone-input{position:relative;display:flex;align-items:stretch;width:100%}.phone-input:focus-within{outline:var(--pi-focus-ring)}.phone-input.is-incomplete{border-color:var(--pi-warning)}.phone-input.is-incomplete:focus-within{outline:var(--pi-focus-ring-warning)}.phone-input.is-complete{border-color:var(--pi-success)}.phone-input.is-complete:focus-within{outline:var(--pi-focus-ring-success)}.phone-input.is-disabled{background:var(--pi-disabled-bg);color:var(--pi-disabled-fg)}.phone-input.is-readonly{cursor:default}.phone-input.size-compact{--pi-font-size: 14px;--pi-height: 36px;--pi-padding: 10px;--pi-actions-size: 24px}.phone-input.size-large{--pi-font-size: 18px;--pi-height: 52px;--pi-padding: 16px;--pi-actions-size: 32px}.phone-input.is-unstyled{all:initial;display:block}.phone-input .pi-selector{flex-shrink:0}.phone-input .pi-selector-btn{display:flex;align-items:center;gap:6px;padding-left:var(--pi-padding);padding-right:0;min-height:var(--pi-height);border:1px solid transparent;border-radius:var(--pi-radius) 0 0 var(--pi-radius);transition:all .15s cubic-bezier(.4,0,.2,1)}.phone-input .pi-selector-btn.no-dropdown{cursor:default}.phone-input .pi-selector-btn:focus-visible{border-color:var(--pi-border-focus);outline:none}.phone-input .pi-selector-btn:disabled>.pi-flag{opacity:.5}.phone-input .pi-flag{font-size:1.25em;line-height:1;display:inline-flex}.phone-input .pi-code{color:var(--pi-fg)}.phone-input .pi-chevron{margin-left:2px;color:var(--pi-muted);transition:transform .2s ease}.phone-input .pi-chevron.is-open{transform:rotate(180deg)}.phone-input .pi-input-wrap{flex:1;position:relative;display:flex;align-items:center}.phone-input .pi-input{flex:1;width:100%;padding-left:var(--pi-padding);padding-right:calc((var(--pi-actions-size) + 2px) * var(--pi-actions-count) + var(--pi-padding));min-height:var(--pi-height);border-radius:0 var(--pi-radius) var(--pi-radius) 0;transition:all .15s cubic-bezier(.4,0,.2,1)}.phone-input .pi-input:hover:not(:disabled):not(:read-only){border-color:var(--pi-border-hover)}.phone-input .pi-input:focus{border-color:var(--pi-border-focus);position:relative}.phone-input .pi-actions{position:absolute;right:2px;top:50%;transform:translateY(-50%);display:inline-flex;align-items:center;gap:2px}.phone-input .pi-btn{display:flex;align-items:center;justify-content:center;width:var(--pi-actions-size);height:var(--pi-actions-size);background:transparent;color:var(--pi-muted);border:none;border-radius:9999px;transition:all .15s cubic-bezier(.4,0,.2,1)}.phone-input .pi-btn:hover{background:var(--pi-disabled-bg);color:var(--pi-fg)}.phone-input .pi-btn:active:not(:disabled){transform:scale(.95)}.phone-input .pi-btn:focus{outline:1px solid var(--pi-border-focus);outline-offset:-1px}.phone-input .pi-btn.is-copied{color:var(--pi-success);border-color:var(--pi-success)}.phone-input .pi-btn svg{flex-shrink:0}.phone-input .sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.phone-dropdown{position:absolute;z-index:9999;max-width:400px;box-shadow:var(--pi-shadow-lg);overflow:hidden;animation:dropdown-enter .2s cubic-bezier(.4,0,.2,1) both}.phone-dropdown .pi-search-wrap{padding:8px;border-bottom:1px solid var(--pi-border)}.phone-dropdown .pi-search{width:100%;padding:8px 12px;font-size:.875em;border:1px solid var(--pi-border);border-radius:calc(var(--pi-radius) - 2px);background:var(--pi-bg);transition:border-color .15s ease}.phone-dropdown .pi-search:focus{border-color:var(--pi-border-focus)}.phone-dropdown .pi-options{max-height:300px;overflow-y:auto;padding:4px 0;margin:0;list-style:none}.phone-dropdown .pi-options::-webkit-scrollbar{width:8px}.phone-dropdown .pi-options::-webkit-scrollbar-track{background:transparent}.phone-dropdown .pi-options::-webkit-scrollbar-thumb{background:var(--pi-border);border-radius:4px}.phone-dropdown .pi-options::-webkit-scrollbar-thumb:hover{background:var(--pi-border-hover)}.phone-dropdown .pi-option{display:flex;align-items:center;gap:8px;padding:8px 12px;cursor:pointer;transition:background-color .1s ease}.phone-dropdown .pi-option:hover,.phone-dropdown .pi-option.is-focused{background:var(--pi-disabled-bg)}.phone-dropdown .pi-option.is-selected{background:var(--pi-border);font-weight:500}.phone-dropdown .pi-opt-name{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.phone-dropdown .pi-opt-code{color:var(--pi-muted);font-size:.875em}.phone-dropdown .pi-empty{padding:12px;text-align:center;color:var(--pi-muted);font-size:.875em}@keyframes dropdown-enter{0%{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:translateY(0)}}@keyframes dropdown-leave{0%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(-8px)}}.phone-dropdown.is-closing{animation:dropdown-leave .2s cubic-bezier(.4,0,.2,1) both}@keyframes fade-scale-in{0%{opacity:0;transform:scale(.8)}to{opacity:1;transform:scale(1)}}.pi-actions .pi-btn{animation:fade-scale-in .2s cubic-bezier(.4,0,.2,1) both}@media(max-width:480px){.phone-input{--pi-padding: 8px;--pi-actions-size: 24px}.size-compact{--pi-actions-size: 20px}.phone-dropdown{left:0;right:0;max-width:none}}@media(prefers-reduced-motion:reduce){*{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}
1
+ .phone-input,.phone-dropdown{--pi-bg: #ffffff;--pi-fg: #111827;--pi-muted: #6b7280;--pi-border: #e5e7eb;--pi-border-hover: #d1d5db;--pi-border-focus: #3b82f6;--pi-radius: 8px;--pi-padding: 12px;--pi-font-size: 16px;--pi-height: 44px;--pi-actions-size: 32px;--pi-shadow: 0 1px 2px 0 rgb(0 0 0 / .05);--pi-shadow-lg: 0 10px 15px -3px rgb(0 0 0 / .1), 0 4px 6px -2px rgb(0 0 0 / .05);--pi-warning: #f59e0b;--pi-warning-light: #fbbf24;--pi-success: #10b981;--pi-focus-ring: 3px solid rgb(59 130 246 / .15);--pi-focus-ring-warning: 3px solid rgb(245 158 11 / .15);--pi-focus-ring-success: 3px solid rgb(16 185 129 / .15);--pi-disabled-bg: #f9fafb;--pi-disabled-fg: #9ca3af}.phone-input.theme-dark,.phone-dropdown.theme-dark{--pi-bg: #1f2937;--pi-fg: #f9fafb;--pi-muted: #9ca3af;--pi-border: #374151;--pi-border-hover: #4b5563;--pi-border-focus: #60a5fa;--pi-shadow: 0 1px 3px 0 rgb(0 0 0 / .3);--pi-shadow-lg: 0 20px 25px -5px rgb(0 0 0 / .3), 0 10px 10px -5px rgb(0 0 0 / .2);--pi-warning: #fbbf24;--pi-warning-light: #fcd34d;--pi-focus-ring: 3px solid rgb(96 165 250 / .2);--pi-focus-ring-warning: 3px solid rgb(251 191 24 / .2);--pi-focus-ring-success: 3px solid rgb(16 185 129 / .2);--pi-disabled-bg: #374151}.phone-input *,.phone-input *:before,.phone-input *:after,.phone-dropdown *,.phone-dropdown *:before,.phone-dropdown *:after{box-sizing:border-box}.phone-input button,.phone-input input,.phone-dropdown button,.phone-dropdown input{margin:0;padding:0;border:none;background:none;font:inherit;color:inherit}.phone-input button,.phone-dropdown button{cursor:pointer}.phone-input button:disabled,.phone-dropdown button:disabled{cursor:not-allowed}.phone-input input,.phone-dropdown input{outline:none}.phone-input input::placeholder,.phone-dropdown input::placeholder{opacity:.5}.phone-input input:disabled,.phone-dropdown input:disabled{cursor:not-allowed}.phone-input,.phone-dropdown{font-size:var(--pi-font-size);background:var(--pi-bg);color:var(--pi-fg);border-radius:var(--pi-radius);border:1px solid var(--pi-border)}.phone-input{position:relative;display:flex;align-items:stretch;width:100%}.phone-input:focus-within{outline:var(--pi-focus-ring)}.phone-input.is-incomplete{border-color:var(--pi-warning)}.phone-input.is-incomplete:focus-within{outline:var(--pi-focus-ring-warning)}.phone-input.is-complete{border-color:var(--pi-success)}.phone-input.is-complete:focus-within{outline:var(--pi-focus-ring-success)}.phone-input.is-disabled{background:var(--pi-disabled-bg);color:var(--pi-disabled-fg)}.phone-input.is-readonly{cursor:default}.phone-input.size-compact{--pi-font-size: 14px;--pi-height: 36px;--pi-padding: 10px;--pi-actions-size: 24px}.phone-input.size-large{--pi-font-size: 18px;--pi-height: 52px;--pi-padding: 16px;--pi-actions-size: 32px}.phone-input.is-unstyled{all:initial;display:block}.phone-input .pi-selector{flex-shrink:0}.phone-input .pi-selector-btn{display:flex;align-items:center;gap:6px;padding-left:var(--pi-padding);padding-right:0;min-height:var(--pi-height);border:1px solid transparent;border-radius:var(--pi-radius) 0 0 var(--pi-radius);transition:all .15s cubic-bezier(.4,0,.2,1)}.phone-input .pi-selector-btn.no-dropdown{cursor:default}.phone-input .pi-selector-btn:focus-visible{border-color:var(--pi-border-focus);outline:none}.phone-input .pi-selector-btn:disabled>.pi-flag{opacity:.5}.phone-input .pi-flag{font-size:1.25em;line-height:1;display:inline-flex}.phone-input .pi-code{color:var(--pi-fg)}.phone-input .pi-chevron{margin-left:2px;color:var(--pi-muted);transition:transform .2s ease}.phone-input .pi-chevron.is-open{transform:rotate(180deg)}.phone-input .pi-input-wrap{flex:1;position:relative;display:flex;align-items:center}.phone-input .pi-input{flex:1;width:100%;padding-left:var(--pi-padding);padding-right:calc((var(--pi-actions-size) + 2px) * var(--pi-actions-count) + var(--pi-padding));min-height:var(--pi-height);border-radius:0 var(--pi-radius) var(--pi-radius) 0;transition:all .15s cubic-bezier(.4,0,.2,1)}.phone-input .pi-input:hover:not(:disabled):not(:read-only){border-color:var(--pi-border-hover)}.phone-input .pi-input:focus{border-color:var(--pi-border-focus);position:relative}.phone-input .pi-actions{position:absolute;right:2px;top:50%;transform:translateY(-50%);display:inline-flex;align-items:center;gap:2px}.phone-input .pi-btn{display:flex;align-items:center;justify-content:center;width:var(--pi-actions-size);height:var(--pi-actions-size);background:transparent;color:var(--pi-muted);border:none;border-radius:9999px;transition:all .15s cubic-bezier(.4,0,.2,1)}.phone-input .pi-btn:hover{background:var(--pi-disabled-bg);color:var(--pi-fg)}.phone-input .pi-btn:active:not(:disabled){transform:scale(.95)}.phone-input .pi-btn:focus{outline:1px solid var(--pi-border-focus);outline-offset:-1px}.phone-input .pi-btn.is-copied{color:var(--pi-success);border-color:var(--pi-success)}.phone-input .pi-btn svg{flex-shrink:0}.phone-dropdown{position:absolute;z-index:9999;max-width:400px;box-shadow:var(--pi-shadow-lg);overflow:hidden;animation:dropdown-enter .2s cubic-bezier(.4,0,.2,1) both}.phone-dropdown .pi-search-wrap{padding:8px;border-bottom:1px solid var(--pi-border)}.phone-dropdown .pi-search{width:100%;padding:8px 12px;font-size:.875em;border:1px solid var(--pi-border);border-radius:calc(var(--pi-radius) - 2px);background:var(--pi-bg);transition:border-color .15s ease}.phone-dropdown .pi-search:focus{border-color:var(--pi-border-focus)}.phone-dropdown .pi-options{max-height:300px;overflow-y:auto;padding:4px 0;margin:0;list-style:none}.phone-dropdown .pi-options::-webkit-scrollbar{width:8px}.phone-dropdown .pi-options::-webkit-scrollbar-track{background:transparent}.phone-dropdown .pi-options::-webkit-scrollbar-thumb{background:var(--pi-border);border-radius:4px}.phone-dropdown .pi-options::-webkit-scrollbar-thumb:hover{background:var(--pi-border-hover)}.phone-dropdown .pi-option{display:flex;align-items:center;gap:8px;padding:8px 12px;cursor:pointer;transition:background-color .1s ease}.phone-dropdown .pi-option:hover,.phone-dropdown .pi-option.is-focused{background:var(--pi-disabled-bg)}.phone-dropdown .pi-option.is-selected{background:var(--pi-border);font-weight:500}.phone-dropdown .pi-opt-name{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.phone-dropdown .pi-opt-code{color:var(--pi-muted);font-size:.875em}.phone-dropdown .pi-empty{padding:12px;text-align:center;color:var(--pi-muted);font-size:.875em}@keyframes dropdown-enter{0%{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:translateY(0)}}@keyframes dropdown-leave{0%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(-8px)}}.phone-dropdown.is-closing{animation:dropdown-leave .2s cubic-bezier(.4,0,.2,1) both}@keyframes fade-scale-in{0%{opacity:0;transform:scale(.8)}to{opacity:1;transform:scale(1)}}.pi-actions .pi-btn{animation:fade-scale-in .2s cubic-bezier(.4,0,.2,1) both}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}@media(max-width:480px){.phone-input{--pi-padding: 8px;--pi-actions-size: 24px}.size-compact{--pi-actions-size: 20px}.phone-dropdown{left:0;right:0;max-width:none}}@media(prefers-reduced-motion:reduce){*{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@desource/phone-mask-react",
3
- "version": "0.3.0",
3
+ "version": "1.0.0",
4
4
  "description": "📱 React component and hook for international phone number input with smart masking. Powered by @desource/phone-mask and Google libphonenumber.",
5
5
  "keywords": [
6
6
  "phone",
@@ -27,9 +27,9 @@
27
27
  "directory": "packages/phone-mask-react"
28
28
  },
29
29
  "bugs": {
30
- "url": "https://github.com/stefanpopov/phone-mask/issues"
30
+ "url": "https://github.com/DeSource-Labs/phone-mask/issues"
31
31
  },
32
- "homepage": "https://github.com/stefanpopov/phone-mask/tree/main/packages/phone-mask-react#readme",
32
+ "homepage": "https://github.com/DeSource-Labs/phone-mask/tree/main/packages/phone-mask-react#readme",
33
33
  "private": false,
34
34
  "publishConfig": {
35
35
  "access": "public"
@@ -48,10 +48,7 @@
48
48
  "./assets/lib.css": "./dist/phone-mask-react.css"
49
49
  },
50
50
  "files": [
51
- "dist/esm",
52
- "dist/phone-mask-react.cjs",
53
- "dist/phone-mask-react.cjs.map",
54
- "dist/phone-mask-react.css",
51
+ "dist",
55
52
  "CHANGELOG.md",
56
53
  "README.md"
57
54
  ],
@@ -60,18 +57,23 @@
60
57
  "react-dom": "^18.0.0 || ^19.0.0"
61
58
  },
62
59
  "dependencies": {
63
- "@desource/phone-mask": "0.3.0"
60
+ "@desource/phone-mask": "1.0.0"
64
61
  },
65
62
  "devDependencies": {
63
+ "@testing-library/react": "^16.3.2",
66
64
  "@types/react": "^19.2.14",
67
65
  "@types/react-dom": "^19.2.3",
68
66
  "react": "^19.2.4",
69
67
  "react-dom": "^19.2.4"
70
68
  },
71
69
  "scripts": {
72
- "clean": "rimraf dist",
70
+ "clean": "rimraf dist tsconfig.build.tsbuildinfo test-results coverage",
73
71
  "dev": "cd demo && vite",
74
- "build": "vite build && tsc --project tsconfig.build.json",
75
- "typecheck": "tsc --noEmit"
72
+ "build:internal": "vite build && tsc --project tsconfig.build.json",
73
+ "build": "pnpm clean && pnpm build:internal",
74
+ "typecheck": "tsc --noEmit",
75
+ "test:unit": "vitest run",
76
+ "test:unit:coverage": "vitest run --coverage.enabled --coverage.provider=v8 --coverage.reporter=lcov --coverage.reportsDirectory=coverage",
77
+ "test:e2e": "playwright test"
76
78
  }
77
79
  }
@@ -1,4 +0,0 @@
1
- export declare const Delimiters: string[];
2
- export declare const NavigationKeys: string[];
3
- export declare const InvalidPattern: RegExp;
4
- //# sourceMappingURL=consts.d.ts.map