@desource/phone-mask-react 0.3.0 → 1.1.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.
- package/CHANGELOG.md +65 -0
- package/README.md +51 -23
- package/dist/esm/components/PhoneInput.d.ts +2 -9
- package/dist/esm/components/PhoneInput.d.ts.map +1 -1
- package/dist/esm/hooks/internal/useCopyAction.d.ts +14 -0
- package/dist/esm/hooks/internal/useCopyAction.d.ts.map +1 -0
- package/dist/esm/hooks/internal/useCountry.d.ts +21 -0
- package/dist/esm/hooks/internal/useCountry.d.ts.map +1 -0
- package/dist/esm/hooks/internal/useCountrySelector.d.ts +32 -0
- package/dist/esm/hooks/internal/useCountrySelector.d.ts.map +1 -0
- package/dist/esm/hooks/internal/useFormatter.d.ts +45 -0
- package/dist/esm/hooks/internal/useFormatter.d.ts.map +1 -0
- package/dist/esm/hooks/internal/useInputHandlers.d.ts +21 -0
- package/dist/esm/hooks/internal/useInputHandlers.d.ts.map +1 -0
- package/dist/esm/hooks/internal/useTheme.d.ts +9 -0
- package/dist/esm/hooks/internal/useTheme.d.ts.map +1 -0
- package/dist/esm/hooks/internal/useValidationHint.d.ts +6 -0
- package/dist/esm/hooks/internal/useValidationHint.d.ts.map +1 -0
- package/dist/esm/hooks/usePhoneMask.d.ts +2 -1
- package/dist/esm/hooks/usePhoneMask.d.ts.map +1 -1
- package/dist/esm/hooks/utility/useClipboard.d.ts +6 -0
- package/dist/esm/hooks/utility/useClipboard.d.ts.map +1 -0
- package/dist/esm/hooks/utility/useTimer.d.ts +9 -0
- package/dist/esm/hooks/utility/useTimer.d.ts.map +1 -0
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js +751 -705
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/types.d.ts +18 -20
- package/dist/esm/types.d.ts.map +1 -1
- package/dist/phone-mask-react.cjs +1 -1
- package/dist/phone-mask-react.cjs.map +1 -1
- package/dist/phone-mask-react.css +1 -1
- package/package.json +13 -11
- package/dist/esm/consts.d.ts +0 -4
- package/dist/esm/consts.d.ts.map +0 -1
- package/dist/esm/utils.d.ts +0 -16
- 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 r}from\"./entries.js\";function getNavigatorLang(){return globalThis.navigator?.language||\"en\"}function detectCountryFromLocale(){try{const t=getNavigatorLang();try{const r=new Intl.Locale(t);if(r.region)return r.region.toUpperCase()}catch{}const r=t.split(/[-_]/);if(r.length>1)return r[1]?.toUpperCase()||null}catch{}return null}function hasCountry(t){const e=r;return t.toUpperCase()in e}function getCountry(r,e){const n=t(e),o=r.toUpperCase();return o in n?{id:o,...n[o]}:{id:\"US\",...n.US}}function parseCountryCode(t,r){return t&&hasCountry(t)?t.toUpperCase():r||\"\"}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,r){if(!t.length)return\"\";if(1===t.length)return t[0];const e=t.map(t=>({mask:t,count:countPlaceholders(t)})),n=e.filter(t=>t.count>=r).sort((t,r)=>t.count-r.count);if(n.length>0)return n[0].mask;const o=e.sort((t,r)=>r.count-t.count)[0];return o?o.mask:t[0]}function formatDigitsWithMap(t,r){let e=\"\";const n=[];let o=0;const a=r.length,s=t.length;for(let c=0;c<s;c++){const s=t[c];if(\"#\"===s){if(!(o<a))break;e+=r[o],n.push(o),o++}else{const r=-1!==t.indexOf(\"#\",c+1)&&o<a;(e.length>0||r)&&(e+=s,n.push(-1))}}return{display:e,map:n}}function filterCountries(t,r){const e=r.trim().toUpperCase();if(!e)return t;const n=e.replace(/\\D/g,\"\"),o=n.length>0;return t.map(t=>{const r=t.name.toUpperCase(),a=t.id.toUpperCase(),s=t.code.toUpperCase(),c=t.code.replace(/\\D/g,\"\");let i=0;return r.startsWith(e)?i=1e3:r.includes(e)&&(i=500),s.startsWith(e)?i+=100:s.includes(e)&&(i+=50),a===e?i+=200:a.startsWith(e)&&(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,r)=>r.score===t.score?t.country.name.localeCompare(r.country.name):r.score-t.score).map(t=>t.country)}export{countPlaceholders,detectCountryFromLocale,filterCountries,formatDigitsWithMap,getCountry,getNavigatorLang,hasCountry,parseCountryCode,pickMaskVariant,removeCountryCodePrefix,toArray};\n","const e=[\" \",\"-\",\"(\",\")\"],t=[\"ArrowLeft\",\"ArrowRight\",\"ArrowUp\",\"ArrowDown\",\"Home\",\"End\",\"Tab\"],n=/[^\\d\\s\\-()]/;function removeDigitsRange(e,t,n){return{newDigits:e.slice(0,t)+e.slice(n),caretDigitIndex:t}}function removeSelectedDigits(e,t,n,i){if(n===i)return;const r=t.getDigitRange(e,n,i);if(!r)return;const[s,g]=r;return removeDigitsRange(e,s,g)}function extractDigits(e,t){const n=e.replace(/\\D/g,\"\");return t?n.slice(0,t):n}function getSelection(e){return e?[e.selectionStart??0,e.selectionEnd??0]:[0,0]}function setCaret(e,t){if(e)try{e.setSelectionRange(t,t)}catch{}}function processBeforeInput(e){if(!e.target)return;const t=e.target,i=e.data;\"insertText\"===e.inputType&&i&&(n.test(i)||\" \"===i&&t.value.endsWith(\" \"))&&e.preventDefault()}function processInput(e,t){if(!e.target)return;const n=e.target,{formatter:i}=t,r=i.getMaxDigits(),s=extractDigits(n.value,r);return{newDigits:s,caretDigitIndex:s.length}}function processKeydown(n,i){if(!n.target)return;const r=n.target,{digits:s,formatter:g}=i;if(function shouldIgnoreKeydown(e){return e.ctrlKey||e.metaKey||e.altKey||t.includes(e.key)}(n))return;const[o,c]=getSelection(r),a=r.value;return\"Backspace\"===n.key?(n.preventDefault(),removeSelectedDigits(s,g,o,c)??function removePreviousDigit(t,n,i,r){if(r<=0)return;let s=r-1;for(;s>=0&&e.includes(i[s]);)s--;if(s<0)return;const g=n.getDigitRange(t,s,s+1);if(!g)return;const[o]=g;return removeDigitsRange(t,o,o+1)}(s,g,a,o)):\"Delete\"===n.key?(n.preventDefault(),removeSelectedDigits(s,g,o,c)??function removeNextDigit(e,t,n,i){if(i>=n.length)return;const r=t.getDigitRange(e,i,n.length);if(!r)return;const[s]=r;return removeDigitsRange(e,s,s+1)}(s,g,a,o)):void(/^\\d$/.test(n.key)?s.length>=g.getMaxDigits()&&n.preventDefault():1===n.key.length&&n.preventDefault())}function processPaste(e,t){if(!e.target)return;e.preventDefault();const n=e.target,{digits:i,formatter:r}=t,s=e.clipboardData?.getData(\"text\")||\"\",g=r.getMaxDigits(),o=extractDigits(s,g);if(0===o.length)return;const[c,a]=getSelection(n);if(c!==a){const e=r.getDigitRange(i,c,a);if(e){const[t,n]=e;return{newDigits:extractDigits(i.slice(0,t)+o+i.slice(n),g),caretDigitIndex:t+o.length}}}const u=r.getDigitRange(i,0,c),l=u?u[1]:0;return{newDigits:extractDigits(i.slice(0,l)+o+i.slice(l),g),caretDigitIndex:l+o.length}}export{e as DELIMITERS,n as INVALID_PATTERN,t 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 a}from\"./utils.js\";function createPhoneFormatter(o){const i=r(o.mask),l=i.map(n=>t(e(n))),s=Math.max(...l),getMask=t=>{const n=a(i,t);return e(n)};return{formatDisplay:t=>{const e=getMask(t.length);return n(e,t).display},getMaxDigits:()=>s,getPlaceholder:()=>getMask(0),getCaretPosition:t=>{const e=Math.max(0,t);if(0===e)return 0;const r=getMask(e),{display:a}=n(r,\"0\".repeat(e));return a.length},getDigitRange:(t,e,r)=>{const a=getMask(t.length),{map:o}=n(a,t);let i=1/0,l=-1/0;for(let t=e;t<r&&t<o.length;t++){const e=o[t];void 0!==e&&e>=0&&(i=Math.min(i,e),l=Math.max(l,e))}return i===1/0?null:[i,l+1]},isComplete:t=>l.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 + globalThis.scrollY + 8}px`,\n left: `${rect.left + globalThis.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 globalThis.addEventListener('resize', positionDropdown);\n globalThis.addEventListener('scroll', positionDropdown, true);\n globalThis.addEventListener('click', onDocClick, true);\n\n return () => {\n globalThis.removeEventListener('resize', positionDropdown);\n globalThis.removeEventListener('scroll', positionDropdown, true);\n globalThis.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 if (theme === 'auto') {\n return systemDark ? 'theme-dark' : 'theme-light';\n }\n\n return `theme-${theme}`;\n }, [theme, systemDark]);\n\n // Track system color scheme reactively so theme:'auto' responds to OS changes at runtime\n useEffect(() => {\n const mq = globalThis.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 useId,\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 const dropdownId = useId();\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 const listboxId = `pi-options-${dropdownId}`;\n const optionIdPrefix = `pi-option-${dropdownId}`;\n const activeOptionId =\n dropdownOpen && filteredCountries[focusedIndex] ? `${optionIdPrefix}-${focusedIndex}` : undefined;\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?.()}\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 aria-controls={listboxId}\n aria-activedescendant={activeOptionId}\n placeholder={searchPlaceholder}\n value={search}\n onChange={handleSearchChange}\n onKeyDown={handleSearchKeydown}\n />\n </div>\n <ul id={listboxId} className=\"pi-options\" role=\"listbox\" tabIndex={-1}>\n {filteredCountries.length > 0 ? (\n filteredCountries.map((c, idx) => (\n <li\n key={c.id}\n id={`${optionIdPrefix}-${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 formatter,\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","c","filterCountries","i","removeDigitsRange","removeSelectedDigits","g","extractDigits","getSelection","setCaret","processBeforeInput","processInput","processKeydown","processPaste","u","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","dropdownId","useId","telRef","incomplete","showCopyButton","showClearButton","handleCopyClick","focusInput","handleFocus","handleClearClick","useImperativeHandle","rootClasses","actionsCount","listboxId","optionIdPrefix","activeOptionId","jsxs","Fragment","jsx","createPortal","idx","PhoneInput","forwardRef","usePhoneMask","inputRef","beforeInputHandler","inputHandler","keydownHandler","pasteHandler","PMaskHelpers","getFlagEmoji"],"mappings":"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"}
|
|
@@ -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
|
|
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-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 *,.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{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": "
|
|
3
|
+
"version": "1.1.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/
|
|
30
|
+
"url": "https://github.com/DeSource-Labs/phone-mask/issues"
|
|
31
31
|
},
|
|
32
|
-
"homepage": "https://github.com/
|
|
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
|
|
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": "
|
|
60
|
+
"@desource/phone-mask": "1.1.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
|
-
"
|
|
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
|
}
|
package/dist/esm/consts.d.ts
DELETED