{"version":3,"sources":["ActivateGtm.js","Datalayer/Datalayer.js","Helper/ElementExist.js","Helper/GenericEventListener.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","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"],"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","DefaultEventName","eventName","clear","items","checkoutProducts","prototype","cartItem","analyticsData","dataset","analytics","JSON","parse","analticsDataProducts","products","price","Number","replace","toFixed","pricewithdiscount","item","item_id","code","item_name","name","item_brand","brand","item_category","category","currency","quantity","categories","splitCategories","split","j","variant","Object","values","join","event","ecommerce","warn","event_category","event_label","SendData","addEventListener","removeEventListener","paymentSuccessData","paymentProducts","Analytics","affiliation","Quantity","transaction_id","value","Total","tax","PaymentMethod","CheckoutCart","methodName","totalPrice","bank","checkoutCart","carttotal","cartcurrency","payment_type","setTimeout","ShippingName","shippingName","shippings","index","checked","cargo","shipping_tier","ProductList","AllDetailProductSelector","AddTypes","category_product_list","related_product_list","lastview_product_list","product_collection","type","addtype","typeName","allProductArry","getElementsByClassName","arrayUniqueByKey","Map","map","product","priceWithDiscount","item_list_id","item_list_name","ProductAddCart","addCartProduct","headPrice","classList","contains","cartItems","couponCode","couponName","pushItems","quantites","coupon","parseFloat","promotion_id","promotion_name","addToCartAmount","id","cartAmount","$","val","AllCartRemoveTag","AllCartRemoveQuantitiesTag","AllCartRemoveSelector","SingleProductQunatityTag","AllCartRemove","total","className","includes","that","parent","find","SingleProductRemove","ProductSearchButton","ProductSearchText","search_key","search_term","method"],"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#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","//=> 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"]}