{"version":3,"file":"./modules/ProductStageOverlay.xxxxxxxx.js","mappings":"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","sources":["webpack:///./modules/LayerAdvance.ts","webpack:///../../../node_modules/rxjs/_esm5/internal/operators/takeWhile.js","webpack:///./modules/LayerPage.ts","webpack:///./modules/ProductStageOverlay.ts"],"sourcesContent":["import LayerBasic, { BasicLayerOptions } from './LayerBasic';\r\nimport { Optional } from '../typings/mapped-types';\r\nimport {\r\n getOptions,\r\n requestAnimationFrameTimer,\r\n requestNextAnimationFrame,\r\n IOSScroll,\r\n} from '../helpers/helperFunctions';\r\nimport {\r\n addClass,\r\n addClasses,\r\n removeClasses,\r\n} from '../helpers/DOMHelpers';\r\n\r\nconst spinnerClasses = ['nx-u-spinner', 'nx-u-spinner--medium'];\r\n\r\nexport interface LayerAdvanceOptions extends BasicLayerOptions {\r\n beforeOpen: AsyncCallback;\r\n afterOpen: AsyncCallback;\r\n beforeClose: AsyncCallback;\r\n afterClose: AsyncCallback;\r\n}\r\n\r\nexport default class LayerAdvance extends LayerBasic {\r\n protected options: LayerAdvanceOptions;\r\n\r\n constructor(element: HTMLElement, options: Optional = {}) {\r\n super(element, options);\r\n\r\n this.options = getOptions(this.element, this.options);\r\n\r\n this.init();\r\n }\r\n\r\n protected getDefaultOptions(): Optional {\r\n const defOptions = super.getDefaultOptions();\r\n\r\n return {\r\n ...defOptions,\r\n layerModifierClasses: `${defOptions.layerMainClass}--page`,\r\n layerCloseBtnModifierClass: `${defOptions.layerMainClass}__close-btn--page`,\r\n layerCloseIconClass: `${defOptions.layerCloseIconClass} nx-close-icon--thin`,\r\n beforeOpen: async () => { await window.NiveaX.initModules(); },\r\n afterOpen: async () => { },\r\n beforeClose: async () => { },\r\n afterClose: async () => { },\r\n };\r\n }\r\n\r\n protected get isOpen(): boolean {\r\n return document.body.contains(this.layer);\r\n }\r\n\r\n showSpinner(): LayerAdvance {\r\n addClasses(this.layer.querySelector('.nx-layer__wrapper'), ...spinnerClasses);\r\n\r\n if (!this.isOpen) IOSScroll.prevent(true);\r\n super.open();\r\n\r\n return this;\r\n }\r\n\r\n\r\n async open(callback: Callback = () => { }): Promise {\r\n const {\r\n layerMainClass,\r\n beforeOpen,\r\n afterOpen,\r\n } = this.options;\r\n\r\n await beforeOpen();\r\n\r\n this.backButton();\r\n\r\n if (!this.isOpen) IOSScroll.prevent(true);\r\n\r\n removeClasses(this.layer.querySelector('.nx-layer__wrapper'), ...spinnerClasses);\r\n\r\n super.open();\r\n\r\n requestNextAnimationFrame(() => this.layer.classList.add(`${layerMainClass}--open`));\r\n\r\n window.NiveaX.loadShopPrices();\r\n\r\n await afterOpen();\r\n\r\n callback();\r\n }\r\n\r\n async close(callback: Callback = () => { }): Promise {\r\n const {\r\n layerMainClass,\r\n beforeClose,\r\n afterClose,\r\n } = this.options;\r\n\r\n await beforeClose();\r\n\r\n sessionStorage.removeItem('layers');\r\n\r\n addClass(this.layer, `${layerMainClass}--closing`);\r\n\r\n requestAnimationFrameTimer(() => {\r\n removeClasses(this.layer, `${layerMainClass}--open`, `${layerMainClass}--closing`);\r\n super.close();\r\n }, 400);\r\n\r\n if (document.body.classList.contains('nx-u-lock-screen') || document.body.classList.contains('nx-u-prevent-scroll'))\r\n IOSScroll.allow();\r\n\r\n await afterClose();\r\n\r\n callback();\r\n }\r\n\r\n backButton(){\r\n let layersArray;\r\n let layers;\r\n let getLayers = sessionStorage.getItem('layers');\r\n\r\n if (getLayers) {\r\n layersArray = JSON.parse(getLayers);\r\n\r\n if (layersArray.includes(location.hash)) {\r\n let index = layersArray.findIndex(i => i == location.hash) + 1;\r\n layersArray = layersArray.slice(0, index);\r\n layers = [...layersArray]\r\n } else {\r\n layers = [...layersArray, location.hash]\r\n }\r\n } else {\r\n layers = [location.hash]\r\n }\r\n\r\n sessionStorage.setItem('layers', `${JSON.stringify(layers)}`);\r\n\r\n if (layers.length > 1) {\r\n this.layer.classList.add('nx-layer--show-back-tbn');\r\n } else {\r\n this.layer.classList.remove('nx-layer--show-back-tbn');\r\n }\r\n }\r\n}\r\n","/** PURE_IMPORTS_START tslib,_Subscriber PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { Subscriber } from '../Subscriber';\nexport function takeWhile(predicate, inclusive) {\n if (inclusive === void 0) {\n inclusive = false;\n }\n return function (source) {\n return source.lift(new TakeWhileOperator(predicate, inclusive));\n };\n}\nvar TakeWhileOperator = /*@__PURE__*/ (function () {\n function TakeWhileOperator(predicate, inclusive) {\n this.predicate = predicate;\n this.inclusive = inclusive;\n }\n TakeWhileOperator.prototype.call = function (subscriber, source) {\n return source.subscribe(new TakeWhileSubscriber(subscriber, this.predicate, this.inclusive));\n };\n return TakeWhileOperator;\n}());\nvar TakeWhileSubscriber = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(TakeWhileSubscriber, _super);\n function TakeWhileSubscriber(destination, predicate, inclusive) {\n var _this = _super.call(this, destination) || this;\n _this.predicate = predicate;\n _this.inclusive = inclusive;\n _this.index = 0;\n return _this;\n }\n TakeWhileSubscriber.prototype._next = function (value) {\n var destination = this.destination;\n var result;\n try {\n result = this.predicate(value, this.index++);\n }\n catch (err) {\n destination.error(err);\n return;\n }\n this.nextOrComplete(value, result);\n };\n TakeWhileSubscriber.prototype.nextOrComplete = function (value, predicateResult) {\n var destination = this.destination;\n if (Boolean(predicateResult)) {\n destination.next(value);\n }\n else {\n if (this.inclusive) {\n destination.next(value);\n }\n destination.complete();\n }\n };\n return TakeWhileSubscriber;\n}(Subscriber));\n//# sourceMappingURL=takeWhile.js.map\n","import {\r\n fromEvent,\r\n of,\r\n combineLatest,\r\n} from 'rxjs';\r\nimport {\r\n takeUntil,\r\n takeWhile,\r\n switchMap,\r\n filter,\r\n map,\r\n tap,\r\n} from 'rxjs/operators';\r\n\r\nimport LayerAdvance, { LayerAdvanceOptions } from './LayerAdvance';\r\nimport { Optional } from '../typings/mapped-types';\r\nimport { requestAnimationFrameTimer } from '../helpers/helperFunctions';\r\nimport { hasClass, objectToStyleString } from '../helpers/DOMHelpers';\r\n\r\nconst moduleSelector = '[data-module=\"LayerPage\"]';\r\n\r\nexport default class LayerPage extends LayerAdvance {\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 LayerPage(element);\r\n element.dataset.moduleInitialized = 'true';\r\n });\r\n }\r\n\r\n constructor(element: HTMLElement, options: Optional = {}) {\r\n super(element, options);\r\n\r\n this.listenToEvents();\r\n }\r\n\r\n protected getDefaultOptions(): Optional {\r\n const defOptions = super.getDefaultOptions();\r\n\r\n return {\r\n ...defOptions,\r\n layerModifierClasses: `${defOptions.layerMainClass}--page`,\r\n layerCloseBtnModifierClass: `${defOptions.layerMainClass}__close-btn--page`,\r\n layerCloseIconClass: `${defOptions.layerCloseIconClass} nx-close-icon--thin`,\r\n beforeOpen: async () => { await NiveaX.initModules(); },\r\n afterOpen: async () => {\r\n },\r\n beforeClose: async () => { },\r\n afterClose: async () => { },\r\n };\r\n }\r\n\r\n private listenToEvents(): LayerPage {\r\n const touchStart$ = fromEvent(this.layerContent, 'touchstart', { passive: true }).pipe(filter((e: TouchEvent) => e.target === e.currentTarget)),\r\n touchEnd$ = fromEvent(document, 'touchend', { passive: true }).pipe(tap(() => requestAnimationFrame(() => this.wrapper.removeAttribute('style')))),\r\n touchMove$ = fromEvent(document, 'touchmove', { passive: true }).pipe(map((e: TouchEvent) => e.changedTouches[0].clientY)),\r\n { layerMainClass } = this.options;\r\n\r\n const layerMove$ = touchStart$.pipe(\r\n map((e: TouchEvent) => e.changedTouches[0].clientY),\r\n switchMap(startY => combineLatest(of(startY), touchMove$)\r\n .pipe(\r\n takeUntil(touchEnd$),\r\n takeWhile(() => !hasClass(this.layer, `${layerMainClass}--closing`))))\r\n );\r\n\r\n layerMove$.subscribe(([startY, moveY]) => {\r\n const offsetHeight = document.documentElement.offsetHeight,\r\n endPoint = offsetHeight * 0.3,\r\n translateY = moveY - startY,\r\n percentResult = translateY / endPoint;\r\n\r\n const styles = {\r\n transform: `translateY(${Math.max(translateY, 0)}px) scale(${Math.min(1 - (0.2 * percentResult), 1)})`,\r\n transition: 'none',\r\n overflow: 'hidden',\r\n opacity: Math.min(1 - (0.6 * percentResult), 1),\r\n }\r\n\r\n if (percentResult < 1) {\r\n this.wrapper.setAttribute('style', objectToStyleString(styles));\r\n } else {\r\n this.close();\r\n requestAnimationFrameTimer(() => {\r\n this.wrapper.removeAttribute('style');\r\n }, 300);\r\n }\r\n });\r\n\r\n return this;\r\n }\r\n\r\n getLayerNode(): HTMLElement {\r\n return this.layer;\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 LayerPage.setup(moduleSelector);\r\n\r\n module.hot.accept(() => {\r\n LayerPage.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 LayerPage.setup(moduleSelector);\r\n}","import Slider from './Slider';\r\nimport LayerPage from './LayerPage';\r\n// import NivTZoom from './NivTZoom';\r\nimport {createElementFromString } from '../helpers/DOMHelpers';\r\n\r\nconst argsImageSlider: TinySliderSettings = {\r\n controls: false,\r\n controlsText: ['',''],\r\n items: 1,\r\n loop: false,\r\n mouseDrag: true,\r\n nav: false,\r\n speed: 600,\r\n responsive : {\r\n 1024: { \r\n controls: true, \r\n mouseDrag: true\r\n }\r\n },\r\n startIndex: 0,\r\n lazyload: true,\r\n};\r\n\r\nconst argsThumbSlider: TinySliderSettings = {\r\n controls: false,\r\n controlsText: ['', ''],\r\n fixedWidth: 70,\r\n gutter: 8,\r\n edgePadding: 0,\r\n loop: false,\r\n mouseDrag: true,\r\n nav: false,\r\n slideBy: 1,\r\n responsive: {\r\n 1280: {\r\n edgePadding: 0,\r\n }\r\n },\r\n startIndex: 0,\r\n lazyload: true,\r\n}\r\n\r\nexport default class ProductStageOverlay {\r\n\r\n private sliderProductStage: any;\r\n private productStageActiveSlideId: number;\r\n private callbackSliderProductStage: Function;\r\n private options: string;\r\n private layer: LayerPage;\r\n private layerElements: any;\r\n private thumbSlider: Slider;\r\n private thumbs: any;\r\n private imageSlider: Slider;\r\n private numberOfThumbs: any;\r\n private activeSlideId: number;\r\n private isInitialized: boolean;\r\n\r\n constructor(options, sliderStage, callback, element) {\r\n this.callbackSliderProductStage = callback;\r\n this.options = options;\r\n this.sliderProductStage = sliderStage;\r\n this.numberOfThumbs = 4;\r\n this.createLayer(element);\r\n }\r\n\r\n private createLayer(element) {\r\n let tplElements = this.retrieveTemplateOptions();\r\n \r\n if (tplElements) {\r\n this.layer = new LayerPage(document.body, {\r\n afterOpen: async () => this.callbackOpen(),\r\n beforeClose: async () => this.callbackBeforeClose(),\r\n afterClose: async () => this.callbackAfterClose()\r\n }\r\n );\r\n\r\n this.layer.insertContent(createElementFromString(tplElements.innerHTML));\r\n\r\n return this.layer;\r\n }\r\n }\r\n\r\n private callbackOpen() {\r\n this.layerElements = this.layer.getLayerNode();\r\n this.activeSlideId = this.getDatasetId();\r\n \r\n if (!this.isInitialized) {\r\n this.isInitialized = true;\r\n this.layer.getLayerNode().style.overflow = 'hidden';\r\n if (this.activeSlideId >= 0) {\r\n this.setImageSlider(this.activeSlideId)\r\n .setThumbSlider(this.activeSlideId)\r\n .addlistenerImageSlider();\r\n\r\n if (this.thumbs.length > 1){\r\n this.addPanel()\r\n .addListenerBtnPanel()\r\n .addlistenerThumbs()\r\n .addActiveClass(this.activeSlideId);\r\n }\r\n }\r\n } else {\r\n if (this.activeSlideId >= 0) {\r\n this.setImageSlider(this.activeSlideId)\r\n .setThumbSlider(this.activeSlideId)\r\n .addlistenerImageSlider();\r\n\r\n if (this.thumbs.length > 1){\r\n this.addPanel()\r\n .addListenerBtnPanel()\r\n .addlistenerThumbs()\r\n .removeActiveClass()\r\n .addActiveClass(this.activeSlideId);\r\n }\r\n }\r\n }\r\n\r\n // new NivTZoom();\r\n \r\n\r\n return this;\r\n }\r\n\r\n private getDatasetId() {\r\n let images = this.layerElements.querySelectorAll('.nx-product-zoom__image-slider-item');\r\n for (var i = 0; i < images.length; i++) {\r\n if (images[i].dataset.slideId === this.productStageActiveSlideId) {\r\n return i;\r\n }\r\n }\r\n }\r\n\r\n private setImageSlider(index) {\r\n argsImageSlider.startIndex = index;\r\n this.imageSlider = new Slider(this.layer.getLayerNode().querySelector('.nx-product-zoom__image-slider'), argsImageSlider);\r\n \r\n return this;\r\n }\r\n\r\n private setThumbSlider(index) {\r\n argsThumbSlider.items = this.numberOfThumbs;\r\n argsThumbSlider.slideBy = this.numberOfThumbs;\r\n argsThumbSlider.startIndex = index;\r\n\r\n this.thumbSlider = new Slider(this.layer.getLayerNode().querySelector('.nx-product-zoom__thumb-slider'), argsThumbSlider);\r\n this.thumbs = this.thumbSlider.sliderInfo.slideItems;\r\n\r\n return this;\r\n }\r\n\r\n private addlistenerThumbs() {\r\n for (let i = 0; i < this.thumbs.length; i++) {\r\n let thumb = this.thumbs[i];\r\n thumb.addEventListener('click', (event) => {\r\n this.toggleActiveThumbs(i);\r\n this.productStageGotoSlide(parseInt(thumb.dataset.slideId));\r\n });\r\n }\r\n return this;\r\n }\r\n\r\n private addlistenerImageSlider () {\r\n let imageSliderInfo = this.imageSlider.sliderInfo;\r\n \r\n this.imageSlider.slider.events.on('touchEnd', () => { \r\n this.onClickArrowImageSlider()\r\n });\r\n \r\n this.imageSlider.slider.events.on('dragEnd', () => {\r\n this.onClickArrowImageSlider()\r\n });\r\n\r\n imageSliderInfo.prevButton && imageSliderInfo.prevButton.addEventListener('click', () => { this.onClickArrowImageSlider(); });\r\n imageSliderInfo.nextButton && imageSliderInfo.nextButton.addEventListener('click', () => { this.onClickArrowImageSlider(); });\r\n\r\n // document.dispatchEvent(new CustomEvent('NiveaBasicTracking:reInitHandlers')); \r\n\r\n return this;\r\n }\r\n\r\n private onClickArrowImageSlider() {\r\n setTimeout( () => {\r\n let index = this.imageSlider.sliderInfo.index;\r\n this.toggleActiveThumbs(index);\r\n }, 50);\r\n return this;\r\n }\r\n\r\n private toggleActiveThumbs(id: number) {\r\n this.removeActiveClass()\r\n .addActiveClass(id);\r\n\r\n this.activeSlideId = id;\r\n\r\n if( this.imageSlider.sliderIndex !== id){\r\n this.imageSlider.goTo(id);\r\n }\r\n\r\n // move parent product stage slider to current slide\r\n // IMPORTANT videos will not be displayed in the overlay, due to that \r\n // only the dataset.slideId synchronizes overlay and product stage slider \r\n this.productStageGotoSlide(this.thumbs[id].dataset.slideId);\r\n\r\n return this;\r\n }\r\n\r\n private removeActiveClass() {\r\n Array.from(this.thumbs).forEach(item => {\r\n item?.querySelector('.--active')?.classList.remove('--active');\r\n });\r\n\r\n return this;\r\n }\r\n\r\n private addActiveClass(id: number) {\r\n let thumb = this.thumbs[id].children[0];\r\n if (!thumb.classList.contains('--active')) {\r\n thumb.classList.add('--active');\r\n }\r\n return this;\r\n }\r\n\r\n private productStageGotoSlide(id: number) {\r\n this.callbackSliderProductStage(id);\r\n }\r\n\r\n private addPanel() {\r\n let panel = this.layerElements.querySelector('.nx-product-zoom__panel');\r\n panel.classList.remove('nx-product-zoom--hide');\r\n \r\n return this;\r\n }\r\n\r\n private addListenerBtnPanel() {\r\n let panelBtn = this.layerElements.querySelector('.nx-product-zoom__panel-btn');\r\n panelBtn.addEventListener('click', (event) => {\r\n event.currentTarget.parentNode.classList.toggle('--open');\r\n });\r\n \r\n return this;\r\n }\r\n\r\n private retrieveTemplateOptions() {\r\n let options = JSON.parse(this.options);\r\n const template = document.querySelector(options.template);\r\n\r\n return template;\r\n }\r\n\r\n private callbackBeforeClose() { \r\n this.imageSlider.destroy();\r\n\r\n return this;\r\n }\r\n\r\n private callbackAfterClose() {\r\n return this;\r\n }\r\n\r\n openLayer(activeSlideId?:string) {\r\n this.productStageActiveSlideId = this.sliderProductStage?.slider.currentSlide || activeSlideId;\r\n this.layer.open();\r\n }\r\n}"],"names":["spinnerClasses","LayerAdvance","constructor","element","options","super","this","init","getDefaultOptions","defOptions","layerModifierClasses","layerMainClass","layerCloseBtnModifierClass","layerCloseIconClass","beforeOpen","async","window","NiveaX","initModules","afterOpen","beforeClose","afterClose","isOpen","document","body","contains","layer","showSpinner","querySelector","open","callback","backButton","classList","add","loadShopPrices","close","sessionStorage","removeItem","layersArray","layers","getLayers","getItem","JSON","parse","includes","location","hash","index","findIndex","i","slice","setItem","stringify","length","remove","TakeWhileOperator","predicate","inclusive","prototype","call","subscriber","source","subscribe","TakeWhileSubscriber","_super","destination","_this","_next","value","result","err","error","nextOrComplete","predicateResult","Boolean","next","complete","Subscriber","moduleSelector","LayerPage","setup","selector","Array","from","querySelectorAll","filter","node","dataset","moduleInitialized","forEach","listenToEvents","touchStart$","fromEvent","layerContent","passive","pipe","e","target","currentTarget","touchEnd$","tap","requestAnimationFrame","wrapper","removeAttribute","touchMove$","map","changedTouches","clientY","switchMap","startY","combineLatest","of","takeUntil","lift","moveY","translateY","percentResult","documentElement","offsetHeight","styles","transform","Math","max","min","transition","overflow","opacity","setAttribute","getLayerNode","argsImageSlider","controls","controlsText","items","loop","mouseDrag","nav","speed","responsive","startIndex","lazyload","argsThumbSlider","fixedWidth","gutter","edgePadding","slideBy","ProductStageOverlay","sliderStage","callbackSliderProductStage","sliderProductStage","numberOfThumbs","createLayer","tplElements","retrieveTemplateOptions","callbackOpen","callbackBeforeClose","callbackAfterClose","insertContent","innerHTML","layerElements","activeSlideId","getDatasetId","isInitialized","setImageSlider","setThumbSlider","addlistenerImageSlider","thumbs","addPanel","addListenerBtnPanel","addlistenerThumbs","removeActiveClass","addActiveClass","style","images","slideId","productStageActiveSlideId","imageSlider","thumbSlider","sliderInfo","slideItems","thumb","addEventListener","event","toggleActiveThumbs","productStageGotoSlide","parseInt","imageSliderInfo","slider","events","on","onClickArrowImageSlider","prevButton","nextButton","setTimeout","id","sliderIndex","goTo","item","children","parentNode","toggle","template","destroy","openLayer","currentSlide"],"sourceRoot":""}