{"version":3,"file":"product_list.min.js","sources":["product_list.js"],"sourcesContent":["// reset redirecting flag in case back button was clicked in the browser\r\nwindow.addEventListener('pageshow', function () { window.isBeingRedirected = false; });\r\n\r\n(($, w) => {\r\n const gtmImpressionsChunkSize = 30;\r\n const assetId = 'gtm-eec-prod-list';\r\n\r\n let userInfo = null;\r\n if (w.umwAssets && w.umwAssets[assetId] && w.umwAssets[assetId].length) {\r\n userInfo = w.umwAssets[assetId][0];\r\n }\r\n\r\n w.PubSub.subscribe('externaltracking.product.listview', (_, productImpressions) => {\r\n if (productImpressions && productImpressions.items && productImpressions.items.length > 0) {\r\n processImpressions(productImpressions);\r\n }\r\n });\r\n\r\n function processImpressions(productListImpressions) {\r\n const listName = productListImpressions.listName || document.title;\r\n const allProducts = productListImpressions.items;\r\n const totalProductsCount = allProducts.length;\r\n var $allProductLinks = $(); \r\n var idx = 0, chunkIdx = 0;\r\n const utils = new GtmUtils();\r\n const currencyCode = utils.getCurrencyCode(productListImpressions);\r\n while (idx < totalProductsCount) {\r\n const positionShift = chunkIdx * gtmImpressionsChunkSize;\r\n\r\n const products = allProducts.slice(idx, idx += gtmImpressionsChunkSize);\r\n const gtmProducts = [];\r\n\r\n for (var i = 0, l = products.length; i < l; i++) {\r\n const prod = products[i];\r\n const positionInList = positionShift + i + 1;\r\n const gtmProd = utils.convertToGtmEecProduct(prod, { 'list': listName, 'position': positionInList });\r\n if (gtmProd) {\r\n gtmProducts.push(gtmProd);\r\n\r\n if (prod.$links) {\r\n prod.$links.data('gtm-product', gtmProd);\r\n prod.$links.data('listname', listName);\r\n prod.$links.data('currencycode', currencyCode);\r\n\r\n $allProductLinks = $allProductLinks.add(prod.$links);\r\n }\r\n }\r\n }\r\n\r\n const impressionViewEvent = {\r\n 'event': 'eec.impressionView',\r\n 'ecommerce': {\r\n 'currencyCode': currencyCode,\r\n 'impressions': gtmProducts\r\n }\r\n };\r\n \r\n if (userInfo) {\r\n impressionViewEvent.user = userInfo;\r\n }\r\n\r\n w.dataLayer.push({ ecommerce: null }); // Clear the previous ecommerce object.\r\n w.dataLayer.push(impressionViewEvent);\r\n\r\n ++chunkIdx;\r\n }\r\n\r\n if ($allProductLinks.length > 0) {\r\n $allProductLinks.on('click', function (evt) {\r\n try {\r\n if (w['google_tag_manager']) {\r\n var targetUrl = this.href;\r\n const $this = $(this);\r\n\r\n const productClickEvent = {\r\n 'event': 'eec.productClick',\r\n 'ecommerce': {\r\n 'currencyCode': $this.data('currencycode') || utils.getCurrencyCode(),\r\n 'click': {\r\n 'actionField': { 'list': $this.data('listname') },\r\n 'products': [$this.data('gtm-product')]\r\n }\r\n },\r\n 'eventCallback': function () {\r\n if (!w.isBeingRedirected) {\r\n document.location = targetUrl;\r\n w.isBeingRedirected = true;\r\n }\r\n },\r\n 'eventTimeout': 1000\r\n };\r\n\r\n w.dataLayer.push({ ecommerce: null }); // Clear the previous ecommerce object.\r\n w.dataLayer.push(productClickEvent);\r\n\r\n evt.preventDefault();\r\n }\r\n } catch (e) {\r\n console.error('[GTM]: Failed to push product click event to dataLayer. Reason: ' + e);\r\n }\r\n });\r\n }\r\n }\r\n})(jQuery, window);"],"names":["window","addEventListener","isBeingRedirected","$","w","assetId","let","userInfo","umwAssets","length","PubSub","subscribe","_","productImpressions","items","processImpressions","listName","productListImpressions","document","title","allProducts","totalProductsCount","$allProductLinks","idx","chunkIdx","utils","GtmUtils","currencyCode","getCurrencyCode","positionShift","products","slice","gtmProducts","i","l","prod","gtmProd","convertToGtmEecProduct","list","position","push","$links","data","add","impressionViewEvent","event","ecommerce","impressions","user","dataLayer","on","evt","targetUrl","$this","productClickEvent","this","href","click","actionField","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,OAC3EM,CAKJ,IAAMC,EAAWC,EAAuBD,UAAYE,SAASC,MACvDC,EAAcH,EAAuBH,MACrCO,EAAqBD,EAAYX,OACnCa,EAAmBnB,EAAE,EACrBoB,EAAM,EAAGC,EAAW,EACxB,IAAMC,EAAQ,IAAIC,SACZC,EAAeF,EAAMG,gBAAgBX,CAAsB,EACjE,KAAOM,EAAMF,GAAoB,CAM7B,IALA,IAAMQ,EAvBkB,GAuBFL,EAEhBM,EAAWV,EAAYW,MAAMR,EAAKA,GAzBhB,EAyB8C,EAChES,EAAc,GAEXC,EAAI,EAAGC,EAAIJ,EAASrB,OAAQwB,EAAIC,EAAGD,CAAC,GAAI,CAC7C,IAAME,EAAOL,EAASG,GAEhBG,EAAUX,EAAMY,uBAAuBF,EAAM,CAAEG,KAAQtB,EAAUuB,SADhDV,EAAgBI,EAAI,CACuD,CAAC,EAC/FG,IACAJ,EAAYQ,KAAKJ,CAAO,EAEpBD,EAAKM,UACLN,EAAKM,OAAOC,KAAK,cAAeN,CAAO,EACvCD,EAAKM,OAAOC,KAAK,WAAY1B,CAAQ,EACrCmB,EAAKM,OAAOC,KAAK,eAAgBf,CAAY,EAE7CL,EAAmBA,EAAiBqB,IAAIR,EAAKM,MAAM,EAG/D,CAEA,IAAMG,EAAsB,CACxBC,MAAS,qBACTC,UAAa,CACTnB,aAAgBA,EAChBoB,YAAef,CACnB,CACJ,EAEIzB,IACAqC,EAAoBI,KAAOzC,GAG/BH,EAAE6C,UAAUT,KAAK,CAAEM,UAAW,IAAK,CAAC,EACpC1C,EAAE6C,UAAUT,KAAKI,CAAmB,EAEpC,EAAEpB,CACN,CAE8B,EAA1BF,EAAiBb,QACjBa,EAAiB4B,GAAG,QAAS,SAAUC,GACnC,IACI,IACQC,EACEC,EAEAC,EAJNlD,EAAsB,qBAClBgD,EAAYG,KAAKC,KAGfF,EAAoB,CACtBT,MAAS,mBACTC,UAAa,CACTnB,cALF0B,EAAQlD,EAAEoD,IAAI,GAKUb,KAAK,cAAc,GAAKjB,EAAMG,gBAAgB,EACpE6B,MAAS,CACLC,YAAe,CAAEpB,KAAQe,EAAMX,KAAK,UAAU,CAAE,EAChDZ,SAAY,CAACuB,EAAMX,KAAK,aAAa,EACzC,CACJ,EACAiB,cAAiB,WACRvD,EAAEF,oBACHgB,SAAS0C,SAAWR,EACpBhD,EAAEF,kBAAoB,CAAA,EAE9B,EACA2D,aAAgB,GACpB,EAEAzD,EAAE6C,UAAUT,KAAK,CAAEM,UAAW,IAAK,CAAC,EACpC1C,EAAE6C,UAAUT,KAAKc,CAAiB,EAElCH,EAAIW,eAAe,EAI3B,CAFE,MAAOC,GACLC,QAAQC,MAAM,mEAAqEF,CAAC,CACxF,CACJ,CAAC,CAtFoC,CAE7C,CAAC,CAuFJ,GAAEG,OAAQlE,MAAM"}