{"version":3,"file":"./modules/SliderScrollBar.xxxxxxxx.js","mappings":"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","sources":["webpack:///./modules/SliderScrollBar.ts","webpack:///./modules/SliderPagination.ts","webpack:///../../../node_modules/rxjs/_esm5/internal/operators/pluck.js","webpack:///./modules/ScrollBar.ts"],"sourcesContent":["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}","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","/** 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}"],"names":["moduleSelector","SliderScrollBar","setup","selector","Array","from","document","querySelectorAll","filter","node","dataset","moduleInitialized","forEach","element","constructor","options","this","Object","assign","getDefaultOptions","scrollBarNode","querySelector","scrollBarSelector","sliderNode","sliderNodeSelector","init","window","NiveaX","deviceType","isMobile","initSlider","initScrollBar","currentState","slider","scrollBar","onResize","scrollBarOptions","sliderOptions","reinit","destroy","rebuild","addToEventStore","bind","fadeSide","sbListSelector","direction","dir","SliderPagination","requestAnimationFrame","setTimeout","super","hasChildren","initSliderPagination","convertAnchorToSpan","children","length","anchor","span","innerHTML","className","setAttribute","getAttribute","classList","add","parentNode","replaceChild","addEventListener","location","replace","initLiquid","initInfitity","sliderInfo","resetPaginatorItem","width","navItems","pipe","navItm","liquidElm","subscribe","style","transition","opacity","remove","drawPaginationItem","currentNav","isRight","controller","firstElementChild","left","right","TINY_WIDTH","onDrag","events","on","onIndexChanged","dragMove$","passive","dragEnd$","mouseMove$","clientX","touchMove$","changedTouches","moveEvents$","startX","of","currentX","toRightEdge","body","offsetWidth","shift","maxShift","Math","max","percantage","min","activeNav","n","lastTargetIdx","index","indexCached","slideBy","slideCount","slidesAmount","ceil","slideIdx","slideCacheIdx","idx","cacheIdx","nextNavItem","e","display","toRight","abs","tnsInfo","TINY_PAGES","navContainer","navContainerParent","parentElement","wrapper","adjustInfinytePagination","closest","autoplay","setFocusActiveTeaser","activeSlides","first","focus","cloneCount","navItemsToShow","navItemsVisible","navItemsList","navItemsLength","indexBySlide","leftPosition","rightPosition","isCenter","directionCorrection","transform","pluck","properties","_i","arguments","Error","source","props","mapper","x","currentProp","i","p","plucker","ScrollBar","list","psb","onPageLoaded","initFadeSide","FadeSide","fadeWidth","updateScrollBar","adjustScrollBarListWidth","update","getScrollBarListWidth","benefitItem","sbListItem","benefitItemsLength","clearScrollBarListWidth","initScrollBarAfterPageLoaded","readyState","suppressScrollY","useBothWheelAxes","swipeEasing","leftMaskWidth","rightMaskWidth","getFadeWidth","adjustFadeElements","fdLeftWidth","fdRightWidth","scrollWidth","scrollLeft","scrollRight","clientWidth","undefined","leftWidth","rightWidth","setFadeWith"],"sourceRoot":""}