{"version":3,"file":"../location-finder-autocomplete.js","names":["asyncGeneratorStep","gen","resolve","reject","_next","_throw","key","arg","info","value","error","done","Promise","then","_async_to_generator","fn","self","this","args","arguments","apply","err","undefined","_ts_generator","thisArg","body","f","y","t","g","_","label","sent","trys","ops","next","verb","throw","return","Symbol","iterator","n","v","op","TypeError","call","pop","length","push","e","step","searchStr","autocomplete","autocompletefooter","autocompletefaq","autocompletebanner","autocompletedesigner","autocompletebookconsult","autocompleteshowroom","autocompletemobilee","postal_code_from_coordinates","retval","componentForm","locality","administrative_area_level_1","administrative_area_level_2","postal_code","postal_code_prefix","country","initAutocomplete","fix_header_pac_container_element","pacContainer","document","querySelector","header","parentNode","appendChild","style","createElement","innerHTML","options","types","componentRestrictions","fields","google","maps","places","Autocomplete","getElementById","addListener","fillInAddress","fillInAddressFooter","fillInAddressFinder","initMap","addEventListener","get_coordinates_from_search_string","search","_get_coordinates_from_search_string","response","_state","Geocoder","geocode","address","results","geometry","location","get_postal_code_from_coordinates","_get_postal_code_from_coordinates","i","reverse_place","address_components","long_name","createSearch","place","_createSearch","o","a","_fillInAddress","getPlace","jQuery","find","val","click","_fillInAddressFooter","idval","_fillInAddressFinder","map","bounds","LatLngBounds","Map","mapTypeId","setTilt","infoWindow","InfoWindow","markers","position","LatLng","extend","marker","Marker","title","event","setContent","infoWindowContent","open","fitBounds","latlng","myOptions","zoom","center","setMap","boundsListener","removeListener"],"sources":["location-finder-autocomplete.js"],"mappings":"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","sourcesContent":[" var componentForm = {\n locality: \"long_name\",\n administrative_area_level_1: \"long_name\",\n administrative_area_level_2: \"long_name\",\n postal_code: \"short_name\",\n postal_code_prefix: \"short_name\",\n country: \"short_name\"\n };\n var searchStr;\n var autocomplete;\n var autocompletefooter;\n var autocompletefaq;\n var autocompletebanner;\n var autocompletedesigner;\n var autocompletebookconsult;\n var autocompleteshowroom;\n var autocompletemobilee;\n var postal_code_from_coordinates;\n var retval;\n\n\n function initAutocomplete() {\n // Create the autocomplete object, restricting the search to geographical\n // location types.\n var options = {\n types: ['geocode'], // @see https://developers.google.com/maps/documentation/javascript/supported_types#table3\n componentRestrictions: {country: \"ca\"},\n fields: [\"address_components\", \"geometry\"],\n };\n\n autocomplete = new google.maps.places.Autocomplete(\n /** @type {!HTMLInputElement} */(document.getElementById('autocomplete')),\n options);\n autocomplete.addListener('place_changed', fillInAddress);\n \n if( document.getElementById('autocompletefooter') ) {\n autocompletefooter = new google.maps.places.Autocomplete(\n /** @type {!HTMLInputElement} */(document.getElementById('autocompletefooter')),\n options);\n autocompletefooter.addListener('place_changed', fillInAddressFooter);\n \n }\n // For FAQ Page\n if( document.getElementById('autocompletefaq') ) {\n autocompletefaq = new google.maps.places.Autocomplete(\n /** @type {!HTMLInputElement} */(document.getElementById('autocompletefaq')),\n options);\n autocompletefaq.addListener('place_changed', function() { fillInAddressFinder('faq'); } );\n \n }\n // For Banner Image\n if( document.getElementById('autocompletebanner') ) {\n autocompletebanner = new google.maps.places.Autocomplete(\n /** @type {!HTMLInputElement} */(document.getElementById('autocompletebanner')),\n options);\n autocompletebanner.addListener('place_changed', function() { fillInAddressFinder('banner'); } );\n \n }\n // For Designer Page \n if( document.getElementById('autocompletedesigner') ) {\n autocompletedesigner = new google.maps.places.Autocomplete(\n /** @type {!HTMLInputElement} */(document.getElementById('autocompletedesigner')),\n options);\n autocompletedesigner.addListener('place_changed', function() { fillInAddressFinder('designer'); } );\n \n }\n \n // For Book Consult Widget\n if( document.getElementById('autocompletebookconsult') ) {\n autocompletebookconsult = new google.maps.places.Autocomplete(\n /** @type {!HTMLInputElement} */(document.getElementById('autocompletebookconsult')),\n options);\n autocompletebookconsult.addListener('place_changed', function() { fillInAddressFinder('bookconsult'); } );\n \n }\n // For Showroom Banner\n if( document.getElementById('autocompleteshowroom') ) {\n autocompleteshowroom = new google.maps.places.Autocomplete(\n /** @type {!HTMLInputElement} */(document.getElementById('autocompleteshowroom')),\n options);\n autocompleteshowroom.addListener('place_changed', function() { fillInAddressFinder('showroom'); } );\n \n }\n\n // For Mobile Location Finder\n if( document.getElementById('autocompletemobilee') ) {\n autocompletemobilee = new google.maps.places.Autocomplete(\n /** @type {!HTMLInputElement} */(document.getElementById('autocompletemobilee')),\n options);\n autocompletemobilee.addListener('place_changed', function() { fillInAddressFinder('mobilee'); } );\n \n }\n\n // Initialize map for localized pages\n if(document.getElementById(\"mapCanvas\")) {\n initMap(); \n }\n\n /**\n * Autocomplete in header scrolls away. Fix by appending autocomplete container to header and fixing top\n */\n function fix_header_pac_container_element() {\n //get the first place autocomplete container, \".pac-container\", which is the one that's in the header\n const pacContainer = document.querySelector('.pac-container');\n\n //if autocomplete is a header child, make sure pacContainer is also a header child, so it's position:fixed too\n const header = document.querySelector('header');\n if (header.querySelector('#autocomplete') && pacContainer && pacContainer.parentNode !== header) {\n header.appendChild(pacContainer);\n //top could be calculated from #autocomplete .offsetHeight + .offsetTop + .offsetParent.offsetTop ...\n let style = document.createElement('style');\n style.innerHTML = 'header .pac-container { top: 40px !important;}';\n header.appendChild(style);\n\n }\n }\n\n //fix header's place autocomplete container on focus and on typing\n document.getElementById('autocomplete').addEventListener('focus', fix_header_pac_container_element);\n document.getElementById('autocomplete').addEventListener('input', fix_header_pac_container_element);\n }\n\n async function get_coordinates_from_search_string(search) {\n let geocoder = new google.maps.Geocoder();\n let response = await geocoder.geocode({\n componentRestrictions: { country: 'CA'},\n address: search\n });\n if (response.results[0]) {\n return response.results[0].geometry.location;\n }\n return null;\n }\n\n /**\n * Get (partial) postal code from coordinates. Partial postal code (3 chars) is enough for PHP finder class.\n */\n async function get_postal_code_from_coordinates(location) {\n // let latlng = {\n // lat: place.geometry.location.lat(),\n // lng: place.geometry.location.lng()\n // };\n\n let geocoder = new google.maps.Geocoder();\n\n\n\n const response = await geocoder.geocode({location: location});\n\n\n //cycle response.results. they go from most-to-least specific. usually the postal_code is in the first result\n for (let i = 0; i < response.results.length; i++) {\n var reverse_place = response.results[i];\n if (reverse_place.address_components) {\n //find postal_code / postal_code_prefix\n for (var t = 0; t < reverse_place.address_components.length; t++) {\n //partial postal codes also have postal_code type. it's OK in this case\n if (reverse_place.address_components[t].types[0] === 'postal_code') {\n let postal_code = reverse_place.address_components[t].long_name;\n return postal_code;\n }\n }\n }\n }\n\n // reverse_place = geocoder.geocode({ location: place.geometry.location })\n\n }\n async function createSearch(place) {\n\n var o = {};\n\n if (place.address_components) {\n //extract all components, along with their main type (locality, administrative_area_level_1, etc. when there are more than 1 type, usually the second is 'political')\n for (var t = 0; t < place.address_components.length; t++) {\n var a = place.address_components[t].types[0];\n componentForm[a] && (o[a] = place.address_components[t][componentForm[a]])\n }\n\n //if no postal code or postal code prefix is available, try to get a postal code from the coordinates.\n if (!o.postal_code && ! o.postal_code_prefix) {\n postal_code_from_coordinates = await get_postal_code_from_coordinates(place.geometry.location);\n if (postal_code_from_coordinates) {\n\n if (postal_code_from_coordinates.length === 3) {\n o.postal_code_prefix = postal_code_from_coordinates\n } else {\n o.postal_code = postal_code_from_coordinates\n }\n }\n } else {\n }\n\n retval = o.postal_code ? o.postal_code : o.postal_code_prefix ? o.postal_code_prefix : o.locality ? o.locality + \", \" + o.administrative_area_level_1 : o.administrative_area_level_2 ? o.administrative_area_level_2 + \", \" + o.administrative_area_level_1 : o.administrative_area_level_1 + \", \" + o.country\n\n\n return retval;\n\n }\n return ;\n\n //return place;\n }\n async function fillInAddress() {\n // Get the place details from the autocomplete object.\n var place = autocomplete.getPlace();\n\n // debugger;\n\n searchStr = await createSearch(place);\n \n jQuery('.lf-form').find(\"#finalResult\").val(searchStr);\n jQuery('.lf-form').find(\".lf-finder\").click();\n\n }\n async function fillInAddressFooter() {\n // Get the place details from the autocomplete object.\n var place = autocompletefooter.getPlace();\n\n searchStr = await createSearch(place);\n \n //console.log(searchStr);\n jQuery('.lf-form-footer').find(\"#finalResultFooter\").val(searchStr);\n jQuery('.lf-form-footer').find(\".lf-finder-footer\").click();\n\n }\n /********************************************************\n * Fill selected location and call finder function\n ********************************************************/\n async function fillInAddressFinder(idval) {\n // Get the place details from the autocomplete object.\n \n if(idval == 'banner') {\n var place = autocompletebanner.getPlace();\n } else if(idval == 'faq') {\n var place = autocompletefaq.getPlace();\n } else if(idval == 'designer') {\n var place = autocompletedesigner.getPlace();\n } else if(idval == 'bookconsult') {\n var place = autocompletebookconsult.getPlace();\n } else if(idval == 'showroom') {\n var place = autocompleteshowroom.getPlace();\n } else if(idval == 'mobilee') {\n var place = autocompletemobilee.getPlace();\n }\n\n searchStr = await createSearch(place);\n //alert(idval);\n //console.log(searchStr);\n jQuery('.lf-form-'+idval).find(\"#finalResult-\"+idval).val(searchStr);\n jQuery('.lf-form-'+idval).find(\".lf-finder-\"+idval).click();\n\n }\n\n /*********************** MAP ***********************/\n function initMap() {\n\n var map;\n var bounds = new google.maps.LatLngBounds();\n var mapOptions = {\n mapTypeId: 'roadmap'\n };\n \n // Display a map on the web page\n map = new google.maps.Map(document.getElementById(\"mapCanvas\"), mapOptions);\n map.setTilt(45);\n\n\n // Add multiple markers to map\n var infoWindow = new google.maps.InfoWindow(), marker, i;\n\n // Loop through our array of markers & place each one on the map\n //alert(markers.length);\n \n //code for mutiple marker\n if(markers.length>1){ \n for( i = 0; i < markers.length; i++ ) {\n //alert(markers[i][1]+'--'+markers[i][2]);\n\n var position = new google.maps.LatLng(markers[i][1], markers[i][2]);\n bounds.extend(position);\n marker = new google.maps.Marker({\n position: position,\n map: map,\n title: markers[i][0]\n });\n \n // Allow each marker to have an info window \n google.maps.event.addListener(marker, 'click', (function(marker, i) {\n return function() {\n infoWindow.setContent(infoWindowContent[i][0]);\n infoWindow.open(map, marker);\n }\n })(marker, i));\n\n // Automatically center the map fitting all markers on the screen\n map.fitBounds(bounds);\n }\n }else{\n //code for single marker\n var latlng = new google.maps.LatLng(markers[0][1], markers[0][2]);\n var myOptions = {\n zoom: 8,\n center: latlng,\n mapTypeId: 'roadmap'\n };\n map = new google.maps.Map(document.getElementById(\"mapCanvas\"), myOptions);\n\n var marker = new google.maps.Marker({\n position: latlng,\n map: map,\n //animation: google.maps.Animation.DROP,\n title: \"\"\n });\n\n marker.setMap(map); \n }\n\n // Override our map zoom level once our fitBounds function runs (Make sure it only runs once)\n var boundsListener = google.maps.event.addListener((map), 'bounds_changed', function(event) {\n google.maps.event.removeListener(boundsListener);\n });\n }\n"]}