{"version":3,"sources":["webpack:///./src/js/components/dropdown.js","webpack:///./src/js/modules/header/hamburgerMenu.js","webpack:///./src/js/modules/header/megaMenuIntegratedTabs.js","webpack:///./src/js/modules/header/megaMenu.js","webpack:///./src/js/modules/header/search.js","webpack:///./src/js/modules/header/languageMenu.js","webpack:///./src/js/modules/header/stickyNavigation.js","webpack:///./src/js/modules/header/index.js"],"names":["Module","this","options","el","style","dataset","multiselect","selectedArray","buildMultiSelectDropdown","buildDropdown","document","addEventListener","handleClickOutside","bind","handleOptionSelect","dom","trigger","handleTriggerClick","handleTriggerKeydown","parentNode","hideDropdownList","list","childNodes","forEach","item","selectItem","event","callback","value","Event","createEvent","initEvent","dispatchEvent","e","wrapper","target","contains","innerHTML","getPlaceholder","option","includes","setAttribute","isDevice","getAttribute","showDropdownList","which","keyCode","activeItem","preventDefault","stopPropagation","nextElement","previousElementSibling","focusItem","focusLast","nextElementSibling","focusFirst","getElementById","checked","filter","push","element","removeAttribute","defocusItem","scrollHeight","clientHeight","scrollBottom","scrollTop","elementBottom","offsetTop","offsetHeight","firstItem","querySelector","items","querySelectorAll","length","classList","add","remove","placeholder","selectedOptionLabel","count","find","text","listId","uuidv4","createElement","insertBefore","appendChild","label","id","textContent","map","disabled","join","nextSibling","trim","parent","removeChild","destroy","setupDefaults","addListeners","Component","handleEscape","handleFocus","ignoreUtilFocusChanges","html","body","pageContainer","stickyMenu","primaryLinkContainers","primaryLinks","submenus","closeButton","drawer","primaryLinkContainersSmDevice","primaryLinksSmDevice","submenusSmDevice","triggerIconOpen","triggerIconClose","marker","menu","primaryNav","header","link","index","guid","handlePrimaryLinkSelect","handlePrimaryLinkSelectSmDevice","handleSubmenuNavigate","button","hideSubmenus","removeEventListener","currentTarget","activeSubmenu","displaySubmenu","activeSubmenuSmDevice","hideSubmenusSmDevice","displaySubmenuSmDevice","submenu","transition","width","offsetWidth","left","offsetLeft","gsap","to","height","autoAlpha","duration","closeDrawer","openDrawer","tl","timeline","window","innerHeight","scrollY","headerHeight","difference","top","opacity","onComplete","display","set","from","addEventListeners","focus","removeEventListeners","activeElement","submenuLinks","indexOf","TAB","attemptFocus","RIGHT","DOWN","focusFirstDescendant","LEFT","UP","focusLastDescendant","i","child","ESC","lastFocus","isFocusable","tabsContainer","tabs","panelsContainer","panels","videos","buildNavigation","calculateSizes","debounce","tab","handleTabClick","handleKeyDown","tabGuid","panelGuid","panel","dropdownGuid","dropdownContainer","dropdownLabel","dropdown","Dropdown","on","handleOptionChange","panelId","setValue","changePanel","key","END","HOME","currentTab","activeTab","currentPanelId","ease","Expo","easeOut","panelIframe","setTimeout","video","pause","maxHeight","menusSmDevice","primaryNavSmDevice","primaryNavLinks","secondaryNav","secondaryNavLinks","tertiaryNav","back","backBtn","toPrimaryNav","handleBackClick","handleResize","activeTertiaryNav","previousState","secNav","parentElement","activeSecondaryNav","displayTertiaryNav","terNav","integratedTabs","MegaMenuIntegratedTabs","breakpoint","matchMedia","matches","form","input","clear","submit","suggestions","initialSuggestions","loadedSuggestions","loadedSuggestionsList","endpoint","suggestionsEndpoint","language","action","handleTextInputFocus","handleTextInputBlur","checkInputValue","navigateSuggestions","handleLoadSuggestions","handleClearSearch","suggestionsOpen","easeInOut","isTabletLandscape","preventScroll","minHeight","padding","unselectSuggestions","setInitialSuggestions","Axios","url","params","q","data","suggestion","selectedSuggestion","previousOption","selectSuggestion","nextOption","isDesktop","isTablet","isMobile","currentLink","anchors","container","navContainer","prev","next","buildJumpLinks","Waypoint","offset","handler","direction","selectOption","nextLink","prevLink","refreshAll","jumpLinksList","checkScrollWidth","totalLinks","links","anchor","camelize","jumpLiks","handleJumpLinkClick","handleCheckInitialAnchor","scrollWidth","clientWidth","scrollToJumpLink","hash","location","jumpToAnchor","toggleButtons","targetId","replace","scrollTo","history","pushState","screenWidth","innerWidth","listWidth","remaining","isShortList","hamburgerMenuToggle","hamburgerMenu","hamburgerMenuToggleSmDevice","hamburgerMenuSmDevice","languageMenuToggle","languageMenu","searchToggle","headerSearch","stickySubNav","megaMenu","megaMenuIntegratedTabs","megaMenuSmDevice","HamburgerMenu","MegaMenu","HeaderSearch","LanguageMenu","StickyNavigation","handleScroll","toggleSearch","toggleLanguageMenu","toggleHamburgerMenu","toggleHamburgerMenuSmDevice","toggleDrawer","hero","pageContentScroll"],"mappings":"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","file":"33.2c4ce6b1ae63096f9ecc.js","sourcesContent":["import { Component } from '@verndale/core';\r\nimport { isDevice } from '../helpers';\r\nimport { v4 as uuidv4 } from 'uuid';\r\n\r\nclass Module extends Component {\r\n  setupDefaults() {\r\n    this.options = [...this.el];\r\n    this.style = this.el.dataset.style;\r\n    this.multiselect = this.el.dataset.multiselect;\r\n    this.selectedArray = [];\r\n\r\n    if (!this.multiselect) this.buildDropdown();\r\n    else this.buildMultiSelectDropdown();\r\n  }\r\n\r\n  addListeners() {\r\n    document.addEventListener('click', this.handleClickOutside.bind(this));\r\n    this.el.addEventListener('change', this.handleOptionSelect.bind(this));\r\n    this.dom.trigger.addEventListener(\r\n      'click',\r\n      this.handleTriggerClick.bind(this)\r\n    );\r\n    this.dom.trigger.addEventListener(\r\n      'keydown',\r\n      this.handleTriggerKeydown.bind(this)\r\n    );\r\n    this.dom.trigger.parentNode.addEventListener(\r\n      'blur',\r\n      this.hideDropdownList.bind(this)\r\n    );\r\n    this.dom.list.childNodes.forEach(item => {\r\n      item.addEventListener('click', () => this.selectItem(item));\r\n    });\r\n  }\r\n\r\n  on(event, callback) {\r\n    this.el.addEventListener(event, callback);\r\n  }\r\n\r\n  setValue(value) {\r\n    let event;\r\n\r\n    if (typeof Event === 'function') {\r\n      event = new Event('change');\r\n    } else {\r\n      event = document.createEvent('Event');\r\n      event.initEvent('change', true, true);\r\n    }\r\n\r\n    this.el.value = value;\r\n    this.el.dispatchEvent(event);\r\n  }\r\n\r\n  getValue() {\r\n    return this.el.value;\r\n  }\r\n\r\n  handleClickOutside(e) {\r\n    if (this.dom.wrapper !== e.target && !this.dom.wrapper.contains(e.target)) {\r\n      this.hideDropdownList();\r\n    }\r\n  }\r\n\r\n  handleOptionSelect() {\r\n    let event;\r\n\r\n    if (typeof Event === 'function') {\r\n      event = new Event('option');\r\n    } else {\r\n      event = document.createEvent('Event');\r\n      event.initEvent('option', true, true);\r\n    }\r\n\r\n    if (this.multiselect)  {\r\n      this.dom.trigger.innerHTML = this.getPlaceholder(this.selectedArray);\r\n      this.options.forEach(option => {\r\n        if (this.selectedArray.includes(option.value)) {\r\n          option.setAttribute('aria-selected', true);\r\n        } else {\r\n          option.setAttribute('aria-selected', false);\r\n        }\r\n      });\r\n\r\n\r\n      this.dom.list.childNodes.forEach(item => {\r\n        if (item.dataset) {\r\n          if (this.selectedArray.includes(item.dataset.value)) {\r\n            item.setAttribute('aria-selected', true);\r\n          } else {\r\n            item.setAttribute('aria-selected', false);\r\n          }\r\n        }\r\n      });\r\n    } else {\r\n      this.dom.trigger.innerHTML = this.getPlaceholder(this.el.value);\r\n\r\n      this.options.forEach(option => {\r\n        if (option.value === this.el.value) {\r\n          option.setAttribute('aria-selected', true);\r\n        } else {\r\n          option.setAttribute('aria-selected', false);\r\n        }\r\n      });\r\n\r\n      this.dom.list.childNodes.forEach(item => {\r\n        if (item.dataset.value === this.el.value) {\r\n          item.setAttribute('aria-selected', true);\r\n        } else {\r\n          item.setAttribute('aria-selected', false);\r\n        }\r\n      });\r\n    }\r\n\r\n    this.el.dispatchEvent(event);\r\n  }\r\n\r\n  handleTriggerClick() {\r\n    if (isDevice()) {\r\n      //return;\r\n    }\r\n\r\n    if (!this.dom.trigger.getAttribute('aria-expanded')) {\r\n      this.showDropdownList();\r\n    } else {\r\n      this.hideDropdownList();\r\n    }\r\n  }\r\n\r\n  handleTriggerKeydown(e) {\r\n    if (isDevice()) return;\r\n\r\n    const key = e.which || e.keyCode;\r\n\r\n    switch (key) {\r\n      case 13: // ENTER\r\n        if (this.dom.trigger.getAttribute('aria-expanded')) {\r\n          if (this.activeItem) {\r\n            e.preventDefault();\r\n            e.stopPropagation();\r\n            this.selectItem(this.activeItem);\r\n          }\r\n        }\r\n        break;\r\n      case 38: // UP\r\n        e.preventDefault();\r\n        this.showDropdownList();\r\n\r\n        if (this.activeItem) {\r\n          const nextElement = this.activeItem.previousElementSibling;\r\n\r\n          if (nextElement) {\r\n            this.focusItem(nextElement);\r\n          } else {\r\n            this.focusLast();\r\n          }\r\n        } else {\r\n          this.focusLast();\r\n        }\r\n\r\n        break;\r\n      case 40: // DOWN\r\n        e.preventDefault();\r\n        this.showDropdownList();\r\n\r\n        if (this.activeItem) {\r\n          const nextElement = this.activeItem.nextElementSibling;\r\n\r\n          if (nextElement) {\r\n            this.focusItem(nextElement);\r\n          } else {\r\n            this.focusFirst();\r\n          }\r\n        } else {\r\n          this.focusFirst();\r\n        }\r\n\r\n        break;\r\n      case 36:\r\n        e.preventDefault();\r\n        this.focusFirst();\r\n        break;\r\n      case 35:\r\n        e.preventDefault();\r\n        this.focusLast();\r\n        break;\r\n    }\r\n  }\r\n\r\n  selectItem(item) {\r\n    this.el.value = item.dataset.value;\r\n    if (this.multiselect) {\r\n      if (this.selectedArray.includes(this.el.value)) {\r\n        if (this.el.value === 'All') {\r\n\r\n          this.selectedArray = [];\r\n          this.options.forEach(option => {\r\n            if (option.value) {\r\n              document.getElementById(option.value).checked = false;\r\n            }\r\n          });\r\n        } else {\r\n          if (this.el.value !== 'All') {\r\n            document.getElementById('All').checked = false;\r\n            this.selectedArray = this.selectedArray.filter(item => item !== 'All');\r\n          }\r\n\r\n        }\r\n        document.getElementById(this.el.value).checked = false;\r\n        this.selectedArray = this.selectedArray.filter(item => item !== this.el.value);\r\n      } else {\r\n        if (this.el.value === 'All') {\r\n          this.selectedArray = [];\r\n          this.options.forEach(option => {\r\n            if (option.value) {\r\n              this.selectedArray.push(option.value);\r\n              document.getElementById(option.value).checked = true;\r\n            }\r\n          });\r\n        } else {\r\n          document.getElementById(this.el.value).checked = true;\r\n          this.selectedArray.push(item.dataset.value);\r\n        }\r\n      }\r\n      this.handleOptionSelect()\r\n    } else {\r\n      this.handleOptionSelect()\r\n      this.hideDropdownList();\r\n    }\r\n  }\r\n\r\n  defocusItem(element) {\r\n    if (!element) return;\r\n    element.removeAttribute('aria-selected');\r\n  }\r\n\r\n  focusItem(element) {\r\n    this.defocusItem(this.activeItem);\r\n    element.setAttribute('aria-selected', 'true');\r\n    this.activeItem = element;\r\n\r\n    if (this.dom.list.scrollHeight > this.dom.list.clientHeight) {\r\n      const scrollBottom = this.dom.list.clientHeight + this.dom.list.scrollTop;\r\n      const elementBottom = element.offsetTop + element.offsetHeight;\r\n      if (elementBottom > scrollBottom) {\r\n        this.dom.list.scrollTop = elementBottom - this.dom.list.clientHeight;\r\n      } else if (element.offsetTop < this.dom.list.scrollTop) {\r\n        this.dom.list.scrollTop = element.offsetTop;\r\n      }\r\n    }\r\n  }\r\n\r\n  focusFirst() {\r\n    const firstItem = this.dom.list.querySelector('[role=\"option\"]');\r\n    if (firstItem) {\r\n      this.focusItem(firstItem);\r\n    }\r\n  }\r\n\r\n  focusLast() {\r\n    const items = this.dom.list.querySelectorAll('[role=\"option\"]');\r\n\r\n    if (items.length) {\r\n      this.focusItem(items[items.length - 1]);\r\n    }\r\n  }\r\n\r\n  showDropdownList() {\r\n    this.dom.wrapper.classList.add('is-focused');\r\n    this.dom.trigger.setAttribute('aria-expanded', true);\r\n  }\r\n\r\n  hideDropdownList() {\r\n    this.dom.wrapper.classList.remove('is-focused');\r\n    this.dom.trigger.removeAttribute('aria-expanded');\r\n    this.defocusItem(this.activeItem);\r\n    this.activeItem = null;\r\n  }\r\n\r\n  getPlaceholder(value) {\r\n    const placeholder = this.el.dataset.placeholder;\r\n\r\n    if (this.multiselect) {\r\n      let selectedOptionLabel, count = value.length;\r\n      if (value.length > 0) {\r\n        if (value.includes('All')) count = count - 1;\r\n        if (value.includes('')) count = count - 1;\r\n        selectedOptionLabel = `Selected(${count})`;\r\n      } else {\r\n        selectedOptionLabel = this.options.find(\r\n          option => option.value === ''\r\n        ).text;\r\n      }\r\n      if (placeholder) {\r\n        return `${\r\n          selectedOptionLabel\r\n            ? `<span>${placeholder}:</span>`\r\n            : `<span>${placeholder}</span>`\r\n        } ${selectedOptionLabel}`;\r\n      }\r\n      return selectedOptionLabel;\r\n    }\r\n\r\n    const selectedOptionLabel = this.options.find(\r\n      option => option.value === value\r\n    ).text;\r\n    if (placeholder) {\r\n      return `${\r\n        selectedOptionLabel\r\n          ? `<span>${placeholder}:</span>`\r\n          : `<span>${placeholder}</span>`\r\n      } ${selectedOptionLabel}`;\r\n    }\r\n    return selectedOptionLabel;\r\n\r\n  }\r\n\r\n  buildDropdown() {\r\n    const listId = uuidv4();\r\n    this.dom.wrapper = document.createElement('div');\r\n    this.el.setAttribute('aria-hidden', true);\r\n    this.el.setAttribute('tabindex', '-1');\r\n    this.el.parentNode.insertBefore(this.dom.wrapper, this.el);\r\n    this.dom.wrapper.classList.add('dropdown');\r\n\r\n    if (this.style) {\r\n      this.dom.wrapper.classList.add(`dropdown--${this.style}`);\r\n    }\r\n\r\n    if (isDevice()) {\r\n      this.dom.wrapper.classList.add('dropdown--native');\r\n    }\r\n    this.dom.wrapper.appendChild(this.el);\r\n\r\n    this.dom.trigger = document.createElement('button');\r\n    this.dom.trigger.classList.add('dropdown__trigger');\r\n    this.dom.trigger.setAttribute('type', 'button');\r\n    this.dom.trigger.setAttribute('role', 'combobox');\r\n    this.dom.trigger.setAttribute('aria-haspopup', 'listbox');\r\n    this.dom.trigger.setAttribute('aria-expanded', false);\r\n    this.dom.trigger.setAttribute('aria-controls', `${listId}`);\r\n\r\n    // Get label\r\n    const label = document.querySelector(`label[for=\"${this.el.id}\"]`);\r\n\r\n    if (label) {\r\n      this.dom.trigger.setAttribute('aria-label', label.textContent);\r\n      this.dom.wrapper.appendChild(label);\r\n    }\r\n\r\n    this.dom.trigger.innerHTML = this.getPlaceholder(this.el.value);\r\n\r\n    this.dom.wrapper.appendChild(this.dom.trigger);\r\n\r\n    this.dom.list = document.createElement('ul');\r\n    this.dom.list.id = listId;\r\n    this.dom.list.classList.add('dropdown__list');\r\n    this.dom.list.setAttribute('role', 'listbox');\r\n    this.dom.list.setAttribute(\r\n      'aria-label',\r\n      this.el.getAttribute('aria-label')\r\n    );\r\n    this.dom.list.innerHTML = this.options\r\n      //.filter(option => option.value)\r\n      .map(\r\n        option => {\r\n          const disabled = option.getAttribute('disabled') ? ' is-disabled' : '';\r\n          return `<li class=\"dropdown__item ${disabled}\" role=\"option\" data-value=\"${\r\n            option.value\r\n          }\" aria-selected=\"${option.value === this.el.value}\">${\r\n            option.text\r\n          }</li>`\r\n        }\r\n      )\r\n      .join('');\r\n    this.el.parentNode.insertBefore(this.dom.list, this.el.nextSibling);\r\n    this.dom.wrapper.appendChild(this.dom.list);\r\n  }\r\n\r\n  buildMultiSelectDropdown() {\r\n    const listId = uuidv4();\r\n    this.dom.wrapper = document.createElement('div');\r\n    this.el.setAttribute('aria-hidden', true);\r\n    this.el.setAttribute('tabindex', '-1');\r\n    this.el.parentNode.insertBefore(this.dom.wrapper, this.el);\r\n    this.dom.wrapper.classList.add('multiselect-dropdown');\r\n\r\n    if (this.style) {\r\n      this.dom.wrapper.classList.add(`multidropdown--${this.style}`);\r\n    }\r\n\r\n    if (isDevice()) {\r\n      this.dom.wrapper.classList.add('multidropdown--native');\r\n    }\r\n    this.dom.wrapper.appendChild(this.el);\r\n\r\n    this.dom.trigger = document.createElement('button');\r\n    this.dom.trigger.classList.add('multidropdown__trigger');\r\n    this.dom.trigger.setAttribute('type', 'button');\r\n    this.dom.trigger.setAttribute('role', 'combobox');\r\n    this.dom.trigger.setAttribute('aria-haspopup', 'listbox');\r\n    this.dom.trigger.setAttribute('aria-expanded', false);\r\n    this.dom.trigger.setAttribute('aria-controls', `${listId}`);\r\n\r\n    // Get label\r\n    const label = document.querySelector(`label[for=\"${this.el.id}\"]`);\r\n\r\n    if (label) {\r\n      this.dom.trigger.setAttribute('aria-label', label.textContent);\r\n      this.dom.wrapper.appendChild(label);\r\n    }\r\n\r\n    this.dom.trigger.innerHTML = this.getPlaceholder(this.el.value);\r\n    //this.dom.trigger.innerHTML = this.getPlaceholder(this.selectedArray);\r\n\r\n    this.dom.wrapper.appendChild(this.dom.trigger);\r\n\r\n    this.dom.list = document.createElement('ul');\r\n    this.dom.list.id = listId;\r\n    this.dom.list.classList.add('dropdown__list');\r\n    this.dom.list.setAttribute('role', 'listbox');\r\n    this.dom.list.setAttribute(\r\n      'aria-label',\r\n      this.el.getAttribute('aria-label')\r\n    );\r\n    this.dom.list.innerHTML = this.options\r\n      //.filter(option => option.value)\r\n      .map(\r\n        option => {\r\n          const disabled = option.getAttribute('disabled') ? ' is-disabled' : '';\r\n          if (option.value.trim().length !== 0) {\r\n\r\n            /*            return ` <li class=\"multidropdown__item ${disabled}\" data-value=\"${option.value}\" aria-selected=\"${option.value === this.el.value}\"><input id=\"${option.value}\" type=\"checkbox\" name=\"__field_87\" value=\"${option.value}\"\r\n                  class=\"FormChoice__Input FormChoice__Input--Checkbox checkmark\"    data-f-datainput=\"\"  aria-label=\"${option.text}\"\r\n                    /> ${option.text} </li>` */\r\n            return ` <li class=\"multidropdown__item ${disabled}\" data-value=\"${option.value}\" aria-selected=\"${option.value === this.el.value}\">\r\n\r\n                    <input id=\"${option.value}\" type=\"checkbox\" name=\"__field_87\" value=\"${option.value}\"\r\n        \r\n                          class=\"FormChoice__Input FormChoice__Input--Checkbox\"  data-f-datainput=\"\"  aria-label=\"${option.text}\"\r\n        \r\n                            /><span class=\"checkmark\"></span> ${option.text} </li>`\r\n          }\r\n        }\r\n      )\r\n      .join('');\r\n    this.el.parentNode.insertBefore(this.dom.list, this.el.nextSibling);\r\n    this.dom.wrapper.appendChild(this.dom.list);\r\n  }\r\n\r\n  destroy() {\r\n    const parent = this.el.parentNode;\r\n    parent.removeChild(this.el);\r\n    parent.parentNode.insertBefore(this.el, parent);\r\n    parent.parentNode.removeChild(parent);\r\n  }\r\n\r\n  update() {\r\n    this.destroy();\r\n    this.setupDefaults();\r\n    this.addListeners();\r\n  }\r\n}\r\n\r\nexport default Module;\r\n","import { Component } from '@verndale/core';\r\nimport { gsap } from 'gsap';\r\nimport { v4 as uuidv4 } from 'uuid';\r\nimport { isFocusable, keyCode } from '../../helpers';\r\n\r\nclass Module extends Component {\r\n  setupDefaults() {\r\n    this.handleEscape = this.handleEscape.bind(this);\r\n    this.handleFocus = this.handleFocus.bind(this);\r\n\r\n    this.ignoreUtilFocusChanges = false;\r\n\r\n    this.dom = {\r\n      html: document.querySelector('html'),\r\n      body: document.querySelector('body'),\r\n      pageContainer: document.querySelector('.page-container'),\r\n      stickyMenu: this.el.querySelector('.header__sticky'),\r\n\r\n      primaryLinkContainers: [\r\n        ...this.el.querySelectorAll('.hamburger-menu__section')\r\n      ],\r\n      primaryLinks: this.el.querySelectorAll('.hamburger-menu__primary-link'),\r\n      submenus: [...this.el.querySelectorAll('.hamburger-menu__submenu, .mega-menu__submenu')],\r\n      closeButton: [...this.el.querySelectorAll('.hamburger-menu-toggle-icon-close')],\r\n      drawer: this.el.querySelector('.hamburger-menu__sm-device'),\r\n      primaryLinkContainersSmDevice: [\r\n        ...this.el.querySelectorAll('.hamburger-menu__section-smdevice')\r\n      ],\r\n      primaryLinksSmDevice: this.el.querySelectorAll('.hamburger-menu__primary-link-smdevice'),\r\n      submenusSmDevice: [...this.el.querySelectorAll('.hamburger-menu__submenu-smdevice')],\r\n      trigger: this.el.querySelector('.header__hamburger-menu-toggle'),\r\n      triggerIconOpen: this.el.querySelector('.header__hamburger-menu-toggle-icon-open'),\r\n      triggerIconClose: this.el.querySelector('.header__hamburger-menu-toggle-icon-close'),\r\n      marker: this.el.querySelector('#marker'),\r\n      menu: this.el.querySelector('.hamburger-menu'),\r\n      primaryNav: this.el.querySelector('.hamburger-menu__primary-nav'),\r\n      header: document.querySelector('.header')\r\n    };\r\n  }\r\n\r\n  addListeners() {\r\n    this.dom.primaryLinks.forEach((link, index) => {\r\n      const guid = uuidv4();\r\n      if (this.dom.submenus[index]) {\r\n        this.dom.submenus[index].id = guid;\r\n      }\r\n      link.setAttribute('aria-controls', guid);\r\n      link.addEventListener('click', this.handlePrimaryLinkSelect.bind(this));\r\n    });\r\n\r\n    this.dom.primaryLinksSmDevice.forEach((link, index) => {\r\n      const guid = uuidv4();\r\n      if (this.dom.submenusSmDevice[index]) {\r\n        this.dom.submenusSmDevice[index].id = guid;\r\n      }\r\n      link.setAttribute('aria-controls', guid);\r\n      link.addEventListener('click', this.handlePrimaryLinkSelectSmDevice.bind(this));\r\n    });\r\n\r\n    this.dom.drawer.addEventListener(\r\n      'keydown',\r\n      this.handleSubmenuNavigate.bind(this)\r\n    );\r\n\r\n    this.dom.closeButton.forEach(button => {\r\n      button.addEventListener('click', this.hideSubmenus.bind(this));\r\n    });\r\n\r\n    document.addEventListener('click', this.handleClickOutside.bind(this));\r\n  }\r\n\r\n  addEventListeners() {\r\n    document.addEventListener('keyup', this.handleEscape);\r\n    document.addEventListener('focus', this.handleFocus, true);\r\n  }\r\n\r\n  removeEventListeners() {\r\n    document.removeEventListener('keyup', this.handleEscape);\r\n    document.removeEventListener('focus', this.handleFocus, true);\r\n  }\r\n\r\n  handlePrimaryLinkSelect(e) {\r\n    const id = e.currentTarget.getAttribute('aria-controls');\r\n    if (this.activeSubmenu && this.activeSubmenu.id === id) {\r\n      e.currentTarget.classList.remove('hamburger-menu__primary-link-selected');\r\n      this.hideSubmenus();\r\n    } else {\r\n      this.displaySubmenu(e.currentTarget);\r\n    }\r\n  }\r\n\r\n  handlePrimaryLinkSelectSmDevice(e) {\r\n    const id = e.currentTarget.getAttribute('aria-controls');\r\n    if (this.activeSubmenuSmDevice && this.activeSubmenuSmDevice.id === id) {\r\n      e.currentTarget.classList.remove('hamburger-menu__primary-link-selected');\r\n      this.hideSubmenusSmDevice();\r\n    } else {\r\n      this.displaySubmenuSmDevice(e.currentTarget);\r\n    }\r\n  }\r\n\r\n  displaySubmenu(option) {\r\n    this.hideSubmenus();\r\n    this.dom.header.classList.add('mega-menu-open');\r\n    this.activeSubmenu = this.dom.submenus.find(\r\n      submenu => submenu.id === option.getAttribute('aria-controls')\r\n    );\r\n\r\n    option.classList.add('hamburger-menu__primary-link-selected');\r\n    this.dom.marker.style.transition = '0.5s';\r\n    this.dom.marker.style.width = `${option.offsetWidth}`+ 'px';\r\n    this.dom.marker.style.left = `${option.offsetLeft}` + 'px';\r\n\r\n    gsap.to(this.activeSubmenu, {\r\n      height: 'auto',\r\n      autoAlpha: 1,\r\n      duration: 0.3\r\n    });\r\n  }\r\n\r\n  displaySubmenuSmDevice(option) {\r\n    this.hideSubmenusSmDevice();\r\n\r\n    this.activeSubmenuSmDevice = this.dom.submenusSmDevice.find(\r\n      submenu => submenu.id === option.getAttribute('aria-controls')\r\n    );\r\n\r\n    option.parentNode.classList.add('hamburger-menu__section--active');\r\n\r\n    gsap.to(this.activeSubmenuSmDevice, {\r\n      height: 'auto',\r\n      autoAlpha: 1,\r\n      duration: 0.3\r\n    });\r\n  }\r\n\r\n  hideSubmenus() {\r\n    this.dom.marker.style.transition = '0s';\r\n    this.dom.marker.style.left = 0;\r\n    this.dom.marker.style.width = 0;\r\n    this.dom.header.classList.remove('mega-menu-open');\r\n    if (this.activeSubmenu) {\r\n      this.dom.primaryLinkContainers\r\n        .find(link =>\r\n          link.classList.contains('hamburger-menu__section--active')\r\n        )\r\n        ?.classList.remove('hamburger-menu__section--active');\r\n\r\n      const links = [...this.dom.primaryLinks];\r\n\r\n        links\r\n          .find(link =>\r\n            link.classList.contains('hamburger-menu__primary-link-selected')\r\n          )\r\n        ?.classList.remove('hamburger-menu__primary-link-selected');\r\n\r\n        gsap.to(this.activeSubmenu, {\r\n          height: 0,\r\n          autoAlpha: 0,\r\n          duration: 0.3\r\n        });\r\n\r\n        this.activeSubmenu = null;\r\n    }\r\n  }\r\n\r\n  hideSubmenusSmDevice() {\r\n    if (this.activeSubmenuSmDevice) {\r\n      this.dom.primaryLinkContainersSmDevice\r\n        .find(link =>\r\n          link.classList.contains('hamburger-menu__section--active')\r\n        )\r\n        ?.classList.remove('hamburger-menu__section--active');\r\n\r\n      gsap.to(this.activeSubmenuSmDevice, {\r\n        height: 0,\r\n        autoAlpha: 0,\r\n        duration: 0.3\r\n      });\r\n      this.activeSubmenuSmDevice = null;\r\n    }\r\n  }\r\n\r\n  toggleDrawer() {\r\n    if (this.el.classList.contains('header--hamburger-menu-open')) {\r\n      this.closeDrawer();\r\n      document.dispatchEvent(new Event('menuClose'));\r\n    } else {\r\n      this.openDrawer();\r\n    }\r\n  }\r\n\r\n  openDrawer() {\r\n    this.dom.trigger.classList.add('is-open');\r\n    const tl = gsap.timeline();\r\n    const { innerHeight, scrollY } = window;\r\n    const { offsetTop } = this.dom.pageContainer;\r\n    const headerHeight = this.dom.stickyMenu.offsetHeight;\r\n    const difference = offsetTop - scrollY;\r\n    this.dom.html.classList.add('is-scroll-locked');\r\n    this.dom.body.style.top = `-${scrollY}px`;\r\n\r\n    gsap.to(this.dom.triggerIconOpen, {\r\n      opacity: 0,\r\n      duration: 0.3,\r\n      onComplete: () => {\r\n        gsap.to(this.dom.triggerIconOpen, { display: 'none' });\r\n        gsap.to(this.dom.triggerIconClose, { display: 'flex' });\r\n        gsap.to(this.dom.triggerIconClose, {\r\n          opacity: 1,\r\n          duration: 0.3\r\n        })\r\n      }\r\n    });\r\n\r\n    this.el.classList.add('header--hamburger-menu-open');\r\n    tl.set(this.dom.drawer, {\r\n      height: 0,\r\n      autoAlpha: 1\r\n    });\r\n    tl.to(this.dom.drawer, {\r\n      height: `${innerHeight - headerHeight - (difference > 0 ? difference : 0)}px`,\r\n      duration: 0.4\r\n    });\r\n\r\n    this.dom.primaryLinkContainers.forEach(link => {\r\n      link.classList.remove('hamburger-menu__section--active');\r\n      tl.from(link, { opacity: 0, duration: 0.12 });\r\n    });\r\n\r\n    this.dom.submenusSmDevice.forEach(submenu => {\r\n      submenu.classList.remove('hamburger-menu__submenu--active');\r\n    });\r\n\r\n    this.addEventListeners();\r\n  }\r\n\r\n  closeDrawer() {\r\n    this.dom.trigger.classList.remove('is-open');\r\n    const tl = gsap.timeline();\r\n    this.el.classList.remove('header--hamburger-menu-open');\r\n    this.dom.html.classList.remove('is-scroll-locked');\r\n\r\n    gsap.to(this.dom.triggerIconClose, {\r\n      opacity: 0,\r\n      duration: 0.3,\r\n      onComplete: () => {\r\n        gsap.to(this.dom.triggerIconClose, { display: 'none' });\r\n        gsap.to(this.dom.triggerIconOpen, { display: 'flex' });\r\n        gsap.to(this.dom.triggerIconOpen, {\r\n          opacity: 1,\r\n          duration: 0.3\r\n        })\r\n      }\r\n    });\r\n\r\n    tl.to(this.dom.drawer, {\r\n      height: 0,\r\n      duration: 0.4,\r\n      onComplete: () => {\r\n        this.dom.trigger?.focus();\r\n        this.activeSubmenu = null;\r\n        this.dom.submenusSmDevice.forEach(submenu => (submenu.style = null));\r\n      }\r\n    });\r\n    tl.set(this.dom.drawer, { height: null, autoAlpha: 0 });\r\n\r\n    this.hideSubmenusSmDevice();\r\n\r\n    this.removeEventListeners();\r\n  }\r\n\r\n  handleSubmenuNavigate(e) {\r\n    if (this.ignoreUtilFocusChanges) return;\r\n\r\n    const { activeElement } = document;\r\n    const submenuLinks = [...this.activeSubmenu?.querySelectorAll('a')];\r\n    const activeSubmenu = submenuLinks.indexOf(activeElement);\r\n\r\n    switch (e.keyCode) {\r\n      case keyCode.TAB:\r\n        if (this.activeSubmenu && this.activeSubmenu.contains(activeElement)) {\r\n          e.preventDefault();\r\n\r\n          this.attemptFocus(\r\n            this.dom.primaryLinks.find(\r\n              link =>\r\n                link.getAttribute('aria-controls') === this.activeSubmenu.id\r\n            )\r\n          );\r\n        }\r\n        break;\r\n      case keyCode.RIGHT:\r\n      case keyCode.DOWN:\r\n        if (this.activeSubmenu && this.activeSubmenu.contains(activeElement)) {\r\n          e.preventDefault();\r\n          if (activeSubmenu === submenuLinks.length - 1) {\r\n            this.focusFirstDescendant(this.activeSubmenu);\r\n          } else {\r\n            this.attemptFocus(submenuLinks[activeSubmenu + 1]);\r\n          }\r\n        }\r\n        break;\r\n      case keyCode.LEFT:\r\n      case keyCode.UP:\r\n        if (this.activeSubmenu && this.activeSubmenu.contains(activeElement)) {\r\n          e.preventDefault();\r\n          if (activeSubmenu === 0) {\r\n            this.focusLastDescendant(this.activeSubmenu);\r\n          } else {\r\n            this.attemptFocus(submenuLinks[activeSubmenu - 1]);\r\n          }\r\n        }\r\n        break;\r\n    }\r\n  }\r\n\r\n  handleClickOutside(e) {\r\n    if (!this.dom.menu.contains(e.target) && (!this.dom.primaryNav.contains(e.target))){\r\n      this.hideSubmenus();\r\n    }\r\n  }\r\n\r\n  focusFirstDescendant(element) {\r\n    for (let i = 0; i < element.childNodes.length; i++) {\r\n      const child = element.childNodes[i];\r\n      if (this.attemptFocus(child) || this.focusFirstDescendant(child)) {\r\n        return true;\r\n      }\r\n    }\r\n    return false;\r\n  }\r\n\r\n  focusLastDescendant(element) {\r\n    for (let i = element.childNodes.length - 1; i >= 0; i--) {\r\n      const child = element.childNodes[i];\r\n      if (this.attemptFocus(child) || this.focusLastDescendant(child)) {\r\n        return true;\r\n      }\r\n    }\r\n    return false;\r\n  }\r\n\r\n  handleEscape(e) {\r\n    const key = e.which || e.keyCode;\r\n\r\n    if (key === keyCode.ESC) {\r\n      e.stopPropagation();\r\n    }\r\n  }\r\n\r\n  handleFocus(e) {\r\n    if (\r\n      this.ignoreUtilFocusChanges ||\r\n      e.target.classList.contains('header__language-toggle') ||\r\n      e.target.classList.contains('hamburger-menu__primary-link') ||\r\n      e.target.classList.contains('header__search-toggle')\r\n    )\r\n      return;\r\n\r\n    if (this.dom.drawer.contains(e.target)) {\r\n      this.lastFocus = e.target;\r\n    } else {\r\n      this.focusFirstDescendant(this.dom.drawer);\r\n\r\n      if (this.lastFocus === document.activeElement) {\r\n        this.focusLastDescendant(this.dom.drawer);\r\n      }\r\n      this.lastFocus = document.activeElement;\r\n    }\r\n  }\r\n\r\n  attemptFocus(element) {\r\n    if (!isFocusable(element)) {\r\n      return false;\r\n    }\r\n\r\n    this.ignoreUtilFocusChanges = true;\r\n    try {\r\n      element.focus();\r\n    } catch (e) {\r\n      return;\r\n    }\r\n    this.ignoreUtilFocusChanges = false;\r\n    return document.activeElement === element;\r\n  }\r\n}\r\n\r\nexport default Module;\r\n","import { Component } from '@verndale/core';\r\nimport { gsap, Expo } from 'gsap';\r\nimport { v4 as uuidv4 } from 'uuid';\r\nimport { keyCode, debounce } from '../../helpers';\r\nimport Dropdown from '../../components/dropdown';\r\nimport { unset } from 'lodash';\r\n\r\nclass Module extends Component {\r\n  setupDefaults() {\r\n    this.dom = {\r\n      tabsContainer: this.el.querySelector('.mega-menu-integrated-tab__tabs'),\r\n      tabs: [...this.el.querySelectorAll('.mega-menu-integrated-tab__tab')],\r\n      panelsContainer: this.el.querySelector('.mega-menu-integrated-tab__panels'),\r\n      panels: [...this.el.querySelectorAll('.mega-menu-integrated-tab__panel')],\r\n      videos: document.querySelectorAll('video')\r\n    };\r\n\r\n    this.buildNavigation();\r\n    this.calculateSizes();\r\n  }\r\n\r\n  addListeners() {\r\n    window.addEventListener(\r\n      'resize',\r\n      debounce(this.calculateSizes.bind(this), 300)\r\n    );\r\n\r\n    window.addEventListener('load', this.calculateSizes());\r\n\r\n    this.dom.tabs.forEach((tab, index) => {\r\n      tab.index = index;\r\n      tab.addEventListener('click', this.handleTabClick.bind(this));\r\n      tab.addEventListener('keydown', this.handleKeyDown.bind(this));\r\n    });\r\n  }\r\n\r\n  buildNavigation() {\r\n    const options = this.dom.tabs\r\n      .map((tab, index) => {\r\n        const tabGuid = uuidv4();\r\n        const panelGuid = uuidv4();\r\n        const panel = this.dom.panels[index];\r\n\r\n        tab.setAttribute('id', tabGuid);\r\n        tab.setAttribute('aria-controls', panelGuid);\r\n\r\n        if (panel) {\r\n          panel.setAttribute('id', panelGuid);\r\n          panel.setAttribute('aria-labelledby', tabGuid);\r\n        }\r\n        return `<option value=\"${panelGuid}\">${tab.textContent}</option>`;\r\n      })\r\n      .join('');\r\n\r\n    const dropdownGuid = uuidv4();\r\n    const dropdownContainer = document.createElement('div');\r\n    dropdownContainer.classList.add('mega-menu-integrated-tab__dropdown');\r\n\r\n    const dropdownLabel = document.createElement('label');\r\n    dropdownLabel.setAttribute('for', dropdownGuid);\r\n    dropdownLabel.classList.add('label');\r\n    dropdownLabel.innerHTML = this.dom.tabsContainer.getAttribute('aria-label');\r\n\r\n    const dropdown = document.createElement('select');\r\n    dropdown.id = dropdownGuid;\r\n    dropdown.innerHTML = options;\r\n\r\n    dropdownContainer.appendChild(dropdownLabel);\r\n    dropdownContainer.appendChild(dropdown);\r\n    this.dom.panelsContainer.parentNode.insertBefore(\r\n      dropdownContainer,\r\n      this.dom.panelsContainer\r\n    );\r\n\r\n    this.dom.dropdown = new Dropdown(dropdown);\r\n\r\n    this.dom.dropdown.on('option', this.handleOptionChange.bind(this));\r\n  }\r\n\r\n  handleTabClick(e) {\r\n    const panelId = e.currentTarget.getAttribute('aria-controls');\r\n    this.dom.dropdown.setValue(panelId);\r\n  }\r\n\r\n  handleOptionChange(e) {\r\n    const panelId = e.target.value;\r\n    this.changePanel(panelId);\r\n  }\r\n\r\n  handleKeyDown(e) {\r\n    const key = e.keyCode;\r\n    const target = e.target;\r\n\r\n    switch (key) {\r\n      case keyCode.END:\r\n        e.preventDefault();\r\n        // Activate last tab\r\n        this.dom.tabs[this.dom.tabs.length - 1].focus();\r\n        this.changePanel(\r\n          this.dom.tabs[this.dom.tabs.length - 1].getAttribute('aria-controls')\r\n        );\r\n        break;\r\n      case keyCode.HOME:\r\n        e.preventDefault();\r\n        // Activate first tab\r\n        this.dom.tabs[0].focus();\r\n        this.changePanel(this.dom.tabs[0].getAttribute('aria-controls'));\r\n        break;\r\n      case keyCode.UP:\r\n      case keyCode.LEFT:\r\n        e.preventDefault();\r\n        // Focus previous tab\r\n        if (this.dom.tabs[target.index - 1]) {\r\n          this.dom.tabs[target.index - 1].focus();\r\n        } else {\r\n          this.dom.tabs[this.dom.tabs.length - 1].focus();\r\n        }\r\n        break;\r\n      case keyCode.DOWN:\r\n      case keyCode.RIGHT:\r\n        e.preventDefault();\r\n        // Focus next tab\r\n        if (this.dom.tabs[target.index + 1]) {\r\n          this.dom.tabs[target.index + 1].focus();\r\n        } else {\r\n          this.dom.tabs[0].focus();\r\n        }\r\n        break;\r\n    }\r\n  }\r\n\r\n  changePanel(panelId) {\r\n    const currentTab = this.dom.tabs.find(\r\n      tab => tab.getAttribute('aria-selected') === 'true'\r\n    );\r\n    const activeTab = this.dom.tabs.find(\r\n      tab => tab.getAttribute('aria-controls') === panelId\r\n    );\r\n    const currentPanelId = currentTab.getAttribute('aria-controls');\r\n\r\n    if (currentTab !== activeTab) {\r\n      activeTab.setAttribute('aria-selected', 'true');\r\n      activeTab.setAttribute('tabindex', 0);\r\n\r\n      currentTab.setAttribute('aria-selected', 'false');\r\n      currentTab.setAttribute('tabindex', 1);\r\n\r\n      currentTab.classList.remove('selected');\r\n      activeTab.classList.add('selected');\r\n      this.calculateSizes();\r\n\r\n      this.dom.panels.forEach(panel => {\r\n        if (panel.id === panelId) {\r\n          gsap.to(panel, {\r\n            autoAlpha: 1,\r\n            ease: Expo.easeOut,\r\n            duration: 0.4\r\n          });\r\n        } else {\r\n          gsap.to(panel, {\r\n            autoAlpha: 0,\r\n            ease: Expo.easeOut,\r\n            duration: 0.4\r\n          });\r\n        }\r\n      });\r\n      this.dom.panels.forEach(panel => {\r\n        if (panel.id === currentPanelId) {\r\n          const panelIframe = panel.querySelector('iframe');\r\n          if (panelIframe)\r\n            panelIframe.setAttribute('src', panelIframe.getAttribute('src'));\r\n        }\r\n      });\r\n\r\n      setTimeout(() => {\r\n        this.dom.videos.forEach(video => {\r\n          video.pause();\r\n          //video.currentTime = 0;\r\n        });\r\n      }, 0.4);\r\n    }\r\n  }\r\n\r\n  calculateSizes() {\r\n    this.dom.panelsContainer.style.height = 'unset';\r\n    const tabHeight = this.dom.tabsContainer.offsetHeight;\r\n    let maxHeight = tabHeight;\r\n\r\n    this.dom.panels.forEach(panel => {\r\n      if (panel.offsetHeight >= maxHeight) {\r\n        maxHeight = panel.offsetHeight;\r\n      }\r\n    });\r\n    this.dom.panelsContainer.style['height'] = `${maxHeight}px`;\r\n  }\r\n}\r\n\r\nexport default Module;\r\n","import { Component } from '@verndale/core';\r\nimport { gsap } from 'gsap';\r\nimport { v4 as uuidv4 } from 'uuid';\r\nimport { isFocusable, keyCode } from '../../helpers';\r\nimport MegaMenuIntegratedTabs from './megaMenuIntegratedTabs';\r\n\r\nclass Module extends Component {\r\n  setupDefaults() {\r\n    this.handleEscape = this.handleEscape.bind(this);\r\n    this.handleFocus = this.handleFocus.bind(this);\r\n    this.ignoreUtilFocusChanges = false;\r\n    this.dom = {\r\n      html: document.querySelector('html'),\r\n      body: document.querySelector('body'),\r\n      pageContainer: document.querySelector('.page-container'),\r\n      stickyMenu: this.el.querySelector('.header__sticky'),\r\n      primaryLinkContainers: [\r\n        ...this.el.querySelectorAll('.mega-menu__section')\r\n      ],\r\n      primaryLinks: this.el.querySelectorAll('.hamburger-menu__primary-link'),\r\n      submenus: [...this.el.querySelectorAll('.mega-menu__submenu')],\r\n      trigger: this.el.querySelector('.header__hamburger-menu-toggle'),\r\n      triggerIconOpen: this.el.querySelector('.header__hamburger-menu-toggle-icon-open'),\r\n      triggerIconClose: this.el.querySelector('.header__hamburger-menu-toggle-icon-close'),\r\n      marker: this.el.querySelector('#marker'),\r\n      menu: this.el.querySelector('.mega-menu'),\r\n      primaryNav: this.el.querySelector('.hamburger-menu__primary-nav'),\r\n      header: document.querySelector('.header'),\r\n      tabs: [...this.el.querySelectorAll('.mega-menu-integrated-tab')],\r\n      menusSmDevice: [...this.el.querySelectorAll('.mega-menu__submenu-smdevice')],\r\n      drawer: this.el.querySelector('.mega-menu__sm-device'),\r\n      primaryNavSmDevice: this.el.querySelectorAll('.mega-menu__primary-nav'),\r\n      primaryNavLinks: this.el.querySelectorAll('.mega-menu__primary-link'),\r\n      secondaryNav: [...this.el.querySelectorAll('.mega-menu__secondary-nav')],\r\n      secondaryNavLinks: this.el.querySelectorAll('.mega-menu__secondary-nav-link'),\r\n      tertiaryNav: [...this.el.querySelectorAll('.mega-menu__tertiary-nav')],\r\n      back: this.el.querySelectorAll('.mega-menu__back.to-primary-nav, .mega-menu__back.to-secondary-nav'),\r\n      videos: document.querySelectorAll('video')\r\n    };\r\n  }\r\n\r\n  addListeners() {\r\n    this.dom.primaryLinks.forEach((link, index) => {\r\n      const guid = uuidv4();\r\n      if (this.dom.submenus[index]) {\r\n        this.dom.submenus[index].id = guid;\r\n      }\r\n      link.setAttribute('aria-controls', guid);\r\n      link.addEventListener('click', this.handlePrimaryLinkSelect.bind(this));\r\n    });\r\n\r\n    this.dom.primaryNavLinks.forEach((link, index) => {\r\n      const guid = uuidv4();\r\n      if (this.dom.secondaryNav[index]) {\r\n        this.dom.secondaryNav[index].id = guid;\r\n      }\r\n      link.setAttribute('aria-controls', guid);\r\n      link.addEventListener('click', this.handlePrimaryLinkSelect.bind(this));\r\n    });\r\n\r\n    this.dom.secondaryNavLinks.forEach((link, index) => {\r\n      const guid = uuidv4();\r\n      if (this.dom.tertiaryNav[index]) {\r\n        this.dom.tertiaryNav[index].id = guid;\r\n      }\r\n      link.setAttribute('aria-controls', guid);\r\n      link.addEventListener('click', this.handlePrimaryLinkSelect.bind(this));\r\n    });\r\n\r\n    this.dom.back.forEach((backBtn, toPrimaryNav) => {\r\n      toPrimaryNav = backBtn.classList.contains('to-primary-nav')\r\n      backBtn.addEventListener('click', this.handleBackClick.bind(this, toPrimaryNav));\r\n    });\r\n\r\n    document.addEventListener('click', this.handleClickOutside.bind(this));\r\n  }\r\n\r\n  addEventListeners() {\r\n    document.addEventListener('keyup', this.handleEscape);\r\n    document.addEventListener('focus', this.handleFocus, true);\r\n    window.addEventListener('resize', this.handleResize.bind(this));\r\n  }\r\n\r\n  removeEventListeners() {\r\n    document.removeEventListener('keyup', this.handleEscape);\r\n    document.removeEventListener('focus', this.handleFocus, true);\r\n  }\r\n\r\n  handleBackClick(e) {\r\n    if (e) {\r\n      this.hideSubmenus();\r\n    } else {\r\n      const id = this.activeTertiaryNav.id;\r\n      const secLinks = [...this.dom.secondaryNavLinks];\r\n      const previousState = secLinks.find(\r\n        secNav => secNav.getAttribute('aria-controls') === id\r\n      )\r\n      ?.parentElement;\r\n      this.hideSubmenus();\r\n      this.activeSecondaryNav = previousState;\r\n      this.displayTertiaryNav(this.activeSecondaryNav);\r\n    }\r\n  }\r\n\r\n  handlePrimaryLinkSelect(e) {\r\n    const id = e.currentTarget.getAttribute('aria-controls');\r\n    if (this.activeSubmenu && this.activeSubmenu.id === id ||\r\n        this.activeSecondaryNav && this.activeSecondaryNav.id === id ||\r\n        this.activeTertiaryNav && this.activeTertiaryNav.id === id\r\n    ) {\r\n      e.currentTarget.classList.remove('hamburger-menu__primary-link-selected');\r\n      e.currentTarget.classList.remove('mega-menu__primary-link-selected');\r\n      this.hideSubmenus();\r\n    } else {\r\n      this.dom.videos.forEach(video => {\r\n        video.pause();\r\n      });\r\n      this.displaySubmenu(e.currentTarget);\r\n    }\r\n  }\r\n\r\n  displaySubmenu(option) {\r\n    this.hideSubmenus();\r\n    this.dom.header.classList.add('mega-menu-open');\r\n    const { scrollY } = window;\r\n    //this.dom.body.style.top = `-${scrollY}px`;\r\n    //this.dom.html.classList.add('is-scroll-locked');\r\n    this.activeSubmenu = this.dom.submenus.find(\r\n      submenu => submenu.id === option.getAttribute('aria-controls')\r\n    );\r\n\r\n    this.activeSecondaryNav = this.dom.secondaryNav.find(\r\n      secNav => secNav.id === option.getAttribute('aria-controls')\r\n    );\r\n\r\n    this.activeTertiaryNav = this.dom.tertiaryNav.find(\r\n      terNav => terNav.id === option.getAttribute('aria-controls')\r\n    );\r\n\r\n    option.classList.add('hamburger-menu__primary-link-selected');\r\n    this.dom.marker.style.transition = '0.5s';\r\n    this.dom.marker.style.width = `${option.offsetWidth}`+ 'px';\r\n    this.dom.marker.style.left = `${option.offsetLeft}` + 'px';\r\n\r\n    option.classList.add('mega-menu__primary-link-selected');\r\n\r\n    if (this.activeSubmenu) {\r\n      gsap.to(this.activeSubmenu, {\r\n        height: 'auto',\r\n        autoAlpha: 1,\r\n        duration: 0.3\r\n      });\r\n    } else if (this.activeSecondaryNav) {\r\n      gsap.to(this.dom.primaryNavSmDevice, {\r\n        height: 0,\r\n        autoAlpha: 0,\r\n        duration: 0.3\r\n      });\r\n\r\n      gsap.to(this.activeSecondaryNav, {\r\n        height: 'auto',\r\n        autoAlpha: 1,\r\n        duration: 0.3\r\n      });\r\n    } else if (this.activeTertiaryNav) {\r\n      gsap.to(this.dom.primaryNavSmDevice, {\r\n        height: 0,\r\n        autoAlpha: 0,\r\n        duration: 0.3\r\n      });\r\n\r\n      gsap.to(this.activeSecondaryNav, {\r\n        height: 0,\r\n        autoAlpha: 0,\r\n        duration: 0.3\r\n      });\r\n\r\n      gsap.to(this.activeTertiaryNav, {\r\n        height: 'auto',\r\n        autoAlpha: 1,\r\n        duration: 0.3\r\n      });\r\n    }\r\n  }\r\n\r\n  hideSubmenus() {\r\n    this.dom.marker.style.transition = '0s';\r\n    this.dom.marker.style.left = 0;\r\n    this.dom.marker.style.width = 0;\r\n    this.dom.header.classList.remove('mega-menu-open');\r\n    this.dom.html.classList.remove('is-scroll-locked');\r\n\r\n    if (this.activeSubmenu) {\r\n      const tabs = [...this.activeSubmenu.querySelector('.mega-menu-integrated-tab').querySelectorAll('.mega-menu-integrated-tab__tab')];\r\n      this.integratedTabs = new MegaMenuIntegratedTabs(this.activeSubmenu);\r\n      this.integratedTabs.changePanel(tabs[0].getAttribute('aria-controls'));\r\n\r\n      const links = [...this.dom.primaryLinks];\r\n        links\r\n          .find(link =>\r\n            link.classList.contains('hamburger-menu__primary-link-selected')\r\n          )\r\n        ?.classList.remove('hamburger-menu__primary-link-selected');\r\n\r\n        gsap.to(this.activeSubmenu, {\r\n          height: 0,\r\n          autoAlpha: 0,\r\n          duration: 0.3\r\n        });\r\n\r\n        this.activeSubmenu = null;\r\n    }\r\n\r\n    if (this.activeSecondaryNav) {\r\n      const links = [...this.dom.primaryLinks];\r\n        links.find(link =>\r\n          link.classList.contains('mega-menu__primary-link-selected')\r\n        )\r\n      ?.classList.remove('mega-menu__primary-link-selected');\r\n\r\n        gsap.to(this.activeSecondaryNav, {\r\n          height: 0,\r\n          autoAlpha: 0,\r\n          duration: 0.3\r\n        });\r\n\r\n        gsap.to(this.dom.primaryNavSmDevice, {\r\n          height: 'auto',\r\n          autoAlpha: 1,\r\n          duration: 0.3\r\n        });\r\n\r\n        this.activeSecondaryNav = null;\r\n    }\r\n\r\n    if (this.activeTertiaryNav) {\r\n      gsap.to(this.activeTertiaryNav, {\r\n        height: 0,\r\n        autoAlpha: 0,\r\n        duration: 0.3\r\n      });\r\n\r\n      this.activeTertiaryNav = null;\r\n\r\n      gsap.to(this.activeSecondaryNav, {\r\n        height: 0,\r\n        autoAlpha: 0,\r\n        duration: 0.3\r\n      });\r\n    }\r\n  }\r\n\r\n  displayTertiaryNav(previousState) {\r\n    gsap.to(previousState, {\r\n      height: 'auto',\r\n      autoAlpha: 1,\r\n      duration: 0.3\r\n    });\r\n  }\r\n\r\n  toggleDrawer() {\r\n    if (this.el.classList.contains('header--hamburger-menu-open')) {\r\n      this.closeDrawer();\r\n      this.hideSubmenus();\r\n      document.dispatchEvent(new Event('menuClose'));\r\n    } else {\r\n      this.openDrawer();\r\n    }\r\n  }\r\n\r\n  openDrawer() {\r\n    this.dom.trigger.classList.add('is-open');\r\n    const tl = gsap.timeline();\r\n    const { innerHeight, scrollY } = window;\r\n    const { offsetTop } = this.dom.pageContainer;\r\n    const headerHeight = this.dom.stickyMenu.offsetHeight;\r\n    const difference = offsetTop - scrollY;\r\n    this.dom.html.classList.add('is-scroll-locked');\r\n    this.dom.body.style.top = `-${scrollY}px`;\r\n\r\n    gsap.to(this.dom.triggerIconOpen, {\r\n      opacity: 0,\r\n      duration: 0.3,\r\n      onComplete: () => {\r\n        gsap.to(this.dom.triggerIconOpen, { display: 'none' });\r\n        gsap.to(this.dom.triggerIconClose, { display: 'flex' });\r\n        gsap.to(this.dom.triggerIconClose, {\r\n          opacity: 1,\r\n          duration: 0.3\r\n        })\r\n      }\r\n    });\r\n\r\n    this.el.classList.add('header--hamburger-menu-open');\r\n    tl.set(this.dom.drawer, {\r\n      height: 0,\r\n      autoAlpha: 1\r\n    });\r\n    tl.to(this.dom.drawer, {\r\n      height: `${innerHeight - headerHeight - (difference > 0 ? difference : 0)}px`,\r\n      duration: 0.4\r\n    });\r\n\r\n    this.dom.primaryLinkContainers.forEach(link => {\r\n      link.classList.remove('mega-menu__section--active');\r\n      tl.from(link, { opacity: 0, duration: 0.12 });\r\n    });\r\n\r\n    this.dom.menusSmDevice.forEach(submenu => {\r\n      submenu.classList.remove('mega-menu__submenu--active');\r\n    });\r\n\r\n    this.addEventListeners();\r\n  }\r\n\r\n  closeDrawer() {\r\n    this.dom.trigger.classList.remove('is-open');\r\n    const tl = gsap.timeline();\r\n    this.el.classList.remove('header--hamburger-menu-open');\r\n    this.dom.html.classList.remove('is-scroll-locked');\r\n\r\n    gsap.to(this.dom.triggerIconClose, {\r\n      opacity: 0,\r\n      duration: 0.3,\r\n      onComplete: () => {\r\n        gsap.to(this.dom.triggerIconClose, { display: 'none' });\r\n        gsap.to(this.dom.triggerIconOpen, { display: 'flex' });\r\n        gsap.to(this.dom.triggerIconOpen, {\r\n          opacity: 1,\r\n          duration: 0.3\r\n        })\r\n      }\r\n    });\r\n\r\n    gsap.to(this.dom.drawer, {\r\n      height: 0,\r\n      autoAlpha: 0,\r\n      duration: 0.4\r\n    });\r\n\r\n    gsap.to(this.dom.primaryNavSmDevice, {\r\n      height: 'auto',\r\n      autoAlpha: 1,\r\n      duration: 0.3\r\n    });\r\n\r\n    this.removeEventListeners();\r\n  }\r\n\r\n  handleSubmenuNavigate(e) {\r\n    if (this.ignoreUtilFocusChanges) return;\r\n\r\n    const { activeElement } = document;\r\n    const submenuLinks = [...this.activeSubmenu?.querySelectorAll('a')];\r\n    const activeSubmenu = submenuLinks.indexOf(activeElement);\r\n\r\n    switch (e.keyCode) {\r\n      case keyCode.TAB:\r\n        if (this.activeSubmenu && this.activeSubmenu.contains(activeElement)) {\r\n          e.preventDefault();\r\n\r\n          this.attemptFocus(\r\n            this.dom.primaryLinks.find(\r\n              link =>\r\n                link.getAttribute('aria-controls') === this.activeSubmenu.id\r\n            )\r\n          );\r\n        }\r\n        break;\r\n      case keyCode.RIGHT:\r\n      case keyCode.DOWN:\r\n        if (this.activeSubmenu && this.activeSubmenu.contains(activeElement)) {\r\n          e.preventDefault();\r\n          if (activeSubmenu === submenuLinks.length - 1) {\r\n            this.focusFirstDescendant(this.activeSubmenu);\r\n          } else {\r\n            this.attemptFocus(submenuLinks[activeSubmenu + 1]);\r\n          }\r\n        }\r\n        break;\r\n      case keyCode.LEFT:\r\n      case keyCode.UP:\r\n        if (this.activeSubmenu && this.activeSubmenu.contains(activeElement)) {\r\n          e.preventDefault();\r\n          if (activeSubmenu === 0) {\r\n            this.focusLastDescendant(this.activeSubmenu);\r\n          } else {\r\n            this.attemptFocus(submenuLinks[activeSubmenu - 1]);\r\n          }\r\n        }\r\n        break;\r\n    }\r\n  }\r\n\r\n  handleClickOutside(e) {\r\n    this.breakpoint = matchMedia('(min-width: 1000px)');\r\n    if (this.breakpoint.matches) {\r\n      if (!this.dom.menu.contains(e.target) && (!this.dom.primaryNav.contains(e.target))){\r\n        this.hideSubmenus();\r\n      }\r\n    }\r\n  }\r\n\r\n  focusFirstDescendant(element) {\r\n    for (let i = 0; i < element.childNodes.length; i++) {\r\n      const child = element.childNodes[i];\r\n      if (this.attemptFocus(child) || this.focusFirstDescendant(child)) {\r\n        return true;\r\n      }\r\n    }\r\n    return false;\r\n  }\r\n\r\n  focusLastDescendant(element) {\r\n    for (let i = element.childNodes.length - 1; i >= 0; i--) {\r\n      const child = element.childNodes[i];\r\n      if (this.attemptFocus(child) || this.focusLastDescendant(child)) {\r\n        return true;\r\n      }\r\n    }\r\n    return false;\r\n  }\r\n\r\n  handleEscape(e) {\r\n    const key = e.which || e.keyCode;\r\n\r\n    if (key === keyCode.ESC) {\r\n      e.stopPropagation();\r\n    }\r\n  }\r\n\r\n  handleFocus(e) {\r\n    if (\r\n      this.ignoreUtilFocusChanges ||\r\n      e.target.classList.contains('header__language-toggle') ||\r\n      e.target.classList.contains('hamburger-menu__primary-link') ||\r\n      e.target.classList.contains('header__search-toggle')\r\n    )\r\n      return;\r\n\r\n    if (this.dom.drawer.contains(e.target)) {\r\n      this.lastFocus = e.target;\r\n    } else {\r\n      this.focusFirstDescendant(this.dom.drawer);\r\n\r\n      if (this.lastFocus === document.activeElement) {\r\n        this.focusLastDescendant(this.dom.drawer);\r\n      }\r\n      this.lastFocus = document.activeElement;\r\n    }\r\n  }\r\n\r\n  attemptFocus(element) {\r\n    if (!isFocusable(element)) {\r\n      return false;\r\n    }\r\n\r\n    this.ignoreUtilFocusChanges = true;\r\n    try {\r\n      element.focus();\r\n    } catch (e) {\r\n      return;\r\n    }\r\n    this.ignoreUtilFocusChanges = false;\r\n    return document.activeElement === element;\r\n  }\r\n\r\n  handleResize() {\r\n    const tl = gsap.timeline();\r\n    const { innerHeight, scrollY } = window;\r\n    const { offsetTop } = this.dom.pageContainer;\r\n    const headerHeight = this.dom.stickyMenu.offsetHeight;\r\n    const difference = offsetTop - scrollY;\r\n    tl.to(this.dom.drawer, {\r\n      height: `${innerHeight - headerHeight - (difference > 0 ? difference : 0)}px`,\r\n      duration: 0.4\r\n    });\r\n    this.dom.marker.style.width = '0';\r\n  }\r\n}\r\n\r\nexport default Module;\r\n","import { Component } from '@verndale/core';\r\nimport { gsap, Expo } from 'gsap';\r\nimport Axios from 'axios';\r\nimport { keyCode, debounce } from '../../helpers';\r\n\r\nclass Module extends Component {\r\n  setupDefaults() {\r\n    this.dom = {\r\n      html: document.querySelector('html'),\r\n      body: document.querySelector('body'),\r\n      pageContainer: document.querySelector('.page-container'),\r\n      stickyMenu: this.el.querySelector('.header__sticky'),\r\n      form: this.el.querySelector('.header-search__bar form'),\r\n      trigger: this.el.querySelector('.header__search-toggle'),\r\n      triggerIconOpen: this.el.querySelector('.header__search-toggle-icon-open'),\r\n      triggerIconClose: this.el.querySelector('.header__search-toggle-icon-close'),\r\n      drawer: this.el.querySelector('.header-search'),\r\n      input: this.el.querySelector('.header-search__input'),\r\n      clear: this.el.querySelector('.header-search__clear'),\r\n      submit: this.el.querySelector('.header-search__submit'),\r\n      suggestions: this.el.querySelector('.header-search__suggestions'),\r\n      initialSuggestions: this.el.querySelector(\r\n        '.header-search__suggestions-initial'\r\n      ),\r\n      loadedSuggestions: this.el.querySelector(\r\n        '.header-search__suggestions-loaded'\r\n      ),\r\n      loadedSuggestionsList: this.el.querySelector(\r\n        '.header-search__suggestions-loaded .header-search__suggestion-list'\r\n      )\r\n    };\r\n\r\n    this.endpoint = this.dom.drawer.dataset.suggestionsEndpoint;\r\n    this.language = this.dom.drawer.dataset.language;\r\n    this.action = this.dom.form.getAttribute('action');\r\n    this.initialSuggestions = !!this.dom.initialSuggestions;\r\n  }\r\n\r\n  addEventListeners() {\r\n    this.el.addEventListener('keydown', this.handleEscape.bind(this));\r\n    this.dom.input.addEventListener('focus', this.handleTextInputFocus.bind(this));\r\n    this.dom.input.addEventListener('blur', this.handleTextInputBlur.bind(this));\r\n    this.dom.input.addEventListener('change', this.checkInputValue.bind(this));\r\n    this.dom.input.addEventListener(\r\n      'keydown',\r\n      this.navigateSuggestions.bind(this)\r\n    );\r\n    this.dom.input.addEventListener(\r\n      'keyup',\r\n      debounce(this.handleLoadSuggestions.bind(this), 300)\r\n    );\r\n    this.dom.clear.addEventListener('click', this.handleClearSearch.bind(this));\r\n    document.addEventListener('click', this.handleClickOutside.bind(this));\r\n  }\r\n\r\n  removeEventListeners() {\r\n    this.el.removeEventListener('keydown', this.handleEscape.bind(this));\r\n    this.dom.input.removeEventListener('focus', this.handleTextInputFocus.bind(this));\r\n    this.dom.input.removeEventListener('blur', this.handleTextInputBlur.bind(this));\r\n    this.dom.input.removeEventListener('change', this.checkInputValue.bind(this));\r\n    this.dom.input.removeEventListener(\r\n      'keydown',\r\n      this.navigateSuggestions.bind(this)\r\n    );\r\n    this.dom.input.removeEventListener(\r\n      'keyup',\r\n      debounce(this.handleLoadSuggestions.bind(this), 300)\r\n    );\r\n    this.dom.clear.removeEventListener('click', this.handleClearSearch.bind(this));\r\n  }\r\n\r\n  handleTextInputFocus(e) {\r\n    e.target.parentNode.classList.add('is-focused');\r\n  }\r\n\r\n  handleTextInputBlur(e) {\r\n    e.target.parentNode.classList.remove('is-focused');\r\n  }\r\n\r\n  checkInputValue(e) {\r\n    if (e.target.value) {\r\n      e.target.parentNode.classList.add('is-filled');\r\n    } else {\r\n      e.target.parentNode.classList.remove('is-filled');\r\n    }\r\n  }\r\n\r\n  setInitialSuggestions() {\r\n    if (this.dom.initialSuggestions) {\r\n      this.initialSuggestions = true;\r\n      this.dom.submit.classList.remove('header-search__submit-btn');\r\n      this.dom.initialSuggestions.style.display = 'block';\r\n      this.dom.loadedSuggestions.style.display = 'none';\r\n    } else {\r\n      this.suggestionsOpen = false;\r\n      gsap.to(this.dom.suggestions, {\r\n        height: 0,\r\n        duration: 0.5,\r\n        ease: Expo.easeInOut\r\n      });\r\n    }\r\n  }\r\n\r\n  toggleDrawer() {\r\n    if (this.el.classList.contains('header--search-open')) {\r\n      this.closeDrawer();\r\n      document.dispatchEvent(new Event('menuClose'));\r\n    } else {\r\n      this.openDrawer();\r\n    }\r\n  }\r\n\r\n  openDrawer() {\r\n    const tl = gsap.timeline();\r\n    const { innerHeight, scrollY } = window;\r\n    const { offsetTop } = this.dom.pageContainer;\r\n    const headerHeight = this.dom.stickyMenu.offsetHeight;\r\n    const difference = offsetTop - scrollY;\r\n    const isTabletLandscape = window.matchMedia('(min-width: 1024px)');\r\n\r\n    if (!isTabletLandscape.matches) this.dom.html.classList.add('is-scroll-locked');\r\n\r\n    gsap.to(this.dom.triggerIconOpen, {\r\n      opacity: 0,\r\n      duration: 0.3,\r\n      onComplete: () => {\r\n        gsap.to(this.dom.triggerIconOpen, { display: 'none' });\r\n        gsap.to(this.dom.triggerIconClose, { display: 'flex' });\r\n        gsap.to(this.dom.triggerIconClose, {\r\n          opacity: 1,\r\n          duration: 0.3\r\n        })\r\n      }\r\n    });\r\n\r\n    if (this.dom.initialSuggestions) {\r\n      this.suggestionsOpen = true;\r\n      tl.to(this.dom.suggestions, {\r\n        height: 'auto',\r\n        duration: 0.5,\r\n        ease: Expo.easeInOut\r\n      });\r\n    }\r\n\r\n    this.el.classList.add('header--search-open');\r\n    tl.set(this.dom.drawer, {\r\n      height: 0,\r\n      autoAlpha: 1,\r\n      onComplete: () => {\r\n        this.dom.input.focus({ preventScroll: true });\r\n      }\r\n    });\r\n    tl.to(this.dom.drawer, {\r\n      height: (isTabletLandscape.matches ? 'auto' : `${innerHeight - headerHeight - (difference > 0 ? difference : 0)}px`),\r\n      minHeight: (isTabletLandscape.matches ? '400px' : ''),\r\n      maxHeight: (isTabletLandscape.matches ? `${innerHeight - headerHeight}px` : ''),\r\n      duration: 0.4,\r\n      onComplete: () => {\r\n        this.dom.drawer.classList.add('overflow-auto');\r\n      }\r\n    });\r\n\r\n    this.addEventListeners();\r\n  }\r\n\r\n  closeDrawer() {\r\n    const tl = gsap.timeline();\r\n    this.el.classList.remove('header--search-open');\r\n    gsap.to(this.dom.triggerIconClose, {\r\n      opacity: 0,\r\n      duration: 0.3,\r\n      onComplete: () => {\r\n        gsap.to(this.dom.triggerIconClose, { display: 'none' });\r\n        gsap.to(this.dom.triggerIconOpen, { display: 'flex' });\r\n        gsap.to(this.dom.triggerIconOpen, {\r\n          opacity: 1,\r\n          duration: 0.3\r\n        })\r\n      }\r\n    });\r\n\r\n    tl.to(this.dom.drawer, {\r\n      height: 0,\r\n      padding: 0,\r\n      minHeight: 0,\r\n      maxHeight: 0,\r\n      duration: 0.4,\r\n      onComplete: () => {\r\n        this.dom.loadedSuggestions.style.display = 'none';\r\n        this.dom.drawer.classList.remove('overflow-auto');\r\n\r\n        // Unselect any selected option\r\n        this.unselectSuggestions();\r\n\r\n        if (this.dom.initialSuggestions) {\r\n          this.initialSuggestions = true;\r\n          this.dom.initialSuggestions.style.display = 'block';\r\n        }\r\n\r\n        // Clear input\r\n        this.dom.input.value = '';\r\n        this.dom.clear.style.display = 'none';\r\n        this.dom.submit.style.display = 'none';\r\n        this.dom.trigger?.focus({ preventScroll: true });\r\n      }\r\n    });\r\n    tl.set(this.dom.drawer, { height: null, autoAlpha: 0, padding: '' });\r\n\r\n    this.removeEventListeners();\r\n\r\n    if (this.suggestionsOpen) {\r\n      tl.to(this.dom.suggestions, {\r\n        height: 0,\r\n        duration: 0.2\r\n      });\r\n    }\r\n  }\r\n\r\n  handleClickOutside(e) {\r\n    if (!this.dom.drawer.contains(e.target) && (!this.dom.trigger.contains(e.target))){\r\n      this.closeDrawer();\r\n    }\r\n  }\r\n\r\n  handleClearSearch() {\r\n    this.dom.input.value = '';\r\n    this.dom.clear.style.display = 'none';\r\n    this.dom.submit.style.display = 'none';\r\n    this.setInitialSuggestions();\r\n    this.unselectSuggestions();\r\n    this.dom.input.focus({ preventScroll: true });\r\n  }\r\n\r\n  async handleLoadSuggestions(e) {\r\n    const key = e.which || e.keyCode;\r\n    const { value } = e.target;\r\n\r\n    if (\r\n      [\r\n        keyCode.UP,\r\n        keyCode.DOWN,\r\n        keyCode.HOME,\r\n        keyCode.END,\r\n        keyCode.ESC,\r\n        keyCode.TAB\r\n      ].includes(key)\r\n    ) {\r\n      return;\r\n    }\r\n\r\n    this.unselectSuggestions();\r\n\r\n    if (value) {\r\n      this.dom.clear.style.display = 'block';\r\n      this.dom.submit.style.display = 'block';\r\n    } else {\r\n      this.dom.clear.style.display = 'none';\r\n      this.dom.submit.style.display = 'none';\r\n    }\r\n\r\n    if (value.length > 1) {\r\n      const { data } = await Axios({\r\n        url: this.endpoint,\r\n        params: { q: value, language: this.language }\r\n      });\r\n\r\n      if (data.suggestions?.length) {\r\n        this.initialSuggestions = false;\r\n\r\n        this.dom.loadedSuggestionsList.innerHTML = data.suggestions\r\n          .map(\r\n            suggestion =>\r\n              `<a href=\"${this.action}?query=${suggestion}\" tabindex=\"-1\"><li class=\"header-search__suggestions-list-item\">${suggestion}</li></a>`\r\n          )\r\n          .join('');\r\n        this.dom.submit.classList.add('header-search__submit-btn');\r\n        this.dom.loadedSuggestions.style.display = 'block';\r\n\r\n        if (this.dom.initialSuggestions) {\r\n          this.dom.initialSuggestions.style.display = 'none';\r\n        } else {\r\n          this.suggestionsOpen = true;\r\n          gsap.to(this.dom.suggestions, {\r\n            height: 'auto',\r\n            duration: 0.5,\r\n            ease: Expo.easeInOut\r\n          });\r\n        }\r\n      } else {\r\n        this.setInitialSuggestions();\r\n      }\r\n    } else {\r\n      this.setInitialSuggestions();\r\n    }\r\n  }\r\n\r\n  handleEscape(e) {\r\n    const key = e.which || e.keyCode;\r\n\r\n    if (key === keyCode.ESC) {\r\n      e.stopPropagation();\r\n      this.closeDrawer();\r\n    }\r\n  }\r\n\r\n  navigateSuggestions(e) {\r\n    const key = e.which || e.keyCode;\r\n\r\n    const suggestions = this.initialSuggestions\r\n      ? [...this.dom.initialSuggestions.querySelectorAll('a')]\r\n      : [...this.dom.loadedSuggestions.querySelectorAll('a')];\r\n    const selectedSuggestion = this.initialSuggestions\r\n      ? this.dom.initialSuggestions.querySelector('a.selected')\r\n      : this.dom.loadedSuggestions.querySelector('a.selected');\r\n\r\n    if (!suggestions.length) {\r\n      return;\r\n    }\r\n\r\n    switch (key) {\r\n      case keyCode.UP:\r\n        e.preventDefault();\r\n        this.unselectSuggestions();\r\n\r\n        const previousOption =\r\n          selectedSuggestion?.parentNode.previousElementSibling?.querySelector(\r\n            'a'\r\n          ) || suggestions[suggestions.length - 1];\r\n\r\n        this.selectSuggestion(previousOption);\r\n\r\n        break;\r\n      case keyCode.DOWN:\r\n        e.preventDefault();\r\n        this.unselectSuggestions();\r\n\r\n        const nextOption =\r\n          selectedSuggestion?.parentNode.nextElementSibling?.querySelector(\r\n            'a'\r\n          ) || suggestions[0];\r\n\r\n        this.selectSuggestion(nextOption);\r\n\r\n        break;\r\n      case keyCode.HOME:\r\n        e.preventDefault();\r\n        this.unselectSuggestions();\r\n        this.selectSuggestion(suggestions[0]);\r\n        break;\r\n      case keyCode.END:\r\n        e.preventDefault();\r\n        this.unselectSuggestions();\r\n        this.selectSuggestion(suggestions[suggestions.length - 1]);\r\n        break;\r\n      case keyCode.TAB:\r\n        this.unselectSuggestions();\r\n        break;\r\n    }\r\n  }\r\n\r\n  selectSuggestion(suggestion) {\r\n    suggestion.classList.add('selected');\r\n    this.dom.input.value = suggestion.textContent;\r\n    this.dom.clear.style.display = 'block';\r\n    this.dom.submit.style.display = 'block';\r\n  }\r\n\r\n  unselectSuggestions() {\r\n    const selectedSuggestion =\r\n      this.dom.initialSuggestions?.querySelector('a.selected') ||\r\n      this.dom.loadedSuggestions.querySelector('a.selected');\r\n    selectedSuggestion?.classList.remove('selected');\r\n  }\r\n}\r\n\r\nexport default Module;\r\n","import { Component } from '@verndale/core'\r\nimport { isFocusable, keyCode } from '../../helpers'\r\nimport { gsap } from 'gsap'\r\n\r\nclass Module extends Component {\r\n  setupDefaults() {\r\n    this.handleEscape = this.handleEscape.bind(this);\r\n    this.handleFocus = this.handleFocus.bind(this);\r\n\r\n    this.ignoreUtilFocusChanges = false;\r\n\r\n    this.dom = {\r\n      html: document.querySelector('html'),\r\n      body: document.querySelector('body'),\r\n      pageContainer: document.querySelector('.page-container'),\r\n      stickyMenu: this.el.querySelector('.header__sticky'),\r\n      drawer: this.el.querySelector('.language-menu'),\r\n      trigger: this.el.querySelector('.header__language-toggle'),\r\n      triggerIconOpen: this.el.querySelector('.header__language-toggle-icon-open'),\r\n      triggerIconClose: this.el.querySelector('.header__language-toggle-icon-close')\r\n    };\r\n  }\r\n\r\n  addEventListeners() {\r\n    document.addEventListener('keyup', this.handleEscape);\r\n    document.addEventListener('focus', this.handleFocus, true);\r\n    document.addEventListener('click', this.handleClickOutside.bind(this));\r\n  }\r\n\r\n  removeEventListeners() {\r\n    document.removeEventListener('keyup', this.handleEscape);\r\n    document.removeEventListener('focus', this.handleFocus, true);\r\n  }\r\n\r\n  toggleDrawer() {\r\n    if (this.el.classList.contains('header--language-menu-open')) {\r\n      this.closeDrawer();\r\n      document.dispatchEvent(new Event('menuClose'));\r\n    } else {\r\n      this.openDrawer();\r\n    }\r\n  }\r\n\r\n  openDrawer() {\r\n    const tl = gsap.timeline();\r\n    const { innerHeight, scrollY } = window;\r\n    const { offsetTop } = this.dom.pageContainer;\r\n    const headerHeight = this.dom.stickyMenu.offsetHeight;\r\n    const difference = offsetTop - scrollY;\r\n    const isTabletLandscape = window.matchMedia('(min-width: 1024px)');\r\n\r\n    if (!isTabletLandscape.matches) this.dom.html.classList.add('is-scroll-locked');\r\n\r\n    gsap.to(this.dom.triggerIconOpen, {\r\n      opacity: 0,\r\n      duration: 0.3,\r\n      onComplete: () => {\r\n        gsap.to(this.dom.triggerIconOpen, { display: 'none' });\r\n        gsap.to(this.dom.triggerIconClose, { display: 'flex' });\r\n        gsap.to(this.dom.triggerIconClose, {\r\n          opacity: 1,\r\n          duration: 0.3\r\n        })\r\n      }\r\n    });\r\n\r\n    this.el.classList.add('header--language-menu-open');\r\n    tl.set(this.dom.drawer, {\r\n      height: 0,\r\n      autoAlpha: 1\r\n    });\r\n    tl.to(this.dom.drawer, {\r\n      height: (isTabletLandscape.matches ? 'auto' : `${innerHeight - headerHeight - (difference > 0 ? difference : 0)}px`),\r\n      duration: 0.4\r\n    });\r\n\r\n    this.addEventListeners();\r\n  }\r\n\r\n  closeDrawer() {\r\n    const tl = gsap.timeline();\r\n    this.el.classList.remove('header--language-menu-open');\r\n    gsap.to(this.dom.triggerIconClose, {\r\n      opacity: 0,\r\n      duration: 0.3,\r\n      onComplete: () => {\r\n        gsap.to(this.dom.triggerIconClose, { display: 'none' });\r\n        gsap.to(this.dom.triggerIconOpen, { display: 'flex' });\r\n        gsap.to(this.dom.triggerIconOpen, {\r\n          opacity: 1,\r\n          duration: 0.3\r\n        })\r\n      }\r\n    });\r\n\r\n    tl.to(this.dom.drawer, {\r\n      height: 0,\r\n      padding: 0,\r\n      duration: 0.4\r\n    });\r\n    tl.set(this.dom.drawer, { height: null, padding: '', autoAlpha: 0 });\r\n\r\n    this.removeEventListeners();\r\n  }\r\n\r\n  handleClickOutside(e) {\r\n    if (!this.dom.drawer.contains(e.target) && (!this.dom.trigger.contains(e.target))){\r\n      this.closeDrawer();\r\n    }\r\n  }\r\n\r\n  focusFirstDescendant(element) {\r\n    for (let i = 0; i < element.childNodes.length; i++) {\r\n      const child = element.childNodes[i];\r\n      if (this.attemptFocus(child) || this.focusFirstDescendant(child)) {\r\n        return true;\r\n      }\r\n    }\r\n    return false;\r\n  }\r\n\r\n  focusLastDescendant(element) {\r\n    for (let i = element.childNodes.length - 1; i >= 0; i--) {\r\n      const child = element.childNodes[i];\r\n      if (this.attemptFocus(child) || this.focusLastDescendant(child)) {\r\n        return true;\r\n      }\r\n    }\r\n    return false;\r\n  }\r\n\r\n  handleEscape(e) {\r\n    const key = e.which || e.keyCode;\r\n\r\n    if (key === keyCode.ESC) {\r\n      e.stopPropagation();\r\n      this.closeDrawer();\r\n    }\r\n  }\r\n\r\n  handleFocus(e) {\r\n    if (\r\n      this.ignoreUtilFocusChanges ||\r\n      e.target.classList.contains('header__language-toggle') ||\r\n      e.target.classList.contains('header__hamburger-menu-toggle') ||\r\n      e.target.classList.contains('header__search-toggle')\r\n    )\r\n      return;\r\n\r\n    if (this.dom.drawer.contains(e.target)) {\r\n      this.lastFocus = e.target;\r\n    } else {\r\n      this.focusFirstDescendant(this.dom.drawer);\r\n\r\n      if (this.lastFocus === document.activeElement) {\r\n        this.focusLastDescendant(this.dom.drawer);\r\n      }\r\n      this.lastFocus = document.activeElement;\r\n    }\r\n  }\r\n\r\n  attemptFocus(element) {\r\n    if (!isFocusable(element)) {\r\n      return false;\r\n    }\r\n\r\n    this.ignoreUtilFocusChanges = true;\r\n    try {\r\n      element.focus();\r\n    } catch (e) {\r\n      return;\r\n    }\r\n    this.ignoreUtilFocusChanges = false;\r\n    return document.activeElement === element;\r\n  }\r\n}\r\n\r\nexport default Module;\r\n","import { Component } from '@verndale/core';\r\nimport { gsap } from 'gsap';\r\nimport 'waypoints/lib/noframework.waypoints';\r\nimport { camelize } from '../../helpers';\r\n\r\nclass Module extends Component {\r\n  setupDefaults() {\r\n    this.isDesktop = window.matchMedia('(min-width: 1280px)');\r\n    this.isTablet = window.matchMedia('(min-width: 768px)');\r\n    this.isMobile = !this.isDesktop.matches && !this.isTablet.matches;\r\n    this.currentLink = 0;\r\n\r\n    this.dom = {\r\n      anchors: [...document.querySelectorAll('[data-anchor]')],\r\n      container: this.el.querySelector('.sticky-navigation'),\r\n      navContainer: this.el.querySelector('.sticky-navigation__jump-links'),\r\n      prev: this.el.querySelector('.sticky-navigation__button.prev'),\r\n      next: this.el.querySelector('.sticky-navigation__button.next')\r\n    };\r\n\r\n    this.buildJumpLinks();\r\n  }\r\n\r\n  addListeners() {\r\n    this.dom.anchors.forEach((item, i) => {\r\n      new Waypoint({\r\n        element: item,\r\n        offset: 200,\r\n        handler: direction => {\r\n          if (direction === 'down') {\r\n            this.selectOption(i);\r\n          } else {\r\n            this.selectOption(i - 1);\r\n          }\r\n        }\r\n      });\r\n    });\r\n\r\n    this.dom.next.addEventListener('click', this.nextLink.bind(this));\r\n    this.dom.prev.addEventListener('click', this.prevLink.bind(this));\r\n    document.addEventListener('menuClose', () => Waypoint.refreshAll());\r\n    if (this.dom.jumpLinksList) {\r\n      window.addEventListener('resize', this.checkScrollWidth.bind(this));\r\n    }\r\n  }\r\n\r\n  buildJumpLinks() {\r\n    if (this.dom.anchors.length) {\r\n      this.totalLinks = this.dom.anchors.length;\r\n      this.dom.jumpLinksList = document.createElement('ul');\r\n      const links = this.dom.anchors\r\n        .map(anchor => {\r\n          anchor.id = camelize(anchor.dataset.anchor);\r\n          return `<li role=\"listbox\"><a href=\"#${anchor.id}\">${anchor.dataset.anchor}</a></li>`;\r\n        })\r\n        .join('');\r\n\r\n      this.dom.jumpLinksList.innerHTML = links;\r\n      this.dom.jumpLinksList.setAttribute('role', 'listbox');\r\n      this.dom.navContainer.appendChild(this.dom.jumpLinksList);\r\n      this.dom.jumpLiks = [...this.dom.jumpLinksList.querySelectorAll('a')];\r\n      this.dom.jumpLiks.forEach(link =>\r\n        link.addEventListener('click', this.handleJumpLinkClick.bind(this))\r\n      );\r\n\r\n      this.dom.container.classList.add('has-jumpLinks')\r\n      this.handleCheckInitialAnchor();\r\n\r\n      if (this.isDesktop.matches && this.dom.jumpLinksList) {\r\n        this.checkScrollWidth();\r\n      }\r\n    }\r\n  }\r\n\r\n  checkScrollWidth() {\r\n    const linksWidth = this.dom.jumpLinksList.scrollWidth;\r\n    const containerWidth = this.dom.navContainer.clientWidth;\r\n\r\n    if (linksWidth > containerWidth) {\r\n      this.dom.container.classList.add('is-long');\r\n      this.dom.container.classList.remove('is-short');\r\n    } else {\r\n      this.dom.container.classList.remove('is-long');\r\n      this.dom.container.classList.add('is-short');\r\n    }\r\n\r\n    const target = this.dom.jumpLiks[this.currentLink].getAttribute('href');\r\n    this.scrollToJumpLink(target);\r\n  }\r\n\r\n  handleCheckInitialAnchor() {\r\n    const { hash } = window.location;\r\n\r\n    if (hash && hash !== '#hero-intro-section') {\r\n      if (this.currentLink === 0) {\r\n        this.dom.prev.setAttribute('disabled', 'disabled');\r\n      } else if (this.currentLink === this.totalLinks - 1) {\r\n        this.dom.next.setAttribute('disabled', 'disabled');\r\n      }\r\n      this.jumpToAnchor(hash);\r\n    } else {\r\n      this.toggleButtons(0);\r\n    }\r\n  }\r\n\r\n  handleJumpLinkClick(e) {\r\n    e.preventDefault();\r\n\r\n    const targetId = e.target.getAttribute('href');\r\n    this.jumpToAnchor(targetId, true);\r\n  }\r\n\r\n  jumpToAnchor(targetId, push) {\r\n    const target = document.getElementById(targetId.replace('#', ''));\r\n\r\n    if (target) {\r\n      gsap.to(window, { duration: 0, scrollTo: target.offsetTop - 96 - 30 });\r\n      this.scrollToJumpLink(targetId);\r\n\r\n      if (push) {\r\n        history.pushState(null, null, targetId);\r\n      }\r\n    }\r\n  }\r\n\r\n  toggleButtons(offsetLeft) {\r\n    const screenWidth = window.innerWidth;\r\n    const listWidth = this.dom.jumpLinksList.clientWidth;\r\n    const remaining = listWidth - offsetLeft + (this.isMobile ? 0 : 80);\r\n\r\n    if (remaining <= screenWidth) {\r\n      this.dom.next.setAttribute('disabled', 'disabled');\r\n    } else {\r\n      this.dom.next.removeAttribute('disabled');\r\n    }\r\n\r\n    if (offsetLeft <= 80) {\r\n      this.dom.prev.setAttribute('disabled', 'disabled');\r\n    } else {\r\n      this.dom.prev.removeAttribute('disabled');\r\n    }\r\n  }\r\n\r\n  scrollToJumpLink(target) {\r\n    const screenWidth = window.innerWidth;\r\n    const listWidth = this.dom.jumpLinksList.clientWidth;\r\n    const {\r\n      clientWidth,\r\n      offsetLeft\r\n    } = this.dom.jumpLiks.filter(anchor => anchor.getAttribute('href') === target)[0].parentNode;\r\n    const remaining = listWidth - offsetLeft + clientWidth;\r\n    const isShortList = this.dom.container.classList.contains('is-short');\r\n\r\n    if (this.isMobile) {\r\n      gsap.to(this.dom.jumpLinksList, {\r\n        duration: 0,\r\n        left: -offsetLeft,\r\n        onComplete: () => this.toggleButtons(offsetLeft)\r\n      });\r\n    } else if (this.isTablet.matches && (!this.isDesktop.matches || !isShortList) && ((remaining + 90) >= screenWidth)) {\r\n      gsap.to(this.dom.jumpLinksList, {\r\n        duration: 0,\r\n        left: -(offsetLeft - 80),\r\n        onComplete: () => this.toggleButtons(offsetLeft)\r\n      });\r\n    } else if (this.isDesktop.matches && isShortList) {\r\n      gsap.to(this.dom.jumpLinksList, {\r\n        duration: 0,\r\n        left: 0,\r\n        onComplete: () => this.toggleButtons(offsetLeft)\r\n      });\r\n    }\r\n  }\r\n\r\n  selectOption(i) {\r\n    this.dom.jumpLiks.forEach((link, index) => {\r\n      if (index === i) {\r\n        link.classList.add('active');\r\n        this.scrollToJumpLink(link.getAttribute('href'));\r\n      } else {\r\n        link.classList.remove('active');\r\n      }\r\n    });\r\n  }\r\n\r\n  nextLink() {\r\n    const next = this.currentLink + 1;\r\n\r\n    if (next >= this.totalLinks) {\r\n      this.currentLink = this.totalLinks;\r\n    } else {\r\n      this.currentLink = next;\r\n    }\r\n    const target = this.dom.jumpLiks[this.currentLink].getAttribute('href');\r\n    this.scrollToJumpLink(target);\r\n  }\r\n\r\n  prevLink() {\r\n    const prev = this.currentLink - 1;\r\n\r\n    if (prev <= 0) {\r\n      this.currentLink = 0;\r\n    } else {\r\n      this.currentLink = prev;\r\n    }\r\n    const target = this.dom.jumpLiks[this.currentLink].getAttribute('href');\r\n    this.scrollToJumpLink(target);\r\n  }\r\n}\r\n\r\nexport default Module;\r\n","import { Component } from '@verndale/core';\r\nimport HamburgerMenu from './hamburgerMenu';\r\nimport MegaMenu from './megaMenu';\r\nimport MegaMenuIntegratedTabs from './megaMenuIntegratedTabs';\r\nimport HeaderSearch from './search';\r\nimport LanguageMenu from './languageMenu';\r\nimport StickyNavigation from './stickyNavigation'\r\n\r\nclass Module extends Component {\r\n  setupDefaults() {\r\n    this.dom = {\r\n      pageContainer: document.querySelector('.page-container'),\r\n      hamburgerMenuToggle: [...this.el.querySelectorAll(\r\n        '.hamburger-menu__primary-link'\r\n      )],\r\n      hamburgerMenu: this.el.querySelector('.hamburger-menu__submenu'),\r\n      hamburgerMenuToggleSmDevice: this.el.querySelector('.header__hamburger-menu-toggle'),\r\n      hamburgerMenuSmDevice: this.el.querySelector('.hamburger-menu__sm-device'),\r\n      languageMenuToggle: this.el.querySelector('.header__language-toggle'),\r\n      languageMenu: this.el.querySelector('.language-menu'),\r\n      searchToggle: this.el.querySelector('.header__search-toggle'),\r\n      headerSearch: this.el.querySelector('.header-search'),\r\n      stickySubNav: this.el.querySelector('.header__sticky-hidden'),\r\n      megaMenu: this.el.querySelector('.mega-menu__submenu'),\r\n      megaMenuIntegratedTabs: this.el.querySelectorAll('.mega-menu-integrated-tab'),\r\n      megaMenuSmDevice: this.el.querySelector('.mega-menu__sm-device')\r\n    };\r\n\r\n    if (this.dom.hamburgerMenu) {\r\n      this.hamburgerMenu = new HamburgerMenu(this.el);\r\n    }\r\n\r\n    if (this.dom.megaMenu) {\r\n      this.megaMenu = new MegaMenu(this.el);\r\n      this.dom.megaMenuIntegratedTabs.forEach(tab => {\r\n        this.megaMenuIntegratedTabs = new MegaMenuIntegratedTabs(tab);\r\n      });\r\n    }\r\n\r\n    if (this.dom.headerSearch) {\r\n      this.headerSearch = new HeaderSearch(this.el);\r\n    }\r\n\r\n    if (this.dom.languageMenu) {\r\n      this.languageMenu = new LanguageMenu(this.el);\r\n    }\r\n\r\n    new StickyNavigation(this.el);\r\n\r\n    this.handleScroll();\r\n  }\r\n\r\n  addListeners() {\r\n    document.addEventListener('scroll', this.handleScroll.bind(this));\r\n    window.addEventListener('resize', this.handleScroll.bind(this));\r\n\r\n    if (this.dom.searchToggle) this.dom.searchToggle.addEventListener('click', this.toggleSearch.bind(this));\r\n\r\n    this.dom.languageMenuToggle.addEventListener('click', this.toggleLanguageMenu.bind(this));\r\n\r\n    this.dom.hamburgerMenuToggle.forEach(button => {\r\n      button.addEventListener('click', this.toggleHamburgerMenu.bind(this));\r\n    });\r\n\r\n    this.dom.hamburgerMenuToggleSmDevice.addEventListener('click', this.toggleHamburgerMenuSmDevice.bind(this));\r\n\r\n  }\r\n\r\n  toggleSearch(e) {\r\n    if (this.languageMenu) {\r\n      this.languageMenu.closeDrawer(e);\r\n    }\r\n\r\n    if (this.hamburgerMenu) {\r\n      this.hamburgerMenu.hideSubmenus(e);\r\n      this.hamburgerMenu.closeDrawer(e);\r\n    }\r\n\r\n    if (this.megaMenu) {\r\n      this.megaMenu.hideSubmenus(e);\r\n      this.megaMenu.closeDrawer(e);\r\n    }\r\n\r\n    this.headerSearch.toggleDrawer(e);\r\n  }\r\n\r\n  toggleLanguageMenu(e) {\r\n    if (this.headerSearch) {\r\n      this.headerSearch.closeDrawer(e);\r\n    }\r\n\r\n    if (this.hamburgerMenu) {\r\n      this.hamburgerMenu.hideSubmenus(e);\r\n      this.hamburgerMenu.closeDrawer(e);\r\n    }\r\n\r\n    if (this.megaMenu) {\r\n      this.megaMenu.hideSubmenus(e);\r\n      this.megaMenu.closeDrawer(e);\r\n    }\r\n\r\n    this.languageMenu.toggleDrawer(e);\r\n  }\r\n\r\n  toggleHamburgerMenu(e) {\r\n    if (this.languageMenu) {\r\n      this.languageMenu.closeDrawer(e);\r\n    }\r\n\r\n    if (this.headerSearch) {\r\n      this.headerSearch.closeDrawer(e);\r\n    }\r\n  }\r\n\r\n  toggleHamburgerMenuSmDevice(e) {\r\n    if (this.languageMenu) {\r\n      this.languageMenu.closeDrawer(e);\r\n    }\r\n\r\n    if (this.headerSearch) {\r\n      this.headerSearch.closeDrawer(e);\r\n    }\r\n\r\n    if (this.hamburgerMenu) {\r\n      this.hamburgerMenu.toggleDrawer(e);\r\n    } else {\r\n      this.megaMenu.toggleDrawer(e);\r\n    }\r\n  }\r\n\r\n  handleScroll() {\r\n    const hero = document.querySelector('[data-hero=\"true\"]');\r\n    const { offsetHeight, offsetTop } = hero;\r\n    const headerHeight = this.el.offsetHeight;\r\n    const scroll = window.scrollY;\r\n    const pageContentScroll = scroll - offsetTop;\r\n\r\n    if (pageContentScroll >= headerHeight) {\r\n      this.el.classList.add('scrolled');\r\n    } else {\r\n      this.el.classList.remove('scrolled');\r\n    }\r\n\r\n    if (pageContentScroll >= offsetHeight - headerHeight) {\r\n      this.dom.stickySubNav.classList.add('show');\r\n    } else {\r\n      this.dom.stickySubNav.classList.remove('show');\r\n    }\r\n  }\r\n}\r\n\r\nexport default Module;\r\n"],"sourceRoot":""}