{"version":3,"sources":["webpack:///./modules/Slider.ts","webpack:///./helpers/trackingHelpers.ts"],"names":["__webpack_require__","r","__webpack_exports__","_js_libs_tiny_slider_js__WEBPACK_IMPORTED_MODULE_0__","_helpers_helperFunctions__WEBPACK_IMPORTED_MODULE_1__","_helpers_trackingHelpers__WEBPACK_IMPORTED_MODULE_2__","TeaserSlider","element","_this","this","productItems","querySelectorAll","productItem","querySelector","isSampleSlider","classList","contains","teaserSliderParent","parentElement","productItemsLength","length","closest","Eucerin","initSlider","document","addEventListener","slider","destroy","preventBrowserDragAndDrop","setup","selector","Array","from","filter","node","dataset","moduleInitialized","forEach","prototype","mobileOptions","container","loop","mouseDrag","preventScrollOnTouch","speed","lazyload","lazyloadSelector","options","Object","assign","getDefaultOptions","isMobile","hasAttribute","addTouchHandlersOnSlider","samples","activeSample","indexOf","previousElementSibling","goTo","addSliderArrows","preventClickOnDrag","wasDraged","onDragEnd","onMouseUp","e","preventDefault","sliderTeaserImpression","dispatchEvent","CustomEvent","detail","target","removeEventListener","events","off","on","isInItem","eventActionPrevious","eventActionNext","sliderHeadline","swipeDirection","transitionEnd","sampleNavLogic","setAttribute","event","lastIdx","getInfo","indexCached","currentIdx","index","swipeDirectionPrevious","pageItem","innerHTML","product","productsArray","productArrayGA4","productData","productDataG4","id","getAttribute","name","list","brand","category","variant","position","productPriceElement","price","parseFloat","push","add","item_id","item_name","affiliation","coupon","discount","item_brand","item_category","item_category2","item_category3","item_category4","item_category5","item_list_id","item_list_name","item_variant","quantity","window","dataLayer","ecommerce","currencyCode","impressions","items","_clear","swipeAngle","responsive","640","edgePadding","900","d","trackFilter","addToCartProductTracking","changeProductQuantityTracking","removeFromCartProductTracking","trackSliderMovement","addToCartEventName","removeFromCartEventName","cartTrackingEvent","eventName","qty","btnType","eventData","actionField","products","type","remove","item","filterName","filterCategory","eventCategory","eventAction","eventLabel","eventNonInteraction","oldQty","newQty","Math","abs","undefined"],"mappings":"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","file":"./modules/Slider.1eef3da1.js","sourcesContent":["/// <reference path=\"../typings/FaceLift.d.ts\" />\r\n/// <reference path=\"../typings/tiny-slider.d.ts\" />\r\nconst moduleSelector = '[data-module=\"Slider\"]';\r\n\r\nimport { tns } from '../../js/libs/tiny-slider.js'\r\nimport { getOptions } from '../helpers/helperFunctions';\r\nimport { trackSliderMovement } from '../helpers/trackingHelpers';\r\n\r\nexport default class TeaserSlider {\r\n    slider;\r\n    productItems;\r\n    productItemsLength;\r\n    teaserSliderParent: HTMLElement;\r\n    productItem: HTMLElement;\r\n    mediaSliderLength: HTMLElement;\r\n    options;\r\n    isSampleSlider;\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 TeaserSlider(element);\r\n            element.dataset.moduleInitialized = 'true';\r\n        });\r\n    }\r\n\r\n    constructor(public element: HTMLElement) {\r\n        this.productItems = this.element.querySelectorAll(\".teaser\");\r\n        this.productItem = this.element.querySelector(\".teaser\");\r\n        this.isSampleSlider = this.element.classList.contains(\"product-samples\")\r\n        if (this.productItem) this.teaserSliderParent = this.productItem.parentElement;\r\n\r\n        this.productItemsLength = this.productItems.length;\r\n        if ((this.element.closest(\".ingredient-slider\") || this.element.closest(\".media-slider\")) && !(Eucerin.isMobile) || this.isSampleSlider && this.productItemsLength < 3) {\r\n            return\r\n        }\r\n        this.initSlider();\r\n        document.addEventListener('Eucerin:deviceChanged', () => {\r\n            this.slider.destroy();\r\n            this.initSlider();\r\n        });\r\n\r\n        this.preventBrowserDragAndDrop()\r\n    }\r\n\r\n    private initSlider() {\r\n        let mobileOptions: TinySliderSettings = {\r\n            container: this.element.querySelector('.teaser-list') as HTMLElement,\r\n            loop: false,\r\n            mouseDrag: true,\r\n            preventScrollOnTouch: 'auto',\r\n            speed: 400,\r\n            //autoWidth: document.dir === 'rtl' ? true : false,\r\n            lazyload: true,\r\n            //items: document.dir === 'rtl' ? 1.1 : null,\r\n            lazyloadSelector: 'img',\r\n        }\r\n\r\n        this.options = getOptions(this.element, Object.assign(this.getDefaultOptions(), this.options));\r\n        this.options.container = this.element.querySelector('.teaser-list') as HTMLElement;\r\n\r\n        if (Eucerin.isMobile && this.productItemsLength == 1) {\r\n            return false;\r\n        }\r\n\r\n        this.slider = tns((Eucerin.isMobile && this.element.hasAttribute('data-options') || !(Eucerin.isMobile)) ? this.options : mobileOptions);\r\n        !(this.element.closest(\".gallery-slider\")) ? this.addTouchHandlersOnSlider('Homepage Teaser Previous', 'Homepage Teaser Next') : \"\";\r\n        if (this.isSampleSlider) {\r\n            const samples = Array.from(this.element.querySelectorAll(\".sample-teaser\"));\r\n            const activeSample = this.element.querySelector(\".sample-teaser:last-of-type.active\") ? samples.indexOf(this.element.querySelector(\".sample-teaser.active\").previousElementSibling) : samples.indexOf(this.element.querySelector(\".sample-teaser.active\"));\r\n            this.slider.goTo(activeSample);\r\n            this.addSliderArrows()\r\n        };\r\n    }\r\n\r\n    private preventClickOnDrag() {\r\n        let wasDraged: boolean = false;\r\n        const onDragEnd = () => {\r\n            wasDraged = true;\r\n        };\r\n        const onMouseUp = (e: Event) => {\r\n            if (wasDraged) {\r\n                e.preventDefault();\r\n                this.sliderTeaserImpression();\r\n            } else {\r\n                document.dispatchEvent(new CustomEvent(\"eucerin-tracking:slider:click\", { detail: { target: e.target as HTMLElement } }));\r\n            };\r\n            this.element.removeEventListener('mouseup', onMouseUp);\r\n            this.slider.events.off('dragMove', onDragEnd);\r\n            wasDraged = false;\r\n        };\r\n\r\n        this.slider.events.on('dragMove', onDragEnd);\r\n        this.element.addEventListener('mouseup', onMouseUp);\r\n\r\n        return this;\r\n    }\r\n\r\n    private preventBrowserDragAndDrop() {\r\n        this.element.addEventListener('mousedown', (e) => {\r\n            const isInItem = (<HTMLElement>e.target).closest('.tns-item:not(.tns-item--clickable)');\r\n            this.preventClickOnDrag();\r\n\r\n            if (isInItem) {\r\n                e.preventDefault();\r\n            }\r\n        });\r\n\r\n        return this;\r\n    }\r\n\r\n    addTouchHandlersOnSlider(eventActionPrevious: string, eventActionNext: string, sliderHeadline?: string) {\r\n        this.slider.events.on('touchEnd', (e) => { this.swipeDirection(this.slider, sliderHeadline) });\r\n        this.slider.events.on('dragEnd', (e) => { this.swipeDirection(this.slider, sliderHeadline) });\r\n        this.slider.events.on('transitionStart', (e) => { this.transitionEnd() });\r\n    }\r\n\r\n    transitionEnd() {\r\n        this.element.querySelector(\".sample-teaser-list\") ? this.sampleNavLogic() : \"\";\r\n\r\n    }\r\n    sampleNavLogic() {\r\n        const lastSampleElement = this.element.querySelector(\".sample-teaser:last-of-type\").classList.contains(\"tns-slide-active\");\r\n        lastSampleElement ? this.element.querySelector(\"[data-controls='next']\").setAttribute(\"disabled\", \"\") : \"\";\r\n    }\r\n    swipeDirection(event: any, sliderHeadline: string) {\r\n        event = event.getInfo();\r\n\r\n        const lastIdx = event.indexCached,\r\n            currentIdx = event.index;\r\n        this.sliderTeaserImpression();\r\n        if (currentIdx === lastIdx) {\r\n            return;\r\n        }\r\n\r\n        if (currentIdx > lastIdx) {\r\n            this.swipeDirectionPrevious('Swipe Next', sliderHeadline);\r\n        } else {\r\n            trackSliderMovement('Swipe Previous', sliderHeadline);\r\n        }\r\n    }\r\n\r\n    swipeDirectionPrevious(eventActionPrevious, sliderHeadline: string) {\r\n        trackSliderMovement(eventActionPrevious, sliderHeadline);\r\n    }\r\n\r\n    addSliderArrows() {\r\n        const tnsContr = this.element.querySelectorAll('.tns-controls button');\r\n        tnsContr.forEach((pageItem) => {\r\n            pageItem.innerHTML += `<svg width=\"11\" height=\"20\" viewBox=\"0 0 11 20\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n<path d=\"M0.63623 1.27271L9.3635 9.99998L0.63623 18.7272\" />\r\n</svg>\r\n`;\r\n        })\r\n    }\r\n\r\n    private sliderTeaserImpression() {\r\n        const product = Array.from(document.querySelectorAll(\".teaser.tns-slide-active:not(.product-show)\"));\r\n        const productsArray = [];\r\n\r\n        // GA4 List Product Tracking\r\n        let productArrayGA4 = [];\r\n\r\n        if (product.length > 0) {\r\n            product.forEach((product, index) => {\r\n                let productData: any = {}\r\n                let productDataG4: any = {};\r\n                productData.id = product.getAttribute('product-sku') ? product.getAttribute('product-sku') : product.getAttribute('data-product-item-id');\r\n                productData.name = product.getAttribute(\"product-name\") ? product.getAttribute(\"product-name\") : 'null';\r\n                productData.list = 'Products';\r\n                productData.brand = 'Eucerin';\r\n                productData.category = product.getAttribute(\"product-category\") ? product.getAttribute(\"product-category\") : 'null';\r\n                productData.variant = product.getAttribute('product-variant') ? product.getAttribute('product-variant') : 'null';\r\n                productData.position = Array.from(product.parentElement.querySelectorAll(`.teaser[data-product-item-id]`)).indexOf(product) + 1;\r\n                const productPriceElement = product.querySelector('[product-price]');\r\n                const price = parseFloat(productPriceElement && productPriceElement.getAttribute('product-price'))\r\n                productData.price = price;\r\n                productsArray.push(productData);\r\n\r\n                product.classList.add('product-show');\r\n\r\n                //GA4 Data collection\r\n                productDataG4.item_id = productData.id;\r\n                productDataG4.item_name = productData.name \r\n                productDataG4.affiliation = product.getAttribute(\"product-affiliation\") ? product.getAttribute(\"product-affiliation\") : null;\r\n                productDataG4.coupon = product.querySelector(\"[product-coupon]\") ? product.querySelector(\"[product-coupon]\").getAttribute(\"product-coupon\") : null;\r\n                productDataG4.discount = product.getAttribute(\"product-discount\") ? product.getAttribute(\"product-discount\") : null;\r\n                productDataG4.index = product.closest(\"[data-id]\") ? product.closest(\"[data-id]\").querySelectorAll(\".product-show\").length : null,\r\n                productDataG4.item_brand = 'Eucerin';\r\n                productDataG4.item_category = productData.category;\r\n                productDataG4.item_category2 = product.getAttribute(\"product-category-2\") ? product.getAttribute(\"product-category-2\") : null; //ToDo\r\n                productDataG4.item_category3 = product.getAttribute(\"product-category-3\") ? product.getAttribute(\"product-category-3\") : null; //ToDo\r\n                productDataG4.item_category4 = product.getAttribute(\"product-category-4\") ? product.getAttribute(\"product-category-4\") : null; //ToDo\r\n                productDataG4.item_category5 = product.getAttribute(\"product-category-5\") ? product.getAttribute(\"product-category-5\") : null; //ToDo\r\n                productDataG4.item_list_id = product.closest(\"[data-id]\") ? product.closest(\"[data-id]\").getAttribute(\"data-id\") : null; //ToDo\r\n                productDataG4.item_list_name = product.closest('[product-list]') ? product.closest('[product-list]').getAttribute('product-list') : null;\r\n                productDataG4.item_variant = product.getAttribute('product-variant') ? product.getAttribute('product-variant') : null;\r\n                \r\n                productDataG4.price = price;\r\n                productDataG4.quantity = 1; //ToDO\r\n                \r\n                productArrayGA4.push(productDataG4);\r\n            })\r\n\r\n            window.dataLayer.push({\r\n                event: 'impressions',\r\n                ecommerce: {\r\n                    currencyCode: 'EUR',\r\n                    impressions: productsArray\r\n                }\r\n            });\r\n                window.dataLayer.push({\r\n                    event: \"view_item_list\",\r\n                    ecommerce: {\r\n                        item_list_id: this.element.closest(\"[product-list]\").getAttribute(\"data-id\"), //ToDo\r\n                        item_list_name: this.element.closest(\"[product-list]\").getAttribute(\"product-list\"),\r\n                        items: productArrayGA4\r\n                    },\r\n                    _clear: true\r\n                })\r\n        }\r\n    }\r\n\r\n    getDefaultOptions() {\r\n        return {\r\n            container: this.element.querySelector('.teaser-list') as HTMLElement,\r\n            loop: false,\r\n            mouseDrag: true,\r\n            swipeAngle: false,\r\n            speed: 400,\r\n            lazyload: true,\r\n            lazyloadSelector: 'img',\r\n            preventScrollOnTouch: 'auto',\r\n            responsive: {\r\n                640: {\r\n                    items: 3,\r\n                    edgePadding: 10\r\n                },\r\n                900: {\r\n                    items: 4,\r\n                    edgePadding: 0\r\n                },\r\n            }\r\n        }\r\n    }\r\n}\r\n\r\nnew TeaserSlider.setup();","const addToCartEventName = 'addToCart';\r\nconst removeFromCartEventName = 'removeFromCart';\r\n\r\nfunction cartTrackingEvent(element, eventName, qty, btnType) {\r\n    const productPriceElement = element.querySelector('[product-price]');\r\n    const price = parseFloat(productPriceElement && productPriceElement.getAttribute('product-price'))\r\n\r\n    const category = element.getAttribute('product-category');\r\n\r\n    const eventData = {\r\n        actionField: { list: category },\r\n        products: [{\r\n            id: element.getAttribute('product-sku'),\r\n            name: element.getAttribute('product-name'),\r\n            brand: 'Eucerin',\r\n            category: category,\r\n            variant: element.getAttribute('product-variant'),\r\n            price: price,\r\n            quantity: qty\r\n        }],\r\n        type: btnType\r\n    };\r\n\r\n    const event: { event; ecommerce } = {\r\n        event: eventName,\r\n        ecommerce: {\r\n            currencyCode: element.getAttribute('product-currency'),\r\n        }\r\n    };\r\n\r\n    if (eventName === addToCartEventName)\r\n        event.ecommerce.add = eventData;\r\n    else if (eventName === removeFromCartEventName)\r\n        event.ecommerce.remove = eventData;\r\n\r\n    window.dataLayer.push(event);\r\n}\r\n\r\nexport function trackFilter(item) {\r\n    const element = item as HTMLElement;\r\n    const filterName = element.getAttribute('data-value-name');\r\n    const filterCategory = element.closest('[data-filter-name]').getAttribute('data-filter-name');\r\n\r\n    if (window.dataLayer) {\r\n        window.dataLayer.push({\r\n            event: 'ga_event',\r\n            eventCategory: 'Filter',\r\n            eventAction: filterCategory,\r\n            eventLabel: filterName,\r\n            eventNonInteraction: false\r\n        });\r\n    }\r\n\r\n}\r\n\r\nexport function addToCartProductTracking(element, qty = 1) {\r\n    cartTrackingEvent(element, addToCartEventName, qty, (element.closest(\".teaser\")) ? 'Teaser' : 'Button');\r\n}\r\n\r\nexport function changeProductQuantityTracking(element, oldQty, newQty) {\r\n    const eventName = newQty - oldQty === Math.abs(newQty - oldQty) ? addToCartEventName : removeFromCartEventName;\r\n    cartTrackingEvent(element, eventName, Math.abs(newQty - oldQty), 'Dropdown');\r\n}\r\n\r\nexport function removeFromCartProductTracking(element, qty) {\r\n    cartTrackingEvent(element, removeFromCartEventName, qty, 'Button');\r\n}\r\n\r\nexport function trackSliderMovement(eventAction: string, eventLabel: string = '') {\r\n    window.dataLayer.push({\r\n        event: 'ga_event',\r\n        eventCategory: 'Teaser',\r\n        eventAction: eventAction,\r\n        eventLabel: eventLabel.length > 0 ? eventLabel : undefined,\r\n        eventNonInteraction: false\r\n    });\r\n}"],"sourceRoot":""}