{"version":3,"sources":["../source/parse.js"],"names":["parse","text","caret_position","parse_character","value","focused_input_character_index","index","length","character","undefined","result","caret"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,SAASA,KAAT,CAAeC,IAAf,EAAqBC,cAArB,EAAqCC,eAArC,EACf;AACC,MAAIC,KAAK,GAAG,EAAZ;AAEA,MAAIC,6BAA6B,GAAG,CAApC;AAEA,MAAIC,KAAK,GAAG,CAAZ;;AACA,SAAOA,KAAK,GAAGL,IAAI,CAACM,MAApB,EACA;AACC,QAAMC,SAAS,GAAGL,eAAe,CAACF,IAAI,CAACK,KAAD,CAAL,EAAcF,KAAd,CAAjC;;AAEA,QAAII,SAAS,KAAKC,SAAlB,EACA;AACCL,MAAAA,KAAK,IAAII,SAAT;;AAEA,UAAIN,cAAc,KAAKO,SAAvB,EACA;AACC,YAAIP,cAAc,KAAKI,KAAvB,EACA;AACCD,UAAAA,6BAA6B,GAAGD,KAAK,CAACG,MAAN,GAAe,CAA/C;AACA,SAHD,MAIK,IAAIL,cAAc,GAAGI,KAArB,EACL;AACCD,UAAAA,6BAA6B,GAAGD,KAAK,CAACG,MAAtC;AACA;AACA;AACF;;AAEDD,IAAAA,KAAK;AACL,GA5BF,CA8BC;;;AACA,MAAIJ,cAAc,KAAKO,SAAvB,EACA;AACC;AACAJ,IAAAA,6BAA6B,GAAGD,KAAK,CAACG,MAAtC;AACA;;AAED,MAAMG,MAAM,GACZ;AACCN,IAAAA,KAAK,EAALA,KADD;AAECO,IAAAA,KAAK,EAAGN;AAFT,GADA;AAMA,SAAOK,MAAP;AACA","sourcesContent":["// Parses the `text`.\r\n//\r\n// Returns `{ value, caret }` where `caret` is\r\n// the caret position inside `value`\r\n// corresponding to the `caret_position` inside `text`.\r\n//\r\n// The `text` is parsed by feeding each character sequentially to\r\n// `parse_character(character, value)` function\r\n// and appending the result (if it's not `undefined`) to `value`.\r\n//\r\n// Example:\r\n//\r\n// `text` is `8 (800) 555-35-35`,\r\n// `caret_position` is `4` (before the first `0`).\r\n// `parse_character` is `(character, value) =>\r\n// if (character >= '0' && character <= '9') { return character }`.\r\n//\r\n// then `parse()` outputs `{ value: '88005553535', caret: 2 }`.\r\n//\r\nexport default function parse(text, caret_position, parse_character)\r\n{\r\n\tlet value = ''\r\n\r\n\tlet focused_input_character_index = 0\r\n\r\n\tlet index = 0\r\n\twhile (index < text.length)\r\n\t{\r\n\t\tconst character = parse_character(text[index], value)\r\n\r\n\t\tif (character !== undefined)\r\n\t\t{\r\n\t\t\tvalue += character\r\n\r\n\t\t\tif (caret_position !== undefined)\r\n\t\t\t{\r\n\t\t\t\tif (caret_position === index)\r\n\t\t\t\t{\r\n\t\t\t\t\tfocused_input_character_index = value.length - 1;\r\n\t\t\t\t}\r\n\t\t\t\telse if (caret_position > index)\r\n\t\t\t\t{\r\n\t\t\t\t\tfocused_input_character_index = value.length\r\n\t\t\t\t}\r\n\t\t\t }\r\n\t\t}\r\n\r\n\t\tindex++\r\n\t}\r\n\r\n\t// If caret position wasn't specified\r\n\tif (caret_position === undefined)\r\n\t{\r\n\t\t// Then set caret position to \"after the last input character\"\r\n\t\tfocused_input_character_index = value.length\r\n\t}\r\n\r\n\tconst result =\r\n\t{\r\n\t\tvalue,\r\n\t\tcaret : focused_input_character_index\r\n\t}\r\n\r\n\treturn result\r\n}"],"file":"parse.js"}