{"version":3,"sources":["ActivateGtm.js","Datalayer/Datalayer.js","Helper/ElementExist.js","Helper/GenericEventListener.js","EventListener/ProductViewsIntractions/ProductListViewEventListener.js","EventListener/ProductViewsIntractions/ProductSelectItemListener.js","EventListener/ProductViewsIntractions/ProductViewEventListener.js","EventListener/Promotions/SelectPromotionEventListener.js","EventListener/CheckoutIntractions/BeginCheckoutEventListener.js","EventListener/CheckoutIntractions/PurchaseCheckoutEventListener.js","EventListener/CheckoutIntractions/SelectPaymentMethodEventListener.js","EventListener/CheckoutIntractions/SelectShippingEventListener.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","ProductList","AllDetailProductSelector","DefaultEventName","AddTypes","category_product_list","related_product_list","lastview_product_list","product_collection","eventName","clear","type","dataset","addtype","typeName","prototype","allProductArry","getElementsByClassName","items","arrayUniqueByKey","Map","map","item","values","product","analyticsData","analytics","JSON","parse","analticsDataProducts","products","price","Number","replace","toFixed","pricewithdiscount","priceWithDiscount","item_id","code","item_name","name","currency","item_brand","brand","item_category","category","quantity","categories","splitCategories","split","j","event","ecommerce","item_list_id","item_list_name","setTimeout","warn","event_category","event_label","SendData","addEventListener","removeEventListener","variant","Object","join","ProductAddCart","addCartProduct","headPrice","classList","value","contains","CheckoutProducts","cartItems","couponCode","couponName","pushItems","checkoutProducts","quantites","coupon","cartItem","parseFloat","promotion_id","promotion_name","paymentSuccessData","paymentProducts","Analytics","affiliation","Quantity","transaction_id","Total","tax","PaymentMethod","CheckoutCart","methodName","totalPrice","bank","checkoutCart","carttotal","cartcurrency","payment_type","ShippingName","shippingName","shippings","index","checked","cargo","shipping_tier","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","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 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","//=> 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"]}