{"version":3,"file":"./modules/AnchorNavigation.xxxxxxxx.js","mappings":"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","sources":["webpack:///../../../node_modules/smoothscroll-polyfill/dist/smoothscroll.js","webpack:///./modules/AnchorNavigation.ts","webpack:///./modules/ScrollDirection.ts"],"sourcesContent":["/* smoothscroll v0.4.4 - 2019 - Dustan Kasten, Jeremias Menichelli - MIT License */\n(function () {\n 'use strict';\n\n // polyfill\n function polyfill() {\n // aliases\n var w = window;\n var d = document;\n\n // return if scroll behavior is supported and polyfill is not forced\n if (\n 'scrollBehavior' in d.documentElement.style &&\n w.__forceSmoothScrollPolyfill__ !== true\n ) {\n return;\n }\n\n // globals\n var Element = w.HTMLElement || w.Element;\n var SCROLL_TIME = 468;\n\n // object gathering original scroll methods\n var original = {\n scroll: w.scroll || w.scrollTo,\n scrollBy: w.scrollBy,\n elementScroll: Element.prototype.scroll || scrollElement,\n scrollIntoView: Element.prototype.scrollIntoView\n };\n\n // define timing method\n var now =\n w.performance && w.performance.now\n ? w.performance.now.bind(w.performance)\n : Date.now;\n\n /**\n * indicates if a the current browser is made by Microsoft\n * @method isMicrosoftBrowser\n * @param {String} userAgent\n * @returns {Boolean}\n */\n function isMicrosoftBrowser(userAgent) {\n var userAgentPatterns = ['MSIE ', 'Trident/', 'Edge/'];\n\n return new RegExp(userAgentPatterns.join('|')).test(userAgent);\n }\n\n /*\n * IE has rounding bug rounding down clientHeight and clientWidth and\n * rounding up scrollHeight and scrollWidth causing false positives\n * on hasScrollableSpace\n */\n var ROUNDING_TOLERANCE = isMicrosoftBrowser(w.navigator.userAgent) ? 1 : 0;\n\n /**\n * changes scroll position inside an element\n * @method scrollElement\n * @param {Number} x\n * @param {Number} y\n * @returns {undefined}\n */\n function scrollElement(x, y) {\n this.scrollLeft = x;\n this.scrollTop = y;\n }\n\n /**\n * returns result of applying ease math function to a number\n * @method ease\n * @param {Number} k\n * @returns {Number}\n */\n function ease(k) {\n return 0.5 * (1 - Math.cos(Math.PI * k));\n }\n\n /**\n * indicates if a smooth behavior should be applied\n * @method shouldBailOut\n * @param {Number|Object} firstArg\n * @returns {Boolean}\n */\n function shouldBailOut(firstArg) {\n if (\n firstArg === null ||\n typeof firstArg !== 'object' ||\n firstArg.behavior === undefined ||\n firstArg.behavior === 'auto' ||\n firstArg.behavior === 'instant'\n ) {\n // first argument is not an object/null\n // or behavior is auto, instant or undefined\n return true;\n }\n\n if (typeof firstArg === 'object' && firstArg.behavior === 'smooth') {\n // first argument is an object and behavior is smooth\n return false;\n }\n\n // throw error when behavior is not supported\n throw new TypeError(\n 'behavior member of ScrollOptions ' +\n firstArg.behavior +\n ' is not a valid value for enumeration ScrollBehavior.'\n );\n }\n\n /**\n * indicates if an element has scrollable space in the provided axis\n * @method hasScrollableSpace\n * @param {Node} el\n * @param {String} axis\n * @returns {Boolean}\n */\n function hasScrollableSpace(el, axis) {\n if (axis === 'Y') {\n return el.clientHeight + ROUNDING_TOLERANCE < el.scrollHeight;\n }\n\n if (axis === 'X') {\n return el.clientWidth + ROUNDING_TOLERANCE < el.scrollWidth;\n }\n }\n\n /**\n * indicates if an element has a scrollable overflow property in the axis\n * @method canOverflow\n * @param {Node} el\n * @param {String} axis\n * @returns {Boolean}\n */\n function canOverflow(el, axis) {\n var overflowValue = w.getComputedStyle(el, null)['overflow' + axis];\n\n return overflowValue === 'auto' || overflowValue === 'scroll';\n }\n\n /**\n * indicates if an element can be scrolled in either axis\n * @method isScrollable\n * @param {Node} el\n * @param {String} axis\n * @returns {Boolean}\n */\n function isScrollable(el) {\n var isScrollableY = hasScrollableSpace(el, 'Y') && canOverflow(el, 'Y');\n var isScrollableX = hasScrollableSpace(el, 'X') && canOverflow(el, 'X');\n\n return isScrollableY || isScrollableX;\n }\n\n /**\n * finds scrollable parent of an element\n * @method findScrollableParent\n * @param {Node} el\n * @returns {Node} el\n */\n function findScrollableParent(el) {\n while (el !== d.body && isScrollable(el) === false) {\n el = el.parentNode || el.host;\n }\n\n return el;\n }\n\n /**\n * self invoked function that, given a context, steps through scrolling\n * @method step\n * @param {Object} context\n * @returns {undefined}\n */\n function step(context) {\n var time = now();\n var value;\n var currentX;\n var currentY;\n var elapsed = (time - context.startTime) / SCROLL_TIME;\n\n // avoid elapsed times higher than one\n elapsed = elapsed > 1 ? 1 : elapsed;\n\n // apply easing to elapsed time\n value = ease(elapsed);\n\n currentX = context.startX + (context.x - context.startX) * value;\n currentY = context.startY + (context.y - context.startY) * value;\n\n context.method.call(context.scrollable, currentX, currentY);\n\n // scroll more if we have not reached our destination\n if (currentX !== context.x || currentY !== context.y) {\n w.requestAnimationFrame(step.bind(w, context));\n }\n }\n\n /**\n * scrolls window or element with a smooth behavior\n * @method smoothScroll\n * @param {Object|Node} el\n * @param {Number} x\n * @param {Number} y\n * @returns {undefined}\n */\n function smoothScroll(el, x, y) {\n var scrollable;\n var startX;\n var startY;\n var method;\n var startTime = now();\n\n // define scroll context\n if (el === d.body) {\n scrollable = w;\n startX = w.scrollX || w.pageXOffset;\n startY = w.scrollY || w.pageYOffset;\n method = original.scroll;\n } else {\n scrollable = el;\n startX = el.scrollLeft;\n startY = el.scrollTop;\n method = scrollElement;\n }\n\n // scroll looping over a frame\n step({\n scrollable: scrollable,\n method: method,\n startTime: startTime,\n startX: startX,\n startY: startY,\n x: x,\n y: y\n });\n }\n\n // ORIGINAL METHODS OVERRIDES\n // w.scroll and w.scrollTo\n w.scroll = w.scrollTo = function() {\n // avoid action when no arguments are passed\n if (arguments[0] === undefined) {\n return;\n }\n\n // avoid smooth behavior if not required\n if (shouldBailOut(arguments[0]) === true) {\n original.scroll.call(\n w,\n arguments[0].left !== undefined\n ? arguments[0].left\n : typeof arguments[0] !== 'object'\n ? arguments[0]\n : w.scrollX || w.pageXOffset,\n // use top prop, second argument if present or fallback to scrollY\n arguments[0].top !== undefined\n ? arguments[0].top\n : arguments[1] !== undefined\n ? arguments[1]\n : w.scrollY || w.pageYOffset\n );\n\n return;\n }\n\n // LET THE SMOOTHNESS BEGIN!\n smoothScroll.call(\n w,\n d.body,\n arguments[0].left !== undefined\n ? ~~arguments[0].left\n : w.scrollX || w.pageXOffset,\n arguments[0].top !== undefined\n ? ~~arguments[0].top\n : w.scrollY || w.pageYOffset\n );\n };\n\n // w.scrollBy\n w.scrollBy = function() {\n // avoid action when no arguments are passed\n if (arguments[0] === undefined) {\n return;\n }\n\n // avoid smooth behavior if not required\n if (shouldBailOut(arguments[0])) {\n original.scrollBy.call(\n w,\n arguments[0].left !== undefined\n ? arguments[0].left\n : typeof arguments[0] !== 'object' ? arguments[0] : 0,\n arguments[0].top !== undefined\n ? arguments[0].top\n : arguments[1] !== undefined ? arguments[1] : 0\n );\n\n return;\n }\n\n // LET THE SMOOTHNESS BEGIN!\n smoothScroll.call(\n w,\n d.body,\n ~~arguments[0].left + (w.scrollX || w.pageXOffset),\n ~~arguments[0].top + (w.scrollY || w.pageYOffset)\n );\n };\n\n // Element.prototype.scroll and Element.prototype.scrollTo\n Element.prototype.scroll = Element.prototype.scrollTo = function() {\n // avoid action when no arguments are passed\n if (arguments[0] === undefined) {\n return;\n }\n\n // avoid smooth behavior if not required\n if (shouldBailOut(arguments[0]) === true) {\n // if one number is passed, throw error to match Firefox implementation\n if (typeof arguments[0] === 'number' && arguments[1] === undefined) {\n throw new SyntaxError('Value could not be converted');\n }\n\n original.elementScroll.call(\n this,\n // use left prop, first number argument or fallback to scrollLeft\n arguments[0].left !== undefined\n ? ~~arguments[0].left\n : typeof arguments[0] !== 'object' ? ~~arguments[0] : this.scrollLeft,\n // use top prop, second argument or fallback to scrollTop\n arguments[0].top !== undefined\n ? ~~arguments[0].top\n : arguments[1] !== undefined ? ~~arguments[1] : this.scrollTop\n );\n\n return;\n }\n\n var left = arguments[0].left;\n var top = arguments[0].top;\n\n // LET THE SMOOTHNESS BEGIN!\n smoothScroll.call(\n this,\n this,\n typeof left === 'undefined' ? this.scrollLeft : ~~left,\n typeof top === 'undefined' ? this.scrollTop : ~~top\n );\n };\n\n // Element.prototype.scrollBy\n Element.prototype.scrollBy = function() {\n // avoid action when no arguments are passed\n if (arguments[0] === undefined) {\n return;\n }\n\n // avoid smooth behavior if not required\n if (shouldBailOut(arguments[0]) === true) {\n original.elementScroll.call(\n this,\n arguments[0].left !== undefined\n ? ~~arguments[0].left + this.scrollLeft\n : ~~arguments[0] + this.scrollLeft,\n arguments[0].top !== undefined\n ? ~~arguments[0].top + this.scrollTop\n : ~~arguments[1] + this.scrollTop\n );\n\n return;\n }\n\n this.scroll({\n left: ~~arguments[0].left + this.scrollLeft,\n top: ~~arguments[0].top + this.scrollTop,\n behavior: arguments[0].behavior\n });\n };\n\n // Element.prototype.scrollIntoView\n Element.prototype.scrollIntoView = function() {\n // avoid smooth behavior if not required\n if (shouldBailOut(arguments[0]) === true) {\n original.scrollIntoView.call(\n this,\n arguments[0] === undefined ? true : arguments[0]\n );\n\n return;\n }\n\n // LET THE SMOOTHNESS BEGIN!\n var scrollableParent = findScrollableParent(this);\n var parentRects = scrollableParent.getBoundingClientRect();\n var clientRects = this.getBoundingClientRect();\n\n if (scrollableParent !== d.body) {\n // reveal element inside parent\n smoothScroll.call(\n this,\n scrollableParent,\n scrollableParent.scrollLeft + clientRects.left - parentRects.left,\n scrollableParent.scrollTop + clientRects.top - parentRects.top\n );\n\n // reveal parent in viewport unless is fixed\n if (w.getComputedStyle(scrollableParent).position !== 'fixed') {\n w.scrollBy({\n left: parentRects.left,\n top: parentRects.top,\n behavior: 'smooth'\n });\n }\n } else {\n // reveal element in viewport\n w.scrollBy({\n left: clientRects.left,\n top: clientRects.top,\n behavior: 'smooth'\n });\n }\n };\n }\n\n if (typeof exports === 'object' && typeof module !== 'undefined') {\n // commonjs\n module.exports = { polyfill: polyfill };\n } else {\n // global\n polyfill();\n }\n\n}());\n","/// \r\n\r\nimport { fromEvent, Observable } from 'rxjs';\r\nimport { takeUntil, filter, startWith, first } from 'rxjs/operators';\r\nimport { removeClassFromList, getElementHeight } from '../helpers/DOMHelpers';\r\nimport { getLastItemInArray, horizontalScrolling, isIOS, isSelectorValid } from '../helpers/helperFunctions';\r\nimport ScrollDirection from './ScrollDirection';\r\nimport smoothscroll from 'smoothscroll-polyfill';\r\n\r\nconst moduleSelector = '[data-module=\"AnchorNavigation\"]';\r\n\r\nexport default class AnchorNavigation {\r\n private scrollDirection: ScrollDirection;\r\n private navLinks: HTMLElement[];\r\n private sections: HTMLElement[] = Array.from(document.querySelectorAll('div:not(.nx-tabs__item) > [data-anchor-text]'));\r\n private scrollBody$: Observable;\r\n private clickNav$: Observable;\r\n private clickBody$: Observable;\r\n private windowLoad$: Observable;\r\n private windowPopstate$: Observable;\r\n private scrollInterval;\r\n\r\n static setup(selector: string = moduleSelector): void {\r\n Array.from(document.querySelectorAll(selector)).filter((node: HTMLElement) => !node.dataset.moduleInitialized).forEach((element: HTMLElement) => {\r\n new AnchorNavigation(element);\r\n element.dataset.moduleInitialized = 'true';\r\n });\r\n }\r\n\r\n constructor(public element: HTMLElement) {\r\n this.scrollDirection = new ScrollDirection(element);\r\n this.scrollBody$ = fromEvent(window, 'scroll');\r\n this.clickBody$ = fromEvent(document, 'click');\r\n this.windowLoad$ = fromEvent(window, 'load');\r\n this.windowPopstate$ = fromEvent(window, 'popstate');\r\n\r\n this.init();\r\n }\r\n\r\n private init(): AnchorNavigation {\r\n this.buildNavigation(this.sections);\r\n horizontalScrolling(this.element.querySelector('.nx-scroll-wrapper__inner'));\r\n\r\n this.subscribeToScrollOnBody();\r\n if(!this.scrollToAnchorSectionOnLoad()) this.windowLoad$.pipe().subscribe(() => this.scrollToAnchorSectionOnLoad());\r\n this.clickNav$.subscribe(({ target }: Event) => this.scrollToActiveSection(target));\r\n this.windowPopstate$.pipe().subscribe(() => this.scrollToAnchorSectionOnLoad());\r\n this.clickBody$.subscribe((e) => this.onDefaultAnchorClick(e));\r\n if(this.isMainNavigationBurgerType()) this.element.querySelector('.nx-anchor-navigation')?.classList.add('nx-anchor-navigation--navigation-type-burger');\r\n\r\n return this;\r\n }\r\n\r\n private isMainNavigationBurgerType(): boolean {\r\n return document.body.querySelector('header.nx-mob-burger-nav--activated') !== null;\r\n }\r\n\r\n private buildNavigation(sections: HTMLElement[]): AnchorNavigation {\r\n const container = this.element.querySelector('.nx-scroll-wrapper__inner'),\r\n markUp = sections.map((s, counter) => {\r\n const anchorId = s.getAttribute('data-anchor-id'),\r\n innerText = s.getAttribute('data-anchor-text');\r\n if (!innerText || !anchorId) return;\r\n s.setAttribute('data-anchor-content', '')\r\n return `${innerText}`;\r\n }).join('');\r\n\r\n container.innerHTML = markUp;\r\n\r\n this.initAnchorLinks();\r\n\r\n this.clickNav$ = fromEvent(container, 'click').pipe(\r\n filter(({ target }: Event) => (target).tagName === 'A'),\r\n );\r\n\r\n return this;\r\n }\r\n\r\n private subscribeToScrollOnBody(): AnchorNavigation {\r\n this.scrollBody$.pipe(\r\n startWith(null),\r\n takeUntil(this.clickNav$),\r\n ).subscribe(() => this.setStickyNavigation());\r\n return this;\r\n }\r\n\r\n private initAnchorLinks() {\r\n this.navLinks = Array.from(this.element.querySelectorAll('.nx-anchor-link'));\r\n this.triggerClickOnEnterForNavLinks();\r\n }\r\n\r\n private triggerClickOnEnterForNavLinks() {\r\n this.navLinks.forEach(link => {\r\n link.addEventListener(\"keypress\", (e) => {\r\n if (e.key === \"Enter\") {\r\n link.click();\r\n }\r\n });\r\n });\r\n }\r\n\r\n private getAnchorSections() {\r\n return Array.from(document.querySelectorAll('[data-anchor-content]'));\r\n }\r\n\r\n private onDefaultAnchorClick(e) {\r\n const target = (e.target).tagName === 'A' ? e.target : (e.target).closest('a');\r\n const targetID = (target) ? (target).getAttribute('href') : false;\r\n\r\n if (targetID && isSelectorValid(targetID)) {\r\n e.preventDefault();\r\n this.scrollToActiveSection(target as HTMLAnchorElement);\r\n }\r\n }\r\n\r\n private isOnTopViewport(element: HTMLElement, top: number = 0): boolean {\r\n const elementRect = element.getBoundingClientRect(),\r\n offsetHeight = document.documentElement.offsetHeight;\r\n return Math.floor(elementRect.top) <= top &&\r\n Math.floor(elementRect.top) < offsetHeight &&\r\n Math.floor(elementRect.bottom) > top;\r\n }\r\n\r\n private getActiveSection(): HTMLElement {\r\n const arr = Array.from(this.navLinks).filter(link => {\r\n let { href: sectionId } = link.dataset;\r\n let section = document.getElementById(sectionId);\r\n\r\n return this.isOnTopViewport(section, this.getCorrectionOnScroll());\r\n });\r\n\r\n return arr[0];\r\n }\r\n\r\n private setActiveSection(): HTMLElement {\r\n const activeSection = this.getActiveSection();\r\n removeClassFromList(this.navLinks, 'nx-active');\r\n\r\n if (activeSection) {\r\n this.scrollToHorizontal(this.element.querySelector('.nx-scroll-wrapper__inner'), activeSection);\r\n activeSection.classList.add('nx-active');\r\n }\r\n\r\n return activeSection;\r\n }\r\n\r\n private getCorrectionOnScroll() {\r\n const anchorNavHeight = getElementHeight(this.element);\r\n return this.scrollDirection.scrollingFlag ? anchorNavHeight + this.getBreadcrumbHeight() : getElementHeight(this.element);\r\n }\r\n\r\n private getBreadcrumbHeight(): number {\r\n let breadcrumb = document.querySelector('.nx-breadcrumb');\r\n return breadcrumb ? getElementHeight(breadcrumb) : 0;\r\n }\r\n\r\n private scrollToActiveSection(targetLink: HTMLElement): AnchorNavigation {\r\n const clickedSection = document.getElementById(targetLink.dataset.href) || document.querySelector(targetLink.getAttribute('href'));\r\n if (Math.round(clickedSection.getBoundingClientRect().top) !== this.getCorrectionOnScroll()) {\r\n fromEvent(clickedSection, 'niveax:animationend').pipe(first()).subscribe(() => this.subscribeToScrollOnBody());\r\n } else {\r\n this.subscribeToScrollOnBody();\r\n }\r\n\r\n const tabItem = clickedSection.closest('.nx-tab-container-item')\r\n\r\n if (tabItem) {\r\n clickedSection.closest('.nx-tabs-container').dispatchEvent(new CustomEvent('niveax:openTab', {\r\n detail: {\r\n tabNode: tabItem\r\n }\r\n }));\r\n }\r\n\r\n this.scrollToSection(clickedSection);\r\n this.correctJumpPosition(clickedSection);\r\n\r\n this.subscribeToScrollOnBody();\r\n\r\n this.scrollToHorizontal(this.element.querySelector('.nx-scroll-wrapper__inner'), targetLink);\r\n this.setKeyboardFocusToActiveSection(clickedSection);\r\n\r\n return this;\r\n }\r\n\r\n private setKeyboardFocusToActiveSection(activeSection: HTMLElement) {\r\n activeSection.setAttribute('tabindex', '-1');\r\n activeSection.focus();\r\n }\r\n\r\n private scrollToSection(section: HTMLElement) {\r\n const sectionPositionTop = section.getBoundingClientRect().top;\r\n const anchorNavHeight = (this.element.querySelector('.nx-anchor-navigation')).clientHeight;\r\n window.scrollBy({\r\n top: sectionPositionTop - anchorNavHeight,\r\n left: 0,\r\n behavior: \"smooth\"\r\n });\r\n }\r\n\r\n private isStickyNavigation(): boolean {\r\n const firstScrollElementTop = this.element.getBoundingClientRect().top;\r\n const lastScrollElement = getLastItemInArray(this.getAnchorSections());\r\n const lastElementBottom = lastScrollElement.getBoundingClientRect().bottom;\r\n return firstScrollElementTop <= this.getBreadcrumbHeight() && lastElementBottom > 0;\r\n }\r\n\r\n private setStickyNavigation(): AnchorNavigation {\r\n if (this.isStickyNavigation()) {\r\n this.element.querySelector('.nx-anchor-navigation').classList.add('nx-anchor-navigation--sticky');\r\n this.setActiveSection();\r\n } else {\r\n this.element.querySelector('.nx-anchor-navigation').classList.remove('nx-anchor-navigation--sticky');\r\n removeClassFromList(this.navLinks, 'nx-active');\r\n }\r\n return this;\r\n }\r\n\r\n scrollToHorizontal(parentElement: HTMLElement, element: HTMLElement) {\r\n if(isIOS()) {\r\n \r\n smoothscroll.polyfill();\r\n }\r\n\r\n parentElement.scrollBy({\r\n top: 0,\r\n left: element.offsetLeft - 20,\r\n behavior: 'smooth'\r\n });\r\n }\r\n\r\n private scrollToAnchorSectionOnLoad(): boolean {\r\n const hash: string = window.location.hash.substring(1),\r\n section: HTMLElement = document.getElementById(`${hash}`);\r\n\r\n if (hash && hash.indexOf('layer') === -1 && !!section) {\r\n this.scrollToSection(section);\r\n this.correctJumpPosition(section)\r\n\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n }\r\n\r\n private correctJumpPosition(section) {\r\n var scrollTo = (section) => {\r\n this.scrollToSection(section);\r\n clearInterval(this.scrollInterval);\r\n }\r\n\r\n clearInterval(this.scrollInterval);\r\n this.scrollInterval = setInterval(() => scrollTo(section), 1500);\r\n }\r\n}\r\n\r\n// Hot Module Replacement\r\nif (module.hot) {\r\n let nodesCache: HMRNodes[] = Array.from(document.querySelectorAll(moduleSelector)).map((element: Node) => ({ nodeToReplace: element, nodeOrigin: element.cloneNode(true) }));\r\n\r\n AnchorNavigation.setup(moduleSelector);\r\n\r\n module.hot.accept(() => {\r\n AnchorNavigation.setup(moduleSelector);\r\n });\r\n module.hot.dispose(() => {\r\n nodesCache.forEach(({ nodeToReplace, nodeOrigin }) => { nodeToReplace = nodeToReplace.parentElement.replaceChild(nodeOrigin.cloneNode(true), nodeToReplace) });\r\n });\r\n} else {\r\n AnchorNavigation.setup(moduleSelector);\r\n}","/// \r\n\r\nexport default class ScrollDirection {\r\n element: HTMLElement;\r\n scrollingUpClass: string;\r\n scrollingDownClass: string;\r\n scrollingFlag: boolean;\r\n lastPageYOffset: number;\r\n\r\n constructor(element: HTMLElement, scrollingUpClass: string = 'nx-motion-scrolling--up', scrollingDownClass: string = 'nx-motion-scrolling--down') {\r\n this.element = element;\r\n this.scrollingUpClass = scrollingUpClass;\r\n this.scrollingDownClass = scrollingDownClass;\r\n this.scrollingFlag;\r\n this.init();\r\n }\r\n\r\n private init() {\r\n NiveaX.addToEventStore('scroll', (e) => this.scroll(e), window);\r\n }\r\n\r\n scroll(e) {\r\n this.toggleScrollClasses(this.lastPageYOffset);\r\n this.lastPageYOffset = pageYOffset;\r\n }\r\n\r\n private toggleScrollClasses(lastPageYOffset: number) {\r\n if (Math.abs(pageYOffset - lastPageYOffset) < 40) return;\r\n\r\n if (window.scrollY < 0) return;\r\n\r\n if (pageYOffset < lastPageYOffset) {\r\n this.element.classList.add(this.scrollingUpClass);\r\n this.element.classList.remove(this.scrollingDownClass);\r\n this.scrollingFlag = true;\r\n } else if (pageYOffset > lastPageYOffset) {\r\n this.element.classList.add(this.scrollingDownClass);\r\n this.element.classList.remove(this.scrollingUpClass);\r\n this.scrollingFlag = false;\r\n }\r\n\r\n }\r\n}"],"names":["module","exports","polyfill","w","window","d","document","documentElement","style","__forceSmoothScrollPolyfill__","userAgent","Element","HTMLElement","SCROLL_TIME","original","scroll","scrollTo","scrollBy","elementScroll","prototype","scrollElement","scrollIntoView","now","performance","bind","Date","ROUNDING_TOLERANCE","navigator","RegExp","join","test","undefined","arguments","shouldBailOut","smoothScroll","call","body","left","scrollX","pageXOffset","top","scrollY","pageYOffset","this","scrollLeft","scrollTop","SyntaxError","behavior","scrollableParent","el","isScrollable","parentNode","host","findScrollableParent","parentRects","getBoundingClientRect","clientRects","getComputedStyle","position","x","y","firstArg","TypeError","hasScrollableSpace","axis","clientHeight","scrollHeight","clientWidth","scrollWidth","canOverflow","overflowValue","isScrollableY","isScrollableX","step","context","value","currentX","currentY","k","elapsed","startTime","Math","cos","PI","startX","startY","method","scrollable","requestAnimationFrame","moduleSelector","AnchorNavigation","setup","selector","Array","from","querySelectorAll","filter","node","dataset","moduleInitialized","forEach","element","constructor","sections","scrollDirection","scrollBody$","clickBody$","windowLoad$","windowPopstate$","init","buildNavigation","querySelector","subscribeToScrollOnBody","scrollToAnchorSectionOnLoad","pipe","subscribe","clickNav$","target","scrollToActiveSection","e","onDefaultAnchorClick","isMainNavigationBurgerType","classList","add","container","markUp","map","s","counter","anchorId","getAttribute","innerText","setAttribute","innerHTML","initAnchorLinks","tagName","setStickyNavigation","navLinks","triggerClickOnEnterForNavLinks","link","addEventListener","key","click","getAnchorSections","closest","targetID","preventDefault","isOnTopViewport","elementRect","offsetHeight","floor","bottom","getActiveSection","href","sectionId","section","getElementById","getCorrectionOnScroll","setActiveSection","activeSection","scrollToHorizontal","anchorNavHeight","scrollingFlag","getBreadcrumbHeight","breadcrumb","targetLink","clickedSection","round","tabItem","dispatchEvent","CustomEvent","detail","tabNode","scrollToSection","correctJumpPosition","setKeyboardFocusToActiveSection","focus","sectionPositionTop","isStickyNavigation","firstScrollElementTop","lastElementBottom","remove","parentElement","offsetLeft","hash","location","substring","indexOf","clearInterval","scrollInterval","setInterval","ScrollDirection","scrollingUpClass","scrollingDownClass","NiveaX","addToEventStore","toggleScrollClasses","lastPageYOffset","abs"],"sourceRoot":""}