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