"use strict";(()=>{(()=>{let C="https://api.feedspring.co",g=document.currentScript,p=e=>new Date(e),R=e=>new Date(e).toLocaleDateString(void 0,{year:"numeric",month:"short",day:"numeric"}),y=e=>{let t=new Map;for(let n of e)t.set(n.id,n);return[...t.values()]},h=e=>[...e].sort((t,n)=>p(n.createdAt).getTime()-p(t.createdAt).getTime());async function T(e,t){let n=await fetch(`${C}/${encodeURIComponent(e)}`,{signal:t});if(!n.ok)throw new Error(`Feed ${e} ${n.status}`);return await n.json()}let v=(e,t)=>{let n=document.querySelectorAll('[data-element="rating"]'),a=document.querySelectorAll('[data-element="rating-count"]');for(let r of n)r.textContent=`${e.toFixed(1)}`;for(let r of a)r.textContent=`${t}`};function A(e){return e.length?e.reduce((n,a)=>n+a,0)/e.length:0}function S(e){return e.reduce((t,n)=>t+(n.data.extra.total||0),0)}function F(e){try{let t=localStorage.getItem(e);if(!t)return null;let{at:n,ttl:a,payload:r}=JSON.parse(t);return a&&Date.now()-n>a*1e3?null:r}catch{return null}}function L(e,t,n){try{localStorage.setItem(e,JSON.stringify({at:Date.now(),ttl:n,payload:t}))}catch{}}function M(e,t){let n=e.querySelector('[feed-field="review"]'),a=e.querySelector('[feed-field="name"]'),r=e.querySelector('[feed-field="timestamp"]');n&&(n.textContent=t.comment??""),a&&(a.textContent=t.author?.name||"Customer"),r&&(r.textContent=R(t.createdAt));let i=e.querySelector('img[feed-field="avatar"]');return i&&(i.src=t.author?.photoUrl||"",i.alt=t.author?.name?`${t.author.name} avatar`:"Reviewer avatar"),e.removeAttribute("id"),e instanceof HTMLElement&&e.style.removeProperty("display"),e}function b(e,t,n,a){let r=t.content.firstChild,i=typeof a=="number"&&a>0?n.slice(0,a):n,d=document.createDocumentFragment();for(let c of i){let f=r.cloneNode(!0);d.appendChild(M(f,c))}[...e.children].forEach(c=>{c!==t&&c.remove()}),e.appendChild(d)}async function E(){let e=document.querySelector('[data-element="feed"]'),t=document.getElementById("review-template"),a=(g?.getAttribute("data-feeds")??e?.getAttribute("data-feeds")??"").trim().split(",").map(s=>s.trim()).filter(Boolean);if(!a.length)return;let r=(g?.getAttribute("data-limit")??e?.getAttribute("data-limit")??"").trim(),i=r===""?void 0:Number(r),d=(g?.getAttribute("data-cache-ttl")??e?.getAttribute("data-cache-ttl")??"").trim(),c=d===""?0:Number(d),f=`feedspring:${a.sort().join("|")}`,m=F(f);if(m){let s=h(y(m.flatMap(o=>o.status==="fulfilled"&&Array.isArray(o.value.data.media)?o.value.data.media:[]))),u=m.map(o=>o.status==="fulfilled"&&Array.isArray(o.value.data.media)?o.value.data.extra.averageRating:[]);v(A(u),S(m.map(o=>o.value))),e&&t&&b(e,t,s,i)}let w=new AbortController,x=setTimeout(()=>w.abort(),15e3);try{let s=await Promise.allSettled(a.map(l=>T(l,w.signal)));console.log(s.length);let u=h(y(s.flatMap(l=>l.status==="fulfilled"&&Array.isArray(l.value.data.media)?l.value.data.media:[])));L(f,s,c||0);let o=s.map(l=>l.status==="fulfilled"&&Array.isArray(l.value.data.media)?l.value.data.extra.averageRating:[]);o&&v(A(o),S(s.map(l=>l.value))),e&&t&&b(e,t,u,i)}catch(s){if(!m&&e){let u=document.createElement("div");u.textContent="Unable to load reviews right now.",e.appendChild(u)}console.error(s)}finally{clearTimeout(x)}}document.readyState==="loading"?document.addEventListener("DOMContentLoaded",E):E()})();})();