{"version":3,"file":"./modules/ProductDetailPage.xxxxxxxx.js","mappings":"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","sources":["webpack:///./modules/Tab.ts","webpack:///./modules/ProductDetailPage/index.ts","webpack:///./modules/ProductDetailPage/ProductDetailPage.ts","webpack:///./modules/ProductDetailPage/ProductDetailPageWithState.ts"],"sourcesContent":["/// \r\nconst moduleSelector = '[data-module=\"Tab\"]';\r\nimport { getElementHeight } from '../helpers/DOMHelpers';\r\nimport { horizontalScrolling } from '../helpers/helperFunctions';\r\n\r\nexport default class Tab {\r\n protected cssClass: any;\r\n protected tabLinks: HTMLElement[] = Array.from(this.element.querySelectorAll('[data-tab]'));\r\n protected tabSections: HTMLElement[] = Array.from(this.element.querySelectorAll('.nx-tabs__item'));\r\n protected tabList: HTMLElement = this.element.querySelector('.nx-scroll-wrapper__inner');\r\n protected wrapperSelector = this.element.querySelector('.nx-scroll-wrapper__inner');\r\n protected imageList: HTMLElement[] = Array.from(this.element.querySelectorAll('.nx-tab-background'));\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 Tab(element);\r\n element.dataset.moduleInitialized = 'true';\r\n });\r\n }\r\n\r\n constructor(public element: HTMLElement) {\r\n if (this.tabLinks.length <= 1) return;\r\n\r\n this.cssClass = {\r\n activeLink: 'nx-tabs-links__item--active',\r\n activeSection: 'nx-tabs__item--active',\r\n activeImage: 'nx-tab-background--active'\r\n };\r\n\r\n this.init();\r\n this.element.addEventListener(\"niveax:openTab\", (event) => this.openTabFromAnchor(event));\r\n }\r\n\r\n protected init() {\r\n this.setTabEventHandler();\r\n this.setActiveTabOnChange(0);\r\n horizontalScrolling(this.tabList);\r\n this.openTabFromAnchorOnLoad();\r\n }\r\n\r\n private setTabEventHandler(): Tab {\r\n this.tabLinks.forEach(link => link.addEventListener('click', (e) => this.onTabClick(e)));\r\n return this;\r\n }\r\n\r\n private onTabClick(e) {\r\n e.preventDefault();\r\n this.changeTab(e);\r\n }\r\n\r\n protected changeTab(e: Event, tabLink = null): Tab {\r\n this.clearActiveClass();\r\n this.setActiveContainer(e, tabLink);\r\n return this;\r\n }\r\n\r\n private openTabFromAnchor(event: Event) {\r\n const tabItem = (event).detail.tabNode as HTMLElement;\r\n const tabID = tabItem.getAttribute('data-tab-idx');\r\n this.changeTab(event, tabID)\r\n this.scrollToActive(tabID);\r\n }\r\n\r\n protected openTabFromAnchorOnLoad() {\r\n const hash: string = window.location.hash.substring(1);\r\n if (hash && hash.indexOf('layer') === -1 && this.element.contains(document.getElementById(`${hash}`))) {\r\n const tabItem = this.findTabItemByAnchor(hash);\r\n this.openTab(tabItem);\r\n\r\n document.getElementById(`${hash}`).scrollIntoView();\r\n\r\n const anchorNavHeight = (document.querySelector('.nx-anchor-navigation'));\r\n window.scrollBy({\r\n top: anchorNavHeight ? -anchorNavHeight.clientHeight : 0,\r\n left: 0,\r\n behavior: 'auto'\r\n });\r\n }\r\n }\r\n\r\n private findTabItemByAnchor(hash: string): HTMLElement {\r\n const tabItems = this.element.querySelectorAll('.nx-tab-container-item');\r\n const anchorTabItem: HTMLElement = Array.from(tabItems).find(element => element.contains(document.getElementById(`${hash}`))) as HTMLElement;\r\n return anchorTabItem;\r\n }\r\n\r\n private openTab(tabItem: HTMLElement) {\r\n const tabID = tabItem.getAttribute('data-tab-idx');\r\n this.changeTab(null, tabID)\r\n this.scrollToActive(tabID);\r\n }\r\n\r\n private scrollToActive(tabID) {\r\n const activeTab = this.element.querySelector(`.${this.cssClass.activeLink}[data-tab=\"${tabID}\"]`);\r\n if (!activeTab)\r\n return false;\r\n\r\n const scrollValue = (activeTab.getBoundingClientRect().left - (window.innerWidth / 2)) + 40;\r\n this.wrapperSelector.scrollLeft += scrollValue;\r\n }\r\n\r\n protected setActiveTabOnChange(index: number) {\r\n (this.tabLinks[index]).classList.add(this.cssClass.activeLink);\r\n (this.tabSections[index]).classList.add(this.cssClass.activeSection);\r\n }\r\n\r\n protected clearActiveClass(): void {\r\n this.tabLinks.forEach(link => link.classList.remove(this.cssClass.activeLink));\r\n this.tabSections.forEach(section => section.classList.remove(this.cssClass.activeSection));\r\n this.imageList.forEach(image => image.classList.remove(this.cssClass.activeImage))\r\n this.element.setAttribute('style', '');\r\n }\r\n\r\n protected setActiveContainer(e: Event, tabID = null): void {\r\n let id = tabID || (e.currentTarget).getAttribute('data-tab'),\r\n activeTab = this.element.querySelector(`[id=\"${id}\"], [data-tab-idx=\"${id}\"]`) as HTMLElement,\r\n activeImage = this.element.querySelector(`[data-tab-image-id=\"${id}\"]`) as HTMLElement;\r\n const activeLink = tabID ? this.element.querySelector(`.nx-tabs-links__item[data-tab=\"${tabID}\"]`) : (e.target)\r\n\r\n this.setActiveLink(activeLink);\r\n this.setActiveTab(activeTab);\r\n activeImage ? this.setActiveImage(activeImage): '';\r\n this.updateBackgroundColor(activeLink);\r\n }\r\n\r\n protected setActiveLink(activeLink: HTMLElement) {\r\n activeLink.classList.add(this.cssClass.activeLink);\r\n }\r\n\r\n protected setActiveTab(activeTab: HTMLElement) {\r\n activeTab.classList.add(this.cssClass.activeSection);\r\n }\r\n\r\n protected getHeightActiveTab(activeTab: HTMLElement): number {\r\n return activeTab ? getElementHeight(activeTab) : 0;\r\n }\r\n\r\n protected setActiveImage(image: HTMLElement) {\r\n image.classList.add(this.cssClass.activeImage);\r\n }\r\n \r\n private updateBackgroundColor(activeLink: HTMLElement) {\r\n this.element.setAttribute('style', activeLink?.getAttribute('data-style'))\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 Tab.setup(moduleSelector);\r\n\r\n module.hot.accept(() => {\r\n Tab.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 Tab.setup(moduleSelector);\r\n}","import ProductDetailPage from './ProductDetailPageWithState';\r\nexport default ProductDetailPage;","/// \r\nimport { addClass, createElementFromString, getContent, removeClass } from '../../helpers/DOMHelpers';\r\nimport { getCookie, setCookie } from '../../helpers/helperFunctions';\r\nimport { createPDPBottomBarEshop, createPDPBottomBarWtb, createPDPBottomBarWtbButton } from '../../libs/markUpCreator';\r\nconst moduleSelector = '[data-module=\"ProductDetailPage\"]';\r\n\r\nimport Tab from '../Tab';\r\n\r\nexport default class ProductDetailPage {\r\n cookieName: string = \"RecentlyViewed\";\r\n demandwareId: string;\r\n recentlyViewedArray: Array = new Array();\r\n productsToShow: number = 12;\r\n scrollTo: any;\r\n cookieExpiration: number;\r\n policyAcceptedCookieName: string = \"cookie-policy-accepted\";\r\n tab: any;\r\n tabElement: HTMLElement;\r\n productDetailElement: HTMLElement;\r\n intersectionObserver: IntersectionObserver;\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 ProductDetailPage(element);\r\n element.dataset.moduleInitialized = 'true';\r\n });\r\n }\r\n\r\n constructor(public element: HTMLElement) {\r\n this.tabElement = document.querySelector('.nx-tabs');\r\n this.productDetailElement = this.element.closest('.nx-product-detail');\r\n this.cookieExpiration = Number(document.body.dataset.expirationPeriod || 365);\r\n this.demandwareId = document.querySelector(\".nx-product-information[data-demandware-id]\") ? document.querySelector(\".nx-product-information[data-demandware-id]\").attributes[\"data-demandware-id\"].value : \"\";\r\n const policyAcceptedValue = getCookie(this.policyAcceptedCookieName);\r\n\r\n document.addEventListener('niveax:cookieBannerAccept', () => this.initCookie());\r\n if (policyAcceptedValue === '1' || policyAcceptedValue === \"\") this.initCookie();\r\n\r\n if (this.tabElement) this.tab = new Tab(this.productDetailElement);\r\n\r\n this.init();\r\n }\r\n\r\n init() {\r\n this.loadMoreListener();\r\n this.eventHandlers();\r\n\r\n document.addEventListener('layer:ShowLayer', () => this.comparePreviouslyRatedProduct());\r\n this.initBottomBar();\r\n this.listenToCartChange();\r\n }\r\n\r\n private listenToCartChange() {\r\n document.addEventListener('addtocart:cartchange', () => {\r\n this.initBottomBar();\r\n });\r\n }\r\n\r\n private initBottomBar() {\r\n const navigationBottomBar = document.querySelector('.nx-mob-nav__bottom-bar');\r\n if (navigationBottomBar) return;\r\n\r\n const addToCartElement = document.querySelector(\".nx-add-to-cart\");\r\n if (addToCartElement) {\r\n this.initBottomBarEshop(addToCartElement);\r\n } else {\r\n const bottomBar = this.createBottomBarContentWtb();\r\n if (!bottomBar) return;\r\n\r\n this.addWtbElementsToBottomBar(bottomBar);\r\n this.observeBottomBarIntersection();\r\n }\r\n\r\n }\r\n\r\n private initBottomBarEshop(addToCartElement: Element) {\r\n const addToCartClone = addToCartElement?.cloneNode(true) as HTMLElement;\r\n const bottomBarButton = addToCartClone?.querySelector('button');\r\n\r\n if (!addToCartClone || !bottomBarButton) {\r\n document.addEventListener('addtocart:loadpriceinfo', () => {\r\n this.initBottomBar();\r\n });\r\n\r\n return;\r\n }\r\n\r\n const bottomBar = this.createBottomBarContentEshop();\r\n\r\n if (!bottomBar) return;\r\n\r\n this.addShopElementsToBottomBar(bottomBar, addToCartClone, bottomBarButton);\r\n document.dispatchEvent(new CustomEvent('productdetailpage:bottombarinit', { detail: bottomBar }));\r\n this.observeBottomBarIntersection();\r\n }\r\n\r\n private addWtbElementsToBottomBar(bottomBar: HTMLElement) {\r\n this.addProductImageToBottomBar(bottomBar);\r\n this.addRatingToBottomBar(bottomBar);\r\n this.addProductNameToBottomBar(bottomBar);\r\n\r\n this.addWtbButtonToBottomBar(bottomBar);\r\n }\r\n\r\n private addWtbButtonToBottomBar(bottomBar: HTMLElement) {\r\n const icon = bottomBar?.getAttribute('data-wtb-icon') ? bottomBar.getAttribute('data-wtb-icon') : '';\r\n const label = bottomBar?.getAttribute('data-wtb-button-txt');\r\n if (!label) return;\r\n\r\n const wtbButton = createPDPBottomBarWtbButton(icon, label);\r\n const contentWrapper = bottomBar.querySelector('.nx-product-bottom-bar__content-wrapper');\r\n contentWrapper.append(wtbButton);\r\n }\r\n\r\n private addShopElementsToBottomBar(bottomBar: HTMLElement, addToCartClone: HTMLElement, bottomBarButton: HTMLButtonElement) {\r\n this.addPricesToBottomBar(bottomBar, addToCartClone);\r\n this.addAddToCartButtonsToBottomBar(bottomBar, addToCartClone, bottomBarButton);\r\n this.addProductImageToBottomBar(bottomBar);\r\n this.addRatingToBottomBar(bottomBar);\r\n this.addProductNameToBottomBar(bottomBar);\r\n }\r\n\r\n initCookie() {\r\n if (this.getRecentlyViewedCookie(this.cookieName)) {\r\n if (this.currentProductExist() < 0) {\r\n this.setCookie();\r\n }\r\n } else {\r\n this.setCookie();\r\n }\r\n }\r\n\r\n getRecentlyViewedCookie(cookieName: string): string {\r\n return getCookie(cookieName);\r\n }\r\n\r\n comparePreviouslyRatedProduct(): void {\r\n const savedDemandwareId = sessionStorage.getItem(`demandwareId`);\r\n if (savedDemandwareId) {\r\n if (savedDemandwareId !== this.demandwareId) {\r\n this.removeFormSession();\r\n sessionStorage.setItem(`demandwareId`, this.demandwareId);\r\n }\r\n } else {\r\n sessionStorage.setItem(`demandwareId`, this.demandwareId);\r\n }\r\n }\r\n\r\n removeFormSession(): void {\r\n for (let i = 0; i < sessionStorage.length; i++) {\r\n if (sessionStorage.key(i).indexOf('form_id_') > 0) {\r\n sessionStorage.removeItem(sessionStorage.key(i));\r\n }\r\n }\r\n }\r\n\r\n unserializeCookie() {\r\n this.recentlyViewedArray = this.getRecentlyViewedCookie(this.cookieName).split(\"|\");\r\n return this.recentlyViewedArray;\r\n }\r\n\r\n addToProductArray(idArray: Array, newDemandwareId: string): Array {\r\n if (idArray) {\r\n if (idArray.length >= this.productsToShow) {\r\n idArray.pop();\r\n }\r\n idArray.unshift(newDemandwareId);\r\n } else {\r\n idArray.push(newDemandwareId);\r\n }\r\n\r\n return idArray;\r\n }\r\n\r\n serializeCookie(idArray: Array) {\r\n return idArray.join('|');\r\n }\r\n\r\n currentProductExist(): number {\r\n return this.unserializeCookie().indexOf(this.demandwareId);\r\n }\r\n\r\n private eventHandlers() {\r\n let ratingsAndReviewsAnchor = document.querySelector('.nx-rating--pdp');\r\n if (!ratingsAndReviewsAnchor) return;\r\n \r\n this.addListenerToRatingsAndReviewsAnchor(ratingsAndReviewsAnchor);\r\n }\r\n\r\n private addListenerToRatingsAndReviewsAnchor(ratingsAndReviewsAnchor: Element) {\r\n ratingsAndReviewsAnchor.addEventListener('click', () => {\r\n if (this.productDetailElement) {\r\n this.openRatingTab()\r\n }\r\n \r\n else {\r\n if (this.scrollTo === undefined) {\r\n const getScrollTo = () => import(/* webpackChunkName: \"ScrollTo\" */'../../ScrollTo');\r\n getScrollTo().then((module) => { this.scrollTo = new module.default(); this.scrollToRatingSection(); });\r\n return\r\n }\r\n\r\n this.scrollToRatingSection()\r\n }\r\n });\r\n }\r\n\r\n private scrollToRatingSection() {\r\n const ratingsAndReviewsSection = document.querySelector('.nx-ratings-and-reviews-section'),\r\n expandableTitle: HTMLElement = ratingsAndReviewsSection.querySelector('h2.nx-u-section__headline');\r\n \r\n document.querySelector('body').classList.add('nx-scrolling');\r\n \r\n if (!ratingsAndReviewsSection.classList.contains(\"nx-expand-section--active\")) {\r\n expandableTitle?.click();\r\n } \r\n\r\n this.scrollTo?.animateScrollTop(ratingsAndReviewsSection, 450, 0, () => {\r\n document.querySelector('body').classList.remove('nx-scrolling');\r\n });\r\n return this;\r\n }\r\n\r\n private openRatingTab() {\r\n const tabSections: HTMLElement[] = Array.from(this.productDetailElement.querySelectorAll('.nx-tabs__item'));\r\n const index = tabSections.findIndex(item => item.querySelector('.nx-ratings-and-reviews-section-slider'));\r\n if (index > -1) {\r\n this.tab.clearActiveClass();\r\n this.tab.setActiveTabOnChange(index);\r\n this.productDetailElement.querySelector('.nx-tabs__wrapper').removeAttribute('style');\r\n };\r\n }\r\n\r\n private loadMoreListener() {\r\n document.addEventListener('NiveaXLoadMoreLoaded', (event: CustomEvent) => {\r\n let reviewsSection: HTMLElement = document.querySelector('.nx-ratings-and-reviews-section .nx-u-container');\r\n reviewsSection.style.maxHeight = \"initial\";\r\n });\r\n\r\n return this;\r\n }\r\n\r\n private setCookie() {\r\n setCookie(this.cookieName, this.serializeCookie(this.addToProductArray(this.recentlyViewedArray, this.demandwareId)), this.cookieExpiration);\r\n }\r\n\r\n private observeBottomBarIntersection() {\r\n this.intersectionObserver = this.createIntersectionObserver();\r\n\r\n const footer = document.querySelector('.nx-footer');\r\n if (footer) {\r\n this.intersectionObserver.observe(footer);\r\n }\r\n\r\n const stage = document.querySelector(\".nx-product-stage\");\r\n if (stage) {\r\n this.intersectionObserver.observe(stage);\r\n }\r\n }\r\n\r\n private createIntersectionObserver() {\r\n return new IntersectionObserver((entries) => {\r\n const bottomBar = this.element.querySelector('.nx-product-bottom-bar');\r\n if (bottomBar) {\r\n entries.forEach(element => {\r\n element.isIntersecting ? removeClass(bottomBar, 'nx-product-bottom-bar--visible') : addClass(bottomBar, 'nx-product-bottom-bar--visible');\r\n });\r\n }\r\n });\r\n }\r\n\r\n private createBottomBarContentEshop() {\r\n const bottomBar = this.element.querySelector('.nx-product-bottom-bar');\r\n if (!bottomBar) return;\r\n\r\n bottomBar.innerHTML = '';\r\n bottomBar.appendChild(createPDPBottomBarEshop());\r\n\r\n return bottomBar;\r\n }\r\n\r\n private createBottomBarContentWtb() {\r\n const bottomBar = this.element.querySelector('.nx-product-bottom-bar');\r\n if (!bottomBar) return;\r\n\r\n bottomBar.innerHTML = '';\r\n bottomBar.appendChild(createPDPBottomBarWtb());\r\n\r\n return bottomBar;\r\n }\r\n\r\n private addProductNameToBottomBar(bottomBar: HTMLElement) {\r\n const productNameWrapper = bottomBar.querySelector('.nx-product-bottom-bar__product-wrapper');\r\n if (productNameWrapper) {\r\n const productName = this.getProductName();\r\n productName ? productNameWrapper.append(productName) : '';\r\n }\r\n }\r\n\r\n private addRatingToBottomBar(bottomBar: HTMLElement) {\r\n const productNameWrapper = bottomBar.querySelector('.nx-product-bottom-bar__product-wrapper');\r\n if (productNameWrapper) {\r\n const rating = this.getRating();\r\n if (rating) {\r\n this.addListenerToRatingsAndReviewsAnchor(rating);\r\n productNameWrapper.append(rating);\r\n }\r\n }\r\n }\r\n\r\n private addProductImageToBottomBar(bottomBar: HTMLElement) {\r\n const imageWrapper = bottomBar.querySelector('.nx-product-bottom-bar__image-wrapper');\r\n if (imageWrapper) {\r\n const productImage = this.getProductImage();\r\n productImage ? imageWrapper.appendChild(productImage) : '';\r\n }\r\n }\r\n\r\n private addAddToCartButtonsToBottomBar(bottomBar: HTMLElement, addToCartClone: HTMLElement, bottomBarButton: HTMLButtonElement) {\r\n const contentWrapper = bottomBar.querySelector('.nx-product-bottom-bar__content-wrapper');\r\n const quantityDropdown = addToCartClone.querySelector('.nx-range-dropdown');\r\n bottomBarButton?.classList.add('nx-product-bottom-bar__add-to-cart-button');\r\n\r\n contentWrapper?.append(quantityDropdown, bottomBarButton);\r\n }\r\n\r\n private addPricesToBottomBar(bottomBar: HTMLElement, addToCartBottomBar: HTMLElement) {\r\n const priceWrapper = bottomBar.querySelector('.nx-product-bottom-bar__price-wrapper');\r\n if (priceWrapper) {\r\n const originalPrice = addToCartBottomBar.querySelector('.nx-original-price') ? addToCartBottomBar.querySelector('.nx-original-price') : '';\r\n const actualPrice = addToCartBottomBar.querySelector('.nx-pricing') ? addToCartBottomBar.querySelector('.nx-pricing') : '';\r\n const unitPrice = addToCartBottomBar.querySelector('.nx-unit-price') ? addToCartBottomBar.querySelector('.nx-unit-price') : '';\r\n\r\n const wrapperPricing = priceWrapper.querySelector('.nx-product-bottom-bar__price-wrapper-pricing');\r\n wrapperPricing?.append(originalPrice, actualPrice);\r\n\r\n const wrapperUnitPrice = priceWrapper.querySelector('.nx-product-bottom-bar__price-wrapper-unit-price');\r\n wrapperUnitPrice?.append(unitPrice);\r\n }\r\n }\r\n\r\n private getProductImage(): HTMLElement {\r\n const imageElement = this.element.querySelector(\".nx-product-stage__item--image\")?.cloneNode(true) as HTMLElement;\r\n return imageElement?.querySelector(\"picture\");\r\n }\r\n\r\n private getRating(): HTMLElement {\r\n return this.element.querySelector(\".nx-rating\")?.cloneNode(true) as HTMLElement;\r\n }\r\n\r\n private getProductName(): HTMLElement {\r\n const productNameElement = document.querySelector(\".nx-product-stage__headline\") as HTMLElement,\r\n name = productNameElement ? getContent(productNameElement) : '';\r\n\r\n return createElementFromString(`

${name}

`);\r\n }\r\n}\r\n","import { map, filter } from 'rxjs/operators';\r\nimport { getOptions, isNotUndefined } from '../../helpers/helperFunctions';\r\n\r\n//import { isNotUndefined } from '../../helpers/helperFunctions';\r\nimport ProductDetailPage from './ProductDetailPage';\r\nimport { ClassWithState } from '../../store';\r\n//import { CircleNavigation } from '../CircleNavigation';\r\n//import { moveNavLeft, moveNavRight } from '../../store/actions';\r\n\r\nconst moduleSelector = '[data-module=\"ProductDetailPage\"]';\r\n\r\nexport default class ProductDetailPageWithState extends ClassWithState(ProductDetailPage) {\r\n private options: ProductDetailPageOptions;\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 ProductDetailPageWithState(element);\r\n element.dataset.moduleInitialized = 'true';\r\n });\r\n }\r\n\r\n constructor(element: HTMLElement, options: ProductDetailPageOptions = {}) {\r\n super(element);\r\n\r\n this.options = getOptions(this.element, Object.assign(this.getDefaultOptions(), options));\r\n let addToCartFlag: HTMLElement = this.element.querySelector(`.${this.options.addToCartFlagClass}`);\r\n\r\n if (!addToCartFlag) return;\r\n\r\n this.state$.pipe(\r\n map(store => store.circleNav),\r\n filter(isNotUndefined),\r\n map(circleNav => circleNav.position)\r\n ).subscribe(position => {\r\n this.adjustAddToCartFlagPosition(addToCartFlag, position);\r\n });\r\n }\r\n\r\n protected adjustAddToCartFlagPosition(element: HTMLElement, navigationPosition: string): ProductDetailPageWithState {\r\n\r\n if (navigationPosition === 'left') {\r\n this.addToCartFlagPositionClass(element, 'left');\r\n } else {\r\n this.removeToCartFlagPositionClass(element, 'left');\r\n }\r\n\r\n return this;\r\n }\r\n\r\n protected addToCartFlagPositionClass(element: HTMLElement, navigationPosition: string): ProductDetailPageWithState {\r\n element.classList.add(`${this.options.addToCartFlagClass}--${navigationPosition}`);\r\n return this;\r\n }\r\n\r\n protected removeToCartFlagPositionClass(element: HTMLElement, navigationPosition: string): ProductDetailPageWithState {\r\n element.classList.remove(`${this.options.addToCartFlagClass}--${navigationPosition}`);\r\n return this;\r\n }\r\n\r\n protected getDefaultOptions(): ProductDetailPageOptions {\r\n return {\r\n addToCartFlagClass: 'nx-add-to-cart-flag',\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 ProductDetailPageWithState.setup(moduleSelector);\r\n\r\n module.hot.accept(() => {\r\n ProductDetailPageWithState.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 ProductDetailPageWithState.setup(moduleSelector);\r\n}"],"names":["moduleSelector","Tab","setup","selector","Array","from","document","querySelectorAll","filter","node","dataset","moduleInitialized","forEach","element","constructor","tabLinks","this","tabSections","tabList","querySelector","wrapperSelector","imageList","length","cssClass","activeLink","activeSection","activeImage","init","addEventListener","event","openTabFromAnchor","setTabEventHandler","setActiveTabOnChange","openTabFromAnchorOnLoad","link","e","onTabClick","preventDefault","changeTab","tabLink","clearActiveClass","setActiveContainer","tabID","detail","tabNode","getAttribute","scrollToActive","hash","window","location","substring","indexOf","contains","getElementById","tabItem","findTabItemByAnchor","openTab","scrollIntoView","anchorNavHeight","scrollBy","top","clientHeight","left","behavior","tabItems","find","activeTab","scrollValue","getBoundingClientRect","innerWidth","scrollLeft","index","classList","add","remove","section","image","setAttribute","id","currentTarget","target","setActiveLink","setActiveTab","setActiveImage","updateBackgroundColor","getHeightActiveTab","ProductDetailPage","cookieName","recentlyViewedArray","productsToShow","policyAcceptedCookieName","tabElement","productDetailElement","closest","cookieExpiration","Number","body","expirationPeriod","demandwareId","attributes","value","policyAcceptedValue","initCookie","tab","loadMoreListener","eventHandlers","comparePreviouslyRatedProduct","initBottomBar","listenToCartChange","addToCartElement","initBottomBarEshop","bottomBar","createBottomBarContentWtb","addWtbElementsToBottomBar","observeBottomBarIntersection","addToCartClone","cloneNode","bottomBarButton","createBottomBarContentEshop","addShopElementsToBottomBar","dispatchEvent","CustomEvent","addProductImageToBottomBar","addRatingToBottomBar","addProductNameToBottomBar","addWtbButtonToBottomBar","icon","label","wtbButton","append","addPricesToBottomBar","addAddToCartButtonsToBottomBar","getRecentlyViewedCookie","currentProductExist","setCookie","savedDemandwareId","sessionStorage","getItem","removeFormSession","setItem","i","key","removeItem","unserializeCookie","split","addToProductArray","idArray","newDemandwareId","pop","unshift","push","serializeCookie","join","ratingsAndReviewsAnchor","addListenerToRatingsAndReviewsAnchor","openRatingTab","undefined","scrollTo","getScrollTo","then","module","default","scrollToRatingSection","ratingsAndReviewsSection","expandableTitle","click","animateScrollTop","findIndex","item","removeAttribute","style","maxHeight","intersectionObserver","createIntersectionObserver","footer","observe","stage","IntersectionObserver","entries","isIntersecting","innerHTML","appendChild","productNameWrapper","productName","getProductName","rating","getRating","imageWrapper","productImage","getProductImage","contentWrapper","quantityDropdown","addToCartBottomBar","priceWrapper","originalPrice","actualPrice","unitPrice","wrapperPricing","wrapperUnitPrice","imageElement","productNameElement","name","ProductDetailPageWithState","options","super","Object","assign","getDefaultOptions","addToCartFlag","addToCartFlagClass","state$","pipe","store","circleNav","position","subscribe","adjustAddToCartFlagPosition","navigationPosition","addToCartFlagPositionClass","removeToCartFlagPositionClass"],"sourceRoot":""}