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