{"version":3,"sources":["webpack:///./modules/ReviewSummary.ts"],"names":["__webpack_require__","r","__webpack_exports__","_helpers_DOMHelpers__WEBPACK_IMPORTED_MODULE_0__","_TrackingGA4__WEBPACK_IMPORTED_MODULE_1__","ReviewSummary","element","this","commentReviews","querySelector","getDataFilterAjaxUrl","getAttribute","resetDataFilterAjaxUrl","summaryStarsClick","reviewProgressBar","setup","selector","Array","from","document","querySelectorAll","filter","node","dataset","moduleInitialized","forEach","prototype","_this","summaryStars","addEventListener","dataRatingNumber","getFilteredContent","replace","classList","add","contains","fetchAndUpdateStore","el","remove","Object","totalReviewNumber","Number","progressCalc","setAttribute","url","fetch","then","res","text","updateContent","getContent","innerHTML","appendChild","e","bind","module","default"],"mappings":"2FAAAA,EAAAC,EAAAC,GAAA,IAAAC,EAAAH,EAAA,GAAAI,EAAAJ,EAAA,IAIAK,EAAA,WAYI,SAAAA,EAAmBC,GAAAC,KAAAD,UACfC,KAAKC,eAAiBD,KAAKD,QAAQG,cAAc,qBACjDF,KAAKG,qBAAuBH,KAAKD,QAAQG,cAAc,kBAAkBE,aAAa,qCACtFJ,KAAKK,uBAAyBL,KAAKD,QAAQG,cAAc,kBAAkBE,aAAa,2CAExFJ,KAAKM,oBACLN,KAAKO,oBAqDb,OAlEWT,EAAAU,MAAP,SAAaC,QAAA,IAAAA,MATM,iCAUfC,MAAMC,KAAKC,SAASC,iBAAiBJ,IAAWK,OAAO,SAACC,GAAsB,OAACA,EAAKC,QAAQC,oBAAmBC,QAAQ,SAACnB,GACpH,IAAID,EAAcC,GAClBA,EAAQiB,QAAQC,kBAAoB,UAcpCnB,EAAAqB,UAAAb,kBAAR,eAAAc,EAAApB,KACUqB,EAAeX,MAAMC,KAAKC,SAASC,iBAAiB,kCAE1DQ,EAAaH,QAAQ,SAACnB,GAClBA,EAAQuB,iBAAiB,QAAS,WAC9B,IAAMC,EAAmBxB,EAAQK,aAAa,eAC1CoB,EAAqBJ,EAAKjB,qBAAqBsB,QAAQ,WAAYF,GAEvEH,EAAKnB,eAAeyB,UAAUC,IAAI,gBAC9B5B,EAAQ2B,UAAUE,SAAS,kBAC3BR,EAAKS,oBAAoBT,EAAKf,wBAC9BgB,EAAaH,QAAQ,SAACY,GAAO,OAAAA,EAAGJ,UAAUK,OAAO,mBACjDX,EAAKrB,QAAQ2B,UAAUK,OAAO,oBAGqB,MAAnDhC,EAAQK,aAAa,2BAAyC4B,OAAAnC,EAAA,EAAAmC,CAAgBT,GAC9EH,EAAKS,oBAAoBL,GACzBH,EAAaH,QAAQ,SAACY,GAAO,OAAAA,EAAGJ,UAAUK,OAAO,mBACjDhC,EAAQ2B,UAAUC,IAAI,iBACtBP,EAAKrB,QAAQ2B,UAAUC,IAAI,wBAMnC7B,EAAAqB,UAAAZ,kBAAR,WACI,IAAM0B,EAAoBC,OAAOlC,KAAKD,QAAQG,cAAc,UAAUE,aAAa,8BACnFM,MAAMC,KAAKC,SAASC,iBAAiB,kCAAkCK,QAAQ,SAACnB,GAC5E,IACIoC,EADkBD,OAAOnC,EAAQK,aAAa,2BACf6B,EAAoB,IAEvDlC,EAAQG,cAAc,YAAYkC,aAAa,QAAS,GAAGD,MAI3DrC,EAAAqB,UAAAU,oBAAR,SAA4BQ,GAA5B,IAAAjB,EAAApB,KACIsC,MAAMD,GACDE,KAAK,SAACC,GAAQ,OAAAA,EAAIC,SAClBF,KAAK,SAACC,GAAQ,OAAApB,EAAKsB,cAAcF,MAGlC1C,EAAAqB,UAAAuB,cAAR,SAAsBF,GAAtB,IAAApB,EAAApB,KACU2C,EAAaX,OAAApC,EAAA,EAAAoC,CAAwB,GAAGQ,GAC9CxC,KAAKC,eAAeyB,UAAUK,OAAO,gBACrC/B,KAAKC,eAAe2C,UAAY,GAChC5C,KAAKC,eAAe4C,YAAYF,GACTlD,EAAAqD,EAAA,IAAAP,KAAA9C,EAAAsD,KAAA,UACZR,KAAK,SAACS,GAAW,WAAIA,EAAOC,QAAQ7B,EAAKrB,QAAQG,cAAc,kBAElFJ,EAvEA,eAyEA,IAAIA,EAAcU","file":"./modules/ReviewSummary.4db31a84.js","sourcesContent":["const moduleSelector = '[data-module=\"ReviewSummary\"]';\r\nimport { createElementFromString } from '../helpers/DOMHelpers';\r\nimport { reviewFilterGA4 } from '../TrackingGA4';\r\n\r\nexport default class ReviewSummary {\r\n getDataFilterAjaxUrl;\r\n resetDataFilterAjaxUrl;\r\n commentReviews: HTMLElement;\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 ReviewSummary(element);\r\n element.dataset.moduleInitialized = 'true';\r\n });\r\n }\r\n\r\n constructor(public element: HTMLElement) {\r\n this.commentReviews = this.element.querySelector('.comments-reviews');\r\n this.getDataFilterAjaxUrl = this.element.querySelector('.stars-summary').getAttribute('data-filter-reviews-by-rating-url');\r\n this.resetDataFilterAjaxUrl = this.element.querySelector('.stars-summary').getAttribute('data-reset-filter-reviews-by-rating-url');\r\n\r\n this.summaryStarsClick();\r\n this.reviewProgressBar();\r\n\r\n }\r\n\r\n private summaryStarsClick() {\r\n const summaryStars = Array.from(document.querySelectorAll('.number-of-reviews-per-rating'));\r\n\r\n summaryStars.forEach((element: HTMLElement) => {\r\n element.addEventListener('click', () => {\r\n const dataRatingNumber = element.getAttribute('data-rating'),\r\n getFilteredContent = this.getDataFilterAjaxUrl.replace('{rating}', dataRatingNumber);\r\n\r\n this.commentReviews.classList.add('lazy-spinner');\r\n if (element.classList.contains('active-rating')) {\r\n this.fetchAndUpdateStore(this.resetDataFilterAjaxUrl);\r\n summaryStars.forEach((el) => el.classList.remove('active-rating'))\r\n this.element.classList.remove('filter-ratings');\r\n\r\n } else {\r\n element.getAttribute(\"data-number-of-reviews\") === \"0\" ? \"\" : reviewFilterGA4(dataRatingNumber);\r\n this.fetchAndUpdateStore(getFilteredContent);\r\n summaryStars.forEach((el) => el.classList.remove('active-rating'))\r\n element.classList.add('active-rating');\r\n this.element.classList.add('filter-ratings');\r\n }\r\n })\r\n })\r\n }\r\n\r\n private reviewProgressBar() {\r\n const totalReviewNumber = Number(this.element.querySelector('.total').getAttribute('data-total-ratings-number'));\r\n Array.from(document.querySelectorAll('.number-of-reviews-per-rating')).forEach((element) => {\r\n const reviewsNumber = Number(element.getAttribute('data-number-of-reviews')),\r\n progressCalc = reviewsNumber / totalReviewNumber * 100;\r\n\r\n element.querySelector('progress').setAttribute('value', `${progressCalc}`)\r\n })\r\n }\r\n\r\n private fetchAndUpdateStore(url: string): void {\r\n fetch(url)\r\n .then((res) => res.text())\r\n .then((res) => this.updateContent(res))\r\n }\r\n\r\n private updateContent(res) {\r\n const getContent = createElementFromString(`${res}`);\r\n this.commentReviews.classList.remove('lazy-spinner');\r\n this.commentReviews.innerHTML = \"\";\r\n this.commentReviews.appendChild(getContent);\r\n const LoadMore = () => import ('./LoadMore');\r\n LoadMore().then((module) => new module.default(this.element.querySelector('.load-more')));\r\n }\r\n}\r\n\r\nnew ReviewSummary.setup();"],"sourceRoot":""}