{"version":3,"file":"analytics-index.min.js","sources":["analytics-index.min.js"],"sourcesContent":["/******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId])\n/******/ \t\t\treturn installedModules[moduleId].exports;\n\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\texports: {},\n/******/ \t\t\tid: moduleId,\n/******/ \t\t\tloaded: false\n/******/ \t\t};\n\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.loaded = true;\n\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n\n\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(0);\n/******/ })\n/************************************************************************/\n/******/ ({\n\n/***/ 0:\n/***/ (function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\n\tvar PageTypeMap = __webpack_require__(81);\n\n\tvar events = __webpack_require__(83);\n\tvar utils = __webpack_require__(84);\n\t__webpack_require__(85);\n\n\t//Global variable used by analytics\n\twindow['dataLayer'] = window['dataLayer'] || [];\n\twindow.bata_com_ns = window.bata_com_ns || {};\n\twindow.bata_com_ns.analytics = window.bata_com_ns.analytics || {};\n\n\t/**\n\t * @description launch the product (PDP) impression\n\t */\n\tfunction triggerProductsImpressions(pageType) {\n\t var products;\n\t var ga4Products;\n\t if (pageType === 'product') {\n\t products = utils.getProductDataPDP();\n\t ga4Products = utils.ga4GetProducts(products);\n\t var value = ga4Products && ga4Products.length > 0 ? ga4Products[0].price : 0;\n\t utils.promoImpressionHelper();\n\t events.ga4ViewItem(window.bata_com_ns.analytics.currency, ga4Products, parseFloat(value));\n\t } else if (pageType === 'cart') {\n\t products = utils.getProductsCartData(pageType);\n\t ga4Products = utils.ga4GetProducts(products);\n\t var cartPageData = utils.ga4GetCartData();\n\t events.ga4ViewCart(window.bata_com_ns.analytics.currency, ga4Products, cartPageData.couponNames, parseFloat(cartPageData.value));\n\t } else {\n\t products = utils.getProductsData();\n\t ga4Products = utils.ga4GetProducts(products);\n\t // track GA4 product views only if not empty\n\t if (ga4Products && ga4Products.length > 0) {\n\t events.ga4ViewItemList(window.bata_com_ns.analytics.currency, ga4Products);\n\t }\n\t }\n\t // track UA product views only if not empty\n\t if (products && products.length > 0) {\n\t events.trackProductImpression(window.bata_com_ns.analytics.currency, products);\n\t }\n\t utils.trackRecommendationsLists();\n\t}\n\n\t/**\n\t * @description get all the global information form the DOM, then eventually, lauch the various impressions\n\t */\n\tfunction pushPageData() {\n\t var $user = $('#analytics-user');\n\t var pageType = utils.getPageType();\n\t var customerCrmId = $user.data('customerCrmId');\n\t var customerEmail = $user.data('email');\n\t var currency = $('#analyticsCurrencyCode').data('currency');\n\t var countryCode = $('#analytics-countryCode').data('content');\n\n\t // pageType should always be set at least to 'other'\n\t pageType = pageType && pageType.length > 0 ? pageType : 'other';\n\n\t //saves useful information in window object to improve the performances\n\t window.bata_com_ns.analytics.currency = currency;\n\t window.bata_com_ns.analytics.pageType = pageType;\n\t window.bata_com_ns.analytics.country = countryCode;\n\n\t window.bata_com_ns.abTests = {\n\t callAbTestInteraction: utils.callAbTestInteraction\n\t };\n\n\t // businessHours event\n\t events.businessHours(utils.getBusinessHours());\n\n\t // abTests data pushing into the dataLayer\n\t utils.callAbTestInteraction({ 'pageType': pageType });\n\n\t //If the pageType is detected, track the page impression\n\t if (pageType) {\n\t events.pageImpression(customerCrmId, pageType, window.location.href, customerEmail);\n\t var ga4CrmId = customerCrmId && customerCrmId !== 'guest' ? customerCrmId : null;\n\t events.ga4PageView({\n\t pageType: pageType,\n\t pageURL: window.location.origin,\n\t pagePath: window.location.pathname,\n\t userID: ga4CrmId,\n\t loginStatus: ga4CrmId ? 'loggedIn' : 'guest',\n\t customerType: ga4CrmId ? 'loyal-cutomer' : '',\n\t country: countryCode\n\t });\n\t utils.PageDesignerPromoImpressionHelper();\n\t }\n\t //if the pageType can contains products to track the impressions, trigger the event\n\t if (PageTypeMap.PRODUCT_IMPRESSION_MAPPING[pageType]) {\n\t triggerProductsImpressions(pageType);\n\t }\n\t //if it is a category or brand page, try to get search data\n\t if (pageType === 'category' || pageType === 'brands') {\n\t utils.searchHelper();\n\t } else if (pageType === 'purchase') {\n\t //if the user lands on purchase page, launch checkout events\n\t utils.orderConfirmHelper();\n\t }\n\n\t // At cart page check for removed items due to unavailability\n\t if (pageType === 'cart' && $('#unavailableProductsModal').length > 0) {\n\t utils.removeFromCartByUnavailabilityModal();\n\t }\n\t window.dataLayer.push({ 'event': 'basicAppEventsInitialized' });\n\t}\n\n\t$(document).ready(function () {\n\t pushPageData();\n\t});\n\n/***/ }),\n\n/***/ 81:\n/***/ (function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\n\t//link the information extracted from pdic.action (or other location) to the analytics pages\n\n\tvar pageMetaDataUtils = __webpack_require__(82);\n\n\tvar PAGE_MAPPING = pageMetaDataUtils.getPageMappingFromMetaDataElement('data-analytics-page-type-mapping');\n\n\t//specifies the pages where the event for addToCart needs further information\n\tvar CART_MAPPING = {\n\t \"category\": \"category\",\n\t \"wishlist\": \"wishlist view\",\n\t \"product\": \"product detail page\"\n\t};\n\n\t//specifies the pages where the event for add/remove from wishlist needs further information\n\tvar WISHLIST_MAPPING = {\n\t \"category\": \"catalog\",\n\t \"wishlist\": \"wishlist page\",\n\t \"product\": \"product detail page\"\n\t};\n\n\t//specifies in which pages products impression are tracked (the pages that can contain products)\n\tvar PRODUCT_IMPRESSION_MAPPING = {\n\t \"account\": false,\n\t \"billing\": false,\n\t \"brands\": false,\n\t \"cart\": true,\n\t \"category\": true,\n\t \"checkoutlogin\": false,\n\t \"content\": false,\n\t \"home\": true,\n\t \"ordeConfirmation\": false,\n\t \"product\": true,\n\t \"shipping\": false,\n\t \"wishlist\": true,\n\t \"storelocator\": false\n\t};\n\n\tmodule.exports = {\n\t PAGE_MAPPING: PAGE_MAPPING,\n\t CART_MAPPING: CART_MAPPING,\n\t WISHLIST_MAPPING: WISHLIST_MAPPING,\n\t PRODUCT_IMPRESSION_MAPPING: PRODUCT_IMPRESSION_MAPPING\n\t};\n\n/***/ }),\n\n/***/ 82:\n/***/ (function(module, exports) {\n\n\t'use strict';\n\n\t//link the information extracted from pdic.action (or other location) to the analytics pages\n\n\tvar getOrSetPageMetaDataAttrElement = function getOrSetPageMetaDataAttrElement(dataAttrName, val) {\n\t var metaData = document.getElementsByClassName('page-meta-data');\n\t metaData = metaData && metaData.length > 0 ? metaData[0] : null;\n\n\t if (!metaData) {\n\t return null;\n\t }\n\n\t if (!dataAttrName) {\n\t return null;\n\t }\n\n\t // get\n\t if (typeof val === 'undefined') {\n\t metaData = metaData.getAttribute(dataAttrName);\n\t }\n\t // set\n\t else {\n\t metaData.setAttribute(dataAttrName, val);\n\t }\n\n\t return metaData;\n\t};\n\n\tvar getPageMappingFromMetaDataElement = function getPageMappingFromMetaDataElement(dataAttrName) {\n\t var metaData = getOrSetPageMetaDataAttrElement(dataAttrName);\n\t var mapping;\n\t if (metaData) {\n\t try {\n\t mapping = JSON.parse(metaData);\n\t if (!mapping) {\n\t // eslint-disable-next-line no-console\n\t console.log('Error - there was an empty page meta data element on the page !!');\n\t }\n\t } catch (e) {\n\t // eslint-disable-next-line no-console\n\t console.log('Error - while parsing a JSON attribute of a page meta data !!');\n\t // eslint-disable-next-line no-console\n\t console.log(e);\n\t }\n\t } else {\n\t // eslint-disable-next-line no-console\n\t console.log('Error - there was a missing page meta data element on the page !!');\n\t }\n\t return mapping;\n\t};\n\n\tvar PAGE_MAPPING = getPageMappingFromMetaDataElement('data-page-type-mapping');\n\n\tmodule.exports = {\n\t PAGE_MAPPING: PAGE_MAPPING,\n\t getOrSetPageMetaDataAttrElement: getOrSetPageMetaDataAttrElement,\n\t getPageMappingFromMetaDataElement: getPageMappingFromMetaDataElement\n\t};\n\n/***/ }),\n\n/***/ 83:\n/***/ (function(module, exports) {\n\n\t'use strict';\n\n\t/**\n\t * Send GA4 event to GTM\n\t * @param {Object} object GA4 data object\n\t */\n\tfunction ga4EventPush(object) {\n\t if (!object || !object.event) {\n\t return;\n\t }\n\t object.timestamp = Date.now();\n\n\t // Clear the previous ecommerce object as suggested by google\n\t window.dataLayer.push({ ecommerce: null });\n\t // Send data to GTM\n\t window.dataLayer.push(object);\n\t}\n\n\t/**\n\t * @description push in the data layer the impression of the page\n\t * @param visitorStatus {String} the status of the user: if it is logged is the customerID, guest if not\n\t * @param pageType {String} the type of the page, look at analytics-mapping for more information\n\t * @param url {String} the url of the page\n\t * @param userEmail {String} the user's email if logged, empty otherwhise\n\t */\n\tfunction pageImpression(visitorStatus, pageType, url, userEmail) {\n\t window.dataLayer.push({\n\t 'event': 'basicPageData',\n\t 'visitorStatus': visitorStatus || 'guest',\n\t 'pageType': pageType,\n\t 'pageURL': url,\n\t 'email': userEmail || ''\n\t });\n\t}\n\n\t/**\n\t * @description push in the data layer the business hours data\n\t * @param businessHours object is a json that should have a structure like that:\n\t * {'freshchat': {'on': { 'days': {'mo': '7-12, 12:30-17', 'tu': '8-16', ...}}, 'off': { 'days': [ '14.5', '24.12', '11.4:: 7-18' ] }}}\n\t */\n\tfunction businessHours(businessHours) {\n\t if (businessHours) {\n\t window.dataLayer.push({\n\t 'event': 'businessHours',\n\t 'businessHours': businessHours\n\t });\n\t }\n\t}\n\n\t/**\n\t * @description track the search data\n\t * @param isCategorySearch {Boolean} set true only if the user has landed on page by clicking a category\n\t * @param keyWord {String} the argoument of the search (could be the category name or the keyword inserted in the searchBar)\n\t * @param categoryID {String} the id of the category clicked (set null if it is not a category search)\n\t * @param numberOfResults {Int} the number of results (only if it is not a category search)\n\t */\n\tfunction search(isCategorySearch, keyWord, categoryID, numberOfResults) {\n\t if (isCategorySearch) {\n\t window.dataLayer.push({\n\t 'event': 'search',\n\t 'categoryID': categoryID,\n\t 'categoryName': keyWord,\n\t 'ecommerce': {\n\t 'search_term': keyWord\n\t }\n\t });\n\t } else {\n\t window.dataLayer.push({\n\t 'event': 'search',\n\t 'searchKeyword': keyWord,\n\t 'numberResults': numberOfResults,\n\t 'searchType': 'site search',\n\t 'ecommerce': {\n\t 'search_term': keyWord\n\t }\n\t });\n\t }\n\t}\n\n\t/**\n\t * @description push in the data layer the impression of products\n\t * @param currencyCode {String} The unicode of the currency used\n\t * @param products {Object} contains collection of the products\n\t */\n\tfunction trackProductImpression(currencyCode, products) {\n\t window.dataLayer.push({\n\t 'event': 'ecommerceTrack',\n\t 'ecommerce': {\n\t 'currencyCode': currencyCode,\n\t 'impressions': products\n\t }\n\t });\n\t}\n\n\t/**\n\t * @description push in the data layer the product variant data\n\t * @param currencyCode {String} The currency code used\n\t * @param products {Object} contains collection products\n\t */\n\tfunction variantSelected(currencyCode, products) {\n\t window.dataLayer.push({\n\t 'event': 'variantSelection',\n\t 'ecommerce': {\n\t 'currencyCode': currencyCode,\n\t 'impressions': products,\n\t 'detail': products\n\t }\n\t });\n\t}\n\n\t/**\n\t * @description track the event addToCart\n\t * @param currencyCode {String} The currency code used\n\t * @param products {Object} contains collection products\n\t * @param pageType {String} the current page type, null if the function is invoked inside the PDP\n\t * @param customerEmail {String} the customer email if logged\n\t * @param customerPhone {String} the customer phone if logged\n\t * @param arTryonInfo {arTryonInfo} object with the tryon flags\n\t */\n\tfunction addToCart(currencyCode, products, pageType, customerEmail, customerPhone, arTryonInfo) {\n\t var eventData = {\n\t 'event': 'addToCart',\n\t 'email': customerEmail,\n\t 'phone': customerPhone,\n\t 'ecommerce': {\n\t 'currencyCode': currencyCode,\n\t 'add': {\n\t 'products': products\n\t }\n\t }\n\t };\n\n\t //IN-AR TRY ON\n\t if (arTryonInfo) {\n\t eventData.tryOnDesktopClick = arTryonInfo.tryOnDesktopClick;\n\t eventData.tryOnMobileRedirect = arTryonInfo.tryOnMobileRedirect;\n\t }\n\n\t if (pageType) {\n\t eventData.ecommerce.actionField = {};\n\t eventData.ecommerce.actionField.list = pageType;\n\t eventData.ecommerce.actionField.action = 'add';\n\t }\n\t window.dataLayer.push(eventData);\n\t}\n\n\t/**\n\t * @description track the remove from cart\n\t * @param products {List} contains collection products\n\t */\n\tfunction removeFromCart(products) {\n\t window.dataLayer.push({\n\t 'event': 'removeFromCart',\n\t 'ecommerce': {\n\t 'remove': {\n\t 'products': products\n\t }\n\t }\n\t });\n\t}\n\n\t/**\n\t * @description push into the datalayer the checkout step data\n\t * @param step {int} The checkout's step\n\t * @param option {String} checkout's information, based on the steps\n\t * @param products {List} the products in the basket during the checkout\n\t */\n\tfunction pushCheckoutData(step, option, products, customerEmail, customerPhone) {\n\t if (step === 1 && customerEmail && customerPhone) {\n\t window.dataLayer.push({\n\t 'event': 'ecommerceTrack',\n\t 'email': customerEmail,\n\t 'phone': customerPhone,\n\t 'ecommerce': {\n\t 'checkout': {\n\t 'actionField': {\n\t 'step': step,\n\t 'option': option,\n\t 'action': 'checkout'\n\t },\n\t 'products': products\n\t }\n\t }\n\t });\n\t } else {\n\t window.dataLayer.push({\n\t 'event': 'ecommerceTrack',\n\t 'ecommerce': {\n\t 'checkout': {\n\t 'actionField': {\n\t 'step': step,\n\t 'option': option,\n\t 'action': 'checkout'\n\t },\n\t 'products': products\n\t }\n\t }\n\t });\n\t }\n\t}\n\n\t/**\n\t * @description the standalone event for purchase, is launched always with the sixth checkout's step\n\t * @param purchaseData {Object} Purchase data:\n\t * id {String} the id of the order\n\t * revenue {Number} the revenue of the order\n\t * tax {Number} the tax total\n\t * shipping {Number} the order shipping cost\n\t * coupon {String} the name of the order coupon\n\t * products {List} a list of all products purchased\n\t * customerEmail {String} the customer email\n\t * customerPhone {String} the customer phone\n\t * adjustedMerchandizeTotalNetPrice {Decimal} order total net price\n\t * adjustedMerchandizeTotalTax {Decimal} order total tax\n\t */\n\tfunction purchase(purchaseData) {\n\t window.dataLayer.push({\n\t 'event': 'ecommerceTrack',\n\t 'email': purchaseData.customerEmail,\n\t 'phone': purchaseData.customerPhone,\n\t 'ecommerce': {\n\t 'purchase': {\n\t 'actionField': {\n\t 'id': purchaseData.id,\n\t 'affiliation': 'Bata',\n\t 'revenue': purchaseData.revenue,\n\t 'adjustedMerchandizeTotalNetPrice': purchaseData.adjustedMerchandizeTotalNetPrice,\n\t 'adjustedMerchandizeTotalTax': purchaseData.adjustedMerchandizeTotalTax,\n\t 'tax': purchaseData.tax,\n\t 'shipping': purchaseData.shipping,\n\t 'coupon': purchaseData.coupon.couponCodeName,\n\t 'action': 'purchase'\n\t },\n\t 'products': purchaseData.products\n\t }\n\t }\n\t });\n\t}\n\n\t/**\n\t * @description registration of new user into the Bata club\n\t * @param userId {String} the id of the user\n\t * @param accountType {String} the type of account used by the user, regular user as default value\n\t * @param socialNetwork {String} The social network used by the user to sign up, empty string as default value\n\t */\n\tfunction registration(userId, email, phone, accountType, socialNetwork) {\n\t window.dataLayer.push({\n\t 'event': 'customerContact',\n\t 'customerID': userId,\n\t 'email': email,\n\t 'phone': phone,\n\t 'accountType': accountType || 'regular user',\n\t 'socialNetwork': socialNetwork || ''\n\t });\n\t}\n\n\t/**\n\t * @description login user into the Bata club\n\t * @param userCrmId {String} the crm id of the user\n\t * @param accountType {String} the type of account used by the user, regular user as default value\n\t * @param socialNetwork {String} The social network used by the user to sign up, empty string as default value\n\t */\n\tfunction login(customerCrmId, email, accountType, socialNetwork) {\n\t window.dataLayer.push({\n\t 'event': 'loggedIn',\n\t 'customerCrmId': customerCrmId,\n\t 'email': email,\n\t 'accountType': accountType || 'regular user',\n\t 'socialNetwork': socialNetwork || ''\n\t });\n\t}\n\n\t/**\n\t * @description a product link is clicked from the user (exept from minicart)\n\t * @param currencyCode {String} The currency code used\n\t * @param pageType {String} the type of the page, look at analytics-mapping for more information\n\t * @param products {List} the list that contains the product clicked\n\t */\n\tfunction productClick(currencyCode, pageType, products) {\n\t window.dataLayer.push({\n\t 'event': 'productClick',\n\t 'ecommerce': {\n\t 'currencyCode': currencyCode,\n\t 'click': {\n\t 'actionField': {\n\t 'list': pageType,\n\t 'action': 'click'\n\t },\n\t 'products': products\n\t }\n\t }\n\t });\n\t}\n\n\t/**\n\t * @description register the impression of the promotions in PDP\n\t * @param promotions {List} A list of all the promotions displayed\n\t */\n\tfunction promoImpression(promotions) {\n\t window.dataLayer.push({\n\t 'event': 'promoView',\n\t 'ecommerce': {\n\t 'promoView': {\n\t 'promotions': promotions\n\t }\n\t }\n\t });\n\t}\n\n\t/**\n\t * @description register the impression of a promotional banner\n\t */\n\tfunction PageDesignerPromoImpression(promotions) {\n\t window.dataLayer.push({\n\t 'event': 'ecommerceTrack',\n\t 'ecommerce': {\n\t 'promoView': {\n\t 'promotions': promotions\n\t }\n\t }\n\t });\n\t}\n\n\t/**\n\t * @description register the click on a promotional banner\n\t */\n\tfunction PageDesignerPromoClick(promotions) {\n\t window.dataLayer.push({\n\t 'event': 'promotionClick',\n\t 'ecommerce': {\n\t 'promoClick': {\n\t 'promotions': promotions\n\t }\n\t }\n\t });\n\t}\n\n\t/**\n\t * @description the generic GAevent, take a look into the official documentation to understand his scope\n\t */\n\tfunction trackGAEvent(category, action, label, eventValue, notInteraction) {\n\t window.dataLayer.push({\n\t 'event': 'GAevent',\n\t 'eventCategory': category || '',\n\t 'eventAction': action || '',\n\t 'eventLabel': label || '',\n\t 'eventValue': eventValue || 0,\n\t 'eventNotInteraction': notInteraction || false\n\t });\n\t}\n\n\t//\n\t// Google Analytics 4\n\n\t/**\n\t * GA4 add_payment_info event\n\t * @param {Object} checkoutData Checkout data\n\t * @param {Array.} items items Order items\n\t */\n\tfunction ga4AddPaymentInfo(checkoutData, items) {\n\t ga4EventPush({\n\t 'event': 'add_payment_info',\n\t 'ecommerce': {\n\t 'currency': checkoutData.currency,\n\t 'payment_type': checkoutData.paymentType,\n\t 'coupon': checkoutData.coupon,\n\t 'payment_method_saved': checkoutData.paymentMethodSaved,\n\t 'value': checkoutData.value,\n\t 'items': items\n\t }\n\t });\n\t}\n\n\t/**\n\t * GA4 add_shipping_info event\n\t * @param {Object} checkoutData Checkout data\n\t * @param {Array.} items items Order items\n\t */\n\tfunction ga4AddShippingInfo(checkoutData, items) {\n\t ga4EventPush({\n\t 'event': 'add_shipping_info',\n\t 'ecommerce': {\n\t 'currency': checkoutData.currency,\n\t 'shipping': checkoutData.shipping,\n\t 'shipping_tier': checkoutData.shippingTier,\n\t 'coupon': checkoutData.coupon,\n\t 'value': checkoutData.value,\n\t 'items': items\n\t }\n\t });\n\t}\n\n\t/**\n\t * GA4 add_to_cart event\n\t * @param {String} currencyCode Two-letters currency code\n\t * @param {Number} value Product price\n\t * @param {Array.} items Products\n\t */\n\tfunction ga4AddToCart(currencyCode, items, value) {\n\t ga4EventPush({\n\t 'event': 'add_to_cart',\n\t 'ecommerce': {\n\t 'currency': currencyCode,\n\t 'value': value,\n\t 'items': items\n\t }\n\t });\n\t}\n\n\t/**\n\t * GA4 add_to_wishlist event\n\t * @param {String} currencyCode Two-letters currency code\n\t * @param {Number} value Product price\n\t * @param {Array.} items Products\n\t */\n\tfunction ga4AddToWishlist(currencyCode, items, value) {\n\t ga4EventPush({\n\t 'event': 'add_to_wishlist',\n\t 'ecommerce': {\n\t 'currency': currencyCode,\n\t 'value': value,\n\t 'items': items\n\t }\n\t });\n\t}\n\n\t/**\n\t * GA4 remove_from_wishlist event\n\t * @param {String} currencyCode Two-letters currency code\n\t * @param {Number} value Product price\n\t * @param {Array.} items Products\n\t */\n\tfunction ga4RemoveFromWishlist(currencyCode, items, value) {\n\t ga4EventPush({\n\t 'event': 'remove_from_wishlist',\n\t 'ecommerce': {\n\t 'currency': currencyCode,\n\t 'value': value,\n\t 'items': items\n\t }\n\t });\n\t}\n\n\t/**\n\t * GA4 begin_checkout event\n\t * @param {String} currencyCode Two-letters currency code\n\t * @param {String} coupon List of used order-level coupons separated by |\n\t * @param {Number} value Product price\n\t * @param {Array.} items Cart items\n\t */\n\tfunction ga4BeginCheckout(currencyCode, items, coupon, value) {\n\t ga4EventPush({\n\t 'event': 'begin_checkout',\n\t 'ecommerce': {\n\t 'currency': currencyCode,\n\t 'coupon': coupon,\n\t 'value': value,\n\t 'items': items\n\t }\n\t });\n\t}\n\n\t/**\n\t * GA4 checkout_progress event\n\t * @param {Object} checkoutData Checkout data object\n\t * @param {Array.} items Cart items\n\t */\n\tfunction ga4CheckoutProgress(checkoutData, items) {\n\t ga4EventPush({\n\t 'event': 'checkout_progress',\n\t 'step_label': checkoutData.stepLabel,\n\t 'step_number': checkoutData.stepNumber,\n\t 'ecommerce': {\n\t 'currency': checkoutData.currencyCode,\n\t 'coupon': checkoutData.coupon,\n\t 'value': checkoutData.value,\n\t 'items': items\n\t }\n\t });\n\t}\n\n\t/**\n\t * GA4 clear_search event\n\t */\n\tfunction ga4ClearSearch() {\n\t ga4EventPush({ 'event': 'clear_search' });\n\t}\n\n\t/**\n\t * GA4 Save credit card information\n\t */\n\tfunction ga4SaveCreditCard() {\n\t ga4EventPush({\n\t 'event': 'save_credit_card'\n\t });\n\t}\n\n\t/**\n\t * GA4 login event\n\t * @param {Object} loginData Login data\n\t */\n\tfunction ga4Login(loginData) {\n\t ga4EventPush({\n\t 'event': 'login',\n\t 'method': loginData.method,\n\t 'login_type': loginData.loginType,\n\t 'ecommerce': {\n\t 'customerCrmId': loginData.customerCrmId\n\t }\n\t });\n\t}\n\n\t/**\n\t * GA4 purchase event\n\t * @param {Object} purchaseData Purchase related data\n\t * @param {Array.} items Order items\n\t */\n\tfunction ga4Purchase(purchaseData, items) {\n\t ga4EventPush({\n\t 'event': 'purchase',\n\t 'ecommerce': {\n\t 'currency': purchaseData.currency,\n\t 'payment_type': purchaseData.paymentType,\n\t 'shipping': purchaseData.shipping,\n\t 'shipping_tier': purchaseData.shippingTier,\n\t 'tax': purchaseData.tax,\n\t 'transaction_id': purchaseData.transactionId,\n\t 'coupon': purchaseData.coupon,\n\t 'value': purchaseData.value,\n\t 'adjustedMerchandizeTotalNetPrice': purchaseData.adjustedMerchandizeTotalNetPrice,\n\t 'adjustedMerchandizeTotalTax': purchaseData.adjustedMerchandizeTotalTax,\n\t 'bata_store': purchaseData.bataStore,\n\t 'cart_id': purchaseData.cartId,\n\t 'transaction_type': purchaseData.transactionType,\n\t 'email': purchaseData.email,\n\t 'items': items\n\t }\n\t });\n\t}\n\n\t/**\n\t * GA4 remove_from_cart event\n\t * @param {String} currencyCode Two-letters currency code\n\t * @param {Number} value Product price\n\t * @param {Array.} items Cart items\n\t */\n\tfunction ga4RemoveFromCart(currencyCode, items, value) {\n\t ga4EventPush({\n\t 'event': 'remove_from_cart',\n\t 'ecommerce': {\n\t 'currency': currencyCode,\n\t 'value': value,\n\t 'items': items\n\t }\n\t });\n\t}\n\n\t/**\n\t * GA4 select_item event\n\t * @param {String} currencyCode Two-letters currency code\n\t * @param {Array.} items Products\n\t */\n\tfunction ga4SelectItem(currencyCode, items) {\n\t ga4EventPush({\n\t 'event': 'select_item',\n\t 'ecommerce': {\n\t 'currency': currencyCode,\n\t 'items': items\n\t }\n\t });\n\t}\n\n\t/**\n\t * GA4 select_size_guide event\n\t */\n\tfunction ga4SelectSizeGuide() {\n\t window.dataLayer.push({ 'event': 'select_size_guide' });\n\t}\n\n\t/**\n\t * GA4 select_content event\n\t * @param {Object} contentData Content related data\n\t */\n\tfunction ga4SelectContent(contentData) {\n\t ga4EventPush({\n\t 'event': 'select_content',\n\t 'content_id': contentData.contentId,\n\t 'content_type': contentData.contentType,\n\t 'content_name': contentData.contentName\n\t });\n\t}\n\n\t/**\n\t * GA4 select_promotion event\n\t * @param {Object} promotionData promotion related data\n\t */\n\tfunction ga4SelectPromotion(promotionData) {\n\t ga4EventPush({\n\t 'event': 'select_promotion',\n\t 'promotion_id': promotionData.promotionId,\n\t 'promotion_name': promotionData.promotionName,\n\t 'items': [{\n\t 'item_id': promotionData.promotionId,\n\t 'item_name': promotionData.promotionName\n\t }]\n\t });\n\t}\n\n\t/**\n\t * GA4 view_next_image_pdp event\n\t */\n\tfunction ga4ViewNextImagePDP(imageData) {\n\t ga4EventPush({\n\t 'event': 'view_next_image_pdp',\n\t 'item_id': imageData.itemId,\n\t 'item_variant': imageData.colorVariant\n\t });\n\t}\n\n\t/**\n\t * GA4 select_size_wishlist event\n\t */\n\tfunction ga4SelectWishlist() {\n\t window.dataLayer.push({ 'event': 'select_wishlist' });\n\t}\n\n\t/**\n\t * GA4 start search event\n\t */\n\tfunction ga4StartSearch() {\n\t ga4EventPush({\n\t 'event': 'start_search'\n\t });\n\t}\n\n\t/**\n\t * GA4 select_size_wishlist event\n\t */\n\tfunction ga4SearchProduct(searchData) {\n\t ga4EventPush({\n\t 'event': 'search',\n\t 'search_term': searchData.searchTerm,\n\t 'search_type': searchData.searchType\n\t });\n\t}\n\n\t/**\n\t * GA4 share event\n\t * @param {Object} shareData Product\n\t */\n\tfunction ga4Share(shareData) {\n\t ga4EventPush({\n\t 'event': 'share',\n\t 'ecommerce': {\n\t 'method': shareData.method,\n\t 'content_type': shareData.contentType,\n\t 'item_id': shareData.itemId,\n\t 'element_id': shareData.elementId,\n\t 'element_text': shareData.elementText,\n\t 'link_url': shareData.linkUrl,\n\t 'link_domain': shareData.linkDomain,\n\t 'type': shareData.type\n\t }\n\t });\n\t}\n\n\t/**\n\t * GA4 sign_up event\n\t * @param {Object} registrationData data\n\t */\n\tfunction ga4SignUp(registrationData) {\n\t ga4EventPush({\n\t 'event': 'sign_up',\n\t 'signup_form_type': registrationData.signupType,\n\t 'ecommerce': {\n\t 'customerCrmId': registrationData.customerCrmId\n\t }\n\t });\n\t}\n\n\t/**\n\t * GA4 sign_up event in checkout\n\t * @param {Object} registrationData data\n\t */\n\tfunction ga4SignUpCheckout(registrationData) {\n\t ga4EventPush({\n\t 'event': 'sign_up',\n\t 'signup_form_type': registrationData.signupType\n\t });\n\t}\n\n\t/**\n\t * GA4 view_cart event\n\t * @param {String} currencyCode Two-letters currency code\n\t * @param {String} coupon List of used order-level coupons separated by |\n\t * @param {Number} value Product price\n\t * @param {Array.} items Cart items\n\t */\n\tfunction ga4ViewCart(currencyCode, items, coupon, value) {\n\t ga4EventPush({\n\t 'event': 'view_cart',\n\t 'ecommerce': {\n\t 'currency': currencyCode,\n\t 'coupon': coupon,\n\t 'value': value,\n\t 'items': items\n\t }\n\t });\n\t}\n\n\t/**\n\t * GA4 view_item event\n\t * @param {String} currencyCode Two-letters currency code\n\t * @param {Array.} items Products\n\t */\n\tfunction ga4ViewItem(currencyCode, items, value) {\n\t ga4EventPush({\n\t 'event': 'view_item',\n\t 'ecommerce': {\n\t 'currency': currencyCode,\n\t 'value': value,\n\t 'items': items\n\t }\n\t });\n\t}\n\n\t/**\n\t * GA4 view_item_list event\n\t * @param {String} currencyCode Two-letters currency code\n\t * @param {Array.} items Products\n\t */\n\tfunction ga4ViewItemList(currencyCode, items) {\n\t ga4EventPush({\n\t 'event': 'view_item_list',\n\t 'ecommerce': {\n\t 'currency': currencyCode,\n\t 'items': items,\n\t \"results_number\": items.length\n\t }\n\t });\n\t}\n\n\t/**\n\t * GA4 view_promotion event\n\t * @param {Array.} items Products\n\t */\n\tfunction ga4ViewPromotion(items) {\n\t ga4EventPush({\n\t 'event': 'view_promotion',\n\t 'ecommerce': {\n\t 'items': items\n\t }\n\t });\n\t}\n\n\t/**\n\t * GA4 page_view event\n\t * @param {Object} pageData Page data\n\t */\n\tfunction ga4PageView(pageData) {\n\t ga4EventPush({\n\t 'event': 'page_view_ga4',\n\t 'page_type': pageData.pageType,\n\t 'page_url': pageData.pageURL,\n\t 'page_path': pageData.pagePath,\n\t 'user_id': pageData.userID,\n\t 'login_status': pageData.loginStatus,\n\t 'customer_type': pageData.customerType,\n\t 'country': pageData.country\n\t });\n\t}\n\n\t/**\n\t * GA4 click_menu_nav event\n\t * @param {Number} menuLevel Menu level\n\t * @param {String} menuSelection Selected menu item name\n\t */\n\tfunction ga4ClickMenuNav(menuLevel, menuSelection) {\n\t ga4EventPush({\n\t 'event': 'click_menu_nav',\n\t 'menu_level': menuLevel,\n\t 'menu_selection': menuSelection\n\t });\n\t}\n\n\t/**\n\t * GA4 click_filter event\n\t * @param {String} filterCategory Input type (Checkbox or Slider or ...)\n\t * @param {String} filterName Filter name\n\t * @param {String} filterValue Filter selected value\n\t */\n\tfunction ga4ClickFilter(filterCategory, filterName, filterValue) {\n\t ga4EventPush({\n\t 'event': 'click_filter',\n\t 'filter_category': filterCategory,\n\t 'filter_name': filterName,\n\t 'filter_value': filterValue\n\t });\n\t}\n\n\t/**\n\t * GA4 scroll event\n\t * @param {Number} percent Screen scrolled in percent\n\t */\n\tfunction ga4Scroll(percent) {\n\t ga4EventPush({\n\t 'event': 'scroll',\n\t 'percent': percent\n\t });\n\t}\n\n\t/**\n\t * GA4 subscribe event\n\t * @param {String} subscription_type Subscription type (newsletter)\n\t */\n\tfunction ga4Subscribe(subscriptionType) {\n\t ga4EventPush({\n\t 'event': 'subscribe',\n\t 'subscription_type ': subscriptionType\n\t });\n\t}\n\n\t/**\n\t * GA4 open_pdp_image event\n\t */\n\tfunction ga4OpenPdpImage() {\n\t ga4EventPush({ 'event': 'open_pdp_image' });\n\t}\n\n\tfunction ga4SuccessfulSearch(searchData) {\n\t ga4EventPush({\n\t 'event': 'successful_search',\n\t 'results_number': searchData.resultsNumber,\n\t 'search_method': searchData.searchMethod,\n\t 'search_term': searchData.searchTerm\n\t });\n\t}\n\n\tfunction ga4UnsuccessfulSearch(searchData) {\n\t ga4EventPush({\n\t 'event': 'unsuccessful_search',\n\t 'results_number': searchData.resultsNumber,\n\t 'search_method': searchData.searchMethod,\n\t 'search_term': searchData.searchTerm\n\t });\n\t}\n\n\tfunction ga4ClickBackInStock(clickBackInStockData) {\n\t ga4EventPush({\n\t 'event': 'click_email',\n\t 'element_id': clickBackInStockData.elementId,\n\t 'element_text': clickBackInStockData.elementText,\n\t 'link_url': clickBackInStockData.linkUrl\n\t });\n\t}\n\n\tfunction ga4BrandSelectContent(selectContentData) {\n\t ga4EventPush({\n\t 'event': 'select_content',\n\t 'content_id': selectContentData.contentId,\n\t 'content_type': selectContentData.contentType,\n\t 'content_name': selectContentData.contentName\n\t });\n\t}\n\t// End of Google Analytics 4\n\n\tfunction ga4BrandSecondCategoryLevel(eventData) {\n\t ga4EventPush({\n\t 'event': 'click_menu_nav',\n\t 'menu_level': eventData.menuLevel,\n\t 'menu_selection': eventData.menuSelection\n\t });\n\t}\n\n\t// End of Google Analytics 4\n\n\t/**\n\t * AB testing interaction dataLayer event\n\t * @param {Array} array of AB tests (from abTests)\n\t */\n\tfunction abTestInteraction(list, pageType) {\n\t if (!list) {\n\t return;\n\t }\n\n\t list.forEach(function (item) {\n\t window.dataLayer.push({\n\t event: 'abTestInteraction',\n\t page_type: pageType && pageType.length > 0 ? pageType : 'other',\n\t variant_id: item.variant_id,\n\t variant_name: item.variant_name,\n\t version_type: item.version_type\n\t });\n\t });\n\t}\n\n\tmodule.exports = {\n\t productClick: productClick,\n\t search: search,\n\t pageImpression: pageImpression,\n\t trackProductImpression: trackProductImpression,\n\t promoImpression: promoImpression,\n\t PageDesignerPromoImpression: PageDesignerPromoImpression,\n\t PageDesignerPromoClick: PageDesignerPromoClick,\n\t variantSelected: variantSelected,\n\t addToCart: addToCart,\n\t removeFromCart: removeFromCart,\n\t pushCheckoutData: pushCheckoutData,\n\t purchase: purchase,\n\t registration: registration,\n\t login: login,\n\t trackGAEvent: trackGAEvent,\n\t ga4AddPaymentInfo: ga4AddPaymentInfo,\n\t ga4AddShippingInfo: ga4AddShippingInfo,\n\t ga4AddToCart: ga4AddToCart,\n\t ga4AddToWishlist: ga4AddToWishlist,\n\t ga4RemoveFromWishlist: ga4RemoveFromWishlist,\n\t ga4BeginCheckout: ga4BeginCheckout,\n\t ga4ClearSearch: ga4ClearSearch,\n\t ga4CheckoutProgress: ga4CheckoutProgress,\n\t ga4SaveCreditCard: ga4SaveCreditCard,\n\t ga4ClickBackInStock: ga4ClickBackInStock,\n\t ga4Login: ga4Login,\n\t ga4Purchase: ga4Purchase,\n\t ga4RemoveFromCart: ga4RemoveFromCart,\n\t ga4SelectItem: ga4SelectItem,\n\t ga4SelectContent: ga4SelectContent,\n\t ga4SelectPromotion: ga4SelectPromotion,\n\t ga4SelectWishlist: ga4SelectWishlist,\n\t ga4SearchProduct: ga4SearchProduct,\n\t ga4StartSearch: ga4StartSearch,\n\t ga4SuccessfulSearch: ga4SuccessfulSearch,\n\t ga4BrandSelectContent: ga4BrandSelectContent,\n\t ga4UnsuccessfulSearch: ga4UnsuccessfulSearch,\n\t ga4Share: ga4Share,\n\t ga4SignUp: ga4SignUp,\n\t ga4SignUpCheckout: ga4SignUpCheckout,\n\t ga4ViewNextImagePDP: ga4ViewNextImagePDP,\n\t ga4ViewCart: ga4ViewCart,\n\t ga4ViewItem: ga4ViewItem,\n\t ga4ViewItemList: ga4ViewItemList,\n\t ga4ViewPromotion: ga4ViewPromotion,\n\t ga4PageView: ga4PageView,\n\t ga4ClickMenuNav: ga4ClickMenuNav,\n\t ga4ClickFilter: ga4ClickFilter,\n\t ga4Scroll: ga4Scroll,\n\t ga4Subscribe: ga4Subscribe,\n\t ga4SelectSizeGuide: ga4SelectSizeGuide,\n\t ga4BrandSecondCategoryLevel: ga4BrandSecondCategoryLevel,\n\t ga4OpenPdpImage: ga4OpenPdpImage,\n\t businessHours: businessHours,\n\t abTestInteraction: abTestInteraction\n\t};\n\n/***/ }),\n\n/***/ 84:\n/***/ (function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\n\tvar PageTypeMap = __webpack_require__(81);\n\tvar events = __webpack_require__(83);\n\tvar pageMetaDataUtils = __webpack_require__(82);\n\n\t//global variable used for orders\n\tvar productOrder;\n\n\tvar scrollPosition = {\n\t \"25\": false,\n\t \"50\": false,\n\t \"75\": false,\n\t \"100\": false\n\t};\n\n\t/**\n\t * Returns the sales status of a product based on discount data.\n\t * @param {Object} product - jQuery or plain object representing the product.\n\t * @returns {string} - \"on sale\" if discounted, otherwise \"full price\".\n\t */\n\tfunction getSalesStatus(product) {\n\t var isSalesStatus = product instanceof jQuery ? product.data('discount') : product.discount;\n\t return isSalesStatus ? \"on sale\" : \"full price\";\n\t}\n\n\t/**\n\t * Extend analytics product with categories related to Google Analytics 4\n\t * @param {Object} product Analytics product\n\t * @param {Object} productData Product data\n\t * @param {Object} attributeName Analytics product's attribute name (postfix number will be added)\n\t * @returns Extended analytics product\n\t */\n\tfunction extendProductDataWithGA4Categories(product, productData, attributeName) {\n\t if (!product || !productData) {\n\t return;\n\t }\n\t attributeName = attributeName || 'category';\n\t var index = void 0;\n\t var key = void 0;\n\t for (index = 1; index <= 5; index++) {\n\t if (productData) {\n\t if (!productData['category' + index]) {\n\t continue;\n\t }\n\t }\n\t key = attributeName + index;\n\t // GA4 first category attribute does not contain postfix number\n\t if (attributeName === 'item_category' && index === 1) {\n\t key = attributeName;\n\t }\n\t if (productData) {\n\t product[key] = productData['category' + index];\n\t }\n\t }\n\t return product;\n\t}\n\n\t/**\n\t * GA4 Get item_list_id by product data\n\t * @param {Object} product Product object\n\t * @returns {String} GA4 list id\n\t */\n\tfunction ga4GetProductItemListId(product) {\n\t if (!product) {\n\t return;\n\t }\n\t if (product.listId) {\n\t return product.listId;\n\t }\n\t // check saved list id after click on product tile\n\t if (window.bata_com_ns.analytics.pageType === \"product\" && document.referrer) {\n\t try {\n\t var listId = window.sessionStorage.getItem(\"analyticsListId\");\n\t if (listId) {\n\t window.sessionStorage.removeItem(\"analyticsListId\");\n\t $('.analytics-productPDP.analytics-product').data('listId', listId);\n\t return listId;\n\t }\n\t } catch (error) {\n\t // sessionStorage not supported\n\t }\n\t }\n\n\t // set current category id and path for PLP\n\t if (window.bata_com_ns.analytics.pageType === \"category\" || window.bata_com_ns.analytics.pageType === \"brands\") {\n\t var categoryId = $(\"div.grid-footer > input.category-id\").val() || $('.js-analytics-search-category').data('analytics-category-id');\n\t if (categoryId) {\n\t return categoryId;\n\t } else {\n\t return \"product search result\";\n\t }\n\t }\n\t if (window.bata_com_ns.analytics.pageType === \"product\") {\n\t return \"detail\";\n\t }\n\t return product.list || window.bata_com_ns.analytics.pageType;\n\t}\n\n\t/**\n\t * GA4 formatted product items\n\t * @param {Array} products Analytics products\n\t * @returns GA4 formatted product items list\n\t */\n\tfunction ga4GetProducts(products) {\n\t if (!products || !products.length) {\n\t return [];\n\t }\n\t var mappedProducts = [];\n\t mappedProducts = products.map(function (product) {\n\t var isSalesStatus = getSalesStatus(product);\n\t var ga4Product = {\n\t item_id: product.id,\n\t item_name: product.name,\n\t index: product.position || 0,\n\t item_brand: product.brand,\n\t price: parseFloat(product.price),\n\t quantity: product.quantity || 1,\n\t item_dimension1: product.dimension1 || \"\",\n\t item_dimension2: product.dimension2 || \"\",\n\t item_dimension3: product.dimension3 || \"\",\n\t item_sales_status: isSalesStatus\n\t };\n\n\t extendProductDataWithGA4Categories(ga4Product, product, 'item_category');\n\t if (product.size) {\n\t ga4Product.item_size = product.size;\n\t }\n\t if (product.variant) {\n\t ga4Product.item_variant = product.variant;\n\t }\n\t if (product.coupon) {\n\t ga4Product.coupon = product.coupon;\n\t }\n\t if (product.discount) {\n\t ga4Product.discount = parseFloat(product.discount);\n\t }\n\t if (product.promotionName) {\n\t ga4Product.promotion_id = product.promotionName;\n\t ga4Product.promotion_name = product.promotionName;\n\t }\n\t ga4Product.item_list_id = ga4GetProductItemListId(product);\n\t ga4Product.item_list_name = ga4Product.item_list_id;\n\t if (product.genderName) {\n\t ga4Product.item_gender = product.genderName;\n\t }\n\t if (product.itemSeason) {\n\t ga4Product.item_season = product.itemSeason;\n\t }\n\t if (product.stockStatus) {\n\t ga4Product.item_stock_status = product.stockStatus;\n\t }\n\t return ga4Product;\n\t });\n\t return mappedProducts;\n\t}\n\n\t/**\n\t * GA4 Get value of products\n\t * @param {Arrray} products products to be evaluated\n\t * @returns value of all products in array\n\t */\n\tfunction ga4GetProductsValue(products) {\n\t var value = products.reduce(function (accumulator, product) {\n\t return accumulator + parseFloat(product.price) * product.quantity;\n\t }, 0);\n\t return parseFloat(value);\n\t}\n\n\t/**\n\t * GA4 Get cart page data\n\t */\n\tfunction ga4GetCartData() {\n\t var $cartInfo = $('#analytics-cartInfo');\n\t return {\n\t couponNames: $cartInfo.data('coupons-name'),\n\t value: $cartInfo.data('value')\n\t };\n\t}\n\n\t/**\n\t * GA4 formatted promotion items\n\t * @param {Array} products Analytics promotions\n\t * @returns GA4 formatted promotion items list\n\t */\n\tfunction ga4GetPromotions(promotions) {\n\t if (!promotions || !promotions.length) {\n\t return [];\n\t }\n\t var mappedPromotions = [];\n\t mappedPromotions = promotions.map(function (promotion) {\n\t return {\n\t item_id: promotion.id,\n\t promotion_id: promotion.id,\n\t promotion_name: promotion.name,\n\t creative_name: promotion.creative,\n\t creative_slot: promotion.position\n\t };\n\t });\n\t return mappedPromotions;\n\t}\n\n\t/**\n\t * @description extract the user email and phone from menuAccount - analytics-user, populated after login\n\t * @return user {obj} an object with the customer email and phone\n\t */\n\tfunction getCustomerEmailAndPhone() {\n\t var $user = $('#analytics-user');\n\t var customerEmail = $user.data('email') ? $user.data('email') : '';\n\t var customerPhone = $user.data('phone') ? $user.data('phone') : '';\n\n\t return {\n\t customerEmail: customerEmail,\n\t customerPhone: customerPhone\n\t };\n\t}\n\n\t/**\n\t * @description get the product tile information\n\t * @param $product {div} the analytics-product div where the data will be extracted\n\t * @return product {Object} a the product Object contains the analytics informations\n\t */\n\tfunction getProductBaseData($product) {\n\t var product = {\n\t 'name': $product.data('name'),\n\t 'id': $product.data('id'),\n\t 'price': $product.data('price'),\n\t 'brand': $product.data('brand'),\n\t 'category': $product.data('category'),\n\t 'discount': $product.data('discount'),\n\t 'promotionName': $product.data('promotionName')\n\t };\n\t var size = $product.data('size');\n\t if (size) {\n\t product.size = size;\n\t }\n\t var listId = $product.data('listId');\n\t if (listId) {\n\t product.listId = listId;\n\t }\n\t var genderName = $product.data('gender-name');\n\t if (genderName) {\n\t product.genderName = genderName;\n\t }\n\t var itemSeason = $product.data('item-season');\n\t if (itemSeason) {\n\t product.itemSeason = itemSeason;\n\t }\n\t var stockStatus = $product.data('stock-status');\n\t if (stockStatus) {\n\t product.stockStatus = stockStatus;\n\t }\n\t return product;\n\t}\n\n\t/**\n\t * @description get the product tile information\n\t * @param $product {div} the analytics-tileproduct div where the data will be extracted\n\t * @return product {Object} a the product Object contains the analytics tiles informations\n\t */\n\tfunction getProductTileData($product) {\n\t var color = $product.data('color'),\n\t size = $product.data('size');\n\t var variant = size ? color + ' | ' + size : color;\n\t var product = getProductBaseData($product);\n\t product.variant = variant;\n\n\t // quantity\n\t var quantity = $product.data('quantity');\n\t if (typeof quantity !== 'undefined' && quantity !== null && !isNaN(quantity)) {\n\t product.quantity = parseInt(quantity);\n\t }\n\n\t // custom attributes - dimensions\n\t var dimension1 = $product.data('dimension1');\n\t if (dimension1) {\n\t product.dimension1 = dimension1;\n\t }\n\t var dimension2 = $product.data('dimension2');\n\t if (dimension2) {\n\t product.dimension2 = dimension2;\n\t }\n\t var dimension3 = $product.data('dimension3');\n\t if (dimension3) {\n\t product.dimension3 = dimension3;\n\t }\n\n\t // ga4 categories\n\t extendProductDataWithGA4Categories(product, $product.data());\n\n\t return product;\n\t}\n\n\t/**\n\t * @description get the product tile information with also the three dimensions and the tryon\n\t * @param $product {div} the analytics-tileproduct div where the data will be extracted\n\t * @return product {Object} a the product Object contains the analytics informations\n\t */\n\tfunction getProductTileDataExtended($product) {\n\t var product = getProductTileData($product);\n\t product.dimension1 = $product.data('dimension1');\n\t product.dimension2 = $product.data('dimension2');\n\t product.dimension3 = $product.data('dimension3');\n\t //IN-AR TRY ON\n\t if ($product.data('opened-in-ar-tryon')) {\n\t product.openedInArTryon = $product.data('opened-in-ar-tryon');\n\t }\n\n\t return product;\n\t}\n\n\t/**\n\t * @description extract all the products impressions from the dom\n\t * @param index {number} the index to start the position of the products\n\t * @return products {list} a list of all the products showed in page\n\t */\n\tfunction getProductsData(index) {\n\t var products = [],\n\t product,\n\t $product;\n\t var position = index || 0;\n\t //track the plp products\n\t var $productsPLP = $('.analytics-ProductList .analytics-product.unregistered');\n\t if ($productsPLP.length > 1) {\n\t $productsPLP.each(function () {\n\t $product = $(this);\n\t product = getProductTileData($product);\n\t $product.data('position', position);\n\t product.position = position;\n\t product.list = window.bata_com_ns.analytics.pageType;\n\t position++;\n\t products.push(product);\n\n\t $product.removeClass('unregistered');\n\t });\n\t } else {\n\t product = getProductTileData($productsPLP);\n\t if (!product.id) {\n\t return;\n\t }\n\t $productsPLP.data('position', position);\n\t product.position = position;\n\t product.list = window.bata_com_ns.analytics.pageType;\n\t position++;\n\t products.push(product);\n\n\t $productsPLP.removeClass('unregistered');\n\t }\n\t window.bata_com_ns.analytics.productsDisplayed = position;\n\t return products;\n\t}\n\n\t/**\n\t * @description extract all the products impressions from the search dom\n\t * @param index {number} the index to start the position of the products\n\t * @return products {list} a list of all the products showed in page\n\t */\n\tfunction getProductsDataSearch(index) {\n\t var products = [],\n\t product,\n\t $product;\n\t var position = index;\n\t var list = window.bata_com_ns.analytics.pageType + ' search suggestion';\n\t //get the search products's data from the DOM\n\t var $productsSearch = $('.analytics-ProductList .analytics-product-search.unregistered');\n\t if ($productsSearch.length > 1) {\n\t $productsSearch.each(function () {\n\t $product = $(this);\n\t product = getProductTileData($product);\n\t $product.data('position', position);\n\t product.position = position;\n\t product.list = list;\n\t product.item_list_id = list;\n\t position++;\n\t products.push(product);\n\n\t $product.removeClass('unregistered');\n\t });\n\t } else {\n\t product = getProductTileData($productsSearch);\n\t $productsSearch.data('position', position);\n\t product.position = position;\n\t product.list = list;\n\t product.item_list_id = list;\n\t position++;\n\t products.push(product);\n\n\t $productsSearch.removeClass('unregistered');\n\t }\n\t return products;\n\t}\n\n\t/**\n\t * @description extract all the products impressions from the cart in dom (cart or minicart)\n\t * @param pageType {String} the location where the event is triggered\n\t * @return products {list} a list of all the products showed in cart\n\t */\n\tfunction getProductsCartData(pageType) {\n\t var products = [],\n\t product,\n\t $product;\n\n\t var $productsElements = $('.analytics-cart > .analytics-product.unregistered');\n\t if ($productsElements.length > 1) {\n\t $productsElements.each(function () {\n\t $product = $(this);\n\t product = getProductTileData($product);\n\t product.position = $product.data('position');\n\t product.list = pageType;\n\t product.listId = $product.data('listId');\n\t products.push(product);\n\t $product.removeClass('unregistered');\n\t });\n\t } else if ($productsElements.length === 1) {\n\t product = getProductTileData($productsElements);\n\t product.position = $productsElements.data('position');\n\t product.list = pageType;\n\t product.listId = $productsElements.data('listId');\n\t products.push(product);\n\t $productsElements.removeClass('unregistered');\n\t }\n\t return products;\n\t}\n\n\t/**\n\t * @description extract all the products data from checkout page\n\t * @param step {Int} the checkout's step\n\t * @param isCartOpened {boolean} optional: set on true only for checkout's step where the products's data needs to be picked from cart or minicart\n\t * @return products {list} a list of all the products showed in checkout page\n\t */\n\tfunction getCheckoutProducts(step, isCartOpened) {\n\t var products = [],\n\t product,\n\t $product,\n\t $checkoutProducts;\n\t //if the minicart was opened means that some products could have been deleted (available only in the first and second checkout step)\n\t if (step < 2 && isCartOpened) {\n\t //if the user is in cart page picks the product's data directly from the main cart (and not from the minicart)\n\t if (window.bata_com_ns.analytics.pageType === 'cart') {\n\t $checkoutProducts = $('.js-analytics-MainCart .analytics-cart > .analytics-product');\n\t } else {\n\t $checkoutProducts = $('.analytics-cart > .analytics-product');\n\t }\n\t } else {\n\t $checkoutProducts = $('.js-analytics-checkout > .analytics-product');\n\t }\n\t var elementsFound = $checkoutProducts.length;\n\t if (elementsFound === 0) {\n\t products = productOrder;\n\t } else if (elementsFound > 1) {\n\t $checkoutProducts.each(function () {\n\t $product = $(this);\n\t product = getProductTileDataExtended($product);\n\t product.quantity = parseInt($product.data('quantity'));\n\t products.push(product);\n\t });\n\t } else {\n\t product = getProductTileDataExtended($checkoutProducts);\n\t product.quantity = parseInt($checkoutProducts.data('quantity'));\n\t products.push(product);\n\t }\n\n\t return products;\n\t}\n\n\t/**\n\t * @description simulate a page impression for checkout updates\n\t * @param order {OrderModel} the relative order model\n\t */\n\tfunction setCheckoutProducts(order) {\n\t productOrder = [];\n\t var products = order.items.items;\n\t var analyticsProduct, variants;\n\t products.forEach(function (product) {\n\t if (product.variationAttributes.length > 1) {\n\t variants = product.variationAttributes[0].displayValue + ' | ' + product.variationAttributes[1].localizedSize || product.variationAttributes[1].displayValue;\n\t } else {\n\t variants = product.variationAttributes[0].displayValue;\n\t }\n\t analyticsProduct = {\n\t 'name': product.productName,\n\t 'id': product.id,\n\t 'dimension1': product.masterProductID,\n\t 'dimension2': product.articleNo,\n\t 'dimension3': product.variationGroupID,\n\t 'price': product.price.sales.decimalPrice,\n\t 'brand': product.brand,\n\t 'category': product.primaryCategoryID,\n\t 'variant': variants,\n\t 'quantity': product.quantity || 1,\n\t 'discount': product.discount,\n\t 'promotionName': product.promotionName,\n\t 'listId': product.analyticsListId,\n\t 'genderName': product.genderName,\n\t 'itemSeason': product.itemSeason,\n\t 'stockStatus': product.stockStatus\n\t };\n\t if (product.size) {\n\t analyticsProduct.size = product.size;\n\t }\n\t extendProductDataWithGA4Categories(analyticsProduct, product);\n\t productOrder.push(analyticsProduct);\n\t });\n\t}\n\n\t/**\n\t * @description extract the page type from the dom\n\t * @return pageType {String} the type of the page, mapped on analytics-pagemapping.js\n\t */\n\tfunction getPageType() {\n\t var pageType = $('.page-meta-data').data('page-type');\n\t return pageType;\n\t}\n\n\t/**\n\t * @description determine if this is a search page and proceed to extract search's data, the track the event\n\t */\n\tfunction searchHelper() {\n\t var $search = $('.js-analytics-search-keyword');\n\n\t var isCategorySearch = false,\n\t keyword = null,\n\t categoryId = null,\n\t numberOfResults = null;\n\n\t if ($search.length > 0) {\n\t numberOfResults = $search.data('analytics-results-number');\n\t } else {\n\t //it's a category search\n\t isCategorySearch = true;\n\t $search = $('.js-analytics-search-category');\n\t categoryId = $search.data('analytics-category-id');\n\t }\n\n\t keyword = $search.data('analytics-keyword');\n\n\t if (keyword && keyword.length > 0) {\n\t var searchData = {\n\t resultsNumber: numberOfResults && numberOfResults > 0 ? numberOfResults : 0,\n\t searchMethod: \"standard\",\n\t searchTerm: keyword\n\t };\n\n\t if (searchData.resultsNumber > 0) {\n\t events.ga4SuccessfulSearch(searchData);\n\t } else {\n\t events.ga4UnsuccessfulSearch(searchData);\n\t }\n\t }\n\n\t events.search(isCategorySearch, keyword, categoryId, numberOfResults);\n\t}\n\n\t/**\n\t * @description extract the data from the PDP dom and return a product formatted\n\t * @return product {Object} the product formatted\n\t */\n\tfunction getPDPProduct() {\n\t var $product = $('.analytics-productPDP');\n\t var color = $product.data('color'),\n\t size = $product.data('size');\n\t var variant = size ? color + ' | ' + size : color;\n\t var isSalesStatus = getSalesStatus($product);\n\n\t var product = {\n\t 'name': $product.data('name'),\n\t 'id': $product.data('id'),\n\t 'dimension1': $product.data('dimension1'),\n\t 'dimension2': $product.data('dimension2'),\n\t 'dimension3': $product.data('dimension3'),\n\t 'price': $product.data('price'),\n\t 'brand': $product.data('brand'),\n\t 'category': $product.data('category'),\n\t 'description': $product.data('description'),\n\t 'productUrl': $product.data('canonicalUrl'),\n\t 'categoryUrl': $product.data('categoryurl'),\n\t 'imageUrl': $product.data('imageurl'),\n\t 'variant': variant,\n\t 'promotionName': $product.data('promotionName'),\n\t 'discount': $product.data('discount'),\n\t 'listId': $product.data('listId'),\n\t 'genderName': $product.data('gender-name'),\n\t 'itemSeason': $product.data('item-season'),\n\t 'stockStatus': $product.data('stock-status'),\n\t 'itemSalesStatus': isSalesStatus\n\t };\n\t if (size) {\n\t product.size = size;\n\t }\n\t extendProductDataWithGA4Categories(product, $product.data());\n\t return product;\n\t}\n\n\t/**\n\t * @description get all the products's impression from the DOM\n\t * @return products {List} a list of products impression\n\t */\n\tfunction getProductDataPDP() {\n\t var products = [];\n\t var product = getPDPProduct();\n\t products.push(product);\n\t return products;\n\t}\n\n\t/**\n\t * @description get the product tile information\n\t * @param $product {div} the analytics-tileproduct div where the data will be extracted\n\t * @return product {Object} a the product Object contains the analytics informations\n\t */\n\tfunction getProductClickTileData($product) {\n\t var color = $product.data('color'),\n\t size = $product.data('size');\n\t var variant = size ? color + ' | ' + size : color;\n\t var isSalesStatus = getSalesStatus($product);\n\n\t var product = {\n\t 'name': $product.data('name'),\n\t 'id': $product.data('id'),\n\t 'dimension1': $product.data('dimension1'),\n\t 'dimension2': $product.data('dimension2'),\n\t 'dimension3': $product.data('dimension3'),\n\t 'price': $product.data('price'),\n\t 'brand': $product.data('brand'),\n\t 'category': $product.data('category'),\n\t 'position': $product.data('position'),\n\t 'variant': variant,\n\t 'discount': $product.data('discount'),\n\t 'promotionName': $product.data('promotionName'),\n\t 'list': window.bata_com_ns.analytics.pageType,\n\t 'listId': $product.data('listId'),\n\t 'genderName': $product.data('gender-name'),\n\t 'itemSeason': $product.data('item-season'),\n\t 'stockStatus': $product.data('stock-status'),\n\t 'item_sales_status': isSalesStatus\n\t };\n\t if (size) {\n\t product.size = size;\n\t }\n\t extendProductDataWithGA4Categories(product, $product.data());\n\t return product;\n\t}\n\n\t/**\n\t * @description get all the promo informations, then launch the event\n\t */\n\tfunction promoHelper(promotions) {\n\t if (promotions && promotions.length > 0) {\n\t var promo,\n\t analyticsPromotionsData = [];\n\t //get all promotions data and build the analytics promo object\n\t for (var i = 0; i < promotions.length; i++) {\n\t promo = promotions[i];\n\t analyticsPromotionsData.push({\n\t 'id': promo.id,\n\t 'name': promo.name,\n\t 'creative': '',\n\t 'position': promo.rank || 'center'\n\t });\n\t }\n\t var ga4Promotions = ga4GetPromotions(analyticsPromotionsData);\n\t events.ga4ViewPromotion(ga4Promotions);\n\t events.promoImpression(analyticsPromotionsData);\n\t }\n\t}\n\n\t/**\n\t * @description get all the promo information from the DOM, then process to pass the formatted data\n\t */\n\tfunction promoImpressionHelper() {\n\t var $promo = $('span.analytics-promotion');\n\t var promotions = [],\n\t promo = {\n\t 'id': $promo.data('id'),\n\t 'name': $promo.data('name'),\n\t 'rank': $promo.data('rank')\n\t };\n\t promotions.push(promo);\n\t promoHelper(promotions);\n\t}\n\n\t/**\n\t * @description get all the pagedesigner promo information from the DOM, then process to pass the formatted data\n\t */\n\tfunction PageDesignerPromoImpressionHelper() {\n\t var analyticsPromotionsData = [];\n\t var $productsElements = $('.js-analytics-banner');\n\t if ($productsElements.length > 1) {\n\t $productsElements.each(function () {\n\t var $banner = $(this);\n\t if ($banner.data(\"analytics-title\") && $banner.data(\"analytics-title\") !== \"\" && $banner.data(\"analytics-title\") !== \"No title\") {\n\t analyticsPromotionsData.push({\n\t 'id': $banner.data(\"analytics-title\"),\n\t 'name': $banner.data(\"analytics-title\")\n\t });\n\t }\n\t });\n\t if (analyticsPromotionsData.length) {\n\t var ga4Promotions = ga4GetPromotions(analyticsPromotionsData);\n\t events.ga4ViewPromotion(ga4Promotions);\n\t events.PageDesignerPromoImpression(analyticsPromotionsData);\n\t }\n\t }\n\t}\n\n\t/**\n\t * @description Extract the data from the variation product, then call the event\n\t * @param product {Object} The new variation product selected\n\t */\n\tfunction variationClickHelper(product) {\n\t // The master category is always contained in the last breadcrumb, so the variation group ID\n\t var masterCategory = product.breadcrumbs && product.breadcrumbs.length > 0 ? product.breadcrumbs[product.breadcrumbs.length - 1] : null;\n\n\t // Extract product details\n\t var productName = product.productName,\n\t productID = product.id,\n\t masterProductID = product.masterProductID,\n\t articleNo = product.custom.articleNo,\n\t variationGroupID = masterCategory ? masterCategory.variationGroupID : '',\n\t price = product.price.sales.decimalPrice,\n\t brand = product.brand,\n\t categoryID = masterCategory ? masterCategory.id : '',\n\t description = product.longDescription,\n\t productUrl = product.canonicalUrl,\n\t categoryUrl = masterCategory ? new URL(masterCategory.url, document.baseURI).href : '',\n\t imageUrl = product.images.large[0].url,\n\t promotionName = product.promotionName,\n\t discount = product.discount,\n\t isSalesStatus = getSalesStatus(product),\n\t stockStatus = product.stockStatus,\n\t genderName = product.genderName,\n\t itemSeason = product.itemSeason,\n\t color,\n\t size,\n\t variation;\n\t // Detect the color selected\n\t for (var i = 0; i < product.variationAttributes[0].values.length; i++) {\n\t variation = product.variationAttributes[0].values[i];\n\t if (variation.selected) {\n\t color = variation.displayValue;\n\t }\n\t }\n\t // Detect the size selected, only if the size variation exist\n\t for (var _i = 0; _i < product.variationAttributes[1].values.length; _i++) {\n\t variation = product.variationAttributes[1].values[_i];\n\t if (variation.selected) {\n\t size = variation.localizedSize || variation.displayValue;\n\t }\n\t }\n\t var variant = size ? color + ' | ' + size : color;\n\t var $analyticsProduct = $('.analytics-productPDP');\n\n\t // Prepare the products object for analytics\n\t var products = [{\n\t 'name': productName,\n\t 'id': productID,\n\t 'dimension1': masterProductID,\n\t 'dimension2': articleNo,\n\t 'dimension3': variationGroupID,\n\t 'price': price,\n\t 'brand': brand,\n\t 'category': categoryID,\n\t 'description': description,\n\t 'productUrl': productUrl,\n\t 'categoryUrl': categoryUrl,\n\t 'imageUrl': imageUrl,\n\t 'variant': variant,\n\t 'promotionName': promotionName,\n\t 'discount': discount,\n\t 'listId': $analyticsProduct.data('listId'),\n\t 'genderName': genderName,\n\t 'itemSeason': itemSeason,\n\t 'stockStatus': stockStatus,\n\t 'item_sales_status': isSalesStatus\n\t }];\n\t if (size) {\n\t products.size = size;\n\t }\n\t extendProductDataWithGA4Categories(products[0], product);\n\t var ga4Products = ga4GetProducts(products);\n\n\t events.ga4SelectItem(window.bata_com_ns.analytics.currency, ga4Products);\n\t // Launch the event variantSelected\n\t events.variantSelected(window.bata_com_ns.analytics.currency, products);\n\t // Update the analytics producs data in the DOM, so it's ready for addToCart event\n\t $analyticsProduct.data('name', productName);\n\t $analyticsProduct.data('id', productID);\n\t $analyticsProduct.data('dimension1', masterProductID);\n\t $analyticsProduct.data('dimension2', articleNo);\n\t $analyticsProduct.data('dimension3', variationGroupID);\n\t $analyticsProduct.data('price', price);\n\t $analyticsProduct.data('brand', brand);\n\t $analyticsProduct.data('category', categoryID);\n\t $analyticsProduct.data('description', description);\n\t $analyticsProduct.data('canonicalUrl', productUrl);\n\t $analyticsProduct.data('categoryurl', categoryUrl);\n\t $analyticsProduct.data('imageurl', imageUrl);\n\t $analyticsProduct.data('color', color);\n\t $analyticsProduct.data('size', size);\n\t $analyticsProduct.data('category1', product.category1);\n\t $analyticsProduct.data('category2', product.category2);\n\t $analyticsProduct.data('category3', product.category3);\n\t $analyticsProduct.data('category4', product.category4);\n\t $analyticsProduct.data('category5', product.category5);\n\t $analyticsProduct.data('discount', product.discount);\n\t $analyticsProduct.data('promotionName', product.promotionName);\n\t $analyticsProduct.data('gender-name', genderName);\n\t $analyticsProduct.data('item-season', itemSeason);\n\t $analyticsProduct.data('stock-status', stockStatus);\n\t $analyticsProduct.data('item_sales_status', isSalesStatus);\n\n\t // Also collect the new possible promotions displayed\n\t promoHelper(product.promotions);\n\n\t // Update PDP analytics data for \"share\" event\n\t if (window.bata_com_ns.analytics.pageType === \"product\") {\n\t $('ul.social-icons').data('analytics-pid', variationGroupID);\n\t }\n\t}\n\n\t/**\n\t * @description simulate a page impression for checkout updates\n\t */\n\tfunction checkoutUpdate() {\n\t var $checkout = $('#checkout-main');\n\t var step = $checkout.attr('data-checkout-stage');\n\t step = PageTypeMap.PAGE_MAPPING[step] || step;\n\t window.bata_com_ns.analytics.pageType = step;\n\n\t // set page-meta tag so that it's in sync with window.bata_com_ns.analytics.pageType\n\t pageMetaDataUtils.getOrSetPageMetaDataAttrElement('data-analytics-page-type', step);\n\n\t // set page-meta tag so that it's in sync with page's pageType\n\t pageMetaDataUtils.getOrSetPageMetaDataAttrElement('data-page-type', pageMetaDataUtils.PAGE_MAPPING[step] || step);\n\n\t var customerType = $checkout.data('customer-crm-id') || 'guest';\n\t var customerEmail = $checkout.data('customer-email') || '';\n\n\t events.pageImpression(customerType, step, window.location.href, customerEmail);\n\t var customerCrmId = $checkout.data('customer-crm-id');\n\t var ga4CrmId = customerCrmId && customerCrmId !== 'guest' ? customerCrmId : null;\n\t events.ga4PageView({\n\t pageType: step,\n\t pageURL: window.location.origin,\n\t pagePath: window.location.pathname,\n\t userID: ga4CrmId,\n\t loginStatus: ga4CrmId ? 'loggedIn' : 'guest',\n\t customerType: ga4CrmId ? 'loyal-cutomer' : '',\n\t country: window.bata_com_ns.analytics.country\n\t });\n\t}\n\n\t/**\n\t * @description simulate a page impression for checkout updates\n\t * @param $analyticsProduct {element} the div(s) that contains all the product's data\n\t * @returns products {List} a list that contains the product'data clicked\n\t */\n\tfunction productClickHelper($analyticsProduct) {\n\t var products = [],\n\t product;\n\t //if the minicart is opened, there can be multiple tile of the same product, so pick the first one available\n\t $analyticsProduct = $analyticsProduct.length > 1 ? $analyticsProduct.first() : $analyticsProduct;\n\n\t product = getProductClickTileData($analyticsProduct);\n\t products.push(product);\n\n\t return products;\n\t}\n\n\t/**\n\t * @description launch both of the events for addToCart event\n\t * @param $product {element} the div that contains all the product's data\n\t * @param arTryonInfo {arTryonInfo} IN-AR TRY ON object with the tryon flags\n\t */\n\tfunction addToCartHelper($product, arTryonInfo) {\n\t var product,\n\t products = [],\n\t pageType = window.bata_com_ns.analytics.pageType,\n\t pageView;\n\n\t if (pageType !== 'product' && $product) {\n\t product = getProductTileDataExtended($product);\n\t product.list = pageType;\n\t pageView = PageTypeMap.CART_MAPPING[pageType];\n\t } else {\n\t product = getPDPProduct();\n\t }\n\t product.quantity = 1;\n\t products.push(product);\n\n\t var currUser = getCustomerEmailAndPhone(),\n\t ga4Products = ga4GetProducts(products);\n\n\t events.ga4AddToCart(window.bata_com_ns.analytics.currency, ga4Products, parseFloat(product.price) * product.quantity);\n\t events.addToCart(window.bata_com_ns.analytics.currency, products, pageView, currUser.customerEmail, currUser.customerPhone, arTryonInfo);\n\t events.trackGAEvent(pageType, 'add to bag', product.id);\n\t}\n\n\t/**\n\t * @description launch both of the events for removeFromCart event\n\t * @param $product {element} the div that contains all the product's data\n\t * @param pageType {String} the page type where the product is removed\n\t * @param singleItem {String} only single item was removed from a cart\n\t */\n\tfunction removeFromCartHelper($product, pageType, singleItem) {\n\t var product,\n\t products = [];\n\n\t product = getProductTileData($product);\n\t product.position = $product.data('position');\n\t product.quantity = singleItem ? 1 : parseInt($product.data('quantity'));\n\t product.list = pageType;\n\t product.dimension1 = $product.data('dimension1');\n\t product.dimension2 = $product.data('dimension2');\n\t product.dimension3 = $product.data('dimension3');\n\t products.push(product);\n\n\t var ga4Products = ga4GetProducts(products);\n\t events.ga4RemoveFromCart(window.bata_com_ns.analytics.currency, ga4Products, ga4GetProductsValue(ga4Products));\n\t events.removeFromCart(products);\n\t events.trackGAEvent(pageType, 'remove', product.id);\n\t}\n\n\t/**\n\t * @description launch the event addToWishlist\n\t * @param pid {String} the product's ID added\n\t */\n\tfunction addToWishlistHelper(pid, $product) {\n\t var product = getProductClickTileData($product);\n\t var ga4Products = ga4GetProducts([product]);\n\t events.ga4AddToWishlist(window.bata_com_ns.analytics.currency, ga4Products, parseFloat(product.price || 0));\n\t events.trackGAEvent(PageTypeMap.WISHLIST_MAPPING[window.bata_com_ns.analytics.pageType], 'wishlist add', pid);\n\t}\n\n\t/**\n\t * @description launch the event removeFromWishlist\n\t * @param pid {String} the product's ID removed\n\t */\n\tfunction removeFromWishlistHelper(pid, $product) {\n\t var product = getProductClickTileData($product);\n\t var ga4Products = ga4GetProducts([product]);\n\t events.ga4RemoveFromWishlist(window.bata_com_ns.analytics.currency, ga4Products, parseFloat(product.price || 0));\n\t events.trackGAEvent(PageTypeMap.WISHLIST_MAPPING[window.bata_com_ns.analytics.pageType], 'wishlist remove', pid);\n\t}\n\n\t/**\n\t * @description launch the checkout's events\n\t * @param step {int} the checkout's step\n\t * @param options {Object} various information, step based\n\t * @param isMiniCartOpened {boolean} optional: set on true only for checkout's second step, if the minicart has been opened\n\t */\n\tfunction checkouStepHelper(step, options, isMiniCartOpened) {\n\t var products = getCheckoutProducts(step, isMiniCartOpened);\n\t var currUser = getCustomerEmailAndPhone();\n\n\t // GA4 begin_checkout (cart -> checkout)\n\t if (step === 1) {\n\t var ga4Products = ga4GetProducts(products);\n\t var ga4CartData = ga4GetCartData();\n\t events.ga4BeginCheckout(window.bata_com_ns.analytics.currency, ga4Products, ga4CartData.couponNames, ga4CartData.value);\n\t }\n\n\t if (step === 2) {\n\t var _ga4Products = ga4GetProducts(products);\n\t var checkoutData = {\n\t stepLabel: \"shipping info\",\n\t stepNumber: 2\n\t };\n\t events.ga4CheckoutProgress(checkoutData, _ga4Products);\n\t }\n\n\t // GA4 checkout_progress (payment page load)\n\t if (step === 3) {\n\t var _ga4Products2 = ga4GetProducts(products);\n\t var _ga4CartData = ga4GetCartData();\n\t var _checkoutData = {\n\t currencyCode: window.bata_com_ns.analytics.currency,\n\t coupon: _ga4CartData && _ga4CartData.couponNames,\n\t value: _ga4CartData && _ga4CartData.value,\n\t stepLabel: \"payment info\",\n\t stepNumber: 3\n\t };\n\t events.ga4CheckoutProgress(_checkoutData, _ga4Products2);\n\t }\n\n\t events.pushCheckoutData(step, options, products, currUser.customerEmail, currUser.customerPhone);\n\t}\n\n\t/**\n\t * @description launch the checkout's events\n\t * @param step {int} the checkout's step\n\t * @param options {Object} various information, step based\n\t * @param order {Object} the order in execution\n\t */\n\tfunction updateCheckoutData(step, options, order) {\n\t var option;\n\t // in case of multiple payment methods concatenate them (only for CO step 4)\n\t if (step === 4) {\n\t for (var i = 0; i < options.length; i++) {\n\t if (i === 0) {\n\t option = options[i].paymentMethod;\n\t } else {\n\t option += ' | ' + options[i].paymentMethod;\n\t }\n\t }\n\t } else {\n\t option = options;\n\t }\n\n\t setCheckoutProducts(order);\n\t var products = productOrder;\n\n\t // GA4 payment\n\t if (step === 4 && order) {\n\t var ga4Products = ga4GetProducts(products);\n\t var checkoutData = {\n\t currency: window.bata_com_ns.analytics.currency,\n\t paymentType: order.billing && order.billing.payment && order.billing.payment.selectedPaymentInstruments && order.billing.payment.selectedPaymentInstruments.length && order.billing.payment.selectedPaymentInstruments[0].labelMethod,\n\t coupon: order.couponsName,\n\t paymentMethodSaved: order.paymentMethodSaved,\n\t value: order.totals && order.totals.grandTotalDecimal\n\t };\n\t events.ga4AddPaymentInfo(checkoutData, ga4Products);\n\t }\n\t events.pushCheckoutData(step, option, products);\n\t}\n\n\t/**\n\t * @description launch the event order confirmation\n\t */\n\tfunction orderConfirmHelper() {\n\t var step = 5;\n\t var products = getCheckoutProducts(step, false);\n\t events.pushCheckoutData(step, 'orderconfirmation', products);\n\t var $checkoutInfo = $('#analytics-checkoutInfo');\n\t var coupon = {\n\t 'couponCodeName': $checkoutInfo.data('coupons-name'),\n\t 'couponDiscount': $checkoutInfo.data('coupons-discount')\n\t };\n\t var currUser = getCustomerEmailAndPhone();\n\t var couponNames = coupon.couponCodeName;\n\n\t var ga4Products = ga4GetProducts(products);\n\t var ga4PurchaseData = {\n\t currency: window.bata_com_ns.analytics.currency,\n\t affiliation: 'Bata',\n\t transactionId: $checkoutInfo.data('id'),\n\t value: parseFloat($checkoutInfo.data('revenue')),\n\t shipping: parseFloat($checkoutInfo.data('shipping')),\n\t shippingTier: $checkoutInfo.data('shipping-tier'),\n\t paymentType: $checkoutInfo.data('payment-type'),\n\t tax: $checkoutInfo.data('tax'),\n\t adjustedMerchandizeTotalNetPrice: $checkoutInfo.data('adjustedMerchandizeTotalNetPrice'),\n\t adjustedMerchandizeTotalTax: $checkoutInfo.data('adjustedMerchandizeTotalTax'),\n\t bataStore: $checkoutInfo.data('bataStore'),\n\t cartId: $checkoutInfo.data('cartId'),\n\t transactionType: $checkoutInfo.data('transactionType'),\n\t email: $checkoutInfo.data('email')\n\t };\n\t if (couponNames) {\n\t ga4PurchaseData.coupon = couponNames;\n\t }\n\t events.ga4Purchase(ga4PurchaseData, ga4Products);\n\n\t events.purchase({\n\t id: $checkoutInfo.data('id'),\n\t revenue: $checkoutInfo.data('revenue'),\n\t tax: $checkoutInfo.data('tax'),\n\t shipping: $checkoutInfo.data('shipping'),\n\t coupon: coupon,\n\t products: products,\n\t customerEmail: currUser.customerEmail,\n\t customerPhone: currUser.customerPhone,\n\t adjustedMerchandizeTotalNetPrice: $checkoutInfo.data('adjustedMerchandizeTotalNetPrice'),\n\t adjustedMerchandizeTotalTax: $checkoutInfo.data('adjustedMerchandizeTotalTax')\n\t });\n\t}\n\n\t/**\n\t * @description update the analytics product quantity in Cart page\n\t * @param productID {String} the product's ID\n\t * @param quantity {Int} the quantity of the product\n\t */\n\tfunction updateProductQuantity(productID, quantity) {\n\t var analyticsSelector = '.js-analytics-MainCart .analytics-product.' + productID;\n\t $(analyticsSelector).data('quantity', quantity);\n\t}\n\n\t/**\n\t * @description gets business hours (they are defined within Site preferences - businessHours field)\n\t */\n\tfunction getBusinessHours() {\n\t var $bh = $('.analytics-businessHours');\n\t var content = $bh && $bh.length ? $bh.data('content') : null;\n\t return content;\n\t}\n\n\t/**\n\t * @description extract the data from the cart unavailability modal and fire removeFromCart event\n\t */\n\tfunction removeFromCartByUnavailabilityModal() {\n\t var products = [],\n\t $product,\n\t $removedProducts = $('#unavailableProductsModal .cc-cart-item');\n\n\t var elementsFound = $removedProducts.length;\n\t if (elementsFound > 0) {\n\t $removedProducts.each(function () {\n\t $product = $(this);\n\t var product = {};\n\t product.id = $product.data('id');\n\t product.quantity = parseInt($product.data('quantity'));\n\t product.price = $product.data('priceTotal');\n\t products.push(product);\n\t });\n\t }\n\n\t var ga4Products = ga4GetProducts(products);\n\t events.ga4RemoveFromCart(window.bata_com_ns.analytics.currency, ga4Products, ga4GetProductsValue(ga4Products));\n\t events.removeFromCart(products);\n\t}\n\n\t/**\n\t * Track recommendations products view\n\t * @param {Object} recommendationContainer recommendation element\n\t */\n\tfunction trackRecommendationsLists(recommendationContainer) {\n\t var product, $product, $recommendation;\n\t // loop recommendations carousels\n\t var $recommendations = $(recommendationContainer) || $('.recommendations');\n\t if ($recommendations.length > 0) {\n\t $recommendations.each(function () {\n\t $recommendation = $(this);\n\t var position = 0;\n\t var products = [];\n\t var recommendationName = $recommendation.find('.carousel-title').first().html().trim() || 'recommendation';\n\t var $products = $recommendation.find('.analytics-product.unregistered');\n\t if ($products.length > 0) {\n\t // loop products in a recommendation carousel\n\t $products.each(function () {\n\t $product = $(this);\n\t product = getProductTileData($product);\n\t // skip invalid product\n\t if (!product.id) {\n\t return;\n\t }\n\t product.position = position;\n\t $product.data('position', position);\n\t product.listId = recommendationName;\n\t $product.data('listId', recommendationName);\n\t position++;\n\t products.push(product);\n\t $product.removeClass('unregistered');\n\t });\n\t }\n\t if (products.length === 0) {\n\t return;\n\t }\n\t // enhance product object with GA4 attributes\n\t var ga4Products = ga4GetProducts(products);\n\t // track products view event\n\t events.ga4ViewItemList(window.bata_com_ns.analytics.currency, ga4Products);\n\t });\n\t }\n\t return;\n\t}\n\n\t/**\n\t * Track scroll position\n\t */\n\tfunction trackScrollPosition() {\n\t var scrollPercent = ($(window).scrollTop() / ($(document).height() - $(window).height()) * 100).toFixed();\n\t [25, 50, 75, 100].some(function (position) {\n\t if (scrollPercent < position) {\n\t return true;\n\t }\n\t if (scrollPercent >= position && !scrollPosition[position.toString()]) {\n\t scrollPosition[position.toString()] = true;\n\t events.ga4Scroll(position);\n\t return true;\n\t }\n\t });\n\t}\n\n\t/**\n\t * Parse abTests data off the page's DOM\n\t * Only active and visible ab tests are there (div's data)\n\t */\n\tfunction getABtestsDataFromDOM(abTestId) {\n\t var list = [];\n\t $('.abTestsSegmentData').each(function () {\n\t var id = $(this).data('id');\n\t var segment = $(this).data('segment');\n\n\t if (typeof id !== 'undefined' && id !== null && id.length > 0 && typeof segment !== 'undefined' && segment !== null && segment.length > 0 && (!(typeof abTestId !== 'undefined' && abTestId !== null && abTestId.length > 0) || abTestId === id)) {\n\t var params = {\n\t variant_id: id,\n\t variant_name: segment,\n\t version_type: $(this).data('is-control-segment') ? 'control' : 'variant'\n\t };\n\t list.push(params);\n\t }\n\t });\n\t return list;\n\t}\n\n\t/**\n\t * Call ab test interection event that pushes active ab test data to the dataLayer\n\t * @param {Object} params - example: {abTestId: null, pageType: 'other'}\n\t */\n\tfunction callAbTestInteraction(params) {\n\t var abTestId = null;\n\t var pageType = 'other';\n\n\t if (params) {\n\t abTestId = params.abTestId && params.abTestId.length > 0 ? params.abTestId : abTestId;\n\t if (params.pageType && params.pageType.length > 0) {\n\t pageType = params.pageType;\n\t } else if (window.bata_com_ns && window.bata_com_ns.pageType && window.bata_com_ns.pageType.length > 0) {\n\t pageType = window.bata_com_ns.pageType;\n\t }\n\t }\n\n\t events.abTestInteraction(getABtestsDataFromDOM(abTestId), pageType);\n\t}\n\n\tmodule.exports = {\n\t extendProductDataWithGA4Categories: extendProductDataWithGA4Categories,\n\t ga4GetProductItemListId: ga4GetProductItemListId,\n\t ga4GetProducts: ga4GetProducts,\n\t ga4GetPromotions: ga4GetPromotions,\n\t productClickHelper: productClickHelper,\n\t getProductTileDataExtended: getProductTileDataExtended,\n\t variationClickHelper: variationClickHelper,\n\t checkoutUpdate: checkoutUpdate,\n\t addToCartHelper: addToCartHelper,\n\t getProductsCartData: getProductsCartData,\n\t removeFromCartHelper: removeFromCartHelper,\n\t addToWishlistHelper: addToWishlistHelper,\n\t removeFromWishlistHelper: removeFromWishlistHelper,\n\t getPageType: getPageType,\n\t searchHelper: searchHelper,\n\t getProductDataPDP: getProductDataPDP,\n\t getProductsData: getProductsData,\n\t getProductsDataSearch: getProductsDataSearch,\n\t checkouStepHelper: checkouStepHelper,\n\t getCheckoutProducts: getCheckoutProducts,\n\t orderConfirmHelper: orderConfirmHelper,\n\t updateCheckoutData: updateCheckoutData,\n\t setCheckoutProducts: setCheckoutProducts,\n\t promoHelper: promoHelper,\n\t promoImpressionHelper: promoImpressionHelper,\n\t getProductClickTileData: getProductClickTileData,\n\t updateProductQuantity: updateProductQuantity,\n\t removeFromCartByUnavailabilityModal: removeFromCartByUnavailabilityModal,\n\t PageDesignerPromoImpressionHelper: PageDesignerPromoImpressionHelper,\n\t getBusinessHours: getBusinessHours,\n\t ga4GetCartData: ga4GetCartData,\n\t trackRecommendationsLists: trackRecommendationsLists,\n\t trackScrollPosition: trackScrollPosition,\n\t getABtestsDataFromDOM: getABtestsDataFromDOM,\n\t callAbTestInteraction: callAbTestInteraction\n\t};\n\n/***/ }),\n\n/***/ 85:\n/***/ (function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\n\tvar utils = __webpack_require__(84);\n\tvar events = __webpack_require__(83);\n\n\t/**\n\t * @description variationClick listener\n\t * @param response {Object} an object that contains the fullproduct as an attribute (response.product)\n\t */\n\t$('body').on('product:afterAttributeSelect', function (e, response) {\n\t utils.variationClickHelper(response.data.product);\n\t});\n\n\t/**\n\t * @description addToCart listener\n\t * @param data {Object} a data object containing:\n\t * -productID: the id of the product added to the cart with pageType,\n\t * -tryOnDesktopClick: true if the user clicked on the tryon button on Desktop,\n\t * -tryOnMobileRedirect: true if the user used the tryon funcionality and got redirected back on Mobile\n\t */\n\t$('body').on('analytics:addToCart', function (e, data) {\n\t var $product,\n\t analyticsTileSelector = '.analytics-ProductList .analytics-product.' + data.productID,\n\t tile = $(analyticsTileSelector),\n\n\t //IN-AR TRY ON\n\t arTryonInfo = {};\n\n\t //tryOnDesktopClick and tryOnMobileRedirect are not null only if the tryon logic is active\n\t if (data.tryOnDesktopClick && data.tryOnDesktopClick !== null && data.tryOnMobileRedirect && data.tryOnMobileRedirect !== null) {\n\t arTryonInfo.tryOnDesktopClick = data.tryOnDesktopClick;\n\t arTryonInfo.tryOnMobileRedirect = data.tryOnMobileRedirect;\n\t } else {\n\t arTryonInfo = null;\n\t }\n\t //the tile will be > 0 only if the event is originated outside the PDP\n\t if (tile.length > 0) {\n\t $product = tile;\n\t } else {\n\t $product = $('.analytics-productPDP');\n\t }\n\n\t if (data.pageType === 'cart') {\n\t analyticsTileSelector = '.analytics-cart > .analytics-product.' + data.productID;\n\t tile = $(analyticsTileSelector);\n\t $product = tile;\n\t }\n\n\t utils.addToCartHelper($product, arTryonInfo);\n\t});\n\n\t/**\n\t * @description removeFromCart listener\n\t * @param pid {String} the id of the product added to the cart\n\t * @param pageType {String} the page type where the action is committed\n\t */\n\t$('body').on('analytics:removeFromCart', function (e, data) {\n\t var $product;\n\t //the cart tiles must be the at first child level of analytics-cart\n\t var analyticsTileSelector = '.analytics-cart > .analytics-product.' + data.productID;\n\t var tile = $(analyticsTileSelector);\n\n\t $product = tile;\n\t utils.removeFromCartHelper($product, data.pageType, data.singleItem);\n\t});\n\n\t/**\n\t * @description removeFromCartBySystem listener\n\t */\n\t$('body').on('analytics:removeFromCartBySystem', function () {\n\t utils.removeFromCartByUnavailabilityModal();\n\t});\n\n\t/**\n\t * @description addToWishlist listener\n\t * @param pid {String} the id of the product added\n\t */\n\t$('body').on('analytics:addToWishlist', function (e, pid) {\n\t var $analyticsProduct;\n\t if (utils.getPageType() === \"product\") {\n\t // PDP\n\t $analyticsProduct = $('.analytics-productPDP');\n\t } else {\n\t $analyticsProduct = $('.analytics-product.' + pid);\n\t }\n\t utils.addToWishlistHelper(pid, $analyticsProduct);\n\t});\n\n\t/**\n\t * @description removeFromWishlist listener\n\t * @param pid {String} the id of the product removed\n\t */\n\t$('body').on('analytics:removeFromWishlist', function (e, pid) {\n\t var $analyticsProduct;\n\t if (utils.getPageType() === \"product\") {\n\t $analyticsProduct = $('.analytics-productPDP');\n\t } else {\n\t $analyticsProduct = $('.analytics-product.' + pid);\n\t }\n\t utils.removeFromWishlistHelper(pid, $analyticsProduct);\n\t});\n\n\t/**\n\t * @description launch the checkout update data and impressions\n\t */\n\t$('body').on('analytics:checkoutUpdateState', function () {\n\t utils.checkoutUpdate();\n\t});\n\n\t/**\n\t * @description collect the new product impressions\n\t */\n\t$('body').on('analytics:productsLoaded', function () {\n\n\t //get the number of the products already registered, then collect the new products and launch the impression\n\t var numberProductAlreadyDisplayed = window.bata_com_ns.analytics.productsDisplayed || 0;\n\t var products = utils.getProductsData(numberProductAlreadyDisplayed);\n\t var ga4Products = utils.ga4GetProducts(products);\n\t events.ga4ViewItemList(window.bata_com_ns.analytics.currency, ga4Products);\n\t events.trackProductImpression(window.bata_com_ns.analytics.currency, products);\n\t});\n\n\t/**\n\t * @description collect the new search suggestion products\n\t */\n\t$('body').on('analytics:searchProductLoaded', function (e, searchTerm) {\n\t var searchData = {\n\t resultsNumber: $('.js-analytics-searchProduct [id^=\"product-\"]').length || 0,\n\t searchMethod: \"autosuggested\",\n\t searchTerm: searchTerm\n\t };\n\n\t if (searchData.resultsNumber > 0) {\n\t var products = utils.getProductsDataSearch(0);\n\t var ga4Products = utils.ga4GetProducts(products);\n\n\t events.ga4SuccessfulSearch(searchData);\n\t events.ga4ViewItemList(window.bata_com_ns.analytics.currency, ga4Products);\n\t events.trackProductImpression(window.bata_com_ns.analytics.currency, products);\n\t } else {\n\t events.ga4UnsuccessfulSearch(searchData);\n\t }\n\t});\n\n\t$('body').on('analytics:nextImagePDP', function () {\n\t var $activeItem = $('.slick-slide.slick-current.slick-active .js-analytics-nextImagePDP-active');\n\n\t if (!$activeItem.length) {\n\t return;\n\t }\n\n\t var imageData = {\n\t itemId: $activeItem.data('product-id'),\n\t colorVariant: $activeItem.data('color-variant')\n\t };\n\n\t events.ga4ViewNextImagePDP(imageData);\n\t});\n\n\t/**\n\t * @description standard search\n\t */\n\t$('body').on('analytics:searchProduct', function (e, searchTerm) {\n\t if (searchTerm && searchTerm.length) {\n\t var searchData = {\n\t searchTerm: searchTerm,\n\t searchType: \"standard\"\n\t };\n\t events.ga4SearchProduct(searchData);\n\t }\n\t});\n\n\t/**\n\t * @description user clicked on an product image on the product description page\n\t */\n\t$(document).on('click', '.cc-pdp-carousel-item[data-target=\"#pdpImgModal\"]', function () {\n\t events.ga4OpenPdpImage();\n\t return true;\n\t});\n\n\t/**\n\t * @description It is triggered when a user clicks the \"X\" button on the search bar, which is\n\t * used to clear the text entered by the user.\n\t */\n\t$(document).on('click', '.js-resetSearch.cc-search__reset', function () {\n\t events.ga4ClearSearch();\n\t return true;\n\t});\n\n\t/**\n\t * @description register the product click (PLP. CART, CAROUSELS ETC.)\n\t */\n\t$(document).on('click', 'a.js-analytics-productClick', function (e) {\n\t e.preventDefault();\n\n\t var $product = $(this);\n\t var url = $product.attr('href'),\n\t productId = $product.data('analytics-product-id'),\n\t $analyticsProduct;\n\t if ($product.hasClass(\"js-analytics-suggestionProduct\")) {\n\t // Product suggestion on product search\n\t $analyticsProduct = $('.analytics-product-search.' + productId);\n\t } else {\n\t $analyticsProduct = $('.analytics-product.' + productId);\n\t }\n\n\t var products = utils.productClickHelper($analyticsProduct),\n\t analyticsInfo = window.bata_com_ns.analytics;\n\n\t // save GA4 item list id\n\t try {\n\t var listId = utils.ga4GetProductItemListId(products && products.length && products[0]);\n\t window.sessionStorage.setItem(\"analyticsListId\", listId);\n\t } catch (error) {\n\t // session storage not supported\n\t }\n\n\t var ga4Products = utils.ga4GetProducts(products);\n\t events.ga4SelectItem(analyticsInfo.currency, ga4Products);\n\t events.productClick(analyticsInfo.currency, analyticsInfo.pageType, products);\n\n\t window.location.href = url;\n\t});\n\n\t/**\n\t * @description user clicked on a size guide link on a PDP page\n\t */\n\t$(document).on('click', '#size-guide-asset', function () {\n\t events.ga4SelectSizeGuide();\n\t return true;\n\t});\n\n\t/**\n\t * @description user clicked on a wishlist link in the account menu\n\t */\n\t$(document).on('click', '.menu-container a[href*=\"wishlist\"]', function () {\n\t events.ga4SelectWishlist();\n\t return true;\n\t});\n\n\t/**\n\t * @description user clicked on a wishlist link in the header\n\t */\n\t$(document).on('click', '.wishlistLink', function () {\n\t events.ga4SelectWishlist();\n\t return true;\n\t});\n\n\t/**\n\t * @description user clicked on a search bar in the header\n\t */\n\t$(document).on('click', '.js-headerSearchButton', function () {\n\t events.ga4StartSearch();\n\t});\n\n\t/**\n\t * @description register the click on a suggested product\n\t */\n\t$(document).on('click', '.js-analytics-suggestionProduct', function () {\n\t events.trackGAEvent('Ecommerce', 'Suggestion Click', $(this).attr('href'));\n\t});\n\n\t/**\n\t * @description register the display of the cookiesbar\n\t */\n\t$('body').on('analytics:showCookieBar', function () {\n\t events.trackGAEvent('cookie bar', 'shown', '-', 0, true);\n\t});\n\n\t/**\n\t * @description register the closing of cookiesbar\n\t */\n\t$('.js-cookies-bar-close').on('click', function () {\n\t events.trackGAEvent('cookie bar', 'accepted', '-', 0, true);\n\t});\n\n\t/**\n\t * @description register the click on a promotional banner\n\t */\n\t$(document).on('click', 'a.js-analytics-banner, a.js-analytics-banner-button', function (e) {\n\t e.preventDefault();\n\t var analyticsPromotionsData = [];\n\t var $banner = $(this);\n\t var url = $banner.attr('href');\n\n\t if ($banner.data(\"analytics-title\") && $banner.data(\"analytics-title\") !== \"\" && $banner.data(\"analytics-title\") !== \"No title\") {\n\t analyticsPromotionsData.push({\n\t 'id': $banner.data(\"analytics-title\"),\n\t 'name': $banner.data(\"analytics-title\")\n\t });\n\t events.ga4SelectContent({\n\t contentId: $banner.data(\"analytics-title\"),\n\t contentType: 'banner',\n\t contentName: $banner.data(\"analytics-title\")\n\t });\n\t events.ga4SelectPromotion({\n\t promotionId: $banner.data(\"analytics-title\"),\n\t promotionName: $banner.data(\"analytics-title\")\n\t });\n\t events.PageDesignerPromoClick(analyticsPromotionsData);\n\t }\n\n\t window.location.href = url;\n\t});\n\n\t$(document).on('click', '.js-analytics-selectContentBrand .cc-component-textbox-cta', function (e) {\n\t e.preventDefault();\n\t e.stopPropagation();\n\n\t var brandElement = $(this).closest('.js-analytics-selectContentBrand');\n\t var heroBannerElement = $(this).closest('.js-analytics-herobanner');\n\n\t if (!brandElement.length || !heroBannerElement.length) {\n\t return;\n\t }\n\n\t var contentType = brandElement.attr('data-analytics-select-content-brand');\n\t var contentName = heroBannerElement.attr('data-analytics-select-content-name');\n\t var contentId = heroBannerElement.attr('data-analytics-select-content-id');\n\n\t if (!contentType || !contentName || !contentId) {\n\t return;\n\t }\n\n\t var selectContentData = {\n\t contentId: contentId,\n\t contentType: contentType + ' - banner content',\n\t contentName: contentName\n\t };\n\n\t events.ga4BrandSelectContent(selectContentData);\n\t});\n\n\t/**\n\t * @description the user select a product sorting rule\n\t * @param sorting {Int} the sort id selected\n\t */\n\t$('body').on('analytics:updateProductSorting', function (e, data) {\n\t events.ga4ClickFilter(\"Radio\", \"Sort by\", data.sorting);\n\t events.trackGAEvent(window.bata_com_ns.analytics.pageType, 'sorting', data.sorting);\n\t});\n\n\t/**\n\t * @description register the refinement clicks (not the price one)\n\t */\n\t$('.container').on('click', '.js-analytics-refinement', function (e) {\n\t e.preventDefault();\n\t var $refinement = $(this);\n\t events.ga4ClickFilter(\"Checkbox\", $refinement.data('refinement-id'), $refinement.data('refinement-value'));\n\t events.trackGAEvent(window.bata_com_ns.analytics.pageType, 'filter - ' + $refinement.data('refinement-id'), $refinement.data('refinement-value'));\n\t});\n\n\t/**\n\t * @description register the category clicks\n\t */\n\t$('.container').on('click', '.js-categoryItem', function (e) {\n\t e.preventDefault();\n\t var $refinement = $(this);\n\t events.ga4ClickFilter(\"Category selection\", $refinement.data('category-id'), $refinement.data('category-title'));\n\t events.trackGAEvent(window.bata_com_ns.analytics.pageType, 'filter - ' + $refinement.data('category-id'), $refinement.data('category-title'));\n\t});\n\n\t/**\n\t * @description register the \"proceed to checkout\" button click from cart page\n\t */\n\t$('#cart-page-checkout-btn').on('click', function (e) {\n\t e.preventDefault();\n\t utils.checkouStepHelper(1, 'cart', true);\n\t});\n\n\t/**\n\t * @description register the \"proceed to checkout\" button click from the minicart\n\t */\n\t$('body').on('analytics:cartSubmit', function () {\n\t utils.checkouStepHelper(1, 'minicart', true);\n\t});\n\n\t/**\n\t * @description register the checkout step\n\t * @param step {Int} the step number\n\t * @param option {Object} various information, step based\n\t */\n\t$('body').on('analytics:checkoutStep', function (e, data) {\n\t //step 3 and 4 replace the products's informations displayed, so we need to extract them directly from the order object\n\t if (data.order) {\n\t var checkbox = $('.adyen-checkout__checkbox__input[name=\"storeDetails\"]');\n\t if (checkbox.length) {\n\t data.order.paymentMethodSaved = checkbox.prop('checked');\n\t } else {\n\t data.order.paymentMethodSaved = false;\n\t }\n\t utils.updateCheckoutData(data.step, data.option, data.order);\n\t } else {\n\t utils.checkouStepHelper(data.step, data.option);\n\t }\n\t});\n\n\t/**\n\t * @description register the second checkout step\n\t */\n\t$('body').on('analytics:loginStep', function (e, data) {\n\t var options = $('#checkout-main').attr('data-customer-type') === 'registered' ? 'Logged In' : 'Guest';\n\t utils.checkouStepHelper(data.step, options, false);\n\t});\n\n\t/**\n\t * @description a new user has registered from the registration form\n\t * @param customerId {String} the ID of the customer registered\n\t */\n\t$('body').on('analytics:registration', function (e, data) {\n\t events.ga4SignUp({\n\t method: 'email',\n\t customerCrmId: data.customerCrmId,\n\t signupType: 'standard'\n\t });\n\t events.registration(data.customerId, data.email, data.phone);\n\t});\n\n\t/**\n\t * @description new registration submit in checkout with lightregistration\n\t */\n\t$('body').on('analytics:registrationCheckout', function () {\n\t events.ga4SignUpCheckout({\n\t signupType: 'checkout'\n\t });\n\t});\n\n\t/**\n\t * @description a user has logged in\n\t * @param customerCrmId {String} the CRM ID of the logged in customer\n\t */\n\t$('body').on('analytics:login', function (e, data) {\n\t events.ga4Login({\n\t method: 'email',\n\t customerCrmId: data.customerCrmId,\n\t loginType: data.isLoginCheckout ? 'checkout' : 'standard'\n\t });\n\t events.login(data.customerCrmId, data.email);\n\t});\n\n\t/**\n\t * @description socialShareClick event on PDP\n\t */\n\t$('a.js-analytics-socialIcon').on('click', function () {\n\t var $social = $(this);\n\n\t var socialName = $social.data('share'),\n\t productId = $social.closest('ul.social-icons').data('analytics-pid'),\n\t elementId = $social.data('id'),\n\t elementText = $social.attr('title'),\n\t linkUrl = $social.attr('href'),\n\t linkDomain = linkUrl ? new URL(linkUrl).hostname : null,\n\t type = $social.data('content-type');\n\n\t var contentType = 'product detail page';\n\t events.ga4Share({\n\t method: socialName,\n\t contentType: contentType,\n\t itemId: productId,\n\t elementId: elementId,\n\t elementText: elementText,\n\t linkUrl: linkUrl,\n\t linkDomain: linkDomain,\n\t content_type: linkDomain,\n\t type: type\n\t });\n\t events.trackGAEvent(contentType, 'social media sharing - ' + socialName, productId);\n\t});\n\n\t/**\n\t * @description storeAvailibility event on PDP\n\t */\n\t$('body').on('analytics:storeAvailibility', function () {\n\t events.trackGAEvent('storeAvailibility', 'click', $('button#findInStoreButton').data('pid'));\n\t});\n\n\t/**\n\t * @description Handles click on the first level category and tracks the event\n\t */\n\t$('.cc-menu__level__link.cc-menu__firstLevel__link').on('click', function () {\n\t var $category = $(this).closest('.cc-menu__level__link.cc-menu__firstLevel__link');\n\t var categoryName = $category.attr('aria-label') || $category.text().trim();\n\t events.ga4ClickMenuNav(1, categoryName);\n\t});\n\n\t/**\n\t * @description Handles click on the second level category of menu\n\t */\n\t$('.cc-menu__secondLevel__link-wrapper .cc-menu__level__link.cc-menu__secondLevel__link').on('click', function () {\n\t var $category = $(this);\n\t var categoryName = $category.attr('aria-label') || $category.text().trim();\n\t var parentCatName = $(this).closest('.cc-menu__level.cc-menu__secondLevel').siblings('.cc-menu__level__link.cc-menu__firstLevel__link').attr('aria-label');\n\t events.ga4ClickMenuNav(2, parentCatName + \" - \" + categoryName);\n\t events.trackGAEvent('dropdown', parentCatName, categoryName);\n\t});\n\n\t/**\n\t * @description Handles click on the second level content links of menu\n\t */\n\t$('.cc-menu__secondLevel__content-link__item a').on('click', function () {\n\t var $link = $(this);\n\t var categoryName = $link.text().trim();\n\t events.ga4ClickMenuNav(2, categoryName);\n\t});\n\n\t/**\n\t * @description Handles click on the third level category of menu\n\t */\n\t$('.cc-menu__level__link.cc-menu__thirdLevel__link').on('click', function () {\n\t var $category = $(this);\n\t var thirdCatName = $category.attr('aria-label') || $category.text().trim();\n\t var secondCatName = $category.closest('.cc-menu__thirdLevel').prev('.cc-menu__secondLevel__link-wrapper').find('.cc-menu__secondLevel__link').attr('aria-label') || $category.closest('.cc-menu__thirdLevel').prev('.cc-menu__secondLevel__link-wrapper').find('.cc-menu__secondLevel__title').text().trim();\n\t var firstCatName = $category.closest('.cc-menu__secondLevel').siblings('.cc-menu__level__link.cc-menu__firstLevel__link').attr('aria-label') || $category.closest('.cc-menu__secondLevel').siblings('.cc-menu__level__link.cc-menu__firstLevel__link').find('.cc-menu__firstLevel__title').text().trim();\n\t var parentCatName = firstCatName + ' - ' + secondCatName;\n\t events.ga4ClickMenuNav(3, parentCatName + \" - \" + thirdCatName);\n\t events.trackGAEvent('dropdown', parentCatName, thirdCatName);\n\t});\n\n\t/**\n\t * @description Handles click on the highlights section buttons of third level menu\n\t */\n\t$('.cc-menu__HighlightsSection__cta').on('click', function () {\n\t var $button = $(this);\n\t var buttonText = $button.text().trim();\n\t var secondCatName = $button.closest('.cc-menu__HighlightsSection').prev('.cc-menu__secondLevelColumn').find('.cc-menu__secondLevel__link').attr('aria-label') || $button.closest('.cc-menu__HighlightsSection').prev('.cc-menu__secondLevelColumn').find('.cc-menu__secondLevel__title').text().trim();\n\t var firstCatName = $button.closest('.cc-menu__secondLevel').siblings('.cc-menu__level__link.cc-menu__firstLevel__link').attr('aria-label') || $button.closest('.cc-menu__secondLevel').siblings('.cc-menu__level__link.cc-menu__firstLevel__link').find('.cc-menu__firstLevel__title').text().trim();\n\t var parentCatName = firstCatName + ' - ' + secondCatName;\n\t events.ga4ClickMenuNav(3, parentCatName + \" - \" + buttonText);\n\t events.trackGAEvent('highlight section', parentCatName, buttonText);\n\t});\n\n\t/**\n\t * @description Handles click on the multiple block section links\n\t */\n\t$('.cc-menu__blockForMultipleBlocksSection__link').on('click', function () {\n\t var $link = $(this);\n\t var blockTitle = $link.find('.cc-menu__blockForMultipleBlocksSection__text').text().trim();\n\t var secondCatName = $link.closest('.cc-menu__multipleBlockSection').prev('.cc-menu__secondLevelColumn').find('.cc-menu__secondLevel__link').attr('aria-label') || $link.closest('.cc-menu__multipleBlockSection').prev('.cc-menu__secondLevelColumn').find('.cc-menu__secondLevel__title').text().trim();\n\t var firstCatName = $link.closest('.cc-menu__secondLevel').siblings('.cc-menu__level__link.cc-menu__firstLevel__link').attr('aria-label') || $link.closest('.cc-menu__secondLevel').siblings('.cc-menu__level__link.cc-menu__firstLevel__link').find('.cc-menu__firstLevel__title').text().trim();\n\t var parentCatName = firstCatName + ' - ' + secondCatName;\n\t events.ga4ClickMenuNav(3, parentCatName + \" - \" + blockTitle);\n\t events.trackGAEvent('collection block', parentCatName, blockTitle);\n\t});\n\n\t/**\n\t * @description Handles click on a category in the mobile menu, fetches parent and current category, and tracks the event\n\t */\n\t$(document).on('click', '.js-category-container .cc-menu__secondLevel__link', function () {\n\t var $category = $(this);\n\t if (!$category.data('subcategories')) {\n\t var parent = $category.data('analytics-parent');\n\t var name = $category.data('name') || $category.attr('aria-label') || $category.text().trim();\n\t if (parent) {\n\t events.ga4ClickMenuNav(2, parent + \" - \" + name);\n\t events.trackGAEvent('dropdown', parent, name);\n\t } else {\n\t events.ga4ClickMenuNav(1, name);\n\t events.trackGAEvent('main menu', name, '', 0, true);\n\t }\n\t }\n\t});\n\n\t/**\n\t * @description register the quantity variation of product\n\t * @param pid {String} the id of the product changed\n\t * @param qty {Int} the new quantity selected\n\t */\n\t$('body').on('analytics:updateProductQuantity', function (e, data) {\n\t utils.updateProductQuantity(data.pid, data.qty);\n\t});\n\n\t/**\n\t * @description variationSelectedPLP listener\n\t * @param pid {pid} the id of the product added to the cart\n\t */\n\t$('body').on('analytics:variantSelectionPLP', function (e, data) {\n\t var product = data.productData;\n\t var products = [{\n\t 'name': product.name,\n\t 'id': product.id,\n\t 'dimension1': product.dimension1,\n\t 'dimension2': product.dimension2,\n\t 'dimension3': product.dimension3,\n\t 'price': product.price,\n\t 'brand': product.brand,\n\t 'category': product.category,\n\t 'description': product.description,\n\t 'productUrl': product.producturl,\n\t 'categoryUrl': product.categoryurl,\n\t 'imageUrl': product.imageurl,\n\t 'variant': product.color + (product.size ? \" | \" + product.size : \"\"),\n\t 'discount': product.discount,\n\t 'promotionName': product.promotionName,\n\t 'position': product.position,\n\t 'genderName': product.genderName,\n\t 'itemSeason': product.itemSeason,\n\t 'stockStatus': product.stockStatus\n\t }];\n\t utils.extendProductDataWithGA4Categories(products[0], product);\n\t var ga4Products = utils.ga4GetProducts(products);\n\t events.ga4SelectItem(window.bata_com_ns.analytics.currency, ga4Products);\n\t //launch the event variantSelected\n\t events.variantSelected(window.bata_com_ns.analytics.currency, products);\n\t});\n\n\t/**\n\t * @description Checkout progress event\n\t * @param data {String} checkout step name\n\t */\n\t$('body').on('analytics:checkoutProgress', function () {\n\t var products = utils.getCheckoutProducts(3, false);\n\t var ga4Products = utils.ga4GetProducts(products);\n\t var ga4CheckoutData = utils.ga4GetCartData();\n\t var checkoutData = {\n\t currencyCode: window.bata_com_ns.analytics.currency,\n\t coupon: ga4CheckoutData.couponNames,\n\t value: ga4CheckoutData.value,\n\t stepLabel: \"customer info\",\n\t stepNumber: 1\n\t };\n\t events.ga4CheckoutProgress(checkoutData, ga4Products);\n\t});\n\n\t/**\n\t * @description collect the cart product views / impressions\n\t */\n\t$('body').on('analytics:viewMiniCart', function () {\n\t var products = utils.getProductsCartData(window.bata_com_ns.analytics.pageType);\n\t var ga4Products = utils.ga4GetProducts(products);\n\t events.ga4ViewItemList(window.bata_com_ns.analytics.currency, ga4Products);\n\t events.trackProductImpression(window.bata_com_ns.analytics.currency, products);\n\t});\n\n\t/**\n\t * @description collect the recommendations products views\n\t */\n\t$('body').on('analytics:recommendationsLoaded', function (e, recommendationContainer) {\n\t utils.trackRecommendationsLists(recommendationContainer);\n\t});\n\n\t/**\n\t * @description GA4 track checkout progress\n\t */\n\t$('body').on('analytics:shippingSubmitted', function (e, order) {\n\t if (!order) {\n\t return;\n\t }\n\t var products = utils.getCheckoutProducts(3, false);\n\t var ga4Products = utils.ga4GetProducts(products);\n\t var checkoutData = {\n\t currency: window.bata_com_ns.analytics.currency,\n\t shipping: order.totals && order.totals.shippingTotalAfterDiscountValue,\n\t shippingTier: order.shipping && order.shipping.length && order.shipping[0].selectedShippingMethod && order.shipping[0].selectedShippingMethod.displayName,\n\t coupon: order.couponsName,\n\t value: order.totals && order.totals.grandTotalDecimal\n\t };\n\t events.ga4AddShippingInfo(checkoutData, ga4Products);\n\t});\n\n\t/**\n\t * @description GA4 newsletter form submitted\n\t */\n\t$('body').on('analytics:newsletterSubscribe', function () {\n\t events.ga4Subscribe(\"newsletter\");\n\t});\n\n\t/**\n\t * @description GA4 Add to cart submitting -> extend the form with analytics list id\n\t */\n\t$('body').on('analytics:addToCartSubmitting', function (e, form) {\n\t if (window.bata_com_ns.analytics.pageType === \"category\") {\n\t form.analyticsListId = $(\"div.grid-footer > input.category-id\").val() || $('.js-analytics-search-category').data('analytics-category-id') || 'product search';\n\t } else if (window.bata_com_ns.analytics.pageType === \"product\") {\n\t form.analyticsListId = $('.analytics-productPDP.analytics-product').data('listId') || 'detail';\n\t } else {\n\t form.analyticsListId = 'detail';\n\t }\n\t});\n\n\t$('body').on('analytics:brandSecondCategoryLevel', function (secondLevelData) {\n\t var eventData = {\n\t menuLevel: \"2 - second level category brand\",\n\t menuSelection: secondLevelData || \"\"\n\t };\n\t events.ga4CheckoutProgress(eventData);\n\t});\n\n\t$('body').on('analytics:clickBackInStock', function (e, buttonData) {\n\t if (!buttonData || !$('#product-id').length) {\n\t return;\n\t }\n\n\t var productId = $('#product-id').val();\n\t var elementId = buttonData.id || '';\n\t var elementMessage = buttonData.message || '';\n\n\t var $analyticsProduct = void 0;\n\n\t if (utils.getPageType() === \"product\") {\n\t $analyticsProduct = $('.analytics-productPDP');\n\t } else {\n\t $analyticsProduct = $('.analytics-product.' + productId);\n\t }\n\n\t var clickBackInStockData = {\n\t 'linkUrl': $analyticsProduct.data('producturl') || '',\n\t 'elementId': elementId,\n\t 'elementText': elementMessage\n\t };\n\t events.ga4ClickBackInStock(clickBackInStockData);\n\t});\n\n\t/**\n\t * @description GA4 scroll position\n\t */\n\t$(window).bind('scroll', function () {\n\t utils.trackScrollPosition();\n\t});\n\n\t$('body').on('change', 'input[name=\"storeDetails\"]', function () {\n\t events.ga4SaveCreditCard();\n\t});\n\n/***/ })\n\n/******/ });"],"names":["modules","installedModules","__webpack_require__","moduleId","module","exports","id","loaded","call","m","c","p","0","PageTypeMap","events","utils","pushPageData","products","ga4Products","cartPageData","$user","$","pageType","getPageType","customerCrmId","data","customerEmail","currency","countryCode","length","window","bata_com_ns","analytics","country","abTests","callAbTestInteraction","businessHours","getBusinessHours","pageImpression","location","href","ga4CrmId","ga4PageView","pageURL","origin","pagePath","pathname","userID","loginStatus","customerType","PageDesignerPromoImpressionHelper","PRODUCT_IMPRESSION_MAPPING","getProductDataPDP","value","ga4GetProducts","price","promoImpressionHelper","ga4ViewItem","parseFloat","getProductsCartData","ga4GetCartData","ga4ViewCart","couponNames","getProductsData","ga4ViewItemList","trackProductImpression","trackRecommendationsLists","searchHelper","orderConfirmHelper","removeFromCartByUnavailabilityModal","dataLayer","push","event","document","ready","81","PAGE_MAPPING","getPageMappingFromMetaDataElement","CART_MAPPING","category","wishlist","product","WISHLIST_MAPPING","account","billing","brands","cart","checkoutlogin","content","home","ordeConfirmation","shipping","storelocator","82","getOrSetPageMetaDataAttrElement","dataAttrName","val","metaData","getElementsByClassName","getAttribute","setAttribute","mapping","JSON","parse","console","log","e","83","ga4EventPush","object","timestamp","Date","now","ecommerce","productClick","currencyCode","click","actionField","list","action","search","isCategorySearch","keyWord","categoryID","numberOfResults","categoryName","search_term","searchKeyword","numberResults","searchType","visitorStatus","url","userEmail","email","impressions","promoImpression","promotions","promoView","PageDesignerPromoImpression","PageDesignerPromoClick","promoClick","variantSelected","detail","addToCart","customerPhone","arTryonInfo","eventData","phone","add","tryOnDesktopClick","tryOnMobileRedirect","removeFromCart","remove","pushCheckoutData","step","option","checkout","purchase","purchaseData","affiliation","revenue","adjustedMerchandizeTotalNetPrice","adjustedMerchandizeTotalTax","tax","coupon","couponCodeName","registration","userId","accountType","socialNetwork","customerID","login","trackGAEvent","label","eventValue","notInteraction","eventCategory","eventAction","eventLabel","eventNotInteraction","ga4AddPaymentInfo","checkoutData","items","payment_type","paymentType","payment_method_saved","paymentMethodSaved","ga4AddShippingInfo","shipping_tier","shippingTier","ga4AddToCart","ga4AddToWishlist","ga4RemoveFromWishlist","ga4BeginCheckout","ga4ClearSearch","ga4CheckoutProgress","step_label","stepLabel","step_number","stepNumber","ga4SaveCreditCard","ga4ClickBackInStock","clickBackInStockData","element_id","elementId","element_text","elementText","link_url","linkUrl","ga4Login","loginData","method","login_type","loginType","ga4Purchase","transaction_id","transactionId","bata_store","bataStore","cart_id","cartId","transaction_type","transactionType","ga4RemoveFromCart","ga4SelectItem","ga4SelectContent","contentData","content_id","contentId","content_type","contentType","content_name","contentName","ga4SelectPromotion","promotionData","promotion_id","promotionId","promotion_name","promotionName","item_id","item_name","ga4SelectWishlist","ga4SearchProduct","searchData","searchTerm","search_type","ga4StartSearch","ga4SuccessfulSearch","results_number","resultsNumber","search_method","searchMethod","ga4BrandSelectContent","selectContentData","ga4UnsuccessfulSearch","ga4Share","shareData","itemId","link_domain","linkDomain","type","ga4SignUp","registrationData","signup_form_type","signupType","ga4SignUpCheckout","ga4ViewNextImagePDP","imageData","item_variant","colorVariant","ga4ViewPromotion","pageData","page_type","page_url","page_path","user_id","login_status","customer_type","ga4ClickMenuNav","menuLevel","menuSelection","menu_level","menu_selection","ga4ClickFilter","filterCategory","filterName","filterValue","filter_category","filter_name","filter_value","ga4Scroll","percent","ga4Subscribe","subscriptionType","subscription_type ","ga4SelectSizeGuide","ga4BrandSecondCategoryLevel","ga4OpenPdpImage","abTestInteraction","forEach","item","variant_id","variant_name","version_type","84","productOrder","pageMetaDataUtils","scrollPosition","25","50","75","100","getSalesStatus","jQuery","discount","extendProductDataWithGA4Categories","productData","attributeName","index","ga4GetProductItemListId","listId","referrer","sessionStorage","getItem","removeItem","error","map","isSalesStatus","ga4Product","name","position","item_brand","brand","quantity","item_dimension1","dimension1","item_dimension2","dimension2","item_dimension3","dimension3","item_sales_status","size","item_size","variant","item_list_id","item_list_name","genderName","item_gender","itemSeason","item_season","stockStatus","item_stock_status","ga4GetProductsValue","reduce","accumulator","$cartInfo","ga4GetPromotions","promotion","creative_name","creative","creative_slot","getCustomerEmailAndPhone","getProductTileData","$product","color","isNaN","parseInt","getProductTileDataExtended","openedInArTryon","getCheckoutProducts","isCartOpened","$checkoutProducts","elementsFound","each","this","setCheckoutProducts","order","variants","variationAttributes","displayValue","localizedSize","analyticsProduct","productName","masterProductID","articleNo","variationGroupID","sales","decimalPrice","primaryCategoryID","analyticsListId","getPDPProduct","description","productUrl","categoryUrl","imageUrl","itemSalesStatus","getProductClickTileData","promoHelper","promo","analyticsPromotionsData","i","rank","ga4Promotions","getABtestsDataFromDOM","abTestId","segment","params","productClickHelper","$analyticsProduct","first","variationClickHelper","variation","masterCategory","breadcrumbs","productID","custom","longDescription","canonicalUrl","URL","baseURI","images","large","values","selected","_i","category1","category2","category3","category4","category5","checkoutUpdate","$checkout","attr","addToCartHelper","pageView","currUser","$productsElements","removeClass","removeFromCartHelper","singleItem","addToWishlistHelper","pid","removeFromWishlistHelper","$search","categoryId","keyword","$productsPLP","productsDisplayed","getProductsDataSearch","$productsSearch","checkouStepHelper","options","isMiniCartOpened","_ga4Products2","_checkoutData","ga4CartData","_ga4Products","_ga4CartData","$checkoutInfo","couponDiscount","ga4PurchaseData","updateCheckoutData","paymentMethod","payment","selectedPaymentInstruments","labelMethod","couponsName","totals","grandTotalDecimal","$promo","updateProductQuantity","$removedProducts","$banner","$bh","recommendationContainer","$recommendation","$recommendations","recommendationName","find","html","trim","$products","trackScrollPosition","scrollPercent","scrollTop","height","toFixed","some","toString","85","on","response","analyticsTileSelector","tile","numberProductAlreadyDisplayed","$activeItem","preventDefault","productId","hasClass","analyticsInfo","setItem","stopPropagation","brandElement","closest","heroBannerElement","sorting","$refinement","checkbox","prop","customerId","isLoginCheckout","$social","socialName","hostname","$category","text","parentCatName","siblings","thirdCatName","secondCatName","prev","$button","buttonText","$link","blockTitle","parent","qty","producturl","categoryurl","imageurl","ga4CheckoutData","shippingTotalAfterDiscountValue","selectedShippingMethod","displayName","form","secondLevelData","buttonData","elementMessage","message","bind"],"mappings":"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"}