{"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","positionInList","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,OACvC,IAAIa,EAAmBnB,EAAE,EACrBoB,EAAM,EAAGC,EAAW,EACxB,MAAMC,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,GAChBG,EAAiBP,EAAgBI,EAAI,EACrCI,EAAUZ,EAAMa,uBAAuBH,EAAM,CAAEI,KAAQvB,EAAUwB,SAAYJ,CAAe,CAAC,EAC/FC,IACAL,EAAYS,KAAKJ,CAAO,EAEpBF,EAAKO,UACLP,EAAKO,OAAOC,KAAK,cAAeN,CAAO,EACvCF,EAAKO,OAAOC,KAAK,WAAY3B,CAAQ,EACrCmB,EAAKO,OAAOC,KAAK,eAAgBhB,CAAY,EAE7CL,EAAmBA,EAAiBsB,IAAIT,EAAKO,MAAM,EAG/D,CAEA,IAAMG,EAAsB,CACxBC,MAAS,qBACTC,UAAa,CACTpB,aAAgBA,EAChBqB,YAAehB,CACnB,CACJ,EAEIzB,IACAsC,EAAoBI,KAAO1C,GAG/BH,EAAE8C,UAAUT,KAAK,CAAEM,UAAW,IAAK,CAAC,EACpC3C,EAAE8C,UAAUT,KAAKI,CAAmB,EAEpC,EAAErB,CACN,CAE8B,EAA1BF,EAAiBb,QACjBa,EAAiB6B,GAAG,QAAS,SAAUC,GACnC,IACI,IACQC,EACEC,EAEAC,EAJNnD,EAAsB,qBAClBiD,EAAYG,KAAKC,KAGfF,EAAoB,CACtBT,MAAS,mBACTC,UAAa,CACTpB,cALF2B,EAAQnD,EAAEqD,IAAI,GAKUb,KAAK,cAAc,GAAKlB,EAAMG,gBAAgB,EACpE8B,MAAS,CACLC,YAAe,CAAEpB,KAAQe,EAAMX,KAAK,UAAU,CAAE,EAChDb,SAAY,CAACwB,EAAMX,KAAK,aAAa,EACzC,CACJ,EACAiB,cAAiB,WACRxD,EAAEF,oBACHgB,SAAS2C,SAAWR,EACpBjD,EAAEF,kBAAoB,CAAA,EAE9B,EACA4D,aAAgB,GACpB,EAEA1D,EAAE8C,UAAUT,KAAK,CAAEM,UAAW,IAAK,CAAC,EACpC3C,EAAE8C,UAAUT,KAAKc,CAAiB,EAElCH,EAAIW,eAAe,EAI3B,CAFE,MAAOC,GACLC,QAAQC,MAAM,mEAAqEF,CAAC,CACxF,CACJ,CAAC,CAtFoC,CAE7C,CAAC,CAuFJ,GAAEG,OAAQnE,MAAM"}