{"version":3,"file":"./modules/NivTBazaarVoice.xxxxxxxx.js","mappings":"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","sources":["webpack:///./modules/NivTBazaarVoice.ts","webpack:///./modules/NivTGoogleAnalytics.ts","webpack:///./modules/RatingAndStarsDistribution.ts"],"sourcesContent":["/// \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}","/// \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"],"names":["moduleSelector","NivTBazaarVoice","setup","selector","Array","from","document","querySelectorAll","filter","node","dataset","moduleInitialized","forEach","element","constructor","this","requestAttempts","init","trackProductPageView","trackingPagination","querySelector","addEventListener","e","totalStars","currentTarget","trackFeatureUsed","rating","NiveaX","addToEventStore","event","trackSort","window","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","error","console","log","setTimeout","detail","sortOption","loadMoreButton","name","detail1","detail2","trackEvent","NivTGoogleAnalytics","IsUAEnabled","scrollToRatings","writeReview","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","open","send"],"sourceRoot":""}