"use strict";class BVRatingSummary extends HTMLElement{#sessionKey="_bvsummary";settings={starIcon:``,template:`
[[BV_PRODUCT_TITLE]]
[[BV_AVG_RATING]]
[[BV_SUMMARY_MODAL]]
[[BV_SKIP_TO_REVIEW_LINK]]
`,modalTemplate:`
`,modalTemplateListItem:`
[[BV_TOTAL_RATING]] reviews with [[BV_RATING_NAME]] stars
[[BV_RATING_NAME]]
[[BV_STAR_ICON]]
[[BV_TOTAL_RATING]]
`};constructor(){if(super(),this.productId=this.dataset.productId,console.log("BVRatingSummary constructor - productId:",this.productId,"dataset:",this.dataset),!this.productId){console.warn("No productId found in dataset");return}this.productTitle=this.dataset.title,this.productUrl=this.dataset.productUrl,this.isIpadLandAndUp=window.innerWidth>=1024,this.isQuickview=this.dataset.quickview,console.log("BVRatingSummary initialized with:",{productId:this.productId,productTitle:this.productTitle,productUrl:this.productUrl,isQuickview:this.isQuickview});const cachedData=this.getCachedData();if(this.updatePosition(),cachedData){console.log("Using cached data for product:",this.productId),this.render(cachedData);return}console.log("Fetching fresh data for product:",this.productId),this.fetchBVRatingSummaryData()}connectedCallback(){}disconnectedCallback(){this.skipToReviewsBtns.forEach(btn=>{btn.removeEventListener("click",this.handleWriteReview.bind(this))}),this.summaryModalTriggerBtn.removeEventListener("click",this.openSummaryModal.bind(this)),this.summaryModal.removeEventListener("keyup",this.handleSummaryModalEscape.bind(this)),this.summaryModal.removeEventListener("focusout",this.handleSummaryModalFocusOut.bind(this)),this.summaryModalCloseBtn&&this.summaryModalCloseBtn.removeEventListener("click",this.closeSummaryModal.bind(this)),document.removeEventListener("click",this.handleClickOutside.bind(this)),this.modalCloseTimer=null,this.summaryModalTriggerBtn.removeEventListener("mouseenter",this.handleMouseEnter.bind(this)),this.summaryModalTriggerBtn.removeEventListener("mouseleave",this.handleMouseLeave.bind(this)),this.summaryModal.removeEventListener("mouseenter",this.handleMouseEnter.bind(this)),this.summaryModal.removeEventListener("mouseleave",this.handleMouseLeave.bind(this))}initEvents(){this.skipToReviewsBtns.forEach(btn=>{btn.addEventListener("click",this.handleWriteReview.bind(this))}),this.summaryModalTriggerBtn.addEventListener("click",this.openSummaryModal.bind(this)),this.summaryModal.addEventListener("keyup",this.handleSummaryModalEscape.bind(this)),this.summaryModal.addEventListener("focusout",this.handleSummaryModalFocusOut.bind(this)),document.addEventListener("click",this.handleClickOutside.bind(this))}initDesktopOnlyEvents(){this.isIpadLandAndUp&&(this.modalCloseTimer=null,this.summaryModalTriggerBtn.addEventListener("mouseenter",this.handleMouseEnter.bind(this)),this.summaryModalTriggerBtn.addEventListener("mouseleave",this.handleMouseLeave.bind(this)),this.summaryModal.addEventListener("mouseenter",this.handleMouseEnter.bind(this)),this.summaryModal.addEventListener("mouseleave",this.handleMouseLeave.bind(this)))}updatePosition(){const section=_theme.Helpers.getParamFromURL("section");if(!section||section!=="reviews")return;setTimeout(this.handleWriteReview.bind(this),2500);const newUrl=_theme.Helpers.deleteParamFromURL("section");history.pushState("","",newUrl)}static get getElementName(){return"bv-rating-summary"}async fetchBVRatingSummaryData(){try{console.log("Fetching Bazaarvoice data for product:",this.productId);const data=await(await fetch(`
https://api.bazaarvoice.com/data/display/0.2alpha/product/summary?PassKey=caVhjOuijxSJVqMHM6yS16ABhvzzl0CF1onOQBzGbJYsk&productid=${this.productId}&contentType=reviews,questions&reviewDistribution=primaryRating,recommended&rev=0
`)).json();console.log("Bazaarvoice API response:",data),this.cacheData(data),this.render(data)}catch(err){console.error("Error fetching Bazaarvoice data:",err)}}render(data){let html=this.settings.template;const starIcon=this.settings.starIcon;let modalHtml=this.settings.modalTemplate;console.log("Rendering Bazaarvoice data:",data);try{const{reviewSummary:{numReviews,primaryRating:{average,distribution}}}=data;if(console.log("Extracted data - numReviews:",numReviews,"average:",average,"distribution:",distribution),numReviews===0){console.log("No reviews found, hiding component"),this.classList.add("hidden");return}const finalAvgRating=average.toFixed(1),nearestRating=Math.floor(Number(average)),summaryText=`${finalAvgRating} out of 5 stars. Read reviews for average rating value is ${finalAvgRating} of 5.`,starFillPer=average*100/5,starIconHtml=distribution.map((d,i)=>{const index=i+1,randomId=Date.now()+index;let icon=_theme.Helpers.updateHtml(starIcon,"[[START_ICON_ID]]",`bv_rating_summary_star_filled_${randomId}`);return indexWrite a review`),html=_theme.Helpers.updateHtml(html,"[[BV_SKIP_TO_REVIEW_LINK]]",skipLink),modalHtml=_theme.Helpers.updateHtml(modalHtml,"[[BV_SUMMARY_MODAL_ITEMS]]",this.buildModalSummaryList(data));let modalBtnHtml=``;this.isQuickview&&(modalBtnHtml=`Read ${numReviews} reviews`),modalHtml=_theme.Helpers.updateHtml(modalHtml,"[[BV_SUMMARY_MODAL_BTN]]",modalBtnHtml),html=_theme.Helpers.updateHtml(html,"[[BV_SUMMARY_MODAL]]",modalHtml),this.innerHTML=html,this.buildSelectors(),this.initEvents(),this.initDesktopOnlyEvents()}catch(err){console.error("Error destructuring Bazaarvoice data:",err,"Data structure:",data),this.classList.add("hidden");return}}buildModalSummaryList(data){const{reviewSummary:{numReviews,primaryRating:{average,distribution}}}=data;let html="";const starIcon=this.settings.starIcon;return distribution.forEach(({key,count},i)=>{let itemHtml=this.settings.modalTemplateListItem,icon=_theme.Helpers.updateHtml(starIcon,"[[START_ICON_ID]]",`bv_rating_modal_summary_star_filled_${i}`);icon=_theme.Helpers.updateHtml(icon,"[[BV_STAR_FILL_X1]]",99.99);const contribution=(count*100/numReviews).toFixed(2);itemHtml=_theme.Helpers.updateHtml(itemHtml,"[[BV_TOTAL_RATING]]",count),itemHtml=_theme.Helpers.updateHtml(itemHtml,"[[BV_RATING_NAME]]",key),itemHtml=_theme.Helpers.updateHtml(itemHtml,"[[BV_STAR_ICON]]",icon),itemHtml=_theme.Helpers.updateHtml(itemHtml,"[[BV_RATING_CONTRIBUTION]]",contribution),html+=itemHtml}),html}cacheData(data){if(!data)return;const productSummary={[this.productId]:data};_theme.Helpers.setItemIntoSS(this.#sessionKey,productSummary)}getCachedData(){const data=_theme.Helpers.getItemFromSS(this.#sessionKey);return data&&data[this.productId]}buildSelectors(){this.skipToReviewsBtns=this.querySelectorAll("[data-skip-reviews]"),this.summaryModal=this.querySelector("dialog"),this.summaryModalTriggerBtn=this.querySelector("button.bv_summary_container")}handleSummaryModalEscape(evt){!evt.code||evt.code.toUpperCase()!=="ESCAPE"||this.closeSummaryModal()}handleClickOutside(evt){if(this.summaryModal.hasAttribute("open")||this.summaryModal.open){const isClickInsideModal=this.summaryModal.contains(evt.target),isClickOnTrigger=this.summaryModalTriggerBtn.contains(evt.target);!isClickInsideModal&&!isClickOnTrigger&&(console.log("Click outside modal detected, closing..."),this.closeSummaryModal())}}handleSummaryModalFocusOut(evt){evt.relatedTarget&&!this.summaryModal.contains(evt.relatedTarget)&&this.closeSummaryModal()}handleMouseEnter(){this.modalCloseTimer&&clearTimeout(this.modalCloseTimer),this.openSummaryModal()}handleMouseLeave(){this.modalCloseTimer=setTimeout(this.closeSummaryModal.bind(this),300)}openSummaryModal(){console.log("Opening summary modal"),this.summaryModalTriggerBtn.setAttribute("aria-expanded",!0),this.summaryModal.show?this.summaryModal.show():this.summaryModal.setAttribute("open",!0)}closeSummaryModal(){console.log("Closing summary modal"),this.modalCloseTimer&&(clearTimeout(this.modalCloseTimer),this.modalCloseTimer=null),this.summaryModal.close?this.summaryModal.close():this.summaryModal.removeAttribute("open"),this.summaryModalTriggerBtn.setAttribute("aria-expanded",!1)}handleWriteReview(){this.summaryModal.close();const reviewBlock=document.getElementById("tab4"),reviewBlockContent=document.getElementById("tab4-tab");!reviewBlock||!reviewBlockContent||(window.innerWidth<1025?(reviewBlockContent.scrollIntoView({behavior:"smooth"}),reviewBlockContent.querySelector(".mobile-accordion-controller").click()):(reviewBlock.scrollIntoView({behavior:"smooth"}),reviewBlock.click()))}}customElements.get(BVRatingSummary.getElementName)||customElements.define(BVRatingSummary.getElementName,BVRatingSummary);
//# sourceMappingURL=/cdn/shop/t/731/assets/bv-summary.js.map?v=41794802053277023691756296808