{"version":3,"file":"zoomv.1666.min.js?t=1a299b4567d03620e70a","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\"]')\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('orientationchange', () => {\r\n setTimeout(this.handleResize, 300)\r\n })\r\n window.addEventListener('resize', () => {\r\n setTimeout(this.handleResize, 300)\r\n })\r\n this.init()\r\n this.syncCurrencyDropdown()\r\n this.initFeaturesSlide()\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.reinitiateSlide()\r\n })\r\n })\r\n this.handleResize()\r\n }\r\n \r\n initFeaturesSlide() {\r\n const titles = document.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\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 window.addEventListener('resize', function () {\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\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 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 = document.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","initFeaturesSlide","key","_this2","checkbox","checked","showAnnually","showMonthly","label","closest","labelText","nextElementSibling","labelAnnual","labelMonth","reinitiateSlide","titles","isDesktop","innerWidth","maxHeight","title","content","originalHeight","style","height","scrollHeight","overflow","transition","add","isOpen","requestAnimationFrame","afterExpand","removeEventListener","nowDesktop","click","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","length","Array","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":""}