1const A="/pedal-api/devices/pedal/queue-progress",_="ggQueueRecentlyActive";let v=!1,t=null,u=null,o=null,c=null,g=null,m=!1,f=0;function h(){return document.body.classList.contains("gg-route--my-pedal")}function E(e){const i=document.createElement("div");return i.textContent=e==null?"":String(e),i.innerHTML}function b(){if(t)return t;t=document.createElement("aside"),t.className="gg-queue-widget",t.setAttribute("data-gg-queue-widget",""),t.setAttribute("role","status"),t.setAttribute("aria-live","polite"),t.hidden=!0;const e=document.createElement("div");return e.className="gg-queue-widget__head",o=document.createElement("span"),o.className="gg-queue-widget__title",e.appendChild(o),t.appendChild(e),c=document.createElement("span"),c.className="gg-queue-widget__sr",t.appendChild(c),u=document.createElement("div"),u.className="gg-queue-widget__list",u.setAttribute("aria-hidden","true"),t.appendChild(u),document.body.appendChild(t),t}function C(e,i){const n=Math.min(100,Math.max(0,Math.round(Number(e.progress)||0))),a=n>=100,s=n<=0;let l;a?l="Done":s?l="Queued":l=`${i}⦠${n}%`;const d=s?'class="gg-queue-widget__bar-fill is-indeterminate" data-gg-queue-fill':`class="gg-queue-widget__bar-fill" data-gg-queue-fill style="width:${n}%"`;return` 2 <div class="gg-queue-widget__item${a?" is-complete":""}" data-gg-queue-item> 3 <div class="gg-queue-widget__row"> 4 <div class="gg-queue-widget__text"> 5 <div class="gg-queue-widget__song">${E(e.title)}</div> 6 <div class="gg-queue-widget__status">${E(l)}</div> 7 </div> 8 </div> 9 <div class="gg-queue-widget__bar"> 10 <div ${d}></div> 11 </div> 12 </div>`}function T(e){b();const i=Array.isArray(e.downloads)?e.downloads:[],n=Array.isArray(e.uploads)?e.uploads:[];if(i.length+n.length===0)return t.hidden=!0,u.innerHTML="",o.textContent="",c.textContent="",!1;const s=i.length;let l;return s>0?l=`${s} download${s===1?"":"s"} in progress`:l=`${n.length} upload${n.length===1?"":"s"} in progress`,o.textContent=l,c.textContent=l,u.innerHTML=i.map(d=>C(d,"Downloading")).join("")+n.map(d=>C(d,"Uploading")).join(""),t.hidden=!1,!0}function N(){try{window.sessionStorage.removeItem(_)}catch{}}function L(){try{window.sessionStorage.setItem(_,"1")}catch{}}function S(){try{return window.sessionStorage.getItem(_)==="1"}catch{return!1}}function p(e){window.clearTimeout(g),g=window.setTimeout(q,Math.max(1,Number(e)||5)*1e3)}function r({keepFlag:e=!1}={}){m=!1,window.clearTimeout(g),g=null,e||N()}async function q(){if(h()){r();return}let e;try{const a=await fetch(A,{headers:{Accept:"application/json"},credentials:"same-origin"});if(!a.ok){r({keepFlag:!0});return}e=await a.json()}catch{r({keepFlag:!0});return}if(!e||e.has_pedal===!1){t&&(t.hidden=!0),r();return}const i=T(e),n=e.poll_after_seconds||5;if(i||Number(e.active)>0){f=0,L(),p(n);return}if(f+=1,f>1){r();return}p(n)}function y(){if(!h()){if(L(),f=0,m){p(.2);return}m=!0,q()}}function w(){v||(v=!0,!h()&&(document.addEventListener("gg:download-queued",()=>y()),document.addEventListener("visibilitychange",()=>{document.hidden?window.clearTimeout(g):m&&p(.2)}),S()&&y()))}typeof Drupal<"u"?Drupal.behaviors.ggnextQueueProgress={attach(){w()}}:typeof document<"u"&&(document.readyState==="loading"?document.addEventListener("DOMContentLoaded",w):w());
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.