{"version":3,"file":"location-typeahead.js","sources":["../../../../resources/assets/js/entries/location-typeahead.js"],"sourcesContent":["import MapboxGeocoder from '@mapbox/mapbox-gl-geocoder';\nimport { i18n } from \"../utils/i18n\";\n\nclass LocationTypeahead{\n\n constructor(el){\n this.el = el;\n this.responseContainer = el.parentNode.querySelector('.locator-response-container');\n this.responseContainer.insertAdjacentHTML('beforeend', '

Searching Locations

' );\n\n var isBookOnline = this.responseContainer.parentNode.dataset.bookOnline === 'true';\n this.responseContainerTitle = this.responseContainer.querySelector('.locator-response-title');\n this.responses = this.responseContainer.querySelector('.locator-responses');\n this.geocoder = new MapboxGeocoder({\n accessToken: window.appConfig.mapbox.access_token,\n countries: \"GB\",\n placeholder: i18n._(\"Find your nearest adventure park\")\n\n });\n\n this.geocoder.addTo(this.el);\n\n this.geocoder.on('result', (e) => {\n this.responseContainer.classList.add('loading');\n this.clearExactSearch();\n fetch('/api/v1/locations/search?' + new URLSearchParams({ latitude: e.result.center[1], longitude: e.result.center[0], useBookingUrls: isBookOnline ? 'true' : 'false' })).then((response) => {\n return response.json();\n \n }).then((data) => {\n this.responseContainer.classList.remove('loading');\n if(data && data.length)\n {\n var html = \"\";\n data.forEach(data => {\n html += '
  • \"locations\"Flip Out ' + data.name + '' + data.address + '
  • '\n });\n this.responses.innerHTML = html;\n }\n else{\n \n this.responses.innerHTML = \"
  • \" + i18n._(\"Sorry, there's are no Flip Out locations within 50 miles of the location specified\") + \"
  • \";\n } \n this.responseContainer.classList.add('has-reponses');\n });\n });\n\n setTimeout(() => { this.el.querySelector('.mapboxgl-ctrl-geocoder--input').addEventListener('focus',()=>{\n this.responseContainer.classList.add('active');\n this.scrollToSearchLocator();\n }) }, 1);\n\n this.geocoder.on('results', (r) => {\n const val = r.query[0];\n if(val.length > 1){\n this.handleExactSearch(val);\n }else{\n this.clearExactSearch();\n } \n })\n\n //accounts for loading not being fired\n this.el.querySelector(\".mapboxgl-ctrl-geocoder--input\").addEventListener('input', (ev) => {\n const val = ev.target.value\n if(val.length < 2){\n this.clearExactSearch();\n }\n })\n\n /*this.el.querySelector(\".mapboxgl-ctrl-geocoder--input\").addEventListener('blur', (ev) => \n { \n setTimeout(() => {\n this.clearExactSearch();\n },300); \n });*/\n\n this.el.querySelector(\".mapboxgl-ctrl-geocoder--input\").addEventListener('focus', (ev) => {\n const element = this.el.querySelector(\".mapboxgl-ctrl-geocoder--input\")\n if(element.value.length > 1){\n this.handleExactSearch(element.value)\n }\n })\n\n document.addEventListener('clearExactSearch', (ev) => {\n this.clearExactSearch();\n });\n\n this.handleExactSearch = (val) => {\n const locationMatched = window.appConfig.locations.filter(x => x.name.replace('Flip Out ', '').toLowerCase().startsWith(val.toLowerCase()));\n\n this.clearExactSearch();\n\n if(locationMatched.length > 0){\n const suggestionsWrapper = document.querySelector('.suggestions-wrapper') \n const element = document.createElement(\"div\")\n element.classList.add(\"suggestions\")\n element.classList.add(\"exact-match\")\n element.setAttribute(\"id\", \"ExactSearchResult\")\n element.innerHTML = `Direct Match:${locationMatched[0].name}`\n suggestionsWrapper.insertBefore(element, suggestionsWrapper.firstChild);\n \n setTimeout( () => {\n document.addEventListener('click',function clickHandler(e){\n if(!document.querySelector('.suggestions-wrapper .suggestions:not(.exact-match)').contains(e.currentTarget))\n {\n const event = new Event(\"clearExactSearch\");\n \n // Dispatch the event.\n document.dispatchEvent(event);\n document.removeEventListener('click',clickHandler);\n }\n \n });\n },200);\n }\n }\n\n\n window.addEventListener(\"pageshow\", () => {\n document.querySelector(\".mapboxgl-ctrl-geocoder--input\").value = null;\n })\n\n this.click = (url) => {\n const element = document.createElement(\"a\")\n element.href = url;\n element.click();\n }\n\n this.clearExactSearch = () => {\n const elementToRemove = document.querySelector(\"#ExactSearchResult\");\n if(elementToRemove){\n elementToRemove.remove();\n }\n }\n\n this.getCtaColour = () => {\n if(this.el.parentNode.parentNode.classList.contains(\"locator-purple\")){\n return ''\n }\n return 'cta-bright-pink'\n }\n \n }\n \n scrollToSearchLocator(e) {\n let elem = this.el.querySelector('.mapboxgl-ctrl-geocoder--input');\n let y = parseInt(window.pageYOffset) + parseInt(elem.getBoundingClientRect().top - 100);\n window.scrollTo({top: y, behavior: 'smooth'});\n }\n}\n\ndocument.addEventListener( 'location-typeaheads-init', () => {\n let locationTypeaheads = document.querySelectorAll( '.locator_typeahead' );\n\n for ( let i = 0; i < locationTypeaheads.length; ++i ) {\n var locationTypeahead = locationTypeaheads[ i ];\n\n if ( !locationTypeahead.LocationTypeahead ) {\n locationTypeahead.LocationTypeahead = new LocationTypeahead( locationTypeahead );\n }\n }\n});\n\nlet ev = new Event( 'location-typeaheads-init', { 'bubbles': true } );\ndocument.dispatchEvent( ev );\n"],"names":["LocationTypeahead","el","isBookOnline","MapboxGeocoder","i18n","e","response","data","html","r","val","ev","element","locationMatched","x","suggestionsWrapper","clickHandler","event","url","elementToRemove","elem","y","locationTypeaheads","i","locationTypeahead"],"mappings":"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"}