{"version":3,"file":"zoomv.6113.min.js?t=7c0a4575b482a87c94e6","mappings":"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","sources":["webpack://@hero-digital/zoom/./src/js/utilities/common-pricing-component.js","webpack://@hero-digital/zoom/./src/js/utilities/currency-filter.js","webpack://@hero-digital/zoom/./src/js/utilities/datalayer/common-ui-location-mapping.js","webpack://@hero-digital/zoom/./src/js/utilities/datalayer/contentTitleMap.js","webpack://@hero-digital/zoom/./src/js/utilities/datalayer/data-layer-cta.js","webpack://@hero-digital/zoom/./src/js/utilities/datalayer/data-layer-blog.js","webpack://@hero-digital/zoom/./src/js/utilities/datalayer/data-layer-smb-roi.js","webpack://@hero-digital/zoom/./src/js/utilities/datalayer/data-layer-navigation.js","webpack://@hero-digital/zoom/./src/js/utilities/datalayer/data-layer-navigation-vfive.js","webpack://@hero-digital/zoom/./src/js/utilities/datalayer/data-layer-footer.js","webpack://@hero-digital/zoom/./src/js/utilities/datalayer/data-layer-product-nav.js","webpack://@hero-digital/zoom/./src/js/utilities/datalayer/data-layer-non-profit.js","webpack://@hero-digital/zoom/./src/js/utilities/data-layer.js","webpack://@hero-digital/zoom/./src/js/utilities/datalayer/data-layer-filter.js","webpack://@hero-digital/zoom/./src/js/utilities/datalayer/data-layer-search.js","webpack://@hero-digital/zoom/./src/js/utilities/datalayer/data-layer-tab.js"],"sourcesContent":["import { callPricingAPI } from './pricing';\r\nimport { initCountryCurrencyFilter } from './currency-filter';\r\n\r\nfunction handleOnCurrencyChange(selectedCountryCode, context) {\r\n const {el}=context;\r\n const apiUrl = el?context.el.dataset.apiEndpoint:context.getAttribute(\"data-api-endpoint\");;\r\n const divId = el?el.dataset?.id:context.getAttribute(\"data-id\");\r\n\r\n if (!apiUrl || !divId) return;\r\n\r\n const fetchOpts = {\r\n method: 'GET',\r\n credentials: 'include',\r\n mode: 'cors',\r\n headers: {\r\n 'Content-Type': 'text/html; charset=utf-8'\r\n }\r\n };\r\n\r\n fetch(`${apiUrl}location=${selectedCountryCode}`, fetchOpts)\r\n .then(response => response.text())\r\n .then(data => {\r\n const pricingCardBasic = document.querySelector(`div[data-id='${divId}']`);\r\n if (pricingCardBasic) {\r\n pricingCardBasic.outerHTML = data;\r\n callPricingAPI();\r\n\r\n // Re-initialize the component (if needed)\r\n const temp = document.createElement('div');\r\n temp.innerHTML = data;\r\n const newDivId = temp.querySelector('div[data-id]')?.getAttribute('data-id');\r\n const updatedElement = newDivId ? document.querySelector(`div[data-id='${newDivId}']`) : null;\r\n if (updatedElement) {\r\n // Call this same initializer again\r\n initSinglePricingComponent(updatedElement);\r\n }\r\n }\r\n })\r\n .catch(err => {\r\n console.error(\"Pricing update failed\", err);\r\n });\r\n}\r\n\r\nfunction initSinglePricingComponent(el) {\r\n initCountryCurrencyFilter(el, {\r\n onCountryChange: handleOnCurrencyChange,\r\n onCurrencyChange: handleOnCurrencyChange\r\n });\r\n}\r\n\r\nexport function initializePricingComponents() {\r\n const components = document.querySelectorAll('[data-class=\"js-pricing-component\"]');\r\n components.forEach(initSinglePricingComponent);\r\n}\r\n","import { ensureCurrencyFilterFlag, listenCurrencyChange } from \"./utilities\";\r\nimport { default as Dropdown } from '../../components/foundation/Dropdown/Dropdown'\r\n\r\nexport function initCountryCurrencyFilter(instance, options = {}) {\r\n const { el } = instance;\r\n const { \r\n onCountryChange, \r\n onCurrencyChange \r\n } = options;\r\n\r\n const iscurrencyfilter = el?el.dataset?.isCurrencyfilter:instance.getAttribute(\"data-is-currencyfilter\");\r\n const divId = el?el.dataset?.id:instance.getAttribute(\"data-id\");\r\n\r\n if(iscurrencyfilter) ensureCurrencyFilterFlag(iscurrencyfilter);\r\n const ddEl = divId &&el? el.querySelector(`#country-${divId}`):instance.querySelector(`#country-${divId}`);\r\n if (ddEl) {\r\n instance.dropDownElement = new Dropdown(ddEl);\r\n instance.dropDownElement.onChange(code =>\r\n onCountryChange && onCountryChange(code, instance)\r\n );\r\n }\r\n\r\n listenCurrencyChange(() => {\r\n const code = instance.dropDownElement\r\n ? instance.dropDownElement.getSelectedCountryCode()\r\n : \"\";\r\n onCurrencyChange && onCurrencyChange(code, instance);\r\n });\r\n}\r\n","export function checkUiLocation(element) {\r\n const locationMapping = [\r\n { selector: '.hero__cta', location: 'Hero Banner' },\r\n { selector: '.audience-hero__cta', location: 'Audience Hero Banner' },\r\n { selector: '.module-video-expander__cta', location: 'Video Expander Hero Banner' },\r\n { selector: '.event-hero__cta', location: 'Event Hero Banner' },\r\n { selector: '.product-category-hero__cta', location: 'Product Category Hero Banner' },\r\n { selector: '.fdn-image-card, .fdn-image-card__main-container', location: 'Image Card' },\r\n { selector: '.fdn-video-card, .fdn-video-card__main-container', location: 'Video Card' },\r\n { selector: '.fdn-blog-card', location: 'Blog Card' },\r\n { selector: '.fdn-image-cta', location: 'Image CTA' },\r\n { selector: '.fdn-box-card', location: 'Box Card' },\r\n { selector: '.fdn-event-card', location: 'Event Card' },\r\n { selector: '.fdn-text-card', location: 'Text Card' },\r\n { selector: '.fdn-static-card', location: 'Static Card' },\r\n { selector: '.fdn-stat-card', location: 'Statistics Card' },\r\n { selector: '.testimonial-carousel', location: 'Carousel Card' },\r\n { selector: '.fdn-basic-cta__btn-container', location: 'Sticky Footer cta' },\r\n { selector: '#zoomfornonprofits', location: 'nonprofits discount program' },\r\n { selector: '.fdn-copy-block', location: 'Copy Block' },\r\n { selector: '.fdn-ebook-quote__container', location: 'Ebook Quote' },\r\n { selector: '.fdn-pricing-card__main-container', location: 'Pricing Card' },\r\n { selector: '.fdn-alert-banner', location: 'Alert Banner' },\r\n { selector: '.fdn-form__description', location: 'Form CTA' },\r\n { selector: '.fdn-resource-link', location: 'Resource Link Group' },\r\n { selector: '.cta-container ', location: 'Cta Container' },\r\n { selector: '.fdn-pricingcard-uni-wrapper-container', location: 'Hero Pricing Card' },\r\n { selector: '.fdn-zdcm-pricing-cards', location: 'Pricing Card' },\r\n { selector: '.fdn-zdcm-feature-accordion', location: 'Feature Accordian Tab' },\r\n { selector: '.fdn-resource-block', location: 'Resource Card Block' },\r\n { selector: '.zdcm-top-title-wrapper', location: 'Title Section Block' }\r\n ]\r\n\r\n for (const { selector, location } of locationMapping) {\r\n if (element.closest(selector)) {\r\n return location\r\n }\r\n }\r\n\r\n //SELECTION OF COMPONENT OUTER CONTAINER\r\n const moduleColumns = element.closest('.module-columns')\r\n if (moduleColumns) {\r\n const iconBlock = moduleColumns.querySelectorAll('.fdn-icon-block')\r\n if (iconBlock) {\r\n return 'Icon Block Section'\r\n }\r\n }\r\n\r\n return ''\r\n}\r\n","export const contentTitleMap = [\r\n {\r\n blockClass: 'zdcm-top-title-wrapper',\r\n titleSelector: '.module-columns-title'\r\n },\r\n {\r\n blockClass: 'fdn-copy-block',\r\n titleSelector: '.fdn-copy-block__title'\r\n },\r\n {\r\n blockClass: 'fdn-basic-cta',\r\n titleSelector: '.fdn-basic-cta__header'\r\n },\r\n {\r\n blockClass: 'hero__content',\r\n titleSelector: '.hero__title'\r\n }\r\n];\r\n","import { checkUiLocation } from './common-ui-location-mapping'\r\nimport { contentTitleMap } from './contentTitleMap';\r\n\r\nfunction DataLayerCta() {\r\n this.buttonCta = Array.from(document.querySelectorAll(\r\n 'a.fdn-button, .fdn-resource-link li a, .fdn-image-card, .fdn-video-card a, .fdn-box-card a, .fdn-blog-card a, .fdn-alert-banner'\r\n )).filter(el => !el.closest('header'));\r\n}\r\n\r\nDataLayerCta.prototype._init = function () {\r\n this._trackLinkClicks()\r\n}\r\n\r\nDataLayerCta.prototype._trackLinkClicks = function () {\r\n this.buttonCta.forEach((link) =>\r\n link.addEventListener('click', (e) => this._handleLinkClick(e))\r\n )\r\n}\r\n\r\nDataLayerCta.prototype._isInExcludedSection = function (element) {\r\n const excludedSelectors = [\r\n '.bandwidth-calculator',\r\n '.fdn-zdcm-pricing-cards'\r\n ]\r\n return excludedSelectors.some(selector => {\r\n const section = document.querySelector(selector)\r\n return section && section.contains(element)\r\n })\r\n}\r\n\r\nDataLayerCta.prototype._handleLinkClick = function (e) {\r\n e.stopPropagation()\r\n let linkElement = e.target.closest('a')\r\n if (!linkElement || !Array.from(this.buttonCta).includes(linkElement)) return\r\n\r\n const pricingCard = linkElement.closest('.fdn-zdcm-pricing-card')\r\n if (pricingCard) {\r\n e.preventDefault()\r\n\r\n const productElem = pricingCard.querySelector('.fdn-zdcm-plan')\r\n const product = productElem?.innerText?.replace(/\\s+/g, ' ').trim() || 'Unknown Plan'\r\n const linkText = linkElement.innerText.split('\\n')[0].trim()\r\n const linkUrl = linkElement.href\r\n const uiLocation = checkUiLocation(linkElement)\r\n const contentTitle = this._getContentTitle(linkElement)\r\n\r\n const formattedLinkText = `${product} - ${linkText}`\r\n\r\n const eventData = {\r\n event: 'linkClick',\r\n linkText: formattedLinkText,\r\n linkUrl: linkUrl,\r\n uiLocation: uiLocation,\r\n contentTitle: contentTitle\r\n }\r\n\r\n window.dataLayer.push(eventData)\r\n\r\n setTimeout(() => {\r\n window.location.href = linkUrl\r\n }, 200)\r\n\r\n return\r\n }\r\n\r\n if (this._isInExcludedSection(linkElement)) return\r\n\r\n let linkText = this._getVisibleText(linkElement)\r\n let linkUrl = linkElement.href\r\n let uiLocation = checkUiLocation(linkElement)\r\n const extensionRegex = /\\.(doc|txt|zip|exe|pdf|ppt|mp3|mp4)/i\r\n const isDownload = extensionRegex.test(linkUrl)\r\n\r\n if (isDownload) {\r\n this._handleDownloadEvent(linkElement, linkText, linkUrl, uiLocation)\r\n } else {\r\n this._handleLinkClickEvent(linkElement, linkText, linkUrl, uiLocation)\r\n }\r\n}\r\n\r\nDataLayerCta.prototype._handleDownloadEvent = function (linkElement, linkText, linkUrl, uiLocation) {\r\n const extensionRegex = /\\.(doc|txt|zip|exe|pdf|ppt|mp3|mp4)/i\r\n const match = linkUrl.match(extensionRegex)\r\n const contentTitle = this._getContentTitle(linkElement) || ''\r\n\r\n if (match) {\r\n let eventData = {\r\n event: 'fileDownload',\r\n linkUrl: linkUrl,\r\n linkText: linkText,\r\n uiLocation: uiLocation,\r\n fileExtension: match[1]?.toLowerCase(),\r\n contentTitle: contentTitle\r\n }\r\n\r\n window.dataLayer.push(eventData)\r\n }\r\n}\r\n\r\nDataLayerCta.prototype._handleLinkClickEvent = function (linkElement, linkText, linkUrl, uiLocation) {\r\n const contentTitle = this._getContentTitle(linkElement)\r\n\r\n const eventData = {\r\n event: 'linkClick',\r\n linkText: linkText,\r\n linkUrl: linkUrl,\r\n uiLocation: uiLocation,\r\n contentTitle: contentTitle\r\n }\r\n\r\n window.dataLayer.push(eventData)\r\n}\r\n\r\nDataLayerCta.prototype._getContentTitle = function (element) {\r\n const pricingCard = element.closest('.fdn-zdcm-pricing-card');\r\n if (pricingCard) {\r\n let parent = pricingCard.parentElement;\r\n while (parent) {\r\n const titleWrapper = parent.querySelector('.zdcm-top-title-wrapper .module-columns-title');\r\n if (titleWrapper && titleWrapper.innerText.trim()) {\r\n return titleWrapper.innerText.trim();\r\n }\r\n parent = parent.parentElement;\r\n }\r\n }\r\n\r\n let parent = element;\r\n while (parent) {\r\n for (const { blockClass, titleSelector } of contentTitleMap) {\r\n if (parent.classList?.contains(blockClass)) {\r\n const titleEl = parent.querySelector(titleSelector);\r\n if (titleEl && titleEl.innerText.trim()) {\r\n return titleEl.innerText.trim()\r\n }\r\n }\r\n }\r\n parent = parent.parentElement\r\n }\r\n\r\n const globalModuleTitle = document.querySelector('.zdcm-top-title-wrapper .module-columns-title');\r\n if (globalModuleTitle?.innerText.trim()) {\r\n return globalModuleTitle.innerText.trim()\r\n }\r\n\r\n const heading = element.closest('h1, h2, h3, h4');\r\n if (heading?.innerText.trim()) {\r\n return heading.innerText.trim()\r\n }\r\n\r\n parent = element.parentElement;\r\n while (parent) {\r\n const found = parent.querySelector('h1, h2, h3, h4');\r\n if (found?.innerText.trim()) {\r\n return found.innerText.trim()\r\n }\r\n parent = parent.parentElement\r\n }\r\n\r\n return ''\r\n}\r\n\r\nDataLayerCta.prototype._getVisibleText = function (element) {\r\n const buttonElement = element.querySelector('[class*=\"fdn-button\"], .fdn-resource-link__title')\r\n\r\n if (buttonElement) {\r\n return buttonElement.innerText.trim()\r\n }\r\n\r\n const textElements = element.querySelectorAll('span, h3, p')\r\n for (const el of textElements) {\r\n if (el.innerText.trim() && !el.classList.contains('visually-hidden')) {\r\n return el.innerText.trim()\r\n }\r\n }\r\n\r\n let visibleText = ''\r\n element.childNodes.forEach((node) => {\r\n if (node.nodeType === Node.TEXT_NODE) {\r\n const parent = node.parentElement\r\n if (parent && !parent.classList.contains('visually-hidden')) {\r\n visibleText += node.textContent.trim() + ' '\r\n }\r\n }\r\n })\r\n\r\n return visibleText.trim()\r\n}\r\n\r\nexport { DataLayerCta } \r\n","function DataLayerBlog() {\r\n}\r\nDataLayerBlog.prototype._init = function () {\r\n this._FormEvents()\r\n}\r\n\r\nDataLayerBlog.prototype._FormEvents = function () {\r\n this._blogFormSubmitted()\r\n this._blogFormError()\r\n}\r\n\r\nDataLayerBlog.prototype._blogFormSubmitted = function () {\r\n if (typeof $$epiforms !== 'undefined') {\r\n $$epiforms(document).ready(function myfunction() {\r\n $$epiforms(\"main.debug-blog .EPiServerForms\").on(\"formsSubmitted\",\r\n function (event, param1, param2) {\r\n let eventData = {\r\n event : 'blogsubscribe.submit',\r\n eventCategory: 'blog',\r\n eventAction: 'blog subscription submit',\r\n eventLabel: 'submit',\r\n formType: ' blog subscribe'\r\n }\r\n window.dataLayer.push(eventData)\r\n });\r\n });\r\n }\r\n}\r\n\r\nDataLayerBlog.prototype._blogFormError = function () {\r\n if (typeof $$epiforms !== 'undefined') {\r\n $$epiforms(document).ready(function myfunction() {\r\n $$epiforms(\"main.debug-blog .EPiServerForms\").on(\"formsStepValidating\",\r\n function (event) {\r\n if (!event.isValid) {\r\n let eventLabelName = document.querySelector('input[data-field-name=\"email\"]')?.parentNode.classList.contains(\"ValidationFail\") ? \"email\" : \"\";\r\n if (!document.querySelector(\".newsletter-signup__checkbox-wrap input\")?.checked) {\r\n eventLabelName = eventLabelName ? `${eventLabelName},checkbox` : \"checkbox\";\r\n }\r\n window.dataLayer.push({\r\n event: 'blogsubscribe.error',\r\n eventCategory: 'blog',\r\n eventAction: 'blog subscription error',\r\n eventLabel: eventLabelName,\r\n formType: ' blog subscribe'\r\n });\r\n }\r\n });\r\n });\r\n }\r\n}\r\nexport { DataLayerBlog }\r\n","function DataLayerSmbRoiCalculator() {\r\n this.container = document.querySelector('.bandwidth-calculator');\r\n if (!this.container) return; \r\n \r\n this.slider = this.container.querySelector('#rangeSlider');\r\n this.sliderInput = this.container.querySelector('#webinarParticipantsValue');\r\n this.appCards = this.container.querySelectorAll('.bandwidth-calculator__manualTabs-card');\r\n \r\n this.viewPlansButton = this.container.querySelector('a[title=\"View Plans\"]');\r\n this.contactSalesButton = Array.from(this.container.querySelectorAll('a')).find(\r\n (a) => a.textContent.trim().toLowerCase() === 'contact sales'\r\n );\r\n \r\n this.interactionCaptured = false;\r\n this._onFirstInteraction = this._onFirstInteraction.bind(this);\r\n }\r\n \r\n DataLayerSmbRoiCalculator.prototype._init = function () {\r\n if (!this.container) return;\r\n this._trackFirstInteraction();\r\n this._trackCtaClicks();\r\n };\r\n \r\n DataLayerSmbRoiCalculator.prototype._trackFirstInteraction = function () {\r\n const interactiveElements = [\r\n ...this.appCards,\r\n this.slider,\r\n this.sliderInput,\r\n this.viewPlansButton,\r\n this.contactSalesButton\r\n ].filter(Boolean);\r\n \r\n interactiveElements.forEach((el) => {\r\n el.addEventListener('click', this._onFirstInteraction, { once: true });\r\n });\r\n };\r\n \r\n DataLayerSmbRoiCalculator.prototype._onFirstInteraction = function (e) {\r\n if (this.interactionCaptured) return;\r\n this.interactionCaptured = true;\r\n \r\n let uiLocation = e.target.closest('.bandwidth-calculator__manualTabs-card') ? 'app click' :\r\n e.target === this.slider ? 'employee count slider' :\r\n e.target === this.sliderInput ? 'employee count input' :\r\n e.target === this.viewPlansButton ? 'view plans cta' :\r\n e.target === this.contactSalesButton ? 'contact sales cta' :\r\n 'unknown';\r\n \r\n window.dataLayer = window.dataLayer || [];\r\n window.dataLayer.push({\r\n event: 'roiCalculatorInteraction',\r\n roiCalculatorInteraction: 'smb roi calculator',\r\n roiCalculatorSelection: 'interaction start',\r\n uiLocation: uiLocation\r\n });\r\n };\r\n \r\n DataLayerSmbRoiCalculator.prototype._trackCtaClicks = function () {\r\n const handleClick = (e, label) => {\r\n const employeeCount = this.sliderInput?.value || '';\r\n const selectedApps = Array.from(this.appCards)\r\n .filter(card => card.classList.contains('selected'))\r\n .map(card => {\r\n const category = card.querySelector('p')?.textContent?.trim()?.toLowerCase() || 'unknown';\r\n const name = card.querySelector('h4')?.textContent?.trim()?.toLowerCase() || 'unnamed';\r\n return `${category} - ${name}`;\r\n });\r\n \r\n window.dataLayer = window.dataLayer || [];\r\n window.dataLayer.push({\r\n event: 'roiCalculatorInteraction',\r\n roiCalculatorInteraction: 'smb roi calculator',\r\n roiCalculatorSelection: label,\r\n employeeCount: employeeCount,\r\n numAppsSelected: selectedApps.length,\r\n appsSelectedArray: selectedApps\r\n });\r\n };\r\n \r\n if (this.viewPlansButton) {\r\n this.viewPlansButton.addEventListener('click', (e) => handleClick(e, 'view plans'));\r\n }\r\n \r\n if (this.contactSalesButton) {\r\n this.contactSalesButton.addEventListener('click', (e) => handleClick(e, 'contact sales'));\r\n }\r\n };\r\n \r\n export { DataLayerSmbRoiCalculator };\r\n","function DataLayerNavigation() { \r\n this.DataLayerHelper = {\r\n pushEvent: function (eventName, data = {}) {\r\n if (!eventName) {\r\n return;\r\n }\r\n\r\n let eventData = { event: eventName };\r\n // Ensure undefined values are correctly passed\r\n Object.keys(data).forEach(key => {\r\n eventData[key] = (data[key] === \"\") ? undefined : data[key];\r\n })\r\n window.dataLayer.push(eventData);\r\n }\r\n }\r\n}\r\nDataLayerNavigation.prototype._init = function () {\r\n try {\r\n this._logoIntraction()\n this._logoIntractionForShortHeader()\r\n this._menuWithExpand()\r\n this._menuWithoutExpand()\r\n this._logoTracking()\r\n this._universalDesktopMenu()\r\n this._universalMobileMenu()\r\n this._resourceMenu()\r\n this._mobileSignUp()\r\n this._mobilePricingEvent()\r\n this._zoomProductAndContactSaleButton()\r\n this._trackClickEvents()\r\n }\r\n catch (e) { }\r\n}\r\n\r\nDataLayerNavigation.prototype._getUiLocation = function () {\r\n const parentCategory = document.querySelector('ul.main-nav__list li.active button')?.innerText;\r\n let uiLocation = \"universal nav\";\r\n if (parentCategory) {\r\n uiLocation = \"universal nav - \" + parentCategory.toLowerCase() + \" menu\";\r\n }\r\n return uiLocation;\r\n}\r\n\r\nDataLayerNavigation.prototype._getUiLocationMobile = function() {\r\n const parentCategory = document.querySelector('ul.mobile-menu__list.is-accordion li.mobile-menu__list-item.is-active button')?.innerText;\r\n let uiLocation = \"universal nav\";\r\n if (parentCategory) {\r\n uiLocation = \"universal nav - \" + parentCategory.toLowerCase() + \" menu\";\r\n }\r\n return uiLocation;\r\n}\r\nDataLayerNavigation.prototype._categoryState = function(event, linkText) {\r\n const getLinkType = event.currentTarget.getAttribute(\"aria-expanded\") || event.target.getAttribute(\"aria-expanded\") || \"\";\r\n if (getLinkType && (getLinkType == \"false\")) {\r\n var updateVal = linkText + \" - collapse\";\r\n } else if (getLinkType && (getLinkType == \"true\")) {\r\n var updateVal = linkText + \" - expand\";\r\n }\r\n return updateVal.toLowerCase();\r\n}\r\n\r\n\r\nDataLayerNavigation.prototype._logoIntraction = function () {\r\n document.querySelector(\".main-nav__logo\")?.addEventListener('click', function (event) {\r\n const href = event.currentTarget.href || event.target.href || undefined;\r\n window.dataLayer.push({\r\n 'event': 'navClick',\r\n 'linkText': 'zoom logo',\r\n 'linkUrl': href,\r\n 'uiLocation': 'universal nav'\r\n })\r\n })\r\n}\n\nDataLayerNavigation.prototype._logoIntractionForShortHeader = function () {\n document.querySelector(\"nav.fdn-simple-header a\")?.addEventListener('click', function (event) {\n const href = event.currentTarget.href || event.target.href || undefined;\n window.dataLayer.push({\n 'event': 'navClick',\n 'linkText': 'zoom logo',\n 'linkUrl': href,\n 'uiLocation': 'universal nav'\n })\n })\n}\r\n\r\nDataLayerNavigation.prototype._menuWithoutExpand = function () {\r\n document.querySelectorAll(\".main-nav__list-item a.main-nav__link\").forEach(link => {\r\n link.addEventListener('click', function (event) {\r\n const href = event.currentTarget.href || event.target.href || undefined;\r\n var linkText = event.currentTarget.innerText || event.target.innerText || '';\n if (linkText) {\n linkText = ([...event.currentTarget.childNodes]\r\n .filter(node => node.nodeType === Node.TEXT_NODE)\r\n .map(node => node.textContent.trim())\r\n .join(\" \")).trim()?.toLowerCase()\r\n }\r\n window.dataLayer.push({\r\n 'event': 'navClick',\r\n 'linkText': linkText,\r\n 'linkUrl': href,\r\n 'uiLocation': 'universal nav'\r\n })\r\n })\r\n })\r\n}\r\n\r\nDataLayerNavigation.prototype._menuWithExpand = function () {\r\n document.querySelectorAll(\".main-nav__list-item button, .mobile-menu__list-item button\").forEach(link => {\r\n link.addEventListener('click', (event) => {\r\n var linkText = event.currentTarget.innerText || event.target.innerText || '';\r\n window.dataLayer.push({\r\n 'event': 'linkClick',\r\n 'linkText': this._categoryState(event, linkText),\r\n 'linkUrl': undefined,\r\n 'uiLocation': 'universal nav'\r\n })\r\n })\r\n })\r\n}\r\n\r\nDataLayerNavigation.prototype._logoTracking = function () {\r\n document.querySelectorAll(\".nav-title-logo\").forEach(link => {\r\n link.addEventListener('click', (event) => {\r\n const href = event.currentTarget.closest('a')?.getAttribute(\"href\");\r\n const linkText = event.currentTarget.getAttribute(\"title\") || event.target.getAttribute(\"title\") || '';\r\n const isDesktop = event.currentTarget.closest('div.megamenu-products--subtitle');\r\n const isMobileBanner = event.currentTarget.closest('div.mobile-megamenu-products--subtitle');\r\n const isMobile = event.currentTarget.closest('[class^=\"mobile-megamenu\"]');\r\n\r\n var uiLocation = isMobile ? this._getUiLocationMobile() : this._getUiLocation()\r\n if (isDesktop || isMobileBanner) {\r\n uiLocation = uiLocation + ' - ' + linkText.toLowerCase() + ' banner'\r\n }\r\n window.dataLayer.push({\r\n 'event': 'navClick',\r\n 'linkText': linkText.toLowerCase(),\r\n 'linkUrl': href || undefined,\r\n 'uiLocation': uiLocation.toLowerCase()\r\n })\r\n })\r\n })\r\n}\r\n\r\nDataLayerNavigation.prototype._universalDesktopMenu = function () {\r\n document.querySelectorAll(\"div.megamenu__column-title a.fdn-button, div.megamenu__list-item-heading a, div.apps-ecosystem a, div.megamenu-products--megamenu__list-item-heading-description a,li.action-bar-primary a, li.action-bar-secondary a\").forEach(link => {\r\n link.addEventListener('click', (event) => {\r\n const href = event.currentTarget.href || event.target.href || undefined;\r\n // const linkText = event.currentTarget.innerText || event.target.innerText || '';\r\n const getClosestClass = event.currentTarget.closest('div.megamenu-products--megamenu__list-item-heading-description');\r\n const isMobile = event.currentTarget.closest('[class^=\"mobile-megamenu\"]');\r\n const parentCategory = document.querySelector('ul.main-nav__list li.active button')?.innerText;\r\n var uiLocation = isMobile ? this._getUiLocationMobile() : this._getUiLocation()\r\n if (getClosestClass) {\r\n uiLocation = uiLocation + ' - zoom ai companion banner'\r\n }\r\n\r\n\r\n // Extract only the visible text (excluding )\r\n let linkText = [...link.childNodes]\r\n .filter(node => node.nodeType === Node.TEXT_NODE)\r\n .map(node => node.textContent.trim())\r\n .join(\" \");\r\n window.dataLayer.push({\r\n 'event': 'navClick',\r\n 'linkText': linkText?.trim()?.toLowerCase(),\r\n 'linkUrl': href,\r\n 'uiLocation': uiLocation.toLowerCase()\r\n })\r\n })\r\n })\r\n}\r\n\r\nDataLayerNavigation.prototype._universalMobileMenu = function () {\r\n document.querySelectorAll(\"div.mobile-megamenu__list-item-heading a, div.mobile-megamenu-products--megamenu__list-item-heading-description a,div.mobile-megamenu__actionBar ul li a\").forEach(link => {\r\n link.addEventListener('click', (event) => {\r\n const href = event.currentTarget.href || event.target.href || undefined;\r\n // const linkText = event.currentTarget.innerText || event.target.innerText || '';\r\n const getClosestClass = event.currentTarget.closest('div.mobile-megamenu-products--megamenu__list-item-heading-description');\r\n var uiLocation = this._getUiLocationMobile()\r\n if (getClosestClass) {\r\n uiLocation = uiLocation + ' - zoom ai companion banner'\r\n }\r\n\r\n\r\n // Extract only the visible text (excluding )\r\n let linkText = [...link.childNodes]\r\n .filter(node => node.nodeType === Node.TEXT_NODE)\r\n .map(node => node.textContent.trim())\r\n .join(\" \");\r\n window.dataLayer.push({\r\n 'event': 'navClick',\r\n 'linkText': linkText?.trim()?.toLowerCase(),\r\n 'linkUrl': href,\r\n 'uiLocation': uiLocation.toLowerCase()\r\n })\r\n })\r\n })\r\n\r\n document.querySelector('.main-nav__hamburger-trigger')?.addEventListener('click', function (event) {\r\n let attrVal = event.currentTarget.getAttribute(\"aria-expanded\") || event.target.getAttribute(\"aria-expanded\") || \"\"\r\n let isOpen = attrVal === \"true\";\r\n this.DataLayerHelper.pushEvent(\"navClick\", {\r\n linkText: isOpen ? \"expand\" : \"close\",\r\n linkUrl: undefined,\r\n uiLocation: \"universal nav mobile\"\r\n })\r\n }.bind(this));\r\n\r\n document.querySelectorAll('.mobile-menu__secondary-nav .mobile-menu__list-item a:not(.resources-nav-search)').forEach(cta => {\r\n cta.addEventListener(\"click\", function (event) {\r\n let childNodesArray = Array.from(cta.childNodes);\r\n let linkText = childNodesArray?.length > 1 ? childNodesArray\r\n .filter(node => node.nodeType === Node.TEXT_NODE) // Get only text nodes\r\n .map(node => node.textContent.trim()) // Extract the text and remove any extra spaces\r\n .join(' ') : cta.innerText?.trim();\r\n\r\n\r\n this.DataLayerHelper.pushEvent(\"navClick\", {\r\n linkText: linkText?.toLowerCase() || \"\",\r\n linkUrl: cta.href || undefined,\r\n uiLocation: \"universal nav\"\r\n })\r\n }.bind(this));\r\n })\r\n\r\n document.querySelector('.megamenu__column__businessService .megamenu__head .megamenu__column-title a')?.addEventListener(\"click\", function (event) {\r\n const href = event.currentTarget.href || event.target.href || undefined;\r\n const cta = event.currentTarget?.innerText || event.target?.innerText;\r\n this.DataLayerHelper.pushEvent(\"navClick\", {\r\n linkText: cta.toLowerCase() || undefined,\r\n linkUrl: href,\r\n uiLocation: \"universal nav - business services menu\"\r\n })\r\n }.bind(this));\r\n\r\n document.querySelector('.mobile-megamenu__column__businessService .mobile-megamenu__head .mobile-megamenu__column-title a')?.addEventListener(\"click\", function (event) {\r\n const href = event.currentTarget.href || event.target.href || undefined;\r\n const cta = event.currentTarget?.innerText || event.target?.innerText;\r\n this.DataLayerHelper.pushEvent(\"navClick\", {\r\n linkText: cta.toLowerCase() || undefined,\r\n linkUrl: href,\r\n uiLocation: \"universal nav - business services menu\"\r\n })\r\n }.bind(this))\r\n}\r\n\r\nDataLayerNavigation.prototype._resourceMenu = function () {\r\n document.querySelectorAll(\".resources-nav__dropdown-link:not([href*='download']):not([href*='join']):not([href*='webmeeting'])\").forEach(link => {\r\n link.addEventListener('click', function (event) {\r\n\r\n let cta = event.target.closest('.resources-nav__dropdown-list-item').querySelector('a');\n\n let linkText = ([...cta.childNodes]\r\n .filter(node => node.nodeType === Node.TEXT_NODE)\r\n .map(node => node.textContent.trim())\r\n .join(\" \")).trim()?.toLowerCase()\n\r\n const href = cta.href || undefined;\r\n window.dataLayer.push({\r\n 'event': 'navClick',\r\n 'linkText': linkText,\r\n 'linkUrl': href,\r\n 'uiLocation': 'universal nav - product selector menu'\r\n })\r\n })\r\n })\r\n\r\n document.querySelectorAll(\"button.resources-nav-product-menu\").forEach(link => {\r\n link.addEventListener('click', (event) => {\r\n const href = event.currentTarget.href || event.target.href || undefined;\r\n var linkText = this._categoryState(event, \"product selector menu\");\r\n window.dataLayer.push({\r\n 'event': 'navClick',\r\n 'linkText': linkText.toLowerCase(),\r\n 'linkUrl': href,\r\n 'uiLocation': 'universal nav'\r\n })\r\n })\r\n })\r\n\r\n document.querySelector(\"button.resources-nav-account-option\")?.addEventListener('click', function (event) {\r\n window.dataLayer.push({\r\n 'event': 'navClick',\r\n 'linkText': 'my account',\r\n 'linkUrl': \"#\",\r\n 'uiLocation': 'universal nav'\r\n })\r\n })\r\n\r\n document.querySelectorAll('li.resources-nav__list-item.nav__list-item-webapp > a').forEach(menuLink => {\r\n menuLink.addEventListener(\"click\", function (event) {\r\n\r\n this.DataLayerHelper.pushEvent(\"navClick\", {\r\n linkText: menuLink.innerText?.trim().toLowerCase() || \"\",\r\n linkUrl: menuLink.href || undefined,\r\n uiLocation: \"universal nav - product selector menu\"\r\n })\r\n }.bind(this))\r\n })\r\n\r\n document.querySelectorAll('.resources-nav-search').forEach(cta => {\r\n cta.addEventListener(\"click\", function (event) {\r\n this.DataLayerHelper.pushEvent(\"searchInteraction\", {\r\n searchInteraction: 'search bar clicked',\r\n uiLocation: \"universal nav\"\r\n })\r\n }.bind(this))\r\n })\r\n}\r\n\r\nDataLayerNavigation.prototype._mobileSignUp = function () {\r\n document.querySelectorAll('.mobile-menu__buttons-container a').forEach(cta => {\r\n cta.addEventListener(\"click\", function (event) {\r\n let childNodesArray = Array.from(cta.childNodes);\r\n let linkText = childNodesArray?.length > 1 ? childNodesArray\r\n .filter(node => node.nodeType === Node.TEXT_NODE) // Get only text nodes\r\n .map(node => node.textContent.trim()) // Extract the text and remove any extra spaces\r\n .join(' ') : cta.innerText?.trim();\r\n this.DataLayerHelper.pushEvent(\"navClick\", {\r\n linkText: linkText?.toLowerCase() || \"\",\r\n linkUrl: cta.href || undefined,\r\n uiLocation: \"universal nav\"\r\n })\r\n }.bind(this))\r\n })\r\n}\r\n\r\nDataLayerNavigation.prototype._mobilePricingEvent = function () {\r\n document.querySelectorAll('.resources-nav__list-item.pricing a').forEach(cta => {\r\n cta.addEventListener(\"click\", function (event) {\r\n this.DataLayerHelper.pushEvent(\"navClick\", {\r\n linkText: cta?.innerText?.toLowerCase() || \"\",\r\n linkUrl: cta.href || undefined,\r\n uiLocation: \"universal nav\"\r\n })\r\n }.bind(this))\r\n })\r\n}\r\n\r\nDataLayerNavigation.prototype._zoomProductAndContactSaleButton = function () {\r\n document.querySelectorAll(\"li.resources-nav__list-item.nav__list-item-webapp .resources-nav__dropdown-list-webapprestricted .fdn-button\").forEach(button => {\r\n button.addEventListener(\"click\", function (event) {\r\n if (!event) return\n let linkText = ([...event.currentTarget.childNodes]\r\n .filter(node => node.nodeType === Node.TEXT_NODE)\r\n .map(node => node.textContent.trim())\r\n .join(\" \")).trim()?.toLowerCase()\r\n const linkUrl = event.currentTarget?.href || undefined\r\n let uiLocation = \"universal nav - product selector menu\"\r\n // Push event data to the data layer\r\n this.DataLayerHelper.pushEvent(\"navClick\", {\r\n linkText: linkText,\r\n linkUrl: linkUrl,\r\n uiLocation: uiLocation\r\n });\r\n }.bind(this));\r\n });\r\n}\r\n\r\nDataLayerNavigation.prototype._trackClickEvents = function (event) {\r\n document.addEventListener(\"click\", this._trackNavigationEvents.bind(this));\r\n}\r\n\r\nDataLayerNavigation.prototype._trackNavigationEvents = function (event) {\r\n this._trackSolutionsMenuClick(event)\r\n this._trackResourcesMenuClick(event)\r\n this._trackNavLinksClick(event)\r\n}\r\n// Track clicks in the Solutions menu\r\nDataLayerNavigation.prototype._trackSolutionsMenuClick = function (event) {\r\n let solutionsAnchor = event.target.closest(\"section.megamenu-solutions[aria-label='Solutions'] .megamenu__head a\");\r\n\r\n if (solutionsAnchor) {\r\n let childNodesArray = Array.from(solutionsAnchor.childNodes);\r\n let linkText = childNodesArray\r\n .filter(node => node.nodeType === Node.TEXT_NODE) // Get only text nodes\r\n .map(node => node.textContent.trim()) // Extract the text and remove any extra spaces\r\n .join(' ');\r\n this.DataLayerHelper.pushEvent(\"navClick\", {\r\n linkText: linkText?.toLowerCase() || \"\",\r\n linkUrl: solutionsAnchor.href || undefined,\r\n uiLocation: \"universal nav - solutions menu\"\r\n })\r\n }\r\n}\r\n// Track clicks in the Resources menu\r\nDataLayerNavigation.prototype._trackResourcesMenuClick = function (event) {\r\n let resourcesMenuLink = event.target.closest(\".megamenu__highlight-item-cta\");\r\n let mobileResourcesMenuLink = event.target.closest(\".mobile-megamenu__highlight-item-heading a\")\r\n if (mobileResourcesMenuLink)\r\n resourcesMenuLink = mobileResourcesMenuLink\r\n\r\n if (resourcesMenuLink) {\r\n try {\r\n this.DataLayerHelper.pushEvent(\"navClick\", {\r\n linkText: resourcesMenuLink.innerText?.trim().toLowerCase() || \"\",\r\n linkUrl: resourcesMenuLink.href || undefined,\r\n uiLocation: \"universal nav - resources menu\"\r\n })\r\n } catch (e) {\r\n }\r\n }\r\n}\r\n// Universal Navigation Menu\r\nDataLayerNavigation.prototype._trackNavLinksClick = function (event) {\r\n\n let link = event.target.closest(\r \".main-nav__right .resources-nav__list-item:not(.pricing) > a:not(.resources-nav-search), \" +\r \".main-nav__right .resources-nav__list-item:not(.pricing) > button.resources-nav__dropdownrestricted, \" +\r \".main-nav__right .resources-nav__list-item:not(.pricing) .resources-nav__dropdown-listrestricted .resources-nav__dropdown-link[href*='download']\"\r );\r\n\r\n let dropdown = link?.closest(\".resources-nav__dropdownrestricted\");\r\n\r\n if (!link) {\r\n return;\r\n }\r\n try {\n let linkText = ([...link.childNodes]\r\n .filter(node => node.nodeType === Node.TEXT_NODE)\r\n .map(node => node.textContent.trim())\r\n .join(\" \")).trim()?.toLowerCase(),\r\n linkUrl = link.href || undefined,\r\n uiLocation = link.matches(\".resources-nav__dropdown-listrestricted .resources-nav__dropdown-link[href*='download']\")\r\n ? \"universal nav - meet\"\r\n : \"universal nav\";\r\n\r\n if (dropdown) {\r\n let isOpen = dropdown.getAttribute(\"aria-expanded\") === \"true\";\r\n let action = `${linkText} - ${isOpen ? \"expand\" : \"collapse\"}`;\r\n this.DataLayerHelper.pushEvent(\"navClick\", {\r\n linkText: action,\r\n linkUrl: undefined,\r\n uiLocation\r\n })\r\n } else {\r\n this.DataLayerHelper.pushEvent(\"navClick\", {\r\n linkText,\r\n linkUrl,\r\n uiLocation\r\n })\r\n }\r\n } catch (e) {\r\n }\r\n}\r\n\r\nexport { DataLayerNavigation }\r\n","function DataLayerNavigationVfive() {\r\n this.universalNavMobileLocation = 'universal nav mobile'\r\n this.universalNavDesktopLocation = 'universal nav'\r\n this.navClickEventName = 'navClick'\r\n this.searchIntractionEvent = 'searchInteraction'\r\n this.searchBarClickIntraction = 'search bar clicked'\r\n\r\n this.DataLayerHelper = {\r\n pushEvent: function (eventName, data = {}) {\r\n if (!eventName) return;\r\n let eventData = { event: eventName };\r\n Object.keys(data).forEach(key => {\r\n eventData[key] = (data[key] === \"\") ? undefined : data[key];\r\n });\r\n window.dataLayer = window.dataLayer || [];\r\n window.dataLayer.push(eventData);\r\n }\r\n };\r\n}\r\n\r\nDataLayerNavigationVfive.prototype._init = function () {\r\n try {\r\n this._mobileHamburgerClick(this.navClickEventName, this.universalNavMobileLocation);\r\n this._searchClickIntraction(this.searchIntractionEvent, this.searchBarClickIntraction, this.universalNavMobileLocation);\r\n this._mobileFooterMenuItems(this.navClickEventName, this.universalNavMobileLocation);\r\n this._waffleMenu(this.navClickEventName, this.universalNavDesktopLocation)\r\n this._waffleButtons(this.navClickEventName, this.universalNavDesktopLocation)\r\n this._waffleViewAll(this.navClickEventName)\r\n this._zoomLogoEvent()\r\n this._singleLinkNavEvent()\r\n this._universalNavigationMenu()\r\n this._userProfile(this.navClickEventName, this.universalNavDesktopLocation)\r\n this._userAccountDetail(this.navClickEventName, this.universalNavDesktopLocation)\r\n this._pricingEvent(this.navClickEventName, this.universalNavDesktopLocation)\r\n this._productMenuTabsClicks()\r\n this._productMenuTabsLearnMoreClicks()\r\n this._downloadCenterClicks()\r\n this._DeveloperAppCenterClicks()\r\n this._trackAllUniversalNavHubPageClicks()\r\n this._trackAllUniversalNavMenuClicks()\r\n this._searchClicks()\r\n this._trackMeetExpandCollapse()\r\n this._trackMeetDropdownLinks()\r\n this._trackMobileNavLinkClicks()\r\n this._trackMobileNavBackClicks()\r\n this._applicationDownloadCenterClicks(this.navClickEventName, this.universalNavMobileLocation)\r\n this._productAppMobileClicks(this.navClickEventName, this.universalNavMobileLocation)\r\n this._moblieSignUpClicks(this.navClickEventName, this.universalNavMobileLocation)\r\n this._productsTabItemToggle()\r\n }\r\n catch (e) { }\r\n}\r\n\r\nDataLayerNavigationVfive.prototype._productsTabItemToggle = function () {\r\n const links = document.querySelectorAll(\"#accordion-content-products .zdcm-megamenu__workplace__column > ul > li.zdcm-megamenu__list-item-heading--disabled\");\r\n if (links.length > 0) {\r\n links.forEach(link => {\r\n link.addEventListener('click', function (event) {\r\n const href = undefined;\r\n var linkText = event.currentTarget.innerText || event.target.innerText || '';\r\n if (event.currentTarget.getAttribute(\"aria-expanded\") == \"true\") {\r\n linkText = linkText.toLowerCase() + \" - expand\"\r\n } else {\r\n linkText = linkText.toLowerCase() + \" - collapse\"\r\n }\r\n window.dataLayer.push({\r\n 'event': 'navClick',\r\n 'linkText': linkText.toLowerCase(),\r\n 'linkUrl': href,\r\n 'uiLocation': 'universal nav - products menu'\r\n });\r\n });\r\n });\r\n }\r\n}\r\n//Mobile Menu Tracking\r\nDataLayerNavigationVfive.prototype._applicationDownloadCenterClicks = function (navClickEventName, universalNavMobileLocation) {\r\n const links = document.querySelectorAll(\".zdcm-mobile-menu .zdcm-mobile-menu__footer .zdcm-download-wrapper .zdcm-mobile-download-card a, .zdcm-main-nav .zdcm-download-wrapper .zdcm-mobile-download-card a, .zdcm-mobile-menu .zdcm-tablet-menu__footer .zdcm-download-wrapper .zdcm-mobile-download-card a,.zdcm-tablet-menu__itmes .zdcm-mobile-download-card a\");\r\n if (links.length > 0) {\r\n links.forEach(link => {\r\n link.addEventListener('click', function (event) {\r\n const href = event.currentTarget.href || event.target.href || undefined;\r\n const linkText = link.querySelector(\".zdcm-mobile-donwload-content-title\")?.innerText?.split('\\n')[0].trim() ?? '';\r\n window.dataLayer.push({\r\n 'event': navClickEventName,\r\n 'linkText': linkText.toLowerCase(),\r\n 'linkUrl': href,\r\n 'uiLocation': universalNavMobileLocation\r\n });\r\n });\r\n });\r\n }\r\n}\r\n\r\nDataLayerNavigationVfive.prototype._productAppMobileClicks = function (navClickEventName, universalNavMobileLocation) {\r\n const links = document.querySelectorAll(\".zdcm-mobile-menu .zdcm-mobile-menu__footer .zdcm-mobile-level-2-items .zdcm-mobile-download-card > a\");\r\n if (links.length > 0) {\r\n links.forEach(link => {\r\n link.addEventListener('click', function (event) {\r\n const href = event.currentTarget.href || event.target.href || undefined;\r\n const linkText = link.querySelector(\".zdcm-mobile-donwload-content-item\")?.textContent.trim() ?? '';\r\n window.dataLayer.push({\r\n 'event': navClickEventName,\r\n 'linkText': linkText.toLowerCase(),\r\n 'linkUrl': href,\r\n 'uiLocation': universalNavMobileLocation\r\n });\r\n });\r\n });\r\n }\r\n}\r\n\r\nDataLayerNavigationVfive.prototype._moblieSignUpClicks = function (navClickEventName, universalNavMobileLocation) {\r\n const links = document.querySelectorAll(\".zdcm-mobile-menu .zdcm-mobile-menu__footer .zdcm-footer-cta-wrapper, .zdcm-mobile-profile-actions-cta, .zdcm-mobile-menu .zdcm-tablet-menu__footer .zdcm-footer-cta-wrapper,.zdcm-hub-mobile-menu-static-items ul > li > a\");\r\n if (links.length > 0) {\r\n links.forEach(link => {\r\n link.addEventListener('click', function (event) {\r\n const href = event.currentTarget.href || event.target.href || undefined;\r\n var linkText = link.querySelector(\"span.visually-hidden\")?.textContent.trim() ?? '';\r\n if (!linkText || linkText == \"\") {\r\n var linkText = event.currentTarget.innerText;\r\n }\r\n window.dataLayer.push({\r\n 'event': navClickEventName,\r\n 'linkText': linkText.toLowerCase(),\r\n 'linkUrl': href,\r\n 'uiLocation': universalNavMobileLocation\r\n });\r\n });\r\n });\r\n }\r\n}\r\n\r\nDataLayerNavigationVfive.prototype._pricingEvent = function (navClickEventName, universalNavDesktopLocation) {\r\n const links = document.querySelectorAll('li.zdcm-mobile-menu__list-item a.zdcm-mobile-menu__link');\r\n if (links.length > 0) {\r\n links.forEach(link => {\r\n link.addEventListener('click', function (event) {\r\n const href = event.currentTarget.href || event.target.href || undefined;\r\n var linkText = event.currentTarget.innerText || event.target.innerText || '';\r\n if (linkText) {\r\n linkText = ([...event.currentTarget.childNodes]\r\n .filter(node => node.nodeType === Node.TEXT_NODE)\r\n .map(node => node.textContent.trim())\r\n .join(\" \")).trim()?.toLowerCase()\r\n }\r\n window.dataLayer.push({\r\n 'event': navClickEventName,\r\n 'linkText': linkText,\r\n 'linkUrl': href,\r\n 'uiLocation': universalNavDesktopLocation\r\n })\r\n })\r\n })\r\n }\r\n}\r\n\r\n\r\nDataLayerNavigationVfive.prototype._userProfile = function (navClickEventName, universalNavDesktopLocation) {\r\n var userInfoClick = document.querySelector('button.zdcm-user-info');\r\n\r\n if (userInfoClick != null) {\r\n userInfoClick.addEventListener('click', () => {\r\n\r\n let eventData = {\r\n event: navClickEventName,\r\n linkText: 'my account',\r\n linkUrl: undefined,\r\n uiLocation: universalNavDesktopLocation\r\n };\r\n window.dataLayer.push(eventData);\r\n });\r\n }\r\n}\r\n\r\nDataLayerNavigationVfive.prototype._userAccountDetail = function (navClickEventName, universalNavDesktopLocation) {\r\n const links = document.querySelectorAll('li.zdcm-resources-nav__dropdown-list-item a');\r\n if (links.length > 0) {\r\n links.forEach(link => {\r\n link.addEventListener('click', function (event) {\r\n const href = event.currentTarget.href || event.target.href || undefined;\r\n var linkText = event.currentTarget.getAttribute(\"Title\")\r\n if (linkText == \"\" || linkText == null) {\r\n var downloadCenter = event.currentTarget.querySelector(\".zdcm-donwload-content-title\")\r\n if (downloadCenter != null) {\r\n linkText = downloadCenter.innerText;\r\n }\r\n else {\r\n linkText = \"my account\";\r\n }\r\n }\r\n window.dataLayer.push({\r\n 'event': navClickEventName,\r\n 'linkText': linkText.toLowerCase(),\r\n 'linkUrl': href,\r\n 'uiLocation': universalNavDesktopLocation + ' - my account'\r\n })\r\n })\r\n })\r\n }\r\n}\r\n\r\nDataLayerNavigationVfive.prototype._waffleMenu = function (navClickEventName, universalNavDesktopLocation) {\r\n var waffleMenuClick = document.querySelector('li.zdcm-item-waffle button.zdcm-waffle-menu');\r\n\r\n if (waffleMenuClick != null) {\r\n waffleMenuClick.addEventListener('click', () => {\r\n var linkText = (waffleMenuClick.ariaExpanded == \"true\") ? \"product selector menu - expand\" : \"product selector menu - close\";\r\n\r\n let eventData = {\r\n event: navClickEventName,\r\n linkText: linkText,\r\n uiLocation: universalNavDesktopLocation\r\n };\r\n window.dataLayer.push(eventData);\r\n });\r\n }\r\n}\r\n\r\nDataLayerNavigationVfive.prototype._waffleViewAll = function (navClickEventName) {\r\n var waffleViewAllClick = document.querySelector('span.zdcm-waffle-title-cta a');\r\n\r\n if (waffleViewAllClick != null) {\r\n waffleViewAllClick.addEventListener('click', (event) => {\r\n const href = event.currentTarget.href || event.target.href || undefined;\r\n var linkText = event.currentTarget.innerText || event.target.innerText || '';\r\n if (linkText) {\r\n linkText = ([...event.currentTarget.childNodes]\r\n .filter(node => node.nodeType === Node.TEXT_NODE)\r\n .map(node => node.textContent.trim())\r\n .join(\" \")).trim()?.toLowerCase()\r\n }\r\n window.dataLayer.push({\r\n 'event': navClickEventName,\r\n 'linkText': linkText,\r\n 'linkUrl': href,\r\n 'uiLocation': 'universal nav - product selector menu'\r\n })\r\n });\r\n }\r\n}\r\n\r\n\r\n\r\nDataLayerNavigationVfive.prototype._waffleButtons = function (navClickEventName, universalNavDesktopLocation) {\r\n const links = document.querySelectorAll('li.zdcm-item-waffle div.zdcm-megamenu.zdcm-megamenu-fit > div > a, li.zdcm-item-waffle div.zdcm-megamenu.zdcm-megamenu-fit > div > div > a');\r\n if (links.length > 0) {\r\n links.forEach(link => {\r\n link.addEventListener('click', function (event) {\r\n const href = event.currentTarget.href || event.target.href || undefined;\r\n var linkText = event.currentTarget.innerText || event.target.innerText || '';\r\n if (linkText) {\r\n var textContent = ([...event.currentTarget.childNodes]\r\n .filter(node => node.nodeType === Node.TEXT_NODE)\r\n .map(node => node.textContent.trim())\r\n .join(\" \")).trim()?.toLowerCase()\r\n linkText = textContent ? textContent : linkText.toLowerCase();\r\n }\r\n window.dataLayer.push({\r\n 'event': navClickEventName,\r\n 'linkText': linkText,\r\n 'linkUrl': href,\r\n 'uiLocation': universalNavDesktopLocation + ' - product selector menu'\r\n })\r\n })\r\n })\r\n }\r\n}\r\n\r\n\r\nDataLayerNavigationVfive.prototype._mobileHamburgerClick = function (navClickEventName, universalNavMobileLocation) {\r\n var mobileHamburger = document.querySelector('li.zdcm-mobile-hamburger button.zdcm-main-nav__hamburger-trigger');\r\n\r\n if (mobileHamburger != null) {\r\n mobileHamburger.addEventListener('click', () => {\r\n var linkText = (mobileHamburger.ariaExpanded == \"true\") ? \"expand\" : \"close\";\r\n\r\n let eventData = {\r\n event: navClickEventName,\r\n linkText: linkText,\r\n uiLocation: universalNavMobileLocation\r\n };\r\n window.dataLayer.push(eventData);\r\n });\r\n }\r\n}\r\n\r\nDataLayerNavigationVfive.prototype._searchClickIntraction = function (searchIntractionEvent, searchBarClickIntraction, universalNavMobileLocation) {\r\n const observer = new MutationObserver(() => {\r\n const searchBoxClick = document.querySelector('#standaloneSearchboxMobile .magic-box-input input');\r\n if (searchBoxClick) {\r\n searchBoxClick.addEventListener('click', () => {\r\n const eventData = {\r\n event: searchIntractionEvent,\r\n searchInteraction: searchBarClickIntraction,\r\n uiLocation: universalNavMobileLocation\r\n };\r\n window.dataLayer.push(eventData);\r\n });\r\n observer.disconnect(); // Stop observing once it's bound\r\n }\r\n });\r\n observer.observe(document.body, { childList: true, subtree: true });\r\n}\r\n\r\nDataLayerNavigationVfive.prototype._mobileFooterMenuItems = function (navClickEventName, universalNavMobileLocation) {\r\n const links = document.querySelectorAll(\"div.zdcm-mobile-footer-menu-items ul li a\");\r\n if (links.length > 0) {\r\n links.forEach(link => {\r\n link.addEventListener('click', function (event) {\r\n const href = event.currentTarget.href || event.target.href || undefined;\r\n var linkText = event.currentTarget.innerText || event.target.innerText || '';\r\n var eventName = navClickEventName;\r\n if (href && href.includes('tel:')) {\r\n eventName = \"phoneClick\";\r\n }\r\n if (linkText) {\r\n linkText = ([...event.currentTarget.childNodes]\r\n .filter(node => node.nodeType === Node.TEXT_NODE)\r\n .map(node => node.textContent.trim())\r\n .join(\" \")).trim()?.toLowerCase()\r\n }\r\n if (eventName != \"phoneClick\") {\r\n window.dataLayer.push({\r\n 'event': eventName,\r\n 'linkText': linkText,\r\n 'linkUrl': href,\r\n 'uiLocation': universalNavMobileLocation\r\n })\r\n }\r\n })\r\n })\r\n }\r\n}\r\n\r\n/** Zoom Logo Event **/\r\nDataLayerNavigationVfive.prototype._zoomLogoEvent = function() {\r\n document.querySelector(\".zdcm-main-nav__left .zdcm-main-nav__logo\")?.addEventListener('click', function (event) {\r\n const href = event.currentTarget.href || event.target.href || undefined;\r\n window.dataLayer.push({\r\n 'event': 'navClick',\r\n 'linkText': 'zoom logo',\r\n 'linkUrl': href,\r\n 'uiLocation': 'universal nav'\r\n })\r\n });\r\n}\r\n\r\n\r\nDataLayerNavigationVfive.prototype._singleLinkNavEvent = function () {\r\n const links = document.querySelectorAll(\".zdcm-main-nav__list-item > a\");\r\n if (links.length > 0) {\r\n links.forEach(link => {\r\n link.addEventListener('click', function (event) {\r\n const href = event.currentTarget.href || event.target.href || undefined;\r\n var linkText = event.currentTarget.innerText || event.target.innerText || '';\r\n if (linkText) {\r\n var textContent = ([...event.currentTarget.childNodes]\r\n .filter(node => node.nodeType === Node.TEXT_NODE)\r\n .map(node => node.textContent.trim())\r\n .join(\" \")).trim()?.toLowerCase()\r\n linkText = textContent ? textContent : linkText.toLowerCase();\r\n }\r\n window.dataLayer.push({\r\n 'event': 'navClick',\r\n 'linkText': linkText,\r\n 'linkUrl': href,\r\n 'uiLocation': 'universal nav'\r\n })\r\n })\r\n })\r\n }\r\n}\r\n\r\n/** Universal Navigation Menu **/\r\nDataLayerNavigationVfive.prototype._universalNavigationMenu = function () {\r\n const links = document.querySelectorAll(\".zdcm-main-nav__left .zdcm-main-nav__megamenu-trigger\");\r\n if (links.length > 0) {\r\n links.forEach(function (item) {\r\n item?.addEventListener('click', function (event) {\r\n const clickedItem = event.currentTarget;\r\n const labelText = clickedItem.textContent.trim().toLowerCase();\r\n const href = clickedItem.href || undefined;\r\n const parentLi = clickedItem.closest('li');\r\n\r\n setTimeout(function () {\r\n const isExpanded = parentLi && parentLi.classList.contains('zdcm-active');\r\n const linkText = `${labelText} - ${isExpanded ? 'expand' : 'collapse'}`;\r\n\r\n window.dataLayer = window.dataLayer || [];\r\n window.dataLayer.push({\r\n event: 'linkClick',\r\n linkText: linkText,\r\n linkUrl: href,\r\n uiLocation: 'universal nav'\r\n });\r\n }, 50); // let class update apply\r\n });\r\n });\r\n }\r\n}\r\n\r\n/** Universal Navigation menu - Product menu Ends **/\r\n\r\nDataLayerNavigationVfive.prototype._productMenuTabsClicks = function (){\r\n const links = document.querySelectorAll(\"nav.zdcm-main-nav .zdcm-main-nav__left .zdcm-main-nav__list-item .zdcm-megamenu-products-wrapper .fdn-tabs__tablist .fdn-tabs__tab, .zdcm-mobile-menu__main-nav #accordion-content-products .zdcm-megamenu-products-wrapper .fdn-tabs__tablist .fdn-tabs__tab, .zdcm-mobile-menu__content-panel .zdcm-megamenu-products-wrapper .fdn-tabs__tablist .fdn-tabs__tab\");\r\n if (links.length > 0) {\r\n links.forEach(link => {\r\n link.addEventListener('click', function (event) {\r\n const href = event.currentTarget.href || event.target.href || undefined;\r\n const linkText = link.querySelector(\".fdn-tabs__title\")?.textContent.trim() ?? '';\r\n if (!href) {\r\n window.dataLayer.push({\r\n 'event': 'navClick',\r\n 'linkText': linkText.toLowerCase(),\r\n 'linkUrl': href,\r\n 'uiLocation': 'universal nav - products menu'\r\n });\r\n }\r\n });\r\n });\r\n }\r\n}\r\n\r\nDataLayerNavigationVfive.prototype._productMenuTabsLearnMoreClicks = function () {\r\n const links = document.querySelectorAll(\"nav.zdcm-main-nav .zdcm-main-nav__left .zdcm-main-nav__list-item .zdcm-megamenu-products-wrapper .fdn-tabs__tablist .fdn-tabs__tab a\");\r\n if (links.length > 0) {\r\n links.forEach(link => {\r\n link.addEventListener('click', function (event) {\r\n const href = event.currentTarget.href || event.target.href || undefined;\r\n var linkText = event.currentTarget?.offsetParent?.getAttribute(\"title\")?.toLowerCase() || \"\"\r\n if (href) {\r\n window.dataLayer.push({\r\n 'event': 'navClick',\r\n 'linkText': linkText + ' - learn more',\r\n 'linkUrl': href,\r\n 'uiLocation': 'universal nav - products menu'\r\n });\r\n }\r\n });\r\n });\r\n }\r\n}\r\n\r\nDataLayerNavigationVfive.prototype._downloadCenterClicks = function () {\r\n const links = document.querySelectorAll(\"nav.zdcm-main-nav .zdcm-main-nav__left .zdcm-main-nav__list-item .zdcm-megamenu-products-action-wrapper .zdcm-items-right .zdcm-megamenu-products-download-card:not(.zdcm-megamenu-products-support) a\");\r\n if (links.length > 0) {\r\n links.forEach(link => {\r\n link.addEventListener('click', function (event) {\r\n const href = event.currentTarget.href || event.target.href || undefined;\r\n const linkText = link.querySelector(\".zdcm-donwload-content-title\")?.textContent.trim() ?? '';\r\n\r\n window.dataLayer.push({\r\n 'event': 'navClick',\r\n 'linkText': linkText.toLowerCase(),\r\n 'linkUrl': href,\r\n 'uiLocation': 'universal nav'\r\n });\r\n });\r\n });\r\n }\r\n}\r\n\r\nDataLayerNavigationVfive.prototype._DeveloperAppCenterClicks = function () {\r\n const links = document.querySelectorAll(\"nav.zdcm-main-nav .zdcm-main-nav__left .zdcm-main-nav__list-item .zdcm-megamenu-products-action-wrapper .zdcm-megamenu-products-action:not(.zdcm-items-right) .zdcm-megamenu-products-download-card a\");\r\n if (links.length > 0) {\r\n links.forEach(link => {\r\n link.addEventListener('click', function (event) {\r\n const href = event.currentTarget.href || event.target.href || undefined;\r\n const linkText = link.querySelector(\".zdcm-donwload-content-title\")?.textContent.trim() ?? '';\r\n\r\n window.dataLayer.push({\r\n 'event': 'navClick',\r\n 'linkText': linkText.toLowerCase(),\r\n 'linkUrl': href,\r\n 'uiLocation': 'universal nav'\r\n });\r\n });\r\n });\r\n }\r\n}\r\n\r\nDataLayerNavigationVfive.prototype._trackAllUniversalNavMenuClicks = function () {\r\n const links = document.querySelectorAll(\"nav.zdcm-main-nav .zdcm-main-nav__left .zdcm-megamenu-products-wrapper .zdcm-megamenu-products-categories .zdcm-megamenu__workplace__column .zdcm-megamenu__list-item a, nav.zdcm-mobile-menu .zdcm-accordion-content .zdcm-megamenu-products-wrapper .zdcm-megamenu-products-categories .zdcm-megamenu__workplace__column .zdcm-megamenu__list-item a,.zdcm-mobile-menu__content-panel .zdcm-megamenu-products-wrapper .zdcm-megamenu-products-categories .zdcm-megamenu__workplace__column .zdcm-megamenu__list-item a\");\r\n if (links.length > 0) {\r\n links.forEach(link => {\r\n link.addEventListener('click', function (event) {\r\n const href = event.currentTarget.href || event.target.href || undefined;\r\n const linkText = link.querySelector(\"span.visually-hidden\")?.textContent.trim() ?? '';\r\n const menuName = event.target.closest('.zdcm-megamenu')?.getAttribute(\"aria-label\")?.toLowerCase();\r\n window.dataLayer.push({\r\n 'event': 'navClick',\r\n 'linkText': linkText.toLowerCase(),\r\n 'linkUrl': href,\r\n 'uiLocation': 'universal nav - ' + menuName + ' menu'\r\n });\r\n });\r\n });\r\n }\r\n}\r\n\r\n\r\n//Function for hub page new Navigation\r\nDataLayerNavigationVfive.prototype._trackAllUniversalNavHubPageClicks = function () {\r\n const links = document.querySelectorAll(\"nav.zdcm-main-nav .zdcm-main-nav__left .zdcm-main-nav__list-item .zdcm-megamenu-fit .zdcm-main-nav__dropdown-list-item a\");\r\n if (links.length > 0) {\r\n links.forEach(link => {\r\n link.addEventListener('click', function (event) {\r\n const href = event.currentTarget.href || event.target.href || undefined;\r\n const linkText = event.currentTarget.innerText || '';\r\n\r\n window.dataLayer.push({\r\n 'event': 'navClick',\r\n 'linkText': linkText.toLowerCase(),\r\n 'linkUrl': href,\r\n 'uiLocation': 'universal nav - ' + linkText.toLowerCase() + ' menu'\r\n });\r\n });\r\n });\r\n }\r\n}\r\n\r\n\r\n/** Universal Nav Menu - Search **/\r\nDataLayerNavigationVfive.prototype._searchClicks = function () {\r\n const links = document.querySelectorAll(\"#coveoSearchHeader\");\r\n if (links.length > 0) {\r\n links.forEach(link => {\r\n link.addEventListener('click', function (event) {\r\n const isExpanded = link.getAttribute('aria-expanded') === 'true';\r\n\r\n window.dataLayer.push({\r\n 'event': 'searchInteraction',\r\n 'searchInteraction': isExpanded ? 'search bar clicked' : 'clear search',\r\n 'uiLocation': 'universal nav'\r\n });\r\n });\r\n });\r\n }\r\n}\r\n\r\nDataLayerNavigationVfive.prototype._trackMeetExpandCollapse = function () {\r\n let meetButtons = document.querySelectorAll('.zdcm-item-meet > .zdcm-main-nav__megamenu-trigger')\r\n if (meetButtons.length > 0) {\r\n meetButtons.forEach((button, index) => {\r\n let previousState = button.getAttribute('aria-expanded')\r\n const observer = new MutationObserver((mutations) => {\r\n mutations.forEach((mutation) => {\r\n if (mutation.attributeName === 'aria-expanded') {\r\n const newState = button.getAttribute('aria-expanded')\r\n if (newState !== previousState) {\r\n previousState = newState\r\n const nextState = newState === 'true' ? 'expand' : 'collapse'\r\n this.DataLayerHelper.pushEvent('navClick', {\r\n linkText: `Meet - ${nextState}`,\r\n linkUrl: undefined,\r\n uiLocation: 'universal nav'\r\n })\r\n }\r\n }\r\n })\r\n })\r\n observer.observe(button, { attributes: true })\r\n })\r\n }\r\n}\r\n\r\nDataLayerNavigationVfive.prototype._trackMeetDropdownLinks = function () {\r\n const dropdownLinks = document.querySelectorAll('.zdcm-item-meet .zdcm-main-nav__dropdown-link');\r\n if (dropdownLinks.length > 0) {\r\n dropdownLinks.forEach((link) => {\r\n link.addEventListener('click', () => {\r\n const linkText = link.innerText?.split('\\n')[0].trim()\r\n const linkUrl = link.href\r\n\r\n this.DataLayerHelper.pushEvent('navClick', {\r\n linkText: linkText,\r\n linkUrl: linkUrl,\r\n uiLocation: 'universal nav - meet'\r\n })\r\n })\r\n })\r\n }\r\n}\r\n\r\nDataLayerNavigationVfive.prototype._trackMobileNavLinkClicks = function () {\r\n // Track accordion buttons (Products, AI, Solutions)\r\n const accordionButtons = document.querySelectorAll('.zdcm-mobile-menu__accordion.js-accordion-trigger')\r\n if (accordionButtons.length > 0) {\r\n accordionButtons.forEach((btn) => {\r\n btn.addEventListener('click', () => {\r\n const ariaExpand = btn?.getAttribute(\"aria-expanded\");\r\n const sectionName = btn?.textContent?.trim().toLowerCase();\r\n var linkText = sectionName;\r\n if (ariaExpand == 'true') {\r\n linkText = linkText + \" - expand\"\r\n } else {\r\n linkText = linkText + \" - collapse\"\r\n }\r\n this.DataLayerHelper.pushEvent('linkClick', {\r\n linkText: linkText,\r\n linkUrl: undefined,\r\n uiLocation: 'universal nav mobile'\r\n })\r\n })\r\n })\r\n }\r\n}\r\n\r\nDataLayerNavigationVfive.prototype._trackMobileNavBackClicks = function () {\r\n const accordionButtons = document.querySelectorAll('.zdcm-mobile-menu__accordion.js-accordion-trigger');\r\n accordionButtons.forEach((btn) => {\r\n btn.addEventListener('click', () => {\r\n const sectionName = btn.closest('li')?.getAttribute('data-content')?.trim() || btn.textContent.trim();\r\n setTimeout(() => {\r\n const backBtn = document.querySelector('.zdcm-mobile-back');\r\n if (backBtn) {\r\n backBtn.removeEventListener('click', backBtn._dlHandler);\r\n const handler = () => {\r\n this.DataLayerHelper.pushEvent('linkClick', {\r\n linkText: sectionName.toLowerCase() + ' - collapse',\r\n linkUrl: undefined,\r\n uiLocation: 'universal nav mobile',\r\n })\r\n }\r\n\r\n backBtn._dlHandler = handler;\r\n backBtn.addEventListener('click', handler);\r\n }\r\n }, 300)\r\n });\r\n });\r\n};\r\n\r\n\r\nexport { DataLayerNavigationVfive }\r\n","function DataLayerFooter() {\r\n this.footer = document.querySelector('.footer-content');\r\n\r\n this.DataLayerHelper = {\r\n pushEvent: function (eventName, data = {}) {\r\n if (!eventName) return;\r\n let eventData = { event: eventName }\r\n Object.keys(data).forEach(key => {\r\n eventData[key] = (data[key] === \"\") ? undefined : data[key];\r\n });\r\n\r\n window.dataLayer = window.dataLayer || []\r\n window.dataLayer.push(eventData)\r\n }\r\n };\r\n}\r\n\r\nDataLayerFooter.prototype._init = function () {\r\n if (this.footer) {\r\n this._trackFooterLinks()\r\n this._trackSocialLinks()\r\n this._trackLegalLinks()\r\n this._trackCurrencyDropdown()\r\n this._trackLanguageDropdown()\r\n this._trackFooterDesktopDownloadCenter()\r\n this._trackFooterMobileDownloadLinks()\r\n this._trackMobileCurrencyLanguageDropdowns()\r\n this._trackMobilePrimaryDropdownToggles()\r\n }\r\n}\r\n\r\nDataLayerFooter.prototype._trackFooterLinks = function () {\r\n this.footer.querySelectorAll('.zdcm-module-footer-nav__link').forEach(link => {\r\n link.addEventListener('click', (e) => {\r\n const href = link.href || undefined\r\n\r\n if (href && href.startsWith('tel:')) {\r\n return;\r\n }\r\n\r\n const linkLabel = [...link.childNodes]\r\n .filter(n => n.nodeType === Node.TEXT_NODE)\r\n .map(n => n.textContent.trim())\r\n .join(\" \").toLowerCase();\r\n\r\n const section = link.closest('section')\r\n const sectionHeader = section?.querySelector('.zdcm-module-footer-nav__title')?.getAttribute('Title')?.toLowerCase();\r\n\r\n const linkText = sectionHeader && linkLabel ? `${sectionHeader} - ${linkLabel}` : linkLabel;\r\n\r\n this.DataLayerHelper.pushEvent(\"navClick\", {\r\n linkText,\r\n linkUrl: href,\r\n uiLocation: \"universal footer\"\r\n });\r\n });\r\n });\r\n\r\n this.footer.querySelectorAll('.zdcm-module-footer-nav__title').forEach(mainLink => {\r\n if (window.innerWidth > 1024) {\r\n mainLink.addEventListener('click', (e) => {\r\n const href = mainLink.href || undefined;\r\n const linkText = mainLink.innerText?.split('\\n')[0].trim()\r\n\r\n this.DataLayerHelper.pushEvent(\"navClick\", {\r\n linkText,\r\n linkUrl: href,\r\n uiLocation: \"universal footer\"\r\n });\r\n });\r\n }\r\n });\r\n};\r\n\r\nDataLayerFooter.prototype._trackSocialLinks = function () {\r\n this.footer.querySelectorAll('ul.social__list li.social__item a.social__link').forEach(link => {\r\n link.addEventListener('click', () => {\r\n const platform = link.title?.trim().toLowerCase() || '';\r\n\r\n this.DataLayerHelper.pushEvent(\"navClick\", {\r\n linkText: platform,\r\n linkUrl: link.href,\r\n uiLocation: \"universal footer\"\r\n })\r\n })\r\n })\r\n}\r\n\r\nDataLayerFooter.prototype._trackLegalLinks = function () {\r\n this.footer.querySelectorAll('div.utility-nav ul.utility-nav__list li.utility-nav__item a').forEach(link => {\r\n link.addEventListener('click', () => {\r\n const text = link.innerText?.trim().toLowerCase() || '';\r\n\r\n this.DataLayerHelper.pushEvent(\"navClick\", {\r\n linkText: text,\r\n linkUrl: link.href || \"\",\r\n uiLocation: \"universal footer\"\r\n });\r\n });\r\n });\r\n}\r\n\r\nDataLayerFooter.prototype._trackCurrencyDropdown = function () {\r\n const currencyBtn = this.footer.querySelector('[data-template=\"js-currency-content\"]');\r\n\r\n if (currencyBtn) {\r\n let isExpanded = false\r\n currencyBtn.addEventListener('click', () => {\r\n // Toggle our own flag on click\r\n isExpanded = !isExpanded;\r\n const state = isExpanded ? 'expand' : 'collapse'\r\n\r\n this.DataLayerHelper.pushEvent('linkClick', {\r\n linkText: `currency - ${state}`,\r\n uiLocation: 'universal footer'\r\n });\r\n\r\n // Add selection listeners only when expanding\r\n if (isExpanded) {\r\n const currencyButtons = document.querySelectorAll('#js-currency-content .zdcm-module-footer-dropdown__link');\r\n currencyButtons.forEach(button => {\r\n if (!button.hasAttribute('data-dl-bound')) {\r\n button.setAttribute('data-dl-bound', 'true')\r\n button.addEventListener('click', () => {\r\n const label = button.textContent.trim().toLowerCase();\r\n this.DataLayerHelper.pushEvent('linkClick', {\r\n linkText: `currency - ${label}`,\r\n uiLocation: 'universal footer'\r\n });\r\n\r\n // Collapse the dropdown after selection\r\n isExpanded = false;\r\n this.DataLayerHelper.pushEvent('linkClick', {\r\n linkText: `currency - collapse`,\r\n uiLocation: 'universal footer'\r\n });\r\n });\r\n }\r\n });\r\n }\r\n });\r\n }\r\n}\r\n\r\nDataLayerFooter.prototype._trackLanguageDropdown = function () {\r\n const languageBtn = this.footer.querySelector('[data-template=\"js-language-content\"]');\r\n\r\n if (languageBtn) {\r\n let isExpanded = false;\r\n languageBtn.addEventListener('click', () => {\r\n isExpanded = !isExpanded;\r\n const state = isExpanded ? 'expand' : 'collapse';\r\n this.DataLayerHelper.pushEvent('linkClick', {\r\n linkText: `language - ${state}`,\r\n uiLocation: 'universal footer'\r\n });\r\n\r\n // Only attach listeners when expanding\r\n if (isExpanded) {\r\n const languageLinks = document.querySelectorAll('#js-language-content .zdcm-module-footer-dropdown__link');\r\n\r\n languageLinks.forEach(link => {\r\n if (!link.hasAttribute('data-dl-bound')) {\r\n link.setAttribute('data-dl-bound', 'true');\r\n\r\n link.addEventListener('click', () => {\r\n const label = link.textContent.trim().toLowerCase();\r\n this.DataLayerHelper.pushEvent('linkClick', {\r\n linkText: `language - ${label}`,\r\n uiLocation: 'universal footer'\r\n });\r\n\r\n // Auto-collapse after selection\r\n isExpanded = false;\r\n this.DataLayerHelper.pushEvent('linkClick', {\r\n linkText: `language - collapse`,\r\n uiLocation: 'universal footer'\r\n });\r\n });\r\n }\r\n });\r\n }\r\n });\r\n }\r\n}\r\n\r\nDataLayerFooter.prototype._trackFooterDesktopDownloadCenter = function () {\r\n const downloadLink = document.querySelector('.zdcm-module-footer-nav__getApp-desktop a.link-app-desktop');\r\n\r\n if (downloadLink) {\r\n downloadLink.addEventListener('click', () => {\r\n const linkText = downloadLink.querySelector('.zdcm-module-footer-nav-downloadText')?.textContent.trim() || 'Download Center';\r\n const linkUrl = downloadLink.getAttribute('href');\r\n\r\n this.DataLayerHelper.pushEvent('navClick', {\r\n linkText,\r\n linkUrl,\r\n uiLocation: 'universal footer',\r\n });\r\n });\r\n }\r\n};\r\n\r\n\r\nDataLayerFooter.prototype._trackFooterMobileDownloadLinks = function () {\r\n const downloadLinks = document.querySelectorAll('.zdcm-module-footer-nav__getApp a.link-app');\r\n\r\n if (downloadLinks.length > 0) {\r\n downloadLinks.forEach(link => {\r\n link.addEventListener('click', () => {\r\n const linkText = link.querySelector('.zdcm-module-footer-nav-downloadText')?.textContent.trim() || 'Download App';\r\n const linkUrl = link.getAttribute('href');\r\n\r\n this.DataLayerHelper.pushEvent('navClick', {\r\n linkText,\r\n linkUrl,\r\n uiLocation: 'universal footer - mobile',\r\n });\r\n });\r\n });\r\n }\r\n}\r\n\r\nDataLayerFooter.prototype._trackMobileCurrencyLanguageDropdowns = function () {\r\n // Helper to push events consistently\r\n const pushDL = (linkText) => {\r\n this.DataLayerHelper.pushEvent('linkClick', {\r\n linkText,\r\n uiLocation: 'universal footer - mobile',\r\n });\r\n };\r\n\r\n // --- LANGUAGE DROPDOWN ---\r\n const languageContainer = document.querySelector('#js-language-mobile-content');\r\n const languageBtn = this.footer.querySelector('[data-template=\"js-language-mobile-content\"]');\r\n if (languageBtn && languageContainer) {\r\n let langExpanded = false;\r\n\r\n languageBtn.addEventListener('click', () => {\r\n langExpanded = !langExpanded;\r\n pushDL(`language - ${langExpanded ? 'expand' : 'collapse'}`);\r\n });\r\n\r\n const langLinks = languageContainer.querySelectorAll('.zdcm-module-footer-dropdown__link');\r\n langLinks.forEach(link => {\r\n if (!link.hasAttribute('data-dl-bound')) {\r\n link.setAttribute('data-dl-bound', 'true');\r\n link.addEventListener('click', () => {\r\n const label = link.textContent.trim().toLowerCase();\r\n pushDL(`language - ${label}`);\r\n langExpanded = false;\r\n pushDL(`language - collapse`);\r\n });\r\n }\r\n });\r\n }\r\n\r\n // --- CURRENCY DROPDOWN ---\r\n const currencyContainer = document.querySelector('#js-currency-mobile-content');\r\n const currencyBtn = this.footer.querySelector('[data-template=\"js-currency-mobile-content\"]');\r\n if (currencyBtn && currencyContainer) {\r\n let curExpanded = false;\r\n\r\n currencyBtn.addEventListener('click', () => {\r\n curExpanded = !curExpanded;\r\n pushDL(`currency - ${curExpanded ? 'expand' : 'collapse'}`);\r\n });\r\n\r\n const curButtons = currencyContainer.querySelectorAll('.zdcm-module-footer-dropdown__link');\r\n curButtons.forEach(button => {\r\n if (!button.hasAttribute('data-dl-bound')) {\r\n button.setAttribute('data-dl-bound', 'true');\r\n button.addEventListener('click', () => {\r\n const label = button.textContent.trim().toLowerCase();\r\n pushDL(`currency - ${label}`);\r\n curExpanded = false;\r\n pushDL(`currency - collapse`);\r\n });\r\n }\r\n });\r\n }\r\n}\r\n\r\nDataLayerFooter.prototype._trackMobilePrimaryDropdownToggles = function () {\r\n function waitForFooterLinks(selector, callback) {\r\n const interval = setInterval(() => {\r\n const elements = document.querySelectorAll(selector);\r\n if (elements.length > 0) {\r\n clearInterval(interval);\r\n callback(elements);\r\n }\r\n }, 100); // check every 100ms\r\n }\r\n\r\n waitForFooterLinks(\".zdcm-module-footer-top__primary .zdcm-module-footer-nav section > a\", (links) => {\r\n links.forEach(link => {\r\n link.addEventListener('click', function (event) {\r\n var linkText = event.currentTarget.innerText || event.target.innerText || '';\r\n if (linkText) {\r\n var textContent = ([...event.currentTarget.childNodes]\r\n .filter(node => node.nodeType === Node.TEXT_NODE)\r\n .map(node => node.textContent.trim())\r\n .join(\" \")).trim()?.toLowerCase()\r\n linkText = textContent ? textContent : linkText.toLowerCase();\r\n }\r\n if (event.currentTarget.classList.contains('active') == true) {\r\n linkText = linkText + \" - expand\"\r\n } else {\r\n linkText = linkText + \" - collapse\"\r\n }\r\n window.dataLayer = window.dataLayer || [];\r\n if (window.innerWidth <= 1024) {\r\n window.dataLayer.push({\r\n event: 'linkClick',\r\n linkText: linkText,\r\n uiLocation: 'universal footer - mobile'\r\n });\r\n }\r\n });\r\n });\r\n });\r\n}\r\nexport { DataLayerFooter }\r\n","function DataLayerProductNavMenu() {\r\n this.menu = document.querySelector('.zdcm-hub-page-mobile-menu');\r\n\r\n this.DataLayerHelper = {\r\n pushEvent: function (eventName, data = {}) {\r\n if (!eventName) return;\r\n let eventData = { event: eventName };\r\n Object.keys(data).forEach(key => {\r\n eventData[key] = (data[key] === \"\") ? undefined : data[key];\r\n });\r\n window.dataLayer = window.dataLayer || [];\r\n window.dataLayer.push(eventData);\r\n }\r\n };\r\n}\r\n\r\nDataLayerProductNavMenu.prototype._init = function () {\r\n if (this.menu) {\r\n this._trackTeamChatMobileMenu();\r\n this._trackProductNavExpandCollapse();\r\n }\r\n //this._trackDesktopTeamChatFeaturesUseCases();\r\n};\r\n\r\nDataLayerProductNavMenu.prototype._trackTeamChatMobileMenu = function () {\r\n document.querySelectorAll('.zdcm-hub-accordion-panel a').forEach(link => {\r\n link.addEventListener('click', () => {\r\n const parentSection = link.closest('.zdcm-hub-mobile-menu-items')?.querySelector('button')?.innerText?.trim().toLowerCase();\r\n const itemText = link.innerText?.trim().toLowerCase();\r\n const linkText = `${parentSection} - ${itemText}`;\r\n const uiLocation = 'product nav - team chat';\r\n\r\n window.dataLayer = window.dataLayer || [];\r\n window.dataLayer.push({\r\n event: 'navClick',\r\n linkText: linkText,\r\n uiLocation: uiLocation\r\n });\r\n });\r\n });\r\n};\r\n\r\nDataLayerProductNavMenu.prototype._trackProductNavExpandCollapse = function () {\r\n const uiLocation = 'product nav - team chat';\r\n document.querySelectorAll('.zdcm-hub-menu-open').forEach(button => {\r\n let previousState = button.getAttribute('aria-expanded') === 'true';\r\n button.addEventListener('click', function () {\r\n setTimeout(() => {\r\n const currentState = button.getAttribute('aria-expanded') === 'true';\r\n const action = currentState ? 'expand' : 'collapse';\r\n const linkText = `team chat - ${action}`;\r\n previousState = currentState;\r\n\r\n window.dataLayer = window.dataLayer || [];\r\n window.dataLayer.push({\r\n event: 'navClick',\r\n linkText: linkText,\r\n uiLocation: uiLocation\r\n });\r\n }, 50);\r\n });\r\n });\r\n\r\n // Track \"Features\" and \"Use Cases\" Accordion Toggles\r\n document.querySelectorAll('.zdcm-hub-accordion').forEach(button => {\r\n if (!button.hasAttribute('data-dl-bound')) {\r\n button.setAttribute('data-dl-bound', 'true');\r\n button.addEventListener('click', function () {\r\n setTimeout(() => {\r\n const isExpanded = button.getAttribute('aria-expanded') === 'true';\r\n const action = isExpanded ? 'expand' : 'collapse';\r\n const section = button.innerText?.trim().toLowerCase();\r\n const linkText = `${section} - ${action}`;\r\n\r\n window.dataLayer = window.dataLayer || [];\r\n window.dataLayer.push({\r\n event: 'navClick',\r\n linkText: linkText,\r\n uiLocation: uiLocation\r\n });\r\n }, 50)\r\n });\r\n }\r\n });\r\n};\r\n\r\n\r\nDataLayerProductNavMenu.prototype._trackDesktopTeamChatFeaturesUseCases = function () {\r\n const uiLocation = 'product nav - desktop/tablet';\r\n\r\n // Team Chat Direct Link\r\n const teamChatLink = document.querySelector('.zdcm-main-nav__link[href*=\"/products/team-chat\"]');\r\n if (teamChatLink) {\r\n teamChatLink.addEventListener('click', () => {\r\n window.dataLayer.push({\r\n event: 'navClick',\r\n linkText: 'team chat',\r\n uiLocation: uiLocation\r\n });\r\n });\r\n }\r\n\r\n // Features Dropdown Links\r\n document.querySelectorAll('.zdcm-megamenu[aria-label=\"Features\"] .zdcm-main-nav__dropdown-link').forEach(link => {\r\n link.addEventListener('click', () => {\r\n const itemText = link.textContent.trim().toLowerCase();\r\n window.dataLayer.push({\r\n event: 'navClick',\r\n linkText: `features - ${itemText}`,\r\n uiLocation: uiLocation\r\n });\r\n });\r\n });\r\n\r\n // Use Cases Dropdown Links\r\n document.querySelectorAll('.zdcm-megamenu[aria-label=\"Use Cases\"] .zdcm-main-nav__dropdown-link').forEach(link => {\r\n link.addEventListener('click', () => {\r\n const itemText = link.textContent.trim().toLowerCase();\r\n window.dataLayer.push({\r\n event: 'navClick',\r\n linkText: `use cases - ${itemText}`,\r\n uiLocation: uiLocation\r\n });\r\n });\r\n });\r\n\r\n document.querySelectorAll('.zdcm-main-nav__megamenu-trigger').forEach(button => {\r\n const label = button.innerText.trim().toLowerCase()\r\n if (label === 'features' || label === 'use cases') {\r\n button.addEventListener('click', function () {\r\n setTimeout(() => {\r\n const isExpanded = button.getAttribute('aria-expanded') === 'true';\r\n const action = isExpanded ? 'expand' : 'collapse';\r\n const linkText = `${label} - ${action}`;\r\n window.dataLayer.push({\r\n event: 'navClick',\r\n linkText: linkText,\r\n uiLocation: uiLocation\r\n });\r\n }, 50)\r\n });\r\n }\r\n });\r\n\r\n // Pricing link tracking (desktop + tablet)\r\n const pricingLink = document.querySelector('.zdcm-main-nav__link[href*=\"/pricing\"]');\r\n if (pricingLink) {\r\n pricingLink.addEventListener('click', () => {\r\n window.dataLayer.push({\r\n event: 'navClick',\r\n linkText: 'pricing',\r\n uiLocation: 'product nav - desktop'\r\n });\r\n });\r\n }\r\n\r\n};\r\n\r\n\r\nexport { DataLayerProductNavMenu };\r\n","function DataLayerZoomForNonProfit() {\r\n}\r\n\r\nDataLayerZoomForNonProfit.prototype = {\r\n _init: function () {\r\n this.zoomForNonProfit = document.querySelector(`#zoomfornonprofits`)\r\n this.uiLocation = 'nonprofits discount program'\r\n this.contentTitle = this.getContentTitle()\r\n\r\n if (!this.zoomForNonProfit) return\r\n window.extraPageLoadFields = { pageVersion: this.uiLocation }\r\n\r\n this.addCtaLinkClickListener()\r\n this.addShowMoreButtonClickListener()\r\n this.addFAQClickListener()\r\n },\r\n\r\n getContentTitle: function () {\r\n return this.zoomForNonProfit.querySelector('h3')?.innerText?.trim()?.toLowerCase()\r\n },\r\n\r\n addCtaLinkClickListener: function () {\r\n const ctaElements = document.querySelectorAll('#zoomfornonprofits div.fdn-copy-block__sub-title a')\r\n ctaElements.forEach((link) => {\r\n link.addEventListener('click', (event) => this.handleLinkClick(event, link))\r\n })\r\n },\r\n\r\n handleLinkClick: function (event, link) {\r\n const linkUrl = link.href?.toLowerCase() || undefined\r\n const linkText = link.innerText?.trim()?.toLowerCase() || undefined\r\n\r\n const eventData = {\r\n event: 'linkClick',\r\n linkUrl: linkUrl,\r\n linkText: linkText,\r\n uiLocation: this.uiLocation,\r\n contentTitle: this.contentTitle\r\n }\r\n\r\n window.dataLayer.push(eventData)\r\n },\r\n\r\n addShowMoreButtonClickListener: function () {\r\n const showMoreHideButton = document.querySelector('[data-cmp-is=\"pricingcard-standard\"] button.show-more')\r\n if (showMoreHideButton) {\r\n showMoreHideButton.addEventListener('click', (event) => this.handleShowMoreButtonClick(event))\r\n }\r\n },\r\n\r\n handleShowMoreButtonClick: function (event) {\r\n let linkText = event.target?.innerHTML?.trim()?.toLowerCase()\r\n \r\n window.dataLayer.push({\r\n event: 'linkClick',\r\n linkText: linkText,\r\n linkUrl: undefined,\r\n uiLocation: this.uiLocation,\r\n contentTitle: this.contentTitle\r\n })\r\n },\r\n\r\n addFAQClickListener: function () {\r\n const faqButton = document.querySelectorAll('button.accordion__item-button')\r\n faqButton.forEach((link) => {\r\n link.addEventListener('click', (event) => this.handleFaqButtonClick(event))\r\n })\r\n },\r\n\r\n handleFaqButtonClick: function (event) {\r\n const buttonElement = event.target.closest('button')\r\n if (buttonElement) {\r\n const isExpanded = buttonElement.getAttribute('aria-expanded') === 'true'\r\n const faqInteraction = buttonElement.textContent?.trim()?.toLowerCase()\r\n\r\n window.dataLayer.push({\r\n event: 'faqInteraction',\r\n faqInteraction: faqInteraction,\r\n faqSelection: isExpanded ? \"expand\" : \"collapse\",\r\n uiLocation: \"zoom for nonprofits\"\r\n })\r\n }\r\n }\r\n}\r\n\r\nexport { DataLayerZoomForNonProfit }\r\n","import { DataLayerSearch } from './datalayer/data-layer-search'\r\nimport { DataLayerTab } from './datalayer/data-layer-tab'\r\nimport { DataLayerCta } from './datalayer/data-layer-cta' \r\nimport { DataLayerFilter } from './datalayer/data-layer-filter'\r\nimport { DataLayerBlog } from './datalayer/data-layer-blog'\r\nimport { DataLayerSmbRoiCalculator } from './datalayer/data-layer-smb-roi'\r\nimport { DataLayerNavigation } from './datalayer/data-layer-navigation'\r\nimport { DataLayerNavigationVfive } from './datalayer/data-layer-navigation-vfive'\r\nimport { DataLayerFooter } from './datalayer/data-layer-footer'\r\nimport { DataLayerProductNavMenu } from './datalayer/data-layer-product-nav'\r\nimport { DataLayerZoomForNonProfit } from './datalayer/data-layer-non-profit'\r\n\r\nfunction DataLayerTracking() {\r\n this.footerUiLocation = 'Footer Nav'\r\n this.headerUiLocation = 'Universal Nav'\r\n this.bodyUiLocation = 'Body Content'\r\n this.dataLayerSearch = new DataLayerSearch()\r\n this.dataLayerTab = new DataLayerTab() \r\n this.dataLayerCta = new DataLayerCta() \r\n this.dataLayerFilter = new DataLayerFilter()\r\n this.DataLayerBlog = new DataLayerBlog()\r\n this.dataLayerSmbRoi = new DataLayerSmbRoiCalculator();\r\n this.DataLayerNavigation = new DataLayerNavigation();\r\n this.DataLayerProductNavMenu = new DataLayerProductNavMenu()\r\n this.DataLayerNavigationVfive = new DataLayerNavigationVfive();\r\n this.DataLayerFooter = new DataLayerFooter()\r\n this.DataLayerZoomForNonProfit = new DataLayerZoomForNonProfit()\r\n}\r\nDataLayerTracking.prototype._init = function () {\r\n this._phoneNumberClick()\r\n this.dataLayerSearch._init()\r\n const currentURL = window.location.href;\r\n if (currentURL.includes('.com/en/')) {\r\n var hubPageSelector = document.querySelector(\".zdcm-hub-navigation\")\r\n if (hubPageSelector) {\r\n window.extraPageLoadFields = { experimentVariant: \"global nav july 2025\", pageVersion: \"product hub july 2025\" }\r\n }\r\n this.DataLayerNavigationVfive._init()\r\n }\r\n this.dataLayerTab._init() \r\n this.dataLayerCta._init() \r\n this.dataLayerFilter._init()\r\n this.DataLayerBlog._init()\r\n this.dataLayerSmbRoi._init()\r\n this.DataLayerNavigation._init()\r\n this.DataLayerProductNavMenu._init()\r\n this.DataLayerFooter._init()\r\n this.DataLayerZoomForNonProfit._init()\r\n}\r\nDataLayerTracking.prototype._phoneNumberClick = function () {\r\n try {\r\n document.querySelectorAll('a[href^=\"tel:\"]').forEach(link => {\r\n let trackingLocation = this.bodyUiLocation\r\n if ((link.closest(\"footer\")) && (link.closest(\"footer\") != null)) {\r\n trackingLocation = this.footerUiLocation \r\n } else if ((link.closest(\"header\")) && (link.closest(\"header\") != null)) {\r\n trackingLocation = this.headerUiLocation\r\n }\r\n link.addEventListener(\"click\", function (e) {\r\n let eventData = {\r\n event: 'phoneClick',\r\n linkUrl: e?.target?.href || \"\",\r\n linkText: e?.target?.innerText.split('\\n')[0].trim() || \"\",\r\n uiLocation: trackingLocation\r\n }\r\n window.dataLayer.push(eventData)\r\n })\r\n },this)\r\n }\r\n catch (e) { }\r\n}\r\n\r\nexport { DataLayerTracking }\r\n","function DataLayerFilter() {\r\n this.filterInteractionEvent = 'filterInteraction';\r\n this.filterAppliedInteraction = 'filter applied';\r\n this.apiEndpoint = document.querySelector('#q')?.closest('.grid-landing-page')?.getAttribute('data-api-endpoint');\r\n this.uiLocation = this.apiEndpoint ? this.apiEndpoint.split('/')[2] : 'grid landing page';\r\n this.filterInputs = document.querySelectorAll('input[type=\"checkbox\"], input[type=\"radio\"], select');\r\n this._handleFilterChange = this._handleFilterChange.bind(this);\r\n}\r\n\r\nDataLayerFilter.prototype._init = function () {\r\n this._trackFilterInteractions();\r\n};\r\n\r\nDataLayerFilter.prototype._trackFilterInteractions = function () {\r\n this.filterInputs.forEach(filter => {\r\n if (!filter.hasEventListener) {\r\n filter.addEventListener('change', (event) => {\r\n if (event.target.checked || event.target.tagName === 'SELECT') {\r\n setTimeout(() => {\r\n this._handleFilterChange()\r\n }, 50)\r\n }\r\n });\r\n filter.hasEventListener = true;\r\n }\r\n });\r\n};\r\n\r\nDataLayerFilter.prototype._handleFilterChange = function () {\r\n let filtersApplied = this._getAppliedFilters();\r\n\r\n if (!filtersApplied || Object.keys(filtersApplied).length === 0) {\r\n return;\r\n }\r\n\r\n // Filter out unnecessary keys like \"sort\" and \"ot-group-id-C000X\"\r\n const validFilterKeys = Object.keys(filtersApplied).filter(\r\n key => !key.startsWith(\"ot-group-id\") && key !== \"sort\"\r\n );\r\n\r\n // Extract all selected values from relevant filters\r\n let selectedFilters = [];\r\n validFilterKeys.forEach(key => {\r\n selectedFilters = selectedFilters.concat(filtersApplied[key]);\r\n });\r\n\r\n // Remove duplicates if the same filter is clicked multiple times\r\n selectedFilters = [...new Set(selectedFilters)];\r\n\r\n if (selectedFilters.length === 0) {\r\n return;\r\n }\r\n\r\n window.dataLayer.push({\r\n event: this.filterInteractionEvent,\r\n filterInteraction: this.filterAppliedInteraction,\r\n filtersUsed: selectedFilters, \r\n uiLocation: this.uiLocation\r\n });\r\n};\r\n\r\nDataLayerFilter.prototype._getAppliedFilters = function () {\r\n const appliedFilters = {};\r\n document.querySelectorAll('input[type=\"checkbox\"]:checked, input[type=\"radio\"]:checked').forEach(input => {\r\n const filterType = input.name || 'unknown';\r\n if (!appliedFilters[filterType]) appliedFilters[filterType] = [];\r\n appliedFilters[filterType].push(input.value);\r\n });\r\n\r\n document.querySelectorAll('select').forEach(select => {\r\n if (select.value) {\r\n const filterType = select.name || 'unknown';\r\n if (!appliedFilters[filterType]) appliedFilters[filterType] = [];\r\n appliedFilters[filterType].push(select.value);\r\n }\r\n });\r\n\r\n return appliedFilters;\r\n};\r\n\r\nexport { DataLayerFilter };\r\n","function DataLayerSearch() {\n this.searchIntractionEvent = 'searchInteraction'\n this.searchValueEvent = 'search'\n this.searchBarClickIntraction = 'search bar clicked'\n this.clearSearchIntraction = 'clear search'\n this.coveoSearchLabel = 'coveo search'\n this.searchBox = document.querySelector('#q')\n this.apiEndpoint = document.querySelector('#q')?.closest('.grid-landing-page')?.getAttribute('data-api-endpoint')\n this.clearSearch = document.querySelector('.grid-landing-page__text-input__search-icon--close')\n this.resultCount = 0\n this.uiLocation = (this.apiEndpoint) ? this.apiEndpoint.split('/')[2] : 'grid landing page'\n this.coveoSearchBox = document.querySelector('.FlyoutButton')\n this.coveoSearchInput = document.querySelector('.magic-box-input input')\n this.coveoClearSearch = document.querySelector('.magic-box-icon')\n this.coveoSearchIcon = document.querySelector('.CoveoSearchButton')\n this.coveoSearchPageInput = document.querySelector('main .magic-box-input input')\n this.coveoPageClearSearch = document.querySelector('main .magic-box-icon')\n this.coveoPageSearchIcon = document.querySelector('main .CoveoSearchButton')\r\n}\r\nDataLayerSearch.prototype._init = function () {\n this._searchClick()\r\n}\n\nDataLayerSearch.prototype._updateDataLayerWithCardCount = function (resultCount) {\r if (resultCount && !isNaN(resultCount)) {\r this.resultCount = parseInt(resultCount)\r }\n if (this.searchBox.value) {\n let eventData = {\n event: this.searchValueEvent,\r\n searchTermUsed: this.searchBox.value,\r\n numResults: this.resultCount,\r\n uiLocation: this.uiLocation\r\n }\r\n window.dataLayer.push(eventData)\r\n }\r}\n\nDataLayerSearch.prototype._searchClickIntraction = function (searchBoxClick, searchBarClickIntraction, uiLocation) {\n if (searchBoxClick != null) {\n searchBoxClick.addEventListener('click', () => {\n let eventData = {\r\n event: this.searchIntractionEvent,\r\n searchInteraction: searchBarClickIntraction,\r\n uiLocation: uiLocation\r\n }\r\n window.dataLayer.push(eventData)\n })\n }\r\n}\n\nDataLayerSearch.prototype._searchValueIntraction = function (searchElementClick, searchTerm, uiLocation) {\n if (searchElementClick != null) {\n searchElementClick.addEventListener('click', () => {\n let eventData = {\r\n event: this.searchValueEvent,\r\n searchTermUsed: searchTerm?.value,\r\n uiLocation: uiLocation\r\n }\r\n window.dataLayer.push(eventData)\n })\n }\r\n}\n\nDataLayerSearch.prototype._searchValueIntractionByPressEnter = function (searchElementClick, searchTerm, uiLocation) {\n if (searchElementClick != null) {\n searchElementClick.addEventListener('keydown', (e) => {\n if (e.key === 'Enter' || e.keyCode === 13) {\n let eventData = {\r\n event: this.searchValueEvent,\r\n searchTermUsed: searchTerm?.value,\r\n uiLocation: uiLocation\r\n }\r\n window.dataLayer.push(eventData)\n }\n })\n }\r\n}\nDataLayerSearch.prototype._searchClick = function () {\r\n try {\n \n this._searchClickIntraction(this.searchBox,this.searchBarClickIntraction,this.uiLocation)\n\n this._searchClickIntraction(this.clearSearch,this.clearSearchIntraction,this.uiLocation)\n\n this._searchClickIntraction(this.coveoSearchBox,this.searchBarClickIntraction, this.coveoSearchLabel)\n\n this._searchClickIntraction(this.coveoSearchInput,this.searchBarClickIntraction, this.coveoSearchLabel)\n\n this._searchClickIntraction(this.coveoSearchPageInput, this.searchBarClickIntraction, this.coveoSearchLabel)\n\n this._searchValueIntractionByPressEnter(this.coveoSearchInput, this.coveoSearchInput, this.coveoSearchLabel)\n\n this._searchValueIntractionByPressEnter(this.coveoSearchPageInput, this.coveoSearchPageInput, this.coveoSearchLabel)\n\n this._searchClickIntraction(this.coveoClearSearch,this.clearSearchIntraction, this.coveoSearchLabel)\n\n this._searchClickIntraction(this.coveoPageClearSearch,this.clearSearchIntraction, this.coveoSearchLabel)\n\n this._searchValueIntraction(this.coveoSearchIcon,this.coveoSearchInput, this.coveoSearchLabel)\n\n this._searchValueIntraction(this.coveoPageSearchIcon, this.coveoSearchPageInput, this.coveoSearchLabel)\n\n document.addEventListener(\"click\", function (e) {\n const target = e.target.closest(\".magic-box-suggestion\");\n if (target) {\n let eventData = {\r\n event: 'search',\r\n searchTermUsed: target.getAttribute('aria-label'),\r\n uiLocation: 'coveo search'\r\n }\r\n window.dataLayer.push(eventData)\n }\n });\r\n }\r\n catch (e) { }\r\n}\r\nexport { DataLayerSearch }\r\n","function DataLayerTab() {\r\n this.horizontalTabUiLocation = 'Horizontal Tab'\r\n this.pillTabUiLocation = 'Tabbed Pill'\r\n this.tabbedCarouselUiLocation = 'Tabbed Carousel'\r\n this.horizontalTabClickButton = document.querySelectorAll('.fdn-tabs__tab')\r\n this.pillTabClickButton = document.querySelectorAll('.fdn-tabbed-pills__pill')\r\n this.carouselTabClickButton = document.querySelectorAll('.tabbed-carousel__tab')\r\n}\r\n\r\nDataLayerTab.prototype._init = function () {\r\n this._TabClick()\r\n}\r\n\r\nDataLayerTab.prototype._TabClick = function () {\r\n this._horizontalTabClick(this.horizontalTabClickButton, this.horizontalTabUiLocation)\r\n this._pillTabClick(this.pillTabClickButton, this.pillTabUiLocation)\r\n this._carouselTabClick(this.carouselTabClickButton, this.tabbedCarouselUiLocation)\r\n}\r\n\r\nDataLayerTab.prototype._horizontalTabClick = function (tabs, horizontalTabUiLocation) {\r\n if (tabs) {\r\n tabs.forEach(button => {\r\n button.addEventListener('click', (e) => {\r\n let tabContainer = e.target.closest('.fdn-tabs.fdn-tabs--product')\r\n if (tabContainer != null) {\r\n let horizontalTabTitle = tabContainer?.querySelector('.fdn-tabs__headline')?.textContent?.trim() || ''\r\n let targetButton = e.target.closest('.fdn-tabs__tab')\r\n let tabTextValue = targetButton.querySelector('.fdn-tabs__title')?.textContent.trim() || ''\r\n let linkText = horizontalTabTitle ? `${horizontalTabTitle} - ${tabTextValue}` : tabTextValue\r\n\r\n let eventData = {\r\n event: 'contentClick',\r\n linkText: linkText,\r\n uiLocation: horizontalTabUiLocation\r\n }\r\n\r\n window.dataLayer.push(eventData)\r\n }\r\n })\r\n })\r\n }\r\n}\r\n\r\nDataLayerTab.prototype._pillTabClick = function (tabs, pillTabUiLocation) {\r\n if (tabs) {\r\n tabs.forEach(button => {\r\n button.addEventListener('click', (e) => {\r\n let tabContainer = e.target.closest('.fdn-tabbed-pills__content')\r\n let pillTabTitle = tabContainer?.querySelector('.fdn-tabbed-pills__title')?.textContent?.trim() || ''\r\n let tabTextValue = Array.from(e.target.childNodes)\r\n .filter(node => node.nodeType === Node.TEXT_NODE || (node.nodeType === Node.ELEMENT_NODE && !node.classList.contains('visually-hidden')))\r\n .map(node => node.textContent.trim())\r\n .join(' ').trim() || ''\r\n\r\n let linkText = pillTabTitle ? `${pillTabTitle} - ${tabTextValue}` : tabTextValue\r\n\r\n let eventData = {\r\n event: 'contentClick',\r\n linkText: linkText,\r\n uiLocation: pillTabUiLocation\r\n }\r\n window.dataLayer.push(eventData)\r\n })\r\n })\r\n }\r\n}\r\n\r\nDataLayerTab.prototype._carouselTabClick = function (tabs, tabbedCarouselUiLocation) {\r\n if (tabs) {\r\n tabs.forEach(button => {\r\n button.addEventListener('click', (e) => {\r\n let tabContainer = e.target.closest('.wrapper')\r\n let carouselTabTitle = tabContainer?.querySelector('.module-columns-title')?.textContent?.trim() || ''\r\n let tabTextValue = Array.from(e.target.childNodes)\r\n .filter(node => node.nodeType === Node.TEXT_NODE || (node.nodeType === Node.ELEMENT_NODE && !node.classList.contains('tabbed-carousel__tab-description')))\r\n .map(node => node.textContent.trim())\r\n .join(' ').trim() || ''\r\n\r\n let linkText = carouselTabTitle ? `${carouselTabTitle} - ${tabTextValue}` : tabTextValue\r\n\r\n let eventData = {\r\n event: 'contentClick',\r\n linkText: linkText,\r\n uiLocation: tabbedCarouselUiLocation\r\n }\r\n \r\n window.dataLayer.push(eventData)\r\n })\r\n })\r\n }\r\n}\r\n\r\nexport { DataLayerTab }\r\n"],"names":["handleOnCurrencyChange","selectedCountryCode","context","_el$dataset","el","apiUrl","dataset","apiEndpoint","getAttribute","divId","id","fetch","concat","method","credentials","mode","headers","then","response","text","data","pricingCardBasic","document","querySelector","_temp$querySelector","outerHTML","callPricingAPI","temp","createElement","innerHTML","newDivId","updatedElement","initSinglePricingComponent","err","console","error","initCountryCurrencyFilter","onCountryChange","onCurrencyChange","initializePricingComponents","querySelectorAll","forEach","instance","_el$dataset2","options","arguments","length","undefined","iscurrencyfilter","isCurrencyfilter","ensureCurrencyFilterFlag","ddEl","dropDownElement","Dropdown","onChange","code","listenCurrencyChange","getSelectedCountryCode","checkUiLocation","element","_i","_locationMapping","selector","location","_locationMapping$_i","closest","moduleColumns","contentTitleMap","blockClass","titleSelector","DataLayerCta","this","buttonCta","Array","from","filter","prototype","_init","_trackLinkClicks","_this","link","addEventListener","e","_handleLinkClick","_isInExcludedSection","some","section","contains","stopPropagation","linkElement","target","includes","pricingCard","_productElem$innerTex","preventDefault","productElem","product","innerText","replace","trim","linkText","split","linkUrl","href","uiLocation","contentTitle","_getContentTitle","eventData","event","window","dataLayer","push","setTimeout","_getVisibleText","test","_handleDownloadEvent","_handleLinkClickEvent","match","_match$","fileExtension","toLowerCase","parent","parentElement","titleWrapper","_step","_iterator","_createForOfIteratorHelper","s","n","done","_parent$classList","_step$value","value","classList","titleEl","f","globalModuleTitle","heading","found","buttonElement","_step2","_iterator2","visibleText","childNodes","node","nodeType","Node","TEXT_NODE","textContent","DataLayerBlog","DataLayerSmbRoiCalculator","container","slider","sliderInput","appCards","viewPlansButton","contactSalesButton","find","a","interactionCaptured","_onFirstInteraction","bind","DataLayerNavigation","DataLayerHelper","pushEvent","eventName","Object","keys","key","DataLayerNavigationVfive","universalNavMobileLocation","universalNavDesktopLocation","navClickEventName","searchIntractionEvent","searchBarClickIntraction","DataLayerFooter","footer","DataLayerProductNavMenu","menu","DataLayerZoomForNonProfit","DataLayerTracking","footerUiLocation","headerUiLocation","bodyUiLocation","dataLayerSearch","DataLayerSearch","dataLayerTab","DataLayerTab","dataLayerCta","dataLayerFilter","DataLayerFilter","dataLayerSmbRoi","_FormEvents","_blogFormSubmitted","_blogFormError","$$epiforms","ready","on","param1","param2","eventCategory","eventAction","eventLabel","formType","isValid","_document$querySelect","_document$querySelect2","eventLabelName","parentNode","checked","_trackFirstInteraction","_trackCtaClicks","Boolean","once","roiCalculatorInteraction","roiCalculatorSelection","_this2","handleClick","label","_this2$sliderInput","employeeCount","selectedApps","card","map","_card$querySelector","_card$querySelector2","category","name","numAppsSelected","appsSelectedArray","_logoIntraction","_logoIntractionForShortHeader","_menuWithExpand","_menuWithoutExpand","_logoTracking","_universalDesktopMenu","_universalMobileMenu","_resourceMenu","_mobileSignUp","_mobilePricingEvent","_zoomProductAndContactSaleButton","_trackClickEvents","_getUiLocation","parentCategory","_getUiLocationMobile","_categoryState","getLinkType","currentTarget","updateVal","_document$querySelect3","_document$querySelect4","_filter$map$join$trim","_toConsumableArray","join","_event$currentTarget$","isDesktop","isMobileBanner","_this3","_document$querySelect5","_linkText$trim","getClosestClass","isMobile","_document$querySelect6","_document$querySelect7","_document$querySelect8","_this4","_linkText$trim2","isOpen","cta","_cta$innerText","childNodesArray","_event$currentTarget","_event$target","_event$currentTarget2","_event$target2","_document$querySelect9","_this5","_filter$map$join$trim2","menuLink","_menuLink$innerText","searchInteraction","_this6","_cta$innerText2","_this7","_cta$innerText3","_this8","button","_filter$map$join$trim3","_event$currentTarget3","_trackNavigationEvents","_trackSolutionsMenuClick","_trackResourcesMenuClick","_trackNavLinksClick","solutionsAnchor","resourcesMenuLink","mobileResourcesMenuLink","_resourcesMenuLink$in","dropdown","_filter$map$join$trim4","matches","action","_mobileHamburgerClick","_searchClickIntraction","_mobileFooterMenuItems","_waffleMenu","_waffleButtons","_waffleViewAll","_zoomLogoEvent","_singleLinkNavEvent","_universalNavigationMenu","_userProfile","_userAccountDetail","_pricingEvent","_productMenuTabsClicks","_productMenuTabsLearnMoreClicks","_downloadCenterClicks","_DeveloperAppCenterClicks","_trackAllUniversalNavHubPageClicks","_trackAllUniversalNavMenuClicks","_searchClicks","_trackMeetExpandCollapse","_trackMeetDropdownLinks","_trackMobileNavLinkClicks","_trackMobileNavBackClicks","_applicationDownloadCenterClicks","_productAppMobileClicks","_moblieSignUpClicks","_productsTabItemToggle","links","_link$querySelector$i","_link$querySelector","_link$querySelector$t","_link$querySelector2","_link$querySelector$t2","_link$querySelector3","userInfoClick","downloadCenter","waffleMenuClick","ariaExpanded","waffleViewAllClick","mobileHamburger","observer","MutationObserver","searchBoxClick","disconnect","observe","body","childList","subtree","_filter$map$join$trim5","item","clickedItem","labelText","parentLi","isExpanded","_link$querySelector$t3","_link$querySelector4","offsetParent","_link$querySelector$t4","_link$querySelector5","_link$querySelector$t5","_link$querySelector6","_link$querySelector$t6","_link$querySelector7","_event$target$closest","menuName","meetButtons","index","previousState","mutations","mutation","attributeName","newState","nextState","attributes","dropdownLinks","_link$innerText","accordionButtons","btn","_btn$textContent","ariaExpand","_btn$closest","sectionName","backBtn","removeEventListener","_dlHandler","handler","_trackFooterLinks","_trackSocialLinks","_trackLegalLinks","_trackCurrencyDropdown","_trackLanguageDropdown","_trackFooterDesktopDownloadCenter","_trackFooterMobileDownloadLinks","_trackMobileCurrencyLanguageDropdowns","_trackMobilePrimaryDropdownToggles","_section$querySelecto","startsWith","linkLabel","sectionHeader","mainLink","innerWidth","_mainLink$innerText","_link$title","platform","title","currencyBtn","state","hasAttribute","setAttribute","languageBtn","downloadLink","_downloadLink$querySe","downloadLinks","pushDL","languageContainer","langExpanded","currencyContainer","curExpanded","callback","interval","setInterval","elements","clearInterval","_trackTeamChatMobileMenu","_trackProductNavExpandCollapse","_link$closest","parentSection","itemText","currentState","_button$innerText","_trackDesktopTeamChatFeaturesUseCases","teamChatLink","pricingLink","zoomForNonProfit","getContentTitle","extraPageLoadFields","pageVersion","addCtaLinkClickListener","addShowMoreButtonClickListener","addFAQClickListener","_this$zoomForNonProfi","handleLinkClick","_link$href","showMoreHideButton","handleShowMoreButtonClick","handleFaqButtonClick","_buttonElement$textCo","faqInteraction","faqSelection","_phoneNumberClick","experimentVariant","trackingLocation","_e$target","_e$target2","filterInteractionEvent","filterAppliedInteraction","filterInputs","_handleFilterChange","_trackFilterInteractions","hasEventListener","tagName","filtersApplied","_getAppliedFilters","validFilterKeys","selectedFilters","Set","filterInteraction","filtersUsed","appliedFilters","input","filterType","select","searchValueEvent","clearSearchIntraction","coveoSearchLabel","searchBox","clearSearch","resultCount","coveoSearchBox","coveoSearchInput","coveoClearSearch","coveoSearchIcon","coveoSearchPageInput","coveoPageClearSearch","coveoPageSearchIcon","_searchClick","_updateDataLayerWithCardCount","isNaN","parseInt","searchTermUsed","numResults","_searchValueIntraction","searchElementClick","searchTerm","_searchValueIntractionByPressEnter","keyCode","horizontalTabUiLocation","pillTabUiLocation","tabbedCarouselUiLocation","horizontalTabClickButton","pillTabClickButton","carouselTabClickButton","_TabClick","_horizontalTabClick","_pillTabClick","_carouselTabClick","tabs","tabContainer","_tabContainer$querySe","_targetButton$querySe","horizontalTabTitle","tabTextValue","_tabContainer$querySe2","pillTabTitle","ELEMENT_NODE","_tabContainer$querySe3","carouselTabTitle"],"sourceRoot":""}