{"version":3,"file":"./modules/FilterExpandElement.xxxxxxxx.js","mappings":"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","sources":["webpack:///../../../node_modules/setImmediate/setImmediate.js","webpack:///./modules/Expandable.ts","webpack:///./modules/Expander/Expander.ts","webpack:///./modules/Expander/ExpanderWithT.ts","webpack:///./modules/Expander/index.ts","webpack:///./modules/FilterExpandElement.ts","webpack:///./modules/ScrollBar.ts"],"sourcesContent":["(function (global, undefined) {\n    \"use strict\";\n\n    if (global.setImmediate) {\n        return;\n    }\n\n    var nextHandle = 1; // Spec says greater than zero\n    var tasksByHandle = {};\n    var currentlyRunningATask = false;\n    var doc = global.document;\n    var registerImmediate;\n\n    function setImmediate(callback) {\n      // Callback can either be a function or a string\n      if (typeof callback !== \"function\") {\n        callback = new Function(\"\" + callback);\n      }\n      // Copy function arguments\n      var args = new Array(arguments.length - 1);\n      for (var i = 0; i < args.length; i++) {\n          args[i] = arguments[i + 1];\n      }\n      // Store and register the task\n      var task = { callback: callback, args: args };\n      tasksByHandle[nextHandle] = task;\n      registerImmediate(nextHandle);\n      return nextHandle++;\n    }\n\n    function clearImmediate(handle) {\n        delete tasksByHandle[handle];\n    }\n\n    function run(task) {\n        var callback = task.callback;\n        var args = task.args;\n        switch (args.length) {\n        case 0:\n            callback();\n            break;\n        case 1:\n            callback(args[0]);\n            break;\n        case 2:\n            callback(args[0], args[1]);\n            break;\n        case 3:\n            callback(args[0], args[1], args[2]);\n            break;\n        default:\n            callback.apply(undefined, args);\n            break;\n        }\n    }\n\n    function runIfPresent(handle) {\n        // From the spec: \"Wait until any invocations of this algorithm started before this one have completed.\"\n        // So if we're currently running a task, we'll need to delay this invocation.\n        if (currentlyRunningATask) {\n            // Delay by doing a setTimeout. setImmediate was tried instead, but in Firefox 7 it generated a\n            // \"too much recursion\" error.\n            setTimeout(runIfPresent, 0, handle);\n        } else {\n            var task = tasksByHandle[handle];\n            if (task) {\n                currentlyRunningATask = true;\n                try {\n                    run(task);\n                } finally {\n                    clearImmediate(handle);\n                    currentlyRunningATask = false;\n                }\n            }\n        }\n    }\n\n    function installNextTickImplementation() {\n        registerImmediate = function(handle) {\n            process.nextTick(function () { runIfPresent(handle); });\n        };\n    }\n\n    function canUsePostMessage() {\n        // The test against `importScripts` prevents this implementation from being installed inside a web worker,\n        // where `global.postMessage` means something completely different and can't be used for this purpose.\n        if (global.postMessage && !global.importScripts) {\n            var postMessageIsAsynchronous = true;\n            var oldOnMessage = global.onmessage;\n            global.onmessage = function() {\n                postMessageIsAsynchronous = false;\n            };\n            global.postMessage(\"\", \"*\");\n            global.onmessage = oldOnMessage;\n            return postMessageIsAsynchronous;\n        }\n    }\n\n    function installPostMessageImplementation() {\n        // Installs an event handler on `global` for the `message` event: see\n        // * https://developer.mozilla.org/en/DOM/window.postMessage\n        // * http://www.whatwg.org/specs/web-apps/current-work/multipage/comms.html#crossDocumentMessages\n\n        var messagePrefix = \"setImmediate$\" + Math.random() + \"$\";\n        var onGlobalMessage = function(event) {\n            if (event.source === global &&\n                typeof event.data === \"string\" &&\n                event.data.indexOf(messagePrefix) === 0) {\n                runIfPresent(+event.data.slice(messagePrefix.length));\n            }\n        };\n\n        if (global.addEventListener) {\n            global.addEventListener(\"message\", onGlobalMessage, false);\n        } else {\n            global.attachEvent(\"onmessage\", onGlobalMessage);\n        }\n\n        registerImmediate = function(handle) {\n            global.postMessage(messagePrefix + handle, \"*\");\n        };\n    }\n\n    function installMessageChannelImplementation() {\n        var channel = new MessageChannel();\n        channel.port1.onmessage = function(event) {\n            var handle = event.data;\n            runIfPresent(handle);\n        };\n\n        registerImmediate = function(handle) {\n            channel.port2.postMessage(handle);\n        };\n    }\n\n    function installReadyStateChangeImplementation() {\n        var html = doc.documentElement;\n        registerImmediate = function(handle) {\n            // Create a <script> element; its readystatechange event will be fired asynchronously once it is inserted\n            // into the document. Do so, thus queuing up the task. Remember to clean up once it's been called.\n            var script = doc.createElement(\"script\");\n            script.onreadystatechange = function () {\n                runIfPresent(handle);\n                script.onreadystatechange = null;\n                html.removeChild(script);\n                script = null;\n            };\n            html.appendChild(script);\n        };\n    }\n\n    function installSetTimeoutImplementation() {\n        registerImmediate = function(handle) {\n            setTimeout(runIfPresent, 0, handle);\n        };\n    }\n\n    // If supported, we should attach to the prototype of global, since that is where setTimeout et al. live.\n    var attachTo = Object.getPrototypeOf && Object.getPrototypeOf(global);\n    attachTo = attachTo && attachTo.setTimeout ? attachTo : global;\n\n    // Don't get fooled by e.g. browserify environments.\n    if ({}.toString.call(global.process) === \"[object process]\") {\n        // For Node.js before 0.9\n        installNextTickImplementation();\n\n    } else if (canUsePostMessage()) {\n        // For non-IE10 modern browsers\n        installPostMessageImplementation();\n\n    } else if (global.MessageChannel) {\n        // For web workers, where supported\n        installMessageChannelImplementation();\n\n    } else if (doc && \"onreadystatechange\" in doc.createElement(\"script\")) {\n        // For IE 6–8\n        installReadyStateChangeImplementation();\n\n    } else {\n        // For older browsers\n        installSetTimeoutImplementation();\n    }\n\n    attachTo.setImmediate = setImmediate;\n    attachTo.clearImmediate = clearImmediate;\n}(typeof self === \"undefined\" ? typeof global === \"undefined\" ? this : global : self));\n","import { getOptions, requestAnimationFrameTimer } from '../helpers/helperFunctions';\r\n\r\nexport default class Expandable {\r\n    private height: number;\r\n    private active: boolean;\r\n\r\n    constructor(private container: HTMLElement, private options: ExpandableOptions = {}) {\r\n        this.active = this.container.className.includes('active');\r\n        this.options = getOptions(this.container, Object.assign(this.getDefaultOptions(), this.options));\r\n        this.init();\r\n    }\r\n\r\n    private init(): Expandable {\r\n        this.setElementHeight(this.container, this.getSuitableHeight());\r\n        this.setOnResizeHandler();\r\n        return this;\r\n    }\r\n\r\n    private saveInitialHeight(): Expandable {\r\n        this.height = this.getElementHeight(this.container);\r\n        return this;\r\n    }\r\n\r\n    private getElementHeight(element: HTMLElement): number {\r\n        return element.offsetHeight;\r\n    }\r\n\r\n    private getSuitableHeight(): string {\r\n        return this.active ? '' : this.options.collapsedHeight + 'px';\r\n    }\r\n\r\n    private setElementHeight(element: HTMLElement, height?: string): Expandable {\r\n        element.style.maxHeight = height != null ? height : ''; \r\n\r\n        return this;\r\n    }\r\n\r\n    private toggleState(): Expandable {\r\n        this.active = !this.active;\r\n        return this;\r\n    }\r\n\r\n    private getDefaultOptions(): ExpandableOptions {\r\n        return {\r\n            collapsedHeight: 115\r\n        };\r\n    }\r\n\r\n    private setOnResizeHandler(): Expandable {\r\n        NiveaX.addToEventStore('resize', () => requestAnimationFrameTimer(() => this.onResize(), 300), window)\r\n\r\n        return this;\r\n    }\r\n\r\n    private onResize() {\r\n        const height = this.getSuitableHeight();\r\n        this.setElementHeight(this.container, height);\r\n    }\r\n\r\n    setCollapsedHeight(value: number): Expandable {\r\n        this.options.collapsedHeight = value;\r\n        return this;\r\n    }\r\n\r\n    toggle(): Expandable {\r\n        this.toggleState()\r\n            .setElementHeight(this.container, this.getSuitableHeight());\r\n        return this;\r\n    }\r\n\r\n    isActive(): boolean {\r\n        return this.active;\r\n    }\r\n    \r\n    needToBeShown(): boolean {\r\n        return this.height > this.options.collapsedHeight * 1.25;\r\n    }\r\n\r\n\r\n    clear(): Expandable {\r\n        this.setElementHeight(this.container)\r\n            .saveInitialHeight();\r\n        return this;\r\n    }\r\n\r\n    render(): Expandable {\r\n        const height =  this.getSuitableHeight();\r\n        this.setElementHeight(this.container, height);\r\n\r\n        return this;\r\n    }\r\n\r\n    getContainer(): HTMLElement {\r\n        return this.container;\r\n    }\r\n}","import Expandable from '../Expandable';\r\nimport { getOptions, requestAnimationFrameTimer } from '../../helpers/helperFunctions';\r\n\r\nconst moduleSelector = '[data-module=\"Expander\"]';\r\n\r\nexport default class Expander {\r\n    private container: HTMLElement;\r\n    private button: HTMLElement;\r\n    private expandable: Expandable;\r\n    public expanderState: string;\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 Expander(element);\r\n            element.dataset.moduleInitialized = 'true';\r\n        });\r\n    }\r\n\r\n    constructor(public element: HTMLElement, private options: ExpanderOptions = {}) {\r\n        this.options = getOptions(this.element, Object.assign(this.getDefaultOptions(), this.options));\r\n        this.container = <HTMLElement>this.element.querySelector(`.${this.options.containerSelector}`) || this.element;\r\n        this.button = <HTMLElement>this.element.querySelector(`.${this.options.buttonSelector}`);\r\n        this.expandable = new Expandable(this.container, this.options.expandableOptions);\r\n        \r\n        this.init();\r\n    }\r\n\r\n    protected init(): Expander {\r\n        this.showExpanderButton()\r\n            .setButtonEventHandler()\r\n            .setOnResizeHandler()\r\n            .adjustAppearance()\r\n            .applyActiveFromOptions()\r\n            .applyContentAlignmentFromOptions();\r\n\r\n        return this;\r\n    }\r\n\r\n    protected showExpanderButton(): Expander {\r\n        this.button.hidden = false;\r\n        return this;\r\n    }\r\n\r\n    protected setButtonEventHandler(): Expander {\r\n        this.button.addEventListener('click', this.toggleExpander.bind(this));\r\n        return this;\r\n    }\r\n\r\n    protected toggleActiveModifier(force?: boolean): Expander {\r\n        (force)\r\n            ? this.element.classList.add(`${this.options.elementSelector}--active`)\r\n            : this.element.classList.remove(`${this.options.elementSelector}--active`);\r\n            \r\n        return this;\r\n    }\r\n    \r\n    protected showFade(force?: boolean): Expander {\r\n        (force)\r\n            ? this.options.hasFade && this.container.classList.add(`${this.options.containerSelector}--with-fade`)\r\n            : this.options.hasFade && this.container.classList.remove(`${this.options.containerSelector}--with-fade`);\r\n\r\n        return this;\r\n    }\r\n\r\n    protected toggleExpander(clickedEvent:boolean = true): void {\r\n        this.expandable.toggle();\r\n        this.toggleActiveModifier(this.expandable.isActive());\r\n        this.expanderState = this.expandable.isActive() ? 'Expanded' : 'Collapsed';\r\n    }\r\n\r\n    protected onResize(): void {\r\n        this.options.beforeResize();\r\n        \r\n        if( this.options.isActive ) {\r\n            this.adjustAppearance();\r\n        }\r\n    }\r\n\r\n    protected applyActiveFromOptions() {\r\n        if( this.options.isActive ) {\r\n            this.toggleExpander(false);\r\n        }\r\n        return this;\r\n    }\r\n\r\n    protected applyContentAlignmentFromOptions() {\r\n        if(this.options.contentAlignment) {\r\n            this.container.classList.add(`${this.options.containerSelector}--align-` + this.options.contentAlignment);\r\n        }\r\n        return this;\r\n    }\r\n\r\n    protected setOnResizeHandler(): Expander {\r\n        NiveaX.addToEventStore('resize', () => requestAnimationFrameTimer(() => this.onResize(), 300), window);\r\n        return this;\r\n    }\r\n\r\n    protected setupExpander(): Expander {\r\n        this.expandable.render();\r\n\r\n        this.showFade(true)\r\n            .hideButton(false);\r\n\r\n        return this;\r\n    }\r\n\r\n    protected destroyExpander(): Expander {\r\n        this.expandable.clear();\r\n\r\n        this.showFade(false)\r\n            .hideButton(true);\r\n\r\n        return this;\r\n    }\r\n\r\n    public hideButton(value: boolean): Expander {\r\n        this.button.hidden = value;\r\n        return this;\r\n    }\r\n\r\n    protected getDefaultOptions(): ExpanderOptions {\r\n        return {\r\n            elementSelector: 'nx-expander',\r\n            containerSelector: 'nx-expander__content',\r\n            buttonSelector: 'nx-expander__button',\r\n            hasFade: true,\r\n            beforeResize: () => {}\r\n        };\r\n    }\r\n\r\n    adjustAppearance(): Expander {\r\n        this.expandable.clear();\r\n       \r\n        this.expandable.needToBeShown()\r\n            ? this.setupExpander()\r\n            : this.destroyExpander();\r\n\r\n        return this;\r\n    }\r\n\r\n    setCollapsedHeight(value: number): Expander {\r\n        this.expandable.setCollapsedHeight(value);\r\n        return this;\r\n    }\r\n\r\n    setBeforResizeCB(cb: Callback): Expander {\r\n        this.options.beforeResize = cb;\r\n        return this;\r\n    }\r\n\r\n    isActive(): boolean {\r\n        return this.expandable.isActive();\r\n    }\r\n\r\n    toggle(): Expander {\r\n        this.toggleExpander();\r\n        return this;\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    Expander.setup(moduleSelector);\r\n\r\n    module.hot.accept(() => {\r\n        Expander.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    Expander.setup(moduleSelector);\r\n}","/// <reference path=\"../../typings/niveax.d.ts\"/>\r\nimport Expander from \"./Expander\";\r\nimport ClassWithTracking from \"../../ClassWithTracking\";\r\n\r\nexport default class ExpanderWithT extends ClassWithTracking(Expander) {\r\n    trackingEvent(trackedElement: HTMLElement, isClicked: boolean) {\r\n        if (window.NiveaX.deviceType.isDesktop) { \r\n            return;\r\n        }\r\n\r\n        if (!isClicked || !!trackedElement.closest(\".nx-filter-layer\")) {\r\n            return;\r\n        }\r\n\r\n        let buttonType: string = \"Tap minus\",\r\n            isActive: boolean = false,\r\n            titleContent: string = \"\";\r\n\r\n        if (trackedElement.className.search(\"active\") > 0) {\r\n            isActive = true;\r\n        }\r\n\r\n        titleContent = this.setLabel(trackedElement);\r\n\r\n        if (document.body.classList.contains(\"nx-pagetype-product\")) {\r\n            this.trackPDPSection(trackedElement, buttonType, titleContent);\r\n        } else {\r\n            this.preventMultipleClicks(isActive, titleContent);\r\n        }\r\n\r\n        return this;\r\n    }\r\n\r\n    private setLabel(trackedElement: HTMLElement): string {\r\n        let toggleTitleH2: HTMLElement = trackedElement.querySelector(\"h2\"),\r\n            toggleTitleH3: HTMLElement = trackedElement.querySelector(\"h3\");\r\n\r\n        if (toggleTitleH2) {\r\n            return toggleTitleH2.innerText;\r\n        } else if (toggleTitleH3) {\r\n            return toggleTitleH3.innerText;\r\n        }\r\n    }\r\n\r\n    private trackPDPSection(trackedElement: HTMLElement, buttonType: string, titleContent: string): void {\r\n        if (trackedElement.className.search(\"active\") > 0) {\r\n            buttonType = \"Tap plus\";\r\n        }\r\n        this.trackPDPSections(\"Product Detail Page\", buttonType, titleContent);\r\n    }\r\n\r\n    private preventMultipleClicks(isActive, titleContent): void {\r\n        if (isActive) {\r\n            if (!this.element.classList.contains(\"nx-trigger-once\")) {\r\n                this.trackElementClick(titleContent);\r\n                this.element.classList.add(\"nx-trigger-once\");\r\n            }\r\n\r\n            setTimeout(() => {\r\n                this.element.classList.remove(\"nx-trigger-once\");\r\n            }, 100);\r\n        }\r\n    }\r\n\r\n    private trackElementClick(eventLabel: string) {\r\n        if (window.NiveaX.IsUAEnabled) {\r\n            this.dataLayer.push({\r\n                event: \"ga_event\",\r\n                eventCategory: \"Expand Content\",\r\n                eventAction: \"Tap Button\",\r\n                eventLabel: eventLabel,\r\n                eventNonInteraction: false\r\n            });\r\n        }\r\n    }\r\n\r\n    private trackPDPSections(eventCategory: string, eventAction: string, eventLabel: string) {\r\n        if (window.NiveaX.IsUAEnabled) {\r\n            this.dataLayer.push({\r\n                event: \"ga_event\",\r\n                eventCategory: eventCategory,\r\n                eventAction: eventAction,\r\n                eventLabel: eventLabel,\r\n                eventNonInteraction: false\r\n            });\r\n        }\r\n    }\r\n\r\n    protected toggleExpander(clickedEvent: boolean = true): void {\r\n        super.toggleExpander(clickedEvent);\r\n        this.trackingEvent(this.element, clickedEvent);\r\n        console.log(this.expanderState);\r\n        // console.log(this.element, clickedEvent);\r\n    }\r\n}\r\n","import ExpanderWithT from './ExpanderWithT';\r\nexport default ExpanderWithT;","import Expander from './Expander';\r\nimport { getNamesOfInputs } from '../helpers/helperFunctions';\r\nimport { getOptions, requestAnimationFrameTimer } from '../helpers/helperFunctions';\r\nimport { Optional } from '../typings/mapped-types';\r\nimport ScrollBar from './ScrollBar';\r\nimport \"setImmediate\";\r\n\r\nexport default class FilterExpandElement {\r\n    private expander: Expander;\r\n    private checkBoxes: HTMLInputElement[];\r\n    private selectedContainer: HTMLElement;\r\n    private scrollBar: ScrollBar;\r\n\r\n    constructor(public element: HTMLElement, private options: Optional<FilterExpandElementOptions> = {}) {\r\n        this.options = getOptions(this.element, Object.assign(this.getDefaultOptions(), this.options));\r\n        this.expander = this.getExpander();\r\n        this.checkBoxes = this.getCheckBoxes();\r\n        this.selectedContainer = this.getContainerForSelectedFilters();\r\n        this.scrollBar = this.createCustomScrollBar();\r\n\r\n        this.init();\r\n    }\r\n\r\n    private init(): FilterExpandElement {\r\n        this.addHandlerOnCheckBoxChange()\r\n            .setExpanderTitleClickHandler()\r\n            .setOnResizeHandler();\r\n        return this;\r\n    }\r\n\r\n    private createCustomScrollBar(): ScrollBar {\r\n        const container = <HTMLElement>this.element.querySelector(this.options.categoryListSelector);       \r\n        return new ScrollBar(container, {\r\n            suppressScrollY: false,\r\n            suppressScrollX: true,\r\n            fadeSide: false,\r\n            fadeWidth: null\r\n        });\r\n    }\r\n\r\n    private getExpander(): Expander {\r\n        return new Expander(this.element, {\r\n            elementSelector: 'nx-tag-filter__item',\r\n            containerSelector: 'nx-filters',\r\n            buttonSelector: 'nx-tag-filter__title',\r\n            hasFade: false\r\n        });\r\n    }\r\n\r\n    private getCheckBoxes(): HTMLInputElement[] {\r\n        return <HTMLInputElement[]>Array.from(this.element.querySelectorAll('.nx-cat-item__tag-value'));\r\n    }\r\n\r\n    private getContainerForSelectedFilters(): HTMLElement {\r\n        return <HTMLElement>this.element.querySelector('.nx-title__selected-filters');\r\n    }\r\n\r\n    private addHandlerOnCheckBoxChange(): FilterExpandElement {\r\n        this.element.addEventListener('change', (event: Event) => {\r\n            setImmediate(() => \r\n                this.setTimeStamp(<HTMLInputElement>event.target)\r\n                    .showSelectedFilters()\r\n                    .adjustAppearance()\r\n                );\r\n        });\r\n\r\n        return this;\r\n    }\r\n\r\n    private getSelectedCheckBoxes(checkBoxes: HTMLInputElement[]): HTMLInputElement[] {\r\n        return checkBoxes.filter((chbox: HTMLInputElement) => chbox.checked);\r\n    }\r\n\r\n    private showSelectedFilters(): FilterExpandElement {\r\n        this.selectedContainer.innerHTML = getNamesOfInputs(this.getSelectedCheckBoxes(this.checkBoxes)).join(', ');\r\n        return this;\r\n    }\r\n\r\n    private setTimeStamp(checkbox: FilterCheckBox): FilterExpandElement {\r\n        checkbox.timeStamp = Date.now();\r\n        return this;\r\n    }\r\n\r\n    private adjustAppearance(): FilterExpandElement {\r\n        this.expander.adjustAppearance();\r\n        return this;\r\n    }\r\n\r\n    refreshFilters(): FilterExpandElement {\r\n        this.showSelectedFilters();\r\n\r\n        return this;\r\n    }\r\n\r\n    closeExpander(): FilterExpandElement {\r\n        if (this.expander.isActive()) {\r\n            this.expander.toggle();\r\n        }\r\n        return this;\r\n    }\r\n\r\n    getCheckedFilters(): FilterCheckBox[] {\r\n        return this.getSelectedCheckBoxes(this.checkBoxes);\r\n    }\r\n\r\n    private getExpanderElementList() {\r\n        return <HTMLElement>this.expander.element.querySelector(this.options.categoryListSelector);\r\n    }\r\n\r\n    private setExpanderTitleClickHandler(): FilterExpandElement {\r\n        this.element.querySelector('.nx-tag-filter__title').addEventListener('click', () => {\r\n            if (!window.NiveaX.deviceType.isDesktop) return;\r\n            this.handleExpanderTitleClick();\r\n        });\r\n\r\n        document.addEventListener('FilterExpandable:reset', () => this.resetNonActiveFilters());\r\n        return this;\r\n    }\r\n\r\n    private handleExpanderTitleClick(): FilterExpandElement {\r\n        this.isActiveModifier()\r\n            ? this.addCustomScroll(this.getExpanderElementList())\r\n            : this.resetHeight(this.getExpanderElementList());\r\n        return this;\r\n    }\r\n\r\n    private resetHeight(element: HTMLElement) {\r\n        if (element.hasAttribute('style')) { \r\n            element.removeAttribute('style'); \r\n            return true;\r\n        }\r\n        return false;\r\n     }\r\n\r\n    private isActiveModifier(): boolean {\r\n        return this.element.classList.contains(this.options.categoryItemActiveSelector);\r\n    }\r\n\r\n    private isOutOfBottom(element: HTMLElement): number {\r\n        const elementRect = element.getBoundingClientRect(),\r\n            windowHeight = Math.max(document.documentElement.clientHeight, window.innerHeight || 0),\r\n            listBottom = windowHeight - elementRect.top;\r\n        return windowHeight - elementRect.bottom < 0 ? listBottom - 50 : 0;\r\n    }\r\n\r\n    private addCustomScroll(element: HTMLElement): FilterExpandElement {\r\n        let isOutOfBottomResult = this.isOutOfBottom(element);\r\n        if (isOutOfBottomResult > 0) {\r\n            element.style.height = `${isOutOfBottomResult}px`;\r\n            this.scrollBar.updateScrollBar();\r\n        }\r\n        return this;\r\n    }\r\n\r\n    private getActiveFilter(): HTMLElement {\r\n        return this.element.parentNode.querySelector(`.${this.options.categoryItemActiveSelector}`);\r\n    }\r\n\r\n    private setOnResizeHandler() {\r\n        NiveaX.addToEventStore('resize', () => requestAnimationFrameTimer(() => this.onResize(), 100), window);\r\n        return this;\r\n    }\r\n\r\n    private onResize() { \r\n        if (!window.NiveaX.deviceType.isDesktop) {\r\n            this.resetHeight(this.getExpanderElementList());\r\n            this.scrollBar.updateScrollBar(); \r\n        } else {\r\n            this.getActiveFilter()\r\n                ? this.resizeActiveFilter()\r\n                : this.setExpanderTitleClickHandler()\r\n        }\r\n        return this;\r\n    }\r\n   \r\n    private resizeActiveFilter() {\r\n        const activeFilterCategoryList = <HTMLElement>this.getActiveFilter().querySelector(this.options.categoryListSelector);\r\n        this.resetHeight(activeFilterCategoryList);\r\n        this.addCustomScroll(activeFilterCategoryList);\r\n    }\r\n\r\n    private resetNonActiveFilters() {\r\n        if(!this.element.classList.contains('nx-tag-filter__item--active')){\r\n            this.resetHeight(this.element.querySelector(this.options.categoryListSelector));\r\n            this.scrollBar.updateScrollBar();\r\n        } else {\r\n            this.resizeActiveFilter();\r\n        }\r\n    }\r\n\r\n    private getDefaultOptions(): FilterExpandElementOptions {\r\n        return {\r\n            categoryListSelector: '.nx-filters__category-list',\r\n            categoryItemActiveSelector: 'nx-tag-filter__item--active'\r\n        };\r\n    }\r\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 = <HTMLElement>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 = <HTMLElement>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":["global","undefined","setImmediate","registerImmediate","html","channel","messagePrefix","onGlobalMessage","nextHandle","tasksByHandle","currentlyRunningATask","doc","document","attachTo","Object","getPrototypeOf","setTimeout","toString","call","process","handle","nextTick","runIfPresent","postMessage","importScripts","postMessageIsAsynchronous","oldOnMessage","onmessage","canUsePostMessage","MessageChannel","port1","event","data","port2","createElement","documentElement","script","onreadystatechange","removeChild","appendChild","Math","random","source","indexOf","slice","length","addEventListener","attachEvent","callback","Function","args","Array","arguments","i","task","clearImmediate","apply","run","self","g","this","Expandable","constructor","container","options","active","className","includes","assign","getDefaultOptions","init","setElementHeight","getSuitableHeight","setOnResizeHandler","saveInitialHeight","height","getElementHeight","element","offsetHeight","collapsedHeight","style","maxHeight","toggleState","NiveaX","addToEventStore","onResize","window","setCollapsedHeight","value","toggle","isActive","needToBeShown","clear","render","getContainer","moduleSelector","Expander","setup","selector","from","querySelectorAll","filter","node","dataset","moduleInitialized","forEach","querySelector","containerSelector","button","buttonSelector","expandable","expandableOptions","showExpanderButton","setButtonEventHandler","adjustAppearance","applyActiveFromOptions","applyContentAlignmentFromOptions","hidden","toggleExpander","bind","toggleActiveModifier","force","classList","add","elementSelector","remove","showFade","hasFade","clickedEvent","expanderState","beforeResize","contentAlignment","setupExpander","hideButton","destroyExpander","setBeforResizeCB","cb","ExpanderWithT","trackingEvent","trackedElement","isClicked","deviceType","isDesktop","closest","titleContent","search","setLabel","body","contains","trackPDPSection","preventMultipleClicks","toggleTitleH2","toggleTitleH3","innerText","buttonType","trackPDPSections","trackElementClick","eventLabel","IsUAEnabled","dataLayer","push","eventCategory","eventAction","eventNonInteraction","super","console","log","FilterExpandElement","expander","getExpander","checkBoxes","getCheckBoxes","selectedContainer","getContainerForSelectedFilters","scrollBar","createCustomScrollBar","addHandlerOnCheckBoxChange","setExpanderTitleClickHandler","categoryListSelector","suppressScrollY","suppressScrollX","fadeSide","fadeWidth","setTimeStamp","target","showSelectedFilters","getSelectedCheckBoxes","chbox","checked","innerHTML","join","checkbox","timeStamp","Date","now","refreshFilters","closeExpander","getCheckedFilters","getExpanderElementList","handleExpanderTitleClick","resetNonActiveFilters","isActiveModifier","addCustomScroll","resetHeight","hasAttribute","removeAttribute","categoryItemActiveSelector","isOutOfBottom","elementRect","getBoundingClientRect","windowHeight","max","clientHeight","innerHeight","listBottom","top","bottom","isOutOfBottomResult","updateScrollBar","getActiveFilter","parentNode","resizeActiveFilter","activeFilterCategoryList","ScrollBar","list","sbListSelector","psb","onPageLoaded","initFadeSide","FadeSide","adjustScrollBarListWidth","update","getScrollBarListWidth","benefitItem","sbListItem","benefitItemsLength","ceil","offsetWidth","clearScrollBarListWidth","width","initScrollBarAfterPageLoaded","readyState","useBothWheelAxes","swipeEasing","destroy","rebuild","leftMaskWidth","rightMaskWidth","getFadeWidth","adjustFadeElements","fdLeftWidth","fdRightWidth","scrollWidth","scrollLeft","abs","scrollRight","clientWidth","leftWidth","dir","rightWidth","setAttribute","setFadeWith"],"sourceRoot":""}