{"version":3,"file":"index-DaAecPJQ.js","sources":["../../src/scripts/modules/tabs/generalTab.ts","../../src/scripts/modules/tabs/index.ts"],"sourcesContent":["import { Component } from '@verndale/core';\r\nimport { TabItem } from './index';\r\n// import { loadDeferredModules } from '../../helpers';\r\n\r\nclass GeneralTab extends Component implements TabItem {\r\n  id: string;\r\n  reducedMotion = window.matchMedia('(prefers-reduced-motion: reduce)');\r\n\r\n  constructor(\r\n    el: HTMLElement,\r\n    public isActive = false,\r\n    public anchor?: string\r\n  ) {\r\n    super(el);\r\n    this.id = el.id;\r\n    this.el.classList.add('tabs__item--hidden');\r\n  }\r\n\r\n  setupDefaults() {\r\n    this.dom = {\r\n      el: this.el\r\n    };\r\n  }\r\n\r\n  setActive(isActive: boolean) {\r\n    this.isActive = isActive;\r\n\r\n    if (isActive) {\r\n      //loadDeferredModules(this.el);\r\n      this.el.classList.remove('tabs__item--hidden');\r\n    } else {\r\n      this.el.classList.add('tabs__item--hidden');\r\n    }\r\n\r\n    return;\r\n  }\r\n}\r\n\r\nexport default GeneralTab;\r\n","import { Component } from '@verndale/core';\nimport GeneralTab from './generalTab';\nimport { animate, AnimationPlaybackControls, AnimationSequence } from 'framer-motion';\nimport { breakpoints } from '../../helpers/variables';\n\nexport interface TabItem {\n  id: string;\n  anchor?: string;\n  isActive: boolean;\n  setActive(isActive: boolean, force?: boolean): Promise<unknown> | void;\n}\n\nclass Tabs extends Component {\n  panels: TabItem[] = [];\n  imagePanels: TabItem[] = [];\n  prefix: string | undefined;\n  isVertical: boolean = false;\n  viewingText: string | undefined;\n\n  constructor(el: HTMLElement) {\n    super(el);\n    this.isVertical = (this.dom.tabsContainer as HTMLElement).classList.contains('tabs--vertical');\n    if (this.el.dataset.viewingText) this.viewingText = this.el.dataset.viewingText;\n    this.buildTabs();\n    this.addTabListeners();\n  }\n\n  setupDefaults() {\n    if (this.el.dataset.prefix) this.prefix = this.el.dataset.prefix;\n\n    this.dom = {\n      tabsContainer: this.el.querySelector<HTMLElement>('.tabs'),\n      panels: this.prefix\n        ? this.el.querySelectorAll<HTMLElement>(`.tabs__${this.prefix}-panel`)\n        : this.el.querySelectorAll<HTMLElement>('.tabs__panel'),\n      imagePanels: this.prefix\n        ? this.el.querySelectorAll<HTMLElement>(`.tabs__${this.prefix}-panel-image`)\n        : this.el.querySelectorAll<HTMLElement>('.tabs__panel-image')\n    };\n  }\n\n  buildTabs() {\n    const panels = this.dom.panels as NodeListOf<HTMLDivElement>;\n    const imagePanels = this.dom.imagePanels as NodeListOf<HTMLDivElement>;\n    const tabsContainer = this.dom.tabsContainer as HTMLDivElement;\n    tabsContainer.innerHTML = '';\n    const mobileTabs = document.createElement('div');\n    mobileTabs.classList.add('tabs__mobile');\n    const desktopTabs = document.createElement('div');\n    desktopTabs.classList.add('tabs__desktop');\n\n    let tabsContent = '';\n    let dropdownContent = '';\n\n    panels.forEach((item, index) => {\n      const uuid = item.id;\n\n      item.setAttribute('aria-labelledby', `tab-${uuid}`);\n      if (index) {\n        item.classList.add('tabs__item--hidden');\n      }\n\n      tabsContent += `\n        <button class=\"tab\" type=\"button\" role=\"tab\" id=\"tab-${uuid}\" aria-controls=\"${uuid}\" ${\n          index ? ' tabindex=\"-1\"' : ''\n        }>\n        ${item.dataset.title}\n        </button>\n      `;\n\n      dropdownContent += `<option value=\"${uuid}\">${\n        this.viewingText ? this.viewingText : ''\n      }${item.dataset.title}</option>`;\n      this.panels.push(new GeneralTab(item, !index));\n      if (imagePanels[index]) this.imagePanels.push(new GeneralTab(imagePanels[index], !index));\n    });\n\n    desktopTabs.innerHTML = tabsContent;\n    this.dom.tabs = desktopTabs.querySelectorAll('button');\n\n    this.dom.dropdown = document.createElement('select');\n    this.dom.dropdown.classList.add('tabs__dropdown');\n    this.dom.dropdown.classList.add('dropdown');\n    this.dom.dropdown.innerHTML = dropdownContent;\n\n    mobileTabs.append(this.dom.dropdown);\n    tabsContainer.append(desktopTabs);\n    tabsContainer.append(mobileTabs);\n\n    // check if there is a hash in the url and set the active panel\n    const hash = window.location.hash;\n    let activeId;\n    if (hash) {\n      activeId = this.panels.find(panel => panel.anchor === hash.replace('#', ''))?.id;\n      this.el.scrollIntoView({ behavior: 'smooth' });\n    }\n\n    this.setSelectedPanel(activeId || this.panels[0].id, true);\n  }\n\n  addTabListeners() {\n    (this.dom.tabs as NodeList).forEach(tab => {\n      tab.addEventListener('click', this.handleTabClick.bind(this));\n      tab.addEventListener('keydown', this.handleTabKeyDown.bind(this));\n    });\n    (this.dom.dropdown as HTMLSelectElement).addEventListener(\n      'change',\n      this.handleDropdownChange.bind(this)\n    );\n\n    window.addEventListener('hashchange', this.handleHashChange.bind(this));\n  }\n\n  handleTabClick(e: Event) {\n    const target = e.currentTarget as HTMLButtonElement;\n    const activeId = target.getAttribute('aria-controls');\n    (this.dom.tabsContainer as HTMLElement).scrollTo({\n      left: target.offsetLeft,\n      behavior: 'smooth'\n    });\n\n    this.setSelectedPanel(`${activeId}`);\n  }\n\n  handleTabKeyDown(e: Event) {\n    if (!(e instanceof KeyboardEvent)) return;\n\n    const target = e.currentTarget as HTMLButtonElement;\n    const tabs = this.dom.tabs as NodeListOf<HTMLButtonElement>;\n    let flag = false;\n\n    switch (e.key) {\n      case 'ArrowLeft':\n        if (target.previousElementSibling) {\n          (target.previousElementSibling as HTMLButtonElement).focus();\n        } else {\n          (tabs[tabs.length - 1] as HTMLButtonElement).focus();\n        }\n        flag = true;\n        break;\n\n      case 'ArrowRight':\n        if (target.nextElementSibling) {\n          (target.nextElementSibling as HTMLButtonElement).focus();\n        } else {\n          (tabs[0] as HTMLButtonElement).focus();\n        }\n        flag = true;\n        break;\n\n      case 'Home':\n        (tabs[0] as HTMLButtonElement).focus();\n        flag = true;\n        break;\n\n      case 'End':\n        (tabs[tabs.length - 1] as HTMLButtonElement).focus();\n        flag = true;\n        break;\n\n      default:\n        break;\n    }\n\n    if (flag) {\n      e.stopPropagation();\n      e.preventDefault();\n    }\n  }\n\n  handleHashChange() {\n    const hash = window.location.hash;\n    const activeId = this.panels.find(panel => panel.anchor === hash.replace('#', ''))?.id;\n\n    if (activeId) {\n      this.setSelectedPanel(activeId, false);\n      this.el.scrollIntoView({ behavior: 'smooth' });\n    }\n  }\n\n  handleDropdownChange(e: Event) {\n    const target = e.target as HTMLSelectElement;\n    const activeId = target.value;\n\n    this.setSelectedPanel(activeId);\n  }\n\n  async setSelectedPanel(id: string, setUrl = true) {\n    const tabs = [...(this.dom.tabs as NodeListOf<HTMLButtonElement>)];\n\n    const currentPanel = this.panels.find(panel => panel.isActive) as GeneralTab;\n    const selectedPanel = this.panels.find(panel => panel.id === id) as GeneralTab;\n    const currentImagePanel = this.imagePanels.find(panel => panel.isActive) as GeneralTab;\n    const selectedImagePanel = this.imagePanels.find(\n      panel => panel.id === `${id}--image`\n    ) as GeneralTab;\n\n    // Deselect active tab\n    const currentTab = tabs.find(tab => tab.getAttribute('aria-selected') === 'true');\n    currentTab?.setAttribute('aria-selected', 'false');\n    currentTab?.setAttribute('tabindex', '-1');\n\n    // Select new tab\n    const selectedTab = tabs.find(tab => tab.id === `tab-${id}`);\n    selectedTab?.setAttribute('aria-selected', 'true');\n    selectedTab?.removeAttribute('tabindex');\n\n    // Update the url with the fata-anchor value\n    if (setUrl) {\n      const newUrl = new URL(window.location.href);\n      newUrl.hash = selectedPanel?.anchor || '';\n      window.history.pushState({}, '', newUrl.toString());\n    }\n\n    if (this.isVertical) {\n      (this.el.querySelector('.tabs__desktop') as HTMLElement).style.setProperty(\n        '--inset-block-start',\n        `${(selectedTab as HTMLElement).offsetTop}px`\n      );\n      (this.el.querySelector('.tabs__desktop') as HTMLElement).style.setProperty(\n        '--block-size',\n        `${(selectedTab as HTMLElement).offsetHeight}px`\n      );\n    } else {\n      (this.el.querySelector('.tabs__desktop') as HTMLElement).style.setProperty(\n        '--inset-inline-start',\n        `${(selectedTab as HTMLElement).offsetLeft}px`\n      );\n      (this.el.querySelector('.tabs__desktop') as HTMLElement).style.setProperty(\n        '--inline-size',\n        `${(selectedTab as HTMLElement).offsetWidth}px`\n      );\n    }\n\n    // if (this.panelInTransition) {\n    //   // Check if previous panel in transition\n    //   await this.panelInTransition?.setActive(false);\n    // }\n\n    const carouselSlides = document\n      .getElementById(currentPanel.id)\n      ?.querySelectorAll('.swiper-slide');\n\n    if (carouselSlides) {\n      if (currentPanel === selectedPanel) {\n        this.updatePanelStatus(currentPanel, currentImagePanel, selectedPanel, selectedImagePanel);\n        this.animateCarouselSlides(carouselSlides);\n      } else {\n        const selectedCarouselSlides = document\n          .getElementById(selectedPanel.id)\n          ?.querySelectorAll('.swiper-slide');\n\n        if (selectedCarouselSlides) {\n          this.animateCarouselSlides(carouselSlides, 'out').then(() => {\n            this.updatePanelStatus(\n              currentPanel,\n              currentImagePanel,\n              selectedPanel,\n              selectedImagePanel\n            );\n            this.animateCarouselSlides(selectedCarouselSlides);\n          });\n        }\n      }\n    } else {\n      this.updatePanelStatus(currentPanel, currentImagePanel, selectedPanel, selectedImagePanel);\n    }\n  }\n\n  updatePanelStatus(\n    currentPanel: GeneralTab,\n    currentImagePanel: GeneralTab,\n    selectedPanel: GeneralTab,\n    selectedImagePanel: GeneralTab\n  ) {\n    currentPanel?.setActive(false);\n    currentImagePanel?.setActive(false);\n    selectedPanel?.setActive(true);\n    selectedImagePanel?.setActive(true);\n  }\n\n  animateCarouselSlides(\n    carouselSlides: NodeListOf<Element>,\n    direction: string = 'in'\n  ): AnimationPlaybackControls {\n    const sequence: AnimationSequence = [];\n    const tabletMQ = window.matchMedia(`(max-width:${breakpoints.tabletLandscape - 1}px)`);\n    const reducedMotion = window.matchMedia('(prefers-reduced-motion: reduce)');\n    const maxVisibleSlides = tabletMQ.matches ? 1 : 4;\n\n    carouselSlides.forEach((slide, idx) => {\n      const yDuration = idx < maxVisibleSlides && !reducedMotion.matches ? 0.8 : 0;\n      const opDuration = idx < maxVisibleSlides && !reducedMotion.matches ? 0.4 : 0;\n\n      sequence.push([\n        slide,\n        {\n          y: direction === 'in' ? [-50, 0] : [0, 50],\n          opacity: direction === 'in' ? [0, 1] : [1, 0]\n        },\n        {\n          ease: direction === 'in' ? 'easeOut' : 'easeIn',\n          duration: yDuration,\n          opacity: { duration: opDuration },\n          at: '-0.7'\n        }\n      ]);\n    });\n\n    const animation: AnimationPlaybackControls = animate(sequence);\n\n    return animation;\n  }\n}\n\nexport default Tabs;\n"],"names":["GeneralTab","Component","el","isActive","anchor","__publicField","Tabs","panels","imagePanels","tabsContainer","mobileTabs","desktopTabs","tabsContent","dropdownContent","item","index","uuid","hash","activeId","_a","panel","tab","e","target","tabs","flag","id","setUrl","currentPanel","selectedPanel","currentImagePanel","selectedImagePanel","currentTab","selectedTab","newUrl","carouselSlides","selectedCarouselSlides","_b","direction","sequence","tabletMQ","breakpoints","reducedMotion","maxVisibleSlides","slide","idx","yDuration","opDuration","animate"],"mappings":"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"}