{"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(function (data) {\r\n renderAccountLoggedInState(data);\r\n triggerEvent(data);\r\n })\r\n .catch(function (error) { });\r\n }\r\n\r\n function createCustomEventForDispatch(eventName, data) {\r\n\r\n let event;\r\n if (window.CustomEvent && typeof window.CustomEvent === 'function') {\r\n event = new CustomEvent(eventName, { detail: data });\r\n } else {\r\n event = document.createEvent('CustomEvent');\r\n event.initCustomEvent(eventName, true, true, data);\r\n }\r\n\r\n return event;\r\n\r\n }\r\n\r\n function triggerEvent(data) {\r\n\r\n const loggedInEvent = createCustomEventForDispatch('userLoggedIn', data);\r\n document.dispatchEvent(loggedInEvent);\r\n\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","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","data","headerLinksContainerElement","outerHTML","accountUrl","loggedInEvent","eventName","let","event","CustomEvent","detail","createEvent","initCustomEvent","dispatchEvent","catch","error"],"mappings":"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"}