{"version":3,"sources":["navigation/navigation.js"],"names":["navigationWidget","$htmlBody","$","navigation","document","querySelector","navigationAnchors","querySelectorAll","navigationAnchorsArr","anchoredSections","scrolltopButton","loginSubmit","stopPropagation","toggleClass","modal","classList","remove","getElementOffsetTop","element","scrollToTop","el","offsetParent","top","offsetTop","showLoginErr","scrollToTarget","relatedAnchor","event","preventDefault","targetId","target","sectionOffsetBottom","currentLocation","window","location","href","indexOf","closeAllModals","history","replaceState","title","newLocation","animate","scrollTop","fontSwitcher","aosElements","printButton","setTimeout","aosElement","anchor","e","getAttribute","applyNavigationScrollState","pageYOffset","documentElement","add","section","offsetHeight","sectionOffset","find","sectionId","loginErr","modals","forEach","substring"],"mappings":"sJAAA,IAAMA,iBAAmB,SAAnBA,mBACF,IAAMC,EAAYC,EAAE,cACdC,EAAaC,SAASC,cAAc,eACpCC,EAAoBH,EAAWI,iBAAiB,0DAHpDP,KAAAA,OAAAA,mBAAAA,IACIC,EAAcG,SAApBG,iBAAA,wCACMJ,EAAaC,EAASC,cAAc,cACpCC,EAAAA,EAAoBH,cAAWI,2BAC/BC,EAAAA,EAAAA,cAAAA,qBACAC,EAAAA,SAAmBL,iBAASG,sBAC5BG,EAAAA,EAAkBP,cAAA,kBAClBQ,EAAcR,SAAWE,iBAAc,cAmBvCO,EAAF,SAAEA,oBACFX,OAAAA,mBAAAA,IAAUY,QAAAA,SAAAA,GAAAA,OAHdC,EAAAC,UAAAC,OAAA,YAeMC,EAAsB,SAAtBA,oBAAsBC,GAJ5B,IAAMC,IAAAA,EAAAA,EAAcC,EAAMnB,EAA1BmB,EAAAC,cAQQC,GAAOF,EAAGG,UANZC,EAAAA,EAAAA,aAAN,OAAAF,GAyBQG,EAAMC,SAAND,eAAMC,GAA0CC,EAAAC,iBAAA,IAChDC,EADAF,EAAAG,OACWC,aAAsB,QAC7BL,EAAAA,SAAcX,cAAcc,GADhCG,EAEOC,OAAAC,SAAAC,KACHT,EAAAA,EAAwBV,UAAO,EAA/BgB,EAAAI,QAAA,MAAAP,EACHQ,IACJC,QAVDC,gBAAAnC,SAAAoC,MAAAC,GATJX,GAAA7B,EAAAyC,SAAAC,UAAA1B,EAAAa,MAzCiB3B,EAAWE,cAAc,mBAgEhCuB,iBAAN,QA9DEgB,SAAAA,WACAC,OAAAA,mBAAAA,IAAczC,QAASG,SAAAA,GAAAA,OACvBuC,EAAc3C,UAAWE,IAAAA,iBAG3B0C,WAAA,WAAyBd,OACrBe,SADJ,OA0DAJ,EAAMK,iBAAN,QArDI,SAAAhB,eAAAiB,GACHA,EAFDtB,iBALJsB,EAAAtC,kBAaIX,EAAUY,YAAY,cA+CtBT,SAAMyB,iBAAkBsB,SAlCxB,SAAAC,6BACA,IAAIhC,EAAKF,OAATmC,aAAAjD,SAAAkD,gBAAAX,UACArB,EAAUD,GACNC,EAAUC,UAAVgC,IAAA,SACAnC,EAAQC,UAARkC,IAAA,WAEJpD,EAAAY,UAAAC,OAAA,SAPJN,EAAAK,UAAAC,OAAA,aAUMoC,QAAAA,KAAAA,EAA6B,SAAAI,GACzBlC,IAAMW,EAAOoB,EAAwBC,GACjCvB,EAAGyB,EAAAC,aAAAC,EACTvD,EAAWY,IAAXyC,EAAAL,aAAA,MACAzC,EAAgBK,EAAhB4C,KAAA,SAAAV,GAAA,OAAAA,EAAAE,aAAA,UAAAS,IACGtC,GAAAS,EAAA,KAAAT,GAAAoC,EAAA,IACHvD,EAAWY,UAAiBwC,IAAA,UAE/B7B,EAAAX,UAAAC,OAAA,cAkBDL,EAAMmB,iBAAkBzB,QA5CxB,SAAAmB,eAAA,OAAAqC,EAAA9C,UAAAwC,IAAA,WA6CA7C,EAAMsB,iBAAyBE,QA7C/B,SAAAf,cAAA,OAAAlB,EAAI6D,SAAQC,UAAQ,MA8CpBvD,EAAMiC,QAAcT,SAAAA,GAAAA,OAAgBgC,EAAAA,iBAAahC,QAAgBI,MAGjEpC","file":"navigation.js","sourcesContent":["const navigationWidget = () => {\r\n const $htmlBody = $('html, body');\r\n const navigation = document.querySelector('.navigation');\r\n const navigationAnchors = navigation.querySelectorAll('.links-modal a[href^=\"#\"], .website-pages a[href^=\"#\"]');\r\n const navigationAnchorsArr = [...navigationAnchors];\r\n const anchoredSections = document.querySelectorAll('#home, #expertise, #career, #contact');\r\n const scrolltopButton = navigation.querySelector('.scrolltop');\r\n const loginSubmit = navigation.querySelector('.login-modal button.cta');\r\n const loginErr = navigation.querySelector('.login-modal .err');\r\n const modals = document.querySelectorAll('.modal[data-modal]');\r\n const fontSwitcher = navigation.querySelector('.font-switcher');\r\n const aosElements = document.querySelectorAll('[data-aos]');\r\n const printButton = navigation.querySelector('.print-switcher');\r\n\r\n const print = () => {\r\n [...aosElements].forEach(aosElement =>\r\n aosElement.classList.add('aos-animate')\r\n );\r\n\r\n setTimeout(() => {\r\n window.print();\r\n }, 1000);\r\n };\r\n\r\n const switchFontSize = (e) => {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n $htmlBody.toggleClass('big-font');\r\n };\r\n\r\n const closeAllModals = () => {\r\n [...modals].forEach(modal =>\r\n modal.classList.remove('shown'));\r\n };\r\n\r\n const scrollToTop = () => $htmlBody.animate({ scrollTop: 0 });\r\n\r\n const showLoginErr = () => loginErr.classList.add('shown');\r\n\r\n const getElementOffsetTop = element => {\r\n let top = 0;\r\n let el = element;\r\n while (el.offsetParent) {\r\n top += el.offsetTop;\r\n el = el.offsetParent;\r\n }\r\n return top;\r\n };\r\n\r\n const applyNavigationScrollState = () => {\r\n const top = window.pageYOffset || document.documentElement.scrollTop;\r\n if (top > 0) {\r\n navigation.classList.add('fixed');\r\n scrolltopButton.classList.add('shown');\r\n } else {\r\n navigation.classList.remove('fixed');\r\n scrolltopButton.classList.remove('shown');\r\n }\r\n [].forEach.call(anchoredSections, (section) => {\r\n const sectionOffset = getElementOffsetTop(section);\r\n const sectionOffsetBottom = section.offsetHeight + sectionOffset;\r\n const sectionId = '#' + section.getAttribute('id');\r\n const relatedAnchor = navigationAnchorsArr.find(anchor => anchor.getAttribute('href') === sectionId);\r\n if (top <= sectionOffsetBottom - 100 && top >= sectionOffset - 100) {\r\n relatedAnchor.classList.add('active');\r\n } else {\r\n relatedAnchor.classList.remove('active');\r\n }\r\n });\r\n };\r\n\r\n const scrollToTarget = (event) => {\r\n event.preventDefault();\r\n const anchor = event.target;\r\n const targetId = anchor.getAttribute('href');\r\n const target = document.querySelector(targetId);\r\n const currentLocation = window.location.href;\r\n const newLocation = currentLocation.substring(0, currentLocation.indexOf('#')) + targetId;\r\n closeAllModals();\r\n history.replaceState({}, document.title, newLocation);\r\n if (target) $htmlBody.animate({ scrollTop: getElementOffsetTop(target) });\r\n };\r\n\r\n printButton.addEventListener('click', print);\r\n fontSwitcher.addEventListener('click', switchFontSize);\r\n document.addEventListener('scroll', applyNavigationScrollState);\r\n loginSubmit.addEventListener('click', showLoginErr);\r\n scrolltopButton.addEventListener('click', scrollToTop);\r\n navigationAnchorsArr.forEach(anchor => anchor.addEventListener('click', scrollToTarget));\r\n};\r\n\r\nnavigationWidget();\r\n"]}