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