{"version":3,"file":"AddressFinder.min.js","names":["AddressFinder","targetInputId","showAddresses","showLocations","suggestionsListId","onSelect","APIEndPoint","window","location","origin","GET_ADDRESSES_API","query","suggestions","suggestionsList","document","createElement","id","style","position","zIndex","listStyle","padding","margin","border","backgroundColor","fontSize","display","maxWidth","width","body","appendChild","updateSuggestionsPosition","targetInput","getElementById","rect","getBoundingClientRect","top","bottom","scrollY","left","scrollX","addEventListener","event","contains","target","fetchSuggestions","input","maxResults","apiUrl","fetch","method","headers","\"Content-Type\"","RequestVerificationToken","$","val","then","response","json","data","_AntiForgeryToken","slice","map","result","description","placePrediction","text","replace","place_id","placeId","localities","Array","isArray","locality","filter","latitude","longitude","state","postcode","renderSuggestions","catch","error","console","innerHTML","length","forEach","suggestion","index","listItem","highlightText","onclick","handleSelect","dataset","item","borderBottom","cursor","onmouseenter","color","onmouseleave","getPlaceDetails","querySelector","value","addressComponents","subpremise","getAddressComponent","address","addressDetails","place","fullAddress","formattedAddress","components","type","isLongText","component","find","c","types","includes","longText","shortText","CustomEvent","detail","metaData","dispatchEvent","parts","split","RegExp","part","toLowerCase","join","handleInputChange","debounce","func","wait","timeout","args","context","clearTimeout","setTimeout","apply","e"],"sources":["AddressFinder.js"],"sourcesContent":["'use strict';\r\n\r\nconst AddressFinder = function ({ targetInputId, showAddresses = false, showLocations = true, suggestionsListId = 'suggestions-list', onSelect }) {\r\n const APIEndPoint = window.location.origin;\r\n const GET_LOCALITIES_API = APIEndPoint + \"/api/addressfinder/getlocalities\";\r\n const GET_ADDRESSES_API = APIEndPoint + \"/api/addressfinder/getaddresses\";\r\n let query = '';\r\n let suggestions = [];\r\n\r\n // Create suggestions list element\r\n const suggestionsList = document.createElement('ul');\r\n suggestionsList.id = suggestionsListId;\r\n suggestionsList.style.position = 'absolute';\r\n suggestionsList.style.zIndex = '9999';\r\n suggestionsList.style.listStyle = 'none';\r\n suggestionsList.style.padding = '0';\r\n suggestionsList.style.margin = '0';\r\n suggestionsList.style.border = '1px solid #999';\r\n suggestionsList.style.backgroundColor = '#fff';\r\n suggestionsList.style.fontSize = '13px';\r\n suggestionsList.style.display = 'none';\r\n suggestionsList.style.maxWidth = '300px'; \r\n suggestionsList.style.width = 'auto'; \r\n document.body.appendChild(suggestionsList); \r\n\r\n // Function to update the position of the suggestions list\r\n const updateSuggestionsPosition = function () {\r\n const targetInput = document.getElementById(targetInputId);\r\n if (targetInput) {\r\n const rect = targetInput.getBoundingClientRect();\r\n suggestionsList.style.top = `${rect.bottom + window.scrollY}px`;\r\n suggestionsList.style.left = `${rect.left + window.scrollX}px`;\r\n }\r\n };\r\n\r\n // Hide suggestions when clicking outside the suggestionsList or input\r\n document.addEventListener('click', function (event) {\r\n const targetInput = document.getElementById(targetInputId);\r\n if (suggestionsList.style.display === 'block' && !suggestionsList.contains(event.target) && event.target !== targetInput) {\r\n suggestionsList.style.display = 'none';\r\n }\r\n });\r\n\r\n // Limit the rate of function execution\r\n function debounce(func, wait) {\r\n let timeout;\r\n return function (...args) {\r\n const context = this;\r\n clearTimeout(timeout);\r\n timeout = setTimeout(() => func.apply(context, args), wait);\r\n };\r\n }\r\n\r\n // Fetch suggestions based on search input\r\n const fetchSuggestions = function (input) {\r\n const maxResults = 10;\r\n let apiUrl;\r\n\r\n if (showLocations) {\r\n apiUrl = GET_LOCALITIES_API + `?query=${input}`;\r\n } else if (showAddresses) {\r\n apiUrl = GET_ADDRESSES_API + `?query=${input}`;\r\n }\r\n\r\n fetch(apiUrl, {\r\n method: 'GET',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n \"RequestVerificationToken\": $(\"#checkloginApi [name='__RequestVerificationToken']\").val()\r\n },\r\n }).then(response => response.json()) \r\n .then(data => {\r\n _AntiForgeryToken(\"#checkloginApi\");\r\n if (showAddresses && data.suggestions) {\r\n suggestions = data.suggestions.slice(0, maxResults).map(result => ({\r\n description: result.placePrediction.text.text.replace(', Australia', ''),\r\n place_id: result.placePrediction.placeId,\r\n }));\r\n } else if (showLocations && data.localities) {\r\n if (Array.isArray(data.localities.locality)) {\r\n suggestions = data.localities.locality\r\n .filter(result => result.latitude && result.longitude)\r\n .slice(0, maxResults)\r\n .map(result => ({\r\n description: `${result.location} ${result.state} ${result.postcode}`,\r\n place_id: result.id,\r\n latitude: result.latitude,\r\n longitude: result.longitude\r\n }));\r\n } else {\r\n const locality = data.localities.locality;\r\n suggestions = (locality.latitude && locality.longitude) ? [{\r\n description: `${locality.location} ${locality.state} ${locality.postcode}`,\r\n place_id: locality.id,\r\n latitude: locality.latitude,\r\n longitude: locality.longitude\r\n }] : [];\r\n }\r\n }\r\n renderSuggestions();\r\n }).catch(error => {\r\n _AntiForgeryToken(\"#checkloginApi\");\r\n console.error(\"Error fetching autocomplete suggestions:\", error); \r\n });\r\n };\r\n\r\n const renderSuggestions = function () {\r\n suggestionsList.innerHTML = ''; \r\n\r\n if (suggestions.length > 0) {\r\n suggestions.forEach((suggestion, index) => {\r\n const listItem = document.createElement('li');\r\n listItem.innerHTML = highlightText(suggestion.description, query);\r\n listItem.onclick = () => handleSelect(suggestion);\r\n listItem.dataset.item = targetInputId + '-item';\r\n\r\n listItem.style.padding = '5px 5px';\r\n listItem.style.borderBottom = '1px solid #dbdbdb';\r\n listItem.style.cursor = 'pointer';\r\n\r\n listItem.onmouseenter = function () {\r\n listItem.style.backgroundColor = '#1478d0';\r\n listItem.style.color = '#fff';\r\n };\r\n listItem.onmouseleave = function () {\r\n listItem.style.backgroundColor = '#fff';\r\n listItem.style.color = '#000';\r\n };\r\n\r\n suggestionsList.appendChild(listItem);\r\n });\r\n suggestionsList.style.display = 'block'; \r\n } else {\r\n suggestionsList.innerHTML = '';\r\n }\r\n\r\n updateSuggestionsPosition();\r\n };\r\n\r\n const getPlaceDetails = async (placeId) => {\r\n try {\r\n const response = await fetch(GET_ADDRESSES_API + \"/\" + placeId, {\r\n method: 'GET',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n \"RequestVerificationToken\": document.querySelector(\"#checkloginApi [name='__RequestVerificationToken']\").value\r\n }\r\n });\r\n _AntiForgeryToken(\"#checkloginApi\"); \r\n\r\n const data = await response.json();\r\n const addressComponents = data.addressComponents;\r\n const subpremise = getAddressComponent(addressComponents, 'subpremise', true);\r\n const address = getAddressComponent(addressComponents, 'street_number', true) + ' ' + getAddressComponent(addressComponents, 'route', true);\r\n const addressDetails = subpremise != '' ? subpremise + \"/\" + address : address;\r\n const place = {\r\n id: data.id,\r\n fullAddress: data.formattedAddress,\r\n latitude: data.location.latitude,\r\n longitude: data.location.longitude,\r\n address: addressDetails,\r\n locality: getAddressComponent(addressComponents, 'locality', true),\r\n postcode: getAddressComponent(addressComponents, 'postal_code', true),\r\n state: getAddressComponent(addressComponents, 'administrative_area_level_1', false)\r\n };\r\n\r\n return place;\r\n } catch (error) {\r\n _AntiForgeryToken(\"#checkloginApi\");\r\n console.error(\"Error fetching data:\", error);\r\n throw error; \r\n }\r\n };\r\n\r\n const getAddressComponent = (components, type, isLongText) => {\r\n const component = components.find(c => c.types.includes(type));\r\n return component ? (isLongText ? component.longText : component.shortText) : '';\r\n };\r\n\r\n const handleSelect = async function (suggestion) {\r\n const targetInput = document.getElementById(targetInputId);\r\n if (targetInput) {\r\n targetInput.value = suggestion.description;\r\n }\r\n suggestionsList.innerHTML = '';\r\n suggestionsList.style.display = 'none';\r\n\r\n let place = null;\r\n\r\n // Check if `showAddresses` is true and call getPlaceDetails\r\n if (showAddresses) {\r\n try {\r\n place = await getPlaceDetails(suggestion.place_id);\r\n suggestion.description = place.fullAddress;\r\n suggestion.latitude = place.latitude;\r\n suggestion.longitude = place.longitude;\r\n //console.log(\"place: \", place.fullAddress);\r\n } catch (error) {\r\n console.error('Error fetching place details:', error);\r\n }\r\n }\r\n\r\n const event = new CustomEvent('result:select', {\r\n detail: {\r\n fullAddress: suggestion.description,\r\n metaData: {\r\n latitude: suggestion.latitude,\r\n longitude: suggestion.longitude,\r\n place: place\r\n }\r\n }\r\n });\r\n targetInput.dispatchEvent(event);\r\n\r\n if (onSelect) {\r\n onSelect(suggestion.description, {\r\n latitude: suggestion.latitude,\r\n longitude: suggestion.longitude,\r\n place: place \r\n });\r\n }\r\n };\r\n\r\n\r\n const highlightText = function (text, query) {\r\n if (!text || !query) return text;\r\n const parts = text.split(new RegExp(`(${query})`, 'gi'));\r\n return parts.map((part, index) =>\r\n part.toLowerCase() === query.toLowerCase() ? `${part}` : part\r\n ).join('');\r\n };\r\n\r\n // Debounced input handler\r\n const handleInputChange = debounce(function (e) {\r\n query = e.target.value;\r\n if (query.length > 2) {\r\n fetchSuggestions(query);\r\n } else {\r\n suggestionsList.innerHTML = '';\r\n suggestionsList.style.display = 'none';\r\n }\r\n }, 300);\r\n\r\n const targetInput = document.getElementById(targetInputId);\r\n if (targetInput) {\r\n targetInput.addEventListener('input', handleInputChange);\r\n\r\n // Update the suggestion list position on page scroll or resize\r\n window.addEventListener('scroll', updateSuggestionsPosition);\r\n window.addEventListener('resize', updateSuggestionsPosition);\r\n } else {\r\n console.error(`Input with ID ${targetInputId} not found.`);\r\n }\r\n};"],"mappings":"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"}