{"version":3,"sources":["webpack:///./src/client/default/js/components/trackingEventsComponent.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"],"names":["trackingEventsComponent","element","setTimeout","handleClicks","pushErrorsOnLoad","this","CUSTOM_MESSAGES","TRACKING_EVENTS","update","pushToDataLayer","filtersEvent","pushFilterEventToDataLayer","newListingFiltersEvent","pushNewListingFiltersToDataLayer","newListingSortingEvent","pushNewListingSortingToDataLayer","errorEvent","newAddToWishlist","pushNewAddToWishlistToDatalayer","container","link","error","params","window","dataLayer","dlEventObject","blacklistParams","eventCategory","eventAction","eventLabel","eventText","some","e","error_name","errorEventDetail","Object","entries","forEach","key","value","includes","errorEventLocation","dataset","optionGaeventcategory","optionGaeventaction","optionGaeventlabel","innerText","area","optionTrackingArea","type","optionTrackingType","action","optionTrackingAction","text","optionTrackingText","optionGaeventtext","depth","optionTrackingDepth","keys","length","push","_this","document","querySelectorAll","SELECTORS","singleLink","addEventListener","currentTarget","classList","contains","querySelector","parentElement","a","pdpData","_componentElement","optionProduct","metaData","optionMetatags","trackUrl","optionTrackUrl","post","product","metatags","skipnotifications","data","dataLayerEvents","event","location","pathname","filterType","filterValue","removeFilter","fylter_type","filter_value","optionErrorEventDetail","optionErrorEventLocation","productTile","pid","pathName","getPathName","vdglist","closest","productImpressions","productJson","JSON","parse","promotionInfo","optionProductPromotionInfo","price","optionProductPrice","breadcrumbs","optionProductBreadcrumbs","dlObject","item_id","id","item_name","name","sales","discount","list","toFixed","item_brand","brand","item_category","htmlValue","item_category2","item_category3","item_category4","item_list_id","item_list_name","promotion_name","quantity","item_type","dimension53","ecommerce","step","items","BaseComponent","setAttribute","_checkMessages","compOptions","options","$el","filter","entry","optionValue","cleanEntry","cleanOptionKey","replace","convertType","deepFreeze","getAttribute","events","cb","elements","Bean","on","stopPropagation","one","off","fire","message","_loading","EMIT","LOADER_EVENTS","show","body","icon","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","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","orderedPush","sort","promoA","promoB","rank","notifications","pushPromoPost","CancelToken","get","all","spread","dontUseCustomPathName","urlPathNameTable","split","urlPathNameOrSandbox","toString","endsWith","replaceAll","parsePathName","getCustomPathName","console","log"],"mappings":"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","file":"js/component-trackingEventsComponent-js.chunks.js","sourcesContent":["import BaseComponent from '../base/baseComponent';\nimport { post } from '../libs/Axios';\nimport { getPathName } from '../utilities/URLDecoder';\n\nexport default class trackingEventsComponent extends BaseComponent {\n get Messages() {\n return {\n [this.CUSTOM_MESSAGES.TRACKING_EVENTS.update]: this.pushToDataLayer,\n [this.CUSTOM_MESSAGES.TRACKING_EVENTS.filtersEvent]: this.pushFilterEventToDataLayer,\n [this.CUSTOM_MESSAGES.TRACKING_EVENTS.newListingFiltersEvent]: this.pushNewListingFiltersToDataLayer,\n [this.CUSTOM_MESSAGES.TRACKING_EVENTS.newListingSortingEvent]: this.pushNewListingSortingToDataLayer,\n [this.CUSTOM_MESSAGES.TRACKING_EVENTS.errorEvent]: this.pushErrorsOnLoad,\n [this.CUSTOM_MESSAGES.TRACKING_EVENTS.newAddToWishlist]: this.pushNewAddToWishlistToDatalayer\n };\n }\n\n get SELECTORS() {\n return {\n container: '.trackingEventsContainer',\n link: '.trackingEventsLink',\n error: '.trackingErrorsContainer'\n };\n }\n\n constructor(element) {\n super(element);\n //temporarily commented\n // setTimeout(() => {\n // this.trackAfterLoadPage(); //REPLAT-7875\n // }, 300); //TODO refer to load event and avoid timeout..\n\n setTimeout(() => {\n this.handleClicks();\n this.pushErrorsOnLoad();\n }, 1500);\n }\n\n pushToDataLayer(params) {\n if (window.dataLayer) {\n let dlEventObject = {};\n let blacklistParams = ['eventCategory', 'eventAction', 'eventLabel', 'eventText', '_name'];\n if (params.eventCategory && params.eventAction) {\n dlEventObject['event'] = 'gaEvent';\n dlEventObject['eventCategory'] = params.eventCategory;\n dlEventObject['eventAction'] = params.eventAction;\n dlEventObject['eventLabel'] = params.eventLabel ? params.eventLabel : '';\n } else if (params.eventText) {\n dlEventObject['event'] = params.eventText;\n\n if (params.eventText === 'error' && !window.dataLayer.some((e) => e.error_name === params.errorEventDetail)) {\n dlEventObject['error_name'] = params.errorEventDetail || '';\n dlEventObject['error_location'] = params.errorEventLocation || '';\n dlEventObject['event_detail'] = params.errorEventDetail;\n } else {\n Object.entries(params).forEach(([key, value]) => {\n if (value && !blacklistParams.includes(key)) {\n dlEventObject[key] = value;\n }\n });\n }\n } else if (params.element) {\n this.pushToDataLayer({\n eventCategory: params.element.dataset.optionGaeventcategory ? params.element.dataset.optionGaeventcategory : '',\n eventAction: params.element.dataset.optionGaeventaction ? params.element.dataset.optionGaeventaction : '',\n eventLabel: params.element.dataset.optionGaeventlabel ? params.element.dataset.optionGaeventlabel : params.element.innerText,\n area: params.element.dataset.optionTrackingArea ? params.element.dataset.optionTrackingArea : '',\n type: params.element.dataset.optionTrackingType ? params.element.dataset.optionTrackingType : '',\n action: params.element.dataset.optionTrackingAction ? params.element.dataset.optionTrackingAction : '',\n text: params.element.dataset.optionTrackingText ? params.element.dataset.optionTrackingText : '',\n eventText: params.element.dataset.optionGaeventtext ? params.element.dataset.optionGaeventtext : '',\n depth: params.element.dataset.optionTrackingDepth ? params.element.dataset.optionTrackingDepth : ''\n });\n }\n\n if (Object.keys(dlEventObject).length !== 0) {\n window.dataLayer.push(dlEventObject);\n }\n }\n }\n\n handleClicks() {\n const _this = this;\n let allSingleLinks = document.querySelectorAll(this.SELECTORS.link);\n allSingleLinks.forEach((singleLink) => {\n singleLink.addEventListener('click', (e) => {\n var text = '';\n if (e.currentTarget.classList.contains('add-coupon')) {\n text = document.querySelector('#couponCode').value;\n } else {\n text = e.currentTarget.dataset.optionTrackingText ? e.currentTarget.dataset.optionTrackingText : '';\n }\n _this.pushToDataLayer({\n eventCategory: e.currentTarget.dataset.optionGaeventcategory ? e.currentTarget.dataset.optionGaeventcategory : '',\n eventAction: e.currentTarget.dataset.optionGaeventaction ? e.currentTarget.dataset.optionGaeventaction : '',\n eventLabel: e.currentTarget.dataset.optionGaeventlabel ? e.currentTarget.dataset.optionGaeventlabel : e.currentTarget.innerText,\n area: e.currentTarget.dataset.optionTrackingArea ? e.currentTarget.dataset.optionTrackingArea : '',\n type: e.currentTarget.dataset.optionTrackingType ? e.currentTarget.dataset.optionTrackingType : '',\n action: e.currentTarget.dataset.optionTrackingAction ? e.currentTarget.dataset.optionTrackingAction : '',\n text: text,\n eventText: e.currentTarget.dataset.optionGaeventtext ? e.currentTarget.dataset.optionGaeventtext : '',\n depth: e.currentTarget.dataset.optionTrackingDepth ? e.currentTarget.dataset.optionTrackingDepth : ''\n });\n });\n });\n let allContainer = document.querySelectorAll(this.SELECTORS.container);\n allContainer.forEach((container) => {\n let allLinks = container.querySelectorAll('a');\n allLinks.forEach((link) => {\n link.addEventListener('click.tracking', (e) => {\n _this.pushToDataLayer({\n eventCategory: container.dataset.optionGaeventcategory,\n eventAction: container.dataset.optionGaeventaction,\n eventLabel: e.currentTarget.dataset.optionGaeventlabel ? e.currentTarget.dataset.optionGaeventlabel : e.currentTarget.innerText,\n area: link.parentElement.dataset.optionTrackingArea ? link.parentElement.dataset.optionTrackingArea : '',\n type: link.parentElement.dataset.optionTrackingType ? link.parentElement.dataset.optionTrackingType : '',\n action: link.parentElement.dataset.optionTrackingAction ? link.parentElement.dataset.optionTrackingAction : '',\n text: link.parentElement.dataset.optionTrackingText ? link.parentElement.dataset.optionTrackingText : '',\n depth: e.currentTarget.dataset.optionTrackingDepth ? e.currentTarget.dataset.optionTrackingDepth : ''\n });\n });\n }, container);\n });\n }\n\n async trackAfterLoadPage() {\n //non usare la sintassi del felix framework altrimenti in questo caso le options non vengono lette per un problema di parsing del json del prodotto\n let pdpData = this._componentElement.dataset.optionProduct;\n let metaData = this._componentElement.dataset.optionMetatags;\n let trackUrl = this._componentElement.dataset.optionTrackUrl;\n\n if (trackUrl && pdpData) {\n const { data } = await post(trackUrl, {\n product: pdpData,\n metatags: metaData,\n skipnotifications: true\n });\n if (!data.error && data.dataLayerEvents) {\n data.dataLayerEvents.forEach(function(event) {\n if (event.event == 'pageview') {\n event['page_path'] = window.location.pathname; //override xhr path with pdp path\n }\n window.dataLayer.push(event);\n });\n }\n }\n }\n\n pushFilterEventToDataLayer(params) {\n if (window.dataLayer && params.filterType && params.filterValue) {\n let event = 'apply_filter';\n if (params.removeFilter) {\n event = 'remove_filter';\n }\n window.dataLayer.push({\n event: event,\n fylter_type: params.filterType,\n filter_value: params.filterValue\n });\n }\n }\n pushNewListingFiltersToDataLayer(params) {\n if (window.dataLayer && params.filterType && params.filterValue && params.eventAction && params.eventCategory) {\n window.dataLayer.push({\n event: 'gaEvent',\n eventCategory: params.eventCategory,\n eventAction: params.eventAction,\n eventLabel: params.filterType + '|' + params.filterValue\n });\n }\n }\n pushNewListingSortingToDataLayer(params) {\n if (window.dataLayer && params.eventCategory && params.eventAction && params.eventLabel) {\n window.dataLayer.push({\n event: 'gaEvent',\n eventCategory: params.eventCategory,\n eventAction: params.eventAction,\n eventLabel: params.eventLabel\n });\n }\n }\n\n pushErrorsOnLoad() {\n const _this = this;\n let allErrors = document.querySelectorAll(this.SELECTORS.error);\n allErrors.forEach((e) => {\n if (e.dataset.optionErrorEventDetail) {\n _this.pushToDataLayer({\n eventText: 'error',\n errorEventLocation: e.dataset.optionErrorEventLocation || '',\n errorEventDetail: e.dataset.optionErrorEventDetail || ''\n });\n }\n });\n }\n\n pushNewAddToWishlistToDatalayer(params) {\n let productTile = document.querySelector(`.product.tile[data-pid=\"${params.pid}\"]`) || document.querySelector(`.product-main[data-pid=\"${params.pid}\"]`); //PLP or PDP\n if (productTile) {\n let pathName;\n if (getPathName(document.location.pathname, productTile.dataset.vdglist) === 'wishlist') {\n pathName = 'le_mie_liste';\n } else if (productTile.closest('.editorial-product-card') && productTile.closest('.editorial-product-card').classList.contains('half-width')) {\n pathName = getPathName(document.location.pathname, productTile.dataset.vdglist) + '_card_single';\n } else if (productTile.closest('.editorial-product-card') && productTile.closest('.editorial-product-card').classList.contains('full-width')) {\n pathName = getPathName(document.location.pathname, productTile.dataset.vdglist) + '_card_double';\n } else {\n pathName = getPathName(document.location.pathname, productTile.dataset.vdglist);\n }\n let productImpressions = productTile.dataset.productJson && JSON.parse(productTile.dataset.productJson);\n let promotionInfo = productTile.dataset.optionProductPromotionInfo && JSON.parse(productTile.dataset.optionProductPromotionInfo);\n let price = productTile.dataset.optionProductPrice && JSON.parse(productTile.dataset.optionProductPrice);\n let breadcrumbs = productTile.dataset.optionProductBreadcrumbs && JSON.parse(productTile.dataset.optionProductBreadcrumbs);\n\n let dlObject = {\n item_id: productImpressions && productImpressions.id,\n item_name: productImpressions && productImpressions.name,\n price: price && price.sales && price.sales.value,\n discount: price && price.list && price.list.value ? (price.list.value - price.sales.value).toFixed(2) : '',\n item_brand: productImpressions && productImpressions.brand,\n item_category: breadcrumbs && breadcrumbs.length > 1 ? breadcrumbs[1].htmlValue : '',\n item_category2: breadcrumbs && breadcrumbs.length > 2 ? breadcrumbs[2].htmlValue : '',\n item_category3: breadcrumbs && breadcrumbs.length > 3 ? breadcrumbs[3].htmlValue : '',\n item_category4: breadcrumbs && breadcrumbs.length > 4 ? breadcrumbs[4].htmlValue : '',\n item_list_id: pathName,\n item_list_name: pathName,\n promotion_name: promotionInfo && promotionInfo.name ? promotionInfo.name : '',\n quantity: 1,\n item_type: productImpressions.dimension53\n };\n\n if (window && window.dataLayer) {\n window.dataLayer.push({\n event: 'add_to_wishlist',\n ecommerce: {\n step: params.step,\n items: [dlObject]\n }\n });\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","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"],"sourceRoot":""}