{"version":3,"file":"591.b76730ad9f3d5ae3925c.js","mappings":"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","sources":["webpack://iflyworld.web/./wwwroot/app/src/js/global.js","webpack://iflyworld.web/./wwwroot/app/src/js/keyboard-accessibility-check.js","webpack://iflyworld.web/./wwwroot/app/src/js/main-navigation.js"],"sourcesContent":["// ***********************************\r\n// ***** global site variables *****\r\n// ***********************************\r\n\r\n// language detection\r\n\r\nconst siteLang = document.querySelector('html').getAttribute('lang').toLowerCase();\r\n\r\nconst translations = {\r\n 'en': {\r\n 'site settings': 'Site settings',\r\n 'close': 'Close',\r\n 'manage effects': 'Manage the visual effects on this site',\r\n 'snow': 'Snow'\r\n },\r\n \"fr\": {\r\n \"site settings\": \"Paramètres du site\",\r\n 'close': 'Fermer',\r\n 'manage effects': 'Gérer les effets visuels sur ce site',\r\n 'snow': 'Neige'\r\n }\r\n}\r\n\r\n// other settings\r\n\r\nconst detectReducedMotionPref = window.matchMedia('(prefers-reduced-motion: reduce)');\r\nlet settingsLinksAdded = false,\r\n settingsModalContent = null;\r\n\r\n// site settings\r\n\r\nconst addSettingsLinks = () => {\r\n // utility bar link?\r\n let utilityBar = document.body.querySelector('.header--utility-bar--links ul');\r\n if(utilityBar != null) {\r\n let li = document.createElement('li');\r\n li.classList.add('list-inline-item','ms-2');\r\n li.innerHTML = ``;\r\n utilityBar.appendChild(li);\r\n }\r\n // update state\r\n settingsLinksAdded = true;\r\n};\r\n\r\nconst refreshModalContent = () => {\r\n if(!settingsModalContent) {\r\n let settingsModal = document.createElement('div');\r\n settingsModal.setAttribute('id','site-settings');\r\n settingsModal.setAttribute('class','modal fade');\r\n settingsModal.setAttribute('data-bs-backdrop','static');\r\n settingsModal.setAttribute('data-bs-keyboard','false');\r\n settingsModal.setAttribute('tabindex','-1');\r\n settingsModal.setAttribute('aria-hidden','true');\r\n settingsModal.innerHTML = `
${translations[siteLang]['manage effects']}
`;\r\n siteSettings.fx.forEach(i => {\r\n settingsModalContent.appendChild(i.controller);\r\n });\r\n }\r\n}\r\n\r\nexport const siteSettings = {\r\n siteLang: siteLang,\r\n translate: (key) => {\r\n return translations[siteLang][key];\r\n },\r\n reducedMotionPref: detectReducedMotionPref.matches,\r\n fx: [],\r\n fxAdd: (fxType, fxEnable, fxCallback = null) => {\r\n let exists = false;\r\n siteSettings.fx.forEach(i => {\r\n if(i.type == fxType) exists = true;\r\n });\r\n if(!exists) {\r\n siteSettings.fx.push({\r\n type: fxType,\r\n enabled: fxEnable,\r\n callback: fxCallback,\r\n controller: document.createElement('div')\r\n });\r\n let thisIndex = siteSettings.fx.length - 1,\r\n thisFX = siteSettings.fx[thisIndex];\r\n thisFX.controller.setAttribute('class','form-check form-switch');\r\n let checkbox = document.createElement('input');\r\n checkbox.setAttribute('id',`site-settings--fx--${thisIndex}`);\r\n checkbox.setAttribute('class','form-check-input');\r\n checkbox.setAttribute('type','checkbox');\r\n checkbox.setAttribute('role','switch');\r\n if(fxEnable) checkbox.setAttribute('checked',true);\r\n checkbox.addEventListener('click',() => {\r\n siteSettings.fxToggle(thisFX.type,checkbox.checked);\r\n });\r\n thisFX.controller.appendChild(checkbox);\r\n let label = document.createElement('label');\r\n label.setAttribute('for',`site-settings--fx--${thisIndex}`);\r\n label.setAttribute('class','form-check-label');\r\n label.innerHTML = thisFX.type;\r\n thisFX.controller.appendChild(label);\r\n }\r\n if(fxCallback) fxCallback(fxEnable);\r\n // add settings links if not already added\r\n if(!settingsLinksAdded) addSettingsLinks();\r\n // refresh modal content\r\n refreshModalContent();\r\n },\r\n fxToggle: (fxType, mode) => {\r\n siteSettings.fx.forEach(i => {\r\n if(i.type == fxType) {\r\n i.enabled = mode;\r\n if(i.callback) i.callback(mode);\r\n }\r\n });\r\n }\r\n};\r\n\r\n// viewport size\r\n\r\nexport const viewport = {\r\n vw: 0,\r\n vh: 0,\r\n setVw: (val) => {\r\n viewport.vw = val;\r\n },\r\n setVh: (val) => {\r\n viewport.vh = val;\r\n }\r\n};\r\n\r\n// component states\r\n\r\nexport const mainNavigation = {\r\n mobileActive: false,\r\n setMobileActive: (mode) => {\r\n mainNavigation.mobileActive = mode;\r\n },\r\n desktopActive: false,\r\n setDesktopActive: (mode) => {\r\n mainNavigation.desktopActive = mode;\r\n }\r\n};\r\n\r\nexport const headerSearch = {\r\n active: false,\r\n setActive: (mode) => {\r\n headerSearch.active = mode;\r\n }\r\n};","// keyboard control detection\r\n\r\nexport const keyboardControl = {\r\n active: false\r\n}\r\n\r\nlet accessibilityTimeout = null;\r\nconst toggleAccessibilityClass = (mode) => {\r\n clearTimeout(accessibilityTimeout);\r\n accessibilityTimeout = setTimeout(() => {\r\n document.body.classList.toggle('keyboard-control', mode);\r\n keyboardControl.active = mode;\r\n }, 100);\r\n}\r\ndocument.body.addEventListener('keydown', function(e) {\r\n switch (e.key) {\r\n case 'Escape':\r\n case 'Up':\r\n case 'ArrowUp':\r\n case 'Down':\r\n case 'ArrowDown':\r\n case 'Left':\r\n case 'ArrowLeft':\r\n case 'Tab':\r\n case 'Right':\r\n case 'ArrowRight':\r\n case 'PageUp':\r\n case 'PageDown':\r\n case 'Spacebar':\r\n case ' ':\r\n case 'Enter':\r\n case 'Return':\r\n toggleAccessibilityClass(true);\r\n break;\r\n }\r\n});\r\ndocument.body.addEventListener('mousedown', function() {\r\n toggleAccessibilityClass(false);\r\n});\r\ndocument.body.addEventListener('touchstart', function() {\r\n toggleAccessibilityClass(false);\r\n});","// *****************************\r\n// ***** Main Navigation *****\r\n// *****************************\r\nimport { breakPoint } from './config';\r\nimport { keyboardControl } from './keyboard-accessibility-check';\r\nimport { mainNavigation } from './global';\r\n\r\nconst $html = document.querySelector('html');\r\nlet isMobile = true,\r\n resizeRequested = false;\r\n\r\nmainNavigation.setMobileActive(false);\r\nmainNavigation.setDesktopActive(false);\r\n\r\nclass menu {\r\n\r\n constructor(wrapper, toggleButton, ul) {\r\n this.wrapper = wrapper;\r\n this.desktopSubmenuIndicator = wrapper.querySelector('.submenu--menu-indicator');\r\n this.navContent = wrapper.querySelector('nav');\r\n this.mobileToggle = toggleButton;\r\n this.ul = ul;\r\n this.expanded = false;\r\n this.focusTimeout = null;\r\n this.hideTimeout = null;\r\n this.hideDelay = 500;\r\n this.activeItemIndex = -1;\r\n this.activeSubmenuItemIndex = -1;\r\n this.items = [];\r\n [...this.ul.querySelectorAll('.header--menu > nav > ul > li')].forEach(i => {\r\n let x = this.items.length;\r\n this.items[x] = new menuItem(x, i, 1);\r\n });\r\n }\r\n\r\n show() {\r\n // make menu semantically visible in both mobile and desktop versions\r\n this.expanded = true;\r\n this.wrapper.setAttribute('aria-hidden', false);\r\n if(isMobile) {\r\n // mobile - animate in the menu element\r\n this.mobileToggle.setAttribute('aria-expanded', true);\r\n $html.classList.add('mobile-menu-fading');\r\n mainNavigation.setMobileActive(true);\r\n window.requestAnimationFrame(() => {\r\n $html.classList.add('mobile-menu-active');\r\n this.wrapper.ontransitionend = () => {\r\n this.transitionEnd(true);\r\n this.update(true, 0, -1);\r\n };\r\n });\r\n } else {\r\n // desktop resets\r\n mainNavigation.setMobileActive(false);\r\n window.requestAnimationFrame(() => {\r\n $html.classList.remove('mobile-menu-active');\r\n });\r\n }\r\n }\r\n\r\n hide() {\r\n if(isMobile && mainNavigation.mobileActive) {\r\n // mobile - animate out menu element\r\n this.expanded = false;\r\n mainNavigation.setMobileActive(false);\r\n this.mobileToggle.setAttribute('aria-expanded', false);\r\n $html.classList.add('mobile-menu-fading');\r\n $html.classList.remove('mobile-menu-active');\r\n this.wrapper.ontransitionend = () => {\r\n this.transitionEnd(false);\r\n };\r\n } else {\r\n // hide menu semantically in both mobile and desktop versions\r\n this.expanded = false;\r\n this.wrapper.setAttribute('aria-hidden', true);\r\n }\r\n }\r\n\r\n transitionEnd(mode) {\r\n if(!mode) {\r\n // menu has hidden\r\n this.wrapper.setAttribute('aria-hidden', true);\r\n }\r\n $html.classList.remove('mobile-menu-fading');\r\n this.wrapper.ontransitionend = null;\r\n }\r\n\r\n storeTriggerPositions() {\r\n for(let x = 0, l = this.items.length; x < l; x++) {\r\n if(this.items[x].button != null) {\r\n let b = this.items[x].button.getBoundingClientRect();\r\n this.items[x].buttonX = Math.floor((b.left + b.right) / 2);\r\n }\r\n }\r\n if(this.desktopSubmenuIndicator != null && this.activeItemIndex > -1) this.desktopSubmenuIndicator.style.left = `${this.items[this.activeItemIndex].buttonX - 16}px`;\r\n }\r\n\r\n update(setFocus = false, itemIndex = -1, submenuItemIndex = -1) {\r\n if(!isMobile) this.storeTriggerPositions();\r\n if (itemIndex > -1 && submenuItemIndex > -1) {\r\n\r\n // FOCUS TARGET IS SUBMENU MENU ITEM\r\n\r\n if (isMobile && !this.expanded) this.show();\r\n // close old submenu without animation?\r\n if (this.activeItemIndex > -1 && this.activeSubmenuItemIndex > -1 && itemIndex != this.activeItemIndex && this.items[this.activeItemIndex].submenu.expanded) this.items[this.activeItemIndex].submenu.hide(isMobile);\r\n // desktop - update submenu indicator\r\n if(this.desktopSubmenuIndicator != null) this.desktopSubmenuIndicator.style.left = `${this.items[itemIndex].buttonX - 15}px`;\r\n // open new submenu\r\n if (!this.items[itemIndex].submenu.expanded) this.items[itemIndex].submenu.show(isMobile || (this.activeItemIndex == -1 || this.activeSubmenuItemIndex == -1));\r\n // focus on item\r\n if (keyboardControl.active && setFocus) this.items[itemIndex].submenu.items[submenuItemIndex].focus();\r\n\r\n } else if (itemIndex > -1) {\r\n\r\n // FOCUS TARGET IS TOP-LEVEL MENU ITEM\r\n\r\n if (isMobile && !this.expanded) this.show();\r\n // close old submenu with animation?\r\n if (this.activeItemIndex > -1 && this.items[this.activeItemIndex].hasSubmenu) {\r\n if (this.items[this.activeItemIndex].submenu.expanded) this.items[this.activeItemIndex].submenu.hide(true);\r\n }\r\n // focus on item\r\n if (keyboardControl.active && setFocus) {\r\n if (this.items[itemIndex].hasSubmenu) {\r\n this.items[itemIndex].submenu.toggle.focus();\r\n } else {\r\n this.items[itemIndex].link.focus();\r\n }\r\n }\r\n\r\n } else {\r\n if (this.activeItemIndex > -1 && this.activeSubmenuItemIndex > -1 && this.items[this.activeItemIndex].submenu.expanded) this.items[this.activeItemIndex].submenu.hide(!isMobile);\r\n if (isMobile && this.expanded) {\r\n this.hide();\r\n if (keyboardControl.active && setFocus) this.mobileToggle.focus();\r\n }\r\n }\r\n // update tabIndex setting\r\n if (this.activeItemIndex != itemIndex) {\r\n if (this.activeItemIndex > -1) {\r\n if (this.items[this.activeItemIndex].hasSubmenu) {\r\n this.items[this.activeItemIndex].submenu.toggle.setAttribute('tabindex', '-1');\r\n } else {\r\n this.items[this.activeItemIndex].link.setAttribute('tabindex', '-1');\r\n }\r\n }\r\n let nextTabIndex = itemIndex;\r\n if (!isMobile && nextTabIndex == -1) nextTabIndex = 0;\r\n if (nextTabIndex > -1) {\r\n if (this.items[nextTabIndex].hasSubmenu) {\r\n this.items[nextTabIndex].submenu.toggle.setAttribute('tabindex', '0');\r\n } else {\r\n this.items[nextTabIndex].link.setAttribute('tabindex', '0');\r\n }\r\n }\r\n }\r\n // store new values\r\n this.activeItemIndex = itemIndex;\r\n this.activeSubmenuItemIndex = submenuItemIndex;\r\n }\r\n}\r\n\r\nclass menuItem {\r\n constructor(itemIndex, obj, level) {\r\n this.level = level;\r\n this.index = itemIndex;\r\n this.li = obj;\r\n this.button = obj.querySelector('button.submenu--toggle');\r\n this.buttonX = 0;\r\n let sub = obj.querySelector('div.submenu');\r\n if (this.button && sub) {\r\n this.hasSubmenu = true;\r\n this.submenu = new subMenu(sub, this.button, level);\r\n } else {\r\n this.hasSubmenu = false;\r\n this.link = obj.querySelector('a');\r\n }\r\n }\r\n}\r\n\r\nclass subMenu {\r\n constructor(sub, button, level) {\r\n this.expanded = false;\r\n this.toggle = button;\r\n this.wrapper = sub;\r\n this.level = level;\r\n this.closeBtn = this.wrapper.querySelector('.submenu--close');\r\n this.inner = this.wrapper.querySelector('.submenu--content-area');\r\n this.items = [];\r\n [...this.inner.querySelectorAll('a, button')].forEach(i => {\r\n this.items.push(i);\r\n });\r\n }\r\n show(animate) {\r\n this.expanded = true;\r\n this.wrapper.setAttribute('aria-hidden', false);\r\n this.toggle.setAttribute('aria-expanded', true);\r\n if(isMobile) {\r\n this.wrapper.style.maxHeight = this.inner.offsetHeight + 'px';\r\n if (animate) {\r\n this.wrapper.classList.add('animate');\r\n this.wrapper.ontransitionend = () => {\r\n this.wrapper.classList.remove('animate');\r\n if (this.level > 1 || isMobile) {\r\n this.wrapper.style.maxHeight = 'none';\r\n this.wrapper.ontransitionend = null;\r\n }\r\n };\r\n } else {\r\n this.wrapper.style.maxHeight = 'none';\r\n }\r\n } else {\r\n this.wrapper.style.maxHeight = 'none';\r\n mainNavigation.setDesktopActive(true);\r\n if (animate) {\r\n window.requestAnimationFrame(() => {\r\n $html.classList.add('desktop-menu-fading');\r\n window.requestAnimationFrame(() => {\r\n $html.classList.add('desktop-menu-active');\r\n this.wrapper.ontransitionend = () => {\r\n $html.classList.remove('desktop-menu-fading');\r\n this.wrapper.ontransitionend = null;\r\n };\r\n });\r\n });\r\n } else {\r\n $html.classList.add('desktop-menu-active');\r\n }\r\n }\r\n }\r\n hide(animate) {\r\n this.expanded = false;\r\n if (isMobile) {\r\n this.wrapper.setAttribute('aria-hidden', true);\r\n this.toggle.setAttribute('aria-expanded', false);\r\n this.wrapper.style.maxHeight = this.inner.offsetHeight + 'px';\r\n window.requestAnimationFrame(() => {\r\n this.wrapper.style.maxHeight = 0;\r\n });\r\n if (animate) {\r\n this.wrapper.classList.add('animate');\r\n this.wrapper.ontransitionend = (e) => {\r\n if(e.target == this.wrapper) this.wrapper.classList.remove('animate');\r\n };\r\n }\r\n } else {\r\n mainNavigation.setDesktopActive(false);\r\n if (animate) {\r\n $html.classList.add('desktop-menu-fading');\r\n $html.classList.remove('desktop-menu-active');\r\n this.wrapper.ontransitionend = () => {\r\n this.wrapper.ontransitionend = null;\r\n $html.classList.remove('desktop-menu-fading');\r\n this.wrapper.setAttribute('aria-hidden', true);\r\n this.toggle.setAttribute('aria-expanded', false);\r\n };\r\n } else {\r\n $html.classList.remove('desktop-menu-active');\r\n this.wrapper.setAttribute('aria-hidden', true);\r\n this.toggle.setAttribute('aria-expanded', false);\r\n }\r\n }\r\n }\r\n}\r\n\r\n// create instance of menu\r\n\r\nif(document.querySelector('.header--menu') != null) {\r\n const m = new menu(document.querySelector('.header--menu'), document.querySelector('.header--mobile-menu-toggle button'), document.querySelector('.header--menu > nav > ul'));\r\n\r\n\r\n // mobile 'whole menu toggle' functionality\r\n\r\n m.mobileToggle.addEventListener('click', () => {\r\n if (isMobile) {\r\n if (m.expanded) {\r\n // close\r\n m.hide();\r\n } else {\r\n // open\r\n m.show();\r\n }\r\n }\r\n });\r\n\r\n // close menu if user focus moves outside\r\n\r\n const bodyClickTouch = (t) => {\r\n if (!isMobile && m.activeSubmenuItemIndex > -1) {\r\n let inMenu = false;\r\n while (t != document.body) {\r\n if (t == m.wrapper) {\r\n inMenu = true;\r\n break\r\n }\r\n t = t.parentNode;\r\n }\r\n if (!inMenu) {\r\n m.update();\r\n }\r\n }\r\n }\r\n document.body.addEventListener('click', (e) => {\r\n bodyClickTouch(e.target);\r\n });\r\n\r\n // add menu item listeners\r\n\r\n for (let x = 0, l = m.items.length; x < l; x++) {\r\n let o = m.items[x];\r\n if (o.hasSubmenu) {\r\n\r\n o.submenu.toggle.addEventListener('click', () => {\r\n clearTimeout(m.focusTimeout);\r\n m.focusTimeout = null;\r\n if (o.submenu.expanded) {\r\n m.update(true, o.index);\r\n } else {\r\n m.update(true, o.index, 0);\r\n }\r\n });\r\n\r\n o.submenu.toggle.addEventListener('focus', () => {\r\n if (m.expanded && m.activeItemIndex != o.index) {\r\n clearTimeout(m.focusTimeout);\r\n m.focusTimeout = setTimeout(() => {\r\n m.update(true, o.index);\r\n m.focusTimeout = null;\r\n }, 250);\r\n }\r\n });\r\n\r\n // add submenu expander listeners if required\r\n\r\n for (let xx = 0, ll = o.submenu.items.length; xx < ll; xx++) {\r\n let oo = o.submenu.items[xx];\r\n if (oo.hasSubmenu) {\r\n oo.submenu.toggle.addEventListener('click', () => {\r\n m.update(true, o.index, oo.index);\r\n });\r\n }\r\n }\r\n\r\n // desktop only - submenu close button\r\n\r\n o.submenu.closeBtn.addEventListener('click', () => {\r\n if (o.submenu.expanded) m.update(true, o.index);\r\n });\r\n }\r\n }\r\n\r\n // add keyboard accessibility\r\n m.ul.addEventListener('keydown', (e) => {\r\n switch (e.key) {\r\n // ESCAPE jumps out a level\r\n case 'Escape':\r\n e.preventDefault();\r\n if (m.activeSubmenuItemIndex > -1) {\r\n m.update(true, m.activeItemIndex);\r\n } else {\r\n m.update(true);\r\n }\r\n break;\r\n // DOWN / RIGHT to move through items at current level\r\n case 'Down':\r\n case 'ArrowDown':\r\n case 'Right':\r\n case 'ArrowRight':\r\n e.preventDefault();\r\n if (m.activeSubmenuItemIndex > -1) {\r\n let next = m.activeSubmenuItemIndex + 1,\r\n list = m.items[m.activeItemIndex].submenu.items;\r\n if (next >= (isMobile ? list.length - 1 : list.length)) next = 0; // don't include submenu close button in mobile mode\r\n m.update(true, m.activeItemIndex, next);\r\n } else {\r\n let next = m.activeItemIndex + 1,\r\n list = m.items;\r\n if (next >= list.length) next = 0;\r\n m.update(true, next);\r\n }\r\n break;\r\n // UP / LEFT to move backwards through items at current level\r\n case 'Up':\r\n case 'ArrowUp':\r\n case 'Left':\r\n case 'ArrowLeft':\r\n e.preventDefault();\r\n if (m.activeSubmenuItemIndex > -1) {\r\n let next = m.activeSubmenuItemIndex - 1,\r\n list = m.items[m.activeItemIndex].submenu.items;\r\n if (next < 0) next = isMobile ? list.length - 2 : list.length - 1; // don't include submenu close button in mobile mode\r\n m.update(true, m.activeItemIndex, next);\r\n } else {\r\n let next = m.activeItemIndex - 1,\r\n list = m.items;\r\n if (next < 0) next = list.length - 1;\r\n m.update(true, next);\r\n }\r\n break;\r\n // TAB close menu (if open) and move to next tab element\r\n case 'Tab':\r\n if(isMobile) {\r\n if (!m.hasSearch && m.activeItemIndex > -1) {\r\n m.hide();\r\n }\r\n } else {\r\n m.update();\r\n }\r\n break;\r\n // SPACE/ENTER/RETURN to click a item\r\n case 'Spacebar':\r\n case ' ':\r\n case 'Enter':\r\n case 'Return':\r\n e.preventDefault();\r\n if (m.activeSubmenuItemIndex > -1) {\r\n m.items[m.activeItemIndex].submenu.items[m.activeSubmenuItemIndex].click();\r\n } else {\r\n if (m.items[m.activeItemIndex].hasSubmenu) {\r\n m.items[m.activeItemIndex].submenu.toggle.click();\r\n } else {\r\n m.items[m.activeItemIndex].link.click();\r\n }\r\n }\r\n break;\r\n }\r\n });\r\n\r\n // define and trigger resize check\r\n\r\n const resize = () => {\r\n let prev = isMobile;\r\n isMobile = window.innerWidth < breakPoint.LG;\r\n if(!isMobile) m.storeTriggerPositions();\r\n if(isMobile !== prev) {\r\n if(!isMobile) {\r\n m.show();\r\n m.update(false,1); // 'home' is hidden on desktop, so set menu to item 1 (without setting focus)\r\n } else {\r\n m.update(false);\r\n }\r\n // loop through all submenus and force close them\r\n m.items.forEach(s => {\r\n if(s.hasSubmenu) s.submenu.hide(false);\r\n });\r\n mainNavigation.setMobileActive(false);\r\n mainNavigation.setDesktopActive(false);\r\n $html.classList.remove('mobile-menu-active');\r\n $html.classList.remove('desktop-menu-active');\r\n }\r\n };\r\n\r\n resize();\r\n window.addEventListener('resize', () => {\r\n if(!resizeRequested) {\r\n resizeRequested = true;\r\n setTimeout(() => {\r\n resize();\r\n resizeRequested = false;\r\n }, 200);\r\n }\r\n });\r\n\r\n}\r\n"],"names":["siteLang","document","querySelector","getAttribute","toLowerCase","translations","detectReducedMotionPref","window","matchMedia","settingsLinksAdded","settingsModalContent","siteSettings","translate","key","reducedMotionPref","matches","fx","fxAdd","fxType","fxEnable","fxCallback","exists","forEach","i","type","push","enabled","callback","controller","createElement","thisIndex","length","thisFX","setAttribute","checkbox","addEventListener","fxToggle","checked","appendChild","label","innerHTML","utilityBar","body","li","classList","add","addSettingsLinks","settingsModal","refreshModalContent","mode","viewport","vw","vh","setVw","val","setVh","mainNavigation","mobileActive","setMobileActive","desktopActive","setDesktopActive","headerSearch","active","setActive","keyboardControl","accessibilityTimeout","toggleAccessibilityClass","clearTimeout","setTimeout","toggle","e","$html","isMobile","resizeRequested","menu","constructor","wrapper","toggleButton","ul","this","desktopSubmenuIndicator","navContent","mobileToggle","expanded","focusTimeout","hideTimeout","hideDelay","activeItemIndex","activeSubmenuItemIndex","items","querySelectorAll","x","menuItem","show","requestAnimationFrame","ontransitionend","transitionEnd","update","remove","hide","storeTriggerPositions","l","button","b","getBoundingClientRect","buttonX","Math","floor","left","right","style","setFocus","itemIndex","submenuItemIndex","submenu","focus","hasSubmenu","link","nextTabIndex","obj","level","index","sub","subMenu","closeBtn","inner","animate","maxHeight","offsetHeight","target","m","bodyClickTouch","t","inMenu","parentNode","o","xx","ll","oo","preventDefault","next","list","hasSearch","click","resize","prev","innerWidth","breakPoint","s"],"sourceRoot":""}