{"version":3,"file":"./modules/EnhancedListScrollGrid.xxxxxxxx.js","mappings":"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","sources":["webpack:///./modules/EnhancedListScrollGrid/EnhancedListScrollGrid.ts","webpack:///./modules/EnhancedListScrollGrid/index.ts","webpack:///./modules/ScrollBar.ts"],"sourcesContent":["import { getOptions } from '../../helpers/helperFunctions';\r\nimport ScrollBar from '../ScrollBar';\r\n\r\nconst moduleSelector = '[data-module=\"EnhancedListScrollGrid\"]';\r\n\r\nexport default class EnhancedListScrollGrid {\r\n private scrollGridElement: Element;\r\n private scrollBar: ScrollBar;\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 EnhancedListScrollGrid(element);\r\n element.dataset.moduleInitialized = 'true';\r\n });\r\n }\r\n\r\n constructor(public element: HTMLElement, private options?: ScrollGridOptions) {\r\n this.getScrollGridOptions()\r\n .getScrollGridElement()\r\n .initScrollBar(this.scrollGridElement as HTMLElement);\r\n this.onResize();\r\n this.adjustImageClassForVideos();\r\n }\r\n\r\n private getScrollGridOptions() {\r\n this.options = getOptions(this.element, Object.assign(this.getDefaultOptions(), this.options));\r\n return this;\r\n }\r\n\r\n private getScrollGridElement() {\r\n this.scrollGridElement = this.element.querySelector(`.${this.options.scrollGridNodeSelector}`);\r\n return this;\r\n }\r\n\r\n private initScrollBar(scrollGridElement: HTMLElement) {\r\n this.scrollBar = new ScrollBar(scrollGridElement, this.options.scrollBarOptions);\r\n this.checkIfIsScrollApplied();\r\n\r\n return this;\r\n }\r\n\r\n private adjustImageClassForVideos(): void {\r\n const grid = this.scrollGridElement as HTMLElement;\r\n const hasVideo = !!grid.querySelector('video');\r\n\r\n if (hasVideo) {\r\n\r\n grid.querySelectorAll('.nx-enhanced-list__scroll-grid-item-image').forEach(el => {\r\n el.classList.remove('nx-enhanced-list__scroll-grid-item-image');\r\n el.classList.add('nx-enhanced-list__item-image');\r\n });\r\n }\r\n }\r\n\r\n private checkIfIsScrollApplied(): void {\r\n const scrollableElement = this.scrollBar.psb.element.querySelector('.nx-scroll--list'),\r\n scrollBarX = this.scrollBar.psb.scrollbarXRail;\r\n\r\n if (this.scrollBar.psb.contentWidth <= this.scrollBar.psb.containerWidth) {\r\n scrollBarX.style.backgroundColor = \"transparent\";\r\n scrollableElement.style.justifyContent = \"center\";\r\n } else {\r\n scrollBarX.style.backgroundColor = \"\";\r\n scrollableElement.style.justifyContent = \"\";\r\n }\r\n }\r\n\r\n private onResize() {\r\n NiveaX.addToEventStore('resize', this.reinit.bind(this), window);\r\n\r\n return this;\r\n }\r\n\r\n private reinit() {\r\n this.reinitScrollBar();\r\n return this;\r\n }\r\n\r\n private reinitScrollBar() {\r\n this.scrollBar?.destroy();\r\n this.initScrollBar(this.scrollGridElement as HTMLElement);\r\n return this;\r\n }\r\n\r\n private getDefaultOptions(): ScrollGridOptions {\r\n return {\r\n scrollGridNodeSelector: 'nx-scroll-container',\r\n scrollBarOptions: {\r\n sbListSelector: 'nx-scroll-container',\r\n sbListItem: 'nx-scroll-container',\r\n fadeSide: false,\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 EnhancedListScrollGrid.setup(moduleSelector);\r\n\r\n module.hot.accept(() => {\r\n EnhancedListScrollGrid.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 EnhancedListScrollGrid.setup(moduleSelector);\r\n}\r\n","import EnhancedListScrollGrid from './EnhancedListScrollGrid';\r\n\r\nexport default EnhancedListScrollGrid;","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","EnhancedListScrollGrid","setup","selector","Array","from","document","querySelectorAll","filter","node","dataset","moduleInitialized","forEach","element","constructor","options","this","getScrollGridOptions","getScrollGridElement","initScrollBar","scrollGridElement","onResize","adjustImageClassForVideos","Object","assign","getDefaultOptions","querySelector","scrollGridNodeSelector","scrollBar","scrollBarOptions","checkIfIsScrollApplied","grid","el","classList","remove","add","scrollableElement","psb","scrollBarX","scrollbarXRail","contentWidth","containerWidth","style","backgroundColor","justifyContent","NiveaX","addToEventStore","reinit","bind","window","reinitScrollBar","destroy","sbListSelector","sbListItem","fadeSide","ScrollBar","list","init","onPageLoaded","initFadeSide","FadeSide","fadeWidth","updateScrollBar","closest","adjustScrollBarListWidth","update","getScrollBarListWidth","benefitItem","benefitItemsLength","length","Math","ceil","offsetWidth","clearScrollBarListWidth","width","initScrollBarAfterPageLoaded","readyState","suppressScrollY","useBothWheelAxes","swipeEasing","rebuild","leftMaskWidth","rightMaskWidth","getFadeWidth","adjustFadeElements","addEventListener","fdLeftWidth","fdRightWidth","scrollWidth","scrollLeft","abs","scrollRight","clientWidth","undefined","leftWidth","dir","rightWidth","setAttribute","setFadeWith"],"sourceRoot":""}