{"version":3,"file":"product_list.min.js","sources":["product_list.js"],"sourcesContent":["// reset redirecting flag in case back button was clicked in the browser\nwindow.addEventListener('pageshow', function () { window.isBeingRedirected = false; });\n\n(($, w) => {\n const gtmImpressionsChunkSize = 30;\n const assetId = 'gtm-ga4-prod-list';\n\n let userInfo = null;\n if (w.umwAssets && w.umwAssets[assetId] && w.umwAssets[assetId].length) {\n userInfo = w.umwAssets[assetId][0];\n }\n\n w.PubSub.subscribe('externaltracking.product.listview', (_, productImpressions) => {\n if (productImpressions && productImpressions.items && productImpressions.items.length > 0) {\n processProductList(productImpressions);\n }\n });\n\n function processProductList(productList) {\n const listName = productList.listName || document.title;\n const allProducts = productList.items;\n const totalProductsCount = allProducts.length;\n var $allProductLinks = $(); \n var idx = 0, chunkIdx = 0;\n const utils = new GtmUtils();\n const currencyCode = utils.getCurrencyCode(productList);\n\n while (idx < totalProductsCount) {\n const positionShift = chunkIdx * gtmImpressionsChunkSize;\n\n const products = allProducts.slice(idx, idx += gtmImpressionsChunkSize);\n const gtmProducts = [];\n\n const itemListId = productList.listType.replace(/\\s+/g, '_').toLowerCase();\n const itemListName = productList.listType;\n\n for (var i = 0, l = products.length; i < l; i++) {\n const prod = products[i];\n const positionInList = positionShift + i + 1;\n const gtmProd = utils.convertToGtmGa4Product(prod,\n {\n 'currency': currencyCode,\n 'item_list_id': itemListId,\n 'item_list_name': itemListName,\n 'list_name': listName,\n 'index': positionInList\n });\n if (gtmProd) {\n gtmProducts.push(gtmProd);\n\n if (prod.$links) {\n prod.$links.data('gtm-product', gtmProd);\n prod.$links.data('listname', listName);\n prod.$links.data('currencycode', currencyCode);\n\n $allProductLinks = $allProductLinks.add(prod.$links);\n }\n }\n }\n\n const viewItemListEvent = {\n 'event': 'view_item_list',\n 'ecommerce': {\n 'items': gtmProducts,\n 'item_list_id': itemListId,\n 'item_list_name': itemListName,\n }\n };\n\n if (userInfo) {\n viewItemListEvent.user = userInfo;\n }\n\n w.dataLayer.push({ ecommerce: null }); // Clear the previous ecommerce object.\n w.dataLayer.push(viewItemListEvent);\n\n ++chunkIdx;\n }\n\n if ($allProductLinks.length > 0) {\n $allProductLinks.on('click', function (evt) {\n try {\n if (w['google_tag_manager']) {\r\n var targetUrl = this.href;\n const $this = $(this);\n\n const productClickEvent = {\n 'event': 'select_item',\n 'ecommerce': {\n 'items': [$this.data('gtm-product')]\n },\n 'eventCallback': function () {\n if (!w.isBeingRedirected) {\n document.location = targetUrl;\n w.isBeingRedirected = true;\n }\n },\n 'eventTimeout': 1000\n };\n\n w.dataLayer.push({ ecommerce: null }); // Clear the previous ecommerce object.\n w.dataLayer.push(productClickEvent);\n\n evt.preventDefault();\r\n }\n } catch (e) {\n console.error('[GTM]: Failed to push product click event to dataLayer. Reason: ' + e);\n }\n });\n }\n }\n})(jQuery, window);"],"names":["window","addEventListener","isBeingRedirected","$","w","assetId","let","userInfo","umwAssets","length","PubSub","subscribe","_","productImpressions","items","processProductList","productList","listName","document","title","allProducts","totalProductsCount","$allProductLinks","idx","chunkIdx","utils","GtmUtils","currencyCode","getCurrencyCode","positionShift","products","slice","gtmProducts","itemListId","listType","replace","toLowerCase","itemListName","i","l","prod","gtmProd","convertToGtmGa4Product","currency","item_list_id","item_list_name","list_name","index","push","$links","data","add","viewItemListEvent","event","ecommerce","user","dataLayer","on","evt","targetUrl","productClickEvent","this","href","eventCallback","location","eventTimeout","preventDefault","e","console","error","jQuery"],"mappings":"AACAA,OAAOC,iBAAiB,WAAY,WAAcD,OAAOE,kBAAoB,CAAA,CAAO,CAAC,GAErF,CAAEC,EAAGC,KAED,IAAMC,EAAU,oBAEhBC,IAAIC,EAAW,KACXH,EAAEI,WAAaJ,EAAEI,UAAUH,IAAYD,EAAEI,UAAUH,GAASI,SAC5DF,EAAWH,EAAEI,UAAUH,GAAS,IAGpCD,EAAEM,OAAOC,UAAU,oCAAqC,CAACC,EAAGC,KACxD,GAAIA,GAAsBA,EAAmBC,OAA2C,EAAlCD,EAAmBC,MAAML,OAAY,CAc3F,IAbIM,IAIoBC,EAJDH,EAKjBI,EAAWD,EAAYC,UAAYC,SAASC,MAC5CC,EAAcJ,EAAYF,MAC1BO,EAAqBD,EAAYX,OACnCa,EAAmBnB,EAAE,EACrBoB,EAAM,EAAGC,EAAW,EAClBC,EAAQ,IAAIC,SACZC,EAAeF,EAAMG,gBAAgBZ,CAAW,EAE/CO,EAAMF,GAAoB,CAS7B,IARA,IAAMQ,EAxBkB,GAwBFL,EAEhBM,EAAWV,EAAYW,MAAMR,EAAKA,GA1BhB,EA0B8C,EAChES,EAAc,GAEdC,EAAajB,EAAYkB,SAASC,QAAQ,OAAQ,GAAG,EAAEC,YAAY,EACnEC,EAAerB,EAAYkB,SAExBI,EAAI,EAAGC,EAAIT,EAASrB,OAAQ6B,EAAIC,EAAGD,CAAC,GAAI,CAC7C,IAAME,EAAOV,EAASQ,GAEhBG,EAAUhB,EAAMiB,uBAAuBF,EACzC,CACIG,SAAYhB,EACZiB,aAAgBX,EAChBY,eAAkBR,EAClBS,UAAa7B,EACb8B,MAPelB,EAAgBS,EAAI,CAQvC,CAAC,EACDG,IACAT,EAAYgB,KAAKP,CAAO,EAEpBD,EAAKS,UACLT,EAAKS,OAAOC,KAAK,cAAeT,CAAO,EACvCD,EAAKS,OAAOC,KAAK,WAAYjC,CAAQ,EACrCuB,EAAKS,OAAOC,KAAK,eAAgBvB,CAAY,EAE7CL,EAAmBA,EAAiB6B,IAAIX,EAAKS,MAAM,EAG/D,CAEA,IAAMG,EAAoB,CACtBC,MAAS,iBACTC,UAAa,CACTxC,MAASkB,EACTY,aAAgBX,EAChBY,eAAkBR,CACtB,CACJ,EAEI9B,IACA6C,EAAkBG,KAAOhD,GAG7BH,EAAEoD,UAAUR,KAAK,CAAEM,UAAW,IAAK,CAAC,EACpClD,EAAEoD,UAAUR,KAAKI,CAAiB,EAElC,EAAE5B,CACN,CAE8B,EAA1BF,EAAiBb,QACjBa,EAAiBmC,GAAG,QAAS,SAAUC,GACnC,IACI,IACQC,EAGEC,EAJNxD,EAAsB,qBAClBuD,EAAYE,KAAKC,KAGfF,EAAoB,CACtBP,MAAS,cACTC,UAAa,CACTxC,MAAS,CALHX,EAAE0D,IAAI,EAKIX,KAAK,aAAa,EACtC,EACAa,cAAiB,WACR3D,EAAEF,oBACHgB,SAAS8C,SAAWL,EACpBvD,EAAEF,kBAAoB,CAAA,EAE9B,EACA+D,aAAgB,GACpB,EAEA7D,EAAEoD,UAAUR,KAAK,CAAEM,UAAW,IAAK,CAAC,EACpClD,EAAEoD,UAAUR,KAAKY,CAAiB,EAElCF,EAAIQ,eAAe,EAI3B,CAFE,MAAOC,GACLC,QAAQC,MAAM,mEAAqEF,CAAC,CACxF,CACJ,CAAC,CA7FL,CACJ,CAAC,CA+FJ,GAAEG,OAAQtE,MAAM"}