{"version":3,"file":"map.33be5c6c14595fdfea1c.min.js","mappings":"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","sources":["webpack://intracto-deheus/./Frontend/js/components/map/index.js"],"sourcesContent":["export default class Map {\r\n constructor(component) {\r\n this.component = component;\r\n this.key = this.component.getAttribute('data-map-key');\r\n this.hasform = this.component.getAttribute('data-map-hasform');\r\n this.centerLat = this.component.getAttribute('data-map-center-lat');\r\n this.centerLng = this.component.getAttribute('data-map-center-lng');\r\n this.locations = JSON.parse(\r\n this.component.getAttribute('data-map-locations')\r\n );\r\n this.markers = [];\r\n\r\n if (!this.key) return;\r\n\r\n this.centerLat = parseFloat(this.centerLat);\r\n this.centerLng = parseFloat(this.centerLng);\r\n\r\n this.init();\r\n }\r\n\r\n // Prettier-ignore\r\n loadMap(root) {\r\n root.map = new google.maps.Map(root.component, {\r\n center: {\r\n lat: root.centerLat ? root.centerLat : 52.090736,\r\n lng: root.centerLng ? root.centerLng : 5.121420\r\n },\r\n zoom: root.centerLat ? 15 : 5,\r\n disableDefaultUI: true\r\n });\r\n\r\n root.map.addListener('center_changed', () => {\r\n window.setTimeout(() => {\r\n if (!root.map.getBounds().contains(root.currentMarker.getPosition())) {\r\n this.infobox.classList.add('is-hidden');\r\n }\r\n }, 100);\r\n });\r\n }\r\n\r\n loadMarkers(root) {\r\n root.locations.map((location, i) => {\r\n const marker = new google.maps.Marker({\r\n position: new google.maps.LatLng(location.lat, location.lng),\r\n map: root.map\r\n });\r\n\r\n this.markers.push(marker);\r\n\r\n if (i === 0) root.currentMarker = marker;\r\n\r\n google.maps.event.addListener(marker, 'click', function() {\r\n root.setInfoboxContent(root, location);\r\n root.currentMarker = marker;\r\n root.map.panTo(marker.getPosition());\r\n root.infobox.classList.remove('is-hidden');\r\n });\r\n });\r\n }\r\n\r\n setInfoboxContent(root, location) {\r\n root.infobox.innerHTML = `\r\n \r\n
\r\n ${\r\n location.label !== null\r\n ? '' +\r\n location.label +\r\n ''\r\n : ''\r\n }\r\n

${location.title}

\r\n

${location.address}

\r\n
\r\n ${\r\n location.linkText\r\n}\r\n `;\r\n }\r\n\r\n loadInfobox(root) {\r\n const container = document.createElement('div');\r\n if(root.hasform === 'False') {\r\n container.classList.add('container');\r\n }\r\n container.style.pointerEvents = 'none';\r\n\r\n root.infobox = document.createElement('div');\r\n root.infobox.classList.add('card');\r\n root.setInfoboxContent(root, root.locations[0]);\r\n\r\n root.component.appendChild(container);\r\n container.appendChild(root.infobox);\r\n }\r\n\r\n initExternalTriggers(root) {\r\n document.querySelectorAll('[data-map-link]').forEach(trigger => {\r\n trigger.addEventListener('click', () => {\r\n const reference = trigger.getAttribute('data-map-link').split('/');\r\n const markerToClick = root.markers.filter(marker => {\r\n if (\r\n marker.internalPosition.lat().toString() === reference[0] &&\r\n marker.internalPosition.lng().toString() === reference[1]\r\n ) {\r\n return marker;\r\n }\r\n });\r\n\r\n if (!markerToClick) return;\r\n\r\n new google.maps.event.trigger(markerToClick[0], 'click');\r\n });\r\n });\r\n }\r\n\r\n init() {\r\n const root = this;\r\n const script = document.createElement('script');\r\n\r\n script.src = `https://maps.googleapis.com/maps/api/js?key=${this.key}&callback=loadMap`;\r\n script.defer = true;\r\n\r\n window.loadMap = function() {\r\n root.loadMap(root);\r\n root.loadMarkers(root);\r\n root.loadInfobox(root);\r\n root.initExternalTriggers(root);\r\n };\r\n\r\n document.head.appendChild(script);\r\n }\r\n}\r\n"],"names":["Map","constructor","component","this","key","getAttribute","hasform","centerLat","centerLng","locations","JSON","parse","markers","parseFloat","init","loadMap","root","map","google","maps","center","lat","lng","zoom","disableDefaultUI","addListener","window","setTimeout","getBounds","contains","currentMarker","getPosition","infobox","classList","add","loadMarkers","location","i","marker","Marker","position","LatLng","push","event","setInfoboxContent","panTo","remove","innerHTML","image","label","title","address","linkUrl","linkText","loadInfobox","container","document","createElement","style","pointerEvents","appendChild","initExternalTriggers","querySelectorAll","forEach","trigger","addEventListener","reference","split","markerToClick","filter","internalPosition","toString","script","src","defer","head"],"sourceRoot":""}