{"version":3,"file":"office-directory-maps.min.js","names":["googleMapsApiSrc","apiParam","apiKey","map","bounds","window","addEventListener","document","getElementById","src","URLSearchParams","split","get","boundsJson","lngString","latString","coordEntry","polygonCoords","polylineCoords","activeMarkersCount","gmarkers","zoomLevel","boundary","boundaryFill","boundaryStroke","mobileBreakpoint","currentCountyCache","undefined","localStorage","getItem","errorText","async","getBounds","response","fetch","data","json","countyFilterDropdown","mapInit","Map","google","maps","importLibrary","AdvancedMarkerElement","disableDefaultUI","center","lat","lng","mapId","filterMenu","querySelector","querySelectorAll","forEach","item","countyNameOrig","innerText","countyName","replace","trim","setMap","matchMedia","matches","LatLngBounds","activeSectionAddresses","activeAddressCount","length","element","count","countySelectedName","locationLat","dataset","locationLng","placeMarker","address","results","amount","console","log","generateMarkers","toLowerCase","includes","history","replaceState","replaceAll","originalURL","location","origin","pathname","pushState","countyString","paramName","getFromStr","href","dropdownItem","str","camelize","click","getLocationButton","countyNameGeo","classList","add","navigator","geolocation","getCurrentPosition","position","pos","coords","latitude","longitude","x","y","county","inside","i","j","Coords","xi","yi","xj","yj","County","getBoundsCounty","selectCurrentCountyFilterItem","alert","seeAllLink","indexFilter","allDropdownItem","match","index","toUpperCase","args","settings","id","coordLat","Number","coordLng","markerDiv","createElement","className","textContent","toString","marker","content","push","extend","setCenter","getCenter","fitBounds","setZoom","countyResults","boundsObject","entry","generateCountyBoundsObject","Polygon","path","fillColor","fillOpacity","strokeOpacity","scale","Polyline","icons","icon","offset","repeat","poly","getPaths","p","PolygonGetBounds","setItem","countyDataId","remove","scrollIntoView","block","hrefLink","closest","getAttribute","setAttribute","event","preventDefault","open","focus","countySection","hash"],"sources":["office-directory-maps.js"],"mappings":"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","sourcesContent":["let googleMapsApiSrc;\r\nlet apiParam ;\r\nlet apiKey;\r\n\r\nwindow.addEventListener('DOMContentLoaded', () => {\r\n googleMapsApiSrc = document.getElementById('googleMapApi').src;\r\n apiParam = new URLSearchParams(googleMapsApiSrc.split('?')[1]);\r\n apiKey = apiParam.get('key');\r\n});\r\n\r\nlet map;\r\nlet bounds;\r\nlet gmarkers = [];\r\nlet zoomLevel = 12;\r\nlet boundsJson;\r\nlet lngString;\r\nlet latString;\r\nlet coordEntry;\r\nlet polygonCoords;\r\nlet polylineCoords;\r\nlet boundary = null;\r\nlet activeMarkersCount;\r\nlet boundaryFill = null;\r\nlet boundaryStroke = null;\r\nlet mobileBreakpoint = '992px';\r\nlet currentCountyCache = (localStorage.getItem('geoCounty') !== undefined) ? localStorage.getItem('geoCounty') : null;\r\nconst errorText = `Cannot get current location.`;\r\n\r\nasync function getBounds() {\r\n const response = await fetch('/scripts/counties.json');\r\n const data = await response.json();\r\n boundsJson = data;\r\n await countyFilterDropdown();\r\n}\r\n\r\nasync function mapInit() {\r\n const { Map } = await google.maps.importLibrary('maps');\r\n const { AdvancedMarkerElement } = await google.maps.importLibrary(\"marker\");\r\n\r\n getBounds();\r\n \r\n map = new Map(document.getElementById('mapCanvas'), {\r\n disableDefaultUI: true,\r\n center: {\r\n lat: 43.7176477,\r\n lng: -98.4878554\r\n },\r\n mapId: 'mapCanvas'\r\n });\r\n \r\n const filterMenu = document.querySelector('.index-filter');\r\n const filterLinks = filterMenu.querySelectorAll('.dropdown-item');\r\n\r\n filterLinks.forEach(item => {\r\n const countyNameOrig = item.innerText;\r\n const countyName = countyNameOrig.replace(' County', '').trim();\r\n\r\n item.addEventListener('filter-selected', item => {\r\n\r\n removeMarkers();\r\n \r\n if (mobileBreakpoint !== null && window.matchMedia(`(min-width: ${mobileBreakpoint})`).matches) {\r\n bounds = new google.maps.LatLngBounds();\r\n activeMarkersCount = 0;\r\n \r\n const activeSectionAddresses = document.querySelectorAll('.js-category-showing [data-street-address]');\r\n const activeAddressCount = activeSectionAddresses.length;\r\n \r\n activeSectionAddresses.forEach((item) => {\r\n generateMarkers(item, activeAddressCount, countyName);\r\n });\r\n }\r\n\r\n if (countyNameOrig.toLowerCase().includes('county')) {\r\n window.history.replaceState(null, null, `?county=${countyName.toLowerCase().replaceAll(' ', '+')}`);\r\n } else {\r\n const originalURL = location.origin + location.pathname;\r\n history.pushState({}, '', originalURL);\r\n }\r\n });\r\n });\r\n\r\n window.addEventListener('popstate', () => {\r\n const countyString = getParam('county', window.location.href);\r\n const dropdownItem = filterMenu.querySelector(`[data-category-filter=\"${formatParamString(countyString)}County\"]`);\r\n\r\n if (dropdownItem) {\r\n dropdownItem.click();\r\n }\r\n });\r\n\r\n const getLocationButton = document.querySelector('.location-btn');\r\n let countyNameGeo = null;\r\n\r\n getLocationButton.addEventListener('click', () => {\r\n getLocationButton.classList.add('js-getting-location');\r\n\r\n if (currentCountyCache !== null) {\r\n selectCurrentCountyFilterItem(currentCountyCache);\r\n return;\r\n }\r\n \r\n if (navigator.geolocation) {\r\n \r\n // Try HTML5 geolocation.\r\n navigator.geolocation.getCurrentPosition((position) => {\r\n const pos = {\r\n lat: position.coords.latitude,\r\n lng: position.coords.longitude,\r\n };\r\n\r\n countyNameGeo = getBoundsCounty(pos);\r\n selectCurrentCountyFilterItem(countyNameGeo);\r\n });\r\n } else {\r\n alert(\"Browser doesn't support Geolocation\");\r\n }\r\n });\r\n\r\n function getBoundsCounty(pos) {\r\n const x = pos.lat;\r\n const y = pos.lng;\r\n let county = '';\r\n\r\n boundsJson.forEach(item => {\r\n let inside = false;\r\n \r\n for (let i = 0, j = item.Coords.length - 1; i < item.Coords.length; j = i++) {\r\n const xi = item.Coords[i][1];\r\n const yi = item.Coords[i][0];\r\n const xj = item.Coords[j][1];\r\n const yj = item.Coords[j][0];\r\n const intersect = ((yi > y) != (yj > y)) && (x < (xj - xi) * (y - yi) / (yj - yi) + xi);\r\n\r\n if (intersect) {\r\n inside = !inside;\r\n }\r\n }\r\n \r\n if (inside) {\r\n county = item.County;\r\n }\r\n });\r\n\r\n return county;\r\n }\r\n\r\n function generateMarkers(element, count, countyName) {\r\n const countySelectedName = countyName;\r\n const locationLat = element.dataset.lat;\r\n const locationLng = element.dataset.lng;\r\n\r\n if (locationLat !== '') {\r\n placeMarker({\r\n lat: locationLat,\r\n lng: locationLng,\r\n countyName: countySelectedName,\r\n address: null,\r\n results: null,\r\n amount: count\r\n });\r\n } else {\r\n \r\n //WIP: if location not found, what do we do?\r\n placeMarker({\r\n lat: null,\r\n lng: null,\r\n address: null,\r\n results: null,\r\n countyName: countySelectedName,\r\n amount: count\r\n });\r\n console.log(errorText);\r\n }\r\n }\r\n\r\n // Reset link \"See All...\"\r\n const seeAllLink = document.querySelector('.see-all-link');\r\n const indexFilter = document.querySelector('.index-filter');\r\n const allDropdownItem = document.querySelector('.index-filter .dropdown-item[data-category-filter=\"all\"]');\r\n\r\n seeAllLink.addEventListener('click', item => {\r\n allDropdownItem.click();\r\n indexFilter.scrollIntoView({ block: 'center' });\r\n });\r\n\r\n function removeMarkers() {\r\n gmarkers.forEach(item => {\r\n item.setMap(null);\r\n })\r\n }\r\n\r\n function generateCountyBoundsObject(countyName) {\r\n let countyResults;\r\n \r\n // Grab the county info from it's name\r\n boundsJson.forEach(item => {\r\n if (item['County'].toLowerCase() === countyName.toLowerCase()) {\r\n countyResults = item;\r\n }\r\n });\r\n \r\n // Build an array from the json\r\n let boundsObject = [];\r\n countyResults.Coords.forEach(entry => {\r\n\r\n // Lat/lng in the json are in different order than what gmaps wants.\r\n // Build and push a proper object entry to the bounds object.\r\n coordEntry = {\r\n lat: entry[1],\r\n lng: entry[0]\r\n }\r\n\r\n boundsObject.push(coordEntry);\r\n });\r\n\r\n return boundsObject;\r\n }\r\n\r\n function camelize(str) {\r\n return str.replace(/(?:^\\w|[A-Z]|\\b\\w|\\s+)/g, function(match, index) {\r\n if (+match === 0) return '';\r\n return index === 0 ? match.toLowerCase() : match.toUpperCase();\r\n });\r\n }\r\n\r\n function formatParamString(str) {\r\n const stringClean = str.replaceAll('+', ' '); \r\n return camelize(stringClean);\r\n }\r\n\r\n function getParam(paramName, getFromStr) {\r\n const paramString = getFromStr;\r\n const paramStringSplit = new URLSearchParams(paramString.split('?')[1]);\r\n return paramStringSplit.get(paramName);\r\n }\r\n\r\n function addCountyBounds() {\r\n boundaryFill.setMap(map);\r\n boundary.setMap(map);\r\n }\r\n \r\n function removeCountyBounds() {\r\n boundaryFill.setMap(null);\r\n boundary.setMap(null);\r\n }\r\n\r\n function placeMarker(args) {\r\n var settings = {\r\n id: args.id,\r\n countyName: args.countyName,\r\n address: args.address,\r\n lat: args.lat,\r\n lng: args.lng,\r\n amount: args.amount,\r\n results: args.results\r\n }\r\n \r\n const coordLat = (settings.lat !== null) ? Number(settings.lat) : null;\r\n const coordLng = (settings.lng !== null) ? Number(settings.lng) : null;\r\n\r\n if (coordLat !== null && coordLng !== null) {\r\n const markerDiv = document.createElement('div');\r\n markerDiv.className = 'marker-pointer';\r\n markerDiv.textContent = (activeMarkersCount + 1).toString();\r\n\r\n const marker = new AdvancedMarkerElement({\r\n position: {\r\n lat: coordLat,\r\n lng: coordLng\r\n },\r\n map: map,\r\n content: markerDiv,\r\n });\r\n \r\n gmarkers.push(marker);\r\n \r\n bounds.extend(marker.position);\r\n }\r\n \r\n activeMarkersCount++;\r\n\r\n if (activeMarkersCount === settings.amount) {\r\n if (coordLat !== null && coordLng !== null) {\r\n map.setCenter(bounds.getCenter());\r\n map.fitBounds(bounds);\r\n map.setZoom(zoomLevel);\r\n }\r\n\r\n if (boundaryFill !== null) {\r\n removeCountyBounds(); \r\n }\r\n\r\n // Create county bounds\r\n polygonCoords = generateCountyBoundsObject(settings.countyName);\r\n polylineCoords = polygonCoords;\r\n polylineCoords.push(polylineCoords[0]);\r\n\r\n // County fill\r\n boundaryFill = new google.maps.Polygon({\r\n path: polygonCoords,\r\n fillColor: '#FFFFFF',\r\n fillOpacity: .2,\r\n strokeOpacity: 0\r\n });\r\n\r\n boundaryFill.setMap(map);\r\n\r\n // County dotted stroke\r\n boundaryStroke = {\r\n path: 'M0,0h2v2H0',\r\n strokeOpacity: 0,\r\n scale: 1,\r\n fillColor: '#000000',\r\n fillOpacity: .455\r\n };\r\n\r\n boundary = new google.maps.Polyline({\r\n path: polylineCoords,\r\n strokeOpacity: 0,\r\n icons: [\r\n {\r\n icon: boundaryStroke,\r\n offset: '0',\r\n repeat: '4px',\r\n },\r\n ],\r\n });\r\n \r\n // Add the polygon to the map\r\n addCountyBounds();\r\n\r\n // Zoom out to display entire county\r\n map.fitBounds(PolygonGetBounds(boundaryFill));\r\n }\r\n }\r\n\r\n function selectCurrentCountyFilterItem(countyName) {\r\n countyNameGeo = countyName;\r\n \r\n if (currentCountyCache !== null) {\r\n countyNameGeo = localStorage.getItem('geoCounty');\r\n } else {\r\n currentCountyCache = localStorage.setItem('geoCounty', countyNameGeo);\r\n }\r\n\r\n let countyDataId = camelize(countyNameGeo.trim().replace(/[^a-z0-9]/gi, ' '));\r\n let dropdownItem = filterMenu.querySelector('[data-category-filter=\"' + countyDataId + 'County\"]');\r\n \r\n if (dropdownItem) {\r\n dropdownItem.click();\r\n getLocationButton.classList.remove('js-getting-location');\r\n } else {\r\n console.log(errorText);\r\n getLocationButton.classList.remove('js-getting-location');\r\n }\r\n }\r\n\r\n function PolygonGetBounds(poly) {\r\n let bounds = new google.maps.LatLngBounds();\r\n \r\n poly.getPaths().forEach(p => {\r\n p.forEach(element => bounds.extend(element));\r\n });\r\n \r\n return bounds;\r\n }\r\n\r\n const getDirectionsLink = document.querySelectorAll('.directions-link');\r\n getDirectionsLink.forEach(item => {\r\n const hrefLink = `https://google.com/maps/place/${item.closest('[data-street-address]').getAttribute('data-street-address').replaceAll(' ', '+')}`;\r\n item.setAttribute('href', hrefLink);\r\n\r\n item.addEventListener('click', (event) => {\r\n event.preventDefault();\r\n window.open(item.href, '_blank').focus();\r\n });\r\n });\r\n\r\n const countySection = document.querySelector(`[data-category-item=\"${window.location.hash.replace('#', '')}\"]`);\r\n if (countySection) {\r\n countySection.scrollIntoView({ block: 'center' });\r\n }\r\n}"]}