{"version":3,"file":"./modules/ProductDetailPage.xxxxxxxx.js","mappings":"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","sources":["webpack:///./modules/ProductDetailPage/ProductDetailPage.ts","webpack:///./modules/ProductDetailPage/ProductDetailPageWithState.ts","webpack:///./modules/ProductDetailPage/index.ts","webpack:///./modules/Tab.ts"],"sourcesContent":["/// \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}","import ProductDetailPage from './ProductDetailPageWithState';\r\nexport default ProductDetailPage;","/// \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}"],"names":["ProductDetailPage","setup","selector","Array","from","document","querySelectorAll","filter","node","dataset","moduleInitialized","forEach","element","constructor","cookieName","recentlyViewedArray","productsToShow","policyAcceptedCookieName","this","tabElement","querySelector","productDetailElement","closest","cookieExpiration","Number","body","expirationPeriod","demandwareId","attributes","value","policyAcceptedValue","addEventListener","initCookie","tab","init","loadMoreListener","eventHandlers","comparePreviouslyRatedProduct","initBottomBar","listenToCartChange","addToCartElement","initBottomBarEshop","bottomBar","createBottomBarContentWtb","addWtbElementsToBottomBar","observeBottomBarIntersection","addToCartClone","cloneNode","bottomBarButton","createBottomBarContentEshop","addShopElementsToBottomBar","dispatchEvent","CustomEvent","detail","addProductImageToBottomBar","addRatingToBottomBar","addProductNameToBottomBar","addWtbButtonToBottomBar","icon","getAttribute","label","wtbButton","append","addPricesToBottomBar","addAddToCartButtonsToBottomBar","getRecentlyViewedCookie","currentProductExist","setCookie","savedDemandwareId","sessionStorage","getItem","removeFormSession","setItem","i","length","key","indexOf","removeItem","unserializeCookie","split","addToProductArray","idArray","newDemandwareId","pop","unshift","push","serializeCookie","join","ratingsAndReviewsAnchor","addListenerToRatingsAndReviewsAnchor","openRatingTab","undefined","scrollTo","getScrollTo","then","module","default","scrollToRatingSection","ratingsAndReviewsSection","expandableTitle","classList","add","contains","click","animateScrollTop","remove","index","findIndex","item","clearActiveClass","setActiveTabOnChange","removeAttribute","event","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","moduleSelector","ProductDetailPageWithState","options","super","Object","assign","getDefaultOptions","addToCartFlag","addToCartFlagClass","state$","pipe","store","circleNav","position","subscribe","adjustAddToCartFlagPosition","navigationPosition","addToCartFlagPositionClass","removeToCartFlagPositionClass","Tab","tabLinks","tabSections","tabList","wrapperSelector","imageList","cssClass","activeLink","activeSection","activeImage","openTabFromAnchor","setTabEventHandler","openTabFromAnchorOnLoad","link","e","onTabClick","preventDefault","changeTab","tabLink","setActiveContainer","tabID","tabNode","scrollToActive","hash","window","location","substring","getElementById","tabItem","findTabItemByAnchor","openTab","scrollIntoView","anchorNavHeight","scrollBy","top","clientHeight","left","behavior","tabItems","find","activeTab","scrollValue","getBoundingClientRect","innerWidth","scrollLeft","section","image","setAttribute","id","currentTarget","target","setActiveLink","setActiveTab","setActiveImage","updateBackgroundColor","getHeightActiveTab"],"sourceRoot":""}