{"version":3,"sources":["webpack:///./src/client/default/js/components/productTileComponent.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":["ProductTileComponent","_BaseComponent","element","_this","_classCallCheck","_callSuper","handleClick","handlePromoCatClick","handleChangePromoPushTitleInAvancassa","_inherits","_createClass","key","value","pricebookPromoLabel","this","$el","querySelector","isAvancassa","$options","avancassa","_this$$el$closest","_promoLabelAvancassa$","promoLabelAvancassa","closest","classList","add","appendChild","contains","str","toString","endsWith","slice","indexOf","replaceAll","_this2","addEventListener","e","_this2$$el$querySelec","iscategory","isVolantiniTile","window","location","hash","currentUrl","href","prevPosition","split","newHash","replace","getPosition","newUrl","history","replaceState","dataLayer","productToPush","currencycode","dataset","currencyCode","productTile","JSON","parse","productJson","_this2$$el$closest","_this2$$el$closest2","list","getPathName","document","pathname","vdglist","sendProductClickEventToDataLayer","EMIT","CUSTOM_MESSAGES","TRACKING_EVENTS","update","eventCategory","eventAction","eventLabel","activeElement","className","match","target","triggerSelectItemEvent","position","offsetTop","offsetParent","compensate","val","modifier","body","url","lastSegment","filter","Boolean","pop","join","_this3","promocat","$on","currentTarget","optionGaeventcategory","optionGaeventaction","optionGaeventlabel","cardSize","qtyincart","editorialProductCard","product","id","productName","name","promotionInfo","productPromotionInfo","price","productPrice","brand","itemType","dimension53","parentWrapper","tileIndex","Array","from","querySelectorAll","findIndex","sendSelectItemEventToDataLayer","productBreadcrumbs","sendSelectPromotionEventToDataLayer","BaseComponent","_BaseGiaComponent","_componentElement","setAttribute","_checkMessages","get","compOptions","options","_objectSpread","Object","keys","entry","includes","forEach","optionValue","cleanEntry","cleanOptionKey","convertType","deepFreeze","getAttribute","events","cb","arguments","length","undefined","elements","Bean","on","stopPropagation","one","off","fire","container","message","_loading","LOADER_EVENTS","show","error","icon","setTimeout","hide","option","optionReturn","concat","charAt","toLocaleLowerCase","BaseGiaComponent","pathName","dontUseCustomPathName","urlPathNameTable","urlPathNameOrSandbox","parsePathName","getCustomPathName","console","log","sendAddOrRemoveProductToDataLayer","eventName","productImpressions","breadcrumbs","dataLayerObj","event","ecommerce","items","item_id","item_name","item_brand","promotion_name","quantity","item_type","appendItemCategories","appendPriceAndDiscount","appendListIdAndName","appendCardSize","push","event_category","event_action","event_label","product_name","click","actionField","products","index","item_list_id","promotion_id","creative_name","location_id","sales","sendAddShippingInfoToDataLayer","shippingMethod","shipping_tier","getSelectedShippingMethodID","map","sendNavEventToDataLayer","link","isInternal","isPayback","area","type","action","depth","text","sendErrorEventToDataLayer","errorLocation","error_name","error_location","event_detail","sendFormInvalidEventToDataLayer","formValidityObj","formId","eventDetail","detail","errors","inputField","method","item_category","htmlValue","item_category2","item_category3","item_category4","discount","toFixed","itemListName","item_list_name","size"],"mappings":"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","file":"js/component-productTileComponent-js.chunks.js","sourcesContent":["import BaseComponent from '../base/baseComponent';\nimport { sendSelectItemEventToDataLayer, sendProductClickEventToDataLayer, sendSelectPromotionEventToDataLayer } from '../utilities/dataLayerUtils';\n\nimport { match } from '../utilities/resolutionHandler';\nimport { getPathName } from '../utilities/URLDecoder';\n\nexport default class ProductTileComponent extends BaseComponent {\n constructor(element) {\n super(element);\n this.handleClick();\n this.handlePromoCatClick();\n this.handleChangePromoPushTitleInAvancassa();\n }\n\n //Changing promo label in avancassa with offer promo label (i.e: offerta, payback, etc ..)\n handleChangePromoPushTitleInAvancassa() {\n let pricebookPromoLabel = this.$el.querySelector('span[data-option-pricebook-description]');\n let isAvancassa = this.$options.avancassa && this.$options.avancassa === true;\n if (pricebookPromoLabel && isAvancassa) {\n let promoLabelAvancassa = this.$el.closest('.promo-push-cart')?.querySelector('.promo-label');\n if (promoLabelAvancassa) {\n promoLabelAvancassa.querySelector('span')?.classList.add('d-none');\n promoLabelAvancassa.appendChild(pricebookPromoLabel);\n }\n }\n }\n\n isVolantiniTile() {\n return this.$el.classList.contains('flyer-tile');\n }\n\n 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\n handleClick() {\n this.$el.addEventListener('click', (e) => {\n if ((this.$options.iscategory || this.isVolantiniTile()) && window.location.hash.indexOf('position') > -1) {\n let hash = window.location.hash;\n let currentUrl = window.location.href;\n let prevPosition = hash.split('position=')[1];\n let newHash = hash.replace(prevPosition, this.getPosition(this.$el));\n\n let newUrl = currentUrl.replace(hash, newHash);\n window.history.replaceState('', '', newUrl);\n }\n if (!window.dataLayer) return;\n const currencycode = this.$el.querySelector('.add-to-cart')?.dataset.currencyCode;\n let productToPush;\n const productTile = this.$el.closest('.product.tile');\n if (productTile) {\n productToPush = JSON.parse(productTile.dataset.productJson);\n }\n if (productToPush) {\n let list = getPathName(document.location.pathname, this.$options.vdglist);\n if (this.$el.closest('.zero-search-results')) {\n list = 'searchresult_0';\n }\n if (this.$el.closest('.editorial-product-card')?.classList.contains('half-width')) list = list + '_card_single';\n else if (this.$el.closest('.editorial-product-card')?.classList.contains('full-width')) list = list + '_card_double';\n\n sendProductClickEventToDataLayer(productToPush, currencycode, list);\n }\n if (this.isVolantiniTile()) {\n this.EMIT(this.CUSTOM_MESSAGES.TRACKING_EVENTS.update, {\n eventCategory: 'Volantini',\n eventAction: 'Products',\n eventLabel: 'Open'\n });\n } else {\n let isTooltip = document.activeElement.className.match('tooltip') || e.target.className.match('tooltip') || e.target.className.match('discount');\n if (!isTooltip) {\n this.triggerSelectItemEvent();\n }\n }\n });\n }\n\n getPosition(element) {\n var position = 0;\n\n while (element) {\n position += element.offsetTop;\n element = element.offsetParent;\n }\n\n return this.compensate(position);\n }\n\n compensate(val) {\n let infostrip = document.querySelector('.information-strip.is-visible');\n let modifier = 0;\n if (infostrip) {\n modifier = modifier + 50;\n }\n if (match(null, 'md')) {\n return val - 170 - modifier;\n } else if (document.body.classList.contains('push-app-in')) {\n return val - 180 - modifier;\n } else {\n return val - 130 - modifier;\n }\n }\n\n getLastSegment(url) {\n if (url) {\n let lastSegment = url\n .split('/')\n .filter(Boolean)\n .pop();\n return (\n lastSegment\n .split('.')\n .slice(0, -1)\n .join('.') || lastSegment\n );\n } else {\n return '';\n }\n }\n\n handlePromoCatClick() {\n let promocat = this.$el.querySelector('.promocat');\n if (promocat) {\n this.$on(\n 'click.link',\n (e) => {\n if (e.currentTarget.dataset.optionGaeventcategory && e.currentTarget.dataset.optionGaeventaction) {\n this.EMIT(this.CUSTOM_MESSAGES.TRACKING_EVENTS.update, {\n eventCategory: e.currentTarget.dataset.optionGaeventcategory,\n eventAction: e.currentTarget.dataset.optionGaeventaction,\n eventLabel: e.currentTarget.dataset.optionGaeventlabel\n });\n }\n },\n promocat\n );\n }\n }\n\n triggerSelectItemEvent() {\n let qtyincart = 0;\n let cardSize;\n if (this.$el.querySelector('.add-to-cart.show-quantity')) {\n qtyincart = this.$el.querySelector('.js-itemquantity').value;\n }\n const editorialProductCard = this.$el.closest('.editorial-product-card');\n if (editorialProductCard && editorialProductCard.classList.contains('half-width')) {\n cardSize = '_card_single';\n } else if (editorialProductCard && editorialProductCard.classList.contains('full-width')) {\n cardSize = '_card_double';\n }\n let product = {\n id: JSON.parse(this.$el.closest('.product.tile').dataset.productJson).id,\n productName: JSON.parse(this.$el.closest('.product.tile').dataset.productJson).name,\n promotionInfo: this.$options.productPromotionInfo,\n price: this.$options.productPrice,\n qtyincart: qtyincart,\n brand: JSON.parse(this.$el.closest('.product.tile').dataset.productJson).brand,\n itemType: JSON.parse(this.$el.closest('.product.tile').dataset.productJson).dimension53,\n cardSize: cardSize\n };\n //Element glide__slides for vivi di gusto, multisearch and spesa online. Element product-grid for specific category.\n let parentWrapper = this.$el.closest('.product-grid')\n ? this.$el.closest('.product-grid')\n : this.$el.closest('.glide__slides')\n ? this.$el.closest('.glide__slides')\n : this.$el.closest('.editorial-product-card')\n ? this.$el.closest('.editorial-product-card')\n : this.$el.closest('.js-tile-container');\n if (parentWrapper) {\n let tileIndex = Array.from(parentWrapper.querySelectorAll('.product.tile')).findIndex((productTile) => {\n return productTile.dataset && productTile.dataset.productJson && JSON.parse(productTile.dataset.productJson).id === product.id;\n });\n sendSelectItemEventToDataLayer(product, this.$options.productBreadcrumbs, tileIndex);\n }\n sendSelectPromotionEventToDataLayer(product);\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":""}