{"version":3,"file":"663.min.js?t=1747159542749","mappings":"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","sources":["webpack://@hero-digital/masonite/./src/components/modules/CardCarousel/CardCarousel.js","webpack://@hero-digital/masonite/./src/components/modules/Tabs/Tabs.js"],"sourcesContent":["// core version + navigation, pagination modules:\nimport Swiper, { A11y, Navigation } from 'swiper'\n\nimport Services from 'services'\nimport Tabs from '../Tabs/Tabs'\n\n// Card Carousel Carousel Module:\nexport default class CardCarousel {\n\tstatic SELECTORS = {\n\t\tCOMPONENT: '[data-cmp-is=\"card-carousel\"]',\n\t\tCAROUSEL: '[data-cmp-card-carousel=\"carousel\"]',\n\t\tCONTROL_PREVIOUS: '[data-cmp-card-carousel-control=\"btn-previous\"]',\n\t\tCONTROL_NEXT: '[data-cmp-card-carousel-control=\"btn-next\"]',\n\t\tPAGINATION: '[data-cmp-card-carousel=\"pagination\"]',\n\t\tPAGINATION_BULLET: '[data-cmp-hook=\"pagination-bullet\"]'\n\t}\n\n\tstatic CLASSES = {\n\t\tPAGINATION_BULLET: 'mod-card-carousel__pagination-bullet',\n\t\tPAGINATION_BULLET_ACTIVE: 'mod-card-carousel__pagination-bullet--active',\n\t\tGOTO_PREVIOUS: 'goto-prev',\n\t\tGOTO_NEXT: 'goto-next',\n\t\tSLIDE_IN_TRANSIT: 'slide-in-transit'\n\t}\n\n\tstatic VALUES = {}\n\n\tconstructor(element) {\n\t\tthis.element = element // ref to component element\n\t\tthis.id = element?.id || '' // ref to component id\n\t\tthis.services = Services.getInstance()\n\n\t\tthis.EventEmitterService = this.services.EventEmitterService\n\n\t\tthis.cacheDom()\n\t\tthis.attachEvents()\n\t\tthis.createCardCarousel()\n\t\tthis.createPagination()\n\t}\n\n\t/**\n\t * Cache the dom refs needed for the component\n\t */\n\tcacheDom() {\n\t\tthis.cardCarouselEl = this.element.querySelector(\n\t\t\tCardCarousel.SELECTORS.CAROUSEL\n\t\t)\n\t\tthis.controlNext = this.element.querySelector(\n\t\t\tCardCarousel.SELECTORS.CONTROL_NEXT\n\t\t)\n\t\tthis.controlPrev = this.element.querySelector(\n\t\t\tCardCarousel.SELECTORS.CONTROL_PREVIOUS\n\t\t)\n\t\tthis.pagination = this.element.querySelector(\n\t\t\tCardCarousel.SELECTORS.PAGINATION\n\t\t)\n\t\t/* this.paginationBullets = this.element.querySelectorAll(\n CardCarousel.SELECTORS.PAGINATION_BULLET\n ) */\n\t}\n\n\t/**\n\t * Attach component event listeners\n\t */\n\tattachEvents() {\n\t\tthis.carouselUpdateListener()\n\t}\n\n\t/**\n\t * Detach component event listeners\n\t */\n\tdetachEvents() {\n\t\tthis.EventEmitterService.off(Tabs.EVENTS.TAB_CLICK)\n\t}\n\n\t/**\n\t * Destroy the carousel instance and remove event listeners\n\t */\n\tdestroy() {\n\t\tthis.detachEvents()\n\t\tthis.cardCarouselEl.destroy()\n\t}\n\n\t/**\n\t * Carousel Udpdate Event Listener\n\t */\n\tcarouselUpdateListener() {\n\t\t// add listener for a change in the Card Carousel\n\t\tthis.EventEmitterService.on(Tabs.EVENTS.TAB_CLICK, () => {\n\t\t\t// update Swiper\n\t\t\tthis.cardCarousel.updateSize()\n\t\t})\n\t}\n\n\t/**\n\t * Create the card carousel instance and add the navigation and pagination\n\t */\n\tcreateCardCarousel() {\n\t\tconst _ = this\n\n\t\tthis.cardCarousel = new Swiper(_.cardCarouselEl, {\n\t\t\tcenteredSlides: false,\n\t\t\tbreakpoints: {\n\t\t\t\t// when window width is >= 320px\n\t\t\t\t320: {\n\t\t\t\t\tallowTouchMove: true,\n\t\t\t\t\tslidesPerView: 3,\n\t\t\t\t\tcenteredSlides: true,\n\t\t\t\t\tspaceBetween: 20\n\t\t\t\t},\n\t\t\t\t// when window width is >= 768px\n\t\t\t\t768: {\n\t\t\t\t\tallowTouchMove: true,\n\t\t\t\t\tslidesPerView: 3,\n\t\t\t\t\tspaceBetween: 32,\n\t\t\t\t\tcenteredSlides: true\n\t\t\t\t},\n\t\t\t\t996: {\n\t\t\t\t\tallowTouchMove: false,\n\t\t\t\t\tslidesPerView: 3,\n\t\t\t\t\tspaceBetween: 32,\n\t\t\t\t\tcenteredSlides: true\n\t\t\t\t}\n\t\t\t},\n\t\t\tlazy: true,\n\t\t\tloop: false,\n\n\t\t\tnavigation: {\n\t\t\t\tnextEl: _.controlNext,\n\t\t\t\tprevEl: _.controlPrev\n\t\t\t},\n\t\t\ta11y: {\n\t\t\t\tprevSlideMessage: _.controlPrev.getAttribute('aria-label'),\n\t\t\t\tnextSlideMessage: _.controlNext.getAttribute('aria-label')\n\t\t\t},\n\t\t\tnoSwiping: true,\n\t\t\tobserver: true,\n\t\t\ton: {\n\t\t\t\tslideChangeTransitionStart: (swiper) => {\n\t\t\t\t\tconst { activeIndex } = swiper\n\t\t\t\t\tconst el = _.cardCarouselEl\n\t\t\t\t\tel.classList.remove(\n\t\t\t\t\t\tCardCarousel.CLASSES.GOTO_PREVIOUS,\n\t\t\t\t\t\tCardCarousel.CLASSES.GOTO_NEXT\n\t\t\t\t\t)\n\n\t\t\t\t\tel.classList.add(CardCarousel.CLASSES.SLIDE_IN_TRANSIT)\n\n\t\t\t\t\tthis.paginationBullets.forEach((bullet, index) => {\n\t\t\t\t\t\tif (index === activeIndex) {\n\t\t\t\t\t\t\tbullet.classList.add(\n\t\t\t\t\t\t\t\tCardCarousel.CLASSES.PAGINATION_BULLET_ACTIVE\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tbullet.classList.remove(\n\t\t\t\t\t\t\t\tCardCarousel.CLASSES.PAGINATION_BULLET_ACTIVE\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t}\n\t\t\t\t\t})\n\t\t\t\t},\n\t\t\t\tslideChangeTransitionEnd: (_swiper) => {\n\t\t\t\t\tconst el = _.cardCarouselEl\n\n\t\t\t\t\tel.classList.remove(CardCarousel.CLASSES.SLIDE_IN_TRANSIT)\n\t\t\t\t},\n\t\t\t\tslideNextTransitionStart: (_swiper) => {\n\t\t\t\t\tconst el = _.cardCarouselEl\n\t\t\t\t\tel.classList.remove(CardCarousel.CLASSES.GOTO_PREVIOUS)\n\t\t\t\t\tel.classList.add(CardCarousel.CLASSES.GOTO_NEXT)\n\t\t\t\t},\n\t\t\t\tslidePrevTransitionStart: (_swiper) => {\n\t\t\t\t\tconst el = _.cardCarouselEl\n\t\t\t\t\tel.classList.remove(CardCarousel.CLASSES.GOTO_NEXT)\n\t\t\t\t\tel.classList.add(CardCarousel.CLASSES.GOTO_PREVIOUS)\n\t\t\t\t},\n\t\t\t\tsnapGridLengthChange: function () {\n\t\t\t\t\tif (this.snapGrid.length !== this.slidesGrid.length) {\n\t\t\t\t\t\tthis.snapGrid = this.slidesGrid.slice(0)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t\trewind: false,\n\t\t\tscrollbar: false,\n\t\t\tspeed: 1000,\n\t\t\twatchSlidesProgress: true,\n\t\t\twatchSlidesVisibility: true,\n\t\t\tmodules: [A11y, Navigation]\n\t\t})\n\t}\n\n\t/**\n\t * Create the pagination for the card carousel\n\t */\n\tcreatePagination() {\n\t\tthis.paginationBullets = []\n\n\t\tif (this.cardCarousel?.slides?.length > 0) {\n\t\t\t// Create a bullet for each slide\n\t\t\tthis.cardCarousel.slides.forEach((_slide) => {\n\t\t\t\tconst bullet = document.createElement('span')\n\t\t\t\tbullet.classList.add(CardCarousel.CLASSES.PAGINATION_BULLET)\n\n\t\t\t\tthis.paginationBullets.push(bullet)\n\t\t\t\tthis.pagination.appendChild(bullet)\n\t\t\t})\n\n\t\t\t// Set the first bullet to active\n\t\t\tthis.paginationBullets[0].classList.add(\n\t\t\t\tCardCarousel.CLASSES.PAGINATION_BULLET_ACTIVE\n\t\t\t)\n\t\t}\n\t}\n}\n","import { actionOnClickOutside } from 'utilities/utilities'\nimport Services from 'services'\n\n/**\n * Module that controls the Tabs component\n */\nexport default class Tabs {\n\tstatic SELECTORS = {\n\t\tCOMPONENT: '[data-cmp-is=\"tabs\"]',\n\t\tTAB: '[data-cmp-tabs=\"tab\"]',\n\t\tCONTENT: '[data-cmp-tabs=\"content\"]',\n\t\tLINE: '[data-cmp-tabs=\"line\"]',\n\t\tTABS_CONTAINER: '[data-cmp-tabs=\"tabs-container\"]',\n\t\tTABS_SELECT: '[data-cmp-hook=\"mod-tabs-select\"]',\n\t\tTABS_SELECT_TOGGLE: '[data-cmp-hook=\"mod-tabs-select-toggle\"]',\n\t\tTABS_SELECT_LIST: '[data-cmp-hook=\"mod-tabs-select-list\"]',\n\t\tTABS_SELECT_LINK: '[data-cmp-hook=\"mod-tabs-select-link\"]'\n\t}\n\n\tstatic CLASSES = {\n\t\tCONTENT_ACTIVE: 'mod-tabs__content--active',\n\t\tTAB_ACTIVE: 'mod-tabs__tab--active',\n\t\tSELECT_ACTIVE: 'mod-tabs-select--active',\n\t\tENABLE_SELECT: 'mod-tabs--enable-select'\n\t}\n\n\tstatic THEMES = {\n\t\tLIGHT: 'theme-light',\n\t\tDARK: 'theme-dark'\n\t}\n\n\tstatic EVENTS = {\n\t\tTAB_CLICK: 'tab click event',\n\t\tSWITCH_TAB: 'switch tab event'\n\t}\n\n\tconstructor(element) {\n\t\tthis.element = element\n\t\tthis.id = element?.id || ''\n\t\tthis.services = Services.getInstance()\n\n\t\tthis.EventEmitterService = this.services.EventEmitterService\n\t\tthis.BreakpointListener = this.services.BreakpointListener\n\n\t\tthis.cacheDom()\n\t\tthis.attachEvents()\n\t\tthis.initializeComponent()\n\t}\n\n\t/**\n\t * Cache the DOM references needed for the component\n\t */\n\tcacheDom() {\n\t\tthis.tabsContainer = this.element.querySelector(\n\t\t\tTabs.SELECTORS.TABS_CONTAINER\n\t\t)\n\t\tthis.tabs = this.element.querySelectorAll(Tabs.SELECTORS.TAB)\n\t\tthis.contents = this.element.querySelectorAll(Tabs.SELECTORS.CONTENT)\n\t\tthis.line = this.element.querySelector(Tabs.SELECTORS.LINE)\n\n\t\tthis.tabsSelect = this.element.querySelector(Tabs.SELECTORS.TABS_SELECT)\n\t\tif (this.tabsSelect) {\n\t\t\tthis.tabsSelectToggleBtn = this.tabsSelect.querySelector(\n\t\t\t\tTabs.SELECTORS.TABS_SELECT_TOGGLE\n\t\t\t)\n\t\t\tthis.tabsSelectList = this.tabsSelect.querySelector(\n\t\t\t\tTabs.SELECTORS.TABS_SELECT_LIST\n\t\t\t)\n\t\t\tthis.tabsSelectLinks = this.tabsSelect.querySelectorAll(\n\t\t\t\tTabs.SELECTORS.TABS_SELECT_LINK\n\t\t\t)\n\t\t}\n\t}\n\n\t/**\n\t * Destroy the component and clean up event listeners\n\t */\n\tdestroy() {\n\t\tthis.detachEvents()\n\t}\n\n\t/**\n\t * Animate the underline line under the active tab\n\t */\n\tanimateLine = (activeTab) => {\n\t\tif (!activeTab) return\n\n\t\t// Use requestAnimationFrame to ensure the DOM has updated\n\t\trequestAnimationFrame(() => {\n\t\t\tconst tabRect = activeTab.getBoundingClientRect()\n\t\t\tconst containerRect = this.tabsContainer.getBoundingClientRect()\n\n\t\t\t// Calculate left relative to the tabs container\n\t\t\tconst left = tabRect.left - containerRect.left\n\t\t\tconst width = tabRect.width\n\n\t\t\t// Apply styles\n\t\t\tthis.line.style.left = `${left}px`\n\t\t\tthis.line.style.width = `${width}px`\n\t\t\tthis.line.style.display = 'block'\n\t\t})\n\t}\n\n\t/**\n\t * Switch to a specific tab\n\t */\n\tswitchTab(id, isInternal = false) {\n\t\tconst tabElement = Array.from(this.tabs).find((tab) => tab.id === id)\n\t\tconst contentElement = Array.from(this.contents).find(\n\t\t\t(content) => content.id === `${id}-content`\n\t\t)\n\n\t\tif (!tabElement || !contentElement) return\n\n\t\t// Update active classes\n\t\tthis.tabs.forEach((tab) => tab.classList.remove(Tabs.CLASSES.TAB_ACTIVE))\n\t\tthis.contents.forEach((content) =>\n\t\t\tcontent.classList.remove(Tabs.CLASSES.CONTENT_ACTIVE)\n\t\t)\n\n\t\ttabElement.classList.add(Tabs.CLASSES.TAB_ACTIVE)\n\t\tcontentElement.classList.add(Tabs.CLASSES.CONTENT_ACTIVE)\n\n\t\tthis.animateLine(tabElement)\n\n\t\t// Update dropdown toggle button text\n\t\tif (this.tabsSelectToggleBtn) {\n\t\t\tconst activeTitle = tabElement\n\t\t\t\t.querySelector('.mod-tabs__tab-title')\n\t\t\t\t.textContent.trim()\n\t\t\tthis.tabsSelectToggleBtn.textContent = activeTitle\n\t\t}\n\n\t\t// Emit switch tab event only if it's not an internal call\n\t\tif (!isInternal) {\n\t\t\tthis.EventEmitterService.emit(Tabs.EVENTS.SWITCH_TAB, {\n\t\t\t\ttabsId: this.id,\n\t\t\t\ttabId: id\n\t\t\t})\n\t\t}\n\t}\n\n\t/**\n\t * Scroll to a deep link within the tab content\n\t */\n\tdeepLink(tab, id) {\n\t\tthis.switchTab(tab)\n\t\tconst anchorElement = document.getElementById(id)\n\t\tif (anchorElement) {\n\t\t\tanchorElement.scrollIntoView({\n\t\t\t\tbehavior: 'smooth'\n\t\t\t})\n\t\t}\n\t}\n\n\t/**\n\t * Handle Tab button clicks\n\t */\n\tonTabClick = (event) => {\n\t\tconst tabId = event.currentTarget.id\n\t\tif (tabId) {\n\t\t\tthis.emitTabClickEvent()\n\t\t\tthis.switchTab(tabId)\n\t\t}\n\t}\n\n\t/**\n\t * Emit 'Tab Click' event\n\t */\n\temitTabClickEvent = () => {\n\t\tthis.EventEmitterService.emit(Tabs.EVENTS.TAB_CLICK)\n\t}\n\n\t/**\n\t * Set the theme class for the component\n\t * @param {String} theme - Theme class to set\n\t */\n\tsetTheme(theme) {\n\t\tconst themeClasses = Object.values(Tabs.THEMES)\n\t\tif (themeClasses.includes(theme)) {\n\t\t\t// Remove existing theme classes\n\t\t\tthis.element.classList.remove(...themeClasses)\n\t\t\tthis.tabs.forEach((tab) => tab.classList.remove(...themeClasses))\n\t\t\tthis.contents.forEach((content) =>\n\t\t\t\tcontent.classList.remove(...themeClasses)\n\t\t\t)\n\n\t\t\t// Add new theme class\n\t\t\tthis.element.classList.add(theme)\n\t\t\tthis.tabs.forEach((tab) => tab.classList.add(theme))\n\t\t\tthis.contents.forEach((content) => content.classList.add(theme))\n\t\t}\n\t}\n\n\t/**\n\t * Initialize the Tabs component\n\t */\n\tinitializeComponent() {\n\t\t// Handle initial breakpoint\n\t\tthis.handleBreakpointChange(this.BreakpointListener.queryMatch)\n\n\t\t// Get deep link ID from URL if available\n\t\tconst activeId = window.location.hash\n\t\t\t? window.location.hash.substring(1)\n\t\t\t: null\n\n\t\tif (activeId && this.tabsContainer.querySelector(`#${activeId}`)) {\n\t\t\t// If activeId corresponds to a tab, switch to that tab\n\t\t\tthis.switchTab(activeId)\n\t\t} else if (activeId) {\n\t\t\t// If activeId does not correspond to a tab, check within tab contents\n\t\t\tfor (const tab of this.tabs) {\n\t\t\t\tif (tab.querySelector(`#${activeId}`)) {\n\t\t\t\t\tthis.switchTab(tab.id)\n\t\t\t\t\tbreak // Exit the loop once the corresponding tab is found\n\t\t\t\t}\n\t\t\t}\n\t\t} else if (this.tabs.length > 0) {\n\t\t\t// If no activeId is present, initialize the first tab by default\n\t\t\tthis.switchTab(this.tabs[0].id)\n\t\t}\n\t}\n\n\t/**\n\t * Handle breakpoint changes to adjust display\n\t * @param {Object} breakpoints - Current breakpoint matches\n\t */\n\thandleBreakpointChange = (breakpoints) => {\n\t\tconst isBelowMediumLarge = !breakpoints.MEDIUM_LARGE // true if screen width <996px\n\n\t\tif (isBelowMediumLarge) {\n\t\t\tthis.element.classList.add(Tabs.CLASSES.ENABLE_SELECT)\n\t\t} else {\n\t\t\tthis.element.classList.remove(Tabs.CLASSES.ENABLE_SELECT)\n\t\t}\n\n\t\t// Update the underline line position\n\t\tthis.updateUnderlinePosition()\n\t}\n\n\t/**\n\t * Toggle the dropdown select visibility\n\t */\n\ttoggleDropdown = () => {\n\t\tif (this.tabsSelect.classList.contains(Tabs.CLASSES.SELECT_ACTIVE)) {\n\t\t\tthis.closeDropdown()\n\t\t} else {\n\t\t\tthis.openDropdown()\n\t\t}\n\t}\n\n\t/**\n\t * Open the dropdown select\n\t */\n\topenDropdown = () => {\n\t\tthis.tabsSelect.classList.add(Tabs.CLASSES.SELECT_ACTIVE)\n\t\tthis.setAriaAttributesOpen(this.tabsSelectToggleBtn, this.tabsSelectList)\n\t\t// Focus the first dropdown link\n\t\tif (this.tabsSelectLinks && this.tabsSelectLinks.length > 0) {\n\t\t\tthis.tabsSelectLinks[0].focus()\n\t\t}\n\n\t\t// Close dropdown when clicking outside\n\t\tactionOnClickOutside(this.tabsSelect, this.closeDropdown)\n\t}\n\n\t/**\n\t * Close the dropdown select\n\t */\n\tcloseDropdown = () => {\n\t\tthis.tabsSelect.classList.remove(Tabs.CLASSES.SELECT_ACTIVE)\n\t\tthis.setAriaAttributesClosed(\n\t\t\tthis.tabsSelectToggleBtn,\n\t\t\tthis.tabsSelectList\n\t\t)\n\t}\n\n\t/**\n\t * Set ARIA attributes when the dropdown is open\n\t * @param {HTMLElement} toggleBtn - The dropdown toggle button\n\t * @param {HTMLElement} list - The dropdown list\n\t */\n\tsetAriaAttributesOpen(toggleBtn, list) {\n\t\t// Refactored: New method for setting ARIA attributes when open\n\t\ttoggleBtn.setAttribute('aria-expanded', 'true')\n\t\tlist.setAttribute('aria-hidden', 'false')\n\t}\n\n\t/**\n\t * Set ARIA attributes when the dropdown is closed\n\t * @param {HTMLElement} toggleBtn - The dropdown toggle button\n\t * @param {HTMLElement} list - The dropdown list\n\t */\n\tsetAriaAttributesClosed(toggleBtn, list) {\n\t\t// Refactored: New method for setting ARIA attributes when closed\n\t\ttoggleBtn.setAttribute('aria-expanded', 'false')\n\t\tlist.setAttribute('aria-hidden', 'true')\n\t}\n\n\t/**\n\t * Update the underline line position based on the active tab\n\t */\n\tupdateUnderlinePosition = () => {\n\t\tconst activeTab = this.element.querySelector(\n\t\t\t`.${Tabs.CLASSES.TAB_ACTIVE}`\n\t\t)\n\t\tthis.animateLine(activeTab)\n\t}\n\n\tonWindowResize = () => {\n\t\tconst activeTab = this.element.querySelector(\n\t\t\t`.${Tabs.CLASSES.TAB_ACTIVE}`\n\t\t)\n\t\tthis.animateLine(activeTab)\n\t}\n\n\t/**\n\t * Attach component event listeners\n\t */\n\tattachEvents() {\n\t\twindow.addEventListener('resize', this.onWindowResize)\n\t\t// Listen to breakpoint changes\n\t\tthis.BreakpointListener.addListener(this.handleBreakpointChange)\n\n\t\t// Add event listeners to tab buttons\n\t\tthis.tabs.forEach((tabElement) => {\n\t\t\ttabElement.addEventListener('click', this.onTabClick)\n\t\t})\n\n\t\t// Add event listener to dropdown toggle button\n\t\tif (this.tabsSelectToggleBtn) {\n\t\t\tthis.tabsSelectToggleBtn.addEventListener('click', this.toggleDropdown)\n\t\t}\n\n\t\t// Add event listeners to dropdown links\n\t\tif (this.tabsSelectLinks && this.tabsSelectLinks.length > 0) {\n\t\t\tthis.tabsSelectLinks.forEach((link) => {\n\t\t\t\tlink.addEventListener('click', (event) => {\n\t\t\t\t\tevent.preventDefault()\n\t\t\t\t\tconst href = link.getAttribute('href')\n\t\t\t\t\tconst tabId = href.replace('#', '')\n\t\t\t\t\tthis.switchTab(tabId)\n\t\t\t\t\tthis.closeDropdown()\n\t\t\t\t})\n\t\t\t})\n\t\t}\n\n\t\t// Listen to switch tab events\n\t\tthis.EventEmitterService.on(Tabs.EVENTS.SWITCH_TAB, this.onSwitchTab)\n\t}\n\n\t/**\n\t * Detach component event listeners\n\t */\n\tdetachEvents() {\n\t\t// Remove breakpoint listener\n\t\tthis.BreakpointListener.removeListener(this.handleBreakpointChange)\n\n\t\t// Remove event listeners from tab buttons\n\t\tthis.tabs.forEach((tabElement) => {\n\t\t\ttabElement.removeEventListener('click', this.onTabClick)\n\t\t})\n\n\t\t// Remove event listener from dropdown toggle button\n\t\tif (this.tabsSelectToggleBtn) {\n\t\t\tthis.tabsSelectToggleBtn.removeEventListener(\n\t\t\t\t'click',\n\t\t\t\tthis.toggleDropdown\n\t\t\t)\n\t\t}\n\n\t\t// Remove event listeners from dropdown links\n\t\tif (this.tabsSelectLinks && this.tabsSelectLinks.length > 0) {\n\t\t\tthis.tabsSelectLinks.forEach((link) => {\n\t\t\t\tlink.removeEventListener('click', (event) => {\n\t\t\t\t\tevent.preventDefault()\n\t\t\t\t\tconst href = link.getAttribute('href')\n\t\t\t\t\tconst tabId = href.replace('#', '')\n\t\t\t\t\tthis.switchTab(tabId)\n\t\t\t\t\tthis.closeDropdown()\n\t\t\t\t})\n\t\t\t})\n\t\t}\n\n\t\t// Remove EventEmitterService listeners\n\t\tthis.EventEmitterService.off(Tabs.EVENTS.SWITCH_TAB, this.onSwitchTab)\n\t\twindow.removeEventListener('resize', this.onWindowResize)\n\t}\n\n\t/**\n\t * Handle switch tab events emitted by other components\n\t * @param {Object} payload - Event payload containing tabsId and tabId\n\t */\n\tonSwitchTab = ({ tabsId, tabId }) => {\n\t\tif (this.id !== tabsId) {\n\t\t\treturn\n\t\t}\n\t\tthis.switchTab(tabId, true, true) // Pass 'true' to indicate an internal call\n\t}\n}\n"],"names":["CardCarousel","static","COMPONENT","CAROUSEL","CONTROL_PREVIOUS","CONTROL_NEXT","PAGINATION","PAGINATION_BULLET","PAGINATION_BULLET_ACTIVE","GOTO_PREVIOUS","GOTO_NEXT","SLIDE_IN_TRANSIT","constructor","element","this","id","services","Services","getInstance","EventEmitterService","cacheDom","attachEvents","createCardCarousel","createPagination","cardCarouselEl","querySelector","SELECTORS","controlNext","controlPrev","pagination","carouselUpdateListener","detachEvents","off","Tabs","EVENTS","TAB_CLICK","destroy","on","cardCarousel","updateSize","_","Swiper","centeredSlides","breakpoints","allowTouchMove","slidesPerView","spaceBetween","lazy","loop","navigation","nextEl","prevEl","a11y","prevSlideMessage","getAttribute","nextSlideMessage","noSwiping","observer","slideChangeTransitionStart","swiper","activeIndex","el","classList","remove","CLASSES","add","paginationBullets","forEach","bullet","index","slideChangeTransitionEnd","_swiper","slideNextTransitionStart","slidePrevTransitionStart","snapGridLengthChange","snapGrid","length","slidesGrid","slice","rewind","scrollbar","speed","watchSlidesProgress","watchSlidesVisibility","modules","A11y","Navigation","slides","_slide","document","createElement","push","appendChild","TAB","CONTENT","LINE","TABS_CONTAINER","TABS_SELECT","TABS_SELECT_TOGGLE","TABS_SELECT_LIST","TABS_SELECT_LINK","CONTENT_ACTIVE","TAB_ACTIVE","SELECT_ACTIVE","ENABLE_SELECT","LIGHT","DARK","SWITCH_TAB","BreakpointListener","initializeComponent","tabsContainer","tabs","querySelectorAll","contents","line","tabsSelect","tabsSelectToggleBtn","tabsSelectList","tabsSelectLinks","animateLine","activeTab","requestAnimationFrame","tabRect","getBoundingClientRect","containerRect","left","width","style","display","switchTab","isInternal","arguments","undefined","tabElement","Array","from","find","tab","contentElement","content","activeTitle","textContent","trim","emit","tabsId","tabId","deepLink","anchorElement","getElementById","scrollIntoView","behavior","onTabClick","event","currentTarget","emitTabClickEvent","setTheme","theme","themeClasses","Object","values","THEMES","includes","handleBreakpointChange","queryMatch","activeId","window","location","hash","substring","MEDIUM_LARGE","updateUnderlinePosition","toggleDropdown","contains","closeDropdown","openDropdown","setAriaAttributesOpen","focus","actionOnClickOutside","setAriaAttributesClosed","toggleBtn","list","setAttribute","onWindowResize","addEventListener","addListener","link","preventDefault","replace","onSwitchTab","removeListener","removeEventListener","_ref"],"sourceRoot":""}