{"version":3,"sources":["webpack:///./cartridges/app_designholding/cartridge/client/default/js/utilities/parentUntil.js","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/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":["parentUntil","element","selector","tagName","includes","className","substring","parentNode","classList","contains","ID","id","attribute","slice","hasAttribute","toUpperCase","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","attributeHook","target","matches","eventName","el","closest","option","options","selectedIndex","textContent","replace","trim","product","document","querySelector","dataset","productName","Events","$trigger","data","event","changeVarioationAttributeByButton","GTMEvents","constructor","pageType","window","gtmData","pagePathname","location","pathname","applicablePages","impressionsEvent","pageDesignerEvent","bindEvents","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","banner","innerText","cta","body","basicTextButtons","basicTextButtonContainer","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","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","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":["/**\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","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","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":""}