{"version":3,"sources":["ActivateGtm.js","Datalayer/Datalayer.js","Helper/ElementExist.js","Helper/GenericEventListener.js","EventListener/Promotions/SelectPromotionEventListener.js","EventListener/ShoppingCartIntrations/AddToCartEventListener.js","EventListener/ShoppingCartIntrations/AddToWishListEventListener.js","EventListener/ShoppingCartIntrations/RemoveFromCartEventListener.js","EventListener/ShoppingCartIntrations/ViewCartEventListener.js","EventListener/UserIntractions/ProductSearchEventListener.js","EventListener/UserIntractions/UserLoginEventListener.js","EventListener/CheckoutIntractions/BeginCheckoutEventListener.js","EventListener/CheckoutIntractions/PurchaseCheckoutEventListener.js","EventListener/CheckoutIntractions/SelectPaymentMethodEventListener.js","EventListener/CheckoutIntractions/SelectShippingEventListener.js","EventListener/ProductViewsIntractions/ProductListViewEventListener.js","EventListener/ProductViewsIntractions/ProductSelectItemListener.js","EventListener/ProductViewsIntractions/ProductViewEventListener.js"],"names":["ActivateGtm","[object Object]","isFull","this","activateGtm","activateAddToCart","activateRemoveFromCart","activateRemoveFromAllCart","activateViewCart","activateViewDetailProduct","activateViewListProduct","activateAddToWishList","activateSearchProduct","activateUserLogin","activateChangeShipping","activateSelectPaymentMethod","activateBeginCheckout","activatePurchaseCheckout","activateSelectItemProduct","error","console","log","waitForElm","then","elm","activateSelectors","AddToCartEventListener","catch","waitForAngularElement","RemoveFromCartEventListener","viewCart","ViewCartEventListener","callback","viewProduct","ProductViewEventListener","ProductSelectItemListener","ProductListViewEventListener","AddToWishListEventListener","ProductSearchEventListener","UserLoginEventListener","first","elm1","SelectShippingEventListener","shipping","listen","SelectPaymentMethodEventListener","payment","BeginCheckoutEventListener","paymentSuccess","PurchaseCheckoutEventListener","SelectPromotionEventListener","DataLayer","window","dataLayer","gtag","push","arguments","Date","gtmCode","data","selector","Promise","resolve","document","querySelector","observer","MutationObserver","mutations","disconnect","observe","body","childList","subtree","angular","element","scope","ownerDocument","attributes","typeofEventListener","elements","querySelectorAll","i","length","genericEventListener","CheckoutProducts","cartItems","DefaultEventName","eventName","couponCode","couponName","items","clear","pushItems","prototype","checkoutProducts","quantites","coupon","cartItem","analyticsData","dataset","analytics","JSON","parse","analticsDataProducts","products","quantity","parseFloat","value","price","Number","replace","toFixed","pricewithdiscount","item","item_id","code","item_name","name","item_brand","brand","item_category","category","currency","categories","splitCategories","split","j","variant","Object","values","join","event","ecommerce","warn","event_category","event_label","promotion_id","promotion_name","SendData","addEventListener","removeEventListener","ProductList","AddTypes","category_product_list","related_product_list","lastview_product_list","addtype","addToCartAmount","id","item_list_id","priceWithDiscount","setTimeout","cartAmount","$","val","AllCartRemoveTag","AllCartRemoveQuantitiesTag","AllCartRemoveSelector","SingleProductQunatityTag","AllCartRemove","totalPrice","total","cartcurrency","className","includes","that","parent","find","SingleProductRemove","ProductSearchButton","ProductSearchText","search_key","search_term","method","paymentSuccessData","paymentProducts","Analytics","affiliation","Quantity","transaction_id","Total","tax","PaymentMethod","CheckoutCart","methodName","bank","checkoutCart","carttotal","payment_type","ShippingName","shippingName","shippings","index","checked","cargo","shipping_tier","AllDetailProductSelector","product_collection","type","typeName","allProductArry","getElementsByClassName","arrayUniqueByKey","Map","map","product","item_list_name","ProductAddCart","addCartProduct","headPrice","classList","contains"],"mappings":"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","file":"mazakacore-analytics.js","sourcesContent":["class ActivateGtm {\r\n constructor(isFull) {\r\n if (isFull) {\r\n this.activateGtm();\r\n }\r\n }\r\n activateGtm() {\r\n try {\r\n this.activateAddToCart();\r\n this.activateRemoveFromCart();\r\n this.activateRemoveFromAllCart();\r\n this.activateViewCart();\r\n this.activateViewDetailProduct();\r\n this.activateViewListProduct();\r\n this.activateAddToWishList();\r\n this.activateSearchProduct();\r\n this.activateUserLogin();\r\n this.activateChangeShipping(true);\r\n this.activateSelectPaymentMethod(true);\r\n this.activateBeginCheckout();\r\n this.activatePurchaseCheckout();\r\n this.activateSelectItemProduct();\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n\r\n activateAddToCart() {\r\n waitForElm(\".gtm-add-to-cart\")\r\n .then(function (elm) {\r\n activateSelectors(\".gtm-add-to-cart\", AddToCartEventListener);\r\n })\r\n .catch(function (error) {\r\n console.log(error);\r\n });\r\n }\r\n activateRemoveFromCart() {\r\n waitForElm(\".gtm-remove-from-cart\")\r\n .then(function (elm) {\r\n waitForAngularElement(\".gtm-remove-from-cart\")\r\n .then(function (elm) {\r\n activateSelectors(\r\n \".gtm-remove-from-cart\",\r\n RemoveFromCartEventListener\r\n );\r\n })\r\n .catch(function (error) {\r\n console.log(error);\r\n });\r\n })\r\n .catch(function (error) {\r\n console.log(error);\r\n });\r\n }\r\n activateRemoveFromAllCart() {\r\n waitForElm(\".gtm-remove-from-allcart\")\r\n .then(function (elm) {\r\n waitForAngularElement(\".gtm-remove-from-allcart\")\r\n .then(function (elm) {\r\n activateSelectors(\r\n \".gtm-remove-from-allcart\",\r\n RemoveFromCartEventListener\r\n );\r\n })\r\n .catch(function (error) {\r\n console.log(error);\r\n });\r\n })\r\n .catch(function (error) {\r\n console.log(error);\r\n });\r\n }\r\n activateViewCart() {\r\n waitForElm(\".gtm-view-cart\")\r\n .then(function (elm) {\r\n var viewCart = new ViewCartEventListener();\r\n try {\r\n viewCart.callback();\r\n } catch (error) {\r\n console.error(error);\r\n }\r\n })\r\n .catch(function (error) {\r\n console.log(error);\r\n });\r\n }\r\n activateViewDetailProduct() {\r\n waitForElm(\".product-detail\")\r\n .then(function (elm) {\r\n var viewProduct = new ProductViewEventListener(elm);\r\n try {\r\n viewProduct.callback();\r\n } catch (error) {\r\n console.error(error);\r\n }\r\n })\r\n .catch(function (error) {\r\n console.log(error);\r\n });\r\n }\r\n\r\n activateSelectItemProduct() {\r\n waitForElm(\".gtm-product-click\")\r\n .then(function (elm) {\r\n activateSelectors(\r\n \".gtm-product-click\",\r\n ProductSelectItemListener\r\n );\r\n })\r\n .catch(function (error) {\r\n console.log(error);\r\n });\r\n }\r\n\r\n activateViewListProduct() {\r\n waitForElm(\".gtm-product-list\")\r\n .then(function (elm) {\r\n var viewProduct = new ProductListViewEventListener(elm);\r\n try {\r\n viewProduct.callback();\r\n } catch (error) {\r\n console.error(error);\r\n }\r\n })\r\n .catch(function (error) {\r\n console.log(error);\r\n });\r\n }\r\n activateAddToWishList() {\r\n waitForElm(\".gtm-add-wishlist\")\r\n .then(function (elm) {\r\n activateSelectors(\r\n \".gtm-add-wishlist\",\r\n AddToWishListEventListener\r\n );\r\n })\r\n .catch(function (error) {\r\n console.log(error);\r\n });\r\n }\r\n activateSearchProduct() {\r\n waitForElm(\".gtm-search-button\")\r\n .then(function (elm) {\r\n activateSelectors(\r\n \".gtm-search-button\",\r\n ProductSearchEventListener\r\n );\r\n })\r\n .catch(function (error) {\r\n console.log(error);\r\n });\r\n }\r\n activateUserLogin() {\r\n waitForElm(\".social-login\")\r\n .then(function (elm) {\r\n activateSelectors(\".social-login\", UserLoginEventListener);\r\n })\r\n .catch(function (error) {\r\n console.log(error);\r\n });\r\n }\r\n activateChangeShipping(first) {\r\n waitForElm(\".gtm-shipping-info\").then(function (elm) {\r\n waitForAngularElement(\".gtm-shipping-info\")\r\n .then(function (elm1) {\r\n activateSelectors(\r\n \".gtm-shipping-info\",\r\n SelectShippingEventListener\r\n );\r\n if (first) {\r\n var shipping = new SelectShippingEventListener(elm);\r\n try {\r\n shipping.callback();\r\n shipping.listen();\r\n } catch (error) {\r\n console.error(error);\r\n }\r\n }\r\n })\r\n .catch(function (error) {\r\n console.log(error);\r\n })\r\n .catch(function (error) {\r\n console.log(error);\r\n });\r\n });\r\n }\r\n activateSelectPaymentMethod(first) {\r\n waitForElm(\".gtm-payment-method\")\r\n .then(function (elm) {\r\n activateSelectors(\r\n \".gtm-payment-method\",\r\n SelectPaymentMethodEventListener\r\n );\r\n if (first) {\r\n var payment = new SelectPaymentMethodEventListener(elm);\r\n try {\r\n payment.callback();\r\n payment.listen();\r\n } catch (error) {\r\n console.error(error);\r\n }\r\n }\r\n })\r\n .catch(function (error) {\r\n console.log(error);\r\n });\r\n }\r\n activateBeginCheckout() {\r\n waitForElm(\".gtm-begin-checkout\")\r\n .then(function (elm) {\r\n activateSelectors(\r\n \".gtm-begin-checkout\",\r\n BeginCheckoutEventListener\r\n );\r\n })\r\n .catch(function (error) {\r\n console.log(error);\r\n });\r\n }\r\n activatePurchaseCheckout() {\r\n waitForElm(\".gtm-payment-success\")\r\n .then(function (elm) {\r\n var paymentSuccess = new PurchaseCheckoutEventListener(elm);\r\n try {\r\n paymentSuccess.callback();\r\n } catch (error) {\r\n console.error(error);\r\n }\r\n })\r\n .catch(function (error) {\r\n console.log(error);\r\n });\r\n }\r\n\r\n activatePromotionSelection() {\r\n waitForElm(\".gtm-select-promotion\")\r\n .then(function (elm) {\r\n activateSelectors(\r\n \".gtm-select-promotion\",\r\n SelectPromotionEventListener\r\n );\r\n })\r\n .catch(function (error) {\r\n console.log(error);\r\n });\r\n }\r\n}\r\n","class DataLayer {\r\n\r\n constructor() {\r\n if (!window.dataLayer) {\r\n window.dataLayer = window.dataLayer || [];\r\n\r\n function gtag() {\r\n dataLayer.push(arguments);\r\n }\r\n gtag('js', new Date());\r\n gtag('config', window.gtmCode);\r\n }\r\n this.dataLayer = window.dataLayer || [];\r\n }\r\n\r\n\r\n async push(data) {\r\n this.dataLayer.push(data);\r\n }\r\n\r\n clear() {\r\n // window.dataLayer.push(function() {\r\n //this.reset();\r\n // }); // Clear the previous ecommerce object.\r\n }\r\n\r\n}","function waitForElm(selector) {\r\n return new Promise(resolve => {\r\n if (!!document.querySelector(selector)) {\r\n return resolve(document.querySelector(selector));\r\n }\r\n\r\n const observer = new MutationObserver(mutations => {\r\n if (!!document.querySelector(selector)) {\r\n resolve(document.querySelector(selector));\r\n observer.disconnect();\r\n }\r\n });\r\n\r\n observer.observe(document.body, {\r\n childList: true,\r\n subtree: true\r\n });\r\n });\r\n}\r\n\r\nfunction waitForAngularElement(selector){\r\n return new Promise(resolve => {\r\n if(!!angular.element(selector).scope()){\r\n return resolve(angular.element(selector).scope());\r\n }\r\n\r\n const observer = new MutationObserver(mutations => {\r\n if(!!angular.element(selector).scope()) {\r\n resolve(angular.element(selector).scope());\r\n observer.disconnect();\r\n }\r\n });\r\n\r\n if(!!angular.element(selector).scope()){\r\n observer.observe(angular.element(selector)[0].ownerDocument.body, {\r\n childList: true,\r\n subtree: true,\r\n attributes: true\r\n });\r\n }\r\n });\r\n\r\n \r\n\r\n}\r\n","function activateSelectors(selector, typeofEventListener) {\r\n var elements = document.querySelectorAll(selector);\r\n for (var i = 0; i < elements.length; i++) {\r\n var genericEventListener = new typeofEventListener(elements[i]);\r\n try {\r\n genericEventListener.listen();\r\n } catch (error) {\r\n console.error(error);\r\n }\r\n }\r\n}\r\n","//=> https://developers.google.com/analytics/devguides/collection/ga4/reference/events#select_promotion\r\n\r\nclass SelectPromotionEventListener {\r\n // Language: javascript\r\n // Path: SelectPromotionEventListener.js\r\n // Compare this snippet from EventListener.js:\r\n get CheckoutProducts() {\r\n return \".gtm-checkout-products\";\r\n }\r\n get cartItems() {\r\n return \".gtm-view-cart\";\r\n }\r\n get DefaultEventName() {\r\n return \"click\";\r\n }\r\n\r\n constructor(element, eventName = this.DefaultEventName) {\r\n this.element = element;\r\n this.eventName = eventName;\r\n }\r\n callback(couponCode, couponName) {\r\n const dataLayer = new DataLayer();\r\n dataLayer.clear();\r\n var items;\r\n var pushItems = [];\r\n\r\n var cartItems = document.querySelectorAll(\r\n SelectPromotionEventListener.prototype.cartItems\r\n );\r\n var checkoutProducts = document.querySelectorAll(\r\n SelectPromotionEventListener.prototype.CheckoutProducts\r\n );\r\n var quantites = document.querySelectorAll(\r\n SelectPromotionEventListener.prototype.cartItems +\r\n \" .number-unit input\"\r\n );\r\n var coupon = {\r\n couponCode: couponCode,\r\n couponName: couponName,\r\n };\r\n\r\n if (!!cartItems && cartItems.length > 0) items = cartItems;\r\n if (!!checkoutProducts && checkoutProducts.length > 0)\r\n items = checkoutProducts;\r\n\r\n if (!!items) {\r\n for (var i = 0; i < items.length; i++) {\r\n var cartItem = items[i];\r\n var analyticsData = cartItem.dataset.analytics\r\n ? JSON.parse(cartItem.dataset.analytics)\r\n : null;\r\n\r\n if (analyticsData && cartItem.dataset) {\r\n var analticsDataProducts = analyticsData.products\r\n ? analyticsData.products[0]\r\n : null;\r\n var quantity = !!cartItem.dataset.quantity\r\n ? cartItem.dataset.quantity\r\n : parseFloat(quantites[i].value);\r\n\r\n var price = Number(\r\n analticsDataProducts.price.replace(\",\", \".\")\r\n ).toFixed(2);\r\n var pricewithdiscount = Number(\r\n analticsDataProducts.pricewithdiscount.replace(\",\", \".\")\r\n ).toFixed(2);\r\n\r\n var item = {\r\n item_id: analticsDataProducts.code,\r\n item_name: analticsDataProducts.name,\r\n coupon: coupon.couponName,\r\n item_brand: analticsDataProducts.brand,\r\n item_category: analticsDataProducts.category,\r\n currency: analticsDataProducts.currency,\r\n price: pricewithdiscount,\r\n quantity: quantity,\r\n };\r\n\r\n if (analticsDataProducts.categories) {\r\n var splitCategories =\r\n analticsDataProducts.categories.split(\";\");\r\n for (var j = 0; j < splitCategories.length; j++) {\r\n if (j == 0) {\r\n item[\"item_category\"] = splitCategories[j];\r\n } else {\r\n item[\"item_category\" + j] = splitCategories[j];\r\n }\r\n }\r\n }\r\n\r\n if (cartItem.dataset.variant) {\r\n var variant = JSON.parse(cartItem.dataset.variant);\r\n if (variant) {\r\n item[\"item_variant\"] =\r\n Object.values(variant).join(\",\");\r\n }\r\n }\r\n\r\n if (price != pricewithdiscount) {\r\n item[\"price\"] = price;\r\n item[\"discount\"] = (price - pricewithdiscount).toFixed(\r\n 2\r\n );\r\n }\r\n\r\n pushItems.push(item);\r\n }\r\n }\r\n\r\n if (pushItems.length > 0) {\r\n SendData(dataLayer);\r\n }\r\n\r\n function SendData(dataLayer) {\r\n dataLayer\r\n .push({\r\n event: \"select_promotion\",\r\n ecommerce: {\r\n items: pushItems,\r\n },\r\n })\r\n .then(() => {\r\n var instanceActivate = new ActivateGtm();\r\n instanceActivate.activatePurchaseCheckout();\r\n console.log(\"GTM pushed select_promotion event\");\r\n })\r\n .catch((error) => {\r\n console.warn(\"GTM error select_promotion event\", error);\r\n });\r\n\r\n if (typeof gtag !== \"undefined\" && !!gtag) {\r\n gtag(\"event\", \"select_promotion\", {\r\n event_category: \"Enhanced Ecommerce\",\r\n event_label: \"select promotion\",\r\n promotion_id: coupon.couponCode,\r\n promotion_name: coupon.couponName,\r\n items: pushItems,\r\n });\r\n }\r\n }\r\n }\r\n }\r\n\r\n listen() {\r\n this.element.addEventListener(\r\n this.eventName,\r\n SelectPromotionEventListener.prototype.callback\r\n );\r\n }\r\n remove() {\r\n this.element.removeEventListener(\r\n this.eventName,\r\n SelectPromotionEventListener.prototype.callback\r\n );\r\n }\r\n}\r\n","//=> https://developers.google.com/analytics/devguides/collection/ga4/reference/events#add_to_cart\r\n\r\nclass AddToCartEventListener {\r\n // Language: javascript\r\n // Path: AddToCartEventListener.js\r\n // Compare this snippet from EventListener.js:\r\n get ProductList() {\r\n return \".gtm-product-list\";\r\n }\r\n get AddTypes() {\r\n return {\r\n category_product_list: \"Category Product List\",\r\n related_product_list: \"Related Product List\",\r\n lastview_product_list: \"LastView Product List\",\r\n };\r\n }\r\n\r\n constructor(element, eventName = \"click\") {\r\n this.element = element;\r\n this.eventName = eventName;\r\n }\r\n callback() {\r\n const dataLayer = new DataLayer();\r\n dataLayer.clear();\r\n\r\n var addtype = document.querySelector(\r\n AddToCartEventListener.prototype.ProductList\r\n )\r\n ? document.querySelector(\r\n AddToCartEventListener.prototype.ProductList\r\n ).dataset.addtype\r\n : null;\r\n var analyticsData = this.dataset.analytics\r\n ? JSON.parse(this.dataset.analytics)\r\n : null;\r\n\r\n if (analyticsData && this.dataset) {\r\n var analticsDataProducts = analyticsData.products\r\n ? analyticsData.products[0]\r\n : null;\r\n var addToCartAmount = document.querySelector(\r\n '[name=\"addToCartAmount\"][data-id=\"' +\r\n analticsDataProducts.id +\r\n '\"]'\r\n );\r\n var quantity = parseFloat(\r\n !!addToCartAmount ? addToCartAmount.value : 1\r\n );\r\n var item_list_id = addtype ? addtype : \"base\";\r\n\r\n var price = Number(\r\n analticsDataProducts.price\r\n ? analticsDataProducts.price.replace(\",\", \".\")\r\n : this.dataset.price.replace(\",\", \".\")\r\n ).toFixed(2);\r\n var pricewithdiscount = Number(\r\n analticsDataProducts.pricewithdiscount\r\n ? analticsDataProducts.pricewithdiscount.replace(\",\", \".\")\r\n : this.dataset.priceWithDiscount.replace(\",\", \".\")\r\n ).toFixed(2);\r\n\r\n var item = {\r\n item_id: this.dataset.code\r\n ? this.dataset.code\r\n : analticsDataProducts.code,\r\n item_name: analticsDataProducts.name,\r\n currency: analticsDataProducts.currency,\r\n item_brand: analticsDataProducts.brand,\r\n item_category: analticsDataProducts.category,\r\n item_list_id: item_list_id,\r\n price: pricewithdiscount,\r\n quantity: quantity ? quantity : this.dataset.quantity,\r\n };\r\n if (analticsDataProducts.categories) {\r\n var splitCategories =\r\n analticsDataProducts.categories.split(\";\");\r\n for (var i = 0; i < splitCategories.length; i++) {\r\n if (i == 0) {\r\n item[\"item_category\"] = splitCategories[i];\r\n } else {\r\n item[\"item_category\" + i] = splitCategories[i];\r\n }\r\n }\r\n }\r\n if (this.dataset.addtype) {\r\n item[\"item_list_id\"] = this.dataset.addtype;\r\n }\r\n\r\n if (this.dataset.variant) {\r\n var variant = JSON.parse(this.dataset.variant);\r\n if (variant) {\r\n item[\"item_variant\"] = Object.values(variant).join(\",\");\r\n }\r\n }\r\n if (price != pricewithdiscount) {\r\n item[\"price\"] = price;\r\n item[\"discount\"] = (price - pricewithdiscount).toFixed(2);\r\n }\r\n\r\n dataLayer\r\n .push({\r\n // eslint-disable-line\r\n event: \"add_to_cart\",\r\n ecommerce: {\r\n items: [item],\r\n },\r\n })\r\n .then(() => {\r\n console.log(\"GTM pushed add_to_cart event\");\r\n setTimeout(() => {\r\n var instanceActivate = new ActivateGtm();\r\n instanceActivate.activateRemoveFromCart();\r\n }, 1000);\r\n })\r\n .catch((error) => {\r\n console.warn(\"GTM error add_to_cart event\", error);\r\n });\r\n\r\n if (typeof gtag !== \"undefined\" && !!gtag) {\r\n gtag(\"event\", \"add_to_cart\", {\r\n event_category: \"Enhanced Ecommerce\",\r\n event_label: \"add to cart\",\r\n items: [item],\r\n });\r\n }\r\n }\r\n }\r\n\r\n listen() {\r\n this.element.addEventListener(\r\n this.eventName,\r\n AddToCartEventListener.prototype.callback\r\n );\r\n }\r\n remove() {\r\n this.element.removeEventListener(\r\n this.eventName,\r\n AddToCartEventListener.prototype.callback\r\n );\r\n }\r\n}\r\n","//=> https://developers.google.com/analytics/devguides/collection/ga4/reference/events#add_to_wishlist\r\n\r\nclass AddToWishListEventListener {\r\n // Language: javascript\r\n // Path: AddToWishListEventListener.js\r\n // Compare this snippet from EventListener.js:\r\n\r\n constructor(element, eventName = \"click\") {\r\n this.element = element;\r\n this.eventName = eventName;\r\n }\r\n callback() {\r\n const dataLayer = new DataLayer();\r\n dataLayer.clear();\r\n var analyticsData = this.dataset.analytics\r\n ? JSON.parse(this.dataset.analytics)\r\n : null;\r\n\r\n if (analyticsData && this.dataset) {\r\n var analticsDataProducts = analyticsData.products\r\n ? analyticsData.products[0]\r\n : null;\r\n\r\n var cartAmount = document.querySelector(\r\n '[name=\"addToCartAmount\"][data-id=\"' +\r\n analticsDataProducts.id +\r\n '\"]'\r\n );\r\n var addToCartAmount = cartAmount\r\n ? cartAmount.value\r\n : document.querySelector(\r\n '[name=\"addToCartAmount\"][data-id=\"' +\r\n this.dataset.id +\r\n '\"]'\r\n );\r\n var quantity = parseFloat($(addToCartAmount).val());\r\n var item_list_id = \"base\";\r\n\r\n var price = Number(\r\n analticsDataProducts.price\r\n ? analticsDataProducts.price.replace(\",\", \".\")\r\n : this.dataset.price\r\n ).toFixed(2);\r\n var pricewithdiscount = Number(\r\n analticsDataProducts.pricewithdiscount\r\n ? analticsDataProducts.pricewithdiscount.replace(\",\", \".\")\r\n : this.dataset.priceWithDiscount.replace(\",\", \".\")\r\n ).toFixed(2);\r\n\r\n var item = {\r\n item_id: analticsDataProducts.code,\r\n item_name: analticsDataProducts.name,\r\n currency: analticsDataProducts.currency\r\n ? analticsDataProducts.currency\r\n : this.dataset.currency,\r\n item_brand: analticsDataProducts.brand,\r\n item_category: analticsDataProducts.category,\r\n item_list_id: item_list_id,\r\n price: pricewithdiscount,\r\n quantity: quantity ? quantity : this.dataset.quantity,\r\n };\r\n if (analticsDataProducts.categories) {\r\n var splitCategories =\r\n analticsDataProducts.categories.split(\";\");\r\n for (var i = 0; i < splitCategories.length; i++) {\r\n if (i == 0) {\r\n item[\"item_category\"] = splitCategories[i];\r\n } else {\r\n item[\"item_category\" + i] = splitCategories[i];\r\n }\r\n }\r\n }\r\n if (this.dataset.addtype) {\r\n item[\"item_list_id\"] = this.dataset.addtype;\r\n }\r\n\r\n if (this.dataset.variant) {\r\n var variant = JSON.parse(this.dataset.variant);\r\n if (variant) {\r\n item[\"item_variant\"] = Object.values(variant).join(\",\");\r\n }\r\n }\r\n if (price != pricewithdiscount) {\r\n item[\"price\"] = price;\r\n item[\"discount\"] = (price - pricewithdiscount).toFixed(2);\r\n }\r\n\r\n dataLayer\r\n .push({\r\n // eslint-disable-line\r\n event: \"add_to_wishlist\",\r\n ecommerce: {\r\n items: [item],\r\n },\r\n })\r\n .then(() => {\r\n console.log(\"GTM pushed add_to_wishlist event\");\r\n setTimeout(() => {\r\n var instanceActivate = new ActivateGtm();\r\n instanceActivate.activateRemoveFromCart();\r\n }, 1000);\r\n })\r\n .catch((error) => {\r\n console.warn(\"GTM error add_to_wishlist event\", error);\r\n });\r\n\r\n if (typeof gtag !== \"undefined\" && !!gtag) {\r\n gtag(\"event\", \"add_to_wishlist\", {\r\n event_category: \"Enhanced Ecommerce\",\r\n event_label: \"add to wishlist\",\r\n items: [item],\r\n });\r\n }\r\n }\r\n }\r\n\r\n listen() {\r\n this.element.addEventListener(\r\n this.eventName,\r\n AddToWishListEventListener.prototype.callback\r\n );\r\n }\r\n remove() {\r\n this.element.removeEventListener(\r\n this.eventName,\r\n AddToWishListEventListener.prototype.callback\r\n );\r\n }\r\n}\r\n","//https://developers.google.com/analytics/devguides/collection/ga4/reference/events#remove_from_cart\r\nclass RemoveFromCartEventListener {\r\n // Language: javascript\r\n // Path: RemoveFromCartEventListener.js\r\n // Compare this snippet from EventListener.js:\r\n\r\n get AllCartRemoveTag() {\r\n return \".gtm-view-cart\";\r\n }\r\n get AllCartRemoveQuantitiesTag() {\r\n return \".gtm-view-cart .number-unit input\";\r\n }\r\n get AllCartRemoveSelector() {\r\n return \"gtm-remove-from-allcart\";\r\n }\r\n get SingleProductQunatityTag() {\r\n return \"[name='addToCartAmount']\";\r\n }\r\n get DefaultEventName() {\r\n return \"click\";\r\n }\r\n\r\n constructor(element, eventName = this.DefaultEventName) {\r\n this.element = element;\r\n this.eventName = eventName;\r\n }\r\n\r\n callback() {\r\n const dataLayer = new DataLayer();\r\n dataLayer.clear();\r\n\r\n function AllCartRemove() {\r\n var cartItems = document.querySelectorAll(\r\n RemoveFromCartEventListener.prototype.AllCartRemoveTag\r\n );\r\n var quantites =\r\n document.querySelectorAll(\r\n RemoveFromCartEventListener.prototype\r\n .AllCartRemoveQuantitiesTag\r\n ).length > 0\r\n ? document.querySelectorAll(\r\n RemoveFromCartEventListener.prototype\r\n .AllCartRemoveQuantitiesTag\r\n )\r\n : document.querySelectorAll(\r\n \".cart-body__quantity-control-input\"\r\n );\r\n\r\n var totalPrice;\r\n var items = [];\r\n var currency;\r\n\r\n for (var i = 0; i < cartItems.length; i++) {\r\n var cartItem = cartItems[i];\r\n var analyticsData = cartItem.dataset.analytics\r\n ? JSON.parse(cartItem.dataset.analytics)\r\n : null;\r\n\r\n if (analyticsData && cartItem.dataset) {\r\n var analticsDataProducts = analyticsData.products\r\n ? analyticsData.products[0]\r\n : null;\r\n var quantity = parseFloat(quantites[i].value);\r\n totalPrice = cartItem.dataset.total;\r\n currency = cartItem.dataset.cartcurrency;\r\n\r\n var price = Number(\r\n analticsDataProducts.price\r\n ? analticsDataProducts.price.replace(\",\", \".\")\r\n : cartItem.dataset.price.replace(\",\", \".\")\r\n ).toFixed(2);\r\n var pricewithdiscount = Number(\r\n analticsDataProducts.pricewithdiscount\r\n ? analticsDataProducts.pricewithdiscount.replace(\r\n \",\",\r\n \".\"\r\n )\r\n : cartItem.dataset.priceWithDiscount.replace(\r\n \",\",\r\n \".\"\r\n )\r\n ).toFixed(2);\r\n var item = {\r\n item_id: analticsDataProducts.code,\r\n item_name: analticsDataProducts.name,\r\n currency: analticsDataProducts.currency,\r\n item_brand: analticsDataProducts.brand,\r\n item_category: analticsDataProducts.category,\r\n price: pricewithdiscount,\r\n quantity: quantity,\r\n };\r\n\r\n if (analticsDataProducts.categories) {\r\n var splitCategories =\r\n analticsDataProducts.categories.split(\";\");\r\n for (var j = 0; j < splitCategories.length; j++) {\r\n if (j == 0) {\r\n item[\"item_category\"] = splitCategories[j];\r\n } else {\r\n item[\"item_category\" + j] = splitCategories[j];\r\n }\r\n }\r\n }\r\n\r\n if (price != pricewithdiscount) {\r\n item[\"price\"] = analticsDataProducts.price;\r\n item[\"discount\"] = (price - pricewithdiscount).toFixed(\r\n 2\r\n );\r\n }\r\n\r\n items.push(item);\r\n }\r\n }\r\n\r\n if (items.length > 0) {\r\n SendData(dataLayer);\r\n }\r\n function SendData(dataLayer) {\r\n dataLayer\r\n .push({\r\n event: \"remove_from_cart\",\r\n ecommerce: {\r\n currency: currency,\r\n value: totalPrice,\r\n items: items,\r\n },\r\n })\r\n .then(() => {\r\n console.log(\"GTM pushed remove_from_cart event\");\r\n setTimeout(() => {\r\n var instanceActivate = new ActivateGtm();\r\n instanceActivate.activateRemoveFromCart();\r\n }, 2000);\r\n })\r\n .catch((error) => {\r\n console.warn(\"GTM error remove_from_cart event\", error);\r\n });\r\n\r\n if (typeof gtag !== \"undefined\" && !!gtag) {\r\n gtag(\"event\", \"remove_from_cart\", {\r\n event_category: \"Enhanced Ecommerce\",\r\n event_label: \"Remove from cart\",\r\n value: totalPrice,\r\n currency: currency,\r\n items: items,\r\n });\r\n }\r\n }\r\n }\r\n\r\n function SingleProductRemove(that) {\r\n var analyticsData = that.dataset.analytics\r\n ? JSON.parse(that.dataset.analytics)\r\n : null;\r\n\r\n if (analyticsData && that.dataset) {\r\n var analticsDataProducts = analyticsData.products\r\n ? analyticsData.products[0]\r\n : null;\r\n var addToCartAmount = $(that)\r\n .parent()\r\n .find(that.SingleProductQunatityTag);\r\n var quantity = parseFloat($(addToCartAmount).val());\r\n\r\n var price = Number(\r\n analticsDataProducts.price\r\n ? analticsDataProducts.price.replace(\",\", \".\")\r\n : that.dataset.price.replace(\",\", \".\")\r\n ).toFixed(2);\r\n var pricewithdiscount = Number(\r\n analticsDataProducts.pricewithdiscount\r\n ? analticsDataProducts.pricewithdiscount.replace(\r\n \",\",\r\n \".\"\r\n )\r\n : that.dataset.priceWithDiscount.replace(\",\", \".\")\r\n ).toFixed(2);\r\n\r\n var item = {\r\n item_id: analticsDataProducts.code,\r\n item_name: analticsDataProducts.name,\r\n currency: analticsDataProducts.currency,\r\n item_brand: analticsDataProducts.brand,\r\n item_category: analticsDataProducts.category,\r\n price: pricewithdiscount,\r\n quantity: quantity ? quantity : that.dataset.quantity,\r\n };\r\n if (analticsDataProducts.categories) {\r\n var splitCategories =\r\n analticsDataProducts.categories.split(\";\");\r\n for (var i = 0; i < splitCategories.length; i++) {\r\n if (i == 0) {\r\n item[\"item_category\"] = splitCategories[i];\r\n } else {\r\n item[\"item_category\" + i] = splitCategories[i];\r\n }\r\n }\r\n }\r\n\r\n if (that.dataset.variant) {\r\n var variant = JSON.parse(that.dataset.variant);\r\n if (variant) {\r\n item[\"item_variant\"] = Object.values(variant).join(\",\");\r\n }\r\n }\r\n\r\n if (price != pricewithdiscount) {\r\n item[\"price\"] = analticsDataProducts.price;\r\n item[\"discount\"] = (price - pricewithdiscount).toFixed(2);\r\n }\r\n\r\n dataLayer\r\n .push({\r\n // eslint-disable-line\r\n event: \"remove_from_cart\",\r\n ecommerce: {\r\n currency: analticsDataProducts.currency,\r\n value: (pricewithdiscount * item.quantity).toFixed(\r\n 2\r\n ),\r\n items: [item],\r\n },\r\n })\r\n .then(() => {\r\n console.log(\"GTM pushed remove_from_cart event\");\r\n setTimeout(() => {\r\n var instanceActivate = new ActivateGtm();\r\n instanceActivate.activateRemoveFromCart();\r\n }, 1000);\r\n })\r\n .catch((error) => {\r\n console.warn(\"GTM error remove_from_cart event\", error);\r\n });\r\n\r\n if (typeof gtag !== \"undefined\" && !!gtag) {\r\n gtag(\"event\", \"remove_from_cart\", {\r\n event_category: \"Enhanced Ecommerce\",\r\n event_label: \"Remove from cart\",\r\n value: (pricewithdiscount * item.quantity).toFixed(2),\r\n currency: analticsDataProducts.currency,\r\n items: [item],\r\n });\r\n }\r\n }\r\n }\r\n\r\n if (\r\n this.element &&\r\n this.element.className.includes(\r\n RemoveFromCartEventListener.prototype.AllCartRemoveSelector\r\n )\r\n ) {\r\n AllCartRemove();\r\n } else if (\r\n this.className.includes(\r\n RemoveFromCartEventListener.prototype.AllCartRemoveSelector\r\n )\r\n ) {\r\n AllCartRemove();\r\n } else {\r\n SingleProductRemove(this);\r\n }\r\n }\r\n\r\n listen() {\r\n this.element.addEventListener(\r\n this.eventName,\r\n RemoveFromCartEventListener.prototype.callback\r\n );\r\n }\r\n\r\n remove() {\r\n this.element.removeEventListener(\r\n this.eventName,\r\n RemoveFromCartEventListener.prototype.callback\r\n );\r\n }\r\n}\r\n","//https://developers.google.com/analytics/devguides/collection/ga4/reference/events#view_cart\r\n\r\nclass ViewCartEventListener {\r\n // Language: javascript\r\n // Path: ViewCartEventListener.js\r\n // Compare this snippet from EventListener.js:\r\n\r\n constructor(element, eventName = \"show\") {\r\n this.element = element;\r\n this.eventName = eventName;\r\n }\r\n\r\n callback() {\r\n const dataLayer = new DataLayer();\r\n dataLayer.clear();\r\n\r\n var cartItems = document.querySelectorAll(\".gtm-view-cart\");\r\n var quantites =\r\n document.querySelectorAll(\".gtm-view-cart .number-unit input\")\r\n .length > 0\r\n ? document.querySelectorAll(\".gtm-view-cart .number-unit input\")\r\n : document.querySelectorAll(\r\n \".cart-body__quantity-control-input\"\r\n );\r\n\r\n var totalPrice;\r\n var items = [];\r\n var currency;\r\n\r\n for (var i = 0; i < cartItems.length; i++) {\r\n var cartItem = cartItems[i];\r\n var analyticsData = cartItem.dataset.analytics\r\n ? JSON.parse(cartItem.dataset.analytics)\r\n : null;\r\n\r\n if (analyticsData && cartItem.dataset) {\r\n var analticsDataProducts = analyticsData.products\r\n ? analyticsData.products[0]\r\n : null;\r\n var quantity = parseFloat(quantites[i].value);\r\n totalPrice = cartItem.dataset.total;\r\n currency = cartItem.dataset.cartcurrency;\r\n\r\n var price = Number(\r\n analticsDataProducts.price.replace(\",\", \".\")\r\n ).toFixed(2);\r\n var pricewithdiscount = Number(\r\n analticsDataProducts.pricewithdiscount.replace(\",\", \".\")\r\n ).toFixed(2);\r\n var item = {\r\n item_id: analticsDataProducts.code,\r\n item_name: analticsDataProducts.name,\r\n currency: analticsDataProducts.currency,\r\n item_brand: analticsDataProducts.brand,\r\n item_category: analticsDataProducts.category,\r\n price: pricewithdiscount,\r\n quantity: quantity,\r\n };\r\n\r\n if (analticsDataProducts.categories) {\r\n var splitCategories =\r\n analticsDataProducts.categories.split(\";\");\r\n for (var j = 0; j < splitCategories.length; j++) {\r\n if (j == 0) {\r\n item[\"item_category\"] = splitCategories[j];\r\n } else {\r\n item[\"item_category\" + j] = splitCategories[j];\r\n }\r\n }\r\n }\r\n\r\n if (cartItem.dataset.variant) {\r\n var variant = JSON.parse(cartItem.dataset.variant);\r\n if (variant) {\r\n item[\"item_variant\"] = Object.values(variant).join(\",\");\r\n }\r\n }\r\n\r\n if (price != pricewithdiscount) {\r\n item[\"price\"] = analticsDataProducts.price;\r\n item[\"discount\"] = (price - pricewithdiscount).toFixed(2);\r\n }\r\n\r\n items.push(item);\r\n }\r\n }\r\n\r\n if (cartItems.length > 0) {\r\n SendData(dataLayer);\r\n }\r\n\r\n function SendData(dataLayer) {\r\n dataLayer\r\n .push({\r\n event: \"view_cart\",\r\n ecommerce: {\r\n currency: currency,\r\n value: totalPrice,\r\n items: items,\r\n },\r\n })\r\n .then(() => {\r\n console.log(\"GTM pushed view_cart event\");\r\n setTimeout(() => {\r\n var instanceActivate = new ActivateGtm();\r\n instanceActivate.activateRemoveFromCart();\r\n }, 2000);\r\n })\r\n .catch((error) => {\r\n console.warn(\"GTM error view_cart event\", error);\r\n });\r\n\r\n if (typeof gtag !== \"undefined\" && !!gtag) {\r\n gtag(\"event\", \"view_cart\", {\r\n event_category: \"Enhanced Ecommerce\",\r\n event_label: \"view cart\",\r\n value: totalPrice,\r\n currency: currency,\r\n items: items,\r\n });\r\n }\r\n }\r\n }\r\n\r\n listen() {\r\n this.element.addEventListener(\r\n this.eventName,\r\n ViewCartEventListener.prototype.callback\r\n );\r\n }\r\n\r\n remove() {\r\n this.element.addEventListener(\r\n this.eventName,\r\n ViewCartEventListener.prototype.callback\r\n );\r\n }\r\n}\r\n","//=> https://developers.google.com/analytics/devguides/collection/ga4/reference/events#search\r\n\r\nclass ProductSearchEventListener {\r\n // Language: javascript\r\n // Path: ProductSearchEventListener.js\r\n // Compare this snippet from EventListener.js:\r\n\r\n get ProductSearchButton() {\r\n return \".gtm-search-button\";\r\n }\r\n get ProductSearchText() {\r\n return \".gtm-searchkey\";\r\n }\r\n get DefaultEventName() {\r\n return \"click\";\r\n }\r\n\r\n constructor(element, eventName = this.DefaultEventName) {\r\n this.element = element;\r\n this.eventName = eventName;\r\n }\r\n callback() {\r\n const dataLayer = new DataLayer();\r\n dataLayer.clear();\r\n\r\n var search_key = document.querySelector(\r\n ProductSearchEventListener.prototype.ProductSearchText\r\n ).value;\r\n dataLayer\r\n .push({\r\n // eslint-disable-line\r\n event: \"search\",\r\n search_term: search_key,\r\n })\r\n .then(() => {\r\n console.log(\"GTM pushed search event\");\r\n })\r\n .catch((error) => {\r\n console.warn(\"GTM error search event\", error);\r\n });\r\n\r\n if (typeof gtag !== \"undefined\" && !!gtag) {\r\n gtag(\"event\", \"search\", {\r\n event_category: \"Enhanced Ecommerce\",\r\n event_label: \"search\",\r\n search_term: search_key,\r\n });\r\n }\r\n }\r\n\r\n listen() {\r\n this.element.addEventListener(\r\n this.eventName,\r\n ProductSearchEventListener.prototype.callback\r\n );\r\n }\r\n\r\n remove() {\r\n this.element.removeEventListener(this.eventName, this.callback);\r\n }\r\n}\r\n","//=> https://developers.google.com/analytics/devguides/collection/ga4/reference/events#login\r\n\r\nclass UserLoginEventListener {\r\n // Language: javascript\r\n // Path: UserLoginEventListener.js\r\n // Compare this snippet from EventListener.js:\r\n get DefaultEventName() {\r\n return \"click\";\r\n }\r\n\r\n constructor(element, eventName = this.DefaultEventName) {\r\n this.element = element;\r\n this.eventName = eventName;\r\n }\r\n callback() {\r\n const dataLayer = new DataLayer();\r\n dataLayer.clear();\r\n\r\n var method = this.value;\r\n dataLayer\r\n .push({\r\n event: \"login\",\r\n method: method,\r\n })\r\n .then(() => {\r\n console.log(\"GTM pushed user_login event\");\r\n })\r\n .catch((error) => {\r\n console.warn(\"GTM error user_login event\", error);\r\n });\r\n\r\n if (typeof gtag !== \"undefined\" && !!gtag) {\r\n gtag(\"event\", \"login\", {\r\n method: method,\r\n });\r\n }\r\n }\r\n\r\n listen() {\r\n this.element.addEventListener(\r\n this.eventName,\r\n ProductSearchEventListener.prototype.callback\r\n );\r\n }\r\n\r\n remove() {\r\n this.element.removeEventListener(\r\n this.eventName,\r\n ProductSearchEventListener.prototype.callback\r\n );\r\n }\r\n}\r\n","//=> https://developers.google.com/analytics/devguides/collection/ga4/reference/events#add_to_cart\r\n\r\nclass BeginCheckoutEventListener {\r\n // Language: javascript\r\n // Path: BeginCheckoutEventListener.js\r\n // Compare this snippet from EventListener.js:\r\n\r\n get CheckoutProducts() {\r\n return \".gtm-checkout-products\";\r\n }\r\n\r\n get DefaultEventName() {\r\n return \"click\";\r\n }\r\n\r\n constructor(element, eventName = this.DefaultEventName) {\r\n this.element = element;\r\n this.eventName = eventName;\r\n }\r\n\r\n callback() {\r\n const dataLayer = new DataLayer();\r\n dataLayer.clear();\r\n var items = [];\r\n\r\n var checkoutProducts = document.querySelectorAll(\r\n BeginCheckoutEventListener.prototype.CheckoutProducts\r\n );\r\n\r\n for (var i = 0; i < checkoutProducts.length; i++) {\r\n var cartItem = checkoutProducts[i];\r\n var analyticsData = cartItem.dataset.analytics\r\n ? JSON.parse(cartItem.dataset.analytics)\r\n : null;\r\n\r\n if (analyticsData && cartItem.dataset) {\r\n var analticsDataProducts = analyticsData.products\r\n ? analyticsData.products[0]\r\n : null;\r\n\r\n var price = Number(\r\n analticsDataProducts.price.replace(\",\", \".\")\r\n ).toFixed(2);\r\n var pricewithdiscount = Number(\r\n analticsDataProducts.pricewithdiscount.replace(\",\", \".\")\r\n ).toFixed(2);\r\n\r\n var item = {\r\n item_id: analticsDataProducts.code,\r\n item_name: analticsDataProducts.name,\r\n item_brand: analticsDataProducts.brand,\r\n item_category: analticsDataProducts.category,\r\n currency: analticsDataProducts.currency,\r\n price: pricewithdiscount,\r\n quantity: cartItem.dataset.quantity,\r\n };\r\n\r\n if (analticsDataProducts.categories) {\r\n var splitCategories =\r\n analticsDataProducts.categories.split(\";\");\r\n for (var j = 0; j < splitCategories.length; j++) {\r\n if (j == 0) {\r\n item[\"item_category\"] = splitCategories[j];\r\n } else {\r\n item[\"item_category\" + j] = splitCategories[j];\r\n }\r\n }\r\n }\r\n\r\n if (cartItem.dataset.variant) {\r\n var variant = JSON.parse(cartItem.dataset.variant);\r\n if (variant) {\r\n item[\"item_variant\"] = Object.values(variant).join(\",\");\r\n }\r\n }\r\n\r\n if (price != pricewithdiscount) {\r\n item[\"price\"] = price;\r\n item[\"discount\"] = (price - pricewithdiscount).toFixed(2);\r\n }\r\n\r\n items.push(item);\r\n }\r\n }\r\n\r\n if (items.length > 0) {\r\n SendData(dataLayer);\r\n }\r\n\r\n function SendData(dataLayer) {\r\n dataLayer\r\n .push({\r\n event: \"begin_checkout\",\r\n ecommerce: {\r\n items: items,\r\n },\r\n })\r\n .then(() => {\r\n var instanceActivate = new ActivateGtm();\r\n instanceActivate.activatePurchaseCheckout();\r\n console.log(\"GTM pushed begin_checkout event\");\r\n })\r\n .catch((error) => {\r\n console.warn(\"GTM error begin_checkout event\", error);\r\n });\r\n\r\n if (typeof gtag !== \"undefined\" && !!gtag) {\r\n gtag(\"event\", \"begin_checkout\", {\r\n event_category: \"Enhanced Ecommerce\",\r\n event_label: \"begin checkout\",\r\n items: items,\r\n });\r\n }\r\n }\r\n }\r\n\r\n listen() {\r\n this.element.addEventListener(\r\n this.eventName,\r\n BeginCheckoutEventListener.prototype.callback\r\n );\r\n }\r\n remove() {\r\n this.element.removeEventListener(\r\n this.eventName,\r\n BeginCheckoutEventListener.prototype.callback\r\n );\r\n }\r\n}\r\n","//=> https://developers.google.com/analytics/devguides/collection/ga4/reference/events#purchase\r\n\r\nclass PurchaseCheckoutEventListener {\r\n // Language: javascript\r\n // Path: PurchaseCheckoutEventListener.js\r\n // Compare this snippet from EventListener.js:\r\n\r\n get CheckoutProducts() {\r\n return \".gtm-checkout-products\";\r\n }\r\n\r\n get DefaultEventName() {\r\n return \"click\";\r\n }\r\n\r\n constructor(element, eventName = this.DefaultEventName) {\r\n this.element = element;\r\n this.eventName = eventName;\r\n }\r\n\r\n callback() {\r\n const dataLayer = new DataLayer();\r\n dataLayer.clear();\r\n var items = [];\r\n var element = document.querySelector(\".gtm-payment-success\");\r\n\r\n if (element && element.dataset) {\r\n var paymentSuccess = element.dataset.payment;\r\n if (paymentSuccess) {\r\n var paymentSuccessData = JSON.parse(paymentSuccess);\r\n for (const paymentProducts of paymentSuccessData.products) {\r\n var analyticsData = paymentProducts.Analytics\r\n ? JSON.parse(paymentProducts.Analytics)\r\n : null;\r\n\r\n if (analyticsData) {\r\n var analticsDataProducts = analyticsData.products\r\n ? analyticsData.products[0]\r\n : null;\r\n\r\n var price = Number(\r\n analticsDataProducts.price.replace(\",\", \".\")\r\n ).toFixed(2);\r\n var pricewithdiscount = Number(\r\n analticsDataProducts.pricewithdiscount.replace(\r\n \",\",\r\n \".\"\r\n )\r\n ).toFixed(2);\r\n\r\n var item = {\r\n item_id: analticsDataProducts.code,\r\n item_name: analticsDataProducts.name,\r\n affiliation: element.dataset.affiliation,\r\n item_brand: analticsDataProducts.brand,\r\n item_category: analticsDataProducts.category,\r\n currency: analticsDataProducts.currency,\r\n price: pricewithdiscount,\r\n quantity: paymentProducts.Quantity,\r\n };\r\n\r\n if (analticsDataProducts.categories) {\r\n var splitCategories =\r\n analticsDataProducts.categories.split(\";\");\r\n for (var j = 0; j < splitCategories.length; j++) {\r\n if (j == 0) {\r\n item[\"item_category\"] = splitCategories[j];\r\n } else {\r\n item[\"item_category\" + j] =\r\n splitCategories[j];\r\n }\r\n }\r\n }\r\n\r\n if (paymentProducts.variant) {\r\n var variant = JSON.parse(paymentProducts.variant);\r\n if (variant) {\r\n item[\"item_variant\"] =\r\n Object.values(variant).join(\",\");\r\n }\r\n }\r\n\r\n if (price != pricewithdiscount) {\r\n item[\"price\"] = price;\r\n item[\"discount\"] = (\r\n price - pricewithdiscount\r\n ).toFixed(2);\r\n }\r\n\r\n items.push(item);\r\n }\r\n }\r\n\r\n if (items.length > 0) {\r\n SendData(dataLayer);\r\n }\r\n\r\n function SendData(dataLayer) {\r\n dataLayer\r\n .push({\r\n event: \"purchase\",\r\n ecommerce: {\r\n transaction_id:\r\n paymentSuccessData.transaction_id,\r\n affiliation: paymentSuccessData.affiliation,\r\n value: paymentSuccessData.Total,\r\n tax: paymentSuccessData.tax,\r\n shipping: paymentSuccessData.shipping,\r\n currency: paymentSuccessData.currency,\r\n items: items,\r\n },\r\n })\r\n .then(() => {\r\n console.log(\"GTM pushed purchase event\");\r\n })\r\n .catch((error) => {\r\n console.warn(\"GTM error purchase event\", error);\r\n });\r\n\r\n if (typeof gtag !== \"undefined\" && !!gtag) {\r\n gtag(\"event\", \"purchase\", {\r\n event_category: \"Enhanced Ecommerce\",\r\n event_label: \"purchase\",\r\n value: paymentSuccessData.Total,\r\n currency: paymentSuccessData.currency,\r\n transaction_id: paymentSuccessData.transaction_id,\r\n affiliation: paymentSuccessData.affiliation,\r\n tax: paymentSuccessData.tax,\r\n shipping: paymentSuccessData.shipping,\r\n items: items,\r\n });\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n listen() {\r\n this.element.addEventListener(\r\n this.eventName,\r\n PurchaseCheckoutEventListener.prototype.callback\r\n );\r\n }\r\n remove() {\r\n this.element.removeEventListener(\r\n this.eventName,\r\n PurchaseCheckoutEventListener.prototype.callback\r\n );\r\n }\r\n}\r\n","//=> https://developers.google.com/analytics/devguides/collection/ga4/reference/events#add_shipping_info\r\n\r\nclass SelectPaymentMethodEventListener {\r\n // Language: javascript\r\n // Path: SelectShippingEventListener.js\r\n // Compare this snippet from EventListener.js:\r\n\r\n get PaymentMethod() {\r\n return \".gtm-payment-method\";\r\n }\r\n get CheckoutProducts() {\r\n return \".gtm-checkout-products\";\r\n }\r\n get CheckoutCart() {\r\n return \".gtm-checkout-cart\";\r\n }\r\n get DefaultEventName() {\r\n return \"click\";\r\n }\r\n\r\n constructor(element, eventName = this.DefaultEventName) {\r\n this.element = element;\r\n this.eventName = eventName;\r\n }\r\n callback() {\r\n console.log(this);\r\n const dataLayer = new DataLayer();\r\n dataLayer.clear();\r\n var methodName;\r\n var totalPrice;\r\n var items = [];\r\n var currency;\r\n\r\n methodName = !!this.dataset\r\n ? this.dataset.bank\r\n : this.element.dataset.bank;\r\n\r\n var checkoutProducts = document.querySelectorAll(\r\n SelectPaymentMethodEventListener.prototype.CheckoutProducts\r\n );\r\n var checkoutCart = document.querySelector(\r\n SelectPaymentMethodEventListener.prototype.CheckoutCart\r\n );\r\n\r\n for (var i = 0; i < checkoutProducts.length; i++) {\r\n var cartItem = checkoutProducts[i];\r\n var analyticsData = cartItem.dataset.analytics\r\n ? JSON.parse(cartItem.dataset.analytics)\r\n : null;\r\n\r\n if (analyticsData && cartItem.dataset) {\r\n var analticsDataProducts = analyticsData.products\r\n ? analyticsData.products[0]\r\n : null;\r\n totalPrice = checkoutCart.dataset.carttotal;\r\n currency = checkoutCart.dataset.cartcurrency;\r\n\r\n var item = {\r\n item_id: analticsDataProducts.code,\r\n item_name: analticsDataProducts.name,\r\n item_brand: analticsDataProducts.brand,\r\n item_category: analticsDataProducts.category,\r\n };\r\n\r\n if (analticsDataProducts.categories) {\r\n var splitCategories =\r\n analticsDataProducts.categories.split(\";\");\r\n for (var j = 0; j < splitCategories.length; j++) {\r\n if (j == 0) {\r\n item.item_category = splitCategories[j];\r\n } else {\r\n item[\"item_category\" + j] = splitCategories[j];\r\n }\r\n }\r\n }\r\n\r\n items.push(item);\r\n }\r\n }\r\n\r\n if (items.length > 0) {\r\n SendData(dataLayer);\r\n }\r\n\r\n function SendData(dataLayer) {\r\n dataLayer\r\n .push({\r\n event: \"add_payment_info\",\r\n ecommerce: {\r\n currency: currency,\r\n value: totalPrice,\r\n payment_type: methodName,\r\n items: items,\r\n },\r\n })\r\n .then(() => {\r\n setTimeout(() => {\r\n var instanceActivate = new ActivateGtm();\r\n instanceActivate.activateSelectPaymentMethod(false);\r\n }, 1000);\r\n console.log(\"GTM pushed add_payment_info event\");\r\n })\r\n .catch((error) => {\r\n console.warn(\"GTM error add_payment_info event\", error);\r\n });\r\n\r\n if (typeof gtag !== \"undefined\" && !!gtag) {\r\n gtag(\"event\", \"add_payment_info\", {\r\n event_category: \"Enhanced Ecommerce\",\r\n event_label: \"add payment info\",\r\n value: totalPrice,\r\n currency: currency,\r\n payment_type: methodName,\r\n items: items,\r\n });\r\n }\r\n }\r\n }\r\n\r\n listen() {\r\n this.element.addEventListener(\r\n this.eventName,\r\n SelectPaymentMethodEventListener.prototype.callback\r\n );\r\n }\r\n\r\n remove() {\r\n this.element.removeEventListener(\r\n this.eventName,\r\n SelectPaymentMethodEventListener.prototype.callback\r\n );\r\n }\r\n}\r\n","//=> https://developers.google.com/analytics/devguides/collection/ga4/reference/events#add_shipping_info\r\n\r\nclass SelectShippingEventListener {\r\n // Language: javascript\r\n // Path: SelectShippingEventListener.js\r\n // Compare this snippet from EventListener.js:\r\n\r\n get ShippingName() {\r\n return \".gtm-shipping-info\";\r\n }\r\n get CheckoutProducts() {\r\n return \".gtm-checkout-products\";\r\n }\r\n get CheckoutCart() {\r\n return \".gtm-checkout-cart\";\r\n }\r\n get DefaultEventName() {\r\n return \"click\";\r\n }\r\n\r\n constructor(\r\n element,\r\n eventName = SelectShippingEventListener.prototype.DefaultEventName\r\n ) {\r\n this.element = element;\r\n this.eventName = eventName;\r\n }\r\n callback() {\r\n const dataLayer = new DataLayer();\r\n dataLayer.clear();\r\n var shippingName;\r\n var totalPrice;\r\n var items = [];\r\n var currency;\r\n\r\n var shippings = document.querySelectorAll(\r\n SelectShippingEventListener.prototype.ShippingName\r\n );\r\n var checkoutProducts = document.querySelectorAll(\r\n SelectShippingEventListener.prototype.CheckoutProducts\r\n );\r\n\r\n for (let index = 0; index < shippings.length; index++) {\r\n if (shippings[index].checked) {\r\n shippingName = shippings[index].dataset.cargo;\r\n }\r\n }\r\n\r\n var checkoutCart = document.querySelector(\r\n SelectShippingEventListener.prototype.CheckoutCart\r\n );\r\n\r\n for (var i = 0; i < checkoutProducts.length; i++) {\r\n var cartItem = checkoutProducts[i];\r\n var analyticsData = cartItem.dataset.analytics\r\n ? JSON.parse(cartItem.dataset.analytics)\r\n : null;\r\n\r\n if (analyticsData && cartItem.dataset) {\r\n var analticsDataProducts = analyticsData.products\r\n ? analyticsData.products[0]\r\n : null;\r\n totalPrice = checkoutCart.dataset.carttotal;\r\n currency = checkoutCart.dataset.cartcurrency;\r\n\r\n var item = {\r\n item_id: analticsDataProducts.code,\r\n item_name: analticsDataProducts.name,\r\n item_brand: analticsDataProducts.brand,\r\n item_category: analticsDataProducts.category,\r\n };\r\n\r\n if (analticsDataProducts.categories) {\r\n var splitCategories =\r\n analticsDataProducts.categories.split(\";\");\r\n for (var j = 0; j < splitCategories.length; j++) {\r\n if (j == 0) {\r\n item[\"item_category\"] = splitCategories[j];\r\n } else {\r\n item[\"item_category\" + j] = splitCategories[j];\r\n }\r\n }\r\n }\r\n\r\n items.push(item);\r\n }\r\n }\r\n\r\n if (items.length > 0) {\r\n SendData(dataLayer);\r\n }\r\n\r\n function SendData(dataLayer) {\r\n dataLayer\r\n .push({\r\n event: \"add_shipping_info\",\r\n ecommerce: {\r\n currency: currency,\r\n value: totalPrice,\r\n shipping_tier: shippingName,\r\n items: items,\r\n },\r\n })\r\n .then(() => {\r\n setTimeout(() => {\r\n var instanceActivate = new ActivateGtm();\r\n instanceActivate.activateChangeShipping(false);\r\n }, 1000);\r\n console.log(\"GTM pushed add_shipping_info event\");\r\n })\r\n .catch((error) => {\r\n console.warn(\"GTM error add_shipping_info event\", error);\r\n });\r\n\r\n if (typeof gtag !== \"undefined\" && !!gtag) {\r\n gtag(\"event\", \"add_shipping_info\", {\r\n event_category: \"Enhanced Ecommerce\",\r\n event_label: \"add shipping info\",\r\n value: totalPrice,\r\n currency: currency,\r\n shipping_tier: shippingName,\r\n items: items,\r\n });\r\n }\r\n }\r\n }\r\n\r\n listen() {\r\n this.element.addEventListener(\r\n this.eventName,\r\n SelectShippingEventListener.prototype.callback\r\n );\r\n }\r\n\r\n remove() {\r\n this.element.removeEventListener(\r\n this.eventName,\r\n SelectShippingEventListener.prototype.callback\r\n );\r\n }\r\n}\r\n","class ProductListViewEventListener {\r\n // Language: javascript\r\n // Path: ProductListViewEventListener.js\r\n // Compare this snippet from EventListener.js:\r\n\r\n get ProductList() {\r\n return \".gtm-product-list\";\r\n }\r\n get AllDetailProductSelector() {\r\n return \"gtm-add-to-cart\";\r\n }\r\n get DefaultEventName() {\r\n return \"click\";\r\n }\r\n get AddTypes() {\r\n return {\r\n category_product_list: \"Category Product List\",\r\n related_product_list: \"Related Product List\",\r\n lastview_product_list: \"LastView Product List\",\r\n product_collection: \"Product Collection\",\r\n };\r\n }\r\n\r\n constructor(element, eventName = this.DefaultEventName) {\r\n this.element = element;\r\n this.eventName = eventName;\r\n }\r\n\r\n callback() {\r\n const dataLayer = new DataLayer();\r\n dataLayer.clear();\r\n var type = this.element.dataset.addtype || \"category_product_list\";\r\n var typeName = ProductSelectItemListener.prototype.AddTypes[type];\r\n\r\n var allProduct =\r\n this.element.getElementsByClassName(\"gtm-product-click\");\r\n var allProductArry = [...allProduct];\r\n var items = [];\r\n const key = \"code\";\r\n const arrayUniqueByKey = [\r\n ...new Map(\r\n allProductArry.map((item) => [item.dataset[key], item])\r\n ).values(),\r\n ];\r\n\r\n for (const product of arrayUniqueByKey) {\r\n var analyticsData = product.dataset.analytics\r\n ? JSON.parse(product.dataset.analytics)\r\n : null;\r\n if (analyticsData && product.dataset) {\r\n var analticsDataProducts = analyticsData.products\r\n ? analyticsData.products[0]\r\n : null;\r\n\r\n var price = Number(\r\n product.dataset.price.replace(\",\", \".\")\r\n ).toFixed(2);\r\n var pricewithdiscount = Number(\r\n product.dataset.priceWithDiscount.replace(\",\", \".\")\r\n ).toFixed(2);\r\n var item = {\r\n item_id: analticsDataProducts.code,\r\n item_name: analticsDataProducts.name,\r\n currency: analticsDataProducts.currency,\r\n item_brand: analticsDataProducts.brand,\r\n item_category: analticsDataProducts.category,\r\n price: pricewithdiscount,\r\n quantity: analticsDataProducts.quantity,\r\n };\r\n\r\n if (analticsDataProducts.categories) {\r\n var splitCategories =\r\n analticsDataProducts.categories.split(\";\");\r\n for (var j = 0; j < splitCategories.length; j++) {\r\n if (j == 0) {\r\n item[\"item_category\"] = splitCategories[j];\r\n } else {\r\n item[\"item_category\" + j] = splitCategories[j];\r\n }\r\n }\r\n }\r\n\r\n if (price != pricewithdiscount) {\r\n item[\"price\"] = analticsDataProducts.price;\r\n item[\"discount\"] = (price - pricewithdiscount).toFixed(2);\r\n }\r\n\r\n items.push(item);\r\n }\r\n }\r\n\r\n if (items.length > 0) {\r\n SendData(dataLayer);\r\n }\r\n\r\n function SendData(dataLayer) {\r\n dataLayer\r\n .push({\r\n event: \"view_item_list\",\r\n ecommerce: {\r\n item_list_id: type,\r\n item_list_name: typeName,\r\n items: items,\r\n },\r\n })\r\n .then(() => {\r\n console.log(\"GTM pushed view_item_list event\");\r\n setTimeout(() => {\r\n var instanceActivate = new ActivateGtm();\r\n instanceActivate.activateRemoveFromCart();\r\n }, 2000);\r\n })\r\n .catch((error) => {\r\n console.warn(\"GTM error view_item_list event\", error);\r\n });\r\n\r\n if (typeof gtag !== \"undefined\" && !!gtag) {\r\n gtag(\"event\", \"view_item_list\", {\r\n event_category: \"Enhanced Ecommerce\",\r\n event_label: \"view item list\",\r\n item_list_id: type,\r\n item_list_name: typeName,\r\n items: items,\r\n });\r\n }\r\n }\r\n }\r\n\r\n listen() {\r\n this.element.addEventListener(\r\n this.eventName,\r\n ProductListViewEventListener.prototype.callback\r\n );\r\n }\r\n\r\n remove() {\r\n this.element.removeEventListener(\r\n this.eventName,\r\n ProductListViewEventListener.prototype.callback\r\n );\r\n }\r\n}\r\n","class ProductSelectItemListener {\r\n // Language: javascript\r\n // Path: ProductSelectItemListener.js\r\n // Compare this snippet from EventListener.js:\r\n\r\n get ProductList() {\r\n return \".gtm-product-list\";\r\n }\r\n get AllDetailProductSelector() {\r\n return \"gtm-add-to-cart\";\r\n }\r\n get DefaultEventName() {\r\n return \"click\";\r\n }\r\n get AddTypes() {\r\n return {\r\n category_product_list: \"Category Product List\",\r\n related_product_list: \"Related Product List\",\r\n lastview_product_list: \"LastView Product List\",\r\n };\r\n }\r\n\r\n constructor(element, eventName = this.DefaultEventName) {\r\n this.element = element;\r\n this.eventName = eventName;\r\n }\r\n\r\n callback() {\r\n var addtype = document.querySelector(\r\n ProductSelectItemListener.prototype.ProductList\r\n )\r\n ? document.querySelector(\r\n ProductSelectItemListener.prototype.ProductList\r\n ).dataset.addtype\r\n : null;\r\n\r\n var typeName = ProductSelectItemListener.prototype.AddTypes[addtype];\r\n const dataLayer = new DataLayer();\r\n dataLayer.clear();\r\n var analyticsData = this.dataset.analytics\r\n ? JSON.parse(this.dataset.analytics)\r\n : null;\r\n\r\n if (analyticsData && this.dataset) {\r\n var analticsDataProducts = analyticsData.products\r\n ? analyticsData.products[0]\r\n : null;\r\n var item_list_id = addtype ? addtype : \"base\";\r\n\r\n var price = Number(\r\n analticsDataProducts.price\r\n ? analticsDataProducts.price.replace(\",\", \".\")\r\n : this.dataset.price.replace(\",\", \".\")\r\n ).toFixed(2);\r\n var pricewithdiscount = Number(\r\n analticsDataProducts.pricewithdiscount\r\n ? analticsDataProducts.pricewithdiscount.replace(\",\", \".\")\r\n : this.dataset.priceWithDiscount.replace(\",\", \".\")\r\n ).toFixed(2);\r\n\r\n var item = {\r\n item_id: this.dataset.code\r\n ? this.dataset.code\r\n : analticsDataProducts.code,\r\n item_name: analticsDataProducts.name,\r\n currency: analticsDataProducts.currency,\r\n item_brand: analticsDataProducts.brand,\r\n item_category: analticsDataProducts.category,\r\n item_list_id: item_list_id,\r\n price: pricewithdiscount,\r\n quantity: analticsDataProducts.quantity,\r\n };\r\n if (analticsDataProducts.categories) {\r\n var splitCategories =\r\n analticsDataProducts.categories.split(\";\");\r\n for (var i = 0; i < splitCategories.length; i++) {\r\n if (i == 0) {\r\n item[\"item_category\"] = splitCategories[i];\r\n } else {\r\n item[\"item_category\" + i] = splitCategories[i];\r\n }\r\n }\r\n }\r\n if (this.dataset.addtype) {\r\n item[\"item_list_id\"] = this.dataset.addtype;\r\n }\r\n\r\n if (this.dataset.variant) {\r\n var variant = JSON.parse(this.dataset.variant);\r\n if (variant) {\r\n item[\"item_variant\"] = Object.values(variant).join(\",\");\r\n }\r\n }\r\n if (price != pricewithdiscount) {\r\n item[\"price\"] = price;\r\n item[\"discount\"] = (price - pricewithdiscount).toFixed(2);\r\n }\r\n\r\n dataLayer\r\n .push({\r\n // eslint-disable-line\r\n event: \"select_item\",\r\n item_list_id: item_list_id,\r\n item_list_name: typeName,\r\n ecommerce: {\r\n items: [item],\r\n },\r\n })\r\n .then(() => {\r\n console.log(\"GTM pushed select_item event\");\r\n setTimeout(() => {\r\n var instanceActivate = new ActivateGtm();\r\n instanceActivate.activateRemoveFromCart();\r\n }, 1000);\r\n })\r\n .catch((error) => {\r\n console.warn(\"GTM error select_item event\", error);\r\n });\r\n\r\n if (typeof gtag !== \"undefined\" && !!gtag) {\r\n gtag(\"event\", \"select_item\", {\r\n event_category: \"Enhanced Ecommerce\",\r\n event_label: \"add select_item cart\",\r\n item_list_id: item_list_id,\r\n item_list_name: typeName,\r\n items: [item],\r\n });\r\n }\r\n }\r\n }\r\n\r\n listen() {\r\n this.element.addEventListener(\r\n this.eventName,\r\n ProductSelectItemListener.prototype.callback\r\n );\r\n }\r\n\r\n remove() {\r\n this.element.removeEventListener(\r\n this.eventName,\r\n ProductSelectItemListener.prototype.callback\r\n );\r\n }\r\n}\r\n","class ProductViewEventListener {\r\n // Language: javascript\r\n // Path: ProductViewEventListener.js\r\n // Compare this snippet from EventListener.js:\r\n\r\n get ProductAddCart() {\r\n return \".product-add-to-cart\";\r\n }\r\n get AllDetailProductSelector() {\r\n return \"gtm-add-to-cart\";\r\n }\r\n get DefaultEventName() {\r\n return \"click\";\r\n }\r\n\r\n constructor(element, eventName = this.DefaultEventName) {\r\n this.element = element;\r\n this.eventName = eventName;\r\n }\r\n\r\n callback() {\r\n const dataLayer = new DataLayer();\r\n dataLayer.clear();\r\n\r\n var addCartProduct = document.querySelector(this.ProductAddCart);\r\n\r\n var allProduct = addCartProduct\r\n ? addCartProduct.getElementsByClassName(\r\n this.AllDetailProductSelector\r\n )\r\n : document.getElementsByClassName(this.AllDetailProductSelector);\r\n\r\n var allProductArry = [...allProduct];\r\n var items = [];\r\n var headPrice = 0.0;\r\n const key = \"code\";\r\n const arrayUniqueByKey = [\r\n ...new Map(\r\n allProductArry.map((item) => [item.dataset[key], item])\r\n ).values(),\r\n ];\r\n\r\n for (const product of arrayUniqueByKey) {\r\n if (\r\n arrayUniqueByKey.length == 1 ||\r\n !product.classList.value.contains(\"main buton-main\")\r\n ) {\r\n var analyticsData = product.dataset.analytics\r\n ? JSON.parse(product.dataset.analytics)\r\n : null;\r\n if (analyticsData && product.dataset) {\r\n var analticsDataProducts = analyticsData.products\r\n ? analyticsData.products[0]\r\n : null;\r\n\r\n var price = Number(\r\n product.dataset.price.replace(\",\", \".\")\r\n ).toFixed(2);\r\n var pricewithdiscount = Number(\r\n product.dataset.priceWithDiscount.replace(\",\", \".\")\r\n ).toFixed(2);\r\n headPrice = pricewithdiscount;\r\n var quantity = product.classList.value.contains(\r\n \"out-of-stock\"\r\n )\r\n ? 0\r\n : product.dataset.quantity;\r\n var item = {\r\n item_id: product.dataset.code,\r\n item_name: analticsDataProducts.name,\r\n currency: analticsDataProducts.currency,\r\n item_brand: analticsDataProducts.brand,\r\n item_category: analticsDataProducts.category,\r\n price: pricewithdiscount,\r\n quantity: quantity,\r\n };\r\n\r\n if (analticsDataProducts.categories) {\r\n var splitCategories =\r\n analticsDataProducts.categories.split(\";\");\r\n for (var j = 0; j < splitCategories.length; j++) {\r\n if (j == 0) {\r\n item[\"item_category\"] = splitCategories[j];\r\n } else {\r\n item[\"item_category\" + j] = splitCategories[j];\r\n }\r\n }\r\n }\r\n\r\n if (price != pricewithdiscount) {\r\n item[\"price\"] = analticsDataProducts.price;\r\n item[\"discount\"] = (price - pricewithdiscount).toFixed(\r\n 2\r\n );\r\n }\r\n if (product.dataset.variant) {\r\n var variant = JSON.parse(product.dataset.variant);\r\n if (variant) {\r\n item[\"item_variant\"] =\r\n Object.values(variant).join(\",\");\r\n }\r\n }\r\n items.push(item);\r\n }\r\n }\r\n }\r\n\r\n if (items.length > 0) {\r\n SendData(dataLayer);\r\n }\r\n\r\n function SendData(dataLayer) {\r\n dataLayer\r\n .push({\r\n event: \"view_item\",\r\n ecommerce: {\r\n currency: currency,\r\n value: headPrice,\r\n items: items,\r\n },\r\n })\r\n .then(() => {\r\n console.log(\"GTM pushed view_item event\");\r\n setTimeout(() => {\r\n var instanceActivate = new ActivateGtm();\r\n instanceActivate.activateRemoveFromCart();\r\n }, 2000);\r\n })\r\n .catch((error) => {\r\n console.warn(\"GTM error view_item event\", error);\r\n });\r\n\r\n if (typeof gtag !== \"undefined\" && !!gtag) {\r\n gtag(\"event\", \"view_item\", {\r\n event_category: \"Enhanced Ecommerce\",\r\n event_label: \"view item\",\r\n value: headPrice,\r\n currency: currency,\r\n items: items,\r\n });\r\n }\r\n }\r\n }\r\n\r\n listen() {\r\n this.element.addEventListener(\r\n this.eventName,\r\n ProductViewEventListener.prototype.callback\r\n );\r\n }\r\n\r\n remove() {\r\n this.element.removeEventListener(\r\n this.eventName,\r\n ProductViewEventListener.prototype.callback\r\n );\r\n }\r\n}\r\n"]}