{"version":3,"file":"scripts/5099.js","mappings":"uHAQA,MAAMA,EAAUC,SAASC,cAAc,uBACjCC,EAAYF,SAASC,cAAc,uBACnCE,EAAYH,SAASI,cAAc,UAapBL,EAAQM,iBAAiB,KACjCC,SAAQ,SAAUC,GAC7B,MAAMC,EAASR,SAASI,cAAc,UACtCI,EAAOC,KAAOF,EAAKG,YACnBF,EAAOG,MAAQJ,EAAKK,KACpBT,EAAUU,IAAIL,EAChB,IAKAN,EAAUY,YAAYX,GAUtB,MAAMY,EAAcf,SAASC,cAAc,iCACrCe,EAAehB,SAASC,cAAc,+BAGlBD,SAASK,iBAAiB,2BAClCC,SAAQC,IACtB,MAAMK,EAAOL,EAAKU,aAAa,QACzBC,EAAM,IAAIC,IAAIP,EAAMQ,OAAOC,SAAST,MACtCM,EAAII,WAAaF,OAAOC,SAASC,UAAYJ,EAAIK,MACjDhB,EAAKiB,aAAa,OAAQN,EAAIK,KAClC,IAIJ,MAAME,EAAkBV,EAAYW,WAAU,GACxCC,EAAgBZ,EAAYW,WAAU,GAG5CD,EAAgBG,UAAUf,IAAI,4BAC9Bc,EAAcC,UAAUf,IAAI,0BAE5BY,EAAgBxB,cAAc,uBAAuB2B,UAAUf,IAAI,uBACnEc,EAAc1B,cAAc,uBAAuB2B,UAAUf,IAAI,qBAEjEY,EAAgBxB,cAAc,uBAAuB2B,UAAUC,OAAO,uBACtEF,EAAc1B,cAAc,uBAAuB2B,UAAUC,OAAO,uBAGpE7B,SAASC,cAAc,eAAea,YAAYW,GAClDzB,SAASC,cAAc,aAAaa,YAAYa,GAGhD,MAAMG,EAAc,CAACf,EAAaU,EAAiBE,GAU5B,IAAII,sBAAqB,SAASC,GACvDA,EAAQ1B,SAAQ,SAAS2B,GAEnBA,EAAMC,mBAAmBC,IAAO,IAAMF,EAAMG,eAE9CN,EAAYxB,SAAQ+B,GAAOA,EAAIT,UAAUf,IAAI,YACpCoB,EAAMG,gBACfN,EAAYxB,SAAQ+B,GAAOA,EAAIT,UAAUC,OAAO,WAEpD,GACF,GAjB8B,CAC5BS,KAAM,KACNC,WAAY,MACZC,UAAW,IAiBEC,QAAQzB,GAUvB,MAAM0B,EAAgB,IAAI,KAAO,uBAAwB,CACvDC,QAAS,CAAC,KAAW,KAAY,KAAU,MAC3CC,cAAe,OACfC,aAAc,EACdC,MAAM,EACNC,aAAc,EACdC,MAAM,EACNC,gBAAgB,EAChBC,WAAY,CACVC,OAAQnD,SAASC,cAAc,4CAC/BmD,OAAQpD,SAASC,cAAc,4CAC/BoD,cAAe,sBAEjBC,WAAY,CAEZ,IAKIC,EAAe,IAAI,KAAO,uBAAwB,CACtDZ,QAAS,CAAC,KAAW,KAAY,KAAU,MAC3CC,cAAe,OACfC,aAAc,EACdC,MAAM,EACNC,aAAc,EACdE,gBAAgB,EAChBC,WAAY,CACVC,OAAQnD,SAASC,cAAc,4CAC/BmD,OAAQpD,SAASC,cAAc,4CAC/BoD,cAAe,sBAEjBC,WAAY,CACZ,IAIIE,EAAa,IAAI,KAAO,qBAAsB,CAClDb,QAAS,CAAC,KAAW,KAAY,KAAU,MAC3CC,cAAe,OACfC,aAAc,EACdE,aAAc,EACdD,MAAM,EACNG,gBAAgB,EAChBC,WAAY,CACVC,OAAQnD,SAASC,cAAc,0CAC/BmD,OAAQpD,SAASC,cAAc,0CAC/BoD,cAAe,sBAEjBC,WAAY,CACZ,IAWIG,EAAa,GAGbC,EAAW1D,SAASK,iBAAiB,yBA4D3C,SAASsD,IAEP,GAAIC,KAAKjD,MAAO,CACd,MAAMO,EAAM,IAAIC,IAAIyC,KAAKjD,MAAOS,OAAOC,SAAST,MAGhD,GAAIM,EAAI2C,SAAWzC,OAAOC,SAASwC,QAAU3C,EAAII,WAAaF,OAAOC,SAASC,UAAYJ,EAAIK,KAAM,CAClG,MAAMuC,EAAgB9D,SAASC,cAAciB,EAAIK,MAC/C,GAAIuC,EAAe,CACjB,MACMC,EADkBD,EAAcE,wBAAwB7B,IAAMf,OAAO6C,YAClC,IAEzC7C,OAAO8C,SAAS,CACd/B,IAAK4B,EACLI,SAAU,UAEd,CACJ,MAEE/C,OAAOC,SAAST,KAAOgD,KAAKjD,KAEhC,CACF,CA9DA+C,EAASpD,SAAQC,IACf,MAAMK,EAAOL,EAAKU,aAAa,SAAW,GACpCmD,EAAS7D,EAAKU,aAAa,UAE3BoD,EAAYzD,EAAK0D,WAAW,KAAO1D,EAAK2D,MAAM,GAAK,KACrDF,IAAcZ,EAAWe,SAASH,IACpCZ,EAAWgB,KAAKJ,GAGlB9D,EAAKmE,iBAAiB,SAAS,SAAUC,GAEvC,GAAe,WAAXP,EAKJ,GAjCJ,SAA6BxD,GAC3B,IACE,MAAMgE,EAAa,IAAIzD,IAAIC,OAAOC,SAAST,MACrCiE,EAAU,IAAI1D,IAAIP,EAAMQ,OAAOC,SAAST,MAG9C,OACEiE,EAAQC,OAASF,EAAWE,MAC5BD,EAAQvD,WAAasD,EAAWtD,UAChCuD,EAAQtD,KAAKwD,OAAS,CAE1B,CAAE,MAAOC,GACP,OAAOpE,EAAK0D,WAAW,IACzB,CACF,CAmBQW,CAAoBrE,GAAO,CAC7B+D,EAAMO,iBAEN,MAAM3D,EAAOX,EAAK4D,SAAS,KAAO,IAAM5D,EAAKuE,MAAM,KAAKC,MAAQxE,EAC1DkD,EAAgB9D,SAASC,cAAcsB,GAE7C,GAAIuC,EAAe,CACjB,MACMC,EADkBD,EAAcE,wBAAwB7B,IAAMf,OAAO6C,YAClC,IAEzC7C,OAAO8C,SAAS,CACd/B,IAAK4B,EACLI,SAAU,UAEd,CACF,MACE/C,OAAOC,SAAST,KAAOA,CAE3B,GAAE,IA8BJ,MAAMyE,EAAoBrF,SAASK,iBAAiB,8BAOpD,IAAIiF,EAAmB,GACnBC,EAAqB,GAIzBnE,OAAOoE,eAAc,KACOxF,SAASK,iBAAiB,8BAElCC,SAAQmF,IACxB,MAAMC,EAAkB,IAAItE,OAAOuE,QAAQF,EAAQ,CACjDG,eAAe,EACfC,eAAgB,GAChBC,WAAW,EACXC,YAAY,EACZC,uBAAuB,IAIzBV,EAAiBb,KAAKiB,GACtBD,EAAOf,iBAAiB,SAAUf,EAAmB,IAIvDsC,EAAiBvD,EAAea,EAAcC,EAAY8B,GAG1DlE,OAAO8E,wBAAuB,KACDlG,SAASK,iBAAiB,4BAClCC,SAAQ,CAAC6F,EAAmBC,KAC7C,MAAMC,EAAK,IAAIC,iBAAiBH,EAAmB,CACjDI,WAAY,EACZC,kBAAkB,EAClBC,iBAAiB,IAGnBlB,EAAmBd,KAAK4B,GAGxB,MAAMK,EAAiBpB,EAAiBc,GAAGO,cAAcC,QACzDF,EAAehC,iBAAiB,gBAAgB,KAG9CmC,uBAAsB,KACpBR,EAAGS,QAAQ,GACX,IAIJJ,EAAehC,iBAAiB,gBAAgB,QAE9C,GACF,GAEF,IASJ,MAAMqC,EAAWtD,EAAWuD,KAAIC,GAAMjH,SAASkH,eAAeD,KAAKE,OAAOC,SAG1E,SAASnB,EAAiBvD,EAAea,EAAcC,EAAY8B,GAGjE,IAAKyB,IAAaA,EAAShC,OAAQ,OAGnC,IAAIsC,EAAiB,KACjBC,EAAcC,IAGlB,MAAMC,EAAcT,EAASA,EAAShC,OAAS,GAG/C,IAAKyC,EAAa,OAElB,MAAMC,EAA0BD,EAAYE,UAAatG,OAAOuG,YAAc,EAiB9E,GAfAZ,EAASzG,SAAQsH,IACf,MAAMC,EAAOD,EAAQ5D,wBACf8D,GAAmBD,EAAK1F,IAAM0F,EAAKE,QAAU,EAE7CC,EAAWC,KAAKC,IAAIJ,EAAmB1G,OAAOuG,YAAc,GAC9DK,EAAWV,IACbA,EAAcU,EACdX,EAAiBO,EACnB,IAGExG,OAAO+G,SAAWV,IACpBJ,EAAiBG,GAGfH,EAAgB,CAClB,MAAMhD,EAAYgD,EAAeJ,GAGjCvD,EAASpD,SAAQC,GAAQA,EAAKqB,UAAUC,OAAO,0BAC/C6B,EAASpD,SAAQC,GAAQA,EAAK6H,cAAcxG,UAAUC,OAAO,2BAG7D6B,EAASpD,SAAQC,IACf,MAAMK,EAAOL,EAAKU,aAAa,QACzBoH,EAAgBzH,EAAK0D,WAAW,KAAO1D,EAAK2D,MAAM,GAAK,KAC7D,IAAI+D,EAAYvB,EAASwB,QAAQlB,GAE7BgB,IAAkBhE,IAEpB9D,EAAKqB,UAAUf,IAAI,wBACnBN,EAAK6H,cAAcxG,UAAUf,IAAI,yBAI7B6B,GAAiBa,GAAgBC,IACnCd,EAAc8F,QAAQF,GACtB9E,EAAWgF,QAAQF,GACnB/E,EAAaiF,QAAQF,IAIvBjD,EAAkB/E,SAAQmF,IACxB,MAAMjF,EAASiF,EAAOxF,cAAc,kBAAkBoI,OAClD7H,IACFiF,EAAOgD,oBAAoB,SAAU9E,GACrC8B,EAAOiD,cAAgBlI,EAAOmI,MAC9BlD,EAAOf,iBAAiB,SAAUf,GACpC,IAIF2B,EAAiBhF,SAAQsI,IACvB,MAAMC,EAAgBzH,OAAOC,SAASwC,OAASzC,OAAOC,SAASC,SAAW,IAAI+C,IAE9E,IACEuE,EAASE,iBAAiBD,EAC5B,CAAE,MAAO7D,GACP+D,QAAQ/D,MAAM,oBAAqBA,EACrC,KAGJ,GAEJ,CACF,CASA,IAAIgE,GAAU,EAed5H,OAAOsD,iBAAiB,UAdxB,WACOsE,IACH5H,OAAOyF,uBAAsB,KAC3BZ,EAAiBvD,EAAea,EAAcC,EAAY8B,GAC1D0D,GAAU,CAAK,IAEjBA,GAAU,EAEd,GAMgD,CAAEC,SAAS,IAC3D7H,OAAOsD,iBAAiB,aALxB,WACEuB,EAAiBvD,EAAea,EAAcC,EAAY8B,EAC5D,GAGsD,CAAE2D,SAAS,IAIjEhD,EAAiBvD,EAAea,EAAcC,EAAY8B,E","sources":["webpack://wwwroot/./src/scripts/stickyMenu.js"],"sourcesContent":["/* global PerfectScrollbar */\r\n\r\nimport Swiper, { Controller, Navigation, Keyboard, A11y } from 'swiper';\r\n\r\n/**\r\n * Setting up \r\n- Removing for now - as it stands will never appear as the select will update to closest section\r\n\r\n const selectDefaultOption = document.createElement('option');\r\n selectDefaultOption.text = 'Navigate to...';\r\n selectDefaultOption.value = '';\r\n navSelect.add(selectDefaultOption);\r\n*/\r\n\r\n// Generate other options \r\nconst navMenuLinks = navMenu.querySelectorAll('a');\r\nnavMenuLinks.forEach(function (link) {\r\n const option = document.createElement('option');\r\n option.text = link.textContent;\r\n option.value = link.href;\r\n navSelect.add(option);\r\n});\r\n\r\n// navSelect has some event listeners set below after cloned\r\n\r\n// Append select to mobile-nav div\r\nmobileNav.appendChild(navSelect);\r\n\r\n/**\r\n * STICKY NAVIGATION\r\n * \r\n * Note: The original nav is cloned 2 times for positioning in the sticky header\r\n * that appears on scroll up (header) as well as a seperate instance that appears\r\n * on scroll down (main)\r\n */\r\n\r\nconst originalNav = document.querySelector('.adm-c69-sticky-nav-container');\r\nconst navContainer = document.querySelector('.adm-section-c69-stickymenu');\r\n\r\n// Adjusting fully qualified same page \"#\" URLs to relative links\r\nconst shortenedNavLinks = document.querySelectorAll('.adm-c69-swiper-slide a');\r\nshortenedNavLinks.forEach(link => {\r\n const href = link.getAttribute('href');\r\n const url = new URL(href, window.location.href);\r\n if (url.pathname === window.location.pathname && url.hash) {\r\n link.setAttribute('href', url.hash);\r\n }\r\n});\r\n\r\n// Clone the original navigation twice\r\nconst clonedNavHeader = originalNav.cloneNode(true);\r\nconst clonedNavMain = originalNav.cloneNode(true);\r\n\r\n// Add distinguishing classes to the clones\r\nclonedNavHeader.classList.add('sticky-clone-header-wrap');\r\nclonedNavMain.classList.add('sticky-clone-main-wrap');\r\n\r\nclonedNavHeader.querySelector('.adm-c69-sticky-nav').classList.add('sticky-clone-header');\r\nclonedNavMain.querySelector('.adm-c69-sticky-nav').classList.add('sticky-clone-main');\r\n\r\nclonedNavHeader.querySelector('.adm-c69-sticky-nav').classList.remove('swiper-interior-nav');\r\nclonedNavMain.querySelector('.adm-c69-sticky-nav').classList.remove('swiper-interior-nav');\r\n\r\n// Append the cloned navigations to their respective containers\r\ndocument.querySelector('#adm-header').appendChild(clonedNavHeader);\r\ndocument.querySelector('#adm-main').appendChild(clonedNavMain);\r\n\r\n// Setting Up The \"Sticky\" Effect Via Class Toggle\r\nconst navElements = [originalNav, clonedNavHeader, clonedNavMain];\r\n\r\n// Intersection Observer options\r\nconst stickyObserverOptions = {\r\n root: null, // Use the viewport as the container\r\n rootMargin: '0px',\r\n threshold: 0\r\n};\r\n\r\n// Intersection Observer\r\nconst stickyObserver = new IntersectionObserver(function(entries) {\r\n entries.forEach(function(entry) {\r\n\r\n if (entry.boundingClientRect.top < 0 && !entry.isIntersecting) {\r\n // The navContainer has scrolled out of view (scrolling past it)\r\n navElements.forEach(nav => nav.classList.add('sticky'));\r\n } else if (entry.isIntersecting) {\r\n navElements.forEach(nav => nav.classList.remove('sticky'));\r\n }\r\n });\r\n}, stickyObserverOptions);\r\n\r\n// Observe the navContainer\r\nstickyObserver.observe(navContainer);\r\n\r\n\r\n/**\r\n* CAROUSEL BEHAVIOR\r\n* \r\n* Sets up swiper carousels on all three navs\r\n*/\r\n\r\n// Initialize the primary Swiper\r\nconst primarySwiper = new Swiper('.swiper-interior-nav', {\r\n modules: [Controller,Navigation, Keyboard, A11y],\r\n slidesPerView: 'auto', \r\n spaceBetween: 0, \r\n loop: false,\r\n initialSlide: 0,\r\n a11y: true,\r\n allowTouchMove: false,\r\n navigation: {\r\n nextEl: document.querySelector(\".swiper-interior-nav .swiper-button-next\"),\r\n prevEl: document.querySelector(\".swiper-interior-nav .swiper-button-prev\"),\r\n disabledClass: \"adm-arrow-disabled\"\r\n },\r\n controller: {\r\n \r\n },\r\n});\r\n\r\n\r\n// Initialize the secondary Swipers\r\nconst headerSwiper = new Swiper('.sticky-clone-header', {\r\n modules: [Controller,Navigation, Keyboard, A11y],\r\n slidesPerView: 'auto', \r\n spaceBetween: 0, \r\n loop: false,\r\n initialSlide: 0,\r\n allowTouchMove: false,\r\n navigation: {\r\n nextEl: document.querySelector(\".sticky-clone-header .swiper-button-next\"),\r\n prevEl: document.querySelector(\".sticky-clone-header .swiper-button-prev\"),\r\n disabledClass: \"adm-arrow-disabled\"\r\n },\r\n controller: {\r\n }\r\n});\r\n\r\n\r\nconst mainSwiper = new Swiper('.sticky-clone-main', {\r\n modules: [Controller,Navigation, Keyboard, A11y],\r\n slidesPerView: 'auto', \r\n spaceBetween: 0, \r\n initialSlide: 0,\r\n loop: false,\r\n allowTouchMove: false,\r\n navigation: {\r\n nextEl: document.querySelector(\".sticky-clone-main .swiper-button-next\"),\r\n prevEl: document.querySelector(\".sticky-clone-main .swiper-button-prev\"),\r\n disabledClass: \"adm-arrow-disabled\"\r\n },\r\n controller: {\r\n }\r\n});\r\n\r\n// Link secondary swipers back to primary swiper to ensure two-way control\r\n// primarySwiper.controller.control = [headerSwiper, mainSwiper];\r\n\r\n\r\n/**\r\n * Adding active link styles and smooth scrolling\r\n */\r\n// Collect unique section IDs from the href attributes\r\nconst sectionIds = [];\r\n\r\n// Select all navigation links\r\nconst navLinks = document.querySelectorAll('.adm-c69-sticky-nav a');\r\n\r\n// check if a given URL is on the current page\r\nfunction isCurrentPageAnchor(href) {\r\n try {\r\n const currentUrl = new URL(window.location.href);\r\n const linkUrl = new URL(href, window.location.href);\r\n \r\n // Conditions for being on the same page:\r\n return (\r\n linkUrl.host === currentUrl.host &&\r\n linkUrl.pathname === currentUrl.pathname &&\r\n linkUrl.hash.length > 0\r\n );\r\n } catch (error) {\r\n return href.startsWith('#');\r\n }\r\n}\r\n\r\n// Add event listeners for smooth scroll if it is a current page anchor\r\nnavLinks.forEach(link => {\r\n const href = link.getAttribute('href') || '';\r\n const target = link.getAttribute('target'); \r\n\r\n const sectionId = href.startsWith('#') ? href.slice(1) : null;\r\n if (sectionId && !sectionIds.includes(sectionId)) {\r\n sectionIds.push(sectionId);\r\n }\r\n\r\n link.addEventListener('click', function (event) {\r\n // Check if link has target=\"_blank\"\r\n if (target === '_blank') {\r\n // This ensures the link opens in a new tab as intended, no preventDefault\r\n return;\r\n }\r\n\r\n if (isCurrentPageAnchor(href)) {\r\n event.preventDefault();\r\n\r\n const hash = href.includes('#') ? '#' + href.split('#').pop() : href;\r\n const targetElement = document.querySelector(hash);\r\n\r\n if (targetElement) {\r\n const elementPosition = targetElement.getBoundingClientRect().top + window.pageYOffset;\r\n const offsetPosition = elementPosition - 340; // header height & offset\r\n\r\n window.scrollTo({\r\n top: offsetPosition,\r\n behavior: 'smooth'\r\n });\r\n }\r\n } else {\r\n window.location.href = href;\r\n }\r\n });\r\n});\r\n\r\n\r\n\r\n// Function to handle element\r\n navigationSelects.forEach(select => { \r\n const option = select.querySelector(`option[value*=\"${linkSectionId}\"]`);\r\n if (option) {\r\n select.removeEventListener('change', handleSelectChange); \r\n select.selectedIndex = option.index;\r\n select.addEventListener('change', handleSelectChange); \r\n }\r\n });\r\n\r\n // Update Choices.js instances\r\n choicesInstances.forEach(instance => {\r\n const valueToSelect = window.location.origin + window.location.pathname + `#${sectionId}`; // Full URL format\r\n //console.log('Updating Choices.js instance with:', valueToSelect);\r\n try {\r\n instance.setChoiceByValue(valueToSelect);\r\n } catch (error) {\r\n console.error('Choices.js Error:', error);\r\n }\r\n });\r\n\r\n }\r\n });\r\n }\r\n}\r\n\r\n/* \r\n * Throttle the scroll event handler for performance\r\n *\r\n * NOTES: \r\n * - rAF is treated differently on some mobile browsers (Chrome specifically, not iOS Safari) need to use touchmove\r\n * */\r\n\r\nlet ticking = false;\r\nfunction handleScroll() {\r\n if (!ticking) {\r\n window.requestAnimationFrame(() => {\r\n updateActiveLink(primarySwiper, headerSwiper, mainSwiper, choicesInstances);\r\n ticking = false;\r\n });\r\n ticking = true;\r\n }\r\n}\r\n\r\nfunction handleTouchMove() {\r\n updateActiveLink(primarySwiper, headerSwiper, mainSwiper, choicesInstances);\r\n}\r\n\r\nwindow.addEventListener('scroll', handleScroll, { passive: true });\r\nwindow.addEventListener('touchmove', handleTouchMove, { passive: true });\r\n\r\n\r\n// Begin\r\nupdateActiveLink(primarySwiper, headerSwiper, mainSwiper, choicesInstances);"],"names":["navMenu","document","querySelector","mobileNav","navSelect","createElement","querySelectorAll","forEach","link","option","text","textContent","value","href","add","appendChild","originalNav","navContainer","getAttribute","url","URL","window","location","pathname","hash","setAttribute","clonedNavHeader","cloneNode","clonedNavMain","classList","remove","navElements","IntersectionObserver","entries","entry","boundingClientRect","top","isIntersecting","nav","root","rootMargin","threshold","observe","primarySwiper","modules","slidesPerView","spaceBetween","loop","initialSlide","a11y","allowTouchMove","navigation","nextEl","prevEl","disabledClass","controller","headerSwiper","mainSwiper","sectionIds","navLinks","handleSelectChange","this","origin","targetElement","offsetPosition","getBoundingClientRect","pageYOffset","scrollTo","behavior","target","sectionId","startsWith","slice","includes","push","addEventListener","event","currentUrl","linkUrl","host","length","error","isCurrentPageAnchor","preventDefault","split","pop","navigationSelects","choicesInstances","scrollbarInstances","loadChoicesJS","select","choicesInstance","Choices","searchEnabled","itemSelectText","allowHTML","shouldSort","duplicateItemsAllowed","updateActiveLink","loadPerfectScrollbarJS","dropdownContainer","i","ps","PerfectScrollbar","wheelSpeed","wheelPropagation","suppressScrollX","originalSelect","passedElement","element","requestAnimationFrame","update","sections","map","id","getElementById","filter","Boolean","closestSection","minDistance","Infinity","lastSection","lastSectionTriggerPoint","offsetTop","innerHeight","section","rect","sectionMidpoint","bottom","distance","Math","abs","scrollY","parentElement","linkSectionId","linkIndex","indexOf","slideTo","removeEventListener","selectedIndex","index","instance","valueToSelect","setChoiceByValue","console","ticking","passive"],"sourceRoot":""}