{"version":3,"file":"376-bundle.js","mappings":"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","sources":["webpack://client/./src/javascript/modules/secondary-nav.js"],"sourcesContent":["class SecondaryNavModule {\r\n constructor(selector) {\r\n this.selector = selector;\r\n this.secondaryNavs = document.querySelectorAll(selector);\r\n this.initSecondaryNav();\r\n window.addEventListener('resize', this.initSecondaryNav.bind(this));\r\n }\r\n\r\n initSecondaryNav() {\r\n this.secondaryNavs.forEach(secondaryNav => {\r\n this.addArrows(secondaryNav);\r\n this.horizontalScroll(secondaryNav);\r\n this.watchScrollPosition(secondaryNav);\r\n this.centerActiveLink(secondaryNav);\r\n this.smoothScrollToElement(secondaryNav);\r\n });\r\n }\r\n\r\n addArrows(secondaryNav) {\r\n const listElement = secondaryNav.querySelector('.c-secondary-nav__list');\r\n if (listElement.scrollWidth > listElement.clientWidth) {\r\n secondaryNav.classList.add('c-secondary-nav--overflowed');\r\n } else {\r\n secondaryNav.classList.remove('c-secondary-nav--overflowed');\r\n }\r\n }\r\n\r\n horizontalScroll(secondaryNav) {\r\n const scrollContent = secondaryNav.querySelector('.c-secondary-nav__list');\r\n const scrollLeftButton = secondaryNav.querySelector('[data-scroll-left]');\r\n const scrollRightButton = secondaryNav.querySelector('[data-scroll-right]');\r\n let scrollInterval;\r\n\r\n function scrollLeft() {\r\n scrollInterval = setInterval(function () {\r\n scrollContent.scrollLeft -= 2;\r\n }, 10);\r\n }\r\n\r\n function scrollRight() {\r\n scrollInterval = setInterval(function () {\r\n scrollContent.scrollLeft += 2;\r\n }, 10);\r\n }\r\n\r\n function stopScrolling() {\r\n clearInterval(scrollInterval);\r\n }\r\n\r\n scrollLeftButton.addEventListener('click', function (e) {\r\n e.preventDefault();\r\n });\r\n\r\n scrollRightButton.addEventListener('click', function (e) {\r\n e.preventDefault();\r\n });\r\n\r\n scrollLeftButton.addEventListener('mousedown', function (e) {\r\n e.preventDefault();\r\n scrollLeft();\r\n });\r\n\r\n scrollRightButton.addEventListener('mousedown', function (e) {\r\n e.preventDefault();\r\n scrollRight();\r\n });\r\n\r\n document.addEventListener('mouseup', stopScrolling);\r\n document.addEventListener('mouseleave', stopScrolling);\r\n\r\n scrollLeftButton.addEventListener('touchstart', function (e) {\r\n e.preventDefault();\r\n scrollLeft();\r\n });\r\n\r\n scrollRightButton.addEventListener('touchstart', function (e) {\r\n e.preventDefault();\r\n scrollRight();\r\n });\r\n\r\n document.addEventListener('touchend', stopScrolling);\r\n document.addEventListener('touchcancel', stopScrolling);\r\n }\r\n\r\n watchScrollPosition(secondaryNav) {\r\n const links = secondaryNav.querySelectorAll('.c-secondary-nav__link');\r\n\r\n function onScroll() {\r\n const navHeight = secondaryNav.offsetHeight;\r\n const fromTop = window.scrollY + navHeight + 20;\r\n const scrollItems = Array.from(links).map(link => {\r\n const href = link.getAttribute('href');\r\n const targetId = href && href.substring(1);\r\n const item = targetId && document.getElementById(targetId);\r\n if (item) {\r\n return {\r\n link,\r\n item,\r\n offsetTop: item.offsetTop,\r\n offsetBottom: item.offsetTop + item.offsetHeight\r\n };\r\n }\r\n return null;\r\n }).filter(Boolean);\r\n\r\n scrollItems.forEach(scrollItem => {\r\n if (fromTop >= scrollItem.offsetTop && fromTop < scrollItem.offsetBottom) {\r\n scrollItem.link.classList.add('c-secondary-nav__link--active');\r\n } else {\r\n scrollItem.link.classList.remove('c-secondary-nav__link--active');\r\n }\r\n });\r\n }\r\n\r\n window.addEventListener('scroll', onScroll);\r\n }\r\n\r\n centerActiveLink(secondaryNav) {\r\n const list = secondaryNav.querySelector('.c-secondary-nav__list');\r\n let previousActiveLink = null;\r\n\r\n function getActiveLink() {\r\n const activeLink = secondaryNav.querySelector('.c-secondary-nav__link--active');\r\n if (activeLink !== previousActiveLink && activeLink !== null) {\r\n const containerRect = list.getBoundingClientRect();\r\n const itemRect = activeLink.getBoundingClientRect();\r\n\r\n if (itemRect.left < containerRect.left || itemRect.right > containerRect.right) {\r\n const scrollLeft = itemRect.left - containerRect.left - (containerRect.width - itemRect.width) / 2;\r\n list.scrollLeft = scrollLeft;\r\n }\r\n previousActiveLink = activeLink;\r\n }\r\n }\r\n\r\n window.addEventListener('load', getActiveLink);\r\n\r\n let timeout;\r\n const observer = new MutationObserver(() => {\r\n clearTimeout(timeout);\r\n timeout = setTimeout(getActiveLink, 100);\r\n });\r\n\r\n observer.observe(list, { subtree: true, attributes: true, attributeFilter: ['class'] });\r\n\r\n secondaryNav.querySelectorAll('.c-secondary-nav__link').forEach(link => {\r\n link.addEventListener('click', () => {\r\n observer.disconnect();\r\n setTimeout(() => observer.observe(list, { subtree: true, attributes: true, attributeFilter: ['class'] }), 1000);\r\n });\r\n });\r\n }\r\n\r\n smoothScrollToElement(secondaryNav) {\r\n const navHeight = secondaryNav.offsetHeight;\r\n const links = secondaryNav.querySelectorAll('.c-secondary-nav__link[href^=\"#\"]');\r\n\r\n links.forEach(link => {\r\n link.addEventListener('click', function (e) {\r\n e.preventDefault();\r\n const targetId = this.getAttribute('href').substring(1);\r\n const targetElement = document.getElementById(targetId);\r\n if (targetElement) {\r\n const targetPosition = targetElement.getBoundingClientRect().top + window.pageYOffset;\r\n window.scrollTo({\r\n top: targetPosition - navHeight,\r\n behavior: 'smooth'\r\n });\r\n }\r\n });\r\n });\r\n }\r\n}\r\n\r\nexport default SecondaryNavModule;\r\n"],"names":["SecondaryNavModule","selector","_classCallCheck","this","secondaryNavs","document","querySelectorAll","initSecondaryNav","window","addEventListener","bind","key","value","_this","forEach","secondaryNav","addArrows","horizontalScroll","watchScrollPosition","centerActiveLink","smoothScrollToElement","listElement","querySelector","scrollWidth","clientWidth","classList","add","remove","scrollInterval","scrollContent","scrollLeftButton","scrollRightButton","scrollLeft","setInterval","scrollRight","stopScrolling","clearInterval","e","preventDefault","links","navHeight","offsetHeight","fromTop","scrollY","Array","from","map","link","href","getAttribute","targetId","substring","item","getElementById","offsetTop","offsetBottom","filter","Boolean","scrollItem","timeout","list","previousActiveLink","getActiveLink","activeLink","containerRect","getBoundingClientRect","itemRect","left","right","width","observer","MutationObserver","clearTimeout","setTimeout","observe","subtree","attributes","attributeFilter","disconnect","targetElement","targetPosition","top","pageYOffset","scrollTo","behavior"],"sourceRoot":""}