{"version":3,"sources":["webpack:///./src/client/default/js/components/modalComponent.js","webpack:///./src/client/default/js/components/digitalEngagementModalComponent.js","webpack:///./src/client/default/js/base/baseComponent.js","webpack:///./src/client/default/js/libs/Axios.js","webpack:///./src/client/default/js/utilities/URLDecoder.js","webpack:///./src/client/default/js/utilities/dataLayerUtils.js"],"names":["ModalComponent","element","afterOpen","afterClose","handleDatalayerObject","$options","trackingEventClose","EMIT","CUSTOM_MESSAGES","TRACKING_EVENTS","trid","reloadForApp","window","location","reload","init","this","MODAL_EVENTS","removePromoBundleQueryParams","immediate","open","handleClick","e","close","show","selector","className","classname","triggerclose","event","MouseEvent","view","bubbles","cancelable","document","querySelector","dispatchEvent","closeLast","isModalOpening","gaeventcategory","gacustomattributes","dataLayer","pushEventToDatalayer","sendEventToTrackingComponent","update","eventCategory","eventAction","gaeventaction","convertToPlain","eventLabel","gaeventlabel","html","tempDivElement","createElement","innerHTML","textContent","innerText","customAttributesObject","dlEventObject","eventText","modalStatus","forEach","attributes","Object","entries","key","value","push","a","$on","preventDefault","trackingEvent","currentTarget","stopImmediatePropagation","isMobileApp","navigator","userAgent","queryParams","URLSearchParams","search","get","delete","BaseComponent","DigitalEngagementModalComponent","getAgentAvailability","link","area","type","url","text","$el","firstElementChild","sendNavEventToDataLayer","wrapper","maiaChat","agentsAvailable","agentsNotAvailable","deWrapper","SELECTORS","dataset","optionEndpoint","data","deEnabled","checkMaiaStatus","classList","add","CLASSES","console","log","_componentElement","setAttribute","_checkMessages","compOptions","options","keys","filter","entry","includes","optionValue","cleanEntry","cleanOptionKey","JSON","parse","replace","convertType","deepFreeze","getAttribute","events","cb","elements","Bean","on","stopPropagation","one","off","fire","container","message","_loading","LOADER_EVENTS","body","error","icon","setTimeout","hide","option","optionReturn","str","charAt","toLocaleLowerCase","slice","BaseGiaComponent","axios","Axios","create","transformRequest","headers","skiptransform","formData","FormData","append","recaptchaToken","googleRecaptchaAction","googleRecaptchaClientSide","Promise","resolve","reject","grecaptcha","ready","execute","action","then","token","defaults","common","interceptors","request","use","config","googleRecaptchaToken","response","commonInterface","CommonInterface","pushState","replaceState","history","redirectUrl","href","hrefUrl","paybackParam","isPaybackPopupActive","indexOf","trialParam","subscriptionTrialModalNotEligibleAfterLogin","fromEntries","res","notificationPush","showNotification","pushPromoPre","length","orderedPush","sort","promoA","promoB","rank","notifications","pushPromoPost","CancelToken","post","all","spread","getPathName","pathName","dontUseCustomPathName","list","urlPathNameTable","split","urlPathNameOrSandbox","toString","endsWith","replaceAll","parsePathName","getCustomPathName","sendAddOrRemoveProductToDataLayer","eventName","productImpressions","price","breadcrumbs","promotionInfo","dataLayerObj","ecommerce","items","item_id","id","item_name","name","item_brand","brand","promotion_name","quantity","item_type","dimension53","appendItemCategories","appendPriceAndDiscount","appendListIdAndName","cardSize","appendCardSize","sendProductClickEventToDataLayer","productToPush","currencycode","event_category","event_action","event_label","product_name","currencyCode","click","actionField","products","sendSelectItemEventToDataLayer","product","tileIndex","productName","qtyincart","index","itemType","item_list_id","sendSelectPromotionEventToDataLayer","promotion_id","creative_name","location_id","sales","sendAddShippingInfoToDataLayer","shippingMethod","shipping_tier","getSelectedShippingMethodID","map","isInternal","isPayback","depth","sendErrorEventToDataLayer","errorLocation","error_name","error_location","event_detail","sendFormInvalidEventToDataLayer","formValidityObj","formId","eventDetail","detail","errors","inputField","target","join","method","item_category","htmlValue","item_category2","item_category3","item_category4","discount","toFixed","itemListName","pathname","item_list_name","size"],"mappings":"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","file":"js/component-digitalEngagementModalComponent-js.chunks.js","sourcesContent":["import BaseComponent from '../base/baseComponent';\n\nexport default class ModalComponent extends BaseComponent {\n  get Messages() {\n    return {\n      [this.CUSTOM_MESSAGES.MODAL_EVENTS.afterClose]: this.removePromoBundleQueryParams\n    };\n  }\n\n  constructor(element) {\n    super(element);\n    /**\n     * @type {Function}\n     */\n    this.afterOpen;\n    /**\n     * @type {Function}\n     */\n    this.afterClose = () => {\n      this.handleDatalayerObject(false);\n\n      if (this.$options.trackingEventClose) {\n        this.EMIT(this.CUSTOM_MESSAGES.TRACKING_EVENTS[this.$options.trackingEventClose], {\n          trid: this.$options.element || null\n        });\n      }\n      if (this.$options.reloadForApp) {\n        window.location.reload();\n      }\n    };\n    this.init();\n  }\n\n  init() {\n    if (this.$options.immediate) {\n      this.open();\n    }\n    this.handleClick();\n  }\n\n  /**\n   * @param {Event} [e]\n   */\n  open(e) {\n    if (this.$options.element && !this.$options.close) {\n      this.EMIT(this.CUSTOM_MESSAGES.MODAL_EVENTS.show, {\n        selector: this.$options.element,\n        className: this.$options.classname || '',\n        afterClose: this.afterClose,\n        afterOpen: this.afterOpen\n      });\n      this.handleDatalayerObject(true);\n    } else if (this.$options.triggerclose) {\n      var event = new MouseEvent('click', {\n        view: window,\n        bubbles: true,\n        cancelable: true\n      });\n      document.querySelector('.cap-changed .vex-close').dispatchEvent(event);\n    } else if (this.$options.closeLast) {\n      this.EMIT(this.CUSTOM_MESSAGES.MODAL_EVENTS.closeLast, {});\n    } else {\n      this.EMIT(this.CUSTOM_MESSAGES.MODAL_EVENTS.close, {});\n    }\n  }\n\n  handleDatalayerObject(isModalOpening) {\n    if ((this.$options.gaeventcategory && this.$options.element && !isModalOpening) || ((this.$options.gaeventcategory || this.$options.gacustomattributes) && isModalOpening)) {\n      if (this.$options.gacustomattributes && typeof this.$options.gacustomattributes === 'object' && window.dataLayer) {\n        this.pushEventToDatalayer(isModalOpening);\n      } else {\n        this.sendEventToTrackingComponent(isModalOpening);\n      }\n    }\n  }\n\n  sendEventToTrackingComponent(isModalOpening) {\n    this.EMIT(this.CUSTOM_MESSAGES.TRACKING_EVENTS.update, {\n      eventCategory: this.$options.gaeventcategory,\n      eventAction: this.$options.gaeventaction ? this.convertToPlain(this.$options.gaeventaction) : isModalOpening ? 'Open' : 'Close',\n      eventLabel: this.$options.gaeventlabel ? this.$options.gaeventlabel : ''\n    });\n  }\n\n  convertToPlain(html) {\n    var tempDivElement = document.createElement('div');\n    tempDivElement.innerHTML = html;\n    return tempDivElement.textContent || tempDivElement.innerText || '';\n  }\n\n  pushEventToDatalayer(isModalOpening) {\n    let customAttributesObject = this.$options.gacustomattributes;\n    let dlEventObject = {\n      event: this.$options.eventText ? this.$options.eventText : 'gaEvent'\n    };\n\n    if (this.$options.gaeventcategory) {\n      dlEventObject['eventCategory'] = this.$options.gaeventcategory;\n    }\n\n    if (this.$options.gaeventaction) {\n      dlEventObject['eventAction'] = this.convertToPlain(this.$options.gaeventaction);\n    } else if (this.$options.modalStatus) {\n      if (isModalOpening) {\n        dlEventObject['eventAction'] = 'Open';\n      } else {\n        dlEventObject['eventAction'] = 'Close';\n      }\n    }\n\n    if (this.$options.gaeventlabel) {\n      dlEventObject['eventLabel'] = this.$options.gaeventlabel;\n    } else if (this.$options.modalStatus) {\n      if (isModalOpening) {\n        dlEventObject['eventLabel'] = 'Open';\n      } else {\n        dlEventObject['eventLabel'] = 'Close';\n      }\n    }\n\n    customAttributesObject.forEach((attributes) => {\n      Object.entries(attributes).forEach(([key, value]) => {\n        dlEventObject[key] = value;\n      });\n    });\n    window.dataLayer.push(dlEventObject);\n  }\n\n  async handleClick() {\n    this.$on('click.modal', (e) => {\n      e.preventDefault();\n      this.open(e);\n      if (this.$options.trackingEvent) {\n        this.EMIT(this.CUSTOM_MESSAGES.TRACKING_EVENTS[this.$options.trackingEvent], {\n          element: e.currentTarget,\n          trid: this.$options.element || null\n        });\n      }\n      e.stopImmediatePropagation();\n    });\n  }\n\n  removePromoBundleQueryParams() {\n    let isMobileApp = window.navigator.userAgent === 'c4-mobile-porting-app' || window.navigator.userAgent === 'c4-mobile-app-new';\n    let queryParams = new URLSearchParams(window.location.search);\n\n    if (queryParams && !!queryParams.get('promobundle') && !isMobileApp) {\n      queryParams.delete('promobundle');\n      if (queryParams.get('smid')) {\n        queryParams.delete('smid');\n      }\n      window.location.search = queryParams;\n    }\n  }\n}\n","import ModalComponent from './modalComponent';\nimport { get } from '../libs/Axios';\nimport { sendNavEventToDataLayer } from '../utilities/dataLayerUtils';\n\nexport default class DigitalEngagementModalComponent extends ModalComponent {\n  get SELECTORS() {\n    return {\n      wrapper: '.js-deWrapper',\n      maiaChat: 'maia-chat'\n    };\n  }\n  get CLASSES() {\n    return {\n      agentsAvailable: 'agents-available',\n      agentsNotAvailable: 'agents-not-available'\n    };\n  }\n  constructor(element) {\n    super(element);\n    this.afterOpen = () => {\n      this.getAgentAvailability();\n      let link = {\n        area: 'top_bar',\n        type: 'portal',\n        url: '',\n        text: this.$el.firstElementChild.innerText\n      };\n      sendNavEventToDataLayer(link);\n    };\n  }\n\n  async getAgentAvailability() {\n    let deWrapper = document.querySelector(this.SELECTORS.wrapper);\n    let url = deWrapper?.dataset.optionEndpoint;\n    try {\n      const { data } = url ? await get(url) : null;\n      if (data?.deEnabled) {\n        this.checkMaiaStatus();\n      } else {\n        deWrapper.classList.add(this.CLASSES.agentsNotAvailable);\n      }\n    } catch (error) {\n      console.log(error);\n      deWrapper.classList.add(this.CLASSES.agentsNotAvailable);\n    }\n  }\n\n  checkMaiaStatus() {\n    let deWrapper = document.querySelector(this.SELECTORS.wrapper);\n    let maiaChatItem = document.querySelector(this.SELECTORS.maiaChat);\n    if (maiaChatItem) {\n      deWrapper.classList.add(this.CLASSES.agentsNotAvailable);\n    } else {\n      deWrapper.classList.add(this.CLASSES.agentsAvailable);\n    }\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","/**\n * @property {string} pathName\n * @property {boolean} dontUseCustomPathName\n *\n * @returns {string}\n */\nexport function getPathName(pathName, dontUseCustomPathName) {\n  let list = dontUseCustomPathName === 'true' ? dontUseCustomPathName : getCustomPathName(pathName);\n  console.log('URLDecoder list: ' + list);\n  return list;\n}\n\nfunction getCustomPathName(pathName) {\n  let urlPathNameTable = pathName.split('/');\n  let urlPathNameOrSandbox = urlPathNameTable[1] === 's' ? 'isSandbox' : urlPathNameTable;\n  return urlPathNameTable[1].length === 0\n    ? 'homepage'\n    : urlPathNameTable[1] === 'p' || urlPathNameTable[1] === 'dettaglio-prodotto'\n    ? 'product-page'\n    : parsePathName(urlPathNameOrSandbox);\n}\n\nfunction parsePathName(value) {\n  let str = value.toString();\n\n  if (str.endsWith(',')) {\n    str = str.slice('', -1);\n  }\n  if (str.endsWith('.html')) {\n    str = str.slice('', -5);\n  }\n  if (str.indexOf(',') == 0) {\n    str = str.slice(1);\n  }\n\n  return str.replaceAll(',', '/');\n}\n","import { getPathName } from '../utilities/URLDecoder';\n\nexport var sendAddOrRemoveProductToDataLayer = function(eventName, productImpressions, price, breadcrumbs, promotionInfo) {\n  if (!eventName || !productImpressions) {\n    return;\n  }\n  if (window.dataLayer) {\n    let dataLayerObj = {\n      event: eventName,\n      ecommerce: {\n        items: [\n          {\n            item_id: productImpressions.id,\n            item_name: productImpressions.name,\n            item_brand: productImpressions.brand,\n            promotion_name: promotionInfo && promotionInfo.name ? promotionInfo.name : '',\n            quantity: productImpressions.quantity || 1,\n            item_type: productImpressions.dimension53\n          }\n        ]\n      }\n    };\n    if (breadcrumbs) {\n      appendItemCategories(breadcrumbs, dataLayerObj.ecommerce.items[0]);\n    }\n    if (price) {\n      appendPriceAndDiscount(price, dataLayerObj.ecommerce.items[0]);\n    }\n    appendListIdAndName(dataLayerObj.ecommerce.items[0]);\n    if (productImpressions.cardSize) {\n      appendCardSize(productImpressions.cardSize, dataLayerObj.ecommerce.items[0]);\n    }\n    window.dataLayer.push(dataLayerObj);\n  }\n};\n\nexport var sendProductClickEventToDataLayer = function(productToPush, currencycode, list) {\n  if (!window.dataLayer) return;\n  window.dataLayer.push({\n    event: 'product click',\n    event_category: 'ecommerce',\n    event_action: 'Product Click',\n    event_label: productToPush.product_name,\n    ecommerce: {\n      currencyCode: currencycode,\n      click: {\n        actionField: {\n          list: list\n        },\n        products: [productToPush]\n      }\n    }\n  });\n};\n\nexport var sendSelectItemEventToDataLayer = function(product, breadcrumbs, tileIndex) {\n  if (!window.dataLayer) return;\n  let dataLayerObj = {\n    event: 'select_item',\n    ecommerce: {\n      items: [\n        {\n          item_id: product.id,\n          item_name: product.productName,\n          promotion_name: product.promotionInfo && product.promotionInfo.name ? product.promotionInfo.name : '',\n          item_brand: product.brand,\n          quantity: product.qtyincart,\n          index: tileIndex,\n          item_type: product.itemType\n        }\n      ]\n    }\n  };\n  if (product.cardSize) {\n    dataLayerObj.ecommerce.items[0].item_list_id = product.cardSize;\n  }\n  if (breadcrumbs) {\n    appendItemCategories(breadcrumbs, dataLayerObj.ecommerce.items[0]);\n  }\n  if (product.price) {\n    appendPriceAndDiscount(product.price, dataLayerObj.ecommerce.items[0]);\n  }\n  appendListIdAndName(dataLayerObj.ecommerce.items[0]);\n  window.dataLayer.push(dataLayerObj);\n};\n\nexport var sendSelectPromotionEventToDataLayer = function(product) {\n  if (!window.dataLayer) return;\n  if ((product.promotionInfo && product.promotionInfo.name) || (product.price && product.price.list && product.price.list)) {\n    let dataLayerObj = {\n      event: 'select_promotion',\n      ecommerce: {\n        items: [\n          {\n            item_id: product.id,\n            item_name: product.productName,\n            promotion_name: product.promotionInfo && product.promotionInfo.name ? product.promotionInfo.name : '',\n            promotion_id: product.promotionInfo && product.promotionInfo.id ? product.promotionInfo.id : product.promotionInfo.name ? product.promotionInfo.name : '',\n            creative_name: 'product card',\n            location_id: 'product listing',\n            price: product.price.sales.value,\n            item_type: product.itemType\n          }\n        ]\n      }\n    };\n    window.dataLayer.push(dataLayerObj);\n  }\n};\n\nexport var getItemListName = function(breadcrumbs) {\n  var itemListName = '';\n  for (let i = 0; i < breadcrumbs.length; i++) {\n    itemListName = itemListName + breadcrumbs[i].categoryId;\n    if (i + 1 !== breadcrumbs.length) {\n      itemListName = itemListName + '/';\n    }\n  }\n  return itemListName;\n};\n\nexport var sendAddShippingInfoToDataLayer = function(products, shippingMethod) {\n  if (window.dataLayer) {\n    window.dataLayer.push({\n      event: 'add_shipping_info',\n      ecommerce: {\n        shipping_tier: getSelectedShippingMethodID(shippingMethod),\n        items: products.map((product) => {\n          var breadcrumbs = product.breadcrumbs;\n          let dataLayerObj = {\n            item_id: product.id,\n            item_name: product.productName,\n            item_brand: product.brand,\n            quantity: product.qtyincart,\n            item_type: product.itemType\n          };\n          appendItemCategories(breadcrumbs, dataLayerObj);\n          appendPriceAndDiscount(product.price, dataLayerObj);\n          return dataLayerObj;\n        })\n      }\n    });\n  }\n};\n\nexport var sendNavEventToDataLayer = function(link) {\n  if (!window.dataLayer) return;\n  let isInternal = !link.url || link.url.includes('/s/carrefour-IT/') || link.url.includes('carrefour.it/');\n  window.dataLayer.push({\n    event: link.isPayback ? 'button_click' : 'nav_click',\n    area: link.area,\n    type: link.type,\n    action: isInternal ? 'redirect_internal' : 'outbound',\n    depth: 'level_0',\n    text: link.text\n  });\n};\nexport var sendErrorEventToDataLayer = function(errorLocation, error) {\n  if (window.dataLayer) {\n    window.dataLayer.push({\n      event: 'error',\n      error_name: error,\n      error_location: errorLocation,\n      event_detail: error\n    });\n  }\n};\n\nexport var sendFormInvalidEventToDataLayer = function(formValidityObj, formId) {\n  if (window.dataLayer) {\n    let eventDetail = [];\n    if (formValidityObj && formValidityObj.detail && formValidityObj.detail.errors) {\n      eventDetail = formValidityObj.detail.errors.map((inputField) => {\n        return inputField.id;\n      });\n    }\n    window.dataLayer.push({\n      event: 'error',\n      error_name: 'form_filed_error',\n      error_location: formId ? formId : formValidityObj && formValidityObj.target && formValidityObj.target.id ? formValidityObj.target.id : 'form',\n      event_detail: eventDetail.join('|')\n    });\n  }\n};\n\nvar getSelectedShippingMethodID = function(method) {\n  switch (method) {\n    case 'pickup_in_store':\n      return 'click_and_collect';\n    case 'drive':\n      return 'click_and_collect_drive';\n    case 'deliveryExpress':\n      return 'home_delivery_same_day';\n    case 'delivery':\n      return 'home_delivery_next_day';\n    case 'deliverySatellite':\n      return 'home_delivery_next_day';\n\n    default:\n      return null;\n  }\n};\n\nlet appendItemCategories = function(breadcrumbs, dataLayerObj) {\n  dataLayerObj.item_category = breadcrumbs && breadcrumbs.length > 1 ? breadcrumbs[1].htmlValue.replace(/`/g, \"'\") : '';\n  dataLayerObj.item_category2 = breadcrumbs && breadcrumbs.length > 2 ? breadcrumbs[2].htmlValue.replace(/`/g, \"'\") : '';\n  dataLayerObj.item_category3 = breadcrumbs && breadcrumbs.length > 3 ? breadcrumbs[3].htmlValue.replace(/`/g, \"'\") : '';\n  dataLayerObj.item_category4 = breadcrumbs && breadcrumbs.length > 4 ? breadcrumbs[4].htmlValue.replace(/`/g, \"'\") : '';\n};\n\nlet appendPriceAndDiscount = function(price, dataLayerObj) {\n  dataLayerObj.discount = price.list && price.list.value ? (price.list.value - price.sales.value).toFixed(2) : '';\n  dataLayerObj.price = price.sales.value;\n};\n\nlet appendListIdAndName = function(dataLayerObj) {\n  var itemListName;\n  if (document.location.pathname.indexOf('wishlist') > 0) {\n    itemListName = 'le_mie_liste';\n  } else if (dataLayerObj.item_list_id) {\n    itemListName = getPathName(document.location.pathname, false) + dataLayerObj.item_list_id;\n  } else {\n    itemListName = getPathName(document.location.pathname, false);\n  }\n  if (document.querySelector('.minicart-sidebar-wrapper.toggleActive')) {\n    dataLayerObj.item_list_id = 'mini-cart';\n    dataLayerObj.item_list_name = 'mini-cart';\n  } else if (document.querySelector('.zero-search-results')) {\n    dataLayerObj.item_list_id = 'searchresult_0';\n    dataLayerObj.item_list_name = 'searchresult_0';\n  } else {\n    dataLayerObj.item_list_id = itemListName;\n    dataLayerObj.item_list_name = itemListName;\n  }\n};\n\nexport var appendCardSize = function(size, dataLayerObj) {\n  var itemListName;\n  let pathName = getPathName(document.location.pathname, false);\n  if (size === 'Half Width') {\n    itemListName = pathName + '_card_single';\n  } else {\n    itemListName = pathName + '_card_double';\n  }\n  if (dataLayerObj) {\n    dataLayerObj.item_list_id = itemListName;\n    dataLayerObj.item_list_name = itemListName;\n  } else {\n    return itemListName;\n  }\n};\n"],"sourceRoot":""}