{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///../sfra/cartridges/app_storefront_base/cartridge/client/default/js/util.js","webpack:///./cartridges/app_bardot/cartridge/client/default/js/gtmGA4.js","webpack:///./cartridges/app_bardot/cartridge/client/default/js/gtm/gtm.js"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","include","keys","forEach","processInclude","require","$","document","ready","ITEM_LIST_ID","ITEM_LIST_NAME","VIEW_PLP_EVENT","VIEW_SRP_EVENT","getGTMItemListNameAndId","itemList","actionPage","data","queryString","isQuickViewModalVisible","is","indexOf","itemListId","split","pop","itemListName","window","dataLayer","gtmData","length","items","gtmDatalayer","JSON","parse","event","itemListDetails","ecommerce","item_list_id","item_list_name","map","item","push","on","e","eComItems","parseQuery","search","replace","decodeURIComponent","jqxhr","settings","url","toLowerCase","queryObject","responseJSON","find","pid","parent","quantity","searchHr","substr","$originalQ","parseInt","each","index","element","datalayerObj","gtmViewItemListData","pageSize","pageNumber","ecommerceItems","productRecord","productIndex","productID","ecommerceItem","order","productsArray","selector","json","this","dataset","gtmjsondata","viewItemLists","$target","target","$el","productData","productArray","$closestDataElement","closest","hasClass","currency","selectProductDL"],"mappings":"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","file":"default\\js\\gtmGA4.js","sourcesContent":[" \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 \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\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.l = 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// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 89);\n","'use strict';\r\n\r\nmodule.exports = function (include) {\r\n if (typeof include === 'function') {\r\n include();\r\n } else if (typeof include === 'object') {\r\n Object.keys(include).forEach(function (key) {\r\n if (typeof include[key] === 'function') {\r\n include[key]();\r\n }\r\n });\r\n }\r\n};\r\n","'use strict';\r\n\r\nvar processInclude = require('base/util');\r\n\r\n$(document).ready(function () {\r\n // Spark changes for GTM - GA4: BEGIN\r\n processInclude(require('./gtm/gtm'));\r\n // Spark changes for GTM - GA4: END\r\n});\r\n","'use strict';\r\n\r\n\r\nconst ITEM_LIST_ID = {\r\n\tRECOMMENDED_PRODUCTS: 'recommended_products',\r\n\tCART: 'cart',\r\n\tMINICART: 'minicart',\r\n\tPDP: 'product_detail_page',\r\n\tQUICKVIEW: 'product_quickview'\r\n};\r\nconst ITEM_LIST_NAME = {\r\n\tRECOMMENDED_PRODUCTS: 'Recommended products',\r\n\tPLP: 'Product Listing Page',\r\n\tSRP: 'Search Results Page',\r\n\tPDP: 'Product Detail Page',\r\n\tQUICKVIEW: 'Product Quickview',\r\n\tCART: 'Cart',\r\n\tMINICART: 'Minicart'\r\n};\r\nconst VIEW_PLP_EVENT = 'viewPLP';\r\nconst VIEW_SRP_EVENT = 'viewSRP';\r\nconst VIEW_PRODUCT_RECOMMENDATION_CAROUSEL = 'viewProductRecommendationCarousel';\r\n\r\n// Spark changes for GTM - GA4: BEGIN\r\nmodule.exports = function () {\r\n\tif (typeof window.dataLayer === 'undefined') {\r\n window.dataLayer = [];\r\n }\r\n\r\n\t/**\r\n\t * Fetches and returns GTM attributes item_list_id and item_list_name based on the page\r\n\t * @returns {Object} - item list data\r\n\t */\r\n\tfunction getGTMItemListNameAndId() {\r\n\t\tvar itemList = {};\r\n\r\n\t\tvar actionPage = $('.page').data('action');\r\n\t\tvar queryString = $('.page').data('querystring');\r\n\r\n\t\tvar isQuickViewModalVisible = $('#quickViewModal').is(':visible');\r\n\r\n\t\tif (actionPage === 'Search-Show') {\r\n\t\t\tif (queryString && queryString !== '') {\r\n\t\t\t\tif (queryString.indexOf('cgid=') > -1) {\r\n\t\t\t\t\titemList.itemListId = queryString.split('cgid=').pop().split('&')[0];\r\n\t\t\t\t\titemList.itemListName = ITEM_LIST_NAME.PLP;\r\n\t\t\t\t} else if (queryString.indexOf('q=') > -1) {\r\n\t\t\t\t\titemList.itemListId = 'root';\r\n\t\t\t\t\titemList.itemListName = ITEM_LIST_NAME.SRP;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t} else if (actionPage === 'Product-Show' || actionPage === 'GiftCertificate-Purchase') {\r\n\t\t\titemList.itemListId = ITEM_LIST_ID.PDP;\r\n\t\t\titemList.itemListName = ITEM_LIST_NAME.PDP;\r\n\t\t} else {\r\n\t\t\titemList.itemListId = ITEM_LIST_ID.RECOMMENDED_PRODUCTS;\r\n\t\t\titemList.itemListName = ITEM_LIST_NAME.RECOMMENDED_PRODUCTS;\r\n\t\t}\r\n\r\n\t\tif (isQuickViewModalVisible) {\r\n\t\t\titemList.itemListId = ITEM_LIST_ID.QUICKVIEW;\r\n\t\t\titemList.itemListName = ITEM_LIST_NAME.QUICKVIEW;\r\n\t\t}\r\n\r\n\t\treturn itemList;\r\n\t}\r\n\r\n if (window.gtmData) {\r\n for (var i = 0; i < window.gtmData.length; i++) {\r\n var gtmDatalayer = JSON.parse(window.gtmData[i]);\r\n\t\t\tif ([VIEW_PLP_EVENT, VIEW_SRP_EVENT].indexOf(gtmDatalayer.event) !== -1) {\r\n\t\t\t\t// Populate the item_list_id and item_list_name\r\n\t\t\t\tlet itemListDetails = getGTMItemListNameAndId();\r\n\t\t\t\tgtmDatalayer.ecommerce.item_list_id = itemListDetails.itemListId;\r\n\t\t\t\tgtmDatalayer.ecommerce.item_list_name = itemListDetails.itemListName;\r\n\t\t\t\t// Update item_list_id and item_list_name on items[]\r\n\t\t\t\tvar items = gtmDatalayer.ecommerce.items;\r\n\t\t\t\tgtmDatalayer.ecommerce.items = items.map(function (item) {\r\n\t\t\t\t\titem.item_list_id = itemListDetails.itemListId;\r\n\t\t\t\t\titem.item_list_name = itemListDetails.itemListName;\r\n\t\t\t\t\treturn item;\r\n\t\t\t\t});\r\n\t\t\t}\r\n window.dataLayer.push({ ecommerce: null });\r\n window.dataLayer.push(gtmDatalayer);\r\n }\r\n }\r\n\r\n\t/**\r\n\t * Custom event for firing GTM accountLogin event\r\n\t */\r\n\t$('form.login').on('login:success', function (e, data) {\r\n\t\tif (data.gtmData) {\r\n window.dataLayer.push({ ecommerce: null });\r\n\t\t\twindow.dataLayer.push(data.gtmData);\r\n\t\t}\r\n\t});\r\n\r\n\t/**\r\n\t * Custom event for firing GTM accountRegister event\r\n\t */\r\n\t$('form.registration').on('login:register:success', function (e, data) {\r\n\t\tif (data.gtmData) {\r\n window.dataLayer.push({ ecommerce: null });\r\n\t\t\twindow.dataLayer.push(data.gtmData);\r\n\t\t}\r\n\t});\r\n\r\n\t/**\r\n\t * Custom event for firing Add to cart/Remove from cart event\r\n\t * when quantity is modified in cart page\r\n\t */\r\n\t$('body').on('product:afterAddToCart product:afterCartQuantityChanges', function (event, data) {\r\n\t\tif (data.gtmData && data.gtmData.ecommerce) {\r\n\t\t\tlet itemListDetails = getGTMItemListNameAndId();\r\n\t\t\tlet eComItems = data.gtmData.ecommerce.items;\r\n\t\t\tdata.gtmData.ecommerce.items = eComItems.map(function (item) {\r\n\t\t\t\titem.item_list_id = itemListDetails.itemListId;\r\n\t\t\t\titem.item_list_name = itemListDetails.itemListName;\r\n\t\t\t\treturn item;\r\n\t\t\t});\r\n\t\t\twindow.dataLayer.push({ ecommerce: null });\r\n\t\t\twindow.dataLayer.push(data.gtmData);\r\n\t\t}\r\n\t});\r\n\r\n\tvar cartUpdateQuantity = 'UpdateQuantity';\r\n\tvar cartRemoveProduct = 'RemoveProductLineItem';\r\n\r\n /**\r\n\t * parses query string\r\n\t * @param {string} search - query string to be parsed\r\n\t * @returns {Object} - json data\r\n\t */\r\n\tfunction parseQuery(search) {\r\n\t\treturn JSON.parse('{\"' + search.replace(/&/g, '\",\"').replace(/=/g, '\":\"') + '\"}', function (key, value) {\r\n\t\t\treturn key === '' ? value : decodeURIComponent(value);\r\n\t\t});\r\n\t}\r\n\r\n\t$(document).bind('ajaxComplete', function (event, jqxhr, settings) {\r\n\t\tif (settings.url.toLowerCase().indexOf(cartUpdateQuantity.toLowerCase()) !== -1) {\r\n\t\t\tvar search = jqxhr.responseJSON.queryString;\r\n\t\t\tvar queryObject = parseQuery(search);\r\n\t\t\tvar $originalE = $('div.quantity-form').find('[data-pid=\"' + queryObject.pid + '\"]').parent();\r\n\t\t\t$originalE.data('currentquantity', queryObject.quantity);\r\n\t\t}\r\n\t});\r\n\r\n $(document).bind('ajaxSend', function (event, jqxhr, settings) {\r\n\t\tif (settings.url.toLowerCase().indexOf(cartUpdateQuantity.toLowerCase()) !== -1 || settings.url.toLowerCase().indexOf(cartRemoveProduct.toLowerCase()) !== -1) {\r\n\t\t\tvar searchHr = settings.url;\r\n\t\t\tvar search = searchHr.substr(searchHr.indexOf('?') + 1);\r\n\t\t\tvar queryObject = parseQuery(search);\r\n\t\t\tvar $originalQ = $('div.quantity-form').find('[data-pid=\"' + queryObject.pid + '\"]').parent();\r\n\t\t\tsettings.url += '&originalq=' + parseInt($originalQ.data('currentquantity'), 10);\r\n\t\t}\r\n\t});\r\n\r\n\t/**\r\n\t * This custom event is fired when customer clicks on load more from PLP or SRP pages\r\n\t * Function will collate all the item details to be pushed as a view_item_list event\r\n\t */\r\n\t$('body').on('gtm:searchShowMoreSuccess', function () {\r\n\t\t$('.load-more-gtm-viewitemlist').each(function (index, element) {\r\n\t\t\tvar viewItemListEventPushed = $(element).data('gtm-viewitemlist-event-pushed');\r\n\t\t\tif (viewItemListEventPushed) {\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\r\n\t\t\tvar itemListDetails = getGTMItemListNameAndId();\r\n\r\n\t\t\tvar datalayerObj = {};\r\n\t\t\tif (itemListDetails.itemListName === ITEM_LIST_NAME.PLP) {\r\n\t\t\t\tdatalayerObj.event = VIEW_PLP_EVENT;\r\n\t\t\t} else {\r\n\t\t\t\tdatalayerObj.event = VIEW_SRP_EVENT;\r\n\t\t\t}\r\n\t\t\tdatalayerObj.ecommerce = {};\r\n\t\t\tdatalayerObj.ecommerce.items = [];\r\n\r\n\t\t\t// Set item_list_id and item_list_name\r\n\t\t\tdatalayerObj.ecommerce.item_list_id = itemListDetails.itemListId;\r\n\t\t\tdatalayerObj.ecommerce.item_list_name = itemListDetails.itemListName;\r\n\r\n\t\t\tvar gtmViewItemListData = $(element).data('gtm-viewitemlist');\r\n\t\t\tvar pageSize = parseInt($(element).data('page-size'), 0);\r\n\t\t\tvar pageNumber = parseInt($(element).data('page-number'), 0);\r\n\r\n\t\t\tvar ecommerceItems = gtmViewItemListData.map(function (productRecord, productIndex) {\r\n\t\t\t\tvar productID = productRecord.productID;\r\n\t\t\t\tvar productTileIdentifier = 'div.product[data-pid=\"' + productID + '\"]';\r\n\t\t\t\tvar ecommerceItem = $(productTileIdentifier).data('gtmjsondata');\r\n\t\t\t\t// Update index, item_list_id and item_list_name\r\n\t\t\t\tecommerceItem.index = (pageSize * pageNumber) + productIndex;\r\n\t\t\t\tecommerceItem.item_list_id = itemListDetails.itemListId;\r\n\t\t\t\tecommerceItem.item_list_name = itemListDetails.itemListName;\r\n\t\t\t\treturn ecommerceItem;\r\n\t\t\t});\r\n\t\t\tdatalayerObj.ecommerce.items = ecommerceItems;\r\n\r\n\t\t\t// Push view_item_list event\r\n\t\t\twindow.dataLayer.push({ ecommerce: null });\r\n\t\t\twindow.dataLayer.push(datalayerObj);\r\n\r\n\t\t\t// Update the data attribute to indicate that the event was pushed for these set of products\r\n\t\t\t$(element).data('gtm-viewitemlist-event-pushed', true);\r\n\r\n\t\t\treturn true;\r\n\t\t});\r\n\t});\r\n\r\n\t/**\r\n\t * GTM removeFromCart event fired when product is removed from cart\r\n\t */\r\n $('body').on('removeModal:removeItem', function (e, data) {\r\n\t\tif (data.gtmData && data.gtmData.ecommerce) {\r\n\t\t\tvar itemList = {};\r\n\t\t\tvar actionPage = $('.page').data('action');\r\n\t\t\tif (actionPage === 'Cart-Show') {\r\n\t\t\t\titemList.itemListId = ITEM_LIST_ID.CART;\r\n\t\t\t\titemList.itemListName = ITEM_LIST_NAME.CART;\r\n\t\t\t} else {\r\n\t\t\t\titemList.itemListId = ITEM_LIST_ID.MINICART;\r\n\t\t\t\titemList.itemListName = ITEM_LIST_NAME.MINICART;\r\n\t\t\t}\r\n\r\n\t\t\tlet eComItems = data.gtmData.ecommerce.items;\r\n\t\t\tdata.gtmData.ecommerce.items = eComItems.map(function (item) {\r\n\t\t\t\titem.item_list_id = itemList.itemListId;\r\n\t\t\t\titem.item_list_name = itemList.itemListName;\r\n\t\t\t\treturn item;\r\n\t\t\t});\r\n\r\n\t\t\twindow.dataLayer.push({ ecommerce: null });\r\n\t\t\twindow.dataLayer.push(data.gtmData);\r\n\t\t}\r\n\t});\r\n\r\n\r\n\t/**\r\n\t * GTM events submitCheckoutShipping or submitCheckoutBilling is fired based\r\n\t * on if customer submitted shipping or billing section within checkout\r\n\t */\r\n\t$('body').on('checkout:updateCheckoutView', function (event, data) {\r\n\t\tif (typeof data.order.gtmData !== 'undefined') {\r\n\t\t\twindow.dataLayer.push({ ecommerce: null });\r\n\t\t\twindow.dataLayer.push(JSON.parse(data.order.gtmData));\r\n\t\t}\r\n\t});\r\n\r\n\t/**\r\n\t * Pushes GTM datalayer for View Product Recommendation Carousels\r\n\t */\r\n\t$('body').on('carousels:viewRecommendedProducts', function (event, data) {\r\n\t\tvar productsArray = [];\r\n\r\n\t\t$(data.selector).each(function (index) {\r\n\t\t\tvar json = JSON.parse(this.dataset.gtmjsondata) || {};\r\n\t\t\tjson.index = index + 1;\r\n\t\t\tjson.item_list_id = ITEM_LIST_ID.RECOMMENDED_PRODUCTS;\r\n\t\t\tjson.item_list_name = ITEM_LIST_NAME.RECOMMENDED_PRODUCTS;\r\n\t\t\tproductsArray.push(json);\r\n\t\t});\r\n\r\n\t\tif (productsArray.length > 0) {\r\n\t\t\tvar viewItemLists = {\r\n\t\t\t\tevent: VIEW_PRODUCT_RECOMMENDATION_CAROUSEL,\r\n\t\t\t\tecommerce: {\r\n\t\t\t\t\titem_list_id: ITEM_LIST_ID.RECOMMENDED_PRODUCTS,\r\n\t\t\t\t\titem_list_name: ITEM_LIST_NAME.RECOMMENDED_PRODUCTS,\r\n\t\t\t\t\titems: productsArray\r\n\t\t\t\t}\r\n\t\t\t};\r\n\t\t\twindow.dataLayer.push({ ecommerce: null });\r\n\t\t\twindow.dataLayer.push(viewItemLists);\r\n\t\t}\r\n\t});\r\n\r\n\r\n\t/**\r\n\t * GTM selectProduct event trigger when user selects a product from\r\n\t * - PLP\r\n\t * - SRP\r\n\t * - Recommendation carousel\r\n\t */\r\n\t$('body').on('click', '.product-tile .image-container a:not(.quickview, .wishlistTile), .product-tile .swatches, .product-tile .pdp-link, .full-pdp-link', function (e) {\r\n\t\tvar $target = $(e.target);\r\n\t\tvar $el = $(this);\r\n\t\tvar productData = null;\r\n\t\tvar productArray = [];\r\n\t\tvar itemList = getGTMItemListNameAndId();\r\n\r\n\t\tvar $closestDataElement = $el.closest('[data-gtmjsondata]');\r\n\t\tif ($closestDataElement.length > 0) {\r\n\t\t\tproductData = JSON.parse($closestDataElement[0].dataset.gtmjsondata);\r\n\t\t}\r\n\r\n\t\tif ($target.hasClass('full-pdp-link')) {\r\n\t\t\t$closestDataElement = $('.modal-content .product-quickview');\r\n\t\t\tproductData = JSON.parse($closestDataElement[0].dataset.gtmjsondata);\r\n\t\t}\r\n\r\n\t\tif (productData) {\r\n\t\t\tproductData.item_list_id = itemList.itemListId;\r\n\t\t\tproductData.item_list_name = itemList.itemListName;\r\n\t\t\tif (!productData.quantity) {\r\n\t\t\t\tproductData.quantity = 1;\r\n\t\t\t}\r\n\t\t\tif (productData.currency) {\r\n\t\t\t\tdelete productData.currency;\r\n\t\t\t}\r\n\t\t\tproductArray.push(productData);\r\n\t\t}\r\n\r\n\t\tvar selectProductDL = {\r\n\t\t\tevent: 'selectProduct',\r\n\t\t\tecommerce: {\r\n\t\t\t\titem_list_id: itemList.itemListId,\r\n\t\t\t\titem_list_name: itemList.itemListName,\r\n\t\t\t\titems: productArray\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\twindow.dataLayer.push({ ecommerce: null });\r\n\t\twindow.dataLayer.push(selectProductDL);\r\n\t});\r\n};\r\n// Spark changes for GTM - GA4: END\r\n"],"sourceRoot":""}