Current Path : /var/www/www-root/data/www/www.monolith-realty.ru/bitrix/js/location/core/dist/ |
Current File : /var/www/www-root/data/www/www.monolith-realty.ru/bitrix/js/location/core/dist/core.bundle.js |
this.BX = this.BX || {}; this.BX.Location = this.BX.Location || {}; (function (exports,main_core,main_md5,location_core,main_core_events) { 'use strict'; function _classPrivateFieldInitSpec(obj, privateMap, value) { _checkPrivateRedeclaration(obj, privateMap); privateMap.set(obj, value); } function _checkPrivateRedeclaration(obj, privateCollection) { if (privateCollection.has(obj)) { throw new TypeError("Cannot initialize the same private elements twice on an object"); } } var _type = /*#__PURE__*/new WeakMap(); var Field = /*#__PURE__*/function () { function Field(props) { babelHelpers.classCallCheck(this, Field); _classPrivateFieldInitSpec(this, _type, { writable: true, value: void 0 }); if (typeof props.type === 'undefined') { throw new Error('Field type must be defined'); } babelHelpers.classPrivateFieldSet(this, _type, parseInt(props.type)); } babelHelpers.createClass(Field, [{ key: "type", get: function get() { return babelHelpers.classPrivateFieldGet(this, _type); } }]); return Field; }(); function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; } function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; } function _classPrivateFieldInitSpec$1(obj, privateMap, value) { _checkPrivateRedeclaration$1(obj, privateMap); privateMap.set(obj, value); } function _checkPrivateRedeclaration$1(obj, privateCollection) { if (privateCollection.has(obj)) { throw new TypeError("Cannot initialize the same private elements twice on an object"); } } var _fields = /*#__PURE__*/new WeakMap(); var FieldCollection = /*#__PURE__*/function () { function FieldCollection() { var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; babelHelpers.classCallCheck(this, FieldCollection); _classPrivateFieldInitSpec$1(this, _fields, { writable: true, value: {} }); this.fields = props.fields ? props.fields : []; } babelHelpers.createClass(FieldCollection, [{ key: "isFieldExists", /** * Checks if field already exist in collection * @param {int} type * @returns {boolean} */ value: function isFieldExists(type) { return typeof babelHelpers.classPrivateFieldGet(this, _fields)[type] !== 'undefined'; } }, { key: "getField", value: function getField(type) { return this.isFieldExists(type) ? babelHelpers.classPrivateFieldGet(this, _fields)[type] : null; } }, { key: "setField", value: function setField(field) { if (!(field instanceof Field)) { throw new Error('Argument field must be instance of Field!'); } babelHelpers.classPrivateFieldGet(this, _fields)[field.type] = field; return this; } }, { key: "deleteField", value: function deleteField(type) { if (this.isFieldExists(type)) { delete babelHelpers.classPrivateFieldGet(this, _fields)[type]; } } }, { key: "getMaxFieldType", value: function getMaxFieldType() { var types = Object.keys(babelHelpers.classPrivateFieldGet(this, _fields)).sort(function (a, b) { return parseInt(a) - parseInt(b); }); var result = 0; if (types.length > 0) { result = types[types.length - 1]; } return result; } }, { key: "isEqual", value: function isEqual(addressFieldCollection, upTo) { return FieldCollection.areEqual(this, addressFieldCollection, upTo) && FieldCollection.areEqual(addressFieldCollection, this, upTo); } }, { key: "fields", set: function set(fields) { if (!Array.isArray(fields)) { throw new Error('Items must be array!'); } var _iterator = _createForOfIteratorHelper(fields), _step; try { for (_iterator.s(); !(_step = _iterator.n()).done;) { var field = _step.value; this.setField(field); } } catch (err) { _iterator.e(err); } finally { _iterator.f(); } return this; }, get: function get() { return babelHelpers.classPrivateFieldGet(this, _fields); } }], [{ key: "areEqual", value: function areEqual(addressFieldCollection1, addressFieldCollection2, upTo) { for (var type in addressFieldCollection1.fields) { if (type > upTo) { continue; } var field = addressFieldCollection2.getField(type); if (!field) { return false; } if (addressFieldCollection1.fields[type].value !== field.value) { return false; } } return true; } }]); return FieldCollection; }(); function _classPrivateFieldInitSpec$2(obj, privateMap, value) { _checkPrivateRedeclaration$2(obj, privateMap); privateMap.set(obj, value); } function _checkPrivateRedeclaration$2(obj, privateCollection) { if (privateCollection.has(obj)) { throw new TypeError("Cannot initialize the same private elements twice on an object"); } } var _value = /*#__PURE__*/new WeakMap(); var AddressField = /*#__PURE__*/function (_Field) { babelHelpers.inherits(AddressField, _Field); //todo: Fields validation function AddressField(props) { var _this; babelHelpers.classCallCheck(this, AddressField); _this = babelHelpers.possibleConstructorReturn(this, babelHelpers.getPrototypeOf(AddressField).call(this, props)); _classPrivateFieldInitSpec$2(babelHelpers.assertThisInitialized(_this), _value, { writable: true, value: void 0 }); babelHelpers.classPrivateFieldSet(babelHelpers.assertThisInitialized(_this), _value, props.value || ''); return _this; } babelHelpers.createClass(AddressField, [{ key: "value", get: function get() { return babelHelpers.classPrivateFieldGet(this, _value); }, set: function set(value) { babelHelpers.classPrivateFieldSet(this, _value, value); return this; } }]); return AddressField; }(Field); var AddressFieldCollection = /*#__PURE__*/function (_FieldCollection) { babelHelpers.inherits(AddressFieldCollection, _FieldCollection); function AddressFieldCollection() { babelHelpers.classCallCheck(this, AddressFieldCollection); return babelHelpers.possibleConstructorReturn(this, babelHelpers.getPrototypeOf(AddressFieldCollection).apply(this, arguments)); } babelHelpers.createClass(AddressFieldCollection, [{ key: "getFieldValue", value: function getFieldValue(type) { var result = null; if (this.isFieldExists(type)) { var field = this.getField(type); if (field) { result = field.value; } } return result; } }, { key: "setFieldValue", value: function setFieldValue(type, value) { this.setField(new AddressField({ type: type, value: value })); return this; } }]); return AddressFieldCollection; }(FieldCollection); function _classPrivateFieldInitSpec$3(obj, privateMap, value) { _checkPrivateRedeclaration$3(obj, privateMap); privateMap.set(obj, value); } function _checkPrivateRedeclaration$3(obj, privateCollection) { if (privateCollection.has(obj)) { throw new TypeError("Cannot initialize the same private elements twice on an object"); } } var _entityId = /*#__PURE__*/new WeakMap(); var _entityType = /*#__PURE__*/new WeakMap(); var AddressLink = /*#__PURE__*/function () { function AddressLink(props) { babelHelpers.classCallCheck(this, AddressLink); _classPrivateFieldInitSpec$3(this, _entityId, { writable: true, value: void 0 }); _classPrivateFieldInitSpec$3(this, _entityType, { writable: true, value: void 0 }); babelHelpers.classPrivateFieldSet(this, _entityId, props.entityId); babelHelpers.classPrivateFieldSet(this, _entityType, props.entityType); } babelHelpers.createClass(AddressLink, [{ key: "entityId", get: function get() { return babelHelpers.classPrivateFieldGet(this, _entityId); } }, { key: "entityType", get: function get() { return babelHelpers.classPrivateFieldGet(this, _entityType); } }]); return AddressLink; }(); function _createForOfIteratorHelper$1(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray$1(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; } function _unsupportedIterableToArray$1(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray$1(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray$1(o, minLen); } function _arrayLikeToArray$1(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; } function _classPrivateFieldInitSpec$4(obj, privateMap, value) { _checkPrivateRedeclaration$4(obj, privateMap); privateMap.set(obj, value); } function _checkPrivateRedeclaration$4(obj, privateCollection) { if (privateCollection.has(obj)) { throw new TypeError("Cannot initialize the same private elements twice on an object"); } } var _links = /*#__PURE__*/new WeakMap(); var AddressLinkCollection = /*#__PURE__*/function () { function AddressLinkCollection() { var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; babelHelpers.classCallCheck(this, AddressLinkCollection); _classPrivateFieldInitSpec$4(this, _links, { writable: true, value: [] }); this.links = !!props.links ? props.links : []; } babelHelpers.createClass(AddressLinkCollection, [{ key: "addLink", value: function addLink(link) { if (!(link instanceof AddressLink)) { throw new Error('Argument link must be instance of Field!'); } babelHelpers.classPrivateFieldGet(this, _links).push(link); } }, { key: "clearLinks", value: function clearLinks() { babelHelpers.classPrivateFieldSet(this, _links, []); } }, { key: "links", set: function set(links) { if (!Array.isArray(links)) { throw new Error('links must be array!'); } var _iterator = _createForOfIteratorHelper$1(links), _step; try { for (_iterator.s(); !(_step = _iterator.n()).done;) { var link = _step.value; this.addLink(link); } } catch (err) { _iterator.e(err); } finally { _iterator.f(); } }, get: function get() { return babelHelpers.classPrivateFieldGet(this, _links); } }]); return AddressLinkCollection; }(); function _classPrivateFieldInitSpec$5(obj, privateMap, value) { _checkPrivateRedeclaration$5(obj, privateMap); privateMap.set(obj, value); } function _checkPrivateRedeclaration$5(obj, privateCollection) { if (privateCollection.has(obj)) { throw new TypeError("Cannot initialize the same private elements twice on an object"); } } var _sort = /*#__PURE__*/new WeakMap(); var _name = /*#__PURE__*/new WeakMap(); var _description = /*#__PURE__*/new WeakMap(); var FormatField = /*#__PURE__*/function (_Field) { babelHelpers.inherits(FormatField, _Field); // todo: Fields validation function FormatField(props) { var _this; babelHelpers.classCallCheck(this, FormatField); _this = babelHelpers.possibleConstructorReturn(this, babelHelpers.getPrototypeOf(FormatField).call(this, props)); _classPrivateFieldInitSpec$5(babelHelpers.assertThisInitialized(_this), _sort, { writable: true, value: void 0 }); _classPrivateFieldInitSpec$5(babelHelpers.assertThisInitialized(_this), _name, { writable: true, value: void 0 }); _classPrivateFieldInitSpec$5(babelHelpers.assertThisInitialized(_this), _description, { writable: true, value: void 0 }); babelHelpers.classPrivateFieldSet(babelHelpers.assertThisInitialized(_this), _sort, parseInt(props.sort)); babelHelpers.classPrivateFieldSet(babelHelpers.assertThisInitialized(_this), _name, props.name || ''); babelHelpers.classPrivateFieldSet(babelHelpers.assertThisInitialized(_this), _description, props.description || ''); return _this; } babelHelpers.createClass(FormatField, [{ key: "sort", get: function get() { return babelHelpers.classPrivateFieldGet(this, _sort); }, set: function set(sort) { babelHelpers.classPrivateFieldSet(this, _sort, sort); } }, { key: "name", get: function get() { return babelHelpers.classPrivateFieldGet(this, _name); }, set: function set(name) { babelHelpers.classPrivateFieldSet(this, _name, name); } }, { key: "description", get: function get() { return babelHelpers.classPrivateFieldGet(this, _description); }, set: function set(description) { babelHelpers.classPrivateFieldSet(this, _description, description); } }]); return FormatField; }(Field); var FormatFieldCollection = /*#__PURE__*/function (_FieldCollection) { babelHelpers.inherits(FormatFieldCollection, _FieldCollection); function FormatFieldCollection() { babelHelpers.classCallCheck(this, FormatFieldCollection); return babelHelpers.possibleConstructorReturn(this, babelHelpers.getPrototypeOf(FormatFieldCollection).apply(this, arguments)); } babelHelpers.createClass(FormatFieldCollection, [{ key: "initFields", value: function initFields(fieldsData) { var _this = this; if (Array.isArray(fieldsData)) { fieldsData.forEach(function (data) { var field = new FormatField(data); if (field) { _this.setField(field); } }); } } }]); return FormatFieldCollection; }(FieldCollection); var LocationType = function LocationType() { babelHelpers.classCallCheck(this, LocationType); }; babelHelpers.defineProperty(LocationType, "UNKNOWN", 0); babelHelpers.defineProperty(LocationType, "COUNTRY", 100); babelHelpers.defineProperty(LocationType, "ADM_LEVEL_1", 200); babelHelpers.defineProperty(LocationType, "ADM_LEVEL_2", 210); babelHelpers.defineProperty(LocationType, "ADM_LEVEL_3", 220); babelHelpers.defineProperty(LocationType, "ADM_LEVEL_4", 230); babelHelpers.defineProperty(LocationType, "LOCALITY", 300); babelHelpers.defineProperty(LocationType, "SUB_LOCALITY", 310); babelHelpers.defineProperty(LocationType, "SUB_LOCALITY_LEVEL_1", 320); babelHelpers.defineProperty(LocationType, "SUB_LOCALITY_LEVEL_2", 330); babelHelpers.defineProperty(LocationType, "STREET", 340); babelHelpers.defineProperty(LocationType, "BUILDING", 400); babelHelpers.defineProperty(LocationType, "ADDRESS_LINE_1", 410); babelHelpers.defineProperty(LocationType, "FLOOR", 420); babelHelpers.defineProperty(LocationType, "ROOM", 430); babelHelpers.defineProperty(LocationType, "TMP_TYPE_HINT", 5010); babelHelpers.defineProperty(LocationType, "TMP_TYPE_CLARIFICATION", 5020); var AddressType = /*#__PURE__*/function (_LocationType) { babelHelpers.inherits(AddressType, _LocationType); function AddressType() { babelHelpers.classCallCheck(this, AddressType); return babelHelpers.possibleConstructorReturn(this, babelHelpers.getPrototypeOf(AddressType).apply(this, arguments)); } return AddressType; }(LocationType); babelHelpers.defineProperty(AddressType, "POSTAL_CODE", 50); babelHelpers.defineProperty(AddressType, "ADDRESS_LINE_2", 600); babelHelpers.defineProperty(AddressType, "RECIPIENT_COMPANY", 700); babelHelpers.defineProperty(AddressType, "RECIPIENT", 710); babelHelpers.defineProperty(AddressType, "PO_BOX", 800); var FormatTemplate = function FormatTemplate(type, template) { babelHelpers.classCallCheck(this, FormatTemplate); this.type = type; this.template = template; }; function _classPrivateFieldInitSpec$6(obj, privateMap, value) { _checkPrivateRedeclaration$6(obj, privateMap); privateMap.set(obj, value); } function _checkPrivateRedeclaration$6(obj, privateCollection) { if (privateCollection.has(obj)) { throw new TypeError("Cannot initialize the same private elements twice on an object"); } } var _templates = /*#__PURE__*/new WeakMap(); var FormatTemplateCollection = /*#__PURE__*/function () { function FormatTemplateCollection(templateData) { babelHelpers.classCallCheck(this, FormatTemplateCollection); _classPrivateFieldInitSpec$6(this, _templates, { writable: true, value: {} }); for (var type in templateData) { // eslint-disable-next-line no-prototype-builtins if (templateData.hasOwnProperty(type)) { this.setTemplate(new FormatTemplate(type, templateData[type])); } } } babelHelpers.createClass(FormatTemplateCollection, [{ key: "isTemplateExists", value: function isTemplateExists(type) { return typeof babelHelpers.classPrivateFieldGet(this, _templates)[type] !== 'undefined'; } }, { key: "getTemplate", value: function getTemplate(type) { return this.isTemplateExists(type) ? babelHelpers.classPrivateFieldGet(this, _templates)[type] : null; } }, { key: "setTemplate", value: function setTemplate(template) { if (!(template instanceof FormatTemplate)) { throw new Error('Argument template must be instance of FormatTemplate!'); } babelHelpers.classPrivateFieldGet(this, _templates)[template.type] = template; } }]); return FormatTemplateCollection; }(); /** * Template types */ var FormatTemplateType = function FormatTemplateType() { babelHelpers.classCallCheck(this, FormatTemplateType); }; babelHelpers.defineProperty(FormatTemplateType, "DEFAULT", 'DEFAULT'); babelHelpers.defineProperty(FormatTemplateType, "AUTOCOMPLETE", 'AUTOCOMPLETE'); babelHelpers.defineProperty(FormatTemplateType, "ADDRESS_LINE_1", 'ADDRESS_LINE_1'); /** * Class defines how the Address will look like */ var Format = /*#__PURE__*/function () { function Format(props) { babelHelpers.classCallCheck(this, Format); if (main_core.Type.isUndefined(props.languageId)) { throw new TypeError('LanguageId must be defined'); } this.languageId = props.languageId; this.code = props.code || ''; this.name = props.name || ''; this.templateAutocomplete = props.templateAutocomplete || ''; this.templateAddressLine1 = props.templateAddressLine1 || ''; this.description = props.description || ''; this.delimiter = props.delimiter || ', '; this.fieldForUnRecognized = props.fieldForUnRecognized || AddressType.UNKNOWN; this.fieldCollection = new FormatFieldCollection(); if (main_core.Type.isObject(props.fieldCollection)) { this.fieldCollection.initFields(props.fieldCollection); } var collection = {}; if (main_core.Type.isObject(props.templateCollection)) { collection = props.templateCollection; } this.templateCollection = new FormatTemplateCollection(collection); } babelHelpers.createClass(Format, [{ key: "getField", value: function getField(type) { return this.fieldCollection.getField(type); } }, { key: "isFieldExists", value: function isFieldExists(type) { return this.fieldCollection.isFieldExists(type); } }, { key: "getTemplate", value: function getTemplate() { var type = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : FormatTemplateType.DEFAULT; return this.templateCollection.getTemplate(type); } }, { key: "isTemplateExists", value: function isTemplateExists(type) { return this.templateCollection.isTemplateExists(type); } }, { key: "template", get: function get() { return this.templateCollection.getTemplate(); } }]); return Format; }(); function _classPrivateMethodInitSpec(obj, privateSet) { _checkPrivateRedeclaration$7(obj, privateSet); privateSet.add(obj); } function _classPrivateFieldInitSpec$7(obj, privateMap, value) { _checkPrivateRedeclaration$7(obj, privateMap); privateMap.set(obj, value); } function _checkPrivateRedeclaration$7(obj, privateCollection) { if (privateCollection.has(obj)) { throw new TypeError("Cannot initialize the same private elements twice on an object"); } } function _classPrivateMethodGet(receiver, privateSet, fn) { if (!privateSet.has(receiver)) { throw new TypeError("attempted to get private field on non-instance"); } return fn; } var STR_DELIMITER_PLACEHOLDER = "#S#"; var REGEX_COMMA_AMONG_EMPTY_SPACE = "\\s*,\\s*"; var REGEX_GROUP_DELIMITER = "(\\\"([^\"\\\\]*|\\\\\"|\\\\\\\\|\\\\)*\")"; var REGEX_GROUP_FIELD_TEXT = REGEX_GROUP_DELIMITER; var REGEX_GROUP_FIELD_NAME = "([a-zA-Z][a-zA-Z_0-9]*(:(NU|UN|N|U))?)"; var REGEX_GROUP_FIELD_LIST_END = "\\s*\\]"; var REGEX_GROUP_END = REGEX_GROUP_FIELD_LIST_END; var REGEX_PART_FROM_DELIMITER_TO_FIELD_LIST = "\\s*,\\s*\\[\\s*"; var REGEX_GROUP_PART_BEFORE_FIELDS = "(([^\\[\\\\]|\\\\\\[|\\\\\\\\)*)(\\[\\s*)(\"([^\"\\\\]*|\\\\\"|\\\\\\\\|\\\\)*\")\\s*,\\s*\\[\\s*"; var ERR_PARSE_GROUP_START_POSITION = 1100; var ERR_PARSE_GROUP_START = 1110; var ERR_PARSE_GROUP_DELIMITER = 1120; var ERR_PARSE_PART_FROM_DELIMITER_TO_FIELD_LIST = 1130; var ERR_PARSE_GROUP_FIELD_TEXT = 1140; var ERR_PARSE_GROUP_FIELD_NAME = 1150; var ERR_PARSE_GROUP_FIELD = 1160; var ERR_PARSE_GROUP_FIELD_LIST = 1170; var ERR_PARSE_GROUP_FIELD_LIST_DELIMITER = 1180; var ERR_PARSE_GROUP_FIELD_LIST_END = 1190; var ERR_PARSE_GROUP_END = 1200; var ERR_PARSE_GROUP = 1210; var _template = /*#__PURE__*/new WeakMap(); var _delimiter = /*#__PURE__*/new WeakMap(); var _htmlEncode = /*#__PURE__*/new WeakMap(); var _format = /*#__PURE__*/new WeakMap(); var _isTemplateForFieldExists = /*#__PURE__*/new WeakSet(); var _getFieldValueByTemplate = /*#__PURE__*/new WeakSet(); var _getAlterFieldValue = /*#__PURE__*/new WeakSet(); var StringTemplateConverter = /*#__PURE__*/function () { function StringTemplateConverter(_template2, delimiter, htmlEncode) { var format = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null; babelHelpers.classCallCheck(this, StringTemplateConverter); _classPrivateMethodInitSpec(this, _getAlterFieldValue); _classPrivateMethodInitSpec(this, _getFieldValueByTemplate); _classPrivateMethodInitSpec(this, _isTemplateForFieldExists); _classPrivateFieldInitSpec$7(this, _template, { writable: true, value: "" }); _classPrivateFieldInitSpec$7(this, _delimiter, { writable: true, value: "" }); _classPrivateFieldInitSpec$7(this, _htmlEncode, { writable: true, value: false }); _classPrivateFieldInitSpec$7(this, _format, { writable: true, value: null }); babelHelpers.classPrivateFieldSet(this, _template, _template2); babelHelpers.classPrivateFieldSet(this, _delimiter, delimiter); babelHelpers.classPrivateFieldSet(this, _htmlEncode, htmlEncode); babelHelpers.classPrivateFieldSet(this, _format, format); } babelHelpers.createClass(StringTemplateConverter, [{ key: "getErrorCodes", value: function getErrorCodes() { var result = {}; result[ERR_PARSE_GROUP_START_POSITION] = "ERR_PARSE_GROUP_START_POSITION"; result[ERR_PARSE_GROUP_START] = "ERR_PARSE_GROUP_START"; result[ERR_PARSE_GROUP_DELIMITER] = "ERR_PARSE_GROUP_DELIMITER"; result[ERR_PARSE_PART_FROM_DELIMITER_TO_FIELD_LIST] = "ERR_PARSE_PART_FROM_DELIMITER_TO_FIELD_LIST"; result[ERR_PARSE_GROUP_FIELD_TEXT] = "ERR_PARSE_GROUP_FIELD_TEXT"; result[ERR_PARSE_GROUP_FIELD_NAME] = "ERR_PARSE_GROUP_FIELD_NAME"; result[ERR_PARSE_GROUP_FIELD] = "ERR_PARSE_GROUP_FIELD"; result[ERR_PARSE_GROUP_FIELD_LIST] = "ERR_PARSE_GROUP_FIELD_LIST"; result[ERR_PARSE_GROUP_FIELD_LIST_DELIMITER] = "ERR_PARSE_GROUP_FIELD_LIST_DELIMITER"; result[ERR_PARSE_GROUP_FIELD_LIST_END] = "ERR_PARSE_GROUP_FIELD_LIST_END"; result[ERR_PARSE_GROUP_END] = "ERR_PARSE_GROUP_END"; result[ERR_PARSE_GROUP] = "ERR_PARSE_GROUP"; return result; } }, { key: "getErrorsText", value: function getErrorsText(context) { var result = ""; var errorCodes = this.getErrorCodes(); var errors = context["error"]["errors"]; for (var i = 0; i < errors.length; i++) { result += "Error: ".concat(errors[i]["position"], ", ").concat(errorCodes[errors[i]["code"]], "\n"); if (errors[i].hasOwnProperty("info") && main_core.Type.isPlainObject(errors[i]["info"])) { var errorInfo = errors[i]["info"]; var needHeader = true; for (var paramName in errorInfo) { if (errorInfo.hasOwnProperty(paramName)) { var paramValue = errorInfo[paramName]; var needPrint = false; if (main_core.Type.isString(paramValue)) { paramValue = "\"".concat(paramValue, "\""); needPrint = true; } else if (main_core.Type.isNumber(paramValue) || main_core.Type.isFloat(paramValue)) { needPrint = true; } else if (main_core.Type.isBoolean(paramValue)) { paramValue = paramValue ? "true" : "false"; needPrint = true; } else if (main_core.Type.isArray(paramValue)) { paramValue = "[...]"; needPrint = true; } else if (main_core.Type.isObject(paramValue)) { paramValue = '{...}'; needPrint = true; } if (needPrint) { if (needHeader) { result += " Error info:\n"; needHeader = false; } result += " ".concat(paramName, ": ").concat(paramValue, "\n"); } } } } } var templateValue = context["template"].replace("\n", "\\n"); templateValue = templateValue.replace("\"", "\\\""); result += "Template: \"".concat(templateValue, "\"\n\n"); return result; } }, { key: "createContext", value: function createContext() { return { "level": 0, "position": 0, "template": "", "address": null, "info": {}, "hasError": false, "error": { "code": 0, "position": 0, "errors": [], "info": {} } }; } }, { key: "clearContextInfo", value: function clearContextInfo(context) { context["info"] = {}; return context; } }, { key: "clearContextError", value: function clearContextError(context) { context["hasError"] = false; context["error"] = { "code": 0, "position": 0, "errors": [], "info": {} }; return context; } }, { key: "clearContextInfoAndError", value: function clearContextInfoAndError(context) { return this.clearContextError(this.clearContextInfo(context)); } }, { key: "unescapeText", value: function unescapeText(text) { var result = ""; var i; for (i = 0; i < text.length; i++) { if (text[i] === "\\") { if (text.length - i > 1) { result += text[++i]; } } else { result += text[i]; } } return result; } }, { key: "parseGroupDelimiter", value: function parseGroupDelimiter(context) { // Capturing the group's separator var delimiterStartPosition = context["position"]; // [", ", [ADDRESS_LINE_1:N,ADDRESS_LINE_2,"Text",LOCALITY,ADM_LEVEL_2]] // Are looking for ^^^^ var regEx = new RegExp(REGEX_GROUP_DELIMITER, "mg"); regEx.lastIndex = delimiterStartPosition; var matches = regEx.exec(context["template"]); if (matches && matches.index === delimiterStartPosition) { context["info"] = { "position": delimiterStartPosition, "end": delimiterStartPosition + matches[0].length, "value": this.unescapeText(context["template"].substr(delimiterStartPosition + 1, matches[0].length - 2)) }; context["position"] = context["info"]["end"]; } else { this.addContextError(context, ERR_PARSE_GROUP_DELIMITER, delimiterStartPosition); } return context; } }, { key: "parseFieldText", value: function parseFieldText(context) { var textBlockStartPosition = context["position"]; // [", ", [ADDRESS_LINE_1:N,ADDRESS_LINE_2,"Text",LOCALITY,ADM_LEVEL_2]] // Are looking for ^^^^^^ var regEx = new RegExp(REGEX_GROUP_FIELD_TEXT, "mg"); regEx.lastIndex = textBlockStartPosition; var matches = regEx.exec(context["template"]); if (matches && matches.index === textBlockStartPosition) { context["info"] = { "type": "text", "position": textBlockStartPosition, "end": textBlockStartPosition + matches[0].length, "value": this.unescapeText(context["template"].substr(textBlockStartPosition + 1, matches[0].length - 2)) }; context["position"] = context["info"]["end"]; } else { this.addContextError(context, ERR_PARSE_GROUP_FIELD_TEXT, textBlockStartPosition); } return context; } }, { key: "splitFieldName", value: function splitFieldName(fieldName) { var parts = fieldName.split(":"); var namePart = parts[0]; var modifiersPart = parts.length > 1 ? parts[1] : ""; return [namePart, modifiersPart]; } }, { key: "getAddressFieldValue", value: function getAddressFieldValue(address, fieldName, fieldModifiers) { var result = ""; if (!main_core.Type.isUndefined(AddressType[fieldName])) { if (fieldName === "ADM_LEVEL_1" || fieldName === "ADM_LEVEL_2") { // Scratch "Province & Region by Locality" result = _classPrivateMethodGet(this, _getAlterFieldValue, _getAlterFieldValue2).call(this, address, AddressType[fieldName]); } else { result = address.getFieldValue(AddressType[fieldName]); } if (result === null) { result = _classPrivateMethodGet(this, _getFieldValueByTemplate, _getFieldValueByTemplate2).call(this, fieldName, address); } } if (!main_core.Type.isString(result)) { result = ""; } if (result !== "") { if (fieldModifiers.indexOf("N") >= 0) { result = result.replace(/(\r\n|\n|\r)/g, "#S#"); } if (fieldModifiers.indexOf("U") >= 0) { result = result.toUpperCase(); } } return result; } }, { key: "parseFieldName", value: function parseFieldName(context) { var fieldNameStartPosition = context["position"]; // [", ", [ADDRESS_LINE_1:N,ADDRESS_LINE_2,"Text",LOCALITY,ADM_LEVEL_2]] // Are looking for ^^^^^^^^^^^^^^^^ var regEx = new RegExp(REGEX_GROUP_FIELD_NAME, "mg"); regEx.lastIndex = fieldNameStartPosition; var matches = regEx.exec(context["template"]); if (matches && matches.index === fieldNameStartPosition) { context["position"] = fieldNameStartPosition + matches[0].length; var fieldParts = this.splitFieldName(matches[0]); var fieldName = fieldParts[0]; var fieldModifiers = fieldParts[1]; var fieldValue = this.getAddressFieldValue(context["address"], fieldName, fieldModifiers); context["info"] = { "type": "field", "position": fieldNameStartPosition, "end": context["position"], "modifiers": fieldModifiers, "name": fieldName, "value": fieldValue }; } else { this.addContextError(context, ERR_PARSE_GROUP_FIELD_NAME, fieldNameStartPosition); } return context; } }, { key: "parseFieldListDelimiter", value: function parseFieldListDelimiter(context) { var markerStartPosition = context["position"]; // [", ", [ADDRESS_LINE_1:N , ADDRESS_LINE_2,"Text",LOCALITY,ADM_LEVEL_2]] // Are looking for ^^^ var regEx = new RegExp(REGEX_COMMA_AMONG_EMPTY_SPACE, "mg"); regEx.lastIndex = markerStartPosition; var matches = regEx.exec(context["template"]); if (matches && matches.index === markerStartPosition) { context["position"] = markerStartPosition + matches[0].length; } else { this.addContextError(context, ERR_PARSE_GROUP_FIELD_LIST_DELIMITER, markerStartPosition); } return context; } }, { key: "parseFieldListEnd", value: function parseFieldListEnd(context) { var markerStartPosition = context["position"]; // [", ", [ADDRESS_LINE_1:N,ADDRESS_LINE_2,"Text",LOCALITY,ADM_LEVEL_2]] // Are looking for ^ var regEx = new RegExp(REGEX_GROUP_FIELD_LIST_END, "mg"); regEx.lastIndex = markerStartPosition; var matches = regEx.exec(context["template"]); if (matches && matches.index === markerStartPosition) { context["position"] = markerStartPosition + matches[0].length; } else { this.addContextError(context, ERR_PARSE_GROUP_FIELD_LIST_END, markerStartPosition); } return context; } }, { key: "parseField", value: function parseField(context) { var fieldInfo = []; var fieldStartPosition = context["position"]; var errors = []; // Checking for the presence of a text block context = this.parseFieldText(context); if (context["hasError"]) { this.unshiftError(errors, context["error"]["code"], context["error"]["position"]); context = this.clearContextInfoAndError(context); // Checking for the presence of a field name context = this.parseFieldName(context); } if (context["hasError"]) { this.unshiftError(errors, context["error"]["code"], context["error"]["position"]); context = this.clearContextInfoAndError(context); // Checking for the presence of a nested group context = this.parseGroup(context); if (context["hasError"]) { this.unshiftError(errors, context["error"]["code"], context["error"]["position"]); } else if (context["info"]["position"] > fieldStartPosition) { // Group found beyond the expected position this.addContextError(context, ERR_PARSE_GROUP_START_POSITION, fieldStartPosition); this.unshiftError(errors, context["error"]["code"], context["error"]["position"]); } } if (!context["hasError"]) { fieldInfo = context["info"]; fieldInfo["isFieldListEnd"] = false; context = this.clearContextInfo(context); // Checking for the presence of a field separator context = this.parseFieldListDelimiter(context); if (context["hasError"]) { this.unshiftError(errors, context["error"]["code"], context["error"]["position"]); context = this.clearContextInfoAndError(context); // Checking for the presence of the end sign of the field list context = this.parseFieldListEnd(context); if (context["hasError"]) { this.unshiftError(errors, context["error"]["code"], context["error"]["position"]); } else { fieldInfo["isFieldListEnd"] = true; } } } if (context["hasError"]) { this.unshiftError(errors, ERR_PARSE_GROUP_FIELD, fieldStartPosition); this.addContextErrors(context, errors); } else { context["info"] = fieldInfo; } return context; } }, { key: "parseGroupFieldList", value: function parseGroupFieldList(context) { var fieldListStartPosition = context["position"]; var fieldValues = []; // [", ", [ADDRESS_LINE_1:N,ADDRESS_LINE_2,"Text",LOCALITY,ADM_LEVEL_2]] // Are looking for ^^^ var regEx = new RegExp(REGEX_PART_FROM_DELIMITER_TO_FIELD_LIST, "mg"); regEx.lastIndex = fieldListStartPosition; var matches = regEx.exec(context["template"]); if (matches && matches.index === fieldListStartPosition) { context["position"] = fieldListStartPosition + matches[0].length; var isFieldListEnd = false; while (!(context["hasError"] || isFieldListEnd)) { context = this.parseField(context); if (!context["hasError"]) { isFieldListEnd = context["info"].hasOwnProperty("isFieldListEnd") && context["info"]["isFieldListEnd"]; if (context["info"]["value"] !== "") { fieldValues.push(context["info"]["value"]); } context = this.clearContextInfo(context); } } if (!context["hasError"]) { context["info"] = { "fieldValues": fieldValues }; } } else { this.addContextError(context, ERR_PARSE_PART_FROM_DELIMITER_TO_FIELD_LIST, fieldListStartPosition); } if (context["hasError"]) { this.addContextError(context, ERR_PARSE_GROUP_FIELD_LIST, fieldListStartPosition); } return context; } }, { key: "parseGroupStart", value: function parseGroupStart(context) { // [", ", [ADDRESS_LINE_1:N,ADDRESS_LINE_2,"Text",LOCALITY,ADM_LEVEL_2]] // Are looking for ^^^^^^^^ var regEx = new RegExp(REGEX_GROUP_PART_BEFORE_FIELDS, "mg"); regEx.lastIndex = context["position"]; var matches = regEx.exec(context["template"]); if (matches) { context["info"]["groupStartPosition"] = matches.index + matches[1].length; context["info"]["groupDelimiterStartPosition"] = matches.index + matches[1].length + matches[3].length; } else { this.addContextError(context, ERR_PARSE_GROUP_START, context["position"]); } return context; } }, { key: "parseGroupEnd", value: function parseGroupEnd(context) { var markerStartPosition = context["position"]; // [", ", [ADDRESS_LINE_1:N,ADDRESS_LINE_2,"Text",LOCALITY,ADM_LEVEL_2]] // Are looking for ^ var regEx = new RegExp(REGEX_GROUP_END, "mg"); regEx.lastIndex = markerStartPosition; var matches = regEx.exec(context["template"]); if (matches && matches.index === markerStartPosition) { context["position"] = markerStartPosition + matches[0].length; } else { this.addContextError(context, ERR_PARSE_GROUP_END, markerStartPosition); } return context; } }, { key: "parseGroup", value: function parseGroup(context) { var startSearchPosition = context["position"]; var groupStartPosition = 0; var delimiterValue = ""; var fieldValues = []; context["level"]++; // Checking for the presence of a start of a group context = this.parseGroupStart(context); if (!context["hasError"]) { // Found a sign of the beginning of a group groupStartPosition = context["info"]["groupStartPosition"]; context["position"] = context["info"]["groupDelimiterStartPosition"]; context = this.clearContextInfo(context); context = this.parseGroupDelimiter(context); } if (!context["hasError"]) { // The value of the group separator was got delimiterValue = context["info"]["value"]; context = this.clearContextInfo(context); context = this.parseGroupFieldList(context); } if (!context["hasError"]) { // The values of the field list was got fieldValues = context["info"]["fieldValues"]; context = this.clearContextInfo(context); context = this.parseGroupEnd(context); } if (!context["hasError"]) { // Kremlin,Moscow,Moscow,Russia,103132 -> Kremlin,Moscow,Russia,103132 fieldValues = babelHelpers.toConsumableArray(new Set(fieldValues)); var value = fieldValues.join(delimiterValue); // Kaliningrad, Narvskaya, 72, , kv 8 -> Kaliningrad, Narvskaya, 72, kv 8 var reg = new RegExp("(".concat(delimiterValue, "){2,}"), 'gim'); value = value.replace(new RegExp(reg), delimiterValue); // The sign of the end of the group is received, the assembly of the group value. context["info"] = { "type": "group", "position": groupStartPosition, "end": context["position"], "value": value }; } context["level"]--; if (context["hasError"]) { this.addContextError(context, ERR_PARSE_GROUP, startSearchPosition, { "groupStartPosition": groupStartPosition }); } return context; } }, { key: "appendTextBlock", value: function appendTextBlock(blocks, position, value) { var lastBlockIndex = blocks.length - 1; var lastBlock = lastBlockIndex >= 0 ? blocks[lastBlockIndex] : null; if (lastBlock && lastBlock.hasOwnProperty("type") && lastBlock["type"] === "text") { blocks[lastBlockIndex]["value"] += value; blocks[lastBlockIndex]["length"] += value.length; } else { blocks[++lastBlockIndex] = { "type": "text", "position": position, "length": value.length, "value": value }; } } }, { key: "appendGroupBlock", value: function appendGroupBlock(blocks, position, value) { blocks.push({ "type": "group", "position": position, "length": value.length, "value": value }); } }, { key: "unshiftError", value: function unshiftError(errors, code, position) { var info = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null; errors.unshift({ "code": code, "position": position, "info": main_core.Type.isPlainObject(info) ? info : {} }); } }, { key: "addContextError", value: function addContextError(context, code, position) { var info = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null; context["hasError"] = true; context["error"]["code"] = code; context["error"]["position"] = position; context["error"]["info"] = main_core.Type.isPlainObject(info) ? info : {}; this.unshiftError(context["error"]["errors"], code, position, info); } }, { key: "addContextErrors", value: function addContextErrors(context, errors) { var info = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null; context["hasError"] = true; context["error"]["code"] = errors[0]["code"]; context["error"]["position"] = errors[0]["position"]; context["error"]["info"] = main_core.Type.isPlainObject(info) ? info : {}; context["error"]["errors"].splice(0, 0, errors); } }, { key: "parseBlocks", value: function parseBlocks(context) { /* Variable for debug only let errorDisplayed = false; */ var blocks = []; var templateLength = context["template"].length; while (context["position"] < templateLength) { var blockStartPosition = context["position"]; context = this.parseGroup(context); if (context["hasError"]) { // Debug info /*if (!errorDisplayed) { console.info(this.getErrorsText(context)); errorDisplayed = true; }*/ var errorInfo = context["error"]["info"]; var blockLength = void 0; if (!main_core.Type.isPlainObject(errorInfo) && errorInfo.hasOwnProperty("groupStartPosition") && errorInfo["groupStartPosition"] > blockStartPosition) { blockLength = errorInfo["groupStartPosition"] - blockStartPosition + 1; } else { blockLength = 1; } this.appendTextBlock(blocks, context["error"]["position"], context["template"].substr(blockStartPosition, blockLength)); context = this.clearContextInfoAndError(context); context["position"] = blockStartPosition + blockLength; } else { var groupStartPosition = context["info"]["position"]; if (groupStartPosition > blockStartPosition) { this.appendTextBlock(blocks, blockStartPosition, context["template"].substr(blockStartPosition, groupStartPosition - blockStartPosition)); } if (context["info"]["value"] !== "") { this.appendGroupBlock(blocks, groupStartPosition, context["info"]["value"]); } context = this.clearContextInfo(context); } } if (!context["hasError"]) { context["info"] = { "blocks": blocks }; } return context; } }, { key: "convert", value: function convert(address) { var result = ""; var context = this.createContext(); context["template"] = babelHelpers.classPrivateFieldGet(this, _template); context["address"] = address; context = this.parseBlocks(context); if (!context["hasError"]) { var blocks = context["info"]["blocks"]; for (var i = 0; i < blocks.length; i++) { if (blocks[i]["type"] === "text") { result += this.unescapeText(blocks[i]["value"]); } else { result += blocks[i]["value"]; } } } if (result !== "") { var temp = result.split(STR_DELIMITER_PLACEHOLDER); var parts = []; for (var _i = 0; _i < temp.length; _i++) { if (temp[_i] !== "") { parts.push(temp[_i]); } } if (babelHelpers.classPrivateFieldGet(this, _htmlEncode) && parts.length > 0) { for (var _i2 = 0; _i2 < parts.length; _i2++) { parts[_i2] = main_core.Text.encode(parts[_i2]); } } result = parts.join(babelHelpers.classPrivateFieldGet(this, _delimiter)); } return result; } }]); return StringTemplateConverter; }(); function _isTemplateForFieldExists2(fieldName) { return babelHelpers.classPrivateFieldGet(this, _format) && babelHelpers.classPrivateFieldGet(this, _format).getTemplate(fieldName) !== null; } function _getFieldValueByTemplate2(fieldName, address) { if (!_classPrivateMethodGet(this, _isTemplateForFieldExists, _isTemplateForFieldExists2).call(this, fieldName)) { return null; } var template = babelHelpers.classPrivateFieldGet(this, _format).getTemplate(fieldName).template; var templateConverter = new StringTemplateConverter(template, babelHelpers.classPrivateFieldGet(this, _delimiter), babelHelpers.classPrivateFieldGet(this, _htmlEncode), babelHelpers.classPrivateFieldGet(this, _format)); return templateConverter.convert(address); } function _getAlterFieldValue2(address, fieldType) { var localityValue = address.getFieldValue(AddressType.LOCALITY); localityValue = main_core.Type.isString(localityValue) ? localityValue : ""; var result = address.getFieldValue(fieldType); if (!main_core.Type.isString(result)) { result = ""; } if (result !== "" && localityValue !== "") { var localityValueUpper = localityValue.toUpperCase(); var targetValueUpper = result.toUpperCase(); if (targetValueUpper.length >= localityValueUpper.length) { var targetValueSubstr = targetValueUpper.substr(targetValueUpper.length - localityValueUpper.length); if (localityValueUpper === targetValueSubstr) { result = ""; } } } return result; } var StringConverter = /*#__PURE__*/function () { function StringConverter() { babelHelpers.classCallCheck(this, StringConverter); } babelHelpers.createClass(StringConverter, null, [{ key: "convertAddressToString", /** * Convert address to string * @param {Address} address * @param {Format} format * @param {string} strategyType * @param {string} contentType * @returns {string} */ value: function convertAddressToString(address, format, strategyType, contentType) { var result; if (strategyType === StringConverter.STRATEGY_TYPE_TEMPLATE || strategyType === StringConverter.STRATEGY_TYPE_TEMPLATE_COMMA || strategyType === StringConverter.STRATEGY_TYPE_TEMPLATE_NL || strategyType === StringConverter.STRATEGY_TYPE_TEMPLATE_BR) { var delimiter = null; switch (strategyType) { case StringConverter.STRATEGY_TYPE_TEMPLATE_COMMA: delimiter = ', '; break; case StringConverter.STRATEGY_TYPE_TEMPLATE_NL: delimiter = '\n'; break; case StringConverter.STRATEGY_TYPE_TEMPLATE_BR: delimiter = '<br />'; break; } result = StringConverter.convertAddressToStringTemplate(address, format.getTemplate(), contentType, delimiter, format); } else if (strategyType === StringConverter.STRATEGY_TYPE_FIELD_SORT) { var fieldSorter = function fieldSorter(a, b) { return a.sort - b.sort; }; result = StringConverter.convertAddressToStringByField(address, format, fieldSorter, contentType); } else if (strategyType === StringConverter.STRATEGY_TYPE_FIELD_TYPE) { var _fieldSorter = function _fieldSorter(a, b) { var sortResult; // We suggest that UNKNOWN must be the last if (a.type === 0) { sortResult = 1; } else if (b.type === 0) { sortResult = -1; } else { sortResult = a.type - b.type; } return sortResult; }; result = StringConverter.convertAddressToStringByField(address, format, _fieldSorter, contentType); } else { throw TypeError('Wrong strategyType'); } return result; } /** * Convert address to string * @param {Address} address * @param {string} template * @param {string} contentType * @param {string|null} delimiter * @param {Format|null} format * @returns {string} */ }, { key: "convertAddressToStringTemplate", value: function convertAddressToStringTemplate(address, template, contentType) { var delimiter = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null; var format = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : null; var needHtmlEncode = contentType === StringConverter.CONTENT_TYPE_HTML; if (delimiter === null) { delimiter = needHtmlEncode ? '<br />' : '\n'; } var templateConverter = new StringTemplateConverter(template.template, delimiter, needHtmlEncode, format); return templateConverter.convert(address); } /** * Convert address to string * @param {Address} address * @param {Format} format * @param {Function} fieldSorter * @param {string} contentType * @returns {string} */ }, { key: "convertAddressToStringByField", value: function convertAddressToStringByField(address, format, fieldSorter, contentType) { if (!(format instanceof Format)) { BX.debug('format must be instance of Format'); } if (!(address instanceof Address)) { BX.debug('address must be instance of Address'); } var fieldCollection = format.fieldCollection; if (!fieldCollection) { return ''; } var fields = Object.values(fieldCollection.fields); // todo: make only once or cache? fields.sort(fieldSorter); var result = ''; for (var _i = 0, _fields = fields; _i < _fields.length; _i++) { var field = _fields[_i]; var value = address.getFieldValue(field.type); if (value === null) { continue; } if (contentType === StringConverter.CONTENT_TYPE_HTML) { value = main_core.Text.encode(value); } if (result !== '') { result += format.delimiter; } result += value; } return result; } }]); return StringConverter; }(); babelHelpers.defineProperty(StringConverter, "STRATEGY_TYPE_TEMPLATE", 'template'); babelHelpers.defineProperty(StringConverter, "STRATEGY_TYPE_TEMPLATE_COMMA", 'template_comma'); babelHelpers.defineProperty(StringConverter, "STRATEGY_TYPE_TEMPLATE_NL", 'template_nl'); babelHelpers.defineProperty(StringConverter, "STRATEGY_TYPE_TEMPLATE_BR", 'template_br'); babelHelpers.defineProperty(StringConverter, "STRATEGY_TYPE_FIELD_SORT", 'field_sort'); babelHelpers.defineProperty(StringConverter, "STRATEGY_TYPE_FIELD_TYPE", 'field_type'); babelHelpers.defineProperty(StringConverter, "CONTENT_TYPE_HTML", 'html'); babelHelpers.defineProperty(StringConverter, "CONTENT_TYPE_TEXT", 'text'); function _classStaticPrivateMethodGet(receiver, classConstructor, method) { _classCheckPrivateStaticAccess(receiver, classConstructor); return method; } function _classCheckPrivateStaticAccess(receiver, classConstructor) { if (receiver !== classConstructor) { throw new TypeError("Private static access of wrong provenance"); } } var JsonConverter = /*#__PURE__*/function () { function JsonConverter() { babelHelpers.classCallCheck(this, JsonConverter); } babelHelpers.createClass(JsonConverter, null, [{ key: "convertJsonToAddress", /** * @param {Object} jsonData * @returns {Address} */ value: function convertJsonToAddress(jsonData) { return new Address(jsonData); } /** * @param {Address} address * @returns {{languageId: string, location: ({"'...'"}|null), id: number, fieldCollection: {"'...'"}}} Json data */ }, { key: "convertAddressToJson", value: function convertAddressToJson(address) { var obj = { id: address.id, languageId: address.languageId, latitude: address.latitude, longitude: address.longitude, fieldCollection: _classStaticPrivateMethodGet(JsonConverter, JsonConverter, _objectifyFieldCollection).call(JsonConverter, address.fieldCollection), links: _classStaticPrivateMethodGet(JsonConverter, JsonConverter, _objectifyLinks).call(JsonConverter, address.links), location: null }; if (address.location) { obj.location = JSON.parse(address.location.toJson()); } return JSON.stringify(obj); } /** * @param {AddressFieldCollection} fieldCollection * @returns {Object} */ }]); return JsonConverter; }(); function _objectifyFieldCollection(fieldCollection) { var result = {}; Object.values(fieldCollection.fields).forEach(function (field) { result[field.type] = field.value; }); return result; } function _objectifyLinks(links) { return links.map(function (link) { return { entityId: link.entityId, entityType: link.entityType }; }); } function _createForOfIteratorHelper$2(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray$2(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; } function _unsupportedIterableToArray$2(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray$2(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray$2(o, minLen); } function _arrayLikeToArray$2(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; } function _classPrivateFieldInitSpec$8(obj, privateMap, value) { _checkPrivateRedeclaration$8(obj, privateMap); privateMap.set(obj, value); } function _checkPrivateRedeclaration$8(obj, privateCollection) { if (privateCollection.has(obj)) { throw new TypeError("Cannot initialize the same private elements twice on an object"); } } var _id = /*#__PURE__*/new WeakMap(); var _languageId = /*#__PURE__*/new WeakMap(); var _latitude = /*#__PURE__*/new WeakMap(); var _longitude = /*#__PURE__*/new WeakMap(); var _fieldCollection = /*#__PURE__*/new WeakMap(); var _links$1 = /*#__PURE__*/new WeakMap(); var _location = /*#__PURE__*/new WeakMap(); var Address = /*#__PURE__*/function () { /** * @param {{...}} props */ function Address(props) { babelHelpers.classCallCheck(this, Address); _classPrivateFieldInitSpec$8(this, _id, { writable: true, value: void 0 }); _classPrivateFieldInitSpec$8(this, _languageId, { writable: true, value: void 0 }); _classPrivateFieldInitSpec$8(this, _latitude, { writable: true, value: void 0 }); _classPrivateFieldInitSpec$8(this, _longitude, { writable: true, value: void 0 }); _classPrivateFieldInitSpec$8(this, _fieldCollection, { writable: true, value: void 0 }); _classPrivateFieldInitSpec$8(this, _links$1, { writable: true, value: void 0 }); _classPrivateFieldInitSpec$8(this, _location, { writable: true, value: void 0 }); if (main_core.Type.isUndefined(props.languageId)) { throw new TypeError('languageId must be defined'); } babelHelpers.classPrivateFieldSet(this, _languageId, props.languageId); babelHelpers.classPrivateFieldSet(this, _id, props.id || 0); babelHelpers.classPrivateFieldSet(this, _latitude, props.latitude || ''); babelHelpers.classPrivateFieldSet(this, _longitude, props.longitude || ''); babelHelpers.classPrivateFieldSet(this, _fieldCollection, new AddressFieldCollection()); if (main_core.Type.isObject(props.fieldCollection)) { for (var _i = 0, _Object$entries = Object.entries(props.fieldCollection); _i < _Object$entries.length; _i++) { var _Object$entries$_i = babelHelpers.slicedToArray(_Object$entries[_i], 2), type = _Object$entries$_i[0], value = _Object$entries$_i[1]; this.setFieldValue(type, value); } } babelHelpers.classPrivateFieldSet(this, _links$1, new AddressLinkCollection()); if (main_core.Type.isArray(props.links)) { var _iterator = _createForOfIteratorHelper$2(props.links), _step; try { for (_iterator.s(); !(_step = _iterator.n()).done;) { var link = _step.value; this.addLink(link.entityId, link.entityType); } } catch (err) { _iterator.e(err); } finally { _iterator.f(); } } babelHelpers.classPrivateFieldSet(this, _location, null); if (props.location) { if (props.location instanceof Location) { babelHelpers.classPrivateFieldSet(this, _location, props.location); } else if (main_core.Type.isObject(props.location)) { babelHelpers.classPrivateFieldSet(this, _location, new Location(props.location)); } else { BX.debug('Wrong typeof props.location'); } } } /** * @returns {int} */ babelHelpers.createClass(Address, [{ key: "setFieldValue", /** * @param {number} type * @param {mixed} value */ value: function setFieldValue(type, value) { babelHelpers.classPrivateFieldGet(this, _fieldCollection).setFieldValue(type, value); } /** * @param {number} type * @returns {?string} */ }, { key: "getFieldValue", value: function getFieldValue(type) { return babelHelpers.classPrivateFieldGet(this, _fieldCollection).getFieldValue(type); } /** * Check if field exist * @param type * @returns {boolean} */ }, { key: "isFieldExists", value: function isFieldExists(type) { return babelHelpers.classPrivateFieldGet(this, _fieldCollection).isFieldExists(type); } /** * @return {string} JSON */ }, { key: "toJson", value: function toJson() { return JsonConverter.convertAddressToJson(this); } /** * @param {Format}format * @param {?string}strategyType * @param {?string}contentType * @return {string} */ }, { key: "toString", value: function toString(format, strategyType, contentType) { if (!(format instanceof Format)) { console.error('format must be instance of Format'); return ''; } var strategy = strategyType || StringConverter.STRATEGY_TYPE_TEMPLATE; var type = contentType || StringConverter.CONTENT_TYPE_HTML; return StringConverter.convertAddressToString(this, format, strategy, type); } /** * @returns {?Location} */ }, { key: "toLocation", value: function toLocation() { var result = null; if (this.location) { var locationObj = JSON.parse(this.location.toJson()); locationObj.address = JSON.parse(this.toJson()); result = new Location(locationObj); } return result; } /** * @return {number} */ }, { key: "getType", value: function getType() { return babelHelpers.classPrivateFieldGet(this, _fieldCollection).getMaxFieldType(); } /** * @param {string} entityId * @param {string} entityType */ }, { key: "addLink", value: function addLink(entityId, entityType) { babelHelpers.classPrivateFieldGet(this, _links$1).addLink(new AddressLink({ entityId: entityId, entityType: entityType })); } }, { key: "clearLinks", value: function clearLinks() { babelHelpers.classPrivateFieldGet(this, _links$1).clearLinks(); } }, { key: "id", get: function get() { return babelHelpers.classPrivateFieldGet(this, _id); } /** * @returns {Location} */ , /** * @param {int} id */ set: function set(id) { babelHelpers.classPrivateFieldSet(this, _id, id); } /** * @param {Location} location */ }, { key: "location", get: function get() { return babelHelpers.classPrivateFieldGet(this, _location); } /** * @returns {string} */ , set: function set(location) { babelHelpers.classPrivateFieldSet(this, _location, location); } /** * @returns {string} */ }, { key: "languageId", get: function get() { return babelHelpers.classPrivateFieldGet(this, _languageId); } /** * @returns {AddressFieldCollection} */ }, { key: "fieldCollection", get: function get() { return babelHelpers.classPrivateFieldGet(this, _fieldCollection); } }, { key: "latitude", get: function get() { return babelHelpers.classPrivateFieldGet(this, _latitude); } /** * @param {string} latitude */ , set: function set(latitude) { babelHelpers.classPrivateFieldSet(this, _latitude, latitude); } /** * @returns {string} */ }, { key: "longitude", get: function get() { return babelHelpers.classPrivateFieldGet(this, _longitude); } /** * @param {string} longitude */ , set: function set(longitude) { babelHelpers.classPrivateFieldSet(this, _longitude, longitude); } /** * @returns {AddressLinkCollection} */ }, { key: "links", get: function get() { return babelHelpers.classPrivateFieldGet(this, _links$1).links; } }]); return Address; }(); function _classPrivateFieldInitSpec$9(obj, privateMap, value) { _checkPrivateRedeclaration$9(obj, privateMap); privateMap.set(obj, value); } function _checkPrivateRedeclaration$9(obj, privateCollection) { if (privateCollection.has(obj)) { throw new TypeError("Cannot initialize the same private elements twice on an object"); } } var _value$1 = /*#__PURE__*/new WeakMap(); var LocationField = /*#__PURE__*/function (_Field) { babelHelpers.inherits(LocationField, _Field); // todo: Fields validation function LocationField(props) { var _this; babelHelpers.classCallCheck(this, LocationField); _this = babelHelpers.possibleConstructorReturn(this, babelHelpers.getPrototypeOf(LocationField).call(this, props)); _classPrivateFieldInitSpec$9(babelHelpers.assertThisInitialized(_this), _value$1, { writable: true, value: void 0 }); babelHelpers.classPrivateFieldSet(babelHelpers.assertThisInitialized(_this), _value$1, props.value || ''); return _this; } babelHelpers.createClass(LocationField, [{ key: "value", get: function get() { return babelHelpers.classPrivateFieldGet(this, _value$1); }, set: function set(value) { babelHelpers.classPrivateFieldSet(this, _value$1, value); } }]); return LocationField; }(Field); var LocationFieldCollection = /*#__PURE__*/function (_FieldCollection) { babelHelpers.inherits(LocationFieldCollection, _FieldCollection); function LocationFieldCollection() { babelHelpers.classCallCheck(this, LocationFieldCollection); return babelHelpers.possibleConstructorReturn(this, babelHelpers.getPrototypeOf(LocationFieldCollection).apply(this, arguments)); } babelHelpers.createClass(LocationFieldCollection, [{ key: "getFieldValue", value: function getFieldValue(type) { var result = null; if (this.isFieldExists(type)) { var field = this.getField(type); if (field) { result = field.value; } } return result; } }, { key: "setFieldValue", value: function setFieldValue(type, value) { this.setField(new LocationField({ type: type, value: value })); return this; } }]); return LocationFieldCollection; }(FieldCollection); function _classStaticPrivateMethodGet$1(receiver, classConstructor, method) { _classCheckPrivateStaticAccess$1(receiver, classConstructor); return method; } function _classCheckPrivateStaticAccess$1(receiver, classConstructor) { if (receiver !== classConstructor) { throw new TypeError("Private static access of wrong provenance"); } } var LocationObjectConverter = /*#__PURE__*/function () { function LocationObjectConverter() { babelHelpers.classCallCheck(this, LocationObjectConverter); } babelHelpers.createClass(LocationObjectConverter, null, [{ key: "convertLocationToObject", value: function convertLocationToObject(location) { if (!(location instanceof Location)) { throw new TypeError('location must be type of location'); } var obj = { id: location.id, code: location.code, externalId: location.externalId, sourceCode: location.sourceCode, type: location.type, name: location.name, languageId: location.languageId, latitude: location.latitude, longitude: location.longitude, fieldCollection: _classStaticPrivateMethodGet$1(LocationObjectConverter, LocationObjectConverter, _objectifyFieldCollection$1).call(LocationObjectConverter, location.fieldCollection), address: null }; if (location.address) { obj.address = JSON.parse(location.address.toJson()); } return obj; } }]); return LocationObjectConverter; }(); function _objectifyFieldCollection$1(fieldCollection) { var result = {}; Object.values(fieldCollection.fields).forEach(function (field) { result[field.type] = field.value; }); return result; } function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; } function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { babelHelpers.defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; } var LocationJsonConverter = /*#__PURE__*/function () { function LocationJsonConverter() { babelHelpers.classCallCheck(this, LocationJsonConverter); } babelHelpers.createClass(LocationJsonConverter, null, [{ key: "convertJsonToLocation", /** * @param {{...}}jsonData * @returns {Location} */ value: function convertJsonToLocation(jsonData) { var initData = _objectSpread({}, jsonData); if (jsonData.address) { initData.address = new Address(jsonData.address); } return new Location(initData); } /** * @param {Location} location * @returns {{...}} */ }, { key: "convertLocationToJson", value: function convertLocationToJson(location) { if (!(location instanceof Location)) { throw new TypeError('location must be type of location'); } var obj = LocationObjectConverter.convertLocationToObject(location); return obj ? JSON.stringify(obj) : ''; } }]); return LocationJsonConverter; }(); function _classPrivateFieldInitSpec$a(obj, privateMap, value) { _checkPrivateRedeclaration$a(obj, privateMap); privateMap.set(obj, value); } function _checkPrivateRedeclaration$a(obj, privateCollection) { if (privateCollection.has(obj)) { throw new TypeError("Cannot initialize the same private elements twice on an object"); } } var _id$1 = /*#__PURE__*/new WeakMap(); var _code = /*#__PURE__*/new WeakMap(); var _externalId = /*#__PURE__*/new WeakMap(); var _sourceCode = /*#__PURE__*/new WeakMap(); var _type$1 = /*#__PURE__*/new WeakMap(); var _name$1 = /*#__PURE__*/new WeakMap(); var _languageId$1 = /*#__PURE__*/new WeakMap(); var _latitude$1 = /*#__PURE__*/new WeakMap(); var _longitude$1 = /*#__PURE__*/new WeakMap(); var _address = /*#__PURE__*/new WeakMap(); var _fieldCollection$1 = /*#__PURE__*/new WeakMap(); var Location = /*#__PURE__*/function () { function Location() { var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; babelHelpers.classCallCheck(this, Location); _classPrivateFieldInitSpec$a(this, _id$1, { writable: true, value: void 0 }); _classPrivateFieldInitSpec$a(this, _code, { writable: true, value: void 0 }); _classPrivateFieldInitSpec$a(this, _externalId, { writable: true, value: void 0 }); _classPrivateFieldInitSpec$a(this, _sourceCode, { writable: true, value: void 0 }); _classPrivateFieldInitSpec$a(this, _type$1, { writable: true, value: void 0 }); _classPrivateFieldInitSpec$a(this, _name$1, { writable: true, value: void 0 }); _classPrivateFieldInitSpec$a(this, _languageId$1, { writable: true, value: void 0 }); _classPrivateFieldInitSpec$a(this, _latitude$1, { writable: true, value: void 0 }); _classPrivateFieldInitSpec$a(this, _longitude$1, { writable: true, value: void 0 }); _classPrivateFieldInitSpec$a(this, _address, { writable: true, value: void 0 }); _classPrivateFieldInitSpec$a(this, _fieldCollection$1, { writable: true, value: void 0 }); babelHelpers.classPrivateFieldSet(this, _id$1, parseInt(props.id) || 0); babelHelpers.classPrivateFieldSet(this, _code, props.code || ''); babelHelpers.classPrivateFieldSet(this, _externalId, props.externalId || ''); babelHelpers.classPrivateFieldSet(this, _sourceCode, props.sourceCode || ''); babelHelpers.classPrivateFieldSet(this, _type$1, parseInt(props.type) || 0); babelHelpers.classPrivateFieldSet(this, _name$1, props.name || ''); babelHelpers.classPrivateFieldSet(this, _languageId$1, props.languageId || ''); babelHelpers.classPrivateFieldSet(this, _latitude$1, props.latitude || ''); babelHelpers.classPrivateFieldSet(this, _longitude$1, props.longitude || ''); babelHelpers.classPrivateFieldSet(this, _fieldCollection$1, new LocationFieldCollection()); if (main_core.Type.isObject(props.fieldCollection)) { for (var _i = 0, _Object$entries = Object.entries(props.fieldCollection); _i < _Object$entries.length; _i++) { var _Object$entries$_i = babelHelpers.slicedToArray(_Object$entries[_i], 2), type = _Object$entries$_i[0], value = _Object$entries$_i[1]; this.setFieldValue(type, value); } } babelHelpers.classPrivateFieldSet(this, _address, null); if (props.address) { if (props.address instanceof Address) { babelHelpers.classPrivateFieldSet(this, _address, props.address); } else if (babelHelpers["typeof"](props.address) === 'object') { babelHelpers.classPrivateFieldSet(this, _address, new Address(props.address)); } else { BX.debug('Wrong typeof props.address'); } } } babelHelpers.createClass(Location, [{ key: "toJson", value: function toJson() { return LocationJsonConverter.convertLocationToJson(this); } }, { key: "toAddress", value: function toAddress() { var result = null; if (this.address) { var addressObj = JSON.parse(this.address.toJson()); addressObj.location = JSON.parse(this.toJson()); result = new Address(addressObj); } return result; } }, { key: "setFieldValue", value: function setFieldValue(type, value) { babelHelpers.classPrivateFieldGet(this, _fieldCollection$1).setFieldValue(type, value); } }, { key: "getFieldValue", value: function getFieldValue(type) { return babelHelpers.classPrivateFieldGet(this, _fieldCollection$1).getFieldValue(type); } }, { key: "isFieldExists", value: function isFieldExists(type) { return babelHelpers.classPrivateFieldGet(this, _fieldCollection$1).isFieldExists(type); } }, { key: "hasExternalRelation", value: function hasExternalRelation() { return babelHelpers.classPrivateFieldGet(this, _externalId) && babelHelpers.classPrivateFieldGet(this, _sourceCode); } }, { key: "id", get: function get() { return babelHelpers.classPrivateFieldGet(this, _id$1); }, set: function set(value) { babelHelpers.classPrivateFieldSet(this, _id$1, value); } }, { key: "code", get: function get() { return babelHelpers.classPrivateFieldGet(this, _code); }, set: function set(code) { babelHelpers.classPrivateFieldSet(this, _code, code); } }, { key: "externalId", get: function get() { return babelHelpers.classPrivateFieldGet(this, _externalId); }, set: function set(value) { babelHelpers.classPrivateFieldSet(this, _externalId, value); } }, { key: "sourceCode", get: function get() { return babelHelpers.classPrivateFieldGet(this, _sourceCode); }, set: function set(value) { babelHelpers.classPrivateFieldSet(this, _sourceCode, value); } }, { key: "type", get: function get() { return babelHelpers.classPrivateFieldGet(this, _type$1); }, set: function set(value) { babelHelpers.classPrivateFieldSet(this, _type$1, value); } }, { key: "name", get: function get() { return babelHelpers.classPrivateFieldGet(this, _name$1); }, set: function set(value) { babelHelpers.classPrivateFieldSet(this, _name$1, value); } }, { key: "languageId", get: function get() { return babelHelpers.classPrivateFieldGet(this, _languageId$1); }, set: function set(value) { babelHelpers.classPrivateFieldSet(this, _languageId$1, value); } }, { key: "latitude", get: function get() { return babelHelpers.classPrivateFieldGet(this, _latitude$1); }, set: function set(latitude) { babelHelpers.classPrivateFieldSet(this, _latitude$1, latitude); } }, { key: "longitude", get: function get() { return babelHelpers.classPrivateFieldGet(this, _longitude$1); }, set: function set(longitude) { babelHelpers.classPrivateFieldSet(this, _longitude$1, longitude); } }, { key: "address", set: function set(address) { babelHelpers.classPrivateFieldSet(this, _address, address); }, get: function get() { return babelHelpers.classPrivateFieldGet(this, _address); } }, { key: "fieldCollection", get: function get() { return babelHelpers.classPrivateFieldGet(this, _fieldCollection$1); } }]); return Location; }(); function _classPrivateFieldInitSpec$b(obj, privateMap, value) { _checkPrivateRedeclaration$b(obj, privateMap); privateMap.set(obj, value); } function _checkPrivateRedeclaration$b(obj, privateCollection) { if (privateCollection.has(obj)) { throw new TypeError("Cannot initialize the same private elements twice on an object"); } } var _path = /*#__PURE__*/new WeakMap(); var ActionRunner = /*#__PURE__*/function () { function ActionRunner(props) { babelHelpers.classCallCheck(this, ActionRunner); _classPrivateFieldInitSpec$b(this, _path, { writable: true, value: '' }); if (!props.path) { throw new Error('props.path must not be empty!'); } babelHelpers.classPrivateFieldSet(this, _path, props.path); } babelHelpers.createClass(ActionRunner, [{ key: "run", value: function run(action, data) { if (!action) { throw new Error('action can not be empty!'); } return BX.ajax.runAction("".concat(babelHelpers.classPrivateFieldGet(this, _path), ".").concat(action), { data: data }); } }]); return ActionRunner; }(); function _createForOfIteratorHelper$3(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray$3(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; } function _unsupportedIterableToArray$3(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray$3(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray$3(o, minLen); } function _arrayLikeToArray$3(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; } function _classPrivateFieldInitSpec$c(obj, privateMap, value) { _checkPrivateRedeclaration$c(obj, privateMap); privateMap.set(obj, value); } function _checkPrivateRedeclaration$c(obj, privateCollection) { if (privateCollection.has(obj)) { throw new TypeError("Cannot initialize the same private elements twice on an object"); } } var _actionRunner = /*#__PURE__*/new WeakMap(); var BaseRepository = /*#__PURE__*/function () { function BaseRepository() { var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; babelHelpers.classCallCheck(this, BaseRepository); _classPrivateFieldInitSpec$c(this, _actionRunner, { writable: true, value: null }); this._path = props.path; if (props.actionRunner && props.actionRunner instanceof ActionRunner) { babelHelpers.classPrivateFieldSet(this, _actionRunner, props.actionRunner); } else { babelHelpers.classPrivateFieldSet(this, _actionRunner, new ActionRunner({ path: this._path })); } } babelHelpers.createClass(BaseRepository, [{ key: "processResponse", value: function processResponse(response) { if (response.status !== 'success') { BX.debug('Request was not successful'); var message = ''; if (Array.isArray(response.errors) && response.errors.length > 0) { var _iterator = _createForOfIteratorHelper$3(response.errors), _step; try { for (_iterator.s(); !(_step = _iterator.n()).done;) { var error = _step.value; if (typeof error.message === 'string' && error.message !== '') { message += "".concat(error, "\n"); } } } catch (err) { _iterator.e(err); } finally { _iterator.f(); } } throw new Error(message); } return response.data ? response.data : null; } }, { key: "path", get: function get() { return this._path; } }, { key: "actionRunner", get: function get() { return babelHelpers.classPrivateFieldGet(this, _actionRunner); } }]); return BaseRepository; }(); function _classPrivateMethodInitSpec$1(obj, privateSet) { _checkPrivateRedeclaration$d(obj, privateSet); privateSet.add(obj); } function _checkPrivateRedeclaration$d(obj, privateCollection) { if (privateCollection.has(obj)) { throw new TypeError("Cannot initialize the same private elements twice on an object"); } } function _classPrivateMethodGet$1(receiver, privateSet, fn) { if (!privateSet.has(receiver)) { throw new TypeError("attempted to get private field on non-instance"); } return fn; } var _convertCollection = /*#__PURE__*/new WeakSet(); var _convertLocation = /*#__PURE__*/new WeakSet(); var LocationRepository = /*#__PURE__*/function (_BaseRepository) { babelHelpers.inherits(LocationRepository, _BaseRepository); function LocationRepository() { var _this; var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; babelHelpers.classCallCheck(this, LocationRepository); props.path = props.path || 'location.api.location'; _this = babelHelpers.possibleConstructorReturn(this, babelHelpers.getPrototypeOf(LocationRepository).call(this, props)); _classPrivateMethodInitSpec$1(babelHelpers.assertThisInitialized(_this), _convertLocation); _classPrivateMethodInitSpec$1(babelHelpers.assertThisInitialized(_this), _convertCollection); return _this; } babelHelpers.createClass(LocationRepository, [{ key: "findParents", value: function findParents(location) { if (!(location instanceof Location)) { throw new TypeError('location must be type of Location'); } return this.actionRunner.run('findParents', { location: LocationObjectConverter.convertLocationToObject(location) }).then(this.processResponse.bind(this)).then(_classPrivateMethodGet$1(this, _convertCollection, _convertCollection2).bind(this)); } }, { key: "findByExternalId", value: function findByExternalId(externalId, sourceCode, languageId) { if (!externalId || !sourceCode || !languageId) { throw new Error('externalId and sourceCode and languageId must be defined'); } return this.actionRunner.run('findByExternalId', { externalId: externalId, sourceCode: sourceCode, languageId: languageId }).then(this.processResponse.bind(this)).then(_classPrivateMethodGet$1(this, _convertLocation, _convertLocation2).bind(this)); } }, { key: "findById", value: function findById(locationId, languageId) { if (!locationId || !languageId) { throw new Error('locationId and languageId must be defined'); } return this.actionRunner.run('findById', { id: locationId, languageId: languageId }).then(this.processResponse.bind(this)).then(_classPrivateMethodGet$1(this, _convertLocation, _convertLocation2).bind(this)); } }]); return LocationRepository; }(BaseRepository); function _convertCollection2(collectionJsonData) { var _this2 = this; if (!Array.isArray(collectionJsonData)) { throw new Error('Can\'t convert location collection data'); } var result = []; collectionJsonData.forEach(function (location) { result.push(_classPrivateMethodGet$1(_this2, _convertLocation, _convertLocation2).call(_this2, location)); }); return result; } function _convertLocation2(locationData) { if (!locationData) { return null; } if (babelHelpers["typeof"](locationData) !== 'object') { throw new Error('Can\'t convert location data'); } return LocationJsonConverter.convertJsonToLocation(locationData); } var AddressRepository = /*#__PURE__*/function (_BaseRepository) { babelHelpers.inherits(AddressRepository, _BaseRepository); function AddressRepository() { var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; babelHelpers.classCallCheck(this, AddressRepository); props.path = 'location.api.address'; return babelHelpers.possibleConstructorReturn(this, babelHelpers.getPrototypeOf(AddressRepository).call(this, props)); } babelHelpers.createClass(AddressRepository, [{ key: "findById", value: function findById(addressId) { var _this = this; if (addressId <= 0) { throw new Error('addressId must be more than zero'); } return this.actionRunner.run('findById', { addressId: addressId }).then(this.processResponse).then(function (address) { // address json data or null var result = null; if (address) { result = _this.convertJsonToAddress(address); } return result; }); } }, { key: "save", value: function save(address) { var _this2 = this; if (!address) { throw new Error('address must be defined'); } return this.actionRunner.run('save', { address: address }).then(this.processResponse).then(function (response) { //Address json data var result = null; if (babelHelpers["typeof"](response) === 'object') { result = _this2.convertJsonToAddress(response); } return result; }); } }, { key: "convertJsonToAddress", value: function convertJsonToAddress(jsonData) { return new location_core.Address(jsonData); } }]); return AddressRepository; }(BaseRepository); /** * Class responsible for the addresses format obtaining. */ var FormatRepository = /*#__PURE__*/function (_BaseRepository) { babelHelpers.inherits(FormatRepository, _BaseRepository); function FormatRepository() { var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; babelHelpers.classCallCheck(this, FormatRepository); props.path = 'location.api.format'; return babelHelpers.possibleConstructorReturn(this, babelHelpers.getPrototypeOf(FormatRepository).call(this, props)); } /** * Find all available formats * @param {string} languageId * @returns {Promise} */ babelHelpers.createClass(FormatRepository, [{ key: "findAll", value: function findAll(languageId) { var _this = this; if (!main_core.Type.isString(languageId)) { throw new TypeError('languageId must be type of string'); } return this.actionRunner.run('findAll', { languageId: languageId }).then(this.processResponse).then(function (data) { return _this.convertFormatCollection(data); }); } /** * Find address format by its code * @param {string} formatCode * @param {string} languageId * @returns {Promise} */ }, { key: "findByCode", value: function findByCode(formatCode, languageId) { if (!main_core.Type.isString(formatCode)) { throw new TypeError('formatCode must be type of string'); } if (!main_core.Type.isString(languageId)) { throw new TypeError('languageId must be type of string'); } return this.actionRunner.run('findByCode', { formatCode: formatCode, languageId: languageId }).then(this.processResponse).then(this.convertFormatData); } /** * Find default address format * @param {string} languageId * @returns {Promise} */ }, { key: "findDefault", value: function findDefault(languageId) { if (!main_core.Type.isString(languageId)) { throw new TypeError('languageId must be type of string'); } return this.actionRunner.run('findDefault', { languageId: languageId }).then(this.processResponse).then(this.convertFormatData); } }, { key: "convertFormatCollection", value: function convertFormatCollection(formatDataCollection) { var _this2 = this; if (!main_core.Type.isArray(formatDataCollection)) { throw new TypeError('Can\'t convert format collection data'); } var result = []; formatDataCollection.forEach(function (format) { result.push(_this2.convertFormatData(format)); }); return result; } }, { key: "convertFormatData", value: function convertFormatData(formatData) { if (!main_core.Type.isObject(formatData)) { throw new TypeError('Can\'t convert format data'); } return new Format(formatData); } }]); return FormatRepository; }(BaseRepository); var SourceRepository = /*#__PURE__*/function (_BaseRepository) { babelHelpers.inherits(SourceRepository, _BaseRepository); function SourceRepository() { var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; babelHelpers.classCallCheck(this, SourceRepository); props.path = 'location.api.source'; return babelHelpers.possibleConstructorReturn(this, babelHelpers.getPrototypeOf(SourceRepository).call(this, props)); } babelHelpers.createClass(SourceRepository, [{ key: "getProps", value: function getProps() { return this.actionRunner.run('getProps', {}).then(this.processResponse); } }]); return SourceRepository; }(BaseRepository); /** * Autocomplete search parameters */ /** * Base class for the source autocomplete services. */ var AutocompleteServiceBase = /*#__PURE__*/function () { function AutocompleteServiceBase() { babelHelpers.classCallCheck(this, AutocompleteServiceBase); } babelHelpers.createClass(AutocompleteServiceBase, [{ key: "autocomplete", /** * @param {String} text * @param {AutocompleteServiceParams} params */ // eslint-disable-next-line no-unused-vars value: function autocomplete(text, params) { throw new Error('Method autocomplete() Must be implemented'); } }]); return AutocompleteServiceBase; }(); function _createForOfIteratorHelper$4(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray$4(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; } function _unsupportedIterableToArray$4(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray$4(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray$4(o, minLen); } function _arrayLikeToArray$4(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; } function _classStaticPrivateMethodGet$2(receiver, classConstructor, method) { _classCheckPrivateStaticAccess$2(receiver, classConstructor); return method; } function _classCheckPrivateStaticAccess$2(receiver, classConstructor) { if (receiver !== classConstructor) { throw new TypeError("Private static access of wrong provenance"); } } var MAX_ITEMS_CNT = 100; var MAX_SIZE_IN_BYTES = 5 * 1024 * 1024; var CACHE_TTL = 3600; var AutocompleteCache = /*#__PURE__*/function () { function AutocompleteCache() { babelHelpers.classCallCheck(this, AutocompleteCache); } babelHelpers.createClass(AutocompleteCache, null, [{ key: "set", value: function set(sourceCode, params, data) { var results = _classStaticPrivateMethodGet$2(AutocompleteCache, AutocompleteCache, _getAll).call(AutocompleteCache, sourceCode); results.push({ hash: _classStaticPrivateMethodGet$2(AutocompleteCache, AutocompleteCache, _makeParamsHash).call(AutocompleteCache, params), data: data }); BX.localStorage.set(_classStaticPrivateMethodGet$2(AutocompleteCache, AutocompleteCache, _getStorageName).call(AutocompleteCache, sourceCode), _classStaticPrivateMethodGet$2(AutocompleteCache, AutocompleteCache, _getResultsToStore).call(AutocompleteCache, results), CACHE_TTL); } }, { key: "get", value: function get(sourceCode, params) { var hash = _classStaticPrivateMethodGet$2(AutocompleteCache, AutocompleteCache, _makeParamsHash).call(AutocompleteCache, params); var results = _classStaticPrivateMethodGet$2(AutocompleteCache, AutocompleteCache, _getAll).call(AutocompleteCache, sourceCode); var _iterator = _createForOfIteratorHelper$4(results), _step; try { for (_iterator.s(); !(_step = _iterator.n()).done;) { var result = _step.value; if (result && result.hash === hash) { return result; } } } catch (err) { _iterator.e(err); } finally { _iterator.f(); } return null; } }]); return AutocompleteCache; }(); function _getResultsToStore(results) { if (new Blob([JSON.stringify(results)]).size > MAX_SIZE_IN_BYTES) { return []; } if (results.length > MAX_ITEMS_CNT) { return results.slice(results.length - MAX_ITEMS_CNT); } return results; } function _getAll(sourceCode) { var currentResults = BX.localStorage.get(_classStaticPrivateMethodGet$2(AutocompleteCache, AutocompleteCache, _getStorageName).call(AutocompleteCache, sourceCode)); return Array.isArray(currentResults) ? currentResults : []; } function _makeParamsHash(params) { return main_md5.md5(JSON.stringify(params)); } function _getStorageName(sourceCode) { return "location".concat(sourceCode, "AutocompleteCache"); } var PhotoServiceBase = /*#__PURE__*/function () { function PhotoServiceBase() { babelHelpers.classCallCheck(this, PhotoServiceBase); } babelHelpers.createClass(PhotoServiceBase, [{ key: "requestPhotos", value: function requestPhotos(props) { throw new Error('Must be implemented'); } }]); return PhotoServiceBase; }(); /** * Base class for source maps */ var MapBase = /*#__PURE__*/function (_EventEmitter) { babelHelpers.inherits(MapBase, _EventEmitter); function MapBase() { var _this; babelHelpers.classCallCheck(this, MapBase); _this = babelHelpers.possibleConstructorReturn(this, babelHelpers.getPrototypeOf(MapBase).call(this)); _this.setEventNamespace('BX.Location.Core.MapBase'); return _this; } babelHelpers.createClass(MapBase, [{ key: "render", value: function render(props) { throw new Error('Must be implemented'); } }, { key: "panTo", value: function panTo(latitude, longitude) { throw new Error('Must be implemented'); } }, { key: "onLocationChangedEventSubscribe", value: function onLocationChangedEventSubscribe(listener) { throw new Error('Must be implemented'); } }, { key: "onMapShow", value: function onMapShow() {} }, { key: "destroy", value: function destroy() {} }, { key: "location", set: function set(location) { throw new Error('Must be implemented'); } }, { key: "mode", set: function set(mode) { throw new Error('Must be implemented'); } }, { key: "zoom", set: function set(zoom) { throw new Error('Must be implemented'); } }], [{ key: "getZoomByLocation", value: function getZoomByLocation(location) { var defaultZoom = 18; if (!location) { return defaultZoom; } var locationType = location.type; if (locationType <= 0) { return defaultZoom; } if (locationType < location_core.LocationType.COUNTRY) { return 1; } else if (locationType === location_core.LocationType.COUNTRY) { return 4; } else if (locationType <= location_core.LocationType.ADM_LEVEL_1) { return 6; } else if (locationType <= location_core.LocationType.LOCALITY) { return 11; } else if (locationType <= location_core.LocationType.STREET) { return 16; } return defaultZoom; } }]); return MapBase; }(main_core_events.EventEmitter); /** * Base class for the sources */ var SourceBase = /*#__PURE__*/function () { function SourceBase() { babelHelpers.classCallCheck(this, SourceBase); } babelHelpers.createClass(SourceBase, [{ key: "sourceCode", get: function get() { throw new Error('Must be implemented'); } }, { key: "map", get: function get() { throw new Error('Must be implemented'); } }, { key: "autocompleteService", get: function get() { throw new Error('Must be implemented'); } }, { key: "photoService", get: function get() { throw new Error('Must be implemented'); } }, { key: "geocodingService", get: function get() { throw new Error('Must be implemented'); } }]); return SourceBase; }(); /** * Base class for the source geocoding service */ var GeocodingServiceBase = /*#__PURE__*/function () { function GeocodingServiceBase() { babelHelpers.classCallCheck(this, GeocodingServiceBase); } babelHelpers.createClass(GeocodingServiceBase, [{ key: "geocode", value: function geocode(addressString) { if (!addressString) { return Promise.resolve([]); } return this.geocodeConcrete(addressString); } }, { key: "geocodeConcrete", value: function geocodeConcrete(addressString) { throw new Error('Method geocodeConcrete() must be implemented'); } }]); return GeocodingServiceBase; }(); var ControlMode = /*#__PURE__*/function () { function ControlMode() { babelHelpers.classCallCheck(this, ControlMode); } babelHelpers.createClass(ControlMode, null, [{ key: "isValid", value: function isValid(mode) { return mode === ControlMode.edit || mode === ControlMode.view; } }, { key: "edit", get: function get() { return 'edit'; } }, { key: "view", get: function get() { return 'view'; } }]); return ControlMode; }(); var LocationFieldType = function LocationFieldType() { babelHelpers.classCallCheck(this, LocationFieldType); }; babelHelpers.defineProperty(LocationFieldType, "POSTAL_CODE", 50); babelHelpers.defineProperty(LocationFieldType, "ISO_3166_1_ALPHA_2", 1000); var SourceCreationError = /*#__PURE__*/function (_Error) { babelHelpers.inherits(SourceCreationError, _Error); function SourceCreationError() { babelHelpers.classCallCheck(this, SourceCreationError); return babelHelpers.possibleConstructorReturn(this, babelHelpers.getPrototypeOf(SourceCreationError).apply(this, arguments)); } return SourceCreationError; }( /*#__PURE__*/babelHelpers.wrapNativeSuper(Error)); var MethodNotImplemented = /*#__PURE__*/function (_Error2) { babelHelpers.inherits(MethodNotImplemented, _Error2); function MethodNotImplemented() { babelHelpers.classCallCheck(this, MethodNotImplemented); return babelHelpers.possibleConstructorReturn(this, babelHelpers.getPrototypeOf(MethodNotImplemented).apply(this, arguments)); } return MethodNotImplemented; }( /*#__PURE__*/babelHelpers.wrapNativeSuper(Error)); function _classStaticPrivateFieldSpecSet(receiver, classConstructor, descriptor, value) { _classCheckPrivateStaticAccess$3(receiver, classConstructor); _classCheckPrivateStaticFieldDescriptor(descriptor, "set"); _classApplyDescriptorSet(receiver, descriptor, value); return value; } function _classApplyDescriptorSet(receiver, descriptor, value) { if (descriptor.set) { descriptor.set.call(receiver, value); } else { if (!descriptor.writable) { throw new TypeError("attempted to set read only private field"); } descriptor.value = value; } } function _classStaticPrivateFieldSpecGet(receiver, classConstructor, descriptor) { _classCheckPrivateStaticAccess$3(receiver, classConstructor); _classCheckPrivateStaticFieldDescriptor(descriptor, "get"); return _classApplyDescriptorGet(receiver, descriptor); } function _classCheckPrivateStaticFieldDescriptor(descriptor, action) { if (descriptor === undefined) { throw new TypeError("attempted to " + action + " private static field before its declaration"); } } function _classCheckPrivateStaticAccess$3(receiver, classConstructor) { if (receiver !== classConstructor) { throw new TypeError("Private static access of wrong provenance"); } } function _classApplyDescriptorGet(receiver, descriptor) { if (descriptor.get) { return descriptor.get.call(receiver); } return descriptor.value; } var ErrorPublisher = /*#__PURE__*/function (_EventEmitter) { babelHelpers.inherits(ErrorPublisher, _EventEmitter); babelHelpers.createClass(ErrorPublisher, null, [{ key: "getInstance", value: function getInstance() { if (_classStaticPrivateFieldSpecGet(ErrorPublisher, ErrorPublisher, _instance) === null) { _classStaticPrivateFieldSpecSet(ErrorPublisher, ErrorPublisher, _instance, new ErrorPublisher()); } return _classStaticPrivateFieldSpecGet(ErrorPublisher, ErrorPublisher, _instance); } }]); function ErrorPublisher() { var _this; babelHelpers.classCallCheck(this, ErrorPublisher); _this = babelHelpers.possibleConstructorReturn(this, babelHelpers.getPrototypeOf(ErrorPublisher).call(this)); _this.setEventNamespace('BX.Location.Core.ErrorPublisher'); return _this; } babelHelpers.createClass(ErrorPublisher, [{ key: "notify", value: function notify(errors) { this.emit(_classStaticPrivateFieldSpecGet(ErrorPublisher, ErrorPublisher, _onErrorEvent), { errors: errors }); } }, { key: "subscribe", value: function subscribe(listener) { babelHelpers.get(babelHelpers.getPrototypeOf(ErrorPublisher.prototype), "subscribe", this).call(this, _classStaticPrivateFieldSpecGet(ErrorPublisher, ErrorPublisher, _onErrorEvent), listener); } }]); return ErrorPublisher; }(main_core_events.EventEmitter); var _instance = { writable: true, value: null }; var _onErrorEvent = { writable: true, value: 'onError' }; function _classPrivateFieldInitSpec$d(obj, privateMap, value) { _checkPrivateRedeclaration$e(obj, privateMap); privateMap.set(obj, value); } function _checkPrivateRedeclaration$e(obj, privateCollection) { if (privateCollection.has(obj)) { throw new TypeError("Cannot initialize the same private elements twice on an object"); } } function _classStaticPrivateFieldSpecSet$1(receiver, classConstructor, descriptor, value) { _classCheckPrivateStaticAccess$4(receiver, classConstructor); _classCheckPrivateStaticFieldDescriptor$1(descriptor, "set"); _classApplyDescriptorSet$1(receiver, descriptor, value); return value; } function _classApplyDescriptorSet$1(receiver, descriptor, value) { if (descriptor.set) { descriptor.set.call(receiver, value); } else { if (!descriptor.writable) { throw new TypeError("attempted to set read only private field"); } descriptor.value = value; } } function _classStaticPrivateFieldSpecGet$1(receiver, classConstructor, descriptor) { _classCheckPrivateStaticAccess$4(receiver, classConstructor); _classCheckPrivateStaticFieldDescriptor$1(descriptor, "get"); return _classApplyDescriptorGet$1(receiver, descriptor); } function _classCheckPrivateStaticFieldDescriptor$1(descriptor, action) { if (descriptor === undefined) { throw new TypeError("attempted to " + action + " private static field before its declaration"); } } function _classCheckPrivateStaticAccess$4(receiver, classConstructor) { if (receiver !== classConstructor) { throw new TypeError("Private static access of wrong provenance"); } } function _classApplyDescriptorGet$1(receiver, descriptor) { if (descriptor.get) { return descriptor.get.call(receiver); } return descriptor.value; } var _lastAddressLocalStorageKey = /*#__PURE__*/new WeakMap(); var Storage = /*#__PURE__*/function () { function Storage() { babelHelpers.classCallCheck(this, Storage); _classPrivateFieldInitSpec$d(this, _lastAddressLocalStorageKey, { writable: true, value: "bitrixLocationLastAddress" }); } babelHelpers.createClass(Storage, [{ key: "lastAddress", set: function set(address) { if (address) { BX.localStorage.set(babelHelpers.classPrivateFieldGet(this, _lastAddressLocalStorageKey), { 'json': address.toJson() }, 86400 * 30); } }, get: function get() { var lastAddress = BX.localStorage.get(babelHelpers.classPrivateFieldGet(this, _lastAddressLocalStorageKey)); if (lastAddress && lastAddress['json']) { try { return JsonConverter.convertJsonToAddress(JSON.parse(lastAddress['json'])); } catch (e) {} } return null; } }], [{ key: "getInstance", value: function getInstance() { if (_classStaticPrivateFieldSpecGet$1(Storage, Storage, _instance$1) === null) { _classStaticPrivateFieldSpecSet$1(Storage, Storage, _instance$1, new Storage()); } return _classStaticPrivateFieldSpecGet$1(Storage, Storage, _instance$1); } }]); return Storage; }(); var _instance$1 = { writable: true, value: null }; function _classPrivateFieldInitSpec$e(obj, privateMap, value) { _checkPrivateRedeclaration$f(obj, privateMap); privateMap.set(obj, value); } function _checkPrivateRedeclaration$f(obj, privateCollection) { if (privateCollection.has(obj)) { throw new TypeError("Cannot initialize the same private elements twice on an object"); } } var _latitude$2 = /*#__PURE__*/new WeakMap(); var _longitude$2 = /*#__PURE__*/new WeakMap(); /** * Base class for the working with latitude and longitude */ var Point = /*#__PURE__*/function () { /** {String} */ /** {String} */ function Point(latitude, longitude) { babelHelpers.classCallCheck(this, Point); _classPrivateFieldInitSpec$e(this, _latitude$2, { writable: true, value: void 0 }); _classPrivateFieldInitSpec$e(this, _longitude$2, { writable: true, value: void 0 }); babelHelpers.classPrivateFieldSet(this, _latitude$2, latitude); babelHelpers.classPrivateFieldSet(this, _longitude$2, longitude); } babelHelpers.createClass(Point, [{ key: "toArray", value: function toArray() { return [this.latitude, this.longitude]; } }, { key: "latitude", get: function get() { return babelHelpers.classPrivateFieldGet(this, _latitude$2); } }, { key: "longitude", get: function get() { return babelHelpers.classPrivateFieldGet(this, _longitude$2); } }], [{ key: "fromJson", value: function fromJson(jsonData) { return new Point(jsonData.latitude, jsonData.longitude); } }]); return Point; }(); var DistanceCalculator = /*#__PURE__*/function () { function DistanceCalculator() { babelHelpers.classCallCheck(this, DistanceCalculator); } babelHelpers.createClass(DistanceCalculator, null, [{ key: "getDistanceFromLatLonInKm", /** * @param {number} lat1 * @param {number} lon1 * @param {number} lat2 * @param {number} lon2 * @returns {number} */ value: function getDistanceFromLatLonInKm(lat1, lon1, lat2, lon2) { var R = 6371; // Radius of the earth in km var dLat = DistanceCalculator.deg2rad(lat2 - lat1); var dLon = DistanceCalculator.deg2rad(lon2 - lon1); var a = Math.sin(dLat / 2) * Math.sin(dLat / 2) + Math.cos(DistanceCalculator.deg2rad(lat1)) * Math.cos(DistanceCalculator.deg2rad(lat2)) * Math.sin(dLon / 2) * Math.sin(dLon / 2); var c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a)); return R * c; } /** * @param {number} deg * @returns {number} */ }, { key: "deg2rad", value: function deg2rad(deg) { return deg * (Math.PI / 180); } }]); return DistanceCalculator; }(); exports.Location = Location; exports.Address = Address; exports.Format = Format; exports.AddressType = AddressType; exports.LocationType = LocationType; exports.LocationFieldType = LocationFieldType; exports.FormatTemplateType = FormatTemplateType; exports.FormatTemplate = FormatTemplate; exports.FormatTemplateCollection = FormatTemplateCollection; exports.LocationRepository = LocationRepository; exports.AddressRepository = AddressRepository; exports.FormatRepository = FormatRepository; exports.SourceRepository = SourceRepository; exports.AddressStringConverter = StringConverter; exports.AutocompleteServiceBase = AutocompleteServiceBase; exports.AutocompleteCache = AutocompleteCache; exports.PhotoServiceBase = PhotoServiceBase; exports.BaseSource = SourceBase; exports.MapBase = MapBase; exports.GeocodingServiceBase = GeocodingServiceBase; exports.LocationJsonConverter = LocationJsonConverter; exports.ControlMode = ControlMode; exports.SourceCreationError = SourceCreationError; exports.MethodNotImplemented = MethodNotImplemented; exports.ErrorPublisher = ErrorPublisher; exports.Storage = Storage; exports.Point = Point; exports.DistanceCalculator = DistanceCalculator; }((this.BX.Location.Core = this.BX.Location.Core || {}),BX,BX,BX.Location.Core,BX.Event)); //# sourceMappingURL=core.bundle.js.map