prreviewbuddy 0.86.7 → 0.87.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +49 -0
- package/dist/{delete_review-CwKZQlMg.js → delete_review-D7TXn5ck.js} +5 -1
- package/dist/main.js +1 -1
- package/dist/server.js +338 -130
- package/package.json +1 -1
- package/static/{chunk-Di41wu5k.js → chunk-BKBTVY9X.js} +1 -1
- package/static/{chunk-huqt-B16.js → chunk-BmIk8Mrb.js} +1 -1
- package/static/{chunk-D9x9bcKf.js → chunk-CMC5F4_t.js} +1 -1
- package/static/{chunk-BUD1RoN4.js → chunk-DDm8oQLU.js} +1 -1
- package/static/help.js +1 -1
- package/static/notifications.js +1 -1
- package/static/reviews.js +1 -1
- package/static/runs.js +1 -1
- package/static/settings.js +1 -1
- package/static/shell.css +178 -108
- package/static/workspace.js +47 -47
package/static/reviews.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{$ as e,A as t,B as n,C as r,D as i,E as a,F as o,G as s,H as c,I as l,J as ee,L as te,M as ne,N as re,O as ie,P as ae,Q as oe,R as u,S as se,T as ce,U as le,V as ue,W as de,X as fe,Y as pe,Z as me,_t as he,a as ge,b as d,ct as _e,et as ve,ft as ye,h as be,ht as xe,i as Se,it as Ce,j as we,k as Te,l as Ee,lt as De,m as Oe,n as ke,nt as Ae,o as je,ot as Me,p as Ne,pt as Pe,q as Fe,r as Ie,s as Le,t as Re,tt as ze,w as Be,x as f,z as Ve}from"./chunk-D9x9bcKf.js";import{a as He,c as Ue,i as We,n as Ge,r as Ke,s as qe,t as Je,u as Ye,x as Xe}from"./chunk-huqt-B16.js";import{n as Ze,t as Qe}from"./chunk-BUD1RoN4.js";import{t as $e}from"./chunk-C8kkSv38.js";import{n as et,r as tt}from"./chunk-Di41wu5k.js";function nt(e,t){t.forEach((t,n)=>{e.children[n]!==t&&e.insertBefore(t,e.children[n]??null)})}async function rt(e,t,n){if(e.disabled)return;let r=e.getAttribute(`aria-pressed`)!==`true`;it(e,r),e.disabled=!0;let i=await t(r).catch(()=>!1);if(e.disabled=!1,!i)return it(e,!r);n(r)}function it(e,t){e.setAttribute(`aria-pressed`,String(t)),e.innerHTML=t?`★`:`☆`,e.setAttribute(`aria-label`,`${t?`Unpin`:`Pin`} this review`)}function at(e){let t=e.querySelector(`[data-collections-registry]`)?.textContent??`[]`;try{let e=JSON.parse(t);return Array.isArray(e)?e.filter(e=>!!e&&typeof e.id==`string`&&typeof e.name==`string`):[]}catch{return[]}}function ot(e){return(e.dataset.collections??``).split(` `).filter(Boolean)}async function st(e,t,n){try{let r=await fetch(e,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({...t,snapshot:n})}),i=await r.json().catch(()=>null);return r.ok&&i&&(typeof i.area==`string`||i.stale===!0)?{ok:!0,answer:i}:{ok:!1,error:i?.error??`That could not be saved. The workspace server refused it.`}}catch{return{ok:!1,error:`The workspace server did not answer. It may have stopped.`}}}var ct=`prb-reviews-selection`;function lt(e,t){let n=new Set(e);return t.filter(e=>(e.dataset.lineage??e.dataset.id??``).split(` `).some(e=>n.has(e))).map(e=>e.dataset.id??``).filter(Boolean)}function ut(e,t){return t===``||e.name.toLowerCase().includes(t.trim().toLowerCase())}function dt(e,t){let n=e.trim().replace(/\s+/g,` `);if(n!==``)return t.some(e=>e.name.localeCompare(n,void 0,{sensitivity:`base`})===0)?void 0:n}function ft(e,t,n,i){let a=e.ownerDocument,o=(e,t)=>{let r=a.createElement(`label`);r.className=`prb-collections-option`;let i=a.createElement(`input`);return i.type=`checkbox`,i.value=e,i.checked=n.includes(e),i.setAttribute(`data-collections-filter-option`,``),r.append(i,a.createTextNode(` ${t}`)),r},s=t.filter(e=>ut(e,i)).map(e=>o(e.id,e.name));ut({id:`none`,name:`Uncollected`},i)&&s.unshift(o(r,`Uncollected`)),e.replaceChildren(...s)}function pt(e,t,n,r){let i=e.ownerDocument,a=t.filter(e=>ut(e,r)).map(e=>{let t=le(n,e.id),r=i.createElement(`label`);r.className=`prb-collections-option`;let a=i.createElement(`input`);a.type=`checkbox`,a.value=e.id,a.checked=t===`all`,a.indeterminate=t===`some`,a.dataset.membership=t,a.setAttribute(`data-collections-dialog-option`,``);let o=i.createElement(`span`);if(o.textContent=e.name,r.append(a,o),t===`some`){let t=i.createElement(`span`);t.className=`prb-collections-some`,t.textContent=`${n.filter(t=>t.includes(e.id)).length} of ${n.length}`,r.append(t)}return r});if(a.length===0&&t.length===0){let e=i.createElement(`p`);e.className=`prb-collections-none`,e.textContent=`No collections yet. Type a name to make one.`,a.push(e)}e.replaceChildren(...a)}function mt(e,t){return t?`For ${t}. Tick a collection to add it, untick to remove it.`:e===1?`For 1 selected review. Tick a collection to add it, untick to remove it.`:`For ${e} selected reviews. A part-filled box adds the rest; it never removes anything.`}function ht(e){return{title:`Expand or collapse a collection`,mount(t,n){let r=t.ownerDocument,i=r.createElement(`div`);i.className=`prb-palette-results`,i.setAttribute(`role`,`group`),i.setAttribute(`aria-label`,`Collections`);let a=e.collections().map((e,t)=>{let n=r.createElement(`button`);n.type=`button`,n.className=`prb-palette-result prb-palette-collection`,n.dataset.collectionChoice=e.id;let i=r.createElement(`kbd`);i.className=`prb-kbd prb-palette-num`;let a=Ue(t);a?i.textContent=a:i.setAttribute(`aria-hidden`,`true`);let o=r.createElement(`span`);o.className=`prb-palette-result-title`,o.textContent=e.name;let s=r.createElement(`span`);s.className=`prb-palette-collection-count`,s.textContent=e.count;let c=r.createElement(`span`);return c.className=`prb-palette-state`,c.textContent=e.open?`Expanded`:`Collapsed`,n.append(i,o,s,c),n});i.replaceChildren(...a);let o=t=>{t&&(n(),e.toggle(t))};i.addEventListener(`click`,e=>{o(e.target.closest(`[data-collection-choice]`)?.dataset.collectionChoice)}),t.addEventListener(`keydown`,e=>{if(e.isComposing||e.metaKey||e.ctrlKey||e.altKey)return;let t=qe(e.key);if(t!==null)return e.preventDefault(),o(a[t]?.dataset.collectionChoice);let n=a.indexOf(e.target),r=e.key===`ArrowDown`||e.key===`j`?a[Math.min(n+1,a.length-1)]:e.key===`ArrowUp`||e.key===`k`?a[Math.max(n-1,0)]:e.key===`Home`?a[0]:e.key===`End`?a[a.length-1]:void 0;r&&(e.preventDefault(),r.focus())}),t.append(i),a[0]?.focus()}}}function gt(e){let t=e.dataset.id??``,n=e.dataset.placement;return n===void 0||n===`home`?t:`${t}|${n}`}function _t(e,t){let n=e.parentElement?.querySelector(`[data-history-list]`);n&&(n.hidden=!t,e.setAttribute(`aria-expanded`,String(t)))}function vt(e,t,n,r,i=new Map){return{limits:n,...i.size===0?{}:{collectionLimits:Object.fromEntries(i)},expanded:t.filter(e=>e.dataset.id&&e.querySelector(`[data-history-list]:not([hidden])`)).map(gt),main:r?.scrollTop??0,...De(e)}}function yt(e,t){let n=e?.limits;if(!n||typeof n!=`object`)return t;let r={...t};for(let e of f){let t=n[e];typeof t==`number`&&Number.isInteger(t)&&t>r[e]&&(r[e]=t)}return r}function bt(e){let t=e?.collectionLimits,n=new Map;if(!t||typeof t!=`object`||Array.isArray(t))return n;for(let[e,r]of Object.entries(t))e.startsWith(`collection`)&&Ve(e)&&typeof r==`number`&&Number.isInteger(r)&&r>15&&n.set(e,r);return n}function xt(e,t,n){if(!t)return;n.reveal(yt(t,n.limits),bt(t));let r=new Set(xe(t,`expanded`));for(let e of n.cards){let t=e.querySelector(`[data-history-toggle]`);t&&r.has(gt(e))&&_t(t,!0)}let i=ye(t,`main`);n.pane&&i!==null&&(n.pane.scrollTop=i),Pe(e,t.focus,t.focusVisible)}var St=_e({ownsRestore:!0});Re(`/restart`);var p=[...document.querySelectorAll(`[data-card][data-placement="home"]`)].sort((e,t)=>Number(e.dataset.rank)-Number(t.dataset.rank)),m=new Map;function Ct(){m=new Map;for(let e of document.querySelectorAll(`[data-card]`)){let t=e.dataset.id??``;m.set(t,[...m.get(t)??[],e])}}Ct();function wt(e,t){for(let n of m.get(e)??[])t(n)}function h(){return[...m.values()].flat()}var g=at(document),Tt=[...document.querySelectorAll(`[data-operation]`)],Et=document.querySelector(`[data-section="in-progress"]`),Dt=e=>e.dataset.inProgressOnly!==void 0,Ot=Object.fromEntries(f.map(e=>[e,document.querySelector(`[data-cards="${e}"]`)])),kt=document.querySelector(`.prb-index`);function At(e){return{id:e.dataset.id??``,collections:ot(e),queue:e.dataset.queue===void 0?void 0:Number(e.dataset.queue),status:e.dataset.status??`new`,prState:e.dataset.prState}}var _=document.querySelector(`[data-search]`),v=document.querySelector(`[data-status-filter]`),y=document.querySelector(`[data-author-filter]`),b=document.querySelector(`[data-pr-filter]`),jt=document.querySelector(`[data-no-matches]`),Mt=document.querySelector(`[data-count]`),Nt=document.querySelector(`[data-clear-filters]`),x=document.querySelector(`[data-collections-filter]`),Pt=document.querySelector(`[data-collections-filter-search]`);function Ft(){if(!x)return;x.hidden=g.length===0;let e=x.querySelector(`[data-collections-filter-label]`);e&&(e.textContent=ie(D.collections,g)),D.collections.length===0?delete x.dataset.active:x.dataset.active=``;let t=x.querySelector(`[data-collections-filter-options]`);t&&ft(t,g,D.collections,Pt?.value??``)}var S=te();function It(e){return{stored:Me({state:e.dataset.lifecycle,at:Number(e.dataset.lifecycleAt)}),activity:ze(e.dataset)??{at:0,kind:`created`}}}function Lt(e){return e.dataset.pinned===`true`}function Rt(e){let{stored:t,activity:n}=It(e);return l(Lt(e),t,n,ot(e).length>0,D.filter)}function zt(e){let t=Rt(e);return t===void 0?.5:f.indexOf(t)}function Bt(e){return[...e].sort((e,t)=>zt(e)-zt(t))}var C=new Map,w=document.querySelector(`[data-bulk]`),Vt=document.querySelector(`[data-bulk-count]`),Ht=document.querySelector(`[data-bulk-detail]`),Ut=document.querySelector(`[data-bulk-delete]`),Wt=document.querySelector(`[data-bulk-delete-label]`),Gt=document.querySelector(`[data-bulk-exit]`),Kt=document.querySelector(`[data-bulk-more]`),qt=document.querySelector(`[data-bulk-question]`),T=document.querySelector(`[data-bulk-confirm]`),Jt=document.querySelector(`[data-bulk-actions]`),E=document.querySelector(`[data-bulk-error]`),Yt=document.querySelector(`[data-bulk-select-all]`),D=s(window.location.hash),O=new Set,k=!1,A=document.querySelector(`[data-bulk-fetch]`),Xt={},j=[],Zt=!1;function M(){let e=D.query.trim().toLowerCase();D.author!==``&&![...y?.options??[]].some(e=>e.value===D.author)&&(D.author=``),D.collections=D.collections.filter(e=>e===`none`||g.some(t=>t.id===e)),g.length===0&&(D.collections=[]);let t=Bt(ae(p.map(e=>({...At(e),searchText:e.dataset.searchText??``,author:e.dataset.author,card:e})),{...D,query:e}).map(e=>e.card)),n=t.filter(e=>!Dt(e));j=n;let r=new Set(ae(Tt.map(e=>({...At(e),searchText:e.dataset.searchText??``,author:e.dataset.author,entry:e})),{...D,query:e}).map(e=>e.entry));for(let e of Tt)e.hidden=!r.has(e);if(Et){Et.hidden=r.size===0;let e=Et.querySelector(`[data-section-count]`);e&&(e.textContent=String(r.size))}let i=n.filter(e=>Rt(e)!==void 0),a=fe(i,e=>Rt(e),S),o=new Set(f.flatMap(e=>a[e].shown));for(let e of f){let t=Ot[e];t&&nt(t,a[e].shown);let n=document.querySelector(`[data-load-more="${e}"]`);n&&(n.hidden=a[e].total<=a[e].shown.length);let r=document.querySelector(`[data-section="${e}"]`);r&&(r.hidden=a[e].total===0);let i=r?.querySelector(`[data-section-count]`);i&&(i.textContent=String(a[e].total))}for(let e of Qt(n))o.add(e);for(let e of h())e.hidden=!o.has(e);if(_&&_.value!==D.query&&(_.value=D.query),y&&(y.value=D.author,D.author===``?delete y.dataset.active:y.dataset.active=``),b||(D.pr=`any`),b&&(b.value=D.pr,D.pr===`any`?delete b.dataset.active:b.dataset.active=``),v&&(v.value=D.filter,D.filter===`all`?delete v.dataset.active:v.dataset.active=``),Ft(),Nt&&(Nt.hidden=!u(D)),Mt){let e=e=>e.reduce((e,t)=>e+Number(t.dataset.reviews??1),0);Mt.textContent=we(e(t),t.length,u(D)?e(p):void 0)}jt&&(jt.hidden=t.length>0||r.size>0||p.length===0),mn(n)}function Qt(e){let r=document.querySelector(`[data-collections-area]`);if(!r)return[];let o=de(D.filter),s=u(D),c=e.flatMap(e=>ot(e).map(t=>({card:e,collection:t}))),l=e=>{let{stored:t,activity:n}=It(e);return i(Lt(e),t,n,D.filter)},ee=n(c,({card:e,collection:t})=>{let n=l(e);return n===void 0?void 0:`${n===`completed`?`collection-done`:`collection`}:${t}`},e=>C.get(e)??15),te=(e,t)=>(m.get(e)??[]).find(e=>e.dataset.placement===`collection:${t}`),ne=[],re=!1;for(let e of r.querySelectorAll(`[data-collection]`)){let n=e.dataset.collection??``,r=ee.get(`collection:${n}`)??{shown:[],total:0},i=ee.get(`collection-done:${n}`)??{shown:[],total:0},l=c.filter(e=>e.collection===n),ie=l.filter(e=>Lt(e.card)).length,ae=D.collections.length>0&&!D.collections.includes(n),oe=!o&&!ae&&(!s||l.length>0);if(e.hidden=!oe,!oe)continue;re=!0;for(let[t,a]of[[`collection:${n}`,r],[`collection-done:${n}`,i]]){let r=a.shown.map(e=>te(e.card.dataset.id??``,n)).filter(e=>e!==void 0),i=e.querySelector(`[data-cards="${t}"]`);i&&nt(i,r),ne.push(...r);let o=e.querySelector(`[data-load-more="${t}"]`);o&&(o.hidden=a.total<=a.shown.length)}let u=e.querySelector(`[data-section="collection:${n}"] > summary [data-section-count]`);u&&(u.textContent=ce(r.total,ie));let se=e.querySelector(`[data-collection-empty]`),le=a({active:r.total,completed:i.total,pinned:ie,members:l.length},s);se&&(se.hidden=le===void 0,se.textContent=le??``);let ue=e.querySelector(`[data-section="collection-done:${n}"]`);ue&&(ue.hidden=i.total===0);let de=e.querySelector(`[data-completed-label]`);de&&(de.textContent=t(i.total))}return r.hidden=o||!re,ne}var $t=300,N=null;function P(){N!==null&&window.clearTimeout(N),N=null,St.replace(o(D),{})}function F(e,t){if(D={...D,...e},S=te(),C=new Map,M(),t===`now`)return P();N!==null&&window.clearTimeout(N),N=window.setTimeout(P,$t)}window.addEventListener(`pagehide`,()=>{N!==null&&P()}),document.addEventListener(`click`,e=>{N!==null&&e.target?.closest?.(`a[href]`)&&P()},!0),_?.addEventListener(`input`,()=>F({query:_.value},`settled`)),_?.addEventListener(`keydown`,e=>{e.key===`Escape`&&_.value!==``&&(e.preventDefault(),F({query:``},`now`))}),v?.addEventListener(`change`,()=>{F({filter:v.value},`now`)}),y?.addEventListener(`change`,()=>{F({author:y.value},`now`)}),b?.addEventListener(`change`,()=>{F({pr:b.value},`now`)}),Nt?.addEventListener(`click`,()=>{F({query:d.query,filter:d.filter,author:d.author,pr:d.pr,collections:d.collections},`now`),_?.focus()}),tt(),document.addEventListener(`click`,e=>{let t=e.target.closest(`[data-load-more]`)?.dataset.loadMore;if(t&&t.startsWith(`collection`)&&Ve(t))return C.set(t,(C.get(t)??15)+15),M();!t||!f.includes(t)||(S={...S,[t]:S[t]+15},M())});for(let e of[`popstate`,`hashchange`])window.addEventListener(e,()=>{D=s(window.location.hash),S=te(),C=new Map,M(),sn()});document.addEventListener(`click`,e=>{let t=e.target.closest(`[data-pin]`);if(!t?.dataset.pin)return;e.preventDefault(),e.stopPropagation();let n=t.dataset.pin;rt(t,e=>fetch(`/pin`,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({id:n,pinned:e})}).then(e=>e.ok),e=>{wt(n,n=>{n.dataset.pinned=String(e);let r=n.querySelector(`[data-pin]`);r&&r!==t&&it(r,e),Nn(n)}),M()})});async function en(e,t){let n;try{let r=await fetch(`/queue`,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({id:e,action:t})});if(!r.ok)return I(await rn(r));n=(await r.json()).queue}catch{return I(nn)}an(n),M()}var tn=`That could not be saved. The workspace server refused it.`,nn=`The workspace server did not answer. It may have stopped.`;function I(e){ge(Le(),{kind:`failed`,text:e})}async function rn(e){let t=await e.json().catch(()=>null);return typeof t?.error==`string`?t.error:tn}function an(e){let t=new Map(e.map((e,t)=>[e,t]));for(let e of h()){let n=t.get(e.dataset.id??``);n===void 0?delete e.dataset.queue:e.dataset.queue=String(n),n!==void 0&&e.dataset.lifecycle!==`active`&&(e.dataset.lifecycle=`active`,delete e.dataset.lifecycleAt,Nn(e))}for(let e of document.querySelectorAll(`[data-queue-action][data-queue-id]`)){let n=t.has(e.dataset.queueId??``);e.dataset.queueAction=n?`remove`:`add`,e.textContent=Fe(n)}let n=document.querySelector(`[data-queue-option]`);n&&(n.textContent=ee(e.length))}document.addEventListener(`click`,e=>{let t=e.target.closest(`[data-history-toggle]`);if(!t)return;e.preventDefault(),e.stopPropagation();let n=t.parentElement?.querySelector(`[data-history-list]`);n&&_t(t,n.hidden!==!1)});var on=document.querySelector(`.prb-shell > main`);function sn(){xt(document,St.current().ui,{cards:h(),pane:on,limits:S,reveal:(e,t)=>{S=e,C=t,M()}})}St.setCapturer(()=>vt(document,h(),S,on,C)),M(),sn();var L=Ze(document,{onOpen:dn,onClose:e=>{dn(e),window.setTimeout($,0)}});function cn(){return document.querySelector(`[data-menu-trigger][aria-expanded="true"]`)!==null}var ln=0;async function un(e){ln+=1;try{await e()}finally{--ln,$()}}function dn(e){let t=e.querySelector(`[data-menu-items]`),n=e.querySelector(`[data-menu-confirm]`);t&&(t.hidden=!1),n&&(n.hidden=!0);let r=e.querySelector(`[data-collection-rename-form]`);r&&(r.hidden=!0,Y(r,void 0)),e.querySelector(`[data-menu-error]`)?.remove(),e.querySelector(`[data-id-field]`)?.remove()}document.addEventListener(`click`,e=>{let t=e.target,n=t.closest(`[data-menu]`);if(!n||n.closest(`[data-bulk]`)||n.matches(`[data-collections-filter]`))return;if(n.matches(`.prb-collection-menu`))return Xn(e,t,n);let r=t.closest(`[data-collections-for]`);if(r?.dataset.collectionsFor){e.preventDefault(),e.stopPropagation(),L.closeAll();let t=r.closest(`[data-card]`)?.querySelector(`[data-select]`)?.getAttribute(`aria-label`)?.replace(/^Select /,``);Zn([r.dataset.collectionsFor],{card:t??`this review`});return}let i=t.closest(`[data-copy-id]`);if(i?.dataset.copyId){e.preventDefault(),e.stopPropagation(),Xe(i,i.dataset.copyId);return}let a=t.closest(`[data-fetch-review]`);if(a?.dataset.fetchReview){e.preventDefault(),e.stopPropagation(),L.closeAll();let t=a.closest(`[data-card]`);t&&sr([t]);return}let o=t.closest(`[data-mark-status]`);if(o?.dataset.markId){e.preventDefault(),e.stopPropagation(),L.closeAll();let t=o.dataset.markId;un(()=>jn(t,o.dataset.markStatus===`complete`));return}let s=t.closest(`[data-lifecycle-set]`);if(s?.dataset.lifecycleId){e.preventDefault(),e.stopPropagation(),L.closeAll();let t=s.dataset.lifecycleId;un(async()=>{await Mn([t],s.dataset.lifecycleSet)||I(`That could not be saved. The workspace server refused it or did not answer.`)});return}let c=t.closest(`[data-queue-action]`);if(c?.dataset.queueId){e.preventDefault(),e.stopPropagation(),L.closeAll();let t=c.dataset.queueId;un(()=>en(t,c.dataset.queueAction===`remove`?`remove`:`add`));return}if(t.closest(`[data-delete]`)){e.preventDefault(),e.stopPropagation();let t=n.querySelector(`[data-menu-items]`),r=n.querySelector(`[data-menu-confirm]`);t&&(t.hidden=!0),r&&(r.hidden=!1),e.detail===0&&n.querySelector(`[data-cancel-delete]`)?.focus();return}if(t.closest(`[data-cancel-delete]`)){e.preventDefault(),e.stopPropagation(),dn(n),e.detail===0&&n.querySelector(`[data-delete]`)?.focus();return}if(t.closest(`[data-confirm-delete]`)){e.preventDefault(),e.stopPropagation(),fn(n);return}e.preventDefault(),e.stopPropagation()});async function fn(e){let t=e.querySelector(`[data-delete]`),n=t?.dataset.delete;if(!n)return;let r=e.querySelector(`[data-menu-confirm]`),i=e.querySelector(`[data-confirm-delete]`);i&&(i.disabled=!0,i.textContent=`Deleting`);try{let r=await fetch(`/delete`,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({id:n,scope:t?.dataset.scope??`review`})});if(r.ok)return void window.location.reload();pn(e,(await r.json().catch(()=>null))?.error??`That could not be deleted.`)}catch{pn(e,`The workspace server did not answer. It may have stopped.`)}i&&(i.disabled=!1,i.textContent=`Delete`),r&&(r.hidden=!0);let a=e.querySelector(`[data-menu-items]`);a&&(a.hidden=!1)}function pn(e,t){e.querySelector(`[data-menu-error]`)?.remove();let n=document.createElement(`p`);n.className=`prb-menu-error`,n.setAttribute(`data-menu-error`,``),n.textContent=t,e.querySelector(`[data-menu-panel]`)?.append(n)}function R(e){k=e,e||O.clear(),kt&&(e?kt.dataset.selecting=``:delete kt.dataset.selecting),document.querySelector(`[data-select-mode]`)?.setAttribute(`aria-pressed`,String(e)),!e&&Kt&&L.close(Kt);for(let t of document.querySelectorAll(`.prb-card-link`))e?t.setAttribute(`aria-disabled`,`true`):t.removeAttribute(`aria-disabled`);z(),M()}function z(){T&&(T.hidden=!0),Jt&&(Jt.hidden=!1),E&&(E.hidden=!0,E.textContent=``)}function mn(t){for(let e of h()){let t=O.has(e.dataset.id??``),n=e.querySelector(`[data-select]`);n&&(n.checked=t),t?e.dataset.selected=``:delete e.dataset.selected}if(!w||(w.hidden=!k,!k))return;let n=new Set(h().filter(hn).map(e=>e.dataset.id)),r=[...O].filter(e=>!n.has(e)).length,i=new Set(t.map(e=>e.dataset.id)),a=[...O].every(e=>i.has(e))?i.size:null;O.size===0?w.dataset.empty=``:delete w.dataset.empty,Vt&&(Vt.textContent=e(O.size)),Ht&&(Ht.textContent=oe(O.size,a,r)),Yt&&(Yt.textContent=me(t.length,O.size>0&&a!==null),Yt.disabled=t.every(e=>O.has(e.dataset.id??``))),Wt&&(Wt.textContent=ne(On()));for(let e of w.querySelectorAll(`[data-bulk-mark], [data-bulk-lifecycle], [data-bulk-queue], [data-bulk-collections], [data-bulk-delete]`))e.disabled=O.size===0;A&&(A.hidden=!Ge(Xt,rr(H())))}function hn(e){return!e.hidden&&e.closest(`details:not([open]), [hidden]`)===null}function gn(e){let t=[...e.querySelectorAll(`details[data-section]`)];for(let e of t)e.addEventListener(`toggle`,()=>mn(j));et(t,(e,t)=>fetch(`/sections`,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({section:e,collapsed:t})}))}gn(document),document.querySelector(`[data-select-mode]`)?.addEventListener(`click`,()=>{R(!k)}),Yt?.addEventListener(`click`,()=>{for(let e of j)e.dataset.id&&O.add(e.dataset.id);z(),M()});function _n(e){O.has(e)?O.delete(e):O.add(e),z(),M()}document.addEventListener(`change`,e=>{let t=e.target.closest(`[data-select]`);t?.dataset.select&&_n(t.dataset.select)}),document.addEventListener(`click`,e=>{if(!k)return;let t=e.target,n=t.closest(`[data-card]`);n?.dataset.id&&(t.closest(`[data-select], [data-pin], [data-menu], [data-history-toggle]`)||(e.preventDefault(),_n(n.dataset.id)))}),document.addEventListener(`keydown`,e=>{if(!k||e.key!==`Enter`)return;let t=e.target.closest(`.prb-card-link`)?.closest(`[data-card]`);t?.dataset.id&&(e.preventDefault(),_n(t.dataset.id))});var B=$e({doc:document,item:`[data-card]`,link:`.prb-card-link`,walk:()=>[...document.querySelectorAll(`[data-card]`)].filter(hn),enterAllowed:()=>!k,background:()=>on,leadIn:e=>[...e.closest(`[data-cards]`)?.querySelectorAll(`[data-card]:not([hidden])`)??[]][0]===e?e.closest(`details[data-section]`)?.querySelector(`summary`)??null:null});function vn(){return B.holdsKeys()?B.current()?.querySelector(`:scope > [data-menu]`)??null:null}var yn=8;function bn(e){let t=e.querySelector(`.prb-card-link`);t&&(t.focus({preventScroll:!0}),document.activeElement!==t&&document.activeElement?.blur(),N!==null&&P(),St.leaving(),xn=!0,window.location.assign(t.href))}var xn=!1,Sn={title:`Search reviews`,mount(e,t){let n=document.createElement(`input`);n.type=`search`,n.className=`prb-palette-input`,n.placeholder=_?.placeholder??``,n.setAttribute(`aria-label`,`Search reviews`),n.spellcheck=!1,n.value=_?.value??``;let r=document.createElement(`p`);r.className=`prb-palette-summary`,r.setAttribute(`aria-live`,`polite`);let i=document.createElement(`div`);i.className=`prb-palette-results`,i.setAttribute(`role`,`group`),i.setAttribute(`aria-label`,`Matching reviews`);let a=()=>{let e=j.slice(0,yn);i.replaceChildren(...e.map(e=>{let t=document.createElement(`button`);t.type=`button`,t.className=`prb-palette-result`,t.dataset.resultId=e.dataset.id??``;let n=document.createElement(`span`);n.className=`prb-palette-result-title`,n.textContent=e.querySelector(`.prb-card-head h2`)?.textContent??``;let r=document.createElement(`span`);return r.className=`prb-palette-result-where`,r.textContent=[e.querySelector(`.prb-card-repo`)?.textContent,e.querySelector(`.prb-card-branch`)?.textContent].filter(Boolean).join(` · `),t.append(n,r),t})),r.textContent=j.length===0?`No reviews match.`:j.length>e.length?`The first ${e.length} of ${Mt?.textContent??j.length}`:Mt?.textContent??``},o=()=>[...i.querySelectorAll(`.prb-palette-result`)],s=e=>{let n=p.find(t=>t.dataset.id===e?.dataset.resultId);n&&(t(),bn(n))};n.addEventListener(`input`,()=>{_&&(_.value=n.value,_.dispatchEvent(new Event(`input`,{bubbles:!0})),a())}),i.addEventListener(`click`,e=>s(e.target.closest(`.prb-palette-result`)??void 0)),e.addEventListener(`keydown`,e=>{if(e.isComposing)return;let t=o(),r=t.indexOf(e.target);if(e.key===`Enter`&&e.target===n)return e.preventDefault(),s(t[0]);let i=e.key===`ArrowDown`?r<0?t[0]:t[r+1]:e.key===`ArrowUp`?r<=0?n:t[r-1]:null;i&&(e.preventDefault(),i.focus())}),e.append(n,r,i),a(),n.focus(),n.select()}},Cn={title:`Filters`,mount(e){let t=document.createElement(`p`);t.className=`prb-palette-summary`,t.setAttribute(`aria-live`,`polite`);let n=()=>{t.textContent=Mt?.textContent??``},r=[v,y,b].flatMap(e=>{if(!e)return[];let t=document.createElement(`label`);t.className=`prb-palette-field`;let r=document.createElement(`span`),i=(e.getAttribute(`aria-label`)??``).replace(/^Filter by /,``);r.textContent=i.charAt(0).toUpperCase()+i.slice(1);let a=document.createElement(`select`);for(let t of e.options)a.append(new Option(t.text,t.value));return a.value=e.value,a.addEventListener(`change`,()=>{e.value=a.value,e.dispatchEvent(new Event(`change`,{bubbles:!0})),n()}),t.append(r,a),[t]});e.append(...r,t),n(),r[0]?.querySelector(`select`)?.focus()}};function wn(e){let t=()=>document.querySelector(`details[data-section="${e}"]`);return{available:()=>!!(t()&&!t().hidden),state:()=>{let e=t();return e&&!e.hidden?e.open?`Expanded`:`Collapsed`:null},run:()=>{let e=t();e&&(e.open=!e.open)}}}var Tn=Object.fromEntries(se.map(e=>[`reviews.section.${e}`,wn(e)]));function En(){return[...document.querySelectorAll(`[data-collections-area]:not([hidden]) [data-collection]:not([hidden])`)].flatMap(e=>{let t=e.querySelector(`:scope > details[data-section]`);if(!t)return[];let n=t.querySelector(`[data-collection-name]`)?.textContent??``,r=t.querySelector(`:scope > summary [data-section-count]`)?.textContent??``;return[{id:e.dataset.collection??``,name:n,count:r,open:t.open}]})}var V=document.querySelector(`[data-collection-new]`),Dn=Ne(`reviews`,{...Tn,"reviews.search":{available:()=>_!==null,panel:Sn},"reviews.filters":{available:()=>v!==null,panel:Cn},"reviews.collection.new":{available:()=>V!==null&&!V.disabled,run:()=>V?.click()},"reviews.collection.fold":{available:()=>En().length>0,panel:ht({collections:En,toggle:e=>{let t=document.querySelector(`[data-collection="${CSS.escape(e)}"] > details[data-section]`);t&&(t.open=!t.open)}})},"reviews.next":{run:()=>B.move(1)},"reviews.previous":{run:()=>B.move(-1)},"reviews.open":{available:()=>B.enterOpens(),run:()=>B.open()},"reviews.openInNewTab":{available:()=>B.enterOpens(),run:()=>B.openInNewTab()},"reviews.selection.exit":{available:zn,run:()=>T&&!T.hidden?Ln(w?.contains(document.activeElement)??!1):Rn()},"reviews.menu":{available:()=>vn()!==null,run:()=>{let e=vn();e&&L.open(e,{focusFirst:!0,returnFocus:()=>B.refocus()})}}},{onOpen:()=>L.closeAll(),onSettle:()=>$()});function H(){return Bt(p.filter(e=>O.has(e.dataset.id??``)))}function On(){return H().reduce((e,t)=>e+Number(t.dataset.reviews??1),0)}function U(e){E&&(E.textContent=e,E.hidden=!1)}function W(e){for(let t of w?.querySelectorAll(`button`)??[])t.disabled=e}async function kn(e){let t=[...O];if(t.length!==0){W(!0);try{if(!(await fetch(`/status`,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({ids:t,complete:e})})).ok)return W(!1),U(`That could not be saved. The workspace server refused it.`)}catch{return W(!1),U(`The workspace server did not answer. It may have stopped.`)}An(H(),e),W(!1),R(!1)}}function An(e,t){let n=t?`complete`:`in-progress`,r=t?`in-progress`:`complete`;for(let t of e.flatMap(e=>m.get(e.dataset.id??``)??[e])){t.dataset.status=n;let e=t.querySelector(`.prb-card-status`);e&&(e.dataset.status=n,e.textContent=ve(n));let i=t.querySelector(`[data-mark-status]`);i&&(i.dataset.markStatus=r,i.textContent=ue(r))}}async function jn(e,t){try{let n=await fetch(`/status`,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({ids:[e],complete:t})});if(!n.ok)return I(await rn(n))}catch{return I(nn)}An(p.filter(t=>t.dataset.id===e),t),M()}async function Mn(e,t){let n;try{let r=await fetch(`/lifecycle`,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({ids:e,state:t})});n=r.ok?await r.json().catch(()=>null):null}catch{n=null}if(!n)return!1;let r=new Set(e);for(let e of h())r.has(e.dataset.id??``)&&(e.dataset.lifecycle=t,t===`active`?delete e.dataset.lifecycleAt:e.dataset.lifecycleAt=String(n.at),Nn(e));return an(n.queue),M(),!0}function Nn(e){let{stored:t,activity:n}=It(e),r=e.querySelector(`[data-lifecycle-chip]`);if(r){let i=Be(Lt(e),t,n);r.textContent=i??``,r.hidden=i===void 0}for(let r of e.querySelectorAll(`[data-lifecycle-set]`)){let e=r.dataset.lifecycleSet;r.hidden=!Ce(e,t,n),r.textContent=Ae(e,t,n)}}async function Pn(e){let t=[...O];if(t.length===0)return;W(!0);let n=await Mn(t,e);if(W(!1),!n)return U(`That could not be saved. The workspace server refused it or did not answer.`);R(!1)}async function Fn(){let e=[...O];if(e.length===0)return;W(!0);let t=null;try{let n=await fetch(`/delete`,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({ids:e})});if(t=n.ok?await n.json().catch(()=>null):null,!t)return W(!1),z(),U(`Nothing was deleted. The workspace server refused it.`)}catch{return W(!1),z(),U(`The workspace server did not answer. It may have stopped.`)}let n=t.blocked??[],r=new Set(n.map(e=>e.id));for(let e of H()){let t=e.dataset.id??``;r.has(t)||wt(t,e=>e.remove())}p=p.filter(e=>e.isConnected),Ct(),O.clear();for(let e of r)O.add(e);if(W(!1),z(),n.length===0)return R(!1);M(),U([...new Set(n.map(e=>e.error))].join(` `))}async function In(){let e=H().map(e=>e.dataset.id??``).filter(Boolean);if(e.length===0)return;W(!0);let t=null;try{let n=await fetch(`/queue`,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({ids:e,action:`add`})});t=n.ok?await n.json().catch(()=>null):null}catch{return W(!1),z(),U(`The workspace server did not answer. It may have stopped.`)}if(!t?.queue)return W(!1),z(),U(`Nothing was added. The workspace server refused it.`);an(t.queue);let n=t.refused??[];O.clear();for(let e of n)O.add(e.id);if(W(!1),z(),n.length===0)return R(!1);M(),U([...new Set(n.map(e=>e.error))].join(` `))}w?.addEventListener(`click`,e=>{let t=e.target;if(Kt&&t.closest(`[data-bulk-more] [data-menu-panel] button`)&&L.close(Kt),t.closest(`[data-bulk-queue]`))return void In();if(t.closest(`[data-bulk-collections]`))return Zn(H().map(e=>e.dataset.id??``).filter(Boolean),{selection:!0});let n=t.closest(`[data-bulk-mark]`);if(n)return void kn(n.dataset.bulkMark===`complete`);let r=t.closest(`[data-bulk-lifecycle]`);if(r)return void Pn(r.dataset.bulkLifecycle);if(t.closest(`[data-bulk-delete]`)){qt&&(qt.textContent=re(On())),Jt&&(Jt.hidden=!0),T&&(T.hidden=!1),e.detail===0&&w.querySelector(`[data-bulk-cancel-delete]`)?.focus();return}if(t.closest(`[data-bulk-confirm-delete]`))return void Fn();if(t.closest(`[data-bulk-cancel-delete]`))return Ln(e.detail===0);if(t.closest(`[data-bulk-exit]`))return Rn()});function Ln(e){z(),e&&Ut?.focus()}function Rn(){let e=w?.contains(document.activeElement)??!1;R(!1),e&&document.querySelector(`[data-select-mode]`)?.focus()}function zn(e){return!k||Gt?.disabled?!1:e===void 0||Ye(e,document,!0)}var G=document.querySelector(`[data-collections-dialog]`),Bn=document.querySelector(`[data-collections-dialog-list]`),K=document.querySelector(`[data-collections-dialog-search]`),q=document.querySelector(`[data-collections-dialog-create]`),Vn=document.querySelector(`[data-collections-dialog-error]`),Hn=document.querySelector(`[data-collections-dialog-for]`),J=[],Un=!1,Wn=!1,Gn=document.body.dataset.cardsSnapshot??``;function Kn(e,t){return st(e,t,Gn)}function qn(e){if(e.stale||e.area===void 0){try{let e={ids:[...O],selecting:k};window.sessionStorage.setItem(ct,JSON.stringify(e))}catch{}G?.close(),window.location.reload();return}let t=e.area,n=document.querySelector(`[data-collections-area]`);if(n){let e=n.contains(document.activeElement)?De(document):null,r=document.createElement(`template`);r.innerHTML=t.trim();let i=r.content.firstElementChild;if(i){if(n.replaceWith(i),gn(i),k)for(let e of i.querySelectorAll(`.prb-card-link`))e.setAttribute(`aria-disabled`,`true`);e&&Pe(document,e.focus,e.focusVisible)}}g=e.collections;for(let t of p){let n=e.memberOf[t.dataset.id??``]??[];t.dataset.collections=n.join(` `);let r=t.querySelector(`[data-collections-line]`),i=Te(n,g);r&&(r.textContent=i??``,r.hidden=i===void 0)}for(let t of Tt){let n=e.operations?.[t.dataset.key??``];n&&(t.dataset.collections=n.join(` `))}Ct(),ar(),M()}function Y(e,t){let n=e.querySelector(`[data-collection-error]`);n&&(n.textContent=t??``,n.hidden=t===void 0)}Pt?.addEventListener(`input`,()=>Ft()),x?.addEventListener(`change`,e=>{let t=e.target.closest(`[data-collections-filter-option]`);if(!t)return;let n=t.checked?[...D.collections,t.value]:D.collections.filter(e=>e!==t.value);F({collections:[...new Set(n)]},`now`),x.querySelector(`[data-collections-filter-option][value="${CSS.escape(t.value)}"]`)?.focus()});var X=document.querySelector(`[data-collection-new-dialog]`),Z=X?.querySelector(`[data-collection-name-input]`)??null,Jn=X?.querySelector(`[data-collection-create]`)??null,Q=!1;function Yn(){V&&(V.disabled=Q),Z&&(Z.readOnly=Q),Jn&&(Jn.disabled=Q||(Z?.value.trim()??``)===``)}V?.addEventListener(`click`,()=>{X&&(L.closeAll(),Z&&(Z.value=``),Yn(),Y(X,void 0),X.showModal(),Z?.focus())}),Z?.addEventListener(`input`,()=>{Yn(),X&&Y(X,void 0)}),X?.querySelector(`[data-collection-cancel]`)?.addEventListener(`click`,()=>X.close()),X?.addEventListener(`close`,()=>$()),document.addEventListener(`submit`,e=>{let t=e.target;if(t.matches(`[data-collection-new-form]`)){e.preventDefault();let n=Z?.value??``;if(n.trim()===``)return;Q=!0,Yn(),Kn(`/collections`,{action:`create`,name:n}).then(e=>{Q=!1,Yn();let n=X?.open===!0;if(!e.ok)return Y(t,e.error);X?.close(),qn(e.answer),n&&document.querySelector(`[data-collection="${CSS.escape(e.answer.id??``)}"] summary`)?.focus({focusVisible:!1})});return}let n=t.closest(`[data-collection-rename-form]`);if(n){e.preventDefault();let t=n.querySelector(`[data-collection-name-input]`)?.value??``,r=n.dataset.collectionRenameForm??``;Kn(`/collections`,{action:`rename`,id:r,name:t}).then(e=>{if(!e.ok)return Y(n,e.error);L.closeAll(),qn(e.answer),document.querySelector(`[data-collection="${CSS.escape(r)}"] summary`)?.focus({focusVisible:!1})})}});function Xn(e,t,n){let r=n.querySelector(`[data-menu-items]`),i=n.querySelector(`[data-collection-rename-form]`),a=n.querySelector(`[data-menu-confirm]`);if(t.closest(`[data-collection-rename]`)&&i){e.preventDefault(),r&&(r.hidden=!0),i.hidden=!1;let t=i.querySelector(`[data-collection-name-input]`);t?.focus(),t?.select();return}if(t.closest(`[data-collection-delete]`)&&a){e.preventDefault(),r&&(r.hidden=!0),a.hidden=!1,e.detail===0&&n.querySelector(`[data-cancel-delete]`)?.focus();return}if(t.closest(`[data-collection-cancel], [data-cancel-delete]`)){e.preventDefault(),dn(n);return}let o=t.closest(`[data-collection-confirm-delete]`);if(o?.dataset.collectionConfirmDelete){e.preventDefault(),o.disabled=!0;let t=o.dataset.collectionConfirmDelete;Kn(`/collections`,{action:`delete`,id:t}).then(e=>{if(o.disabled=!1,!e.ok)return pn(n,e.error);L.closeAll(),qn(e.answer),D.collections.includes(t)&&P(),document.querySelector(`[data-collection-new]`)?.focus()})}}function Zn(e,t){!G||e.length===0||(L.closeAll(),J=[...e],Un=!1,Wn=`selection`in t,Hn&&(Hn.textContent=mt(e.length,`card`in t?t.card:void 0)),K&&(K.value=``),er(void 0),$n(),G.showModal(),K?.focus())}function Qn(){return J.map(e=>ot(p.find(t=>t.dataset.id===e)??document.createElement(`div`)))}function $n(){let e=K?.value??``;Bn&&pt(Bn,g,Qn(),e);let t=dt(e,g);q&&(q.hidden=t===void 0,q.textContent=t===void 0?``:`Create “${t}” and add ${J.length===1?`this review`:`these ${J.length}`}`)}function er(e){Vn&&(Vn.textContent=e??``,Vn.hidden=e===void 0)}async function tr(e){er(void 0);let t=await Kn(`/collections/members`,{ids:J,...e});if(!t.ok)return er(t.error),$n();Un=!0,qn(t.answer);let n=t.answer.refused??[];n.length>0&&(J=J.filter(e=>!n.some(t=>t.id===e)),er([...new Set(n.map(e=>e.error))].join(` `))),$n()}K?.addEventListener(`input`,()=>$n()),K?.addEventListener(`keydown`,e=>{e.key===`Enter`&&(e.preventDefault(),q&&!q.hidden&&q.click())}),q?.addEventListener(`click`,()=>{let e=dt(K?.value??``,g);e!==void 0&&tr({action:`add`,create:e}).then(()=>{K&&(K.value=``),$n(),K?.focus()})}),Bn?.addEventListener(`change`,e=>{let t=e.target.closest(`[data-collections-dialog-option]`);if(!t)return;let n=c(t.dataset.membership??`none`),r=t.value;tr({action:n,collection:r}).then(()=>{Bn.querySelector(`[data-collections-dialog-option][value="${CSS.escape(r)}"]`)?.focus()})}),document.querySelector(`[data-collections-dialog-close]`)?.addEventListener(`click`,()=>G?.close());try{let e=window.sessionStorage.getItem(ct);if(e){window.sessionStorage.removeItem(ct);let t=JSON.parse(e),n=Array.isArray(t.ids)?t.ids.filter(e=>typeof e==`string`):[];if(t.selecting===!0||n.length>0){R(!0);for(let e of lt(n,p))O.add(e);M()}}}catch{}G?.addEventListener(`close`,()=>{Un&&k&&Wn&&R(!1),J=[],$()}),he(window,()=>window.location.reload());var nr=`prb-fetch-summary`;function rr(e){return e.map(e=>({lineage:(e.dataset.lineage??e.dataset.id??``).split(` `).filter(Boolean)}))}function ir(e){return Ke(rr(e),Xt)}function ar(){for(let e of h()){let t=e.querySelector(`[data-fetch-review]`);t&&(t.hidden=!Ge(Xt,rr([e])))}}async function or(){try{let e=await fetch(`/fetch-updates`);if(!e.ok)return;Xt=(await e.json()).targets??{}}catch{return}ar(),M()}async function sr(e,t){let n=ir(e);if(Zt||n.repositories===0)return;Zt=!0;let r=[A,...document.querySelectorAll(`[data-fetch-review]`)];for(let e of r)e&&(e.disabled=!0);t&&(t.textContent=He(n.repositories));let i=null;try{let e=await fetch(`/fetch-updates`,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({ids:n.ids})});e.ok&&(i=await e.json())}catch{}Zt=!1;for(let e of r)e&&(e.disabled=!1);t&&(t.textContent=Je),M();let a=i??{repositories:n.repositories,fetched:0,failed:[],moved:0},o={kind:a.fetched<a.repositories?`failed`:`ready`,text:We(a)};if(a.moved>0||ur){try{window.sessionStorage.setItem(nr,JSON.stringify(o))}catch{}if(!dr())return void window.location.reload();ur=!0}ge(Le(),o)}try{let e=window.sessionStorage.getItem(nr);if(e){window.sessionStorage.removeItem(nr);let t=JSON.parse(e);typeof t.kind==`string`&&typeof t.text==`string`&&ge(Le(),{kind:t.kind,text:t.text})}}catch{}A?.addEventListener(`click`,()=>void sr(H(),A)),Se(),or();var cr=document.body.dataset.indexRevision??``,lr=document.body.dataset.live===`true`?Date.now():0,ur=!1;function dr(){let e=G?.open===!0||X?.open===!0||document.activeElement?.closest(`[data-collections-area], [data-collections-filter]`)!=null;return O.size>0||document.activeElement===_||Zt||Dn.isOpen()||xn||e||cn()||ln>0}function $(){ur&&!dr()&&Ie()}async function fr(){try{let e=await fetch(`/revision`);if(e.ok){Ee(document,!0);let t=await e.json();ke(document,t),t.live&&lr===0&&(lr=Date.now()),t.live||(lr=0);let n=pe(cr,t.revision??``,dr());if(n===`reload`)return Ie(),null;n===`hold`&&(ur=!0)}}catch{Ee(document,!1)}return Qe(lr===0?2**53-1:Date.now()-lr)}var pr=be(window,fr);Oe(document,()=>pr.now()),_?.addEventListener(`blur`,$),document.addEventListener(`click`,()=>window.setTimeout($,0)),je();
|
|
1
|
+
import{$ as e,A as t,B as n,C as r,D as i,E as a,F as o,G as s,H as c,I as ee,J as te,K as ne,L as re,M as ie,N as ae,O as oe,P as se,Q as ce,R as l,S as u,T as le,U as ue,V as de,W as fe,X as pe,Y as me,Z as he,a as ge,at as _e,et as ve,g as ye,gt as be,h as xe,i as Se,j as Ce,k as we,lt as Te,m as Ee,mt as De,n as Oe,nt as ke,o as Ae,pt as je,r as Me,rt as Ne,s as Pe,st as Fe,t as Ie,tt as Le,u as Re,ut as ze,vt as Be,w as Ve,x as He,z as Ue}from"./chunk-CMC5F4_t.js";import{a as We,c as Ge,i as Ke,n as qe,r as Je,s as Ye,t as Xe,u as Ze,x as Qe}from"./chunk-BmIk8Mrb.js";import{n as $e,t as et}from"./chunk-DDm8oQLU.js";import{t as tt}from"./chunk-C8kkSv38.js";import{n as nt,r as rt}from"./chunk-BKBTVY9X.js";function it(e,t){t.forEach((t,n)=>{e.children[n]!==t&&e.insertBefore(t,e.children[n]??null)})}async function at(e,t,n){if(e.disabled)return;let r=e.getAttribute(`aria-pressed`)!==`true`;ot(e,r),e.disabled=!0;let i=await t(r).catch(()=>!1);if(e.disabled=!1,!i)return ot(e,!r);n(r)}function ot(e,t){e.setAttribute(`aria-pressed`,String(t)),e.innerHTML=t?`★`:`☆`,e.setAttribute(`aria-label`,`${t?`Unpin`:`Pin`} this review`)}function st(e){let t=e.querySelector(`[data-collections-registry]`)?.textContent??`[]`;try{let e=JSON.parse(t);return Array.isArray(e)?e.filter(e=>!!e&&typeof e.id==`string`&&typeof e.name==`string`):[]}catch{return[]}}function ct(e){return(e.dataset.collections??``).split(` `).filter(Boolean)}async function lt(e,t,n){try{let r=await fetch(e,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({...t,snapshot:n})}),i=await r.json().catch(()=>null);return r.ok&&i&&(typeof i.area==`string`||i.stale===!0)?{ok:!0,answer:i}:{ok:!1,error:i?.error??`That could not be saved. The workspace server refused it.`}}catch{return{ok:!1,error:`The workspace server did not answer. It may have stopped.`}}}var ut=`prb-reviews-selection`;function dt(e,t){let n=new Set(e);return t.filter(e=>(e.dataset.lineage??e.dataset.id??``).split(` `).some(e=>n.has(e))).map(e=>e.dataset.id??``).filter(Boolean)}function ft(e,t){return t===``||e.name.toLowerCase().includes(t.trim().toLowerCase())}function pt(e,t){let n=e.trim().replace(/\s+/g,` `);if(n!==``)return t.some(e=>e.name.localeCompare(n,void 0,{sensitivity:`base`})===0)?void 0:n}function mt(e,t,n,r){let i=e.ownerDocument,a=(e,t)=>{let r=i.createElement(`label`);r.className=`prb-collections-option`;let a=i.createElement(`input`);return a.type=`checkbox`,a.value=e,a.checked=n.includes(e),a.setAttribute(`data-collections-filter-option`,``),r.append(a,i.createTextNode(` ${t}`)),r},o=t.filter(e=>ft(e,r)).map(e=>a(e.id,e.name));ft({id:`none`,name:`Uncollected`},r)&&o.unshift(a(Ve,`Uncollected`)),e.replaceChildren(...o)}function ht(e,t,n,r){let i=e.ownerDocument,a=t.filter(e=>ft(e,r)).map(e=>{let t=fe(n,e.id),r=i.createElement(`label`);r.className=`prb-collections-option`;let a=i.createElement(`input`);a.type=`checkbox`,a.value=e.id,a.checked=t===`all`,a.indeterminate=t===`some`,a.dataset.membership=t,a.setAttribute(`data-collections-dialog-option`,``);let o=i.createElement(`span`);if(o.textContent=e.name,r.append(a,o),t===`some`){let t=i.createElement(`span`);t.className=`prb-collections-some`,t.textContent=`${n.filter(t=>t.includes(e.id)).length} of ${n.length}`,r.append(t)}return r});if(a.length===0&&t.length===0){let e=i.createElement(`p`);e.className=`prb-collections-none`,e.textContent=`No collections yet. Type a name to make one.`,a.push(e)}e.replaceChildren(...a)}function gt(e,t){return t?`For ${t}. Tick a collection to add it, untick to remove it.`:e===1?`For 1 selected review. Tick a collection to add it, untick to remove it.`:`For ${e} selected reviews. A part-filled box adds the rest; it never removes anything.`}function _t(e){return{title:`Expand or collapse a collection`,mount(t,n){let r=t.ownerDocument,i=r.createElement(`div`);i.className=`prb-palette-results`,i.setAttribute(`role`,`group`),i.setAttribute(`aria-label`,`Collections`);let a=e.collections().map((e,t)=>{let n=r.createElement(`button`);n.type=`button`,n.className=`prb-palette-result prb-palette-collection`,n.dataset.collectionChoice=e.id;let i=r.createElement(`kbd`);i.className=`prb-kbd prb-palette-num`;let a=Ge(t);a?i.textContent=a:i.setAttribute(`aria-hidden`,`true`);let o=r.createElement(`span`);o.className=`prb-palette-result-title`,o.textContent=e.name;let s=r.createElement(`span`);s.className=`prb-palette-collection-count`,s.textContent=e.count;let c=r.createElement(`span`);return c.className=`prb-palette-state`,c.textContent=e.open?`Expanded`:`Collapsed`,n.append(i,o,s,c),n});i.replaceChildren(...a);let o=t=>{t&&(n(),e.toggle(t))};i.addEventListener(`click`,e=>{o(e.target.closest(`[data-collection-choice]`)?.dataset.collectionChoice)}),t.addEventListener(`keydown`,e=>{if(e.isComposing||e.metaKey||e.ctrlKey||e.altKey)return;let t=Ye(e.key);if(t!==null)return e.preventDefault(),o(a[t]?.dataset.collectionChoice);let n=a.indexOf(e.target),r=e.key===`ArrowDown`||e.key===`j`?a[Math.min(n+1,a.length-1)]:e.key===`ArrowUp`||e.key===`k`?a[Math.max(n-1,0)]:e.key===`Home`?a[0]:e.key===`End`?a[a.length-1]:void 0;r&&(e.preventDefault(),r.focus())}),t.append(i),a[0]?.focus()}}}function vt(e){let t=e.dataset.id??``,n=e.dataset.placement;return n===void 0||n===`home`?t:`${t}|${n}`}function yt(e,t){let n=e.parentElement?.querySelector(`[data-history-list]`);n&&(n.hidden=!t,e.setAttribute(`aria-expanded`,String(t)))}function bt(e,t,n,r,i=new Map){return{limits:n,...i.size===0?{}:{collectionLimits:Object.fromEntries(i)},expanded:t.filter(e=>e.dataset.id&&e.querySelector(`[data-history-list]:not([hidden])`)).map(vt),main:r?.scrollTop??0,...ze(e)}}function xt(e,t){let n=e?.limits;if(!n||typeof n!=`object`)return t;let r={...t};for(let e of u){let t=n[e];typeof t==`number`&&Number.isInteger(t)&&t>r[e]&&(r[e]=t)}return r}function St(e){let t=e?.collectionLimits,r=new Map;if(!t||typeof t!=`object`||Array.isArray(t))return r;for(let[e,i]of Object.entries(t))e.startsWith(`collection`)&&n(e)&&typeof i==`number`&&Number.isInteger(i)&&i>15&&r.set(e,i);return r}function Ct(e,t,n){if(!t)return;n.reveal(xt(t,n.limits),St(t));let r=new Set(be(t,`expanded`));for(let e of n.cards){let t=e.querySelector(`[data-history-toggle]`);t&&r.has(vt(e))&&yt(t,!0)}let i=je(t,`main`);n.pane&&i!==null&&(n.pane.scrollTop=i),De(e,t.focus,t.focusVisible)}var wt=Te({ownsRestore:!0});Ie(`/restart`);var d=[...document.querySelectorAll(`[data-card][data-placement="home"]`)].sort((e,t)=>Number(e.dataset.rank)-Number(t.dataset.rank)),f=new Map;function Tt(){f=new Map;for(let e of document.querySelectorAll(`[data-card]`)){let t=e.dataset.id??``;f.set(t,[...f.get(t)??[],e])}}Tt();function Et(e,t){for(let n of f.get(e)??[])t(n)}function p(){return[...f.values()].flat()}var m=st(document),Dt=[...document.querySelectorAll(`[data-operation]`)],Ot=document.querySelector(`[data-section="in-progress"]`),kt=e=>e.dataset.inProgressOnly!==void 0,At=Object.fromEntries(u.map(e=>[e,document.querySelector(`[data-cards="${e}"]`)])),jt=document.querySelector(`.prb-index`);function Mt(e){return{id:e.dataset.id??``,collections:ct(e),queue:e.dataset.queue===void 0?void 0:Number(e.dataset.queue),status:e.dataset.status??`new`,prState:e.dataset.prState}}var h=document.querySelector(`[data-search]`),g=document.querySelector(`[data-status-filter]`),_=document.querySelector(`[data-author-filter]`),v=document.querySelector(`[data-pr-filter]`),Nt=document.querySelector(`[data-no-matches]`),y=document.querySelector(`[data-count]`),Pt=document.querySelector(`[data-clear-filters]`),b=document.querySelector(`[data-collections-filter]`),Ft=document.querySelector(`[data-collections-filter-search]`);function It(){if(!b)return;b.hidden=m.length===0;let e=b.querySelector(`[data-collections-filter-label]`);e&&(e.textContent=we(E.collections,m)),E.collections.length===0?delete b.dataset.active:b.dataset.active=``;let t=b.querySelector(`[data-collections-filter-options]`);t&&mt(t,m,E.collections,Ft?.value??``)}var x=l();function Lt(e){return{stored:Fe({state:e.dataset.lifecycle,at:Number(e.dataset.lifecycleAt)}),activity:ke(e.dataset)??{at:0,kind:`created`}}}function Rt(e){return e.dataset.pinned===`true`}function zt(e){let{stored:t,activity:n}=Lt(e);return re(Rt(e),t,n,ct(e).length>0,E.filter)}function Bt(e){let t=zt(e);return t===void 0?.5:u.indexOf(t)}function Vt(e){return[...e].sort((e,t)=>Bt(e)-Bt(t))}var S=new Map,C=document.querySelector(`[data-bulk]`),Ht=document.querySelector(`[data-bulk-count]`),Ut=document.querySelector(`[data-bulk-detail]`),Wt=document.querySelector(`[data-bulk-delete]`),Gt=document.querySelector(`[data-bulk-delete-label]`),Kt=document.querySelector(`[data-bulk-exit]`),qt=document.querySelector(`[data-bulk-more]`),Jt=document.querySelector(`[data-bulk-question]`),w=document.querySelector(`[data-bulk-confirm]`),Yt=document.querySelector(`[data-bulk-actions]`),T=document.querySelector(`[data-bulk-error]`),Xt=document.querySelector(`[data-bulk-select-all]`),E=ne(window.location.hash),D=new Set,O=!1,k=document.querySelector(`[data-bulk-fetch]`),Zt={},A=[],Qt=!1;function j(){let e=E.query.trim().toLowerCase();E.author!==``&&![..._?.options??[]].some(e=>e.value===E.author)&&(E.author=``),E.collections=E.collections.filter(e=>e===`none`||m.some(t=>t.id===e)),m.length===0&&(E.collections=[]);let t=Vt(o(d.map(e=>({...Mt(e),searchText:e.dataset.searchText??``,author:e.dataset.author,card:e})),{...E,query:e}).map(e=>e.card)),n=t.filter(e=>!kt(e));A=n;let r=new Set(o(Dt.map(e=>({...Mt(e),searchText:e.dataset.searchText??``,author:e.dataset.author,entry:e})),{...E,query:e}).map(e=>e.entry));for(let e of Dt)e.hidden=!r.has(e);if(Ot){Ot.hidden=r.size===0;let e=Ot.querySelector(`[data-section-count]`);e&&(e.textContent=String(r.size))}let i=n.filter(e=>zt(e)!==void 0),a=he(i,e=>zt(e),x),s=new Set(u.flatMap(e=>a[e].shown));for(let e of u){let t=At[e];t&&it(t,a[e].shown);let n=document.querySelector(`[data-load-more="${e}"]`);n&&(n.hidden=a[e].total<=a[e].shown.length);let r=document.querySelector(`[data-section="${e}"]`);r&&(r.hidden=a[e].total===0);let i=r?.querySelector(`[data-section-count]`);i&&(i.textContent=String(a[e].total))}for(let e of $t(n))s.add(e);for(let e of p())e.hidden=!s.has(e);if(h&&h.value!==E.query&&(h.value=E.query),_&&(_.value=E.author,E.author===``?delete _.dataset.active:_.dataset.active=``),v||(E.pr=`any`),v&&(v.value=E.pr,E.pr===`any`?delete v.dataset.active:v.dataset.active=``),g&&(g.value=E.filter,E.filter===`all`?delete g.dataset.active:g.dataset.active=``),It(),Pt&&(Pt.hidden=!Ue(E)),y){let e=e=>e.reduce((e,t)=>e+Number(t.dataset.reviews??1),0);y.textContent=ie(e(t),t.length,Ue(E)?e(d):void 0)}Nt&&(Nt.hidden=t.length>0||r.size>0||d.length===0),hn(n)}function $t(e){let t=document.querySelector(`[data-collections-area]`);if(!t)return[];let n=s(E.filter),r=Ue(E),o=e.flatMap(e=>ct(e).map(t=>({card:e,collection:t}))),c=e=>{let{stored:t,activity:n}=Lt(e);return oe(Rt(e),t,n,E.filter)},ee=de(o,({card:e,collection:t})=>{let n=c(e);return n===void 0?void 0:`${n===`completed`?`collection-done`:`collection`}:${t}`},e=>S.get(e)??15),te=(e,t)=>(f.get(e)??[]).find(e=>e.dataset.placement===`collection:${t}`),ne=[],re=!1;for(let e of t.querySelectorAll(`[data-collection]`)){let t=e.dataset.collection??``,s=ee.get(`collection:${t}`)??{shown:[],total:0},c=ee.get(`collection-done:${t}`)??{shown:[],total:0},ie=o.filter(e=>e.collection===t),ae=ie.filter(e=>Rt(e.card)).length,oe=E.collections.length>0&&!E.collections.includes(t),se=!n&&!oe&&(!r||ie.length>0);if(e.hidden=!se,!se)continue;re=!0;for(let[n,r]of[[`collection:${t}`,s],[`collection-done:${t}`,c]]){let i=r.shown.map(e=>te(e.card.dataset.id??``,t)).filter(e=>e!==void 0),a=e.querySelector(`[data-cards="${n}"]`);a&&it(a,i),ne.push(...i);let o=e.querySelector(`[data-load-more="${n}"]`);o&&(o.hidden=r.total<=r.shown.length)}let ce=e.querySelector(`[data-section="collection:${t}"] > summary [data-section-count]`);ce&&(ce.textContent=a(s.total,ae));let l=e.querySelector(`[data-collection-empty]`),u=i({active:s.total,completed:c.total,pinned:ae,members:ie.length},r);l&&(l.hidden=u===void 0,l.textContent=u??``);let le=e.querySelector(`[data-section="collection-done:${t}"]`);le&&(le.hidden=c.total===0);let ue=e.querySelector(`[data-completed-label]`);ue&&(ue.textContent=Ce(c.total))}return t.hidden=n||!re,ne}var en=300,M=null;function N(){M!==null&&window.clearTimeout(M),M=null,wt.replace(ee(E),{})}function P(e,t){if(E={...E,...e},x=l(),S=new Map,j(),t===`now`)return N();M!==null&&window.clearTimeout(M),M=window.setTimeout(N,en)}window.addEventListener(`pagehide`,()=>{M!==null&&N()}),document.addEventListener(`click`,e=>{M!==null&&e.target?.closest?.(`a[href]`)&&N()},!0),h?.addEventListener(`input`,()=>P({query:h.value},`settled`)),h?.addEventListener(`keydown`,e=>{e.key===`Escape`&&h.value!==``&&(e.preventDefault(),P({query:``},`now`))}),g?.addEventListener(`change`,()=>{P({filter:g.value},`now`)}),_?.addEventListener(`change`,()=>{P({author:_.value},`now`)}),v?.addEventListener(`change`,()=>{P({pr:v.value},`now`)}),Pt?.addEventListener(`click`,()=>{P({query:He.query,filter:He.filter,author:He.author,pr:He.pr,collections:He.collections},`now`),h?.focus()}),rt(),document.addEventListener(`click`,e=>{let t=e.target.closest(`[data-load-more]`)?.dataset.loadMore;if(t&&t.startsWith(`collection`)&&n(t))return S.set(t,(S.get(t)??15)+15),j();!t||!u.includes(t)||(x={...x,[t]:x[t]+15},j())});for(let e of[`popstate`,`hashchange`])window.addEventListener(e,()=>{E=ne(window.location.hash),x=l(),S=new Map,j(),cn()});document.addEventListener(`click`,e=>{let t=e.target.closest(`[data-pin]`);if(!t?.dataset.pin)return;e.preventDefault(),e.stopPropagation();let n=t.dataset.pin;at(t,e=>fetch(`/pin`,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({id:n,pinned:e})}).then(e=>e.ok),e=>{Et(n,n=>{n.dataset.pinned=String(e);let r=n.querySelector(`[data-pin]`);r&&r!==t&&ot(r,e),Pn(n)}),j()})});async function tn(e,t){let n;try{let r=await fetch(`/queue`,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({id:e,action:t})});if(!r.ok)return F(await an(r));n=(await r.json()).queue}catch{return F(rn)}on(n),j()}var nn=`That could not be saved. The workspace server refused it.`,rn=`The workspace server did not answer. It may have stopped.`;function F(e){ge(Pe(),{kind:`failed`,text:e})}async function an(e){let t=await e.json().catch(()=>null);return typeof t?.error==`string`?t.error:nn}function on(e){let t=new Map(e.map((e,t)=>[e,t]));for(let e of p()){let n=t.get(e.dataset.id??``);n===void 0?delete e.dataset.queue:e.dataset.queue=String(n),n!==void 0&&e.dataset.lifecycle!==`active`&&(e.dataset.lifecycle=`active`,delete e.dataset.lifecycleAt,Pn(e))}for(let e of document.querySelectorAll(`[data-queue-action][data-queue-id]`)){let n=t.has(e.dataset.queueId??``);e.dataset.queueAction=n?`remove`:`add`,e.textContent=te(n)}let n=document.querySelector(`[data-queue-option]`);n&&(n.textContent=me(e.length))}document.addEventListener(`click`,e=>{let t=e.target.closest(`[data-history-toggle]`);if(!t)return;e.preventDefault(),e.stopPropagation();let n=t.parentElement?.querySelector(`[data-history-list]`);n&&yt(t,n.hidden!==!1)});var sn=document.querySelector(`.prb-shell > main`);function cn(){Ct(document,wt.current().ui,{cards:p(),pane:sn,limits:x,reveal:(e,t)=>{x=e,S=t,j()}})}wt.setCapturer(()=>bt(document,p(),x,sn,S)),j(),cn();var I=$e(document,{onOpen:fn,onClose:e=>{fn(e),window.setTimeout($,0)}});function ln(){return document.querySelector(`[data-menu-trigger][aria-expanded="true"]`)!==null}var un=0;async function dn(e){un+=1;try{await e()}finally{--un,$()}}function fn(e){let t=e.querySelector(`[data-menu-items]`),n=e.querySelector(`[data-menu-confirm]`);t&&(t.hidden=!1),n&&(n.hidden=!0);let r=e.querySelector(`[data-collection-rename-form]`);r&&(r.hidden=!0,J(r,void 0)),e.querySelector(`[data-menu-error]`)?.remove(),e.querySelector(`[data-id-field]`)?.remove()}document.addEventListener(`click`,e=>{let t=e.target,n=t.closest(`[data-menu]`);if(!n||n.closest(`[data-bulk]`)||n.matches(`[data-collections-filter]`))return;if(n.matches(`.prb-collection-menu`))return Zn(e,t,n);let r=t.closest(`[data-collections-for]`);if(r?.dataset.collectionsFor){e.preventDefault(),e.stopPropagation(),I.closeAll();let t=r.closest(`[data-card]`)?.querySelector(`[data-select]`)?.getAttribute(`aria-label`)?.replace(/^Select /,``);Qn([r.dataset.collectionsFor],{card:t??`this review`});return}let i=t.closest(`[data-copy-id]`);if(i?.dataset.copyId){e.preventDefault(),e.stopPropagation(),Qe(i,i.dataset.copyId);return}let a=t.closest(`[data-fetch-review]`);if(a?.dataset.fetchReview){e.preventDefault(),e.stopPropagation(),I.closeAll();let t=a.closest(`[data-card]`);t&&sr([t]);return}let o=t.closest(`[data-mark-status]`);if(o?.dataset.markId){e.preventDefault(),e.stopPropagation(),I.closeAll();let t=o.dataset.markId;dn(()=>Mn(t,o.dataset.markStatus===`complete`));return}let s=t.closest(`[data-lifecycle-set]`);if(s?.dataset.lifecycleId){e.preventDefault(),e.stopPropagation(),I.closeAll();let t=s.dataset.lifecycleId;dn(async()=>{await Nn([t],s.dataset.lifecycleSet)||F(`That could not be saved. The workspace server refused it or did not answer.`)});return}let c=t.closest(`[data-queue-action]`);if(c?.dataset.queueId){e.preventDefault(),e.stopPropagation(),I.closeAll();let t=c.dataset.queueId;dn(()=>tn(t,c.dataset.queueAction===`remove`?`remove`:`add`));return}if(t.closest(`[data-delete]`)){e.preventDefault(),e.stopPropagation();let t=n.querySelector(`[data-menu-items]`),r=n.querySelector(`[data-menu-confirm]`);t&&(t.hidden=!0),r&&(r.hidden=!1),e.detail===0&&n.querySelector(`[data-cancel-delete]`)?.focus();return}if(t.closest(`[data-cancel-delete]`)){e.preventDefault(),e.stopPropagation(),fn(n),e.detail===0&&n.querySelector(`[data-delete]`)?.focus();return}if(t.closest(`[data-confirm-delete]`)){e.preventDefault(),e.stopPropagation(),pn(n);return}e.preventDefault(),e.stopPropagation()});async function pn(e){let t=e.querySelector(`[data-delete]`),n=t?.dataset.delete;if(!n)return;let r=e.querySelector(`[data-menu-confirm]`),i=e.querySelector(`[data-confirm-delete]`);i&&(i.disabled=!0,i.textContent=`Deleting`);try{let r=await fetch(`/delete`,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({id:n,scope:t?.dataset.scope??`review`})});if(r.ok)return void window.location.reload();mn(e,(await r.json().catch(()=>null))?.error??`That could not be deleted.`)}catch{mn(e,`The workspace server did not answer. It may have stopped.`)}i&&(i.disabled=!1,i.textContent=`Delete`),r&&(r.hidden=!0);let a=e.querySelector(`[data-menu-items]`);a&&(a.hidden=!1)}function mn(e,t){e.querySelector(`[data-menu-error]`)?.remove();let n=document.createElement(`p`);n.className=`prb-menu-error`,n.setAttribute(`data-menu-error`,``),n.textContent=t,e.querySelector(`[data-menu-panel]`)?.append(n)}function L(e){O=e,e||D.clear(),jt&&(e?jt.dataset.selecting=``:delete jt.dataset.selecting),document.querySelector(`[data-select-mode]`)?.setAttribute(`aria-pressed`,String(e)),!e&&qt&&I.close(qt);for(let t of document.querySelectorAll(`.prb-card-link`))e?t.setAttribute(`aria-disabled`,`true`):t.removeAttribute(`aria-disabled`);R(),j()}function R(){w&&(w.hidden=!0),Yt&&(Yt.hidden=!1),T&&(T.hidden=!0,T.textContent=``)}function hn(t){for(let e of p()){let t=D.has(e.dataset.id??``),n=e.querySelector(`[data-select]`);n&&(n.checked=t),t?e.dataset.selected=``:delete e.dataset.selected}if(!C||(C.hidden=!O,!O))return;let n=new Set(p().filter(gn).map(e=>e.dataset.id)),r=[...D].filter(e=>!n.has(e)).length,i=new Set(t.map(e=>e.dataset.id)),a=[...D].every(e=>i.has(e))?i.size:null;D.size===0?C.dataset.empty=``:delete C.dataset.empty,Ht&&(Ht.textContent=ve(D.size)),Ut&&(Ut.textContent=e(D.size,a,r)),Xt&&(Xt.textContent=ce(t.length,D.size>0&&a!==null),Xt.disabled=t.every(e=>D.has(e.dataset.id??``))),Gt&&(Gt.textContent=ae(kn()));for(let e of C.querySelectorAll(`[data-bulk-mark], [data-bulk-lifecycle], [data-bulk-queue], [data-bulk-collections], [data-bulk-delete]`))e.disabled=D.size===0;k&&(k.hidden=!qe(Zt,rr(V())))}function gn(e){return!e.hidden&&e.closest(`details:not([open]), [hidden]`)===null}function _n(e){let t=[...e.querySelectorAll(`details[data-section]`)];for(let e of t)e.addEventListener(`toggle`,()=>hn(A));nt(t,(e,t)=>fetch(`/sections`,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({section:e,collapsed:t})}))}_n(document),document.querySelector(`[data-select-mode]`)?.addEventListener(`click`,()=>{L(!O)}),Xt?.addEventListener(`click`,()=>{for(let e of A)e.dataset.id&&D.add(e.dataset.id);R(),j()});function vn(e){D.has(e)?D.delete(e):D.add(e),R(),j()}document.addEventListener(`change`,e=>{let t=e.target.closest(`[data-select]`);t?.dataset.select&&vn(t.dataset.select)}),document.addEventListener(`click`,e=>{if(!O)return;let t=e.target,n=t.closest(`[data-card]`);n?.dataset.id&&(t.closest(`[data-select], [data-pin], [data-menu], [data-history-toggle]`)||(e.preventDefault(),vn(n.dataset.id)))}),document.addEventListener(`keydown`,e=>{if(!O||e.key!==`Enter`)return;let t=e.target.closest(`.prb-card-link`)?.closest(`[data-card]`);t?.dataset.id&&(e.preventDefault(),vn(t.dataset.id))});var z=tt({doc:document,item:`[data-card]`,link:`.prb-card-link`,walk:()=>[...document.querySelectorAll(`[data-card]`)].filter(gn),enterAllowed:()=>!O,background:()=>sn,leadIn:e=>[...e.closest(`[data-cards]`)?.querySelectorAll(`[data-card]:not([hidden])`)??[]][0]===e?e.closest(`details[data-section]`)?.querySelector(`summary`)??null:null});function yn(){return z.holdsKeys()?z.current()?.querySelector(`:scope > [data-menu]`)??null:null}var bn=8;function xn(e){let t=e.querySelector(`.prb-card-link`);t&&(t.focus({preventScroll:!0}),document.activeElement!==t&&document.activeElement?.blur(),M!==null&&N(),wt.leaving(),Sn=!0,window.location.assign(t.href))}var Sn=!1,Cn={title:`Search reviews`,mount(e,t){let n=document.createElement(`input`);n.type=`search`,n.className=`prb-palette-input`,n.placeholder=h?.placeholder??``,n.setAttribute(`aria-label`,`Search reviews`),n.spellcheck=!1,n.value=h?.value??``;let r=document.createElement(`p`);r.className=`prb-palette-summary`,r.setAttribute(`aria-live`,`polite`);let i=document.createElement(`div`);i.className=`prb-palette-results`,i.setAttribute(`role`,`group`),i.setAttribute(`aria-label`,`Matching reviews`);let a=()=>{let e=A.slice(0,bn);i.replaceChildren(...e.map(e=>{let t=document.createElement(`button`);t.type=`button`,t.className=`prb-palette-result`,t.dataset.resultId=e.dataset.id??``;let n=document.createElement(`span`);n.className=`prb-palette-result-title`,n.textContent=e.querySelector(`.prb-card-head h2`)?.textContent??``;let r=document.createElement(`span`);return r.className=`prb-palette-result-where`,r.textContent=[e.querySelector(`.prb-card-repo`)?.textContent,e.querySelector(`.prb-card-branch`)?.textContent].filter(Boolean).join(` · `),t.append(n,r),t})),r.textContent=A.length===0?`No reviews match.`:A.length>e.length?`The first ${e.length} of ${y?.textContent??A.length}`:y?.textContent??``},o=()=>[...i.querySelectorAll(`.prb-palette-result`)],s=e=>{let n=d.find(t=>t.dataset.id===e?.dataset.resultId);n&&(t(),xn(n))};n.addEventListener(`input`,()=>{h&&(h.value=n.value,h.dispatchEvent(new Event(`input`,{bubbles:!0})),a())}),i.addEventListener(`click`,e=>s(e.target.closest(`.prb-palette-result`)??void 0)),e.addEventListener(`keydown`,e=>{if(e.isComposing)return;let t=o(),r=t.indexOf(e.target);if(e.key===`Enter`&&e.target===n)return e.preventDefault(),s(t[0]);let i=e.key===`ArrowDown`?r<0?t[0]:t[r+1]:e.key===`ArrowUp`?r<=0?n:t[r-1]:null;i&&(e.preventDefault(),i.focus())}),e.append(n,r,i),a(),n.focus(),n.select()}},wn={title:`Filters`,mount(e){let t=document.createElement(`p`);t.className=`prb-palette-summary`,t.setAttribute(`aria-live`,`polite`);let n=()=>{t.textContent=y?.textContent??``},r=[g,_,v].flatMap(e=>{if(!e)return[];let t=document.createElement(`label`);t.className=`prb-palette-field`;let r=document.createElement(`span`),i=(e.getAttribute(`aria-label`)??``).replace(/^Filter by /,``);r.textContent=i.charAt(0).toUpperCase()+i.slice(1);let a=document.createElement(`select`);for(let t of e.options)a.append(new Option(t.text,t.value));return a.value=e.value,a.addEventListener(`change`,()=>{e.value=a.value,e.dispatchEvent(new Event(`change`,{bubbles:!0})),n()}),t.append(r,a),[t]});e.append(...r,t),n(),r[0]?.querySelector(`select`)?.focus()}};function Tn(e){let t=()=>document.querySelector(`details[data-section="${e}"]`);return{available:()=>!!(t()&&!t().hidden),state:()=>{let e=t();return e&&!e.hidden?e.open?`Expanded`:`Collapsed`:null},run:()=>{let e=t();e&&(e.open=!e.open)}}}var En=Object.fromEntries(r.map(e=>[`reviews.section.${e}`,Tn(e)]));function Dn(){return[...document.querySelectorAll(`[data-collections-area]:not([hidden]) [data-collection]:not([hidden])`)].flatMap(e=>{let t=e.querySelector(`:scope > details[data-section]`);if(!t)return[];let n=t.querySelector(`[data-collection-name]`)?.textContent??``,r=t.querySelector(`:scope > summary [data-section-count]`)?.textContent??``;return[{id:e.dataset.collection??``,name:n,count:r,open:t.open}]})}var B=document.querySelector(`[data-collection-new]`),On=Ee(`reviews`,{...En,"reviews.search":{available:()=>h!==null,panel:Cn},"reviews.filters":{available:()=>g!==null,panel:wn},"reviews.collection.new":{available:()=>B!==null&&!B.disabled,run:()=>B?.click()},"reviews.collection.fold":{available:()=>Dn().length>0,panel:_t({collections:Dn,toggle:e=>{let t=document.querySelector(`[data-collection="${CSS.escape(e)}"] > details[data-section]`);t&&(t.open=!t.open)}})},"reviews.next":{run:()=>z.move(1)},"reviews.previous":{run:()=>z.move(-1)},"reviews.open":{available:()=>z.enterOpens(),run:()=>z.open()},"reviews.openInNewTab":{available:()=>z.enterOpens(),run:()=>z.openInNewTab()},"reviews.selection.exit":{available:Bn,run:()=>w&&!w.hidden?Rn(C?.contains(document.activeElement)??!1):zn()},"reviews.menu":{available:()=>yn()!==null,run:()=>{let e=yn();e&&I.open(e,{focusFirst:!0,returnFocus:()=>z.refocus()})}}},{onOpen:()=>I.closeAll(),onSettle:()=>$()});function V(){return Vt(d.filter(e=>D.has(e.dataset.id??``)))}function kn(){return V().reduce((e,t)=>e+Number(t.dataset.reviews??1),0)}function H(e){T&&(T.textContent=e,T.hidden=!1)}function U(e){for(let t of C?.querySelectorAll(`button`)??[])t.disabled=e}async function An(e){let t=[...D];if(t.length!==0){U(!0);try{if(!(await fetch(`/status`,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({ids:t,complete:e})})).ok)return U(!1),H(`That could not be saved. The workspace server refused it.`)}catch{return U(!1),H(`The workspace server did not answer. It may have stopped.`)}jn(V(),e),U(!1),L(!1)}}function jn(e,t){let n=t?`complete`:`in-progress`,r=t?`in-progress`:`complete`;for(let t of e.flatMap(e=>f.get(e.dataset.id??``)??[e])){t.dataset.status=n;let e=t.querySelector(`.prb-card-status`);e&&(e.dataset.status=n,e.textContent=Le(n));let i=t.querySelector(`[data-mark-status]`);i&&(i.dataset.markStatus=r,i.textContent=c(r))}}async function Mn(e,t){try{let n=await fetch(`/status`,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({ids:[e],complete:t})});if(!n.ok)return F(await an(n))}catch{return F(rn)}jn(d.filter(t=>t.dataset.id===e),t),j()}async function Nn(e,t){let n;try{let r=await fetch(`/lifecycle`,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({ids:e,state:t})});n=r.ok?await r.json().catch(()=>null):null}catch{n=null}if(!n)return!1;let r=new Set(e);for(let e of p())r.has(e.dataset.id??``)&&(e.dataset.lifecycle=t,t===`active`?delete e.dataset.lifecycleAt:e.dataset.lifecycleAt=String(n.at),Pn(e));return on(n.queue),j(),!0}function Pn(e){let{stored:t,activity:n}=Lt(e),r=e.querySelector(`[data-lifecycle-chip]`);if(r){let i=le(Rt(e),t,n);r.textContent=i??``,r.hidden=i===void 0}for(let r of e.querySelectorAll(`[data-lifecycle-set]`)){let e=r.dataset.lifecycleSet;r.hidden=!_e(e,t,n),r.textContent=Ne(e,t,n)}}async function Fn(e){let t=[...D];if(t.length===0)return;U(!0);let n=await Nn(t,e);if(U(!1),!n)return H(`That could not be saved. The workspace server refused it or did not answer.`);L(!1)}async function In(){let e=[...D];if(e.length===0)return;U(!0);let t=null;try{let n=await fetch(`/delete`,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({ids:e})});if(t=n.ok?await n.json().catch(()=>null):null,!t)return U(!1),R(),H(`Nothing was deleted. The workspace server refused it.`)}catch{return U(!1),R(),H(`The workspace server did not answer. It may have stopped.`)}let n=t.blocked??[],r=new Set(n.map(e=>e.id));for(let e of V()){let t=e.dataset.id??``;r.has(t)||Et(t,e=>e.remove())}d=d.filter(e=>e.isConnected),Tt(),D.clear();for(let e of r)D.add(e);if(U(!1),R(),n.length===0)return L(!1);j(),H([...new Set(n.map(e=>e.error))].join(` `))}async function Ln(){let e=V().map(e=>e.dataset.id??``).filter(Boolean);if(e.length===0)return;U(!0);let t=null;try{let n=await fetch(`/queue`,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({ids:e,action:`add`})});t=n.ok?await n.json().catch(()=>null):null}catch{return U(!1),R(),H(`The workspace server did not answer. It may have stopped.`)}if(!t?.queue)return U(!1),R(),H(`Nothing was added. The workspace server refused it.`);on(t.queue);let n=t.refused??[];D.clear();for(let e of n)D.add(e.id);if(U(!1),R(),n.length===0)return L(!1);j(),H([...new Set(n.map(e=>e.error))].join(` `))}C?.addEventListener(`click`,e=>{let t=e.target;if(qt&&t.closest(`[data-bulk-more] [data-menu-panel] button`)&&I.close(qt),t.closest(`[data-bulk-queue]`))return void Ln();if(t.closest(`[data-bulk-collections]`))return Qn(V().map(e=>e.dataset.id??``).filter(Boolean),{selection:!0});let n=t.closest(`[data-bulk-mark]`);if(n)return void An(n.dataset.bulkMark===`complete`);let r=t.closest(`[data-bulk-lifecycle]`);if(r)return void Fn(r.dataset.bulkLifecycle);if(t.closest(`[data-bulk-delete]`)){Jt&&(Jt.textContent=se(kn())),Yt&&(Yt.hidden=!0),w&&(w.hidden=!1),e.detail===0&&C.querySelector(`[data-bulk-cancel-delete]`)?.focus();return}if(t.closest(`[data-bulk-confirm-delete]`))return void In();if(t.closest(`[data-bulk-cancel-delete]`))return Rn(e.detail===0);if(t.closest(`[data-bulk-exit]`))return zn()});function Rn(e){R(),e&&Wt?.focus()}function zn(){let e=C?.contains(document.activeElement)??!1;L(!1),e&&document.querySelector(`[data-select-mode]`)?.focus()}function Bn(e){return!O||Kt?.disabled?!1:e===void 0||Ze(e,document,!0)}var W=document.querySelector(`[data-collections-dialog]`),Vn=document.querySelector(`[data-collections-dialog-list]`),G=document.querySelector(`[data-collections-dialog-search]`),K=document.querySelector(`[data-collections-dialog-create]`),Hn=document.querySelector(`[data-collections-dialog-error]`),Un=document.querySelector(`[data-collections-dialog-for]`),q=[],Wn=!1,Gn=!1,Kn=document.body.dataset.cardsSnapshot??``;function qn(e,t){return lt(e,t,Kn)}function Jn(e){if(e.stale||e.area===void 0){try{let e={ids:[...D],selecting:O};window.sessionStorage.setItem(ut,JSON.stringify(e))}catch{}W?.close(),window.location.reload();return}let n=e.area,r=document.querySelector(`[data-collections-area]`);if(r){let e=r.contains(document.activeElement)?ze(document):null,t=document.createElement(`template`);t.innerHTML=n.trim();let i=t.content.firstElementChild;if(i){if(r.replaceWith(i),_n(i),O)for(let e of i.querySelectorAll(`.prb-card-link`))e.setAttribute(`aria-disabled`,`true`);e&&De(document,e.focus,e.focusVisible)}}m=e.collections;for(let n of d){let r=e.memberOf[n.dataset.id??``]??[];n.dataset.collections=r.join(` `);let i=n.querySelector(`[data-collections-line]`),a=t(r,m);i&&(i.textContent=a??``,i.hidden=a===void 0)}for(let t of Dt){let n=e.operations?.[t.dataset.key??``];n&&(t.dataset.collections=n.join(` `))}Tt(),ar(),j()}function J(e,t){let n=e.querySelector(`[data-collection-error]`);n&&(n.textContent=t??``,n.hidden=t===void 0)}Ft?.addEventListener(`input`,()=>It()),b?.addEventListener(`change`,e=>{let t=e.target.closest(`[data-collections-filter-option]`);if(!t)return;let n=t.checked?[...E.collections,t.value]:E.collections.filter(e=>e!==t.value);P({collections:[...new Set(n)]},`now`),b.querySelector(`[data-collections-filter-option][value="${CSS.escape(t.value)}"]`)?.focus()});var Y=document.querySelector(`[data-collection-new-dialog]`),X=Y?.querySelector(`[data-collection-name-input]`)??null,Yn=Y?.querySelector(`[data-collection-create]`)??null,Z=!1;function Xn(){B&&(B.disabled=Z),X&&(X.readOnly=Z),Yn&&(Yn.disabled=Z||(X?.value.trim()??``)===``)}B?.addEventListener(`click`,()=>{Y&&(I.closeAll(),X&&(X.value=``),Xn(),J(Y,void 0),Y.showModal(),X?.focus())}),X?.addEventListener(`input`,()=>{Xn(),Y&&J(Y,void 0)}),Y?.querySelector(`[data-collection-cancel]`)?.addEventListener(`click`,()=>Y.close()),Y?.addEventListener(`close`,()=>$()),document.addEventListener(`submit`,e=>{let t=e.target;if(t.matches(`[data-collection-new-form]`)){e.preventDefault();let n=X?.value??``;if(n.trim()===``)return;Z=!0,Xn(),qn(`/collections`,{action:`create`,name:n}).then(e=>{Z=!1,Xn();let n=Y?.open===!0;if(!e.ok)return J(t,e.error);Y?.close(),Jn(e.answer),n&&document.querySelector(`[data-collection="${CSS.escape(e.answer.id??``)}"] summary`)?.focus({focusVisible:!1})});return}let n=t.closest(`[data-collection-rename-form]`);if(n){e.preventDefault();let t=n.querySelector(`[data-collection-name-input]`)?.value??``,r=n.dataset.collectionRenameForm??``;qn(`/collections`,{action:`rename`,id:r,name:t}).then(e=>{if(!e.ok)return J(n,e.error);I.closeAll(),Jn(e.answer),document.querySelector(`[data-collection="${CSS.escape(r)}"] summary`)?.focus({focusVisible:!1})})}});function Zn(e,t,n){let r=n.querySelector(`[data-menu-items]`),i=n.querySelector(`[data-collection-rename-form]`),a=n.querySelector(`[data-menu-confirm]`);if(t.closest(`[data-collection-rename]`)&&i){e.preventDefault(),r&&(r.hidden=!0),i.hidden=!1;let t=i.querySelector(`[data-collection-name-input]`);t?.focus(),t?.select();return}if(t.closest(`[data-collection-delete]`)&&a){e.preventDefault(),r&&(r.hidden=!0),a.hidden=!1,e.detail===0&&n.querySelector(`[data-cancel-delete]`)?.focus();return}if(t.closest(`[data-collection-cancel], [data-cancel-delete]`)){e.preventDefault(),fn(n);return}let o=t.closest(`[data-collection-confirm-delete]`);if(o?.dataset.collectionConfirmDelete){e.preventDefault(),o.disabled=!0;let t=o.dataset.collectionConfirmDelete;qn(`/collections`,{action:`delete`,id:t}).then(e=>{if(o.disabled=!1,!e.ok)return mn(n,e.error);I.closeAll(),Jn(e.answer),E.collections.includes(t)&&N(),document.querySelector(`[data-collection-new]`)?.focus()})}}function Qn(e,t){!W||e.length===0||(I.closeAll(),q=[...e],Wn=!1,Gn=`selection`in t,Un&&(Un.textContent=gt(e.length,`card`in t?t.card:void 0)),G&&(G.value=``),er(void 0),Q(),W.showModal(),G?.focus())}function $n(){return q.map(e=>ct(d.find(t=>t.dataset.id===e)??document.createElement(`div`)))}function Q(){let e=G?.value??``;Vn&&ht(Vn,m,$n(),e);let t=pt(e,m);K&&(K.hidden=t===void 0,K.textContent=t===void 0?``:`Create “${t}” and add ${q.length===1?`this review`:`these ${q.length}`}`)}function er(e){Hn&&(Hn.textContent=e??``,Hn.hidden=e===void 0)}async function tr(e){er(void 0);let t=await qn(`/collections/members`,{ids:q,...e});if(!t.ok)return er(t.error),Q();Wn=!0,Jn(t.answer);let n=t.answer.refused??[];n.length>0&&(q=q.filter(e=>!n.some(t=>t.id===e)),er([...new Set(n.map(e=>e.error))].join(` `))),Q()}G?.addEventListener(`input`,()=>Q()),G?.addEventListener(`keydown`,e=>{e.key===`Enter`&&(e.preventDefault(),K&&!K.hidden&&K.click())}),K?.addEventListener(`click`,()=>{let e=pt(G?.value??``,m);e!==void 0&&tr({action:`add`,create:e}).then(()=>{G&&(G.value=``),Q(),G?.focus()})}),Vn?.addEventListener(`change`,e=>{let t=e.target.closest(`[data-collections-dialog-option]`);if(!t)return;let n=ue(t.dataset.membership??`none`),r=t.value;tr({action:n,collection:r}).then(()=>{Vn.querySelector(`[data-collections-dialog-option][value="${CSS.escape(r)}"]`)?.focus()})}),document.querySelector(`[data-collections-dialog-close]`)?.addEventListener(`click`,()=>W?.close());try{let e=window.sessionStorage.getItem(ut);if(e){window.sessionStorage.removeItem(ut);let t=JSON.parse(e),n=Array.isArray(t.ids)?t.ids.filter(e=>typeof e==`string`):[];if(t.selecting===!0||n.length>0){L(!0);for(let e of dt(n,d))D.add(e);j()}}}catch{}W?.addEventListener(`close`,()=>{Wn&&O&&Gn&&L(!1),q=[],$()}),Be(window,()=>window.location.reload());var nr=`prb-fetch-summary`;function rr(e){return e.map(e=>({lineage:(e.dataset.lineage??e.dataset.id??``).split(` `).filter(Boolean)}))}function ir(e){return Je(rr(e),Zt)}function ar(){for(let e of p()){let t=e.querySelector(`[data-fetch-review]`);t&&(t.hidden=!qe(Zt,rr([e])))}}async function or(){try{let e=await fetch(`/fetch-updates`);if(!e.ok)return;Zt=(await e.json()).targets??{}}catch{return}ar(),j()}async function sr(e,t){let n=ir(e);if(Qt||n.repositories===0)return;Qt=!0;let r=[k,...document.querySelectorAll(`[data-fetch-review]`)];for(let e of r)e&&(e.disabled=!0);t&&(t.textContent=We(n.repositories));let i=null;try{let e=await fetch(`/fetch-updates`,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({ids:n.ids})});e.ok&&(i=await e.json())}catch{}Qt=!1;for(let e of r)e&&(e.disabled=!1);t&&(t.textContent=Xe),j();let a=i??{repositories:n.repositories,fetched:0,failed:[],moved:0},o={kind:a.fetched<a.repositories?`failed`:`ready`,text:Ke(a)};if(a.moved>0||ur){try{window.sessionStorage.setItem(nr,JSON.stringify(o))}catch{}if(!dr())return void window.location.reload();ur=!0}ge(Pe(),o)}try{let e=window.sessionStorage.getItem(nr);if(e){window.sessionStorage.removeItem(nr);let t=JSON.parse(e);typeof t.kind==`string`&&typeof t.text==`string`&&ge(Pe(),{kind:t.kind,text:t.text})}}catch{}k?.addEventListener(`click`,()=>void sr(V(),k)),Se(),or();var cr=document.body.dataset.indexRevision??``,lr=document.body.dataset.live===`true`?Date.now():0,ur=!1;function dr(){let e=W?.open===!0||Y?.open===!0||document.activeElement?.closest(`[data-collections-area], [data-collections-filter]`)!=null;return D.size>0||document.activeElement===h||Qt||On.isOpen()||Sn||e||ln()||un>0}function $(){ur&&!dr()&&Me()}async function fr(){try{let e=await fetch(`/revision`);if(e.ok){Re(document,!0);let t=await e.json();Oe(document,t),t.live&&lr===0&&(lr=Date.now()),t.live||(lr=0);let n=pe(cr,t.revision??``,dr());if(n===`reload`)return Me(),null;n===`hold`&&(ur=!0)}}catch{Re(document,!1)}return et(lr===0?2**53-1:Date.now()-lr)}var pr=ye(window,fr);xe(document,()=>pr.now()),h?.addEventListener(`blur`,$),document.addEventListener(`click`,()=>window.setTimeout($,0)),Ae();
|
package/static/runs.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import{X as e,a as t,b as n,g as r,h as i,i as a,lt as o,m as s,n as c,r as l,s as ee,t as te,u,vt as d,y as f}from"./chunk-CMC5F4_t.js";import{n as p,t as m}from"./chunk-DDm8oQLU.js";import{t as h}from"./chunk-Dv0Wowan.js";import{t as g}from"./chunk-C8kkSv38.js";import{r as ne,t as re}from"./chunk-BKBTVY9X.js";var _=[`all`,`in-progress`,`completed`,`failed`,`cancelled`,`not-responding`],v=[`all`,`review`,`update`,`re-run`,`kiss`,`ask`,`diagram`];function y(e,t){let n=0;return{visible:e.map(e=>e&&n++<t),matched:e.filter(Boolean).length}}function b(e,t){return e.status!==`all`&&t.status!==e.status||e.kind!==`all`&&t.kind!==e.kind?!1:e.query.toLowerCase().split(/\s+/).filter(Boolean).every(e=>t.searchText.includes(e))}function x(e){return e.status!==`all`||e.kind!==`all`||e.query.trim()!==``}function S(e){let t=new URLSearchParams(e.replace(/^#/,``)),n=t.get(`status`),r=t.get(`kind`);return{status:_.includes(n??``)?n:`all`,kind:v.includes(r??``)?r:`all`,query:t.get(`q`)??``}}function C(e){let t=new URLSearchParams;e.status!==`all`&&t.set(`status`,e.status),e.kind!==`all`&&t.set(`kind`,e.kind),e.query.trim()!==``&&t.set(`q`,e.query);let n=t.toString();return n===``?``:`#${n}`}var w=o();te(`/restart`);var T=document.querySelector(`[data-search]`),E=document.querySelector(`[data-run-status-filter]`),D=document.querySelector(`[data-run-kind-filter]`),O=document.querySelector(`[data-clear-filters]`),k=document.querySelector(`[data-no-matches]`),A=[...document.querySelectorAll(`[data-run]`)],j=S(window.location.hash);E&&![...E.options].some(e=>e.value===j.status)&&(j={...j,status:`all`});function M(){T&&(T.value=j.query),E&&(E.value=j.status),D&&(D.value=j.kind)}var N=50,P=document.querySelector(`[data-runs-more-row]`),F=document.querySelector(`[data-runs-more]`),I=document.querySelector(`[data-runs-more-note]`),L=e=>({status:e.dataset.runStatus??``,kind:e.dataset.runKind??``,searchText:e.dataset.searchText??``});function R(){let e=0;for(let t of document.querySelectorAll(`[data-runs-section]`)){let n=[...t.querySelectorAll(`[data-run]`)],r=n.map(e=>b(j,L(e))),i=t.dataset.runsSection===`recent`,{visible:a,matched:o}=i?y(r,N):{visible:r,matched:r.filter(Boolean).length};n.forEach((e,t)=>e.hidden=!a[t]),e+=o;let s=t.querySelector(`[data-section-count]`);if(s&&(s.textContent=String(o)),i&&P){let e=Math.min(o,N);P.hidden=o<=N,I&&(I.textContent=`Showing the newest ${e} of ${o}.`)}}let t=x(j);O&&(O.hidden=!t),k&&(k.hidden=!(t&&e===0&&A.length>0))}F?.addEventListener(`click`,()=>{N+=50,R()});function z(e){j={...j,...e},N=50,R(),w.replace(C(j),{})}T?.addEventListener(`input`,()=>z({query:T.value})),E?.addEventListener(`change`,()=>z({status:E.value})),D?.addEventListener(`change`,()=>z({kind:D.value})),ne(),re(document.querySelectorAll(`details[data-runs-section]`),e=>n(e.dataset.runsSection)?e.dataset.runsSection:void 0,(e,t)=>fetch(`/runs/sections`,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({section:e,collapsed:t})}));for(let e of document.querySelectorAll(`[data-clear-filters], [data-clear-filters-inline]`))e.addEventListener(`click`,()=>{z({status:`all`,kind:`all`,query:``}),M()});M(),R();var B=3e4;function V(){for(let e of document.querySelectorAll(`time[data-since]`)){let t=Number(e.dataset.since);Number.isFinite(t)&&(e.textContent=`${e.dataset.sincePrefix??``} ${h(t)}`.trim())}}window.setInterval(V,B);var H=p(document,{onClose:()=>$()}),U=()=>document.querySelector(`[data-menu-trigger][aria-expanded="true"]`)!==null,W=!1;for(let e of document.querySelectorAll(`[data-run-remove]`))e.addEventListener(`click`,()=>{let n=e.dataset.runRemove,r=e.closest(`[data-run]`);if(!n||!r)return;H.closeAll(),e.disabled=!0,W=!0;let i=n=>{e.disabled=!1,t(ee(),{kind:`failed`,text:n})};fetch(`/runs/remove`,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({key:n})}).then(async e=>{if(e.ok||e.status===404)r.remove(),A.splice(A.indexOf(r),1),R();else{let t=await e.json().catch(()=>null);i(typeof t?.error==`string`?t.error:`That run could not be removed. The workspace server refused it.`)}}).catch(()=>i(`The workspace server did not answer. It may have stopped.`)).finally(()=>{W=!1,$()})});var G=g({doc:document,item:`[data-run]`,link:`a.prb-card-link`,walk:()=>A.filter(e=>!e.hidden&&e.closest(`details`)?.open!==!1&&e.querySelector(`a.prb-card-link`)),background:()=>document.querySelector(`.prb-shell > main`)});function K(e){let t=()=>document.querySelector(`details[data-runs-section="${e}"]`);return{available:()=>t()!==null,state:()=>{let e=t();return e?e.open?`Expanded`:`Collapsed`:null},run:()=>{let e=t();e&&(e.open=!e.open)}}}function q(){return G.holdsKeys()?G.current()?.querySelector(`:scope > [data-menu]`)??null:null}var J=Object.fromEntries(f.map(e=>[`runs.section.${e}`,K(e)])),Y=s(`runs`,{"runs.search":{run:()=>T?.focus()},"runs.next":{run:()=>G.move(1)},"runs.previous":{run:()=>G.move(-1)},"runs.open":{available:()=>G.enterOpens(),run:()=>G.open()},"runs.openInNewTab":{available:()=>G.enterOpens(),run:()=>G.openInNewTab()},"runs.menu":{available:()=>q()!==null,run:()=>{let e=q();e&&H.open(e,{focusFirst:!0,returnFocus:()=>G.refocus()})}},...J},{onSettle:()=>$()}),ie=document.body.dataset.runsRevision??``,X=document.body.dataset.live===`true`?Date.now():0,Z=!1;function Q(){return document.activeElement===T||W||Y.isOpen()||U()}function $(){Z&&!Q()&&l()}T?.addEventListener(`blur`,()=>$());async function ae(){try{let t=await fetch(`/runs/revision`);if(t.ok){u(document,!0);let n=await t.json();c(document,n),n.live&&X===0&&(X=Date.now()),n.live||(X=0);let r=e(ie,n.revision??``,Q());if(r===`reload`)return l(),null;r===`hold`&&(Z=!0)}}catch{u(document,!1)}return m(X===0?2**53-1:Date.now()-X)}var oe=r(window,ae);i(document,()=>oe.now()),a(),d(window,()=>window.location.reload());
|
package/static/settings.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import{d as e,lt as t,m as n,o as r,t as i,vt as a}from"./chunk-CMC5F4_t.js";function o(e){let t=[...document.querySelectorAll(`[data-shutdown]`)],n=document.querySelector(`[data-shutdown-dialog]`),r=document.querySelector(`[data-shutdown-confirm]`);for(let e of t)e.addEventListener(`click`,()=>n?.showModal());document.querySelector(`[data-shutdown-cancel]`)?.addEventListener(`click`,()=>n?.close()),r?.addEventListener(`click`,()=>{r.disabled=!0,r.textContent=`Stopping…`,fetch(e,{method:`POST`}).then(e=>{if(!e.ok)throw Error(`Shutdown refused: ${e.status}`);n?.close(),s(t)}).catch(()=>{r.disabled=!1,r.textContent=`Stop server`})})}function s(t){document.body.dataset.serverStopped=`true`,e(document,`unreachable`);let n=document.createElement(`div`);n.className=`prb-stopped-notice`,n.setAttribute(`role`,`status`);let r=document.body.dataset.wayBack;n.textContent=r?`Workspace server stopped. This page is no longer being served. Run ${r} to bring it back.`:`Workspace server stopped. This page is no longer being served.`,document.body.prepend(n);for(let e of t)e.disabled=!0,e.classList.contains(`prb-strip-action`)||(e.textContent=`Server stopped`)}var c=[{id:`system`,label:`System`,help:`Follow your device setting`},{id:`light`,label:`Light`,help:`Always use light mode`},{id:`dark`,label:`Dark`,help:`Always use dark mode`}];function l(e){return c.some(t=>t.id===e)}function u(e){let t=e.querySelector(`[data-settings-theme]:checked`)?.value;return l(t)?t:void 0}function d(e,t){e.documentElement.dataset.theme=t}function f(e){for(let t of e.querySelectorAll(`[data-settings-theme]`))t.addEventListener(`change`,()=>{let t=u(e);t&&d(e,t)})}o(`/shutdown`),t(),n(`global`,{}),i(`/restart`),f(document);var p=document.querySelector(`[data-settings-save]`),m=document.querySelector(`[data-settings-status]`),h=document.querySelector(`[data-settings-port]`),g=document.querySelector(`[data-settings-port-error]`),_=document.querySelector(`[data-settings-agent]`);function v(){let e=document.querySelector(`[data-settings-usage]:checked`);return e?e.value===`on`:void 0}function y(e,t){m&&(m.textContent=e,m.dataset.kind=t)}function b(e){g&&(g.textContent=e??``),h&&(e?(h.setAttribute(`aria-invalid`,`true`),h.focus(),h.select()):h.removeAttribute(`aria-invalid`))}async function x(){if(!p)return;let e=v(),t=u(document),n={...h?{port:h.value.trim()}:{},..._?{agent:_.value}:{},...e===void 0?{}:{usageCounts:e},...t===void 0?{}:{theme:t}};p.disabled=!0,p.textContent=`Saving`;try{let e=await(await fetch(`/settings`,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify(n)})).json().catch(()=>null);if(!e){y(`Nothing was saved. The workspace server did not answer.`,`error`);return}if(e.error){b(e.error),y(`Nothing was saved.`,`error`);return}b(null),h&&(h.value=String(e.port.configured)),d(document,e.theme),y(e.restartRequired?`Saved. This page is served on port ${e.port.current}; the workspace moves to ${e.port.configured} the next time it starts.`:`Saved.`,`saved`)}catch{y(`Nothing was saved. The workspace server could not be reached.`,`error`)}finally{p.disabled=!1,p.textContent=`Save changes`}}p?.addEventListener(`click`,()=>void x()),r(document,window,{paintUnread:!0}),a(window,()=>window.location.reload());
|