{"version":3,"file":"zoomv.1666.min.js?t=04cf8324748f9f1220d1","mappings":"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","sources":["webpack://@hero-digital/zoom/./src/components/product-hub-components/pricing-cards-v1/pricing-cards-v1.js"],"sourcesContent":["class PricingCardV1 {\r\n constructor(el) {\r\n this.el = el\r\n this.switches = this.el.querySelectorAll('input[name=\"zdcm-pricing-switch\"]')\r\n this.indicator = this.el.querySelector('.zdcm-indicator')\r\n this.currencyPlaceHolder = this.el.querySelector(\r\n '.fdn-zdcm-plan-currency-placeholder'\r\n )\r\n\r\n this.ul = this.el.querySelector('ul')\r\n\r\n this.monthlyPrices = this.el.querySelectorAll('[data-price=\"0\"]')\r\n this.annualPrices = this.el.querySelectorAll('[data-price=\"1\"], [data-price=\"2\"]');\r\n this.currencyLabel = this.apiUrl = this.el.dataset.currencyLabel\r\n this.monthlyCTAs = this.el.querySelectorAll('.fdn-zdcm-buy:nth-of-type(1)')\r\n this.annualCTAs = this.el.querySelectorAll('.fdn-zdcm-buy:nth-of-type(2)')\r\n this.monthlyCTAs = this.el.querySelectorAll('.fdn-zdcm-pricing-card-content-body[data-price]:not([data-price=\"-1\"]) .fdn-zdcm-buy:nth-of-type(1)')\r\n this.annualCTAs = this.el.querySelectorAll('.fdn-zdcm-pricing-card-content-body[data-price]:not([data-price=\"-1\"]) .fdn-zdcm-buy:nth-of-type(2)')\r\n this.domMap = {\r\n $swiper: el.querySelector('.fdn-zdcm-pricing-cards .swiper'),\r\n $slides: el.querySelectorAll(\r\n '.fdn-zdcm-pricing-cards .zdcm-resources-carousel .zdcm-resources'\r\n ),\r\n $slide: el.querySelectorAll('.fdn-zdcm-pricing-cards .swiper-slide')\r\n }\r\n\r\n const dropdown = this.el.querySelector('.fdn-currency-dropdown')\r\n if (dropdown) {\r\n const button = dropdown.querySelector('button')\r\n const wrapper = dropdown.querySelector('.fdn-currency-dropdown-wrapper')\r\n const radioInputs = dropdown.querySelectorAll('input[type=\"radio\"]')\r\n\r\n button.addEventListener('click', () => {\r\n wrapper.classList.toggle('open')\r\n button.classList.toggle('active')\r\n })\r\n\r\n document.addEventListener('click', (e) => {\r\n if (!dropdown.contains(e.target)) {\r\n wrapper.classList.remove('open')\r\n button.classList.remove('active')\r\n }\r\n })\r\n\r\n radioInputs.forEach((input) => {\r\n input.addEventListener('change', (e) => {\r\n const span = button.querySelector('span')\r\n span.textContent = e.target.value\r\n\r\n wrapper.classList.remove('open')\r\n button.classList.remove('active')\r\n\r\n this.el.dispatchEvent(\r\n new CustomEvent('currency:changed', {\r\n detail: { currency: e.target.value }\r\n })\r\n )\r\n })\r\n })\r\n\r\n const checkedCurrency = dropdown.querySelector(\r\n 'input[type=\"radio\"]:checked'\r\n )\r\n if (checkedCurrency) {\r\n const span = button.querySelector('span')\r\n span.textContent = checkedCurrency.value\r\n }\r\n }\r\n this.swiper = null\r\n this.handleResize = this.handleResize.bind(this)\r\n window.addEventListener('resize', () => {\r\n setTimeout(this.handleResize, 300)\r\n })\r\n this.init()\r\n this.syncCurrencyDropdown()\r\n requestAnimationFrame(() => {\r\n setTimeout(() => {\r\n this.initFeaturesSlide();\r\n }, 0);\r\n });\r\n }\r\n\r\n init() {\r\n this.switches.forEach((checkbox) => {\r\n if(checkbox.checked) {\r\n this.showAnnually()\r\n } else {\r\n this.showMonthly()\r\n }\r\n })\r\n\r\n // Add change event listener to each switch\r\n this.switches.forEach((checkbox) => {\r\n checkbox.addEventListener('change', () => {\r\n // Find the label element wrapping this checkbox\r\n const label = checkbox.closest('.zdcm-switch')\r\n // Get the plan label span (you might need to adjust this selector if you have many switches)\r\n const labelText = label.nextElementSibling; // assumes the span is right after the label\r\n if(checkbox.checked) {\r\n this.showAnnually()\r\n if (labelText) {\r\n labelText.textContent = label.dataset.labelAnnual\r\n }\r\n } else {\r\n this.showMonthly()\r\n if (labelText) {\r\n labelText.textContent = label.dataset.labelMonth\r\n }\r\n }\r\n this.setFeaturesHeight()\r\n this.reinitiateSlide()\r\n })\r\n })\r\n \r\n this.handleResize()\r\n }\r\n \r\n initFeaturesSlide() {\r\n const titles = this.el.querySelectorAll('.fdn-zdcm-features-title')\r\n let isDesktop = window.innerWidth > 1024\r\n let maxHeight = 0\r\n\r\n // Step 1: Calculate max scrollHeight of all content sections\r\n titles.forEach((title) => {\r\n const content = title.nextElementSibling\r\n\r\n // Temporarily set to auto to measure true scrollHeight\r\n const originalHeight = content.style.height\r\n content.style.height = 'auto'\r\n const height = content.scrollHeight\r\n content.style.height = originalHeight\r\n\r\n if (height > maxHeight) {\r\n maxHeight = height\r\n }\r\n })\r\n\r\n // Step 2: Apply fixed height to all content sections\r\n if (isDesktop) {\r\n titles.forEach((title) => {\r\n const content = title.nextElementSibling\r\n content.style.height = maxHeight + 'px' // ✅ Fixed height\r\n content.style.overflow = 'hidden'\r\n content.style.transition = 'height 0.3s ease'\r\n title.classList.add('features-open')\r\n });\r\n }\r\n\r\n // Step 3: Setup click behavior\r\n titles.forEach((title) => {\r\n const content = title.nextElementSibling\r\n\r\n title.addEventListener('click', function () {\r\n const isOpen = content.style.height && content.style.height !== '0px'\r\n title.classList.toggle(\"features-open\")\r\n\r\n if (isOpen) {\r\n content.style.height = maxHeight + 'px' // Reset before collapsing\r\n requestAnimationFrame(() => {\r\n content.style.height = '0'\r\n })\r\n } else {\r\n content.style.height = maxHeight + 'px'\r\n const afterExpand = () => {\r\n // Keep height fixed\r\n content.removeEventListener('transitionend', afterExpand);\r\n }\r\n\r\n content.addEventListener('transitionend', afterExpand);\r\n }\r\n })\r\n })\r\n\r\n // Step 4: Responsive behavior\r\n const handleDesktopResize = () => {\r\n this.setFeaturesHeight()\r\n\r\n const nowDesktop = window.innerWidth > 1024\r\n\r\n if (!nowDesktop && isDesktop) {\r\n titles.forEach((title) => {\r\n if (title.classList.contains('features-open')) {\r\n title.click()\r\n }\r\n const content = title.nextElementSibling;\r\n content.style.height = '0' // Collapse on mobile\r\n });\r\n }\r\n\r\n if (nowDesktop && !isDesktop) {\r\n titles.forEach((title) => {\r\n if (!title.classList.contains('features-open')) {\r\n title.click()\r\n }\r\n })\r\n }\r\n\r\n isDesktop = nowDesktop;\r\n};\r\n\r\n// Attach debounced resize handler\r\nwindow.addEventListener('resize', this.debounce(handleDesktopResize, 500))\r\n}\r\n\r\ndebounce(fn, delay) {\r\n let timeoutId;\r\n return function (...args) {\r\n clearTimeout(timeoutId);\r\n timeoutId = setTimeout(() => fn.apply(this, args), delay);\r\n };\r\n}\r\n\r\nsetFeaturesHeight() {\r\n const titles = this.el.querySelectorAll('.fdn-zdcm-features-title')\r\n let isDesktop = window.innerWidth > 1024\r\n let maxHeight = 0\r\n\r\n // Step 1: Calculate max scrollHeight of all content sections\r\n titles.forEach((title) => {\r\n const content = title.nextElementSibling\r\n\r\n // Temporarily set to auto to measure true scrollHeight\r\n const originalHeight = content.style.height\r\n content.style.height = 'auto'\r\n const height = content.scrollHeight\r\n content.style.height = originalHeight\r\n\r\n if (height > maxHeight) {\r\n maxHeight = height\r\n }\r\n\r\n if (isDesktop) {\r\n titles.forEach((title) => {\r\n const content = title.nextElementSibling\r\n content.style.height = maxHeight + 'px' // ✅ Fixed height\r\n content.style.overflow = 'hidden'\r\n content.style.transition = 'height 0.3s ease'\r\n title.classList.add('features-open')\r\n });\r\n }\r\n })\r\n}\r\n\r\n reinitiateSlide () {\r\n const titles = document.querySelectorAll('.fdn-zdcm-features-title')\r\n let isDesktop = window.innerWidth > 1024;\r\n titles.forEach(function (title) {\r\n const content = title.nextElementSibling\r\n title.classList.remove(\"features-open\")\r\n content.style.height = 0\r\n if (isDesktop) {\r\n title.click()\r\n }\r\n })\r\n }\r\n\r\n initSwiper() {\r\n const { $swiper } = this.domMap\r\n this.swiper = new Swiper($swiper, {\r\n autoHeight: false,\r\n spaceBetween: 20,\r\n centeredSlides: true, // If you want the slide to be centered\r\n initialSlide: 1, // this shows the 2nd slide\r\n navigation: {\r\n nextEl: this.el.querySelector(\r\n '.fdn-zdcm-pricing-cards .swiper-button-next'\r\n ),\r\n prevEl: this.el.querySelector(\r\n '.fdn-zdcm-pricing-cards .swiper-button-prev'\r\n )\r\n },\r\n pagination: {\r\n el: this.el.querySelector('.fdn-zdcm-pricing-cards .swiper-pagination'),\r\n clickable: true\r\n },\r\n breakpoints: {\r\n 768: { slidesPerView: 2, loop: false },\r\n 1024: { slidesPerView: 3, loop: false, slidesPerView: 1.5 }\r\n }\r\n })\r\n }\r\n\r\n destroySwiper() {\r\n if (this.swiper) {\r\n this.swiper.destroy(true, true)\r\n this.swiper = null\r\n }\r\n }\r\n\r\n handleResize() {\r\n const viewportWidth = window.innerWidth\r\n const prevBtn = this.el.querySelector('.swiper-button-prev')\r\n const nextBtn = this.el.querySelector('.swiper-button-next')\r\n\r\n if ((viewportWidth >= 768 && viewportWidth <= 1024)) {\r\n if (!this.swiper && this.domMap.$slides != null) {\r\n if (prevBtn) prevBtn.style.display = 'flex'\r\n if (nextBtn) nextBtn.style.display = 'flex'\r\n this.initSwiper()\r\n }\r\n } else {\r\n this.destroySwiper()\r\n if (prevBtn) prevBtn.style.display = 'none'\r\n if (nextBtn) nextBtn.style.display = 'none'\r\n }\r\n this.reinitiateSlide()\r\n }\r\n\r\n showMonthly() {\r\n this.monthlyPrices.forEach((el) => {\r\n el.classList.remove('hidden')\r\n el.removeAttribute(\"style\")\r\n })\r\n this.annualPrices.forEach((el) => {\r\n el.classList.add('hidden')\r\n el.removeAttribute(\"style\")\r\n })\r\n\r\n this.monthlyCTAs.forEach((el) => el.classList.remove('hidden'))\r\n this.annualCTAs.forEach((el) => el.classList.add('hidden'))\r\n }\r\n\r\n showAnnually() {\r\n this.monthlyPrices.forEach((el) => {\r\n el.classList.add('hidden')\r\n el.removeAttribute(\"style\")\r\n })\r\n this.annualPrices.forEach((el) => {\r\n el.classList.remove('hidden')\r\n el.removeAttribute(\"style\")\r\n })\r\n\r\n this.monthlyCTAs.forEach((el) => el.classList.add('hidden'))\r\n this.annualCTAs.forEach((el) => el.classList.remove('hidden'))\r\n }\r\n\r\n syncCurrencyDropdown() {\r\n function getCurrenciesFromOldDropdown(id) {\r\n const items = document.querySelectorAll(\r\n '#js-currency-content .zdcm-module-footer-dropdown__item'\r\n )\r\n\r\n if (!items.length) {\r\n return []\r\n }\r\n\r\n const currencies = Array.from(items).map((item) => {\r\n const btn = item.querySelector('button')\r\n return {\r\n id: item.id + '_' + id,\r\n value: item.getAttribute('data-currency-value'),\r\n country: item.getAttribute('data-country-value'),\r\n label: btn?.textContent.trim() || '',\r\n active: btn?.classList.contains('active')\r\n }\r\n })\r\n\r\n return currencies\r\n }\r\n\r\n function buildNewDropdown(currencies, targetContainer, currencyLabel) {\r\n const wrapper = document.createElement('div')\r\n wrapper.className = 'fdn-zdcm-plan-currency'\r\n\r\n const dropdown = document.createElement('div')\r\n dropdown.className = 'fdn-currency-dropdown'\r\n\r\n const active = currencies.find((c) => c.active) || currencies[0]\r\n\r\n const button = document.createElement('button')\r\n button.type = 'button'\r\n button.name = 'currency'\r\n button.setAttribute('aria-expanded', 'false')\r\n button.innerHTML = `${currencyLabel} ${\r\n active?.value || '???'\r\n }`\r\n\r\n dropdown.appendChild(button)\r\n\r\n const dropdownWrapper = document.createElement('div')\r\n dropdownWrapper.className = 'fdn-currency-dropdown-wrapper'\r\n\r\n const fieldset = document.createElement('fieldset')\r\n const legend = document.createElement('legend')\r\n legend.className = 'visually-hidden'\r\n legend.textContent = 'Currency Selection'\r\n fieldset.appendChild(legend)\r\n\r\n const inputMap = {}\r\n\r\n currencies.forEach((curr) => {\r\n const optionDiv = document.createElement('div')\r\n optionDiv.className = 'fdn-currency-option'\r\n\r\n const input = document.createElement('input')\r\n input.type = 'radio'\r\n input.className = 'checkbox-currency'\r\n input.id = curr.id\r\n input.value = curr.value\r\n input.name = 'currency'\r\n if (curr.active) input.checked = true\r\n\r\n inputMap[curr.id] = input\r\n\r\n const label = document.createElement('label')\r\n label.setAttribute('for', curr.id)\r\n label.textContent = curr.value\r\n\r\n optionDiv.appendChild(input)\r\n optionDiv.appendChild(label)\r\n fieldset.appendChild(optionDiv)\r\n\r\n input.addEventListener('click', () => {\r\n let currency = curr?.id?.split('_')[0]\r\n document.dispatchEvent(\r\n new CustomEvent('currencySync', {\r\n detail: { currency },\r\n bubbles: true\r\n })\r\n )\r\n })\r\n })\r\n\r\n function onChangeCurrency(data) {\r\n let id = data.detail.currency\r\n let item = findByIdPrefix(id, currencies)\r\n button.querySelector('span').textContent = item.value\r\n dropdownWrapper.classList.remove('open')\r\n button.classList.remove('active')\r\n button.setAttribute('aria-expanded', 'false')\r\n }\r\n\r\n function findByIdPrefix(prefix, list) {\r\n return list.find((obj) => obj.id.startsWith(prefix + '_'))\r\n }\r\n document.addEventListener('currencySync', (data) =>\r\n onChangeCurrency(data)\r\n )\r\n\r\n dropdownWrapper.appendChild(fieldset)\r\n dropdown.appendChild(dropdownWrapper)\r\n wrapper.appendChild(dropdown)\r\n targetContainer.replaceWith(wrapper)\r\n button.addEventListener('click', (e) => {\r\n e.stopPropagation()\r\n const expanded = button.getAttribute('aria-expanded') === 'true'\r\n button.setAttribute('aria-expanded', (!expanded).toString())\r\n dropdownWrapper.classList.toggle('open', !expanded)\r\n button.classList.toggle('active', !expanded)\r\n })\r\n document.addEventListener('click', (e) => {\r\n if (!wrapper.contains(e.target)) {\r\n dropdownWrapper.classList.remove('open')\r\n button.classList.remove('active')\r\n button.setAttribute('aria-expanded', 'false')\r\n }\r\n })\r\n }\r\n\r\n function init(context) {\r\n const currencies = getCurrenciesFromOldDropdown(\r\n context.el.getAttribute('data-id')\r\n )\r\n\r\n if (!currencies.length) {\r\n return\r\n }\r\n\r\n buildNewDropdown(\r\n currencies,\r\n context.currencyPlaceHolder,\r\n context.currencyLabel\r\n )\r\n }\r\n\r\n init(this)\r\n }\r\n}\r\n\r\nexport default PricingCardV1\r\n"],"names":["PricingCardV1","el","_this","_classCallCheck","this","switches","querySelectorAll","indicator","querySelector","currencyPlaceHolder","ul","monthlyPrices","annualPrices","currencyLabel","apiUrl","dataset","monthlyCTAs","annualCTAs","domMap","$swiper","$slides","$slide","dropdown","button","wrapper","radioInputs","addEventListener","classList","toggle","document","e","contains","target","remove","forEach","input","textContent","value","dispatchEvent","CustomEvent","detail","currency","checkedCurrency","swiper","handleResize","bind","window","setTimeout","init","syncCurrencyDropdown","requestAnimationFrame","initFeaturesSlide","key","_this2","checkbox","checked","showAnnually","showMonthly","label","closest","labelText","nextElementSibling","labelAnnual","labelMonth","setFeaturesHeight","reinitiateSlide","_this3","titles","isDesktop","innerWidth","maxHeight","title","content","originalHeight","style","height","scrollHeight","overflow","transition","add","isOpen","afterExpand","removeEventListener","debounce","nowDesktop","click","fn","delay","timeoutId","_this4","_len","arguments","length","args","Array","_key","clearTimeout","apply","Swiper","autoHeight","spaceBetween","centeredSlides","initialSlide","navigation","nextEl","prevEl","pagination","clickable","breakpoints","slidesPerView","loop","destroy","viewportWidth","prevBtn","nextBtn","display","initSwiper","destroySwiper","removeAttribute","context","id","items","currencies","getAttribute","from","map","item","btn","country","trim","active","targetContainer","createElement","className","find","c","type","name","setAttribute","innerHTML","concat","appendChild","dropdownWrapper","fieldset","legend","inputMap","curr","optionDiv","_curr$id","split","bubbles","data","prefix","obj","startsWith","onChangeCurrency","replaceWith","stopPropagation","expanded","toString","buildNewDropdown"],"sourceRoot":""}