{"version":3,"sources":["webpack:///./src/client/default/js/components/footerAccordionComponent.js","webpack:///./src/client/default/js/base/baseComponent.js","webpack:///./src/client/default/js/utilities/URLDecoder.js","webpack:///./src/client/default/js/utilities/dataLayerUtils.js"],"names":["footerAccordionComponent","props","handleClick","triggers","content","headerBtn","active","visible","this","$el","querySelectorAll","SELECTORS","forEach","trigger","$on","e","preventDefault","currentTarget","classList","contains","CLASSES","parentElement","querySelector","expandedValue","getAttribute","setAttribute","Array","from","getElementsByTagName","singleLink","link","area","type","url","href","text","innerText","sendNavEventToDataLayer","BaseComponent","element","_componentElement","_checkMessages","compOptions","options","dataset","Object","keys","filter","entry","includes","optionValue","cleanEntry","cleanOptionKey","JSON","parse","replace","convertType","deepFreeze","events","cb","elements","Bean","on","stopPropagation","one","off","fire","container","message","_loading","EMIT","CUSTOM_MESSAGES","LOADER_EVENTS","show","document","body","error","icon","setTimeout","hide","option","optionReturn","key","str","charAt","toLocaleLowerCase","slice","BaseGiaComponent","getPathName","pathName","dontUseCustomPathName","list","urlPathNameTable","split","urlPathNameOrSandbox","length","value","toString","endsWith","indexOf","replaceAll","parsePathName","getCustomPathName","console","log","sendAddOrRemoveProductToDataLayer","eventName","productImpressions","price","breadcrumbs","promotionInfo","window","dataLayer","dataLayerObj","event","ecommerce","items","item_id","id","item_name","name","item_brand","brand","promotion_name","quantity","item_type","dimension53","appendItemCategories","appendPriceAndDiscount","appendListIdAndName","cardSize","appendCardSize","push","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","action","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","location","pathname","item_list_name","size"],"mappings":"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","file":"js/component-footerAccordionComponent-js.chunks.js","sourcesContent":["import BaseComponent from '../base/baseComponent';\nimport { sendNavEventToDataLayer } from '../utilities/dataLayerUtils';\n\nexport default class footerAccordionComponent extends BaseComponent {\n get SELECTORS() {\n return {\n triggers: '.footer-links-header',\n content: '.footer-links-item',\n headerBtn: '.footer-link-header-btn'\n };\n }\n\n get CLASSES() {\n return {\n active: 'is-active',\n visible: 'is-visible'\n };\n }\n\n constructor(props) {\n super(props);\n this.handleClick();\n }\n\n handleClick() {\n const triggers = this.$el.querySelectorAll(this.SELECTORS.triggers);\n\n triggers.forEach((trigger) => {\n this.$on(\n 'click.tabs',\n (e) => {\n e.preventDefault();\n const { currentTarget } = e;\n currentTarget.classList[currentTarget.classList.contains(this.CLASSES.active) ? 'remove' : 'add'](this.CLASSES.active);\n currentTarget.parentElement.querySelectorAll(this.SELECTORS.content).forEach((content) => {\n var visible = content.classList.contains(this.CLASSES.visible);\n content.classList[visible ? 'remove' : 'add'](this.CLASSES.visible);\n });\n let headerBtn = currentTarget.querySelector(this.SELECTORS.headerBtn);\n if (headerBtn) {\n let expandedValue = headerBtn.getAttribute('aria-expanded');\n headerBtn.setAttribute('aria-expanded', !expandedValue || expandedValue === 'false' ? true : false);\n }\n },\n trigger\n );\n });\n\n let allSingleLinks = Array.from(this.$el.getElementsByTagName('a'));\n allSingleLinks.forEach((singleLink) => {\n this.$on(\n 'click',\n function(e) {\n let link = {\n area: 'footer',\n type: 'sitemap',\n url: singleLink.href ? singleLink.href : '',\n text: singleLink.innerText ? singleLink.innerText : ''\n };\n sendNavEventToDataLayer(link);\n },\n singleLink\n );\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","/**\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":""}