{"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":""}