{"version":3,"sources":["webpack:///./src/client/default/js/components/storeSelectionWoosmapComponent.js","webpack:///./src/client/default/js/utilities/provinceUtils.js","webpack:///./src/client/default/js/utilities/woosmapUtils.js"],"names":["StoreSelectionWoosmapComponent","element","sidebar","document","querySelector","container","SELECTORS","storeServiceList","introbox","introBoxes","placeRecap","input","btnSubmit","suggestionsList","clearSearchBtn","currentPosition","language","logsEnabled","$options","enableLogs","provinceList","key","label","isMobileApp","isApp","initWoosmap","restoreLayerOnEmptyInput","autocompleteTypeMapping","timeslotEnabled","isStorePage","observer","MutationObserver","mutations","contains","appendChild","disconnect","observe","attributes","childList","characterData","subtree","this","CUSTOM_MESSAGES","STORE_SELECTION_SELECT_EVENTS","changed","save","SHIPPING_UPDATE_EVENTS","updated","updateSelection","handleAddToCart","handleReorder","close","resetLayer","TIMESLOT","INIT_COMPONENT","sendAddToCartPayload","value","components","country","types","excluded_types","custom_description","extended","paccontainer","findCurrentPositionBtn","pushApp","selectedSuggestionElement","selectedSuggestion","Promise","resolve","reject","script","createElement","src","async","onload","onerror","Error","head","addEventListener","debounce","handleAutocompleteWoosmap","bind","e","elementUnderCursor","elementFromPoint","clientX","clientY","setTimeout","target","style","display","event","checkVisibility","selectedItem","firstLiElement","removeSelection","previousElementSibling","tagName","classList","add","CLASSES","innerText","defaultValue","lastElementChild","nextElementSibling","click","focus","ev","KeyboardEvent","code","keyCode","which","bubbles","cancelable","dispatchEvent","appPostMessage","action","blur","initWoosmapScript","then","localitiesAutocompleteService","window","woosmap","localities","AutocompleteService","wskey","setInputListeners","catch","error","console","log","querySelectorAll","forEach","el","remove","params","debounceTime","autocomplete","suggestions","publicId","getDetails","result","replace","address","some","toLowerCase","startsWith","locality","options","autocompleteOptions","autocompletePromise","displaySuggestions","a","innerHTML","initGeoloc","length","li","formatPredictionList","description","getDetailPromise","public_id","displayLocalitiesResponse","prediction","matched_substrings","formatted_name","bold_matched_substring","html","string","reverse","substring","char","place","clear","geometry","addressComponent","lat","location","long","lng","cap","includes","name","getAddressPart","address_components","city","state","civic","administrativeAreaLevel3","isGeneric","getAddressGenericForWoosmap","findProvinceOption","endLoading","provinceObj","filter","p","replaceAll","partners","preventDefault","goToPartnerUrl","href","targetNode","getElementById","oninput","setAttribute","mutationsList","geolocButton","iconPac","iconGeo","textNode","createTextNode","firstChild","insertBefore","stopPropagation","loading","clickFindCurrentPositionCB","getClientLocation","reverseGeocoding","response","results","formatted_address","position","undefined","promiseArray","push","wait","clearTimeout","navigatorGeolocation","race","pos","info","isNaN","coords","latitude","longitude","clientLocation","inputValue","stateCode","doSearch","val","join","streetNumber","get","url","data","services","capList","cityList","selectLabel","selectPlaceholder","warningCityCap","bannerOptions","errorMessage","isTherePickupInStore","find","service","shippingMethodId","servicesTemplate","servicesTemplateNoTimeslot","pushDeliveryPartnersToDataLayer","msg","partnerTargetForApp","part","typesToSearch","administrativeAreaLevel1","addressPart","type","indexOf","short_name","shippingSelected","redirect","timeslotEnabledForApp","addToCartPayload","addToCart","reorder","hash","res","promobundle","search","config","pid","dataset","addToCartPaylodFromAxios","request","quantityTotal","qtyInCart","EMIT","REORDER_EVENTS","CART_PAYLOAD","cartPayloadData","body","className","moveInfostrip","infoStrip","scrollTo","mainHeader","nextSibling","button","partner","dataLayer","service_name","delivery_type","TogglerComponent","woosmapKey","defer","initMap","Event","initWoosmapMultiSearchScript","geolocation","success","ipCoord","distanceMatrix","origin","destinations","slice","map","destination","rows","autocompleteLocalties","searchInputId","Autocomplete","autocompleteMultisearch","multisearch","apiOrder","fallbackBreakpoint","places","getKmFromDistanceText","distanceText","distancePart","split","distanceValue","cm","m","km","getPositionObject","renderRouteResult","legs","routes","end_address","start_location","end_location","distance","text","duration","steps","step","instructions","summary","renderTransitRouteResult","route","seconds","hours","Math","floor","remainingSeconds","minutes","leg","travel_mode","transport","mode","long_name"],"mappings":"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","file":"js/component-storeSelectionWoosmapComponent-js.chunks.js","sourcesContent":["import TogglerComponent from './togglerComponent';\nimport { get, request } from '../libs/Axios';\nimport servicesTemplate from 'MICROTEMPLATES/stores/storeServices.ejs';\nimport servicesTemplateNoTimeslot from 'MICROTEMPLATES/stores/storeServicesNoTimeslot.ejs';\nimport { navigatorGeolocation } from '../utilities/geolocationUtils';\nimport { appPostMessage } from '../utilities/postMessage';\nimport { provinceList } from '../utilities/provinceUtils';\nimport { reverseGeocoding } from '../utilities/woosmapUtils';\nimport { debounce } from 'underscore';\n\nexport default class StoreSelectionWoosmapComponent extends TogglerComponent {\n get Messages() {\n return {\n [this.CUSTOM_MESSAGES.STORE_SELECTION_SELECT_EVENTS.changed]: this.save,\n [this.CUSTOM_MESSAGES.SHIPPING_UPDATE_EVENTS.updated]: this.updateSelection,\n [`error.NO_SHIPPING_METHOD_SELECTED`]: this.handleAddToCart,\n [`error.NO_SHIPPING_METHOD_SELECTED_REORDER`]: this.handleReorder,\n [this.CUSTOM_MESSAGES.STORE_SELECTION_SELECT_EVENTS.close]: this.resetLayer,\n [this.CUSTOM_MESSAGES.TIMESLOT.INIT_COMPONENT]: this.sendAddToCartPayload\n };\n }\n\n get autocompleteOptions() {\n return {\n input: this.input.value,\n components: { country: 'it' },\n language: this.language,\n types: ['address', 'locality'],\n excluded_types: ['suburb', 'quarter', 'neighbourhood'],\n custom_description: 'locality:\"{name}, {administrative_area_level_1}, {administrative_area_level_0} \"',\n extended: 'postal_code'\n };\n }\n\n get SELECTORS() {\n return {\n ...super.SELECTORS,\n storeServiceList: '.services-list',\n introBoxes: '.informative-info',\n placeRecap: '#place-recap',\n paccontainer: '.pac-container',\n findCurrentPositionBtn: '.storeSelectio-sidebar .iamhere',\n pushApp: '.push-app-content-wrapper',\n isApp: '.mobile-layout',\n selectedSuggestionElement: 'li.pac-item-selected'\n };\n }\n get CLASSES() {\n return {\n ...super.CLASSES,\n selectedSuggestion: 'pac-item-selected'\n };\n }\n\n constructor(element) {\n super(element);\n this.sidebar = /** @type {HTMLElement} */ (document.querySelector('.storeSelectio-sidebar'));\n this.container = /** @type {HTMLElement} */ (document.querySelector(this.SELECTORS.storeServiceList));\n this.introbox = document.querySelector(this.SELECTORS.introBoxes);\n this.placeRecap = document.querySelector(this.SELECTORS.placeRecap);\n this.input = /** @type {HTMLInputElement} */ (document.querySelector('#sidebarAddressAutocomplete'));\n this.btnSubmit = /** @type {HTMLInputElement} */ (document.querySelector('.js-btn-store'));\n this.suggestionsList = document.querySelector('#suggestions-list');\n this.clearSearchBtn = document.querySelector('#store-selection-clear-btn');\n this.currentPosition = null;\n this.language = 'it';\n this.logsEnabled = this.$options.enableLogs;\n this.provinceList = provinceList().list;\n this.isMobileApp = document.querySelector(this.SELECTORS.isApp);\n this.initWoosmap();\n this.restoreLayerOnEmptyInput();\n this.autocompleteTypeMapping = this.$options.autocompleteTypeMapping;\n this.timeslotEnabled = this.$options.timeslotEnabled;\n let isStoreLocatorPage = this.$options.isStorePage;\n if (!isStoreLocatorPage) {\n var observer = new MutationObserver((mutations) => {\n if (document.contains(document.querySelector('.pac-container:not(.maps):not(.ws-container)'))) {\n document.querySelector('.storeSelectio-sidebar').appendChild(document.querySelector('.pac-container:not(.maps):not(.ws-container)'));\n observer.disconnect();\n }\n });\n\n observer.observe(document, { attributes: false, childList: true, characterData: false, subtree: true });\n }\n }\n\n initWoosmapScript() {\n return new Promise((resolve, reject) => {\n const script = document.createElement('script');\n script.src = 'https://sdk.woosmap.com/localities/localities.2.0.js';\n script.async = true;\n\n script.onload = () => resolve(`Script sdk.woosmap.com/localities/localities loaded successfully.`);\n script.onerror = () => reject(new Error(`Failed to load script sdk.woosmap.com/localities/localities.`));\n\n document.head.appendChild(script);\n });\n }\n\n setInputListeners() {\n this.input.addEventListener('input', debounce(this.handleAutocompleteWoosmap.bind(this), 400));\n this.sidebar.addEventListener('mousedown', (e) => {\n const elementUnderCursor = document.elementFromPoint(e.clientX, e.clientY);\n setTimeout(() => {\n if (!this.input.contains(e.target) && !this.suggestionsList.contains(elementUnderCursor)) {\n this.suggestionsList.style.display = 'none';\n }\n }, 500);\n });\n this.input.addEventListener('focus', () => {\n if (this.input && this.input.value !== '') {\n setTimeout(() => {\n this.suggestionsList.style.display = 'block';\n }, 500);\n }\n });\n this.input.addEventListener('keydown', (event) => {\n if (!this.suggestionsList.checkVisibility()) return;\n const selectedItem = this.suggestionsList.querySelector(this.SELECTORS.selectedSuggestionElement);\n const firstLiElement = this.suggestionsList.querySelector('li');\n if (event.key === 'ArrowUp') {\n this.removeSelection();\n if (!selectedItem) {\n this.suggestionsList.lastElementChild?.classList.add(this.CLASSES.selectedSuggestion);\n this.input.value = this.suggestionsList.lastElementChild.innerText;\n } else {\n if (selectedItem.previousElementSibling && selectedItem.previousElementSibling.tagName !== 'BUTTON') {\n selectedItem.previousElementSibling.classList.add(this.CLASSES.selectedSuggestion);\n this.input.value = selectedItem.previousElementSibling.innerText;\n } else {\n this.input.value = this.input.defaultValue;\n }\n }\n }\n if (event.key === 'ArrowDown') {\n this.removeSelection();\n\n if (!selectedItem && firstLiElement) {\n firstLiElement.classList.add(this.CLASSES.selectedSuggestion);\n this.input.value = firstLiElement.innerText;\n } else {\n if (selectedItem.nextElementSibling) {\n selectedItem.nextElementSibling.classList.add(this.CLASSES.selectedSuggestion);\n this.input.value = selectedItem.nextElementSibling.innerText;\n } else {\n this.input.value = this.input.defaultValue;\n }\n }\n }\n if (event.key === 'Enter') {\n if (selectedItem) {\n selectedItem.click();\n } else if (firstLiElement) {\n firstLiElement.click();\n }\n }\n });\n this.clearSearchBtn.addEventListener('click', () => {\n this.input.value = '';\n this.suggestionsList.style.display = 'none';\n this.clearSearchBtn.style.display = 'none';\n this.input.focus();\n });\n this.btnSubmit.addEventListener('click', (e) => {\n // this.input.focus();\n var ev = new KeyboardEvent('keydown', {\n key: 'Enter',\n code: 'Enter',\n keyCode: 13,\n which: 13,\n bubbles: true,\n cancelable: true\n });\n this.input.dispatchEvent(ev);\n if (this.isMobileApp) {\n appPostMessage({ action: 'OK_STORE_LAYER' });\n this.input.blur();\n }\n });\n }\n\n initWoosmap() {\n this.initWoosmapScript()\n .then(() => {\n this.localitiesAutocompleteService = new window.woosmap.localities.AutocompleteService(this.$options.wskey, this.language);\n\n if (this.input && this.suggestionsList) {\n this.setInputListeners();\n }\n })\n .catch((error) => {\n console.log(error);\n });\n }\n\n removeSelection() {\n this.suggestionsList.querySelectorAll('li').forEach((el) => {\n el.classList.remove(this.CLASSES.selectedSuggestion);\n });\n }\n\n autocompletePromise(params, debounceTime = 0) {\n return new Promise((resolve, reject) => {\n this.localitiesAutocompleteService.autocomplete(\n params,\n (suggestions) => resolve(suggestions),\n (error) => reject(error),\n debounceTime\n );\n });\n }\n getDetailPromise(publicId) {\n return new Promise((resolve, reject) => {\n this.localitiesAutocompleteService.getDetails(\n publicId,\n (result) => resolve(result),\n (error) => reject(error)\n );\n });\n }\n\n handleAutocompleteWoosmap() {\n if (this.input && this.suggestionsList) {\n const input = this.input.value;\n\n input.replace('\"', '\\\\\"').replace(/^\\s+|\\s+$/g, '');\n if (input !== '') {\n this.introbox.classList.add('hidden');\n document.querySelector('.storeSelectio-sidebar').classList.remove('initial-state');\n\n const address = this.autocompleteTypeMapping?.address?.some((el) => input.toLowerCase().startsWith(el));\n const localities = this.autocompleteTypeMapping?.locality?.some((el) => input.toLowerCase() === el);\n\n const options = this.autocompleteOptions;\n options.types = address && !localities ? ['address'] : ['address', 'locality'];\n\n this.autocompletePromise(options)\n .then((suggestions) => {\n if (this.logsEnabled) {\n console.log('Suggerimenti autocomplete:', suggestions);\n }\n this.displaySuggestions(suggestions);\n })\n .catch((error) => {\n console.error('Errore:', error);\n });\n } else {\n this.suggestionsList.style.display = 'none';\n this.clearSearchBtn.style.display = 'none';\n }\n }\n }\n async displaySuggestions({ localities }) {\n if (this.input && this.suggestionsList) {\n this.suggestionsList.innerHTML = '';\n await this.initGeoloc();\n\n if (localities.length > 0) {\n localities.forEach((locality) => {\n const li = document.createElement('li');\n li.classList.add('pac-item');\n li.innerHTML = this.formatPredictionList(locality) ?? '';\n li.addEventListener('click', () => {\n this.input.value = locality.description ?? '';\n this.suggestionsList.style.display = 'none';\n this.getDetailPromise(locality.public_id)\n .then((result) => {\n if (this.logsEnabled) {\n console.log('Dettagli località :', result);\n }\n this.displayLocalitiesResponse(result);\n })\n .catch((error) => {\n console.error('Errore:', error);\n });\n });\n this.suggestionsList.appendChild(li);\n });\n this.suggestionsList.style.display = 'block';\n this.clearSearchBtn.style.display = 'block';\n } else {\n this.suggestionsList.style.display = 'none';\n }\n }\n }\n\n formatPredictionList(locality) {\n const prediction = locality;\n const predictionClass = 'no-viewpoint';\n const matched_substrings = prediction.matched_substrings;\n let formatted_name = '';\n\n if (prediction.matched_substrings && prediction.matched_substrings.description) {\n formatted_name = this.bold_matched_substring(prediction['description'], matched_substrings.description);\n } else {\n formatted_name = prediction['description'];\n }\n\n let html = '';\n\n html += `<div class=\"prediction ${predictionClass}\">${formatted_name}</div>`;\n return html;\n }\n\n bold_matched_substring(string, matched_substrings) {\n matched_substrings = matched_substrings.reverse();\n\n for (const substring of matched_substrings) {\n const char = string.substring(substring['offset'], substring['offset'] + substring['length']);\n\n string = `${string.substring(0, substring['offset'])}<span class='bold'>${char}</span>${string.substring(substring['offset'] + substring['length'])}`;\n }\n return string;\n }\n\n displayLocalitiesResponse(place) {\n this.clear();\n\n if (!place.geometry) {\n // User enter a not available place or there is an error with api call\n // Show error\n this.endLoading(this.sidebar);\n\n return;\n }\n const addressComponent = {\n lat: typeof place.geometry.location.lat === 'function' ? place.geometry.location.lat() : place.geometry.location.lat,\n long: typeof place.geometry.location.lng === 'function' ? place.geometry.location.lng() : place.geometry.location.lng,\n cap: place.types.includes('postal_code') ? place.name : this.getAddressPart(place.address_components, 'cap'),\n city: place.types.includes('locality') ? place.name : this.getAddressPart(place.address_components, 'city'),\n state: this.getAddressPart(place.address_components, 'administrativeAreaLevel1'),\n address: this.getAddressPart(place.address_components, 'address'),\n civic: this.getAddressPart(place.address_components, 'civic'),\n administrativeAreaLevel3: this.getAddressPart(place.address_components, 'administrativeAreaLevel3'),\n isGeneric: this.getAddressGenericForWoosmap(place.types) ? 1 : 0\n };\n if (addressComponent.state && (place.types.includes('locality') || place.types.includes('postal_code')) && this.provinceList && typeof this.provinceList === 'object') {\n addressComponent.state = this.findProvinceOption(addressComponent.state);\n }\n if (addressComponent.cap && typeof addressComponent.cap === 'object') {\n if (addressComponent.cap.length == 1) {\n addressComponent.cap = addressComponent.cap[0];\n } else if (addressComponent.cap.length > 1) {\n addressComponent.cap = null;\n }\n }\n this.save(addressComponent);\n }\n\n findProvinceOption(state) {\n const provinceObj = this.provinceList.filter((p) => {\n let normalizedState = state.replaceAll('-', ' ');\n return normalizedState === (p.label || p.key);\n });\n\n return provinceObj && provinceObj.length > 0 ? provinceObj[0].key : state;\n }\n\n partnerTargetForApp() {\n if (this.isMobileApp) {\n let partners = document.querySelectorAll('.partner-link');\n if (partners && partners.length > 0) {\n partners.forEach((el) => {\n el.addEventListener('click', (e) => {\n e.preventDefault();\n appPostMessage({ goToPartnerUrl: el.href });\n });\n });\n }\n }\n }\n\n restoreLayerOnEmptyInput() {\n const targetNode = document.getElementById('sidebarAddressAutocomplete');\n targetNode.oninput = function(e) {\n targetNode.setAttribute('value', targetNode.value);\n };\n\n const config = { attributes: true, childList: true, subtree: true };\n\n const callback = function(mutationsList, observer) {\n for (let mutation of mutationsList) {\n if (mutation.target.value === '') {\n setTimeout(() => {\n document.querySelector('.services-list')?.classList.add('hidden');\n document.querySelector('.informative-info')?.classList.remove('hidden');\n document.querySelector('.storeSelectio-sidebar').classList.add('initial-state');\n document.querySelector('#suggestions-list').style.display = 'none';\n }, 400);\n }\n }\n };\n\n const observer = new MutationObserver(callback);\n observer.observe(targetNode, config);\n }\n\n async initGeoloc() {\n if (!document.querySelector(this.SELECTORS.findCurrentPositionBtn)) {\n let geolocButton = document.createElement('button');\n geolocButton.classList.add('pac-item', 'iamhere');\n let iconPac = document.createElement('span');\n iconPac.classList.add('pac-icon', 'pac-icon-marker');\n let iconGeo = document.createElement('span');\n iconGeo.classList.add('icon-geolocstore');\n geolocButton.appendChild(iconPac);\n geolocButton.appendChild(iconGeo);\n let textNode = document.createTextNode('Utilizza la mia posizione attuale');\n geolocButton.appendChild(textNode);\n let paccontainer = document.querySelector(this.SELECTORS.paccontainer);\n if (paccontainer && paccontainer.firstChild) {\n paccontainer.insertBefore(geolocButton, paccontainer.firstChild);\n } else if (paccontainer) {\n paccontainer.appendChild(geolocButton);\n }\n geolocButton.addEventListener('click', (e) => {\n e.stopPropagation();\n e.preventDefault();\n this.loading(this.sidebar);\n this.clickFindCurrentPositionCB();\n // this.endLoading(this.sidebar);\n });\n }\n }\n\n async clickFindCurrentPositionCB() {\n await this.getClientLocation();\n if (this.currentPosition && this.currentPosition.lat && this.currentPosition.lng) {\n try {\n reverseGeocoding(this.$options.wskey, this.currentPosition.lat, this.currentPosition.lng)\n .then((response) => {\n if (this.logsEnabled) {\n console.log('Response reverse geocoding: ' + response);\n }\n if (response && response.results[0]) {\n var place = response.results[0];\n this.input.value = place.formatted_address;\n this.displayLocalitiesResponse(place);\n }\n })\n .catch((e) => {\n console.error('Geocoder failed due to: ' + e);\n this.endLoading(this.sidebar);\n });\n } catch (error) {\n this.endLoading(this.sidebar);\n }\n }\n }\n\n async getClientLocation() {\n let clientLocation;\n /**\n * @type {Position} position\n */\n\n var promiseArray = [];\n var position = undefined;\n promiseArray.push(\n new Promise((resolve, reject) => {\n const wait = setTimeout(() => {\n clearTimeout(wait);\n reject('Location has timed out');\n }, 10000);\n })\n );\n\n promiseArray.push(navigatorGeolocation());\n position = await Promise.race(promiseArray)\n .then((pos) => {\n return pos;\n })\n .catch((e) => {\n console.info('navigator geolocation error: ', e);\n this.endLoading(this.sidebar);\n });\n\n if (position && !isNaN(position.coords.latitude) && !isNaN(position.coords.longitude)) clientLocation = { lat: position.coords.latitude, lng: position.coords.longitude };\n /* else {\n let woosLocation = await geolocation(this.$options.wmkey).catch((e) => console.error('Woosmap error: ', e));\n if (woosLocation && woosLocation.success) clientLocation = { lat: woosLocation.latitude, lng: woosLocation.longitude };\n }\n if (this.currentPosition && this.currentPosition.lat === clientLocation.lat && this.currentPosition.lng === clientLocation.lng) return 'stop'; */\n this.currentPosition = /** @type {google.maps.LatLngLiteral} */ (clientLocation);\n }\n\n clear() {\n this.cap = null;\n this.address = null;\n this.civic = null;\n this.lat = null;\n this.long = null;\n this.city = null;\n this.administrativeAreaLevel3 = null;\n }\n\n save({ cap, city, address, state, civic, lat, long, administrativeAreaLevel3, isGeneric }) {\n if (cap) {\n this.cap = cap;\n this.inputValue = this.input.value;\n this.input.value = this.inputValue + ' ,' + cap;\n }\n if (city) this.city = city;\n if (address) this.address = address;\n if (state) this.stateCode = state;\n if (civic) this.civic = civic;\n if (lat) this.lat = lat;\n if (long) this.long = long;\n if (administrativeAreaLevel3) {\n this.administrativeAreaLevel3 = administrativeAreaLevel3;\n }\n\n this.doSearch(this.cap, this.city, this.stateCode, this.lat, this.long, this.address, this.civic, this.administrativeAreaLevel3, isGeneric);\n this.placeRecap.innerHTML = [this.address, this.civic, this.city, this.cap]\n .filter(function(val) {\n return val;\n })\n .join(', ');\n }\n\n async doSearch(cap, city, state, lat, long, address, streetNumber, administrativeAreaLevel3, isGeneric) {\n this.loading(this.sidebar);\n const { data } = await get(this.$options.url, {\n params: { cap, city, state, lat, long, address, streetNumber, administrativeAreaLevel3, isGeneric, timeslotEnabled: this.timeslotEnabled }\n });\n this.endLoading(this.sidebar);\n const { services, capList, cityList, selectLabel, selectPlaceholder, warningCityCap, bannerOptions, errorMessage } = data;\n let isTherePickupInStore = false;\n let isApp = this.isMobileApp;\n if (services && services.length > 0) {\n isTherePickupInStore = services.find((service) => service.shippingMethodId == 'pickup_in_store');\n if (this.timeslotEnabled) {\n this.container.innerHTML = servicesTemplate({ services, bannerOptions, isTherePickupInStore, isApp });\n } else {\n this.container.innerHTML = servicesTemplateNoTimeslot({ services, bannerOptions, isTherePickupInStore, isApp });\n }\n this.pushDeliveryPartnersToDataLayer();\n } else if (capList && capList.length > 0) {\n if (this.timeslotEnabled) {\n this.container.innerHTML = servicesTemplate({ capList, selectLabel, selectPlaceholder, warningCityCap, bannerOptions, isTherePickupInStore, isApp });\n } else {\n this.container.innerHTML = servicesTemplateNoTimeslot({ capList, selectLabel, selectPlaceholder, warningCityCap, bannerOptions, isTherePickupInStore, isApp });\n }\n } else if (cityList && cityList.length > 0) {\n if (this.timeslotEnabled) {\n this.container.innerHTML = servicesTemplate({ cityList, selectLabel, selectPlaceholder, warningCityCap, bannerOptions, isTherePickupInStore, isApp });\n } else {\n this.container.innerHTML = servicesTemplateNoTimeslot({ cityList, selectLabel, selectPlaceholder, warningCityCap, bannerOptions, isTherePickupInStore, isApp });\n }\n } else {\n if (this.timeslotEnabled) {\n this.container.innerHTML = servicesTemplate({ msg: errorMessage, isTherePickupInStore, isApp });\n } else {\n this.container.innerHTML = servicesTemplateNoTimeslot({ msg: errorMessage, isTherePickupInStore, isApp });\n }\n }\n this.btnSubmit.setAttribute('disabled', true);\n this.container.classList.remove('hidden');\n this.partnerTargetForApp();\n }\n\n getAddressPart(address, part) {\n let addressParts = {\n cap: ['postal_code', 'postal_codes'],\n city: ['locality', 'postal_town'],\n address: ['route'],\n civic: ['street_number'],\n administrativeAreaLevel1: ['county', 'administrative_area_level_1'],\n administrativeAreaLevel3: ['locality', 'postal_town', 'administrative_area_level_2', 'administrative_area_level_3']\n };\n\n let typesToSearch = addressParts[part] || [];\n let addressPart = address.find((addressComponent) => {\n let typesIntersection = addressComponent.types.filter((type) => {\n return typesToSearch.indexOf(type) !== -1;\n });\n return typesIntersection.length > 0;\n });\n\n return addressPart ? addressPart.short_name : null;\n }\n\n getAddressGeneric(address) {\n return address[0] && (address[0].types.includes('postal_code') || address[0].types.includes('locality'));\n }\n\n getAddressGenericForWoosmap(address) {\n return address[0] && (address[0].includes('postal_code') || address[0].includes('locality'));\n }\n\n async updateSelection({ shippingSelected, redirect, timeslotEnabledForApp }) {\n if (this.addToCartPayload) {\n await this.addToCart();\n }\n // window.history.pushState({}, document.title, window.location.pathname);\n\n //window.location.reload();\n if (!this.reorder) {\n var url = '';\n\n if (window.location.hash.indexOf('size') > -1) {\n url = window.location.href.replace(window.location.hash, '');\n } else {\n url = window.location.href.replace('showDeliveryBar=true', '');\n }\n if (this.addToCartPayload && this.addToCartPayload.res && this.addToCartPayload.res.data && this.addToCartPayload.res.data.promobundle) {\n url = url + (window.location.search ? '&' : '?') + 'promobundle=' + this.addToCartPayload.res.config.data.pid;\n }\n if (this.isMobileApp && timeslotEnabledForApp) {\n let newParamsForRedirectBuildApp = 'appTimeslotEnabled=true';\n if (url.indexOf('appTimeslotEnabled=true') === -1) {\n if (url.indexOf('?') !== -1) {\n url = url + '&' + newParamsForRedirectBuildApp;\n } else {\n url = url + '?' + newParamsForRedirectBuildApp;\n }\n }\n }\n if (window.location.href.search('/cart') === -1) {\n window.location.href = url;\n }\n }\n if (redirect) {\n window.location.href = redirect;\n } else if (document.querySelector('.store-selection-bar') && document.querySelector('.js-store-selector-redirect')) {\n window.location.href = document.querySelector('.store-selection-bar').dataset.redirect;\n }\n this.remove();\n }\n\n async addToCart() {\n const addToCartPaylodFromAxios = this.addToCartPayload && this.addToCartPayload.res ? this.addToCartPayload.res.config : null;\n // /addToCartPaylodFromAxios.data.skipnotifications = true;\n if (addToCartPaylodFromAxios) {\n const { data } = await request(addToCartPaylodFromAxios);\n if (data && data.quantityTotal) {\n appPostMessage({ qtyInCart: data.quantityTotal });\n }\n if (this.reorder) {\n this.EMIT(this.CUSTOM_MESSAGES.REORDER_EVENTS.updated, data);\n }\n }\n }\n\n handleAddToCart(msg) {\n this.add();\n this.addToCartPayload = msg;\n }\n\n handleReorder(msg) {\n this.add();\n this.addToCartPayload = msg;\n this.reorder = true;\n }\n\n sendAddToCartPayload() {\n this.EMIT(this.CUSTOM_MESSAGES.TIMESLOT.CART_PAYLOAD, { cartPayloadData: this.addToCartPayload ? this.addToCartPayload : null, reorder: this.reorder });\n }\n\n resetLayer() {\n document.querySelector('body').classList.remove('js-store-selector-redirect');\n setTimeout(() => {\n this.introbox.classList.remove('hidden');\n document.querySelector('.storeSelectio-sidebar').classList.add('initial-state');\n this.container.classList.add('hidden');\n this.input.value = '';\n this.suggestionsList.style.display = 'none';\n document.body.className = document.body.className.replace(/\\bopenStoresList.*?\\b/g, '');\n if (this.$options.moveInfostrip && document.querySelector(this.SELECTORS.infoStrip)) {\n window.scrollTo(0, 0);\n document.querySelector(this.SELECTORS.mainHeader).classList.remove('moveinfostrip');\n document.querySelector(this.SELECTORS.mainHeader).classList.add('noanimation');\n document\n .querySelector(this.SELECTORS.mainHeader)\n .insertBefore(\n document.querySelector(this.SELECTORS.infoStrip),\n document.querySelector(this.SELECTORS.pushApp)\n ? document.querySelector(this.SELECTORS.pushApp).nextSibling\n : document.querySelector(this.SELECTORS.mainHeader).firstChild\n );\n }\n document.body.className = document.body.className.replace(/\\bopenExtraLayer.*?\\b/g, '');\n document.body.className = document.body.className.replace(/\\bopenStoresList.*?\\b/g, '');\n document.body.className = document.body.className.replace(/\\bopenSingleStoreDeliveryList.*?\\b/g, '');\n }, 400);\n }\n\n pushDeliveryPartnersToDataLayer() {\n if (document.querySelector('.store-service-card.partners') && document.querySelector('.partner-link-container')) {\n let buttons = document.querySelectorAll('.partner-link');\n buttons.forEach((button) => {\n button.addEventListener('click', function() {\n let partner = button.className.replace('partner-link', '');\n window.dataLayer.push({\n event: 'select_service',\n service_name: 'partner_delivery',\n delivery_type: partner\n });\n });\n });\n }\n }\n}\n","export function provinceList() {\n return {\n list: [\n { key: 'AG', label: 'Agrigento' },\n { key: 'AL', label: 'Alessandria' },\n { key: 'AN', label: 'Ancona' },\n { key: 'AO', label: 'Aosta' },\n { key: 'AR', label: 'Arezzo' },\n { key: 'AP', label: 'Ascoli Piceno' },\n { key: 'AT', label: 'Asti' },\n { key: 'AV', label: 'Avellino' },\n { key: 'BA', label: 'Bari' },\n { key: 'BT', label: 'Barletta Andria Trani' },\n { key: 'BL', label: 'Belluno' },\n { key: 'BN', label: 'Benevento' },\n { key: 'BG', label: 'Bergamo' },\n { key: 'BI', label: 'Biella' },\n { key: 'BO', label: 'Bologna' },\n { key: 'BZ', label: 'Bolzano' },\n { key: 'BS', label: 'Brescia' },\n { key: 'BR', label: 'Brindisi' },\n { key: 'CA', label: 'Cagliari' },\n { key: 'CL', label: 'Caltanissetta' },\n { key: 'CB', label: 'Campobasso' },\n { key: 'CI', label: 'Carbonia Iglesias' },\n { key: 'CE', label: 'Caserta' },\n { key: 'CT', label: 'Catania' },\n { key: 'CZ', label: 'Catanzaro' },\n { key: 'CH', label: 'Chieti' },\n { key: 'CO', label: 'Como' },\n { key: 'CS', label: 'Cosenza' },\n { key: 'CR', label: 'Cremona' },\n { key: 'KR', label: 'Crotone' },\n { key: 'CN', label: 'Cuneo' },\n { key: 'EN', label: 'Enna' },\n { key: 'FM', label: 'Fermo' },\n { key: 'FE', label: 'Ferrara' },\n { key: 'FI', label: 'Firenze' },\n { key: 'FG', label: 'Foggia' },\n { key: 'FC', label: 'Forlì Cesena' },\n { key: 'FR', label: 'Frosinone' },\n { key: 'GE', label: 'Genova' },\n { key: 'GO', label: 'Gorizia' },\n { key: 'GR', label: 'Grosseto' },\n { key: 'IM', label: 'Imperia' },\n { key: 'IS', label: 'Isernia' },\n { key: 'SP', label: 'La Spezia' },\n { key: 'AQ', label: \"L'Aquila\" },\n { key: 'LT', label: 'Latina' },\n { key: 'LE', label: 'Lecce' },\n { key: 'LC', label: 'Lecco' },\n { key: 'LI', label: 'Livorno' },\n { key: 'LO', label: 'Lodi' },\n { key: 'LU', label: 'Lucca' },\n { key: 'MC', label: 'Macerata' },\n { key: 'MN', label: 'Mantova' },\n { key: 'MS', label: 'Massa Carrara' },\n { key: 'MT', label: 'Matera' },\n { key: 'VS', label: 'Medio Campidano' },\n { key: 'ME', label: 'Messina' },\n { key: 'MI', label: 'Milano' },\n { key: 'MO', label: 'Modena' },\n { key: 'MB', label: 'Monza Brianza' },\n { key: 'NA', label: 'Napoli' },\n { key: 'NO', label: 'Novara' },\n { key: 'NU', label: 'Nuoro' },\n { key: 'OG', label: 'Ogliastra' },\n { key: 'OT', label: 'Olbia Tempio' },\n { key: 'OR', label: 'Oristano' },\n { key: 'PD', label: 'Padova' },\n { key: 'PA', label: 'Palermo' },\n { key: 'PR', label: 'Parma' },\n { key: 'PV', label: 'Pavia' },\n { key: 'PG', label: 'Perugia' },\n { key: 'PU', label: 'Pesaro e Urbino' },\n { key: 'PE', label: 'Pescara' },\n { key: 'PC', label: 'Piacenza' },\n { key: 'PI', label: 'Pisa' },\n { key: 'PT', label: 'Pistoia' },\n { key: 'PN', label: 'Pordenone' },\n { key: 'PZ', label: 'Potenza' },\n { key: 'PO', label: 'Prato' },\n { key: 'RG', label: 'Ragusa' },\n { key: 'RA', label: 'Ravenna' },\n { key: 'RC', label: 'Reggio Calabria' },\n { key: 'RE', label: 'Reggio Emilia' },\n { key: 'RI', label: 'Rieti' },\n { key: 'RN', label: 'Rimini' },\n { key: 'RM', label: 'Roma' },\n { key: 'RO', label: 'Rovigo' },\n { key: 'SA', label: 'Salerno' },\n { key: 'SS', label: 'Sassari' },\n { key: 'SV', label: 'Savona' },\n { key: 'SI', label: 'Siena' },\n { key: 'SR', label: 'Siracusa' },\n { key: 'SO', label: 'Sondrio' },\n { key: 'TA', label: 'Taranto' },\n { key: 'TE', label: 'Teramo' },\n { key: 'TR', label: 'Terni' },\n { key: 'TO', label: 'Torino' },\n { key: 'TP', label: 'Trapani' },\n { key: 'TN', label: 'Trento' },\n { key: 'TV', label: 'Treviso' },\n { key: 'TS', label: 'Trieste' },\n { key: 'UD', label: 'Udine' },\n { key: 'VA', label: 'Varese' },\n { key: 'VE', label: 'Venezia' },\n { key: 'VB', label: 'Verbano Cusio Ossola' },\n { key: 'VC', label: 'Vercelli' },\n { key: 'VR', label: 'Verona' },\n { key: 'VV', label: 'Vibo Valentia' },\n { key: 'VI', label: 'Vicenza' },\n { key: 'VT', label: 'Viterbo' }\n ]\n };\n}\n","'use strict';\n\n/// <reference types=\"woosmap\" />\n/* global woosmap */\n\nimport { get } from '../libs/Axios';\n\nexport async function initWoosmapScript(woosmapKey) {\n // Create the script tag, set the appropriate attributes\n const script = document.createElement('script');\n script.src = `https://sdk.woosmap.com/map/map.js?key=${woosmapKey}&callback=initMap`;\n script.defer = true;\n\n // The callback function\n window.initMap = function() {\n // JS API is loaded and available\n const event = new Event('woosmap:loaded');\n document.body.dispatchEvent(event);\n };\n\n // Append the 'script' element to 'head'\n document.head.appendChild(script);\n}\n\nexport async function initWoosmapMultiSearchScript() {\n // Create the script tag, set the appropriate attributes\n const event = new Event('woosmap:multisearch:loaded');\n const script = document.createElement('script');\n script.src = `https://sdk.woosmap.com/multisearch/multisearch.js`;\n script.defer = true;\n\n script.onload = () => document.body.dispatchEvent(event);\n\n // Append the 'script' element to 'head'\n document.body.appendChild(script);\n}\n/**\n * @returns {Promise<woosmap.geolocationResponse>}\n */\nexport async function geolocation(key) {\n let result = { success: false };\n try {\n let ipCoord = await get(`https://api.woosmap.com/geolocation/position/?key=${key}`);\n result = { success: true, latitude: ipCoord.data.latitude, longitude: ipCoord.data.longitude };\n } catch (e) {\n console.error(e);\n }\n return result;\n}\n\n/**\n * @typedef {Object} positionLiteral\n * @property {number} lat\n * @property {number} lng\n */\n/**\n * @param {positionLiteral} origin\n * @param {positionLiteral[]} destinations\n */\nexport async function distanceMatrix(origin, destinations, key) {\n let result = { success: false };\n if (destinations.length === 0) return result;\n let url = `https://api.woosmap.com/distance/distancematrix/json?origins=${origin.lat},${origin.lng}&destinations=${destinations[0].lat},${destinations[0].lng}`;\n destinations.slice(1, 200).map((destination) => (url += `|${destination.lat},${destination.lng}`));\n url += `&elements=duration_distance&key=${key}`;\n try {\n const { data } = await get(url);\n result = { ...result, success: true, rows: data.rows };\n } catch (e) {\n console.error(e);\n }\n return result;\n}\n\nexport async function autocompleteLocalties(searchInputId, autocompleteOptions) {\n // eslint-disable-next-line no-undef\n return new woosmap.localities.Autocomplete(searchInputId, autocompleteOptions);\n}\n\nexport function autocompleteMultisearch(woosmapKey) {\n return new woosmap.multisearch({\n apiOrder: ['localities', 'address', 'places'],\n localities: {\n key: woosmapKey,\n fallbackBreakpoint: 0.4,\n params: {\n components: {\n country: ['it']\n },\n language: 'it',\n types: []\n }\n },\n address: {\n key: woosmapKey,\n fallbackBreakpoint: 0.4,\n params: {\n components: {\n country: ['it']\n },\n language: 'it',\n types: []\n }\n },\n places: {\n key: woosmapKey,\n params: {\n components: {\n country: ['it']\n },\n language: 'it',\n types: []\n }\n }\n });\n}\n\nexport function getKmFromDistanceText(distanceText) {\n const unitConversion = {\n cm: 0.00001,\n m: 0.001,\n km: 1\n };\n\n let distancePart = distanceText.split(' ');\n let distanceValue = +distancePart[0];\n let distanceUnit = distancePart[1];\n return unitConversion[distanceUnit.toLowerCase()] * distanceValue;\n}\n\nexport async function reverseGeocoding(key, lat, lng) {\n try {\n const { data } = await get(`https://api.woosmap.com/localities/geocode?key=${key}&latlng=${lat},${lng}`);\n return data;\n } catch (e) {\n console.error(e);\n }\n}\n\nexport function loadWoosmapCSS() {\n var file = document.createElement('link');\n file.setAttribute('rel', 'stylesheet');\n file.setAttribute('href', 'https://sdk.woosmap.com/localities/style.2.0.css');\n document.head.appendChild(file);\n}\n\n/**\n *\n * @param {woosmap.map.LatLng} position\n * @returns { {lat: number, lng: number} }\n */\nexport function getPositionObject(position) {\n return { lat: position.lat(), lng: position.lng() };\n}\n\n/**\n *\n * @param { {status: String, result: Array<any>} } result\n * @returns { Object }\n */\nexport function renderRouteResult(result) {\n const legs = result.routes[0]?.legs[0];\n return {\n end_address: legs?.end_address,\n start_location: legs?.start_location,\n end_location: legs?.end_location,\n distance: legs?.distance.text,\n duration: legs?.duration.text,\n steps: legs?.steps.map((step) => {\n let { instructions, distance, duration } = step;\n let { summary } = instructions;\n return {\n summary,\n distance,\n duration\n };\n })\n };\n}\n\n/**\n *\n * @param {Number} seconds\n * @returns {String}\n */\nfunction formatDuration(seconds) {\n const hours = Math.floor(seconds / 3600);\n const remainingSeconds = seconds % 3600;\n const minutes = Math.floor(remainingSeconds / 60);\n return `${hours} ore ${minutes} minuti`;\n}\n\n// @TODO i seguenti testi sono da spostare sulle traduzioni... (prima o poi)\n/**\n *\n * @param {*} result\n * @returns { Array<any> }\n */\nexport function renderTransitRouteResult(result) {\n return {\n start_location: result.routes[0]?.legs[0]?.start_location?.location,\n routes: result.routes.map((route) => ({\n duration: formatDuration(route.duration),\n legs: route.legs.map((leg) => {\n if (leg.end_location.type === 'place') {\n return 'Sei arrivato a destinazione';\n }\n\n if (leg.travel_mode === 'pedestrian') {\n return `Procedi a piedi verso ${leg.end_location.name}`;\n }\n\n if (leg.travel_mode === 'transit') {\n const { mode, short_name, long_name } = leg.transport;\n\n if (mode === 'bus' || mode === 'lightRail' || mode === 'subway') {\n const transportType = mode === 'bus' ? 'il bus' : mode === 'subway' ? 'la metro' : 'il tram';\n return `Prendi ${transportType} ${short_name || ''} e scendi alla fermata ${leg.end_location.name}`;\n }\n\n if (['highSpeedTrain', 'intercityTrain', 'interRegionalTrain', 'regionalTrain', 'cityTrain'].includes(mode)) {\n return `Prendi il treno ${long_name || ''} e scendi alla fermata ${leg.end_location.name}`;\n }\n\n if (mode === 'ferry') {\n return `Prendi il traghetto da ${leg.start_location.name} verso ${leg.end_location.name}`;\n }\n\n return `Prendi ${mode} e scendi alla fermata ${leg.end_location.name}`;\n }\n\n return 'Percorso non definito';\n })\n }))\n };\n}\n"],"sourceRoot":""}