{if(o.keyCode===13)return!1})}}
+class GoogleMaps2{allMarkers=[];categorizedMarkers={};pointMarkers=[];markerClusterer=null;bounds={};infoWindow={};poiCollections={};editable={};map={};constructor(e,t){this.allMarkers=[],this.categorizedMarkers={},this.pointMarkers=[],this.bounds=new google.maps.LatLngBounds,this.infoWindow=new google.maps.InfoWindow,this.poiCollections=JSON.parse(e.dataset.pois||"null"),this.editable=e.classList.contains("editMarker"),this.setMapDimensions(e,t.settings),this.initialize(e,t)}initialize=async(e,t)=>{if(this.createMap(e,t),typeof this.poiCollections>"u"||this.poiCollections===null){let s=Number(e.dataset.latitude),a=Number(e.dataset.longitude);s&&a?(await this.createMarkerByLatLng(s,a),this.map.setCenter(new google.maps.LatLng(s,a))):this.map.setCenter(new google.maps.LatLng(t.extConf.defaultLatitude,t.extConf.defaultLongitude))}else await this.createPointByCollectionType(e,t),this.createMarkerClusterer(t.settings),this.countObjectProperties(this.categorizedMarkers)>1&&this.showSwitchableCategories(e,t),this.shouldFitBounds(t.settings)?this.map.fitBounds(this.bounds):this.map.setCenter(new google.maps.LatLng(this.poiCollections[0].latitude,this.poiCollections[0].longitude))};createMarkerClusterer=e=>{this.editable||typeof e.markerClusterer>"u"||e.markerClusterer.enable!==1||typeof markerClusterer>"u"||(this.markerClusterer=new markerClusterer.MarkerClusterer({map:this.map,markers:this.pointMarkers,renderer:this.getClusterRenderer(e.markerClusterer.imagePath)}))};getClusterRenderer=e=>{const t=[53,56,66,78,90];return{render:({count:s,position:a})=>{const r=Math.min(String(s).length,t.length),o=t[r-1],i=document.createElement("div");return i.classList.add("maps2-marker-cluster"),i.textContent=String(s),i.style.width=o+"px",i.style.height=o+"px",i.style.lineHeight=o+"px",i.style.backgroundImage='url("'+e+r+'.png")',i.style.textAlign="center",i.style.fontSize="11px",i.style.fontWeight="bold",i.style.color="#000",i.style.cursor="pointer",i.style.transform="translateY(50%)",new google.maps.marker.AdvancedMarkerElement({position:a,content:i,zIndex:1e3+s})}}};getMapOptions=settings=>{let mapOptions={mapTypeId:"",zoom:parseInt(settings.zoom),zoomControl:parseInt(settings.zoomControl)!==0,mapTypeControl:parseInt(settings.mapTypeControl)!==0,scaleControl:parseInt(settings.scaleControl)!==0,streetViewControl:parseInt(settings.streetViewControl)!==0,fullscreenControl:parseInt(settings.fullScreenControl)!==0,scrollwheel:settings.activateScrollWheel,styles:""};switch(settings.styles&&(mapOptions.styles=eval(settings.styles)),settings.mapTypeId){case"google.maps.MapTypeId.HYBRID":case"hybrid":mapOptions.mapTypeId=google.maps.MapTypeId.HYBRID;break;case"google.maps.MapTypeId.ROADMAP":case"roadmap":mapOptions.mapTypeId=google.maps.MapTypeId.ROADMAP;break;case"google.maps.MapTypeId.SATELLITE":case"satellite":mapOptions.mapTypeId=google.maps.MapTypeId.SATELLITE;break;case"google.maps.MapTypeId.TERRAIN":case"terrain":mapOptions.mapTypeId=google.maps.MapTypeId.TERRAIN;break}return mapOptions};getCircleOptions(e,t,s){return{map:e,center:t,radius:s.radius,strokeColor:s.strokeColor,strokeOpacity:s.strokeOpacity,strokeWeight:s.strokeWeight,fillColor:s.fillColor,fillOpacity:s.fillOpacity}}getPolygonOptions(e,t){return{paths:e,strokeColor:t.strokeColor,strokeOpacity:t.strokeOpacity,strokeWeight:t.strokeWeight,fillColor:t.fillColor,fillOpacity:t.fillOpacity}}getPolylineOptions(e,t){return{path:e,strokeColor:t.strokeColor,strokeOpacity:t.strokeOpacity,strokeWeight:t.strokeWeight}}createMap(e,t){let s=this.getMapOptions(t.settings);s.mapId=t.settings.googleMapsMapId||"",this.map=new google.maps.Map(e,s)}canBeInterpretedAsNumber(e){return typeof e=="number"||!isNaN(Number(e))}normalizeDimension(e){let t=String(e);return this.canBeInterpretedAsNumber(t)&&(t+="px"),t}shouldFitBounds(e){return e.forceZoom===!0||this.poiCollections===null?!1:this.poiCollections.length>1||this.poiCollections.length===1&&(this.poiCollections[0].collectionType==="Area"||this.poiCollections[0].collectionType==="Route")}setMapDimensions(e,t){e.style.height=this.normalizeDimension(t.mapHeight),e.style.width=this.normalizeDimension(t.mapWidth)}groupCategories=e=>{let t={},s="0";for(let a=0;a {if(a.keyCode===13)return!1})}}
//# sourceMappingURL=GoogleMaps2.min.js.map
diff --git a/Resources/Public/JavaScript/GoogleMaps2.min.js.map b/Resources/Public/JavaScript/GoogleMaps2.min.js.map
index 56b41f2e6..af51b3899 100644
--- a/Resources/Public/JavaScript/GoogleMaps2.min.js.map
+++ b/Resources/Public/JavaScript/GoogleMaps2.min.js.map
@@ -1,7 +1,7 @@
{
"version": 3,
"sources": ["../../Private/Build/JavaScript/GoogleMaps2.js"],
- "sourcesContent": ["class GoogleMaps2 {\n allMarkers = [];\n categorizedMarkers = {};\n pointMarkers = [];\n bounds = {};\n infoWindow = {};\n poiCollections = {};\n editable = {};\n map = {};\n\n /**\n * @param {HTMLElement} element\n * @param {Environment} environment\n * @constructor\n */\n constructor (element, environment) {\n this.allMarkers = [];\n this.categorizedMarkers = {};\n this.pointMarkers = [];\n this.bounds = new google.maps.LatLngBounds();\n this.infoWindow = new google.maps.InfoWindow();\n this.poiCollections = JSON.parse(element.dataset.pois || \"null\");\n this.editable = element.classList.contains('editMarker');\n\n this.setMapDimensions(element, environment.settings);\n\n this.initialize(element, environment);\n }\n\n /**\n * Initialize Map and Markers asynchronously\n *\n * @param {HTMLElement} element\n * @param {Environment} environment\n */\n initialize = async (element, environment) => {\n this.createMap(element, environment);\n\n if (typeof this.poiCollections === 'undefined' || this.poiCollections === null) {\n let lat = Number(element.dataset.latitude);\n let lng = Number(element.dataset.longitude);\n if (lat && lng) {\n await this.createMarkerByLatLng(lat, lng);\n this.map.setCenter(new google.maps.LatLng(lat, lng));\n } else {\n this.map.setCenter(new google.maps.LatLng(environment.extConf.defaultLatitude, environment.extConf.defaultLongitude));\n }\n } else {\n await this.createPointByCollectionType(element, environment);\n if (\n typeof environment.settings.markerClusterer !== 'undefined'\n && environment.settings.markerClusterer.enable === 1\n ) {\n new MarkerClusterer(\n this.map,\n this.pointMarkers,\n { imagePath: environment.settings.markerClusterer.imagePath }\n );\n }\n\n if (this.countObjectProperties(this.categorizedMarkers) > 1) {\n this.showSwitchableCategories(element, environment);\n }\n\n if (this.shouldFitBounds(environment.settings)) {\n this.map.fitBounds(this.bounds);\n } else {\n this.map.setCenter(new google.maps.LatLng(this.poiCollections[0].latitude, this.poiCollections[0].longitude));\n }\n }\n }\n\n /**\n * Return a MapOptions object which can be assigned to the Map object of Google\n *\n * @param {Settings} settings\n * @return {object}\n */\n getMapOptions = settings => {\n let mapOptions = {\n mapTypeId: '',\n zoom: parseInt(settings.zoom),\n zoomControl: (parseInt(settings.zoomControl) !== 0),\n mapTypeControl: (parseInt(settings.mapTypeControl) !== 0),\n scaleControl: (parseInt(settings.scaleControl) !== 0),\n streetViewControl: (parseInt(settings.streetViewControl) !== 0),\n fullscreenControl: (parseInt(settings.fullScreenControl) !== 0),\n scrollwheel: settings.activateScrollWheel,\n styles: ''\n };\n\n if (settings.styles) {\n mapOptions.styles = eval(settings.styles);\n }\n\n switch (settings.mapTypeId) {\n case 'google.maps.MapTypeId.HYBRID':\n case 'hybrid':\n mapOptions.mapTypeId = google.maps.MapTypeId.HYBRID;\n break;\n case 'google.maps.MapTypeId.ROADMAP':\n case 'roadmap':\n mapOptions.mapTypeId = google.maps.MapTypeId.ROADMAP;\n break;\n case 'google.maps.MapTypeId.SATELLITE':\n case 'satellite':\n mapOptions.mapTypeId = google.maps.MapTypeId.SATELLITE;\n break;\n case 'google.maps.MapTypeId.TERRAIN':\n case 'terrain':\n mapOptions.mapTypeId = google.maps.MapTypeId.TERRAIN;\n break;\n }\n\n return mapOptions;\n }\n\n /**\n * Returns CircleOptions which can be assigned to the Circle object of Google\n *\n * @param {L.Map} map\n * @param {object} centerPosition\n * @param {PoiCollection} poiCollection\n * @return {object}\n */\n getCircleOptions (map, centerPosition, poiCollection) {\n return {\n map: map,\n center: centerPosition,\n radius: poiCollection.radius,\n strokeColor: poiCollection.strokeColor,\n strokeOpacity: poiCollection.strokeOpacity,\n strokeWeight: poiCollection.strokeWeight,\n fillColor: poiCollection.fillColor,\n fillOpacity: poiCollection.fillOpacity\n };\n }\n\n /**\n * Returns PolygonOptions which can be assigned to the Polygon object of Google\n *\n * @param {object} paths\n * @param {PoiCollection} poiCollection\n * @return {object}\n */\n getPolygonOptions (paths, poiCollection) {\n return {\n paths: paths,\n strokeColor: poiCollection.strokeColor,\n strokeOpacity: poiCollection.strokeOpacity,\n strokeWeight: poiCollection.strokeWeight,\n fillColor: poiCollection.fillColor,\n fillOpacity: poiCollection.fillOpacity\n };\n }\n\n /**\n * Return PolylineOptions which can be assigned to the Polyline object of Google\n *\n * @param {object} paths\n * @param {PoiCollection} poiCollection\n * @return {object}\n */\n getPolylineOptions (paths, poiCollection) {\n return {\n path: paths,\n strokeColor: poiCollection.strokeColor,\n strokeOpacity: poiCollection.strokeOpacity,\n strokeWeight: poiCollection.strokeWeight,\n };\n }\n\n /**\n * Create Map\n *\n * @param {HTMLElement} element\n * @param {Environment} environment\n */\n createMap (element, environment) {\n let mapOptions = this.getMapOptions(environment.settings);\n mapOptions.mapId = environment.settings.googleMapsMapId || '';\n\n this.map = new google.maps.Map(element, mapOptions);\n }\n\n /**\n * @param {string | number} value\n * @return {boolean}\n */\n canBeInterpretedAsNumber(value) {\n return typeof value === 'number' || !isNaN(Number(value));\n }\n\n /**\n * @param {string | number} dimension\n * @returns {string}\n */\n normalizeDimension(dimension) {\n let normalizedDimension = String(dimension);\n\n if (this.canBeInterpretedAsNumber(normalizedDimension)) {\n normalizedDimension += 'px';\n }\n\n return normalizedDimension;\n }\n\n /**\n * @param {Settings} settings\n * @returns {boolean}\n */\n shouldFitBounds(settings) {\n if (settings.forceZoom === true) {\n return false;\n }\n\n if (this.poiCollections === null) {\n return false;\n }\n\n if (this.poiCollections.length > 1) {\n return true;\n }\n\n if (\n this.poiCollections.length === 1\n && (\n this.poiCollections[0].collectionType === \"Area\"\n || this.poiCollections[0].collectionType === \"Route\"\n )\n ) {\n return true;\n }\n\n return false;\n }\n\n /**\n * @param {HTMLElement} element\n * @param {Settings} settings\n */\n setMapDimensions(element, settings) {\n element.style.height = this.normalizeDimension(settings.mapHeight);\n element.style.width = this.normalizeDimension(settings.mapWidth);\n }\n\n /**\n * Group Categories\n *\n * @param {Environment} environment\n */\n groupCategories = environment => {\n let groupedCategories = {};\n let categoryUid = \"0\";\n for (let x = 0; x < this.poiCollections.length; x++) {\n for (let y = 0; y < this.poiCollections[x].categories.length; y++) {\n categoryUid = String(this.poiCollections[x].categories[y].uid);\n if (this.inList(environment.settings.categories, categoryUid) > -1 && !groupedCategories.hasOwnProperty(categoryUid)) {\n groupedCategories[categoryUid] = this.poiCollections[x].categories[y];\n }\n }\n }\n\n return groupedCategories;\n };\n\n /**\n * Get categories of all checkboxes with a given status\n *\n * @param {HTMLElement} form The HTML form element containing the checkboxes\n * @param {boolean} isChecked Get checkboxes of this status only\n */\n getCategoriesOfCheckboxesWithStatus = (form, isChecked) => {\n let categories = [];\n let checkboxes = isChecked ? form.querySelectorAll(\"input:checked\") : form.querySelectorAll(\"input:not(input:checked)\");\n\n checkboxes.forEach(checkbox => {\n categories.push(parseInt(checkbox.value));\n });\n\n return categories;\n }\n\n getMarkersToChangeVisibilityFor = (categoryUid, form, isChecked) => {\n let markers = [];\n if (this.allMarkers.length === 0) {\n return markers;\n }\n\n let marker = null;\n let allCategoriesOfMarker = null;\n let categoriesOfCheckboxesWithStatus = this.getCategoriesOfCheckboxesWithStatus(form, isChecked);\n for (let i = 0; i < this.allMarkers.length; i++) {\n marker = this.allMarkers[i];\n allCategoriesOfMarker = marker.poiCollection.categories;\n if (allCategoriesOfMarker.length === 0) {\n continue;\n }\n\n let markerCategoryHasCheckboxWithStatus;\n for (let j = 0; j < allCategoriesOfMarker.length; j++) {\n markerCategoryHasCheckboxWithStatus = false;\n for (let k = 0; k < categoriesOfCheckboxesWithStatus.length; k++) {\n if (allCategoriesOfMarker[j].uid === categoriesOfCheckboxesWithStatus[k]) {\n markerCategoryHasCheckboxWithStatus = true;\n }\n }\n if (markerCategoryHasCheckboxWithStatus === isChecked) {\n break;\n }\n }\n\n if (markerCategoryHasCheckboxWithStatus) {\n markers.push(marker.marker);\n }\n }\n\n return markers;\n }\n\n /**\n * Show switchable categories\n *\n * @param {HTMLElement} element\n * @param {Environment} environment\n */\n showSwitchableCategories = (element, environment) => {\n let categories = this.groupCategories(environment);\n let form = document.createElement(\"form\");\n let span = {};\n\n form.classList.add(\"txMaps2Form\");\n form.setAttribute(\"id\", \"txMaps2Form-\" + environment.contentRecord.uid);\n\n for (let categoryUid in categories) {\n if (categories.hasOwnProperty(categoryUid)) {\n form.appendChild(this.getCheckbox(categories[categoryUid]));\n\n const categoryLabel = document.createElement(\"span\");\n categoryLabel.classList.add(\"map-category\");\n categoryLabel.textContent = categories[categoryUid].title;\n form.querySelector(\"#checkCategory_\" + categoryUid)?.insertAdjacentElement(\"afterend\", categoryLabel);\n }\n }\n\n form.querySelectorAll(\"input\").forEach((checkbox) => {\n checkbox.addEventListener(\"click\", () => {\n let isChecked = (checkbox).checked;\n let categoryUid = (checkbox).value;\n let markers = this.getMarkersToChangeVisibilityFor(categoryUid, form, isChecked);\n\n markers.forEach((marker) => {\n if (typeof marker.setVisible === 'function') {\n marker.setVisible(isChecked);\n } else if (typeof marker.setMap === 'function') {\n marker.setMap(isChecked ? this.map : null);\n } else {\n marker.map = isChecked ? this.map : null;\n }\n });\n });\n });\n\n element.insertAdjacentElement(\"afterend\", form);\n }\n\n /**\n * Get Checkbox for Category\n *\n * @param category\n */\n getCheckbox(category) {\n const div = document.createElement(\"div\");\n div.classList.add(\"form-group\");\n\n const checkboxDiv = document.createElement(\"div\");\n checkboxDiv.classList.add(\"checkbox\");\n\n const label = document.createElement(\"label\");\n\n const input = document.createElement(\"input\");\n input.type = \"checkbox\";\n input.classList.add(\"checkCategory\");\n input.id = \"checkCategory_\" + category.uid;\n input.checked = true;\n input.value = category.uid;\n\n label.appendChild(input);\n checkboxDiv.appendChild(label);\n div.appendChild(checkboxDiv);\n\n return div;\n }\n\n /**\n * Count Object properties\n *\n * @param obj\n */\n countObjectProperties = obj => {\n let count = 0;\n for (let key in obj) {\n if (obj.hasOwnProperty(key)) {\n count++;\n }\n }\n return count;\n }\n\n /**\n * Create Point by CollectionType\n *\n * @param {HTMLElement} element\n * @param {Environment} environment\n */\n createPointByCollectionType = async (element, environment) => {\n let marker;\n let categoryUid = 0;\n\n if (this.poiCollections !== null && this.poiCollections.length) {\n for (const poiCollection of this.poiCollections) {\n if (poiCollection.strokeColor === \"\") {\n poiCollection.strokeColor = environment.extConf.strokeColor;\n }\n if (poiCollection.strokeOpacity === \"\") {\n poiCollection.strokeOpacity = environment.extConf.strokeOpacity;\n }\n if (poiCollection.strokeWeight === \"\") {\n poiCollection.strokeWeight = environment.extConf.strokeWeight;\n }\n if (poiCollection.fillColor === \"\") {\n poiCollection.fillColor = environment.extConf.fillColor;\n }\n if (poiCollection.fillOpacity === \"\") {\n poiCollection.fillOpacity = environment.extConf.fillOpacity;\n }\n\n marker = null;\n switch (poiCollection.collectionType) {\n case \"Point\":\n marker = await this.createMarker(poiCollection, element, environment);\n break;\n case \"Area\":\n marker = this.createArea(poiCollection, environment);\n break;\n case \"Route\":\n marker = this.createRoute(poiCollection, environment);\n break;\n case \"Radius\":\n marker = this.createRadius(poiCollection, environment);\n break;\n }\n\n if (marker !== null) {\n this.allMarkers.push({\n marker: marker,\n poiCollection: poiCollection\n });\n\n categoryUid = 0;\n for (let c = 0; c < poiCollection.categories.length; c++) {\n categoryUid = poiCollection.categories[c].uid;\n if (!this.categorizedMarkers.hasOwnProperty(categoryUid)) {\n this.categorizedMarkers[categoryUid] = [];\n }\n this.categorizedMarkers[categoryUid].push({\n marker: marker,\n relatedCategories: poiCollection.categories\n });\n }\n }\n }\n }\n }\n\n /**\n * Create Marker with InfoWindow\n *\n * @param {PoiCollection} poiCollection\n * @param {HTMLElement} element\n * @param {Environment} environment\n */\n createMarker = async (poiCollection, element, environment) => {\n const { AdvancedMarkerElement } = await google.maps.importLibrary(\"marker\");\n let markerOptions = {\n position: new google.maps.LatLng(poiCollection.latitude, poiCollection.longitude),\n map: this.map,\n gmpDraggable: this.editable\n };\n\n if (poiCollection.hasOwnProperty(\"markerIcon\") && poiCollection.markerIcon !== \"\") {\n const img = document.createElement('img');\n let markerIconPath = poiCollection.markerIcon;\n\n // Remove leading slash if present, to avoid double slashes with siteUrl\n if (markerIconPath.startsWith('/')) {\n markerIconPath = markerIconPath.substring(1);\n }\n\n img.src = environment.siteUrl + markerIconPath;\n\n const markerIconWidth = poiCollection.markerIconWidth || environment.extConf.markerIconWidth;\n const markerIconHeight = poiCollection.markerIconHeight || environment.extConf.markerIconHeight;\n const markerIconAnchorPosX = poiCollection.markerIconAnchorPosX || environment.extConf.markerIconAnchorPosX;\n const markerIconAnchorPosY = poiCollection.markerIconAnchorPosY || environment.extConf.markerIconAnchorPosY;\n\n if (markerIconWidth) img.style.width = markerIconWidth + 'px';\n if (markerIconHeight) img.style.height = markerIconHeight + 'px';\n markerOptions.content = img;\n\n if (markerIconAnchorPosX) {\n markerOptions.anchorLeft = '-' + markerIconAnchorPosX + 'px';\n }\n if (markerIconAnchorPosY) {\n markerOptions.anchorTop = '-' + markerIconAnchorPosY + 'px';\n }\n }\n\n let marker = new AdvancedMarkerElement(markerOptions);\n\n this.pointMarkers.push(marker);\n this.bounds.extend(marker.position);\n\n if (this.editable) {\n this.addEditListeners(element, marker, poiCollection, environment);\n } else {\n this.addInfoWindow(marker, poiCollection, environment);\n }\n\n return marker;\n }\n\n /**\n * Create Area\n *\n * @param poiCollection\n * @param environment\n */\n createArea = (poiCollection, environment) => {\n let latLng;\n let paths = [];\n for (let i = 0; i < poiCollection.pois.length; i++) {\n latLng = new google.maps.LatLng(poiCollection.pois[i].latitude, poiCollection.pois[i].longitude);\n this.bounds.extend(latLng);\n paths.push(latLng);\n }\n\n if (paths.length === 0) {\n paths.push(this.mapPosition);\n }\n\n let area = new google.maps.Polygon(this.getPolygonOptions(paths, poiCollection));\n area.setMap(this.map);\n this.addInfoWindow(area, poiCollection, environment);\n\n return area;\n }\n\n /**\n * Create Route\n *\n * @param poiCollection\n * @param environment\n */\n createRoute = (poiCollection, environment) => {\n let latLng;\n let paths = [];\n for (let i = 0; i < poiCollection.pois.length; i++) {\n latLng = new google.maps.LatLng(poiCollection.pois[i].latitude, poiCollection.pois[i].longitude);\n this.bounds.extend(latLng);\n paths.push(latLng);\n }\n\n if (paths.length === 0) {\n paths.push(this.mapPosition);\n }\n\n let route = new google.maps.Polyline(this.getPolylineOptions(paths, poiCollection));\n route.setMap(this.map);\n this.addInfoWindow(route, poiCollection, environment);\n\n return route;\n }\n\n /**\n * Create Radius\n *\n * @param poiCollection\n * @param environment\n */\n createRadius = (poiCollection, environment) => {\n let circle = new google.maps.Circle(\n this.getCircleOptions(\n this.map,\n new google.maps.LatLng(poiCollection.latitude, poiCollection.longitude),\n poiCollection\n )\n );\n\n this.bounds.union(circle.getBounds());\n this.addInfoWindow(circle, poiCollection, environment);\n\n return circle;\n }\n\n /**\n * Add Info Window to element\n *\n * @param element\n * @param poiCollection\n * @param environment\n */\n addInfoWindow = (element, poiCollection, environment) => {\n let infoWindow = this.infoWindow;\n let map = this.map;\n google.maps.event.addListener(element, \"click\", event => {\n fetch(environment.ajaxUrl, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"ext-maps2\": \"infoWindowContent\"\n },\n body: JSON.stringify({\n poiCollection: poiCollection.uid\n })\n })\n .then(response => response.json())\n .then(data => {\n infoWindow.close();\n infoWindow.setContent(data.content);\n\n if (poiCollection.collectionType === \"Point\") {\n infoWindow.setPosition(null);\n infoWindow.open({\n anchor: element,\n map: map\n });\n } else {\n infoWindow.setPosition(new google.maps.LatLng(poiCollection.latitude, poiCollection.longitude));\n infoWindow.open(map);\n }\n })\n .catch(error => console.error('Error:', error));\n });\n }\n\n /**\n * Check for item in list\n * Check if an item exists in a comma-separated list of items.\n *\n * @param list\n * @param item\n */\n inList = (list, item) => {\n let catSearch = ',' + list + ',';\n item = ',' + item + ',';\n return catSearch.search(item);\n };\n\n /**\n * Create Marker with InfoWindow\n *\n * @param latitude\n * @param longitude\n */\n createMarkerByLatLng = async (latitude, longitude) => {\n const { AdvancedMarkerElement } = await google.maps.importLibrary(\"marker\");\n let marker = new AdvancedMarkerElement({\n position: new google.maps.LatLng(latitude, longitude),\n map: this.map\n });\n this.bounds.extend(marker.position);\n };\n\n /**\n * Add Edit Listeners\n * This will only work for Markers (Point)\n *\n * @param mapContainer\n * @param marker\n * @param poiCollection\n * @param environment\n */\n addEditListeners = (mapContainer, marker, poiCollection, environment) => {\n google.maps.event.addListener(marker, 'dragend', () => {\n let position = marker.position;\n let lat = (typeof position.lat === 'function' ? position.lat() : position.lat).toFixed(6);\n let lng = (typeof position.lng === 'function' ? position.lng() : position.lng).toFixed(6);\n mapContainer.prevAll(\"input.latitude-\" + environment.contentRecord.uid).val(lat);\n mapContainer.prevAll(\"input.longitude-\" + environment.contentRecord.uid).val(lng);\n });\n\n google.maps.event.addListener(this.map, 'click', event => {\n marker.position = event.latLng;\n mapContainer.prevAll(\"input.latitude-\" + environment.contentRecord.uid).val(event.latLng.lat().toFixed(6));\n mapContainer.prevAll(\"input.longitude-\" + environment.contentRecord.uid).val(event.latLng.lng().toFixed(6));\n });\n };\n}\n\nlet maps2GoogleMaps = [];\n\n/**\n * This function will be called by the &callback argument of the Google Maps API library\n */\nfunction initMap () {\n document.querySelectorAll(\".maps2\").forEach(element => {\n const environment = typeof element.dataset.environment !== 'undefined' ? element.dataset.environment : '{}';\n const override = typeof element.dataset.override !== 'undefined' ? element.dataset.override : '{}';\n\n const extend = (...args) => {\n let extended = {};\n let deep = false;\n let i = 0;\n let length = args.length;\n\n if (Object.prototype.toString.call(args[0]) === '[object Boolean]') {\n deep = args[0];\n i++;\n }\n\n const merge = function (obj) {\n for ( var prop in obj ) {\n if ( Object.prototype.hasOwnProperty.call( obj, prop ) ) {\n if ( deep && Object.prototype.toString.call(obj[prop]) === '[object Object]' ) {\n extended[prop] = extend( true, extended[prop], obj[prop] );\n } else {\n extended[prop] = obj[prop];\n }\n }\n }\n };\n\n for ( ; i < length; i++ ) {\n var obj = args[i];\n merge(obj);\n }\n\n return extended;\n };\n\n maps2GoogleMaps.push(new GoogleMaps2(\n element,\n extend(true, JSON.parse(environment), JSON.parse(override))\n ));\n });\n\n let address = document.querySelector('#maps2Address');\n let radius = document.querySelector('#maps2Radius');\n if (address !== null && radius !== null) {\n let autocomplete = new google.maps.places.Autocomplete(address, {\n fields: [\"id\", \"location\", \"formattedAddress\", \"displayName\"]\n });\n\n address.addEventListener(\"keydown\", event => {\n if (event.keyCode === 13) return false;\n });\n }\n}\n"],
- "mappings": "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",
- "names": ["element", "environment", "lat", "lng", "map", "centerPosition", "poiCollection", "paths", "mapOptions", "value", "dimension", "normalizedDimension", "settings", "groupedCategories", "categoryUid", "x", "y", "form", "isChecked", "categories", "checkbox", "markers", "marker", "allCategoriesOfMarker", "categoriesOfCheckboxesWithStatus", "i", "markerCategoryHasCheckboxWithStatus", "j", "k", "span", "categoryLabel", "category", "div", "checkboxDiv", "label", "input", "obj", "count", "key", "c", "AdvancedMarkerElement", "markerOptions", "img", "markerIconPath", "markerIconWidth", "markerIconHeight", "markerIconAnchorPosX", "markerIconAnchorPosY", "latLng", "area", "route", "circle", "infoWindow", "event", "response", "data", "error", "list", "item", "catSearch", "latitude", "longitude", "mapContainer", "position", "override", "extend", "args", "extended", "deep", "length", "merge", "prop", "address", "radius", "autocomplete"]
+ "sourcesContent": ["class GoogleMaps2 {\n allMarkers = [];\n categorizedMarkers = {};\n pointMarkers = [];\n markerClusterer = null;\n bounds = {};\n infoWindow = {};\n poiCollections = {};\n editable = {};\n map = {};\n\n /**\n * @param {HTMLElement} element\n * @param {Environment} environment\n * @constructor\n */\n constructor (element, environment) {\n this.allMarkers = [];\n this.categorizedMarkers = {};\n this.pointMarkers = [];\n this.bounds = new google.maps.LatLngBounds();\n this.infoWindow = new google.maps.InfoWindow();\n this.poiCollections = JSON.parse(element.dataset.pois || \"null\");\n this.editable = element.classList.contains('editMarker');\n\n this.setMapDimensions(element, environment.settings);\n\n this.initialize(element, environment);\n }\n\n /**\n * Initialize Map and Markers asynchronously\n *\n * @param {HTMLElement} element\n * @param {Environment} environment\n */\n initialize = async (element, environment) => {\n this.createMap(element, environment);\n\n if (typeof this.poiCollections === 'undefined' || this.poiCollections === null) {\n let lat = Number(element.dataset.latitude);\n let lng = Number(element.dataset.longitude);\n if (lat && lng) {\n await this.createMarkerByLatLng(lat, lng);\n this.map.setCenter(new google.maps.LatLng(lat, lng));\n } else {\n this.map.setCenter(new google.maps.LatLng(environment.extConf.defaultLatitude, environment.extConf.defaultLongitude));\n }\n } else {\n await this.createPointByCollectionType(element, environment);\n this.createMarkerClusterer(environment.settings);\n\n if (this.countObjectProperties(this.categorizedMarkers) > 1) {\n this.showSwitchableCategories(element, environment);\n }\n\n if (this.shouldFitBounds(environment.settings)) {\n this.map.fitBounds(this.bounds);\n } else {\n this.map.setCenter(new google.maps.LatLng(this.poiCollections[0].latitude, this.poiCollections[0].longitude));\n }\n }\n }\n\n /**\n * Cluster the point markers with the official @googlemaps/markerclusterer library\n *\n * @param {Settings} settings\n */\n createMarkerClusterer = settings => {\n if (\n this.editable\n || typeof settings.markerClusterer === 'undefined'\n || settings.markerClusterer.enable !== 1\n || typeof markerClusterer === 'undefined'\n ) {\n return;\n }\n\n this.markerClusterer = new markerClusterer.MarkerClusterer({\n map: this.map,\n markers: this.pointMarkers,\n renderer: this.getClusterRenderer(settings.markerClusterer.imagePath),\n });\n }\n\n /**\n * Render clusters with the images m1.png to m5.png of the configured imagePath.\n * Image sizes and index calculation are taken from the former MarkerClusterer v1.\n *\n * @param {string} imagePath\n * @return {object}\n */\n getClusterRenderer = imagePath => {\n const imageSizes = [53, 56, 66, 78, 90];\n\n return {\n render: ({ count, position }) => {\n const index = Math.min(String(count).length, imageSizes.length);\n const size = imageSizes[index - 1];\n const content = document.createElement('div');\n\n content.classList.add('maps2-marker-cluster');\n content.textContent = String(count);\n content.style.width = size + 'px';\n content.style.height = size + 'px';\n content.style.lineHeight = size + 'px';\n content.style.backgroundImage = 'url(\"' + imagePath + index + '.png\")';\n content.style.textAlign = 'center';\n content.style.fontSize = '11px';\n content.style.fontWeight = 'bold';\n content.style.color = '#000';\n content.style.cursor = 'pointer';\n content.style.transform = 'translateY(50%)';\n\n return new google.maps.marker.AdvancedMarkerElement({\n position: position,\n content: content,\n zIndex: 1000 + count,\n });\n },\n };\n }\n\n /**\n * Return a MapOptions object which can be assigned to the Map object of Google\n *\n * @param {Settings} settings\n * @return {object}\n */\n getMapOptions = settings => {\n let mapOptions = {\n mapTypeId: '',\n zoom: parseInt(settings.zoom),\n zoomControl: (parseInt(settings.zoomControl) !== 0),\n mapTypeControl: (parseInt(settings.mapTypeControl) !== 0),\n scaleControl: (parseInt(settings.scaleControl) !== 0),\n streetViewControl: (parseInt(settings.streetViewControl) !== 0),\n fullscreenControl: (parseInt(settings.fullScreenControl) !== 0),\n scrollwheel: settings.activateScrollWheel,\n styles: ''\n };\n\n if (settings.styles) {\n mapOptions.styles = eval(settings.styles);\n }\n\n switch (settings.mapTypeId) {\n case 'google.maps.MapTypeId.HYBRID':\n case 'hybrid':\n mapOptions.mapTypeId = google.maps.MapTypeId.HYBRID;\n break;\n case 'google.maps.MapTypeId.ROADMAP':\n case 'roadmap':\n mapOptions.mapTypeId = google.maps.MapTypeId.ROADMAP;\n break;\n case 'google.maps.MapTypeId.SATELLITE':\n case 'satellite':\n mapOptions.mapTypeId = google.maps.MapTypeId.SATELLITE;\n break;\n case 'google.maps.MapTypeId.TERRAIN':\n case 'terrain':\n mapOptions.mapTypeId = google.maps.MapTypeId.TERRAIN;\n break;\n }\n\n return mapOptions;\n }\n\n /**\n * Returns CircleOptions which can be assigned to the Circle object of Google\n *\n * @param {L.Map} map\n * @param {object} centerPosition\n * @param {PoiCollection} poiCollection\n * @return {object}\n */\n getCircleOptions (map, centerPosition, poiCollection) {\n return {\n map: map,\n center: centerPosition,\n radius: poiCollection.radius,\n strokeColor: poiCollection.strokeColor,\n strokeOpacity: poiCollection.strokeOpacity,\n strokeWeight: poiCollection.strokeWeight,\n fillColor: poiCollection.fillColor,\n fillOpacity: poiCollection.fillOpacity\n };\n }\n\n /**\n * Returns PolygonOptions which can be assigned to the Polygon object of Google\n *\n * @param {object} paths\n * @param {PoiCollection} poiCollection\n * @return {object}\n */\n getPolygonOptions (paths, poiCollection) {\n return {\n paths: paths,\n strokeColor: poiCollection.strokeColor,\n strokeOpacity: poiCollection.strokeOpacity,\n strokeWeight: poiCollection.strokeWeight,\n fillColor: poiCollection.fillColor,\n fillOpacity: poiCollection.fillOpacity\n };\n }\n\n /**\n * Return PolylineOptions which can be assigned to the Polyline object of Google\n *\n * @param {object} paths\n * @param {PoiCollection} poiCollection\n * @return {object}\n */\n getPolylineOptions (paths, poiCollection) {\n return {\n path: paths,\n strokeColor: poiCollection.strokeColor,\n strokeOpacity: poiCollection.strokeOpacity,\n strokeWeight: poiCollection.strokeWeight,\n };\n }\n\n /**\n * Create Map\n *\n * @param {HTMLElement} element\n * @param {Environment} environment\n */\n createMap (element, environment) {\n let mapOptions = this.getMapOptions(environment.settings);\n mapOptions.mapId = environment.settings.googleMapsMapId || '';\n\n this.map = new google.maps.Map(element, mapOptions);\n }\n\n /**\n * @param {string | number} value\n * @return {boolean}\n */\n canBeInterpretedAsNumber(value) {\n return typeof value === 'number' || !isNaN(Number(value));\n }\n\n /**\n * @param {string | number} dimension\n * @returns {string}\n */\n normalizeDimension(dimension) {\n let normalizedDimension = String(dimension);\n\n if (this.canBeInterpretedAsNumber(normalizedDimension)) {\n normalizedDimension += 'px';\n }\n\n return normalizedDimension;\n }\n\n /**\n * @param {Settings} settings\n * @returns {boolean}\n */\n shouldFitBounds(settings) {\n if (settings.forceZoom === true) {\n return false;\n }\n\n if (this.poiCollections === null) {\n return false;\n }\n\n if (this.poiCollections.length > 1) {\n return true;\n }\n\n if (\n this.poiCollections.length === 1\n && (\n this.poiCollections[0].collectionType === \"Area\"\n || this.poiCollections[0].collectionType === \"Route\"\n )\n ) {\n return true;\n }\n\n return false;\n }\n\n /**\n * @param {HTMLElement} element\n * @param {Settings} settings\n */\n setMapDimensions(element, settings) {\n element.style.height = this.normalizeDimension(settings.mapHeight);\n element.style.width = this.normalizeDimension(settings.mapWidth);\n }\n\n /**\n * Group Categories\n *\n * @param {Environment} environment\n */\n groupCategories = environment => {\n let groupedCategories = {};\n let categoryUid = \"0\";\n for (let x = 0; x < this.poiCollections.length; x++) {\n for (let y = 0; y < this.poiCollections[x].categories.length; y++) {\n categoryUid = String(this.poiCollections[x].categories[y].uid);\n if (this.inList(environment.settings.categories, categoryUid) > -1 && !groupedCategories.hasOwnProperty(categoryUid)) {\n groupedCategories[categoryUid] = this.poiCollections[x].categories[y];\n }\n }\n }\n\n return groupedCategories;\n };\n\n /**\n * Get categories of all checkboxes with a given status\n *\n * @param {HTMLElement} form The HTML form element containing the checkboxes\n * @param {boolean} isChecked Get checkboxes of this status only\n */\n getCategoriesOfCheckboxesWithStatus = (form, isChecked) => {\n let categories = [];\n let checkboxes = isChecked ? form.querySelectorAll(\"input:checked\") : form.querySelectorAll(\"input:not(input:checked)\");\n\n checkboxes.forEach(checkbox => {\n categories.push(parseInt(checkbox.value));\n });\n\n return categories;\n }\n\n getMarkersToChangeVisibilityFor = (categoryUid, form, isChecked) => {\n let markers = [];\n if (this.allMarkers.length === 0) {\n return markers;\n }\n\n let marker = null;\n let allCategoriesOfMarker = null;\n let categoriesOfCheckboxesWithStatus = this.getCategoriesOfCheckboxesWithStatus(form, isChecked);\n for (let i = 0; i < this.allMarkers.length; i++) {\n marker = this.allMarkers[i];\n allCategoriesOfMarker = marker.poiCollection.categories;\n if (allCategoriesOfMarker.length === 0) {\n continue;\n }\n\n let markerCategoryHasCheckboxWithStatus;\n for (let j = 0; j < allCategoriesOfMarker.length; j++) {\n markerCategoryHasCheckboxWithStatus = false;\n for (let k = 0; k < categoriesOfCheckboxesWithStatus.length; k++) {\n if (allCategoriesOfMarker[j].uid === categoriesOfCheckboxesWithStatus[k]) {\n markerCategoryHasCheckboxWithStatus = true;\n }\n }\n if (markerCategoryHasCheckboxWithStatus === isChecked) {\n break;\n }\n }\n\n if (markerCategoryHasCheckboxWithStatus) {\n markers.push(marker.marker);\n }\n }\n\n return markers;\n }\n\n /**\n * Show switchable categories\n *\n * @param {HTMLElement} element\n * @param {Environment} environment\n */\n showSwitchableCategories = (element, environment) => {\n let categories = this.groupCategories(environment);\n let form = document.createElement(\"form\");\n let span = {};\n\n form.classList.add(\"txMaps2Form\");\n form.setAttribute(\"id\", \"txMaps2Form-\" + environment.contentRecord.uid);\n\n for (let categoryUid in categories) {\n if (categories.hasOwnProperty(categoryUid)) {\n form.appendChild(this.getCheckbox(categories[categoryUid]));\n\n const categoryLabel = document.createElement(\"span\");\n categoryLabel.classList.add(\"map-category\");\n categoryLabel.textContent = categories[categoryUid].title;\n form.querySelector(\"#checkCategory_\" + categoryUid)?.insertAdjacentElement(\"afterend\", categoryLabel);\n }\n }\n\n form.querySelectorAll(\"input\").forEach((checkbox) => {\n checkbox.addEventListener(\"click\", () => {\n let isChecked = (checkbox).checked;\n let categoryUid = (checkbox).value;\n let markers = this.getMarkersToChangeVisibilityFor(categoryUid, form, isChecked);\n\n markers.forEach((marker) => {\n if (this.markerClusterer !== null && this.pointMarkers.includes(marker)) {\n if (isChecked) {\n this.markerClusterer.addMarker(marker);\n } else {\n this.markerClusterer.removeMarker(marker);\n }\n } else if (typeof marker.setVisible === 'function') {\n marker.setVisible(isChecked);\n } else if (typeof marker.setMap === 'function') {\n marker.setMap(isChecked ? this.map : null);\n } else {\n marker.map = isChecked ? this.map : null;\n }\n });\n });\n });\n\n element.insertAdjacentElement(\"afterend\", form);\n }\n\n /**\n * Get Checkbox for Category\n *\n * @param category\n */\n getCheckbox(category) {\n const div = document.createElement(\"div\");\n div.classList.add(\"form-group\");\n\n const checkboxDiv = document.createElement(\"div\");\n checkboxDiv.classList.add(\"checkbox\");\n\n const label = document.createElement(\"label\");\n\n const input = document.createElement(\"input\");\n input.type = \"checkbox\";\n input.classList.add(\"checkCategory\");\n input.id = \"checkCategory_\" + category.uid;\n input.checked = true;\n input.value = category.uid;\n\n label.appendChild(input);\n checkboxDiv.appendChild(label);\n div.appendChild(checkboxDiv);\n\n return div;\n }\n\n /**\n * Count Object properties\n *\n * @param obj\n */\n countObjectProperties = obj => {\n let count = 0;\n for (let key in obj) {\n if (obj.hasOwnProperty(key)) {\n count++;\n }\n }\n return count;\n }\n\n /**\n * Create Point by CollectionType\n *\n * @param {HTMLElement} element\n * @param {Environment} environment\n */\n createPointByCollectionType = async (element, environment) => {\n let marker;\n let categoryUid = 0;\n\n if (this.poiCollections !== null && this.poiCollections.length) {\n for (const poiCollection of this.poiCollections) {\n if (poiCollection.strokeColor === \"\") {\n poiCollection.strokeColor = environment.extConf.strokeColor;\n }\n if (poiCollection.strokeOpacity === \"\") {\n poiCollection.strokeOpacity = environment.extConf.strokeOpacity;\n }\n if (poiCollection.strokeWeight === \"\") {\n poiCollection.strokeWeight = environment.extConf.strokeWeight;\n }\n if (poiCollection.fillColor === \"\") {\n poiCollection.fillColor = environment.extConf.fillColor;\n }\n if (poiCollection.fillOpacity === \"\") {\n poiCollection.fillOpacity = environment.extConf.fillOpacity;\n }\n\n marker = null;\n switch (poiCollection.collectionType) {\n case \"Point\":\n marker = await this.createMarker(poiCollection, element, environment);\n break;\n case \"Area\":\n marker = this.createArea(poiCollection, environment);\n break;\n case \"Route\":\n marker = this.createRoute(poiCollection, environment);\n break;\n case \"Radius\":\n marker = this.createRadius(poiCollection, environment);\n break;\n }\n\n if (marker !== null) {\n this.allMarkers.push({\n marker: marker,\n poiCollection: poiCollection\n });\n\n categoryUid = 0;\n for (let c = 0; c < poiCollection.categories.length; c++) {\n categoryUid = poiCollection.categories[c].uid;\n if (!this.categorizedMarkers.hasOwnProperty(categoryUid)) {\n this.categorizedMarkers[categoryUid] = [];\n }\n this.categorizedMarkers[categoryUid].push({\n marker: marker,\n relatedCategories: poiCollection.categories\n });\n }\n }\n }\n }\n }\n\n /**\n * Create Marker with InfoWindow\n *\n * @param {PoiCollection} poiCollection\n * @param {HTMLElement} element\n * @param {Environment} environment\n */\n createMarker = async (poiCollection, element, environment) => {\n const { AdvancedMarkerElement } = await google.maps.importLibrary(\"marker\");\n let markerOptions = {\n position: new google.maps.LatLng(poiCollection.latitude, poiCollection.longitude),\n map: this.map,\n gmpDraggable: this.editable\n };\n\n if (poiCollection.hasOwnProperty(\"markerIcon\") && poiCollection.markerIcon !== \"\") {\n const img = document.createElement('img');\n let markerIconPath = poiCollection.markerIcon;\n\n // Remove leading slash if present, to avoid double slashes with siteUrl\n if (markerIconPath.startsWith('/')) {\n markerIconPath = markerIconPath.substring(1);\n }\n\n img.src = environment.siteUrl + markerIconPath;\n\n const markerIconWidth = poiCollection.markerIconWidth || environment.extConf.markerIconWidth;\n const markerIconHeight = poiCollection.markerIconHeight || environment.extConf.markerIconHeight;\n const markerIconAnchorPosX = poiCollection.markerIconAnchorPosX || environment.extConf.markerIconAnchorPosX;\n const markerIconAnchorPosY = poiCollection.markerIconAnchorPosY || environment.extConf.markerIconAnchorPosY;\n\n if (markerIconWidth) img.style.width = markerIconWidth + 'px';\n if (markerIconHeight) img.style.height = markerIconHeight + 'px';\n markerOptions.content = img;\n\n if (markerIconAnchorPosX) {\n markerOptions.anchorLeft = '-' + markerIconAnchorPosX + 'px';\n }\n if (markerIconAnchorPosY) {\n markerOptions.anchorTop = '-' + markerIconAnchorPosY + 'px';\n }\n }\n\n let marker = new AdvancedMarkerElement(markerOptions);\n\n this.pointMarkers.push(marker);\n this.bounds.extend(marker.position);\n\n if (this.editable) {\n this.addEditListeners(element, marker, poiCollection, environment);\n } else {\n this.addInfoWindow(marker, poiCollection, environment);\n }\n\n return marker;\n }\n\n /**\n * Create Area\n *\n * @param poiCollection\n * @param environment\n */\n createArea = (poiCollection, environment) => {\n let latLng;\n let paths = [];\n for (let i = 0; i < poiCollection.pois.length; i++) {\n latLng = new google.maps.LatLng(poiCollection.pois[i].latitude, poiCollection.pois[i].longitude);\n this.bounds.extend(latLng);\n paths.push(latLng);\n }\n\n if (paths.length === 0) {\n paths.push(this.mapPosition);\n }\n\n let area = new google.maps.Polygon(this.getPolygonOptions(paths, poiCollection));\n area.setMap(this.map);\n this.addInfoWindow(area, poiCollection, environment);\n\n return area;\n }\n\n /**\n * Create Route\n *\n * @param poiCollection\n * @param environment\n */\n createRoute = (poiCollection, environment) => {\n let latLng;\n let paths = [];\n for (let i = 0; i < poiCollection.pois.length; i++) {\n latLng = new google.maps.LatLng(poiCollection.pois[i].latitude, poiCollection.pois[i].longitude);\n this.bounds.extend(latLng);\n paths.push(latLng);\n }\n\n if (paths.length === 0) {\n paths.push(this.mapPosition);\n }\n\n let route = new google.maps.Polyline(this.getPolylineOptions(paths, poiCollection));\n route.setMap(this.map);\n this.addInfoWindow(route, poiCollection, environment);\n\n return route;\n }\n\n /**\n * Create Radius\n *\n * @param poiCollection\n * @param environment\n */\n createRadius = (poiCollection, environment) => {\n let circle = new google.maps.Circle(\n this.getCircleOptions(\n this.map,\n new google.maps.LatLng(poiCollection.latitude, poiCollection.longitude),\n poiCollection\n )\n );\n\n this.bounds.union(circle.getBounds());\n this.addInfoWindow(circle, poiCollection, environment);\n\n return circle;\n }\n\n /**\n * Add Info Window to element\n *\n * @param element\n * @param poiCollection\n * @param environment\n */\n addInfoWindow = (element, poiCollection, environment) => {\n let infoWindow = this.infoWindow;\n let map = this.map;\n google.maps.event.addListener(element, \"click\", event => {\n fetch(environment.ajaxUrl, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"ext-maps2\": \"infoWindowContent\"\n },\n body: JSON.stringify({\n poiCollection: poiCollection.uid\n })\n })\n .then(response => response.json())\n .then(data => {\n infoWindow.close();\n infoWindow.setContent(data.content);\n\n if (poiCollection.collectionType === \"Point\") {\n infoWindow.setPosition(null);\n infoWindow.open({\n anchor: element,\n map: map\n });\n } else {\n infoWindow.setPosition(new google.maps.LatLng(poiCollection.latitude, poiCollection.longitude));\n infoWindow.open(map);\n }\n })\n .catch(error => console.error('Error:', error));\n });\n }\n\n /**\n * Check for item in list\n * Check if an item exists in a comma-separated list of items.\n *\n * @param list\n * @param item\n */\n inList = (list, item) => {\n let catSearch = ',' + list + ',';\n item = ',' + item + ',';\n return catSearch.search(item);\n };\n\n /**\n * Create Marker with InfoWindow\n *\n * @param latitude\n * @param longitude\n */\n createMarkerByLatLng = async (latitude, longitude) => {\n const { AdvancedMarkerElement } = await google.maps.importLibrary(\"marker\");\n let marker = new AdvancedMarkerElement({\n position: new google.maps.LatLng(latitude, longitude),\n map: this.map\n });\n this.bounds.extend(marker.position);\n };\n\n /**\n * Add Edit Listeners\n * This will only work for Markers (Point)\n *\n * @param mapContainer\n * @param marker\n * @param poiCollection\n * @param environment\n */\n addEditListeners = (mapContainer, marker, poiCollection, environment) => {\n google.maps.event.addListener(marker, 'dragend', () => {\n let position = marker.position;\n let lat = (typeof position.lat === 'function' ? position.lat() : position.lat).toFixed(6);\n let lng = (typeof position.lng === 'function' ? position.lng() : position.lng).toFixed(6);\n mapContainer.prevAll(\"input.latitude-\" + environment.contentRecord.uid).val(lat);\n mapContainer.prevAll(\"input.longitude-\" + environment.contentRecord.uid).val(lng);\n });\n\n google.maps.event.addListener(this.map, 'click', event => {\n marker.position = event.latLng;\n mapContainer.prevAll(\"input.latitude-\" + environment.contentRecord.uid).val(event.latLng.lat().toFixed(6));\n mapContainer.prevAll(\"input.longitude-\" + environment.contentRecord.uid).val(event.latLng.lng().toFixed(6));\n });\n };\n}\n\nlet maps2GoogleMaps = [];\n\n/**\n * This function will be called by the &callback argument of the Google Maps API library\n */\nfunction initMap () {\n document.querySelectorAll(\".maps2\").forEach(element => {\n const environment = typeof element.dataset.environment !== 'undefined' ? element.dataset.environment : '{}';\n const override = typeof element.dataset.override !== 'undefined' ? element.dataset.override : '{}';\n\n const extend = (...args) => {\n let extended = {};\n let deep = false;\n let i = 0;\n let length = args.length;\n\n if (Object.prototype.toString.call(args[0]) === '[object Boolean]') {\n deep = args[0];\n i++;\n }\n\n const merge = function (obj) {\n for ( var prop in obj ) {\n if ( Object.prototype.hasOwnProperty.call( obj, prop ) ) {\n if ( deep && Object.prototype.toString.call(obj[prop]) === '[object Object]' ) {\n extended[prop] = extend( true, extended[prop], obj[prop] );\n } else {\n extended[prop] = obj[prop];\n }\n }\n }\n };\n\n for ( ; i < length; i++ ) {\n var obj = args[i];\n merge(obj);\n }\n\n return extended;\n };\n\n maps2GoogleMaps.push(new GoogleMaps2(\n element,\n extend(true, JSON.parse(environment), JSON.parse(override))\n ));\n });\n\n let address = document.querySelector('#maps2Address');\n let radius = document.querySelector('#maps2Radius');\n if (address !== null && radius !== null) {\n let autocomplete = new google.maps.places.Autocomplete(address, {\n fields: [\"id\", \"location\", \"formattedAddress\", \"displayName\"]\n });\n\n address.addEventListener(\"keydown\", event => {\n if (event.keyCode === 13) return false;\n });\n }\n}\n"],
+ "mappings": "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",
+ "names": ["element", "environment", "lat", "lng", "settings", "imagePath", "imageSizes", "count", "position", "index", "size", "content", "map", "centerPosition", "poiCollection", "paths", "mapOptions", "value", "dimension", "normalizedDimension", "groupedCategories", "categoryUid", "x", "y", "form", "isChecked", "categories", "checkbox", "markers", "marker", "allCategoriesOfMarker", "categoriesOfCheckboxesWithStatus", "i", "markerCategoryHasCheckboxWithStatus", "j", "k", "span", "categoryLabel", "category", "div", "checkboxDiv", "label", "input", "obj", "key", "c", "AdvancedMarkerElement", "markerOptions", "img", "markerIconPath", "markerIconWidth", "markerIconHeight", "markerIconAnchorPosX", "markerIconAnchorPosY", "latLng", "area", "route", "circle", "infoWindow", "event", "response", "data", "error", "list", "item", "catSearch", "latitude", "longitude", "mapContainer", "override", "extend", "args", "extended", "deep", "length", "merge", "prop", "address", "radius", "autocomplete"]
}
diff --git a/Resources/Public/JavaScript/MarkerClusterer.js b/Resources/Public/JavaScript/MarkerClusterer.js
deleted file mode 100644
index f53d70d84..000000000
--- a/Resources/Public/JavaScript/MarkerClusterer.js
+++ /dev/null
@@ -1,1319 +0,0 @@
-// ==ClosureCompiler==
-// @compilation_level ADVANCED_OPTIMIZATIONS
-// @externs_url http://closure-compiler.googlecode.com/svn/trunk/contrib/externs/maps/google_maps_api_v3_3.js
-// ==/ClosureCompiler==
-
-/**
- * @name MarkerClusterer for Google Maps v3
- * @version version 1.0.1
- * @author Luke Mahe
- * @fileoverview
- * The library creates and manages per-zoom-level clusters for large amounts of
- * markers.
- */
-
-/**
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-
-/**
- * A Marker Clusterer that clusters markers.
- *
- * @param {google.maps.Map} map The Google map to attach to.
- * @param {Array.=0;n--)i=t[n].getLatLng(),e.push(i);return L.QuickHull.getConvexHull(e)}}),L.MarkerCluster.include({_2PI:Math.PI*2,_circleFootSeparation:25,_circleStartAngle:0,_spiralFootSeparation:28,_spiralLengthStart:11,_spiralLengthFactor:5,_circleSpiralSwitchover:9,spiderfy:function(){if(!(this._group._spiderfied===this||this._group._inZoomAnimation)){var t=this.getAllChildMarkers(null,!0),e=this._group,i=e._map,n=i.latLngToLayerPoint(this._latlng),s;this._group._unspiderfy(),this._group._spiderfied=this,this._group.options.spiderfyShapePositions?s=this._group.options.spiderfyShapePositions(t.length,n):t.length>=this._circleSpiralSwitchover?s=this._generatePointsSpiral(t.length,n):(n.y+=10,s=this._generatePointsCircle(t.length,n)),this._animationSpiderfy(t,s)}},unspiderfy:function(t){this._group._inZoomAnimation||(this._animationUnspiderfy(t),this._group._spiderfied=null)},_generatePointsCircle:function(t,e){var i=this._group.options.spiderfyDistanceMultiplier*this._circleFootSeparation*(2+t),n=i/this._2PI,s=this._2PI/t,o=[],r,h;for(n=Math.max(n,35),o.length=t,r=0;r