{"version":3,"sources":["../source/PhoneInput.js"],"names":["React","useState","useCallback","useEffect","PropTypes","AsYouType","getCountryCallingCode","parseDigits","InputSmart","InputBasic","createInput","defaultMetadata","PhoneInput","ref","country","defaultCountry","useNationalFormatForDefaultCountryValue","value","onChange","metadata","smartCaret","international","rest","getInitialParsedInput","getParsedInputForValue","prevCountry","setPrevCountry","prevDefaultCountry","setPrevDefaultCountry","parsedInput","setParsedInput","valueForParsedInput","setValueForParsedInput","onParsedInputChange","slice","asYouType","input","phoneNumber","getNumber","number","InputComponent","forwardRef","propTypes","type","string","autoComplete","func","isRequired","bool","inputComponent","elementType","object","defaultProps","undefined","console","error","nationalNumber","formatNational"],"mappings":";;;;;;;;;;;;;;AAAA,OAAOA,KAAP,IAAgBC,QAAhB,EAA0BC,WAA1B,EAAuCC,SAAvC,QAAwD,OAAxD;AACA,OAAOC,SAAP,MAAsB,YAAtB;AACA,SAASC,SAAT,EAAoBC,qBAApB,EAA2CC,WAA3C,QAA8D,wBAA9D;AAEA,OAAOC,UAAP,MAAuB,cAAvB;AACA,OAAOC,UAAP,MAAuB,cAAvB;AAEA,OAAO,SAASC,WAAT,CAAqBC,eAArB,EAAsC;AAC5C,WAASC,UAAT,OAUGC,GAVH,EAUQ;AAAA,QATPC,OASO,QATPA,OASO;AAAA,QARPC,cAQO,QARPA,cAQO;AAAA,QAPPC,uCAOO,QAPPA,uCAOO;AAAA,QANPC,KAMO,QANPA,KAMO;AAAA,QALPC,QAKO,QALPA,QAKO;AAAA,QAJPC,QAIO,QAJPA,QAIO;AAAA,QAHPC,UAGO,QAHPA,UAGO;AAAA,QAFPC,aAEO,QAFPA,aAEO;AAAA,QADJC,IACI;;AACP,QAAMC,qBAAqB,GAAG,SAAxBA,qBAAwB;AAAA,aAAMC,sBAAsB,CACzDP,KADyD,EAEzDH,OAFyD,EAGzDO,aAHyD,EAIzDN,cAJyD,EAKzDC,uCALyD,EAMzDG,QANyD,CAA5B;AAAA,KAA9B,CADO,CASP;;;AATO,oBAU+BlB,QAAQ,CAACa,OAAD,CAVvC;AAAA;AAAA,QAUAW,WAVA;AAAA,QAUaC,cAVb,kBAWP;;;AAXO,qBAY6CzB,QAAQ,CAACc,cAAD,CAZrD;AAAA;AAAA,QAYAY,kBAZA;AAAA,QAYoBC,qBAZpB,kBAaP;;;AAbO,qBAc+B3B,QAAQ,CAACsB,qBAAqB,EAAtB,CAdvC;AAAA;AAAA,QAcAM,WAdA;AAAA,QAcaC,cAdb,kBAeP;;;AAfO,qBAgB+C7B,QAAQ,CAACgB,KAAD,CAhBvD;AAAA;AAAA,QAgBAc,mBAhBA;AAAA,QAgBqBC,sBAhBrB,kBAiBP;AACA;;;AACA7B,IAAAA,SAAS,CAAC,YAAM;AACf,UAAIc,KAAK,KAAKc,mBAAd,EAAmC;AAClCC,QAAAA,sBAAsB,CAACf,KAAD,CAAtB;AACAa,QAAAA,cAAc,CAACP,qBAAqB,EAAtB,CAAd;AACA;AACD,KALQ,EAKN,CAACN,KAAD,CALM,CAAT,CAnBO,CAyBP;;AACAd,IAAAA,SAAS,CAAC,YAAM;AACf,UAAIW,OAAO,KAAKW,WAAhB,EAA6B;AAC5BC,QAAAA,cAAc,CAACZ,OAAD,CAAd;AACAgB,QAAAA,cAAc,CAACP,qBAAqB,EAAtB,CAAd;AACA;AACD,KALQ,EAKN,CAACT,OAAD,CALM,CAAT,CA1BO,CAgCP;;AACAX,IAAAA,SAAS,CAAC,YAAM;AACf,UAAIY,cAAc,KAAKY,kBAAvB,EAA2C;AAC1CC,QAAAA,qBAAqB,CAACb,cAAD,CAArB;AACAe,QAAAA,cAAc,CAACP,qBAAqB,EAAtB,CAAd;AACA;AACD,KALQ,EAKN,CAACR,cAAD,CALM,CAAT,CAjCO,CAuCP;;AACAZ,IAAAA,SAAS,CAAC,YAAM;AACf,UAAI4B,mBAAmB,KAAKd,KAA5B,EAAmC;AAClCC,QAAAA,QAAQ,CAACa,mBAAD,CAAR;AACA;AACD,KAJQ,EAIN,CAACA,mBAAD,CAJM,CAAT;AAKA,QAAME,mBAAmB,GAAG/B,WAAW,CAAC,UAAC2B,WAAD,EAAiB;AACxD,UAAIZ,KAAJ;;AACA,UAAIH,OAAJ,EAAa;AACZ;AACA;AACA,YAAIe,WAAW,IAAIA,WAAW,CAAC,CAAD,CAAX,KAAmB,GAAtC,EAA2C;AAC1CA,UAAAA,WAAW,GAAGA,WAAW,CAACK,KAAZ,CAAkB,CAAlB,CAAd;AACA;AACD,OAND,MAMO,IAAI,CAACnB,cAAL,EAAqB;AAC3B;AACA;AACA,YAAIc,WAAW,IAAIA,WAAW,CAAC,CAAD,CAAX,KAAmB,GAAtC,EAA2C;AAC1CA,UAAAA,WAAW,GAAG,MAAMA,WAApB;AACA;AACD,OAduD,CAexD;;;AACA,UAAIA,WAAJ,EAAiB;AAChB,YAAMM,SAAS,GAAG,IAAI9B,SAAJ,CAAcS,OAAO,IAAIC,cAAzB,EAAyCI,QAAzC,CAAlB;AACAgB,QAAAA,SAAS,CAACC,KAAV,CACCtB,OAAO,IAAIO,aAAX,cACIf,qBAAqB,CAACQ,OAAD,EAAUK,QAAV,CADzB,SAC+CU,WAD/C,IAEAA,WAHD;AAKA,YAAMQ,WAAW,GAAGF,SAAS,CAACG,SAAV,EAApB,CAPgB,CAQhB;;AACA,YAAID,WAAJ,EAAiB;AAChBpB,UAAAA,KAAK,GAAGoB,WAAW,CAACE,MAApB;AACA;AACD;;AACDT,MAAAA,cAAc,CAACD,WAAD,CAAd;AACAG,MAAAA,sBAAsB,CAACf,KAAD,CAAtB;AACA,KA/BsC,EA+BpC,CACFH,OADE,EAEFO,aAFE,EAGFN,cAHE,EAIFI,QAJE,EAKFW,cALE,EAMFE,sBANE,CA/BoC,CAAvC;AAuCA,QAAMQ,cAAc,GAAGpB,UAAU,GAAGZ,UAAH,GAAgBC,UAAjD;AACA,WACC,oBAAC,cAAD,eACKa,IADL;AAEC,MAAA,GAAG,EAAET,GAFN;AAGC,MAAA,QAAQ,EAAEM,QAHX;AAIC,MAAA,aAAa,EAAEE,aAJhB;AAKC,MAAA,OAAO,EAAEP,OAAO,IAAIC,cALrB;AAMC,MAAA,KAAK,EAAEc,WANR;AAOC,MAAA,QAAQ,EAAEI;AAPX,OADD;AAUA;;AAEDrB,EAAAA,UAAU,GAAGZ,KAAK,CAACyC,UAAN,CAAiB7B,UAAjB,CAAb;AAEAA,EAAAA,UAAU,CAAC8B,SAAX,GAAuB;AACtB;;;AAGAC,IAAAA,IAAI,EAAEvC,SAAS,CAACwC,MAJM;;AAMtB;;;AAGAC,IAAAA,YAAY,EAAEzC,SAAS,CAACwC,MATF;;AAWtB;;;;AAIA3B,IAAAA,KAAK,EAAEb,SAAS,CAACwC,MAfK;;AAiBtB;;;AAGA1B,IAAAA,QAAQ,EAAEd,SAAS,CAAC0C,IAAV,CAAeC,UApBH;;AAsBtB;;;;;;;;;;AAUAjC,IAAAA,OAAO,EAAEV,SAAS,CAACwC,MAhCG;;AAkCtB;;;;;;;AAOA7B,IAAAA,cAAc,EAAEX,SAAS,CAACwC,MAzCJ;;AA2CtB;;;;;;;;;;AAUAvB,IAAAA,aAAa,EAAEjB,SAAS,CAAC4C,IArDH;;AAuDtB;;;AAGAC,IAAAA,cAAc,EAAE7C,SAAS,CAAC8C,WA1DJ;;AA4DtB;;;;;;;AAOA;AACA9B,IAAAA,UAAU,EAAEhB,SAAS,CAAC4C,IAAV,CAAeD,UApEL;;AAsEtB;;;;;;AAMA/B,IAAAA,uCAAuC,EAAEZ,SAAS,CAAC4C,IAAV,CAAeD,UA5ElC;;AA8EtB;;;AAGA5B,IAAAA,QAAQ,EAAEf,SAAS,CAAC+C,MAAV,CAAiBJ;AAjFL,GAAvB;AAoFAnC,EAAAA,UAAU,CAACwC,YAAX,GAA0B;AACzB;;;AAGAT,IAAAA,IAAI,EAAE,KAJmB;;AAMzB;;;AAGAE,IAAAA,YAAY,EAAE,KATW;;AAWzB;;;AAGAzB,IAAAA,UAAU,EAAE,IAda;;AAgBzB;;;;AAIA;;AAEA;;;;AAIAJ,IAAAA,uCAAuC,EAAE,IA1BhB;;AA4BzB;;;AAGAG,IAAAA,QAAQ,EAAER;AA/Be,GAA1B;AAkCA,SAAOC,UAAP;AACA;AAED,eAAeF,WAAW,EAA1B;AAEA;;;;;;;;;;;AAUA,SAASc,sBAAT,CACCP,KADD,EAECH,OAFD,EAGCO,aAHD,EAICN,cAJD,EAKCC,uCALD,EAMCG,QAND,EAOE;AACD,MAAI,CAACF,KAAL,EAAY;AACX,WAAO,EAAP;AACA;;AACD,MAAI,CAACH,OAAD,IAAY,CAACC,cAAjB,EAAiC;AAChC,WAAOE,KAAP;AACA;;AACD,MAAMkB,SAAS,GAAG,IAAI9B,SAAJ,CAAcgD,SAAd,EAAyBlC,QAAzB,CAAlB;AACAgB,EAAAA,SAAS,CAACC,KAAV,CAAgBnB,KAAhB;AACA,MAAMoB,WAAW,GAAGF,SAAS,CAACG,SAAV,EAApB;;AACA,MAAID,WAAJ,EAAiB;AAChB,QAAIvB,OAAJ,EAAa;AACZ,UAAIuB,WAAW,CAACvB,OAAZ,IAAuBuB,WAAW,CAACvB,OAAZ,KAAwBA,OAAnD,EAA4D;AAC3DwC,QAAAA,OAAO,CAACC,KAAR,mDAAyDtC,KAAzD,qCAAyFoB,WAAW,CAACvB,OAArG,kBAAoHA,OAApH;AACA;;AACD,UAAIO,aAAJ,EAAmB;AAClB,eAAOgB,WAAW,CAACmB,cAAnB;AACA;;AACD,aAAOjD,WAAW,CAAC8B,WAAW,CAACoB,cAAZ,EAAD,CAAlB;AACA,KARD,MAQO;AACN,UAAIpB,WAAW,CAACvB,OAAZ,IAAuBuB,WAAW,CAACvB,OAAZ,KAAwBC,cAA/C,IAAiEC,uCAArE,EAA8G;AAC7G,eAAOT,WAAW,CAAC8B,WAAW,CAACoB,cAAZ,EAAD,CAAlB;AACA;;AACD,aAAOxC,KAAP;AACA;AACD,GAfD,MAeO;AACN,WAAO,EAAP;AACA;AACD","sourcesContent":["import React, { useState, useCallback, useEffect } from 'react'\r\nimport PropTypes from 'prop-types'\r\nimport { AsYouType, getCountryCallingCode, parseDigits } from 'libphonenumber-js/core'\r\n\r\nimport InputSmart from './InputSmart'\r\nimport InputBasic from './InputBasic'\r\n\r\nexport function createInput(defaultMetadata) {\r\n\tfunction PhoneInput({\r\n\t\tcountry,\r\n\t\tdefaultCountry,\r\n\t\tuseNationalFormatForDefaultCountryValue,\r\n\t\tvalue,\r\n\t\tonChange,\r\n\t\tmetadata,\r\n\t\tsmartCaret,\r\n\t\tinternational,\r\n\t\t...rest\r\n\t}, ref) {\r\n\t\tconst getInitialParsedInput = () => getParsedInputForValue(\r\n\t\t\tvalue,\r\n\t\t\tcountry,\r\n\t\t\tinternational,\r\n\t\t\tdefaultCountry,\r\n\t\t\tuseNationalFormatForDefaultCountryValue,\r\n\t\t\tmetadata\r\n\t\t)\r\n\t\t// This is only used to detect `country` property change.\r\n\t\tconst [prevCountry, setPrevCountry] = useState(country)\r\n\t\t// This is only used to detect `defaultCountry` property change.\r\n\t\tconst [prevDefaultCountry, setPrevDefaultCountry] = useState(defaultCountry)\r\n\t\t// `parsedInput` is the `value` passed to the ``.\r\n\t\tconst [parsedInput, setParsedInput] = useState(getInitialParsedInput())\r\n\t\t// This is only used to detect `value` property changes.\r\n\t\tconst [valueForParsedInput, setValueForParsedInput] = useState(value)\r\n\t\t// If `value` property has been changed externally\r\n\t\t// then re-initialize the component.\r\n\t\tuseEffect(() => {\r\n\t\t\tif (value !== valueForParsedInput) {\r\n\t\t\t\tsetValueForParsedInput(value)\r\n\t\t\t\tsetParsedInput(getInitialParsedInput())\r\n\t\t\t}\r\n\t\t}, [value])\r\n\t\t// If the `country` has been changed then re-initialize the component.\r\n\t\tuseEffect(() => {\r\n\t\t\tif (country !== prevCountry) {\r\n\t\t\t\tsetPrevCountry(country)\r\n\t\t\t\tsetParsedInput(getInitialParsedInput())\r\n\t\t\t}\r\n\t\t}, [country])\r\n\t\t// If the `defaultCountry` has been changed then re-initialize the component.\r\n\t\tuseEffect(() => {\r\n\t\t\tif (defaultCountry !== prevDefaultCountry) {\r\n\t\t\t\tsetPrevDefaultCountry(defaultCountry)\r\n\t\t\t\tsetParsedInput(getInitialParsedInput())\r\n\t\t\t}\r\n\t\t}, [defaultCountry])\r\n\t\t// Update the `value` after `valueForParsedInput` has been updated.\r\n\t\tuseEffect(() => {\r\n\t\t\tif (valueForParsedInput !== value) {\r\n\t\t\t\tonChange(valueForParsedInput)\r\n\t\t\t}\r\n\t\t}, [valueForParsedInput])\r\n\t\tconst onParsedInputChange = useCallback((parsedInput) => {\r\n\t\t\tlet value\r\n\t\t\tif (country) {\r\n\t\t\t\t// Won't allow `+` in the beginning\r\n\t\t\t\t// when a `country` has been specified.\r\n\t\t\t\tif (parsedInput && parsedInput[0] === '+') {\r\n\t\t\t\t\tparsedInput = parsedInput.slice(1)\r\n\t\t\t\t}\r\n\t\t\t} else if (!defaultCountry) {\r\n\t\t\t\t// Force a `+` in the beginning of a `value`\r\n\t\t\t\t// when no `country` and `defaultCountry` have been specified.\r\n\t\t\t\tif (parsedInput && parsedInput[0] !== '+') {\r\n\t\t\t\t\tparsedInput = '+' + parsedInput\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\t// Convert `parsedInput` to `value`.\r\n\t\t\tif (parsedInput) {\r\n\t\t\t\tconst asYouType = new AsYouType(country || defaultCountry, metadata)\r\n\t\t\t\tasYouType.input(\r\n\t\t\t\t\tcountry && international ?\r\n\t\t\t\t\t`+${getCountryCallingCode(country, metadata)}${parsedInput}` :\r\n\t\t\t\t\tparsedInput\r\n\t\t\t\t)\r\n\t\t\t\tconst phoneNumber = asYouType.getNumber()\r\n\t\t\t\t// If it's a \"possible\" incomplete phone number.\r\n\t\t\t\tif (phoneNumber) {\r\n\t\t\t\t\tvalue = phoneNumber.number\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tsetParsedInput(parsedInput)\r\n\t\t\tsetValueForParsedInput(value)\r\n\t\t}, [\r\n\t\t\tcountry,\r\n\t\t\tinternational,\r\n\t\t\tdefaultCountry,\r\n\t\t\tmetadata,\r\n\t\t\tsetParsedInput,\r\n\t\t\tsetValueForParsedInput\r\n\t\t])\r\n\t\tconst InputComponent = smartCaret ? InputSmart : InputBasic\r\n\t\treturn (\r\n\t\t\t\r\n\t\t)\r\n\t}\r\n\r\n\tPhoneInput = React.forwardRef(PhoneInput)\r\n\r\n\tPhoneInput.propTypes = {\r\n\t\t/**\r\n\t\t * HTML `` `type` attribute.\r\n\t\t */\r\n\t\ttype: PropTypes.string,\r\n\r\n\t\t/**\r\n\t\t * HTML `` `autocomplete` attribute.\r\n\t\t */\r\n\t\tautoComplete: PropTypes.string,\r\n\r\n\t\t/**\r\n\t\t * The phone number (in E.164 format).\r\n\t\t * Examples: `undefined`, `\"+12\"`, `\"+12133734253\"`.\r\n\t\t */\r\n\t\tvalue: PropTypes.string,\r\n\r\n\t\t/**\r\n\t\t * Updates the `value`.\r\n\t\t */\r\n\t\tonChange: PropTypes.func.isRequired,\r\n\r\n\t\t/**\r\n\t\t * A two-letter country code for formatting `value`\r\n\t\t * as a national phone number (example: `(213) 373-4253`),\r\n\t\t * or as an international phone number without \"country calling code\"\r\n\t\t * if `international` property is passed (example: `213 373 4253`).\r\n\t\t * Example: \"US\".\r\n\t\t * If no `country` is passed then `value`\r\n\t\t * is formatted as an international phone number.\r\n\t\t * (example: `+1 213 373 4253`)\r\n\t\t */\r\n\t\tcountry: PropTypes.string,\r\n\r\n\t\t/**\r\n\t\t * A two-letter country code for formatting `value`\r\n\t\t * when a user inputs a national phone number (example: `(213) 373-4253`).\r\n\t\t * The user can still input a phone number in international format.\r\n\t\t * Example: \"US\".\r\n\t\t * `country` and `defaultCountry` properties are mutually exclusive.\r\n\t\t */\r\n\t\tdefaultCountry: PropTypes.string,\r\n\r\n\t\t/**\r\n\t\t * If `country` property is passed along with `international={true}` property\r\n\t\t * then the phone number will be input in \"international\" format for that `country`\r\n\t\t * (without \"country calling code\").\r\n\t\t * For example, if `country=\"US\"` property is passed to \"without country select\" input\r\n\t\t * then the phone number will be input in the \"national\" format for `US` (`(213) 373-4253`).\r\n\t\t * But if both `country=\"US\"` and `international={true}` properties are passed then\r\n\t\t * the phone number will be input in the \"international\" format for `US` (`213 373 4253`)\r\n\t\t * (without \"country calling code\" `+1`).\r\n\t\t */\r\n\t\tinternational: PropTypes.bool,\r\n\r\n\t\t/**\r\n\t\t * The `` component.\r\n\t\t */\r\n\t\tinputComponent: PropTypes.elementType,\r\n\r\n\t\t/**\r\n\t\t * By default, the caret position is being \"intelligently\" managed\r\n\t\t * while a user inputs a phone number.\r\n\t\t * This \"smart\" caret behavior can be turned off\r\n\t\t * by passing `smartCaret={false}` property.\r\n\t\t * This is just an \"escape hatch\" for any possible caret position issues.\r\n\t\t */\r\n\t\t// Is `true` by default.\r\n\t\tsmartCaret: PropTypes.bool.isRequired,\r\n\r\n\t\t/**\r\n\t\t * When `defaultCountry` is defined and the initial `value` corresponds to `defaultCountry`,\r\n\t\t * then the `value` will be formatted as a national phone number by default.\r\n\t\t * To format the initial `value` of `defaultCountry` as an international number instead\r\n\t\t * set `useNationalFormatForDefaultCountryValue` property to `true`.\r\n\t\t */\r\n\t\tuseNationalFormatForDefaultCountryValue: PropTypes.bool.isRequired,\r\n\r\n\t\t/**\r\n\t\t * `libphonenumber-js` metadata.\r\n\t\t */\r\n\t\tmetadata: PropTypes.object.isRequired\r\n\t}\r\n\r\n\tPhoneInput.defaultProps = {\r\n\t\t/**\r\n\t\t * HTML `` `type=\"tel\"`.\r\n\t\t */\r\n\t\ttype: 'tel',\r\n\r\n\t\t/**\r\n\t\t * Remember (and autofill) the value as a phone number.\r\n\t\t */\r\n\t\tautoComplete: 'tel',\r\n\r\n\t\t/**\r\n\t\t * Set to `false` to use \"basic\" caret instead of the \"smart\" one.\r\n\t\t */\r\n\t\tsmartCaret: true,\r\n\r\n\t\t/**\r\n\t\t * Set to `true` to force international phone number format\r\n\t\t * (without \"country calling code\") when `country` is specified.\r\n\t\t */\r\n\t\t// international: false,\r\n\r\n\t\t/**\r\n\t\t * Prefer national format when formatting E.164 phone number `value`\r\n\t\t * corresponding to `defaultCountry`.\r\n\t\t */\r\n\t\tuseNationalFormatForDefaultCountryValue: true,\r\n\r\n\t\t/**\r\n\t\t * `libphonenumber-js` metadata.\r\n\t\t */\r\n\t\tmetadata: defaultMetadata\r\n\t}\r\n\r\n\treturn PhoneInput\r\n}\r\n\r\nexport default createInput()\r\n\r\n/**\r\n * Returns phone number input field value for a E.164 phone number `value`.\r\n * @param {string} [value]\r\n * @param {string} [country]\r\n * @param {boolean} [international]\r\n * @param {string} [defaultCountry]\r\n * @param {boolean} [useNationalFormatForDefaultCountryValue]\r\n * @param {object} metadata\r\n * @return {string}\r\n */\r\nfunction getParsedInputForValue(\r\n\tvalue,\r\n\tcountry,\r\n\tinternational,\r\n\tdefaultCountry,\r\n\tuseNationalFormatForDefaultCountryValue,\r\n\tmetadata\r\n) {\r\n\tif (!value) {\r\n\t\treturn ''\r\n\t}\r\n\tif (!country && !defaultCountry) {\r\n\t\treturn value\r\n\t}\r\n\tconst asYouType = new AsYouType(undefined, metadata)\r\n\tasYouType.input(value)\r\n\tconst phoneNumber = asYouType.getNumber()\r\n\tif (phoneNumber) {\r\n\t\tif (country) {\r\n\t\t\tif (phoneNumber.country && phoneNumber.country !== country) {\r\n\t\t\t\tconsole.error(`[react-phone-number-input] Phone number ${value} corresponds to country ${phoneNumber.country} but ${country} was specified instead.`)\r\n\t\t\t}\r\n\t\t\tif (international) {\r\n\t\t\t\treturn phoneNumber.nationalNumber\r\n\t\t\t}\r\n\t\t\treturn parseDigits(phoneNumber.formatNational())\r\n\t\t} else {\r\n\t\t\tif (phoneNumber.country && phoneNumber.country === defaultCountry && useNationalFormatForDefaultCountryValue) {\r\n\t\t\t\treturn parseDigits(phoneNumber.formatNational())\r\n\t\t\t}\r\n\t\t\treturn value\r\n\t\t}\r\n\t} else {\r\n\t\treturn ''\r\n\t}\r\n}"],"file":"PhoneInput.js"}