{"version":3,"sources":["webpack:///./cartridges/app_designholding/cartridge/client/default/js/components/gtm-events/gtm-events.js","webpack:///./cartridges/app_designholding/cartridge/client/default/js/components/gtm-events/index.js","webpack:///./cartridges/app_designholding/cartridge/client/default/js/utilities/gtmFooterSubscribeButtonClick.js","webpack:///./cartridges/app_designholding/cartridge/client/default/js/utilities/parentUntil.js","webpack:///./cartridges/app_designholding/cartridge/client/default/js/utilities/parse-json/parse-json.js","webpack:///./cartridges/app_designholding/cartridge/client/default/js/utilities/parse-json/index.js","webpack:///./cartridges/app_designholding/cartridge/client/default/js/utilities/updateGtmListingFiltersEvents.js","webpack:///./cartridges/app_designholding/cartridge/client/default/js/utilities/updateGtmListingSortEvents.js"],"names":["JS_HOOK_PRODUCT_TILE","JS_HOOK_PROMOTION","JS_HOOK_GTM_CHECKOUT_CLICK","JS_HOOK_GTM_PAYMENT_MODERNIZATION_CLICK","JS_HOOK_GTM_CHECKOUT_CLICK_DATA","JS_HOOK_GTM_CHECKOUT_BEGIN_DATA","JS_HOOK_VIEW_CART","JS_HOOK_UPDATE_CART_PRODUCT_QUANTITY","JS_HOOK_PAYMENT_OPTION","JS_HOOK_PAYMENT_OPTION_CUSTOM","JS_HOOK_CLICK_HEADER_LOGO","JS_HOOK_CLICK_PROFESSIONAL","JS_HOOK_CLICK_ICON_LIST_ITEM","JS_HOOK_MEGA_MENU_ITEM","JS_HOOK_CATEGORY_NAME","JS_HOOK_MEGA_MENU_CATEGORY_ITEM","JS_HOOK_HERO_BUTTON","JS_HOOK_BUTTON_LABEL","JS_HOOK_BASIC_TEXT","JS_HOOK_SLIDER_SLIDES","JS_HOOK_SLIDE_TITLE","JS_HOOK_CLICK_SHOP_BY_ROOM_GTM","JS_HOOK_PRODUCT_TILE_BUTTON_TRIGGER","JS_HOOK_PRODUCT_TILE_BUTTON","JS_HOOK_SEO_DESCRIPTION","JS_HOOK_TOGGLE","JS_HOOK_PLP_USER_TYPE","JS_HOOK_FOOTER_CHANGE_LANGUAGE","JS_HOOK_FOOTER_CHANGE_COUNTRY","JS_HOOK_COUNTRY_SUBMIT","JS_HOOK_COUNTRY_SELECTOR","JS_HOOK_LANGUAGE_SELECTOR","JS_HOOK_PRODUCT_ATTRIBUTE_TITLE","JS_HOOK_PDP_USER_TYPE","JS_HOOK_SEARCH_INPUT","JS_HOOK_CLICK_TRADE_PROJECT_GTM","JS_HOOK_ACCORDION_ITEM","changeVarioationAttributeBySelect","element","attributeHook","target","matches","eventName","el","closest","option","options","selectedIndex","textContent","replace","trim","product","document","querySelector","dataset","productName","Events","$trigger","data","event","changeVarioationAttributeByButton","tagName","GTMEvents","constructor","pageType","window","gtmData","pagePathname","location","pathname","applicablePages","impressionsEvent","pageDesignerEvent","bindEvents","includes","productTileEvents","pageDesignerEvents","cartEvents","checkoutEvents","updateCartProductQuantity","paymentEvents","paymentModernization","clickHeaderLogo","clickProfessional","clickIconListItem","clickMenuItem","clickHeroButton","clickBasickText","clickSliderGTMClick","clickRoom","clickTooltop","clickSEODescription","clickPlpUserType","clickFooterItem","clickFooterSocial","changeFooterLanguage","changeFooterCountryLanguage","changeFooterCountry","clickPDPAccordion","changePDPModel","changePDPColor","clickSparePartsPDP","clickDownloadPDP","clickImageZoomPDP","clickPDPUserType","searchNotFound","clickTradeBecomeMember","clickSearchResult","clickTradeProject","clickFAQ","clickStory","changePDPColorBB","updateGtmListingFiltersEvents","updateGtmListingSortEvents","gtmFooterSubscribeButtonClick","$on","paymentInputs","querySelectorAll","paymentCustomInputs","paymentAll","selected","find","checked","paymentMethodId","value","savePaymentMethod","forEach","addEventListener","headerLogoElement","locationURL","href","URL","professionalElement","iconListItems","elText","menuItems","menuCategoryItems","isMobile","getAttribute","menuItemElement","menuItemName","englishLabel","e","stopPropagation","heroButton","hasAttribute","banner","innerText","cta","body","classList","contains","basicTextButtons","basicTextButtonContainer","parentUntil","blockName","block_name","sliders","slider","slides","slide","sliderContainer","sliderName","link","zone","roomName","productTileButtonTriggers","productTileButtonTrigger","productTileButton","seoDescriptions","seoDescriptionBtn","seoDescriptionPageType","action","plpUserTypeButtons","plpUserType","footerItems","firstElementChild","footerSocials","socialName","toLowerCase","social","footerLanguages","footerCountries","countrySubmitBtn","choosedCountry","choosedLanguage","displayValue","fileName","file_name","order","pdpUserTypeButtons","pdpUserType","isShowAll","windowGtmEvents","gtmEvents","term","pageViewEvent","pageName","userType","modalSearch","querystring","urlParams","URLSearchParams","get","position","parentNode","tradeProjects","faqAccordionContainer","dataPoint","ga4PaymentObj","paymentType","tempGa4PaymentObj","JSON","parse","ecommerce","payment_type","error","ga4Data","modernization","gtmObj","ga4Obj","viewCart","updateCartProductQuantitySelects","length","updateCartProductQuantitySelect","lineItem","productCurrency","currency","productPrice","price","productQuantity","selectedOptions","productValue","quantity","fullGtmObj","items","productTiles","impressions","productTile","gtmObjParsed","ga4ObjParsed","impressionObj","click","products","list","actionField","push","itemObj","promotions","map","item","parseJSON","gtmImpressionsEvent","gtm","promo","promoClick","currentTarget","promoView","eventFromBackend","dataObj","eventsObj","Array","isArray","filterEvent","key","page","_","subscribe","newsletterSubscriptionForm","user_type","subscribeButton","selector","className","substring","ID","id","attribute","slice","toUpperCase","json","defaultValue","parsed","JS_HOOK_PAGED_REFINEMENT_NAVIGATION","JS_HOOK_REFINEMENT_FILTER","JS_HOOK_REFINEMENT_VALUE","refinementNavigation","refinementFilters","label","section","JS_HOOK_REFINEMENT_SORT","refinementSort","refinementSortSelect","refinementSortButtons","refinementSortButton","ferinementSortButtonLabel","refinementSortSelectIndex","selectedRefinement","selectedRefinementLabel"],"mappings":"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","file":"js/GTMEvents.js","sourcesContent":["import parseJSON from '@utilities/parse-json';\nimport Events from '@utilities/events';\nimport updateGtmListingFiltersEvents from '@utilities/updateGtmListingFiltersEvents';\nimport updateGtmListingSortEvents from '@utilities/updateGtmListingSortEvents';\nimport parentUntil from '@utilities/parentUntil';\nimport gtmFooterSubscribeButtonClick from '@utilities/gtmFooterSubscribeButtonClick';\n\n// Constants\nconst JS_HOOK_PRODUCT_TILE = '[js-hook-product-tile]:not([js-hook-gtm-id])';\nconst JS_HOOK_PROMOTION = '[js-hook-gtm-promotion]';\nconst JS_HOOK_GTM_CHECKOUT_CLICK = '[js-hook-gtm-checkout-click]';\nconst JS_HOOK_GTM_PAYMENT_MODERNIZATION_CLICK = '[js-hook-gtm-payment-modernization-click]';\nconst JS_HOOK_GTM_CHECKOUT_CLICK_DATA = '[js-hook-checkout-gtm-data]';\nconst JS_HOOK_GTM_CHECKOUT_BEGIN_DATA = '[js-hook-gtm-checkout-begin-data]';\nconst JS_HOOK_VIEW_CART = '[js-hook-view-cart]';\nconst JS_HOOK_UPDATE_CART_PRODUCT_QUANTITY = '[js-hook-update-cart-product-quantity]';\nconst JS_HOOK_PAYMENT_OPTION = '[js-hook-payment-method-input]';\nconst JS_HOOK_PAYMENT_OPTION_CUSTOM = '[js-hook-payment-method-custom-input]';\nconst JS_HOOK_CLICK_HEADER_LOGO = '[js-hook-click-header-logo]';\nconst JS_HOOK_CLICK_PROFESSIONAL = '[js-hook-click-professional]';\nconst JS_HOOK_CLICK_ICON_LIST_ITEM = '[js-hook-icon-list-item]';\nconst JS_HOOK_MEGA_MENU_ITEM = '[js-hook-mega-menu-item]';\nconst JS_HOOK_CATEGORY_NAME = '[js-hook-category-name]';\nconst JS_HOOK_MEGA_MENU_CATEGORY_ITEM = '[js-hook-mega-menu-category-item]';\nconst JS_HOOK_HERO_BUTTON = '[js-hook-hero-button]';\nconst JS_HOOK_BUTTON_LABEL = '[js-hook-button-label]';\nconst JS_HOOK_BASIC_TEXT = '[js-hook-basic-text]';\nconst JS_HOOK_SLIDER_SLIDES = '[js-hook-slider-slides]';\nconst JS_HOOK_SLIDE_TITLE = '[js-hook-slide-title]';\nconst JS_HOOK_CLICK_SHOP_BY_ROOM_GTM = '[js-hook-click-shop-by-room-gtm]';\nconst JS_HOOK_PRODUCT_TILE_BUTTON_TRIGGER = '[js-hook-product-tile-button-trigger]';\nconst JS_HOOK_PRODUCT_TILE_BUTTON = '[js-hook-product-tile-button]';\nconst JS_HOOK_SEO_DESCRIPTION = '[js-hook-seo-description]';\nconst JS_HOOK_TOGGLE = '[js-hook-toggle]';\nconst JS_HOOK_PLP_USER_TYPE = '[js-hook-plp-user-type]';\nconst JS_HOOK_FOOTER_CHANGE_LANGUAGE = '[js-hook-footer-change-language]';\nconst JS_HOOK_FOOTER_CHANGE_COUNTRY = '[js-hook-footer-change-country]';\nconst JS_HOOK_COUNTRY_SUBMIT = '[js-hook-country-submit]';\nconst JS_HOOK_COUNTRY_SELECTOR = '[js-hook-country-selector]';\nconst JS_HOOK_LANGUAGE_SELECTOR = '[js-hook-language-selector]';\nconst JS_HOOK_PRODUCT_ATTRIBUTE_TITLE = '[js-hook-product-attribute-title]';\nconst JS_HOOK_PDP_USER_TYPE = '[js-hook-pdp-user-type]';\nconst JS_HOOK_SEARCH_INPUT = '[js-hook-search-input]';\nconst JS_HOOK_CLICK_TRADE_PROJECT_GTM = '[js-hook-click-trade-project-gtm]';\nconst JS_HOOK_ACCORDION_ITEM = '[js-hook-accordion-item]';\n\n/**\n * Change variation attribute by select change\n * @param {Object} element\n * @param {String} attributeHook\n * @return {Void}\n */\nfunction changeVarioationAttributeBySelect(element, attributeHook) {\n // early return\n if (!element || !attributeHook) return;\n\n if (element.target.matches(`[variation-attribute-hook=\"${attributeHook}\"], [variation-attribute-hook=\"${attributeHook}\"] *`)) {\n const eventName = attributeHook === 'js-hook-model-info' ? 'click_model' : 'change_colour';\n const el = element.target.closest(`[variation-attribute-hook=\"${attributeHook}\"]`);\n const option = el.options[el.selectedIndex].textContent.replace(/\\n/g, '').trim();\n const product = document.querySelector(JS_HOOK_PRODUCT_ATTRIBUTE_TITLE)\n ? document.querySelector(JS_HOOK_PRODUCT_ATTRIBUTE_TITLE).dataset.productName\n : null;\n\n Events.$trigger('gtm::push', {\n data: {\n event: eventName,\n option,\n product\n }\n });\n }\n};\n\n/**\n * Change variation attribute by click on button\n * @param {Object} element\n * @param {String} attributeHook\n * @return {Void}\n */\nfunction changeVarioationAttributeByButton(element, attributeHook) {\n // early return\n if (!element || !attributeHook) return;\n\n if (\n element.target.matches(`[variation-attribute-hook=\"${attributeHook}\"], [variation-attribute-hook=\"${attributeHook}\"] *`)\n && element.target.tagName !== 'SELECT'\n ) {\n const eventName = attributeHook === 'js-hook-model-info' ? 'click_model' : 'change_colour';\n const el = element.target.closest(`[variation-attribute-hook=\"${attributeHook}\"]`);\n const option = el.querySelector('.csb__button-label')\n ? el.querySelector('.csb__button-label').textContent.replace(/\\n/g, '').trim()\n : null;\n const product = document.querySelector(JS_HOOK_PRODUCT_ATTRIBUTE_TITLE)\n ? document.querySelector(JS_HOOK_PRODUCT_ATTRIBUTE_TITLE).dataset.productName\n : null;\n\n Events.$trigger('gtm::push', {\n data: {\n event: eventName,\n option,\n product\n }\n });\n }\n};\n\nclass GTMEvents {\n constructor() {\n this.pageType = window.gtmData?.pageType;\n this.pagePathname = document.location.pathname;\n\n this.applicablePages = {\n impressionsEvent: ['checkout'],\n pageDesignerEvent: ['checkout']\n };\n\n this.bindEvents();\n\n if (!this.applicablePages.impressionsEvent.includes(this.pageType)) {\n GTMEvents.productTileEvents();\n }\n\n if (!this.applicablePages.pageDesignerEvent.includes(this.pageType)) {\n GTMEvents.pageDesignerEvents();\n }\n GTMEvents.cartEvents();\n GTMEvents.checkoutEvents();\n GTMEvents.updateCartProductQuantity();\n GTMEvents.paymentEvents();\n GTMEvents.paymentModernization();\n GTMEvents.clickHeaderLogo();\n GTMEvents.clickProfessional();\n GTMEvents.clickIconListItem();\n GTMEvents.clickMenuItem();\n GTMEvents.clickHeroButton();\n GTMEvents.clickBasickText();\n GTMEvents.clickSliderGTMClick();\n GTMEvents.clickRoom();\n GTMEvents.clickTooltop();\n GTMEvents.clickSEODescription();\n GTMEvents.clickPlpUserType();\n GTMEvents.clickFooterItem();\n GTMEvents.clickFooterSocial();\n GTMEvents.changeFooterLanguage();\n GTMEvents.changeFooterCountryLanguage();\n GTMEvents.changeFooterCountry();\n GTMEvents.clickPDPAccordion();\n GTMEvents.changePDPModel();\n GTMEvents.changePDPColor();\n GTMEvents.clickSparePartsPDP();\n GTMEvents.clickDownloadPDP();\n GTMEvents.clickImageZoomPDP();\n GTMEvents.clickPDPUserType();\n GTMEvents.searchNotFound();\n GTMEvents.clickTradeBecomeMember();\n GTMEvents.clickSearchResult();\n GTMEvents.clickTradeProject();\n GTMEvents.clickFAQ();\n GTMEvents.clickStory();\n GTMEvents.changePDPColorBB();\n\n updateGtmListingFiltersEvents();\n updateGtmListingSortEvents();\n gtmFooterSubscribeButtonClick();\n\n Events.$on('adyen-payment::payment-methods-loaded', () => GTMEvents.paymentEvents());\n }\n\n static paymentEvents() {\n const paymentInputs = [...document.querySelectorAll(JS_HOOK_PAYMENT_OPTION)];\n const paymentCustomInputs = [...document.querySelectorAll(JS_HOOK_PAYMENT_OPTION_CUSTOM)];\n const paymentAll = [...paymentInputs, ...paymentCustomInputs];\n const selected = paymentAll.find(el => el.checked);\n\n if (selected) {\n const paymentMethodId = selected.value;\n\n if (paymentMethodId) {\n GTMEvents.savePaymentMethod(paymentMethodId);\n }\n }\n\n paymentAll.forEach((el) => {\n el.addEventListener('change', function () {\n const paymentMethodId = this.value;\n\n if (paymentMethodId) {\n GTMEvents.savePaymentMethod(paymentMethodId);\n }\n });\n });\n }\n\n static clickHeaderLogo() {\n const headerLogoElement = document.querySelector(JS_HOOK_CLICK_HEADER_LOGO);\n\n if (headerLogoElement) {\n const locationURL = window.location.href;\n\n headerLogoElement.addEventListener('click', () => {\n Events.$trigger('gtm::push', {\n data: {\n event: 'click_logo',\n URL: locationURL\n }\n });\n });\n }\n }\n\n static clickProfessional() {\n const professionalElement = document.querySelector(JS_HOOK_CLICK_PROFESSIONAL);\n\n if (professionalElement) {\n const locationURL = window.location.href;\n\n professionalElement.addEventListener('click', () => {\n Events.$trigger('gtm::push', {\n data: {\n event: 'click_professional',\n URL: locationURL\n }\n });\n });\n }\n }\n\n static clickIconListItem() {\n const iconListItems = [...document.querySelectorAll(JS_HOOK_CLICK_ICON_LIST_ITEM)];\n\n if (iconListItems) {\n iconListItems.forEach((el) => {\n let elText = el.querySelector('.icon-list__item-label-text');\n\n elText = elText ? elText.textContent : null;\n\n el.addEventListener('click', () => {\n Events.$trigger('gtm::push', {\n data: {\n event: 'click_top_header',\n option: elText\n }\n });\n });\n });\n }\n }\n\n static clickMenuItem() {\n const menuItems = [...document.querySelectorAll(JS_HOOK_MEGA_MENU_ITEM)];\n const menuCategoryItems = [...document.querySelectorAll(JS_HOOK_MEGA_MENU_CATEGORY_ITEM)];\n\n if (menuItems) {\n menuItems.forEach((el) => {\n const isMobile = el.getAttribute('mobile');\n const menuItemElement = isMobile && isMobile === 'true' ? el : el.querySelector('.button__label');\n const menuItemName = menuItemElement && menuItemElement.dataset.englishLabel\n ? menuItemElement.dataset.englishLabel.replace(/\\n/g, '').trim()\n : null;\n\n el.addEventListener('click', () => {\n Events.$trigger('gtm::push', {\n data: {\n event: 'click_menu',\n option: menuItemName\n }\n });\n });\n });\n }\n\n if (menuCategoryItems) {\n menuCategoryItems.forEach((el) => {\n const menuItemElement = el.querySelector(JS_HOOK_CATEGORY_NAME);\n const menuItemName = menuItemElement && menuItemElement.dataset.englishLabel\n ? menuItemElement.dataset.englishLabel.replace(/\\n/g, '').trim()\n : null;\n\n el.addEventListener('click', (e) => {\n e.stopPropagation();\n Events.$trigger('gtm::push', {\n data: {\n event: 'click_menu',\n option: menuItemName\n }\n });\n });\n });\n }\n }\n\n static clickHeroButton() {\n const heroButton = document.querySelector(JS_HOOK_HERO_BUTTON);\n\n if (heroButton && !heroButton.hasAttribute('js-hook-gtm-click-trade-become-member')) {\n const banner = document.querySelector('.hero__title') ? document.querySelector('.hero__title').innerText : null;\n const cta = heroButton.querySelector(JS_HOOK_BUTTON_LABEL) ? heroButton.querySelector(JS_HOOK_BUTTON_LABEL).innerText : null;\n\n heroButton.addEventListener('click', () => {\n Events.$trigger('gtm::push', {\n data: {\n event: 'click_hero_banner',\n banner,\n cta\n }\n });\n });\n }\n }\n\n static clickBasickText() {\n const body = document.querySelector('body');\n\n if (body.classList.contains('is-homepage')) {\n const basicTextButtons = [...document.querySelectorAll(JS_HOOK_BASIC_TEXT)];\n\n if (basicTextButtons) {\n basicTextButtons.forEach((el) => {\n const cta = el.querySelector(JS_HOOK_BUTTON_LABEL) ? el.querySelector(JS_HOOK_BUTTON_LABEL).innerText : null;\n const basicTextButtonContainer = parentUntil(el, '.o-grid');\n const blockName = basicTextButtonContainer.querySelector('.basic-text__title') ? basicTextButtonContainer.querySelector('.basic-text__title').innerText : 'Homepage Block';\n\n el.addEventListener('click', () => {\n Events.$trigger('gtm::push', {\n data: {\n event: 'click_hp_cta',\n cta,\n block_name: blockName\n }\n });\n });\n });\n }\n }\n }\n\n static clickSliderGTMClick() {\n const body = document.querySelector('body');\n\n if (body.classList.contains('is-homepage')) {\n const sliders = [...document.querySelectorAll(JS_HOOK_SLIDER_SLIDES)];\n\n if (sliders) {\n sliders.forEach((slider) => {\n const slides = [...slider.querySelectorAll('a')];\n\n slides.forEach((slide) => {\n const sliderContainer = parentUntil(slide, '.o-container');\n const sliderName = sliderContainer.querySelector('.slider__title') ? sliderContainer.querySelector('.slider__title').innerText : null;\n const option = slide.querySelector(JS_HOOK_SLIDE_TITLE) ? slide.querySelector(JS_HOOK_SLIDE_TITLE).innerText : null;\n const link = slide.href;\n\n slide.addEventListener('click', () => {\n Events.$trigger('gtm::push', {\n data: {\n event: 'click_slider',\n slider: sliderName,\n option,\n zone: link\n }\n });\n });\n })\n });\n }\n }\n }\n\n static clickRoom() {\n const body = document.querySelector('body');\n\n if (body.classList.contains('is-homepage')) {\n const slides = [...document.querySelectorAll(JS_HOOK_CLICK_SHOP_BY_ROOM_GTM)];\n\n if (slides) {\n slides.forEach((slide) => {\n const roomName = slide.querySelector(JS_HOOK_SLIDE_TITLE) ? slide.querySelector(JS_HOOK_SLIDE_TITLE).innerText : null;\n\n slide.addEventListener('click', () => {\n Events.$trigger('gtm::push', {\n data: {\n event: 'click_hp_room',\n option: roomName\n }\n });\n });\n });\n }\n }\n }\n\n // when clicks on the black button in the bottom right corner of image\n static clickTooltop() {\n const productTileButtonTriggers = [...document.querySelectorAll(JS_HOOK_PRODUCT_TILE_BUTTON_TRIGGER)];\n\n if (productTileButtonTriggers) {\n productTileButtonTriggers.forEach((productTileButtonTrigger) => {\n if (productTileButtonTrigger.classList.contains('product-tile-button__trigger')) {\n const productTileButton = parentUntil(productTileButtonTrigger, JS_HOOK_PRODUCT_TILE_BUTTON);\n const productName = productTileButton.querySelector(JS_HOOK_SLIDE_TITLE) ? productTileButton.querySelector(JS_HOOK_SLIDE_TITLE).innerText : null;\n\n productTileButtonTrigger.addEventListener('click', () => {\n Events.$trigger('gtm::push', {\n data: {\n event: 'click_tooltip',\n option: productName\n }\n });\n });\n }\n });\n }\n }\n\n static clickSEODescription() {\n const seoDescriptions = [...document.querySelectorAll(JS_HOOK_SEO_DESCRIPTION)];\n\n seoDescriptions.forEach(el => {\n const seoDescriptionBtn = el.querySelector(JS_HOOK_TOGGLE);\n\n if (seoDescriptionBtn) {\n const seoDescriptionPageType = el.dataset.pageType;\n\n switch (seoDescriptionPageType) {\n case 'plp':{\n seoDescriptionBtn.addEventListener('click', () => {\n Events.$trigger('gtm::push', {\n data: {\n event: 'listing_click_text'\n }\n });\n });\n\n break;\n }\n case 'pdp':{\n seoDescriptionBtn.addEventListener('click', () => {\n const action = seoDescriptionBtn.getAttribute('aria-expanded') === 'true' ? 'open' : 'close';\n const product = document.querySelector(JS_HOOK_PRODUCT_ATTRIBUTE_TITLE)\n ? document.querySelector(JS_HOOK_PRODUCT_ATTRIBUTE_TITLE).textContent.replace(/\\n/g, '').trim()\n : null;\n\n Events.$trigger('gtm::push', {\n data: {\n event: 'click_pdp_description',\n action,\n product\n }\n });\n });\n\n break;\n }\n default:\n break;\n }\n }\n });\n }\n\n static clickPlpUserType() {\n const plpUserTypeButtons = [...document.querySelectorAll(JS_HOOK_PLP_USER_TYPE)];\n\n plpUserTypeButtons.forEach(el => {\n const plpUserType = el.hasAttribute('js-hook-open-chat') ? 'chat_with_flos' : 'consumer';\n\n el.addEventListener('click', () => {\n Events.$trigger('gtm::push', {\n data: {\n event: 'click_listing_user_type',\n option: plpUserType\n }\n });\n });\n });\n }\n\n static clickFooterItem() {\n const footerItems = [...document.querySelectorAll('.footer__links-list-item')];\n\n footerItems.forEach(el => {\n const option = el.firstElementChild ? el.firstElementChild.textContent.replace(/\\n/g, '').trim() : null;\n\n el.addEventListener('click', () => {\n Events.$trigger('gtm::push', {\n data: {\n event: 'click_footer',\n option\n }\n });\n });\n });\n }\n\n static clickFooterSocial() {\n const footerSocials = [...document.querySelectorAll('.footer__socials-link')];\n\n footerSocials.forEach(el => {\n let {socialName} = el.dataset;\n\n socialName = socialName ? socialName.toLowerCase() : null;\n\n el.addEventListener('click', () => {\n Events.$trigger('gtm::push', {\n data: {\n event: 'click_social',\n social: socialName\n }\n });\n });\n });\n }\n\n static changeFooterLanguage() {\n const footerLanguages = [...document.querySelectorAll(JS_HOOK_FOOTER_CHANGE_LANGUAGE)];\n\n footerLanguages.forEach(el => {\n const option = el.querySelector(JS_HOOK_BUTTON_LABEL)\n ? el.querySelector(JS_HOOK_BUTTON_LABEL).textContent.replace(/\\n/g, '').trim()\n : null;\n\n el.addEventListener('click', () => {\n Events.$trigger('gtm::push', {\n data: {\n event: 'change_language',\n option\n }\n });\n });\n });\n }\n\n static changeFooterCountry() {\n const footerCountries = [...document.querySelectorAll(JS_HOOK_FOOTER_CHANGE_COUNTRY)];\n\n footerCountries.forEach(el => {\n const option = el.querySelector(JS_HOOK_BUTTON_LABEL)\n ? el.querySelector(JS_HOOK_BUTTON_LABEL).textContent.replace(/\\n/g, '').trim()\n : null;\n\n el.addEventListener('click', () => {\n Events.$trigger('gtm::push', {\n data: {\n event: 'change_country',\n option\n }\n });\n });\n });\n }\n\n static changeFooterCountryLanguage() {\n const countrySubmitBtn = document.querySelector(JS_HOOK_COUNTRY_SUBMIT);\n\n if (countrySubmitBtn) {\n countrySubmitBtn.addEventListener('click', () => {\n if (countrySubmitBtn.href) {\n let choosedCountry = document.querySelector(JS_HOOK_COUNTRY_SELECTOR);\n let choosedLanguage = document.querySelector(JS_HOOK_LANGUAGE_SELECTOR);\n\n // data normalization\n choosedCountry = choosedCountry.options[choosedCountry.selectedIndex].textContent.replace(/\\n/g, '').trim();\n choosedLanguage = choosedLanguage.options[choosedLanguage.selectedIndex].textContent.replace(/\\n/g, '').trim();\n\n Events.$trigger('gtm::push', {\n data: {\n event: 'change_country',\n option: choosedCountry\n }\n });\n\n Events.$trigger('gtm::push', {\n data: {\n event: 'change_language',\n option: choosedLanguage\n }\n });\n }\n });\n }\n }\n\n // Accordions on PDP below the image\n static clickPDPAccordion() {\n document.addEventListener('click', (e) => {\n if (e.target.matches('[js-hook-product-detail-accordion], [js-hook-product-detail-accordion] *')) {\n const el = e.target.closest('[js-hook-product-detail-accordion]');\n const option = el.querySelector('.accordion__item-override-title')\n ? el.querySelector('.accordion__item-override-title').textContent.replace(/\\n/g, '').trim()\n : null;\n const product = document.querySelector(JS_HOOK_PRODUCT_ATTRIBUTE_TITLE)\n ? document.querySelector(JS_HOOK_PRODUCT_ATTRIBUTE_TITLE).textContent.replace(/\\n/g, '').trim()\n : null;\n\n Events.$trigger('gtm::push', {\n data: {\n event: 'click_accordion',\n option,\n product\n }\n });\n }\n });\n }\n\n static changePDPModel() {\n document.addEventListener('change', (e) => changeVarioationAttributeBySelect(e, 'js-hook-model-info'));\n document.addEventListener('click', (e) => changeVarioationAttributeByButton(e, 'js-hook-model-info'));\n }\n\n static changePDPColor() {\n document.addEventListener('change', (e) => changeVarioationAttributeBySelect(e, 'js-hook-color-gtm'));\n document.addEventListener('click', (e) => changeVarioationAttributeByButton(e, 'js-hook-color-gtm'));\n }\n\n static changePDPColorBB() {\n document.addEventListener('click', (e) => {\n if (e.target.matches('[js-hook-color-gtm-bb], [js-hook-color-gtm-bb] *')) {\n const el = e.target.closest('[js-hook-color-gtm-bb]');\n const option = el ? el.dataset.displayValue : null;\n const product = document.querySelector(JS_HOOK_PRODUCT_ATTRIBUTE_TITLE)\n ? document.querySelector(JS_HOOK_PRODUCT_ATTRIBUTE_TITLE).dataset.productName\n : null;\n\n Events.$trigger('gtm::push', {\n data: {\n event: 'change_colour',\n option,\n product\n }\n });\n }\n });\n }\n\n static clickSparePartsPDP() {\n document.addEventListener('click', (e) => {\n if (e.target.matches('[js-hook-spare-parts-gtm-click], [js-hook-spare-parts-gtm-click] *')) {\n const product = document.querySelector(JS_HOOK_PRODUCT_ATTRIBUTE_TITLE)\n ? document.querySelector(JS_HOOK_PRODUCT_ATTRIBUTE_TITLE).textContent.replace(/\\n/g, '').trim()\n : null;\n\n Events.$trigger('gtm::push', {\n data: {\n event: 'click_spare_parts',\n product\n }\n });\n }\n });\n }\n\n static clickDownloadPDP() {\n document.addEventListener('click', (e) => {\n if (e.target.matches('[js-hook-download-gtm-click], [js-hook-download-gtm-click] *')) {\n const el = e.target.closest('[js-hook-download-gtm-click]');\n const product = document.querySelector(JS_HOOK_PRODUCT_ATTRIBUTE_TITLE)\n ? document.querySelector(JS_HOOK_PRODUCT_ATTRIBUTE_TITLE).textContent.replace(/\\n/g, '').trim()\n : null;\n const fileName = el.href || null;\n\n Events.$trigger('gtm::push', {\n data: {\n event: 'download',\n product,\n file_name: fileName\n }\n });\n }\n });\n }\n\n static clickImageZoomPDP() {\n const {action} = document.querySelector('body').dataset;\n\n if (action === 'Product-Show') {\n document.addEventListener('click', (e) => {\n if (e.target.matches('[js-hook-image-zoom], [js-hook-image-zoom] *')) {\n const {order} = e.target.closest('[js-hook-image-zoom]').dataset;\n const product = document.querySelector(JS_HOOK_PRODUCT_ATTRIBUTE_TITLE)\n ? document.querySelector(JS_HOOK_PRODUCT_ATTRIBUTE_TITLE).textContent.replace(/\\n/g, '').trim()\n : null;\n\n Events.$trigger('gtm::push', {\n data: {\n event: 'click_zoom',\n order,\n product\n }\n });\n }\n });\n }\n }\n\n static clickPDPUserType() {\n const pdpUserTypeButtons = [...document.querySelectorAll(JS_HOOK_PDP_USER_TYPE)];\n\n pdpUserTypeButtons.forEach(el => {\n const pdpUserType = el.classList.contains('professional-trigger__button') ? 'professional' : 'consumer';\n\n el.addEventListener('click', () => {\n Events.$trigger('gtm::push', {\n data: {\n event: 'click_pdp_user_type',\n option: pdpUserType\n }\n });\n });\n });\n }\n\n static clickSearchResult() {\n document.addEventListener('click', (e) => {\n if (e.target.matches('[js-hook-search-result], [js-hook-search-result] *')) {\n const el = e.target.closest('[js-hook-search-result]');\n const isShowAll = el.hasAttribute('js-hook-search-result-show-all');\n const windowGtmEvents = window.gtmEvents;\n const term = document.querySelector(JS_HOOK_SEARCH_INPUT) ? document.querySelector(JS_HOOK_SEARCH_INPUT).value : null;\n let option = '';\n\n if (isShowAll) {\n option = 'view all';\n } else if (windowGtmEvents) {\n const pageViewEvent = windowGtmEvents.find(event => event.event === 'page_view');\n\n if (pageViewEvent.pageName) {\n switch (pageViewEvent.pageName) {\n case 'ListingPage':{\n option = 'listing page';\n break;\n }\n case 'ProductPage':{\n option = 'product page';\n break;\n }\n default:\n break;\n }\n }\n }\n\n Events.$trigger('gtm::push', {\n data: {\n event: 'search_clicked_result',\n term,\n option\n }\n });\n }\n });\n }\n\n static searchNotFound() {\n document.addEventListener('click', (e) => {\n if (e.target.matches('[js-hook-search-not-found], [js-hook-search-not-found] *')) {\n const el = e.target.closest('[js-hook-search-not-found]');\n const userType = el.hasAttribute('js-hook-open-chat') ? 'chat_with_flos' : 'professional';\n const modalSearch = document.querySelector('#modal-search');\n let term = null;\n\n if (modalSearch.classList.contains('modal--is-showing')) {\n term = document.querySelector(JS_HOOK_SEARCH_INPUT) ? document.querySelector(JS_HOOK_SEARCH_INPUT).value : null;\n } else {\n const {querystring} = document.querySelector('body').dataset;\n const urlParams = new URLSearchParams(querystring);\n\n term = urlParams && urlParams.get('q') ? urlParams.get('q') : null;\n }\n\n Events.$trigger('gtm::push', {\n data: {\n event: 'search_not_found',\n term,\n option: userType\n }\n });\n }\n });\n }\n\n static clickTradeBecomeMember() {\n document.addEventListener('click', (e) => {\n if (e.target.matches('[js-hook-gtm-click-trade-become-member], [js-hook-gtm-click-trade-become-member] *')) {\n const el = e.target.closest('[js-hook-gtm-click-trade-become-member]');\n const position = el.parentNode.hasAttribute('js-hook-basic-text') ? 'text' : 'hero';\n\n Events.$trigger('gtm::push', {\n data: {\n event: 'click_become_member',\n position\n }\n });\n }\n });\n }\n\n static clickTradeProject() {\n const tradeProjects = [...document.querySelectorAll(JS_HOOK_CLICK_TRADE_PROJECT_GTM)];\n\n tradeProjects.forEach(el => {\n const option = el.querySelector(JS_HOOK_SLIDE_TITLE) ? el.querySelector(JS_HOOK_SLIDE_TITLE).innerText : null;\n\n el.addEventListener('click', () => {\n Events.$trigger('gtm::push', {\n data: {\n event: 'click_project',\n option\n }\n });\n });\n });\n }\n\n static clickFAQ() {\n document.addEventListener('click', (e) => {\n if (e.target.matches('[js-hook-click-faq-gtm], [js-hook-click-faq-gtm] *')) {\n const el = e.target.closest('[js-hook-click-faq-gtm]');\n let action = null;\n const faqAccordionContainer = parentUntil(el, JS_HOOK_ACCORDION_ITEM);\n const option = el.querySelector('.accordion__item-override-title')\n ? el.querySelector('.accordion__item-override-title').textContent.replace(/\\n/g, '').trim()\n : null;\n\n // data normalization\n if (faqAccordionContainer) action = faqAccordionContainer.classList.contains('accordion__item--is-active') ? 'close' : 'open';\n\n Events.$trigger('gtm::push', {\n data: {\n event: 'click_faq',\n action,\n option\n }\n });\n }\n });\n }\n\n static clickStory() {\n document.addEventListener('click', (e) => {\n if (e.target.matches('[js-hook-click-story-gtm], [js-hook-click-story-gtm] *')) {\n const el = e.target.closest('[js-hook-click-story-gtm]');\n const option = el.querySelector(JS_HOOK_SLIDE_TITLE) ? el.querySelector(JS_HOOK_SLIDE_TITLE).innerText : null;\n\n Events.$trigger('gtm::push', {\n data: {\n event: 'click_stories',\n option\n }\n });\n }\n });\n }\n\n static paymentModernization() {\n if (document.querySelector(JS_HOOK_GTM_PAYMENT_MODERNIZATION_CLICK)) {\n document.querySelector(JS_HOOK_GTM_PAYMENT_MODERNIZATION_CLICK).addEventListener('click', () => {\n const dataPoint = document.querySelector(JS_HOOK_GTM_CHECKOUT_CLICK_DATA);\n const { ga4PaymentObj } = dataPoint.dataset;\n\n if (ga4PaymentObj) {\n const paymentType = document.querySelector('#selectedPaymentOption').value;\n let tempGa4PaymentObj = null;\n\n try {\n tempGa4PaymentObj = JSON.parse(ga4PaymentObj);\n\n if (tempGa4PaymentObj && tempGa4PaymentObj.ecommerce && paymentType) tempGa4PaymentObj.ecommerce.payment_type = paymentType.replace(/\\n/g, '').trim();\n } catch (error) {\n tempGa4PaymentObj = window.ga4Data;\n }\n\n Events.$trigger('gtm::push', { data: {'ecommerce':null}});\n Events.$trigger('gtm::push', {\n data: tempGa4PaymentObj\n });\n }\n });\n }\n }\n\n static savePaymentMethod(paymentMethodId) {\n const { ga4Data } = window;\n if (ga4Data && ga4Data.ecommerce) {\n ga4Data.ecommerce.payment_type = paymentMethodId;\n }\n }\n\n static checkoutEvents() {\n [...document.querySelectorAll(JS_HOOK_GTM_CHECKOUT_CLICK)].forEach((el) => {\n const dataPoint = document.querySelector(JS_HOOK_GTM_CHECKOUT_CLICK_DATA);\n if (dataPoint) {\n const { modernization } = dataPoint.dataset;\n if (!modernization || modernization !== 'true') {\n const { gtmObj } = dataPoint.dataset;\n if (gtmObj) {\n el.addEventListener('click', () => {\n Events.$trigger('gtm::push', {\n data: JSON.parse(gtmObj)\n });\n });\n }\n const { ga4Obj } = dataPoint.dataset;\n if (ga4Obj) {\n el.addEventListener('click', () => {\n Events.$trigger('gtm::push', { data: {'ecommerce':null}});\n Events.$trigger('gtm::push', {\n data: JSON.parse(ga4Obj)\n });\n });\n }\n const { ga4PaymentObj } = dataPoint.dataset;\n if (ga4PaymentObj) {\n el.addEventListener('click', () => {\n Events.$trigger('gtm::push', { data: {'ecommerce':null}});\n Events.$trigger('gtm::push', {\n data: window.ga4Data\n });\n });\n }\n }\n }\n });\n\n [...document.querySelectorAll(JS_HOOK_GTM_CHECKOUT_BEGIN_DATA)].forEach(el => {\n const { gtmObj } = el.dataset;\n\n if (gtmObj) {\n el.addEventListener('click', () => {\n Events.$trigger('gtm::push', {\n data: JSON.parse(gtmObj)\n });\n });\n }\n })\n }\n\n static cartEvents(){\n const viewCart = document.querySelector(JS_HOOK_VIEW_CART);\n if (!viewCart){\n return;\n }\n const { gtmObj } = viewCart.dataset;\n const data = JSON.parse(gtmObj);\n\n Events.$trigger('gtm::push', { data: {'ecommerce':null}});\n Events.$trigger('gtm::push', {\n data\n });\n }\n\n // add_to_cart_ga Event on cart page\n static updateCartProductQuantity(){\n const updateCartProductQuantitySelects = [...document.querySelectorAll(JS_HOOK_UPDATE_CART_PRODUCT_QUANTITY)];\n\n if (!updateCartProductQuantitySelects.length) return;\n\n updateCartProductQuantitySelects.forEach(updateCartProductQuantitySelect => {\n updateCartProductQuantitySelect.addEventListener('change', () => {\n const lineItem = parentUntil(updateCartProductQuantitySelect, '[js-hook-cart-lineitem]');\n let { gtmObj } = lineItem.dataset;\n\n if (gtmObj) {\n gtmObj = JSON.parse(gtmObj);\n\n const productCurrency = gtmObj.currency;\n const productPrice = gtmObj.price;\n const productQuantity = updateCartProductQuantitySelect.selectedOptions[0].value;\n const productValue = productQuantity ? productPrice * productQuantity : productPrice;\n\n if (productQuantity) gtmObj.quantity = productQuantity;\n\n const fullGtmObj = {\n event: 'add_to_cart_ga',\n ecommerce: {\n value: productValue,\n currency: productCurrency,\n items: [gtmObj]\n }\n };\n\n Events.$trigger('gtm::push', { data: {'ecommerce':null}});\n Events.$trigger('gtm::push', { data: fullGtmObj});\n }\n });\n });\n }\n\n static productTileEvents() {\n const productTiles = [...document.querySelectorAll(JS_HOOK_PRODUCT_TILE)];\n\n if (!productTiles.length) {\n return;\n }\n\n const impressions = [];\n const items = [];\n productTiles.forEach(productTile => {\n const { gtmObj } = productTile.dataset;\n const gtmObjParsed = JSON.parse(gtmObj);\n const { ga4Obj } = productTile.dataset;\n const ga4ObjParsed = JSON.parse(ga4Obj);\n\n // fill for impression_view\n const impressionObj = gtmObjParsed.ecommerce.click.products[0];\n impressionObj.list = gtmObjParsed.ecommerce.click.actionField.list;\n impressions.push(impressionObj);\n const itemObj = ga4ObjParsed.ecommerce.items[0];\n items.push(itemObj);\n\n ga4ObjParsed.event = 'select_item'\n ga4ObjParsed.ecommerce.currency = itemObj.currency || '';\n ga4ObjParsed.ecommerce.value = itemObj.price || ''; \n // impression_click\n productTile.addEventListener('click', () => {\n Events.$trigger('gtm::push', { data: {'ecommerce':null}});\n Events.$trigger('gtm::push', {\n data: ga4ObjParsed\n });\n Events.$trigger('gtm::push', {\n data: gtmObjParsed\n });\n });\n\n });\n\n Events.$trigger('gtm::push', {\n data: {\n event: 'impression_view',\n ecommerce: {\n impressions\n }\n }\n });\n Events.$trigger('gtm::push', { data: {'ecommerce':null}});\n Events.$trigger('gtm::push', {\n data:{\n event: 'view_item_list',\n ecommerce: {\n items\n }\n }\n });\n }\n\n static pageDesignerEvents() {\n const promotions = [...document.querySelectorAll(JS_HOOK_PROMOTION)];\n\n if (!promotions.length) {\n return;\n }\n\n const impressions = promotions.map((item) => parseJSON(item.dataset.gtmImpressionsEvent || item.dataset.gtm));\n\n promotions.forEach((promo) => {\n promo.addEventListener('click', (event) => {\n Events.$trigger('gtm::push', {\n data: {\n event: 'promotion_click',\n ecommerce: {\n promoClick: {\n promotions: [parseJSON(event.currentTarget.dataset.gtmImpressionsEvent || event.currentTarget.dataset.gtm)]\n }\n }\n }\n });\n });\n });\n\n Events.$trigger('gtm::push', {\n data: {\n event: 'promotion_view',\n ecommerce: {\n promoView: {\n promotions: impressions\n }\n }\n }\n });\n }\n\n static eventFromBackend(data) {\n const dataObj = typeof data === 'string' ? parseJSON(data) : data;\n const eventsObj = !Array.isArray(dataObj) ? parseJSON(dataObj) : dataObj;\n if (eventsObj) eventsObj.map((event) => Events.$trigger('gtm::push', { data: event }));\n }\n\n filterEvent(data) {\n const dataObj = typeof data === 'string' ? parseJSON(data) : data;\n\n Events.$trigger('gtm::push', {\n data: {\n event: 'filter_click',\n key: dataObj.key,\n value: dataObj.value,\n page: this.pagePathname\n }\n });\n }\n\n bindEvents() {\n Events.$on('gtm::eventFromBackend', (_, data) => GTMEvents.eventFromBackend(data));\n Events.$on('gtm::filter-event', (_, data) => this.filterEvent(data));\n }\n}\n\nexport default new GTMEvents();\n","import GTMEvents from './gtm-events';\n\nexport default GTMEvents;\n","// Imports\nimport Events from '@utilities/events';\n\n/**\n * GTM envent on footer subscribe button (newsletter_footer)\n * @param {Boolean} subscribe - true if it is a subscription action / false if it is opening a subscription form\n *\n * @return {Void}\n */\nconst gtmFooterSubscribeButtonClick = function(subscribe) {\n if (subscribe) {\n const newsletterSubscriptionForm = document.querySelector('.newsletter-subscription-form__form');\n\n if (newsletterSubscriptionForm) {\n let userType = newsletterSubscriptionForm.querySelector('input[name=\"dwfrm_newsletter_accountType\"]:checked')\n ? newsletterSubscriptionForm.querySelector('input[name=\"dwfrm_newsletter_accountType\"]:checked').value\n : null;\n\n // data normalization\n userType = userType === 'private' ? 'consumer' : userType;\n\n Events.$trigger('gtm::push', {\n data: {\n event: 'newsletter',\n action: 'subscribe',\n user_type: userType\n }\n });\n }\n } else {\n const subscribeButton = document.querySelector('[js-hook-newsletter-button-gtm]');\n\n if (subscribeButton) {\n subscribeButton.addEventListener('click', () => {\n Events.$trigger('gtm::push', {\n data: {\n event: 'newsletter',\n action: 'click'\n }\n });\n });\n }\n }\n};\n\nexport default gtmFooterSubscribeButtonClick;\n","/**\n * Returns parent element until parent element with special selector\n * @param {Object} element\n * @param {String} selector\n * @return {Object|Null}\n */\nfunction parentUntil(element, selector) {\n // early return\n if (!element || !selector) return null;\n if (element.tagName === 'BODY') return null;\n\n switch (true) {\n case selector.includes('.'): {\n const className = selector.substring(1);\n\n if (element.parentNode && element.parentNode.classList.contains(className)) return element.parentNode;\n\n break;\n }\n case selector.includes('#'): {\n const ID = selector.substring(1);\n\n if (element.parentNode && element.parentNode.id === ID) return element.parentNode;\n\n break;\n }\n case selector.includes('[') && selector.includes(']'): {\n const attribute = selector.substring(1).slice(0, -1);\n\n if (element.parentNode && element.parentNode.hasAttribute(attribute)) return element.parentNode;\n\n break;\n }\n default: {\n if (element.parentNode && element.parentNode.tagName.toUpperCase() === selector.toUpperCase()) return element.parentNode;\n\n break;\n }\n }\n\n return parentUntil(element.parentNode, selector);\n};\n\nexport default parentUntil;\n","const parseJSON = function (json, defaultValue) {\n // This function cannot be optimised, it's best to\n // keep it small!\n let parsed\n\n try {\n parsed = JSON.parse(json)\n } catch (e) {\n parsed = defaultValue\n }\n\n return parsed || null // Could be undefined!\n}\n\nexport default parseJSON\n","import parseJSON from './parse-json'\n\nexport default parseJSON\n","// Imports\nimport Events from '@utilities/events';\n\n/**\n * Update Gtm Listing Filter events\n *\n * @return {Void}\n */\nconst updateGtmListingFiltersEvents = function() {\n // constants\n const JS_HOOK_PAGED_REFINEMENT_NAVIGATION = '[js-hook-paged-refinement-navigation]';\n const JS_HOOK_REFINEMENT_FILTER = '[js-hook-refinement-filter]';\n const JS_HOOK_REFINEMENT_VALUE = '[js-hook-refinement-value]';\n const refinementNavigation = document.querySelector(JS_HOOK_PAGED_REFINEMENT_NAVIGATION);\n\n if (refinementNavigation) {\n const refinementFilters = [...refinementNavigation.querySelectorAll(JS_HOOK_REFINEMENT_FILTER)];\n\n if (refinementFilters) {\n refinementFilters.forEach((el) => {\n el.addEventListener('click', () => {\n const value = el.querySelector(JS_HOOK_REFINEMENT_VALUE) ? el.querySelector(JS_HOOK_REFINEMENT_VALUE).innerText : null;\n let label = el.dataset.section;\n let action = el.getAttribute('aria-checked') ? el.getAttribute('aria-checked') : null;\n\n // data normalization\n switch (label) {\n case 'generalCover':{\n label = 'color';\n break;\n }\n case 'colorCode':{\n label = 'color';\n break;\n }\n case 'designers':{\n label = 'designer';\n break;\n }\n case 'By Price':{\n label = 'price';\n break;\n }\n default:\n }\n\n if (action) action = action === 'true' ? 'remove' : 'add';\n\n Events.$trigger('gtm::push', {\n data: {\n event: 'filter',\n label,\n value,\n action\n }\n });\n });\n });\n }\n }\n};\n\nexport default updateGtmListingFiltersEvents;\n","// Imports\nimport Events from '@utilities/events';\n\n/**\n * Update Gtm Listing Sort events\n *\n * @return {Void}\n */\nconst updateGtmListingSortEvents = function() {\n // constants\n const JS_HOOK_REFINEMENT_SORT = '[js-hook-refinement-sort]';\n const refinementSort = document.querySelector(JS_HOOK_REFINEMENT_SORT);\n\n if (refinementSort) {\n const refinementSortSelect = refinementSort.querySelector('#sort-order');\n const refinementSortButtons = [...refinementSort.querySelectorAll('.csb__button')];\n\n refinementSortButtons.forEach((refinementSortButton) => {\n const ferinementSortButtonLabel = refinementSortButton.querySelector('.csb__button-label') ? refinementSortButton.querySelector('.csb__button-label').innerText.replace(/\\n/g, '') : null;\n\n refinementSortButton.addEventListener('click', () => {\n Events.$trigger('gtm::push', {\n data: {\n event: 'sort',\n label: ferinementSortButtonLabel\n }\n });\n })\n });\n\n refinementSortSelect.addEventListener('change', () => {\n const refinementSortSelectIndex = refinementSortSelect.selectedIndex;\n const selectedRefinement = refinementSortSelect.options[refinementSortSelectIndex];\n const selectedRefinementLabel = selectedRefinement.innerText.replace(/\\n/g, '');\n\n Events.$trigger('gtm::push', {\n data: {\n event: 'sort',\n label: selectedRefinementLabel\n }\n });\n });\n }\n};\n\nexport default updateGtmListingSortEvents;\n"],"sourceRoot":""}