{"version":3,"sources":["webpack://@verndale/toolkit/./src/js/helpers/index.js","webpack://@verndale/toolkit/./src/js/helpers/motion.js","webpack://@verndale/toolkit/./src/js/modules/SectionNavigation.js"],"names":[],"mappings":"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","file":"scripts/1609.5fff5d09ff13ebb0327a.js","sourcesContent":["// /**\n// * debounce function\n// * Delays the processing of the event\n// */\nexport const debounce = (callback, wait) => {\n let timerId;\n return (...args) => {\n clearTimeout(timerId);\n timerId = setTimeout(() => {\n callback(...args);\n }, wait);\n };\n};\n\nexport const throttle = (callback, wait) => {\n let inThrottle;\n return (...args) => {\n if (!inThrottle) {\n callback(...args);\n inThrottle = true;\n setTimeout(() => {\n inThrottle = false;\n }, wait);\n }\n };\n};\n// /**\n// * Checks if an element is focusable\n// *\n// * @param {Object} el - HTML element you want to check if it's focusable\n// */\nexport const isFocusable = el => {\n if (\n el.tabIndex > 0 ||\n (el.tabIndex === 0 && el.getAttribute('tabIndex') !== null)\n ) {\n return true;\n }\n\n if (el.disabled) {\n return false;\n }\n\n /* eslint-disable indent */\n switch (el.nodeName) {\n case 'A':\n return !!el.href && el.rel !== 'ignore';\n case 'INPUT':\n return el.type !== 'hidden' && el.type !== 'file';\n case 'BUTTON':\n case 'SELECT':\n case 'TEXTAREA':\n return true;\n default:\n return false;\n }\n /* eslint-enable indent */\n};\n\n// /**\n// * Key code list object\n// */\nexport const keyCode = {\n TAB: 9,\n RETURN: 13,\n ESC: 27,\n SPACE: 32,\n PAGEUP: 33,\n PAGEDOWN: 34,\n END: 35,\n HOME: 36,\n LEFT: 37,\n UP: 38,\n RIGHT: 39,\n DOWN: 40\n};\n\n// /**\n// * Breakpoints list object\n// */\nexport const breakpoints = {\n mobile: 360,\n tablet: 768,\n tabletLandscape: 1024,\n desktop: 1280,\n wide: 1600\n};\n\n// /**\n// * Bicentennial Swiper Object\n// */\n\nexport const bicentennialSwiperConfig = {\n allowTouchMove: false,\n autoHeight: false,\n rewind: true,\n slidesPerView: 1,\n spaceBetween: 0,\n speed: 1000,\n watchOverflow: true,\n watchSlidesProgress: true\n}\n\n// /**\n// * Convert Unicode characters inside a string to their actual characters\n// */\n\nexport const convertUnicode = (input) => {\n if (typeof input === 'string') {\n return input.replace(/\\\\+u([0-9a-fA-F]{4})/g, (a, b) =>\n String.fromCharCode(parseInt(b, 16)))\n }\n return input;\n};\n","import { animate } from 'motion';\n\nexport const open = (element, duration = 1, easing = [0.19, 1, 0.22, 1]) =>\n animate(\n element,\n {\n maxHeight: `${element.scrollHeight}px`,\n opacity: 1\n },\n {\n duration,\n easing\n }\n );\n\nexport const close = (element, duration = 1, easing = [0.19, 1, 0.22, 1]) =>\n animate(\n element,\n {\n maxHeight: 0,\n opacity: 0\n },\n {\n duration,\n easing\n }\n );\n\nexport const hideOpacity = (\n element,\n duration = 1,\n delay = 0,\n easing = [0.19, 1, 0.22, 1]\n) =>\n animate(\n element,\n {\n opacity: 0\n },\n {\n duration,\n delay,\n easing\n }\n );\n\nexport const showOpacity = (\n element,\n duration = 1,\n delay = 0,\n easing = [0.19, 1, 0.22, 1]\n) =>\n animate(\n element,\n {\n opacity: 1\n },\n {\n duration,\n delay,\n easing\n }\n );\n\nexport const show = (\n element,\n duration = 1,\n delay = 0,\n easing = [0.19, 1, 0.22, 1]\n) =>\n animate(\n element,\n {\n maxBlockSize: 'unset'\n },\n {\n duration,\n delay,\n easing\n }\n );\n\nexport const hide = (\n element,\n maxBlockSize = 0,\n duration = 1,\n delay = 0,\n easing = [0.19, 1, 0.22, 1]\n) =>\n animate(\n element,\n {\n maxBlockSize\n },\n {\n duration,\n delay,\n easing\n }\n );\n\nexport const showFromBottom = (\n element,\n delay = 0.2,\n duration = 0.2,\n easing = [0.11, 0, 0.5, 0]\n) =>\n animate(\n element,\n {\n opacity: 1,\n translateY: 0\n },\n {\n delay,\n duration,\n easing\n }\n );\n\nexport const hideFromTop = (\n element,\n delay = 0.2,\n duration = 0.2,\n easing = [0.11, 0, 0.5, 0]\n) =>\n animate(\n element,\n {\n opacity: 0,\n translateY: 30\n },\n {\n delay,\n duration,\n easing\n }\n );\n\nexport const hideToRight = (\n element,\n delay = 0.2,\n duration = 0.2,\n easing = [0.11, 0, 0.5, 0]\n) =>\n animate(\n element,\n {\n opacity: 0,\n translateX: 90\n },\n {\n delay,\n duration,\n easing\n }\n );\n\nexport const hideToLeft = (\n element,\n delay = 0.2,\n duration = 0.2,\n easing = [0.11, 0, 0.5, 0]\n) =>\n animate(\n element,\n {\n opacity: 0,\n translateX: -90\n },\n {\n delay,\n duration,\n easing\n }\n );\n","import { Component } from '@verndale/core';\nimport { v4 as uuidv4 } from 'uuid';\nimport TomSelect from 'tom-select';\nimport { keyCode, debounce } from '../helpers';\nimport { open, close } from '../helpers/motion';\n\nclass SectionNavigation extends Component {\n constructor(el) {\n super(el);\n\n this.initChildAccordion();\n\n const activeItem = this.el.querySelector(\n '.section-navigation--active-item'\n );\n if (activeItem) {\n if (\n activeItem.classList.contains(\n 'section-navigation__grandchild-anchor-link'\n )\n ) {\n activeItem.closest('ul').previousElementSibling?.click();\n } else if (\n activeItem.classList.contains(\n 'section-navigation__grandgrandchild-anchor-link'\n )\n ) {\n activeItem.closest('ul').previousElementSibling?.click();\n activeItem\n .closest('ul')\n .closest('.section-navigation__granchild-panel')\n ?.previousElementSibling?.click();\n }\n }\n }\n\n setupDefaults() {\n this.dom = {\n el: this.el,\n container: this.el.querySelector('.section-navigation__child-items'),\n items: this.el.querySelectorAll('.section-navigation__child-item'),\n triggers: [\n ...this.el.querySelectorAll(\n '.section-navigation__trigger-btn, .section-navigation__trigger-grand-btn'\n )\n ],\n panels: [\n ...this.el.querySelectorAll('.section-navigation__granchild-panel')\n ],\n navAnchorTargets: this.el.querySelectorAll('a[href^=\"#\"]'),\n navSelectMobile: this.el.querySelector(\n '.section-navigation__select--base'\n ),\n anchorTargetSections: []\n };\n this.activeItemClass = 'section-navigation--active-item';\n\n new TomSelect(this.dom.navSelectMobile, {\n create: true,\n allowEmptyOption: true,\n maxOptions: null,\n onInitialize: () => {\n const input = this.dom.el.querySelector(\n '.section-navigation__select--base.single input[type=\"select-one\"]'\n );\n input.setAttribute('readonly', true);\n input.style.setProperty('margin', '0', 'important');\n },\n render: {\n item: (data, escape) =>\n `
`,\n option: (data, escape) => {\n const additionalClass = data.$option?.dataset?.class;\n return ` `;\n }\n }\n });\n }\n\n addListeners() {\n window.addEventListener(\n 'resize',\n debounce(this.handleResize.bind(this), 100)\n );\n this.dom.container.addEventListener(\n 'keydown',\n this.handleKeyDown.bind(this)\n );\n this.dom.triggers.forEach(trigger =>\n trigger.addEventListener('click', this.handleClick.bind(this))\n );\n this.dom.navAnchorTargets.forEach(el =>\n el.addEventListener('click', this.handleAnchorClick.bind(this))\n );\n this.dom.navSelectMobile.addEventListener(\n 'change',\n this.handleSelectChange.bind(this)\n );\n }\n\n setAnchorTargetSections() {\n this.dom.navAnchorTargets.forEach(el => {\n if (document.querySelector(el.getAttribute('href')))\n this.dom.anchorTargetSections.push(\n document.querySelector(el.getAttribute('href'))\n );\n });\n }\n\n scrollToElement(targetElement) {\n if (targetElement) {\n const elementTop = targetElement.getBoundingClientRect().top;\n const offsetPosition = elementTop + window.pageYOffset - 100; // replace 100 for header height once known\n window.scrollTo({\n top: offsetPosition,\n behavior: 'smooth'\n });\n }\n }\n\n setAccordionItem(item, triggerQuery, panelQuery) {\n const trigger = item.querySelector(triggerQuery);\n if (trigger) {\n const guid = uuidv4();\n const content = item.querySelector(panelQuery);\n\n if (trigger?.getAttribute('aria-expanded') === 'true') {\n this.openPanel(content);\n } else {\n content.style = 'visibility: hidden; max-height: 0px; opacity: 0;';\n content.setAttribute('aria-hidden', true);\n }\n\n trigger.setAttribute('aria-controls', `tabcontent-${guid}`);\n trigger.setAttribute('id', `tab-${guid}`);\n content.setAttribute('aria-labelledby', `tab-${guid}`);\n content.setAttribute('id', `tabcontent-${guid}`);\n\n content.setAttribute(\n 'aria-hidden',\n trigger.getAttribute('aria-expanded') !== 'true'\n );\n }\n }\n\n initChildAccordion() {\n this.dom.items.forEach(item => {\n this.setAccordionItem(\n item,\n '.section-navigation__trigger-btn',\n '.section-navigation__granchild-panel'\n );\n\n const grandItems = item.querySelectorAll(\n '.section-navigation__granchild-items li'\n );\n\n grandItems.forEach(grandItem =>\n this.setAccordionItem(\n grandItem,\n '.section-navigation__trigger-grand-btn',\n '.section-navigation__grandgrandchild-panel'\n )\n );\n });\n }\n\n openItem(trigger) {\n const content = document.getElementById(\n trigger.getAttribute('aria-controls')\n );\n\n if (content) {\n trigger.setAttribute('aria-expanded', true);\n this.openPanel(content);\n }\n }\n\n checkMaxHeight(panel) {\n const style = window.getComputedStyle(panel);\n const maxHeight = style.getPropertyValue('max-height');\n return maxHeight !== 'none';\n }\n\n openPanel(panel) {\n panel.style.visibility = 'visible';\n\n if (panel.classList.contains('section-navigation__grandgrandchild-panel')) {\n const parentListItem = panel.closest('li');\n parentListItem.classList.add(\n 'section-navigation__grandchild-item--active'\n );\n const parentPanel = panel.closest('.section-navigation__granchild-panel');\n if (parentPanel && this.checkMaxHeight(parentPanel)) {\n this.openPanel(parentPanel);\n }\n }\n\n if (panel.anim) panel.anim.stop();\n open(panel, 0.5).finished.then(() => {\n panel.setAttribute('aria-hidden', false);\n\n if (this.checkMaxHeight(panel)) {\n panel.style.maxHeight = 'none';\n }\n });\n }\n\n closeItem(trigger) {\n const content = document.getElementById(\n trigger.getAttribute('aria-controls')\n );\n trigger.setAttribute('aria-expanded', false);\n this.closePanel(content);\n }\n\n closePanel(panel) {\n panel.style.maxHeight = `${panel.scrollHeight}px`;\n\n if (panel.classList.contains('section-navigation__grandgrandchild-panel')) {\n const parentListItem = panel.closest('li');\n parentListItem.classList.remove(\n 'section-navigation__grandchild-item--active'\n );\n }\n\n if (panel.anim) panel.anim.stop();\n close(panel, 0.5).finished.then(() => {\n if (panel.getAttribute('aria-hidden') === 'true') {\n panel.style.visibility = 'hidden';\n }\n panel.setAttribute('aria-hidden', true);\n });\n }\n\n handleResize() {\n this.dom.items.forEach(item => {\n const content = item.querySelector(\n '.section-navigation__granchild-panel'\n );\n\n if (content && content.getAttribute('aria-hidden') === 'false') {\n content.style.maxHeight = null;\n content.style.maxHeight = `${content.scrollHeight}px`;\n }\n });\n }\n\n handleClick(e) {\n if (!e.target.classList.contains('section-navigation__child-anchor-link')) {\n const button = e.currentTarget;\n if (button.getAttribute('aria-expanded') === 'true') {\n this.closeItem(button);\n } else {\n this.openItem(button);\n }\n }\n }\n\n handleKeyDown(e) {\n const { target } = e;\n const key = e.which || e.keyCode;\n\n const ctrlModifier =\n e.ctrlKey && (key === keyCode.PAGEUP || key === keyCode.PAGEDOWN);\n\n if (target.classList.contains('section-navigation__trigger-btn')) {\n if (key === keyCode.UP || key === keyCode.DOWN || ctrlModifier) {\n const index = this.dom.triggers.indexOf(target);\n const direction =\n key === keyCode.PAGEDOWN || key === keyCode.DOWN ? 1 : -1;\n const { length } = this.dom.triggers;\n const newIndex = (index + length + direction) % length;\n\n this.dom.triggers[newIndex].focus();\n\n e.preventDefault();\n } else if (key === keyCode.END || key === keyCode.HOME) {\n switch (key) {\n case keyCode.HOME:\n this.dom.triggers[0].focus();\n break;\n case keyCode.END:\n this.dom.triggers[this.dom.triggers.length - 1].focus();\n break;\n default:\n break;\n }\n e.preventDefault();\n }\n }\n }\n\n handleAnchorClick(e) {\n e.preventDefault();\n this.el\n .querySelectorAll(`.${this.activeItemClass}`)\n .forEach(el => el.classList.remove(this.activeItemClass));\n const targetElement = document.querySelector(e.target.getAttribute('href'));\n e.target.classList.add(this.activeItemClass);\n this.scrollToElement(targetElement);\n }\n\n handleSelectChange(e) {\n const option = e.target.options[e.target.selectedIndex];\n option.innerHTML = option.innerHTML.replace(/ /g, ' ');\n if (e.target.value[0] === '#') {\n const targetElement = document.querySelector(e.target.value);\n this.scrollToElement(targetElement);\n } else {\n window.location.href = e.target.value;\n }\n }\n}\n\nexport default SectionNavigation;\n"],"sourceRoot":""}