{"version":3,"sources":["webpack:///./src/js/components/dropdown.js","webpack:///./node_modules/uuid/dist/esm-browser/rng.js","webpack:///./node_modules/uuid/dist/esm-browser/regex.js","webpack:///./node_modules/uuid/dist/esm-browser/stringify.js","webpack:///./node_modules/uuid/dist/esm-browser/validate.js","webpack:///./node_modules/uuid/dist/esm-browser/v4.js","webpack:///./src/js/modules/solutionIntegratedOfferingsTab.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","getRandomValues","rnds8","Uint8Array","rng","crypto","msCrypto","Error","uuid","test","byteToHex","toString","substr","arr","offset","arguments","undefined","toLowerCase","TypeError","buf","rnds","random","i","tabsContainer","tabs","panelsContainer","panels","buildNavigation","calculateSizes","window","debounce","handleCheckInitialAnchor","tab","index","handleTabClick","handleKeyDown","tabGuid","panelGuid","panel","hrefVal","camelize","dropdownGuid","dropdownContainer","dropdownLabel","dropdown","Dropdown","handleDropDownSelect","handleCustomDropDownSelect","listItems","getElementsByTagName","hrefVals","li","anchor","href","panelId","changePanel","key","END","focus","HOME","UP","LEFT","DOWN","RIGHT","currentTab","activeTab","activeTabId","activeTabUrl","gsap","to","autoAlpha","ease","Expo","easeOut","duration","panelIframe","handleScrollToSection","activePanelId","activePanelHeight","tabUrl","scrollIntoView","behavior","block","history","pushState","hash","location","tabToHighlight","tabId","getElementsByClassName","changeEvent","jumpToTab","targetId","targetURL","selectedOptions","replace"],"mappings":"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","file":"17.9a0a6c2aa994986ed588.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","// Unique ID creation requires a high quality random # generator. In the browser we therefore\n// require the crypto API and do not support built-in fallback to lower quality random number\n// generators (like Math.random()).\nvar getRandomValues;\nvar rnds8 = new Uint8Array(16);\nexport default function rng() {\n  // lazy load so that environments that need to polyfill have a chance to do so\n  if (!getRandomValues) {\n    // getRandomValues needs to be invoked in a context where \"this\" is a Crypto implementation. Also,\n    // find the complete implementation of crypto (msCrypto) on IE11.\n    getRandomValues = typeof crypto !== 'undefined' && crypto.getRandomValues && crypto.getRandomValues.bind(crypto) || typeof msCrypto !== 'undefined' && typeof msCrypto.getRandomValues === 'function' && msCrypto.getRandomValues.bind(msCrypto);\n\n    if (!getRandomValues) {\n      throw new Error('crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported');\n    }\n  }\n\n  return getRandomValues(rnds8);\n}","export default /^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i;","import validate from './validate.js';\n/**\n * Convert array of 16 byte values to UUID string format of the form:\n * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX\n */\n\nvar byteToHex = [];\n\nfor (var i = 0; i < 256; ++i) {\n  byteToHex.push((i + 0x100).toString(16).substr(1));\n}\n\nfunction stringify(arr) {\n  var offset = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n  // Note: Be careful editing this code!  It's been tuned for performance\n  // and works in ways you may not expect. See https://github.com/uuidjs/uuid/pull/434\n  var uuid = (byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + '-' + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + '-' + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + '-' + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + '-' + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]]).toLowerCase(); // Consistency check for valid UUID.  If this throws, it's likely due to one\n  // of the following:\n  // - One or more input array values don't map to a hex octet (leading to\n  // \"undefined\" in the uuid)\n  // - Invalid input values for the RFC `version` or `variant` fields\n\n  if (!validate(uuid)) {\n    throw TypeError('Stringified UUID is invalid');\n  }\n\n  return uuid;\n}\n\nexport default stringify;","import REGEX from './regex.js';\n\nfunction validate(uuid) {\n  return typeof uuid === 'string' && REGEX.test(uuid);\n}\n\nexport default validate;","import rng from './rng.js';\nimport stringify from './stringify.js';\n\nfunction v4(options, buf, offset) {\n  options = options || {};\n  var rnds = options.random || (options.rng || rng)(); // Per 4.4, set bits for version and `clock_seq_hi_and_reserved`\n\n  rnds[6] = rnds[6] & 0x0f | 0x40;\n  rnds[8] = rnds[8] & 0x3f | 0x80; // Copy bytes to buffer, if provided\n\n  if (buf) {\n    offset = offset || 0;\n\n    for (var i = 0; i < 16; ++i) {\n      buf[offset + i] = rnds[i];\n    }\n\n    return buf;\n  }\n\n  return stringify(rnds);\n}\n\nexport default v4;","import { Component } from '@verndale/core';\r\nimport { gsap, Expo } from 'gsap';\r\nimport { v4 as uuidv4 } from 'uuid';\r\nimport { keyCode, debounce, camelize } from '../helpers';\r\nimport Dropdown from '../components/dropdown';\r\n\r\nclass Module extends Component {\r\n  setupDefaults() {\r\n    this.dom = {\r\n      tabsContainer: this.el.querySelector('.solution-integrated-offerings-tab__tabs'),\r\n      tabs: [...this.el.querySelectorAll('.solution-integrated-offerings-tab__tab')],\r\n      panelsContainer: this.el.querySelector('.solution-integrated-offerings-tab__panels'),\r\n      panels: [...this.el.querySelectorAll('.solution-integrated-offerings-tab__panel')]\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    window.addEventListener('hashchange', this.handleCheckInitialAnchor.bind(this));\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    this.handleCheckInitialAnchor();\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        const hrefVal = `#${camelize((tab.textContent).trim())}`\r\n\r\n        tab.setAttribute('id', tabGuid);\r\n        tab.setAttribute('aria-controls', panelGuid);\r\n        tab.setAttribute('href', hrefVal);\r\n\r\n        if (panel) {\r\n          panel.setAttribute('id', panelGuid);\r\n          panel.setAttribute('aria-labelledby', tabGuid);\r\n          panel.setAttribute('data-link', hrefVal);\r\n        }\r\n\r\n        return `<option value=\"${panelGuid}\">${(tab.textContent).trim()}</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('solution-integrated-offerings-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    const customList = document.querySelectorAll('.solution-integrated-offerings-tab__dropdown .dropdown li');\r\n    customList.forEach(item => {\r\n      item.addEventListener('click', this.handleDropDownSelect.bind(this));\r\n    });\r\n    this.dom.dropdown.el.addEventListener('change', this.handleCustomDropDownSelect.bind(this));\r\n\r\n    const listItems = document.querySelector('.dropdown__list').getElementsByTagName('li');\r\n    const hrefVals = [];\r\n    this.dom.tabs\r\n      .map(tab => {\r\n        hrefVals.push(`#${  camelize(tab.textContent)}`);\r\n      });\r\n    for (let i = 0; i < listItems.length; i++) {\r\n      const li = listItems[i];\r\n      const anchor = document.createElement('a');\r\n      anchor.href = `${hrefVals[i]}`;\r\n      anchor.textContent = li.textContent;\r\n      li.innerHTML = '';\r\n      li.appendChild(anchor);\r\n    }\r\n  }\r\n\r\n  handleOptionChange(e) {\r\n    e.preventDefault();\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 activeTabId = activeTab.getAttribute('aria-controls');\r\n    const activeTabUrl = activeTab.getAttribute('data-link');\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 === activeTabId) {\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    this.handleScrollToSection(activeTabUrl, true);\r\n  }\r\n\r\n  calculateSizes() {\r\n    const activePanelId = this.dom.tabs\r\n      .find(tab => tab.getAttribute('aria-selected') === 'true')\r\n      .getAttribute('aria-controls');\r\n\r\n    const activePanelHeight = this.dom.panels.find(\r\n      panel => panel.getAttribute('id') === activePanelId\r\n    ).offsetHeight;\r\n\r\n    this.dom.panelsContainer.style['height'] = `${activePanelHeight}px`;\r\n\r\n    const activeTab = this.dom.tabs.find(\r\n      tab => tab.getAttribute('aria-selected') === 'true'\r\n    );\r\n  }\r\n\r\n  handleScrollToSection(tabUrl, push) {\r\n    this.dom.tabsContainer.scrollIntoView({\r\n      behavior: 'smooth',\r\n      block: 'start'\r\n    });\r\n\r\n    if (push) history.pushState(null, null, tabUrl);\r\n  }\r\n\r\n  handleCheckInitialAnchor() {\r\n    const { hash } = window.location;\r\n    const tabToHighlight = this.dom.tabs.find(\r\n      tab => tab.getAttribute('href') === hash\r\n    );\r\n\r\n    if (tabToHighlight) {\r\n      const tabId = tabToHighlight.getAttribute('aria-controls');\r\n      if (tabId) {\r\n        const dropdownContainer = this.el.getElementsByClassName('dropdown')[0];\r\n        const dropdown = dropdownContainer.getElementsByTagName('select')[0];\r\n        dropdown.value = tabId;\r\n        const changeEvent = new Event('change');\r\n        dropdown.dispatchEvent(changeEvent);\r\n        this.changePanel(tabId);\r\n\r\n        if (hash) {\r\n          this.jumpToTab(hash, tabId, true);\r\n        }\r\n      }\r\n    }\r\n  }\r\n\r\n  handleTabClick(e) {\r\n    e.preventDefault();\r\n    const targetId = e.target.getAttribute('aria-controls');\r\n    const targetURL = e.target.getAttribute('href');\r\n    const tabToHighlight = this.dom.tabs.find(\r\n      tab => tab.getAttribute('href') === targetURL\r\n    );\r\n\r\n    if (tabToHighlight) {\r\n      const tabId = tabToHighlight.getAttribute('aria-controls');\r\n      if (tabId) {\r\n        this.changePanel(tabId);\r\n      }\r\n    }\r\n    this.jumpToTab(targetURL, targetId, true);\r\n  }\r\n\r\n  handleDropDownSelect(e) {\r\n    e.preventDefault();\r\n    const targetId = e.target.getAttribute('data-value');\r\n    const target = this.dom.tabs.find(tab => tab.getAttribute('aria-controls') === targetId);\r\n    const targetURL = target.getAttribute('href');\r\n    this.changePanel(targetId);\r\n    this.jumpToTab(targetURL, targetId, true);\r\n  }\r\n\r\n  handleCustomDropDownSelect(e) {\r\n    e.preventDefault();\r\n    const selectedOption = e.target.selectedOptions[0]\r\n    const targetId = selectedOption.getAttribute('value');\r\n    const target = this.dom.tabs.find(tab => tab.getAttribute('aria-controls') === targetId);\r\n    const targetURL = target.getAttribute('href');\r\n    this.changePanel(targetId);\r\n    this.jumpToTab(targetURL, targetId, true);\r\n  }\r\n\r\n  jumpToTab(targetURL, targetId, push) {\r\n    const target = document.getElementById(targetId.replace('#', ''));\r\n    if (target) {\r\n      this.dom.tabsContainer.scrollIntoView({\r\n        behavior: 'smooth',\r\n        block: 'start'\r\n      });\r\n      document.querySelector('.solution-integrated-offerings-tab__dropdown').scrollIntoView({\r\n        behavior: 'smooth',\r\n        block: 'start'\r\n      });\r\n\r\n      if (push) {\r\n        history.pushState(null, null, targetURL);\r\n      }\r\n    }\r\n  }\r\n}\r\n\r\nexport default Module;\r\n"],"sourceRoot":""}