UNPKG

react-international-phone

Version:

☎️ International phone input component for React

2 lines (1 loc) 27.1 kB
import O,{useMemo as Ue,useRef as We,useState as qe}from"react";var R=[["Afghanistan","af","93"],["Albania","al","355"],["Algeria","dz","213"],["Andorra","ad","376"],["Angola","ao","244"],["Antigua and Barbuda","ag","1268"],["Argentina","ar","54",{default:"(..) .... ....","/^11/":"(..) .... ....","/^15/":"(..) ... ....","/^(2|3|4|5)/":"(.) .... ....","/^9/":"(.) .... ....."},0],["Armenia","am","374",".. ......"],["Aruba","aw","297"],["Australia","au","61",{default:". .... ....","/^4/":"... ... ...","/^5(?!50)/":"... ... ...","/^1(3|8)00/":".... ... ...","/^13/":".. .. ..","/^180/":"... ...."},0,[]],["Austria","at","43"],["Azerbaijan","az","994","(..) ... .. .."],["Bahamas","bs","1242"],["Bahrain","bh","973",".... ...."],["Bangladesh","bd","880"],["Barbados","bb","1246"],["Belarus","by","375","(..) ... .. .."],["Belgium","be","32","... .. .. .."],["Belize","bz","501"],["Benin","bj","229"],["Bhutan","bt","975"],["Bolivia","bo","591"],["Bosnia and Herzegovina","ba","387"],["Botswana","bw","267"],["Brazil","br","55","(..) .....-...."],["British Indian Ocean Territory","io","246"],["Brunei","bn","673"],["Bulgaria","bg","359"],["Burkina Faso","bf","226"],["Burundi","bi","257"],["Cambodia","kh","855"],["Cameroon","cm","237"],["Canada","ca","1","(...) ...-....",1,["204","226","236","249","250","289","306","343","365","387","403","416","418","431","437","438","450","506","514","519","548","579","581","587","604","613","639","647","672","705","709","742","778","780","782","807","819","825","867","873","902","905"]],["Cape Verde","cv","238"],["Caribbean Netherlands","bq","599","",1],["Cayman Islands","ky","1","... ... ....",4,["345"]],["Central African Republic","cf","236"],["Chad","td","235"],["Chile","cl","56"],["China","cn","86","... .... ...."],["Colombia","co","57","... ... ...."],["Comoros","km","269"],["Congo","cd","243"],["Congo","cg","242"],["Costa Rica","cr","506","....-...."],["C\xF4te d'Ivoire","ci","225",".. .. .. .. .."],["Croatia","hr","385"],["Cuba","cu","53"],["Cura\xE7ao","cw","599","",0],["Cyprus","cy","357",".. ......"],["Czech Republic","cz","420","... ... ..."],["Denmark","dk","45",".. .. .. .."],["Djibouti","dj","253",".. .. ...."],["Dominica","dm","1767"],["Dominican Republic","do","1","(...) ...-....",2,["809","829","849"]],["Ecuador","ec","593"],["Egypt","eg","20"],["El Salvador","sv","503","....-...."],["Equatorial Guinea","gq","240"],["Eritrea","er","291"],["Estonia","ee","372",".... ......"],["Ethiopia","et","251",".. ... ...."],["Faroe Islands","fo","298",".. .. .."],["Fiji","fj","679"],["Finland","fi","358",".. ... .. .."],["France","fr","33",". .. .. .. .."],["French Guiana","gf","594","... .. .. .."],["French Polynesia","pf","689",{"/^44/":".. .. ..","/^80[0-5]/":"... .. .. ..",default:".. .. .. .."}],["Gabon","ga","241"],["Gambia","gm","220"],["Georgia","ge","995"],["Germany","de","49","... ........."],["Ghana","gh","233"],["Gibraltar","gi","350"],["Greece","gr","30"],["Greenland","gl","299",".. .. .."],["Grenada","gd","1473"],["Guadeloupe","gp","590","... .. .. ..",0],["Guam","gu","1671"],["Guatemala","gt","502","....-...."],["Guinea","gn","224"],["Guinea-Bissau","gw","245"],["Guyana","gy","592"],["Haiti","ht","509","....-...."],["Honduras","hn","504"],["Hong Kong","hk","852",".... ...."],["Hungary","hu","36"],["Iceland","is","354","... ...."],["India","in","91",".....-....."],["Indonesia","id","62"],["Iran","ir","98","... ... ...."],["Iraq","iq","964"],["Ireland","ie","353",".. ......."],["Israel","il","972","... ... ...."],["Italy","it","39","... .......",0],["Jamaica","jm","1876"],["Japan","jp","81",".. .... ...."],["Jordan","jo","962"],["Kazakhstan","kz","7","... ...-..-..",0],["Kenya","ke","254"],["Kiribati","ki","686"],["Kosovo","xk","383"],["Kuwait","kw","965",".... ...."],["Kyrgyzstan","kg","996","... ... ..."],["Laos","la","856"],["Latvia","lv","371",".. ... ..."],["Lebanon","lb","961"],["Lesotho","ls","266"],["Liberia","lr","231"],["Libya","ly","218"],["Liechtenstein","li","423"],["Lithuania","lt","370"],["Luxembourg","lu","352"],["Macau","mo","853"],["Macedonia","mk","389"],["Madagascar","mg","261"],["Malawi","mw","265"],["Malaysia","my","60","..-....-...."],["Maldives","mv","960"],["Mali","ml","223"],["Malta","mt","356"],["Marshall Islands","mh","692"],["Martinique","mq","596","... .. .. .."],["Mauritania","mr","222"],["Mauritius","mu","230"],["Mayotte","yt","262","... .. .. ..",1,["269","639"]],["Mexico","mx","52","... ... ....",0],["Micronesia","fm","691"],["Moldova","md","373","(..) ..-..-.."],["Monaco","mc","377"],["Mongolia","mn","976"],["Montenegro","me","382"],["Morocco","ma","212"],["Mozambique","mz","258"],["Myanmar","mm","95"],["Namibia","na","264"],["Nauru","nr","674"],["Nepal","np","977"],["Netherlands","nl","31",{"/^06/":"(.). .........","/^6/":". .........","/^0(10|13|14|15|20|23|24|26|30|33|35|36|38|40|43|44|45|46|50|53|55|58|70|71|72|73|74|75|76|77|78|79|82|84|85|87|88|91)/":"(.).. ........","/^(10|13|14|15|20|23|24|26|30|33|35|36|38|40|43|44|45|46|50|53|55|58|70|71|72|73|74|75|76|77|78|79|82|84|85|87|88|91)/":".. ........","/^0/":"(.)... .......",default:"... ......."}],["New Caledonia","nc","687"],["New Zealand","nz","64","...-...-...."],["Nicaragua","ni","505"],["Niger","ne","227"],["Nigeria","ng","234"],["North Korea","kp","850"],["Norway","no","47","... .. ..."],["Oman","om","968",".... ...."],["Pakistan","pk","92","...-......."],["Palau","pw","680"],["Palestine","ps","970"],["Panama","pa","507"],["Papua New Guinea","pg","675"],["Paraguay","py","595"],["Peru","pe","51"],["Philippines","ph","63","... ... ...."],["Poland","pl","48","...-...-..."],["Portugal","pt","351"],["Puerto Rico","pr","1","(...) ...-....",3,["787","939"]],["Qatar","qa","974",".... ...."],["R\xE9union","re","262","... .. .. ..",0],["Romania","ro","40"],["Russia","ru","7","(...) ...-..-..",1],["Rwanda","rw","250"],["Saint Kitts and Nevis","kn","1869"],["Saint Lucia","lc","1758"],["Saint Pierre & Miquelon","pm","508",{"/^708/":"... ... ...","/^8/":"... .. .. ..",default:".. .. .."}],["Saint Vincent and the Grenadines","vc","1784"],["Samoa","ws","685"],["San Marino","sm","378"],["S\xE3o Tom\xE9 and Pr\xEDncipe","st","239"],["Saudi Arabia","sa","966",".. ... ...."],["Senegal","sn","221"],["Serbia","rs","381"],["Seychelles","sc","248"],["Sierra Leone","sl","232"],["Singapore","sg","65","....-...."],["Slovakia","sk","421"],["Slovenia","si","386"],["Solomon Islands","sb","677"],["Somalia","so","252"],["South Africa","za","27"],["South Korea","kr","82","... .... ...."],["South Sudan","ss","211"],["Spain","es","34","... ... ..."],["Sri Lanka","lk","94"],["Sudan","sd","249"],["Suriname","sr","597"],["Swaziland","sz","268"],["Sweden","se","46","... ... ..."],["Switzerland","ch","41",".. ... .. .."],["Syria","sy","963"],["Taiwan","tw","886"],["Tajikistan","tj","992"],["Tanzania","tz","255"],["Thailand","th","66"],["Timor-Leste","tl","670"],["Togo","tg","228"],["Tonga","to","676"],["Trinidad and Tobago","tt","1868"],["Tunisia","tn","216"],["Turkey","tr","90","... ... .. .."],["Turkmenistan","tm","993"],["Tuvalu","tv","688"],["Uganda","ug","256"],["Ukraine","ua","380","(..) ... .. .."],["United Arab Emirates","ae","971",{default:".. ... ....","/^5[024568]/":".. ... ....","/^[234679]/":". ... ...."}],["United Kingdom","gb","44",".... ......"],["United States","us","1","(...) ...-....",0],["Uruguay","uy","598"],["Uzbekistan","uz","998",".. ... .. .."],["Vanuatu","vu","678"],["Vatican City","va","39",".. .... ....",1],["Venezuela","ve","58"],["Vietnam","vn","84"],["Wallis & Futuna","wf","681",".. .. .."],["Yemen","ye","967"],["Zambia","zm","260"],["Zimbabwe","zw","263"]];var ke="react-international-phone-",ue=(...t)=>t.filter(e=>!!e).join(" ").trim(),Ne=(...t)=>ue(...t).split(" ").map(e=>`${ke}${e}`).join(" "),P=({addPrefix:t,rawClassNames:e})=>ue(Ne(...t),...e);var de=({value:t,mask:e,maskSymbol:n,offset:s=0,trimNonMaskCharsLeftover:r=!1})=>{if(t.length<s)return t;let i=t.slice(0,s),c=t.slice(s),a=i,o=0;for(let l of e.split("")){if(o>=c.length){if(!r&&l!==n){a+=l;continue}break}l===n?(a+=c[o],o+=1):a+=l}return a};var V=t=>t?/^\d+$/.test(t):!1;var H=t=>t.replace(/\D/g,"");var ce=(t,e)=>{let n=t.style.display;n!=="block"&&(t.style.display="block");let s=t.getBoundingClientRect(),r=e.getBoundingClientRect(),i=r.top-s.top,c=s.bottom-r.bottom;i>=0&&c>=0||(Math.abs(i)<Math.abs(c)?t.scrollTop+=i:t.scrollTop-=c),t.style.display=n};var Me=t=>{let{name:e,iso2:n,dialCode:s,format:r,priority:i,areaCodes:c}=t,a=[e,n,s,r,i,c];for(let o=0;o<a.length;o+=1){if(o===0)continue;let l=a[o-1],u=a[o];if(l===void 0&&u!==void 0){let m=JSON.stringify(a,(f,p)=>p===void 0?"__undefined":p).replace(/"__undefined"/g,"undefined");throw new Error(`[react-international-phone] invalid country values passed to buildCountryData. Check ${l} in: ${m}`)}}return a.filter(o=>o!==void 0)};import{useCallback as te,useEffect as ve,useMemo as Le,useRef as $e,useState as Fe}from"react";var pe=()=>typeof window>"u"?!1:window.navigator.userAgent.toLowerCase().includes("macintosh");var me=({phone:t,dialCode:e,prefix:n="+",charAfterDialCode:s=" "})=>{if(!t||!e)return t;let r=t;return r.startsWith(n)&&(r=r.replace(n,"")),r.startsWith(e)?(r=r.replace(e,""),r.startsWith(s)&&(r=r.replace(s,"")),r):t};var fe=(t,e)=>{let n=e.disableDialCodeAndPrefix?!1:e.forceDialCode,s=e.disableDialCodeAndPrefix?!1:e.insertDialCodeOnEmpty,r=t,i=l=>e.trimNonDigitsEnd?l.trim():l;if(!r)return s&&!r.length||n?i(`${e.prefix}${e.dialCode}${e.charAfterDialCode}`):i(r);if(r=H(r),r===e.dialCode&&!e.disableDialCodeAndPrefix)return i(`${e.prefix}${e.dialCode}${e.charAfterDialCode}`);if(e.dialCode.startsWith(r)&&!e.disableDialCodeAndPrefix)return i(n?`${e.prefix}${e.dialCode}${e.charAfterDialCode}`:`${e.prefix}${r}`);if(!r.startsWith(e.dialCode)&&!e.disableDialCodeAndPrefix){if(n)return i(`${e.prefix}${e.dialCode}${e.charAfterDialCode}`);if(r.length<e.dialCode.length)return i(`${e.prefix}${r}`)}let c=()=>{let l=e.dialCode.length,u=r.slice(0,l),m=r.slice(l);return{phoneLeftSide:u,phoneRightSide:m}},{phoneLeftSide:a,phoneRightSide:o}=c();return a=`${e.prefix}${a}${e.charAfterDialCode}`,o=de({value:o,mask:e.mask,maskSymbol:e.maskChar,trimNonMaskCharsLeftover:e.trimNonDigitsEnd||e.disableDialCodeAndPrefix&&o.length===0}),e.disableDialCodeAndPrefix&&(a=""),i(`${a}${o}`)};var Ce=({phoneBeforeInput:t,phoneAfterInput:e,phoneAfterFormatted:n,cursorPositionAfterInput:s,leftOffset:r=0,deletion:i})=>{if(s<r)return r;if(!t)return n.length;let c=null;for(let u=s-1;u>=0;u-=1)if(V(e[u])){c=u;break}if(c===null){for(let u=0;u<e.length;u+=1)if(V(n[u]))return u;return e.length}let a=0;for(let u=0;u<c;u+=1)V(e[u])&&(a+=1);let o=0,l=0;for(let u=0;u<n.length&&(o+=1,V(n[u])&&(l+=1),!(l>=a+1));u+=1);if(i!=="backward")for(;!V(n[o])&&o<n.length;)o+=1;return o};var B=({phone:t,prefix:e})=>t?`${e}${H(t)}`:"";function U({value:t,country:e,insertDialCodeOnEmpty:n,trimNonDigitsEnd:s,countries:r,prefix:i,charAfterDialCode:c,forceDialCode:a,disableDialCodeAndPrefix:o,defaultMask:l,countryGuessingEnabled:u,disableFormatting:m}){let f=t;o&&(f=f.startsWith(`${i}`)?f:`${i}${e.dialCode}${f}`);let p=u?Y({phone:f,countries:r,currentCountryIso2:e?.iso2}):void 0,v=p?.country??e,C=fe(f,{prefix:i,mask:X({phone:f,country:v,defaultMask:l,disableFormatting:m}),maskChar:q,dialCode:v.dialCode,trimNonDigitsEnd:s,charAfterDialCode:c,forceDialCode:a,insertDialCodeOnEmpty:n,disableDialCodeAndPrefix:o}),w=u&&!p?.fullDialCodeMatch?e:v;return{phone:B({phone:o?`${w.dialCode}${C}`:C,prefix:i}),inputValue:C,country:w}}var Re=t=>{if(t?.toLocaleLowerCase().includes("delete")??!1)return t?.toLocaleLowerCase().includes("forward")?"forward":"backward"},he=(t,{country:e,insertDialCodeOnEmpty:n,phoneBeforeInput:s,prefix:r,charAfterDialCode:i,forceDialCode:c,disableDialCodeAndPrefix:a,countryGuessingEnabled:o,defaultMask:l,disableFormatting:u,countries:m})=>{let f=t.nativeEvent,p=f.inputType,v=Re(p),C=!!p?.startsWith("insertFrom"),w=p==="insertText",D=f?.data||void 0,k=t.target.value,N=t.target.selectionStart??0;if(p?.includes("history"))return{inputValue:s,phone:B({phone:s,prefix:r}),cursorPosition:s.length,country:e};if(w&&!V(D)&&k!==r)return{inputValue:s,phone:B({phone:a?`${e.dialCode}${s}`:s,prefix:r}),cursorPosition:N-(D?.length??0),country:e};if(c&&!k.startsWith(`${r}${e.dialCode}`)&&!C){let b=k?s:`${r}${e.dialCode}${i}`;return{inputValue:b,phone:B({phone:b,prefix:r}),cursorPosition:r.length+e.dialCode.length+i.length,country:e}}let{phone:F,inputValue:d,country:h}=U({value:k,country:e,trimNonDigitsEnd:v==="backward",insertDialCodeOnEmpty:n,countryGuessingEnabled:o,countries:m,prefix:r,charAfterDialCode:i,forceDialCode:c,disableDialCodeAndPrefix:a,disableFormatting:u,defaultMask:l}),y=Ce({cursorPositionAfterInput:N,phoneBeforeInput:s,phoneAfterInput:k,phoneAfterFormatted:d,leftOffset:c?r.length+e.dialCode.length+i.length:0,deletion:v});return{phone:F,inputValue:d,cursorPosition:y,country:h}};import{useCallback as ee,useRef as we,useState as Te}from"react";var ye=(t,e)=>{let n=Object.keys(t),s=Object.keys(e);if(n.length!==s.length)return!1;for(let r of n)if(t[r]!==e[r])return!1;return!0};import{useCallback as _e,useMemo as Ae,useRef as ge}from"react";var be=()=>{let t=ge(),e=ge(Date.now()),n=_e(()=>{let s=Date.now(),r=t.current?s-e.current:void 0;return t.current=e.current,e.current=s,r},[]);return Ae(()=>({check:n}),[n])};var Ee={size:20,overrideLastItemDebounceMS:-1};function Pe(t,e){let{size:n,overrideLastItemDebounceMS:s,onChange:r}={...Ee,...e},[i,c]=Te(t),a=we([i]),o=we(0),l=be(),u=ee((p,v)=>{let C=a.current[o.current];if(p===C||typeof p=="object"&&typeof C=="object"&&ye(p,C))return;let w=s>0,S=l.check(),D=w&&S!==void 0?S>s:!0;if(v?.overrideLastItem!==void 0?v.overrideLastItem:!D)a.current=[...a.current.slice(0,o.current),p];else{let N=a.current.length>=n;a.current=[...a.current.slice(N?1:0,o.current+1),p],N||(o.current+=1)}c(p),r?.(p)},[r,s,n,l]),m=ee(()=>{if(o.current<=0)return{success:!1};let p=a.current[o.current-1];return c(p),o.current-=1,r?.(p),{success:!0,value:p}},[r]),f=ee(()=>{if(o.current+1>=a.current.length)return{success:!1};let p=a.current[o.current+1];return c(p),o.current+=1,r?.(p),{success:!0,value:p}},[r]);return[i,u,m,f]}var q=".",T={defaultCountry:"us",value:"",prefix:"+",defaultMask:"............",charAfterDialCode:" ",historySaveDebounceMS:200,disableCountryGuess:!1,disableDialCodePrefill:!1,forceDialCode:!1,disableDialCodeAndPrefix:!1,disableFormatting:!1,countries:R,preferredCountries:[]},re=({defaultCountry:t=T.defaultCountry,value:e=T.value,countries:n=T.countries,prefix:s=T.prefix,defaultMask:r=T.defaultMask,charAfterDialCode:i=T.charAfterDialCode,historySaveDebounceMS:c=T.historySaveDebounceMS,disableCountryGuess:a=T.disableCountryGuess,disableDialCodePrefill:o=T.disableDialCodePrefill,forceDialCode:l=T.forceDialCode,disableDialCodeAndPrefix:u=T.disableDialCodeAndPrefix,disableFormatting:m=T.disableFormatting,onChange:f,inputRef:p})=>{let w={countries:n,prefix:s,charAfterDialCode:i,forceDialCode:u?!1:l,disableDialCodeAndPrefix:u,defaultMask:r,countryGuessingEnabled:!a,disableFormatting:m},S=$e(null),D=p||S,k=g=>{Promise.resolve().then(()=>{typeof window>"u"||D.current!==document?.activeElement||D.current?.setSelectionRange(g,g)})},N=te(g=>$({value:g,field:"iso2",countries:n}),[n]),F=te(({inputValue:g,phone:A,country:x})=>{if(!f)return;let L=N(x);f({phone:A,inputValue:g,country:L})},[N,f]),[{phone:d,inputValue:h,country:y},b,I,E]=Pe(()=>{let g=$({value:t,field:"iso2",countries:n});g||console.error(`[react-international-phone]: can not find a country with "${t}" iso2 code`);let A=g||$({value:"us",field:"iso2",countries:n}),{phone:x,inputValue:L,country:K}=U({value:e,country:A,insertDialCodeOnEmpty:!o,...w});return k(L.length),{phone:x,inputValue:L,country:K.iso2}},{overrideLastItemDebounceMS:c,onChange:F}),_=Le(()=>N(y),[y,N]);ve(()=>{let g=D.current;if(!g)return;let A=x=>{if(!x.key)return;let L=x.ctrlKey,K=x.metaKey,Ie=x.shiftKey;if(x.key.toLowerCase()==="z"){if(pe()){if(!K)return}else if(!L)return;Ie?E():I()}};return g.addEventListener("keydown",A),()=>{g.removeEventListener("keydown",A)}},[D,I,E]);let z=g=>{g.preventDefault();let{phone:A,inputValue:x,country:L,cursorPosition:K}=he(g,{country:_,phoneBeforeInput:h,insertDialCodeOnEmpty:!1,...w});return b({inputValue:x,phone:A,country:L.iso2}),k(K),e},G=te((g,A={focusOnInput:!1})=>{let x=$({value:g,field:"iso2",countries:n});if(!x){console.error(`[react-international-phone]: can not find a country with "${g}" iso2 code`);return}let L=u?"":`${s}${x.dialCode}${i}`;b({inputValue:L,phone:`${s}${x.dialCode}`,country:x.iso2}),A.focusOnInput&&Promise.resolve().then(()=>{D.current?.focus()})},[n,u,s,i,b,D]),[Z,Q]=Fe(!1);return ve(()=>{if(!Z){Q(!0),e!==d&&f?.({inputValue:h,phone:d,country:_});return}if(e===d)return;let{phone:g,inputValue:A,country:x}=U({value:e,country:_,insertDialCodeOnEmpty:!o,...w});b({phone:g,inputValue:A,country:x.iso2})},[e]),{phone:d,inputValue:h,country:_,setCountry:G,handlePhoneValueChange:z,inputRef:D}};var X=({phone:t,country:e,defaultMask:n="............",disableFormatting:s=!1})=>{let r=e.format,i=a=>s?a.replace(new RegExp(`[^${q}]`,"g"),""):a;if(!r)return i(n);if(typeof r=="string")return i(r);if(!r.default)return console.error(`[react-international-phone]: default mask for ${e.iso2} is not provided`),i(n);let c=Object.keys(r).find(a=>{if(a==="default")return!1;if(!(a.charAt(0)==="/"&&a.charAt(a.length-1)==="/"))return console.error(`[react-international-phone]: format regex "${a}" for ${e.iso2} is not valid`),!1;let l=new RegExp(a.substring(1,a.length-1)),u=t.replace(e.dialCode,"");return l.test(H(u))});return i(c?r[c]:r.default)};var M=t=>{let[e,n,s,r,i,c]=t;return{name:e,iso2:n,dialCode:s,format:r,priority:i,areaCodes:c}};var ze=t=>`Field "${t}" is not supported`,$=({field:t,value:e,countries:n=R})=>{if(["priority"].includes(t))throw new Error(ze(t));let s=n.find(r=>{let i=M(r);return e===i[t]});if(s)return M(s)};var Y=({phone:t,countries:e=R,currentCountryIso2:n})=>{let s={country:void 0,fullDialCodeMatch:!1};if(!t)return s;let r=H(t);if(!r)return s;let i=s,c=({country:a,fullDialCodeMatch:o})=>{let l=a.dialCode===i.country?.dialCode,u=(a.priority??0)<(i.country?.priority??0);(!l||u)&&(i={country:a,fullDialCodeMatch:o})};for(let a of e){let o=M(a),{dialCode:l,areaCodes:u}=o;if(r.startsWith(l)){let m=i.country?Number(l)>=Number(i.country.dialCode):!0;if(u){let f=r.substring(l.length);for(let p of u)if(f.startsWith(p))return{country:o,fullDialCodeMatch:!0}}(m||l===r||!i.fullDialCodeMatch)&&c({country:o,fullDialCodeMatch:!0})}i.fullDialCodeMatch||r.length<l.length&&l.startsWith(r)&&(!i.country||Number(l)<=Number(i.country.dialCode))&&c({country:o,fullDialCodeMatch:!1})}if(n){let a=$({value:n,field:"iso2",countries:e});if(!a)return i;let l=a?(m=>{if(!m?.areaCodes)return!1;let f=r.substring(m.dialCode.length);return m.areaCodes.some(p=>p.startsWith(f))})(a):!1;!!i&&i.country?.dialCode===a.dialCode&&i.country!==a&&i.fullDialCodeMatch&&(!a.areaCodes||l)&&(i={country:a,fullDialCodeMatch:!0})}return i};import xe from"react";var Ve=(t,e)=>{let n=parseInt(t,16);return Number(n+e).toString(16)},He="abcdefghijklmnopqrstuvwxyz",je="1f1e6",Se=He.split("").reduce((t,e,n)=>({...t,[e]:Ve(je,n)}),{}),Oe=t=>[Se[t[0]],Se[t[1]]].join("-"),W=({iso2:t,size:e,src:n,protocol:s="https",disableLazyLoading:r,className:i,style:c,...a})=>{if(!t)return xe.createElement("img",{className:P({addPrefix:["flag-emoji"],rawClassNames:[i]}),width:e,height:e,...a});let o=()=>{if(n)return n;let l=Oe(t);return`${s}://cdnjs.cloudflare.com/ajax/libs/twemoji/14.0.2/svg/${l}.svg`};return xe.createElement("img",{className:P({addPrefix:["flag-emoji"],rawClassNames:[i]}),src:o(),width:e,height:e,draggable:!1,"data-country":t,loading:r?void 0:"lazy",style:{width:e,height:e,...c},alt:"",...a})};import j,{useCallback as oe,useEffect as ne,useMemo as Be,useRef as ae,useState as Ge}from"react";var Ke=1e3,ie=({show:t,dialCodePrefix:e="+",selectedCountry:n,countries:s=R,preferredCountries:r=[],flags:i,onSelect:c,onClose:a,...o})=>{let l=ae(null),u=ae(),m=Be(()=>{if(!r||!r.length)return s;let d=[],h=[...s];for(let y of r){let b=h.findIndex(I=>M(I).iso2===y);if(b!==-1){let I=h.splice(b,1)[0];d.push(I)}}return d.concat(h)},[s,r]),f=ae({updatedAt:void 0,value:""}),p=d=>{let h=f.current.updatedAt&&new Date().getTime()-f.current.updatedAt.getTime()>Ke;f.current={value:h?d:`${f.current.value}${d}`,updatedAt:new Date};let y=m.findIndex(b=>M(b).name.toLowerCase().startsWith(f.current.value));y!==-1&&w(y)},v=oe(d=>m.findIndex(h=>M(h).iso2===d),[m]),[C,w]=Ge(v(n)),S=()=>{u.current!==n&&w(v(n))},D=oe(d=>{w(v(d.iso2)),c?.(d)},[c,v]),k=d=>{let h=m.length-1,y=b=>d==="prev"?b-1:d==="next"?b+1:d==="last"?h:0;w(b=>{let I=y(b);return I<0?0:I>h?h:I})},N=d=>{if(d.stopPropagation(),d.key==="Enter"){d.preventDefault();let h=M(m[C]);D(h);return}if(d.key==="Escape"){a?.();return}if(d.key==="ArrowUp"){d.preventDefault(),k("prev");return}if(d.key==="ArrowDown"){d.preventDefault(),k("next");return}if(d.key==="PageUp"){d.preventDefault(),k("first");return}if(d.key==="PageDown"){d.preventDefault(),k("last");return}d.key===" "&&d.preventDefault(),d.key.length===1&&!d.altKey&&!d.ctrlKey&&!d.metaKey&&p(d.key.toLocaleLowerCase())},F=oe(()=>{if(!l.current||C===void 0)return;let d=M(m[C]).iso2;if(d===u.current)return;let h=l.current.querySelector(`[data-country="${d}"]`);h&&(ce(l.current,h),u.current=d)},[C,m]);return ne(()=>{F()},[C,F]),ne(()=>{l.current&&(t?l.current.focus():S())},[t]),ne(()=>{S()},[n]),j.createElement("ul",{ref:l,role:"listbox",className:P({addPrefix:["country-selector-dropdown"],rawClassNames:[o.className]}),style:{display:t?"block":"none",...o.style},onKeyDown:N,onBlur:a,tabIndex:-1,"aria-activedescendant":`react-international-phone__${M(m[C]).iso2}-option`},m.map((d,h)=>{let y=M(d),b=y.iso2===n,I=h===C,E=r.includes(y.iso2),_=h===r.length-1,z=i?.find(G=>G.iso2===y.iso2);return j.createElement(j.Fragment,{key:y.iso2},j.createElement("li",{"data-country":y.iso2,role:"option","aria-selected":b,"aria-label":`${y.name} ${e}${y.dialCode}`,id:`react-international-phone__${y.iso2}-option`,className:P({addPrefix:["country-selector-dropdown__list-item",E&&"country-selector-dropdown__list-item--preferred",b&&"country-selector-dropdown__list-item--selected",I&&"country-selector-dropdown__list-item--focused"],rawClassNames:[o.listItemClassName,E&&o.listItemPreferredClassName,b&&o.listItemSelectedClassName,I&&o.listItemFocusedClassName]}),onClick:()=>D(y),style:o.listItemStyle,title:y.name},j.createElement(W,{iso2:y.iso2,src:z?.src,className:P({addPrefix:["country-selector-dropdown__list-item-flag-emoji"],rawClassNames:[o.listItemFlagClassName]}),style:o.listItemFlagStyle}),j.createElement("span",{className:P({addPrefix:["country-selector-dropdown__list-item-country-name"],rawClassNames:[o.listItemCountryNameClassName]}),style:o.listItemCountryNameStyle},y.name),j.createElement("span",{className:P({addPrefix:["country-selector-dropdown__list-item-dial-code"],rawClassNames:[o.listItemDialCodeClassName]}),style:o.listItemDialCodeStyle},e,y.dialCode)),_?j.createElement("hr",{className:P({addPrefix:["country-selector-dropdown__preferred-list-divider"],rawClassNames:[o.preferredListDividerClassName]}),style:o.preferredListDividerStyle}):null)}))};var se=O.memo(({selectedCountry:t,onSelect:e,disabled:n,hideDropdown:s,countries:r=R,preferredCountries:i=[],flags:c,renderButtonWrapper:a,...o})=>{let[l,u]=qe(!1),m=Ue(()=>{if(t)return $({value:t,field:"iso2",countries:r})},[r,t]),f=We(null),p=C=>{C.key&&["ArrowUp","ArrowDown"].includes(C.key)&&(C.preventDefault(),u(!0))},v=()=>{let C={title:m?.name,onClick:()=>u(S=>!S),onMouseDown:S=>S.preventDefault(),onKeyDown:p,disabled:s||n,role:"combobox","aria-label":"Country selector","aria-haspopup":"listbox","aria-expanded":l},w=O.createElement("div",{className:P({addPrefix:["country-selector-button__button-content"],rawClassNames:[o.buttonContentWrapperClassName]}),style:o.buttonContentWrapperStyle},O.createElement(W,{iso2:t,src:c?.find(S=>S.iso2===t)?.src,className:P({addPrefix:["country-selector-button__flag-emoji",n&&"country-selector-button__flag-emoji--disabled"],rawClassNames:[o.flagClassName]}),style:{visibility:t?"visible":"hidden",...o.flagStyle}}),!s&&O.createElement("div",{className:P({addPrefix:["country-selector-button__dropdown-arrow",n&&"country-selector-button__dropdown-arrow--disabled",l&&"country-selector-button__dropdown-arrow--active"],rawClassNames:[o.dropdownArrowClassName]}),style:o.dropdownArrowStyle}));return a?a({children:w,rootProps:C}):O.createElement("button",{...C,type:"button",className:P({addPrefix:["country-selector-button",l&&"country-selector-button--active",n&&"country-selector-button--disabled",s&&"country-selector-button--hide-dropdown"],rawClassNames:[o.buttonClassName]}),"data-country":t,style:o.buttonStyle},w)};return O.createElement("div",{className:P({addPrefix:["country-selector"],rawClassNames:[o.className]}),style:o.style,ref:f},v(),O.createElement(ie,{show:l,countries:r,preferredCountries:i,flags:c,onSelect:C=>{u(!1),e?.(C)},selectedCountry:t,onClose:()=>{u(!1)},...o.dropdownStyleProps}))});import Je from"react";var le=({dialCode:t,prefix:e,disabled:n,style:s,className:r})=>Je.createElement("div",{className:P({addPrefix:["dial-code-preview",n&&"dial-code-preview--disabled"],rawClassNames:[r]}),style:s},`${e}${t}`);import J,{forwardRef as Ze,useCallback as De,useImperativeHandle as Qe}from"react";var Xe=Ze(({value:t,onChange:e,countries:n=R,preferredCountries:s,hideDropdown:r,showDisabledDialCodeAndPrefix:i,disableFocusAfterCountrySelect:c,flags:a,style:o,className:l,inputStyle:u,inputClassName:m,countrySelectorStyleProps:f,dialCodePreviewStyleProps:p,inputProps:v,placeholder:C,disabled:w,name:S,onFocus:D,onBlur:k,required:N,autoFocus:F,...d},h)=>{let y=De(g=>{e?.(g.phone,{country:g.country,inputValue:g.inputValue})},[e]),{phone:b,inputValue:I,inputRef:E,country:_,setCountry:z,handlePhoneValueChange:G}=re({value:t,countries:n,...d,onChange:y}),Z=d.disableDialCodeAndPrefix&&i&&_?.dialCode,Q=De(g=>{z(g.iso2,{focusOnInput:!c})},[z,c]);return Qe(h,()=>E.current?Object.assign(E.current,{setCountry:z,state:{phone:b,inputValue:I,country:_}}):null,[E,z,b,I,_]),J.createElement("div",{ref:h,className:P({addPrefix:["input-container"],rawClassNames:[l]}),style:o},J.createElement(se,{onSelect:Q,flags:a,selectedCountry:_?.iso2,countries:n,preferredCountries:s,disabled:w,hideDropdown:r,...f}),Z&&J.createElement(le,{dialCode:_.dialCode,prefix:d.prefix??"+",disabled:w,...p}),J.createElement("input",{onChange:G,value:I,type:"tel",ref:E,className:P({addPrefix:["input",w&&"input--disabled"],rawClassNames:[m]}),placeholder:C,disabled:w,style:u,name:S,onFocus:D,onBlur:k,autoFocus:F,required:N,...v}))});export{se as CountrySelector,ie as CountrySelectorDropdown,le as DialCodePreview,W as FlagImage,Xe as PhoneInput,Me as buildCountryData,R as defaultCountries,X as getActiveFormattingMask,$ as getCountry,Y as guessCountryByPartialPhoneNumber,M as parseCountry,me as removeDialCode,re as usePhoneInput};