{"version":3,"sources":["../source/IDD.js"],"names":["CAPTURING_DIGIT_PATTERN","RegExp","VALID_DIGITS","SINGLE_IDD_PREFIX","getIDDPrefix","country","callingCode","metadata","countryMetadata","Metadata","selectNumberingPlan","test","IDDPrefix","defaultIDDPrefix","stripIDDPrefix","number","IDDPrefixPattern","search","slice","match","length","matchedGroups"],"mappings":";;;;;;;;AAAA;;AACA;;;;AAEA,IAAMA,uBAAuB,GAAG,IAAIC,MAAJ,CAAW,OAAOC,uBAAP,GAAsB,IAAjC,CAAhC;AAEA;;;;;;;;;;AASA,IAAMC,iBAAiB,GAAG,wCAA1B,C,CAEA;AACA;;AACO,SAASC,YAAT,CAAsBC,OAAtB,EAA+BC,WAA/B,EAA4CC,QAA5C,EAAsD;AAC5D,MAAMC,eAAe,GAAG,IAAIC,oBAAJ,CAAaF,QAAb,CAAxB;AACAC,EAAAA,eAAe,CAACE,mBAAhB,CAAoCL,OAApC,EAA6CC,WAA7C;;AACA,MAAIH,iBAAiB,CAACQ,IAAlB,CAAuBH,eAAe,CAACI,SAAhB,EAAvB,CAAJ,EAAyD;AACxD,WAAOJ,eAAe,CAACI,SAAhB,EAAP;AACA;;AACD,SAAOJ,eAAe,CAACK,gBAAhB,EAAP;AACA;;AAEM,SAASC,cAAT,CAAwBC,MAAxB,EAAgCV,OAAhC,EAAyCC,WAAzC,EAAsDC,QAAtD,EAAgE;AACtE,MAAI,CAACF,OAAL,EAAc;AACb;AACA,GAHqE,CAItE;;;AACA,MAAMG,eAAe,GAAG,IAAIC,oBAAJ,CAAaF,QAAb,CAAxB;AACAC,EAAAA,eAAe,CAACE,mBAAhB,CAAoCL,OAApC,EAA6CC,WAA7C;AACA,MAAMU,gBAAgB,GAAG,IAAIf,MAAJ,CAAWO,eAAe,CAACI,SAAhB,EAAX,CAAzB;;AACA,MAAIG,MAAM,CAACE,MAAP,CAAcD,gBAAd,MAAoC,CAAxC,EAA2C;AAC1C;AACA,GAVqE,CAWtE;;;AACAD,EAAAA,MAAM,GAAGA,MAAM,CAACG,KAAP,CAAaH,MAAM,CAACI,KAAP,CAAaH,gBAAb,EAA+B,CAA/B,EAAkCI,MAA/C,CAAT,CAZsE,CAatE;AACA;;AACA,MAAMC,aAAa,GAAGN,MAAM,CAACI,KAAP,CAAanB,uBAAb,CAAtB;AACA;;AACA,MAAIqB,aAAa,IAAIA,aAAa,CAAC,CAAD,CAAb,IAAoB,IAArC,IAA6CA,aAAa,CAAC,CAAD,CAAb,CAAiBD,MAAjB,GAA0B,CAA3E,EAA8E;AAC7E,QAAIC,aAAa,CAAC,CAAD,CAAb,KAAqB,GAAzB,EAA8B;AAC7B;AACA;AACD;;AACD,SAAON,MAAP;AACA","sourcesContent":["import Metadata from './metadata'\r\nimport { VALID_DIGITS } from './constants'\r\n\r\nconst CAPTURING_DIGIT_PATTERN = new RegExp('([' + VALID_DIGITS + '])')\r\n\r\n/**\r\n * Pattern that makes it easy to distinguish whether a region has a single\r\n * international dialing prefix or not. If a region has a single international\r\n * prefix (e.g. 011 in USA), it will be represented as a string that contains\r\n * a sequence of ASCII digits, and possibly a tilde, which signals waiting for\r\n * the tone. If there are multiple available international prefixes in a\r\n * region, they will be represented as a regex string that always contains one\r\n * or more characters that are not ASCII digits or a tilde.\r\n */\r\nconst SINGLE_IDD_PREFIX = /^[\\d]+(?:[~\\u2053\\u223C\\uFF5E][\\d]+)?$/\r\n\r\n// For regions that have multiple IDD prefixes\r\n// a preferred IDD prefix is returned.\r\nexport function getIDDPrefix(country, callingCode, metadata) {\r\n\tconst countryMetadata = new Metadata(metadata)\r\n\tcountryMetadata.selectNumberingPlan(country, callingCode)\r\n\tif (SINGLE_IDD_PREFIX.test(countryMetadata.IDDPrefix())) {\r\n\t\treturn countryMetadata.IDDPrefix()\r\n\t}\r\n\treturn countryMetadata.defaultIDDPrefix()\r\n}\r\n\r\nexport function stripIDDPrefix(number, country, callingCode, metadata) {\r\n\tif (!country) {\r\n\t\treturn\r\n\t}\r\n\t// Check if the number is IDD-prefixed.\r\n\tconst countryMetadata = new Metadata(metadata)\r\n\tcountryMetadata.selectNumberingPlan(country, callingCode)\r\n\tconst IDDPrefixPattern = new RegExp(countryMetadata.IDDPrefix())\r\n\tif (number.search(IDDPrefixPattern) !== 0) {\r\n\t\treturn\r\n\t}\r\n\t// Strip IDD prefix.\r\n\tnumber = number.slice(number.match(IDDPrefixPattern)[0].length)\r\n\t// Some kind of a weird edge case.\r\n\t// No explanation from Google given.\r\n\tconst matchedGroups = number.match(CAPTURING_DIGIT_PATTERN)\r\n\t/* istanbul ignore next */\r\n\tif (matchedGroups && matchedGroups[1] != null && matchedGroups[1].length > 0) {\r\n\t\tif (matchedGroups[1] === '0') {\r\n\t\t\treturn\r\n\t\t}\r\n\t}\r\n\treturn number\r\n}"],"file":"IDD.js"}