{"version":3,"file":"./modules/NivTBazaarVoice.xxxxxxxx.js","mappings":"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","sources":["webpack:///./modules/NivTGoogleAnalytics.ts","webpack:///./modules/RatingAndStarsDistribution.ts","webpack:///./modules/NivTBazaarVoice.ts"],"sourcesContent":["/// \r\n\r\nimport { addLayer, trackEvent } from '../ClassWithTracking/helpers';\r\n\r\nconst moduleSelector = '[data-module=\"NivTGoogleAnalytics\"]';\r\n\r\nexport default class NivTGoogleAnalytics {\r\n \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 NivTGoogleAnalytics(element);\r\n element.dataset.moduleInitialized = 'true';\r\n });\r\n }\r\n\r\n constructor(public element: HTMLElement) {\r\n if (window.NiveaX.IsUAEnabled) {\r\n this.init();\r\n }\r\n }\r\n\r\n init() {\r\n let scrollToRatings: HTMLElement = document.querySelector('.nx-rating--pdp');\r\n if (!!scrollToRatings) {\r\n scrollToRatings.addEventListener('click', (e) => trackEvent('rating_event', 'scrollToRatings', ''));\r\n }\r\n\r\n let writeReview: HTMLElement = document.querySelector('.nx-write-review__btn');\r\n\r\n if (!!writeReview) {\r\n writeReview.addEventListener('click', (e) => trackEvent('rating_event', 'writeReviewClick', ''));\r\n\r\n document.addEventListener('layer:ShowLayer', (e) => {\r\n if ((event).detail && (event).detail.layerType == \"rating-and-review\") {\r\n this.trackAlpacaForm(e, writeReview.parentElement.getAttribute('data-form-url'))\r\n }\r\n });\r\n }\r\n\r\n }\r\n\r\n trackAlpacaForm(e, virtualPageViewPath: string) {\r\n addLayer({\r\n event: 'virtualPageview',\r\n virtualPath: decodeURI(virtualPageViewPath),\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 NivTGoogleAnalytics.setup(moduleSelector);\r\n\r\n module.hot.accept(() => {\r\n NivTGoogleAnalytics.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 NivTGoogleAnalytics.setup(moduleSelector);\r\n}","import { addClass, createElementFromString, removeClass } from \"../helpers/DOMHelpers\";\r\nexport default class RatingAndStarsDistribution {\r\n private ratingAndStarsDistributionElement: HTMLElement;\r\n private productReviewsSectionElement: HTMLElement;\r\n private loadReviewsURL: string;\r\n private ratingFilterBtn: HTMLElement;\r\n private spinner: HTMLElement;\r\n\r\n constructor(public element: HTMLElement) {\r\n this.ratingAndStarsDistributionElement = this.element.querySelector(\".nx-product-ratings__rating-and-stars-distribution\");\r\n this.productReviewsSectionElement = this.element.querySelector('.nx-product-reviews__section'); \r\n this.loadReviewsURL = this.ratingAndStarsDistributionElement?.getAttribute('data-filterurl');\r\n this.ratingFilterBtn = this.element.querySelector('.nx-product-ratings__filter');\r\n this.spinner = this.element.querySelector('.nx-product-rating__spinner');\r\n \r\n this.init();\r\n }\r\n\r\n private init(): void {\r\n this.addListenersToRatingSummaries()\r\n this.ratingFilterBtn?.addEventListener('click', ()=> this.removeActiveFilter());\r\n }\r\n\r\n private addListenersToRatingSummaries() {\r\n const ratingWrappers = this.ratingAndStarsDistributionElement?.querySelectorAll('.nx-product-ratings__rating-wrapper');\r\n if (!ratingWrappers) return;\r\n\r\n ratingWrappers.forEach(ratingWrapper => {\r\n const ratingTotal = ratingWrapper.querySelector(\".nx-rating__total\") as HTMLElement,\r\n totalSum = ratingWrapper.querySelector('.nx-rating__total-sum');\r\n\r\n if(!ratingTotal || !totalSum || totalSum.getAttribute('data-star-distribution') == \"0\") return;\r\n \r\n this.addLinkStyleToRatingWrapper(ratingWrapper);\r\n\r\n ratingWrapper.addEventListener(\"click\", () => {\r\n const filterText = ratingWrapper.getAttribute('data-filter-text');\r\n \r\n if(ratingWrapper.classList.contains('nx-product-ratings__rating-wrapper--link-active')){\r\n this.loadReviews('', null);\r\n this.removeActiveLinkStyleOnRatingWrappers(ratingWrappers);\r\n } else {\r\n this.loadReviews(ratingTotal.getAttribute('data-rating'), filterText);\r\n this.toggleActiveLinkStyleOnRatingWrappers(ratingWrapper, ratingWrappers);\r\n }\r\n });\r\n });\r\n }\r\n\r\n private removeActiveFilter () {\r\n const ratingWrappers = this.ratingAndStarsDistributionElement?.querySelectorAll('.nx-product-ratings__rating-wrapper');\r\n this.loadReviews('', null);\r\n this.removeActiveLinkStyleOnRatingWrappers(ratingWrappers);\r\n \r\n }\r\n \r\n private addLinkStyleToRatingWrapper(activeRatingWrapper: Element) {\r\n addClass(activeRatingWrapper, 'nx-product-ratings__rating-wrapper--link');\r\n }\r\n\r\n private toggleActiveLinkStyleOnRatingWrappers(activeRatingWrapper: Element, ratingWrappers: NodeListOf) {\r\n this.removeActiveLinkStyleOnRatingWrappers(ratingWrappers);\r\n addClass(activeRatingWrapper, 'nx-product-ratings__rating-wrapper--link-active');\r\n }\r\n \r\n private removeActiveLinkStyleOnRatingWrappers(ratingWrappers: NodeListOf) {\r\n ratingWrappers.forEach(wrapper => {\r\n removeClass(wrapper, 'nx-product-ratings__rating-wrapper--link-active');\r\n });\r\n }\r\n\r\n private showSpinner() {\r\n this.spinner.classList.remove('nx-product-rating__spinner--hide');\r\n }\r\n\r\n private hideSpinner() {\r\n this.spinner.classList.add('nx-product-rating__spinner--hide');\r\n }\r\n\r\n private removeLoadMoreCustomEventLister() {\r\n document.dispatchEvent(new CustomEvent('NiveaXLoadMoreLoaded:removeEvent'))\r\n }\r\n\r\n private loadReviews(ratingFilter, filterBtnText?: string | null) {\r\n this.showSpinner();\r\n const decodedURL = decodeURIComponent(this.loadReviewsURL);\r\n let ajaxURL: string = decodedURL.replace('###', ratingFilter);\r\n let xhr = new XMLHttpRequest();\r\n \r\n xhr.onload = () => {\r\n if (xhr.status >= 200 && xhr.status < 300) {\r\n const responseElement = createElementFromString(xhr.responseText);\r\n this.productReviewsSectionElement.querySelector('.nx-reviews-wrapper').replaceWith(responseElement);\r\n \r\n if (filterBtnText) {\r\n this.ratingFilterBtn.querySelector('.nx-product-ratings__filter-text').textContent = filterBtnText;\r\n this.ratingFilterBtn.style.visibility = \"\";\r\n }\r\n else {\r\n this.ratingFilterBtn.style.visibility = \"hidden\";\r\n }\r\n\r\n this.removeLoadMoreCustomEventLister();\r\n window.NiveaX.initModules();\r\n this.hideSpinner();\r\n\r\n } else {\r\n console.error('The request failed!');\r\n this.hideSpinner();\r\n }\r\n }\r\n\r\n xhr.open('GET', ajaxURL);\r\n xhr.send();\r\n\r\n return this;\r\n }\r\n}\r\n","/// \r\nimport NivTGoogleAnalytics from './NivTGoogleAnalytics';\r\nimport RatingAndStarsDistribution from './RatingAndStarsDistribution';\r\n\r\nconst moduleSelector = '[data-module=\"NivTBazaarVoice\"]';\r\n\r\nexport default class NivTBazaarVoice {\r\n private requestAttempts: number;\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 NivTBazaarVoice(element);\r\n element.dataset.moduleInitialized = 'true';\r\n });\r\n }\r\n\r\n constructor(public element: HTMLElement) {\r\n this.requestAttempts = 0;\r\n this.init();\r\n }\r\n\r\n init() {\r\n new RatingAndStarsDistribution(this.element);\r\n new NivTGoogleAnalytics(this.element);\r\n this.trackProductPageView();\r\n this.trackingPagination();\r\n\r\n // Track feature stars - https://developer.bazaarvoice.com/conversations-api/tutorials/bv-pixel/product-display-page-overview/featured-used-events#filter_stars\r\n document.querySelector('.nx-rating--pdp')?.addEventListener('click', (e) => {\r\n let starElement: HTMLElement = e.currentTarget;\r\n let totalStars: HTMLElement = starElement.querySelector('.nx-rating__total');\r\n if (!totalStars) return;\r\n\r\n this.trackFeatureUsed('filter', 'stars', totalStars.dataset.rating);\r\n });\r\n\r\n // Track feature Write Review - https://developer.bazaarvoice.com/conversations-api/tutorials/bv-pixel/product-display-page-overview/featured-used-events#write_review\r\n this.element.querySelector('.nx-write-review__btn')?.addEventListener('click', (e) => {\r\n this.trackFeatureUsed('write', 'review', '');\r\n });\r\n\r\n // Track feature Sort - https://developer.bazaarvoice.com/conversations-api/tutorials/bv-pixel/product-display-page-overview/featured-used-events#sort\r\n NiveaX.addToEventStore('niveax:RatingsAndReviews:sort', (event: CustomEvent) => this.trackSort(event));\r\n\r\n // Track feature Pagination\r\n NiveaX.addToEventStore('niveax:RatingsAndReviews:pagination', () => this.trackingPagination());\r\n }\r\n\r\n private trackProductPageView() {\r\n if (window.BV || this.requestAttempts > 5) {\r\n if (!window.BV) return;\r\n\r\n const BV = window.BV,\r\n productId = this.element.dataset.productid,\r\n categoryId = this.element.dataset.categoryid,\r\n rootCategoryId = this.element.dataset.rootcategoryid,\r\n brand = this.element.dataset.brand,\r\n review: Array = Array.from(document.querySelectorAll('.nx-product-reviews__review'));\r\n\r\n const inViewData: Object = {\r\n productId: productId,\r\n bvProduct: 'RatingsAndReviews',\r\n brand: brand,\r\n categoryId: categoryId,\r\n rootCategoryId: rootCategoryId\r\n };\r\n\r\n \r\n const pageViewData = {\r\n bvProduct: 'RatingsAndReviews',\r\n productId: productId,\r\n brand: brand,\r\n type: 'Product',\r\n categoryId: categoryId,\r\n rootCategoryId: rootCategoryId,\r\n numReviews: this.element.dataset.reviewCount,\r\n avgRating: this.element.dataset.averageRating\r\n }\r\n\r\n try {\r\n // Track Product Page View\r\n BV.pixel.trackPageView(pageViewData);\r\n\r\n // Track Viewed Impression\r\n BV.pixel.trackImpression({\r\n contentId: 'reviews',\r\n productId: productId,\r\n categoryId: categoryId,\r\n contentType: 'review',\r\n bvProduct: 'RatingsAndReviews',\r\n brand: brand\r\n });\r\n\r\n for (var i = 0; i < review.length; i++) {\r\n // Track in View Event\r\n BV.pixel.trackInView(inViewData, {\r\n minPixels: 250,\r\n containerId: 'nx-review-id-' + review[i].dataset.reviewid\r\n });\r\n \r\n // Track Viewed CGC\r\n BV.pixel.trackViewedCGC(inViewData, {\r\n minPixels: 250,\r\n minTime: 2500,\r\n containerId: 'nx-review-id-' + review[i].dataset.reviewId\r\n });\r\n }\r\n \r\n\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n \r\n return;\r\n }\r\n\r\n this.requestAttempts++;\r\n\r\n setTimeout(() => { this.trackProductPageView() }, 250);\r\n\r\n };\r\n\r\n private trackSort({ detail: { sortOption } }: CustomEvent) {\r\n this.trackFeatureUsed('sort', sortOption, '');\r\n this.trackingPagination();\r\n };\r\n\r\n private trackingPagination() {\r\n let loadMoreButton: HTMLElement = this.element.querySelector('.nx-btn--load-more');\r\n\r\n loadMoreButton?.addEventListener('click', (e) => {\r\n this.trackFeatureUsed('Pagination', 'pagination', '');\r\n });\r\n }\r\n\r\n /**\r\n * Tracks the 'Feature Used' Event\r\n */\r\n private trackFeatureUsed(name, detail1, detail2) {\r\n if (window.BV) {\r\n var BV = window.BV;\r\n\r\n try {\r\n BV.pixel.trackEvent('Feature', {\r\n type: 'Used',\r\n name: name,\r\n brand: this.element.dataset.brand,\r\n productId: this.element.dataset.productid,\r\n bvProduct: 'RatingsAndReviews',\r\n categoryId: this.element.dataset.categoryid,\r\n detail1: detail1,\r\n detail2: detail2\r\n });\r\n\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\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 NivTBazaarVoice.setup(moduleSelector);\r\n\r\n module.hot.accept(() => {\r\n NivTBazaarVoice.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 NivTBazaarVoice.setup(moduleSelector);\r\n}"],"names":["moduleSelector","NivTGoogleAnalytics","setup","selector","Array","from","document","querySelectorAll","filter","node","dataset","moduleInitialized","forEach","element","constructor","window","NiveaX","IsUAEnabled","this","init","scrollToRatings","querySelector","addEventListener","e","writeReview","event","detail","layerType","trackAlpacaForm","parentElement","getAttribute","virtualPageViewPath","virtualPath","decodeURI","RatingAndStarsDistribution","ratingAndStarsDistributionElement","productReviewsSectionElement","loadReviewsURL","ratingFilterBtn","spinner","addListenersToRatingSummaries","removeActiveFilter","ratingWrappers","ratingWrapper","ratingTotal","totalSum","addLinkStyleToRatingWrapper","filterText","classList","contains","loadReviews","removeActiveLinkStyleOnRatingWrappers","toggleActiveLinkStyleOnRatingWrappers","activeRatingWrapper","wrapper","showSpinner","remove","hideSpinner","add","removeLoadMoreCustomEventLister","dispatchEvent","CustomEvent","ratingFilter","filterBtnText","ajaxURL","decodeURIComponent","replace","xhr","XMLHttpRequest","onload","status","responseElement","responseText","replaceWith","textContent","style","visibility","initModules","console","error","open","send","NivTBazaarVoice","requestAttempts","trackProductPageView","trackingPagination","totalStars","currentTarget","trackFeatureUsed","rating","addToEventStore","trackSort","BV","productId","productid","categoryId","categoryid","rootCategoryId","rootcategoryid","brand","review","inViewData","bvProduct","pageViewData","type","numReviews","reviewCount","avgRating","averageRating","pixel","trackPageView","trackImpression","contentId","contentType","i","length","trackInView","minPixels","containerId","reviewid","trackViewedCGC","minTime","reviewId","log","setTimeout","sortOption","loadMoreButton","name","detail1","detail2","trackEvent"],"sourceRoot":""}