| Current Path : /var/www/element/data/www/revenuestory.ru/bitrix/js/location/widget/dist/ |
| Current File : /var/www/element/data/www/revenuestory.ru/bitrix/js/location/widget/dist/widget.bundle.js.map |
{"version":3,"file":"widget.bundle.js","sources":["../src/state.js","../src/mappopup/addressstring.js","../src/mappopup/addressapplier.js","../src/mappopup/popup.js","../src/mappopup/mappopup.js","../src/address/features/basefeature.js","../src/address/address.js","../src/autocomplete/menubottom.js","../src/autocomplete/menu.js","../src/autocomplete/prompt.js","../src/autocomplete/addressstring.js","../src/autocomplete/autocomplete.js","../src/mappopup/photo.js","../src/mappopup/gallery.js","../src/fields/field.js","../src/fields/fields.js","../src/address/features/mapfeature.js","../src/address/features/autocompletefeature.js","../src/address/features/fieldsfeature.js","../src/address/features/mapfeatureauto.js","../src/factory.js","../src/ui-address/switch.js","../src/ui-address/icon.js","../src/ui-address/ui-address.js","../src/widget.js"],"sourcesContent":["/**\n * Contains\n * */\nexport default class State\n{\n\tstatic INITIAL = 'INITIAL';\n\tstatic DATA_INPUTTING = 'DATA_INPUTTING';\n\tstatic DATA_SELECTED = 'DATA_SELECTED';\n\tstatic DATA_SUPPOSED = 'DATA_SUPPOSED';\n\tstatic DATA_LOADING = 'DATA_LOADING';\n\tstatic DATA_LOADED = 'DATA_LOADED';\n}","import {Tag} from 'main.core';\nimport {Address, Format, AddressStringConverter, FormatTemplateType} from 'location.core';\n\nexport default class AddressString\n{\n\t#address;\n\t#element;\n\t#stringElement;\n\t#addressFormat;\n\n\tconstructor(props)\n\t{\n\t\tif (!(props.addressFormat instanceof Format))\n\t\t{\n\t\t\tthrow new Error('addressFormat must be instance of Format');\n\t\t}\n\n\t\tthis.#addressFormat = props.addressFormat;\n\t}\n\n\tset address(address: ?Address): void\n\t{\n\t\tthis.#address = address;\n\n\t\tif (!this.#stringElement)\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tthis.#stringElement.innerHTML = this.#convertAddressToString(address);\n\n\t\tif (!address && !this.isHidden())\n\t\t{\n\t\t\tthis.hide();\n\t\t}\n\t\telse if (address && this.isHidden())\n\t\t{\n\t\t\tthis.show();\n\t\t}\n\t}\n\n\t#convertAddressToString(address: ?Address): string\n\t{\n\t\tlet result = '';\n\n\t\tif (address)\n\t\t{\n\t\t\tresult = AddressStringConverter.convertAddressToStringTemplate(\n\t\t\t\taddress,\n\t\t\t\tthis.#addressFormat.getTemplate(FormatTemplateType.DEFAULT),\n\t\t\t\tAddressStringConverter.CONTENT_TYPE_HTML,\n\t\t\t\t', ',\n\t\t\t\tthis.#addressFormat\n\t\t\t);\n\t\t}\n\n\t\treturn result;\n\t}\n\t\n\trender(props): Element\n\t{\n\t\tthis.#address = props.address;\n\t\tconst addresStr = this.#convertAddressToString(this.#address);\n\t\tthis.#stringElement = Tag.render`<div class=\"location-map-address-text\">${addresStr}</div>`;\n\n\t\tthis.#element = Tag.render`\n\t\t\t<div class=\"location-map-address-container\">\n\t\t\t\t<div class=\"location-map-address-icon\"></div>\n\t\t\t\t${this.#stringElement}\n\t\t\t</div>`;\n\n\t\tif (addresStr === '')\n\t\t{\n\t\t\tthis.hide();\n\t\t}\n\n\t\treturn this.#element;\n\t}\n\n\tshow()\n\t{\n\t\tif (this.#element)\n\t\t{\n\t\t\tthis.#element.style.display = 'block';\n\t\t}\n\t}\n\n\thide()\n\t{\n\t\tif (this.#element)\n\t\t{\n\t\t\tthis.#element.style.display = 'none';\n\t\t}\n\t}\n\n\tisHidden()\n\t{\n\t\treturn !this.#element || this.#element.style.display === 'none';\n\t}\n}","import {Vue} from 'ui.vue';\nimport {Address, AddressStringConverter} from 'location.core';\n\nexport default Vue.extend({\n\tprops: {\n\t\taddress: {required: true},\n\t\taddressFormat: {required: true},\n\t\tisHidden: {required: true},\n\t},\n\tmethods: {\n\t\thandleApplyClick()\n\t\t{\n\t\t\tthis.$emit('apply', {address: this.address});\n\t\t},\n\t\tconvertAddressToString(address: ?Address): string\n\t\t{\n\t\t\tif (!address)\n\t\t\t{\n\t\t\t\treturn '';\n\t\t\t}\n\n\t\t\treturn address.toString(this.addressFormat, AddressStringConverter.STRATEGY_TYPE_TEMPLATE_COMMA);\n\t\t}\n\t},\n\tcomputed: {\n\t\taddressString()\n\t\t{\n\t\t\tif (!this.address)\n\t\t\t{\n\t\t\t\treturn '';\n\t\t\t}\n\n\t\t\treturn this.address.toString(this.addressFormat, AddressStringConverter.STRATEGY_TYPE_TEMPLATE_COMMA, AddressStringConverter.CONTENT_TYPE_TEXT);\n\t\t},\n\t\tcontainerStyles()\n\t\t{\n\t\t\treturn {\n\t\t\t\tdisplay: this.isHidden ? 'none' : 'flex'\n\t\t\t};\n\t\t},\n\t\tcontainerClasses()\n\t\t{\n\t\t\treturn this.isHidden ? {hidden: true} : {};\n\t\t},\n\t\tlocalize()\n\t\t{\n\t\t\treturn Vue.getFilteredPhrases('LOCATION_WIDGET_');\n\t\t},\n\t},\n\ttemplate: `\n\t\t<div\n\t\t\t:class=\"containerClasses\"\n\t\t\t:style=\"containerStyles\"\n\t\t\tclass=\"location-map-address-changed\"\n\t\t>\n\t\t\t<div class=\"location-map-address-changed-inner\">\n\t\t\t<div class=\"location-map-address-changed-title\">\n\t\t\t\t{{localize.LOCATION_WIDGET_AUI_ADDRESS_CHANGED_NEW_ADDRESS}}\n\t\t\t</div>\n\t\t\t<div class=\"location-map-address-changed-text\">{{addressString}}</div>\n\t\t\t</div>\n\t\t\t<button @click=\"handleApplyClick\" type=\"button\" class=\"location-map-address-apply-btn\">\n\t\t\t\t{{localize.LOCATION_WIDGET_AUI_ADDRESS_APPLY}}\n\t\t\t</button>\n\t\t</div>\t\n\t`\n});\n","import {Popup as MainPopup} from 'main.popup';\nimport {Dom} from 'main.core';\n\n/**\n * Popup window, which contains map\n */\nexport default class Popup extends MainPopup\n{\n\tgetBindElement()\n\t{\n\t\treturn this.bindElement;\n\t}\n\n\tadjustPosition(bindOptions: {\n\t\tforceBindPosition?: boolean,\n\t\tforceLeft?: boolean,\n\t\tforceTop?: boolean,\n\t\tposition?: 'right' | 'top' | 'bootom'\n\t}): void\n\t{\n\t\tlet isCustomPosition, isCustomPositionSuccess;\n\n\t\tif (this.bindOptions.position && this.bindOptions.position === 'right')\n\t\t{\n\t\t\tisCustomPosition = true;\n\t\t\tisCustomPositionSuccess = this.#adjustRightPosition();\n\t\t}\n\n\t\tif (!(isCustomPosition && isCustomPositionSuccess))\n\t\t{\n\t\t\tsuper.adjustPosition(bindOptions);\n\t\t}\n\t}\n\n\t/**\n\t * Adjust the popup in right position\n\t * @returns {boolean} an indicator whether or not we have managed to adjust the popup successfully\n\t */\n\t#adjustRightPosition(): boolean\n\t{\n\t\tconst bindElRect = this.bindElement.getBoundingClientRect();\n\t\tconst popupHeight = this.getPopupContainer().offsetHeight;\n\t\tconst popupWidth = this.getPopupContainer().offsetWidth;\n\n\t\t/**\n\t\t * Check if the popup fits in the viewport\n\t\t */\n\t\tif ((bindElRect.left + bindElRect.width + popupWidth) > document.documentElement.clientWidth)\n\t\t{\n\t\t\treturn false;\n\t\t}\n\n\t\tlet angleOffsetY = popupHeight / 2;\n\n\t\tconst left = bindElRect.left + bindElRect.width + 10;\n\t\tlet top = window.pageYOffset + bindElRect.top + bindElRect.height / 2 - popupHeight / 2;\n\n\t\tif(top < window.pageYOffset)\n\t\t{\n\t\t\tangleOffsetY -= window.pageYOffset - top;\n\t\t\ttop = window.pageYOffset;\n\t\t}\n\t\telse if(top > window.pageYOffset + document.body.clientHeight - popupHeight)\n\t\t{\n\t\t\tangleOffsetY += top - (window.pageYOffset + document.body.clientHeight - popupHeight);\n\t\t\ttop = window.pageYOffset + document.body.clientHeight - popupHeight;\n\t\t}\n\n\t\tthis.setAngle({position: 'left', offset: angleOffsetY});\n\n\t\tDom.adjust(this.popupContainer, {\n\t\t\tstyle: {\n\t\t\t\ttop: `${top}px`,\n\t\t\t\tleft: `${left}px`,\n\t\t\t\tzIndex: this.getZindex()\n\t\t\t}\n\t\t});\n\n\t\treturn true;\n\t}\n}\n","import {\n\tTag,\n\tType,\n\tDom,\n\tEvent,\n\tLoc\n} from 'main.core';\nimport {\n\tAddress,\n\tFormat,\n\tLocation,\n\tControlMode,\n\tMapBase,\n\tGeocodingServiceBase,\n\tAddressStringConverter,\n\tLocationType\n} from 'location.core';\nimport {EventEmitter} from 'main.core.events';\nimport AddressString from './addressstring';\nimport AddressApplier from './addressapplier';\nimport Popup from './popup';\n\nimport 'ui.design-tokens';\nimport './css/mappopup.css';\n\nexport default class MapPopup extends EventEmitter\n{\n\tstatic #onChangedEvent = 'onChanged';\n\tstatic #onMouseOverEvent = 'onMouseOver';\n\tstatic #onMouseOutEvent = 'onMouseOut';\n\tstatic #onShowedEvent = 'onShow';\n\tstatic #onClosedEvent = 'onClose';\n\n\t#map;\n\t#mode;\n\t#address;\n\t#popup;\n\t#addressString;\n\t#addressApplier;\n\t#addressFormat;\n\t#gallery;\n\t#locationRepository;\n\t#isMapRendered = false;\n\t#mapInnerContainer;\n\t#geocodingService;\n\t#contentWrapper;\n\t#userLocationPoint;\n\n\tconstructor(props)\n\t{\n\t\tsuper(props);\n\t\tthis.setEventNamespace('BX.Location.Widget.MapPopup');\n\n\t\tif (!(props.map instanceof MapBase))\n\t\t{\n\t\t\tBX.debug('map must be instance of Map');\n\t\t}\n\n\t\tthis.#map = props.map;\n\n\t\tif (props.geocodingService instanceof GeocodingServiceBase)\n\t\t{\n\t\t\tthis.#geocodingService = props.geocodingService;\n\t\t}\n\n\t\tthis.#map.onLocationChangedEventSubscribe(this.#onLocationChanged.bind(this));\n\n\t\tif (!(props.popup instanceof Popup))\n\t\t{\n\t\t\tBX.debug('popup must be instance of Popup');\n\t\t}\n\n\t\tthis.#popup = props.popup;\n\n\t\tif (!(props.addressFormat instanceof Format))\n\t\t{\n\t\t\tBX.debug('addressFormat must be instance of Format');\n\t\t}\n\n\t\tthis.#addressFormat = props.addressFormat;\n\n\t\tthis.#addressString = new AddressString({\n\t\t\taddressFormat: this.#addressFormat\n\t\t});\n\t\tthis.#createAddressApplier();\n\n\t\tif (props.gallery)\n\t\t{\n\t\t\tthis.#gallery = props.gallery;\n\t\t}\n\n\t\tthis.#locationRepository = props.locationRepository;\n\t\tthis.#userLocationPoint = props.userLocationPoint;\n\t}\n\n\t#createAddressApplier()\n\t{\n\t\tthis.#addressApplier = new AddressApplier(\n\t\t\t{\n\t\t\t\tpropsData: {\n\t\t\t\t\taddress: this.#address,\n\t\t\t\t\taddressFormat: this.#addressFormat,\n\t\t\t\t\tisHidden: true,\n\t\t\t\t}\n\t\t\t}\n\t\t);\n\t\tthis.#addressApplier.$mount();\n\t\tthis.#addressApplier.$on('apply', (event) => {\n\t\t\tconst prevAddress = event.address;\n\n\t\t\tthis.#address = prevAddress;\n\t\t\tthis.#addressString.address = prevAddress;\n\t\t\tthis.#addressApplier.$props.isHidden = true;\n\n\t\t\tthis.emit(\n\t\t\t\tMapPopup.#onChangedEvent,\n\t\t\t\t{address: prevAddress}\n\t\t\t);\n\t\t});\n\t}\n\n\t#onLocationChanged(event: Event)\n\t{\n\t\tconst data = event.getData();\n\t\tconst location = data.location;\n\t\tconst address = location.toAddress();\n\n\t\tif (!this.#address)\n\t\t{\n\t\t\tthis.#address = address;\n\t\t\tthis.#addressString.address = address;\n\t\t\tthis.emit(\n\t\t\t\tMapPopup.#onChangedEvent,\n\t\t\t\t{address: address}\n\t\t\t);\n\t\t}\n\t\telse if (address.fieldCollection.isEqual(this.#address.fieldCollection, LocationType.ADDRESS_LINE_1))\n\t\t{\n\t\t\tthis.#address.latitude = address.latitude;\n\t\t\tthis.#address.longitude = address.longitude;\n\n\t\t\tif (this.#address.location)\n\t\t\t{\n\t\t\t\tthis.#address.location.latitude = address.latitude;\n\t\t\t\tthis.#address.location.longitude = address.longitude;\n\t\t\t}\n\n\t\t\tthis.emit(\n\t\t\t\tMapPopup.#onChangedEvent,\n\t\t\t\t{address: this.#address}\n\t\t\t);\n\n\t\t\tthis.#addressApplier.$props.isHidden = true;\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis.#addressString.address = address;\n\t\t\tthis.#addressApplier.$props.address = address;\n\t\t\tthis.#addressApplier.$props.isHidden = false;\n\t\t}\n\n\t\tif (this.#gallery)\n\t\t{\n\t\t\tthis.#gallery.location = location;\n\t\t}\n\t}\n\n\trender(props: object): void\n\t{\n\t\tthis.#address = props.address;\n\t\tthis.#mode = props.mode;\n\t\tthis.#isMapRendered = false;\n\t\tthis.#mapInnerContainer = Tag.render`<div class=\"location-map-inner\"></div>`;\n\t\tthis.#renderPopup(props.bindElement, this.#mapInnerContainer);\n\t}\n\n\t#renderPopup(bindElement: Element, mapInnerContainer: Element): Popup\n\t{\n\t\tlet gallery = '';\n\n\t\tif (this.#gallery)\n\t\t{\n\t\t\tgallery = this.#gallery.render();\n\t\t}\n\n\t\tconst thirdPartyWarningNode = Tag.render`\n\t\t\t<div class=\"location-map-address-third-party-warning\">\n\t\t\t\t${Loc.getMessage('LOCATION_WIDGET_THIRD_PARTY_WARNING')}\n\t\t\t</div>\n\t\t`;\n\n\t\tthis.#contentWrapper = Tag.render`\n\t\t\t<div class=\"location-map-wrapper\">\n\t\t\t\t<div class=\"location-map-container\">\n\t\t\t\t\t${mapInnerContainer}\n\t\t\t\t\t${gallery}\n\t\t\t\t</div>\n\t\t\t\t${this.#mode === ControlMode.edit ? this.#addressString.render({address: this.#address}) : ''}\n\t\t\t\t${thirdPartyWarningNode}\n\t\t\t\t${this.#mode === ControlMode.edit ? this.#addressApplier.$el : ''}\n\t\t\t</div>`;\n\n\t\tEvent.bind(this.#contentWrapper, 'click', (e) => e.stopPropagation());\n\t\tEvent.bind(this.#contentWrapper, 'mouseover', (e) => this.emit(MapPopup.#onMouseOverEvent, e));\n\t\tEvent.bind(this.#contentWrapper, 'mouseout', (e) => this.emit(MapPopup.#onMouseOutEvent, e));\n\t\tthis.bindElement = bindElement;\n\t\tthis.#popup.setContent(this.#contentWrapper);\n\t}\n\n\tget bindElement()\n\t{\n\t\treturn this.#popup.getBindElement();\n\t}\n\n\tset bindElement(bindElement: Element)\n\t{\n\t\tif (Type.isDomNode(bindElement))\n\t\t{\n\t\t\tthis.#popup.setBindElement(bindElement);\n\t\t}\n\t\telse\n\t\t{\n\t\t\tBX.debug('bindElement must be type of dom node');\n\t\t}\n\t}\n\n\tset address(address: ?Address): void\n\t{\n\t\tthis.#address = address;\n\t\tthis.#addressString.address = address;\n\n\t\tthis.#convertAddressToLocation(address)\n\t\t\t.then((location) => {\n\t\t\t\tthis.#setLocationInternal(location);\n\t\t\t});\n\t}\n\n\t#extractLatLon(address: Address): ?Array\n\t{\n\t\tlet result = null;\n\t\tlet lat;\n\t\tlet lon;\n\n\t\tif (address.latitude && address.longitude)\n\t\t{\n\t\t\tlat = address.latitude;\n\t\t\tlon = address.longitude;\n\t\t}\n\t\telse if (address.location\n\t\t\t&& address.location.latitude\n\t\t\t&& address.location.longitude\n\t\t)\n\t\t{\n\t\t\tlat = address.location.latitude;\n\t\t\tlon = address.location.longitude;\n\t\t}\n\n\t\tif (lat && lat !== '0' && lon && lon !== '0')\n\t\t{\n\t\t\tresult = [lat, lon];\n\t\t}\n\n\t\treturn result;\n\t}\n\n\t#convertAddressToLocation(address: ?Address, useUserLocation: boolean = false): Promise<?Location>\n\t{\n\t\treturn new Promise((resolve) => {\n\t\t\tif (useUserLocation)\n\t\t\t{\n\t\t\t\tresolve(\n\t\t\t\t\tthis.#userLocationPoint && this.#mode !== ControlMode.view\n\t\t\t\t\t\t? new Location({\n\t\t\t\t\t\t\tlatitude: this.#userLocationPoint.latitude,\n\t\t\t\t\t\t\tlongitude: this.#userLocationPoint.longitude\n\t\t\t\t\t\t})\n\t\t\t\t\t\t: null\n\t\t\t\t);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (address)\n\t\t\t{\n\t\t\t\tconst latLon = this.#extractLatLon(address);\n\n\t\t\t\tif (latLon)\n\t\t\t\t{\n\t\t\t\t\tresolve(new Location({\n\t\t\t\t\t\tlatitude: latLon[0],\n\t\t\t\t\t\tlongitude: latLon[1],\n\t\t\t\t\t\ttype: address.getType()\n\t\t\t\t\t}));\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tresolve(null);\n\t\t});\n\t}\n\n\t#setLocationInternal(location: ?Location): void\n\t{\n\t\tif (this.#map)\n\t\t{\n\t\t\tthis.#map.location = location;\n\t\t}\n\n\t\tif (this.#gallery)\n\t\t{\n\t\t\tthis.#gallery.location = location;\n\t\t}\n\t}\n\n\tset mode(mode: string): void\n\t{\n\t\tthis.#mode = mode;\n\t\tthis.#map.mode = mode;\n\t}\n\n\t#renderMap({location})\n\t{\n\t\treturn this.#map.render({\n\t\t\tmapContainer: this.#mapInnerContainer,\n\t\t\tlocation: location,\n\t\t\tmode: this.#mode\n\t\t});\n\t}\n\n\tshow(useUserLocation: boolean = false): void\n\t{\n\t\tthis.#convertAddressToLocation(this.#address, useUserLocation)\n\t\t\t.then((location) => {\n\t\t\t\tif (!location)\n\t\t\t\t{\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tthis.#popup.show();\n\n\t\t\t\tif (!this.#isMapRendered)\n\t\t\t\t{\n\t\t\t\t\tthis.#renderMap({location})\n\t\t\t\t\t\t.then(() => {\n\t\t\t\t\t\t\tif (this.#gallery)\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tthis.#gallery.location = location;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tthis.emit(MapPopup.#onShowedEvent);\n\t\t\t\t\t\t\tthis.#map.onMapShow();\n\t\t\t\t\t\t});\n\n\t\t\t\t\tthis.#isMapRendered = true;\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tthis.#map.location = location;\n\n\t\t\t\t\tif (this.#gallery)\n\t\t\t\t\t{\n\t\t\t\t\t\tthis.#gallery.location = location;\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.emit(MapPopup.#onShowedEvent);\n\t\t\t\t\tthis.#map.onMapShow();\n\t\t\t\t}\n\t\t\t});\n\t}\n\n\tisShown(): boolean\n\t{\n\t\treturn this.#popup.isShown();\n\t}\n\n\tclose(): void\n\t{\n\t\tthis.#popup.close();\n\t\tthis.#addressApplier.$props.isHidden = true;\n\t\tthis.emit(MapPopup.#onClosedEvent);\n\t}\n\n\tonChangedEventSubscribe(listener: Function): void\n\t{\n\t\tthis.subscribe(MapPopup.#onChangedEvent, listener);\n\t}\n\n\tonMouseOverSubscribe(listener: Function): void\n\t{\n\t\tthis.subscribe(MapPopup.#onMouseOverEvent, listener);\n\t}\n\n\tonMouseOutSubscribe(listener: Function): void\n\t{\n\t\tthis.subscribe(MapPopup.#onMouseOutEvent, listener);\n\t}\n\n\tsubscribeOnShowedEvent(listener: Function): void\n\t{\n\t\tthis.subscribe(MapPopup.#onShowedEvent, listener);\n\t}\n\n\tsubscribeOnClosedEvent(listener: Function): void\n\t{\n\t\tthis.subscribe(MapPopup.#onClosedEvent, listener);\n\t}\n\n\tdestroy()\n\t{\n\t\tthis.#map = null;\n\t\tthis.#gallery = null;\n\t\tthis.#addressString = null;\n\t\tthis.#addressApplier = null;\n\n\t\tthis.#popup.destroy();\n\t\tthis.#popup = null;\n\t\tDom.remove(this.#contentWrapper);\n\t\tthis.#contentWrapper = null;\n\t\tEvent.unbindAll(this);\n\t}\n}\n","import {Address, MethodNotImplemented} from \"location.core\";\nimport MapPopup from \"../../mappopup/mappopup\";\n\n/**\n * Base class for the address widget feature\n */\nexport default class BaseFeature\n{\n\t_saveResourceStrategy = false;\n\n\tconstructor(props)\n\t{\n\t\tthis._saveResourceStrategy = props.saveResourceStrategy;\n\t}\n\n\trender(props)\n\t{\n\t\tthrow new MethodNotImplemented('Method render must be implemented');\n\t}\n\n\tsetAddressWidget(addressWidget): void\n\t{\n\t\tthrow new MethodNotImplemented('Method render must be implemented');\n\t}\n\n\tsetAddress(address: Address): void\n\t{\n\t\tthrow new MethodNotImplemented('Method set address must be implemented');\n\t}\n\n\tsetMode(mode: string): void\n\t{\n\n\t}\n\n\tdestroy(): void\n\t{\n\n\t}\n\n\tresetView(): void\n\t{\n\n\t}\n}","import {Type, Event} from 'main.core';\nimport {EventEmitter} from 'main.core.events';\nimport {\n\tAddress as AddressEntity,\n\tControlMode,\n\tFormat,\n\tAddressStringConverter,\n\tLocationRepository,\n\tErrorPublisher,\n\tFormatTemplateType,\n\tAddressType,\n\tStorage\n} from 'location.core';\nimport State from '../state';\nimport BaseFeature from './features/basefeature';\nimport {FeatureEvent} from './featurevent';\n\n/**\n * Props for the address widget constructor\n */\nexport type AddressConstructorProps = {\n\t/** @see ControlMode */\n\tmode: string,\n\taddressFormat: Format,\n\taddress?: AddressEntity,\n\tneedWarmBackendAfterAddressChanged?: boolean,\n\tlocationRepository?: LocationRepository,\n};\n\n/**\n * Props for the address widget render method\n */\nexport type AddressRenderProps = {\n\t/** Input control witch will be used by user to enter the address */\n\tinputNode: Element,\n\t/** Control wrapper witch could be used for mouseover event etc. */\n\tcontrolWrapper: Element,\n\t/** If map feature is used it could be used to bind map popup */\n\tmapBindElement: ?Element,\n\t/** If autocomplete feature is used it could be used to bind menu node */\n\tautocompleteMenuElement: ?Element\n};\n\n/**\n * Address widget\n */\nexport default class Address extends EventEmitter\n{\n\t/* If address was changed by user */\n\tstatic onAddressChangedEvent = 'onAddressChanged';\n\t/* If state of the widget was changed */\n\tstatic onStateChangedEvent = 'onStateChanged';\n\t/* Any feature-related events */\n\tstatic onFeatureEvent = 'onFeatureEvent';\n\n\t#mode;\n\t#state;\n\t#address;\n\t#addressFormat;\n\t#languageId;\n\n\t#features = [];\n\n\t#inputNode;\n\t#controlWrapper;\n\n\t#destroyed = false;\n\n\t#isAddressChangedByFeature = false;\n\t#isInputNodeValueUpdated = false;\n\n\t#needWarmBackendAfterAddressChanged = true;\n\t#locationRepository;\n\n\t/**\n\t * Constructor\n\t * @param {AddressConstructorProps} props\n\t */\n\tconstructor(props: AddressConstructorProps)\n\t{\n\t\tsuper();\n\n\t\tthis.setEventNamespace('BX.Location.Widget.Address');\n\n\t\tif (!(props.addressFormat instanceof Format))\n\t\t{\n\t\t\tBX.debug('addressFormat must be instance of Format');\n\t\t}\n\n\t\tthis.#addressFormat = props.addressFormat;\n\n\t\tif (props.address && !(props.address instanceof AddressEntity))\n\t\t{\n\t\t\tBX.debug('address must be instance of Address');\n\t\t}\n\n\t\tthis.#address = props.address || null;\n\n\t\tif (!(ControlMode.isValid(props.mode)))\n\t\t{\n\t\t\tBX.debug('mode must be valid ControlMode');\n\t\t}\n\n\t\tthis.#mode = props.mode;\n\n\t\tif (!Type.isString(props.languageId))\n\t\t{\n\t\t\tthrow new TypeError('props.languageId must be type of string');\n\t\t}\n\n\t\tthis.#languageId = props.languageId;\n\n\t\tif (props.features)\n\t\t{\n\t\t\tif (!Type.isArray(props.features))\n\t\t\t{\n\t\t\t\tthrow new TypeError('features must be an array');\n\t\t\t}\n\n\t\t\tprops.features.forEach((feature: BaseFeature) => {\n\t\t\t\tthis.#addFeature(feature);\n\t\t\t});\n\t\t}\n\n\t\tif (Type.isBoolean(props.needWarmBackendAfterAddressChanged))\n\t\t{\n\t\t\tthis.#needWarmBackendAfterAddressChanged = props.needWarmBackendAfterAddressChanged;\n\t\t}\n\n\t\tif (props.locationRepository instanceof LocationRepository)\n\t\t{\n\t\t\tthis.#locationRepository = props.locationRepository;\n\t\t}\n\t\telse if (this.#needWarmBackendAfterAddressChanged)\n\t\t{\n\t\t\tthis.#locationRepository = new LocationRepository();\n\t\t}\n\n\t\tthis.#state = State.INITIAL;\n\t}\n\n\t/**\n\t * @param {AddressEntity} address\n\t * @param {BaseFeature} sourceFeature\n\t * @param {Array} excludeFeatures\n\t * @param {Object} options\n\t * @internal\n\t */\n\tsetAddressByFeature(\n\t\taddress: AddressEntity,\n\t\tsourceFeature: BaseFeature,\n\t\texcludeFeatures: Array = [],\n\t\toptions: Object = {}\n\t): void\n\t{\n\t\tconst addressId = this.#address ? this.#address.id : 0;\n\n\t\tif (\n\t\t\taddress\n\t\t\t&& !address.getFieldValue(AddressType.ADDRESS_LINE_1)\n\t\t\t&& this.#addressFormat.isTemplateExists(FormatTemplateType.ADDRESS_LINE_1)\n\t\t)\n\t\t{\n\t\t\taddress.setFieldValue(\n\t\t\t\tAddressType.ADDRESS_LINE_1,\n\t\t\t\tAddressStringConverter.convertAddressToStringTemplate(\n\t\t\t\t\taddress,\n\t\t\t\t\tthis.#addressFormat.getTemplate(FormatTemplateType.ADDRESS_LINE_1),\n\t\t\t\t\tAddressStringConverter.CONTENT_TYPE_TEXT,\n\t\t\t\t\tnull,\n\t\t\t\t\tthis.#addressFormat\n\t\t\t\t)\n\t\t\t);\n\t\t}\n\n\t\tthis.#address = address;\n\n\t\tconst storeAsLastAddress = options.hasOwnProperty('storeAsLastAddress')\n\t\t\t? options.storeAsLastAddress\n\t\t\t: true;\n\t\tif (storeAsLastAddress)\n\t\t{\n\t\t\tthis.#storeAsLastAddress();\n\t\t}\n\n\t\tif (addressId > 0)\n\t\t{\n\t\t\tthis.#address.id = addressId;\n\t\t}\n\n\t\tthis.#isAddressChangedByFeature = true;\n\t\tthis.#setInputValue(address);\n\n\t\tthis.#executeFeatureMethod(\n\t\t\t'setAddress',\n\t\t\t[address],\n\t\t\tsourceFeature,\n\t\t\texcludeFeatures\n\t\t);\n\n\t\tif (this.#state !== State.DATA_INPUTTING)\n\t\t{\n\t\t\tthis.#emitOnAddressChanged();\n\t\t}\n\t}\n\n\temitFeatureEvent(featureEvent: FeatureEvent)\n\t{\n\t\tthis.emit(\n\t\t\tAddress.onFeatureEvent,\n\t\t\tfeatureEvent\n\t\t);\n\t}\n\n\t/**\n\t * Add feature to the widget\n\t * @param {BaseFeature} feature\n\t */\n\t#addFeature(feature: BaseFeature)\n\t{\n\t\tif (!(feature instanceof BaseFeature))\n\t\t{\n\t\t\tBX.debug('feature must be instance of BaseFeature');\n\t\t}\n\n\t\tfeature.setAddressWidget(this);\n\t\tthis.#features.push(feature);\n\t}\n\n\tget features()\n\t{\n\t\treturn this.#features;\n\t}\n\n\t#executeFeatureMethod(method, params = [], sourceFeature = null, excludeFeatures = [])\n\t{\n\t\tlet result;\n\n\t\tfor(const feature of this.#features)\n\t\t{\n\t\t\tlet isExcluded = false;\n\t\t\tfor(const excludeFeature of excludeFeatures)\n\t\t\t{\n\t\t\t\tif (feature instanceof excludeFeature)\n\t\t\t\t{\n\t\t\t\t\tisExcluded = true;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (!isExcluded && feature !== sourceFeature)\n\t\t\t{\n\t\t\t\tresult = feature[method].apply(feature, params);\n\t\t\t}\n\t\t}\n\n\t\treturn result;\n\t}\n\n\t#emitOnAddressChanged()\n\t{\n\t\tthis.emit(\n\t\t\tAddress.onAddressChangedEvent,\n\t\t\t{address: this.#address}\n\t\t);\n\n\t\tif (this.#address && this.#needWarmBackendAfterAddressChanged)\n\t\t{\n\t\t\tthis.#warmBackendAfterAddressChanged(this.#address);\n\t\t}\n\t}\n\n\t#warmBackendAfterAddressChanged(address: AddressEntity): void\n\t{\n\t\tif (address.location !== null && address.location.id <= 0)\n\t\t{\n\t\t\tthis.#locationRepository.findParents(address.location);\n\t\t}\n\t}\n\n\t// eslint-disable-next-line no-unused-vars\n\t#onInputFocus(e: KeyboardEvent)\n\t{\n\t\tconst value = this.#inputNode.value;\n\n\t\tif (value.length > 0)\n\t\t{\n\t\t\tBX.setCaretPosition(this.#inputNode, value.length);\n\t\t}\n\t}\n\n\t#convertAddressToString(\n\t\taddress: ?Address,\n\t\ttemplateType: string\n\t): string\n\t{\n\t\tlet result = '';\n\n\t\tif (address)\n\t\t{\n\t\t\tif (!this.#addressFormat.isTemplateExists(templateType))\n\t\t\t{\n\t\t\t\tconsole.error(`Address format \"${this.#addressFormat.code}\" does not have a template \"${templateType}\"`);\n\t\t\t\treturn '';\n\t\t\t}\n\n\t\t\tresult = AddressStringConverter.convertAddressToStringTemplate(\n\t\t\t\taddress,\n\t\t\t\tthis.#addressFormat.getTemplate(templateType),\n\t\t\t\tAddressStringConverter.CONTENT_TYPE_TEXT,\n\t\t\t\t', ',\n\t\t\t\tthis.#addressFormat\n\t\t\t);\n\t\t}\n\n\t\treturn result;\n\t}\n\n\t#setInputValue(address: ?Address)\n\t{\n\t\tif (this.#inputNode)\n\t\t{\n\t\t\tconst shortAddressString = this.#convertAddressToString(address, FormatTemplateType.AUTOCOMPLETE);\n\t\t\tconst fullAddressString = this.#convertAddressToString(address, FormatTemplateType.DEFAULT);\n\t\t\tthis.#inputNode.value = shortAddressString.trim() !== '' ? shortAddressString : fullAddressString;\n\t\t\tthis.#inputNode.title = fullAddressString;\n\t\t\tconst selectionStart = this.#inputNode.selectionStart;\n\t\t\tconst selectionEnd = shortAddressString.length;\n\t\t\tthis.#inputNode.setSelectionRange(selectionStart, selectionEnd);\n\t\t}\n\t}\n\n\t// eslint-disable-next-line no-unused-vars\n\t#onInputFocusOut(e: Event)\n\t{\n\t\t// Seems that we don't have any autocompleter feature\n\t\tif (this.#isInputNodeValueUpdated && !this.#isAddressChangedByFeature)\n\t\t{\n\t\t\tconst value = this.#inputNode.value.trim();\n\t\t\tconst address = new AddressEntity({languageId: this.#languageId});\n\t\t\taddress.setFieldValue(this.#addressFormat.fieldForUnRecognized, value);\n\t\t\tthis.address = address;\n\t\t\tthis.#emitOnAddressChanged();\n\t\t}\n\n\t\tthis.#isInputNodeValueUpdated = false;\n\t\tthis.#isAddressChangedByFeature = false;\n\t}\n\n\tonInputKeyup(e: KeyboardEvent)\n\t{\n\t\tswitch (e.code)\n\t\t{\n\t\t\tcase 'Tab':\n\t\t\tcase 'Esc':\n\t\t\tcase 'Enter':\n\t\t\tcase 'NumpadEnter':\n\t\t\t\tthis.resetView();\n\t\t\t\tbreak;\n\t\t}\n\t}\n\n\tonInputInput(e)\n\t{\n\t\tthis.#isInputNodeValueUpdated = true;\n\t}\n\n\tresetView(): void\n\t{\n\t\tthis.#executeFeatureMethod('resetView');\n\t}\n\n\t/**\n\t * Render Widget\n\t * @param {AddressRenderProps} props\n\t */\n\trender(props: AddressRenderProps): void\n\t{\n\t\tif (!Type.isDomNode(props.controlWrapper))\n\t\t{\n\t\t\tBX.debug('props.controlWrapper must be instance of Element');\n\t\t}\n\n\t\tthis.#controlWrapper = props.controlWrapper;\n\n\t\tif (this.#mode === ControlMode.edit)\n\t\t{\n\t\t\tif (!Type.isDomNode(props.inputNode))\n\t\t\t{\n\t\t\t\tBX.debug('props.inputNode must be instance of Element');\n\t\t\t}\n\n\t\t\tthis.#inputNode = props.inputNode;\n\t\t\tthis.#setInputValue(this.#address);\n\t\t}\n\n\t\tthis.#executeFeatureMethod('render', [props]);\n\n\t\t// We can prevent these events in features if need\n\t\tif (this.#mode === ControlMode.edit)\n\t\t{\n\t\t\tEvent.bind(this.#inputNode, 'focus', this.#onInputFocus.bind(this));\n\t\t\tEvent.bind(this.#inputNode, 'focusout', this.#onInputFocusOut.bind(this));\n\t\t\tEvent.bind(this.#inputNode, 'keyup', this.onInputKeyup.bind(this));\n\t\t\tEvent.bind(this.#inputNode, 'input', this.onInputInput.bind(this));\n\t\t}\n\t}\n\n\tget controlWrapper()\n\t{\n\t\treturn this.#controlWrapper;\n\t}\n\n\tget inputNode()\n\t{\n\t\treturn this.#inputNode;\n\t}\n\n\tget address(): ?AddressEntity\n\t{\n\t\treturn this.#address;\n\t}\n\n\tset address(address: ?AddressEntity): void\n\t{\n\t\tif (address && !(address instanceof AddressEntity))\n\t\t{\n\t\t\tBX.debug('address must be instance of Address');\n\t\t}\n\n\t\tthis.#address = address;\n\t\tthis.#storeAsLastAddress();\n\t\tthis.#executeFeatureMethod('setAddress', [address]);\n\t\tthis.#isInputNodeValueUpdated = false;\n\t\tthis.#isAddressChangedByFeature = false;\n\t\tthis.#setInputValue(address);\n\t}\n\n\tget mode()\n\t{\n\t\treturn this.#mode;\n\t}\n\n\tset mode(mode: string): void\n\t{\n\t\tif (!(ControlMode.isValid(mode)))\n\t\t{\n\t\t\tBX.debug('mode must be valid ControlMode');\n\t\t}\n\n\t\tthis.#mode = mode;\n\n\t\tthis.#executeFeatureMethod('setMode', [mode]);\n\t}\n\n\tget state(): string\n\t{\n\t\treturn this.#state;\n\t}\n\n\tget addressFormat(): Format\n\t{\n\t\treturn this.#addressFormat;\n\t}\n\n\tsetStateByFeature(state: string)\n\t{\n\t\tthis.#state = state;\n\n\t\tthis.emit(\n\t\t\tAddress.onStateChangedEvent,\n\t\t\t{state: state}\n\t\t);\n\t}\n\n\tsubscribeOnStateChangedEvent(listener: Function): void\n\t{\n\t\tthis.subscribe(Address.onStateChangedEvent, listener);\n\t}\n\n\tsubscribeOnAddressChangedEvent(listener: Function): void\n\t{\n\t\tthis.subscribe(Address.onAddressChangedEvent, listener);\n\t}\n\n\tsubscribeOnFeatureEvent(listener: Function): void\n\t{\n\t\tthis.subscribe(Address.onFeatureEvent, listener);\n\t}\n\n\tsubscribeOnErrorEvent(listener: Function): void\n\t{\n\t\tErrorPublisher.getInstance().subscribe(listener);\n\t}\n\n\t#storeAsLastAddress()\n\t{\n\t\tif (\n\t\t\tthis.#address\n\t\t\t&& this.#address.fieldCollection\n\t\t\t&& this.#address.fieldCollection.isFieldExists(AddressType.LOCALITY)\n\t\t)\n\t\t{\n\t\t\tStorage.getInstance().lastAddress = this.#address;\n\t\t}\n\t}\n\n\tdestroy()\n\t{\n\t\tif (this.#destroyed)\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tEvent.unbindAll(this);\n\t\tEvent.unbind(this.#inputNode, 'focus', this.#onInputFocus);\n\t\tEvent.unbind(this.#inputNode, 'focusout', this.#onInputFocusOut);\n\t\tEvent.unbind(this.#inputNode, 'keyup', this.onInputKeyup);\n\t\tEvent.unbind(this.#inputNode, 'input', this.onInputInput);\n\n\t\tthis.#executeFeatureMethod('destroy');\n\t\tthis.#destroyFeatures();\n\t\tthis.#destroyed = true;\n\t}\n\n\t#destroyFeatures()\n\t{\n\t\tthis.#features.splice(0, this.#features.length);\n\t}\n\n\tisDestroyed()\n\t{\n\t\treturn this.#destroyed;\n\t}\n}\n","import {EventEmitter} from 'main.core.events';\nimport {Tag} from 'main.core';\n\nexport default class MenuBottom extends EventEmitter\n{\n\t#node;\n\t#leftItemNodeContainer;\n\t#rightItemNodeContainer;\n\n\tconstructor()\n\t{\n\t\tsuper();\n\t\tthis.setEventNamespace('BX.Location.Widget.Autocomplete.MenuBottom');\n\t}\n\n\trender()\n\t{\n\t\tthis.#leftItemNodeContainer = Tag.render`<div class=\"location-map-popup-item--info-left\"></div>`;\n\t\tthis.#rightItemNodeContainer = Tag.render`<div></div>`;\n\n\t\tthis.#node = Tag.render`\n\t\t\t<div>\n\t\t\t\t<span class=\"location-map-popup-item--info\"> \t\t\n\t\t\t\t\t${this.#leftItemNodeContainer}\n\t\t\t\t\t${this.#rightItemNodeContainer}\n\t\t\t\t</span>\t\t\t\n\t\t\t</div>\n\t\t`;\n\n\t\treturn this.#node;\n\t}\n\n\tsetRightItemNode(node: Element): void\n\t{\n\t\twhile (this.#rightItemNodeContainer.firstChild)\n\t\t{\n\t\t\tthis.#rightItemNodeContainer.removeChild(this.#rightItemNodeContainer.firstChild);\n\t\t}\n\n\t\tthis.#rightItemNodeContainer.appendChild(node);\n\t}\n\n\tsetLeftItemNode(node: Element): void\n\t{\n\t\twhile (this.#leftItemNodeContainer.firstChild)\n\t\t{\n\t\t\tthis.#leftItemNodeContainer.removeChild(this.#leftItemNodeContainer.firstChild);\n\t\t}\n\n\t\tthis.#leftItemNodeContainer.appendChild(node);\n\t}\n}","import {Menu as MainMenu} from 'main.popup';\nimport './css/menu.css';\nimport MenuBottom from './menubottom';\n\nexport default class Menu extends MainMenu\n{\n\tchoseItemIdx = -1;\n\t#bottom;\n\n\tconstructor(options)\n\t{\n\t\tsuper(options);\n\n\t\tconst elRect = options.bindElement.getBoundingClientRect();\n\t\tthis.popupWindow.setMaxWidth(elRect.width);\n\t\tthis.#bottom = new MenuBottom();\n\t\tthis.layout.menuContainer.appendChild(\n\t\t\tthis.#bottom.render()\n\t\t);\n\t}\n\n\tisMenuEmpty(): boolean\n\t{\n\t\treturn this.menuItems.length <= 0;\n\t}\n\n\tisChoseLastItem(): boolean\n\t{\n\t\treturn this.choseItemIdx >= this.menuItems.length - 1;\n\t}\n\n\tisChoseFirstItem(): boolean\n\t{\n\t\treturn this.choseItemIdx === 0;\n\t}\n\n\tisItemChosen(): boolean\n\t{\n\t\treturn this.choseItemIdx >= 0;\n\t}\n\n\tisDestroyed(): boolean\n\t{\n\t\treturn this.getPopupWindow().isDestroyed();\n\t}\n\n\tisItemExist(index: number): boolean\n\t{\n\t\treturn typeof this.menuItems[index] !== 'undefined';\n\t}\n\n\tgetChosenItem()\n\t{\n\t\tlet result = null;\n\n\t\tif(this.isItemChosen() && this.isItemExist(this.choseItemIdx))\n\t\t{\n\t\t\tresult = this.menuItems[this.choseItemIdx];\n\t\t}\n\n\t\treturn result;\n\t}\n\n\tchooseNextItem(): void\n\t{\n\t\tif(!this.isMenuEmpty() && !this.isChoseLastItem())\n\t\t{\n\t\t\tthis.chooseItem(this.choseItemIdx + 1);\n\t\t}\n\n\t\treturn this.getChosenItem();\n\t}\n\n\tchoosePrevItem(): void\n\t{\n\t\tif(!this.isMenuEmpty() && !this.isChoseFirstItem())\n\t\t{\n\t\t\tthis.chooseItem(this.choseItemIdx - 1);\n\t\t}\n\n\t\treturn this.getChosenItem();\n\t}\n\n\thighlightItem(index: number): void\n\t{\n\t\tif(this.isItemExist(index))\n\t\t{\n\t\t\tconst item = this.getChosenItem();\n\n\t\t\tif(item && item.layout.item)\n\t\t\t{\n\t\t\t\titem.layout.item.classList.add('highlighted');\n\t\t\t}\n\t\t}\n\t}\n\n\tunHighlightItem(index: number): void\n\t{\n\t\tif(this.isItemExist(index))\n\t\t{\n\t\t\tconst item = this.getChosenItem();\n\n\t\t\tif(item && item.layout.item)\n\t\t\t{\n\t\t\t\titem.layout.item.classList.remove('highlighted');\n\t\t\t}\n\t\t}\n\t}\n\n\tchooseItem(index: number)\n\t{\n\t\tlet idx = index;\n\n\t\tif(idx < 0)\n\t\t{\n\t\t\tidx = this.menuItems.length - 1;\n\t\t}\n\t\telse if(idx > this.menuItems.length - 1)\n\t\t{\n\t\t\tidx = 0;\n\t\t}\n\n\t\tthis.unHighlightItem(this.choseItemIdx);\n\t\tthis.choseItemIdx = idx;\n\t\tthis.highlightItem(this.choseItemIdx);\n\t}\n\n\tclearItems()\n\t{\n\t\twhile(this.menuItems.length > 0)\n\t\t{\n\t\t\tthis.removeMenuItem(this.menuItems[0].id);\n\t\t}\n\t}\n\n\tisShown(): boolean\n\t{\n\t\treturn this.getPopupWindow().isShown();\n\t}\n\n\tsetBottomRightItemNode(node: Element): void\n\t{\n\t\tthis.#bottom.setRightItemNode(node);\n\t}\n\n\tsetBottomLeftItemNode(node: Element): void\n\t{\n\t\tthis.#bottom.setLeftItemNode(node);\n\t}\n}\n","import {EventEmitter} from 'main.core.events';\nimport {Loc} from 'main.core';\nimport {Location, Address, AddressType, LocationType} from 'location.core';\nimport Menu from './menu';\n\nexport default class Prompt extends EventEmitter\n{\n\tstatic onItemSelectedEvent = 'onItemSelected';\n\n\t/** Element */\n\t#inputNode;\n\n\t/** Element */\n\t#menuNode;\n\n\t/** {Menu} */\n\t#menu;\n\n\t/** {Array<Location>} */\n\t#locationList;\n\n\tconstructor(props)\n\t{\n\t\tsuper(props);\n\t\tthis.setEventNamespace('BX.Location.Widget.Prompt');\n\n\t\tthis.#inputNode = props.inputNode;\n\n\t\tif (props.menuNode)\n\t\t{\n\t\t\tthis.#menuNode = props.menuNode;\n\t\t}\n\t}\n\n\t#createMenu()\n\t{\n\t\treturn new Menu({\n\t\t\tbindElement: this.#menuNode ? this.#menuNode : this.#inputNode,\n\t\t\tautoHide: false,\n\t\t\tcloseByEsc: true,\n\t\t\tclassName: 'location-widget-prompt-menu',\n\t\t});\n\t}\n\n\tgetMenu(): Menu\n\t{\n\t\tif(!this.#menu || this.#menu.isDestroyed())\n\t\t{\n\t\t\tthis.#menu = this.#createMenu();\n\t\t}\n\n\t\treturn this.#menu;\n\t}\n\n\t/**\n\t * Show menu with list of locations\n\t * @param {array} locationsList\n\t * @param {string} searchPhrase\n\t * @returns void\n\t */\n\tshow(locationsList: Array<Location>, searchPhrase: string): void\n\t{\n\t\tif(locationsList.length > 0)\n\t\t{\n\t\t\tthis.setMenuItems(locationsList, searchPhrase);\n\t\t\tthis.getMenu().show();\n\t\t}\n\t}\n\n\tclose(): void\n\t{\n\t\tthis.getMenu().close();\n\t}\n\n\t/**\n\t * @param {array<Location>} locationsList\n\t * @param {string} searchPhrase\n\t * @param {Address} address\n\t * @returns {*}\n\t */\n\tsetMenuItems(locationsList: Array<Location>, searchPhrase: string, address: ?Address): Menu\n\t{\n\t\tthis.getMenu().clearItems();\n\n\t\tif(Array.isArray(locationsList))\n\t\t{\n\t\t\tthis.#locationList = locationsList.slice();\n\n\t\t\tconst showFlatList = (\n\t\t\t\t!address\n\t\t\t\t|| !address.getFieldValue(AddressType.LOCALITY)\n\t\t\t\t|| !Prompt.#hasLocationWithLocality(this.#locationList)\n\t\t\t);\n\n\t\t\tif (showFlatList)\n\t\t\t{\n\t\t\t\tlocationsList.forEach((location, index) => {\n\t\t\t\t\tthis.getMenu().addMenuItem(\n\t\t\t\t\t\tthis.#createMenuItem(index, location, searchPhrase)\n\t\t\t\t\t);\n\t\t\t\t});\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tlocationsList.forEach((location, index) => {\n\t\t\t\t\tif (this.#isAddressOfSameLocation(address, location)) {\n\t\t\t\t\t\tthis.getMenu().addMenuItem(\n\t\t\t\t\t\t\tthis.#createMenuItem(index, location, searchPhrase)\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\tlet isSeparatorSet = false;\n\t\t\t\tlocationsList.forEach((location, index) => {\n\t\t\t\t\tif (!this.#isAddressOfSameLocation(address, location)) {\n\t\t\t\t\t\tif (!isSeparatorSet)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tthis.getMenu().addMenuItem({\n\t\t\t\t\t\t\t\thtml: Loc.getMessage('LOCATION_WIDGET_PROMPT_IN_OTHER_CITY'),\n\t\t\t\t\t\t\t\tdelimiter: true\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tthis.getMenu().addMenuItem(\n\t\t\t\t\t\t\tthis.#createMenuItem(index, location, searchPhrase)\n\t\t\t\t\t\t);\n\t\t\t\t\t\tisSeparatorSet = true;\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}\n\n\t#isAddressOfSameLocation(address, location)\n\t{\n\t\treturn (\n\t\t\taddress\n\t\t\t&& address.getFieldValue(AddressType.LOCALITY)\n\t\t\t&& location\n\t\t\t&& location.address\n\t\t\t&& location.address.getFieldValue(AddressType.LOCALITY)\n\t\t\t&& Prompt.#getAddressPossibleLocalities(location.address).includes(\n\t\t\t\taddress.getFieldValue(AddressType.LOCALITY)\n\t\t\t)\n\t\t);\n\t}\n\n\tstatic #getAddressPossibleLocalities(address: Address)\n\t{\n\t\tconst result = [];\n\n\t\tif (address.getFieldValue(AddressType.LOCALITY))\n\t\t{\n\t\t\tresult.push(address.getFieldValue(AddressType.LOCALITY));\n\t\t}\n\n\t\t/**\n\t\t * Address break-down formed on frontend is very inaccurate so we can't rely only on the locality type field\n\t\t * @see #142094\n\t\t */\n\t\tif (address.getFieldValue(AddressType.ADM_LEVEL_1))\n\t\t{\n\t\t\tresult.push(address.getFieldValue(AddressType.ADM_LEVEL_1));\n\t\t}\n\n\t\treturn result;\n\t}\n\n\t/**\n\t * @param {array<Location>} locationsList\n\t * @returns boolean\n\t */\n\tstatic #hasLocationWithLocality(locationsList: Array<Location>): boolean\n\t{\n\t\tfor (let location of locationsList)\n\t\t{\n\t\t\tif (location.address && location.address.getFieldValue(AddressType.LOCALITY))\n\t\t\t{\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t}\n\n\t/**\n\t * @param {number} index\n\t * @param {Location} location\n\t * @param {string} searchPhrase\n\t * @returns {{onclick: onclick, text: string}}\n\t */\n\t#createMenuItem(index, location: Location, searchPhrase): Object\n\t{\n\t\treturn {\n\t\t\tid: index,\n\t\t\ttitle: location.name,\n\t\t\thtml: Prompt.createMenuItemText(location.name, searchPhrase, location),\n\t\t\tonclick: (event, item) => {\n\t\t\t\tthis.#onItemSelect(index);\n\t\t\t\tthis.close();\n\t\t\t}\n\t\t};\n\t}\n\n\t#onItemSelect(index: number): void\n\t{\n\t\tconst location = this.#getLocationFromList(index);\n\n\t\tif(location)\n\t\t{\n\t\t\tthis.emit(Prompt.onItemSelectedEvent, {location: location});\n\t\t}\n\t}\n\n\tstatic createMenuItemText(locationName: string, searchPhrase: string, location: Location): string\n\t{\n\t\tlet result = `\n\t\t<div>\n\t\t\t<strong>${locationName}</strong>\n\t\t</div>`;\n\n\t\tlet clarification;\n\n\t\tif(location.getFieldValue(LocationType.TMP_TYPE_CLARIFICATION))\n\t\t{\n\t\t\tclarification = location.getFieldValue(LocationType.TMP_TYPE_CLARIFICATION);\n\n\t\t\tif(clarification)\n\t\t\t{\n\t\t\t\tif(location.getFieldValue(LocationType.TMP_TYPE_HINT))\n\t\t\t\t{\n\t\t\t\t\tclarification += ` <i>(${location.getFieldValue(LocationType.TMP_TYPE_HINT)})</i>`;\n\t\t\t\t}\n\n\t\t\t\tresult += `<div>${clarification}</div>`;\n\t\t\t}\n\t\t}\n\n\t\treturn '<div data-role=\"location-widget-menu-item\" tabindex=\"-1\">' + result + '</div>';\n\t}\n\n\tstatic #extractClarification(location: Location): string\n\t{\n\t\tlet clarification = '';\n\n\t\tif(location.getFieldValue(LocationType.TMP_TYPE_CLARIFICATION))\n\t\t{\n\t\t\tclarification = location.getFieldValue(LocationType.TMP_TYPE_CLARIFICATION);\n\t\t}\n\n\t\treturn clarification;\n\t}\n\n\t#getLocationFromList(index: number): ?Location\n\t{\n\t\tlet result = null;\n\n\t\tif (this.#locationList[index] !== undefined)\n\t\t{\n\t\t\tresult = this.#locationList[index];\n\t\t}\n\n\t\tif(!result)\n\t\t{\n\t\t\tBX.debug(`Location with index ${index} was not found`);\n\t\t}\n\n\t\treturn result;\n\t}\n\n\tchoosePrevItem(isRecursive: boolean = false)\n\t{\n\t\tlet result = null;\n\t\tconst item = this.getMenu().choosePrevItem();\n\n\t\tif (item)\n\t\t{\n\t\t\tif (item.delimiter && item.delimiter === true)\n\t\t\t{\n\t\t\t\tresult = isRecursive ? this.getMenu().chooseNextItem() : this.choosePrevItem(true);\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tresult = this.#getLocationFromList(this.getMenu().choseItemIdx);\n\t\t\t}\n\t\t}\n\n\t\treturn result;\n\t}\n\n\tchooseNextItem()\n\t{\n\t\tlet result = null;\n\t\tconst item = this.getMenu().chooseNextItem();\n\n\t\tif (item)\n\t\t{\n\t\t\tif (item.delimiter && item.delimiter === true)\n\t\t\t{\n\t\t\t\tresult = this.chooseNextItem();\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tresult = this.#getLocationFromList(this.getMenu().choseItemIdx);\n\t\t\t}\n\t\t}\n\n\t\treturn result;\n\t}\n\n\tisItemChosen()\n\t{\n\t\treturn this.getMenu().isItemChosen();\n\t}\n\n\tgetChosenItem()\n\t{\n\t\tlet result = null;\n\t\tconst menuItem = this.getMenu().getChosenItem();\n\n\t\tif(menuItem && menuItem.id)\n\t\t{\n\t\t\tresult = this.#getLocationFromList(this.getMenu().choseItemIdx);\n\t\t}\n\n\t\treturn result;\n\t}\n\n\tisShown(): boolean\n\t{\n\t\treturn this.getMenu().isShown();\n\t}\n\n\tdestroy()\n\t{\n\t\tif(this.#menu)\n\t\t{\n\t\t\tthis.#menu.destroy();\n\t\t\tthis.#menu = null;\n\t\t}\n\n\t\tthis.#locationList = null;\n\t}\n}\n","import {Format, FormatTemplateType, AddressStringConverter, Address} from 'location.core';\n\nexport default class AddressString\n{\n\t// Input node element\n\t#input = null;\n\t// Address string value\n\t#value = '';\n\t// Address string as it was without custom inputs\n\t#pureAddressString = '';\n\t#addressFormat = null;\n\n\tconstructor(input: HTMLInputElement, addressFormat: Format, address: ?Address)\n\t{\n\t\tif (!(input instanceof HTMLInputElement))\n\t\t{\n\t\t\tthrow new TypeError('Wrong input type');\n\t\t}\n\n\t\tthis.#input = input;\n\n\t\tif (!(addressFormat instanceof Format))\n\t\t{\n\t\t\tthrow new TypeError('Wrong addressFormat type');\n\t\t}\n\n\t\tthis.#addressFormat = addressFormat;\n\n\t\tif (address && !(address instanceof Address))\n\t\t{\n\t\t\tthrow new TypeError('Wrong address type');\n\t\t}\n\t\tif (address)\n\t\t{\n\t\t\tthis.setValueFromAddress(address);\n\t\t}\n\t}\n\n\t/**\n\t *\n\t * @param {string} value Address string value\n\t * @param {boolean} isPureAddress Does it contain user input or not\n\t */\n\tsetValue(value: string, isPureAddress: boolean = false): void\n\t{\n\t\tthis.#value = value;\n\t\tthis.#input.value = value;\n\n\t\tif (isPureAddress)\n\t\t{\n\t\t\tthis.#pureAddressString = value;\n\t\t}\n\n\t\tthis.#actualizePureString();\n\t}\n\n\tactualize()\n\t{\n\t\tthis.#value = this.#input.value;\n\t\tthis.#actualizePureString();\n\t}\n\n\t#actualizePureString()\n\t{\n\t\tif (this.#isPureAddressStringModified())\n\t\t{\n\t\t\tthis.#pureAddressString = '';\n\t\t}\n\t}\n\n\tisChanged()\n\t{\n\t\treturn this.#value.trim() !== this.#input.value.trim();\n\t}\n\n\tget value(): string\n\t{\n\t\treturn this.#value;\n\t}\n\n\tget customTail()\n\t{\n\t\tif (this.#pureAddressString === '')\n\t\t{\n\t\t\treturn this.#value;\n\t\t}\n\n\t\tlet result;\n\n\t\tif (!this.#isPureAddressStringModified())\n\t\t{\n\t\t\tresult = this.#value.slice(this.#pureAddressString.length);\n\t\t}\n\t\telse\n\t\t{\n\t\t\tresult = this.#value;\n\t\t}\n\n\t\treturn result;\n\t}\n\n\thasPureAddressString()\n\t{\n\t\treturn this.#pureAddressString !== '';\n\t}\n\n\t// We suggest that user will input data after the address data\n\t#isPureAddressStringModified(): boolean\n\t{\n\t\treturn this.#value === ''\n\t\t\t|| this.#pureAddressString === ''\n\t\t\t|| this.#value.indexOf(this.#pureAddressString) !== 0;\n\t}\n\n\tsetValueFromAddress(address: ?Address): void\n\t{\n\t\tlet value = '';\n\n\t\tif (address)\n\t\t{\n\t\t\tvalue = this.#convertAddressToString(address, FormatTemplateType.AUTOCOMPLETE);\n\n\t\t\tif (value.trim() === '')\n\t\t\t{\n\t\t\t\tvalue = this.#convertAddressToString(address, FormatTemplateType.DEFAULT);\n\t\t\t}\n\t\t}\n\n\t\tthis.setValue(value, true);\n\t}\n\n\t#convertAddressToString(address: Address, templateType: string): string\n\t{\n\t\tif (!this.#addressFormat.isTemplateExists(templateType))\n\t\t{\n\t\t\tconsole.error(`Address format \"${this.#addressFormat.code}\" does not have a template \"${templateType}\"`);\n\t\t\treturn '';\n\t\t}\n\n\t\treturn AddressStringConverter.convertAddressToStringTemplate(\n\t\t\taddress,\n\t\t\tthis.#addressFormat.getTemplate(templateType),\n\t\t\tAddressStringConverter.CONTENT_TYPE_TEXT,\n\t\t\t', ',\n\t\t\tthis.#addressFormat\n\t\t);\n\t}\n}","import {Event, Loc, Tag} from 'main.core';\nimport {EventEmitter, BaseEvent} from 'main.core.events';\nimport {\n\tLocationRepository,\n\tAutocompleteServiceBase,\n\tFormat,\n\tAddress,\n\tLocation,\n\tErrorPublisher,\n\tAddressType,\n\tStorage,\n\tPoint\n} from 'location.core';\nimport type {AutocompleteServiceParams} from 'location.core';\nimport Prompt from './prompt';\nimport State from '../state';\nimport AddressString from './addressstring';\n\n/**\n * @mixes EventEmitter\n */\nexport default class Autocomplete extends EventEmitter\n{\n\tstatic #onAddressChangedEvent = 'onAddressChanged';\n\tstatic #onStateChangedEvent = 'onStateChanged';\n\tstatic #onSearchStartedEvent = 'onSearchStarted';\n\tstatic #onSearchCompletedEvent = 'onSearchCompleted';\n\tstatic #onShowOnMapClickedEvent = 'onShowOnMapClicked';\n\n\t/** {Address} */\n\t#address;\n\t/** {AddressString|null} */\n\t#addressString = null;\n\t/** {String} */\n\t#languageId;\n\t/** {Format} */\n\t#addressFormat;\n\t/** {String} */\n\t#sourceCode;\n\t/** {LocationRepository} */\n\t#locationRepository;\n\t/** {Point} */\n\t#userLocationPoint;\n\t/** {Function} */\n\t#presetLocationsProvider;\n\t/** {Prompt} */\n\t#prompt;\n\t/** {AutocompleteServiceBase} */\n\t#autocompleteService;\n\t/** {number} */\n\t#timerId = null;\n\t/** {Element} */\n\t#inputNode;\n\n\t#searchPhrase = {\n\t\trequested: '',\n\t\tcurrent: '',\n\t\tdropped: ''\n\t};\n\n\t#state;\n\t#wasCleared = false;\n\t#isDestroyed = false;\n\n\t#isAutocompleteRequestStarted = false;\n\t#isNextAutocompleteRequestWaiting = false;\n\n\t#onLocationSelectTimerId = null;\n\n\tconstructor(props)\n\t{\n\t\tsuper(props);\n\n\t\tthis.setEventNamespace('BX.Location.Widget.Autocomplete');\n\n\t\tif (!(props.addressFormat instanceof Format))\n\t\t{\n\t\t\tthrow new Error('props.addressFormat must be type of Format');\n\t\t}\n\n\t\tthis.#addressFormat = props.addressFormat;\n\n\t\tif (!(props.autocompleteService instanceof AutocompleteServiceBase))\n\t\t{\n\t\t\tthrow new Error('props.autocompleteService must be type of AutocompleteServiceBase');\n\t\t}\n\n\t\tthis.#autocompleteService = props.autocompleteService;\n\n\t\tif (!props.languageId)\n\t\t{\n\t\t\tthrow new Error('props.languageId must be defined');\n\t\t}\n\n\t\tthis.#languageId = props.languageId;\n\t\tthis.#sourceCode = props.sourceCode;\n\t\tthis.#address = props.address;\n\t\tthis.#presetLocationsProvider = props.presetLocationsProvider;\n\t\tthis.#locationRepository = props.locationRepository || new LocationRepository();\n\t\tthis.#userLocationPoint = props.userLocationPoint;\n\t\tthis.#setState(State.INITIAL);\n\t}\n\n\trender(props: {}): void\n\t{\n\t\tthis.#inputNode = props.inputNode;\n\t\tthis.#address = props.address;\n\t\tthis.#addressString = new AddressString(this.#inputNode, this.#addressFormat, this.#address);\n\t\tthis.#inputNode.addEventListener('keydown', this.#onInputKeyDown.bind(this));\n\t\tthis.#inputNode.addEventListener('keyup', this.#onInputKeyUp.bind(this));\n\t\tthis.#inputNode.addEventListener('focus', this.#onInputFocus.bind(this));\n\t\tthis.#inputNode.addEventListener('focusout', this.#onInputFocusOut.bind(this));\n\t\tthis.#inputNode.addEventListener('click', this.#onInputClick.bind(this));\n\t\tthis.#inputNode.addEventListener('paste', this.#onInputPaste.bind(this));\n\n\t\tthis.#prompt = new Prompt({\n\t\t\tinputNode: props.inputNode,\n\t\t\tmenuNode: props.menuNode,\n\t\t});\n\n\t\tthis.#prompt.subscribe(Prompt.onItemSelectedEvent, this.#onPromptItemSelected.bind(this));\n\t\tdocument.addEventListener('click', this.#onDocumentClick.bind(this));\n\t}\n\n\t// eslint-disable-next-line no-unused-vars\n\t#onInputClick(e: MouseEvent)\n\t{\n\t\tconst value = this.#addressString.value;\n\n\t\tif (value.length === 0)\n\t\t{\n\t\t\tthis.#showPresetLocations();\n\t\t}\n\t}\n\n\t#showPresetLocations()\n\t{\n\t\tconst presetLocationList = this.#presetLocationsProvider();\n\n\t\tthis.#prompt.setMenuItems(presetLocationList, '');\n\n\t\tlet leftBottomMenuMessage;\n\n\t\tif (presetLocationList.length > 0)\n\t\t{\n\t\t\tleftBottomMenuMessage = Loc.getMessage('LOCATION_WIDGET_PICK_ADDRESS_OR_SHOW_ON_MAP');\n\t\t}\n\t\telse\n\t\t{\n\t\t\tleftBottomMenuMessage = Loc.getMessage('LOCATION_WIDGET_START_PRINTING_OR_SHOW_ON_MAP');\n\t\t}\n\n\t\tthis.#showMenu(leftBottomMenuMessage, null);\n\t}\n\n\t#createRightBottomMenuNode(location: ?Location): Element\n\t{\n\t\tconst element = Tag.render`\n\t\t\t\t<span class=\"location-map-popup-item--show-on-map\">\n\t\t\t\t\t${Loc.getMessage('LOCATION_WIDGET_SHOW_ON_MAP')}\n\t\t\t\t</span>\n\t\t`;\n\n\t\telement.addEventListener('click', this.#getShowOnMapHandler(location));\n\n\t\treturn element;\n\t}\n\n\t#createLeftBottomMenuNode(text: string): Element\n\t{\n\t\treturn Tag.render`\n\t\t\t\t<span>\n\t\t\t\t\t<span class=\"menu-popup-item-icon\"></span>\n\t\t\t\t\t<span class=\"menu-popup-item-text\">${text}</span>\n\t\t\t\t</span>\n\t\t`;\n\t}\n\n\t#showMenu(leftBottomText: string, location: ?Location): void\n\t{\n\t\t/* Menu destroys popup after the closing, so we need to refresh it every time, we show it */\n\t\tthis.#prompt.getMenu().setBottomRightItemNode(\n\t\t\tthis.#createRightBottomMenuNode(location)\n\t\t);\n\t\tthis.#prompt.getMenu().setBottomLeftItemNode(\n\t\t\tthis.#createLeftBottomMenuNode(leftBottomText)\n\t\t);\n\t\tthis.#prompt.getMenu().show();\n\t}\n\n\t#onInputFocusOut(e: Event)\n\t{\n\t\tif (this.#isDestroyed)\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tif (\n\t\t\tthis.#state === State.DATA_INPUTTING\n\t\t\t&& !(\n\t\t\t\te.relatedTarget\n\t\t\t\t&& (e.relatedTarget.getAttribute('data-role') === 'location-widget-menu-item')\n\t\t\t)\n\t\t) {\n\t\t\tthis.#setState(State.DATA_SUPPOSED);\n\n\t\t\tlet isChanged = false;\n\t\t\tif (this.#addressString) {\n\t\t\t\tif (\n\t\t\t\t\t!this.#address\n\t\t\t\t\t|| !this.#addressString.hasPureAddressString()\n\t\t\t\t)\n\t\t\t\t{\n\t\t\t\t\tthis.#address = this.#convertStringToAddress(\n\t\t\t\t\t\tthis.#addressString.value\n\t\t\t\t\t);\n\t\t\t\t\tisChanged = true;\n\t\t\t\t}\n\t\t\t\t// this.#addressString === null until autocompete'll be rendered\n\t\t\t\telse if (this.#addressString.customTail !== '')\n\t\t\t\t{\n\t\t\t\t\tconst currentValue = this.#address.getFieldValue(this.#addressFormat.fieldForUnRecognized);\n\t\t\t\t\tconst newValue = currentValue\n\t\t\t\t\t\t? currentValue + this.#addressString.customTail\n\t\t\t\t\t\t: this.#addressString.customTail\n\t\t\t\t\t;\n\t\t\t\t\tthis.#address.setFieldValue(\n\t\t\t\t\t\tthis.#addressFormat.fieldForUnRecognized,\n\t\t\t\t\t\tnewValue\n\t\t\t\t\t);\n\t\t\t\t\tisChanged = true;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (isChanged)\n\t\t\t{\n\t\t\t\tthis.#addressString.setValueFromAddress(this.#address);\n\t\t\t\tthis.#onAddressChangedEventEmit([], {storeAsLastAddress: false});\n\t\t\t}\n\t\t}\n\n\t\t// Let's prevent other onInputFocusOut handlers.\n\t\te.stopImmediatePropagation();\n\t}\n\n\t#onInputFocus()\n\t{\n\t\tif (this.#isDestroyed)\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tif (!this.#address)\n\t\t{\n\t\t\tconst lastAddress = Storage.getInstance().lastAddress;\n\n\t\t\tif (\n\t\t\t\tlastAddress\n\t\t\t\t&& lastAddress.fieldCollection.isFieldExists(AddressType.LOCALITY)\n\t\t\t\t&& !this.#wasCleared\n\t\t\t)\n\t\t\t{\n\t\t\t\tconst fieldCollection = {};\n\n\t\t\t\tfieldCollection[AddressType.LOCALITY] = lastAddress.fieldCollection.getFieldValue(\n\t\t\t\t\tAddressType.LOCALITY\n\t\t\t\t);\n\t\t\t\tif (lastAddress.fieldCollection.isFieldExists(AddressType.COUNTRY))\n\t\t\t\t{\n\t\t\t\t\tfieldCollection[AddressType.COUNTRY] = lastAddress.fieldCollection.getFieldValue(AddressType.COUNTRY);\n\t\t\t\t}\n\t\t\t\tif (lastAddress.fieldCollection.isFieldExists(AddressType.ADM_LEVEL_1))\n\t\t\t\t{\n\t\t\t\t\tfieldCollection[AddressType.ADM_LEVEL_1] = lastAddress.fieldCollection.getFieldValue(AddressType.ADM_LEVEL_1);\n\t\t\t\t}\n\n\t\t\t\tif (['RU', 'RU_2'].includes(this.#addressFormat.code))\n\t\t\t\t{\n\t\t\t\t\tfieldCollection[AddressType.ADDRESS_LINE_2] = ', ';\n\t\t\t\t}\n\n\t\t\t\tthis.#address = new Address({\n\t\t\t\t\tlanguageId: lastAddress.languageId,\n\t\t\t\t\tfieldCollection: fieldCollection,\n\t\t\t\t});\n\t\t\t\tthis.#addressString.setValueFromAddress(this.#address);\n\t\t\t\tthis.#setState(State.DATA_SUPPOSED);\n\t\t\t\tthis.#onAddressChangedEventEmit(\n\t\t\t\t\t[],\n\t\t\t\t\t{storeAsLastAddress: false}\n\t\t\t\t);\n\n\t\t\t\tsetTimeout(() => {\n\t\t\t\t\tBX.setCaretPosition(this.#inputNode, this.#inputNode.value.length);\n\t\t\t\t}, 0);\n\t\t\t}\n\t\t}\n\t\telse\n\t\t{\n\t\t\tif (\n\t\t\t\tthis.#address\n\t\t\t\t&& (!this.#address.location || !this.#address.location.hasExternalRelation())\n\t\t\t\t&& this.#addressString.value.length > 0\n\t\t\t)\n\t\t\t{\n\t\t\t\tthis.showPrompt(this.#addressString.value);\n\t\t\t}\n\t\t}\n\t}\n\n\t#makeAutocompleteServiceParams(): AutocompleteServiceParams\n\t{\n\t\tconst result: AutocompleteServiceParams = {};\n\n\t\t//result.biasPoint = this.#userLocationPoint;\n\t\tif (this.#address && this.#address.latitude && this.#address.longitude)\n\t\t{\n\t\t\tresult.biasPoint = new Point(\n\t\t\t\tthis.#address.latitude,\n\t\t\t\tthis.#address.longitude\n\t\t\t);\n\t\t}\n\n\t\treturn result;\n\t}\n\n\t/**\n\t * @param address\n\t */\n\tset address(address: ?Address): void\n\t{\n\t\tthis.#address = address;\n\n\t\tif (this.#addressString) // already rendered\n\t\t{\n\t\t\tthis.#addressString.setValueFromAddress(this.#address);\n\t\t}\n\n\t\tif (!address)\n\t\t{\n\t\t\tthis.#wasCleared = true;\n\t\t}\n\t}\n\n\t/**\n\t * @returns {Address}\n\t */\n\tget address(): ?Address\n\t{\n\t\treturn this.#address;\n\t}\n\n\t/**\n\t * Close menu on mouse click outside\n\t * @param {MouseEvent} event\n\t */\n\t#onDocumentClick(event: MouseEvent)\n\t{\n\t\tif (this.#isDestroyed)\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tif (event.target === this.#inputNode)\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tif (this.#prompt.isShown())\n\t\t{\n\t\t\tthis.#prompt.close();\n\t\t}\n\t}\n\n\t/**\n\t * Subscribe on changed event\n\t * @param {Function} listener\n\t */\n\tonAddressChangedEventSubscribe(listener: Function): void\n\t{\n\t\tthis.subscribe(Autocomplete.#onAddressChangedEvent, listener);\n\t}\n\n\t/**\n\t * Subscribe on loading event\n\t * @param {Function} listener\n\t */\n\tonStateChangedEventSubscribe(listener: Function): void\n\t{\n\t\tthis.subscribe(Autocomplete.#onStateChangedEvent, listener);\n\t}\n\n\t/**\n\t * @param {Function} listener\n\t */\n\tonSearchStartedEventSubscribe(listener: Function): void\n\t{\n\t\tthis.subscribe(Autocomplete.#onSearchStartedEvent, listener);\n\t}\n\n\t/**\n\t * @param {Function} listener\n\t */\n\tonSearchCompletedEventSubscribe(listener: Function): void\n\t{\n\t\tthis.subscribe(Autocomplete.#onSearchCompletedEvent, listener);\n\t}\n\n\t/**\n\t * @param {Function} listener\n\t */\n\tonShowOnMapClickedEventSubscribe(listener: Function): void\n\t{\n\t\tthis.subscribe(Autocomplete.#onShowOnMapClickedEvent, listener);\n\t}\n\n\t/**\n\t * Is called when autocompleteService returned location list\n\t * @param {array} locationsList\n\t * @param {object} params\n\t */\n\t#onPromptsReceived(locationsList: array<Location>, params: Object): void\n\t{\n\t\tif (Array.isArray(locationsList) && locationsList.length > 0)\n\t\t{\n\t\t\tif (\n\t\t\t\tlocationsList.length === 1\n\t\t\t\t&& this.#address\n\t\t\t\t&& this.#address.location\n\t\t\t\t&& this.#address.location.externalId\n\t\t\t\t&& this.#address.location.externalId === locationsList[0].externalId\n\t\t\t)\n\t\t\t{\n\t\t\t\tthis.closePrompt();\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis.#prompt.setMenuItems(locationsList, this.#searchPhrase.requested, this.address);\n\t\t\tthis.#showMenu(Loc.getMessage('LOCATION_WIDGET_PICK_ADDRESS_OR_SHOW_ON_MAP'), locationsList[0]);\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis.#prompt.getMenu().clearItems();\n\n\t\t\tthis.#prompt.getMenu().addMenuItem(\n\t\t\t\t{\n\t\t\t\t\tid: 'notFound',\n\t\t\t\t\thtml: `<span>${Loc.getMessage('LOCATION_WIDGET_PROMPT_ADDRESS_NOT_FOUND')}</span>`,\n\t\t\t\t\t// eslint-disable-next-line no-unused-vars\n\t\t\t\t\tonclick: (event, item) => {\n\t\t\t\t\t\tthis.#prompt.close();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t);\n\n\t\t\tthis.#showMenu(Loc.getMessage('LOCATION_WIDGET_CHECK_ADDRESS_OR_SHOW_ON_MAP'), null);\n\t\t}\n\t}\n\n\t#getShowOnMapHandler(location: ?Location)\n\t{\n\t\treturn () => {\n\t\t\tif (location)\n\t\t\t{\n\t\t\t\tthis.#fulfillSelection(location);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Otherwise this click will close just opened map popup.\n\t\t\tsetTimeout(() => {\n\t\t\t\tthis.emit(Autocomplete.#onShowOnMapClickedEvent);\n\t\t\t}, 1);\n\t\t};\n\t}\n\n\tstatic #splitPhrase(phrase: string): Object\n\t{\n\t\t// eslint-disable-next-line no-param-reassign\n\t\tphrase = phrase.trim();\n\n\t\tif (phrase.length <= 0)\n\t\t{\n\t\t\treturn ['', ''];\n\t\t}\n\n\t\tconst tailPosition = phrase.lastIndexOf(' ');\n\n\t\tif (tailPosition <= 0)\n\t\t{\n\t\t\treturn ['', ''];\n\t\t}\n\n\t\treturn [phrase.slice(0, tailPosition), phrase.slice(tailPosition + 1)];\n\t}\n\n\t/**\n\t * Is called when location from menu have chosen\n\t * @param event\n\t */\n\t#onPromptItemSelected(event: BaseEvent): void\n\t{\n\t\tif (event.data.location)\n\t\t{\n\t\t\tthis.#fulfillSelection(event.data.location);\n\t\t}\n\t}\n\n\tget state(): string\n\t{\n\t\treturn this.#state;\n\t}\n\n\t#setState(state: string)\n\t{\n\t\tthis.#state = state;\n\t\tthis.emit(Autocomplete.#onStateChangedEvent, {state: this.#state});\n\t}\n\n\t/**\n\t * Fulfill selected location\n\t * @param {Location} location\n\t * @returns {Promise}\n\t */\n\t#fulfillSelection(location: ?Location): void\n\t{\n\t\tlet result;\n\t\tthis.#setState(State.DATA_SELECTED);\n\t\tif (location)\n\t\t{\n\t\t\tif (location.hasExternalRelation() && this.#sourceCode === location.sourceCode)\n\t\t\t{\n\t\t\t\tresult = this.#getLocationDetails(location)\n\t\t\t\t\t.then(\n\t\t\t\t\t\t(detailedLocation: ?Location) => {\n\n\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\tlocation.address\n\t\t\t\t\t\t\t\t&& location.address.getFieldValue(AddressType.ADDRESS_LINE_2)\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tlet addressLine2 = '';\n\t\t\t\t\t\t\t\tif (detailedLocation.address.getFieldValue(AddressType.ADDRESS_LINE_2))\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\taddressLine2 = detailedLocation.address.getFieldValue(AddressType.ADDRESS_LINE_2);\n\t\t\t\t\t\t\t\t\taddressLine2 += ', ';\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\taddressLine2 += location.address.getFieldValue(AddressType.ADDRESS_LINE_2);\n\n\t\t\t\t\t\t\t\tdetailedLocation.address.setFieldValue(AddressType.ADDRESS_LINE_2, addressLine2);\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tthis.#createOnLocationSelectTimer(detailedLocation, 0);\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t},\n\t\t\t\t\t\t(response) => ErrorPublisher.getInstance().notify(response.errors)\n\t\t\t\t\t);\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tresult = new Promise((resolve) => {\n\t\t\t\t\tsetTimeout(() => {\n\t\t\t\t\t\tthis.#createOnLocationSelectTimer(location, 0);\n\t\t\t\t\t\tresolve();\n\t\t\t\t\t}, 0);\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t\telse\n\t\t{\n\t\t\tresult = new Promise((resolve) => {\n\t\t\t\tsetTimeout(() => {\n\t\t\t\t\tthis.#createOnLocationSelectTimer(null, 0);\n\t\t\t\t\tresolve();\n\t\t\t\t}, 0);\n\t\t\t});\n\t\t}\n\n\t\treturn result;\n\t}\n\n\t#onAddressChangedEventEmit(excludeSetAddressFeatures: Array = [], options: Object = {})\n\t{\n\t\tthis.emit(\n\t\t\tAutocomplete.#onAddressChangedEvent,\n\t\t\t{\n\t\t\t\taddress: this.#address,\n\t\t\t\texcludeSetAddressFeatures,\n\t\t\t\toptions: options,\n\t\t\t}\n\t\t);\n\t}\n\n\t/**\n\t * obtain location details\n\t * @param {Location} location\n\t * @returns {*}\n\t */\n\t#getLocationDetails(location: Location): Promise\n\t{\n\t\tthis.#setState(State.DATA_LOADING);\n\n\t\treturn this.#locationRepository.findByExternalId(\n\t\t\tlocation.externalId,\n\t\t\tlocation.sourceCode,\n\t\t\tlocation.languageId\n\t\t)\n\t\t\t.then((detailedLocation: ?Location) => {\n\t\t\t\t\tthis.#setState(State.DATA_LOADED);\n\n\t\t\t\t\tlet result;\n\t\t\t\t\t/*\n\t\t\t\t\t * Nominatim could return a bit different location without the coordinates.\n\t\t\t\t\t * For example N752206814\n\t\t\t\t\t */\n\t\t\t\t\tif (\n\t\t\t\t\t\tdetailedLocation.latitude !== '0'\n\t\t\t\t\t\t&& detailedLocation.longitude !== '0'\n\t\t\t\t\t\t&& detailedLocation !== ''\n\t\t\t\t\t)\n\t\t\t\t\t{\n\t\t\t\t\t\tresult = detailedLocation;\n\t\t\t\t\t\tresult.name = location.name;\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\tresult = location;\n\t\t\t\t\t}\n\n\t\t\t\t\treturn result;\n\t\t\t\t},\n\t\t\t\t(response) => {\n\t\t\t\t\tErrorPublisher.getInstance().notify(response.errors);\n\t\t\t\t}\n\t\t\t);\n\t}\n\n\t#convertStringToAddress(addressString: string)\n\t{\n\t\tconst result = new Address({\n\t\t\tlanguageId: this.#languageId\n\t\t});\n\n\t\tresult.setFieldValue(this.#addressFormat.fieldForUnRecognized, addressString);\n\t\treturn result;\n\t}\n\n\t/**\n\t * Is called when location was selected and the location details were obtained\n\t * @param {Location} location\n\t */\n\t#onLocationSelect(location: ?Location): void\n\t{\n\t\tthis.#address = location ? location.toAddress() : null;\n\t\tthis.#addressString.setValueFromAddress(this.#address);\n\t\tthis.#onAddressChangedEventEmit();\n\t}\n\n\t#onInputKeyDown(e: KeyboardEvent): void\n\t{\n\t\tif (\n\t\t\t!(\n\t\t\t\tthis.#inputNode\n\t\t\t\t&& this.#inputNode.selectionStart === 0\n\t\t\t\t&& this.#inputNode.selectionEnd === this.#inputNode.value.length\n\t\t\t)\n\t\t)\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tif (\n\t\t\t(\n\t\t\t\te.code === 'Backspace'\n\t\t\t\t|| e.code === 'Delete'\n\t\t\t\t|| (e.code === 'KeyV' && ((e.ctrlKey || e.metaKey)))\n\t\t\t\t|| (e.code === 'KeyX' && ((e.ctrlKey || e.metaKey)))\n\t\t\t\t|| (e.code === 'Insert' && e.shiftKey)\n\t\t\t)\n\t\t\t|| (\n\t\t\t\t!(e.ctrlKey || e.metaKey)\n\t\t\t\t&& [...e.key].length === 1\n\t\t\t)\n\t\t)\n\t\t{\n\t\t\tthis.address = null;\n\t\t\tthis.#onAddressChangedEventEmit();\n\t\t}\n\t}\n\n\t#onInputKeyUp(e: KeyboardEvent): void\n\t{\n\t\tif (this.#isDestroyed)\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tif (\n\t\t\tthis.#state !== State.DATA_INPUTTING\n\t\t\t&& this.#addressString.isChanged()\n\t\t)\n\t\t{\n\t\t\tthis.#setState(State.DATA_INPUTTING);\n\t\t}\n\n\t\tif (this.#prompt.isShown())\n\t\t{\n\t\t\tlet location;\n\t\t\tconst onLocationSelectTimeout = 700;\n\n\t\t\tswitch (e.code)\n\t\t\t{\n\t\t\t\tcase 'NumpadEnter':\n\t\t\t\tcase 'Enter':\n\t\t\t\t\tif (this.#prompt.isItemChosen())\n\t\t\t\t\t{\n\t\t\t\t\t\tthis.#fulfillSelection(this.#prompt.getChosenItem())\n\t\t\t\t\t\t\t.then(() => {\n\t\t\t\t\t\t\t\t\tthis.#prompt.close();\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t(error) => BX.debug(error)\n\t\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t\treturn;\n\n\t\t\t\tcase 'Tab':\n\t\t\t\tcase 'Escape':\n\t\t\t\t\tthis.#setState(State.DATA_SUPPOSED);\n\t\t\t\t\tthis.#onAddressChangedEventEmit();\n\t\t\t\t\tthis.#prompt.close();\n\t\t\t\t\treturn;\n\n\t\t\t\tcase 'ArrowUp':\n\t\t\t\t\tlocation = this.#prompt.choosePrevItem();\n\n\t\t\t\t\tif (location && location.address)\n\t\t\t\t\t{\n\t\t\t\t\t\tthis.#createOnLocationSelectTimer(location, onLocationSelectTimeout);\n\t\t\t\t\t}\n\n\t\t\t\t\treturn;\n\n\t\t\t\tcase 'ArrowDown':\n\t\t\t\t\tlocation = this.#prompt.chooseNextItem();\n\n\t\t\t\t\tif (location && location.address)\n\t\t\t\t\t{\n\t\t\t\t\t\tthis.#createOnLocationSelectTimer(location, onLocationSelectTimeout);\n\t\t\t\t\t}\n\n\t\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\n\t\tif (this.#addressString.isChanged())\n\t\t{\n\t\t\tthis.#addressString.actualize();\n\t\t\tthis.showPrompt(this.#addressString.value);\n\t\t}\n\n\t\tif (this.#addressString.value.length === 0)\n\t\t{\n\t\t\tthis.#showPresetLocations();\n\t\t}\n\t}\n\n\t#onInputPaste(): void\n\t{\n\t\tsetTimeout(() => {\n\t\t\tif (\n\t\t\t\tthis.#state !== State.DATA_INPUTTING\n\t\t\t\t&& this.#addressString.isChanged()\n\t\t\t)\n\t\t\t{\n\t\t\t\tthis.#setState(State.DATA_INPUTTING);\n\t\t\t}\n\n\t\t\tif (this.#addressString.isChanged())\n\t\t\t{\n\t\t\t\tthis.#addressString.actualize();\n\t\t\t\tthis.showPrompt(this.#addressString.value);\n\t\t\t}\n\t\t}, 0);\n\t}\n\n\t#createOnLocationSelectTimer(location: Location, timeout: Number): void\n\t{\n\t\tif (this.#onLocationSelectTimerId !== null)\n\t\t{\n\t\t\tclearTimeout(this.#onLocationSelectTimerId);\n\t\t}\n\n\t\tthis.#onLocationSelectTimerId = setTimeout(() => {\n\t\t\t\tthis.#onLocationSelect(location);\n\t\t\t},\n\t\t\ttimeout\n\t\t);\n\t}\n\n\t/**\n\t * @param {string} searchPhrase\n\t */\n\tshowPrompt(searchPhrase: string): void\n\t{\n\t\tthis.#searchPhrase.requested = searchPhrase;\n\t\tthis.#searchPhrase.current = searchPhrase;\n\t\tthis.#searchPhrase.dropped = '';\n\t\tthis.#showPromptInner(searchPhrase);\n\t}\n\n\tclosePrompt(): void\n\t{\n\t\tif (this.#prompt)\n\t\t{\n\t\t\tthis.#prompt.close();\n\t\t}\n\t}\n\n\tisPromptShown(): boolean\n\t{\n\t\tif (this.#prompt)\n\t\t{\n\t\t\tthis.#prompt.isShown();\n\t\t}\n\t}\n\n\t#showPromptInner(searchPhrase: string): void\n\t{\n\t\tif (searchPhrase.length <= 3)\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tif (this.#timerId !== null)\n\t\t{\n\t\t\tclearTimeout(this.#timerId);\n\t\t}\n\n\t\tthis.#timerId = this.#createTimer(searchPhrase);\n\t}\n\n\t/**\n\t * Wait for further user input for some time\n\t * @param {string} searchPhrase\n\t * @returns {number}\n\t */\n\t#createTimer(searchPhrase: string): number\n\t{\n\t\treturn setTimeout(() => {\n\t\t\t\t// to avoid multiple parallel requests, server responses are too slow.\n\t\t\t\tif (this.#isAutocompleteRequestStarted)\n\t\t\t\t{\n\t\t\t\t\tclearTimeout(this.#timerId);\n\t\t\t\t\tthis.#timerId = this.#createTimer(searchPhrase);\n\t\t\t\t\tthis.#isNextAutocompleteRequestWaiting = true;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthis.#isNextAutocompleteRequestWaiting = false;\n\n\t\t\t\tthis.emit(Autocomplete.#onSearchStartedEvent);\n\t\t\t\tthis.#isAutocompleteRequestStarted = true;\n\t\t\t\tconst params = this.#makeAutocompleteServiceParams();\n\n\t\t\t\tthis.#autocompleteService.autocomplete(searchPhrase, params)\n\t\t\t\t\t.then(\n\t\t\t\t\t\t(locationsList: Array<Location>) => {\n\t\t\t\t\t\t\tthis.#timerId = null;\n\t\t\t\t\t\t\tif (!this.#isNextAutocompleteRequestWaiting)\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tthis.#onPromptsReceived(locationsList, params);\n\t\t\t\t\t\t\t\tthis.emit(Autocomplete.#onSearchCompletedEvent);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tthis.#isAutocompleteRequestStarted = false;\n\t\t\t\t\t\t},\n\t\t\t\t\t\t(error) => {\n\t\t\t\t\t\t\tif (!this.#isNextAutocompleteRequestWaiting)\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tthis.emit(Autocomplete.#onSearchCompletedEvent);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tthis.#isAutocompleteRequestStarted = false;\n\t\t\t\t\t\t\tBX.debug(error);\n\t\t\t\t\t\t}\n\t\t\t\t\t);\n\t\t\t},\n\t\t\t300\n\t\t);\n\t}\n\n\tdestroy(): void\n\t{\n\t\tif (this.#isDestroyed)\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tEvent.unbindAll(this);\n\n\t\tif (this.#prompt)\n\t\t{\n\t\t\tthis.#prompt.destroy();\n\t\t\tthis.#prompt = null;\n\t\t}\n\n\t\tthis.#timerId = null;\n\n\t\tif (this.#inputNode)\n\t\t{\n\t\t\tthis.#inputNode.removeEventListener('keydown', this.#onInputKeyDown);\n\t\t\tthis.#inputNode.removeEventListener('keyup', this.#onInputKeyUp);\n\t\t\tthis.#inputNode.removeEventListener('focus', this.#onInputFocus);\n\t\t\tthis.#inputNode.removeEventListener('focusout', this.#onInputFocusOut);\n\t\t\tthis.#inputNode.removeEventListener('click', this.#onInputClick);\n\t\t\tthis.#inputNode.removeEventListener('paste', this.#onInputPaste);\n\t\t}\n\n\t\tdocument.removeEventListener('click', this.#onDocumentClick);\n\t\tthis.#isDestroyed = true;\n\t}\n}\n","import {Tag} from \"main.core\";\n\nexport default class Photo\n{\n\t#description;\n\t#url;\n\t#link;\n\t#location;\n\t#title;\n\n\tconstructor(props)\n\t{\n\t\tthis.#url = props.url;\n\t\tthis.#link = props.link || '';\n\t\tthis.#description = props.description || '';\n\t\tthis.#location = props.location;\n\t\tthis.#title = props.title || '';\n\t}\n\n\trender()\n\t{\n\t\tlet description = '';\n\n\t\tif(this.#description)\n\t\t{\n\t\t\t//todo: sanitize\n\t\t\tdescription = Tag.render`<span class=\"location-map-item-description\">${this.#description}</span>`;\n\t\t}\n\n\t\treturn Tag.render`\n\t\t\t<div class=\"location-map-photo-item-block\">\n\t\t\t\t<span class=\"location-map-photo-item-block-image-block-inner\">\n\t\t\t\t\t${description}\n\t\t\t\t\t<span \n\t\t\t\t\t\tdata-viewer data-viewer-type=\"image\" \n\t\t\t\t\t\tdata-src=\"${this.#link}\" \n\t\t\t\t\t\tdata-title=\"${this.#title}\"\n\t\t\t\t\t\tclass=\"location-map-item-photo-image\" \n\t\t\t\t\t\tdata-viewer-group-by=\"${this.#location.externalId}\"\n\t\t\t\t\t\tstyle=\"background-image: url(${this.#url});\">\t\t\t\t\t\t\t\n\t\t\t\t\t</span>\n\t\t\t\t</span>\n\t\t\t</div>`;\n\t}\n}","import {Tag, Dom} from \"main.core\";\nimport Photo from \"./photo\";\n\nexport default class Gallery\n{\n\t#photos = [];\n\t#container = null;\n\t#photosContainer = null;\n\t#thumbnailHeight;\n\t#thumbnailWidth;\n\t#photoService;\n\t#maxPhotoCount;\n\t#location;\n\n\tconstructor(props)\n\t{\n\t\tthis.#thumbnailHeight = props.thumbnailHeight;\n\t\tthis.#thumbnailWidth = props.thumbnailWidth;\n\t\tthis.#maxPhotoCount = props.maxPhotoCount;\n\t\tthis.#photoService = props.photoService;\n\t}\n\n\trefresh()\n\t{\n\t\tif(this.#location)\n\t\t{\n\t\t\tthis.#photoService.requestPhotos({\t\t\t\t\n\t\t\t\tlocation: this.#location,\n\t\t\t\tthumbnailHeight: this.#thumbnailHeight,\n\t\t\t\tthumbnailWidth: this.#thumbnailWidth,\n\t\t\t\tmaxPhotoCount: this.#maxPhotoCount\n\t\t\t\t\n\t\t\t})\n\t\t\t.then((photosData) => {\n\t\t\t\tif(Array.isArray(photosData) && photosData.length > 0)\n\t\t\t\t{\n\t\t\t\t\tthis.#setPhotos(photosData);\n\t\t\t\t\tthis.show();\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tthis.hide();\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis.hide();\n\t\t}\n\t}\n\n\tset location(location: Location)\n\t{\n\t\tthis.#location = location;\n\t\tthis.refresh();\n\t}\n\n\t#setPhotos(photosData)\n\t{\n\t\tif(!this.#location)\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tlet photos = [];\n\n\t\tfor(let photo of photosData)\n\t\t{\n\t\t\tphotos.push(\n\t\t\t\tnew Photo({\n\t\t\t\t\turl: photo.thumbnail.url,\n\t\t\t\t\tlink: photo.url,\n\t\t\t\t\tlocation: this.#location,\n\t\t\t\t\ttitle: this.#location.name + \" ( \" + BX.util.strip_tags(photo.description) + ' )'\n\t\t\t\t})\n\t\t\t);\n\t\t}\n\n\t\tif(!Array.isArray(photos))\n\t\t{\n\t\t\tBX.debug('Wrong type of photos. Must be array');\n\t\t\treturn;\n\t\t}\n\n\t\tthis.#photos = [];\n\n\t\tfor(let photo of photos)\n\t\t{\n\t\t\tthis.#photos.push(photo);\n\t\t}\n\n\t\tif(this.#photos.length > 0 && this.#photosContainer)\n\t\t{\n\t\t\tlet renderedPhotos = this.#photos ? this.#renderPhotos(this.#photos) : '';\n\n\t\t\tthis.#photosContainer.innerHTML = '';\n\n\t\t\tif(renderedPhotos.length > 0)\n\t\t\t{\n\t\t\t\tfor (let photo of renderedPhotos)\n\t\t\t\t{\n\t\t\t\t\tthis.#photosContainer.appendChild(photo);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\thide()\n\t{\n\t\tif(this.#container)\n\t\t{\n\t\t\tthis.#container.style.display = 'none';\n\t\t}\n\t}\n\n\tisHidden()\n\t{\n\t\treturn !this.#container || this.#container.clientWidth <= 0;\n\t}\n\n\tshow()\n\t{\n\t\tif(this.#container)\n\t\t{\n\t\t\tthis.#container.style.display = 'block';\n\t\t}\n\t}\n\n\trender()\n\t{\n\t\tthis.#photosContainer = Tag.render`\t\t\t\t\t\n\t\t\t\t<div class=\"location-map-photo-inner\">\t\t\t\t\t\n\t\t\t\t</div>`;\n\n\t\tthis.#container = Tag.render`\n\t\t\t<div class=\"location-map-photo-container\">\n\t\t\t\t${this.#photosContainer}\n\t\t\t</div>`;\n\n\t\treturn this.#container;\n\t}\n\n\t#renderPhotos(photos)\n\t{\n\t\tlet result = [];\n\n\t\tfor (let photo of photos)\n\t\t{\n\t\t\tresult.push(photo.render());\n\t\t}\n\n\t\treturn result;\n\t}\n}","import {Tag, Event, Dom, Text} from 'main.core';\nimport {EventEmitter} from 'main.core.events';\nimport 'ui.forms';\nimport {ControlMode} from 'location.core';\nimport State from '../state';\n\nexport default class Field extends EventEmitter\n{\n\tstatic #onValueChangedEvent = 'onValueChanged';\n\tstatic #onStateChangedEvent = 'onStateChanged';\n\n\t#title;\n\t#value;\n\t#type;\n\t#sort;\n\t#mode;\n\t#input;\n\t#viewContainer;\n\t#container = null;\n\t#state = State.INITIAL;\n\n\tconstructor(props: FieldConstructorProps)\n\t{\n\t\tsuper(props);\n\t\tthis.setEventNamespace('BX.Location.Widget.Field');\n\n\t\tthis.#title = props.title;\n\t\tthis.#type = props.type;\n\t\tthis.#sort = props.sort;\n\t}\n\n\tget container()\n\t{\n\t\treturn this.#container;\n\t}\n\n\tget state()\n\t{\n\t\treturn this.#state;\n\t}\n\n\t#setState(state: string)\n\t{\n\t\tthis.#state = state;\n\t\tthis.emit(Field.#onStateChangedEvent, {state: this.#state});\n\t}\n\n\trender(props: FieldRenderProps): void\n\t{\n\t\tthis.#value = typeof props.value === 'string' ? props.value : '';\n\n\t\tif(!ControlMode.isValid(props.mode))\n\t\t{\n\t\t\tBX.debug('props.mode must be valid ControlMode');\n\t\t}\n\n\t\tthis.#mode = props.mode;\n\n\t\tthis.#container = Tag.render`\n\t\t\t<div class=\"ui-entity-editor-content-block ui-entity-editor-field-text\">\n\t\t\t\t<div class=\"ui-entity-editor-block-title\">\n\t\t\t\t\t<label class=\"ui-entity-editor-block-title-text\">${this.#title}:</label>\t\t\t\t\n\t\t\t\t</div>\n\t\t\t</div>`;\n\n\t\tif(this.#mode === ControlMode.edit)\n\t\t{\n\t\t\tthis.#renderEditMode(this.#container)\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis.#renderViewMode(this.#container)\n\t\t}\n\n\t\treturn this.#container;\n\t}\n\n\t#renderEditMode(container: Element)\n\t{\n\t\tthis.#input = Tag.render`<input type=\"text\" class=\"ui-ctl-element\" value=\"${Text.encode(this.#value)}\">`;\n\t\tthis.#viewContainer = null;\n\n\t\tEvent.bind(this.#input, 'focus', (e) => {\n\t\t\tthis.#setState(State.DATA_INPUTTING);\n\t\t});\n\n\t\tEvent.bind(this.#input, 'focusout', (e) => {\n\t\t\tthis.#setState(State.DATA_SELECTED);\n\t\t});\n\n\t\tEvent.bind(this.#input, 'change', (e) => {\n\t\t\tthis.#setState(State.DATA_SELECTED);\n\t\t\tthis.#value = this.#input.value;\n\t\t\tthis.emit(Field.#onValueChangedEvent, {value: this});\n\t\t});\n\n\t\tcontainer.appendChild(\n\t\t\tTag.render`\n\t\t\t\t<div class=\"ui-entity-editor-content-block\">\n\t\t\t\t\t<div class=\"ui-ctl ui-ctl-textbox ui-ctl-w100\">\n\t\t\t\t\t\t${this.#input}\n\t\t\t\t\t</div>\n\t\t\t\t</div>`\n\t\t);\n\t}\n\n\t#renderViewMode(container: Element)\n\t{\n\t\tthis.#input = null;\n\n\t\tthis.#viewContainer = Tag.render`\n\t\t\t<div class=\"ui-title-6\">\n\t\t\t\t${Text.encode(this.#value)}\n\t\t\t</div>`;\n\n\t\tcontainer.appendChild(this.#viewContainer);\n\t}\n\n\t#refreshLayout()\n\t{\n\t\tif(this.#mode === ControlMode.edit)\n\t\t{\n\t\t\tthis.#input.value = this.#value;\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis.#viewContainer.innerHTML = Text.encode(this.#value);\n\t\t}\n\t}\n\n\tset type(type: number)\n\t{\n\t\tthis.#type = type;\n\t}\n\n\tget type(): number\n\t{\n\t\treturn this.#type;\n\t}\n\n\tset sort(sort: number)\n\t{\n\t\tthis.#sort = sort;\n\t}\n\n\tget sort(): number\n\t{\n\t\treturn this.#sort;\n\t}\n\n\tset value(value: string)\n\t{\n\t\tthis.#value = typeof value === 'string' ? value : '';\n\t\tthis.#refreshLayout();\n\t}\n\n\tget value(): string\n\t{\n\t\treturn this.#value;\n\t}\n\n\tsubscribeOnValueChangedEvent(listener: Function): void\n\t{\n\t\tthis.subscribe(Field.#onValueChangedEvent, listener);\n\t}\n\n\tsubscribeOnStateChangedEvent(listener: Function): void\n\t{\n\t\tthis.subscribe(Field.#onStateChangedEvent, listener);\n\t}\n\n\tdestroy()\n\t{\n\t\tDom.remove(this.#container);\n\t\tEvent.unbindAll(this);\n\t\tthis.#container = null;\n\t}\n}\n\ntype FieldConstructorProps = {\n\ttitle: string\n}\n\ntype FieldRenderProps = {\n\tvalue: string,\n\tmode: string //ControlMode\n}","import {Event, Dom, Type} from 'main.core';\nimport {EventEmitter} from 'main.core.events';\nimport {Format, Address, ControlMode} from 'location.core';\nimport Field from './field';\n\nexport type FieldsConstructorType = {\n\taddressFormat: Format\n}\n\nexport type FieldsRenderType = {\n\taddress: Address,\n\tmode: string, // ControlMode\n\tcontainer: Element\n}\n\nexport default class Fields extends EventEmitter\n{\n\tstatic #onAddressChangedEvent = 'onAddressChanged';\n\tstatic #onStateChangedEvent = 'onStateChanged';\n\n\t#address;\n\t#addressFormat;\n\t#mode;\n\t#fields = [];\n\t#languageId;\n\t#container;\n\t#state;\n\n\tconstructor(props: FieldsConstructorType)\n\t{\n\t\tsuper(props);\n\n\t\tthis.setEventNamespace('BX.Location.Widget.Fields');\n\n\t\tif(!(props.addressFormat instanceof Format))\n\t\t{\n\t\t\tBX.debug('addressFormat must be instance of Format');\n\t\t}\n\n\t\tthis.#addressFormat = props.addressFormat;\n\t\tthis.#languageId = props.languageId;\n\t\tthis.#initFields();\n\t}\n\n\t#initFields()\n\t{\n\t\tfor (let type in this.#addressFormat.fieldCollection.fields)\n\t\t{\n\t\t\tif(!this.#addressFormat.fieldCollection.fields.hasOwnProperty(type))\n\t\t\t{\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tlet formatField = this.#addressFormat.fieldCollection.fields[type];\n\n\t\t\tlet field = new Field({\n\t\t\t\ttitle: formatField.name,\n\t\t\t\ttype: formatField.type,\n\t\t\t\tsort: formatField.sort\n\t\t\t});\n\n\t\t\tfield.subscribeOnValueChangedEvent((event) => {\n\t\t\t\tthis.#onFieldChanged(field);\n\t\t\t});\n\n\t\t\tfield.subscribeOnStateChangedEvent((event) => {\n\t\t\t\tlet data = event.getData();\n\t\t\t\tthis.#setState(data.state);\n\t\t\t});\n\n\t\t\tthis.#fields.push(field)\n\t\t}\n\n\t\tthis.#fields.sort((a, b) => {\n\t\t\treturn a.sort - b.sort;\n\t\t});\n\t}\n\n\trender(props: FieldsRenderType): void\n\t{\n\t\tif(props.address && !(props.address instanceof Address))\n\t\t{\n\t\t\tBX.debug('props.address must be instance of Address');\n\t\t}\n\n\t\tthis.#address = props.address;\n\n\t\tif(!ControlMode.isValid(props.mode))\n\t\t{\n\t\t\tBX.debug('props.mode must be valid ControlMode');\n\t\t}\n\n\t\tthis.#mode = props.mode;\n\n\t\tif(!Type.isDomNode(props.container))\n\t\t{\n\t\t\tBX.debug('props.container must be dom node');\n\t\t}\n\n\t\tthis.#container = props.container;\n\n\t\tfor(let field of this.#fields)\n\t\t{\n\t\t\tlet value = this.#address ? this.#address.getFieldValue(field.type) : '';\n\n\t\t\tif(this.#mode === ControlMode.view && !value)\n\t\t\t{\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tlet item = field.render({\n\t\t\t\tvalue: value,\n\t\t\t\tmode: this.#mode\n\t\t\t});\n\n\t\t\tthis.#container.appendChild(item);\n\t\t}\n\t}\n\n\t#onFieldChanged(field: Field)\n\t{\n\t\tif(!this.#address)\n\t\t{\n\t\t\tthis.#address = new Address({\n\t\t\t\tlanguageId: this.#languageId\n\t\t\t});\n\t\t}\n\n\t\tthis.#address.setFieldValue(field.type, field.value);\n\n\t\tthis.emit(Fields.#onAddressChangedEvent, {\n\t\t\taddress: this.#address,\n\t\t\tchangedField: field\n\t\t});\n\t}\n\n\tset address(address: ?Address)\n\t{\n\t\tif(address && !(address instanceof Address))\n\t\t{\n\t\t\tBX.debug('address must be instance of Address');\n\t\t}\n\n\t\tthis.#address = address;\n\n\t\tfor(let field of this.#fields)\n\t\t{\n\t\t\tfield.value = this.#address ? this.#address.getFieldValue(field.type) : '';\n\t\t}\n\t}\n\n\tsubscribeOnAddressChangedEvent(listener: Function): void\n\t{\n\t\tthis.subscribe(Fields.#onAddressChangedEvent, listener);\n\t}\n\n\tdestroy()\n\t{\n\t\tEvent.unbindAll(this);\n\n\t\tfor(let field of this.#fields)\n\t\t{\n\t\t\tfield.destroy();\n\t\t}\n\n\t\tDom.clean(this.#container);\n\t}\n\n\tget state()\n\t{\n\t\treturn this.#state;\n\t}\n\n\t#setState(state: string)\n\t{\n\t\tthis.#state = state;\n\t\tthis.emit(Fields.#onStateChangedEvent, {state: this.#state});\n\t}\n\n\tsubscribeOnStateChangedEvent(listener: Function): void\n\t{\n\t\tthis.subscribe(Fields.#onStateChangedEvent, listener);\n\t}\n}","import {Type} from 'main.core';\nimport {Address} from 'location.core';\nimport MapPopup from '../../mappopup/mappopup';\nimport BaseFeature from './basefeature';\nimport State from '../../state';\n\n/**\n * Complex address widget\n */\nexport default class MapFeature extends BaseFeature\n{\n\t#map = null;\n\n\t#mapBindElement = null;\n\t#addressWidget = null;\n\n\tconstructor(props)\n\t{\n\t\tsuper(props);\n\n\t\tif(!(props.map instanceof MapPopup))\n\t\t{\n\t\t\tBX.debug('props.map must be instance of MapPopup');\n\t\t}\n\n\t\tthis.#map = props.map;\n\n\t\tthis.#map.onChangedEventSubscribe(\n\t\t\t(event) => {\n\t\t\t\tconst data = event.getData();\n\t\t\t\tthis.#addressWidget.setAddressByFeature(data.address, this);\n\t\t\t});\n\t}\n\n\tshowMap(useUserLocation: boolean = false): void\n\t{\n\t\tif(!this.#map.isShown())\n\t\t{\n\t\t\tthis.#map.show(useUserLocation);\n\t\t}\n\t}\n\n\tcloseMap(): void\n\t{\n\t\tif(this.#map.isShown())\n\t\t{\n\t\t\tthis.#map.close();\n\t\t}\n\n\t\tthis.#map.bindelement = this.#mapBindElement;\n\t}\n\n\tresetView(): void\n\t{\n\t\tthis.closeMap();\n\t}\n\n\t/**\n\t * Render Widget\n\t * @param {Object} props\n\t */\n\trender(props: {}): void\n\t{\n\t\tif(!Type.isDomNode(props.mapBindElement))\n\t\t{\n\t\t\tBX.debug('props.mapBindElement must be instance of Element');\n\t\t}\n\n\t\tthis.#mapBindElement = props.mapBindElement;\n\n\t\tthis.#map.render({\n\t\t\tbindElement: props.mapBindElement,\n\t\t\taddress: this.#addressWidget.address,\n\t\t\tmode: this.#addressWidget.mode,\n\t\t});\n\t}\n\n\tsetAddress(address: ?Address): void\n\t{\n\t\tif(this.addressWidget.state === State.DATA_INPUTTING)\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tthis.#map.address = address;\n\t}\n\n\tsetAddressWidget(addressWidget): void\n\t{\n\t\tthis.#addressWidget = addressWidget;\n\t}\n\n\tsetMode(mode: string): void\n\t{\n\t\tthis.#map.mode = mode;\n\t}\n\n\tdestroy(): void\n\t{\n\t\tthis.#map.destroy();\n\t\tthis.#map = null;\n\t}\n\n\tget map(): MapPopup\n\t{\n\t\treturn this.#map;\n\t}\n\n\tget addressWidget(): Address\n\t{\n\t\treturn this.#addressWidget;\n\t}\n\n\tget mapBindElement(): Element\n\t{\n\t\treturn this.#mapBindElement;\n\t}\n}","import {Address, ControlMode} from 'location.core';\nimport BaseFeature from './basefeature';\nimport Autocomplete from '../../autocomplete/autocomplete';\n\n/**\n * Complex address widget\n */\nexport default class AutocompleteFeature extends BaseFeature\n{\n\tstatic searchStartedEvent = 'searchStarted';\n\tstatic searchCompletedEvent = 'searchCompleted';\n\tstatic showOnMapClickedEvent = 'showOnMapClicked';\n\n\t#autocomplete;\n\t#addressWidget = null;\n\n\tconstructor(props)\n\t{\n\t\tsuper(props);\n\n\t\tif(!(props.autocomplete instanceof Autocomplete))\n\t\t{\n\t\t\tBX.debug('props.autocomplete must be instance of Autocomplete');\n\t\t}\n\n\t\tthis.#autocomplete = props.autocomplete;\n\n\t\tthis.#autocomplete.onAddressChangedEventSubscribe(\n\t\t\t(event) =>\n\t\t\t{\n\t\t\t\tconst data = event.getData();\n\n\t\t\t\tthis.#addressWidget.setAddressByFeature(\n\t\t\t\t\tdata.address,\n\t\t\t\t\tthis,\n\t\t\t\t\tdata.excludeSetAddressFeatures,\n\t\t\t\t\tdata.options\n\t\t\t\t);\n\t\t\t});\n\n\t\tthis.#autocomplete.onStateChangedEventSubscribe(\n\t\t\t(event) =>\n\t\t\t{\n\t\t\t\tconst data = event.getData();\n\t\t\t\tthis.#addressWidget.setStateByFeature(data.state);\n\t\t\t});\n\n\t\tthis.#autocomplete.onSearchStartedEventSubscribe(\n\t\t\t(event) =>\n\t\t\t{\n\t\t\t\tconst data = event.getData();\n\t\t\t\tthis.#addressWidget.emitFeatureEvent(\n\t\t\t\t\t{\n\t\t\t\t\t\tfeature: this,\n\t\t\t\t\t\teventCode: AutocompleteFeature.searchStartedEvent,\n\t\t\t\t\t\tpayload: data\n\t\t\t\t\t}\n\t\t\t\t);\n\t\t\t});\n\n\t\tthis.#autocomplete.onSearchCompletedEventSubscribe(\n\t\t\t(event) =>\n\t\t\t{\n\t\t\t\tconst data = event.getData();\n\t\t\t\tthis.#addressWidget.emitFeatureEvent(\n\t\t\t\t\t{\n\t\t\t\t\t\tfeature: this,\n\t\t\t\t\t\teventCode: AutocompleteFeature.searchCompletedEvent,\n\t\t\t\t\t\tpayload: data\n\t\t\t\t\t}\n\t\t\t\t);\n\t\t\t});\n\n\t\tthis.#autocomplete.onShowOnMapClickedEventSubscribe(\n\t\t\t(event) =>\n\t\t\t{\n\t\t\t\tconst data = event.getData();\n\t\t\t\tthis.#addressWidget.emitFeatureEvent(\n\t\t\t\t\t{\n\t\t\t\t\t\tfeature: this,\n\t\t\t\t\t\teventCode: AutocompleteFeature.showOnMapClickedEvent,\n\t\t\t\t\t\tpayload: data\n\t\t\t\t\t}\n\t\t\t\t);\n\t\t\t});\n\t}\n\n\tresetView(): void\n\t{\n\t\tthis.#autocomplete.closePrompt();\n\t}\n\n\trender(props): void\n\t{\n\t\tif(this.#addressWidget.mode === ControlMode.edit)\n\t\t{\n\t\t\tthis.#autocomplete.render({\n\t\t\t\tinputNode: this.#addressWidget.inputNode,\n\t\t\t\tmenuNode: props.autocompleteMenuElement,\n\t\t\t\taddress: this.#addressWidget.address,\n\t\t\t\tmode: this.#addressWidget.mode,\n\t\t\t});\n\t\t}\n\t}\n\n\tsetAddress(address: ?Address): void\n\t{\n\t\tthis.#autocomplete.address = address;\n\t}\n\n\tsetAddressWidget(addressWidget)\n\t{\n\t\tthis.#addressWidget = addressWidget;\n\t}\n\n\tdestroy()\n\t{\n\t\tthis.#autocomplete.destroy();\n\t\tthis.#autocomplete = null;\n\t}\n}","import {Type} from 'main.core';\nimport {Address, ControlMode} from 'location.core';\nimport BaseFeature from './basefeature';\nimport Fields from '../../fields/fields';\n\n/**\n * Fields widget feature\n */\nexport default class FieldsFeature extends BaseFeature\n{\n\t#fields;\n\t#addressWidget = null;\n\n\tconstructor(props)\n\t{\n\t\tsuper(props);\n\n\t\tif(!(props.fields instanceof Fields))\n\t\t{\n\t\t\tBX.debug('props.Fields must be instance of Fields');\n\t\t}\n\n\t\tthis.#fields = props.fields;\n\n\t\tthis.#fields.subscribeOnAddressChangedEvent(\n\t\t\t(event) => {\n\t\t\t\tlet data = event.getData();\n\t\t\t\tthis.#addressWidget.setAddressByFeature(data.address, this);\n\t\t\t});\n\n\t\tthis.#fields.subscribeOnStateChangedEvent(\n\t\t\t(event) => {\n\t\t\t\tlet data = event.getData();\n\t\t\t\tthis.#addressWidget.setStateByFeature(data.state);\n\t\t\t});\n\t}\n\n\trender(props): void\n\t{\n\t\tif(this.#addressWidget.mode === ControlMode.edit)\n\t\t{\n\t\t\tif (!Type.isDomNode(props.fieldsContainer))\n\t\t\t{\n\t\t\t\tBX.debug('props.fieldsContainer must be instance of Element');\n\t\t\t}\n\n\t\t\tthis.#fields.render({\n\t\t\t\taddress: this.#addressWidget.address,\n\t\t\t\tmode: this.#addressWidget.mode,\n\t\t\t\tcontainer: props.fieldsContainer\n\t\t\t});\n\t\t}\n\t}\n\n\tsetAddressWidget(addressWidget)\n\t{\n\t\tthis.#addressWidget = addressWidget;\n\t}\n\n\tsetAddress(address: Address): void\n\t{\n\t\tthis.#fields.address = address;\n\t}\n\n\tsetMode(mode: string): void\n\t{\n\t\tthis.#fields.mode = mode;\n\t}\n\n\tdestroy(): void\n\t{\n\t\tthis.#fields.destroy();\n\t\tthis.#fields = null;\n\t}\n}","import {Address, ControlMode} from 'location.core';\nimport State from '../../state';\nimport MapFeature from './mapfeature';\n\n/**\n * Map feature for the address widget with auto map opening / closing behavior\n */\nexport default class MapFeatureAuto extends MapFeature\n{\n\t#showMapTimerId = null;\n\t#showMapDelay = 700;\n\t#closeMapTimerId = null;\n\t#closeMapDelay = 800;\n\n\t#isDestroyed = false;\n\n\t/**\n\t * Render Widget\n\t * @param {AddressRenderProps} props\n\t */\n\trender(props: AddressRenderProps): void\n\t{\n\t\tsuper.render(props);\n\n\t\tthis.addressWidget.controlWrapper.addEventListener('click', this.#onControlWrapperClick.bind(this));\n\t\tthis.addressWidget.controlWrapper.addEventListener('mouseover', this.#processOnMouseOver.bind(this));\n\t\tthis.addressWidget.controlWrapper.addEventListener('mouseout', this.#processOnMouseOut.bind(this));\n\n\t\tdocument.addEventListener('click', this.#onDocumentClick.bind(this));\n\n\t\tthis.map.onMouseOverSubscribe(this.#processOnMouseOver.bind(this));\n\t\tthis.map.onMouseOutSubscribe(this.#processOnMouseOut.bind(this));\n\t}\n\n\t// eslint-disable-next-line no-unused-vars\n\t#onControlWrapperClick(event)\n\t{\n\t\tif (this.#isDestroyed)\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tif (this.addressWidget.mode === ControlMode.view)\n\t\t{\n\t\t\tif (this.map.isShown())\n\t\t\t{\n\t\t\t\tthis.closeMap();\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tclearTimeout(this.#showMapTimerId);\n\t\t\t}\n\t\t}\n\t\telse if (this.addressWidget.mode === ControlMode.edit && this._saveResourceStrategy === false)\n\t\t{\n\t\t\tif (this.addressWidget.address && !this.map.isShown() && event.target === this.addressWidget.inputNode)\n\t\t\t{\n\t\t\t\tthis.showMap();\n\t\t\t}\n\t\t}\n\t}\n\n\t#onDocumentClick(event)\n\t{\n\t\tif (this.#isDestroyed)\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tif (this.addressWidget.inputNode !== event.target)\n\t\t{\n\t\t\tthis.closeMap();\n\t\t}\n\t}\n\n\t#processOnMouseOver()\n\t{\n\t\tif (this.#isDestroyed)\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tclearTimeout(this.#showMapTimerId);\n\t\tclearTimeout(this.#closeMapTimerId);\n\n\t\tif (this.addressWidget.mode !== ControlMode.view)\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tif (this.addressWidget.address && !this.map.isShown())\n\t\t{\n\t\t\tthis.#showMapTimerId = setTimeout(() => {\n\t\t\t\t\tthis.showMap();\n\t\t\t\t},\n\t\t\t\tthis.#showMapDelay\n\t\t\t);\n\t\t}\n\t}\n\n\t#processOnMouseOut()\n\t{\n\t\tif (this.#isDestroyed)\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tclearTimeout(this.#showMapTimerId);\n\t\tclearTimeout(this.#closeMapTimerId);\n\n\t\tif (this.addressWidget.mode !== ControlMode.view)\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tif (this.addressWidget.mode === ControlMode.view && this.map.isShown())\n\t\t{\n\t\t\tthis.#closeMapTimerId = setTimeout(() => {\n\t\t\t\t\tthis.closeMap();\n\t\t\t\t},\n\t\t\t\tthis.#closeMapDelay\n\t\t\t);\n\t\t}\n\t}\n\n\tsetAddress(address: ?Address): void\n\t{\n\t\tif (!address)\n\t\t{\n\t\t\tthis.closeMap();\n\t\t}\n\n\t\tthis.map.address = address;\n\n\t\tif (address && this.addressWidget.state !== State.DATA_SUPPOSED)\n\t\t{\n\t\t\tthis.showMap();\n\t\t}\n\t}\n\n\tdestroy()\n\t{\n\t\tif (this.#isDestroyed)\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tdocument.removeEventListener('click', this.#onDocumentClick);\n\n\t\tif (this.addressWidget.controlWrapper)\n\t\t{\n\t\t\tthis.addressWidget.controlWrapper.removeEventListener('click', this.#onControlWrapperClick);\n\t\t\tthis.addressWidget.controlWrapper.removeEventListener('mouseover', this.#processOnMouseOver);\n\t\t\tthis.addressWidget.controlWrapper.removeEventListener('mouseout', this.#processOnMouseOut);\n\t\t}\n\n\t\tthis.#showMapTimerId = null;\n\t\tthis.#closeMapTimerId = null;\n\n\t\tsuper.destroy();\n\t\tthis.#isDestroyed = true;\n\t}\n}\n","import {BaseSource, LocationRepository, SourceCreationError, Format, Location} from 'location.core';\n\nimport {OSMFactory} from 'location.osm';\n\nimport {Google} from 'location.google';\nimport {OSM} from 'location.osm';\n\nimport Address from './address/address';\nimport Autocomplete from './autocomplete/autocomplete';\n\nimport MapPopup from './mappopup/mappopup';\nimport Gallery from './mappopup/gallery';\nimport Popup from './mappopup/popup';\nimport Fields from './fields/fields';\n\nimport MapFeature from './address/features/mapfeature';\nimport AutocompleteFeature from './address/features/autocompletefeature';\nimport FieldsFeature from './address/features/fieldsfeature';\nimport MapFeatureAuto from './address/features/mapfeatureauto';\n\n/**\n * Props type for the main fabric method\n */\nexport type FactoryCreateAddressWidgetProps = {\n\t// Initial Address\n\taddress?: Address,\n\t// Initial widget mode\n\tmode: 'edit' | 'view',\n\n\t// optional\n\tlanguageId?: string,\n\taddressFormat?: Format,\n\tsourceCode?: string,\n\tsourceParams?: {},\n\n\t// Witch features will be used?\n\tuseFeatures?: {\n\t\tfields?: boolean, \t\t// default true\n\t\tmap?: boolean, \t\t\t// default true\n\t\tautocomplete?: boolean\t// default true\n\t},\n\n\t// Useful for the using with map feature only\n\t// Address photo height if photo exists\n\tthumbnailHeight: number,\n\t// Address photo width if photo exists\n\tthumbnailWidth: number,\n\t// Max photo thumbnails count\n\tmaxPhotoCount: number,\n\t/*\n\t * auto - open / close map feature depends on user's input\n\t * manual - allow to control open / close map\n\t */\n\tmapBehavior: 'auto' | 'manual',\n\tpopupOptions?: {},\n\tpopupBindOptions: {\n\t\tforceBindPosition?: boolean,\n\t\tforceLeft?: boolean,\n\t\tforceTop?: boolean,\n\t\tposition?: 'right' | 'top' | 'bootom'\n\t},\n\tpresetLocationsProvider?: Function,\n\tpresetLocationList?: []\n};\n\n/**\n * Factory class with a set of tools for the address widget creation\n */\nexport default class Factory\n{\n\t/**\n\t * Main factory method\n\t * @param {FactoryCreateAddressWidgetProps} props\n\t * @returns {Address}\n\t */\n\tcreateAddressWidget(props: FactoryCreateAddressWidgetProps): Address\n\t{\n\t\tconst sourceCode = props.sourceCode || BX.message('LOCATION_WIDGET_SOURCE_CODE');\n\t\tconst sourceParams = props.sourceParams || BX.message('LOCATION_WIDGET_SOURCE_PARAMS');\n\t\tconst languageId = props.languageId || BX.message('LOCATION_WIDGET_LANGUAGE_ID');\n\t\tconst sourceLanguageId = props.sourceLanguageId || BX.message('LOCATION_WIDGET_SOURCE_LANGUAGE_ID');\n\t\tconst userLocationPoint = new Location(JSON.parse(BX.message('LOCATION_WIDGET_USER_LOCATION_POINT')));\n\n\t\tconst addressFormat = props.addressFormat || new Format(\n\t\t\tJSON.parse(\n\t\t\t\tBX.message('LOCATION_WIDGET_DEFAULT_FORMAT')\n\t\t\t));\n\n\t\tconst presetLocationsProvider = props.presetLocationsProvider\n\t\t\t? props.presetLocationsProvider\n\t\t\t: () => {\n\t\t\t\treturn props.presetLocationList ? props.presetLocationList : [];\n\t\t\t};\n\n\t\tconst features = [];\n\n\t\tif(!props.useFeatures || props.useFeatures.fields !== false)\n\t\t{\n\t\t\tfeatures.push(\n\t\t\t\tthis.createFieldsFeature({addressFormat, languageId})\n\t\t\t);\n\t\t}\n\n\t\tlet source = null;\n\n\t\tif(sourceCode && sourceParams)\n\t\t{\n\t\t\ttry\n\t\t\t{\n\t\t\t\tsource = this.createSource(sourceCode, sourceParams, languageId, sourceLanguageId);\n\t\t\t}\n\t\t\tcatch (e)\n\t\t\t{\n\t\t\t\tif(e instanceof SourceCreationError)\n\t\t\t\t{\n\t\t\t\t\tsource = null;\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tthrow e;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tlet mapFeature = null;\n\t\tif(source)\n\t\t{\n\t\t\tif(!props.useFeatures || props.useFeatures.autocomplete !== false)\n\t\t\t{\n\t\t\t\tfeatures.push(\n\t\t\t\t\tthis.createAutocompleteFeature({\n\t\t\t\t\t\tlanguageId,\n\t\t\t\t\t\taddressFormat,\n\t\t\t\t\t\tsource,\n\t\t\t\t\t\tuserLocationPoint: userLocationPoint,\n\t\t\t\t\t\tpresetLocationsProvider\n\t\t\t\t\t}));\n\t\t\t}\n\n\t\t\tif(!props.useFeatures || props.useFeatures.map !== false)\n\t\t\t{\n\t\t\t\tconst showPhotos = !!sourceParams.showPhotos;\n\t\t\t\tconst useGeocodingService = !!sourceParams.useGeocodingService;\n\t\t\t\tconst DEFAULT_THUMBNAIL_HEIGHT = 80;\n\t\t\t\tconst DEFAULT_THUMBNAIL_WIDTH = 150;\n\t\t\t\tconst DEFAULT_MAX_PHOTO_COUNT = showPhotos ? 5 : 0;\n\t\t\t\tconst DEFAULT_MAP_BEHAVIOR = 'auto';\n\n\t\t\t\tmapFeature = this.createMapFeature({\n\t\t\t\t\taddressFormat,\n\t\t\t\t\tsource,\n\t\t\t\t\tuseGeocodingService,\n\t\t\t\t\tpopupOptions: props.popupOptions,\n\t\t\t\t\tpopupBindOptions: props.popupBindOptions,\n\t\t\t\t\tthumbnailHeight: props.thumbnailHeight || DEFAULT_THUMBNAIL_HEIGHT,\n\t\t\t\t\tthumbnailWidth: props.thumbnailWidth || DEFAULT_THUMBNAIL_WIDTH,\n\t\t\t\t\tmaxPhotoCount: props.maxPhotoCount || DEFAULT_MAX_PHOTO_COUNT,\n\t\t\t\t\tmapBehavior: props.mapBehavior || DEFAULT_MAP_BEHAVIOR,\n\t\t\t\t\tuserLocationPoint: userLocationPoint\n\t\t\t\t});\n\n\t\t\t\tfeatures.push(mapFeature);\n\t\t\t}\n\t\t}\n\n\t\tconst widget = new Address({\n\t\t\tfeatures,\n\t\t\taddress: props.address,\n\t\t\tmode: props.mode,\n\t\t\taddressFormat,\n\t\t\tlanguageId,\n\t\t});\n\n\t\tif(mapFeature)\n\t\t{\n\t\t\twidget.subscribeOnFeatureEvent((event) => {\n\t\t\t\tconst data = event.getData();\n\n\t\t\t\tif(data.feature instanceof AutocompleteFeature\n\t\t\t\t\t&& data.eventCode === AutocompleteFeature.showOnMapClickedEvent\n\t\t\t\t)\n\t\t\t\t{\n\t\t\t\t\tmapFeature.showMap(true);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\treturn widget;\n\t}\n\n\tcreateFieldsFeature(props: {}): FieldsFeature\n\t{\n\t\tconst fields = new Fields({\n\t\t\taddressFormat: props.addressFormat,\n\t\t\tlanguageId: props.languageId,\n\t\t});\n\n\t\treturn new FieldsFeature({\n\t\t\tfields\n\t\t});\n\t}\n\n\tcreateAutocompleteFeature(props: {}): AutocompleteFeature\n\t{\n\t\tconst autocomplete = new Autocomplete({\n\t\t\tsourceCode: props.source.sourceCode,\n\t\t\tlanguageId: props.languageId,\n\t\t\taddressFormat: props.addressFormat,\n\t\t\tautocompleteService: props.source.autocompleteService,\n\t\t\tuserLocationPoint: props.userLocationPoint,\n\t\t\tpresetLocationsProvider: props.presetLocationsProvider,\n\t\t});\n\n\t\treturn new AutocompleteFeature({\n\t\t\tautocomplete\n\t\t});\n\t}\n\n\tcreateMapFeature(props: {}): MapFeature\n\t{\n\t\tlet popupOptions = {\n\t\t\tcacheable: true,\n\t\t\tcloseByEsc: true,\n\t\t\tclassName: `location-popup-window location-source-${props.source.sourceCode}`,\n\t\t\tanimation: 'fading',\n\t\t\tangle: true,\n\t\t\tbindOptions: props.popupBindOptions\n\t\t};\n\t\tif(props.popupOptions)\n\t\t{\n\t\t\tpopupOptions = Object.assign(popupOptions, props.popupOptions);\n\t\t}\n\t\tconst popup = new Popup(popupOptions);\n\n\t\tlet gallery = null;\n\n\t\tif(props.maxPhotoCount > 0)\n\t\t{\n\t\t\tgallery = new Gallery({\n\t\t\t\tphotoService: props.source.photoService,\n\t\t\t\tthumbnailHeight: props.thumbnailHeight,\n\t\t\t\tthumbnailWidth: props.thumbnailWidth,\n\t\t\t\tmaxPhotoCount: props.maxPhotoCount\n\t\t\t});\n\t\t}\n\n\t\tconst mapFeatureProps = {\n\t\t\tsaveResourceStrategy: props.source.sourceCode === Google.code,\n\t\t\tmap: new MapPopup({\n\t\t\t\taddressFormat: props.addressFormat,\n\t\t\t\tmap: props.source.map,\n\t\t\t\tpopup: popup,\n\t\t\t\tgallery: gallery,\n\t\t\t\tlocationRepository: new LocationRepository(),\n\t\t\t\tgeocodingService: props.useGeocodingService ? props.source.geocodingService : null,\n\t\t\t\tuserLocationPoint: props.userLocationPoint\n\t\t\t})\n\t\t};\n\n\t\tlet result;\n\n\t\tif(props.mapBehavior === 'manual')\n\t\t{\n\t\t\tresult = new MapFeature(mapFeatureProps);\n\t\t}\n\t\telse\n\t\t{\n\t\t\tresult = new MapFeatureAuto(mapFeatureProps);\n\t\t}\n\n\t\treturn result;\n\t}\n\n\t// todo: add custom sources\n\tcreateSource(code: string, params: {}, languageId: string, sourceLanguageId: string): BaseSource\n\t{\n\t\tlet source = null;\n\n\t\tparams.languageId = languageId;\n\t\tparams.sourceLanguageId = sourceLanguageId;\n\n\t\tif(code === Google.code)\n\t\t{\n\t\t\tsource = new Google(params);\n\t\t}\n\t\telse if(code === OSM.code)\n\t\t{\n\t\t\tsource = OSMFactory.createOSMSource(params);\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthrow new RangeError('Wrong source code');\n\t\t}\n\n\t\treturn source;\n\t}\n}\n","import {EventEmitter} from \"main.core.events\";\nimport {Tag} from \"main.core\";\n\nexport default class Switch extends EventEmitter\n{\n\tstatic STATE_OFF = 0;\n\tstatic STATE_ON = 1;\n\n\tstatic #onToggleEvent = \"onToggleEvent\";\n\n\t#state;\n\t#titleContainer;\n\t#titles = ['on', 'off'];\n\n\tconstructor(props = {})\n\t{\n\t\tsuper();\n\t\tthis.setEventNamespace('BX.Location.Widget.Switch');\n\t\tthis.#state = props.state;\n\t\tthis.#titles = props.titles;\n\t}\n\n\tset state(state: string)\n\t{\n\t\tthis.#state = state;\n\n\t\tif(this.#titleContainer)\n\t\t{\n\t\t\tthis.#titleContainer.innerHTML = this.#getTitle();\n\t\t}\n\t}\n\n\tget state(): string\n\t{\n\t\treturn this.#state;\n\t}\n\n\t#getTitle()\n\t{\n\t\treturn this.#titles[this.#state];\n\t}\n\n\trender(mode: number)\n\t{\n\t\tthis.#titleContainer = Tag.render`\t\t\t\n\t\t\t<span class=\"ui-link ui-link-secondary ui-entity-editor-block-title-link\">\n\t\t\t\t${this.#getTitle()}\n\t\t\t</span>`;\n\n\t\tthis.#titleContainer.addEventListener(\n\t\t\t'click',\n\t\t\t(event) => {\n\t\t\t\tthis.state = this.#state === Switch.STATE_OFF ? Switch.STATE_ON : Switch.STATE_OFF;\n\t\t\t\tthis.emit(Switch.#onToggleEvent, {state: this.#state});\n\t\t\t\tevent.stopPropagation();\n\t\t\t\treturn false;\n\t\t\t}\n\t\t);\n\n\t\tthis.#titleContainer.addEventListener(\n\t\t\t'mouseover',\n\t\t\t(event) => {\n\t\t\t\tevent.stopPropagation();\n\t\t\t}\n\t\t);\n\n\t\treturn this.#titleContainer;\n\t}\n\n\tsubscribeOnToggleEventSubscribe(listener: Function): void\n\t{\n\t\tthis.subscribe(Switch.#onToggleEvent, listener);\n\t}\n}\n","import {EventEmitter} from \"main.core.events\";\nimport {Tag} from \"main.core\";\n\nexport default class Icon extends EventEmitter\n{\n\tstatic #onClickEvent = 'onClick';\n\n\tstatic TYPE_CLEAR = 'clear';\n\tstatic TYPE_SEARCH = 'search';\n\tstatic TYPE_LOADER = 'loader';\n\n\t#type = Icon.TYPE_SEARCH;\n\t#domNode;\n\n\tconstructor()\n\t{\n\t\tsuper();\n\t\tthis.setEventNamespace('BX.Location.Widget.Icon');\n\t}\n\n\tset type(type: string): void\n\t{\n\t\tthis.#type = type;\n\n\t\tif(this.#domNode)\n\t\t{\n\t\t\tthis.#domNode.className = this.#getClassByType(this.#type);\n\t\t}\n\t}\n\n\t#getClassByType(iconType: string): void\n\t{\n\t\tlet iconClass = '';\n\n\t\tif(iconType === Icon.TYPE_CLEAR)\n\t\t{\n\t\t\ticonClass = \"ui-ctl-after ui-ctl-icon-btn ui-ctl-icon-clear\";\n\t\t}\n\t\telse if(iconType === Icon.TYPE_SEARCH)\n\t\t{\n\t\t\ticonClass = \"ui-ctl-after ui-ctl-icon-search\";\n\t\t}\n\t\telse if(iconType === Icon.TYPE_LOADER)\n\t\t{\n\t\t\ticonClass = \"ui-ctl-after ui-ctl-icon-loader\";\n\t\t}\n\t\telse\n\t\t{\n\t\t\tBX.debug('Wrong icon type');\n\t\t}\n\n\t\treturn iconClass;\n\t}\n\n\trender(props)\n\t{\n\t\tthis.#type = props.type;\n\t\tthis.#domNode = Tag.render`<div class=\"${this.#getClassByType(this.#type)}\"></div>`;\n\n\t\tthis.#domNode.addEventListener(\n\t\t\t'click',\n\t\t\t(e) => {\n\t\t\t\tthis.emit(Icon.#onClickEvent);\n\t\t\t}\n\t\t);\n\n\t\treturn this.#domNode;\n\t}\n\n\tsubscribeOnClickEvent(listener: Function): void\n\t{\n\t\tthis.subscribe(Icon.#onClickEvent, listener);\n\t}\n}","import {Type, Tag, Dom} from 'main.core';\nimport {Address, ControlMode, ErrorPublisher} from 'location.core';\nimport {BaseEvent} from 'main.core.events';\nimport './css/ui-address.css';\nimport {State as WidgetState} from 'location.widget';\nimport Factory from '../factory';\nimport Switch from './switch';\nimport Icon from './icon';\n\n/**\n * Address field widget for the ui.entity-editor\n */\nexport default class UIAddress extends BX.UI.EntityEditorField\n{\n\tconstructor(props)\n\t{\n\t\tsuper(props);\n\n\t\tthis._input = null;\n\t\tthis._inputIcon = null;\n\t\tthis._hiddenInput = null;\n\t\tthis._innerWrapper = null;\n\t\tthis._addressWidget = null;\n\t\tthis._addressFieldsContainer = null;\n\t}\n\n\tstatic create(id, settings)\n\t{\n\t\tconst self = new UIAddress();\n\t\tself.initialize(id, settings);\n\t\treturn self;\n\t}\n\n\tinitialize(id, settings)\n\t{\n\t\tsuper.initialize(id, settings);\n\n\t\tconst value = this.getValue();\n\t\tlet address = null;\n\n\t\tif(Type.isStringFilled(value))\n\t\t{\n\t\t\ttry\n\t\t\t{\n\t\t\t\taddress = new Address(JSON.parse(value));\n\t\t\t}\n\t\t\tcatch (e)\n\t\t\t{\n\t\t\t\tBX.debug('Cant parse address value');\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\n\n\t\tconst widgetFactory = new Factory();\n\n\t\tthis._addressWidget = widgetFactory.createAddressWidget({\n\t\t\taddress: address,\n\t\t\tmode: this._mode === BX.UI.EntityEditorMode.edit ? ControlMode.edit : ControlMode.view,\n\t\t\tpopupBindOptions: {\n\t\t\t\tposition: 'right'\n\t\t\t}\n\t\t});\n\n\t\tthis._addressWidget.subscribeOnStateChangedEvent(this.#onAddressWidgetChangedState.bind(this));\n\t\tthis._addressWidget.subscribeOnAddressChangedEvent(this.#onAddressChanged.bind(this));\n\n\t\tthis._fieldsSwitch = new Switch({\n\t\t\tstate: Switch.STATE_OFF,\n\t\t\ttitles: [\n\t\t\t\tBX.message('LOCATION_WIDGET_AUI_MORE'),\n\t\t\t\tBX.message('LOCATION_WIDGET_AUI_BRIEFLY')\n\t\t\t]\n\t\t});\n\t\tthis._fieldsSwitch.subscribeOnToggleEventSubscribe(this.#onFieldsSwitchToggle.bind(this));\n\t}\n\n\t#onIconClick()\n\t{\n\t\tif(this._input.value !== '')\n\t\t{\n\t\t\tthis._input.value = '';\n\t\t\tthis._addressWidget.address = null;\n\t\t\tthis._inputIcon.type = Icon.TYPE_SEARCH;\n\t\t}\n\n\t\tif(this.hasError())\n\t\t{\n\t\t\tthis.clearError();\n\t\t}\n\t}\n\n\t#onFieldsSwitchToggle(event)\n\t{\n\t\tconst data = event.getData();\n\t\tconst state = data.state;\n\n\t\tif(state === Switch.STATE_OFF)\n\t\t{\n\t\t\tthis.#hideFields();\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis.#showFields();\n\t\t}\n\n\t\tthis._addressWidget.resetView();\n\t}\n\n\tfocus()\n\t{\n\t\tif(!this._input)\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tBX.focus(this._input);\n\t\tBX.UI.EditorTextHelper.getCurrent().setPositionAtEnd(this._input);\n\t}\n\n\t#hideFields()\n\t{\n\t\tif(this._addressFieldsContainer)\n\t\t{\n\t\t\tthis._addressFieldsContainer.classList.remove('visible');\n\t\t}\n\t}\n\n\t#showFields()\n\t{\n\t\tif(this._addressFieldsContainer)\n\t\t{\n\t\t\tthis._addressFieldsContainer.classList.add('visible');\n\t\t}\n\t}\n\n\t#onAddressWidgetChangedState(event)\n\t{\n\t\tconst data = event.getData();\n\t\tconst state = data.state;\n\t\tlet iconType;\n\n\t\tif(data.state === WidgetState.DATA_LOADING)\n\t\t{\n\t\t\ticonType = Icon.TYPE_LOADER;\n\t\t}\n\t\telse\n\t\t{\n\t\t\tif(data.state === WidgetState.DATA_INPUTTING)\n\t\t\t{\n\t\t\t\tthis.markAsChanged();\n\t\t\t}\n\n\t\t\ticonType = UIAddress.#chooseInputIconTypeByAddress(this.#getAddress());\n\t\t}\n\n\n\t\tthis._inputIcon.type = iconType;\n\t}\n\n\tgetModeSwitchType(mode)\n\t{\n\t\tlet result = BX.UI.EntityEditorModeSwitchType.common;\n\n\t\tif(mode === BX.UI.EntityEditorMode.edit)\n\t\t{\n\t\t\t// eslint-disable-next-line no-bitwise\n\t\t\tresult |= BX.UI.EntityEditorModeSwitchType.button | BX.UI.EntityEditorModeSwitchType.content;\n\t\t}\n\n\t\treturn result;\n\t}\n\n\tdoSetMode(mode)\n\t{\n\t\tthis._addressWidget.mode = mode === BX.UI.EntityEditorMode.edit ? ControlMode.edit : ControlMode.view;\n\t\tthis._fieldsSwitch.state = Switch.STATE_OFF;\n\t}\n\n\tgetContentWrapper()\n\t{\n\t\treturn this._innerWrapper;\n\t}\n\n\t#onAddressChanged(event: BaseEvent): void\n\t{\n\t\tconst data = event.getData();\n\t\tconst address = data.address;\n\n\t\tif(this._hiddenInput)\n\t\t{\n\t\t\tthis._hiddenInput.value = address ? address.toJson() : '';\n\t\t\tthis.markAsChanged();\n\t\t}\n\n\t\tif(this._inputIcon)\n\t\t{\n\t\t\tthis._inputIcon.type = UIAddress.#chooseInputIconTypeByAddress(address);\n\t\t}\n\t}\n\n\tsave()\n\t{\n\t\tif(!this.isEditable())\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tconst address = this.#getAddress();\n\n\t\tthis._model.setField(\n\t\t\tthis.getName(),\n\t\t\taddress ? address.toJson() : ''\n\t\t);\n\n\t\tthis._addressWidget.resetView();\n\t}\n\n\tshowError(error, anchor)\n\t{\n\t\tsuper.showError.apply(this, [error, anchor]);\n\n\t\tif(this._input)\n\t\t{\n\t\t\tBX.addClass(this._inputContainer, 'ui-ctl-danger');\n\t\t}\n\t}\n\n\tclearError()\n\t{\n\t\tsuper.clearError.apply(this);\n\n\t\tif(this._input)\n\t\t{\n\t\t\tBX.removeClass(this._inputContainer, 'ui-ctl-danger');\n\t\t}\n\t}\n\n\tdoClearLayout(options)\n\t{\n\t\tthis._input = null;\n\t\tthis._innerWrapper = null;\n\t\tthis._inputContainer = null;\n\t\tthis._addressFieldsContainer = null;\n\t\tthis._inputIcon = null;\n\t\tthis._hiddenInput = null;\n\t\tDom.clean(this._innerWrapper);\n\t}\n\n\tvalidate(result)\n\t{\n\t\tif(!(this._mode === BX.UI.EntityEditorMode.edit && this._input))\n\t\t{\n\t\t\tthrow Error('BX.Location.UIAddress. Invalid validation context');\n\t\t}\n\n\t\tthis.clearError();\n\n\t\tif(this.hasValidators())\n\t\t{\n\t\t\treturn this.executeValidators(result);\n\t\t}\n\n\t\tconst isValid = !this.isRequired() || BX.util.trim(this._input.value) !== '';\n\n\t\tif(!isValid)\n\t\t{\n\t\t\tresult.addError(BX.UI.EntityValidationError.create({field: this}));\n\t\t\tthis.showRequiredFieldError(this._input);\n\t\t}\n\t\treturn isValid;\n\t}\n\n\tgetRuntimeValue()\n\t{\n\t\treturn (this._mode === BX.UI.EntityEditorMode.edit\n\t\t\t? this.#getAddress() : null\n\t\t);\n\t}\n\n\tstatic #chooseInputIconTypeByAddress(address: ?Address): string\n\t{\n\t\treturn address ? Icon.TYPE_CLEAR : Icon.TYPE_SEARCH;\n\t};\n\n\t#convertAddressToString(address: ?Address): string\n\t{\n\t\tif(!address)\n\t\t{\n\t\t\treturn '';\n\t\t}\n\n\t\treturn address.toString(this._addressWidget.addressFormat);\n\t}\n\n\t#getAddress(): Address\n\t{\n\t\treturn this._addressWidget.address;\n\t}\n\n\tlayout(options): void\n\t{\n\t\tif(this._hasLayout)\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tthis.ensureWrapperCreated({classNames: ['ui-entity-card-content-block-field-phone']});\n\t\tthis.adjustWrapper();\n\n\t\tconst title = this.getTitle();\n\n\t\tif(this.isDragEnabled())\n\t\t{\n\t\t\tthis._wrapper.appendChild(this.createDragButton());\n\t\t}\n\n\t\tconst addressWidgetParams = {};\n\n\t\tif(this._mode === BX.UI.EntityEditorMode.edit)\n\t\t{\n\t\t\tthis._wrapper.appendChild(this.createTitleNode(title));\n\t\t\tthis._input = Tag.render`<input class=\"ui-ctl-element ui-ctl-textbox\" value=\"\" type=\"text\" autocomplete=\"off\" name=\"${`${this.getName()}_STRING`}\">`;\n\t\t\tthis._hiddenInput = Tag.render`<input value='${this.getValue()}' type=\"hidden\" name=\"${this.getName()}\">`;\n\t\t\tthis._inputIcon = new Icon();\n\t\t\tthis._inputIcon.subscribeOnClickEvent(this.#onIconClick.bind(this));\n\t\t\tconst inputIconNode = this._inputIcon.render({\n\t\t\t\ttype: UIAddress.#chooseInputIconTypeByAddress(this.#getAddress())\n\t\t\t});\n\n\t\t\tthis._inputContainer = Tag.render`<div class=\"ui-ctl ui-ctl-w100 ui-ctl-after-icon\">${inputIconNode}${this._input}${this._hiddenInput}</div>`;\n\t\t\tthis._titleWrapper.appendChild(Tag.render`${this._fieldsSwitch.render(this._mode)}`);\n\n\t\t\tthis._innerWrapper = Tag.render`\t\t\t\t\t\t \n\t\t\t\t<div class=\"location-search-control-block\">\t\t\t\t\t\n\t\t\t\t\t${this._inputContainer}\n\t\t\t\t</div>`;\n\n\t\t\taddressWidgetParams.inputNode = this._input;\n\t\t\taddressWidgetParams.mapBindElement = inputIconNode;\n\n\t\t\tthis._addressFieldsContainer = Tag.render`<div class=\"location-fields-control-block\"></div>`;\n\n\t\t\tif(this._fieldsSwitch.state === Switch.STATE_ON)\n\t\t\t{\n\t\t\t\tthis._addressFieldsContainer.classList.add('visible');\n\t\t\t}\n\n\t\t\taddressWidgetParams.fieldsContainer = this._addressFieldsContainer;\n\t\t\tthis._innerWrapper.appendChild(this._addressFieldsContainer);\n\t\t}\n\t\telse// if(this._mode === BX.UI.EntityEditorMode.view)\n\t\t{\n\t\t\tthis._wrapper.appendChild(this.createTitleNode(title));\n\t\t\tlet addressStringNode;\n\n\t\t\tif(this.hasContentToDisplay())\n\t\t\t{\n\t\t\t\tconst addressString = this.#convertAddressToString(this.#getAddress());\n\t\t\t\taddressStringNode = Tag.render`<span class=\"ui-link ui-link-dark ui-link-dotted\">${addressString}</span>`;\n\n\t\t\t\tthis._innerWrapper = Tag.render`\n\t\t\t\t\t<div class=\"location-search-control-block\">\n\t\t\t\t\t\t<div class=\"ui-entity-editor-content-block-text\">\n\t\t\t\t\t\t\t${addressStringNode}\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>`;\n\n\t\t\t\taddressWidgetParams.mapBindElement = addressStringNode;\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tthis._innerWrapper = Tag.render`<div class=\"location-search-control-block\">\n\t\t\t\t\t${BX.message('UI_ENTITY_EDITOR_FIELD_EMPTY')}\n\t\t\t\t</div>`;\n\n\t\t\t\taddressWidgetParams.mapBindElement = this._innerWrapper;\n\t\t\t}\n\t\t}\n\n\t\taddressWidgetParams.controlWrapper = this._innerWrapper;\n\t\tthis._addressWidget.render(addressWidgetParams);\n\t\tthis._wrapper.appendChild(this._innerWrapper);\n\n\t\tthis._addressWidget.subscribeOnErrorEvent(this.errorListener.bind(this));\n\n\t\tif(this.isContextMenuEnabled())\n\t\t{\n\t\t\tthis._wrapper.appendChild(this.createContextMenuButton());\n\t\t}\n\n\t\tif(this.isDragEnabled())\n\t\t{\n\t\t\tthis.initializeDragDropAbilities();\n\t\t}\n\n\t\tthis.registerLayout(options);\n\t\tthis._hasLayout = true;\n\t}\n\n\terrorListener(event: BaseEvent)\n\t{\n\t\tconst data = event.getData();\n\t\tconst errors = data.errors;\n\n\t\tif(this._inputIcon)\n\t\t{\n\t\t\tthis._inputIcon.type = Icon.TYPE_CLEAR;\n\t\t}\n\n\t\tif(!Type.isArray(errors))\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\t// todo: this.showError supports only one error\n\t\terrors.forEach((error) => {\n\t\t\tlet message;\n\n\t\t\tif(error.message)\n\t\t\t{\n\t\t\t\tmessage = error.message;\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tmessage = BX.message('LOCATION_WIDGET_AUI_UNKNOWN_ERROR');\n\t\t\t}\n\n\t\t\tif(error.code)\n\t\t\t{\n\t\t\t\tmessage += ` [${error.code}]`;\n\t\t\t}\n\n\t\t\tthis.showError(message);\n\t\t});\n\t}\n\n\tprocessModelChange(params)\n\t{\n\t\tif(BX.prop.get(params, 'originator', null) === this)\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tif(!BX.prop.getBoolean(params, 'forAll', false)\n\t\t\t&& BX.prop.getString(params, 'name', '') !== this.getName()\n\t\t)\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tthis.refreshLayout();\n\t}\n\n\tstatic registerField(): void\n\t{\n\t\tif(typeof BX.UI.EntityEditorControlFactory !== 'undefined')\n\t\t{\n\t\t\tBX.UI.EntityEditorControlFactory.registerFactoryMethod('address', UIAddress.registerFieldMethod);\n\t\t}\n\t\telse\n\t\t{\n\t\t\tBX.addCustomEvent('BX.UI.EntityEditorControlFactory:onInitialize', (params, eventArgs) =>\n\t\t\t{\n\t\t\t\teventArgs.methods.address = UIAddress.registerFieldMethod;\n\t\t\t});\n\t\t}\n\t}\n\n\tstatic registerFieldMethod(type, controlId, settings): ?UIAddress\n\t{\n\t\tlet result = null;\n\n\t\tif(type === 'address')\n\t\t{\n\t\t\tresult = UIAddress.create(controlId, settings);\n\t\t}\n\n\t\treturn result;\n\t}\n}\n","import Address from './address/address';\nimport Factory from './factory';\nimport UIAddress from './ui-address/ui-address';\nimport State from './state';\nimport BaseFeature from './address/features/basefeature';\nimport MapFeature from './address/features/mapfeature';\nimport AutocompleteFeature from './address/features/autocompletefeature';\nimport FieldsFeature from './address/features/fieldsfeature';\n\n/* A set of widgets for using to deal with addresses */\nexport {\n\n\t// Main Widget\n\tAddress,\n\n\t// Widget features\n\tBaseFeature,\n\n\tMapFeature,\n\tAutocompleteFeature,\n\tFieldsFeature,\n\n\t// Widget factory\n\tFactory,\n\n\t// Possible widget states\n\tState,\n\n\t/* Address field for the ui.forms.\n\t * This can be used as an example of the widget implementation\n\t */\n\tUIAddress,\n};\n\n// Register fields for ui.entity-editor\nUIAddress.registerField();\n"],"names":["State","AddressString","props","addressFormat","Format","Error","address","addresStr","Tag","render","hide","style","display","innerHTML","isHidden","show","result","AddressStringConverter","convertAddressToStringTemplate","getTemplate","FormatTemplateType","DEFAULT","CONTENT_TYPE_HTML","Vue","extend","required","methods","handleApplyClick","$emit","convertAddressToString","toString","STRATEGY_TYPE_TEMPLATE_COMMA","computed","addressString","CONTENT_TYPE_TEXT","containerStyles","containerClasses","hidden","localize","getFilteredPhrases","template","Popup","bindElement","bindOptions","isCustomPosition","isCustomPositionSuccess","position","MainPopup","bindElRect","getBoundingClientRect","popupHeight","getPopupContainer","offsetHeight","popupWidth","offsetWidth","left","width","document","documentElement","clientWidth","angleOffsetY","top","window","pageYOffset","height","body","clientHeight","setAngle","offset","Dom","adjust","popupContainer","zIndex","getZindex","MapPopup","setEventNamespace","map","MapBase","BX","debug","geocodingService","GeocodingServiceBase","onLocationChangedEventSubscribe","_classPrivateMethodGet","bind","popup","gallery","locationRepository","userLocationPoint","mode","useUserLocation","then","location","emit","onMapShow","isShown","close","$props","listener","subscribe","destroy","remove","Event","unbindAll","getBindElement","Type","isDomNode","setBindElement","EventEmitter","AddressApplier","propsData","$mount","$on","event","prevAddress","data","getData","toAddress","fieldCollection","isEqual","LocationType","ADDRESS_LINE_1","latitude","longitude","mapInnerContainer","thirdPartyWarningNode","Loc","getMessage","ControlMode","edit","$el","e","stopPropagation","setContent","lat","lon","Promise","resolve","view","Location","latLon","type","getType","mapContainer","BaseFeature","_saveResourceStrategy","saveResourceStrategy","MethodNotImplemented","addressWidget","Address","AddressEntity","isValid","isString","languageId","TypeError","features","isArray","forEach","feature","isBoolean","needWarmBackendAfterAddressChanged","LocationRepository","INITIAL","sourceFeature","excludeFeatures","options","addressId","id","getFieldValue","AddressType","isTemplateExists","setFieldValue","storeAsLastAddress","hasOwnProperty","DATA_INPUTTING","featureEvent","onFeatureEvent","code","resetView","controlWrapper","inputNode","onInputKeyup","onInputInput","state","onStateChangedEvent","onAddressChangedEvent","ErrorPublisher","getInstance","unbind","setAddressWidget","push","method","params","isExcluded","excludeFeature","apply","findParents","value","length","setCaretPosition","templateType","console","error","shortAddressString","AUTOCOMPLETE","fullAddressString","trim","title","selectionStart","selectionEnd","setSelectionRange","fieldForUnRecognized","isFieldExists","LOCALITY","Storage","lastAddress","splice","MenuBottom","node","firstChild","removeChild","appendChild","Menu","elRect","popupWindow","setMaxWidth","layout","menuContainer","menuItems","choseItemIdx","getPopupWindow","isDestroyed","index","isItemChosen","isItemExist","isMenuEmpty","isChoseLastItem","chooseItem","getChosenItem","isChoseFirstItem","item","classList","add","idx","unHighlightItem","highlightItem","removeMenuItem","setRightItemNode","setLeftItemNode","MainMenu","Prompt","menuNode","locationsList","searchPhrase","setMenuItems","getMenu","clearItems","Array","slice","showFlatList","addMenuItem","isSeparatorSet","html","delimiter","isRecursive","choosePrevItem","chooseNextItem","menuItem","locationName","clarification","TMP_TYPE_CLARIFICATION","TMP_TYPE_HINT","autoHide","closeByEsc","className","includes","ADM_LEVEL_1","name","createMenuItemText","onclick","onItemSelectedEvent","undefined","input","HTMLInputElement","setValueFromAddress","isPureAddress","setValue","indexOf","Autocomplete","requested","current","dropped","autocompleteService","AutocompleteServiceBase","sourceCode","presetLocationsProvider","addEventListener","removeEventListener","presetLocationList","leftBottomMenuMessage","element","text","leftBottomText","setBottomRightItemNode","setBottomLeftItemNode","relatedTarget","getAttribute","DATA_SUPPOSED","isChanged","hasPureAddressString","customTail","currentValue","newValue","stopImmediatePropagation","COUNTRY","ADDRESS_LINE_2","setTimeout","hasExternalRelation","showPrompt","biasPoint","Point","target","externalId","closePrompt","DATA_SELECTED","detailedLocation","addressLine2","response","notify","errors","excludeSetAddressFeatures","DATA_LOADING","findByExternalId","DATA_LOADED","ctrlKey","metaKey","shiftKey","key","onLocationSelectTimeout","actualize","timeout","clearTimeout","autocomplete","Photo","url","link","description","Gallery","thumbnailHeight","thumbnailWidth","maxPhotoCount","photoService","requestPhotos","photosData","refresh","photos","photo","thumbnail","util","strip_tags","renderedPhotos","Field","sort","container","Text","encode","Fields","field","clean","fields","formatField","subscribeOnValueChangedEvent","subscribeOnStateChangedEvent","a","b","changedField","MapFeature","onChangedEventSubscribe","setAddressByFeature","bindelement","closeMap","mapBindElement","AutocompleteFeature","onAddressChangedEventSubscribe","onStateChangedEventSubscribe","setStateByFeature","onSearchStartedEventSubscribe","emitFeatureEvent","eventCode","searchStartedEvent","payload","onSearchCompletedEventSubscribe","searchCompletedEvent","onShowOnMapClickedEventSubscribe","showOnMapClickedEvent","autocompleteMenuElement","FieldsFeature","subscribeOnAddressChangedEvent","fieldsContainer","MapFeatureAuto","onMouseOverSubscribe","onMouseOutSubscribe","showMap","Factory","message","sourceParams","sourceLanguageId","JSON","parse","useFeatures","createFieldsFeature","source","createSource","SourceCreationError","mapFeature","createAutocompleteFeature","showPhotos","useGeocodingService","DEFAULT_THUMBNAIL_HEIGHT","DEFAULT_THUMBNAIL_WIDTH","DEFAULT_MAX_PHOTO_COUNT","DEFAULT_MAP_BEHAVIOR","createMapFeature","popupOptions","popupBindOptions","mapBehavior","widget","subscribeOnFeatureEvent","cacheable","animation","angle","Object","assign","mapFeatureProps","Google","OSM","OSMFactory","createOSMSource","RangeError","Switch","titles","STATE_OFF","STATE_ON","Icon","TYPE_SEARCH","iconType","iconClass","TYPE_CLEAR","TYPE_LOADER","UIAddress","_input","_inputIcon","_hiddenInput","_innerWrapper","_addressWidget","_addressFieldsContainer","settings","getValue","isStringFilled","widgetFactory","createAddressWidget","_mode","UI","EntityEditorMode","_fieldsSwitch","subscribeOnToggleEventSubscribe","focus","EditorTextHelper","getCurrent","setPositionAtEnd","EntityEditorModeSwitchType","common","button","content","isEditable","_model","setField","getName","toJson","anchor","addClass","_inputContainer","removeClass","clearError","hasValidators","executeValidators","isRequired","addError","EntityValidationError","create","showRequiredFieldError","_hasLayout","ensureWrapperCreated","classNames","adjustWrapper","getTitle","isDragEnabled","_wrapper","createDragButton","addressWidgetParams","createTitleNode","subscribeOnClickEvent","inputIconNode","_titleWrapper","addressStringNode","hasContentToDisplay","subscribeOnErrorEvent","errorListener","isContextMenuEnabled","createContextMenuButton","initializeDragDropAbilities","registerLayout","showError","prop","get","getBoolean","getString","refreshLayout","self","initialize","EntityEditorControlFactory","registerFactoryMethod","registerFieldMethod","addCustomEvent","eventArgs","controlId","EntityEditorField","hasError","WidgetState","markAsChanged","registerField"],"mappings":"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"}