{"version":3,"file":"js/modules/standalone/stickyNav.ui.bundle.js","mappings":"yBAEO,MAAMA,EAAY,CACxBC,eAAgBA,KACf,IAAIC,EAAWC,SAASC,iBAAiB,iCACrCC,EAAyBF,SAASG,cAAc,wBAChDC,EAASJ,SAASG,cAAc,SAChCE,EAAQL,SAASG,cAAc,0BAE/BG,EAAgBC,IACnB,IAAIC,EAAWD,EAAKE,wBACpB,OACCD,EAASE,KAAO,GAChBF,EAASG,MAAQ,GACjBH,EAASI,SAAWC,OAAOC,aAAed,SAASe,gBAAgBC,eACnER,EAASS,QAAUJ,OAAOK,YAAclB,SAASe,gBAAgBI,YAAY,EA4B3EC,EAAsBA,KAEzBrB,EAASsB,SAAQ,SAASC,GACzBA,EAAQC,UAAUC,OAAO,SAC1B,IAGA,IAAK,IAAIC,EAAI,EAAGA,EAAI1B,EAAS2B,OAAQD,IAAK,CACzC,IAAIH,EAAUvB,EAAS0B,GACnBE,EAAYL,EAAQM,aAAa,QAAQC,UAAU,GACnDC,EAAU9B,SAAS+B,eAAeJ,GAEtC,GAAIG,GAAWxB,EAAawB,GAAU,CACrCR,EAAQC,UAAUS,IAAI,UACtB,KACD,CACD,GAIDhC,SAASiC,iBAAiB,UAAU,WACnCb,GACD,IAEArB,EAASsB,SAASC,IACjB,IAAIY,EAAqD,EAAtCZ,EAAQM,aAAa,eACxCN,EAAQW,iBAAiB,SAAUE,IAClC,GAAIb,EAAQM,aAAa,iBAkBlB,CACN,IAAIQ,EAAMd,EAAQM,aAAa,QAvDZQ,KACrB,IAAIC,EAASrC,SAASsC,cAAc,KAGpC,OAFAD,EAAOE,KAAOH,EAEPC,EAAOG,WAAa3B,OAAO4B,SAASD,QAAQ,EAoD7CE,CAAeN,KAElBvB,OAAO8B,KAAKP,EAAK,UAEjBQ,MAAMC,iBAER,KA1B2C,CAC1CD,MAAMC,iBAGN,IAAIC,EAAWxB,EAAQM,aAAa,QAAQC,UAAU,GAKlDkB,EAFgB/C,SAAS+B,eAAee,GAETE,WAAad,GAA8BlC,SAASG,cAAc,wBAAwB8C,cAG7HpC,OAAOqC,SAAS,CACfxC,IAAKqC,EACLI,SAAU,WAGX9C,EAAMkB,UAAU6B,OAAO,aACxB,CAQA,GACC,IAIHhC,IAlFqBiC,MACpB,IAAIC,EAAgBtD,SAASG,cAAc,0BAE3CmD,EAAcrB,iBAAiB,SAAS,KACxBqB,EAAcC,cACpBhC,UAAU6B,OAAO,aAAa,IAGxCpD,SAASwD,KAAKvB,iBAAiB,SAAUW,IACnCvC,EAAMoD,SAASb,EAAMc,SAAYJ,EAAcG,SAASb,EAAMc,SAClErD,EAAMkB,UAAUC,OAAO,aACxB,GACC,EAuEH6B,GAEGnD,GAA0BE,IAC5BA,EAAOuD,QAAQzD,GACfA,EAAuBqB,UAAUS,IAAI,iBACtC,EAID4B,KAAMA,KACL/D,EAAUC,gBAAgB,GAI5BE,SAASiC,iBAAiB,oBAAoB,KAC7CpC,EAAU+D,MAAM,G","sources":["webpack:///./UI/js/core/modules/standalone/stickyNav.js"],"sourcesContent":["import { throttle } from 'throttle-debounce';\r\n\r\nexport const stickyNav = {\r\n\tsetupStickyNav: () => {\r\n\t\tlet navLinks = document.querySelectorAll('.sticky-nav-block__ul > div a');\r\n\t\tlet stickyNavBlockInstance = document.querySelector('.js-sticky-nav-block');\r\n\t\tlet mainEl = document.querySelector('.main');\r\n\t\tlet navEl = document.querySelector(\".sticky-nav-block__nav\")\r\n\t\t// Function to check if an element is in the viewport\r\n\t\tlet isInViewport = (elem) => {\r\n\t\t\tlet bounding = elem.getBoundingClientRect();\r\n\t\t\treturn (\r\n\t\t\t\tbounding.top >= 0 &&\r\n\t\t\t\tbounding.left >= 0 &&\r\n\t\t\t\tbounding.bottom <= (window.innerHeight || document.documentElement.clientHeight) &&\r\n\t\t\t\tbounding.right <= (window.innerWidth || document.documentElement.clientWidth)\r\n\t\t\t);\r\n\t\t};\r\n\r\n\t\tlet setupMobileNav = () => {\r\n\t\t\tlet mobileTrigger = document.querySelector('.js-sticky-nav-trigger');\r\n\r\n\t\t\tmobileTrigger.addEventListener('click', () => {\r\n\t\t\t\tlet parentEl = mobileTrigger.parentElement;\r\n\t\t\t\tparentEl.classList.toggle('state-open');\r\n\t\t\t});\r\n\r\n\t\t\tdocument.body.addEventListener('click', (event) => {\r\n\t\t\t\tif (!navEl.contains(event.target) && !mobileTrigger.contains(event.target)) {\r\n\t\t\t\t\tnavEl.classList.remove('state-open');\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t};\r\n\r\n\t\tlet isExternalLink = (url) => {\r\n\t\t\tlet linkEl = document.createElement('a');\r\n\t\t\tlinkEl.href = url;\r\n\t\t\t// Compare the hostnames of the current site and the link\r\n\t\t\treturn linkEl.hostname !== window.location.hostname;\r\n\t\t};\r\n\r\n\r\n\t\t// Function to update active state of navigation links based on scroll position\r\n\t\tlet updateActiveNavItem = () => {\r\n\r\n\t\t\tnavLinks.forEach(function(navLink) {\r\n\t\t\t\tnavLink.classList.remove('active');\r\n\t\t\t});\r\n\r\n\t\t\t// Find the first section that is in the viewport and add active class to its corresponding navigation link\r\n\t\t\tfor (let i = 0; i < navLinks.length; i++) {\r\n\t\t\t\tlet navLink = navLinks[i];\r\n\t\t\t\tlet sectionId = navLink.getAttribute('href').substring(1);\r\n\t\t\t\tlet section = document.getElementById(sectionId);\r\n\r\n\t\t\t\tif (section && isInViewport(section)) {\r\n\t\t\t\t\tnavLink.classList.add('active');\r\n\t\t\t\t\tbreak; // Stop looping after the first visible section is found\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\t// Event listener for scroll event\r\n\t\tdocument.addEventListener('scroll', function() {\r\n\t\t\tupdateActiveNavItem();\r\n\t\t});\r\n\r\n\t\tnavLinks.forEach((navLink) => {\r\n\t\t\tlet offsetAmount = navLink.getAttribute('data-offset') | 0;\r\n\t\t\tnavLink.addEventListener('click', (e) => {\r\n\t\t\t\tif(!navLink.getAttribute('data-external')) {\r\n\t\t\t\t\tevent.preventDefault();\r\n\r\n\t\t\t\t\t// Get the target section ID from the link's href attribute\r\n\t\t\t\t\tlet targetId = navLink.getAttribute('href').substring(1);\r\n\r\n\t\t\t\t\t// Find the target section on the page\r\n\t\t\t\t\tlet targetSection = document.getElementById(targetId);\r\n\r\n\t\t\t\t\tlet offsetPosition = targetSection.offsetTop - (offsetAmount ? offsetAmount : document.querySelector(\".js-sticky-nav-block\").offsetHeight);\r\n\r\n\t\t\t\t\t// Scroll to the target section with offset smoothly\r\n\t\t\t\t\twindow.scrollTo({\r\n\t\t\t\t\t\ttop: offsetPosition,\r\n\t\t\t\t\t\tbehavior: 'smooth'\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\tnavEl.classList.toggle('state-open');\r\n\t\t\t\t} else {\r\n\t\t\t\t\tlet url = navLink.getAttribute('href')\r\n\t\t\t\t\tif (isExternalLink(url)) {\r\n\t\t\t\t\t\t// Open the link in a new window\r\n\t\t\t\t\t\twindow.open(url, '_blank');\r\n\t\t\t\t\t\t// Prevent the default action of the link\r\n\t\t\t\t\t\tevent.preventDefault();\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t});\r\n\r\n\t// Initial call to update active state on page load\r\n\t\tupdateActiveNavItem();\r\n\t\tsetupMobileNav();\r\n\t\t// Move the menu immediately after the header\r\n\t\tif(stickyNavBlockInstance && mainEl ) {\r\n\t\t\tmainEl.prepend(stickyNavBlockInstance);\r\n\t\t\tstickyNavBlockInstance.classList.add('state-visible');\r\n\t\t}\r\n\r\n\t},\r\n\r\n\tinit: () => {\r\n\t\tstickyNav.setupStickyNav();\r\n\t},\r\n};\r\n\r\ndocument.addEventListener('DOMContentLoaded', () => {\r\n\tstickyNav.init();\r\n});\r\n"],"names":["stickyNav","setupStickyNav","navLinks","document","querySelectorAll","stickyNavBlockInstance","querySelector","mainEl","navEl","isInViewport","elem","bounding","getBoundingClientRect","top","left","bottom","window","innerHeight","documentElement","clientHeight","right","innerWidth","clientWidth","updateActiveNavItem","forEach","navLink","classList","remove","i","length","sectionId","getAttribute","substring","section","getElementById","add","addEventListener","offsetAmount","e","url","linkEl","createElement","href","hostname","location","isExternalLink","open","event","preventDefault","targetId","offsetPosition","offsetTop","offsetHeight","scrollTo","behavior","toggle","setupMobileNav","mobileTrigger","parentElement","body","contains","target","prepend","init"],"sourceRoot":""}