{"version":3,"sources":["webpack:///./src/client/default/js/components/WoosmapMultiSearchComponent.js","webpack:///./src/client/default/js/base/baseComponent.js","webpack:///./src/client/default/js/libs/Axios.js","webpack:///./src/client/default/js/utilities/woosmapUtils.js"],"names":["WoosmapMultiSearchComponent","elm","parentNode","$el","clearPositionSelector","querySelector","searchContainerSelector","storeCity","$options","initWoosmapMultiSearchScript","document","body","addEventListener","woosmapLoaded","bind","customEventBus","on","triggerAutocomplete","$on","debounce","autocomplete","inputKeyboardInteraction","autocompleteBlur","clearPosition","this","wmkey","previousSearch","pacContainer","createElement","classList","add","typing","value","autocompleteInstance","autocompleteMulti","then","results","renderPredictions","catch","console","error","autocompleteMultisearch","WOOSMAP_KEY","e","preventDefault","remove","CLASSES","clearList","currentTarget","inputValue","trim","place","PAC_CONTAINER","appendChild","length","keyCode","PREVIOUS_SEARCH","keyMap","Enter","ArrowDown","ArrowUp","actionMap","index","numberSelected","selectAddress","arrowSelect","activeKey","code","Object","keys","find","key","address","a","id","api","detailsMulti","i","input","selectedAddress","dataset","getAutocompleteDetails","details","blur","description","emit","presel","parentElement","n","options","querySelectorAll","num","fromTrigger","forEach","result","itemList","setAttribute","innerHTML","highlight","className","firstChild","click","el","BaseComponent","element","_componentElement","_checkMessages","compOptions","filter","entry","includes","optionValue","cleanEntry","cleanOptionKey","JSON","parse","replace","convertType","deepFreeze","getAttribute","events","cb","elements","Bean","stopPropagation","one","off","fire","container","message","_loading","EMIT","CUSTOM_MESSAGES","LOADER_EVENTS","show","icon","setTimeout","hide","option","optionReturn","str","charAt","toLocaleLowerCase","slice","BaseGiaComponent","axios","Axios","create","transformRequest","data","headers","skiptransform","entries","formData","FormData","append","recaptchaToken","googleRecaptchaAction","googleRecaptchaClientSide","Promise","resolve","reject","window","grecaptcha","ready","execute","action","token","defaults","common","interceptors","request","use","config","googleRecaptchaToken","response","commonInterface","CommonInterface","pushState","replaceState","history","redirectUrl","location","href","hrefUrl","paybackParam","isPaybackPopupActive","indexOf","trialParam","subscriptionTrialModalNotEligibleAfterLogin","fromEntries","res","notificationPush","showNotification","pushPromoPre","orderedPush","sort","promoA","promoB","rank","notifications","pushPromoPost","CancelToken","get","post","all","spread","initWoosmapScript","woosmapKey","script","src","defer","initMap","event","Event","dispatchEvent","head","onload","geolocation","success","ipCoord","latitude","longitude","distanceMatrix","origin","destinations","url","lat","lng","map","destination","rows","autocompleteLocalties","searchInputId","autocompleteOptions","woosmap","localities","Autocomplete","multisearch","apiOrder","fallbackBreakpoint","params","components","country","language","types","places","getKmFromDistanceText","distanceText","distancePart","split","distanceValue","cm","m","km","toLowerCase","reverseGeocoding","getPositionObject","position","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","type","travel_mode","name","transport","mode","short_name","long_name"],"mappings":"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","file":"js/component-WoosmapMultiSearchComponent-js.chunks.js","sourcesContent":["import { debounce } from 'underscore';\nimport BaseComponent from '../base/baseComponent';\nimport customEventBus from '../libs/Eventbus';\nimport { autocompleteMultisearch, initWoosmapMultiSearchScript } from '../utilities/woosmapUtils';\n\nexport default class WoosmapMultiSearchComponent extends BaseComponent {\n  get WOOSMAP_KEY() {\n    return this.$options.wmkey;\n  }\n\n  get PREVIOUS_SEARCH() {\n    if (!this.previousSearch) {\n      this.previousSearch = '';\n    }\n    return this.previousSearch;\n  }\n\n  get PAC_CONTAINER() {\n    if (!this.pacContainer) {\n      this.pacContainer = document.createElement('div');\n      this.pacContainer.classList.add('pac-container');\n      this.pacContainer.classList.add('maps');\n    }\n    return this.pacContainer;\n  }\n\n  get CLASSES() {\n    return {\n      typing: 'typing'\n    };\n  }\n\n  constructor(elm) {\n    super(elm);\n\n    const { parentNode } = this.$el;\n\n    this.clearPositionSelector = parentNode.querySelector('.clear-position');\n    this.searchContainerSelector = parentNode;\n    this.storeCity = this.$options.storeCity;\n\n    initWoosmapMultiSearchScript();\n\n    // events\n    document.body.addEventListener('woosmap:multisearch:loaded', this.woosmapLoaded.bind(this));\n\n    customEventBus.on('woosmap:multisearch:autocomplete', this.triggerAutocomplete.bind(this));\n\n    this.$on('input', debounce(this.autocomplete.bind(this), 400), this.$el);\n    this.$on('keydown', this.inputKeyboardInteraction.bind(this), this.$el);\n    this.$on('blur', this.autocompleteBlur.bind(this), this.$el);\n    this.$on('click', this.clearPosition.bind(this), this.clearPositionSelector);\n  }\n\n  triggerAutocomplete({ value }) {\n    this.$el.value = value;\n    this.autocompleteInstance\n      .autocompleteMulti(value)\n      .then((results) => this.renderPredictions(results, this.$el, true))\n      .catch(console.error);\n  }\n\n  woosmapLoaded() {\n    this.autocompleteInstance = autocompleteMultisearch(this.WOOSMAP_KEY);\n  }\n\n  clearPosition(e) {\n    e.preventDefault();\n    this.$el.value = '';\n    this.searchContainerSelector.classList.remove(this.CLASSES.typing);\n    this.clearList();\n  }\n\n  autocomplete(e) {\n    const { currentTarget } = e;\n    const inputValue = currentTarget.value.trim();\n    const place = this.PAC_CONTAINER;\n\n    const parentNode = currentTarget.parentNode;\n    parentNode.appendChild(place);\n\n    if (inputValue.length === 0 && e.keyCode === 8) {\n      parentNode.classList.remove(this.CLASSES.typing);\n      this.clearList();\n    } else {\n      parentNode.classList.add(this.CLASSES.typing);\n    }\n\n    if (inputValue !== this.PREVIOUS_SEARCH) {\n      this.previousSearch = inputValue;\n\n      if (inputValue.length > 0) {\n        this.autocompleteInstance\n          .autocompleteMulti(inputValue)\n          .then((results) => this.renderPredictions(results, currentTarget))\n          .catch(console.error);\n      }\n    }\n\n    if (place) {\n      if (inputValue.length > 1 && e.keyCode !== 13) {\n        place.classList.add('not-found');\n      } else {\n        place.classList.remove('not-found');\n      }\n    }\n  }\n\n  inputKeyboardInteraction(e) {\n    const keyMap = {\n      Enter: 13,\n      ArrowDown: 40,\n      ArrowUp: 38\n    };\n\n    const actionMap = {\n      Enter: () => {\n        e.preventDefault();\n        const index = this.numberSelected > 0 ? this.numberSelected - 1 : 0;\n        this.selectAddress(index, e.currentTarget);\n      },\n      ArrowDown: () => this.arrowSelect(1),\n      ArrowUp: () => this.arrowSelect(-1)\n    };\n\n    const activeKey = e.code || Object.keys(keyMap).find((key) => keyMap[key] === e.keyCode);\n\n    if (activeKey && actionMap[activeKey]) {\n      actionMap[activeKey]();\n    }\n  }\n\n  async getAutocompleteDetails(address) {\n    const { id, api } = address;\n    return await this.autocompleteInstance.detailsMulti({ id, api });\n  }\n\n  async selectAddress(i, input) {\n    if (!this.selectedAddress) {\n      return;\n    }\n\n    const { autocomplete } = input.dataset;\n\n    let index = i || 0;\n    let address = this.selectedAddress[index];\n    let details = await this.getAutocompleteDetails(address);\n\n    this.PAC_CONTAINER.classList.add('d-none');\n    input.blur();\n    input.value = address.description;\n    customEventBus.emit('woosmap:select', { autocomplete, details });\n  }\n\n  autocompleteBlur(e) {\n    this.numberSelected = 0;\n    let presel = this.$el.parentElement.querySelector('.pac-item-selected');\n    if (presel) {\n      presel.classList.remove('pac-item-selected');\n    }\n    let place = this.PAC_CONTAINER;\n    if (place) {\n      place.classList.remove('not-found');\n    }\n  }\n\n  arrowSelect(n) {\n    let options = this.$el.parentNode.querySelectorAll('.pac-item');\n    let presel = this.$el.parentNode.querySelector('.pac-item-selected');\n    if (presel) {\n      presel.classList.remove('pac-item-selected');\n    }\n\n    let num = this.numberSelected + n;\n    if (num > options.length) {\n      num = 1;\n    } else if (num < 1) {\n      num = options.length;\n    }\n    this.numberSelected = num;\n    options[num - 1].classList.add('pac-item-selected');\n  }\n\n  renderPredictions(results, input, fromTrigger) {\n    this.clearList();\n    this.numberSelected = 0;\n\n    if (!results || results.length === 0) {\n      this.selectedAddress = null;\n      return;\n    }\n\n    this.selectedAddress = results;\n\n    results.forEach((result, i) => {\n      let itemList = document.createElement('p');\n      itemList.setAttribute('class', 'pac-item');\n      itemList.setAttribute('placeid', result.id);\n      itemList.setAttribute('api', result.api);\n      itemList.innerHTML = result.highlight;\n\n      this.$on('click', this.selectAddress.bind(this, i, input), itemList);\n      this.PAC_CONTAINER.appendChild(itemList);\n    });\n\n    if (results.length > 0) {\n      this.PAC_CONTAINER.className = 'pac-container predictions maps ' + results[0].api;\n    }\n\n    customEventBus.emit('woosmap:predictions', results);\n\n    if (fromTrigger && this.storeCity) {\n      this.PAC_CONTAINER.firstChild.click();\n    }\n  }\n\n  clearList() {\n    this.$el.parentNode.querySelectorAll('.pac-item').forEach((el) => el.remove());\n    customEventBus.emit('woosmap:clear');\n  }\n}\n","/* eslint-disable new-cap */\n/* eslint-disable valid-jsdoc */\n/* eslint-disable no-underscore-dangle */\n\nimport Bean from 'bean';\nimport deepFreeze from '../utilities/freeze';\nimport BaseGiaComponent from './baseGiaComponent';\n\nexport default class BaseComponent extends BaseGiaComponent {\n  /**\n   * @returns {HTMLElement}\n   */\n  get $el() {\n    return /** @type {HTMLElement} */ (this._componentElement);\n  }\n\n  get $options() {\n    const compOptions = {};\n    const options = { ...this.$el.dataset };\n    const optionsEntires = Object.keys(options).filter((entry) => entry.includes('option'));\n    optionsEntires.forEach((entry) => {\n      const cleanEntry = BaseComponent.cleanOptionKey(entry);\n      let optionValue;\n      if (options[entry].includes('{') && options[entry].includes('}')) {\n        optionValue = JSON.parse(options[entry].replace(/'/g, '\"'));\n      } else {\n        optionValue = BaseComponent.convertType(options[entry]);\n      }\n      compOptions[cleanEntry] = optionValue;\n    });\n    return deepFreeze(compOptions);\n  }\n\n  get COMPONENT_NAME() {\n    return this.$el.getAttribute('data-component');\n  }\n\n  /**\n   *\n   * constructor\n   *\n   * @param {Element} element\n   */\n  constructor(element) {\n    super(element);\n    this._componentElement = element;\n    this._componentElement.setAttribute('data-component-init', 'true');\n    this._checkMessages();\n  }\n\n  static convertType(option) {\n    let optionReturn;\n    switch (option) {\n      case 'false':\n        optionReturn = false;\n        break;\n      case 'true':\n        optionReturn = true;\n        break;\n      case 'null':\n        optionReturn = null;\n        break;\n      default:\n        optionReturn = option;\n        break;\n    }\n\n    return optionReturn;\n  }\n\n  static cleanOptionKey(key) {\n    const str = key.replace('option', '');\n    return `${str.charAt(0).toLocaleLowerCase()}${str.slice(1)}`;\n  }\n\n  /**\n   *\n   * $on\n   *\n   * @param {String} events\n   * @param {Function} cb\n   * @param {Element} [element = this.$el]\n   * @param {Array|String|Element} [elements = null]\n   */\n  $on(events, cb, element = this.$el, elements = null) {\n    if (!element || !events || !cb) return;\n    if (!elements) {\n      Bean.on(element, events, (e) => {\n        if (e) e.stopPropagation();\n        cb(e);\n      });\n    } else {\n      Bean.on(element, events, elements, (e) => {\n        if (e) e.stopPropagation();\n        cb(e);\n      });\n    }\n  }\n\n  /**\n   *\n   * $one\n   *\n   * @param {String} events\n   * @param {Function} cb\n   * @param {Element} [element = this.$el]\n   */\n  $one(events, cb, element = this.$el) {\n    Bean.one(element, events, cb);\n  }\n\n  /**\n   *\n   * $off\n   *\n   * @param {String} events\n   * @param {Element} [element = this.$el]\n   */\n  $off(events, element = this.$el) {\n    Bean.off(element, events);\n  }\n\n  /**\n   *\n   * $fire\n   *\n   * @param {String} events\n   * @param {Element} [element = this.$el]\n   */\n  $fire(events, element = this.$el) {\n    Bean.fire(element, events);\n  }\n\n  /**\n   *\n   * Activate loader\n   *\n   * @param {HTMLElement} [container]\n   * @param {String} [message]\n   */\n  loading(container, message) {\n    this._loading = true;\n    this.EMIT(this.CUSTOM_MESSAGES.LOADER_EVENTS.show, {\n      container: container || document.body,\n      message: message ?? null\n    });\n  }\n\n  /**\n   *\n   * Deactivate loader\n   *\n   * @param {HTMLElement} [container]\n   * @param {String} [message]\n   * @param {Boolean} [error=false]\n   * @param {String} [icon]\n   */\n  endLoading(container, message, error = false, icon) {\n    this._loading = false;\n    setTimeout(() => {\n      if (!this._loading) {\n        this.EMIT(this.CUSTOM_MESSAGES.LOADER_EVENTS.hide, {\n          container: container || document.body,\n          message,\n          error,\n          icon\n        });\n      }\n    }, 400);\n  }\n}\n","import Axios from 'axios';\nimport CommonInterface from '../base/commonInterface';\nimport CustomMessages from '../constants/customMessages';\n\n\nconst axios = Axios.create({\n  transformRequest: [function (data, headers) {\n    if (headers && headers.skiptransform) {\n      delete headers.skiptransform;\n      return data;\n    }\n    if (data && Object.entries(data)) {\n      const formData = new FormData();\n      for (const [key, value] of Object.entries(data)) {\n        formData.append(key, value);\n      }\n      return formData;\n    }\n  }],\n});\n\nconst recaptchaToken = async ({ googleRecaptchaAction, googleRecaptchaClientSide }) => new Promise((resolve, reject) => {\n  window.grecaptcha.ready(() => {\n    window.grecaptcha.execute(googleRecaptchaClientSide, { action: googleRecaptchaAction }).then((token) => {\n      resolve(token);\n    });\n  });\n});\n\naxios.defaults.headers.common['X-Requested-With'] = 'XMLHttpRequest';\n\n// Add a request interceptor\naxios.interceptors.request.use(async (config) => {\n  // Do something before request is sent\n  if (config.data && config.data.googleRecaptchaAction && config.data.googleRecaptchaClientSide && window.grecaptcha) {\n    const token = await recaptchaToken(config.data);\n    config.data.googleRecaptchaToken = token;\n    return config;\n  }\n  return config;\n}, function (error) {\n  // Do something with request error\n  return Promise.reject(error);\n});\n\n// Add a response interceptor\naxios.interceptors.response.use(function (response) {\n  let commonInterface = new CommonInterface();\n  if (response.data && response.data.pushState || response.data.replaceState) {\n    response.data.pushState && history.pushState({}, '', response.data.pushState);\n    response.data.replaceState && history.replaceState({}, '', response.data.replaceState);\n    if (response.data.redirectUrl) {\n      setTimeout(() => {\n        location.href = response.data.redirectUrl;\n      }, 500);\n    }\n  }\n  else if (response.data && response.data.redirectUrl) {\n    let hrefUrl=response.data.redirectUrl;\n    let paybackParam = '';\n    if (response.data.isPaybackPopupActive) {\n      paybackParam = hrefUrl.indexOf('?') > -1 ? '&isPaybackPopupActive=true' : '?isPaybackPopupActive=true';\n    }\n    hrefUrl =hrefUrl+paybackParam;\n    let trialParam = '';\n    if (response.data.subscriptionTrialModalNotEligibleAfterLogin) {\n      trialParam = hrefUrl.indexOf('?') > -1 ? '&subscriptionTrialModalNotEligibleAfterLogin=true' : '?subscriptionTrialModalNotEligibleAfterLogin=true';\n    } \n    location.href = hrefUrl+trialParam;\n  }\n  if (response.data && response.data.error) {\n    if(response.config.data instanceof FormData) {\n      response.config.data = Object.fromEntries(response.config.data);\n      response.config.headers['Content-Type'] = \"application/json\"\n    }\n    commonInterface.EMIT(`error.${response.data.error}`, {res: response});\n  }\n\n  if (response.data && response.data.notificationPush && response.data.notificationPush.showNotification) {\n    commonInterface.EMIT(`notification:push`, response.data.notificationPush);\n  }\n\n  if (response.data && response.data.pushPromoPre && response.data.pushPromoPre.length > 0) {\n    const orderedPush = response.data.pushPromoPre.sort(function(promoA, promoB) {\n      return promoA.rank > promoB.rank ? -1 : promoB.rank > promoA.rank ? 1 : 0;\n    });\n    commonInterface.EMIT(`notification:pushFirstAvailable`, { notifications: orderedPush });\n  }\n  \n  if (response.data && response.data.pushPromoPost) {\n    commonInterface.EMIT(`notification:pushall`, response.data.pushPromoPost);\n  }\n\n\n  // Any status code that lie within the range of 2xx cause this function to trigger\n  // Do something with response data\n  return response;\n}, function (error) {\n  if (error.response?.data && error.response?.data?.redirectUrl) {\n    location.href = error.response.data.redirectUrl;\n  }\n\n  // Any status codes that falls outside the range of 2xx cause this function to trigger\n  // Do something with response error\n  return Promise.reject(error);\n});\n\nexport const { CancelToken } = Axios;\n\nexport const {\n  get, post, all, spread, request\n} = axios;\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":""}