{"version":3,"file":"header.min.js","sources":["header.js"],"sourcesContent":["var header = function () {\r\n\r\n\tvar lastScrollTop = window.pageYOffset || document.documentElement.scrollTop;\r\n\tvar headerElement = document.querySelector('.js-header');\r\n\tvar navListMobileContainerElement = document.querySelector('.js-nav-list-mobile-container');\r\n\tvar scrollingDownCSSClass = 'scrolling-down';\r\n\tvar scrollingUpCSSClass = 'scrolling-up';\r\n\tvar activeLineElement = document.querySelector('.js-nav-active-line');\r\n\tvar activeLineOverlap = 4;\r\n\tvar activeLineResetTimer;\r\n\r\n\tfunction init() {\r\n\t\tif (!headerElement) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tsearchBox();\r\n\t\tsubNavigation();\r\n\t\tsubNavigationHover();\r\n\t\tmobileNavLock();\r\n scrolling();\r\n checkUserLoginStatus();\r\n\t\t// prevents animations on immediate page load\r\n\t\tsetTimeout(function () {\r\n\t\t\theaderElement.classList.remove('c-header--loading');\r\n\t\t}, 300);\r\n\t}\r\n\r\n\tfunction searchBox() {\r\n\t\tvar searchFormElement = document.querySelector('.js-search-form');\r\n\t\tvar searchFormInputElement = document.querySelector('.js-search-input');\r\n\t\tvar searchText = document.querySelector('.js-search-text');\r\n\t\tvar searchIcon = document.querySelector('.js-search-icon');\r\n\t\tvar searchTriggerElement = document.querySelector('.js-search-trigger');\r\n\t\tif (!searchTriggerElement) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tsearchTriggerElement.addEventListener('click', function () {\r\n\t\t\tvar shouldOpen = searchFormElement.getAttribute('aria-hidden') === 'true';\r\n\t\t\tsearchFormElement.setAttribute('aria-hidden', !shouldOpen);\r\n\t\t\tif (!shouldOpen) {\r\n\t\t\t\tsearchText.textContent = \"Open search form\";\r\n\t\t\t\tsearchIcon.querySelector('.js-search-icon-use').setAttributeNS('http://www.w3.org/1999/xlink', 'href', '#icon-search');\r\n\t\t\t\tsearchFormInputElement.blur();\r\n\t\t\t} else {\r\n\t\t\t\tsearchText.textContent = \"Close search form\";\r\n\t\t\t\tsearchIcon.querySelector('.js-search-icon-use').setAttributeNS('http://www.w3.org/1999/xlink', 'href', '#icon-close');\r\n\t\t\t\tsearchFormInputElement.focus();\r\n\t\t\t}\r\n\t\t\tcloseOpenSubNavs();\r\n\t\t});\r\n\r\n\t}\r\n\r\n\tfunction subNavigation() {\r\n\r\n\t\tvar subNavTriggers = document.querySelectorAll('.js-nav-sub-link-trigger');\r\n\r\n\t\tfor (var index = 0; index < subNavTriggers.length; index++) {\r\n\t\t\t(function (index) {\r\n\t\t\t\tvar subNavTrigger = subNavTriggers[index];\r\n\t\t\t\tsubNavTrigger.addEventListener('click', function (e) {\r\n\t\t\t\t\te.preventDefault();\r\n\t\t\t\t\tcloseOpenSubNavs(subNavTrigger);\r\n\t\t\t\t\tvar targetSubNav = document.querySelector('#' + subNavTrigger.getAttribute('aria-controls'));\r\n\t\t\t\t\tvar shouldBeExpanded = subNavTrigger.getAttribute('aria-expanded').toLowerCase() === 'false';\r\n\r\n\t\t\t\t\tif (!subNavTrigger.classList.contains('js-nav-mobile-trigger')) {\r\n\t\t\t\t\t\tif (shouldBeExpanded) {\r\n\t\t\t\t\t\t\ttargetSubNav.style.maxHeight = targetSubNav.scrollHeight + 'px';\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\ttargetSubNav.removeAttribute('style');\r\n\t\t\t\t\t\t}\t\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tsubNavTrigger.setAttribute('aria-expanded', shouldBeExpanded + '');\r\n\t\t\t\t\ttargetSubNav.setAttribute('aria-expanded', shouldBeExpanded + '');\r\n\t\t\t\t});\r\n\t\t\t}).call(this, index);\r\n\r\n\t\t}\r\n\r\n\t}\r\n\r\n\tfunction subNavigationHover() {\r\n\t\tvar canHover = !matchMedia('(hover: none)').matches;\r\n\t\tif (canHover) {\r\n\t\t\tvar subNavHoverTriggers = document.querySelectorAll('.js-nav-sub-hover');\r\n\t\t\tfor (var index = 0; index < subNavHoverTriggers.length; index++) {\r\n\t\t\t\t(function (index) {\r\n\t\t\t\t\tvar subNavHoverTrigger = subNavHoverTriggers[index];\r\n\t\t\t\t\tvar subNavTrigger = subNavHoverTrigger.querySelector('.js-nav-sub-link-trigger');\r\n\t\t\t\t\tvar noSubNav = subNavHoverTrigger.classList.contains('js-nav-no-sub-hover');\r\n\t\t\t\t\tvar hoverIntentTimer;\r\n\t\t\t\t\tsubNavHoverTrigger.addEventListener('mouseover', function (e) {\r\n\t\t\t\t\t\te.preventDefault();\r\n\t\t\t\t\t\tanimateNavLine(subNavHoverTrigger, !noSubNav);\r\n\t\t\t\t\t\tif (isDesktop()) {\r\n\t\t\t\t\t\t\tif (hoverIntentTimer) {\r\n\t\t\t\t\t\t\t\tclearTimeout(hoverIntentTimer);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\tif (activeLineResetTimer) {\r\n\t\t\t\t\t\t\t\tclearTimeout(activeLineResetTimer);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\tif (noSubNav) {\r\n\t\t\t\t\t\t\t\treturn;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\thoverIntentTimer = setTimeout(function () {\r\n\t\t\t\t\t\t\t\tvar subNavAriaControls = subNavTrigger.getAttribute('aria-controls');\r\n\t\t\t\t\t\t\t\tif (!subNavAriaControls) {\r\n\t\t\t\t\t\t\t\t\treturn;\r\n\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\tvar targetSubNav = document.querySelector('#' + subNavAriaControls);\r\n\t\t\t\t\t\t\t\tsubNavTrigger.setAttribute('aria-expanded', 'true');\r\n\t\t\t\t\t\t\t\ttargetSubNav.setAttribute('aria-expanded', 'true');\r\n\t\t\t\t\t\t\t}, 200);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t\tsubNavHoverTrigger.addEventListener('mouseout', function (e) {\r\n\t\t\t\t\t\te.preventDefault();\r\n\t\t\t\t\t\tif (isDesktop()) {\r\n\t\t\t\t\t\t\tif (hoverIntentTimer) {\r\n\t\t\t\t\t\t\t\tclearTimeout(hoverIntentTimer);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\tactiveLineResetTimer = setTimeout(function () {\r\n\t\t\t\t\t\t\t\tresetActiveLine();\r\n\t\t\t\t\t\t\t}, 400);\r\n\t\t\t\t\t\t\tif (noSubNav) {\r\n\t\t\t\t\t\t\t\treturn;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\thoverIntentTimer = setTimeout(function () {\r\n\t\t\t\t\t\t\t\tvar subNavAriaControls = subNavTrigger.getAttribute('aria-controls');\r\n\t\t\t\t\t\t\t\tif (!subNavAriaControls) {\r\n\t\t\t\t\t\t\t\t\treturn;\r\n\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\tvar targetSubNav = document.querySelector('#' + subNavAriaControls);\r\n\t\t\t\t\t\t\t\tsubNavTrigger.setAttribute('aria-expanded', 'false');\r\n\t\t\t\t\t\t\t\ttargetSubNav.setAttribute('aria-expanded', 'false');\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t}, 200);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t}).call(this, index);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tfunction closeOpenSubNavs(excludedElement) {\r\n\t\tvar subNavTriggers = document.querySelectorAll('.js-nav-sub-link-trigger[aria-expanded=\"true\"]:not(.js-nav-mobile-trigger)');\r\n\t\tfor (var index = 0; index < subNavTriggers.length; index++) {\r\n\t\t\t(function (index) {\r\n\t\t\t\tvar subNavTrigger = subNavTriggers[index];\r\n\t\t\t\tif (excludedElement && subNavTrigger.isEqualNode(excludedElement)) {\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t\tvar targetSubNav = document.querySelector('#' + subNavTrigger.getAttribute('aria-controls'));\r\n\t\t\t\ttargetSubNav.removeAttribute('style');\r\n\t\t\t\tsubNavTrigger.setAttribute('aria-expanded', 'false');\r\n\t\t\t\ttargetSubNav.setAttribute('aria-expanded', 'false');\r\n\t\t\t}).call(this, index);\r\n\t\t}\r\n\t\tnavListMobileContainerElement.setAttribute('style', '');\r\n\t}\r\n\r\n\tfunction mobileNavLock() {\r\n\t\tvar isMobileNavOpen = false;\r\n\t\tvar mobileNavOpenCSSClass = 'mobile-nav-open';\r\n\t\tvar scrollPosition = document.documentElement.scrollTop;\r\n\t\tdocument.querySelector('.js-nav-mobile-trigger').addEventListener('click', function () {\r\n\t\t\tisMobileNavOpen = !isMobileNavOpen;\r\n\t\t\tif (isMobileNavOpen) {\r\n\t\t\t\tscrollPosition = document.documentElement.scrollTop;\r\n\t\t\t\tdocument.documentElement.classList.add(mobileNavOpenCSSClass);\r\n\t\t\t\twindow.addEventListener('resize', checkIfChangedToDesktopNav);\r\n\t\t\t\tnavListMobileContainerElement.scrollTop = 0;\r\n\t\t\t} else {\r\n\t\t\t\tdocument.documentElement.classList.remove(mobileNavOpenCSSClass);\r\n\t\t\t\twindow.scrollTo(0, scrollPosition);\r\n\t\t\t\twindow.removeEventListener('resize', checkIfChangedToDesktopNav);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tvar checkIfChangedToDesktopNav = debounce(function () {\r\n\t\t\tif (isDesktop()) {\r\n\t\t\t\tdocument.documentElement.classList.remove(mobileNavOpenCSSClass);\r\n\t\t\t} else {\r\n\t\t\t\tdocument.documentElement.classList.add(mobileNavOpenCSSClass);\r\n\t\t\t}\r\n\t\t}, 200);\r\n\t}\r\n\r\n\tfunction scrolling() {\r\n\r\n\t\tif (lastScrollTop > 0) {\r\n\t\t\theaderElement.classList.add(scrollingDownCSSClass);\r\n\t\t\theaderElement.classList.remove(scrollingUpCSSClass);\r\n\t\t}\r\n\r\n\t\tvar debouncedScrollCheck = debounce(function () {\r\n\t\t\twindow.requestAnimationFrame(function () {\r\n\t\t\t\tscrollCheck();\r\n\t\t\t});\r\n\t\t}, 50);\r\n\r\n\t\twindow.addEventListener(\"touchmove\", debouncedScrollCheck);\r\n\t\twindow.addEventListener(\"scroll\", debouncedScrollCheck);\r\n\t\tvar tvContainerElement = document.querySelector('.js-tv-left-container');\r\n\t\tif (tvContainerElement) {\r\n\t\t\tvar debouncedTvScrollCheck = debounce(function () {\r\n\t\t\t\twindow.requestAnimationFrame(function () {\r\n\t\t\t\t\tscrollCheck(tvContainerElement);\r\n\t\t\t\t});\r\n\t\t\t}, 50);\r\n\t\t\ttvContainerElement.addEventListener(\"touchmove\", debouncedTvScrollCheck);\r\n\t\t\ttvContainerElement.addEventListener(\"scroll\", debouncedTvScrollCheck);\r\n\t\t}\r\n\t\t\r\n\t}\r\n\r\n\tfunction scrollCheck(elementToCheck) {\r\n\t\tvar scrollTop = elementToCheck ? elementToCheck.scrollTop : (window.pageYOffset || document.documentElement.scrollTop);\r\n\t\tif (scrollTop === lastScrollTop) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tvar headerHeight = headerElement.offsetHeight;\r\n\r\n\t\tif (scrollTop > lastScrollTop && scrollTop > headerHeight) {\r\n\t\t\theaderElement.classList.add(scrollingDownCSSClass);\r\n\t\t\theaderElement.classList.remove(scrollingUpCSSClass);\r\n\t\t\tdocument.documentElement.classList.add(scrollingDownCSSClass);\r\n\t\t\tdocument.documentElement.classList.remove(scrollingUpCSSClass);\r\n\t\t} else {\r\n\t\t\theaderElement.classList.add(scrollingUpCSSClass);\r\n\t\t\theaderElement.classList.remove(scrollingDownCSSClass);\r\n\t\t\tdocument.documentElement.classList.add(scrollingUpCSSClass);\r\n\t\t\tdocument.documentElement.classList.remove(scrollingDownCSSClass);\r\n\t\t}\r\n\t\tif (isDesktop()) {\r\n\t\t\tcloseOpenSubNavs();\r\n\t\t}\r\n\t\tlastScrollTop = scrollTop <= 0 ? 0 : scrollTop; // For Mobile or negative scrolling\r\n\t}\r\n\r\n\tfunction animateNavLine(activeElement, hasSubNav) {\r\n\r\n\t\tif (hasSubNav) {\r\n\t\t\tif (!isDesktop() || activeElement.querySelector('.js-nav-sub-link-trigger').classList.contains('js-nav-sub-link-trigger-no-line')) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tvar paddingLeftOfActiveLink = parseInt(window.getComputedStyle(activeElement, null).getPropertyValue('padding-left'));\r\n\t\tvar paddingRightOfActiveLink = parseInt(window.getComputedStyle(activeElement, null).getPropertyValue('padding-right'));\r\n\t\tvar positionOfActiveItem = activeElement.offsetLeft + paddingLeftOfActiveLink;\r\n\t\tvar widthOfActiveItem = activeElement.getBoundingClientRect().width - paddingLeftOfActiveLink - paddingRightOfActiveLink;\r\n\r\n\t\tactiveLineElement.style.transform = \"skew(14deg) translateX(\" + (positionOfActiveItem - activeLineOverlap) + \"px)\";\r\n\t\tactiveLineElement.style.width = widthOfActiveItem + (activeLineOverlap * 2) + \"px\";\r\n\t}\r\n\r\n\tfunction resetActiveLine() {\r\n\t\tactiveLineElement.setAttribute('style', '');\r\n\t}\r\n\r\n\tfunction debounce(func, wait, immediate) {\r\n\t\tvar timeout;\r\n\t\treturn function () {\r\n\t\t\tvar context = this, args = arguments;\r\n\t\t\tvar later = function () {\r\n\t\t\t\ttimeout = null;\r\n\t\t\t\tif (!immediate) func.apply(context, args);\r\n\t\t\t};\r\n\t\t\tvar callNow = immediate && !timeout;\r\n\t\t\tclearTimeout(timeout);\r\n\t\t\ttimeout = setTimeout(later, wait);\r\n\t\t\tif (callNow) func.apply(context, args);\r\n\t\t};\r\n\t}\r\n\r\n\tfunction isDesktop() {\r\n\t\treturn window.matchMedia('(min-width: 768px)').matches;\r\n }\r\n\r\n function checkUserLoginStatus() {\r\n fetch(\"/api/sso\")\r\n .then(function (response) {\r\n if (response.status === 200) {\r\n return response;\r\n }\r\n if (response.status === 404) {\r\n throw new Error('User not logged in.');\r\n } else {\r\n throw new Error('An error occurred getting user logged in state.');\r\n }\r\n })\r\n .then(function (response) {\r\n return response.json();\r\n })\r\n .then(renderAccountLoggedInState)\r\n .catch(function (error) { });\r\n }\r\n\r\n function renderAccountLoggedInState(data) {\r\n var headerLinksContainerElement = document.querySelector('.js-header-account-links');\r\n if (headerLinksContainerElement) {\r\n headerLinksContainerElement.outerHTML = `\r\n \r\n `;\r\n }\r\n }\r\n\r\n\treturn {\r\n\t\tinit: init\r\n\t};\r\n\r\n}();\r\n\r\nheader.init();\r\n"],"names":["header","activeLineResetTimer","lastScrollTop","window","pageYOffset","document","documentElement","scrollTop","headerElement","querySelector","navListMobileContainerElement","scrollingDownCSSClass","scrollingUpCSSClass","activeLineElement","activeLineOverlap","closeOpenSubNavs","excludedElement","subNavTriggers","querySelectorAll","index","length","targetSubNav","subNavTrigger","isEqualNode","getAttribute","removeAttribute","setAttribute","call","this","scrollCheck","elementToCheck","headerHeight","offsetHeight","classList","add","remove","isDesktop","debounce","func","wait","immediate","timeout","context","args","arguments","callNow","clearTimeout","setTimeout","apply","matchMedia","matches","renderAccountLoggedInState","data","headerLinksContainerElement","outerHTML","accountUrl","init","searchFormElement","searchFormInputElement","searchText","searchIcon","isMobileNavOpen","mobileNavOpenCSSClass","scrollPosition","checkIfChangedToDesktopNav","debouncedScrollCheck","tvContainerElement","searchTriggerElement","addEventListener","shouldOpen","textContent","setAttributeNS","focus","blur","e","preventDefault","shouldBeExpanded","toLowerCase","contains","style","maxHeight","scrollHeight","subNavHoverTriggers","hoverIntentTimer","subNavHoverTrigger","noSubNav","activeElement","hasSubNav","paddingLeftOfActiveLink","parseInt","getComputedStyle","getPropertyValue","paddingRightOfActiveLink","positionOfActiveItem","offsetLeft","widthOfActiveItem","getBoundingClientRect","width","transform","subNavAriaControls","scrollTo","removeEventListener","requestAnimationFrame","debouncedTvScrollCheck","fetch","then","response","status","Error","json","catch","error"],"mappings":"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"}