UNPKG

@finofo/react-international-phone

Version:

☎️ International phone input component for React

2 lines (1 loc) 26 kB
import B,{useMemo as Ve,useRef as je,useState as Oe}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","(..) ........",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"],["Fiji","fj","679"],["Finland","fi","358",".. ... .. .."],["France","fr","33",". .. .. .. .."],["French Guiana","gf","594"],["French Polynesia","pf","689"],["Gabon","ga","241"],["Gambia","gm","220"],["Georgia","ge","995"],["Germany","de","49","... ........."],["Ghana","gh","233"],["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"],["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"],["Romania","ro","40"],["Russia","ru","7","(...) ...-..-..",1],["Rwanda","rw","250"],["Saint Kitts and Nevis","kn","1869"],["Saint Lucia","lc","1758"],["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"],["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"],["Yemen","ye","967"],["Zambia","zm","260"],["Zimbabwe","zw","263"]];var xe="react-international-phone-",le=(...t)=>t.filter(e=>!!e).join(" ").trim(),Se=(...t)=>le(...t).split(" ").map(e=>`${xe}${e}`).join(" "),P=({addPrefix:t,rawClassNames:e})=>le(Se(...t),...e);var ue=({value:t,mask:e,maskSymbol:a,offset:s=0,trimNonMaskCharsLeftover:r=!1})=>{if(t.length<s)return t;let o=t.slice(0,s),c=t.slice(s),i=o,n=0;for(let l of e.split("")){if(n>=c.length){if(!r&&l!==a){i+=l;continue}break}l===a?(i+=c[n],n+=1):i+=l}return i};var F=t=>t?/^\d+$/.test(t):!1;var z=t=>t.replace(/\D/g,"");var de=(t,e)=>{let a=t.style.display;a!=="block"&&(t.style.display="block");let s=t.getBoundingClientRect(),r=e.getBoundingClientRect(),o=r.top-s.top,c=s.bottom-r.bottom;o>=0&&c>=0||(Math.abs(o)<Math.abs(c)?t.scrollTop+=o:t.scrollTop-=c),t.style.display=a};var De=t=>{let{name:e,iso2:a,dialCode:s,format:r,priority:o,areaCodes:c}=t,i=[e,a,s,r,o,c];for(let n=0;n<i.length;n+=1){if(n===0)continue;let l=i[n-1],d=i[n];if(l===void 0&&d!==void 0){let m=JSON.stringify(i,(f,g)=>g===void 0?"__undefined":g).replace(/"__undefined"/g,"undefined");throw new Error(`[react-international-phone] invalid country values passed to buildCountryData. Check ${l} in: ${m}`)}}return i.filter(n=>n!==void 0)};import{useCallback as Ne,useEffect as be,useMemo as Me,useRef as Re,useState as _e}from"react";var ce=()=>typeof window>"u"?!1:window.navigator.userAgent.toLowerCase().includes("macintosh");var pe=({phone:t,dialCode:e,prefix:a="+",charAfterDialCode:s=" "})=>{if(!t||!e)return t;let r=t;return r.startsWith(a)&&(r=r.replace(a,"")),r.startsWith(e)?(r=r.replace(e,""),r.startsWith(s)&&(r=r.replace(s,"")),r):t};var Q=(t,e)=>{let a=e.disableDialCodeAndPrefix?!1:e.forceDialCode,s=e.disableDialCodeAndPrefix?!1:e.insertDialCodeOnEmpty,r=t,o=l=>e.trimNonDigitsEnd?l.trim():l;if(!r)return s&&!r.length||a?o(`${e.prefix}${e.dialCode}${e.charAfterDialCode}`):o(r);if(r=z(r),r===e.dialCode&&!e.disableDialCodeAndPrefix)return o(`${e.prefix}${e.dialCode}${e.charAfterDialCode}`);if(e.dialCode.startsWith(r)&&!e.disableDialCodeAndPrefix)return o(a?`${e.prefix}${e.dialCode}${e.charAfterDialCode}`:`${e.prefix}${r}`);if(!r.startsWith(e.dialCode)&&!e.disableDialCodeAndPrefix){if(a)return o(`${e.prefix}${e.dialCode}${e.charAfterDialCode}`);if(r.length<e.dialCode.length)return o(`${e.prefix}${r}`)}let c=()=>{let l=e.dialCode.length,d=r.slice(0,l),m=r.slice(l);return{phoneLeftSide:d,phoneRightSide:m}},{phoneLeftSide:i,phoneRightSide:n}=c();return i=`${e.prefix}${i}${e.charAfterDialCode}`,n=ue({value:n,mask:e.mask,maskSymbol:e.maskChar,trimNonMaskCharsLeftover:e.trimNonDigitsEnd||e.disableDialCodeAndPrefix&&n.length===0}),e.disableDialCodeAndPrefix&&(i=""),o(`${i}${n}`)};var me=({phoneBeforeInput:t,phoneAfterInput:e,phoneAfterFormatted:a,cursorPositionAfterInput:s,leftOffset:r=0,deletion:o})=>{if(s<r)return r;if(!t)return a.length;let c=null;for(let d=s-1;d>=0;d-=1)if(F(e[d])){c=d;break}if(c===null){for(let d=0;d<e.length;d+=1)if(F(a[d]))return d;return e.length}let i=0;for(let d=0;d<c;d+=1)F(e[d])&&(i+=1);let n=0,l=0;for(let d=0;d<a.length&&(n+=1,F(a[d])&&(l+=1),!(l>=i+1));d+=1);if(o!=="backward")for(;!F(a[n])&&n<a.length;)n+=1;return n};var O=({phone:t,prefix:e})=>t?`${e}${z(t)}`:"";function W({value:t,country:e,insertDialCodeOnEmpty:a,trimNonDigitsEnd:s,countries:r,prefix:o,charAfterDialCode:c,forceDialCode:i,disableDialCodeAndPrefix:n,defaultMask:l,countryGuessingEnabled:d,disableFormatting:m}){let f=t;n&&(f=f.startsWith(`${o}`)?f:`${o}${e.dialCode}${f}`);let g=d?Y({phone:f,countries:r,currentCountryIso2:e?.iso2}):void 0,S=g?.country??e,p=Q(f,{prefix:o,mask:X({phone:f,country:S,defaultMask:l,disableFormatting:m}),maskChar:J,dialCode:S.dialCode,trimNonDigitsEnd:s,charAfterDialCode:c,forceDialCode:i,insertDialCodeOnEmpty:a,disableDialCodeAndPrefix:n}),h=d&&!g?.fullDialCodeMatch?e:S;return{phone:O({phone:n?`${h.dialCode}${p}`:p,prefix:o}),inputValue:p,country:h}}var ke=t=>{if(t?.toLocaleLowerCase().includes("delete")??!1)return t?.toLocaleLowerCase().includes("forward")?"forward":"backward"},fe=(t,{country:e,insertDialCodeOnEmpty:a,phoneBeforeInput:s,prefix:r,charAfterDialCode:o,forceDialCode:c,disableDialCodeAndPrefix:i,countryGuessingEnabled:n,defaultMask:l,disableFormatting:d,countries:m})=>{let f=t.nativeEvent,g=f.inputType,S=ke(g),p=!!g?.startsWith("insertFrom"),h=g==="insertText",D=f?.data||void 0,k=t.target.value,_=t.target.selectionStart??0;if(g?.includes("history"))return{inputValue:s,phone:O({phone:s,prefix:r}),cursorPosition:s.length,country:e};if(h&&!F(D)&&k!==r)return{inputValue:s,phone:O({phone:i?`${e.dialCode}${s}`:s,prefix:r}),cursorPosition:_-(D?.length??0),country:e};if(c&&!k.startsWith(`${r}${e.dialCode}`)&&!p){let b=k?s:`${r}${e.dialCode}${o}`;return{inputValue:b,phone:O({phone:b,prefix:r}),cursorPosition:r.length+e.dialCode.length+o.length,country:e}}let{phone:N,inputValue:u,country:C}=W({value:k,country:e,trimNonDigitsEnd:S==="backward",insertDialCodeOnEmpty:a,countryGuessingEnabled:n,countries:m,prefix:r,charAfterDialCode:o,forceDialCode:c,disableDialCodeAndPrefix:i,disableFormatting:d,defaultMask:l}),y=me({cursorPositionAfterInput:_,phoneBeforeInput:s,phoneAfterInput:k,phoneAfterFormatted:u,leftOffset:c?r.length+e.dialCode.length+o.length:0,deletion:S});return{phone:N,inputValue:u,cursorPosition:y,country:C}};import{useState as ee}from"react";var he=(t,e)=>{let a=Object.keys(t),s=Object.keys(e);if(a.length!==s.length)return!1;for(let r of a)if(t[r]!==e[r])return!1;return!0};import{useRef as Ce}from"react";var ye=()=>{let t=Ce(),e=Ce(Date.now());return{check:()=>{let s=Date.now(),r=t.current?s-e.current:void 0;return t.current=e.current,e.current=s,r}}};var Ie={size:20,overrideLastItemDebounceMS:-1};function ge(t,e){let{size:a,overrideLastItemDebounceMS:s,onChange:r}={...Ie,...e},[o,c]=ee(t),[i,n]=ee([o]),[l,d]=ee(0),m=ye();return[o,(p,h)=>{if(typeof p=="object"&&typeof o=="object"&&he(p,o)||p===o)return;let I=s>0,D=m.check(),k=I&&D!==void 0?D>s:!0;if(h?.overrideLastItem!==void 0?h.overrideLastItem:!k)n(N=>[...N.slice(0,l),p]);else{let N=i.length>=a;n(u=>[...u.slice(N?1:0,l+1),p]),N||d(u=>u+1)}c(p),r?.(p)},()=>{if(l<=0)return{success:!1};let p=i[l-1];return c(p),d(h=>h-1),r?.(p),{success:!0,value:p}},()=>{if(l+1>=i.length)return{success:!1};let p=i[l+1];return c(p),d(h=>h+1),r?.(p),{success:!0,value:p}}]}var J=".",E={defaultCountry:"us",value:"",prefix:"+",defaultMask:"............",charAfterDialCode:" ",historySaveDebounceMS:200,disableCountryGuess:!1,disableDialCodePrefill:!1,forceDialCode:!1,disableDialCodeAndPrefix:!1,disableFormatting:!1,countries:R,preferredCountries:[]},te=({defaultCountry:t=E.defaultCountry,value:e=E.value,countries:a=E.countries,prefix:s=E.prefix,defaultMask:r=E.defaultMask,charAfterDialCode:o=E.charAfterDialCode,historySaveDebounceMS:c=E.historySaveDebounceMS,disableCountryGuess:i=E.disableCountryGuess,disableDialCodePrefill:n=E.disableDialCodePrefill,forceDialCode:l=E.forceDialCode,disableDialCodeAndPrefix:d=E.disableDialCodeAndPrefix,disableFormatting:m=E.disableFormatting,onChange:f,inputRef:g})=>{let h={countries:a,prefix:s,charAfterDialCode:o,forceDialCode:d?!1:l,disableDialCodeAndPrefix:d,defaultMask:r,countryGuessingEnabled:!i,disableFormatting:m},I=Re(null),D=g||I,k=w=>{Promise.resolve().then(()=>{typeof window>"u"||D.current!==document?.activeElement||D.current?.setSelectionRange(w,w)})},[{phone:_,inputValue:N,country:u},C,y,b]=ge(()=>{let w=$({value:t,field:"iso2",countries:a});w||console.error(`[react-international-phone]: can not find a country with "${t}" iso2 code`);let T=w||$({value:"us",field:"iso2",countries:a}),{phone:x,inputValue:L,country:U}=W({value:e,country:T,insertDialCodeOnEmpty:!n,...h});return k(L.length),{phone:x,inputValue:L,country:U.iso2}},{overrideLastItemDebounceMS:c,onChange:({inputValue:w,phone:T,country:x})=>{if(!f)return;let L=v(x);f({phone:T,inputValue:w,country:L})}}),v=Ne(w=>$({value:w,field:"iso2",countries:a}),[a]),A=Me(()=>v(u),[u,v]);be(()=>{let w=D.current;if(!w)return;let T=x=>{if(!x.key)return;let L=x.ctrlKey,U=x.metaKey,ve=x.shiftKey;if(x.key.toLowerCase()==="z"){if(ce()){if(!U)return}else if(!L)return;ve?b():y()}};return w.addEventListener("keydown",T),()=>{w.removeEventListener("keydown",T)}},[D,y,b]);let V=w=>{w.preventDefault();let{phone:T,inputValue:x,country:L,cursorPosition:U}=fe(w,{country:A,phoneBeforeInput:N,insertDialCodeOnEmpty:!1,...h});return C({inputValue:x,phone:T,country:L.iso2}),k(U),e},K=(w,T={focusOnInput:!1})=>{let x=$({value:w,field:"iso2",countries:a});if(!x){console.error(`[react-international-phone]: can not find a country with "${w}" iso2 code`);return}let L=d?"":`${s}${x.dialCode}${o}`;C({inputValue:L,phone:`${s}${x.dialCode}`,country:x.iso2}),T.focusOnInput&&Promise.resolve().then(()=>{D.current?.focus()})},[G,j]=_e(!1);return be(()=>{if(!G){j(!0),e!==_&&f?.({inputValue:N,phone:_,country:A});return}if(e===_)return;let{phone:w,inputValue:T,country:x}=W({value:e,country:A,insertDialCodeOnEmpty:!n,...h});C({phone:w,inputValue:T,country:x.iso2})},[e]),{phone:_,inputValue:N,country:A,setCountry:K,handlePhoneValueChange:V,inputRef:D}};var X=({phone:t,country:e,defaultMask:a="............",disableFormatting:s=!1})=>{let r=e.format,o=i=>s?i.replace(new RegExp(`[^${J}]`,"g"),""):i;if(!r)return o(a);if(typeof r=="string")return o(r);if(!r.default)return console.error(`[react-international-phone]: default mask for ${e.iso2} is not provided`),o(a);let c=Object.keys(r).find(i=>{if(i==="default")return!1;if(!(i.charAt(0)==="/"&&i.charAt(i.length-1)==="/"))return console.error(`[react-international-phone]: format regex "${i}" for ${e.iso2} is not valid`),!1;let l=new RegExp(i.substring(1,i.length-1)),d=t.replace(e.dialCode,"");return l.test(z(d))});return o(c?r[c]:r.default)};var M=t=>{let[e,a,s,r,o,c]=t;return{name:e,iso2:a,dialCode:s,format:r,priority:o,areaCodes:c}};var Ae=t=>`Field "${t}" is not supported`,$=({field:t,value:e,countries:a=R})=>{if(["priority"].includes(t))throw new Error(Ae(t));let s=a.find(r=>{let o=M(r);return e===o[t]});if(s)return M(s)};var Y=({phone:t,countries:e=R,currentCountryIso2:a})=>{let s={country:void 0,fullDialCodeMatch:!1};if(!t)return s;let r=z(t);if(!r)return s;let o=s,c=({country:i,fullDialCodeMatch:n})=>{let l=i.dialCode===o.country?.dialCode,d=(i.priority??0)<(o.country?.priority??0);(!l||d)&&(o={country:i,fullDialCodeMatch:n})};for(let i of e){let n=M(i),{dialCode:l,areaCodes:d}=n;if(r.startsWith(l)){let m=o.country?Number(l)>=Number(o.country.dialCode):!0;if(d){let f=r.substring(l.length);for(let g of d)if(f.startsWith(g))return{country:n,fullDialCodeMatch:!0}}(m||l===r||!o.fullDialCodeMatch)&&c({country:n,fullDialCodeMatch:!0})}o.fullDialCodeMatch||r.length<l.length&&l.startsWith(r)&&(!o.country||Number(l)<=Number(o.country.dialCode))&&c({country:n,fullDialCodeMatch:!1})}if(a){let i=$({value:a,field:"iso2",countries:e});if(!i)return o;let l=i?(m=>{if(!m?.areaCodes)return!1;let f=r.substring(m.dialCode.length);return m.areaCodes.some(g=>g.startsWith(f))})(i):!1;!!o&&o.country?.dialCode===i.dialCode&&o.country!==i&&o.fullDialCodeMatch&&(!i.areaCodes||l)&&(o={country:i,fullDialCodeMatch:!0})}return o};import we from"react";var Te=(t,e)=>{let a=parseInt(t,16);return Number(a+e).toString(16)},Ee="abcdefghijklmnopqrstuvwxyz",Le="1f1e6",Pe=Ee.split("").reduce((t,e,a)=>({...t,[e]:Te(Le,a)}),{}),$e=t=>[Pe[t[0]],Pe[t[1]]].join("-"),q=({iso2:t,size:e,src:a,protocol:s="https",disableLazyLoading:r,className:o,style:c,...i})=>{if(!t)return we.createElement("img",{className:P({addPrefix:["flag-emoji"],rawClassNames:[o]}),width:e,height:e,...i});let n=()=>{if(a)return a;let l=$e(t);return`${s}://cdnjs.cloudflare.com/ajax/libs/twemoji/14.0.2/svg/${l}.svg`};return we.createElement("img",{className:P({addPrefix:["flag-emoji"],rawClassNames:[o]}),src:n(),width:e,height:e,draggable:!1,"data-country":t,loading:r?void 0:"lazy",style:{width:e,height:e,...c},alt:"",...i})};import H,{useCallback as re,useEffect as oe,useMemo as Fe,useRef as ne,useState as ze}from"react";var He=1e3,ae=({show:t,dialCodePrefix:e="+",selectedCountry:a,countries:s=R,preferredCountries:r=[],flags:o,onSelect:c,onClose:i,...n})=>{let l=ne(null),d=ne(),m=Fe(()=>{if(!r||!r.length)return s;let u=[],C=[...s];for(let y of r){let b=C.findIndex(v=>M(v).iso2===y);if(b!==-1){let v=C.splice(b,1)[0];u.push(v)}}return u.concat(C)},[s,r]),f=ne({updatedAt:void 0,value:""}),g=u=>{let C=f.current.updatedAt&&new Date().getTime()-f.current.updatedAt.getTime()>He;f.current={value:C?u:`${f.current.value}${u}`,updatedAt:new Date};let y=m.findIndex(b=>M(b).name.toLowerCase().startsWith(f.current.value));y!==-1&&h(y)},S=re(u=>m.findIndex(C=>M(C).iso2===u),[m]),[p,h]=ze(S(a)),I=()=>{d.current!==a&&h(S(a))},D=re(u=>{h(S(u.iso2)),c?.(u)},[c,S]),k=u=>{let C=m.length-1,y=b=>u==="prev"?b-1:u==="next"?b+1:u==="last"?C:0;h(b=>{let v=y(b);return v<0?0:v>C?C:v})},_=u=>{if(u.stopPropagation(),u.key==="Enter"){u.preventDefault();let C=M(m[p]);D(C);return}if(u.key==="Escape"){i?.();return}if(u.key==="ArrowUp"){u.preventDefault(),k("prev");return}if(u.key==="ArrowDown"){u.preventDefault(),k("next");return}if(u.key==="PageUp"){u.preventDefault(),k("first");return}if(u.key==="PageDown"){u.preventDefault(),k("last");return}u.key===" "&&u.preventDefault(),u.key.length===1&&!u.altKey&&!u.ctrlKey&&!u.metaKey&&g(u.key.toLocaleLowerCase())},N=re(()=>{if(!l.current||p===void 0)return;let u=M(m[p]).iso2;if(u===d.current)return;let C=l.current.querySelector(`[data-country="${u}"]`);C&&(de(l.current,C),d.current=u)},[p,m]);return oe(()=>{N()},[p,N]),oe(()=>{l.current&&(t?l.current.focus():I())},[t]),oe(()=>{I()},[a]),H.createElement("ul",{ref:l,role:"listbox",className:P({addPrefix:["country-selector-dropdown"],rawClassNames:[n.className]}),style:{display:t?"block":"none",...n.style},onKeyDown:_,onBlur:i,tabIndex:-1,"aria-activedescendant":`react-international-phone__${M(m[p]).iso2}-option`},m.map((u,C)=>{let y=M(u),b=y.iso2===a,v=C===p,A=r.includes(y.iso2),V=C===r.length-1,K=o?.find(G=>G.iso2===y.iso2);return H.createElement(H.Fragment,{key:y.iso2},H.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",A&&"country-selector-dropdown__list-item--preferred",b&&"country-selector-dropdown__list-item--selected",v&&"country-selector-dropdown__list-item--focused"],rawClassNames:[n.listItemClassName]}),onClick:()=>D(y),style:n.listItemStyle,title:y.name},H.createElement(q,{iso2:y.iso2,src:K?.src,className:P({addPrefix:["country-selector-dropdown__list-item-flag-emoji"],rawClassNames:[n.listItemFlagClassName]}),style:n.listItemFlagStyle}),H.createElement("span",{className:P({addPrefix:["country-selector-dropdown__list-item-country-name"],rawClassNames:[n.listItemCountryNameClassName]}),style:n.listItemCountryNameStyle},y.name),H.createElement("span",{className:P({addPrefix:["country-selector-dropdown__list-item-dial-code"],rawClassNames:[n.listItemDialCodeClassName]}),style:n.listItemDialCodeStyle},e,y.dialCode)),V?H.createElement("hr",{className:P({addPrefix:["country-selector-dropdown__preferred-list-divider"],rawClassNames:[n.preferredListDividerClassName]}),style:n.preferredListDividerStyle}):null)}))};var ie=({selectedCountry:t,onSelect:e,disabled:a,hideDropdown:s,countries:r=R,preferredCountries:o=[],flags:c,renderButtonWrapper:i,...n})=>{let[l,d]=Oe(!1),m=Ve(()=>{if(t)return $({value:t,field:"iso2",countries:r})},[r,t]),f=je(null),g=p=>{p.key&&["ArrowUp","ArrowDown"].includes(p.key)&&(p.preventDefault(),d(!0))},S=()=>{let p={title:m?.name,onClick:()=>d(I=>!I),onMouseDown:I=>I.preventDefault(),onKeyDown:g,disabled:s||a,role:"combobox","aria-label":"Country selector","aria-haspopup":"listbox","aria-expanded":l},h=B.createElement("div",{className:P({addPrefix:["country-selector-button__button-content"],rawClassNames:[n.buttonContentWrapperClassName]}),style:n.buttonContentWrapperStyle},B.createElement(q,{iso2:t,src:c?.find(I=>I.iso2===t)?.src,className:P({addPrefix:["country-selector-button__flag-emoji",a&&"country-selector-button__flag-emoji--disabled"],rawClassNames:[n.flagClassName]}),style:{visibility:t?"visible":"hidden",...n.flagStyle}}),!s&&B.createElement("div",{className:P({addPrefix:["country-selector-button__dropdown-arrow",a&&"country-selector-button__dropdown-arrow--disabled",l&&"country-selector-button__dropdown-arrow--active"],rawClassNames:[n.dropdownArrowClassName]}),style:n.dropdownArrowStyle}));return i?i({children:h,rootProps:p}):B.createElement("button",{...p,type:"button",className:P({addPrefix:["country-selector-button",l&&"country-selector-button--active",a&&"country-selector-button--disabled",s&&"country-selector-button--hide-dropdown"],rawClassNames:[n.buttonClassName]}),"data-country":t,style:n.buttonStyle},h)};return B.createElement("div",{className:P({addPrefix:["country-selector"],rawClassNames:[n.className]}),style:n.style,ref:f},S(),B.createElement(ae,{show:l,countries:r,preferredCountries:o,flags:c,onSelect:p=>{d(!1),e?.(p)},selectedCountry:t,onClose:()=>{d(!1)},...n.dropdownStyleProps}))};import Be from"react";var se=({dialCode:t,prefix:e,disabled:a,style:s,className:r})=>Be.createElement("div",{className:P({addPrefix:["dial-code-preview",a&&"dial-code-preview--disabled"],rawClassNames:[r]}),style:s},`${e}${t}`);import Z,{forwardRef as Ke,useImperativeHandle as Ge}from"react";var Ue=Ke(({value:t,onChange:e,countries:a=R,preferredCountries:s=[],hideDropdown:r,showDisabledDialCodeAndPrefix:o,disableFocusAfterCountrySelect:c,flags:i,style:n,className:l,inputStyle:d,inputClassName:m,countrySelectorStyleProps:f,dialCodePreviewStyleProps:g,inputProps:S,placeholder:p,disabled:h,name:I,onFocus:D,onBlur:k,required:_,autoFocus:N,...u},C)=>{let{phone:y,inputValue:b,inputRef:v,country:A,setCountry:V,handlePhoneValueChange:K}=te({value:t,countries:a,...u,onChange:j=>{e?.(j.phone,{country:j.country,inputValue:j.inputValue})}}),G=u.disableDialCodeAndPrefix&&o&&A?.dialCode;return Ge(C,()=>v.current?Object.assign(v.current,{setCountry:V,state:{phone:y,inputValue:b,country:A}}):null,[v,V,y,b,A]),Z.createElement("div",{ref:C,className:P({addPrefix:["input-container"],rawClassNames:[l]}),style:n},Z.createElement(ie,{onSelect:j=>V(j.iso2,{focusOnInput:!c}),flags:i,selectedCountry:A.iso2,countries:a,preferredCountries:s,disabled:h,hideDropdown:r,...f}),G&&Z.createElement(se,{dialCode:A.dialCode,prefix:u.prefix??"+",disabled:h,...g}),Z.createElement("input",{onChange:K,value:b,type:"tel",ref:v,className:P({addPrefix:["input",h&&"input--disabled"],rawClassNames:[m]}),placeholder:p,disabled:h,style:d,name:I,onFocus:D,onBlur:k,autoFocus:N,required:_,...S}))});export{ie as CountrySelector,ae as CountrySelectorDropdown,se as DialCodePreview,q as FlagImage,Ue as PhoneInput,De as buildCountryData,R as defaultCountries,Q as formatPhone,X as getActiveFormattingMask,$ as getCountry,Y as guessCountryByPartialPhoneNumber,M as parseCountry,pe as removeDialCode,te as usePhoneInput};