1import{i as l,n as g,a as p,t as h}from"./vendor-lit-reactive-element-Cjcwuima.js";import{x as i}from"./vendor-lit-html-nFsY_NSA.js";import{r as f}from"./vendor-lit-element-CtcYdrtK.js";import{reviewsDataStore as c}from"./reviews-data.store-CQyUfp3R.js";import"./stars-reviews.element-CrVv3X2A.js";import"./average-rating.element-D02hK_QV.js";import"./number-of-reviews.element-Cvog8DlT.js";var v=Object.defineProperty,m=Object.getOwnPropertyDescriptor,u=(t,a,e,n)=>{for(var r=n>1?void 0:n?m(a,e):a,o=t.length-1,d;o>=0;o--)(d=t[o])&&(r=(n?d(a,e,r):d(r))||r);return n&&r&&v(a,e,r),r};let s=class extends f{constructor(){super(...arguments),this.showSkuCount=!1,this.dataState=c.getState()}connectedCallback(){super.connectedCallback(),this.unsubscribe=c.subscribe(t=>{this.dataState=t,this.requestUpdate()}),this.requestUpdate(),!this.hasRatingData()&&!this.dataState.loading&&setTimeout(()=>{this.hasRatingData()||this.requestUpdate()},100)}disconnectedCallback(){var t;super.disconnectedCallback(),(t=this.unsubscribe)==null||t.call(this)}getSyndicatedData(){const t=this.dataState.originalSyndicatedStats;return t?{averageRating:t.average_rating,reviewCount:t.review_count,isValid:!0}:{averageRating:this.dataState.averageRating,reviewCount:this.dataState.reviewCount,isValid:!1}}getSkuInfo(){const t=this.dataState.filters.sku;if(!t)return{skus:[],count:0};const a=t.split(";").map(e=>e.trim()).filter(e=>e.length>0);return{skus:a,count:a.length}}renderSkuIndicator(){if(!this.showSkuCount)return"";const{count:t}=this.getSkuInfo();return t<=1?"":i` 2 <span class="sku-indicator">${t} variants</span> 3 `}hasRatingData(){const{averageRating:t}=this.getSyndicatedData();return!!t}render(){const{averageRating:t}=this.getSyndicatedData(),a=this.hasRatingData();if(this.dataState.error)return i` 4 <div class="error-state"> 5 Error loading reviews: 6 ${this.dataState.error} 7 </div> 8 `;if(a)this.classList.remove("hidden");else return i``;const e=parseFloat(t);return isNaN(e)||e<0||e>5?i` 9 <div class="error-state"> 10 Invalid rating data 11 </div> 12 `:i` 13 <slot> 14 <stars-reviews></stars-reviews> 15 <average-rating></average-rating> 16 <div class="divider"></div> 17 <number-of-reviews></number-of-reviews> 18 ${this.renderSkuIndicator()} 19 <star-distribution></star-distribution> 20 </slot> 21 `}};s.styles=l` 22 :host { 23 display: flex; 24 align-items: center; 25 gap: 0.5rem; 26 flex-wrap: wrap; 27 background-color: #f6f6f6; 28 padding: 20px 16px; 29 } 30 31 .divider { 32 width: 1px; 33 height: 1rem; 34 background-color: #e5e5e5; 35 } 36 37 .sku-indicator { 38 font-size: 0.75rem; 39 color: #666; 40 background-color: #e9ecef; 41 padding: 0.25rem 0.5rem; 42 border-radius: 0.25rem; 43 margin-left: 0.5rem; 44 } 45 46 .loading-placeholder { 47 color: #666; 48 font-style: italic; 49 opacity: 0.5; 50 } 51 52 .error-state { 53 color: #dc3545; 54 font-size: 0.875rem; 55 } 56 57 .star-rating { 58 display: inline-flex; 59 align-items: center; 60 gap: 0.125rem; 61 } 62 63 .star { 64 position: relative; 65 display: inline-block; 66 cursor: default; 67 } 68 69 .star svg { 70 display: block; 71 width: 20px; 72 height: 20px; 73 } 74 `;u([g({type:Boolean,attribute:"show-sku-count"})],s.prototype,"showSkuCount",2);u([p()],s.prototype,"dataState",2);s=u([h("star-rating-summary")],s);export{s as StarRatingSummary};
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.