Your IP : 172.69.7.234


Current Path : /var/www/element/data/www/revenuestory.ru/bitrix/js/location/core/dist/
Upload File :
Current File : /var/www/element/data/www/revenuestory.ru/bitrix/js/location/core/dist/core.bundle.js.map

{"version":3,"file":"core.bundle.js","sources":["../src/entity/generic/field.js","../src/entity/generic/fieldcollection.js","../src/entity/address/addressfield.js","../src/entity/address/addressfieldcollection.js","../src/entity/address/addresslink.js","../src/entity/address/addresslinkcollection.js","../src/entity/format/formatfield.js","../src/entity/format/formatfieldcollection.js","../src/entity/location/locationtype.js","../src/entity/address/addresstype.js","../src/entity/format/formattemplate.js","../src/entity/format/formattemplatecollection.js","../src/entity/format/formattemplatetype.js","../src/entity/format.js","../src/entity/address/converter/stringtemplateconverter.js","../src/entity/address/converter/stringconverter.js","../src/entity/address/converter/jsonconverter.js","../src/entity/address.js","../src/entity/location/locationfield.js","../src/entity/location/locationfieldcollection.js","../src/entity/location/locationobjectconverter.js","../src/entity/location/locationjsonconverter.js","../src/entity/location.js","../src/repository/actionrunner.js","../src/repository/baserepository.js","../src/repository/locationrepository.js","../src/repository/addressrepository.js","../src/repository/formatrepository.js","../src/repository/sourcerepository.js","../src/base/autocompleteservicebase.js","../src/base/photoservicebase.js","../src/base/mapbase.js","../src/base/sourcebase.js","../src/base/geocodingservicebase.js","../src/common/controlmode.js","../src/entity/location/locationfieldtype.js","../src/common/error.js","../src/common/errorpublisher.js","../src/common/storage.js","../src/common/point.js","../src/common/distancecalculator.js"],"sourcesContent":["export default class Field\n{\n\t#type;\n\n\tconstructor(props)\n\t{\n\t\tif(typeof props.type === 'undefined')\n\t\t{\n\t\t\tthrow new Error('Field type must be defined');\n\t\t}\n\n\t\tthis.#type = parseInt(props.type);\n\t}\n\n\tget type()\n\t{\n\t\treturn this.#type;\n\t}\n}","import Field from './field';\n\nexport default class FieldCollection\n{\n\t#fields = {};\n\n\tconstructor(props = {})\n\t{\n\t\tthis.fields = props.fields ? props.fields : [];\n\t}\n\n\tset fields(fields)\n\t{\n\t\tif(!Array.isArray(fields))\n\t\t{\n\t\t\tthrow new Error('Items must be array!');\n\t\t}\n\n\t\tfor(const field of fields)\n\t\t{\n\t\t\tthis.setField(field);\n\t\t}\n\n\t\treturn this;\n\t}\n\n\tget fields()\n\t{\n\t\treturn this.#fields;\n\t}\n\n\t/**\n\t * Checks if field already exist in collection\n\t * @param {int} type\n\t * @returns {boolean}\n\t */\n\tisFieldExists(type)\n\t{\n\t\treturn typeof this.#fields[type] !== 'undefined';\n\t}\n\n\tgetField(type)\n\t{\n\t\treturn this.isFieldExists(type) ? this.#fields[type] : null;\n\t}\n\n\tsetField(field)\n\t{\n\t\tif(!(field instanceof Field))\n\t\t{\n\t\t\tthrow new Error('Argument field must be instance of Field!');\n\t\t}\n\n\t\tthis.#fields[field.type] = field;\n\t\treturn this;\n\t}\n\n\tdeleteField(type)\n\t{\n\t\tif(this.isFieldExists(type))\n\t\t{\n\t\t\tdelete this.#fields[type];\n\t\t}\n\t}\n\n\tgetMaxFieldType()\n\t{\n\t\tconst types = Object.keys(this.#fields).sort((a, b) => {\n\t\t\treturn parseInt(a) - parseInt(b);\n\t\t});\n\n\t\tlet result = 0;\n\n\t\tif(types.length > 0)\n\t\t{\n\t\t\tresult = types[types.length - 1];\n\t\t}\n\n\t\treturn result;\n\t}\n\n\tisEqual(addressFieldCollection: FieldCollection, upTo: Number)\n\t{\n\t\treturn (\n\t\t\tFieldCollection.areEqual(this, addressFieldCollection, upTo)\n\t\t\t&& FieldCollection.areEqual(addressFieldCollection, this, upTo)\n\t\t);\n\t}\n\n\tstatic areEqual(addressFieldCollection1: FieldCollection, addressFieldCollection2: FieldCollection, upTo: Number)\n\t{\n\t\tfor (let type in addressFieldCollection1.fields)\n\t\t{\n\t\t\tif (type > upTo)\n\t\t\t{\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tlet field = addressFieldCollection2.getField(type);\n\t\t\tif (!field)\n\t\t\t{\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tif (addressFieldCollection1.fields[type].value !== field.value)\n\t\t\t{\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\t\treturn true;\n\t}\n}\n","import Field from \"../generic/field\";\n\nexport default class AddressField extends Field\n{\n\t#value;\n\n\t//todo: Fields validation\n\tconstructor(props)\n\t{\n\t\tsuper(props);\n\t\tthis.#value = props.value || '';\n\t}\n\n\tget value()\n\t{\n\t\treturn this.#value;\n\t}\n\n\tset value(value)\n\t{\n\t\tthis.#value = value;\n\t\treturn this;\n\t}\n}","import FieldCollection from '../generic/fieldcollection';\nimport AddressField from './addressfield';\n\nexport default class AddressFieldCollection extends FieldCollection\n{\n\tgetFieldValue(type)\n\t{\n\t\tlet result = null;\n\n\t\tif(this.isFieldExists(type))\n\t\t{\n\t\t\tconst field = this.getField(type);\n\n\t\t\tif(field)\n\t\t\t{\n\t\t\t\tresult = field.value;\n\t\t\t}\n\t\t}\n\n\t\treturn result;\n\t}\n\n\tsetFieldValue(type, value)\n\t{\n\t\tthis.setField(\n\t\t\tnew AddressField({type, value})\n\t\t);\n\n\t\treturn this;\n\t}\n}","export default class AddressLink\n{\n\t#entityId;\n\t#entityType;\n\n\tconstructor(props)\n\t{\n\t\tthis.#entityId = props.entityId;\n\t\tthis.#entityType = props.entityType;\n\t}\n\n\tget entityId()\n\t{\n\t\treturn this.#entityId;\n\t}\n\n\tget entityType()\n\t{\n\t\treturn this.#entityType\n\t}\n}","import AddressLink from \"./addresslink\";\n\nexport default class AddressLinkCollection\n{\n\t#links = [];\n\n\tconstructor(props = {})\n\t{\n\t\tthis.links = !!props.links ? props.links : [];\n\t}\n\n\tset links(links: Array): void\n\t{\n\t\tif(!Array.isArray(links))\n\t\t{\n\t\t\tthrow new Error('links must be array!');\n\t\t}\n\n\t\tfor(let link of links)\n\t\t{\n\t\t\tthis.addLink(link);\n\t\t}\n\t}\n\n\tget links()\n\t{\n\t\treturn this.#links;\n\t}\n\n\taddLink(link: AddressLink)\n\t{\n\t\tif(!(link instanceof AddressLink))\n\t\t{\n\t\t\tthrow new Error('Argument link must be instance of Field!');\n\t\t}\n\n\t\tthis.#links.push(link);\n\t}\n\n\tclearLinks()\n\t{\n\t\tthis.#links = [];\n\t}\n}","import Field from '../generic/field';\n\nexport default class FormatField extends Field\n{\n\t#sort;\n\t#name;\n\t#description;\n\n\t// todo: Fields validation\n\tconstructor(props)\n\t{\n\t\tsuper(props);\n\n\t\tthis.#sort = parseInt(props.sort);\n\t\tthis.#name = props.name || '';\n\t\tthis.#description = props.description || '';\n\t}\n\n\tget sort()\n\t{\n\t\treturn this.#sort;\n\t}\n\n\tset sort(sort)\n\t{\n\t\tthis.#sort = sort;\n\t}\n\n\tget name()\n\t{\n\t\treturn this.#name;\n\t}\n\n\tset name(name)\n\t{\n\t\tthis.#name = name;\n\t}\n\n\tget description()\n\t{\n\t\treturn this.#description;\n\t}\n\n\tset description(description)\n\t{\n\t\tthis.#description = description;\n\t}\n}","import FieldCollection from '../generic/fieldcollection';\nimport FormatField from './formatfield';\n\nexport default class FormatFieldCollection extends FieldCollection\n{\n\tinitFields(fieldsData)\n\t{\n\t\tif(Array.isArray(fieldsData))\n\t\t{\n\t\t\tfieldsData.forEach((data) => {\n\n\t\t\t\tconst field = new FormatField(data);\n\n\t\t\t\tif(field)\n\t\t\t\t{\n\t\t\t\t\tthis.setField(field);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n}","export default class LocationType\n{\n\tstatic UNKNOWN = 0;\n\n\tstatic COUNTRY = 100;\n\n\tstatic ADM_LEVEL_1 = 200;\n\tstatic ADM_LEVEL_2 = 210;\n\tstatic ADM_LEVEL_3 = 220;\n\tstatic ADM_LEVEL_4 = 230;\n\n\tstatic LOCALITY = 300;\n\tstatic SUB_LOCALITY = 310;\n\tstatic SUB_LOCALITY_LEVEL_1 = 320;\n\tstatic SUB_LOCALITY_LEVEL_2 = 330;\n\tstatic STREET = 340;\n\n\tstatic BUILDING = 400;\n\tstatic ADDRESS_LINE_1 = 410;\n\n\tstatic FLOOR = 420;\n\tstatic ROOM = 430;\n\n\tstatic TMP_TYPE_HINT = 5010;\n\tstatic TMP_TYPE_CLARIFICATION = 5020;\n}\n","import LocationType from '../location/locationtype';\n\nexport default class AddressType extends LocationType\n{\n\tstatic POSTAL_CODE = 50;\n\n\tstatic ADDRESS_LINE_2 = 600;\n\tstatic RECIPIENT_COMPANY = 700;\n\tstatic RECIPIENT = 710;\n\tstatic PO_BOX = 800;\n}","export default class FormatTemplate\n{\n\ttype;\n\ttemplate;\n\n\tconstructor(type: string, template: string)\n\t{\n\t\tthis.type = type;\n\t\tthis.template = template;\n\t}\n}","import FormatTemplate from './formattemplate';\n\nexport default class FormatTemplateCollection\n{\n\t#templates = {};\n\n\tconstructor(templateData: {})\n\t{\n\t\tfor (const type in templateData)\n\t\t{\n\t\t\t// eslint-disable-next-line no-prototype-builtins\n\t\t\tif (templateData.hasOwnProperty(type))\n\t\t\t{\n\t\t\t\tthis.setTemplate(\n\t\t\t\t\tnew FormatTemplate(type, templateData[type])\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t}\n\n\tisTemplateExists(type: string): boolean\n\t{\n\t\treturn typeof this.#templates[type] !== 'undefined';\n\t}\n\n\tgetTemplate(type: string): string\n\t{\n\t\treturn this.isTemplateExists(type) ? this.#templates[type] : null;\n\t}\n\n\tsetTemplate(template: FormatTemplate)\n\t{\n\t\tif (!(template instanceof FormatTemplate))\n\t\t{\n\t\t\tthrow new Error('Argument template must be instance of FormatTemplate!');\n\t\t}\n\n\t\tthis.#templates[template.type] = template;\n\t}\n}","/**\n * Template types\n */\nexport default class FormatTemplateType\n{\n\t// Default template\n\tstatic DEFAULT = 'DEFAULT';\n\n\t// Template for autocomplete\n\tstatic AUTOCOMPLETE = 'AUTOCOMPLETE';\n\n\t// Template for field ADDRESS_LINE_1\n\tstatic ADDRESS_LINE_1 = 'ADDRESS_LINE_1';\n}","import {Type} from 'main.core';\nimport FormatFieldCollection from './format/formatfieldcollection';\nimport AddressType from './address/addresstype';\nimport FormatTemplateCollection from './format/formattemplatecollection';\nimport FormatTemplate from './format/formattemplate';\nimport FormatTemplateType from './format/formattemplatetype';\n\n/**\n * Class defines how the Address will look like\n */\nexport default class Format\n{\n\tcode;\n\tname;\n\tdescription;\n\tlanguageId;\n\ttemplateCollection;\n\tfieldCollection;\n\tdelimiter;\n\tfieldForUnRecognized;\n\n\tconstructor(props)\n\t{\n\t\tif (Type.isUndefined(props.languageId))\n\t\t{\n\t\t\tthrow new TypeError('LanguageId must be defined');\n\t\t}\n\n\t\tthis.languageId = props.languageId;\n\t\tthis.code = props.code || '';\n\t\tthis.name = props.name || '';\n\t\tthis.templateAutocomplete = props.templateAutocomplete || '';\n\t\tthis.templateAddressLine1 = props.templateAddressLine1 || '';\n\t\tthis.description = props.description || '';\n\t\tthis.delimiter = props.delimiter || ', ';\n\t\tthis.fieldForUnRecognized = props.fieldForUnRecognized || AddressType.UNKNOWN;\n\n\t\tthis.fieldCollection = new FormatFieldCollection();\n\n\t\tif (Type.isObject(props.fieldCollection))\n\t\t{\n\t\t\tthis.fieldCollection.initFields(props.fieldCollection);\n\t\t}\n\n\t\tlet collection = {};\n\n\t\tif (Type.isObject(props.templateCollection))\n\t\t{\n\t\t\tcollection = props.templateCollection;\n\t\t}\n\n\t\tthis.templateCollection = new FormatTemplateCollection(collection);\n\n\n\t}\n\n\tgetField(type)\n\t{\n\t\treturn this.fieldCollection.getField(type);\n\t}\n\n\tisFieldExists(type)\n\t{\n\t\treturn this.fieldCollection.isFieldExists(type);\n\t}\n\n\tgetTemplate(type: string = FormatTemplateType.DEFAULT): FormatTemplate\n\t{\n\t\treturn this.templateCollection.getTemplate(type);\n\t}\n\n\tisTemplateExists(type: string): boolean\n\t{\n\t\treturn this.templateCollection.isTemplateExists(type);\n\t}\n\n\tget template(): FormatTemplate\n\t{\n\t\treturn this.templateCollection.getTemplate();\n\t}\n}","import {Type, Text} from \"main.core\";\nimport Address from \"../../address\";\nimport AddressType from '../addresstype';\nimport Format from \"../../format\";\n\nconst STR_DELIMITER_PLACEHOLDER = \"#S#\";\nconst REGEX_COMMA_AMONG_EMPTY_SPACE = \"\\\\s*,\\\\s*\";\nconst REGEX_GROUP_DELIMITER = \"(\\\\\\\"([^\\\"\\\\\\\\]*|\\\\\\\\\\\"|\\\\\\\\\\\\\\\\|\\\\\\\\)*\\\")\";\nconst REGEX_GROUP_FIELD_TEXT = REGEX_GROUP_DELIMITER;\nconst REGEX_GROUP_FIELD_NAME = \"([a-zA-Z][a-zA-Z_0-9]*(:(NU|UN|N|U))?)\";\nconst REGEX_GROUP_FIELD_LIST_END = \"\\\\s*\\\\]\";\nconst REGEX_GROUP_END = REGEX_GROUP_FIELD_LIST_END;\nconst REGEX_PART_FROM_DELIMITER_TO_FIELD_LIST = \"\\\\s*,\\\\s*\\\\[\\\\s*\";\nconst REGEX_GROUP_PART_BEFORE_FIELDS =\n\t\"(([^\\\\[\\\\\\\\]|\\\\\\\\\\\\[|\\\\\\\\\\\\\\\\)*)(\\\\[\\\\s*)(\\\"([^\\\"\\\\\\\\]*|\\\\\\\\\\\"|\\\\\\\\\\\\\\\\|\\\\\\\\)*\\\")\\\\s*,\\\\s*\\\\[\\\\s*\";\n\nconst ERR_PARSE_GROUP_START_POSITION = 1100;\nconst ERR_PARSE_GROUP_START = 1110;\nconst ERR_PARSE_GROUP_DELIMITER = 1120;\nconst ERR_PARSE_PART_FROM_DELIMITER_TO_FIELD_LIST = 1130;\nconst ERR_PARSE_GROUP_FIELD_TEXT = 1140;\nconst ERR_PARSE_GROUP_FIELD_NAME = 1150;\nconst ERR_PARSE_GROUP_FIELD = 1160;\nconst ERR_PARSE_GROUP_FIELD_LIST = 1170;\nconst ERR_PARSE_GROUP_FIELD_LIST_DELIMITER = 1180;\nconst ERR_PARSE_GROUP_FIELD_LIST_END = 1190;\nconst ERR_PARSE_GROUP_END = 1200;\nconst ERR_PARSE_GROUP = 1210;\n\n\nexport default class StringTemplateConverter\n{\n\t#template = \"\";\n\t#delimiter = \"\";\n\t#htmlEncode = false;\n\t#format = null;\n\n\tconstructor(template: string, delimiter: string, htmlEncode: boolean, format: Format = null)\n\t{\n\t\tthis.#template = template;\n\t\tthis.#delimiter = delimiter;\n\t\tthis.#htmlEncode = htmlEncode;\n\t\tthis.#format = format;\n\t}\n\n\tgetErrorCodes()\n\t{\n\t\tlet result = {};\n\n\t\tresult[ERR_PARSE_GROUP_START_POSITION] = \"ERR_PARSE_GROUP_START_POSITION\";\n\t\tresult[ERR_PARSE_GROUP_START] = \"ERR_PARSE_GROUP_START\";\n\t\tresult[ERR_PARSE_GROUP_DELIMITER] = \"ERR_PARSE_GROUP_DELIMITER\";\n\t\tresult[ERR_PARSE_PART_FROM_DELIMITER_TO_FIELD_LIST] = \"ERR_PARSE_PART_FROM_DELIMITER_TO_FIELD_LIST\";\n\t\tresult[ERR_PARSE_GROUP_FIELD_TEXT] = \"ERR_PARSE_GROUP_FIELD_TEXT\";\n\t\tresult[ERR_PARSE_GROUP_FIELD_NAME] = \"ERR_PARSE_GROUP_FIELD_NAME\";\n\t\tresult[ERR_PARSE_GROUP_FIELD] = \"ERR_PARSE_GROUP_FIELD\";\n\t\tresult[ERR_PARSE_GROUP_FIELD_LIST] = \"ERR_PARSE_GROUP_FIELD_LIST\";\n\t\tresult[ERR_PARSE_GROUP_FIELD_LIST_DELIMITER] = \"ERR_PARSE_GROUP_FIELD_LIST_DELIMITER\";\n\t\tresult[ERR_PARSE_GROUP_FIELD_LIST_END] = \"ERR_PARSE_GROUP_FIELD_LIST_END\";\n\t\tresult[ERR_PARSE_GROUP_END] = \"ERR_PARSE_GROUP_END\";\n\t\tresult[ERR_PARSE_GROUP] = \"ERR_PARSE_GROUP\";\n\n\t\treturn result;\n\t}\n\t\n\tgetErrorsText(context: {}): string\n\t{\n\t\tlet result = \"\";\n\n\t\tconst errorCodes = this.getErrorCodes();\n\t\tconst errors = context[\"error\"][\"errors\"];\n\t\tfor (let i = 0; i < errors.length; i++)\n\t\t{\n\t\t\tresult += `Error: ${errors[i][\"position\"]}, ${errorCodes[errors[i][\"code\"]]}\\n`;\n\t\t\tif (errors[i].hasOwnProperty(\"info\") && Type.isPlainObject(errors[i][\"info\"]))\n\t\t\t{\n\t\t\t\tconst errorInfo = errors[i][\"info\"];\n\t\t\t\tlet needHeader = true;\n\t\t\t\tfor (let paramName in errorInfo)\n\t\t\t\t{\n\t\t\t\t\tif (errorInfo.hasOwnProperty(paramName))\n\t\t\t\t\t{\n\t\t\t\t\t\tlet paramValue = errorInfo[paramName];\n\t\t\t\t\t\tlet needPrint = false;\n\t\t\t\t\t\tif (Type.isString(paramValue))\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tparamValue = `\"${paramValue}\"`;\n\t\t\t\t\t\t\tneedPrint = true;\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse if (Type.isNumber(paramValue) || Type.isFloat(paramValue))\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tneedPrint = true;\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse if (Type.isBoolean(paramValue))\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tparamValue = ((paramValue) ? \"true\" : \"false\");\n\t\t\t\t\t\t\tneedPrint = true;\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse if (Type.isArray(paramValue))\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tparamValue = \"[...]\";\n\t\t\t\t\t\t\tneedPrint = true;\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse if (Type.isObject(paramValue))\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tparamValue = '{...}';\n\t\t\t\t\t\t\tneedPrint = true;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (needPrint)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tif (needHeader)\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tresult += \"  Error info:\\n\";\n\t\t\t\t\t\t\t\tneedHeader = false;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tresult += `    ${paramName}: ${paramValue}\\n`;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tlet templateValue = context[\"template\"].replace(\"\\n\", \"\\\\n\");\n\t\ttemplateValue = templateValue.replace(\"\\\"\", \"\\\\\\\"\");\n\t\tresult += `Template: \"${templateValue}\"\\n\\n`;\n\n\t\treturn result;\n\t}\n\n\tcreateContext()\n\t{\n\t\treturn {\n\t\t\t\"level\": 0,\n\t\t\t\"position\": 0,\n\t\t\t\"template\": \"\",\n\t\t\t\"address\": null,\n\t\t\t\"info\": {},\n\t\t\t\"hasError\": false,\n\t\t\t\"error\": {\n\t\t\t\t\"code\": 0,\n\t\t\t\t\"position\": 0,\n\t\t\t\t\"errors\": [],\n\t\t\t\t\"info\": {},\n\t\t\t},\n\t\t};\n\t}\n\n\tclearContextInfo(context)\n\t{\n\t\tcontext[\"info\"] = {};\n\n\t\treturn context;\n\t}\n\n\tclearContextError(context)\n\t{\n\t\tcontext[\"hasError\"] = false;\n\t\tcontext[\"error\"] = {\n\t\t\t\"code\": 0,\n\t\t\t\"position\": 0,\n\t\t\t\"errors\": [],\n\t\t\t\"info\": {},\n\t\t};\n\n\t\treturn context;\n\t}\n\n\tclearContextInfoAndError(context)\n\t{\n\t\treturn this.clearContextError(this.clearContextInfo(context));\n\t}\n\n\tunescapeText(text: string): string\n\t{\n\t\tlet result = \"\";\n\t\tlet i;\n\n\t\tfor (i = 0; i < text.length; i++)\n\t\t{\n\t\t\tif (text[i] === \"\\\\\")\n\t\t\t{\n\t\t\t\tif ((text.length - i) > 1)\n\t\t\t\t{\n\t\t\t\t\tresult += text[++i];\n\t\t\t\t}\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tresult += text[i];\n\t\t\t}\n\t\t}\n\n\t\treturn result;\n\t}\n\n\tparseGroupDelimiter(context: {}): {}\n\t{\n\t\t// Capturing the group's separator\n\t\tconst delimiterStartPosition = context[\"position\"];\n\t\t//                [\", \", [ADDRESS_LINE_1:N,ADDRESS_LINE_2,\"Text\",LOCALITY,ADM_LEVEL_2]]\n\t\t// Are looking for ^^^^\n\t\tconst regEx = new RegExp(REGEX_GROUP_DELIMITER, \"mg\");\n\t\tregEx.lastIndex = delimiterStartPosition;\n\t\tconst matches = regEx.exec(context[\"template\"]);\n\t\tif (matches && matches.index === delimiterStartPosition)\n\t\t{\n\t\t\tcontext[\"info\"] = {\n\t\t\t\t\"position\": delimiterStartPosition,\n\t\t\t\t\"end\": delimiterStartPosition + matches[0].length,\n\t\t\t\t\"value\": this.unescapeText(\n\t\t\t\t\tcontext[\"template\"].substr(\n\t\t\t\t\t\tdelimiterStartPosition + 1,\n\t\t\t\t\t\tmatches[0].length - 2\n\t\t\t\t\t)\n\t\t\t\t),\n\t\t\t};\n\t\t\tcontext[\"position\"] = context[\"info\"][\"end\"];\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis.addContextError(context, ERR_PARSE_GROUP_DELIMITER, delimiterStartPosition);\n\t\t}\n\n\t\treturn context;\n\t}\n\n\tparseFieldText(context: {}): {}\n\t{\n\t\tconst textBlockStartPosition = context[\"position\"];\n\t\t// [\", \", [ADDRESS_LINE_1:N,ADDRESS_LINE_2,\"Text\",LOCALITY,ADM_LEVEL_2]]\n\t\t// Are looking for                         ^^^^^^\n\t\tconst regEx = new RegExp(REGEX_GROUP_FIELD_TEXT, \"mg\");\n\t\tregEx.lastIndex = textBlockStartPosition;\n\t\tconst matches = regEx.exec(context[\"template\"]);\n\t\tif (matches && matches.index === textBlockStartPosition)\n\t\t{\n\t\t\tcontext[\"info\"] = {\n\t\t\t\t\"type\": \"text\",\n\t\t\t\t\"position\": textBlockStartPosition,\n\t\t\t\t\"end\": textBlockStartPosition + matches[0].length,\n\t\t\t\t\"value\": this.unescapeText(\n\t\t\t\t\tcontext[\"template\"].substr(\n\t\t\t\t\t\ttextBlockStartPosition + 1,\n\t\t\t\t\t\tmatches[0].length - 2\n\t\t\t\t\t)\n\t\t\t\t),\n\t\t\t};\n\t\t\tcontext[\"position\"] = context[\"info\"][\"end\"];\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis.addContextError(context, ERR_PARSE_GROUP_FIELD_TEXT, textBlockStartPosition);\n\t\t}\n\n\t\treturn context;\n\t}\n\n\tsplitFieldName(fieldName: string): []\n\t{\n\t\tconst parts = fieldName.split(\":\");\n\t\tconst namePart = parts[0];\n\t\tconst modifiersPart = (parts.length > 1) ? parts[1] : \"\";\n\n\t\treturn [namePart, modifiersPart];\n\t}\n\n\t#isTemplateForFieldExists(fieldName: string): boolean\n\t{\n\t\treturn this.#format && this.#format.getTemplate(fieldName) !== null;\n\t}\n\n\t#getFieldValueByTemplate(fieldName: string, address: Address): ?string\n\t{\n\t\tif (!this.#isTemplateForFieldExists(fieldName))\n\t\t{\n\t\t\treturn null;\n\t\t}\n\n\t\tconst template = this.#format.getTemplate(fieldName).template;\n\t\tconst templateConverter = new StringTemplateConverter(template, this.#delimiter, this.#htmlEncode, this.#format);\n\t\treturn templateConverter.convert(address);\n\t}\n\t\n\t#getAlterFieldValue(address: Address, fieldType: number): string\n\t{\n\t\tlet localityValue = address.getFieldValue(AddressType.LOCALITY);\n\t\tlocalityValue = Type.isString(localityValue) ? localityValue : \"\";\n\t\tlet result = address.getFieldValue(fieldType);\n\t\tif (!Type.isString(result))\n\t\t{\n\t\t\tresult = \"\";\n\t\t}\n\t\tif (result !== \"\" && localityValue !== \"\")\n\t\t{\n\t\t\tconst localityValueUpper = localityValue.toUpperCase();\n\t\t\tconst targetValueUpper = result.toUpperCase();\n\t\t\tif (targetValueUpper.length >= localityValueUpper.length)\n\t\t\t{\n\t\t\t\tconst targetValueSubstr = targetValueUpper.substr(\n\t\t\t\t\ttargetValueUpper.length - localityValueUpper.length\n\t\t\t\t);\n\t\t\t\tif (localityValueUpper === targetValueSubstr)\n\t\t\t\t{\n\t\t\t\t\tresult = \"\";\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn result;\n\t}\n\t\n\tgetAddressFieldValue(address: Address, fieldName: string, fieldModifiers: string): string\n\t{\n\t\tlet  result = \"\";\n\n\t\tif (!Type.isUndefined(AddressType[fieldName]))\n\t\t{\n\t\t\tif (fieldName === \"ADM_LEVEL_1\" || fieldName === \"ADM_LEVEL_2\")\n\t\t\t{\n\t\t\t\t// Scratch \"Province & Region by Locality\"\n\t\t\t\tresult = this.#getAlterFieldValue(address, AddressType[fieldName]);\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tresult = address.getFieldValue(AddressType[fieldName]);\n\t\t\t}\n\n\t\t\tif (result === null)\n\t\t\t{\n\t\t\t\tresult = this.#getFieldValueByTemplate(fieldName, address);\n\t\t\t}\n\t\t}\n\t\tif (!Type.isString(result))\n\t\t{\n\t\t\tresult = \"\";\n\t\t}\n\t\tif (result !== \"\")\n\t\t{\n\t\t\tif (fieldModifiers.indexOf(\"N\") >= 0)\n\t\t\t{\n\t\t\t\tresult = result.replace(/(\\r\\n|\\n|\\r)/g, \"#S#\");\n\t\t\t}\n\t\t\tif (fieldModifiers.indexOf(\"U\") >= 0)\n\t\t\t{\n\t\t\t\tresult = result.toUpperCase();\n\t\t\t}\n\t\t}\n\n\t\treturn result;\n\t}\n\n\tparseFieldName(context: {}): {}\n\t{\n\t\tconst fieldNameStartPosition = context[\"position\"];\n\t\t//          [\", \", [ADDRESS_LINE_1:N,ADDRESS_LINE_2,\"Text\",LOCALITY,ADM_LEVEL_2]]\n\t\t// Are looking for  ^^^^^^^^^^^^^^^^\n\t\tconst regEx = new RegExp(REGEX_GROUP_FIELD_NAME, \"mg\");\n\t\tregEx.lastIndex = fieldNameStartPosition;\n\t\tconst matches = regEx.exec(context[\"template\"]);\n\t\tif (matches && matches.index === fieldNameStartPosition)\n\t\t{\n\t\t\tcontext[\"position\"] = fieldNameStartPosition + matches[0].length;\n\t\t\tconst fieldParts = this.splitFieldName(matches[0]);\n\t\t\tconst fieldName = fieldParts[0];\n\t\t\tconst fieldModifiers = fieldParts[1];\n\t\t\tconst fieldValue = this.getAddressFieldValue(context[\"address\"], fieldName, fieldModifiers);\n\t\t\tcontext[\"info\"] = {\n\t\t\t\t\"type\": \"field\",\n\t\t\t\t\"position\": fieldNameStartPosition,\n\t\t\t\t\"end\": context[\"position\"],\n\t\t\t\t\"modifiers\": fieldModifiers,\n\t\t\t\t\"name\": fieldName,\n\t\t\t\t\"value\": fieldValue,\n\t\t\t};\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis.addContextError(context, ERR_PARSE_GROUP_FIELD_NAME, fieldNameStartPosition);\n\t\t}\n\n\t\treturn context;\n\t}\n\n\tparseFieldListDelimiter(context: {}): {}\n\t{\n\t\tconst markerStartPosition = context[\"position\"];\n\t\t// [\", \", [ADDRESS_LINE_1:N , ADDRESS_LINE_2,\"Text\",LOCALITY,ADM_LEVEL_2]]\n\t\t// Are looking for         ^^^\n\t\tconst regEx = new RegExp(REGEX_COMMA_AMONG_EMPTY_SPACE, \"mg\");\n\t\tregEx.lastIndex = markerStartPosition;\n\t\tconst matches = regEx.exec(context[\"template\"]);\n\t\tif (matches && matches.index === markerStartPosition)\n\t\t{\n\t\t\tcontext[\"position\"] = markerStartPosition + matches[0].length;\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis.addContextError(context, ERR_PARSE_GROUP_FIELD_LIST_DELIMITER, markerStartPosition);\n\t\t}\n\n\t\treturn context;\n\t}\n\n\tparseFieldListEnd(context: {}): {}\n\t{\n\t\tconst markerStartPosition = context[\"position\"];\n\t\t// [\", \", [ADDRESS_LINE_1:N,ADDRESS_LINE_2,\"Text\",LOCALITY,ADM_LEVEL_2]]\n\t\t// Are looking for                                                    ^\n\t\tconst regEx = new RegExp(REGEX_GROUP_FIELD_LIST_END, \"mg\");\n\t\tregEx.lastIndex = markerStartPosition;\n\t\tconst matches = regEx.exec(context[\"template\"]);\n\t\tif (matches && matches.index === markerStartPosition)\n\t\t{\n\t\t\tcontext[\"position\"] = markerStartPosition + matches[0].length;\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis.addContextError(context, ERR_PARSE_GROUP_FIELD_LIST_END, markerStartPosition);\n\t\t}\n\n\t\treturn context;\n\t}\n\n\tparseField(context: {}): {}\n\t{\n\t\tlet fieldInfo = [];\n\t\tconst fieldStartPosition = context[\"position\"];\n\t\tconst errors = [];\n\n\t\t// Checking for the presence of a text block\n\t\tcontext = this.parseFieldText(context);\n\n\t\tif (context[\"hasError\"])\n\t\t{\n\t\t\tthis.unshiftError(errors, context[\"error\"][\"code\"], context[\"error\"][\"position\"]);\n\t\t\tcontext = this.clearContextInfoAndError(context);\n\t\t\t// Checking for the presence of a field name\n\t\t\tcontext = this.parseFieldName(context);\n\t\t}\n\n\t\tif (context[\"hasError\"])\n\t\t{\n\t\t\tthis.unshiftError(errors, context[\"error\"][\"code\"], context[\"error\"][\"position\"]);\n\t\t\tcontext = this.clearContextInfoAndError(context);\n\t\t\t// Checking for the presence of a nested group\n\t\t\tcontext = this.parseGroup(context);\n\t\t\tif (context[\"hasError\"])\n\t\t\t{\n\t\t\t\tthis.unshiftError(errors, context[\"error\"][\"code\"], context[\"error\"][\"position\"]);\n\t\t\t}\n\t\t\telse if (context[\"info\"][\"position\"] > fieldStartPosition)\n\t\t\t{\n\t\t\t\t// Group found beyond the expected position\n\t\t\t\tthis.addContextError(context, ERR_PARSE_GROUP_START_POSITION, fieldStartPosition);\n\t\t\t\tthis.unshiftError(errors, context[\"error\"][\"code\"], context[\"error\"][\"position\"]);\n\t\t\t}\n\t\t}\n\n\t\tif (!context[\"hasError\"])\n\t\t{\n\t\t\tfieldInfo = context[\"info\"];\n\t\t\tfieldInfo[\"isFieldListEnd\"] = false;\n\t\t\tcontext = this.clearContextInfo(context);\n\n\t\t\t// Checking for the presence of a field separator\n\t\t\tcontext = this.parseFieldListDelimiter(context);\n\n\t\t\tif (context[\"hasError\"])\n\t\t\t{\n\t\t\t\tthis.unshiftError(errors, context[\"error\"][\"code\"], context[\"error\"][\"position\"]);\n\t\t\t\tcontext = this.clearContextInfoAndError(context);\n\t\t\t\t// Checking for the presence of the end sign of the field list\n\t\t\t\tcontext = this.parseFieldListEnd(context);\n\t\t\t\tif (context[\"hasError\"])\n\t\t\t\t{\n\t\t\t\t\tthis.unshiftError(errors, context[\"error\"][\"code\"], context[\"error\"][\"position\"]);\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tfieldInfo[\"isFieldListEnd\"] = true;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (context[\"hasError\"])\n\t\t{\n\t\t\tthis.unshiftError(errors,  ERR_PARSE_GROUP_FIELD, fieldStartPosition);\n\t\t\tthis.addContextErrors(context, errors);\n\t\t}\n\t\telse\n\t\t{\n\t\t\tcontext[\"info\"] = fieldInfo;\n\t\t}\n\n\t\treturn context;\n\t}\n\n\tparseGroupFieldList(context: {}): {}\n\t{\n\t\tconst fieldListStartPosition = context[\"position\"];\n\t\tconst fieldValues = [];\n\t\t//            [\", \", [ADDRESS_LINE_1:N,ADDRESS_LINE_2,\"Text\",LOCALITY,ADM_LEVEL_2]]\n\t\t// Are looking for ^^^\n\t\tconst regEx = new RegExp(REGEX_PART_FROM_DELIMITER_TO_FIELD_LIST, \"mg\");\n\t\tregEx.lastIndex = fieldListStartPosition;\n\t\tconst matches = regEx.exec(context[\"template\"]);\n\t\tif (matches && matches.index === fieldListStartPosition)\n\t\t{\n\t\t\tcontext[\"position\"] = fieldListStartPosition + matches[0].length;\n\t\t\tlet isFieldListEnd = false;\n\t\t\twhile (!(context[\"hasError\"] || isFieldListEnd))\n\t\t\t{\n\t\t\t\tcontext = this.parseField(context);\n\t\t\t\tif (!context[\"hasError\"])\n\t\t\t\t{\n\t\t\t\t\tisFieldListEnd = (\n\t\t\t\t\t\tcontext[\"info\"].hasOwnProperty(\"isFieldListEnd\")\n\t\t\t\t\t\t&& context[\"info\"][\"isFieldListEnd\"]\n\t\t\t\t\t);\n\t\t\t\t\tif (context[\"info\"][\"value\"] !== \"\")\n\t\t\t\t\t{\n\t\t\t\t\t\tfieldValues.push(context[\"info\"][\"value\"]);\n\t\t\t\t\t}\n\t\t\t\t\tcontext = this.clearContextInfo(context);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (!context[\"hasError\"])\n\t\t\t{\n\t\t\t\tcontext[\"info\"] = {\"fieldValues\": fieldValues};\n\t\t\t}\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis.addContextError(context, ERR_PARSE_PART_FROM_DELIMITER_TO_FIELD_LIST, fieldListStartPosition);\n\t\t}\n\n\t\tif (context[\"hasError\"])\n\t\t{\n\t\t\tthis.addContextError(context, ERR_PARSE_GROUP_FIELD_LIST, fieldListStartPosition);\n\t\t}\n\n\t\treturn context;\n\t}\n\n\tparseGroupStart(context: {}): {}\n\t{\n\t\t//                 [\", \", [ADDRESS_LINE_1:N,ADDRESS_LINE_2,\"Text\",LOCALITY,ADM_LEVEL_2]]\n\t\t// Are looking for ^^^^^^^^\n\t\tconst regEx = new RegExp(REGEX_GROUP_PART_BEFORE_FIELDS, \"mg\");\n\t\tregEx.lastIndex = context[\"position\"];\n\t\tconst matches = regEx.exec(context[\"template\"])\n\t\tif (matches)\n\t\t{\n\t\t\tcontext[\"info\"][\"groupStartPosition\"] = matches.index + matches[1].length;\n\t\t\tcontext[\"info\"][\"groupDelimiterStartPosition\"] = matches.index + matches[1].length + matches[3].length;\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis.addContextError(context, ERR_PARSE_GROUP_START, context[\"position\"]);\n\t\t}\n\n\t\treturn context;\n\t}\n\n\tparseGroupEnd(context: {}): {}\n\t{\n\t\tconst markerStartPosition = context[\"position\"];\n\t\t// [\", \", [ADDRESS_LINE_1:N,ADDRESS_LINE_2,\"Text\",LOCALITY,ADM_LEVEL_2]]\n\t\t// Are looking for                                                     ^\n\t\tconst regEx = new RegExp(REGEX_GROUP_END, \"mg\");\n\t\tregEx.lastIndex = markerStartPosition;\n\t\tconst matches = regEx.exec(context[\"template\"]);\n\t\tif (matches && matches.index === markerStartPosition)\n\t\t{\n\t\t\tcontext[\"position\"] = markerStartPosition + matches[0].length;\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis.addContextError(context, ERR_PARSE_GROUP_END, markerStartPosition);\n\t\t}\n\n\t\treturn context;\n\t}\n\n\tparseGroup(context: {}): {}\n\t{\n\t\tconst startSearchPosition = context[\"position\"];\n\t\tlet groupStartPosition = 0;\n\t\tlet delimiterValue = \"\";\n\t\tlet fieldValues = [];\n\n\t\tcontext[\"level\"]++;\n\n\t\t// Checking for the presence of a start of a group\n\t\tcontext = this.parseGroupStart(context);\n\n\t\tif (!context[\"hasError\"])\n\t\t{\n\t\t\t// Found a sign of the beginning of a group\n\t\t\tgroupStartPosition = context[\"info\"][\"groupStartPosition\"];\n\t\t\tcontext[\"position\"] = context[\"info\"][\"groupDelimiterStartPosition\"];\n\t\t\tcontext = this.clearContextInfo(context);\n\t\t\tcontext = this.parseGroupDelimiter(context);\n\t\t}\n\n\t\tif (!context[\"hasError\"])\n\t\t{\n\t\t\t// The value of the group separator was got\n\t\t\tdelimiterValue = context[\"info\"][\"value\"];\n\t\t\tcontext = this.clearContextInfo(context);\n\t\t\tcontext = this.parseGroupFieldList(context);\n\t\t}\n\n\t\tif (!context[\"hasError\"])\n\t\t{\n\t\t\t// The values of the field list was got\n\t\t\tfieldValues = context[\"info\"][\"fieldValues\"];\n\t\t\tcontext = this.clearContextInfo(context);\n\t\t\tcontext = this.parseGroupEnd(context);\n\t\t}\n\n\t\tif (!context[\"hasError\"])\n\t\t{\n\t\t\t// Kremlin,Moscow,Moscow,Russia,103132 -> Kremlin,Moscow,Russia,103132\n\t\t\tfieldValues = [...new Set(fieldValues)];\n\n\t\t\tlet value = fieldValues.join(delimiterValue);\n\n\t\t\t// Kaliningrad, Narvskaya, 72, , kv 8 -> Kaliningrad, Narvskaya, 72, kv 8\n\t\t\tconst reg = new RegExp(`(${delimiterValue}){2,}`, 'gim');\n\t\t\tvalue = value.replace(new RegExp(reg), delimiterValue);\n\n\t\t\t// The sign of the end of the group is received, the assembly of the group value.\n\t\t\tcontext[\"info\"] = {\n\t\t\t\t\"type\": \"group\",\n\t\t\t\t\"position\": groupStartPosition,\n\t\t\t\t\"end\": context[\"position\"],\n\t\t\t\t\"value\": value,\n\t\t\t};\n\t\t}\n\n\t\tcontext[\"level\"]--;\n\n\t\tif (context[\"hasError\"])\n\t\t{\n\t\t\tthis.addContextError(\n\t\t\t\tcontext,\n\t\t\t\tERR_PARSE_GROUP,\n\t\t\t\tstartSearchPosition,\n\t\t\t\t{\"groupStartPosition\": groupStartPosition}\n\t\t\t);\n\t\t}\n\n\t\treturn context;\n\t}\n\n\tappendTextBlock(blocks: [], position: number, value: string)\n\t{\n\t\tlet lastBlockIndex = blocks.length - 1;\n\t\tlet lastBlock = (lastBlockIndex >= 0) ? blocks[lastBlockIndex] : null;\n\t\tif (lastBlock && lastBlock.hasOwnProperty(\"type\") && lastBlock[\"type\"] === \"text\")\n\t\t{\n\t\t\tblocks[lastBlockIndex][\"value\"] += value;\n\t\t\tblocks[lastBlockIndex][\"length\"] += value.length;\n\t\t}\n\t\telse\n\t\t{\n\t\t\tblocks[++lastBlockIndex] = {\n\t\t\t\t\"type\": \"text\",\n\t\t\t\t\"position\": position,\n\t\t\t\t\"length\": value.length,\n\t\t\t\t\"value\": value,\n\t\t\t};\n\t\t}\n\t}\n\n\tappendGroupBlock(blocks: [], position: number, value: string)\n\t{\n\t\tblocks.push({\n\t\t\t\"type\": \"group\",\n\t\t\t\"position\": position,\n\t\t\t\"length\": value.length,\n\t\t\t\"value\": value,\n\t\t});\n\t}\n\n\tunshiftError(errors: [{}], code: number, position: number, info: {} = null)\n\t{\n\t\terrors.unshift({\n\t\t\t\"code\": code,\n\t\t\t\"position\": position,\n\t\t\t\"info\": (Type.isPlainObject(info)) ? info : {},\n\t\t});\n\t}\n\n\taddContextError(context: {}, code: number, position: number, info: {} = null)\n\t{\n\t\tcontext[\"hasError\"] = true;\n\t\tcontext[\"error\"][\"code\"] = code;\n\t\tcontext[\"error\"][\"position\"] = position;\n\t\tcontext[\"error\"][\"info\"] = (Type.isPlainObject(info)) ? info : {};\n\t\tthis.unshiftError(context[\"error\"][\"errors\"], code, position, info);\n\t}\n\n\taddContextErrors(context: {}, errors: [{}], info: {} = null)\n\t{\n\t\tcontext[\"hasError\"] = true;\n\t\tcontext[\"error\"][\"code\"] = errors[0][\"code\"];\n\t\tcontext[\"error\"][\"position\"] = errors[0][\"position\"];\n\t\tcontext[\"error\"][\"info\"] = (Type.isPlainObject(info)) ? info : {};\n\t\tcontext[\"error\"][\"errors\"].splice(0, 0, errors);\n\t}\n\n\tparseBlocks(context: {}): {}\n\t{\n\t\t/* Variable for debug only\n\t\tlet errorDisplayed = false;\n\t\t*/\n\n\t\tconst blocks = [];\n\n\t\tconst templateLength = context[\"template\"].length;\n\t\twhile (context[\"position\"] < templateLength)\n\t\t{\n\t\t\tconst blockStartPosition = context[\"position\"];\n\t\t\tcontext = this.parseGroup(context);\n\t\t\tif (context[\"hasError\"])\n\t\t\t{\n\t\t\t\t// Debug info\n\t\t\t\t/*if (!errorDisplayed)\n\t\t\t\t{\n\t\t\t\t\tconsole.info(this.getErrorsText(context));\n\t\t\t\t\terrorDisplayed = true;\n\t\t\t\t}*/\n\n\t\t\t\tconst errorInfo = context[\"error\"][\"info\"];\n\t\t\t\tlet blockLength;\n\t\t\t\tif (!Type.isPlainObject(errorInfo)\n\t\t\t\t\t&& errorInfo.hasOwnProperty(\"groupStartPosition\")\n\t\t\t\t\t&& errorInfo[\"groupStartPosition\"] > blockStartPosition\n\t\t\t\t)\n\t\t\t\t{\n\t\t\t\t\tblockLength = errorInfo[\"groupStartPosition\"] - blockStartPosition + 1;\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tblockLength = 1;\n\t\t\t\t}\n\n\t\t\t\tthis.appendTextBlock(\n\t\t\t\t\tblocks,\n\t\t\t\t\tcontext[\"error\"][\"position\"],\n\t\t\t\t\tcontext[\"template\"].substr(blockStartPosition, blockLength)\n\t\t\t\t);\n\t\t\t\tcontext = this.clearContextInfoAndError(context);\n\t\t\t\tcontext[\"position\"] = blockStartPosition + blockLength;\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tconst groupStartPosition = context[\"info\"][\"position\"];\n\t\t\t\tif (groupStartPosition > blockStartPosition)\n\t\t\t\t{\n\t\t\t\t\tthis.appendTextBlock(\n\t\t\t\t\t\tblocks,\n\t\t\t\t\t\tblockStartPosition,\n\t\t\t\t\t\tcontext[\"template\"].substr(\n\t\t\t\t\t\t\tblockStartPosition,\n\t\t\t\t\t\t\tgroupStartPosition - blockStartPosition\n\t\t\t\t\t\t)\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\tif (context[\"info\"][\"value\"] !== \"\")\n\t\t\t\t{\n\t\t\t\t\tthis.appendGroupBlock(\n\t\t\t\t\t\tblocks,\n\t\t\t\t\t\tgroupStartPosition,\n\t\t\t\t\t\tcontext[\"info\"][\"value\"]\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\tcontext = this.clearContextInfo(context);\n\t\t\t}\n\t\t}\n\n\t\tif (!context[\"hasError\"])\n\t\t{\n\t\t\tcontext[\"info\"] = {\"blocks\": blocks};\n\t\t}\n\n\t\treturn context;\n\t}\n\n\tconvert(address: Address): string\n\t{\n\t\tlet result = \"\";\n\n\t\tlet context = this.createContext();\n\t\tcontext[\"template\"] = this.#template;\n\t\tcontext[\"address\"] = address;\n\n\t\tcontext = this.parseBlocks(context);\n\n\t\tif (!context[\"hasError\"])\n\t\t{\n\t\t\tconst blocks = context[\"info\"][\"blocks\"];\n\t\t\tfor (let i = 0; i < blocks.length; i++)\n\t\t\t{\n\t\t\t\tif (blocks[i][\"type\"] === \"text\")\n\t\t\t\t{\n\t\t\t\t\tresult += this.unescapeText(blocks[i][\"value\"]);\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tresult += blocks[i][\"value\"];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (result !== \"\")\n\t\t{\n\t\t\tconst temp = result.split(STR_DELIMITER_PLACEHOLDER);\n\t\t\tlet parts = [];\n\t\t\tfor (let i = 0; i < temp.length; i++)\n\t\t\t{\n\t\t\t\tif (temp[i] !== \"\")\n\t\t\t\t{\n\t\t\t\t\tparts.push(temp[i]);\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (this.#htmlEncode && parts.length > 0)\n\t\t\t{\n\t\t\t\tfor (let i = 0; i < parts.length; i++)\n\t\t\t\t{\n\t\t\t\t\tparts[i] = Text.encode(parts[i]);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tresult = parts.join(this.#delimiter);\n\t\t}\n\t\treturn result;\n\t}\n}\n","import {Text} from 'main.core';\nimport Address from '../../address';\nimport Format from '../../format';\nimport StringTemplateConverter from './stringtemplateconverter';\n\nexport default class StringConverter\n{\n\tstatic STRATEGY_TYPE_TEMPLATE = 'template';\n\tstatic STRATEGY_TYPE_TEMPLATE_COMMA = 'template_comma';\n\tstatic STRATEGY_TYPE_TEMPLATE_NL = 'template_nl';\n\tstatic STRATEGY_TYPE_TEMPLATE_BR = 'template_br';\n\tstatic STRATEGY_TYPE_FIELD_SORT = 'field_sort';\n\tstatic STRATEGY_TYPE_FIELD_TYPE = 'field_type';\n\n\tstatic CONTENT_TYPE_HTML = 'html';\n\tstatic CONTENT_TYPE_TEXT = 'text';\n\t/**\n\t * Convert address to string\n\t * @param {Address} address\n\t * @param {Format} format\n\t * @param {string} strategyType\n\t * @param {string} contentType\n\t * @returns {string}\n\t */\n\tstatic convertAddressToString(address: Address, format: Format, strategyType: string, contentType: string): string\n\t{\n\t\tlet result;\n\n\t\tif (strategyType === StringConverter.STRATEGY_TYPE_TEMPLATE\n\t\t\t|| strategyType === StringConverter.STRATEGY_TYPE_TEMPLATE_COMMA\n\t\t\t|| strategyType === StringConverter.STRATEGY_TYPE_TEMPLATE_NL\n\t\t\t|| strategyType === StringConverter.STRATEGY_TYPE_TEMPLATE_BR\n\t\t)\n\t\t{\n\t\t\tlet delimiter = null;\n\n\t\t\tswitch (strategyType)\n\t\t\t{\n\t\t\t\tcase StringConverter.STRATEGY_TYPE_TEMPLATE_COMMA:\n\t\t\t\t\tdelimiter = ', ';\n\t\t\t\t\tbreak;\n\t\t\t\tcase StringConverter.STRATEGY_TYPE_TEMPLATE_NL:\n\t\t\t\t\tdelimiter = '\\n';\n\t\t\t\t\tbreak;\n\t\t\t\tcase StringConverter.STRATEGY_TYPE_TEMPLATE_BR:\n\t\t\t\t\tdelimiter = '<br />';\n\t\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tresult = StringConverter.convertAddressToStringTemplate(\n\t\t\t\taddress, format.getTemplate(), contentType, delimiter, format\n\t\t\t);\n\t\t}\n\t\telse if (strategyType === StringConverter.STRATEGY_TYPE_FIELD_SORT)\n\t\t{\n\t\t\tconst fieldSorter = (a, b) => { return a.sort - b.sort; };\n\t\t\tresult = StringConverter.convertAddressToStringByField(address, format, fieldSorter, contentType);\n\t\t}\n\t\telse if (strategyType === StringConverter.STRATEGY_TYPE_FIELD_TYPE)\n\t\t{\n\t\t\tconst fieldSorter = (a, b) => {\n\t\t\t\tlet sortResult;\n\n\t\t\t\t// We suggest that UNKNOWN must be the last\n\t\t\t\tif (a.type === 0)\n\t\t\t\t{\n\t\t\t\t\tsortResult = 1;\n\t\t\t\t}\n\t\t\t\telse if (b.type === 0)\n\t\t\t\t{\n\t\t\t\t\tsortResult = -1;\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tsortResult = a.type - b.type;\n\t\t\t\t}\n\n\t\t\t\treturn sortResult;\n\t\t\t};\n\n\t\t\tresult = StringConverter.convertAddressToStringByField(address, format, fieldSorter, contentType);\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthrow TypeError('Wrong strategyType');\n\t\t}\n\n\t\treturn result;\n\t}\n\n\t/**\n\t * Convert address to string\n\t * @param {Address} address\n\t * @param {string} template\n\t * @param {string} contentType\n\t * @param {string|null} delimiter\n\t * @param {Format|null} format\n\t * @returns {string}\n\t */\n\tstatic convertAddressToStringTemplate(\n\t\taddress: Address,\n\t\ttemplate: Template,\n\t\tcontentType: string,\n\t\tdelimiter: string = null,\n\t\tformat: Format = null\n\t): string\n\t{\n\t\tconst needHtmlEncode = (contentType === StringConverter.CONTENT_TYPE_HTML);\n\n\t\tif (delimiter === null)\n\t\t{\n\t\t\tdelimiter = needHtmlEncode ? '<br />' : '\\n';\n\t\t}\n\n\t\tconst templateConverter = new StringTemplateConverter(template.template, delimiter, needHtmlEncode, format);\n\t\treturn templateConverter.convert(address);\n\t}\n\n\t/**\n\t * Convert address to string\n\t * @param {Address} address\n\t * @param {Format} format\n\t * @param {Function} fieldSorter\n\t * @param {string} contentType\n\t * @returns {string}\n\t */\n\tstatic convertAddressToStringByField(\n\t\taddress: Address,\n\t\tformat: Format,\n\t\tfieldSorter: Function,\n\t\tcontentType: string\n\t): string\n\t{\n\t\tif (!(format instanceof Format))\n\t\t{\n\t\t\tBX.debug('format must be instance of Format');\n\t\t}\n\n\t\tif (!(address instanceof Address))\n\t\t{\n\t\t\tBX.debug('address must be instance of Address');\n\t\t}\n\n\t\tconst fieldCollection = format.fieldCollection;\n\n\t\tif (!fieldCollection)\n\t\t{\n\t\t\treturn '';\n\t\t}\n\n\t\tconst fields = Object.values(fieldCollection.fields);\n\n\t\t// todo: make only once or cache?\n\t\tfields.sort(fieldSorter);\n\n\t\tlet result = '';\n\n\t\tfor(const field of fields)\n\t\t{\n\t\t\tlet value = address.getFieldValue(field.type);\n\n\t\t\tif (value === null)\n\t\t\t{\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif (contentType === StringConverter.CONTENT_TYPE_HTML)\n\t\t\t{\n\t\t\t\tvalue = Text.encode(value);\n\t\t\t}\n\n\t\t\tif (result !== '')\n\t\t\t{\n\t\t\t\tresult += format.delimiter;\n\t\t\t}\n\n\t\t\tresult += value;\n\t\t}\n\n\t\treturn result;\n\t}\n}","import Address from '../../address';\nimport AddressFieldCollection from '../addressfieldcollection';\nimport AddressLinkCollection from '../addresslinkcollection';\n\nexport default class JsonConverter\n{\n\t/**\n\t * @param {Object} jsonData\n\t * @returns {Address}\n\t */\n\tstatic convertJsonToAddress(jsonData: Object): Address\n\t{\n\t\treturn new Address(jsonData);\n\t}\n\n\t/**\n\t * @param {Address} address\n\t * @returns {{languageId: string, location: ({\"'...'\"}|null), id: number, fieldCollection: {\"'...'\"}}} Json data\n\t */\n\tstatic convertAddressToJson(address: Address): Object\n\t{\n\t\tconst obj = {\n\t\t\tid: address.id,\n\t\t\tlanguageId: address.languageId,\n\t\t\tlatitude: address.latitude,\n\t\t\tlongitude: address.longitude,\n\t\t\tfieldCollection: JsonConverter.#objectifyFieldCollection(address.fieldCollection),\n\t\t\tlinks: JsonConverter.#objectifyLinks(address.links),\n\t\t\tlocation: null\n\t\t};\n\n\t\tif (address.location)\n\t\t{\n\t\t\tobj.location = JSON.parse(address.location.toJson());\n\t\t}\n\n\t\treturn JSON.stringify(obj);\n\t}\n\n\t/**\n\t * @param {AddressFieldCollection} fieldCollection\n\t * @returns {Object}\n\t */\n\tstatic #objectifyFieldCollection(fieldCollection: AddressFieldCollection): Object\n\t{\n\t\tconst result = {};\n\n\t\tObject.values(fieldCollection.fields).forEach((field) => {\n\t\t\tresult[field.type] = field.value;\n\t\t});\n\n\t\treturn result;\n\t}\n\n\tstatic #objectifyLinks(links: AddressLinkCollection): Array<{entityId: string, entityType: string}>\n\t{\n\t\treturn links.map((link) => {\n\t\t\treturn {\n\t\t\t\tentityId: link.entityId,\n\t\t\t\tentityType: link.entityType\n\t\t\t};\n\t\t});\n\t}\n}","import {Type} from 'main.core';\nimport AddressFieldCollection from './address/addressfieldcollection';\nimport AddressLinkCollection from './address/addresslinkcollection';\nimport AddressLink from './address/addresslink';\nimport StringConverter from './address/converter/stringconverter';\nimport Format from './format';\nimport JsonConverter from './address/converter/jsonconverter';\nimport Location from './location';\n\nexport default class Address\n{\n\t#id;\n\t#languageId;\n\t#latitude;\n\t#longitude;\n\n\t#fieldCollection;\n\t#links;\n\n\t#location;\n\n\t/**\n\t * @param {{...}} props\n\t */\n\tconstructor(props)\n\t{\n\t\tif(Type.isUndefined(props.languageId))\n\t\t{\n\t\t\tthrow new TypeError('languageId must be defined');\n\t\t}\n\n\t\tthis.#languageId = props.languageId;\n\n\t\tthis.#id = props.id || 0;\n\t\tthis.#latitude = props.latitude || '';\n\t\tthis.#longitude = props.longitude || '';\n\t\tthis.#fieldCollection = new AddressFieldCollection();\n\n\t\tif(Type.isObject(props.fieldCollection))\n\t\t{\n\t\t\tfor(const [type, value] of Object.entries(props.fieldCollection))\n\t\t\t{\n\t\t\t\tthis.setFieldValue(type, value);\n\t\t\t}\n\t\t}\n\n\t\tthis.#links = new AddressLinkCollection();\n\n\t\tif(Type.isArray(props.links))\n\t\t{\n\t\t\tfor(const link of props.links)\n\t\t\t{\n\t\t\t\tthis.addLink(link.entityId, link.entityType);\n\t\t\t}\n\t\t}\n\n\t\tthis.#location = null;\n\n\t\tif(props.location)\n\t\t{\n\t\t\tif(props.location instanceof Location)\n\t\t\t{\n\t\t\t\tthis.#location = props.location;\n\t\t\t}\n\t\t\telse if(Type.isObject(props.location))\n\t\t\t{\n\t\t\t\tthis.#location = new Location(props.location);\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tBX.debug('Wrong typeof props.location');\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * @returns {int}\n\t */\n\tget id(): number\n\t{\n\t\treturn this.#id;\n\t}\n\n\t/**\n\t * @returns {Location}\n\t */\n\tget location(): ?Location\n\t{\n\t\treturn this.#location;\n\t}\n\n\t/**\n\t * @returns {string}\n\t */\n\tget languageId(): string\n\t{\n\t\treturn this.#languageId;\n\t}\n\n\t/**\n\t * @returns {AddressFieldCollection}\n\t */\n\tget fieldCollection(): AddressFieldCollection\n\t{\n\t\treturn this.#fieldCollection;\n\t}\n\n\t/**\n\t * @param {int} id\n\t */\n\tset id(id: number)\n\t{\n\t\tthis.#id = id;\n\t}\n\n\t/**\n\t * @param {Location} location\n\t */\n\tset location(location: ?Location)\n\t{\n\t\tthis.#location = location;\n\t}\n\n\t/**\n\t * @returns {string}\n\t */\n\tget latitude(): string\n\t{\n\t\treturn this.#latitude;\n\t}\n\n\t/**\n\t * @param {string} latitude\n\t */\n\tset latitude(latitude: string): void\n\t{\n\t\tthis.#latitude = latitude;\n\t}\n\n\t/**\n\t * @returns {string}\n\t */\n\tget longitude(): string\n\t{\n\t\treturn this.#longitude;\n\t}\n\n\t/**\n\t * @param {string} longitude\n\t */\n\tset longitude(longitude: string): void\n\t{\n\t\tthis.#longitude = longitude;\n\t}\n\n\t/**\n\t * @returns {AddressLinkCollection}\n\t */\n\tget links(): AddressLinkCollection\n\t{\n\t\treturn this.#links.links;\n\t}\n\n\t/**\n\t * @param {number} type\n\t * @param {mixed} value\n\t */\n\tsetFieldValue(type: number, value: string): void\n\t{\n\t\tthis.#fieldCollection.setFieldValue(type, value);\n\t}\n\n\t/**\n\t * @param {number} type\n\t * @returns {?string}\n\t */\n\tgetFieldValue(type: number): ?string\n\t{\n\t\treturn this.#fieldCollection.getFieldValue(type);\n\t}\n\n\t/**\n\t * Check if field exist\n\t * @param type\n\t * @returns {boolean}\n\t */\n\tisFieldExists(type: number): boolean\n\t{\n\t\treturn this.#fieldCollection.isFieldExists(type);\n\t}\n\n\t/**\n\t * @return {string} JSON\n\t */\n\ttoJson(): string\n\t{\n\t\treturn JsonConverter.convertAddressToJson(this);\n\t}\n\n\t/**\n\t * @param {Format}format\n\t * @param {?string}strategyType\n\t * @param {?string}contentType\n\t * @return {string}\n\t */\n\ttoString(format: Format, strategyType: ?string, contentType: ?string): string\n\t{\n\t\tif(!(format instanceof Format))\n\t\t{\n\t\t\tconsole.error('format must be instance of Format');\n\t\t\treturn '';\n\t\t}\n\n\t\tconst strategy = strategyType || StringConverter.STRATEGY_TYPE_TEMPLATE;\n\t\tconst type = contentType || StringConverter.CONTENT_TYPE_HTML;\n\t\treturn StringConverter.convertAddressToString(this, format, strategy, type);\n\t}\n\n\t/**\n\t * @returns {?Location}\n\t */\n\ttoLocation(): ?Location\n\t{\n\t\tlet result = null;\n\n\t\tif(this.location)\n\t\t{\n\t\t\tconst locationObj = JSON.parse(this.location.toJson());\n\t\t\tlocationObj.address = JSON.parse(this.toJson());\n\t\t\tresult = new Location(locationObj);\n\t\t}\n\n\t\treturn result;\n\t}\n\n\t/**\n\t * @return {number}\n\t */\n\tgetType(): number\n\t{\n\t\treturn this.#fieldCollection.getMaxFieldType();\n\t}\n\n\t/**\n\t * @param {string} entityId\n\t * @param {string} entityType\n\t */\n\taddLink(entityId: number, entityType: string): void\n\t{\n\t\tthis.#links.addLink(new AddressLink({\n\t\t\tentityId: entityId,\n\t\t\tentityType: entityType\n\t\t}));\n\t}\n\n\tclearLinks(): void\n\t{\n\t\tthis.#links.clearLinks();\n\t}\n}","import Field from '../generic/field';\n\nexport default class LocationField extends Field\n{\n\t#value;\n\n\t// todo: Fields validation\n\tconstructor(props)\n\t{\n\t\tsuper(props);\n\t\tthis.#value = props.value || '';\n\t}\n\n\tget value(): string\n\t{\n\t\treturn this.#value;\n\t}\n\n\tset value(value: string)\n\t{\n\t\tthis.#value = value;\n\t}\n}","import FieldCollection from '../generic/fieldcollection';\nimport LocationField from './locationfield';\n\nexport default class LocationFieldCollection extends FieldCollection\n{\n\tgetFieldValue(type)\n\t{\n\t\tlet result = null;\n\n\t\tif(this.isFieldExists(type))\n\t\t{\n\t\t\tconst field = this.getField(type);\n\n\t\t\tif(field)\n\t\t\t{\n\t\t\t\tresult = field.value;\n\t\t\t}\n\t\t}\n\n\t\treturn result;\n\t}\n\n\tsetFieldValue(type, value)\n\t{\n\t\tthis.setField(\n\t\t\tnew LocationField({type, value})\n\t\t);\n\n\t\treturn this;\n\t}\n}","import Location from '../location';\nimport LocationFieldCollection from './locationfieldcollection';\n\nexport default class LocationObjectConverter\n{\n\tstatic convertLocationToObject(location: Location): Object\n\t{\n\t\tif(!(location instanceof Location))\n\t\t{\n\t\t\tthrow new TypeError('location must be type of location');\n\t\t}\n\n\t\tconst obj = {\n\t\t\tid: location.id,\n\t\t\tcode: location.code,\n\t\t\texternalId: location.externalId,\n\t\t\tsourceCode: location.sourceCode,\n\t\t\ttype: location.type,\n\t\t\tname: location.name,\n\t\t\tlanguageId: location.languageId,\n\t\t\tlatitude: location.latitude,\n\t\t\tlongitude: location.longitude,\n\t\t\tfieldCollection: LocationObjectConverter.#objectifyFieldCollection(location.fieldCollection),\n\t\t\taddress: null\n\t\t};\n\n\t\tif(location.address)\n\t\t{\n\t\t\tobj.address = JSON.parse(location.address.toJson());\n\t\t}\n\n\t\treturn obj;\n\t}\n\n\tstatic #objectifyFieldCollection(fieldCollection: LocationObjectConverter): Object\n\t{\n\t\tlet result = {};\n\n\t\tObject.values(fieldCollection.fields).forEach((field) => {\n\t\t\tresult[field.type] = field.value;\n\t\t});\n\n\t\treturn result;\n\t}\n}","import Location from '../location';\nimport Address from '../address';\nimport LocationObjectConverter from './locationobjectconverter';\n\nexport default class LocationJsonConverter\n{\n\t/**\n\t * @param {{...}}jsonData\n\t * @returns {Location}\n\t */\n\tstatic convertJsonToLocation(jsonData)\n\t{\n\t\tconst initData = {...jsonData};\n\n\t\tif(jsonData.address)\n\t\t{\n\t\t\tinitData.address = new Address(jsonData.address);\n\t\t}\n\n\t\treturn new Location(initData);\n\t}\n\n\t/**\n\t * @param {Location} location\n\t * @returns {{...}}\n\t */\n\tstatic convertLocationToJson(location: Location)\n\t{\n\t\tif(!(location instanceof Location))\n\t\t{\n\t\t\tthrow new TypeError('location must be type of location');\n\t\t}\n\n\t\tconst obj = LocationObjectConverter.convertLocationToObject(location);\n\t\treturn obj ? JSON.stringify(obj) : '';\n\t}\n}","import {Type} from 'main.core';\nimport Address from './address';\nimport LocationJsonConverter from './location/locationjsonconverter';\nimport LocationFieldCollection from './location/locationfieldcollection';\n\nexport default class Location\n{\n\t#id;\n\t#code;\n\t#externalId;\n\t#sourceCode;\n\t#type;\n\t#name;\n\t#languageId;\n\t#latitude;\n\t#longitude;\n\t#address;\n\t#fieldCollection;\n\n\tconstructor(props = {})\n\t{\n\t\tthis.#id = parseInt(props.id) || 0;\n\t\tthis.#code = props.code || '';\n\t\tthis.#externalId = props.externalId || '';\n\t\tthis.#sourceCode = props.sourceCode || '';\n\t\tthis.#type = parseInt(props.type) || 0;\n\t\tthis.#name = props.name || '';\n\t\tthis.#languageId = props.languageId || '';\n\t\tthis.#latitude = props.latitude || '';\n\t\tthis.#longitude = props.longitude || '';\n\t\tthis.#fieldCollection = new LocationFieldCollection();\n\n\t\tif(Type.isObject(props.fieldCollection))\n\t\t{\n\t\t\tfor(const [type, value] of Object.entries(props.fieldCollection))\n\t\t\t{\n\t\t\t\tthis.setFieldValue(type, value);\n\t\t\t}\n\t\t}\n\n\t\tthis.#address = null;\n\n\t\tif(props.address)\n\t\t{\n\t\t\tif(props.address instanceof Address)\n\t\t\t{\n\t\t\t\tthis.#address = props.address;\n\t\t\t}\n\t\t\telse if(typeof props.address === 'object')\n\t\t\t{\n\t\t\t\tthis.#address = new Address(props.address);\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tBX.debug('Wrong typeof props.address');\n\t\t\t}\n\t\t}\n\t}\n\n\tget id(): number\n\t{\n\t\treturn this.#id;\n\t}\n\n\tget code(): string\n\t{\n\t\treturn this.#code;\n\t}\n\n\tget externalId(): string\n\t{\n\t\treturn this.#externalId;\n\t}\n\n\tget sourceCode(): string\n\t{\n\t\treturn this.#sourceCode;\n\t}\n\n\tget type(): number\n\t{\n\t\treturn this.#type;\n\t}\n\n\tget name(): string\n\t{\n\t\treturn this.#name;\n\t}\n\n\tget languageId(): string\n\t{\n\t\treturn this.#languageId;\n\t}\n\n\tset id(value: number): void\n\t{\n\t\tthis.#id = value;\n\t}\n\n\tset code(code: string): void\n\t{\n\t\tthis.#code = code;\n\t}\n\n\tset externalId(value: string): void\n\t{\n\t\tthis.#externalId = value;\n\t}\n\n\tset sourceCode(value: string): void\n\t{\n\t\tthis.#sourceCode = value;\n\t}\n\n\tset type(value: number): void\n\t{\n\t\tthis.#type = value;\n\t}\n\n\tset name(value: string): void\n\t{\n\t\tthis.#name = value;\n\t}\n\n\tset languageId(value: string): void\n\t{\n\t\tthis.#languageId = value;\n\t}\n\n\tget latitude(): string\n\t{\n\t\treturn this.#latitude;\n\t}\n\n\tset latitude(latitude: string): void\n\t{\n\t\tthis.#latitude = latitude;\n\t}\n\n\tget longitude(): string\n\t{\n\t\treturn this.#longitude;\n\t}\n\n\tset longitude(longitude: string): void\n\t{\n\t\tthis.#longitude = longitude;\n\t}\n\n\tset address(address: Address): void\n\t{\n\t\tthis.#address = address;\n\t}\n\n\tget address(): ?Address\n\t{\n\t\treturn this.#address;\n\t}\n\n\ttoJson(): string\n\t{\n\t\treturn LocationJsonConverter.convertLocationToJson(this);\n\t}\n\n\ttoAddress(): ?Address\n\t{\n\t\tlet result = null;\n\n\t\tif(this.address)\n\t\t{\n\t\t\tconst addressObj = JSON.parse(this.address.toJson());\n\t\t\taddressObj.location = JSON.parse(this.toJson());\n\t\t\tresult = new Address(addressObj);\n\t\t}\n\n\t\treturn result;\n\t}\n\n\tget fieldCollection(): LocationFieldCollection\n\t{\n\t\treturn this.#fieldCollection;\n\t}\n\n\tsetFieldValue(type: number, value: string): void\n\t{\n\t\tthis.#fieldCollection.setFieldValue(type, value);\n\t}\n\n\tgetFieldValue(type: number): ?string\n\t{\n\t\treturn this.#fieldCollection.getFieldValue(type);\n\t}\n\n\tisFieldExists(type: number): boolean\n\t{\n\t\treturn this.#fieldCollection.isFieldExists(type);\n\t}\n\n\thasExternalRelation(): boolean\n\t{\n\t\treturn (this.#externalId && this.#sourceCode);\n\t}\n}","export default class ActionRunner\n{\n\t#path = '';\n\n\tconstructor(props)\n\t{\n\t\tif(!props.path)\n\t\t{\n\t\t\tthrow new Error('props.path must not be empty!');\n\t\t}\n\n\t\tthis.#path = props.path;\n\t}\n\n\trun(action, data)\n\t{\n\t\tif(!action)\n\t\t{\n\t\t\tthrow new Error('action can not be empty!');\n\t\t}\n\n\t\treturn BX.ajax.runAction(`${this.#path}.${action}`, {data});\n\t}\n}","import ActionRunner from './actionrunner';\n\nexport default class BaseRepository\n{\n\t#actionRunner = null;\n\n\tconstructor(props = {})\n\t{\n\t\tthis._path = props.path;\n\n\t\tif(props.actionRunner && props.actionRunner instanceof ActionRunner)\n\t\t{\n\t\t\tthis.#actionRunner = props.actionRunner;\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis.#actionRunner = new ActionRunner({path: this._path});\n\t\t}\n\t}\n\n\tget path()\n\t{\n\t\treturn this._path;\n\t}\n\n\tget actionRunner()\n\t{\n\t\treturn this.#actionRunner;\n\t}\n\n\tprocessResponse(response: Object)\n\t{\n\t\tif(response.status !== 'success')\n\t\t{\n\t\t\tBX.debug('Request was not successful');\n\t\t\tlet message = '';\n\n\t\t\tif(Array.isArray(response.errors) && response.errors.length > 0)\n\t\t\t{\n\t\t\t\tfor(const error of response.errors)\n\t\t\t\t{\n\t\t\t\t\tif(typeof error.message === 'string' && error.message !== '')\n\t\t\t\t\t{\n\t\t\t\t\t\tmessage += `${error}\\n`;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tthrow new Error(message);\n\t\t}\n\n\t\treturn response.data ? response.data : null;\n\t}\n}","import BaseRepository from './baserepository';\nimport LocationJsonConverter from '../entity/location/locationjsonconverter';\nimport Location from '../entity/location';\nimport Address from '../entity/address';\nimport LocationObjectConverter from '../entity/location/locationobjectconverter';\n\nexport default class LocationRepository extends BaseRepository\n{\n\tconstructor(props = {})\n\t{\n\t\tprops.path = props.path || 'location.api.location';\n\t\tsuper(props);\n\t}\n\n\tfindParents(location: Location): Promise\n\t{\n\t\tif(!(location instanceof Location))\n\t\t{\n\t\t\tthrow new TypeError('location must be type of Location');\n\t\t}\n\n\t\treturn this.actionRunner.run(\n\t\t\t'findParents',\n\t\t\t{\n\t\t\t\tlocation: LocationObjectConverter.convertLocationToObject(location)\n\t\t\t})\n\t\t\t.then(this.processResponse.bind(this))\n\t\t\t.then(this.#convertCollection.bind(this));\n\t}\n\n\tfindByExternalId(externalId: string, sourceCode: string, languageId: string): Promise\n\t{\n\t\tif(!externalId || !sourceCode || !languageId)\n\t\t{\n\t\t\tthrow new Error('externalId and sourceCode and languageId must be defined');\n\t\t}\n\n\t\treturn this.actionRunner.run(\n\t\t\t'findByExternalId',\n\t\t\t{\n\t\t\t\texternalId: externalId,\n\t\t\t\tsourceCode: sourceCode,\n\t\t\t\tlanguageId: languageId\n\t\t\t})\n\t\t\t.then(this.processResponse.bind(this))\n\t\t\t.then(this.#convertLocation.bind(this));\n\t}\n\n\tfindById(locationId: number, languageId: string)\n\t{\n\t\tif(!locationId || !languageId)\n\t\t{\n\t\t\tthrow new Error('locationId and languageId must be defined');\n\t\t}\n\n\t\treturn this.actionRunner.run(\n\t\t\t'findById',\n\t\t\t{\n\t\t\t\tid: locationId,\n\t\t\t\tlanguageId: languageId\n\t\t\t})\n\t\t\t.then(this.processResponse.bind(this))\n\t\t\t.then(this.#convertLocation.bind(this));\n\t}\n\n\t#convertCollection(collectionJsonData: Array): Array<Location>\n\t{\n\t\tif(!Array.isArray(collectionJsonData))\n\t\t{\n\t\t\tthrow new Error('Can\\'t convert location collection data');\n\t\t}\n\n\t\tconst result = [];\n\n\t\tcollectionJsonData.forEach((location) => {\n\t\t\tresult.push(\n\t\t\t\tthis.#convertLocation(location)\n\t\t\t);\n\t\t});\n\n\t\treturn result;\n\t}\n\n\t#convertLocation(locationData)\n\t{\n\t\tif(!locationData)\n\t\t{\n\t\t\treturn null;\n\t\t}\n\n\t\tif(typeof locationData !== 'object')\n\t\t{\n\t\t\tthrow new Error('Can\\'t convert location data');\n\t\t}\n\n\t\treturn LocationJsonConverter.convertJsonToLocation(locationData);\n\t}\n}","import {Address} from 'location.core';\nimport BaseRepository from './baserepository';\n\nexport default class AddressRepository extends BaseRepository\n{\n\tconstructor(props = {})\n\t{\n\t\tprops.path = 'location.api.address';\n\t\tsuper(props);\n\t}\n\n\tfindById(addressId: number)\n\t{\n\t\tif(addressId <= 0)\n\t\t{\n\t\t\tthrow new Error('addressId must be more than zero');\n\t\t}\n\n\t\treturn this.actionRunner.run(\n\t\t\t'findById',\n\t\t\t{\n\t\t\t\taddressId: addressId,\n\t\t\t})\n\t\t\t.then(this.processResponse)\n\t\t\t.then((address) => { // address json data or null\n\t\t\t\tlet result = null;\n\n\t\t\t\tif(address)\n\t\t\t\t{\n\t\t\t\t\tresult = this.convertJsonToAddress(address);\n\t\t\t\t}\n\n\t\t\t\treturn result;\n\t\t});\n\t}\n\n\tsave(address)\n\t{\n\t\tif(!address)\n\t\t{\n\t\t\tthrow new Error('address must be defined');\n\t\t}\n\n\t\treturn this.actionRunner.run(\n\t\t\t'save',\n\t\t\t{\n\t\t\t\taddress: address,\n\t\t\t})\n\t\t\t.then(this.processResponse)\n\t\t\t.then((response) => {\t//Address json data\n\t\t\t\tlet result = null;\n\n\t\t\t\tif(typeof response === 'object')\n\t\t\t\t{\n\t\t\t\t\tresult = this.convertJsonToAddress(response);\n\t\t\t\t}\n\n\t\t\t\treturn result;\n\t\t\t});\n\t}\n\n\tconvertJsonToAddress(jsonData)\n\t{\n\t\treturn new Address(jsonData);\n\t}\n}\n\n","import BaseRepository from \"./baserepository\";\nimport Format from \"../entity/format\";\nimport {Type} from \"main.core\";\n\n/**\n * Class responsible for the addresses format obtaining.\n */\nexport default class FormatRepository extends BaseRepository\n{\n\tconstructor(props = {}) {\n\t\tprops.path = 'location.api.format';\n\t\tsuper(props);\n\t}\n\n\t/**\n\t * Find all available formats\n\t * @param {string} languageId\n\t * @returns {Promise}\n\t */\n\tfindAll(languageId: string): Promise\n\t{\n\t\tif(!Type.isString(languageId))\n\t\t{\n\t\t\tthrow new TypeError('languageId must be type of string');\n\t\t}\n\n\t\treturn this.actionRunner.run(\n\t\t\t'findAll',\n\t\t\t{\n\t\t\t\tlanguageId: languageId\n\t\t\t})\n\t\t\t.then(this.processResponse)\n\t\t\t.then(\n\t\t\t\t(data) => this.convertFormatCollection(data)\n\t\t\t);\n\t}\n\n\t/**\n\t * Find address format by its code\n\t * @param {string} formatCode\n\t * @param {string} languageId\n\t * @returns {Promise}\n\t */\n\tfindByCode(formatCode: string, languageId: string): Promise\n\t{\n\t\tif(!Type.isString(formatCode))\n\t\t{\n\t\t\tthrow new TypeError('formatCode must be type of string');\n\t\t}\n\n\t\tif(!Type.isString(languageId))\n\t\t{\n\t\t\tthrow new TypeError('languageId must be type of string');\n\t\t}\n\n\t\treturn this.actionRunner.run(\n\t\t\t'findByCode',\n\t\t\t{\n\t\t\t\tformatCode: formatCode,\n\t\t\t\tlanguageId: languageId\n\t\t\t})\n\t\t\t.then(this.processResponse)\n\t\t\t.then(this.convertFormatData);\n\t}\n\n\t/**\n\t * Find default address format\n\t * @param {string} languageId\n\t * @returns {Promise}\n\t */\n\tfindDefault(languageId: string): Promise\n\t{\n\t\tif(!Type.isString(languageId))\n\t\t{\n\t\t\tthrow new TypeError('languageId must be type of string');\n\t\t}\n\n\t\treturn this.actionRunner.run(\n\t\t\t'findDefault',\n\t\t\t{\n\t\t\t\tlanguageId: languageId\n\t\t\t})\n\t\t\t.then(this.processResponse)\n\t\t\t.then(this.convertFormatData);\n\t}\n\n\tconvertFormatCollection(formatDataCollection: Array): Array<Format>\n\t{\n\t\tif(!Type.isArray(formatDataCollection))\n\t\t{\n\t\t\tthrow new TypeError('Can\\'t convert format collection data');\n\t\t}\n\n\t\tlet result = [];\n\n\t\tformatDataCollection.forEach((format) => {\n\t\t\tresult.push(\n\t\t\t\tthis.convertFormatData(format)\n\t\t\t);\n\t\t});\n\t\t\n\t\treturn result;\n\t}\n\n\tconvertFormatData(formatData: {}): Format\n\t{\n\t\tif(!Type.isObject(formatData))\n\t\t{\n\t\t\tthrow new TypeError('Can\\'t convert format data');\n\t\t}\n\n\t\treturn new Format(formatData);\n\t}\n}\n","import BaseRepository from './baserepository';\n\nexport default class SourceRepository extends BaseRepository\n{\n\tconstructor(props = {}) {\n\t\tprops.path = 'location.api.source';\n\t\tsuper(props);\n\t}\n\n\tgetProps(): Promise\n\t{\n\t\treturn this.actionRunner.run('getProps', {})\n\t\t\t.then(this.processResponse);\n\t}\n}\n","// @flow\n\nimport {Location, Point} from 'location.core';\n\n/**\n * Autocomplete search parameters\n */\nexport type AutocompleteServiceParams = {\n\tbiasPoint: ?Point\n};\n\n/**\n * Base class for the source autocomplete services.\n */\nexport class AutocompleteServiceBase {\n\t/**\n\t * @param {String} text\n\t * @param {AutocompleteServiceParams} params\n\t */\n\t// eslint-disable-next-line no-unused-vars\n\tautocomplete(text: string, params: AutocompleteServiceParams): Promise<Array<Location>, Error> {\n\t\tthrow new Error('Method autocomplete() Must be implemented');\n\t}\n}\n","import {Location} from 'location.core';\n\nexport type BasePhotoServiceRequestPhotosPropsType = {\n\tlocation: Location,\n\tthumbnailHeight: number,\n\tthumbnailWidth: number,\n\tmaxPhotoCount: number\n}\n\nexport default class PhotoServiceBase\n{\n\trequestPhotos(props: BasePhotoServiceRequestPhotosPropsType): Promise\n\t{\n\t\tthrow new Error('Must be implemented');\n\t}\n}","import {EventEmitter} from 'main.core.events';\nimport {Location} from 'location.core';\n\n/**\n * Base class for source maps\n */\nexport default class MapBase extends EventEmitter\n{\n\tconstructor()\n\t{\n\t\tsuper();\n\t\tthis.setEventNamespace('BX.Location.Core.MapBase');\n\t}\n\n\trender(props: object): void\n\t{\n\t\tthrow new Error('Must be implemented');\n\t}\n\n\tset location(location: Location): void\n\t{\n\t\tthrow new Error('Must be implemented');\n\t}\n\n\tset mode(mode: string): void\n\t{\n\t\tthrow new Error('Must be implemented');\n\t}\n\n\tset zoom(zoom: number): void\n\t{\n\t\tthrow new Error('Must be implemented');\n\t}\n\n\tonLocationChangedEventSubscribe(listener: function): void\n\t{\n\t\tthrow new Error('Must be implemented');\n\t}\n\n\tonMapShow()\n\t{\n\n\t}\n\n\tdestroy()\n\t{\n\n\t}\n}","import AutocompleteServiceBase from \"./autocompleteservicebase\";\nimport PhotoServiceBase from \"./photoservicebase\";\nimport MapBase from \"./mapbase\";\n\n/**\n * Base class for the sources\n */\nexport default class SourceBase\n{\n\tget sourceCode(): string\n\t{\n\t\tthrow new Error('Must be implemented');\n\t}\n\n\tget map(): MapBase\n\t{\n\t\tthrow new Error('Must be implemented');\n\t}\n\n\tget autocompleteService(): AutocompleteServiceBase\n\t{\n\t\tthrow new Error('Must be implemented');\n\t}\n\n\tget photoService(): PhotoServiceBase\n\t{\n\t\tthrow new Error('Must be implemented');\n\t}\n\n\tget geocodingService()\n\t{\n\t\tthrow new Error('Must be implemented');\n\t}\n}","import {Location} from 'location.core';\n\n/**\n * Base class for the source geocoding service\n */\nexport default class GeocodingServiceBase\n{\n\tgeocode(addressString: string): Promise<Array<Location>, Error>\n\t{\n\t\tif(!addressString)\n\t\t{\n\t\t\treturn Promise.resolve([]);\n\t\t}\n\n\t\treturn this.geocodeConcrete(addressString);\n\t}\n\n\tgeocodeConcrete(addressString: string): Promise<Array<Location>, Error>\n\t{\n\t\tthrow new Error('Method geocodeConcrete() must be implemented');\n\t}\n}","export default class ControlMode\n{\n\tstatic get edit()\n\t{\n\t\treturn 'edit';\n\t}\n\n\tstatic get view()\n\t{\n\t\treturn 'view';\n\t}\n\n\tstatic isValid(mode: string)\n\t{\n\t\treturn mode === ControlMode.edit || mode === ControlMode.view;\n\t}\n}","export default class LocationFieldType\n{\n\tstatic POSTAL_CODE = 50;\n\tstatic ISO_3166_1_ALPHA_2 = 1000;\n}","export class SourceCreationError extends Error\n{\n}\n\nexport class MethodNotImplemented extends Error\n{\n}\n","import {EventEmitter} from 'main.core.events';\n\nexport default class ErrorPublisher extends EventEmitter\n{\n\tstatic #instance = null;\n\tstatic #onErrorEvent = 'onError';\n\n\tstatic getInstance()\n\t{\n\t\tif(ErrorPublisher.#instance === null)\n\t\t{\n\t\t\tErrorPublisher.#instance = new ErrorPublisher();\n\t\t}\n\n\t\treturn ErrorPublisher.#instance;\n\t}\n\n\tconstructor()\n\t{\n\t\tsuper();\n\t\tthis.setEventNamespace('BX.Location.Core.ErrorPublisher');\n\t}\n\n\tnotify(errors: Error[])\n\t{\n\t\tthis.emit(ErrorPublisher.#onErrorEvent, {errors});\n\t}\n\n\tsubscribe(listener)\n\t{\n\t\tsuper.subscribe(ErrorPublisher.#onErrorEvent, listener);\n\t}\n}","import JsonConverter from '../entity/address/converter/jsonconverter';\nimport Address from '../entity/address';\n\nexport default class Storage\n{\n\t#lastAddressLocalStorageKey = `bitrixLocationLastAddress`;\n\n\tstatic #instance = null;\n\n\tstatic getInstance()\n\t{\n\t\tif(Storage.#instance === null)\n\t\t{\n\t\t\tStorage.#instance = new Storage();\n\t\t}\n\n\t\treturn Storage.#instance;\n\t}\n\n\tset lastAddress(address: ?Address)\n\t{\n\t\tif (address)\n\t\t{\n\t\t\tBX.localStorage.set(this.#lastAddressLocalStorageKey, {'json': address.toJson()}, 86400 * 30);\n\t\t}\n\t}\n\tget lastAddress()\n\t{\n\t\tconst lastAddress = BX.localStorage.get(this.#lastAddressLocalStorageKey);\n\t\tif (lastAddress && lastAddress['json'])\n\t\t{\n\t\t\ttry\n\t\t\t{\n\t\t\t\treturn JsonConverter.convertJsonToAddress(JSON.parse(lastAddress['json']));\n\t\t\t}\n\t\t\tcatch(e) {}\n\t\t}\n\n\t\treturn null;\n\t}\n}\n","/**\n * Base class for the working with latitude and longitude\n */\nexport default class Point\n{\n\t/** {String} */\n\t#latitude;\n\t/** {String} */\n\t#longitude;\n\n\tconstructor(latitude: string, longitude: string)\n\t{\n\t\tthis.#latitude = latitude;\n\t\tthis.#longitude = longitude;\n\t}\n\n\tget latitude(): string\n\t{\n\t\treturn this.#latitude;\n\t}\n\n\tget longitude(): string\n\t{\n\t\treturn this.#longitude;\n\t}\n\n\ttoArray(): Array\n\t{\n\t\treturn [this.latitude, this.longitude];\n\t}\n\n\tstatic fromJson(jsonData): Point\n\t{\n\t\treturn new Point(jsonData.latitude, jsonData.longitude);\n\t}\n}","export default class DistanceCalculator\n{\n\t/**\n\t * @param {number} lat1\n\t * @param {number} lon1\n\t * @param {number} lat2\n\t * @param {number} lon2\n\t * @returns {number}\n\t */\n\tstatic getDistanceFromLatLonInKm(lat1: number, lon1: number, lat2: number, lon2: number): number\n\t{\n\t\tconst R = 6371; // Radius of the earth in km\n\t\tconst dLat = DistanceCalculator.deg2rad(lat2 - lat1);\n\t\tconst dLon = DistanceCalculator.deg2rad(lon2 - lon1);\n\t\tconst a =\tMath.sin(dLat / 2) * Math.sin(dLat / 2)\n\t\t\t+ Math.cos(DistanceCalculator.deg2rad(lat1)) * Math.cos(DistanceCalculator.deg2rad(lat2))\n\t\t\t* Math.sin(dLon / 2) * Math.sin(dLon / 2);\n\n\t\tconst c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));\n\t\treturn R * c;\n\t}\n\n\t/**\n\t * @param {number} deg\n\t * @returns {number}\n\t */\n\tstatic deg2rad(deg: number): number\n\t{\n\t\treturn deg * (Math.PI / 180);\n\t}\n}\n"],"names":["Field","props","type","Error","parseInt","FieldCollection","fields","isFieldExists","field","types","Object","keys","sort","a","b","result","length","addressFieldCollection","upTo","areEqual","Array","isArray","setField","addressFieldCollection1","addressFieldCollection2","getField","value","AddressField","AddressFieldCollection","AddressLink","entityId","entityType","AddressLinkCollection","links","link","push","addLink","FormatField","name","description","FormatFieldCollection","fieldsData","forEach","data","LocationType","AddressType","FormatTemplate","template","FormatTemplateCollection","templateData","hasOwnProperty","setTemplate","isTemplateExists","FormatTemplateType","Format","Type","isUndefined","languageId","TypeError","code","templateAutocomplete","templateAddressLine1","delimiter","fieldForUnRecognized","UNKNOWN","fieldCollection","isObject","initFields","collection","templateCollection","DEFAULT","getTemplate","STR_DELIMITER_PLACEHOLDER","REGEX_COMMA_AMONG_EMPTY_SPACE","REGEX_GROUP_DELIMITER","REGEX_GROUP_FIELD_TEXT","REGEX_GROUP_FIELD_NAME","REGEX_GROUP_FIELD_LIST_END","REGEX_GROUP_END","REGEX_PART_FROM_DELIMITER_TO_FIELD_LIST","REGEX_GROUP_PART_BEFORE_FIELDS","ERR_PARSE_GROUP_START_POSITION","ERR_PARSE_GROUP_START","ERR_PARSE_GROUP_DELIMITER","ERR_PARSE_PART_FROM_DELIMITER_TO_FIELD_LIST","ERR_PARSE_GROUP_FIELD_TEXT","ERR_PARSE_GROUP_FIELD_NAME","ERR_PARSE_GROUP_FIELD","ERR_PARSE_GROUP_FIELD_LIST","ERR_PARSE_GROUP_FIELD_LIST_DELIMITER","ERR_PARSE_GROUP_FIELD_LIST_END","ERR_PARSE_GROUP_END","ERR_PARSE_GROUP","StringTemplateConverter","htmlEncode","format","context","errorCodes","getErrorCodes","errors","i","isPlainObject","errorInfo","needHeader","paramName","paramValue","needPrint","isString","isNumber","isFloat","isBoolean","templateValue","replace","clearContextError","clearContextInfo","text","delimiterStartPosition","regEx","RegExp","lastIndex","matches","exec","index","unescapeText","substr","addContextError","textBlockStartPosition","fieldName","parts","split","namePart","modifiersPart","address","fieldModifiers","getFieldValue","indexOf","toUpperCase","fieldNameStartPosition","fieldParts","splitFieldName","fieldValue","getAddressFieldValue","markerStartPosition","fieldInfo","fieldStartPosition","parseFieldText","unshiftError","clearContextInfoAndError","parseFieldName","parseGroup","parseFieldListDelimiter","parseFieldListEnd","addContextErrors","fieldListStartPosition","fieldValues","isFieldListEnd","parseField","startSearchPosition","groupStartPosition","delimiterValue","parseGroupStart","parseGroupDelimiter","parseGroupFieldList","parseGroupEnd","Set","join","reg","blocks","position","lastBlockIndex","lastBlock","info","unshift","splice","templateLength","blockStartPosition","blockLength","appendTextBlock","appendGroupBlock","createContext","parseBlocks","temp","Text","encode","templateConverter","convert","fieldType","localityValue","LOCALITY","localityValueUpper","targetValueUpper","targetValueSubstr","StringConverter","strategyType","contentType","STRATEGY_TYPE_TEMPLATE","STRATEGY_TYPE_TEMPLATE_COMMA","STRATEGY_TYPE_TEMPLATE_NL","STRATEGY_TYPE_TEMPLATE_BR","convertAddressToStringTemplate","STRATEGY_TYPE_FIELD_SORT","fieldSorter","convertAddressToStringByField","STRATEGY_TYPE_FIELD_TYPE","sortResult","needHtmlEncode","CONTENT_TYPE_HTML","BX","debug","Address","values","JsonConverter","jsonData","obj","id","latitude","longitude","location","JSON","parse","toJson","stringify","map","entries","setFieldValue","Location","convertAddressToJson","console","error","strategy","convertAddressToString","locationObj","getMaxFieldType","clearLinks","LocationField","LocationFieldCollection","LocationObjectConverter","externalId","sourceCode","LocationJsonConverter","initData","convertLocationToObject","convertLocationToJson","addressObj","ActionRunner","path","action","ajax","runAction","BaseRepository","_path","actionRunner","response","status","message","LocationRepository","run","then","processResponse","bind","_classPrivateMethodGet","locationId","collectionJsonData","locationData","convertJsonToLocation","AddressRepository","addressId","convertJsonToAddress","FormatRepository","convertFormatCollection","formatCode","convertFormatData","formatDataCollection","formatData","SourceRepository","AutocompleteServiceBase","params","PhotoServiceBase","MapBase","setEventNamespace","listener","mode","zoom","EventEmitter","SourceBase","GeocodingServiceBase","addressString","Promise","resolve","geocodeConcrete","ControlMode","edit","view","LocationFieldType","SourceCreationError","MethodNotImplemented","ErrorPublisher","emit","Storage","localStorage","set","lastAddress","get","e","_classStaticPrivateFieldSpecGet","Point","DistanceCalculator","lat1","lon1","lat2","lon2","R","dLat","deg2rad","dLon","Math","sin","cos","c","atan2","sqrt","deg","PI"],"mappings":"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"}