{"version":3,"file":"stockistLocator.bundle.js","mappings":"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","sources":["webpack://enjoy-digital-frontend-foundation/./assets/src/js/pages/stockistLocator.js","webpack://enjoy-digital-frontend-foundation/./assets/src/js/modules/faq.js"],"sourcesContent":["import FAQ from '../modules/faq'\r\n\r\nconst form = document.querySelector('.stockist-locator-form');\r\n\r\nif (form) {\r\n const myLocation = form.querySelector('.my-location');\r\n const latInput = form.querySelector('input[name=\"Latitude\"]');\r\n const longInput = form.querySelector('input[name=\"Longitude\"]');\r\n const postCodeInput = form.querySelector('input[type=\"text\"]');\r\n const mapContainer = document.querySelector('.map-container');\r\n const mapElememt = mapContainer.querySelector('#map');\r\n let mapLocationText = \"\";\r\n let geocoder = null;\r\n let infowindow = null;\r\n let map = null;\r\n\r\n myLocation.addEventListener(\"click\", function (e) {\r\n e.preventDefault();\r\n getLocation();\r\n mapLocationText = this.getAttribute('data-location');\r\n });\r\n\r\n form.querySelector('button[type=\"submit\"]').addEventListener(\"click\", function (e) {\r\n e.stopPropagation();\r\n e.preventDefault();\r\n\r\n let input = postCodeInput.value;\r\n\r\n storeLocator(input);\r\n });\r\n\r\n function getLocation() {\r\n\r\n if (navigator.geolocation) {\r\n navigator.geolocation.getCurrentPosition(success, error);\r\n }\r\n\r\n function success(pos) {\r\n const crd = pos.coords;\r\n form.classList.remove('location-error');\r\n setLocationData(crd.latitude, crd.longitude);\r\n }\r\n\r\n function error(err) {\r\n form.classList.add('location-error');\r\n console.warn(`ERROR(${err.code}): ${err.message}`);\r\n }\r\n }\r\n\r\n function initMap(currentLat, currentLong, locationsList) {\r\n\r\n if (currentLat == undefined && currentLong == undefined) {\r\n currentLat = 51.476529;\r\n currentLong = -0.182871;\r\n }\r\n\r\n geocoder = new google.maps.Geocoder();\r\n infowindow = new window.google.maps.InfoWindow();\r\n map = new google.maps.Map(mapElememt, {\r\n center: {\r\n lat: currentLat,\r\n lng: currentLong\r\n },\r\n zoom: 11,\r\n mapTypeId: google.maps.MapTypeId.ROADMAP\r\n });\r\n\r\n if (locationsList != undefined && locationsList.length > 0) {\r\n\r\n var bounds = new google.maps.LatLngBounds();\r\n\r\n for (let index = 0; index < locationsList.length; index++) {\r\n const location = locationsList[index];\r\n const lat = parseFloat(location.getAttribute('data-lat'));\r\n const long = parseFloat(location.getAttribute('data-lon'));\r\n const icon = location.getAttribute('data-map-pin');\r\n let iconSettings;\r\n\r\n if (icon != \"\") {\r\n iconSettings = {\r\n url: icon,\r\n scaledSize: new google.maps.Size(26, 48), // default marker size\r\n origin: new google.maps.Point(0, 0), // origin\r\n anchor: new google.maps.Point(13, 48) // anchor\r\n };\r\n }\r\n\r\n\r\n var myLatLng = new google.maps.LatLng(lat, long);\r\n\r\n let marker = new google.maps.Marker({\r\n icon: iconSettings,\r\n position: myLatLng,\r\n animation: google.maps.Animation.DROP,\r\n label: {\r\n text: location.getAttribute('id'),\r\n color: 'rgba(0, 0, 0, 0)',\r\n },\r\n map: map\r\n });\r\n\r\n bounds.extend(myLatLng);\r\n attachClickHandler(marker)\r\n map.fitBounds(bounds);\r\n }\r\n\r\n mapContainer.querySelector('.map-count').innerHTML = locationsList.length;\r\n\r\n if (postCodeInput.value != \"\") {\r\n mapLocationText = postCodeInput.value;\r\n }\r\n\r\n mapContainer.querySelector('.map-location').innerHTML = mapLocationText;\r\n mapContainer.classList.remove('hidden');\r\n\r\n window.scroll({\r\n top: mapContainer.getBoundingClientRect().top + document.documentElement.scrollTop - 100,\r\n behavior: \"smooth\"\r\n });\r\n }\r\n }\r\n\r\n initMap();\r\n\r\n\r\n function attachClickHandler(marker) {\r\n google.maps.event.addListener(marker, 'click', function () {\r\n\r\n\r\n var text = '#' + marker.label.text;\r\n var elem = document.querySelector(text);\r\n\r\n window.scroll({\r\n top: elem.getBoundingClientRect().top + document.documentElement.scrollTop - 100,\r\n behavior: \"smooth\"\r\n });\r\n\r\n if (!elem.classList.contains('active')) {\r\n elem.click();\r\n }\r\n });\r\n }\r\n\r\n function storeLocator(address) {\r\n let locale = document.querySelector('html').getAttribute(\"lang\");\r\n\r\n var str = locale.substring(3, 5);\r\n\r\n geocoder.geocode({\r\n 'address': address + ', ' + str,\r\n 'region': str\r\n }, function (results, status) {\r\n if (status === google.maps.GeocoderStatus.OK) {\r\n form.classList.remove('location-error');\r\n setLocationData(results[0].geometry.location.lat(), results[0].geometry.location.lng());\r\n } else {\r\n form.classList.add('location-error');\r\n }\r\n });\r\n }\r\n\r\n function setLocationData(lat, long) {\r\n latInput.value = lat;\r\n longInput.value = long;\r\n\r\n\r\n var formData = new FormData(form);\r\n let resultsContainer = document.querySelector('.result-container');\r\n\r\n fetch('/umbraco/surface/StockistSearch/GetShowrooms', {\r\n method: 'POST',\r\n headers: {\r\n 'X-Requested-With': 'XMLHttpRequest'\r\n },\r\n body: formData\r\n })\r\n .then(response => response.text())\r\n .then(html => {\r\n resultsContainer.innerHTML = html\r\n FAQ();\r\n\r\n //clear filters - if there are any\r\n const stockistFilterContainer = document.querySelector(\".stockist-filters\");\r\n if (stockistFilterContainer) {\r\n let stockistFilters = document.querySelectorAll(\".stockist-filter\");\r\n\r\n stockistFilters.forEach(element => {\r\n element.checked = false;\r\n });\r\n }\r\n\r\n let locationList = resultsContainer.querySelectorAll('.accordion');\r\n initMap(lat, long, locationList);\r\n })\r\n .catch(error => console.log(error.message))\r\n .finally();\r\n }\r\n\r\n function filterResults() {\r\n const stockistFilterContainer = document.querySelector(\".stockist-filters\");\r\n\r\n if (stockistFilterContainer) {\r\n let stockistFilters = document.querySelectorAll(\".stockist-filter\");\r\n\r\n stockistFilters.forEach(element => {\r\n element.addEventListener(\"click\", function (e) {\r\n\r\n let stockists = document.querySelectorAll('.stockists .accordion');\r\n let values = element.value.split(',');\r\n let elementList = [];\r\n\r\n stockists.forEach(stockist => {\r\n if (values.includes(stockist.getAttribute('data-map-id'))) {\r\n elementList.push(stockist);\r\n }\r\n else {\r\n stockist.classList.remove('active');\r\n var panel = stockist.nextElementSibling;\r\n panel.classList.remove(\"active\");\r\n \r\n }\r\n });\r\n\r\n initMap(parseFloat(latInput.value), parseFloat(longInput.value), elementList);\r\n });\r\n });\r\n }\r\n }\r\n\r\n filterResults();\r\n}","\r\n\r\nexport default function FAQ() {\r\n accordion() \r\n}\r\n\r\n//\r\n// Define your functions here\r\n//\r\nfunction accordion() {\r\n\r\n var acc = document.getElementsByClassName(\"accordion\");\r\n var i;\r\n\r\n for (i = 0; i < acc.length; i++) {\r\n acc[i].addEventListener(\"click\", function() {\r\n\r\n this.classList.toggle(\"active\");\r\n\r\n var panel = this.nextElementSibling;\r\n\r\n panel.classList.toggle(\"active\");\r\n \r\n });\r\n }\r\n\r\n\r\n}"],"names":["form","document","querySelector","myLocation","latInput","longInput","postCodeInput","mapContainer","mapElememt","mapLocationText","geocoder","infowindow","map","initMap","currentLat","currentLong","locationsList","undefined","google","maps","Geocoder","window","InfoWindow","Map","center","lat","lng","zoom","mapTypeId","MapTypeId","ROADMAP","length","bounds","LatLngBounds","index","location","parseFloat","getAttribute","long","icon","iconSettings","url","scaledSize","Size","origin","Point","anchor","myLatLng","LatLng","marker","Marker","position","animation","Animation","DROP","label","text","color","extend","attachClickHandler","fitBounds","innerHTML","value","classList","remove","scroll","top","getBoundingClientRect","documentElement","scrollTop","behavior","event","addListener","elem","contains","click","setLocationData","formData","FormData","resultsContainer","fetch","method","headers","body","then","response","html","i","acc","getElementsByClassName","addEventListener","this","toggle","nextElementSibling","accordion","querySelectorAll","forEach","element","checked","locationList","catch","error","console","log","message","finally","filterResults","e","stockists","values","split","elementList","stockist","includes","push","preventDefault","navigator","geolocation","getCurrentPosition","pos","crd","coords","latitude","longitude","err","add","warn","code","address","str","stopPropagation","substring","geocode","results","status","GeocoderStatus","OK","geometry"],"sourceRoot":""}