{"version":3,"file":"745.bbd4aa2f799dc96d108e.js","mappings":"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","sources":["webpack://front-end-build-system/./src/views/productclasspage/shared/magnav.js"],"sourcesContent":["class MagNav {\n constructor($content, $headings) {\n if (!$content || !$headings) {\n throw new Error('MagNav requires parameters');\n }\n\n this.options = {\n bar: 'magnet-bar',\n item: 'magnet-item',\n active: 'magnet-item-active',\n top: 'magnet-top',\n fixed: 'magnet-bar-fixed'\n };\n\n this.navItemCount = 0;\n\n this.$content = $content;\n this.$headings = $headings;\n this.$navList = document.createElement('ul');\n this.$top = document.createElement('div');\n this.$top.id = this.options.top;\n this.$backToTopLinks = [];\n\n this.$navList.classList.add(this.options.bar);\n\n this.$headings.forEach($heading => {\n const id = `magnet-${this.navItemCount++}`,\n $navListItem = document.createElement('li'),\n $navLink = document.createElement('a'),\n $backToTopContainer = document.createElement('div'),\n $backToTopLink = document.createElement('a');\n\n $backToTopLink.textContent = 'back to top';\n $backToTopLink.href = `#${this.options.top}`;\n $backToTopContainer.classList.add(this.options.top);\n $backToTopContainer.appendChild($backToTopLink);\n $heading.parentElement.appendChild($backToTopContainer);\n\n this.$backToTopLinks.push($backToTopContainer);\n\n $navLink.href = `#${id}`;\n $navLink.textContent = $heading.textContent;\n $navListItem.classList.add(this.options.item);\n\n $navListItem.appendChild($navLink);\n this.$navList.appendChild($navListItem);\n\n $heading.id = id;\n\n $navLink.addEventListener('click', event => {\n event.preventDefault();\n const $destination = document.getElementById(event.target.getAttribute('href').substring(1));\n\n if ($destination && $destination.scrollIntoView) {\n $destination.scrollIntoView({block: 'start', behavior: 'smooth'});\n }\n\n [...this.$navList.querySelectorAll(`.${this.options.active}`)].forEach($active =>\n $active.classList.remove(this.options.active)\n );\n\n event.target.classList.add(this.options.active);\n });\n });\n\n document.body.insertBefore(this.$top, document.body.firstElementChild);\n this.$content.insertAdjacentElement('beforebegin', this.$navList);\n\n this.top = this.$navList.getBoundingClientRect().top + window.scrollY;\n\n this.handleScroll = () => {\n requestAnimationFrame(() => {\n if (window.scrollY >= this.top) {\n if (!this.$navList.classList.contains(this.options.fixed)) {\n this.$navList.classList.add(this.options.fixed);\n }\n\n return;\n }\n\n if (this.$navList.classList.contains(this.options.fixed)) {\n this.$navList.classList.remove(this.options.fixed);\n }\n });\n };\n\n window.addEventListener('scroll', this.handleScroll);\n }\n\n destroy() {\n this.$headings.forEach($heading => {\n $heading.removeAttribute('id');\n });\n this.$backToTopLinks.forEach($link => $link.parentElement.removeChild($link));\n this.$navList.parentElement.removeChild(this.$navList);\n this.$top.parentElement.removeChild(this.$top);\n window.removeEventListener('scroll', this.handleScroll);\n }\n}\n\nexport default MagNav;\n"],"names":["MagNav","$content","$headings","_this","_classCallCheck","Error","this","options","bar","item","active","top","fixed","navItemCount","$navList","document","createElement","$top","id","$backToTopLinks","classList","add","forEach","$heading","concat","$navListItem","$navLink","$backToTopContainer","$backToTopLink","textContent","href","appendChild","parentElement","push","addEventListener","event","preventDefault","$destination","getElementById","target","getAttribute","substring","scrollIntoView","block","behavior","querySelectorAll","$active","remove","body","insertBefore","firstElementChild","insertAdjacentElement","getBoundingClientRect","window","scrollY","handleScroll","requestAnimationFrame","contains","key","value","removeAttribute","$link","removeChild","removeEventListener"],"sourceRoot":""}