@desource/phone-mask-react 1.0.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.
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../phone-mask/dist/esm/data.min.js","../../../phone-mask/dist/esm/country-code-emodji.js","../../../phone-mask/dist/esm/entries.js","../../../phone-mask/dist/esm/utils.js","../../../phone-mask/dist/esm/handlers.js","../../../phone-mask/dist/esm/formatter.js","../../../phone-mask/dist/esm/services/geoip/consts.js","../../../phone-mask/dist/esm/services/geoip/utils.js","../../src/hooks/internal/useFormatter.ts","../../src/hooks/internal/useCountry.ts","../../src/hooks/utility/useTimer.ts","../../src/hooks/internal/useValidationHint.ts","../../src/hooks/internal/useInputHandlers.ts","../../src/hooks/internal/useCountrySelector.ts","../../src/hooks/utility/useClipboard.ts","../../src/hooks/internal/useCopyAction.ts","../../src/hooks/internal/useTheme.ts","../../src/components/PhoneInput.tsx","../../src/hooks/usePhoneMask.ts","../../src/index.ts"],"sourcesContent":["const M={AC:\"+247 #####\",AD:[\"+376 ### ###\",\"+376 #### ####\"],AE:[\"+971 # ### ####\",\"+971 ## ### ####\",\"+971 ### ######\",\"+971 ### # #####\"],AF:\"+93 ## ### ####\",AG:\"+1 ###-###-####\",AI:\"+1 ###-###-####\",AL:[\"+355 ## ### ###\",\"+355 ## ### ####\",\"+355 ### ####\",\"+355 ### ###\",\"+355 ### #####\"],AM:[\"+374 ## ######\",\"+374 ### ## ###\"],AO:\"+244 ### ### ###\",AR:[\"+54 ## ####-####\",\"+54 # ## ####-####\",\"+54 ###-###-####\"],AS:\"+1 ###-###-####\",AT:[\"+43 # #########\",\"+43 ### ######\"],AU:[\"+61 # #### ####\",\"+61 ### ### ###\",\"+61 #### ### ###\",\"+61 ## ### ##\"],AW:\"+297 ### ####\",AX:[\"+358 ## #######\",\"+358 ### ######\"],AZ:[\"+994 ## ### ## ##\",\"+994 ### ## ## ##\"],BA:[\"+387 ## ###-###\",\"+387 ## ### ###\"],BB:\"+1 ###-###-####\",BD:[\"+880 #-#######\",\"+880 ####-######\",\"+880 ###-#######\"],BE:[\"+32 ## ## ## ##\",\"+32 ### ## ## ##\",\"+32 ### ## ###\"],BF:\"+226 ## ## ## ##\",BG:[\"+359 # ### ###\",\"+359 ## ### ###\",\"+359 ### ## ###\"],BH:\"+973 #### ####\",BI:\"+257 ## ## ## ##\",BJ:[\"+229 ## ## ## ## ##\",\"+229 ## ## ## ##\"],BL:\"+590 ### ## ## ##\",BM:\"+1 ###-###-####\",BN:\"+673 ### ####\",BO:[\"+591 # #######\",\"+591 ########\",\"+591 ### ## ####\"],BQ:\"+599 ### ####\",BR:[\"+55 ## ####-####\",\"+55 ## #####-####\",\"+55 ### ## ####\",\"+55 ####-####\"],BS:\"+1 ###-###-####\",BT:[\"+975 # ### ###\",\"+975 ## ## ## ##\"],BW:[\"+267 ### ####\",\"+267 ## ### ###\",\"+267 #### ### ###\",\"+267 ## #####\"],BY:[\"+375 ### ##-##-##\",\"+375 ## ###-##-##\",\"+375 ### ### ####\"],BZ:[\"+501 ###-####\",\"+501 #-###-####-###\"],CA:\"+1 ###-###-####\",CC:[\"+61 # #### ####\",\"+61 ### ### ###\",\"+61 #### ### ###\"],CD:[\"+243 ## #####\",\"+243 ### ### ###\"],CF:\"+236 ## ## ## ##\",CG:[\"+242 ## ### ####\",\"+242 # #### ####\"],CH:[\"+41 ## ### ## ##\",\"+41 ### ### ###\"],CI:[\"+225 ## ## # #####\",\"+225 ## ## ## ####\"],CK:\"+682 ## ###\",CL:[\"+56 ### ### ###\",\"+56 # #### ####\",\"+56 ### ### ####\",\"+56 ## ### ####\"],CM:[\"+237 # ## ## ## ##\",\"+237 ## ## ## ##\"],CN:[\"+86 ## #### ####\",\"+86 ### #### ####\",\"+86 ### ### ####\",\"+86 ########\"],CO:[\"+57 ### #######\",\"+57 # ### #######\"],CR:[\"+506 #### ####\",\"+506 ###-###-####\"],CU:[\"+53 # #######\",\"+53 ### #######\"],CV:\"+238 ### ## ##\",CW:[\"+599 # ### ####\",\"+599 ### ####\"],CX:[\"+61 # #### ####\",\"+61 ### ### ###\",\"+61 #### ### ###\"],CY:\"+357 ## ######\",CZ:\"+420 ### ### ###\",DE:[\"+49 ## ######\",\"+49 #### #######\",\"+49 ### ##########\",\"+49 ### # ######\",\"+49 ### # ####\",\"+49 ### #### ####\",\"+49 ########\"],DJ:\"+253 ## ## ## ##\",DK:\"+45 ## ## ## ##\",DM:\"+1 ###-###-####\",DO:\"+1 ###-###-####\",DZ:[\"+213 ## ## ## ##\",\"+213 ### ## ## ##\",\"+213 ## ### ## ##\"],EC:[\"+593 #-###-####\",\"+593 ## ### ####\",\"+593 #### ### ####\"],EE:[\"+372 ### ####\",\"+372 #### ####\",\"+372 ## ## ####\"],EG:[\"+20 # ########\",\"+20 ## ########\",\"+20 ### ### ####\"],EH:[\"+212 # ## ## ## ##\",\"+212 ##-#######\"],ER:\"+291 # ### ###\",ES:[\"+34 ### ## ## ##\",\"+34 ### ### ###\"],ET:\"+251 ## ### ####\",FI:[\"+358 ## #######\",\"+358 ### ######\"],FJ:[\"+679 ### ####\",\"+679 #### ### ####\"],FK:\"+500 #####\",FM:\"+691 ### ####\",FO:\"+298 ######\",FR:[\"+33 # ## ## ## ##\",\"+33 ### ## ## ##\"],GA:\"+241 ## ## ## ##\",GB:[\"+44 ### ### ####\",\"+44 #### ######\",\"+44 ## #### ####\"],GD:\"+1 ###-###-####\",GE:[\"+995 ## ### ## ##\",\"+995 ### ## ## ##\",\"+995 ### ### ###\"],GF:\"+594 ### ## ## ##\",GG:[\"+44 #### ######\",\"+44 ### ### ####\",\"+44 ## #### ####\"],GH:[\"+233 ## ### ####\",\"+233 ### #####\"],GI:[\"+350 ### #####\",\"+350 ########\"],GL:\"+299 ## ## ##\",GM:\"+220 ### ####\",GN:[\"+224 ## ## ## ##\",\"+224 ### ## ## ##\"],GP:\"+590 ### ## ## ##\",GQ:[\"+240 ### ### ###\",\"+240 ### ######\"],GR:[\"+30 ## #### ####\",\"+30 ### ### ####\"],GT:[\"+502 #### ####\",\"+502 #### ### ####\"],GU:\"+1 ###-###-####\",GW:[\"+245 ### ### ###\",\"+245 ### ####\"],GY:\"+592 ### ####\",HK:[\"+852 #### ####\",\"+852 ### ### ###\",\"+852 ### ## ### ###\"],HN:[\"+504 ####-####\",\"+504 ###########\"],HR:[\"+385 # #### ###\",\"+385 ## ### ####\",\"+385 ### ### ###\",\"+385 ## ## ###\",\"+385 ## ### ###\"],HT:\"+509 ## ## ####\",HU:[\"+36 # ### ####\",\"+36 ## ### ####\",\"+36 ## ### ###\"],ID:[\"+62 ## #######\",\"+62 ###-###-###\",\"+62 ### #######\",\"+62 ### # ### ###\",\"+62 ### ### ####\"],IE:[\"+353 ## #####\",\"+353 ## ### ####\",\"+353 #### ### ###\",\"+353 ### ### ###\"],IL:[\"+972 #-###-####\",\"+972 ##-###-####\",\"+972 #-###-###-###\"],IM:[\"+44 #### ######\",\"+44 ### ### ####\",\"+44 ## #### ####\"],IN:[\"+91 ##### #####\",\"+91 #### ## ####\",\"+91 #### ### ### ###\",\"+91 #### ### ####\"],IO:\"+246 ### ####\",IQ:[\"+964 # ### ####\",\"+964 ### ### ####\"],IR:[\"+98 ## #### ####\",\"+98 ### ### ####\"],IS:\"+354 ### ####\",IT:[\"+39 ## #### ####\",\"+39 ### ### ####\",\"+39 ### ### ###\"],JE:[\"+44 #### ######\",\"+44 ### ### ####\",\"+44 ## #### ####\"],JM:\"+1 ###-###-####\",JO:[\"+962 # ### ####\",\"+962 # #### ####\",\"+962 ### #####\",\"+962 ## #######\"],JP:[\"+81 #-####-####\",\"+81 ##-####-####\",\"+81 ###-###-###\",\"+81 ##-###-####\"],KE:[\"+254 ## #######\",\"+254 ### ######\",\"+254 ### ### ###\"],KG:[\"+996 ### ### ###\",\"+996 ### ### # ##\"],KH:[\"+855 ## ### ###\",\"+855 #### ### ###\"],KI:[\"+686 #####\",\"+686 ########\"],KM:\"+269 ### ## ##\",KN:\"+1 ###-###-####\",KP:[\"+850 # ### ####\",\"+850 ### ### ####\"],KR:[\"+82 #-###-####\",\"+82 ##-####-####\",\"+82 ##-###-####\"],KW:[\"+965 #### ####\",\"+965 ### #####\",\"+965 #### ###\"],KY:\"+1 ###-###-####\",KZ:[\"+7 ##### # ## ##\",\"+7 ### ### ####\",\"+7 ### ###-##-##\"],LA:[\"+856 ## ### ###\",\"+856 ## ## ### ###\"],LB:[\"+961 # ### ###\",\"+961 ## ### ###\"],LC:\"+1 ###-###-####\",LI:[\"+423 ### ## ##\",\"+423 ### ### ###\"],LK:[\"+94 ### ### ###\",\"+94 ## ### ####\"],LR:[\"+231 ## ### ###\",\"+231 ## ### ####\"],LS:\"+266 #### ####\",LT:[\"+370 ### #####\",\"+370 ### ## ###\"],LU:[\"+352 ## ## ## ##\",\"+352 ### ### ###\",\"+352 ### ## ###\"],LV:\"+371 ## ### ###\",LY:\"+218 ##-#######\",MA:[\"+212 # ## ## ## ##\",\"+212 ##-#######\"],MC:[\"+377 ## ## ## ##\",\"+377 # ## ## ## ##\"],MD:[\"+373 ## ### ###\",\"+373 ### ## ###\",\"+373 ### #####\"],ME:\"+382 ## ### ###\",MF:\"+590 ### ## ## ##\",MG:\"+261 ## ## ### ##\",MH:\"+692 ###-####\",MK:[\"+389 # ### ####\",\"+389 ## ### ###\",\"+389 ### # ## ##\"],ML:\"+223 ## ## ## ##\",MM:[\"+95 # ### ###\",\"+95 # ### ####\",\"+95 ### ### ####\"],MN:\"+976 #### ####\",MO:[\"+853 #### ####\",\"+853 #### ###\"],MP:\"+1 ###-###-####\",MQ:\"+596 ### ## ## ##\",MR:\"+222 ## ## ## ##\",MS:\"+1 ###-###-####\",MT:\"+356 #### ####\",MU:[\"+230 #### ####\",\"+230 ### ####\"],MV:[\"+960 ###-####\",\"+960 ### ### ####\"],MW:[\"+265 # ### ###\",\"+265 ### ## ## ##\"],MX:\"+52 ### ### ####\",MY:[\"+60 #-#### ####\",\"+60 ##-### ####\",\"+60 #-###-##-####\",\"+60 ###-### ####\"],MZ:[\"+258 ## ### ###\",\"+258 ## ### ####\",\"+258 ### ### ###\"],NA:[\"+264 ## ### ###\",\"+264 ## ### ####\",\"+264 ### ### ###\"],NC:\"+687 ##.##.##\",NE:[\"+227 ## ## ## ##\",\"+227 ## ### ###\"],NF:[\"+672 ## ####\",\"+672 # #####\"],NG:[\"+234 #### ## ####\",\"+234 ### ### ####\",\"+234 ### #### ####\"],NI:\"+505 #### ####\",NL:[\"+31 ## ### ####\",\"+31 # ########\",\"+31 ### ####\",\"+31 ## #######\"],NO:[\"+47 ## ## ## ##\",\"+47 ### ## ###\"],NP:[\"+977 #-#######\",\"+977 ###-#######\",\"+977 ###########\"],NR:\"+674 ### ####\",NU:[\"+683 ####\",\"+683 ### ####\"],NZ:[\"+64 # ### ####\",\"+64 ## ### ####\",\"+64 ### ### ###\"],OM:[\"+968 ## ######\",\"+968 #### ####\",\"+968 ### #####\"],PA:[\"+507 ###-####\",\"+507 ####-####\"],PE:[\"+51 # #######\",\"+51 ### ### ###\",\"+51 ### #####\"],PF:[\"+689 ## ## ## ##\",\"+689 ### ## ## ##\"],PG:[\"+675 ### ####\",\"+675 #### ####\"],PH:[\"+63 # #### ####\",\"+63 ### ### ####\",\"+63 #### # ### ####\"],PK:[\"+92 ## ########\",\"+92 ### #######\",\"+92 ### ### ##\",\"+92 #### #####\"],PL:[\"+48 ## ### ## ##\",\"+48 ### ### ###\"],PM:[\"+508 ## ## ##\",\"+508 ### ## ## ##\"],PR:\"+1 ###-###-####\",PS:[\"+970 # ### ####\",\"+970 ### ### ###\",\"+970 #### ### ###\"],PT:[\"+351 ## ### ####\",\"+351 ### ### ###\"],PW:\"+680 ### ####\",PY:[\"+595 ## ### ####\",\"+595 ### ######\",\"+595 #### ### ####\"],QA:[\"+974 #### ####\",\"+974 ### ####\"],RE:\"+262 ### ## ## ##\",RO:[\"+40 ## ### ####\",\"+40 ### ### ###\"],RS:[\"+381 ## ######\",\"+381 ## #######\",\"+381 ### #####\"],RU:\"+7 ### ###-##-##\",RW:\"+250 ### ### ###\",SA:[\"+966 ## ### ####\",\"+966 ### ### ####\",\"+966 #### #####\"],SB:[\"+677 #####\",\"+677 ## #####\"],SC:[\"+248 # ### ###\",\"+248 #######\"],SD:\"+249 ## ### ####\",SE:[\"+46 # ## ## ##\",\"+46 ## ### ## ##\",\"+46 ## ## ## ##\",\"+46 ### ## ## ###\"],SG:[\"+65 #### ####\",\"+65 #### ### ####\"],SH:\"+290 #####\",SI:[\"+386 # ### ## ##\",\"+386 ## ### ###\",\"+386 ## ######\",\"+386 ### #####\"],SJ:[\"+47 ## ## ## ##\",\"+47 ### ## ###\"],SK:[\"+421 #/### ### ##\",\"+421 ### ### ###\",\"+421 #######\"],SL:\"+232 ## ######\",SM:[\"+378 #### ######\",\"+378 ## ## ## ##\"],SN:[\"+221 ## ### ## ##\",\"+221 ### ## ## ##\"],SO:[\"+252 # ######\",\"+252 # #######\"],SR:[\"+597 ###-###\",\"+597 ###-####\",\"+597 ##-##-##\"],SS:\"+211 ### ### ###\",ST:\"+239 ### ####\",SV:[\"+503 #### ####\",\"+503 ### ####\"],SX:\"+1 ###-###-####\",SY:[\"+963 ## ### ####\",\"+963 ### ### ###\"],SZ:[\"+268 #### ####\",\"+268 ##### ####\"],TA:\"+290 ####\",TC:\"+1 ###-###-####\",TD:\"+235 ## ## ## ##\",TG:\"+228 ## ## ## ##\",TH:[\"+66 # ### ####\",\"+66 ## ### ####\",\"+66 #### ### ###\"],TJ:[\"+992 ### ## ####\",\"+992 ## ### ####\"],TK:\"+690 ####\",TL:[\"+670 ### ####\",\"+670 #### ####\"],TM:[\"+993 ## ##-##-##\",\"+993 ## ######\"],TN:\"+216 ## ### ###\",TO:[\"+676 ##-###\",\"+676 ### ####\",\"+676 #### ###\"],TR:[\"+90 ### ### ## ##\",\"+90 ### ### ####\"],TT:\"+1 ###-###-####\",TV:[\"+688 ## ###\",\"+688 ## ####\"],TW:[\"+886 # #### ####\",\"+886 ### ### ###\",\"+886 ## ### ####\",\"+886 ## #### ####\"],TZ:[\"+255 ## ### ####\",\"+255 ### ### ###\",\"+255 ### ## ####\"],UA:[\"+380 #### #####\",\"+380 ## ### ####\",\"+380 ### ### ###\"],UG:[\"+256 ## #######\",\"+256 ### ######\"],US:\"+1 ###-###-####\",UY:[\"+598 #### ####\",\"+598 ## ### ###\",\"+598 ### ####\"],UZ:\"+998 ## ### ## ##\",VA:[\"+39 ## #### ####\",\"+39 ### ### ####\",\"+39 ### ### ###\"],VC:\"+1 ###-###-####\",VE:\"+58 ###-#######\",VG:\"+1 ###-###-####\",VI:\"+1 ###-###-####\",VN:[\"+84 ### #### ###\",\"+84 ### ### ###\",\"+84 #### ######\",\"+84 ## ### ## ##\"],VU:[\"+678 #####\",\"+678 ### ####\"],WF:[\"+681 ## ## ##\",\"+681 ### ## ## ##\"],WS:[\"+685 #####\",\"+685 ## #####\",\"+685 ### ###\"],XK:[\"+383 ## ### ###\",\"+383 ### #####\"],YE:[\"+967 # ### ###\",\"+967 ### ### ###\"],YT:\"+262 ### ## ## ##\",ZA:[\"+27 ## ### ####\",\"+27 ### ### ###\"],ZM:[\"+260 ### ### ###\",\"+260 ## #######\",\"+260 #########\"],ZW:[\"+263 ## #####\",\"+263 ## ### ####\",\"+263 ### ####\",\"+263 #### ######\"]};export{M as default};\n","const t=/^[a-z]{2}$/i,countryCodeEmoji=o=>{if(!t.test(o)){const t=typeof o;throw new TypeError(`cc argument must be an ISO 3166-1 alpha-2 string, but got '${\"string\"===t?o:t}' instead.`)}const e=[...o.toUpperCase()].map(t=>(t.codePointAt(0)??0)+127397);return String.fromCodePoint(...e)};export{countryCodeEmoji};\n","import e from\"./data.min.js\";import{countryCodeEmoji as t}from\"./country-code-emodji.js\";const o=\"en\",n=new Map,getDisplayNames=e=>{const t=e.toLowerCase(),s=n.get(t);if(s)return s;const r=new Intl.DisplayNames([e],{type:\"region\"});if(n.size>=10)for(const e of n.keys())if(e!==o){n.delete(e);break}return n.set(t,r),r},s=Object.entries(e),divideMask=e=>e.split(/ (.*)/s);function getCodeAndMask(e){let t=\"\",o=\"\";if(Array.isArray(e)){const n=[];for(const o of e){const[e,s]=divideMask(o);t||(t=e),n.push(s)}o=n}else{const[n,s]=divideMask(e);t=n,o=s}return[t,o]}const r=e,a=s.map(([e,t])=>({id:e,mask:t})),d=s.reduce((e,[t,o])=>{const[n,s]=getCodeAndMask(o);return e[t]={code:n,mask:s},e},{}),c=s.map(([e,t])=>{const[o,n]=getCodeAndMask(t);return{id:e,code:o,mask:n}}),m=s.reduce((e,[o,n])=>{const[s,r]=getCodeAndMask(n);return e[o]={code:s,mask:r,flag:t(o)},e},{}),i=s.map(([e,o])=>{const[n,s]=getCodeAndMask(o);return{id:e,code:n,mask:s,flag:t(e)}}),MasksFullMap=e=>{const o=getDisplayNames(e);return s.reduce((e,[n,s])=>{const[r,a]=getCodeAndMask(s),d=o.of(n)??\"\";return e[n]={code:r,mask:a,name:d,flag:t(n)},e},{})},MasksFull=e=>{const o=getDisplayNames(e);return s.map(([e,n])=>{const[s,r]=getCodeAndMask(n);return{id:e,code:s,mask:r,name:o.of(e)??\"\",flag:t(e)}})},f=MasksFullMap(o),u=MasksFull(o),k=t;export{c as Masks,a as MasksBase,r as MasksBaseMap,MasksFull,u as MasksFullEn,MasksFullMap,f as MasksFullMapEn,d as MasksMap,i as MasksWithFlag,m as MasksWithFlagMap,k as getFlagEmoji};\n","import{MasksFullMap as t,MasksFullMapEn as e}from\"./entries.js\";function getNavigatorLang(){return\"undefined\"!=typeof navigator&&navigator.language||\"en\"}function detectCountryFromLocale(){try{const t=getNavigatorLang();try{const e=new Intl.Locale(t);if(e.region)return e.region.toUpperCase()}catch{}const e=t.split(/[-_]/);if(e.length>1)return e[1]?.toUpperCase()||null}catch{}return null}function hasCountry(t){const r=e;return t.toUpperCase()in r}function getCountry(e,r){const n=t(r),o=e.toUpperCase();return o in n?{id:o,...n[o]}:{id:\"US\",...n.US}}function parseCountryCode(t,e){return t&&hasCountry(t)?t.toUpperCase():e||\"\"}function toArray(t){return Array.isArray(t)?t:[t]}function countPlaceholders(t){return(t.match(/#/g)||[]).length}function removeCountryCodePrefix(t){return t.replace(/^\\+\\d+\\s?/,\"\")}function pickMaskVariant(t,e){if(1===t.length)return t[0];const r=t.map(t=>({mask:t,count:countPlaceholders(t)})),n=r.filter(t=>t.count>=e).sort((t,e)=>t.count-e.count);if(n.length>0)return n[0].mask;const o=r.sort((t,e)=>e.count-t.count)[0];return o?o.mask:t[0]}function formatDigitsWithMap(t,e){let r=\"\";const n=[];let o=0;const a=e.length,s=t.length;for(let c=0;c<s;c++){const s=t[c];if(\"#\"===s){if(!(o<a))break;r+=e[o],n.push(o),o++}else{const e=-1!==t.indexOf(\"#\",c+1)&&o<a;(r.length>0||e)&&(r+=s,n.push(-1))}}return{display:r,map:n}}function filterCountries(t,e){const r=e.trim().toUpperCase();if(!r)return t;const n=r.replace(/\\D/g,\"\"),o=n.length>0;return t.map(t=>{const e=t.name.toUpperCase(),a=t.id.toUpperCase(),s=t.code.toUpperCase(),c=t.code.replace(/\\D/g,\"\");let i=0;return e.startsWith(r)?i=1e3:e.includes(r)&&(i=500),s.startsWith(r)?i+=100:s.includes(r)&&(i+=50),a===r?i+=200:a.startsWith(r)&&(i+=150),o&&c.startsWith(n)?i+=80:o&&c.includes(n)&&(i+=40),{country:t,score:i}}).filter(t=>t.score>0).sort((t,e)=>e.score!==t.score?e.score-t.score:t.country.name.localeCompare(e.country.name)).map(t=>t.country)}export{countPlaceholders,detectCountryFromLocale,filterCountries,formatDigitsWithMap,getCountry,getNavigatorLang,hasCountry,parseCountryCode,pickMaskVariant,removeCountryCodePrefix,toArray};\n","const t=[\" \",\"-\",\"(\",\")\"],e=[\"ArrowLeft\",\"ArrowRight\",\"ArrowUp\",\"ArrowDown\",\"Home\",\"End\",\"Tab\"],i=/[^\\d\\s\\-()]/;function extractDigits(t,e){const i=t.replace(/\\D/g,\"\");return e?i.slice(0,e):i}function getSelection(t){return t?[t.selectionStart??0,t.selectionEnd??0]:[0,0]}function setCaret(t,e){if(t)try{t.setSelectionRange(e,e)}catch{}}function processBeforeInput(t){if(!t.target)return;const e=t.target,n=t.data;\"insertText\"===t.inputType&&n&&(i.test(n)||\" \"===n&&e.value.endsWith(\" \"))&&t.preventDefault()}function processInput(t,e){if(!t.target)return;const i=t.target,{formatter:n}=e,r=n.getMaxDigits(),s=extractDigits(i.value,r);return{newDigits:s,caretDigitIndex:s.length}}function processKeydown(i,n){if(!i.target)return;const r=i.target,{digits:s,formatter:c}=n;if(i.ctrlKey||i.metaKey||i.altKey||e.includes(i.key))return;const[g,a]=getSelection(r);if(\"Backspace\"!==i.key)if(\"Delete\"!==i.key)/^[0-9]$/.test(i.key)?s.length>=c.getMaxDigits()&&i.preventDefault():1===i.key.length&&i.preventDefault();else{if(i.preventDefault(),g!==a){const t=c.getDigitRange(s,g,a);if(t){const[e,i]=t;return{newDigits:s.slice(0,e)+s.slice(i),caretDigitIndex:e}}}if(g<r.value.length){const t=c.getDigitRange(s,g,r.value.length);if(t){const[e]=t;return{newDigits:s.slice(0,e)+s.slice(e+1),caretDigitIndex:e}}}}else{if(i.preventDefault(),g!==a){const t=c.getDigitRange(s,g,a);if(t){const[e,i]=t;return{newDigits:s.slice(0,e)+s.slice(i),caretDigitIndex:e}}}if(g>0){const e=r.value;let i=g-1;for(;i>=0&&t.includes(e[i]);)i--;if(i>=0){const t=c.getDigitRange(s,i,i+1);if(t){const[e]=t;return{newDigits:s.slice(0,e)+s.slice(e+1),caretDigitIndex:e}}}}}}function processPaste(t,e){if(!t.target)return;t.preventDefault();const i=t.target,{digits:n,formatter:r}=e,s=t.clipboardData?.getData(\"text\")||\"\",c=r.getMaxDigits(),g=extractDigits(s,c);if(0===g.length)return;const[a,o]=getSelection(i);if(a!==o){const t=r.getDigitRange(n,a,o);if(t){const[e,i]=t;return{newDigits:extractDigits(n.slice(0,e)+g+n.slice(i),c),caretDigitIndex:e+g.length}}}const l=r.getDigitRange(n,0,a),f=l?l[1]:0;return{newDigits:extractDigits(n.slice(0,f)+g+n.slice(f),c),caretDigitIndex:f+g.length}}export{t as DELIMITERS,i as INVALID_PATTERN,e as NAVIGATION_KEYS,extractDigits,getSelection,processBeforeInput,processInput,processKeydown,processPaste,setCaret};\n","import{countPlaceholders as t,removeCountryCodePrefix as e,formatDigitsWithMap as n,toArray as r,pickMaskVariant as l}from\"./utils.js\";function createPhoneFormatter(o){const a=r(o.mask),i=a.map(n=>t(e(n))),g=Math.max(...i),getMask=t=>{const n=l(a,t);return e(n)};return{formatDisplay:t=>{const e=getMask(t.length);return n(e,t).display},getMaxDigits:()=>g,getPlaceholder:()=>getMask(0),getCaretPosition:t=>{const e=getMask(t),{display:r,map:l}=n(e,\"0\".repeat(t));for(let e=0;e<l.length;e++)if(l[e]===t)return e;if(t>=l.length)return r.length;for(let e=0;e<l.length;e++)if(l[e]>t)return e;return r.length},getDigitRange:(t,e,r)=>{const l=getMask(t.length),{map:o}=n(l,t);let a=1/0,i=-1/0;for(let t=e;t<r&&t<o.length;t++){const e=o[t];void 0!==e&&e>=0&&(a=Math.min(a,e),i=Math.max(i,e))}return a===1/0?null:[a,i+1]},isComplete:t=>i.includes(t.length)}}export{createPhoneFormatter};\n","const o=\"https://ipapi.co/json/\",e=1500,p=\"@desource/phone-mask:geo\",s=864e5;export{s as CACHE_EXPIRY_MS,p as CACHE_KEY,o as GEO_IP_API_URL,e as GEO_IP_TIMEOUT_MS};\n","import{parseCountryCode as t}from\"../../utils.js\";import{GEO_IP_API_URL as o,GEO_IP_TIMEOUT_MS as e,CACHE_KEY as r,CACHE_EXPIRY_MS as n}from\"./consts.js\";async function detectCountryFromGeoIP(t=o,r=e){const n=new AbortController,c=setTimeout(()=>n.abort(),r);try{const o=await fetch(t,{signal:n.signal,headers:{Accept:\"application/json\"}});if(clearTimeout(c),!o.ok)return null;const e=await o.json();return(e.country||e.country_code||e.countryCode||e.country_code2||\"\").toString().toUpperCase()||null}catch{return clearTimeout(c),null}}async function detectByGeoIp(){try{const o=localStorage.getItem(r);if(o){const e=JSON.parse(o),c=Date.now()-e.ts>n,a=t(e.country_code);if(a&&!c)return a;localStorage.removeItem(r)}}catch{}const o=await detectCountryFromGeoIP(),e=t(o);if(e){try{const t=JSON.stringify({country_code:e,ts:Date.now()});localStorage.setItem(r,t)}catch{}return e}return null}export{detectByGeoIp,detectCountryFromGeoIP};\n","import { useEffect, useMemo } from 'react';\nimport { extractDigits, createPhoneFormatter, type MaskFull, type FormatterHelpers } from '@desource/phone-mask';\n\nimport type { PhoneNumber } from '../../types';\n\n/** Configuration options for the useFormatter hook */\nexport interface UseFormatterOptions {\n /** Pre-resolved country data */\n country: MaskFull;\n /**\n * Controlled value (digits only, without country code)\n * The parent is responsible for managing state via onChange callback.\n */\n value: string;\n /** Callback when the digits value changes. */\n onChange: (digits: string) => void;\n /** Callback when the phone number changes. */\n onPhoneChange?: (value: PhoneNumber) => void;\n /** Callback when validation state (isComplete) changes */\n onValidationChange?: (isComplete: boolean) => void;\n}\n\n/** Return type for useFormatter hook */\nexport interface UseFormatterReturn {\n /** Raw digits without formatting */\n digits: string;\n /** Phone formatter instance */\n formatter: FormatterHelpers;\n /** Placeholder from formatter */\n displayPlaceholder: string;\n /** Formatted display string */\n displayValue: string;\n /** Full phone number with country code */\n full: string;\n /** Full phone number formatted */\n fullFormatted: string;\n /** Whether the phone number is complete */\n isComplete: boolean;\n /** Whether the input is empty */\n isEmpty: boolean;\n /** Whether to show validation warning */\n shouldShowWarn: boolean;\n}\n\n/**\n * Hook for phone number formatting and derived computations.\n * Receives pre-resolved country data; country management is handled by the caller.\n */\nexport function useFormatter({\n country,\n value,\n onChange,\n onPhoneChange,\n onValidationChange\n}: UseFormatterOptions): UseFormatterReturn {\n const formatter = useMemo(() => createPhoneFormatter(country), [country]);\n const maxDigits = formatter.getMaxDigits();\n const digits = useMemo(() => extractDigits(value, maxDigits), [value, maxDigits]);\n\n const displayPlaceholder = formatter.getPlaceholder();\n const displayValue = formatter.formatDisplay(digits);\n\n const full = digits ? `${country.code}${digits}` : '';\n const fullFormatted = displayValue ? `${country.code} ${displayValue}` : '';\n\n const isComplete = formatter.isComplete(digits);\n const isEmpty = digits.length === 0;\n const shouldShowWarn = !isEmpty && !isComplete;\n\n // Memoize phoneData to prevent infinite loops in useEffect\n const phoneData = useMemo<PhoneNumber>(() => ({ full, fullFormatted, digits }), [full, fullFormatted, digits]);\n\n // Clamp digits on formatter changes\n useEffect(() => {\n if (value !== digits) {\n onChange(digits);\n }\n }, [value, digits, onChange]);\n\n // Effect: Emit onPhoneChange\n useEffect(() => {\n onPhoneChange?.(phoneData);\n }, [phoneData, onPhoneChange]);\n\n // Effect: Emit onValidationChange\n useEffect(() => {\n onValidationChange?.(isComplete);\n }, [isComplete, onValidationChange]);\n\n return {\n digits,\n formatter,\n displayPlaceholder,\n displayValue,\n full,\n fullFormatted,\n isComplete,\n isEmpty,\n shouldShowWarn\n };\n}\n","import { useState, useEffect, useMemo, useCallback } from 'react';\nimport {\n getNavigatorLang,\n getCountry,\n parseCountryCode,\n detectByGeoIp,\n detectCountryFromLocale,\n type MaskFull\n} from '@desource/phone-mask';\n\nexport interface UseCountryOptions {\n /** Country ISO code (e.g., 'US', 'DE', 'GB') */\n country?: string;\n /** Locale for country names (default: navigator.language) */\n locale?: string;\n /** Auto-detect country from IP/locale (default: false) */\n detect?: boolean;\n /** Callback when country changes */\n onCountryChange?: (country: MaskFull) => void;\n}\n\nexport interface UseCountryReturn {\n /** Current country data */\n country: MaskFull;\n /** Change country programmatically */\n setCountry: (countryCode?: string | null) => boolean;\n /** Computed locale value */\n locale: string;\n}\n\nexport function useCountry({\n country: countryOption,\n locale: localeOption,\n detect,\n onCountryChange\n}: UseCountryOptions): UseCountryReturn {\n const locale = useMemo<string>(() => localeOption || getNavigatorLang(), [localeOption]);\n\n const [countryCode, setCountryCode] = useState<string>(parseCountryCode(countryOption, 'US'));\n\n const country = useMemo<MaskFull>(() => getCountry(countryCode, locale), [countryCode, locale]);\n\n const shouldDetect = !!detect && !countryOption;\n\n const setCountry = useCallback((countryCode?: string | null) => {\n const code = parseCountryCode(countryCode);\n\n if (code) {\n setCountryCode(code);\n return true;\n }\n\n return false;\n }, []);\n\n const detectCountry = useCallback(async () => {\n const geoCountry = await detectByGeoIp();\n\n if (setCountry(geoCountry)) return;\n\n const localeCountry = detectCountryFromLocale();\n\n setCountry(localeCountry);\n }, [setCountry]);\n\n useEffect(() => {\n if (countryOption && countryOption !== countryCode) {\n setCountry(countryOption);\n }\n }, [countryCode, countryOption, setCountry]);\n\n // Effect: Country detection\n useEffect(() => {\n if (shouldDetect) {\n detectCountry();\n }\n }, [shouldDetect, detectCountry]);\n\n // Effect: Emit onCountryChange\n useEffect(() => {\n onCountryChange?.(country);\n }, [country, onCountryChange]);\n\n return { country, setCountry, locale };\n}\n","import { useRef, useCallback, useEffect, useMemo } from 'react';\n\n/**\n * Custom hook for managing timers with automatic cleanup\n * @returns Object with set and clear methods for timer control\n */\nexport function useTimer() {\n const timerRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n\n const clear = useCallback(() => {\n if (timerRef.current) {\n clearTimeout(timerRef.current);\n timerRef.current = null;\n }\n }, []);\n\n const set = useCallback(\n (callback: () => void, delay: number) => {\n clear();\n timerRef.current = setTimeout(callback, delay);\n },\n [clear]\n );\n\n // Auto cleanup on unmount\n useEffect(() => {\n return clear;\n }, [clear]);\n\n return useMemo(() => ({ set, clear }), [set, clear]);\n}\n","import { useState, useCallback } from 'react';\nimport { useTimer } from '../utility/useTimer';\n\nexport function useValidationHint() {\n const [showValidationHint, setShowValidationHint] = useState(false);\n\n const validationTimer = useTimer();\n\n const clearValidationHint = useCallback(\n (hideHint = true) => {\n if (hideHint) setShowValidationHint(false);\n validationTimer.clear();\n },\n [validationTimer]\n );\n\n const scheduleValidationHint = useCallback(\n (delay: number) => {\n setShowValidationHint(false);\n validationTimer.set(() => {\n setShowValidationHint(true);\n }, delay);\n },\n [validationTimer]\n );\n\n return { showValidationHint, clearValidationHint, scheduleValidationHint };\n}\n","import React, { useCallback } from 'react';\nimport {\n processBeforeInput,\n processInput,\n processKeydown,\n processPaste,\n setCaret,\n type FormatterHelpers\n} from '@desource/phone-mask';\n\nexport interface UseInputHandlersOptions {\n formatter: FormatterHelpers;\n digits: string;\n inactive?: boolean;\n onChange?: (newDigits: string) => void;\n scheduleValidationHint?: (delay: number) => void;\n}\n\nexport interface UseInputHandlersReturn {\n handleBeforeInput: (e: React.SyntheticEvent<HTMLInputElement> | InputEvent) => void;\n handleInput: (e: React.SyntheticEvent<HTMLInputElement> | Event) => void;\n handleKeydown: (e: React.KeyboardEvent<HTMLInputElement> | KeyboardEvent) => void;\n handlePaste: (e: React.ClipboardEvent<HTMLInputElement> | ClipboardEvent) => void;\n}\n\n// Extract native event from React synthetic event, or return event as-is\nfunction getNativeEvent(e: React.SyntheticEvent | Event): Event {\n return 'nativeEvent' in e ? e.nativeEvent : e;\n}\n\nconst HINT_DELAY_INPUT = 500;\nconst HINT_DELAY_ACTION = 300;\n\n/**\n * React hook that provides event handlers for phone input masking.\n * Handlers are compatible with both native events and React synthetic events.\n */\nexport function useInputHandlers(options: UseInputHandlersOptions): UseInputHandlersReturn {\n const { formatter, digits, inactive, onChange, scheduleValidationHint } = options;\n\n // Helper: Schedule caret position update\n const scheduleCaretUpdate = useCallback(\n (el: HTMLInputElement | null, digitIndex: number) => {\n setTimeout(() => {\n if (!el) return;\n const pos = formatter.getCaretPosition(digitIndex);\n setCaret(el, pos);\n }, 0);\n },\n [formatter]\n );\n\n const handleBeforeInput = useCallback((e: React.SyntheticEvent<HTMLInputElement> | InputEvent) => {\n processBeforeInput(getNativeEvent(e) as InputEvent);\n }, []);\n\n const handleInput = useCallback(\n (e: React.SyntheticEvent<HTMLInputElement> | Event) => {\n if (inactive) return;\n\n const evt = getNativeEvent(e);\n const result = processInput(evt, { formatter });\n\n if (!result) return;\n\n onChange?.(result.newDigits);\n scheduleCaretUpdate(evt.target as HTMLInputElement | null, result.caretDigitIndex);\n scheduleValidationHint?.(HINT_DELAY_INPUT);\n },\n [inactive, formatter, onChange, scheduleCaretUpdate, scheduleValidationHint]\n );\n\n const handleKeydown = useCallback(\n (e: React.KeyboardEvent<HTMLInputElement> | KeyboardEvent) => {\n if (inactive) return;\n\n const evt = getNativeEvent(e) as KeyboardEvent;\n const result = processKeydown(evt, { digits, formatter });\n\n if (!result) return;\n\n onChange?.(result.newDigits);\n scheduleCaretUpdate(evt.target as HTMLInputElement | null, result.caretDigitIndex);\n scheduleValidationHint?.(HINT_DELAY_ACTION);\n },\n [inactive, digits, formatter, onChange, scheduleCaretUpdate, scheduleValidationHint]\n );\n\n const handlePaste = useCallback(\n (e: React.ClipboardEvent<HTMLInputElement> | ClipboardEvent) => {\n if (inactive) return;\n\n const evt = getNativeEvent(e) as ClipboardEvent;\n const result = processPaste(evt, { digits, formatter });\n\n if (!result) return;\n\n onChange?.(result.newDigits);\n scheduleCaretUpdate(evt.target as HTMLInputElement | null, result.caretDigitIndex);\n scheduleValidationHint?.(HINT_DELAY_ACTION);\n },\n [inactive, digits, formatter, onChange, scheduleCaretUpdate, scheduleValidationHint]\n );\n\n return {\n handleBeforeInput,\n handleInput,\n handleKeydown,\n handlePaste\n };\n}\n","import React, { useState, useCallback, useMemo, useEffect, type RefObject, type CSSProperties } from 'react';\n\nimport { MasksFull, filterCountries, type CountryKey } from '@desource/phone-mask';\n\ninterface UseCountrySelectOptions {\n rootRef: RefObject<HTMLDivElement | null>;\n dropdownRef: RefObject<HTMLDivElement | null>;\n searchRef: RefObject<HTMLInputElement | null>;\n selectorRef: RefObject<HTMLDivElement | null>;\n locale: string;\n onSelectCountry: (code: CountryKey) => void;\n countryOption?: string;\n inactive?: boolean;\n onAfterSelect?: () => void;\n}\n\nexport function useCountrySelector({\n rootRef,\n dropdownRef,\n searchRef,\n selectorRef,\n locale,\n countryOption,\n inactive,\n onSelectCountry,\n onAfterSelect\n}: UseCountrySelectOptions) {\n const [search, setSearch] = useState('');\n const [dropdownOpen, setDropdownOpen] = useState(false);\n const [dropdownStyle, setDropdownStyle] = useState<CSSProperties>({});\n const [isClosing, setIsClosing] = useState(false);\n const [focusedIndex, setFocusedIndex] = useState(0);\n\n const countries = useMemo(() => MasksFull(locale), [locale]);\n const filteredCountries = useMemo(() => filterCountries(countries, search), [countries, search]);\n const hasDropdown = useMemo(() => !countryOption && countries.length > 1, [countryOption, countries]);\n\n const focusSearch = useCallback(() => {\n setTimeout(() => searchRef.current?.focus({ preventScroll: true }), 0);\n }, []);\n\n // Close dropdown with animation — actual DOM removal happens in handleDropdownAnimationEnd\n const closeDropdown = useCallback(() => {\n if (!dropdownOpen) return;\n setIsClosing(true);\n }, [dropdownOpen]);\n\n const openDropdown = useCallback(() => {\n setIsClosing(false);\n setDropdownOpen(true);\n setFocusedIndex(0);\n focusSearch();\n }, [focusSearch]);\n\n // Called via onAnimationEnd on the dropdown element\n const handleDropdownAnimationEnd = useCallback(() => {\n if (!isClosing) return;\n setDropdownOpen(false);\n setIsClosing(false);\n }, [isClosing]);\n\n const toggleDropdown = useCallback(() => {\n if (inactive || !hasDropdown) return;\n if (dropdownOpen) {\n closeDropdown();\n } else {\n openDropdown();\n }\n }, [inactive, dropdownOpen, hasDropdown, openDropdown, closeDropdown]);\n\n const selectCountry = useCallback(\n (code: CountryKey) => {\n onSelectCountry(code);\n closeDropdown();\n setSearch('');\n setFocusedIndex(0);\n onAfterSelect?.();\n },\n [onSelectCountry, closeDropdown, onAfterSelect]\n );\n\n const handleSearchChange = useCallback((e: React.ChangeEvent<HTMLInputElement>) => {\n setSearch(e.target.value);\n setFocusedIndex(0);\n }, []);\n\n // Close dropdown on outside click\n const onDocClick = useCallback(\n (ev: Event) => {\n const target = ev.target as Node | null;\n const dropdownEl = dropdownRef.current;\n const selectorEl = selectorRef.current;\n if (!target) return;\n if (dropdownEl?.contains(target)) return;\n if (selectorEl?.contains(target)) return;\n closeDropdown();\n },\n [closeDropdown]\n );\n\n // Dropdown positioning\n const positionDropdown = useCallback((e?: Event | UIEvent) => {\n if (e?.type === 'scroll' && e.target && dropdownRef.current?.contains(e.target as Node)) return;\n if (!rootRef?.current) return;\n\n const rect = rootRef.current.getBoundingClientRect();\n\n setDropdownStyle({\n top: `${rect.bottom + window.scrollY + 8}px`,\n left: `${rect.left + window.scrollX}px`,\n width: `${rect.width}px`\n });\n }, []);\n\n const scrollFocusedIntoView = useCallback((index: number) => {\n setTimeout(() => {\n const list = dropdownRef.current?.lastElementChild;\n const option = list?.children[index];\n if (!list || !option) return;\n\n const listRect = list.getBoundingClientRect();\n const optionRect = option.getBoundingClientRect();\n\n let scrollAmount = 0;\n\n if (optionRect.top < listRect.top) {\n scrollAmount = list.scrollTop - (listRect.top - optionRect.top);\n } else if (optionRect.bottom > listRect.bottom) {\n scrollAmount = list.scrollTop + (optionRect.bottom - listRect.bottom);\n } else {\n return;\n }\n\n list.scrollTo({ top: scrollAmount, behavior: 'smooth' });\n }, 0);\n }, []);\n\n // Keyboard navigation for dropdown\n const handleSearchKeydown = useCallback(\n (e: React.KeyboardEvent) => {\n if (e.key === 'ArrowDown') {\n e.preventDefault();\n setFocusedIndex((i) => {\n const next = Math.min(i + 1, filteredCountries.length - 1);\n scrollFocusedIntoView(next);\n return next;\n });\n } else if (e.key === 'ArrowUp') {\n e.preventDefault();\n setFocusedIndex((i) => {\n const prev = Math.max(i - 1, 0);\n scrollFocusedIntoView(prev);\n return prev;\n });\n } else if (e.key === 'Enter' && filteredCountries[focusedIndex]) {\n e.preventDefault();\n selectCountry(filteredCountries[focusedIndex]!.id);\n } else if (e.key === 'Escape') {\n closeDropdown();\n }\n },\n [filteredCountries, focusedIndex, selectCountry, closeDropdown, scrollFocusedIntoView]\n );\n\n useEffect(() => {\n if (!hasDropdown && dropdownOpen) {\n closeDropdown();\n }\n }, [hasDropdown, dropdownOpen, closeDropdown]);\n\n useEffect(() => {\n if (!dropdownOpen) return;\n\n positionDropdown();\n\n window.addEventListener('resize', positionDropdown);\n window.addEventListener('scroll', positionDropdown, true);\n window.addEventListener('click', onDocClick, true);\n\n return () => {\n window.removeEventListener('resize', positionDropdown);\n window.removeEventListener('scroll', positionDropdown, true);\n window.removeEventListener('click', onDocClick, true);\n };\n }, [dropdownOpen, positionDropdown, onDocClick]);\n\n return {\n // State\n dropdownOpen,\n isClosing,\n search,\n focusedIndex,\n dropdownStyle,\n // Derived\n filteredCountries,\n hasDropdown,\n // Actions\n openDropdown,\n closeDropdown,\n toggleDropdown,\n selectCountry,\n setFocusedIndex,\n handleSearchChange,\n handleSearchKeydown,\n handleDropdownAnimationEnd\n };\n}\n","import { useState, useCallback } from 'react';\nimport { useTimer } from './useTimer';\n\nexport function useClipboard(delay = 1_800) {\n const [copied, setCopied] = useState(false);\n const [isCopying, setIsCopying] = useState(false);\n const copyTimer = useTimer();\n\n const copy = useCallback(\n async (text: string) => {\n if (isCopying) return false;\n const trimmedText = text.trim();\n if (!trimmedText) return false;\n setIsCopying(true);\n try {\n await navigator.clipboard.writeText(trimmedText);\n setCopied(true);\n copyTimer.set(() => {\n setCopied(false);\n }, delay);\n return true;\n } catch (err) {\n console.warn('Copy failed', err);\n return false;\n } finally {\n setIsCopying(false);\n }\n },\n [isCopying, copyTimer]\n );\n\n return { copied, isCopying, copy };\n}\n","import { useMemo, useCallback, type RefObject } from 'react';\nimport { useClipboard } from '../utility/useClipboard';\nimport { useTimer } from '../utility/useTimer';\n\ninterface UseCopyActionOptions {\n fullFormatted: string;\n liveRef?: RefObject<HTMLElement | null>;\n onCopy?: (value: string) => void;\n}\n\nconst DELAY = 1_800;\n\nexport function useCopyAction({ liveRef, fullFormatted, onCopy }: UseCopyActionOptions) {\n const liveTimer = useTimer();\n const { copied, copy } = useClipboard(DELAY);\n\n const copyAriaLabel = useMemo(() => (copied ? 'Copied' : `Copy ${fullFormatted}`), [copied, fullFormatted]);\n const copyButtonTitle = useMemo(() => (copied ? 'Copied' : 'Copy phone number'), [copied]);\n\n const announceToScreenReader = useCallback(\n (message: string) => {\n if (!liveRef?.current) return;\n liveRef.current.textContent = message;\n liveTimer.set(() => {\n if (liveRef.current) liveRef.current.textContent = '';\n }, DELAY);\n },\n [liveRef, liveTimer]\n );\n\n const onCopyClick = useCallback(async () => {\n const valueToCopy = fullFormatted.trim();\n const success = await copy(valueToCopy);\n if (success) {\n onCopy?.(valueToCopy);\n announceToScreenReader('Phone number copied to clipboard');\n }\n }, [fullFormatted, copy, onCopy, announceToScreenReader]);\n\n return {\n copied,\n copyAriaLabel,\n copyButtonTitle,\n onCopyClick\n };\n}\n","import { useEffect, useState, useMemo } from 'react';\n\nimport type { Theme } from '../../types';\n\ninterface UseThemeOptions {\n theme: Theme;\n}\n\nexport function useTheme({ theme }: UseThemeOptions) {\n const [systemDark, setSystemDark] = useState(false);\n\n const themeClass = useMemo(() => {\n return theme !== 'auto' ? `theme-${theme}` : systemDark ? 'theme-dark' : 'theme-light';\n }, [theme, systemDark]);\n\n // Track system color scheme reactively so theme:'auto' responds to OS changes at runtime\n useEffect(() => {\n if (typeof window === 'undefined') return;\n const mq = window.matchMedia?.('(prefers-color-scheme: dark)') ?? null;\n if (!mq) return;\n setSystemDark(mq.matches);\n\n const handler = (e: MediaQueryListEvent) => {\n setSystemDark(e.matches);\n };\n\n mq.addEventListener('change', handler);\n\n return () => mq.removeEventListener('change', handler);\n }, []);\n\n return {\n themeClass\n };\n}\n","import React, {\n forwardRef,\n useImperativeHandle,\n useRef,\n useCallback,\n type CSSProperties,\n type ForwardedRef\n} from 'react';\nimport { createPortal } from 'react-dom';\nimport { useFormatter } from '../hooks/internal/useFormatter';\nimport { useCountry } from '../hooks/internal/useCountry';\nimport { useValidationHint } from '../hooks/internal/useValidationHint';\nimport { useInputHandlers } from '../hooks/internal/useInputHandlers';\nimport { useCountrySelector } from '../hooks/internal/useCountrySelector';\nimport { useCopyAction } from '../hooks/internal/useCopyAction';\nimport { useTheme } from '../hooks/internal/useTheme';\n\nimport type { PhoneInputProps, PhoneInputRef } from '../types';\n\nconst PhoneInputInner = (props: PhoneInputProps, ref: ForwardedRef<PhoneInputRef>) => {\n const {\n value = '',\n country: propCountry,\n detect = true,\n locale: propLocale,\n size = 'normal',\n theme = 'auto',\n disabled = false,\n readonly = false,\n showCopy = true,\n showClear = false,\n withValidity = true,\n searchPlaceholder = 'Search country or code...',\n noResultsText = 'No countries found',\n clearButtonLabel = 'Clear phone number',\n dropdownClass = '',\n disableDefaultStyles = false,\n onChange,\n onPhoneChange,\n onCountryChange,\n onValidationChange,\n onFocus,\n onBlur,\n onCopy,\n onClear,\n renderActionsBefore,\n renderFlag,\n renderCopySvg,\n renderClearSvg\n } = props;\n\n const { country, setCountry, locale } = useCountry({\n country: propCountry,\n locale: propLocale,\n detect,\n onCountryChange\n });\n\n const {\n digits,\n formatter,\n displayPlaceholder,\n displayValue,\n full,\n fullFormatted,\n isComplete,\n isEmpty,\n shouldShowWarn\n } = useFormatter({\n country,\n value,\n onChange,\n onPhoneChange,\n onValidationChange\n });\n\n const { showValidationHint, clearValidationHint, scheduleValidationHint } = useValidationHint();\n\n const telRef = useRef<HTMLInputElement>(null);\n const rootRef = useRef<HTMLDivElement>(null);\n const liveRef = useRef<HTMLDivElement>(null);\n const dropdownRef = useRef<HTMLDivElement>(null);\n const searchRef = useRef<HTMLInputElement>(null);\n const selectorRef = useRef<HTMLDivElement>(null);\n\n const inactive = disabled || readonly;\n const incomplete = showValidationHint && shouldShowWarn;\n\n const showCopyButton = showCopy && !isEmpty && !disabled;\n const showClearButton = showClear && !isEmpty && !inactive;\n\n const {\n copied,\n copyAriaLabel,\n copyButtonTitle,\n onCopyClick: handleCopyClick\n } = useCopyAction({\n liveRef,\n fullFormatted,\n onCopy\n });\n\n const focusInput = useCallback(() => {\n setTimeout(() => telRef.current?.focus(), 0);\n }, []);\n\n const { handleBeforeInput, handleInput, handleKeydown, handlePaste } = useInputHandlers({\n formatter,\n digits,\n inactive,\n onChange,\n scheduleValidationHint\n });\n\n const {\n dropdownOpen,\n isClosing,\n search,\n focusedIndex,\n dropdownStyle,\n filteredCountries,\n hasDropdown,\n closeDropdown,\n toggleDropdown,\n selectCountry,\n setFocusedIndex,\n handleSearchChange,\n handleSearchKeydown,\n handleDropdownAnimationEnd\n } = useCountrySelector({\n rootRef,\n dropdownRef,\n searchRef,\n selectorRef,\n locale,\n inactive,\n countryOption: propCountry,\n onSelectCountry: setCountry,\n onAfterSelect: focusInput\n });\n\n // Input focus behavior (close dropdown, clear validation timer, and call onFocus callback)\n const handleFocus = useCallback(\n (e: React.FocusEvent<HTMLInputElement>) => {\n clearValidationHint(false);\n closeDropdown();\n onFocus?.(e);\n },\n [onFocus, closeDropdown, clearValidationHint]\n );\n\n const clear = useCallback(() => {\n onChange?.('');\n clearValidationHint();\n onClear?.();\n }, [onChange, onClear, clearValidationHint]);\n\n // Clear functionality\n const handleClearClick = useCallback(() => {\n clear();\n focusInput();\n }, [clear, focusInput]);\n\n // Imperative handle\n useImperativeHandle(\n ref,\n () => ({\n focus: focusInput,\n blur: () => telRef.current?.blur(),\n clear,\n selectCountry,\n getFullNumber: () => full,\n getFullFormattedNumber: () => fullFormatted,\n getDigits: () => digits,\n isValid: () => isComplete,\n isComplete: () => isComplete\n }),\n [focusInput, selectCountry, full, fullFormatted, digits, isComplete, clear]\n );\n\n const { themeClass } = useTheme({ theme });\n\n const rootClasses = [\n 'phone-input',\n `size-${size}`,\n themeClass,\n disabled && 'is-disabled',\n readonly && 'is-readonly',\n disableDefaultStyles && 'is-unstyled',\n withValidity && incomplete && 'is-incomplete',\n withValidity && isComplete && 'is-complete'\n ]\n .filter(Boolean)\n .join(' ');\n\n const actionsCount = +showCopyButton + +showClearButton + (renderActionsBefore ? 1 : 0);\n\n return (\n <>\n <div\n ref={rootRef}\n className={rootClasses}\n style={{ '--pi-actions-count': actionsCount } as CSSProperties}\n role=\"group\"\n aria-label=\"Phone input with country selector\"\n >\n {/* Country Selector */}\n <div className=\"pi-selector\" ref={selectorRef}>\n <button\n type=\"button\"\n className={`pi-selector-btn ${!hasDropdown || readonly ? 'no-dropdown' : ''}`}\n disabled={disabled}\n tabIndex={inactive || !hasDropdown ? -1 : undefined}\n aria-label={`Selected country: ${country.name}`}\n aria-expanded={dropdownOpen}\n aria-haspopup={hasDropdown ? 'listbox' : undefined}\n onClick={toggleDropdown}\n >\n <span className=\"pi-flag\" role=\"img\" aria-label={`${country.name} flag`}>\n {renderFlag ? renderFlag(country) : country.flag}\n </span>\n <span className=\"pi-code\">{country.code}</span>\n {!inactive && hasDropdown && (\n <svg\n className={`pi-chevron ${dropdownOpen ? 'is-open' : ''}`}\n width=\"12\"\n height=\"12\"\n viewBox=\"0 0 12 12\"\n fill=\"none\"\n aria-hidden=\"true\"\n >\n <path\n d=\"M2.5 4.5L6 8L9.5 4.5\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n )}\n </button>\n </div>\n\n {/* Input Container */}\n <div className=\"pi-input-wrap\">\n <input\n ref={telRef}\n type=\"tel\"\n inputMode=\"tel\"\n autoComplete=\"tel-national\"\n autoCorrect=\"off\"\n autoCapitalize=\"off\"\n spellCheck={false}\n className=\"pi-input\"\n placeholder={displayPlaceholder}\n value={displayValue}\n disabled={disabled}\n readOnly={readonly}\n aria-invalid={incomplete}\n onInput={handleInput}\n onBeforeInput={handleBeforeInput}\n onKeyDown={handleKeydown}\n onPaste={handlePaste}\n onFocus={handleFocus}\n onBlur={onBlur}\n />\n\n {/* Action Buttons */}\n <div className=\"pi-actions\" role=\"toolbar\" aria-label=\"Phone input actions\">\n {renderActionsBefore && renderActionsBefore()}\n\n {showCopyButton && (\n <button\n type=\"button\"\n className={`pi-btn pi-btn-copy ${copied ? 'is-copied' : ''}`}\n aria-label={copyAriaLabel}\n title={copyButtonTitle}\n onClick={handleCopyClick}\n >\n {renderCopySvg ? (\n renderCopySvg(copied)\n ) : copied ? (\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" aria-hidden=\"true\">\n <path d=\"M6.5 11.5L3 8L4.06 6.94L6.5 9.38L11.94 3.94L13 5L6.5 11.5Z\" fill=\"currentColor\" />\n </svg>\n ) : (\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" aria-hidden=\"true\">\n <path\n d=\"M13.5 5.5V13.5H5.5V5.5H13.5ZM13.5 4H5.5C4.67 4 4 4.67 4 5.5V13.5C4 14.33 4.67 15 5.5 15H13.5C14.33 15 15 14.33 15 13.5V5.5C15 4.67 14.33 4 13.5 4ZM10.5 1H2.5V11H4V2.5H10.5V1Z\"\n fill=\"currentColor\"\n />\n </svg>\n )}\n </button>\n )}\n\n {showClearButton && (\n <button\n type=\"button\"\n className=\"pi-btn pi-btn-clear\"\n aria-label={clearButtonLabel}\n title={clearButtonLabel}\n onClick={handleClearClick}\n >\n {renderClearSvg ? (\n renderClearSvg()\n ) : (\n <svg width=\"11\" height=\"11\" viewBox=\"0 0 14 14\" fill=\"none\" aria-hidden=\"true\">\n <path\n d=\"M14 1.41L12.59 0L7 5.59L1.41 0L0 1.41L5.59 7L0 12.59L1.41 14L7 8.41L12.59 14L14 12.59L8.41 7L14 1.41Z\"\n fill=\"currentColor\"\n />\n </svg>\n )}\n </button>\n )}\n </div>\n </div>\n </div>\n\n {/* Dropdown */}\n {dropdownOpen &&\n typeof document !== 'undefined' &&\n createPortal(\n <div\n ref={dropdownRef}\n className={`phone-dropdown ${dropdownClass} ${themeClass} ${isClosing ? 'is-closing' : ''}`}\n style={dropdownStyle}\n role=\"dialog\"\n aria-modal=\"false\"\n aria-label=\"Select country\"\n onAnimationEnd={handleDropdownAnimationEnd}\n >\n <div className=\"pi-search-wrap\">\n <input\n ref={searchRef}\n type=\"search\"\n className=\"pi-search\"\n aria-label=\"Search countries\"\n placeholder={searchPlaceholder}\n value={search}\n onChange={handleSearchChange}\n onKeyDown={handleSearchKeydown}\n />\n </div>\n <ul className=\"pi-options\" role=\"listbox\" aria-activedescendant={`option-${focusedIndex}`} tabIndex={-1}>\n {filteredCountries.length > 0 ? (\n filteredCountries.map((c, idx) => (\n <li\n key={c.id}\n id={`option-${idx}`}\n role=\"option\"\n className={`pi-option ${idx === focusedIndex ? 'is-focused' : ''} ${\n c.id === country.id ? 'is-selected' : ''\n }`}\n aria-selected={c.id === country.id}\n title={c.name}\n onClick={() => selectCountry(c.id)}\n onMouseEnter={() => setFocusedIndex(idx)}\n >\n <span className=\"pi-flag\" role=\"img\" aria-label={`${c.name} flag`}>\n {renderFlag ? renderFlag(c) : c.flag}\n </span>\n <span className=\"pi-opt-name\">{c.name}</span>\n <span className=\"pi-opt-code\">{c.code}</span>\n </li>\n ))\n ) : (\n <li className=\"pi-empty\">{noResultsText}</li>\n )}\n </ul>\n </div>,\n document.body\n )}\n\n {/* Screen reader announcements */}\n <div ref={liveRef} className=\"sr-only\" role=\"status\" aria-live=\"polite\" aria-atomic=\"true\" />\n </>\n );\n};\n\nexport const PhoneInput = forwardRef<PhoneInputRef, PhoneInputProps>(PhoneInputInner);\n\nPhoneInput.displayName = 'PhoneInput';\n","import { useRef, useEffect, useCallback } from 'react';\nimport { useFormatter } from './internal/useFormatter';\nimport { useCountry } from './internal/useCountry';\nimport { useInputHandlers } from './internal/useInputHandlers';\n\nimport type { UsePhoneMaskOptions, UsePhoneMaskReturn } from '../types';\n\n/**\n * React hook for phone number masking.\n * Provides low-level phone masking functionality for custom input implementations.\n * Works in controlled mode — caller manages value state via onChange callback.\n */\nexport function usePhoneMask(options: UsePhoneMaskOptions): UsePhoneMaskReturn {\n const inputRef = useRef<HTMLInputElement>(null);\n\n const { country, setCountry } = useCountry({\n country: options.country,\n locale: options.locale,\n detect: options.detect,\n onCountryChange: options.onCountryChange\n });\n\n const {\n digits,\n formatter,\n displayPlaceholder,\n displayValue,\n full,\n fullFormatted,\n isComplete,\n isEmpty,\n shouldShowWarn\n } = useFormatter({\n country,\n value: options.value,\n onChange: options.onChange,\n onPhoneChange: options.onPhoneChange\n });\n\n // Use consolidated input handlers\n const { handleBeforeInput, handleInput, handleKeydown, handlePaste } = useInputHandlers({\n formatter,\n digits,\n onChange: options.onChange\n });\n\n // after mount, set input type to tel for better experience\n useEffect(() => {\n const el = inputRef.current;\n if (!el) return;\n el.setAttribute('type', 'tel');\n el.setAttribute('inputmode', 'tel');\n }, []);\n\n // Update display when digits or placeholder changes\n useEffect(() => {\n const el = inputRef.current;\n if (!el) return;\n\n el.value = displayValue;\n\n el.setAttribute('placeholder', displayPlaceholder);\n }, [displayValue, displayPlaceholder]);\n\n // Attach event listeners\n useEffect(() => {\n const el = inputRef.current;\n if (!el) return;\n\n const beforeInputHandler = handleBeforeInput;\n const inputHandler = handleInput;\n const keydownHandler = handleKeydown;\n const pasteHandler = handlePaste;\n\n el.addEventListener('beforeinput', beforeInputHandler);\n el.addEventListener('input', inputHandler);\n el.addEventListener('keydown', keydownHandler);\n el.addEventListener('paste', pasteHandler);\n\n return () => {\n el.removeEventListener('beforeinput', beforeInputHandler);\n el.removeEventListener('input', inputHandler);\n el.removeEventListener('keydown', keydownHandler);\n el.removeEventListener('paste', pasteHandler);\n };\n }, [handleBeforeInput, handleInput, handleKeydown, handlePaste]);\n\n const clear = useCallback(() => {\n options.onChange('');\n }, [options.onChange]);\n\n return {\n ref: inputRef,\n digits,\n full,\n fullFormatted,\n isComplete,\n isEmpty,\n shouldShowWarn,\n country,\n setCountry,\n clear\n };\n}\n","import {\n getFlagEmoji,\n countPlaceholders,\n formatDigitsWithMap,\n pickMaskVariant,\n removeCountryCodePrefix,\n toArray\n} from '@desource/phone-mask';\n\nexport { PhoneInput } from './components/PhoneInput';\nexport { usePhoneMask } from './hooks/usePhoneMask';\n\nexport type {\n PhoneInputProps,\n PhoneInputRef,\n PhoneNumber,\n UsePhoneMaskOptions,\n UsePhoneMaskReturn,\n Size as PhoneInputSize,\n Theme as PhoneInputTheme\n} from './types';\n\nexport type {\n CountryKey as PCountryKey,\n MaskBase as PMaskBase,\n MaskBaseMap as PMaskBaseMap,\n Mask as PMask,\n MaskMap as PMaskMap,\n MaskWithFlag as PMaskWithFlag,\n MaskWithFlagMap as PMaskWithFlagMap,\n MaskFull as PMaskFull,\n MaskFullMap as PMaskFullMap\n} from '@desource/phone-mask';\n\nexport const PMaskHelpers = {\n getFlagEmoji,\n countPlaceholders,\n formatDigitsWithMap,\n pickMaskVariant,\n removeCountryCodePrefix,\n toArray\n};\n"],"names":["M","t","countryCodeEmoji","o","e","n","getDisplayNames","s","divideMask","getCodeAndMask","r","MasksFullMap","d","MasksFull","f","k","getNavigatorLang","detectCountryFromLocale","hasCountry","getCountry","parseCountryCode","toArray","countPlaceholders","removeCountryCodePrefix","pickMaskVariant","formatDigitsWithMap","a","c","filterCountries","i","extractDigits","getSelection","setCaret","processBeforeInput","processInput","processKeydown","g","processPaste","l","createPhoneFormatter","getMask","p","detectCountryFromGeoIP","detectByGeoIp","useFormatter","country","value","onChange","onPhoneChange","onValidationChange","formatter","useMemo","maxDigits","digits","displayPlaceholder","displayValue","full","fullFormatted","isComplete","isEmpty","shouldShowWarn","phoneData","useEffect","useCountry","countryOption","localeOption","detect","onCountryChange","locale","countryCode","setCountryCode","useState","shouldDetect","setCountry","useCallback","code","detectCountry","geoCountry","localeCountry","useTimer","timerRef","useRef","clear","set","callback","delay","useValidationHint","showValidationHint","setShowValidationHint","validationTimer","clearValidationHint","hideHint","scheduleValidationHint","getNativeEvent","HINT_DELAY_INPUT","HINT_DELAY_ACTION","useInputHandlers","options","inactive","scheduleCaretUpdate","el","digitIndex","pos","handleBeforeInput","handleInput","evt","result","handleKeydown","handlePaste","useCountrySelector","rootRef","dropdownRef","searchRef","selectorRef","onSelectCountry","onAfterSelect","search","setSearch","dropdownOpen","setDropdownOpen","dropdownStyle","setDropdownStyle","isClosing","setIsClosing","focusedIndex","setFocusedIndex","countries","filteredCountries","hasDropdown","focusSearch","closeDropdown","openDropdown","handleDropdownAnimationEnd","toggleDropdown","selectCountry","handleSearchChange","onDocClick","ev","target","dropdownEl","selectorEl","positionDropdown","rect","scrollFocusedIntoView","index","list","option","listRect","optionRect","scrollAmount","handleSearchKeydown","next","prev","useClipboard","copied","setCopied","isCopying","setIsCopying","copyTimer","copy","text","trimmedText","err","DELAY","useCopyAction","liveRef","onCopy","liveTimer","copyAriaLabel","copyButtonTitle","announceToScreenReader","message","onCopyClick","valueToCopy","useTheme","theme","systemDark","setSystemDark","themeClass","mq","handler","PhoneInputInner","props","ref","propCountry","propLocale","size","disabled","readonly","showCopy","showClear","withValidity","searchPlaceholder","noResultsText","clearButtonLabel","dropdownClass","disableDefaultStyles","onFocus","onBlur","onClear","renderActionsBefore","renderFlag","renderCopySvg","renderClearSvg","telRef","incomplete","showCopyButton","showClearButton","handleCopyClick","focusInput","handleFocus","handleClearClick","useImperativeHandle","rootClasses","actionsCount","jsxs","Fragment","jsx","createPortal","idx","PhoneInput","forwardRef","usePhoneMask","inputRef","beforeInputHandler","inputHandler","keydownHandler","pasteHandler","PMaskHelpers","getFlagEmoji"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","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","createPhoneFormatter","l","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,4 +1,4 @@
1
- import type { MaskFull, CountryKey } from '@desource/phone-mask';
1
+ import type { MaskFull, CountryKey, FormatterHelpers } from '@desource/phone-mask';
2
2
  import type { ReactNode, FocusEvent, RefObject } from 'react';
3
3
  export type Size = 'compact' | 'normal' | 'large';
4
4
  export type Theme = 'auto' | 'light' | 'dark';
@@ -159,6 +159,8 @@ export interface UsePhoneMaskReturn {
159
159
  setCountry: (countryCode: string) => void;
160
160
  /** Raw digits without formatting */
161
161
  digits: string;
162
+ /** Phone formatter instance */
163
+ formatter: FormatterHelpers;
162
164
  /** Full phone number with country code */
163
165
  full: string;
164
166
  /** Full phone number formatted */
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"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"}