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.advancedAddToCart=config.advancedAddToCart;this.cookieRemoveFromCart=config.cookieRemoveFromCart;this.productQtys=[];this.origProducts={};this.productWithChanges=[];this.addedProducts=[];this.removedProducts=[];this.googleAnalyticsUniversalData={};} 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.parseAddToCartAdvanced();context.parseRemoveFromCartCookies();};Minicart.prototype.removeItemAfterEvents['GoogleAnalyticsUniversalCart:subscribeProductsRemoveFromCart']=function(){context.parseRemoveFromCartCookies();};}},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]',function(){context.emptyCartObserver();}).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();},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