define(['jquery','Magento_Customer/js/customer-data','underscore'],function($,customerData,_){'use strict';function getCookie(name){var cookie=' '+document.cookie,search=' '+name+'=',setStr=null,offset=0,end=0;if(cookie.length>0){offset=cookie.indexOf(search);if(offset!=-1){offset+=search.length;end=cookie.indexOf(';',offset);if(end==-1){end=cookie.length;} setStr=decodeURI(cookie.substring(offset,end));}} return setStr;} function delCookie(name){var date=new Date(0);document.cookie=name+'='+'; path=/; expires='+date.toUTCString();} function GoogleAnalyticsUniversalCart(config){this.dlCurrencyCode=config.dlCurrencyCode;this.dataLayer=config.dataLayer;this.cookieAddToCart=config.cookieAddToCart;this.cookieRemoveFromCart=config.cookieRemoveFromCart;this.productQtys=[];this.origProducts={};this.productWithChanges=[];this.addedProducts=[];this.removedProducts=[];this.googleAnalyticsUniversalData={};$(document).on('click','.actions-toolbar .action-delete',function(){var data=customerData.get('cart')().items;var items=[];data.forEach(function(product){items.push({'item_id':product.product_sku,'item_name':product.product_name.toLowerCase(),'price':product.product_price_value,'quantity':product.qty,'id':product.item_id});});localStorage.setItem('old-cart-items',JSON.stringify(items));});} GoogleAnalyticsUniversalCart.prototype={listenMinicartReload:function(){var context=this;if(!_.isUndefined(window.Minicart)&&typeof Minicart.prototype.initAfterEvents){Minicart.prototype.initAfterEvents['GoogleAnalyticsUniversalCart:subscribeProductsUpdateInCart']=function(){context.subscribeProductsUpdateInCart();context.parseAddToCartCookies();context.parseRemoveFromCartCookies();};Minicart.prototype.removeItemAfterEvents['GoogleAnalyticsUniversalCart:subscribeProductsRemoveFromCart']=function(){context.parseRemoveFromCartCookies();};} this.cartItemCache=customerData.get('cart')().items;if($('body').hasClass('checkout-cart-index')){this.cartPageEvent('view_cart');}},subscribeProductsUpdateInCart:function(){var context=this;$(document).on('mousedown','[data-cart-item-update]',function(){context.collectCustomerProducts();}).on('mousedown','.update-cart-item',function(){context.collectCustomerProducts();}).on('mousedown','[data-multiship-item-update]',function(){context.collectOriginalProducts();context.collectMultiCartQtys();}).on('mousedown','[data-multiship-item-remove]',function(){context.collectOriginalProducts();context.collectMultiCartQtys();context.updateMulticartCartObserver();}).on('mousedown','[data-cart-empty-new]',function(){window.clearCart=true;localStorage.setItem('old-cart-cache',JSON.stringify([]));context.emptyCartObserverNew();}).on('mousedown','[save-as-draft-new]',function(){window.clearCart=true;localStorage.setItem('old-cart-cache',JSON.stringify([]));context.emptyCartObserverNew();}).on('ajax:updateCartItemQty',function(){context.updateCartObserver();}).on('ajax:updateMulticartItemQty',function(){context.updateMulticartCartObserver();});},emptyCartObserver:function(){var product,i;this.collectOriginalProducts();for(i in this.origProducts){if(i!='length'&&this.origProducts.hasOwnProperty(i)){product=$.extend({},this.origProducts[i]);this.removedProducts.push(product);}} this.cartItemRemoved();},emptyCartObserverNew:function(){if(!window.clearCart){return;} var removedCartItems=[];var newCartItems=this.cartItemCache;newCartItems.forEach(function(item,index){removedCartItems.push({'item_id':item.product_sku,'item_name':item.product_name.toLowerCase(),'price':item.product_price_value,'quantity':item.qty})});var header=window.gaHeaderData;var dlUpdate={'event':'remove_from_cart','ecommerce':{'currency':this.dlCurrencyCode,'items':removedCartItems}};var addUpdate=Object.assign({},header,dlUpdate);this.dataLayer.push({'ecommerce':null});this.dataLayer.push(addUpdate);window.clearCart=false;},updateMulticartCartObserver:function(){this.collectMultiProductsWithChanges();this.collectProductsForMessages();this.cartItemAdded();this.cartItemRemoved();},updateCartObserver:function(){this.collectProductsWithChanges();this.collectProductsForMessages();this.cartItemAdded();this.cartItemRemoved();},collectMultiProductsWithChanges:function(){var groupedProducts={},cartProduct,i=0,j,product;this.productWithChanges=[];for(i;i0){product.qty=cartProduct.qty;this.productWithChanges.push(product);}}}},collectCustomerProducts:function(){this.collectOriginalProducts();this.collectCartQtys();this.collectMiniCartQtys();},collectOriginalProducts:function(){var products={},items=customerData.get('cart')().items;if(!_.isUndefined(items)){items.forEach(function(item){products[item['product_sku']]={'id':item['product_sku'],'name':item['product_name'],'price':item['product_price_value'],'qty':parseInt(item.qty,10)};});} this.googleAnalyticsUniversalData.shoppingCartContent=products;this.origProducts=this.googleAnalyticsUniversalData.shoppingCartContent;},collectMultiCartQtys:function(){var productQtys=[];$('[data-multiship-item-id]').each(function(index,elem){productQtys.push({'id':$(elem).data('multiship-item-id'),'qty':$(elem).val()});});this.productQtys=productQtys;},collectCartQtys:function(){var productQtys=[];$('[data-cart-item-id]').each(function(index,elem){productQtys.push({'id':$(elem).data('cart-item-id'),'qty':$(elem).val()});});this.productQtys=productQtys;},collectMiniCartQtys:function(){var productQtys=[];$('input[data-cart-item-id]').each(function(index,elem){productQtys.push({'id':$(elem).data('cart-item-id'),'qty':$(elem).val()});});this.productQtys=productQtys;},collectProductsForMessages:function(){var i=0,product;this.addedProducts=[];this.removedProducts=[];for(i;ithis.origProducts[product.id].qty){product.qty=Math.abs(product.qty-this.origProducts[product.id].qty);this.addedProducts.push(product);}else if(product.qty!newCartItems.some(({id:id2})=>id2===id1));}else{removedCartItems=oldCartItems;} removedCartItems.forEach(item=>{delete item.id;});var header=window.gaHeaderData;var dlUpdate={'event':'remove_from_cart','ecommerce':{'currency':this.dlCurrencyCode,'items':removedCartItems}};var addUpdate=Object.assign({},header,dlUpdate);this.dataLayer.push({'ecommerce':null});this.dataLayer.push(addUpdate);localStorage.removeItem("old-cart-items");} this.removedProducts=[];},cartPageEvent:function(event){if(!customerData.get('cart')()&&!window.checkoutConfig){return;} var items=[];if(!window.checkoutConfig){data=!customerData.get('cart')().items?[]:customerData.get('cart')().items;data.forEach(function(product){items.push({'item_id':product.product_sku,'item_name':product.product_name.toLowerCase(),'price':parseFloat(product.product_price_value),'quantity':parseInt(product.qty)});});}else{var data=window.checkoutConfig.quoteItemData;data.forEach(function(product){items.push({'item_id':product.sku,'item_name':product.name.toLowerCase(),'price':parseFloat(product.price),'quantity':parseInt(product.qty)});});} var header=window.gaHeaderData;if(event==='view_cart'){var dlUpdate={'event':event,'ecommerce':{'items':items,'value':parseFloat(window.checkoutConfig.totalsData.grand_total),'currency':this.dlCurrencyCode}};}else{var dlUpdate={'event':event,'ecommerce':{'items':items,'currency':this.dlCurrencyCode}};} var addUpdate=Object.assign({},header,dlUpdate);this.dataLayer.push({'ecommerce':null});this.dataLayer.push(addUpdate);},parseAddToCartCookies:function(){var addProductsList;if(getCookie(this.cookieAddToCart)){this.addedProducts=[];addProductsList=decodeURIComponent(getCookie(this.cookieAddToCart));this.addedProducts=JSON.parse(addProductsList);delCookie(this.cookieAddToCart);this.cartItemAdded();}},parseRemoveFromCartCookies:function(){var removeProductsList;if(getCookie(this.cookieRemoveFromCart)){this.removedProducts=[];removeProductsList=decodeURIComponent(getCookie(this.cookieRemoveFromCart));this.removedProducts=JSON.parse(removeProductsList);this.cartItemRemoved();delCookie(this.cookieRemoveFromCart);}}};return GoogleAnalyticsUniversalCart;});