{"version":3,"file":"index-BU0Nu68c.js","sources":["../../../node_modules/intl-tel-input/build/js/intlTelInput.js","../../../node_modules/intl-tel-input/index.js"],"sourcesContent":["/*\n * International Telephone Input v18.5.3\n * https://github.com/jackocnr/intl-tel-input.git\n * Licensed under the MIT license\n */\n\n// wrap in UMD\n(function(factory) {\n if (typeof module === \"object\" && module.exports) module.exports = factory(); else window.intlTelInput = factory();\n})(function(undefined) {\n \"use strict\";\n return function() {\n // Array of country objects for the flag dropdown.\n // Here is the criteria for the plugin to support a given country/territory\n // - It has an iso2 code: https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2\n // - It has it's own country calling code (it is not a sub-region of another country): https://en.wikipedia.org/wiki/List_of_country_calling_codes\n // - It has a flag in the region-flags project: https://github.com/behdad/region-flags/tree/gh-pages/png\n // - It is supported by libphonenumber (it must be listed on this page): https://github.com/googlei18n/libphonenumber/blob/master/resources/ShortNumberMetadata.xml\n // Each country array has the following information:\n // [\n // Country name,\n // iso2 code,\n // International dial code,\n // Order (if >1 country with same dial code),\n // Area codes\n // ]\n var allCountries = [ [ \"Afghanistan\", \"af\", \"93\" ], [ \"Albania\", \"al\", \"355\" ], [ \"Algeria\", \"dz\", \"213\" ], [ \"American Samoa\", \"as\", \"1\", 5, [ \"684\" ] ], [ \"Andorra\", \"ad\", \"376\" ], [ \"Angola\", \"ao\", \"244\" ], [ \"Anguilla\", \"ai\", \"1\", 6, [ \"264\" ] ], [ \"Antigua & Barbuda\", \"ag\", \"1\", 7, [ \"268\" ] ], [ \"Argentina\", \"ar\", \"54\" ], [ \"Armenia\", \"am\", \"374\" ], [ \"Aruba\", \"aw\", \"297\" ], [ \"Ascension Island\", \"ac\", \"247\" ], [ \"Australia\", \"au\", \"61\", 0 ], [ \"Austria\", \"at\", \"43\" ], [ \"Azerbaijan\", \"az\", \"994\" ], [ \"Bahamas\", \"bs\", \"1\", 8, [ \"242\" ] ], [ \"Bahrain\", \"bh\", \"973\" ], [ \"Bangladesh\", \"bd\", \"880\" ], [ \"Barbados\", \"bb\", \"1\", 9, [ \"246\" ] ], [ \"Belarus\", \"by\", \"375\" ], [ \"Belgium\", \"be\", \"32\" ], [ \"Belize\", \"bz\", \"501\" ], [ \"Benin\", \"bj\", \"229\" ], [ \"Bermuda\", \"bm\", \"1\", 10, [ \"441\" ] ], [ \"Bhutan\", \"bt\", \"975\" ], [ \"Bolivia\", \"bo\", \"591\" ], [ \"Bosnia & Herzegovina\", \"ba\", \"387\" ], [ \"Botswana\", \"bw\", \"267\" ], [ \"Brazil\", \"br\", \"55\" ], [ \"British Indian Ocean Territory\", \"io\", \"246\" ], [ \"British Virgin Islands\", \"vg\", \"1\", 11, [ \"284\" ] ], [ \"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\", \"263\", \"289\", \"306\", \"343\", \"354\", \"365\", \"367\", \"368\", \"382\", \"387\", \"403\", \"416\", \"418\", \"428\", \"431\", \"437\", \"438\", \"450\", \"584\", \"468\", \"474\", \"506\", \"514\", \"519\", \"548\", \"579\", \"581\", \"584\", \"587\", \"604\", \"613\", \"639\", \"647\", \"672\", \"683\", \"705\", \"709\", \"742\", \"753\", \"778\", \"780\", \"782\", \"807\", \"819\", \"825\", \"867\", \"873\", \"902\", \"905\" ] ], [ \"Cape Verde\", \"cv\", \"238\" ], [ \"Caribbean Netherlands\", \"bq\", \"599\", 1, [ \"3\", \"4\", \"7\" ] ], [ \"Cayman Islands\", \"ky\", \"1\", 12, [ \"345\" ] ], [ \"Central African Republic\", \"cf\", \"236\" ], [ \"Chad\", \"td\", \"235\" ], [ \"Chile\", \"cl\", \"56\" ], [ \"China\", \"cn\", \"86\" ], [ \"Christmas Island\", \"cx\", \"61\", 2, [ \"89164\" ] ], [ \"Cocos (Keeling) Islands\", \"cc\", \"61\", 1, [ \"89162\" ] ], [ \"Colombia\", \"co\", \"57\" ], [ \"Comoros\", \"km\", \"269\" ], [ \"Congo - Brazzaville\", \"cg\", \"242\" ], [ \"Congo - Kinshasa\", \"cd\", \"243\" ], [ \"Cook Islands\", \"ck\", \"682\" ], [ \"Costa Rica\", \"cr\", \"506\" ], [ \"C繫te d�窼voire\", \"ci\", \"225\" ], [ \"Croatia\", \"hr\", \"385\" ], [ \"Cuba\", \"cu\", \"53\" ], [ \"Cura癟ao\", \"cw\", \"599\", 0 ], [ \"Cyprus\", \"cy\", \"357\" ], [ \"Czech Republic\", \"cz\", \"420\" ], [ \"Denmark\", \"dk\", \"45\" ], [ \"Djibouti\", \"dj\", \"253\" ], [ \"Dominica\", \"dm\", \"1\", 13, [ \"767\" ] ], [ \"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\" ], [ \"Eswatini\", \"sz\", \"268\" ], [ \"Ethiopia\", \"et\", \"251\" ], [ \"Falkland Islands\", \"fk\", \"500\" ], [ \"Faroe Islands\", \"fo\", \"298\" ], [ \"Fiji\", \"fj\", \"679\" ], [ \"Finland\", \"fi\", \"358\", 0 ], [ \"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\" ], [ \"Gibraltar\", \"gi\", \"350\" ], [ \"Greece\", \"gr\", \"30\" ], [ \"Greenland\", \"gl\", \"299\" ], [ \"Grenada\", \"gd\", \"1\", 14, [ \"473\" ] ], [ \"Guadeloupe\", \"gp\", \"590\", 0 ], [ \"Guam\", \"gu\", \"1\", 15, [ \"671\" ] ], [ \"Guatemala\", \"gt\", \"502\" ], [ \"Guernsey\", \"gg\", \"44\", 1, [ \"1481\", \"7781\", \"7839\", \"7911\" ] ], [ \"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\" ], [ \"Isle of Man\", \"im\", \"44\", 2, [ \"1624\", \"74576\", \"7524\", \"7924\", \"7624\" ] ], [ \"Israel\", \"il\", \"972\" ], [ \"Italy\", \"it\", \"39\", 0 ], [ \"Jamaica\", \"jm\", \"1\", 4, [ \"876\", \"658\" ] ], [ \"Japan\", \"jp\", \"81\" ], [ \"Jersey\", \"je\", \"44\", 3, [ \"1534\", \"7509\", \"7700\", \"7797\", \"7829\", \"7937\" ] ], [ \"Jordan\", \"jo\", \"962\" ], [ \"Kazakhstan\", \"kz\", \"7\", 1, [ \"33\", \"7\" ] ], [ \"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\" ], [ \"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\" ], [ \"Micronesia\", \"fm\", \"691\" ], [ \"Moldova\", \"md\", \"373\" ], [ \"Monaco\", \"mc\", \"377\" ], [ \"Mongolia\", \"mn\", \"976\" ], [ \"Montenegro\", \"me\", \"382\" ], [ \"Montserrat\", \"ms\", \"1\", 16, [ \"664\" ] ], [ \"Morocco\", \"ma\", \"212\", 0 ], [ \"Mozambique\", \"mz\", \"258\" ], [ \"Myanmar (Burma)\", \"mm\", \"95\" ], [ \"Namibia\", \"na\", \"264\" ], [ \"Nauru\", \"nr\", \"674\" ], [ \"Nepal\", \"np\", \"977\" ], [ \"Netherlands\", \"nl\", \"31\" ], [ \"New Caledonia\", \"nc\", \"687\" ], [ \"New Zealand\", \"nz\", \"64\" ], [ \"Nicaragua\", \"ni\", \"505\" ], [ \"Niger\", \"ne\", \"227\" ], [ \"Nigeria\", \"ng\", \"234\" ], [ \"Niue\", \"nu\", \"683\" ], [ \"Norfolk Island\", \"nf\", \"672\" ], [ \"North Korea\", \"kp\", \"850\" ], [ \"North Macedonia\", \"mk\", \"389\" ], [ \"Northern Mariana Islands\", \"mp\", \"1\", 17, [ \"670\" ] ], [ \"Norway\", \"no\", \"47\", 0 ], [ \"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矇union\", \"re\", \"262\", 0 ], [ \"Romania\", \"ro\", \"40\" ], [ \"Russia\", \"ru\", \"7\", 0 ], [ \"Rwanda\", \"rw\", \"250\" ], [ \"Samoa\", \"ws\", \"685\" ], [ \"San Marino\", \"sm\", \"378\" ], [ \"S瓊o Tom矇 & Pr穩ncipe\", \"st\", \"239\" ], [ \"Saudi Arabia\", \"sa\", \"966\" ], [ \"Senegal\", \"sn\", \"221\" ], [ \"Serbia\", \"rs\", \"381\" ], [ \"Seychelles\", \"sc\", \"248\" ], [ \"Sierra Leone\", \"sl\", \"232\" ], [ \"Singapore\", \"sg\", \"65\" ], [ \"Sint Maarten\", \"sx\", \"1\", 21, [ \"721\" ] ], [ \"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\" ], [ \"St Barth矇lemy\", \"bl\", \"590\", 1 ], [ \"St Helena\", \"sh\", \"290\" ], [ \"St Kitts & Nevis\", \"kn\", \"1\", 18, [ \"869\" ] ], [ \"St Lucia\", \"lc\", \"1\", 19, [ \"758\" ] ], [ \"St Martin\", \"mf\", \"590\", 2 ], [ \"St Pierre & Miquelon\", \"pm\", \"508\" ], [ \"St Vincent & Grenadines\", \"vc\", \"1\", 20, [ \"784\" ] ], [ \"Sudan\", \"sd\", \"249\" ], [ \"Suriname\", \"sr\", \"597\" ], [ \"Svalbard & Jan Mayen\", \"sj\", \"47\", 1, [ \"79\" ] ], [ \"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\" ], [ \"Tokelau\", \"tk\", \"690\" ], [ \"Tonga\", \"to\", \"676\" ], [ \"Trinidad & Tobago\", \"tt\", \"1\", 22, [ \"868\" ] ], [ \"Tunisia\", \"tn\", \"216\" ], [ \"Turkey\", \"tr\", \"90\" ], [ \"Turkmenistan\", \"tm\", \"993\" ], [ \"Turks & Caicos Islands\", \"tc\", \"1\", 23, [ \"649\" ] ], [ \"Tuvalu\", \"tv\", \"688\" ], [ \"Uganda\", \"ug\", \"256\" ], [ \"Ukraine\", \"ua\", \"380\" ], [ \"United Arab Emirates\", \"ae\", \"971\" ], [ \"United Kingdom\", \"gb\", \"44\", 0 ], [ \"United States\", \"us\", \"1\", 0 ], [ \"Uruguay\", \"uy\", \"598\" ], [ \"US Virgin Islands\", \"vi\", \"1\", 24, [ \"340\" ] ], [ \"Uzbekistan\", \"uz\", \"998\" ], [ \"Vanuatu\", \"vu\", \"678\" ], [ \"Vatican City\", \"va\", \"39\", 1, [ \"06698\" ] ], [ \"Venezuela\", \"ve\", \"58\" ], [ \"Vietnam\", \"vn\", \"84\" ], [ \"Wallis & Futuna\", \"wf\", \"681\" ], [ \"Western Sahara\", \"eh\", \"212\", 1, [ \"5288\", \"5289\" ] ], [ \"Yemen\", \"ye\", \"967\" ], [ \"Zambia\", \"zm\", \"260\" ], [ \"Zimbabwe\", \"zw\", \"263\" ], [ \"�land Islands\", \"ax\", \"358\", 1, [ \"18\" ] ] ];\n // loop over all of the countries above, restructuring the data to be objects with named keys\n for (var i = 0; i < allCountries.length; i++) {\n var c = allCountries[i];\n allCountries[i] = {\n name: c[0],\n iso2: c[1],\n dialCode: c[2],\n priority: c[3] || 0,\n areaCodes: c[4] || null\n };\n }\n \"use strict\";\n function _objectSpread(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? Object(arguments[i]) : {};\n var ownKeys = Object.keys(source);\n if (typeof Object.getOwnPropertySymbols === \"function\") {\n ownKeys.push.apply(ownKeys, Object.getOwnPropertySymbols(source).filter(function(sym) {\n return Object.getOwnPropertyDescriptor(source, sym).enumerable;\n }));\n }\n ownKeys.forEach(function(key) {\n _defineProperty(target, key, source[key]);\n });\n }\n return target;\n }\n function _defineProperty(obj, key, value) {\n key = _toPropertyKey(key);\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n }\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor);\n }\n }\n function _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n Object.defineProperty(Constructor, \"prototype\", {\n writable: false\n });\n return Constructor;\n }\n function _toPropertyKey(arg) {\n var key = _toPrimitive(arg, \"string\");\n return typeof key === \"symbol\" ? key : String(key);\n }\n function _toPrimitive(input, hint) {\n if (typeof input !== \"object\" || input === null) return input;\n var prim = input[Symbol.toPrimitive];\n if (prim !== undefined) {\n var res = prim.call(input, hint || \"default\");\n if (typeof res !== \"object\") return res;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (hint === \"string\" ? String : Number)(input);\n }\n var intlTelInputGlobals = {\n getInstance: function getInstance(input) {\n var id = input.getAttribute(\"data-intl-tel-input-id\");\n return window.intlTelInputGlobals.instances[id];\n },\n instances: {},\n // using a global like this allows us to mock it in the tests\n documentReady: function documentReady() {\n return document.readyState === \"complete\";\n }\n };\n if (typeof window === \"object\") {\n window.intlTelInputGlobals = intlTelInputGlobals;\n }\n // these vars persist through all instances of the plugin\n var id = 0;\n var defaults = {\n // whether or not to allow the dropdown\n allowDropdown: true,\n // auto insert dial code (A) on init, (B) on user selecting a country, (C) on calling setCountry\n // also listen for blur/submit and auto remove dial code if that's all there is\n autoInsertDialCode: false,\n // add a placeholder in the input with an example number for the selected country\n autoPlaceholder: \"polite\",\n // add a country search input at the top of the dropdown\n countrySearch: false,\n // modify the parentClass\n customContainer: \"\",\n // modify the auto placeholder\n customPlaceholder: null,\n // append menu to specified element\n dropdownContainer: null,\n // don't display these countries\n excludeCountries: [],\n // fix the dropdown width to the input width (rather than being as wide as the longest country name)\n fixDropdownWidth: false,\n // format the input value during initialisation and on setNumber\n formatOnDisplay: true,\n // geoIp lookup function\n geoIpLookup: null,\n // inject a hidden input with this name, and on submit, populate it with the result of getNumber\n hiddenInput: \"\",\n // initial country\n initialCountry: \"\",\n // localized country names e.g. { 'de': 'Deutschland' }\n localizedCountries: null,\n // national vs international formatting for numbers e.g. placeholders and displaying existing numbers\n nationalMode: true,\n // display only these countries\n onlyCountries: [],\n // number type to use for placeholders\n placeholderNumberType: \"MOBILE\",\n // the countries at the top of the list. defaults to united states and united kingdom\n preferredCountries: [ \"us\", \"gb\" ],\n // display the country dial code next to the selected flag\n separateDialCode: false,\n // option to hide the flags - must be used with separateDialCode, or allowDropdown=false\n showFlags: true,\n // use full screen popup instead of dropdown for country list\n useFullscreenPopup: typeof navigator !== \"undefined\" && typeof window !== \"undefined\" ? // we cannot just test screen size as some smartphones/website meta tags will report desktop\n // resolutions\n // Note: to target Android Mobiles (and not Tablets), we must find 'Android' and 'Mobile'\n /Android.+Mobile|webOS|iPhone|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent) || window.innerWidth <= 500 : false,\n // specify the path to the libphonenumber script to enable validation/formatting\n utilsScript: \"\"\n };\n // https://en.wikipedia.org/wiki/List_of_North_American_Numbering_Plan_area_codes#Non-geographic_area_codes\n var regionlessNanpNumbers = [ \"800\", \"822\", \"833\", \"844\", \"855\", \"866\", \"877\", \"880\", \"881\", \"882\", \"883\", \"884\", \"885\", \"886\", \"887\", \"888\", \"889\" ];\n // utility function to iterate over an object. can't use Object.entries or native forEach because\n // of IE11\n var forEachProp = function forEachProp(obj, callback) {\n var keys = Object.keys(obj);\n for (var i = 0; i < keys.length; i++) {\n callback(keys[i], obj[keys[i]]);\n }\n };\n // run a method on each instance of the plugin\n var forEachInstance = function forEachInstance(method) {\n forEachProp(window.intlTelInputGlobals.instances, function(key) {\n window.intlTelInputGlobals.instances[key][method]();\n });\n };\n // this is our plugin class that we will create an instance of\n // eslint-disable-next-line no-unused-vars\n var Iti = /*#__PURE__*/ function() {\n function Iti(input, options) {\n var _this = this;\n _classCallCheck(this, Iti);\n this.id = id++;\n this.telInput = input;\n this.activeItem = null;\n this.highlightedItem = null;\n // process specified options / defaults\n // alternative to Object.assign, which isn't supported by IE11\n var customOptions = options || {};\n this.options = {};\n forEachProp(defaults, function(key, value) {\n _this.options[key] = customOptions.hasOwnProperty(key) ? customOptions[key] : value;\n });\n this.hadInitialPlaceholder = Boolean(input.getAttribute(\"placeholder\"));\n }\n _createClass(Iti, [ {\n key: \"_init\",\n value: function _init() {\n var _this2 = this;\n // if showing fullscreen popup, do not fix the width\n if (this.options.useFullscreenPopup) {\n this.options.fixDropdownWidth = false;\n }\n // when search enabled, we must fix the width else it would change with different results\n if (this.options.countrySearch && !this.options.useFullscreenPopup) {\n this.options.fixDropdownWidth = true;\n }\n // if in nationalMode, do not insert dial codes\n if (this.options.nationalMode) {\n this.options.autoInsertDialCode = false;\n }\n // if separateDialCode enabled, do not insert dial codes\n if (this.options.separateDialCode) {\n this.options.autoInsertDialCode = false;\n }\n // force showFlags=true if there's a dropdown and we're not displaying the dial code,\n // as otherwise you just have a down arrow on it's own which doesn't make sense\n var forceShowFlags = this.options.allowDropdown && !this.options.separateDialCode;\n if (!this.options.showFlags && forceShowFlags) {\n this.options.showFlags = true;\n }\n // on mobile, we want a full screen dropdown, so we must append it to the body\n if (this.options.useFullscreenPopup && !this.options.dropdownContainer) {\n this.options.dropdownContainer = document.body;\n }\n // check if input has one parent with RTL\n this.isRTL = !!this.telInput.closest(\"[dir=rtl]\");\n // these promises get resolved when their individual requests complete\n // this way the dev can do something like iti.promise.then(...) to know when all requests are\n // complete\n if (typeof Promise !== \"undefined\") {\n var autoCountryPromise = new Promise(function(resolve, reject) {\n _this2.resolveAutoCountryPromise = resolve;\n _this2.rejectAutoCountryPromise = reject;\n });\n var utilsScriptPromise = new Promise(function(resolve, reject) {\n _this2.resolveUtilsScriptPromise = resolve;\n _this2.rejectUtilsScriptPromise = reject;\n });\n this.promise = Promise.all([ autoCountryPromise, utilsScriptPromise ]);\n } else {\n // prevent errors when Promise doesn't exist\n this.resolveAutoCountryPromise = this.rejectAutoCountryPromise = function() {};\n this.resolveUtilsScriptPromise = this.rejectUtilsScriptPromise = function() {};\n }\n // in various situations there could be no country selected initially, but we need to be able\n // to assume this variable exists\n this.selectedCountryData = {};\n // process all the data: onlyCountries, excludeCountries, preferredCountries etc\n this._processCountryData();\n // generate the markup\n this._generateMarkup();\n // set the initial state of the input value and the selected flag\n this._setInitialState();\n // start all of the event listeners: autoInsertDialCode, input keydown, selectedFlag click\n this._initListeners();\n // utils script, and auto country\n this._initRequests();\n }\n }, {\n key: \"_processCountryData\",\n value: function _processCountryData() {\n // process onlyCountries or excludeCountries array if present\n this._processAllCountries();\n // process the countryCodes map\n this._processCountryCodes();\n // process the preferredCountries\n this._processPreferredCountries();\n // translate countries according to localizedCountries option\n if (this.options.localizedCountries) {\n this._translateCountriesByLocale();\n }\n // sort countries by name\n if (this.options.onlyCountries.length || this.options.localizedCountries) {\n this.countries.sort(this._countryNameSort);\n }\n }\n }, {\n key: \"_addCountryCode\",\n value: function _addCountryCode(iso2, countryCode, priority) {\n if (countryCode.length > this.countryCodeMaxLen) {\n this.countryCodeMaxLen = countryCode.length;\n }\n if (!this.countryCodes.hasOwnProperty(countryCode)) {\n this.countryCodes[countryCode] = [];\n }\n // bail if we already have this country for this countryCode\n for (var i = 0; i < this.countryCodes[countryCode].length; i++) {\n if (this.countryCodes[countryCode][i] === iso2) {\n return;\n }\n }\n // check for undefined as 0 is falsy\n var index = priority !== undefined ? priority : this.countryCodes[countryCode].length;\n this.countryCodes[countryCode][index] = iso2;\n }\n }, {\n key: \"_processAllCountries\",\n value: function _processAllCountries() {\n if (this.options.onlyCountries.length) {\n var lowerCaseOnlyCountries = this.options.onlyCountries.map(function(country) {\n return country.toLowerCase();\n });\n this.countries = allCountries.filter(function(country) {\n return lowerCaseOnlyCountries.indexOf(country.iso2) > -1;\n });\n } else if (this.options.excludeCountries.length) {\n var lowerCaseExcludeCountries = this.options.excludeCountries.map(function(country) {\n return country.toLowerCase();\n });\n this.countries = allCountries.filter(function(country) {\n return lowerCaseExcludeCountries.indexOf(country.iso2) === -1;\n });\n } else {\n this.countries = allCountries;\n }\n }\n }, {\n key: \"_translateCountriesByLocale\",\n value: function _translateCountriesByLocale() {\n for (var i = 0; i < this.countries.length; i++) {\n var iso = this.countries[i].iso2.toLowerCase();\n if (this.options.localizedCountries.hasOwnProperty(iso)) {\n this.countries[i].name = this.options.localizedCountries[iso];\n }\n }\n }\n }, {\n key: \"_countryNameSort\",\n value: function _countryNameSort(a, b) {\n if (a.name < b.name) {\n return -1;\n }\n if (a.name > b.name) {\n return 1;\n }\n return 0;\n }\n }, {\n key: \"_processCountryCodes\",\n value: function _processCountryCodes() {\n this.countryCodeMaxLen = 0;\n // here we store just dial codes\n this.dialCodes = {};\n // here we store \"country codes\" (both dial codes and their area codes)\n this.countryCodes = {};\n // first: add dial codes\n for (var i = 0; i < this.countries.length; i++) {\n var c = this.countries[i];\n if (!this.dialCodes[c.dialCode]) {\n this.dialCodes[c.dialCode] = true;\n }\n this._addCountryCode(c.iso2, c.dialCode, c.priority);\n }\n // next: add area codes\n // this is a second loop over countries, to make sure we have all of the \"root\" countries\n // already in the map, so that we can access them, as each time we add an area code substring\n // to the map, we also need to include the \"root\" country's code, as that also matches\n for (var _i = 0; _i < this.countries.length; _i++) {\n var _c = this.countries[_i];\n // area codes\n if (_c.areaCodes) {\n var rootCountryCode = this.countryCodes[_c.dialCode][0];\n // for each area code\n for (var j = 0; j < _c.areaCodes.length; j++) {\n var areaCode = _c.areaCodes[j];\n // for each digit in the area code to add all partial matches as well\n for (var k = 1; k < areaCode.length; k++) {\n var partialDialCode = _c.dialCode + areaCode.substr(0, k);\n // start with the root country, as that also matches this dial code\n this._addCountryCode(rootCountryCode, partialDialCode);\n this._addCountryCode(_c.iso2, partialDialCode);\n }\n // add the full area code\n this._addCountryCode(_c.iso2, _c.dialCode + areaCode);\n }\n }\n }\n }\n }, {\n key: \"_processPreferredCountries\",\n value: function _processPreferredCountries() {\n this.preferredCountries = [];\n for (var i = 0; i < this.options.preferredCountries.length; i++) {\n var countryCode = this.options.preferredCountries[i].toLowerCase();\n var countryData = this._getCountryData(countryCode, false, true);\n if (countryData) {\n this.preferredCountries.push(countryData);\n }\n }\n }\n }, {\n key: \"_createEl\",\n value: function _createEl(name, attrs, container) {\n var el = document.createElement(name);\n if (attrs) {\n forEachProp(attrs, function(key, value) {\n return el.setAttribute(key, value);\n });\n }\n if (container) {\n container.appendChild(el);\n }\n return el;\n }\n }, {\n key: \"_generateMarkup\",\n value: function _generateMarkup() {\n this.telInput.classList.add(\"iti__tel-input\");\n // if autocomplete does not exist on the element and its form, then\n // prevent autocomplete as there's no safe, cross-browser event we can react to, so it can\n // easily put the plugin in an inconsistent state e.g. the wrong flag selected for the\n // autocompleted number, which on submit could mean wrong number is saved\n if (!this.telInput.hasAttribute(\"autocomplete\") && !(this.telInput.form && this.telInput.form.hasAttribute(\"autocomplete\"))) {\n this.telInput.setAttribute(\"autocomplete\", \"off\");\n }\n var _this$options = this.options, allowDropdown = _this$options.allowDropdown, separateDialCode = _this$options.separateDialCode, showFlags = _this$options.showFlags, customContainer = _this$options.customContainer, hiddenInput = _this$options.hiddenInput, dropdownContainer = _this$options.dropdownContainer, fixDropdownWidth = _this$options.fixDropdownWidth, useFullscreenPopup = _this$options.useFullscreenPopup, countrySearch = _this$options.countrySearch;\n // containers (mostly for positioning)\n var parentClass = \"iti\";\n if (allowDropdown) {\n parentClass += \" iti--allow-dropdown\";\n }\n if (separateDialCode) {\n parentClass += \" iti--separate-dial-code\";\n }\n if (showFlags) {\n parentClass += \" iti--show-flags\";\n }\n if (customContainer) {\n parentClass += \" \".concat(customContainer);\n }\n var wrapper = this._createEl(\"div\", {\n \"class\": parentClass\n });\n this.telInput.parentNode.insertBefore(wrapper, this.telInput);\n // only hide the flagsContainer if allowDropdown, showFlags and separateDialCode are all false\n var showFlagsContainer = allowDropdown || showFlags || separateDialCode;\n if (showFlagsContainer) {\n this.flagsContainer = this._createEl(\"div\", {\n \"class\": \"iti__flag-container\"\n }, wrapper);\n }\n wrapper.appendChild(this.telInput);\n // selected flag (displayed to left of input)\n // using Aria tags for \"Select-Only Combobox Example\"\n // https://www.w3.org/WAI/ARIA/apg/patterns/combobox/examples/combobox-select-only/\n if (showFlagsContainer) {\n this.selectedFlag = this._createEl(\"div\", _objectSpread({\n \"class\": \"iti__selected-flag\"\n }, allowDropdown && {\n role: \"combobox\",\n \"aria-haspopup\": \"listbox\",\n \"aria-controls\": \"iti-\".concat(this.id, \"__country-listbox\"),\n \"aria-expanded\": \"false\",\n \"aria-label\": \"Telephone country code\"\n }), this.flagsContainer);\n }\n if (showFlags) {\n this.selectedFlagInner = this._createEl(\"div\", {\n \"class\": \"iti__flag\"\n }, this.selectedFlag);\n }\n if (this.selectedFlag && this.telInput.disabled) {\n this.selectedFlag.setAttribute(\"aria-disabled\", \"true\");\n }\n if (separateDialCode) {\n this.selectedDialCode = this._createEl(\"div\", {\n \"class\": \"iti__selected-dial-code\"\n }, this.selectedFlag);\n }\n if (allowDropdown) {\n if (!this.telInput.disabled) {\n // make element focusable and tab navigable\n this.selectedFlag.setAttribute(\"tabindex\", \"0\");\n }\n this.dropdownArrow = this._createEl(\"div\", {\n \"class\": \"iti__arrow\"\n }, this.selectedFlag);\n var extraClasses = fixDropdownWidth ? \"\" : \"iti--flexible-dropdown-width\";\n this.dropdownContent = this._createEl(\"div\", {\n \"class\": \"iti__dropdown-content iti__hide \".concat(extraClasses)\n });\n if (countrySearch) {\n this.searchInput = this._createEl(\"input\", {\n type: \"text\",\n \"class\": \"iti__search-input\",\n placeholder: \"Search\"\n }, this.dropdownContent);\n }\n // country list: preferred countries, then divider, then all countries\n this.countryList = this._createEl(\"ul\", {\n \"class\": \"iti__country-list\",\n id: \"iti-\".concat(this.id, \"__country-listbox\"),\n role: \"listbox\",\n \"aria-label\": \"List of countries\"\n }, this.dropdownContent);\n if (this.preferredCountries.length && !countrySearch) {\n this._appendListItems(this.preferredCountries, \"iti__preferred\", true);\n this._createEl(\"li\", {\n \"class\": \"iti__divider\",\n \"aria-hidden\": \"true\"\n }, this.countryList);\n }\n this._appendListItems(this.countries, \"iti__standard\");\n // create dropdownContainer markup\n if (dropdownContainer) {\n var dropdownClasses = \"iti iti--container\";\n if (useFullscreenPopup) {\n dropdownClasses += \" iti--fullscreen-popup\";\n }\n if (countrySearch) {\n dropdownClasses += \" iti--country-search\";\n }\n this.dropdown = this._createEl(\"div\", {\n \"class\": dropdownClasses\n });\n this.dropdown.appendChild(this.dropdownContent);\n } else {\n this.flagsContainer.appendChild(this.dropdownContent);\n }\n }\n if (hiddenInput) {\n var hiddenInputName = hiddenInput;\n var name = this.telInput.getAttribute(\"name\");\n if (name) {\n var i = name.lastIndexOf(\"[\");\n // if input name contains square brackets, then give the hidden input the same name,\n // replacing the contents of the last set of brackets with the given hiddenInput name\n if (i !== -1) {\n hiddenInputName = \"\".concat(name.substr(0, i), \"[\").concat(hiddenInputName, \"]\");\n }\n }\n this.hiddenInput = this._createEl(\"input\", {\n type: \"hidden\",\n name: hiddenInputName\n });\n wrapper.appendChild(this.hiddenInput);\n }\n }\n }, {\n key: \"_appendListItems\",\n value: function _appendListItems(countries, className, preferred) {\n for (var i = 0; i < countries.length; i++) {\n var c = countries[i];\n var idSuffix = preferred ? \"-preferred\" : \"\";\n var listItem = this._createEl(\"li\", {\n id: \"iti-\".concat(this.id, \"__item-\").concat(c.iso2).concat(idSuffix),\n \"class\": \"iti__country \".concat(className),\n tabindex: \"-1\",\n role: \"option\",\n \"data-dial-code\": c.dialCode,\n \"data-country-code\": c.iso2,\n \"aria-selected\": \"false\"\n }, this.countryList);\n // store this for later use e.g. country search filtering\n c.node = listItem;\n var content = \"\";\n // add the flag\n if (this.options.showFlags) {\n content += \"<div class='iti__flag-box'><div class='iti__flag iti__\".concat(c.iso2, \"'></div></div>\");\n }\n // and the country name and dial code\n content += \"<span class='iti__country-name'>\".concat(c.name, \"</span>\");\n content += \"<span class='iti__dial-code'>+\".concat(c.dialCode, \"</span>\");\n listItem.insertAdjacentHTML(\"beforeend\", content);\n }\n }\n }, {\n key: \"_setInitialState\",\n value: function _setInitialState() {\n // fix firefox bug: when first load page (with input with value set to number with intl dial\n // code) and initialising plugin removes the dial code from the input, then refresh page,\n // and we try to init plugin again but this time on number without dial code so get grey flag\n var attributeValue = this.telInput.getAttribute(\"value\");\n var inputValue = this.telInput.value;\n var useAttribute = attributeValue && attributeValue.charAt(0) === \"+\" && (!inputValue || inputValue.charAt(0) !== \"+\");\n var val = useAttribute ? attributeValue : inputValue;\n var dialCode = this._getDialCode(val);\n var isRegionlessNanp = this._isRegionlessNanp(val);\n var _this$options2 = this.options, initialCountry = _this$options2.initialCountry, autoInsertDialCode = _this$options2.autoInsertDialCode;\n // if we already have a dial code, and it's not a regionlessNanp, we can go ahead and set the\n // flag, else fall back to the default country\n if (dialCode && !isRegionlessNanp) {\n this._updateFlagFromNumber(val);\n } else if (initialCountry !== \"auto\") {\n var isValidInitialCountry = initialCountry && this._getCountryData(initialCountry, false, true);\n // see if we should select a flag\n if (isValidInitialCountry) {\n this._setFlag(initialCountry.toLowerCase());\n } else {\n if (dialCode && isRegionlessNanp) {\n // has intl dial code, is regionless nanp, and no initialCountry, so default to US\n this._setFlag(\"us\");\n } else {\n // no dial code and no initialCountry, so default to first in list\n this.defaultCountry = this.preferredCountries.length ? this.preferredCountries[0].iso2 : this.countries[0].iso2;\n if (!val) {\n this._setFlag(this.defaultCountry);\n }\n }\n }\n // if empty and autoInsertDialCode then insert the dial code\n if (!val && autoInsertDialCode) {\n this.telInput.value = \"+\".concat(this.selectedCountryData.dialCode);\n }\n }\n // NOTE: if initialCountry is set to auto, that will be handled separately\n // format - note this wont be run after _updateDialCode as that's only called if no val\n if (val) {\n this._updateValFromNumber(val);\n }\n }\n }, {\n key: \"_initListeners\",\n value: function _initListeners() {\n this._initKeyListeners();\n if (this.options.autoInsertDialCode) {\n this._initBlurListeners();\n }\n if (this.options.allowDropdown) {\n this._initDropdownListeners();\n }\n if (this.hiddenInput) {\n this._initHiddenInputListener();\n }\n }\n }, {\n key: \"_initHiddenInputListener\",\n value: function _initHiddenInputListener() {\n var _this3 = this;\n this._handleHiddenInputSubmit = function() {\n _this3.hiddenInput.value = _this3.getNumber();\n };\n if (this.telInput.form) {\n this.telInput.form.addEventListener(\"submit\", this._handleHiddenInputSubmit);\n }\n }\n }, {\n key: \"_getClosestLabel\",\n value: function _getClosestLabel() {\n var el = this.telInput;\n while (el && el.tagName !== \"LABEL\") {\n el = el.parentNode;\n }\n return el;\n }\n }, {\n key: \"_initDropdownListeners\",\n value: function _initDropdownListeners() {\n var _this4 = this;\n // hack for input nested inside label (which is valid markup): clicking the selected-flag to\n // open the dropdown would then automatically trigger a 2nd click on the input which would\n // close it again\n this._handleLabelClick = function(e) {\n // if the dropdown is closed, then focus the input, else ignore the click\n if (_this4.dropdownContent.classList.contains(\"iti__hide\")) {\n _this4.telInput.focus();\n } else {\n e.preventDefault();\n }\n };\n var label = this._getClosestLabel();\n if (label) {\n label.addEventListener(\"click\", this._handleLabelClick);\n }\n // toggle country dropdown on click\n this._handleClickSelectedFlag = function() {\n // only intercept this event if we're opening the dropdown\n // else let it bubble up to the top (\"click-off-to-close\" listener)\n // we cannot just stopPropagation as it may be needed to close another instance\n if (_this4.dropdownContent.classList.contains(\"iti__hide\") && !_this4.telInput.disabled && !_this4.telInput.readOnly) {\n _this4._showDropdown();\n }\n };\n this.selectedFlag.addEventListener(\"click\", this._handleClickSelectedFlag);\n // open dropdown if selected flag is focused and they press up/down/space/enter\n this._handleFlagsContainerKeydown = function(e) {\n var isDropdownHidden = _this4.dropdownContent.classList.contains(\"iti__hide\");\n if (isDropdownHidden && [ \"ArrowUp\", \"ArrowDown\", \" \", \"Enter\" ].includes(e.key)) {\n // prevent form from being submitted if \"ENTER\" was pressed\n e.preventDefault();\n // prevent event from being handled again by document\n e.stopPropagation();\n _this4._showDropdown();\n }\n // allow navigation from dropdown to input on TAB\n if (e.key === \"Tab\") {\n _this4._closeDropdown();\n }\n };\n this.flagsContainer.addEventListener(\"keydown\", this._handleFlagsContainerKeydown);\n }\n }, {\n key: \"_initRequests\",\n value: function _initRequests() {\n var _this5 = this;\n // if the user has specified the path to the utils script, fetch it on window.load, else resolve\n if (this.options.utilsScript && !window.intlTelInputUtils) {\n // if the plugin is being initialised after the window.load event has already been fired\n if (window.intlTelInputGlobals.documentReady()) {\n window.intlTelInputGlobals.loadUtils(this.options.utilsScript);\n } else {\n // wait until the load event so we don't block any other requests e.g. the flags image\n window.addEventListener(\"load\", function() {\n window.intlTelInputGlobals.loadUtils(_this5.options.utilsScript);\n });\n }\n } else {\n this.resolveUtilsScriptPromise();\n }\n if (this.options.initialCountry === \"auto\") {\n this._loadAutoCountry();\n } else {\n this.resolveAutoCountryPromise();\n }\n }\n }, {\n key: \"_loadAutoCountry\",\n value: function _loadAutoCountry() {\n // 3 options:\n // 1) already loaded (we're done)\n // 2) not already started loading (start)\n // 3) already started loading (do nothing - just wait for loading callback to fire)\n if (window.intlTelInputGlobals.autoCountry) {\n this.handleAutoCountry();\n } else if (!window.intlTelInputGlobals.startedLoadingAutoCountry) {\n // don't do this twice!\n window.intlTelInputGlobals.startedLoadingAutoCountry = true;\n if (typeof this.options.geoIpLookup === \"function\") {\n this.options.geoIpLookup(function(countryCode) {\n window.intlTelInputGlobals.autoCountry = countryCode.toLowerCase();\n // tell all instances the auto country is ready\n // TODO: this should just be the current instances\n // UPDATE: use setTimeout in case their geoIpLookup function calls this callback straight\n // away (e.g. if they have already done the geo ip lookup somewhere else). Using\n // setTimeout means that the current thread of execution will finish before executing\n // this, which allows the plugin to finish initialising.\n setTimeout(function() {\n return forEachInstance(\"handleAutoCountry\");\n });\n }, function() {\n return forEachInstance(\"rejectAutoCountryPromise\");\n });\n }\n }\n }\n }, {\n key: \"_initKeyListeners\",\n value: function _initKeyListeners() {\n var _this6 = this;\n // update flag on keyup\n this._handleKeyupEvent = function() {\n if (_this6._updateFlagFromNumber(_this6.telInput.value)) {\n _this6._triggerCountryChange();\n }\n };\n this.telInput.addEventListener(\"keyup\", this._handleKeyupEvent);\n // update flag on cut/paste events (now supported in all major browsers)\n this._handleClipboardEvent = function() {\n // hack because \"paste\" event is fired before input is updated\n setTimeout(_this6._handleKeyupEvent);\n };\n this.telInput.addEventListener(\"cut\", this._handleClipboardEvent);\n this.telInput.addEventListener(\"paste\", this._handleClipboardEvent);\n }\n }, {\n key: \"_cap\",\n value: function _cap(number) {\n var max = this.telInput.getAttribute(\"maxlength\");\n return max && number.length > max ? number.substr(0, max) : number;\n }\n }, {\n key: \"_initBlurListeners\",\n value: function _initBlurListeners() {\n var _this7 = this;\n // on blur or form submit: if just a dial code then remove it\n this._handleSubmitOrBlurEvent = function() {\n _this7._removeEmptyDialCode();\n };\n if (this.telInput.form) {\n this.telInput.form.addEventListener(\"submit\", this._handleSubmitOrBlurEvent);\n }\n this.telInput.addEventListener(\"blur\", this._handleSubmitOrBlurEvent);\n }\n }, {\n key: \"_removeEmptyDialCode\",\n value: function _removeEmptyDialCode() {\n if (this.telInput.value.charAt(0) === \"+\") {\n var numeric = this._getNumeric(this.telInput.value);\n // if just a plus, or if just a dial code\n if (!numeric || this.selectedCountryData.dialCode === numeric) {\n this.telInput.value = \"\";\n }\n }\n }\n }, {\n key: \"_getNumeric\",\n value: function _getNumeric(s) {\n return s.replace(/\\D/g, \"\");\n }\n }, {\n key: \"_trigger\",\n value: function _trigger(name) {\n // have to use old school document.createEvent as IE11 doesn't support `new Event()` syntax\n var e = document.createEvent(\"Event\");\n e.initEvent(name, true, true);\n // can bubble, and is cancellable\n this.telInput.dispatchEvent(e);\n }\n }, {\n key: \"_showDropdown\",\n value: function _showDropdown() {\n if (this.options.fixDropdownWidth) {\n this.dropdownContent.style.width = \"\".concat(this.telInput.offsetWidth, \"px\");\n }\n this.dropdownContent.classList.remove(\"iti__hide\");\n this.selectedFlag.setAttribute(\"aria-expanded\", \"true\");\n this._setDropdownPosition();\n if (this.options.countrySearch) {\n // start by highlighting the first item in the list\n this._highlightListItem(this.countryList.firstElementChild, false);\n this.searchInput.focus();\n } else if (this.activeItem) {\n // update highlighting and scroll to active list item\n this._highlightListItem(this.activeItem, false);\n this._scrollTo(this.activeItem, true);\n }\n // bind all the dropdown-related listeners: mouseover, click, click-off, keydown\n this._bindDropdownListeners();\n // update the arrow\n this.dropdownArrow.classList.add(\"iti__arrow--up\");\n this._trigger(\"open:countrydropdown\");\n }\n }, {\n key: \"_toggleClass\",\n value: function _toggleClass(el, className, shouldHaveClass) {\n if (shouldHaveClass && !el.classList.contains(className)) {\n el.classList.add(className);\n } else if (!shouldHaveClass && el.classList.contains(className)) {\n el.classList.remove(className);\n }\n }\n }, {\n key: \"_setDropdownPosition\",\n value: function _setDropdownPosition() {\n var _this8 = this;\n if (this.options.dropdownContainer) {\n this.options.dropdownContainer.appendChild(this.dropdown);\n }\n if (!this.options.useFullscreenPopup) {\n var pos = this.telInput.getBoundingClientRect();\n // windowTop from https://stackoverflow.com/a/14384091/217866\n var windowTop = window.pageYOffset || document.documentElement.scrollTop;\n var inputTop = pos.top + windowTop;\n var dropdownHeight = this.dropdownContent.offsetHeight;\n // dropdownFitsBelow = (dropdownBottom < windowBottom)\n var dropdownFitsBelow = inputTop + this.telInput.offsetHeight + dropdownHeight < windowTop + window.innerHeight;\n var dropdownFitsAbove = inputTop - dropdownHeight > windowTop;\n // dont allow positioning above when country search enabled as the search box jumps around as you filter countries\n var positionDropdownAboveInput = !this.options.countrySearch && !dropdownFitsBelow && dropdownFitsAbove;\n // by default, the dropdown will be below the input. If we want to position it above the\n // input, we add the dropup class.\n this._toggleClass(this.dropdownContent, \"iti__dropdown-content--dropup\", positionDropdownAboveInput);\n // if dropdownContainer is enabled, calculate postion\n if (this.options.dropdownContainer) {\n // by default the dropdown will be directly over the input because it's not in the flow.\n // If we want to position it below, we need to add some extra top value.\n var extraTop = positionDropdownAboveInput ? 0 : this.telInput.offsetHeight;\n // calculate placement\n this.dropdown.style.top = \"\".concat(inputTop + extraTop, \"px\");\n this.dropdown.style.left = \"\".concat(pos.left + document.body.scrollLeft, \"px\");\n // close menu on window scroll\n this._handleWindowScroll = function() {\n return _this8._closeDropdown();\n };\n window.addEventListener(\"scroll\", this._handleWindowScroll);\n }\n }\n }\n }, {\n key: \"_getClosestListItem\",\n value: function _getClosestListItem(target) {\n var el = target;\n while (el && el !== this.countryList && !el.classList.contains(\"iti__country\")) {\n el = el.parentNode;\n }\n // if we reached the countryList element, then return null\n return el === this.countryList ? null : el;\n }\n }, {\n key: \"_bindDropdownListeners\",\n value: function _bindDropdownListeners() {\n var _this9 = this;\n // when mouse over a list item, just highlight that one\n // we add the class \"highlight\", so if they hit \"enter\" we know which one to select\n this._handleMouseoverCountryList = function(e) {\n // handle event delegation, as we're listening for this event on the countryList\n var listItem = _this9._getClosestListItem(e.target);\n if (listItem) {\n _this9._highlightListItem(listItem, false);\n }\n };\n this.countryList.addEventListener(\"mouseover\", this._handleMouseoverCountryList);\n // listen for country selection\n this._handleClickCountryList = function(e) {\n var listItem = _this9._getClosestListItem(e.target);\n if (listItem) {\n _this9._selectListItem(listItem);\n }\n };\n this.countryList.addEventListener(\"click\", this._handleClickCountryList);\n // click off to close\n // (except when this initial opening click is bubbling up)\n // we cannot just stopPropagation as it may be needed to close another instance\n var isOpening = true;\n this._handleClickOffToClose = function() {\n if (!isOpening) {\n _this9._closeDropdown();\n }\n isOpening = false;\n };\n document.documentElement.addEventListener(\"click\", this._handleClickOffToClose);\n // listen for up/down scrolling, enter to select, or escape to close\n // use keydown as keypress doesn't fire for non-char keys and we want to catch if they\n // just hit down and hold it to scroll down (no keyup event).\n // listen on the document because that's where key events are triggered if no input has focus\n var query = \"\";\n var queryTimer = null;\n this._handleKeydownOnDropdown = function(e) {\n // prevent down key from scrolling the whole page,\n // and enter key from submitting a form etc\n if ([ \"ArrowUp\", \"ArrowDown\", \"Enter\", \"Escape\" ].includes(e.key)) {\n e.preventDefault();\n e.stopPropagation();\n // up and down to navigate\n if (e.key === \"ArrowUp\" || e.key === \"ArrowDown\") {\n _this9._handleUpDownKey(e.key);\n } else if (e.key === \"Enter\") {\n _this9._handleEnterKey();\n } else if (e.key === \"Escape\") {\n _this9._closeDropdown();\n }\n }\n // alpha chars to perform search\n // regex allows one latin alpha char or space, based on https://stackoverflow.com/a/26900132/217866)\n if (!_this9.options.countrySearch && /^[a-zA-Z�-藩訄-�觧�-觓 ]$/.test(e.key)) {\n e.stopPropagation();\n // jump to countries that start with the query string\n if (queryTimer) {\n clearTimeout(queryTimer);\n }\n query += e.key.toLowerCase();\n _this9._searchForCountry(query);\n // if the timer hits 1 second, reset the query\n queryTimer = setTimeout(function() {\n query = \"\";\n }, 1e3);\n }\n };\n document.addEventListener(\"keydown\", this._handleKeydownOnDropdown);\n if (this.options.countrySearch) {\n var doFilter = function doFilter() {\n var inputQuery = _this9.searchInput.value.trim();\n if (inputQuery) {\n _this9._filterCountries(inputQuery.toLowerCase());\n } else {\n _this9._filterCountries(null, true);\n }\n };\n var keyupTimer = null;\n this._handleSearchChange = function() {\n // filtering country nodes is expensive (lots of DOM manipulation), so rate limit it\n if (keyupTimer) {\n clearTimeout(keyupTimer);\n }\n keyupTimer = setTimeout(function() {\n doFilter();\n keyupTimer = null;\n }, 100);\n };\n this.searchInput.addEventListener(\"input\", this._handleSearchChange);\n // stop propagation on search input click, so doesn't trigger click-off-to-close listener\n this.searchInput.addEventListener(\"click\", function(e) {\n return e.stopPropagation();\n });\n }\n }\n }, {\n key: \"_filterCountries\",\n value: function _filterCountries(query) {\n var isReset = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n var isFirst = true;\n this.countryList.innerHTML = \"\";\n for (var i = 0; i < this.countries.length; i++) {\n var c = this.countries[i];\n var nameLower = c.name.toLowerCase();\n var fullDialCode = \"+\".concat(c.dialCode);\n if (isReset || nameLower.includes(query) || fullDialCode.includes(query)) {\n this.countryList.appendChild(c.node);\n // highlight the first item\n if (isFirst) {\n this._highlightListItem(c.node, false);\n isFirst = false;\n }\n }\n }\n }\n }, {\n key: \"_handleUpDownKey\",\n value: function _handleUpDownKey(key) {\n var next = key === \"ArrowUp\" ? this.highlightedItem.previousElementSibling : this.highlightedItem.nextElementSibling;\n if (next) {\n // skip the divider\n if (next.classList.contains(\"iti__divider\")) {\n next = key === \"ArrowUp\" ? next.previousElementSibling : next.nextElementSibling;\n }\n } else if (this.countryList.childElementCount > 1) {\n // otherwise, we must be at the end, so loop round again\n next = key === \"ArrowUp\" ? this.countryList.lastElementChild : this.countryList.firstElementChild;\n }\n if (next) {\n // if country search enabled, dont lose focus from the search input on up/down\n var doFocus = !this.options.countrySearch;\n this._highlightListItem(next, doFocus);\n if (this.options.countrySearch) {\n this._scrollTo(next, false);\n }\n }\n }\n }, {\n key: \"_handleEnterKey\",\n value: function _handleEnterKey() {\n if (this.highlightedItem) {\n this._selectListItem(this.highlightedItem);\n }\n }\n }, {\n key: \"_searchForCountry\",\n value: function _searchForCountry(query) {\n for (var i = 0; i < this.countries.length; i++) {\n if (this._startsWith(this.countries[i].name, query)) {\n var listItem = this.countries[i].node;\n // update highlighting and scroll\n this._highlightListItem(listItem, false);\n this._scrollTo(listItem, true);\n break;\n }\n }\n }\n }, {\n key: \"_startsWith\",\n value: function _startsWith(a, b) {\n return a.substr(0, b.length).toLowerCase() === b;\n }\n }, {\n key: \"_updateValFromNumber\",\n value: function _updateValFromNumber(fullNumber) {\n var number = fullNumber;\n if (this.options.formatOnDisplay && window.intlTelInputUtils && this.selectedCountryData) {\n var useNational = this.options.nationalMode || number.charAt(0) !== \"+\" && !this.options.separateDialCode;\n var _intlTelInputUtils$nu = intlTelInputUtils.numberFormat, NATIONAL = _intlTelInputUtils$nu.NATIONAL, INTERNATIONAL = _intlTelInputUtils$nu.INTERNATIONAL;\n var format = useNational ? NATIONAL : INTERNATIONAL;\n number = intlTelInputUtils.formatNumber(number, this.selectedCountryData.iso2, format);\n }\n number = this._beforeSetNumber(number);\n this.telInput.value = number;\n }\n }, {\n key: \"_updateFlagFromNumber\",\n value: function _updateFlagFromNumber(fullNumber) {\n var plusIndex = fullNumber.indexOf(\"+\");\n // if it contains a plus, discard any chars before it e.g. accidental space char.\n // this keeps the selected country auto-updating correctly, which we want as\n // libphonenumber's validation/getNumber methods will ignore these chars anyway\n var number = plusIndex ? fullNumber.substring(plusIndex) : fullNumber;\n // if we already have US/Canada selected, make sure the number starts\n // with a +1 so _getDialCode will be able to extract the area code\n // update: if we dont yet have selectedCountryData, but we're here (trying to update the flag\n // from the number), that means we're initialising the plugin with a number that already has a\n // dial code, so fine to ignore this bit\n var selectedDialCode = this.selectedCountryData.dialCode;\n var isNanp = selectedDialCode === \"1\";\n if (number && isNanp && number.charAt(0) !== \"+\") {\n if (number.charAt(0) !== \"1\") {\n number = \"1\".concat(number);\n }\n number = \"+\".concat(number);\n }\n // if separateDialCode enabled, then consider the selected dial code to be part of the number\n if (this.options.separateDialCode && selectedDialCode && number.charAt(0) !== \"+\") {\n number = \"+\".concat(selectedDialCode).concat(number);\n }\n // try and extract valid dial code from input\n var dialCode = this._getDialCode(number, true);\n var numeric = this._getNumeric(number);\n var countryCode = null;\n if (dialCode) {\n var countryCodes = this.countryCodes[this._getNumeric(dialCode)];\n // check if the right country is already selected. this should be false if the number is\n // longer than the matched dial code because in this case we need to make sure that if\n // there are multiple country matches, that the first one is selected (note: we could\n // just check that here, but it requires the same loop that we already have later)\n var alreadySelected = countryCodes.indexOf(this.selectedCountryData.iso2) !== -1 && numeric.length <= dialCode.length - 1;\n var isRegionlessNanpNumber = selectedDialCode === \"1\" && this._isRegionlessNanp(numeric);\n // only update the flag if:\n // A) NOT (we currently have a NANP flag selected, and the number is a regionlessNanp)\n // AND\n // B) the right country is not already selected\n if (!isRegionlessNanpNumber && !alreadySelected) {\n // if using onlyCountries option, countryCodes[0] may be empty, so we must find the first\n // non-empty index\n for (var j = 0; j < countryCodes.length; j++) {\n if (countryCodes[j]) {\n countryCode = countryCodes[j];\n break;\n }\n }\n }\n } else if (number.charAt(0) === \"+\" && numeric.length) {\n // invalid dial code, so empty\n // Note: use getNumeric here because the number has not been formatted yet, so could contain\n // bad chars\n countryCode = \"\";\n } else if (!number || number === \"+\") {\n // empty, or just a plus, so default\n countryCode = this.defaultCountry;\n }\n if (countryCode !== null) {\n return this._setFlag(countryCode);\n }\n return false;\n }\n }, {\n key: \"_isRegionlessNanp\",\n value: function _isRegionlessNanp(number) {\n var numeric = this._getNumeric(number);\n if (numeric.charAt(0) === \"1\") {\n var areaCode = numeric.substr(1, 3);\n return regionlessNanpNumbers.indexOf(areaCode) !== -1;\n }\n return false;\n }\n }, {\n key: \"_highlightListItem\",\n value: function _highlightListItem(listItem, shouldFocus) {\n var prevItem = this.highlightedItem;\n if (prevItem) {\n prevItem.classList.remove(\"iti__highlight\");\n }\n this.highlightedItem = listItem;\n this.highlightedItem.classList.add(\"iti__highlight\");\n this.selectedFlag.setAttribute(\"aria-activedescendant\", listItem.getAttribute(\"id\"));\n if (shouldFocus) {\n this.highlightedItem.focus();\n }\n }\n }, {\n key: \"_getCountryData\",\n value: function _getCountryData(countryCode, ignoreOnlyCountriesOption, allowFail) {\n var countryList = ignoreOnlyCountriesOption ? allCountries : this.countries;\n for (var i = 0; i < countryList.length; i++) {\n if (countryList[i].iso2 === countryCode) {\n return countryList[i];\n }\n }\n if (allowFail) {\n return null;\n }\n throw new Error(\"No country data for '\".concat(countryCode, \"'\"));\n }\n }, {\n key: \"_setFlag\",\n value: function _setFlag(countryCode) {\n var _this$options3 = this.options, allowDropdown = _this$options3.allowDropdown, separateDialCode = _this$options3.separateDialCode, showFlags = _this$options3.showFlags;\n var prevCountry = this.selectedCountryData.iso2 ? this.selectedCountryData : {};\n // do this first as it will throw an error and stop if countryCode is invalid\n this.selectedCountryData = countryCode ? this._getCountryData(countryCode, false, false) : {};\n // update the defaultCountry - we only need the iso2 from now on, so just store that\n if (this.selectedCountryData.iso2) {\n this.defaultCountry = this.selectedCountryData.iso2;\n }\n if (showFlags) {\n this.selectedFlagInner.setAttribute(\"class\", \"iti__flag iti__\".concat(countryCode));\n }\n this._setSelectedCountryFlagTitleAttribute(countryCode, separateDialCode);\n if (separateDialCode) {\n var dialCode = this.selectedCountryData.dialCode ? \"+\".concat(this.selectedCountryData.dialCode) : \"\";\n this.selectedDialCode.innerHTML = dialCode;\n // offsetWidth is zero if input is in a hidden container during initialisation\n var selectedFlagWidth = this.selectedFlag.offsetWidth || this._getHiddenSelectedFlagWidth();\n // add 6px of padding after the grey selected-dial-code box, as this is what we use in the css\n if (this.isRTL) {\n this.telInput.style.paddingRight = \"\".concat(selectedFlagWidth + 6, \"px\");\n } else {\n this.telInput.style.paddingLeft = \"\".concat(selectedFlagWidth + 6, \"px\");\n }\n }\n // and the input's placeholder\n this._updatePlaceholder();\n // update the active list item\n if (allowDropdown) {\n var prevItem = this.activeItem;\n if (prevItem) {\n prevItem.classList.remove(\"iti__active\");\n prevItem.setAttribute(\"aria-selected\", \"false\");\n }\n if (countryCode) {\n // check if there is a preferred item first, else fall back to standard\n var nextItem = this.countryList.querySelector(\"#iti-\".concat(this.id, \"__item-\").concat(countryCode, \"-preferred\")) || this.countryList.querySelector(\"#iti-\".concat(this.id, \"__item-\").concat(countryCode));\n nextItem.setAttribute(\"aria-selected\", \"true\");\n nextItem.classList.add(\"iti__active\");\n this.activeItem = nextItem;\n }\n }\n // return if the flag has changed or not\n return prevCountry.iso2 !== countryCode;\n }\n }, {\n key: \"_setSelectedCountryFlagTitleAttribute\",\n value: function _setSelectedCountryFlagTitleAttribute(countryCode, separateDialCode) {\n if (!this.selectedFlag) {\n return;\n }\n var title;\n if (countryCode && !separateDialCode) {\n title = \"\".concat(this.selectedCountryData.name, \": +\").concat(this.selectedCountryData.dialCode);\n } else if (countryCode) {\n // For screen reader output, we don't want to include the dial code in the reader output twice\n // so just use the selected country name here:\n title = this.selectedCountryData.name;\n } else {\n title = \"Unknown\";\n }\n this.selectedFlag.setAttribute(\"title\", title);\n }\n }, {\n key: \"_getHiddenSelectedFlagWidth\",\n value: function _getHiddenSelectedFlagWidth() {\n // to get the right styling to apply, all we need is a shallow clone of the container,\n // and then to inject a deep clone of the selectedFlag element\n var containerClone = this.telInput.parentNode.cloneNode();\n containerClone.style.visibility = \"hidden\";\n document.body.appendChild(containerClone);\n var flagsContainerClone = this.flagsContainer.cloneNode();\n containerClone.appendChild(flagsContainerClone);\n var selectedFlagClone = this.selectedFlag.cloneNode(true);\n flagsContainerClone.appendChild(selectedFlagClone);\n var width = selectedFlagClone.offsetWidth;\n containerClone.parentNode.removeChild(containerClone);\n return width;\n }\n }, {\n key: \"_updatePlaceholder\",\n value: function _updatePlaceholder() {\n var shouldSetPlaceholder = this.options.autoPlaceholder === \"aggressive\" || !this.hadInitialPlaceholder && this.options.autoPlaceholder === \"polite\";\n if (window.intlTelInputUtils && shouldSetPlaceholder) {\n var numberType = intlTelInputUtils.numberType[this.options.placeholderNumberType];\n var placeholder = this.selectedCountryData.iso2 ? intlTelInputUtils.getExampleNumber(this.selectedCountryData.iso2, this.options.nationalMode, numberType) : \"\";\n placeholder = this._beforeSetNumber(placeholder);\n if (typeof this.options.customPlaceholder === \"function\") {\n placeholder = this.options.customPlaceholder(placeholder, this.selectedCountryData);\n }\n this.telInput.setAttribute(\"placeholder\", placeholder);\n }\n }\n }, {\n key: \"_selectListItem\",\n value: function _selectListItem(listItem) {\n // update selected flag and active list item\n var flagChanged = this._setFlag(listItem.getAttribute(\"data-country-code\"));\n this._closeDropdown();\n this._updateDialCode(listItem.getAttribute(\"data-dial-code\"));\n // focus the input\n this.telInput.focus();\n // put cursor at end - this fix is required for FF and IE11 (with auto inserting dial code),\n // who try to put the cursor at the beginning the first time\n var len = this.telInput.value.length;\n this.telInput.setSelectionRange(len, len);\n if (flagChanged) {\n this._triggerCountryChange();\n }\n }\n }, {\n key: \"_closeDropdown\",\n value: function _closeDropdown() {\n this.dropdownContent.classList.add(\"iti__hide\");\n this.selectedFlag.setAttribute(\"aria-expanded\", \"false\");\n this.selectedFlag.removeAttribute(\"aria-activedescendant\");\n // update the arrow\n this.dropdownArrow.classList.remove(\"iti__arrow--up\");\n // unbind key events\n document.removeEventListener(\"keydown\", this._handleKeydownOnDropdown);\n if (this.options.countrySearch) {\n this.searchInput.removeEventListener(\"input\", this._handleSearchChange);\n }\n document.documentElement.removeEventListener(\"click\", this._handleClickOffToClose);\n this.countryList.removeEventListener(\"mouseover\", this._handleMouseoverCountryList);\n this.countryList.removeEventListener(\"click\", this._handleClickCountryList);\n // remove menu from container\n if (this.options.dropdownContainer) {\n if (!this.options.useFullscreenPopup) {\n window.removeEventListener(\"scroll\", this._handleWindowScroll);\n }\n if (this.dropdown.parentNode) {\n this.dropdown.parentNode.removeChild(this.dropdown);\n }\n }\n this._trigger(\"close:countrydropdown\");\n }\n }, {\n key: \"_scrollTo\",\n value: function _scrollTo(element, middle) {\n var container = this.dropdownContent;\n // windowTop from https://stackoverflow.com/a/14384091/217866\n var windowTop = window.pageYOffset || document.documentElement.scrollTop;\n var containerHeight = container.offsetHeight;\n var containerTop = container.getBoundingClientRect().top + windowTop;\n var containerBottom = containerTop + containerHeight;\n var elementHeight = element.offsetHeight;\n var elementTop = element.getBoundingClientRect().top + windowTop;\n var elementBottom = elementTop + elementHeight;\n var newScrollTop = elementTop - containerTop + container.scrollTop;\n var middleOffset = containerHeight / 2 - elementHeight / 2;\n if (elementTop < containerTop) {\n // scroll up\n if (middle) {\n newScrollTop -= middleOffset;\n }\n container.scrollTop = newScrollTop;\n } else if (elementBottom > containerBottom) {\n // scroll down\n if (middle) {\n newScrollTop += middleOffset;\n }\n var heightDifference = containerHeight - elementHeight;\n container.scrollTop = newScrollTop - heightDifference;\n }\n }\n }, {\n key: \"_updateDialCode\",\n value: function _updateDialCode(newDialCodeBare) {\n var inputVal = this.telInput.value;\n // save having to pass this every time\n var newDialCode = \"+\".concat(newDialCodeBare);\n var newNumber;\n if (inputVal.charAt(0) === \"+\") {\n // there's a plus so we're dealing with a replacement\n var prevDialCode = this._getDialCode(inputVal);\n if (prevDialCode) {\n // current number contains a valid dial code, so replace it\n newNumber = inputVal.replace(prevDialCode, newDialCode);\n } else {\n // current number contains an invalid dial code, so ditch it\n // (no way to determine where the invalid dial code ends and the rest of the number begins)\n newNumber = newDialCode;\n }\n this.telInput.value = newNumber;\n } else if (this.options.autoInsertDialCode) {\n if (inputVal) {\n // there is an existing value with no dial code: prefix the new dial code\n newNumber = newDialCode + inputVal;\n } else {\n newNumber = newDialCode;\n }\n this.telInput.value = newNumber;\n }\n }\n }, {\n key: \"_getDialCode\",\n value: function _getDialCode(number, includeAreaCode) {\n var dialCode = \"\";\n // only interested in international numbers (starting with a plus)\n if (number.charAt(0) === \"+\") {\n var numericChars = \"\";\n // iterate over chars\n for (var i = 0; i < number.length; i++) {\n var c = number.charAt(i);\n // if char is number (https://stackoverflow.com/a/8935649/217866)\n if (!isNaN(parseInt(c, 10))) {\n numericChars += c;\n // if current numericChars make a valid dial code\n if (includeAreaCode) {\n if (this.countryCodes[numericChars]) {\n // store the actual raw string (useful for matching later)\n dialCode = number.substr(0, i + 1);\n }\n } else {\n if (this.dialCodes[numericChars]) {\n dialCode = number.substr(0, i + 1);\n // if we're just looking for a dial code, we can break as soon as we find one\n break;\n }\n }\n // stop searching as soon as we can - in this case when we hit max len\n if (numericChars.length === this.countryCodeMaxLen) {\n break;\n }\n }\n }\n }\n return dialCode;\n }\n }, {\n key: \"_getFullNumber\",\n value: function _getFullNumber() {\n var val = this.telInput.value.trim();\n var dialCode = this.selectedCountryData.dialCode;\n var prefix;\n var numericVal = this._getNumeric(val);\n if (this.options.separateDialCode && val.charAt(0) !== \"+\" && dialCode && numericVal) {\n // when using separateDialCode, it is visible so is effectively part of the typed number\n prefix = \"+\".concat(dialCode);\n } else {\n prefix = \"\";\n }\n return prefix + val;\n }\n }, {\n key: \"_beforeSetNumber\",\n value: function _beforeSetNumber(fullNumber) {\n var number = fullNumber;\n if (this.options.separateDialCode) {\n var dialCode = this._getDialCode(number);\n // if there is a valid dial code\n if (dialCode) {\n // in case _getDialCode returned an area code as well\n dialCode = \"+\".concat(this.selectedCountryData.dialCode);\n // a lot of numbers will have a space separating the dial code and the main number, and\n // some NANP numbers will have a hyphen e.g. +1 684-733-1234 - in both cases we want to get\n // rid of it\n // NOTE: don't just trim all non-numerics as may want to preserve an open parenthesis etc\n var start = number[dialCode.length] === \" \" || number[dialCode.length] === \"-\" ? dialCode.length + 1 : dialCode.length;\n number = number.substr(start);\n }\n }\n return this._cap(number);\n }\n }, {\n key: \"_triggerCountryChange\",\n value: function _triggerCountryChange() {\n this._trigger(\"countrychange\");\n }\n }, {\n key: \"handleAutoCountry\",\n value: function handleAutoCountry() {\n if (this.options.initialCountry === \"auto\") {\n // we must set this even if there is an initial val in the input: in case the initial val is\n // invalid and they delete it - they should see their auto country\n this.defaultCountry = window.intlTelInputGlobals.autoCountry;\n // if there's no initial value in the input, then update the flag\n if (!this.telInput.value) {\n this.setCountry(this.defaultCountry);\n }\n this.resolveAutoCountryPromise();\n }\n }\n }, {\n key: \"handleUtils\",\n value: function handleUtils() {\n // if the request was successful\n if (window.intlTelInputUtils) {\n // if there's an initial value in the input, then format it\n if (this.telInput.value) {\n this._updateValFromNumber(this.telInput.value);\n }\n this._updatePlaceholder();\n }\n this.resolveUtilsScriptPromise();\n }\n }, {\n key: \"destroy\",\n value: function destroy() {\n var form = this.telInput.form;\n if (this.options.allowDropdown) {\n // make sure the dropdown is closed (and unbind listeners)\n this._closeDropdown();\n this.selectedFlag.removeEventListener(\"click\", this._handleClickSelectedFlag);\n this.flagsContainer.removeEventListener(\"keydown\", this._handleFlagsContainerKeydown);\n // label click hack\n var label = this._getClosestLabel();\n if (label) {\n label.removeEventListener(\"click\", this._handleLabelClick);\n }\n }\n // unbind hiddenInput listeners\n if (this.hiddenInput && form) {\n form.removeEventListener(\"submit\", this._handleHiddenInputSubmit);\n }\n // unbind autoInsertDialCode listeners\n if (this.options.autoInsertDialCode) {\n if (form) {\n form.removeEventListener(\"submit\", this._handleSubmitOrBlurEvent);\n }\n this.telInput.removeEventListener(\"blur\", this._handleSubmitOrBlurEvent);\n }\n // unbind key events, and cut/paste events\n this.telInput.removeEventListener(\"keyup\", this._handleKeyupEvent);\n this.telInput.removeEventListener(\"cut\", this._handleClipboardEvent);\n this.telInput.removeEventListener(\"paste\", this._handleClipboardEvent);\n // remove attribute of id instance: data-intl-tel-input-id\n this.telInput.removeAttribute(\"data-intl-tel-input-id\");\n // remove markup (but leave the original input)\n var wrapper = this.telInput.parentNode;\n wrapper.parentNode.insertBefore(this.telInput, wrapper);\n wrapper.parentNode.removeChild(wrapper);\n delete window.intlTelInputGlobals.instances[this.id];\n }\n }, {\n key: \"getExtension\",\n value: function getExtension() {\n if (window.intlTelInputUtils) {\n return intlTelInputUtils.getExtension(this._getFullNumber(), this.selectedCountryData.iso2);\n }\n return \"\";\n }\n }, {\n key: \"getNumber\",\n value: function getNumber(format) {\n if (window.intlTelInputUtils) {\n var iso2 = this.selectedCountryData.iso2;\n return intlTelInputUtils.formatNumber(this._getFullNumber(), iso2, format);\n }\n return \"\";\n }\n }, {\n key: \"getNumberType\",\n value: function getNumberType() {\n if (window.intlTelInputUtils) {\n return intlTelInputUtils.getNumberType(this._getFullNumber(), this.selectedCountryData.iso2);\n }\n return -99;\n }\n }, {\n key: \"getSelectedCountryData\",\n value: function getSelectedCountryData() {\n return this.selectedCountryData;\n }\n }, {\n key: \"getValidationError\",\n value: function getValidationError() {\n if (window.intlTelInputUtils) {\n var iso2 = this.selectedCountryData.iso2;\n return intlTelInputUtils.getValidationError(this._getFullNumber(), iso2);\n }\n return -99;\n }\n }, {\n key: \"isValidNumber\",\n value: function isValidNumber() {\n var val = this._getFullNumber().trim();\n return window.intlTelInputUtils ? intlTelInputUtils.isValidNumber(val, this.selectedCountryData.iso2) : null;\n }\n }, {\n key: \"isPossibleNumber\",\n value: function isPossibleNumber() {\n var val = this._getFullNumber().trim();\n return window.intlTelInputUtils ? intlTelInputUtils.isPossibleNumber(val, this.selectedCountryData.iso2) : null;\n }\n }, {\n key: \"setCountry\",\n value: function setCountry(originalCountryCode) {\n var countryCode = originalCountryCode.toLowerCase();\n // check if already selected\n if (this.selectedCountryData.iso2 !== countryCode) {\n this._setFlag(countryCode);\n this._updateDialCode(this.selectedCountryData.dialCode);\n this._triggerCountryChange();\n }\n }\n }, {\n key: \"setNumber\",\n value: function setNumber(number) {\n // we must update the flag first, which updates this.selectedCountryData, which is used for\n // formatting the number before displaying it\n var flagChanged = this._updateFlagFromNumber(number);\n this._updateValFromNumber(number);\n if (flagChanged) {\n this._triggerCountryChange();\n }\n }\n }, {\n key: \"setPlaceholderNumberType\",\n value: function setPlaceholderNumberType(type) {\n this.options.placeholderNumberType = type;\n this._updatePlaceholder();\n }\n } ]);\n return Iti;\n }();\n /********************\n * STATIC METHODS\n ********************/\n // get the country data object\n intlTelInputGlobals.getCountryData = function() {\n return allCountries;\n };\n // inject a <script> element to load utils.js\n var injectScript = function injectScript(path, handleSuccess, handleFailure) {\n // inject a new script element into the page\n var script = document.createElement(\"script\");\n script.onload = function() {\n forEachInstance(\"handleUtils\");\n if (handleSuccess) {\n handleSuccess();\n }\n };\n script.onerror = function() {\n forEachInstance(\"rejectUtilsScriptPromise\");\n if (handleFailure) {\n handleFailure();\n }\n };\n script.className = \"iti-load-utils\";\n script.async = true;\n script.src = path;\n document.body.appendChild(script);\n };\n // load the utils script\n intlTelInputGlobals.loadUtils = function(path) {\n // 2 options:\n // 1) not already started loading (start)\n // 2) already started loading (do nothing - just wait for the onload callback to fire, which will\n // trigger handleUtils on all instances, invoking their resolveUtilsScriptPromise functions)\n if (!window.intlTelInputUtils && !window.intlTelInputGlobals.startedLoadingUtilsScript) {\n // only do this once\n window.intlTelInputGlobals.startedLoadingUtilsScript = true;\n // if we have promises, then return a promise\n if (typeof Promise !== \"undefined\") {\n return new Promise(function(resolve, reject) {\n return injectScript(path, resolve, reject);\n });\n }\n injectScript(path);\n }\n return null;\n };\n // default options\n intlTelInputGlobals.defaults = defaults;\n // version\n intlTelInputGlobals.version = \"18.5.3\";\n // convenience wrapper\n return function(input, options) {\n var iti = new Iti(input, options);\n iti._init();\n input.setAttribute(\"data-intl-tel-input-id\", iti.id);\n window.intlTelInputGlobals.instances[iti.id] = iti;\n return iti;\n };\n }();\n});","/**\n * Exposing intl-tel-input as a component\n */\nmodule.exports = require(\"./build/js/intlTelInput\");\n"],"names":["factory","module","undefined","allCountries","i","c","_objectSpread","target","source","ownKeys","sym","key","_defineProperty","obj","value","_toPropertyKey","_classCallCheck","instance","Constructor","_defineProperties","props","descriptor","_createClass","protoProps","staticProps","arg","_toPrimitive","input","hint","prim","res","intlTelInputGlobals","id","defaults","regionlessNanpNumbers","forEachProp","callback","keys","forEachInstance","method","Iti","options","_this","customOptions","_this2","forceShowFlags","autoCountryPromise","resolve","reject","utilsScriptPromise","iso2","countryCode","priority","index","lowerCaseOnlyCountries","country","lowerCaseExcludeCountries","iso","a","b","_i","_c","rootCountryCode","j","areaCode","k","partialDialCode","countryData","name","attrs","container","el","_this$options","allowDropdown","separateDialCode","showFlags","customContainer","hiddenInput","dropdownContainer","fixDropdownWidth","useFullscreenPopup","countrySearch","parentClass","wrapper","showFlagsContainer","extraClasses","dropdownClasses","hiddenInputName","countries","className","preferred","idSuffix","listItem","content","attributeValue","inputValue","useAttribute","val","dialCode","isRegionlessNanp","_this$options2","initialCountry","autoInsertDialCode","isValidInitialCountry","_this3","_this4","e","label","isDropdownHidden","_this5","_this6","number","max","_this7","numeric","s","shouldHaveClass","_this8","pos","windowTop","inputTop","dropdownHeight","dropdownFitsBelow","dropdownFitsAbove","positionDropdownAboveInput","extraTop","_this9","isOpening","query","queryTimer","doFilter","inputQuery","keyupTimer","isReset","isFirst","nameLower","fullDialCode","next","doFocus","fullNumber","useNational","_intlTelInputUtils$nu","NATIONAL","INTERNATIONAL","format","plusIndex","selectedDialCode","isNanp","countryCodes","alreadySelected","isRegionlessNanpNumber","shouldFocus","prevItem","ignoreOnlyCountriesOption","allowFail","countryList","_this$options3","prevCountry","selectedFlagWidth","nextItem","title","containerClone","flagsContainerClone","selectedFlagClone","width","shouldSetPlaceholder","numberType","placeholder","flagChanged","len","element","middle","containerHeight","containerTop","containerBottom","elementHeight","elementTop","elementBottom","newScrollTop","middleOffset","heightDifference","newDialCodeBare","inputVal","newDialCode","newNumber","prevDialCode","includeAreaCode","numericChars","prefix","numericVal","start","form","originalCountryCode","type","injectScript","path","handleSuccess","handleFailure","script","iti","intlTelInput","require$$0"],"mappings":"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","x_google_ignoreList":[0,1]}