{"version":3,"file":"locator.js","sources":["../../../node_modules/mdn-polyfills/NodeList.prototype.forEach.js","../../../node_modules/mdn-polyfills/Node.prototype.remove.js","../../../sources/javascripts/front/components/switch/Switch.js","../../../sources/javascripts/front/components/locator/Locator.js","../../../sources/javascripts/front/utilities/utilities.js","../../../sources/javascripts/front/components/locator/lifecycle.js"],"sourcesContent":["window.NodeList&&!NodeList.prototype.forEach&&(NodeList.prototype.forEach=function(o,t){t=t||window;for(var i=0;i`,\n iconAnchor: [16, 32],\n popupAnchor: [0, -32],\n });\n\n const marker = this.leaflet.marker([lat, lng], { icon: icon });\n\n this.markers.push(marker);\n\n if (this.popupTemplate) {\n let template = this.popupTemplate.innerHTML;\n template = template.replace(/{title}/, item.title);\n template = template.replace(/{address}/, item.address);\n template = template.replace(/{openings}/, item.openings);\n template = template.replace(/{tel}/, item.tel);\n template = template.replace(/{phone}/, item.phone);\n template = template.replace(/{button}/, item.button);\n template = template.replace(/{link}/, item.link);\n\n const popup = this.leaflet.popup({ className: `u-theme-${theme}` });\n popup.setContent(template);\n\n marker\n .bindPopup(popup)\n .addEventListener('popupopen', this.handlePopupOpen)\n .addEventListener('popupclose', this.handlePopupClose);\n }\n }\n\n handleAutocompleteChanged() {\n const place = this.autocomplete.getPlace();\n\n if (place.geometry) {\n this.lat.value = place.geometry.location.lat();\n this.lng.value = place.geometry.location.lng();\n }\n }\n\n handleDebouncedResize() {\n if (this.tmp !== this.element.offsetWidth) {\n\n if (this.switch) {\n const isDisplayed = window.getComputedStyle(this.switch.element).getPropertyValue('display') !== 'none';\n\n if (!isDisplayed && this.switch.mounted) {\n this.switch.unmount();\n } else if (isDisplayed && !this.switch.mounted) {\n this.switch.mount();\n }\n }\n\n this.tmp = this.element.offsetWidth;\n }\n }\n\n handleGeolocalisationClick(e) {\n this.geolocator.setAttribute('disabled', '');\n navigator.geolocation.getCurrentPosition((position) => {\n this.lat.value = position.coords.latitude;\n this.lng.value = position.coords.longitude;\n this.input.value = 'Ma position actuelle';\n this.geolocator.removeAttribute('disabled');\n }, (error) => {\n this.geolocator.removeEventListener('click', this.handleGeolocalisationClick);\n this.geolocator.remove();\n });\n }\n\n handleInputKeydown(e) {\n if (e.key === 'Enter' && this.input.value !== '') {\n e.preventDefault();\n this.geocoder.geocode({\n address: this.input.value,\n language: 'fr',\n region: 'fr'\n }, (results, status) => {\n if (status === google.maps.GeocoderStatus.OK) {\n const firstResult = results[0];\n this.input.value = firstResult.formatted_address;\n this.lat.value = firstResult.geometry.location.lat();\n this.lng.value = firstResult.geometry.location.lng();\n this.form.submit();\n } else {\n alert(this.form.dataset.locatorError);\n }\n });\n } else {\n this.lat.value = '';\n this.lng.value = '';\n }\n }\n\n handleMap() {\n this.map = this.leaflet.map(this.mapElement, {\n center: [47, 2],\n zoom: 6\n });\n\n this.leaflet.tileLayer('https://api.maptiler.com/maps/basic/256/{z}/{x}/{y}@2x.png?key=dSl9xUo8KormPT5EcrYw', {\n attribution: 'MapTiler',\n maxZoom: 20\n }).addTo(this.map);\n\n if (window.markers) {\n window.markers.forEach((item) => {\n this.addMarker(item);\n });\n\n this.featureGroup = this.leaflet.featureGroup(this.markers);\n\n this.clusterGroup = this.leaflet.markerClusterGroup({ showCoverageOnHover: false });\n this.clusterGroup.addLayer(this.featureGroup);\n this.clusterGroup.addTo(this.map);\n\n if (this.lat.value && this.lng.value) {\n this.map.fitBounds(this.featureGroup.getBounds(), { padding: [30, 30], maxZoom: 10 });\n }\n }\n }\n\n handlePopupOpen(e) {\n e.target['_icon'].classList.add('is-active');\n }\n\n handlePopupClose(e) {\n e.target['_icon'].classList.remove('is-active');\n }\n\n handleSubmit(e) {\n if (this.input.value !== '' && (!this.lat.value || !this.lng.value)) {\n e.preventDefault();\n }\n }\n\n handleSwitchUpdate(e) {\n if (this.map) {\n this.map.invalidateSize(true);\n }\n }\n\n initAutocomplete() {\n this.autocomplete = new google.maps.places.Autocomplete(this.input, { types: ['geocode'], componentRestrictions: { country: 'fr' } });\n this.geocoder = new google.maps.Geocoder();\n this.input.addEventListener('keydown', this.handleInputKeydown);\n this.autocomplete.addListener('place_changed', this.handleAutocompleteChanged);\n }\n\n loadGMaps() {\n if (!this.gMapsIsLoading && !this.gMapsIsLoaded && typeof window.google === 'undefined') {\n this.gMapsIsLoading = true;\n\n const script = document.createElement('script');\n script.type = 'text/javascript';\n script.src = 'https://maps.googleapis.com/maps/api/js?key=' + googleMapsKey + '&libraries=places';\n script.addEventListener('load', () => {\n this.gMapsIsLoading = false;\n this.gMapsIsLoaded = true;\n this.initAutocomplete();\n }, { once: true });\n document.body.appendChild(script);\n }\n }\n\n loadLeaflet() {\n if (!this.leafIsLoading && !this.leafIsLoaded && typeof L === 'undefined') {\n this.leafIsLoading = true;\n\n const link = document.createElement('link');\n link.rel = 'stylesheet';\n link.href = 'https://unpkg.com/leaflet@1.7.1/dist/leaflet.css';\n document.body.appendChild(link);\n\n const script = document.createElement('script');\n script.type = 'text/javascript';\n script.src = 'https://unpkg.com/leaflet@1.7.1/dist/leaflet.js';\n script.addEventListener('load', () => {\n this.leafIsLoading = false;\n this.leafIsLoaded = true;\n this.leaflet = window.L;\n this.loadClusterer();\n }, { once: true });\n document.body.appendChild(script);\n }\n }\n\n loadClusterer() {\n if (!this.clustererIsLoading && !this.clustererIsLoaded && typeof this.leaflet !== 'undefined') {\n this.clustererIsLoading = true;\n\n const script = document.createElement('script');\n script.type = 'text/javascript';\n script.src = 'https://unpkg.com/leaflet.markercluster@1.4.1/dist/leaflet.markercluster.js';\n script.addEventListener('load', () => {\n this.clustererIsLoading = false;\n this.clustererIsLoaded = true;\n this.handleMap();\n }, { once: true });\n document.body.appendChild(script);\n }\n }\n\n mount() {\n if (\"geolocation\" in navigator && \"permissions\" in navigator && this.geolocator) {\n navigator.permissions\n .query({ name: 'geolocation' })\n .then((result) => {\n if (result.state === \"denied\") {\n this.geolocator.remove();\n } else {\n this.geolocator.removeAttribute('hidden');\n this.geolocator.addEventListener('click', this.handleGeolocalisationClick);\n }\n });\n } else {\n this.geolocator.remove();\n }\n\n if (this.mapElement) {\n this.loadLeaflet();\n }\n\n if (this.form && this.input) {\n this.loadGMaps();\n this.form.addEventListener('submit', this.handleSubmit);\n }\n\n if (this.switchElement) {\n this.switch = new Switch(this.switchElement);\n this.switch.mount();\n this.switch.element.addEventListener('switch:toggle', this.handleSwitchUpdate);\n this.switch.element.addEventListener('switch:mounted', this.handleSwitchUpdate);\n this.switch.element.addEventListener('switch:unmounted', this.handleSwitchUpdate);\n window.addEventListener('resize', this.handleDebouncedResize);\n this.handleDebouncedResize();\n }\n }\n\n unmount() {\n if (\"geolocation\" in navigator && this.geolocator) {\n this.geolocator.removeEventListener('click', this.handleGeolocalisationClick);\n }\n\n this.map.remove();\n this.map = null;\n\n if (this.form && this.input) {\n this.form.removeEventListener('submit', this.handleSubmit);\n }\n\n if (this.autocomplete) {\n this.input.removeEventListener('change', this.handleInputKeydown);\n }\n\n if (this.switch) {\n this.switch.element.removeEventListener('switch:toggle', this.handleSwitchUpdate);\n this.switch.element.removeEventListener('switch:mounted', this.handleSwitchUpdate);\n this.switch.element.removeEventListener('switch:unmounted', this.handleSwitchUpdate);\n window.removeEventListener('resize', this.handleDebouncedResize);\n this.switch.unmount();\n }\n }\n}\n","export function debounce(callback, delay) {\n let timer;\n return (...args) => {\n const context = this;\n clearTimeout(timer);\n timer = setTimeout(() => {\n callback.apply(context, args);\n }, delay);\n };\n}\n","import 'mdn-polyfills/NodeList.prototype.forEach';\nimport Locator from './Locator';\n\ndocument.addEventListener('DOMContentLoaded', () => {\n const locators = document.querySelectorAll('[data-locator]');\n if (!locators.length) {\n return;\n }\n locators.forEach((element) => {\n const locator = new Locator(element);\n locator.mount();\n });\n});\n"],"names":["window","NodeList","prototype","forEach","o","t","i","this","length","call","parentNode","removeChild","Element","CharacterData","DocumentType","e","hasOwnProperty","Object","defineProperty","configurable","enumerable","writable","value","Switch","element","defaultTarget","document","getElementById","querySelectorAll","dataset","switchTarget","activeTarget","checked","mounted","handleClick","bind","toggle","setAttribute","dispatchEvent","CustomEvent","detail","switch","deactivate","activate","addEventListener","removeAttribute","removeEventListener","Locator","lat","querySelector","lng","form","input","items","geolocator","mapElement","switchElement","popupTemplate","tmp","leaflet","map","autocomplete","geocoder","pac","leafletIsLoading","leafletIsLoaded","gMapsIsLoading","gMapsIsLoaded","markers","featureGroup","handleAutocompleteChanged","handleInputKeydown","handleDebouncedResize","callback","delay","timer","args","context","_this","clearTimeout","setTimeout","apply","debounce","handleGeolocalisationClick","handleSubmit","handleSwitchUpdate","item","theme","icon","divIcon","className","html","iconAnchor","popupAnchor","marker","push","template","innerHTML","replace","title","address","openings","tel","phone","button","link","popup","setContent","bindPopup","handlePopupOpen","handlePopupClose","place","getPlace","geometry","location","offsetWidth","isDisplayed","getComputedStyle","getPropertyValue","unmount","mount","navigator","geolocation","getCurrentPosition","position","coords","latitude","longitude","error","remove","key","preventDefault","geocode","language","region","results","status","google","maps","GeocoderStatus","OK","firstResult","_this2","formatted_address","submit","alert","locatorError","center","zoom","tileLayer","attribution","maxZoom","addTo","_this3","addMarker","clusterGroup","markerClusterGroup","showCoverageOnHover","addLayer","fitBounds","getBounds","padding","target","classList","add","invalidateSize","places","Autocomplete","types","componentRestrictions","country","Geocoder","addListener","script","createElement","type","src","googleMapsKey","_this4","initAutocomplete","once","body","appendChild","leafIsLoading","leafIsLoaded","L","rel","href","_this5","loadClusterer","clustererIsLoading","clustererIsLoaded","_this6","handleMap","permissions","query","name","then","result","state","_this7","loadLeaflet","loadGMaps","locators"],"mappings":"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"}