{"version":3,"file":"./modules/SliderScrollBar.xxxxxxxx.js","mappings":"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","sources":["webpack:///../../../node_modules/rxjs/_esm5/internal/operators/pluck.js","webpack:///./modules/ScrollBar.ts","webpack:///./modules/SliderPagination.ts","webpack:///./modules/SliderScrollBar.ts"],"sourcesContent":["/** PURE_IMPORTS_START _map PURE_IMPORTS_END */\nimport { map } from './map';\nexport function pluck() {\n var properties = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n properties[_i] = arguments[_i];\n }\n var length = properties.length;\n if (length === 0) {\n throw new Error('list of properties cannot be empty.');\n }\n return function (source) { return map(plucker(properties, length))(source); };\n}\nfunction plucker(props, length) {\n var mapper = function (x) {\n var currentProp = x;\n for (var i = 0; i < length; i++) {\n var p = currentProp[props[i]];\n if (typeof p !== 'undefined') {\n currentProp = p;\n }\n else {\n return undefined;\n }\n }\n return currentProp;\n };\n return mapper;\n}\n//# sourceMappingURL=pluck.js.map\n","import PerfectScrollbar from 'perfect-scrollbar';\r\nimport { getOptions } from '../helpers/helperFunctions';\r\n\r\nconst moduleSelector = '[data-module=\"ScrollBar\"]';\r\n\r\nexport default class ScrollBar {\r\n psb: PerfectScrollbar;\r\n list: HTMLElement;\r\n fadeSide: FadeSide;\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 ScrollBar(element);\r\n element.dataset.moduleInitialized = 'true';\r\n });\r\n }\r\n\r\n constructor(public element: HTMLElement, private options: PSBOptions = {}) {\r\n this.options = getOptions(this.element, Object.assign(this.getDefaultOptions(), this.options));\r\n this.list = this.element.querySelector(`.${this.options.sbListSelector}`);\r\n\r\n this.init();\r\n }\r\n\r\n private init(): ScrollBar {\r\n this.psb = new PerfectScrollbar(this.element, this.options);\r\n this.onPageLoaded()\r\n .onResize();\r\n\r\n return this;\r\n }\r\n\r\n private initFadeSide(): ScrollBar {\r\n this.fadeSide = new FadeSide(this.element, this.options.fadeWidth);\r\n return this;\r\n }\r\n\r\n public updateScrollBar(): ScrollBar {\r\n // REVISIT\r\n if (!!this.element.closest('.nx-advantages')) {\r\n this.adjustScrollBarListWidth();\r\n }\r\n\r\n this.psb && this.psb.update();\r\n return this;\r\n }\r\n\r\n private getScrollBarListWidth(): number {\r\n const benefitItem = this.list.querySelector(`.${this.options.sbListItem}`);\r\n const benefitItemsLength = this.list.querySelectorAll(`.${this.options.sbListItem}`).length;\r\n\r\n return Math.ceil((benefitItemsLength * benefitItem.offsetWidth) + 1);\r\n }\r\n\r\n private adjustScrollBarListWidth(): ScrollBar {\r\n this.clearScrollBarListWidth();\r\n this.list.style.width = this.getScrollBarListWidth() + 'px';\r\n return this;\r\n }\r\n\r\n private clearScrollBarListWidth(): ScrollBar {\r\n this.list.style.width = '';\r\n return this;\r\n }\r\n\r\n private initScrollBarAfterPageLoaded(): ScrollBar {\r\n this.updateScrollBar();\r\n\r\n if (this.options.fadeSide) {\r\n this.initFadeSide();\r\n }\r\n\r\n return this;\r\n }\r\n\r\n private onResize(): ScrollBar {\r\n NiveaX.addToEventStore('resize', this.updateScrollBar.bind(this), window);\r\n return this;\r\n }\r\n\r\n private onPageLoaded(): ScrollBar {\r\n if (document.readyState === 'complete') {\r\n this.initScrollBarAfterPageLoaded();\r\n } else {\r\n NiveaX.addToEventStore('load', this.initScrollBarAfterPageLoaded.bind(this), window);\r\n }\r\n\r\n return this;\r\n }\r\n\r\n private getDefaultOptions(): PSBOptions {\r\n return {\r\n fadeSide: true,\r\n suppressScrollY: true,\r\n sbListSelector: 'nx-benefits__list',\r\n fadeWidth: null,\r\n sbListItem: 'nx-benefit',\r\n useBothWheelAxes: true,\r\n swipeEasing: true\r\n }\r\n }\r\n\r\n destroy(): ScrollBar {\r\n this.psb?.destroy();\r\n this.psb = null;\r\n // this.clearScrollBarListWidth();\r\n return this;\r\n }\r\n\r\n rebuild(): ScrollBar {\r\n this.psb = new PerfectScrollbar(this.element, this.options);\r\n this.updateScrollBar();\r\n return this;\r\n }\r\n}\r\n\r\nclass FadeSide {\r\n private fadeWidth: number;\r\n leftMaskWidth: number = 0;\r\n rightMaskWidth: number = 0;\r\n\r\n constructor(public element: HTMLElement, fadeWidth?: number) {\r\n this.fadeWidth = fadeWidth || this.getFadeWidth();\r\n this.leftMaskWidth = this.fadeWidth;\r\n this.rightMaskWidth = this.fadeWidth;\r\n\r\n this.init();\r\n }\r\n\r\n private init(): void {\r\n this.adjustFadeElements();\r\n this.element.addEventListener('ps-scroll-x', () => {\r\n this.adjustFadeElements()\r\n });\r\n }\r\n\r\n public adjustFadeElements(): void {\r\n let scrollWidth = this.element.scrollWidth,\r\n scrollLeft = Math.abs(this.element.scrollLeft),\r\n scrollRight = Math.abs(scrollWidth - (scrollLeft + this.element.clientWidth)),\r\n fdLeftWidth, fdRightWidth;\r\n\r\n if (scrollLeft <= this.fadeWidth) {\r\n fdLeftWidth = (scrollLeft / this.fadeWidth) * (this.fadeWidth);\r\n }\r\n\r\n if (scrollRight <= this.fadeWidth) {\r\n fdRightWidth = (scrollRight / this.fadeWidth) * (this.fadeWidth);\r\n }\r\n\r\n if(fdLeftWidth == undefined && fdRightWidth == undefined) {\r\n fdLeftWidth = this.fadeWidth;\r\n fdRightWidth = this.fadeWidth;\r\n }\r\n\r\n let leftWidth = (document.dir == 'ltr') ? fdLeftWidth : fdRightWidth;\r\n let rightWidth = (document.dir == 'ltr') ? fdRightWidth : fdLeftWidth;\r\n\r\n this.leftMaskWidth = leftWidth != undefined ? leftWidth : this.leftMaskWidth;\r\n this.rightMaskWidth = rightWidth != undefined ? rightWidth : this.rightMaskWidth;\r\n\r\n this.element.setAttribute('style', `-webkit-mask-image: linear-gradient(to right, transparent 0px, black ${this.leftMaskWidth}px), linear-gradient(to left, transparent 0px, black ${this.rightMaskWidth}px);\r\n mask-image: linear-gradient(to right, transparent 0px, black ${this.leftMaskWidth}px), linear-gradient(to left, transparent 0px, black ${this.rightMaskWidth}px);`)\r\n\r\n }\r\n\r\n public setFadeWith(fadeWidth: number) {\r\n this.fadeWidth = fadeWidth;\r\n }\r\n\r\n private getFadeWidth(): number {\r\n return this.element.querySelector('.nx-benefit')?.clientWidth;\r\n }\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 ScrollBar.setup(moduleSelector);\r\n\r\n module.hot.accept(() => {\r\n ScrollBar.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 ScrollBar.setup(moduleSelector);\r\n}","import {\r\n fromEvent,\r\n from,\r\n of,\r\n merge,\r\n combineLatest,\r\n} from 'rxjs';\r\n\r\nimport {\r\n switchMap,\r\n pluck,\r\n takeUntil,\r\n map,\r\n filter,\r\n} from 'rxjs/operators';\r\n\r\nimport Slider from './Slider';\r\nimport {\r\n createDiv,\r\n addToElement,\r\n addClassToList,\r\n removeClassFromList,\r\n hasClass,\r\n createSpan,\r\n} from '../helpers/DOMHelpers';\r\n\r\nconst moduleSelector = '[data-module=\"SliderPagination\"]';\r\nconst direction: string = document.dir;\r\n\r\nexport default class SliderPagination extends Slider {\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 window.requestAnimationFrame(() => {\r\n setTimeout((function(){\r\n if(!element.dataset.moduleInitialized) {\r\n new SliderPagination(element);\r\n element.dataset.moduleInitialized = 'true';\r\n }\r\n }));\r\n });\r\n });\r\n }\r\n\r\n constructor(element: HTMLElement, options?: TinySliderSettings) {\r\n super(element, options);\r\n\r\n if (this.hasChildren()) {\r\n this.initSliderPagination();\r\n this.convertAnchorToSpan();\r\n \r\n }\r\n }\r\n\r\n protected hasChildren(): boolean {\r\n return this.element.children.length > 0;\r\n }\r\n\r\n private convertAnchorToSpan(): SliderPagination {\r\n const anchor = this.element.querySelectorAll(\".nx-how-to__description a\");\r\n anchor.forEach(anchor => {\r\n const span = createSpan(\"\");\r\n span.innerHTML = anchor.innerHTML;\r\n span.className = anchor.className;\r\n span.setAttribute(\"data-url\", anchor.getAttribute(\"href\"))\r\n span.classList.add('nx-how-to__description-link');\r\n anchor.parentNode.replaceChild(span, anchor);\r\n span.addEventListener(\"click\", () => window.location.replace(span.getAttribute(\"data-url\")))\r\n })\r\n return this;\r\n }\r\n\r\n\r\n private initSliderPagination() {\r\n this.initLiquid(20)\r\n .initInfitity(this.sliderInfo, 5);\r\n\r\n return this;\r\n }\r\n\r\n private resetPaginatorItem(width: number): SliderPagination {\r\n from(this.sliderInfo.navItems).pipe(\r\n map((navItm: HTMLElement) => navItm.querySelector('.tns-nav__liquid')),\r\n filter((liquidElm: HTMLElement) => liquidElm != null)\r\n ).subscribe(liquidElm => {\r\n requestAnimationFrame(() => {\r\n liquidElm.style.transition = 'all 0.5s';\r\n liquidElm.style.opacity = '0';\r\n liquidElm.style.width = (width + 'px');\r\n\r\n setTimeout(() => { liquidElm.remove(); }, 500);\r\n });\r\n });\r\n\r\n // Simple version with CSS\r\n // setTimeout(() => currentNav.className = '', 500);\r\n\r\n return this;\r\n\r\n }\r\n\r\n private drawPaginationItem(currentNav, isRight: boolean, width: number): SliderPagination {\r\n\r\n if (currentNav?.children.length == 0) {\r\n addToElement(currentNav, createDiv('tns-nav__liquid'));\r\n }\r\n\r\n let controller = currentNav?.firstElementChild;\r\n\r\n controller && requestAnimationFrame(() => {\r\n if (direction === 'rtl') {\r\n controller.style.left = isRight ? 'auto' : '0';\r\n controller.style.right = isRight ? '0' : 'auto';\r\n } else {\r\n controller.style.left = isRight ? '0' : 'auto';\r\n controller.style.right = isRight ? 'auto' : '0';\r\n }\r\n controller.style.width = (width + 'px');\r\n });\r\n\r\n // Simple version with CSS\r\n // addClasses(currentNav, 'tns-nav-worm', isRight ? 'tns-nav-worm--to-right' : 'tns-nav-worm--to-left');\r\n\r\n return this;\r\n\r\n }\r\n\r\n private initLiquid(TINY_WIDTH: number): SliderPagination {\r\n\r\n this.onDrag(TINY_WIDTH);\r\n this.slider.events.on('indexChanged', this.onIndexChanged(TINY_WIDTH));\r\n\r\n return this;\r\n }\r\n\r\n private onDrag(TINY_WIDTH: number): SliderPagination {\r\n const dragMove$ = fromEvent(this.slider.events, 'dragMove', { passive: true }).pipe(pluck('0', 'event', 'clientX')),\r\n dragEnd$ = fromEvent(this.slider.events, 'dragEnd', { passive: true }),\r\n\r\n mouseMove$ = fromEvent(document, 'mousemove').pipe(map(({ clientX }: MouseEvent) => clientX)),\r\n touchMove$ = fromEvent(document, 'touchmove', { passive: true }).pipe(map(({ changedTouches: { 0: { clientX } } }: TouchEvent) => clientX)),\r\n\r\n moveEvents$ = merge(mouseMove$, touchMove$).pipe(takeUntil(dragEnd$));\r\n\r\n\r\n dragMove$.pipe(\r\n switchMap((startX: number) => combineLatest(of(startX), moveEvents$)),\r\n ).subscribe(([startX, currentX]) => {\r\n const bodyWidth = document.body.offsetWidth,\r\n toRightEdge = bodyWidth - startX,\r\n isRight = currentX > startX,\r\n shift = isRight ? currentX - startX : startX - currentX,\r\n isDistanceToEdgeLess60px = isRight && toRightEdge < 60 || !isRight && startX < 60;\r\n\r\n if (isDistanceToEdgeLess60px) return;\r\n\r\n const maxShift = Math.max((isRight ? toRightEdge : startX) / 2, 60),\r\n percantage = Math.min(shift / maxShift, 1);\r\n\r\n this.drawPaginationItem(this.activeNav, !isRight, TINY_WIDTH * percantage);\r\n });\r\n\r\n dragEnd$.subscribe(() => this.resetPaginatorItem(TINY_WIDTH));\r\n\r\n return this;\r\n }\r\n\r\n private get activeNav(): HTMLElement {\r\n let navActive = Array.from(this.sliderInfo.navItems).filter(n => hasClass(n, 'tns-nav-active'));\r\n return navActive[0];\r\n }\r\n\r\n private onIndexChanged(TINY_WIDTH: number): (sliderInfo: TinySliderInfo) => void {\r\n let lastTargetIdx;\r\n\r\n return (): void => {\r\n let { index, indexCached, navItems, slideBy, slideCount } = this.sliderInfo,\r\n slidesAmount = Math.ceil(slideCount / slideBy),\r\n slideIdx = Math.ceil(index / slideBy),\r\n slideCacheIdx = Math.ceil(indexCached / slideBy),\r\n\r\n idx = slideIdx >= slidesAmount ? slideIdx - slidesAmount : slideIdx,\r\n cacheIdx = slideCacheIdx >= slidesAmount ? 0 : slideCacheIdx,\r\n visibleNavItems = Array.from(navItems).filter((e: HTMLButtonElement) => !e.style.display),\r\n nextNavItem = visibleNavItems[cacheIdx],\r\n toRight = idx > cacheIdx,\r\n\r\n slideMoreOneItem = Math.abs(idx - cacheIdx) > 1,\r\n isSameSlide = lastTargetIdx === idx,\r\n isNextIdxNegative = idx < 0;\r\n\r\n if (slideMoreOneItem || isSameSlide || isNextIdxNegative) return;\r\n\r\n this.drawPaginationItem(nextNavItem, toRight, 0)\r\n .resetPaginatorItem(TINY_WIDTH);\r\n\r\n lastTargetIdx = idx;\r\n }\r\n }\r\n\r\n private initInfitity(tnsInfo: TinySliderInfo, TINY_PAGES): SliderPagination { \r\n const navContainer = tnsInfo.navContainer;\r\n const navContainerParent = navContainer?.parentElement, // || tnsInfo.navContainerParent,\r\n wrapper = createDiv('tns-nav__wrapper');\r\n \r\n addToElement(navContainerParent, addToElement(wrapper, navContainer));\r\n\r\n this.slider.events.on('indexChanged', (tnsInfo: TinySliderInfo) => {\r\n this.adjustInfinytePagination(tnsInfo, TINY_PAGES);\r\n\r\n if (this.element.closest('.nx-stage') || this.options.autoplay)\r\n return;\r\n \r\n this.setFocusActiveTeaser(this.activeSlides, tnsInfo.index);\r\n });\r\n\r\n this.adjustInfinytePagination(tnsInfo, TINY_PAGES);\r\n\r\n return this;\r\n }\r\n\r\n setFocusActiveTeaser(activeSlides, index) {\r\n const first = activeSlides[0];\r\n\r\n if (first && first.querySelector('a')) {\r\n first.setAttribute(\"tabindex\", 0);\r\n first.querySelector('a').focus();\r\n }\r\n }\r\n\r\n private adjustInfinytePagination(\r\n {\r\n navContainer,\r\n navItems,\r\n index,\r\n slideBy,\r\n cloneCount = 0\r\n }: TinySliderInfo,\r\n navItemsToShow: number) {\r\n\r\n const navItemsVisible = Array.from(navItems).filter((e: any) => e.style.display !== 'none'),\r\n navItemsList = Array.from(navItemsVisible),\r\n navItemsLength = navItemsVisible.length,\r\n indexBySlide = Math.ceil((index - cloneCount) / slideBy),\r\n leftPosition = Math.ceil(navItemsToShow / 2),\r\n rightPosition = navItemsLength - leftPosition,\r\n\r\n isLeft = indexBySlide < leftPosition,\r\n isCenter = indexBySlide >= leftPosition && indexBySlide < rightPosition,\r\n isRight = indexBySlide >= rightPosition;\r\n let directionCorrection = '-'\r\n\r\n if (navItemsLength <= navItemsToShow) return;\r\n\r\n if (direction == 'rtl') { directionCorrection = '' }\r\n\r\n if (isLeft) {\r\n removeClassFromList(navItemsList, 'tns-nav-small');\r\n addClassToList([navItemsList[navItemsToShow - 1]], 'tns-nav-small');\r\n navContainer.style.transform = `translateX(${directionCorrection}${0}px)`;\r\n }\r\n\r\n if (isCenter) {\r\n removeClassFromList(navItemsList, 'tns-nav-small');\r\n addClassToList([navItemsList[indexBySlide - leftPosition + 1], navItemsList[indexBySlide + leftPosition - 1]], 'tns-nav-small');\r\n navContainer.style.transform = `translateX(${directionCorrection}${(indexBySlide - (leftPosition - 1)) * 15}px)`;\r\n }\r\n\r\n if (isRight) {\r\n removeClassFromList(navItemsList, 'tns-nav-small');\r\n addClassToList([navItemsList[navItemsLength - navItemsToShow]], 'tns-nav-small');\r\n navContainer.style.transform = `translateX(${directionCorrection}${(rightPosition - (leftPosition - 1)) * 15}px)`;\r\n }\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.parentNode, nodeOrigin: element.parentNode.cloneNode(true) }));\r\n\r\n SliderPagination.setup(moduleSelector);\r\n\r\n module.hot.accept(() => {\r\n SliderPagination.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 SliderPagination.setup(moduleSelector);\r\n}\r\n\r\n","import ScrollBar from './ScrollBar';\r\nimport SliderPagination from './SliderPagination';\r\nimport { getOptions } from '../helpers/helperFunctions';\r\n\r\nconst moduleSelector = '[data-module=\"SliderScrollBar\"]';\r\n\r\nexport default class SliderScrollBar {\r\n private scrollBarNode: HTMLElement;\r\n private sliderNode: HTMLElement;\r\n private scrollBar: ScrollBar;\r\n private slider: SliderPagination;\r\n private currentState: ScrollBar | SliderPagination;\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 SliderScrollBar(element);\r\n element.dataset.moduleInitialized = 'true';\r\n });\r\n }\r\n\r\n constructor(public element: HTMLElement, private options: SliderScrollBarOptions = {}) {\r\n this.options = getOptions(this.element, Object.assign(this.getDefaultOptions(), this.options));\r\n this.scrollBarNode = this.element.querySelector(`.${this.options.scrollBarSelector}`);\r\n this.sliderNode = this.element.querySelector(`.${this.options.sliderNodeSelector}`);\r\n this.init();\r\n }\r\n\r\n private init(): void {\r\n if (window.NiveaX.deviceType.isMobile) {\r\n this.initSlider();\r\n } else {\r\n this.initScrollBar();\r\n }\r\n\r\n this.currentState = this.slider || this.scrollBar;\r\n this.onResize();\r\n }\r\n\r\n private initScrollBar(): void {\r\n this.scrollBar = new ScrollBar(this.scrollBarNode, this.options.scrollBarOptions);\r\n }\r\n\r\n private initSlider(): void {\r\n this.slider = new SliderPagination(this.sliderNode, this.options.sliderOptions);\r\n }\r\n\r\n private reinit(): void {\r\n if (window.NiveaX.deviceType.isMobile && this.currentState === this.scrollBar) {\r\n this.scrollBar.destroy();\r\n this.slider ? this.slider.rebuild() : this.initSlider();\r\n\r\n this.currentState = this.slider;\r\n return;\r\n }\r\n\r\n if (!window.NiveaX.deviceType.isMobile && this.currentState === this.slider) {\r\n this.slider.destroy();\r\n this.scrollBar ? this.scrollBar.rebuild() : this.initScrollBar();\r\n\r\n this.currentState = this.scrollBar;\r\n return;\r\n }\r\n }\r\n\r\n private onResize(): void {\r\n NiveaX.addToEventStore('resize', this.reinit.bind(this), window);\r\n }\r\n\r\n private getDefaultOptions(): SliderScrollBarOptions {\r\n return {\r\n scrollBarSelector: 'nx-category-content-teasers__scrollbar',\r\n sliderNodeSelector: 'nx-category-content-teasers__list',\r\n scrollBarOptions: {\r\n fadeSide: false,\r\n // fadeWidth: 150,\r\n sbListSelector: 'nx-category-content-teasers__list',\r\n },\r\n };\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 SliderScrollBar.setup(moduleSelector);\r\n\r\n module.hot.accept(() => {\r\n SliderScrollBar.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 SliderScrollBar.setup(moduleSelector);\r\n}"],"names":["pluck","properties","_i","arguments","length","Error","source","props","mapper","x","currentProp","i","p","plucker","moduleSelector","ScrollBar","setup","selector","Array","from","document","querySelectorAll","filter","node","dataset","moduleInitialized","forEach","element","constructor","options","this","Object","assign","getDefaultOptions","list","querySelector","sbListSelector","init","psb","onPageLoaded","onResize","initFadeSide","fadeSide","FadeSide","fadeWidth","updateScrollBar","closest","adjustScrollBarListWidth","update","getScrollBarListWidth","benefitItem","sbListItem","benefitItemsLength","Math","ceil","offsetWidth","clearScrollBarListWidth","style","width","initScrollBarAfterPageLoaded","NiveaX","addToEventStore","bind","window","readyState","suppressScrollY","useBothWheelAxes","swipeEasing","destroy","rebuild","leftMaskWidth","rightMaskWidth","getFadeWidth","adjustFadeElements","addEventListener","fdLeftWidth","fdRightWidth","scrollWidth","scrollLeft","abs","scrollRight","clientWidth","undefined","leftWidth","dir","rightWidth","setAttribute","setFadeWith","direction","SliderPagination","requestAnimationFrame","setTimeout","super","hasChildren","initSliderPagination","convertAnchorToSpan","children","anchor","span","innerHTML","className","getAttribute","classList","add","parentNode","replaceChild","location","replace","initLiquid","initInfitity","sliderInfo","resetPaginatorItem","navItems","pipe","navItm","liquidElm","subscribe","transition","opacity","remove","drawPaginationItem","currentNav","isRight","controller","firstElementChild","left","right","TINY_WIDTH","onDrag","slider","events","on","onIndexChanged","dragMove$","passive","dragEnd$","mouseMove$","clientX","touchMove$","changedTouches","moveEvents$","startX","of","currentX","toRightEdge","body","shift","maxShift","max","percantage","min","activeNav","n","lastTargetIdx","index","indexCached","slideBy","slideCount","slidesAmount","slideIdx","slideCacheIdx","idx","cacheIdx","nextNavItem","e","display","toRight","tnsInfo","TINY_PAGES","navContainer","navContainerParent","parentElement","wrapper","adjustInfinytePagination","autoplay","setFocusActiveTeaser","activeSlides","first","focus","cloneCount","navItemsToShow","navItemsVisible","navItemsList","navItemsLength","indexBySlide","leftPosition","rightPosition","isCenter","directionCorrection","transform","SliderScrollBar","scrollBarNode","scrollBarSelector","sliderNode","sliderNodeSelector","deviceType","isMobile","initSlider","initScrollBar","currentState","scrollBar","scrollBarOptions","sliderOptions","reinit"],"sourceRoot":""}